diff --git a/classification/.envrc b/classification/.envrc
new file mode 100644
index 0000000..4a4726a
--- /dev/null
+++ b/classification/.envrc
@@ -0,0 +1 @@
+use_nix
diff --git a/classification/README.md b/classification/README.md
new file mode 100644
index 0000000..e69de29
diff --git a/classification/classifier/hyp-metrics.csv b/classification/classifier/hyp-metrics.csv
index a3c99e3..6aa6d75 100644
--- a/classification/classifier/hyp-metrics.csv
+++ b/classification/classifier/hyp-metrics.csv
@@ -1,139 +1,139 @@
,summary,config,name
-0,"{'test/epoch_acc': 0.7333333333333334, 'test/precision': 0.8285714285714286, 'test/epoch_loss': 0.5664619127909343, 'train/epoch_acc': 0.8230958230958231, '_step': 2059, 'epoch': 9, '_timestamp': 1680692970.2016854, 'test/f1-score': 0.7073170731707318, 'train/batch_loss': 0.33577921986579895, 'train/epoch_loss': 0.4241055610431793, '_wandb': {'runtime': 363}, '_runtime': 367.13677954673767, 'test/recall': 0.6170212765957447}","{'eps': 0.1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.9, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 4, 'learning_rate': 0.0003}",fiery-sweep-26
-1,"{'epoch': 9, '_wandb': {'runtime': 338}, '_runtime': 341.8420207500458, 'test/precision': 0.6851851851851852, 'train/epoch_acc': 0.7125307125307125, 'train/epoch_loss': 0.649790015355375, '_step': 1039, 'test/recall': 0.8222222222222222, 'test/f1-score': 0.7474747474747475, 'test/epoch_acc': 0.7222222222222222, 'test/epoch_loss': 0.6454579922888014, 'train/batch_loss': 0.7014500498771667, '_timestamp': 1680692589.503975}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.9, 'optimizer': 'adam', 'step_size': 2, 'batch_size': 8, 'learning_rate': 0.0003}",radiant-sweep-25
-2,"{'test/recall': 0.7837837837837838, 'test/precision': 0.935483870967742, 'test/epoch_loss': 0.34812947780333664, 'train/epoch_loss': 0.01614290558709019, '_step': 1039, 'epoch': 9, '_timestamp': 1680692234.39516, 'test/epoch_acc': 0.888888888888889, 'train/epoch_acc': 0.9987714987714988, 'train/batch_loss': 0.01956617273390293, '_wandb': {'runtime': 333}, '_runtime': 336.8275649547577, 'test/f1-score': 0.8529411764705881}","{'eps': 1e-08, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 8, 'learning_rate': 0.003}",blooming-sweep-24
-3,"{'_wandb': {'runtime': 327}, '_runtime': 331.57809829711914, '_timestamp': 1680691883.3877182, 'test/precision': 0.7608695652173914, 'test/epoch_loss': 0.5553177932898203, 'train/batch_loss': 0.5222326517105103, 'train/epoch_loss': 0.5324229019572753, 'epoch': 9, 'test/recall': 0.8333333333333334, 'test/f1-score': 0.7954545454545455, 'test/epoch_acc': 0.8, 'train/epoch_acc': 0.8353808353808354, '_step': 529}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.9, 'optimizer': 'sgd', 'step_size': 2, 'batch_size': 16, 'learning_rate': 0.0003}",visionary-sweep-23
-4,"{'train/epoch_loss': 0.7508098256090057, 'epoch': 1, '_timestamp': 1680691538.7247725, 'test/recall': 0.8846153846153846, 'test/epoch_acc': 0.5777777777777778, 'train/epoch_acc': 0.5577395577395577, 'train/batch_loss': 0.5083656311035156, '_step': 410, '_wandb': {'runtime': 70}, '_runtime': 71.64615154266357, 'test/f1-score': 0.7076923076923076, 'test/precision': 0.5897435897435898, 'test/epoch_loss': 1.5602711306677923}","{'eps': 1e-08, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.99, 'optimizer': 'adam', 'step_size': 7, 'batch_size': 4, 'learning_rate': 0.01}",ancient-sweep-22
-5,"{'_step': 529, 'epoch': 9, '_wandb': {'runtime': 328}, '_timestamp': 1680691453.5148375, 'test/precision': 0.6885245901639344, 'train/epoch_loss': 0.49390909720111537, '_runtime': 331.44886469841003, 'test/recall': 0.9545454545454546, 'test/f1-score': 0.8, 'test/epoch_acc': 0.7666666666666667, 'test/epoch_loss': 0.4844042791260613, 'train/epoch_acc': 0.769041769041769, 'train/batch_loss': 0.4559023082256317}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.99, 'optimizer': 'adam', 'step_size': 5, 'batch_size': 16, 'learning_rate': 0.003}",fresh-sweep-22
-6,"{'test/epoch_acc': 0.9222222222222224, 'test/epoch_loss': 0.26263883135527266, 'train/epoch_acc': 0.9975429975429976, 'epoch': 9, '_wandb': {'runtime': 355}, '_timestamp': 1680691110.042932, 'test/recall': 0.8867924528301887, 'test/f1-score': 0.9306930693069309, '_step': 2059, '_runtime': 358.66950702667236, 'test/precision': 0.9791666666666666, 'train/batch_loss': 0.0031523401848971844, 'train/epoch_loss': 0.018423480946079804}","{'eps': 0.1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.5, 'optimizer': 'adam', 'step_size': 5, 'batch_size': 4, 'learning_rate': 0.01}",pleasant-sweep-21
-7,"{'train/epoch_loss': 0.0014873178028192654, 'epoch': 9, '_runtime': 332.6156196594238, 'test/recall': 0.9148936170212766, 'test/f1-score': 0.8865979381443299, 'test/epoch_acc': 0.8777777777777778, 'test/epoch_loss': 0.3669874522421095, 'train/batch_loss': 0.003317732596769929, '_step': 279, '_wandb': {'runtime': 329}, '_timestamp': 1680690741.3215847, 'test/precision': 0.86, 'train/epoch_acc': 1}","{'eps': 0.1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.5, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 32, 'learning_rate': 0.01}",fragrant-sweep-20
-8,"{'epoch': 9, 'test/recall': 0.82, 'test/precision': 0.7592592592592593, 'test/epoch_loss': 0.5786970999505785, 'train/epoch_acc': 0.8206388206388207, 'train/batch_loss': 0.58731609582901, '_step': 149, '_runtime': 342.05230498313904, '_timestamp': 1680690397.165603, 'test/f1-score': 0.7884615384615384, 'test/epoch_acc': 0.7555555555555555, 'train/epoch_loss': 0.5623220165765842, '_wandb': {'runtime': 338}}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 2, 'batch_size': 64, 'learning_rate': 0.001}",treasured-sweep-19
-9,"{'_timestamp': 1680690042.488695, 'test/f1-score': 0.7865168539325843, 'test/precision': 0.8536585365853658, 'train/batch_loss': 0.5736206769943237, 'epoch': 9, '_wandb': {'runtime': 357}, '_runtime': 360.5366156101227, 'test/epoch_loss': 0.6037532766660054, 'train/epoch_acc': 0.7788697788697788, 'train/epoch_loss': 0.5984062318134074, '_step': 2059, 'test/recall': 0.7291666666666666, 'test/epoch_acc': 0.788888888888889}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.999, 'optimizer': 'sgd', 'step_size': 2, 'batch_size': 4, 'learning_rate': 0.0001}",desert-sweep-18
-10,"{'_timestamp': 1680689670.8310964, 'test/f1-score': 0.8333333333333334, 'test/epoch_loss': 0.3740654948684904, 'train/epoch_acc': 0.8697788697788698, '_step': 2059, 'epoch': 9, 'test/recall': 0.7446808510638298, 'test/epoch_acc': 0.8444444444444444, 'test/precision': 0.945945945945946, 'train/batch_loss': 0.5778521299362183, 'train/epoch_loss': 0.3086323318522451, '_wandb': {'runtime': 362}, '_runtime': 365.3367943763733}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.9, 'optimizer': 'adam', 'step_size': 5, 'batch_size': 4, 'learning_rate': 0.003}",celestial-sweep-17
-11,"{'test/recall': 0.9285714285714286, 'test/f1-score': 0.9176470588235294, 'test/precision': 0.9069767441860463, 'train/epoch_acc': 1, 'epoch': 9, '_wandb': {'runtime': 337}, '_runtime': 340.39124369621277, '_timestamp': 1680689237.7951498, 'train/epoch_loss': 0.0053219743558098115, '_step': 149, 'test/epoch_acc': 0.9222222222222224, 'test/epoch_loss': 0.18080708616309696, 'train/batch_loss': 0.004256190732121468}","{'eps': 0.1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.9, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 64, 'learning_rate': 0.01}",cosmic-sweep-15
-12,"{'_timestamp': 1680688886.363035, 'test/recall': 0.8222222222222222, 'test/epoch_acc': 0.8777777777777778, 'test/precision': 0.925, 'train/epoch_loss': 0.09628425111664636, 'test/epoch_loss': 0.23811448697621623, 'train/epoch_acc': 0.968058968058968, 'train/batch_loss': 0.21692615747451785, '_step': 2059, 'epoch': 9, '_wandb': {'runtime': 356}, '_runtime': 359.0396990776062, 'test/f1-score': 0.8705882352941177}","{'eps': 0.1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.5, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 4, 'learning_rate': 0.001}",stilted-sweep-14
-13,"{'_step': 149, 'test/f1-score': 0.9278350515463918, 'test/epoch_loss': 0.16714997291564945, 'train/epoch_acc': 1, 'test/epoch_acc': 0.9222222222222224, 'test/precision': 0.9574468085106383, 'train/batch_loss': 0.007201554253697395, 'epoch': 9, '_wandb': {'runtime': 333}, '_runtime': 336.5640392303467, '_timestamp': 1680688517.0028613, 'test/recall': 0.9, 'train/epoch_loss': 0.007631345846546077}","{'eps': 0.1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 64, 'learning_rate': 0.01}",frosty-sweep-13
-14,"{'test/epoch_acc': 0.8777777777777778, 'test/epoch_loss': 0.32556109494633145, 'train/epoch_loss': 0.17368088453934877, '_runtime': 331.98337984085083, '_timestamp': 1680688162.2054858, 'test/recall': 0.8181818181818182, 'test/f1-score': 0.8674698795180724, 'test/precision': 0.9230769230769232, 'train/epoch_acc': 0.9496314496314496, 'train/batch_loss': 0.27152174711227417, '_step': 529, 'epoch': 9, '_wandb': {'runtime': 328}}","{'eps': 0.1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.5, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 16, 'learning_rate': 0.001}",young-sweep-12
-15,"{'_wandb': {'runtime': 332}, 'test/f1-score': 0.7311827956989247, 'train/epoch_loss': 0.5277571982775039, '_step': 1039, 'epoch': 9, 'test/recall': 0.8292682926829268, 'test/epoch_acc': 0.7222222222222222, 'test/precision': 0.6538461538461539, 'test/epoch_loss': 0.5193446947468652, 'train/epoch_acc': 0.7469287469287469, 'train/batch_loss': 0.3307788372039795, '_runtime': 335.6552822589874, '_timestamp': 1680687816.5057352}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.5, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 8, 'learning_rate': 0.1}",sandy-sweep-11
-16,"{'test/epoch_acc': 0.8555555555555556, 'test/precision': 0.8085106382978723, 'test/epoch_loss': 0.4616309046745301, '_wandb': {'runtime': 334}, '_runtime': 336.80703043937683, '_timestamp': 1680687470.9289024, 'test/recall': 0.9047619047619048, 'train/batch_loss': 0.0030224076472222805, 'train/epoch_loss': 0.003708146820279612, '_step': 149, 'epoch': 9, 'test/f1-score': 0.853932584269663, 'train/epoch_acc': 1}","{'eps': 0.1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 64, 'learning_rate': 0.1}",laced-sweep-10
-17,"{'_runtime': 265.48077392578125, 'test/recall': 0.08888888888888889, 'test/epoch_acc': 0.45555555555555555, 'train/epoch_loss': 9.16968992828444, '_wandb': {'runtime': 265}, 'epoch': 7, '_timestamp': 1680687113.1220188, 'test/f1-score': 0.14035087719298245, 'test/precision': 0.3333333333333333, 'test/epoch_loss': 11610.708938450283, 'train/epoch_acc': 0.5331695331695332, 'train/batch_loss': 9.74098777770996, '_step': 422}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.9, 'optimizer': 'adam', 'step_size': 2, 'batch_size': 16, 'learning_rate': 0.1}",jumping-sweep-9
-18,"{'test/precision': 0.8913043478260869, 'train/epoch_acc': 0.8955773955773956, 'train/epoch_loss': 0.3055295220024756, '_wandb': {'runtime': 327}, '_timestamp': 1680686834.80723, 'test/f1-score': 0.845360824742268, 'test/epoch_acc': 0.8333333333333334, 'test/epoch_loss': 0.3831123087141249, 'train/batch_loss': 0.34334877133369446, '_step': 529, 'epoch': 9, '_runtime': 330.36346793174744, 'test/recall': 0.803921568627451}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.5, 'optimizer': 'sgd', 'step_size': 7, 'batch_size': 16, 'learning_rate': 0.0003}",dutiful-sweep-8
-19,"{'epoch': 2, '_runtime': 99.40804982185364, '_timestamp': 1680686491.634724, 'test/epoch_acc': 0.45555555555555555, 'test/precision': 0.45555555555555555, 'test/epoch_loss': 6.554853016439314e+29, 'train/batch_loss': 'NaN', '_step': 157, '_wandb': {'runtime': 99}, 'test/recall': 1, 'test/f1-score': 0.6259541984732825, 'train/epoch_acc': 0.484029484029484, 'train/epoch_loss': 'NaN'}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.5, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 16, 'learning_rate': 0.1}",olive-sweep-7
-20,"{'_wandb': {'runtime': 334}, '_runtime': 337.17863941192627, 'test/recall': 0.8888888888888888, 'test/f1-score': 0.8695652173913044, 'test/epoch_acc': 0.8666666666666667, 'test/precision': 0.851063829787234, 'test/epoch_loss': 0.35141510632303025, 'train/epoch_acc': 0.9103194103194104, 'train/batch_loss': 0.3707323968410492, '_step': 279, 'epoch': 9, '_timestamp': 1680686383.3591404, 'train/epoch_loss': 0.3219767680771521}","{'eps': 0.1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.9, 'optimizer': 'adam', 'step_size': 2, 'batch_size': 32, 'learning_rate': 0.001}",good-sweep-6
-21,"{'test/recall': 0.6938775510204082, 'test/f1-score': 0.6601941747572815, 'test/epoch_acc': 0.6111111111111112, 'train/epoch_acc': 0.5196560196560196, '_wandb': {'runtime': 342}, '_runtime': 344.80718994140625, '_timestamp': 1680686028.304971, 'test/precision': 0.6296296296296297, 'test/epoch_loss': 0.6818753732575311, 'train/batch_loss': 0.7027227878570557, 'train/epoch_loss': 0.6907664721955246, '_step': 149, 'epoch': 9}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.9, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 64, 'learning_rate': 0.0003}",summer-sweep-5
-22,"{'epoch': 9, '_timestamp': 1680685671.7387648, 'test/epoch_acc': 0.9222222222222224, 'test/epoch_loss': 0.22382020586066775, 'train/epoch_acc': 0.9864864864864864, '_step': 529, '_runtime': 333.9663326740265, 'test/recall': 0.8717948717948718, 'test/f1-score': 0.9066666666666668, 'test/precision': 0.9444444444444444, 'train/batch_loss': 0.15035715699195862, 'train/epoch_loss': 0.10497688309859292, '_wandb': {'runtime': 331}}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.9, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 16, 'learning_rate': 0.001}",firm-sweep-4
-23,"{'_step': 149, '_runtime': 335.79468297958374, 'test/recall': 0.925, 'test/f1-score': 0.6379310344827587, 'test/precision': 0.4868421052631579, 'test/epoch_loss': 0.6597137530644734, 'train/batch_loss': 0.652446985244751, 'epoch': 9, '_wandb': {'runtime': 333}, '_timestamp': 1680685319.453976, 'test/epoch_acc': 0.5333333333333333, 'train/epoch_acc': 0.5909090909090909, 'train/epoch_loss': 0.6564877619028677}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'sgd', 'step_size': 3, 'batch_size': 64, 'learning_rate': 0.0001}",genial-sweep-3
-24,"{'_step': 529, 'test/recall': 0.9736842105263158, 'test/f1-score': 0.7628865979381443, 'test/precision': 0.6271186440677966, 'test/epoch_loss': 0.5467572536733415, 'train/epoch_acc': 0.7899262899262899, 'epoch': 9, '_wandb': {'runtime': 329}, '_runtime': 331.50625491142273, '_timestamp': 1680684975.004809, 'test/epoch_acc': 0.7444444444444445, 'train/batch_loss': 0.5583129525184631, 'train/epoch_loss': 0.4703364581675143}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.9, 'optimizer': 'sgd', 'step_size': 7, 'batch_size': 16, 'learning_rate': 0.1}",fine-sweep-2
-25,"{'_timestamp': 1680684633.811369, 'test/f1-score': 0.896551724137931, 'test/epoch_acc': 0.9, 'test/epoch_loss': 0.30911533037821454, '_step': 529, 'epoch': 9, '_wandb': {'runtime': 447}, '_runtime': 450.5545320510864, 'train/epoch_acc': 0.9987714987714988, 'train/batch_loss': 0.005764181260019541, 'test/recall': 0.8863636363636364, 'test/precision': 0.9069767441860463, 'train/epoch_loss': 0.007131033717467008}","{'eps': 1e-08, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.9, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 16, 'learning_rate': 0.01}",visionary-sweep-1
-26,"{'_step': 239, 'epoch': 1, '_timestamp': 1680629962.8990817, 'train/epoch_acc': 0.8931203931203932, 'train/batch_loss': 0.08615076541900635, '_wandb': {'runtime': 83}, '_runtime': 83.58446168899536, 'test/recall': 0.9047619047619048, 'test/f1-score': 0.8735632183908046, 'test/epoch_acc': 0.8777777777777778, 'test/precision': 0.8444444444444444, 'test/epoch_loss': 0.29840316110187104, 'train/epoch_loss': 0.2428556958016658}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.9, 'optimizer': 'adam', 'step_size': 2, 'batch_size': 8, 'learning_rate': 0.1}",stoic-sweep-14
-27,"{'_timestamp': 1680629872.8401277, 'test/recall': 0.975, 'test/f1-score': 0.951219512195122, 'test/epoch_loss': 0.20102048052681817, 'train/epoch_acc': 0.9803439803439804, '_step': 149, '_wandb': {'runtime': 347}, '_runtime': 348.9410927295685, 'train/batch_loss': 0.10338585078716278, 'train/epoch_loss': 0.1163152276517718, 'epoch': 9, 'test/epoch_acc': 0.9555555555555556, 'test/precision': 0.9285714285714286}","{'eps': 0.1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.5, 'optimizer': 'sgd', 'step_size': 2, 'batch_size': 64, 'learning_rate': 0.01}",rich-sweep-13
-28,"{'_timestamp': 1680629513.1781075, 'test/epoch_loss': 3.395405118153546e+20, 'train/batch_loss': 82027960, 'train/epoch_loss': 60563307.6520902, 'epoch': 3, '_wandb': {'runtime': 135}, '_runtime': 132.22715950012207, 'test/recall': 0.9111111111111112, 'test/f1-score': 0.6721311475409836, 'test/epoch_acc': 0.5555555555555556, 'test/precision': 0.5324675324675324, 'train/epoch_acc': 0.5282555282555282, '_step': 210}","{'eps': 1e-08, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.5, 'optimizer': 'adam', 'step_size': 7, 'batch_size': 16, 'learning_rate': 0.003}",smooth-sweep-12
-29,"{'test/recall': 0.8888888888888888, 'test/f1-score': 0.6597938144329897, 'test/precision': 0.5245901639344263, 'test/epoch_loss': 0.6240786300765143, '_step': 279, '_runtime': 327.2181556224823, '_timestamp': 1680629374.0562296, 'test/epoch_acc': 0.6333333333333333, 'train/epoch_acc': 0.7469287469287469, 'train/batch_loss': 0.5836847424507141, 'train/epoch_loss': 0.6072891213970044, 'epoch': 9, '_wandb': {'runtime': 326}}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.5, 'optimizer': 'sgd', 'step_size': 2, 'batch_size': 32, 'learning_rate': 0.0003}",resilient-sweep-11
-30,"{'_wandb': {'runtime': 330}, '_timestamp': 1680629038.456323, 'test/epoch_loss': 0.2657569663392173, 'train/epoch_loss': 0.12745249926751018, '_step': 529, '_runtime': 332.23273372650146, 'test/recall': 0.8269230769230769, 'test/f1-score': 0.8958333333333334, 'test/epoch_acc': 0.888888888888889, 'test/precision': 0.9772727272727272, 'train/epoch_acc': 0.9717444717444718, 'train/batch_loss': 0.13025684654712677, 'epoch': 9}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'sgd', 'step_size': 3, 'batch_size': 16, 'learning_rate': 0.001}",serene-sweep-10
-31,"{'test/f1-score': 0.9, 'test/epoch_acc': 0.9111111111111112, 'test/precision': 0.972972972972973, 'test/epoch_loss': 0.23338710864384968, 'train/epoch_acc': 0.9275184275184276, 'train/batch_loss': 0.11391787976026536, 'epoch': 9, '_wandb': {'runtime': 334}, 'train/epoch_loss': 0.2116023584907412, '_timestamp': 1680628699.1189623, 'test/recall': 0.8372093023255814, '_step': 1039, '_runtime': 335.94198656082153}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.5, 'optimizer': 'sgd', 'step_size': 7, 'batch_size': 8, 'learning_rate': 0.0003}",cool-sweep-9
-32,"{'_timestamp': 1680628351.790065, 'test/recall': 0.8863636363636364, 'test/epoch_acc': 0.7777777777777778, 'train/epoch_acc': 0.7702702702702703, 'train/epoch_loss': 0.6034659886828805, 'epoch': 9, '_wandb': {'runtime': 326}, '_runtime': 327.29265093803406, 'test/epoch_loss': 0.5824494547314114, 'train/batch_loss': 0.5777762532234192, '_step': 529, 'test/f1-score': 0.7959183673469388, 'test/precision': 0.7222222222222222}","{'eps': 0.1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.999, 'optimizer': 'sgd', 'step_size': 2, 'batch_size': 16, 'learning_rate': 0.0001}",lilac-sweep-8
-33,"{'epoch': 9, '_runtime': 337.11313247680664, 'test/f1-score': 0.717391304347826, 'test/epoch_acc': 0.7111111111111111, 'test/epoch_loss': 0.6369305915302701, 'train/batch_loss': 0.5935282111167908, '_step': 149, '_timestamp': 1680628016.5942774, 'test/recall': 0.8048780487804879, 'test/precision': 0.6470588235294118, 'train/epoch_acc': 0.7199017199017199, 'train/epoch_loss': 0.618001790392311, '_wandb': {'runtime': 335}}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 7, 'batch_size': 64, 'learning_rate': 0.001}",warm-sweep-7
-34,"{'_step': 2059, 'epoch': 9, '_wandb': {'runtime': 354}, '_runtime': 355.7423675060272, '_timestamp': 1680627667.6215644, 'test/epoch_acc': 0.6333333333333333, 'test/epoch_loss': 0.6619265423880683, 'train/epoch_acc': 0.6498771498771498, 'test/recall': 0.8, 'test/f1-score': 0.6857142857142857, 'test/precision': 0.6, 'train/batch_loss': 0.6662057638168335, 'train/epoch_loss': 0.6663250732773353}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 7, 'batch_size': 4, 'learning_rate': 0.0001}",giddy-sweep-6
-35,"{'test/recall': 0.8163265306122449, 'test/f1-score': 0.7766990291262137, 'test/precision': 0.7407407407407407, 'test/epoch_loss': 0.6307997491624621, 'train/epoch_acc': 0.7125307125307125, 'train/batch_loss': 0.6531811356544495, '_wandb': {'runtime': 343}, '_runtime': 344.59358406066895, '_timestamp': 1680627305.434523, 'test/epoch_acc': 0.7444444444444445, 'train/epoch_loss': 0.6398702088093582, '_step': 149, 'epoch': 9}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.5, 'optimizer': 'sgd', 'step_size': 7, 'batch_size': 64, 'learning_rate': 0.0001}",stellar-sweep-5
-36,"{'test/precision': 0.9705882352941176, 'test/epoch_loss': 0.1906787835785912, 'train/epoch_acc': 0.9975429975429976, '_step': 1039, 'epoch': 9, '_wandb': {'runtime': 334}, 'test/f1-score': 0.9041095890410958, 'train/batch_loss': 0.0006497434806078672, 'train/epoch_loss': 0.02095988139033052, '_runtime': 335.76391553878784, '_timestamp': 1680626951.0603056, 'test/recall': 0.8461538461538461, 'test/epoch_acc': 0.9222222222222224}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.9, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 8, 'learning_rate': 0.003}",olive-sweep-4
-37,"{'epoch': 9, '_runtime': 333.64992809295654, '_timestamp': 1680626608.419389, 'train/epoch_loss': 0.11751884335528429, 'train/epoch_acc': 0.984029484029484, '_step': 149, '_wandb': {'runtime': 332}, 'test/recall': 0.925, 'test/f1-score': 0.8705882352941177, 'test/epoch_acc': 0.8777777777777778, 'test/precision': 0.8222222222222222, 'test/epoch_loss': 0.27919367684258356, 'train/batch_loss': 0.12675245106220245}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.9, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 64, 'learning_rate': 0.003}",dazzling-sweep-3
-38,"{'test/precision': 0.5306122448979592, '_wandb': {'runtime': 336}, '_timestamp': 1680626264.5954974, 'test/recall': 0.6842105263157895, 'test/epoch_acc': 0.6111111111111112, 'test/epoch_loss': 0.6708752089076572, 'train/epoch_acc': 0.6547911547911548, 'train/batch_loss': 0.5270536541938782, 'train/epoch_loss': 0.6389284106085868, '_step': 1039, 'epoch': 9, '_runtime': 337.19885444641113, 'test/f1-score': 0.5977011494252874}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.99, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 8, 'learning_rate': 0.01}",kind-sweep-2
-39,"{'train/epoch_loss': 0.3516608065117782, 'epoch': 9, 'test/epoch_acc': 0.8555555555555556, 'test/precision': 0.8444444444444444, 'train/epoch_acc': 0.8746928746928747, 'train/batch_loss': 0.3848239779472351, 'test/f1-score': 0.853932584269663, 'test/epoch_loss': 0.38614972366227046, '_step': 529, '_wandb': {'runtime': 337}, '_runtime': 337.9836483001709, '_timestamp': 1680625919.9645753, 'test/recall': 0.8636363636363636}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.5, 'optimizer': 'adam', 'step_size': 5, 'batch_size': 16, 'learning_rate': 0.003}",morning-sweep-1
-40,"{'train/epoch_loss': 0.02368298517580857, 'epoch': 9, 'test/recall': 0.8653846153846154, 'test/f1-score': 0.9, 'test/precision': 0.9375, 'test/epoch_acc': 0.888888888888889, 'test/epoch_loss': 0.25786760796585845, 'train/epoch_acc': 0.9975429975429976, 'train/batch_loss': 0.05631007254123688, '_step': 2059, '_wandb': {'runtime': 346}, '_runtime': 347.9354045391083, '_timestamp': 1680624250.2654595}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 2, 'batch_size': 4, 'learning_rate': 0.1}",valiant-sweep-23
-41,"{'train/batch_loss': 0.5639374256134033, '_timestamp': 1680623895.362503, 'test/recall': 0.8936170212765957, 'test/f1-score': 0.8571428571428571, 'test/epoch_acc': 0.8444444444444444, 'test/precision': 0.8235294117647058, 'test/epoch_loss': 0.490613665845659, 'train/epoch_acc': 0.8243243243243243, '_step': 1039, 'epoch': 9, '_wandb': {'runtime': 327}, '_runtime': 329.4802031517029, 'train/epoch_loss': 0.48581602795996887}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.5, 'optimizer': 'sgd', 'step_size': 2, 'batch_size': 8, 'learning_rate': 0.0003}",earnest-sweep-22
-42,"{'_timestamp': 1680623556.4586525, 'test/recall': 0.9148936170212766, 'test/f1-score': 0.9052631578947368, 'test/epoch_acc': 0.9, 'test/precision': 0.8958333333333334, 'test/epoch_loss': 0.2318242397573259, 'train/epoch_acc': 0.995085995085995, 'epoch': 9, '_wandb': {'runtime': 326}, '_runtime': 328.0050995349884, 'train/batch_loss': 0.06110217794775963, 'train/epoch_loss': 0.05107141801451289, '_step': 149}","{'eps': 1e-08, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 7, 'batch_size': 64, 'learning_rate': 0.003}",genial-sweep-21
-43,"{'_runtime': 327.10622239112854, '_timestamp': 1680623221.0825984, 'test/recall': 0.8723404255319149, 'test/epoch_acc': 0.7444444444444445, 'test/epoch_loss': 0.5943129923608568, 'train/epoch_acc': 0.7911547911547911, '_step': 149, '_wandb': {'runtime': 325}, 'train/epoch_loss': 0.5714027147914034, 'test/precision': 0.7068965517241379, 'train/batch_loss': 0.6166229844093323, 'epoch': 9, 'test/f1-score': 0.780952380952381}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 2, 'batch_size': 64, 'learning_rate': 0.001}",lemon-sweep-20
-44,"{'_runtime': 331.60892701148987, 'test/recall': 0.7021276595744681, 'test/epoch_acc': 0.6, 'test/precision': 0.6, 'test/epoch_loss': 0.6746161646313138, 'train/batch_loss': 0.7205827236175537, '_step': 1039, '_wandb': {'runtime': 330}, '_timestamp': 1680622885.059607, 'test/f1-score': 0.6470588235294118, 'train/epoch_acc': 0.6277641277641277, 'train/epoch_loss': 0.6722187732302879, 'epoch': 9}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.9, 'optimizer': 'adam', 'step_size': 2, 'batch_size': 8, 'learning_rate': 0.0001}",ancient-sweep-19
-45,"{'_wandb': {'runtime': 347}, '_runtime': 348.9979507923126, '_timestamp': 1680622545.2735748, 'test/f1-score': 0.898876404494382, 'test/epoch_acc': 0.9, 'test/epoch_loss': 0.24883262103216516, '_step': 2059, 'epoch': 9, 'train/epoch_acc': 0.9877149877149876, 'train/epoch_loss': 0.0466749508011656, 'train/batch_loss': 0.015468262135982512, 'test/recall': 0.8695652173913043, 'test/precision': 0.9302325581395348}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.9, 'optimizer': 'adam', 'step_size': 5, 'batch_size': 4, 'learning_rate': 0.01}",smart-sweep-18
-46,"{'test/precision': 0.945945945945946, 'epoch': 9, '_wandb': {'runtime': 328}, '_runtime': 329.3028633594513, '_timestamp': 1680622188.8210304, 'test/recall': 0.8536585365853658, 'test/f1-score': 0.8974358974358975, '_step': 1039, 'test/epoch_acc': 0.9111111111111112, 'test/epoch_loss': 0.2015038196825319, 'train/epoch_acc': 0.9815724815724816, 'train/batch_loss': 0.007225348148494959, 'train/epoch_loss': 0.07856258183731457}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.9, 'optimizer': 'sgd', 'step_size': 2, 'batch_size': 8, 'learning_rate': 0.003}",sleek-sweep-17
-47,"{'_step': 279, 'epoch': 9, '_wandb': {'runtime': 321}, '_timestamp': 1680621849.979658, 'train/epoch_acc': 0.828009828009828, 'train/batch_loss': 0.6047794222831726, 'train/epoch_loss': 0.5808350268101516, '_runtime': 323.3842430114746, 'test/recall': 0.8301886792452831, 'test/f1-score': 0.8543689320388349, 'test/epoch_acc': 0.8333333333333334, 'test/precision': 0.88, 'test/epoch_loss': 0.5843977000978258}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.5, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 32, 'learning_rate': 0.0001}",winter-sweep-16
-48,"{'test/recall': 0.85, 'train/batch_loss': 0.001602485659532249, 'epoch': 9, '_wandb': {'runtime': 346}, '_timestamp': 1680621511.323635, 'test/f1-score': 0.85, 'test/epoch_acc': 0.8666666666666667, 'test/precision': 0.85, 'test/epoch_loss': 0.5281610590923164, 'train/epoch_acc': 0.995085995085995, '_step': 2059, '_runtime': 347.8050694465637, 'train/epoch_loss': 0.029015880939893934}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 7, 'batch_size': 4, 'learning_rate': 0.1}",rare-sweep-15
-49,"{'_step': 2059, 'epoch': 9, '_wandb': {'runtime': 346}, '_runtime': 347.7671456336975, 'test/epoch_acc': 0.9222222222222224, 'test/precision': 0.9487179487179488, 'train/epoch_loss': 0.04606454834343147, '_timestamp': 1680621147.5604067, 'test/recall': 0.8809523809523809, 'test/f1-score': 0.9135802469135802, 'test/epoch_loss': 0.22225395898438163, 'train/epoch_acc': 0.9864864864864864, 'train/batch_loss': 0.010366588830947876}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 7, 'batch_size': 4, 'learning_rate': 0.001}",stoic-sweep-14
-50,"{'train/epoch_acc': 0.6523341523341524, 'train/batch_loss': 0.6023905277252197, '_wandb': {'runtime': 351}, '_timestamp': 1680620790.920825, 'test/recall': 0.675, 'test/f1-score': 0.6585365853658537, 'test/precision': 0.6428571428571429, 'test/epoch_loss': 0.661226307021247, 'train/epoch_loss': 0.6673213337211703, '_step': 2059, 'epoch': 9, '_runtime': 352.6435329914093, 'test/epoch_acc': 0.6888888888888889}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 5, 'batch_size': 4, 'learning_rate': 0.0001}",glorious-sweep-13
-51,"{'epoch': 9, '_wandb': {'runtime': 329}, 'test/recall': 0.9574468085106383, 'test/f1-score': 0.9782608695652174, 'test/precision': 1, 'train/batch_loss': 0.004083937965333462, 'train/epoch_loss': 0.0071195896911716286, '_step': 149, '_runtime': 330.7649688720703, '_timestamp': 1680620431.024078, 'test/epoch_acc': 0.977777777777778, 'test/epoch_loss': 0.1352142873737547, 'train/epoch_acc': 1}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 64, 'learning_rate': 0.01}",chocolate-sweep-12
-52,"{'train/epoch_loss': 0.5577488642652731, '_step': 149, '_wandb': {'runtime': 328}, 'test/recall': 0.926829268292683, 'test/f1-score': 0.8636363636363636, 'test/precision': 0.8085106382978723, 'train/epoch_acc': 0.800982800982801, 'train/batch_loss': 0.5299303531646729, 'epoch': 9, '_runtime': 329.12984681129456, '_timestamp': 1680620092.0697718, 'test/epoch_acc': 0.8666666666666667, 'test/epoch_loss': 0.5375637359089321}","{'eps': 0.1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.99, 'optimizer': 'adam', 'step_size': 5, 'batch_size': 64, 'learning_rate': 0.0003}",glowing-sweep-11
-53,"{'train/epoch_acc': 0.8611793611793611, '_step': 279, 'epoch': 9, '_wandb': {'runtime': 322}, '_timestamp': 1680619755.0191748, 'test/f1-score': 0.7659574468085105, 'train/batch_loss': 0.5281365513801575, 'train/epoch_loss': 0.46212616409072127, '_runtime': 324.3058567047119, 'test/recall': 0.7659574468085106, 'test/epoch_acc': 0.7555555555555555, 'test/precision': 0.7659574468085106, 'test/epoch_loss': 0.5337554746203952}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.5, 'optimizer': 'adam', 'step_size': 5, 'batch_size': 32, 'learning_rate': 0.003}",different-sweep-10
-54,"{'test/epoch_loss': 0.5470490535100301, 'train/batch_loss': 0.6183260083198547, '_step': 279, 'epoch': 9, '_runtime': 327.0705659389496, '_timestamp': 1680619423.656795, 'test/recall': 0.9523809523809524, 'test/precision': 0.7843137254901961, '_wandb': {'runtime': 325}, 'test/f1-score': 0.8602150537634408, 'test/epoch_acc': 0.8555555555555556, 'train/epoch_acc': 0.8058968058968059, 'train/epoch_loss': 0.5580001385557564}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 32, 'learning_rate': 0.003}",lilac-sweep-9
-55,"{'test/f1-score': 0.7956989247311828, 'test/precision': 0.8409090909090909, 'train/batch_loss': 0.6300776600837708, '_step': 529, 'epoch': 9, '_runtime': 328.68579959869385, '_timestamp': 1680619089.5332966, 'test/recall': 0.7551020408163265, 'train/epoch_loss': 0.46969629490990605, '_wandb': {'runtime': 327}, 'test/epoch_acc': 0.788888888888889, 'test/epoch_loss': 0.46168507006433274, 'train/epoch_acc': 0.773955773955774}","{'eps': 0.1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 3, 'batch_size': 16, 'learning_rate': 0.1}",crimson-sweep-8
-56,"{'test/recall': 0.8181818181818182, 'test/epoch_loss': 0.44089303129391433, 'train/epoch_acc': 0.9938574938574938, 'train/epoch_loss': 0.02176519967463292, 'test/epoch_acc': 0.8555555555555556, 'test/precision': 0.9375, '_step': 2059, 'epoch': 9, '_wandb': {'runtime': 349}, '_runtime': 350.2308712005615, '_timestamp': 1680618753.2361271, 'test/f1-score': 0.8737864077669902, 'train/batch_loss': 0.011611333116889}","{'eps': 0.1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 7, 'batch_size': 4, 'learning_rate': 0.003}",still-sweep-7
-57,"{'test/epoch_acc': 0.8777777777777778, 'test/precision': 0.85, 'test/epoch_loss': 0.24035142682841976, 'train/epoch_acc': 0.9938574938574938, 'epoch': 9, '_wandb': {'runtime': 333}, 'test/recall': 0.8717948717948718, 'test/f1-score': 0.8607594936708861, 'train/epoch_loss': 0.02099113287724536, '_step': 1039, '_runtime': 334.69481587409973, '_timestamp': 1680618396.0194488, 'train/batch_loss': 0.030084805563092232}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 8, 'learning_rate': 0.01}",charmed-sweep-6
-58,"{'epoch': 9, '_wandb': {'runtime': 335}, '_timestamp': 1680618051.044084, 'train/epoch_acc': 0.9963144963144964, 'train/epoch_loss': 0.010693324584853135, '_step': 1039, 'test/recall': 0.8780487804878049, 'test/f1-score': 0.8674698795180722, 'test/epoch_acc': 0.8777777777777778, 'test/precision': 0.8571428571428571, 'test/epoch_loss': 0.5385394818252988, 'train/batch_loss': 0.001848929445259273, '_runtime': 336.1621870994568}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.9, 'optimizer': 'adam', 'step_size': 7, 'batch_size': 8, 'learning_rate': 0.0003}",restful-sweep-5
-59,"{'train/epoch_acc': 1, 'train/batch_loss': 0.004928763955831528, 'train/epoch_loss': 0.004462716538065481, '_step': 149, '_runtime': 334.4848310947418, 'test/f1-score': 0.8409090909090909, 'test/epoch_acc': 0.8444444444444444, 'test/precision': 0.8409090909090909, 'epoch': 9, '_wandb': {'runtime': 333}, '_timestamp': 1680617708.075962, 'test/recall': 0.8409090909090909, 'test/epoch_loss': 0.6238909363746643}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.5, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 64, 'learning_rate': 0.1}",proud-sweep-4
-60,"{'epoch': 9, '_runtime': 338.4922821521759, '_timestamp': 1680617365.2791553, 'test/recall': 0.75, 'test/f1-score': 0.4778761061946903, 'test/precision': 0.35064935064935066, 'test/epoch_loss': 0.7233364171451993, 'train/epoch_acc': 0.5626535626535626, 'train/batch_loss': 0.6750851273536682, 'train/epoch_loss': 0.6796711432845938, '_step': 149, '_wandb': {'runtime': 337}, 'test/epoch_acc': 0.34444444444444444}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.5, 'optimizer': 'sgd', 'step_size': 2, 'batch_size': 64, 'learning_rate': 0.0001}",visionary-sweep-3
-61,"{'test/recall': 1, 'test/f1-score': 0.59375, 'test/epoch_loss': 109.22879723442924, 'train/epoch_acc': 0.5147420147420148, '_step': 110, 'epoch': 3, '_runtime': 129.48883533477783, '_timestamp': 1680617007.4126654, 'train/batch_loss': 1.2695436477661133, 'train/epoch_loss': 3.225923076601521, '_wandb': {'runtime': 132}, 'test/epoch_acc': 0.4222222222222222, 'test/precision': 0.4222222222222222}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.99, 'optimizer': 'adam', 'step_size': 2, 'batch_size': 32, 'learning_rate': 0.1}",splendid-sweep-2
-62,"{'train/epoch_loss': 0.5949591096554693, '_step': 1039, 'epoch': 9, 'test/recall': 0.8636363636363636, 'test/f1-score': 0.8172043010752688, 'test/precision': 0.7755102040816326, 'test/epoch_loss': 0.6018742865986294, '_wandb': {'runtime': 372}, '_runtime': 373.84231185913086, '_timestamp': 1680616870.0621138, 'test/epoch_acc': 0.8111111111111111, 'train/epoch_acc': 0.7727272727272727, 'train/batch_loss': 0.563504695892334}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 3, 'batch_size': 8, 'learning_rate': 0.0001}",snowy-sweep-1
-63,"{'_timestamp': 1678798635.5359335, 'test/recall': 0.5813953488372093, 'test/epoch_acc': 0.6333333333333333, 'test/precision': 0.625, 'train/epoch_loss': 0.684732110699506, '_step': 529, '_runtime': 333.6077947616577, 'test/f1-score': 0.6024096385542168, 'test/epoch_loss': 0.6787986318270366, 'train/epoch_acc': 0.5552825552825553, 'train/batch_loss': 0.7118003964424133, 'epoch': 9, '_wandb': {'runtime': 327}}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.5, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 16, 'learning_rate': 0.0001}",comic-sweep-38
-64,"{'test/epoch_loss': 0.5120628664890925, 'train/epoch_acc': 1, '_wandb': {'runtime': 337}, '_runtime': 342.7867271900177, '_timestamp': 1678798288.876002, 'test/recall': 1, 'test/f1-score': 0.888888888888889, 'test/precision': 0.8, 'train/epoch_loss': 0.001254009526264133, '_step': 149, 'epoch': 9, 'test/epoch_acc': 0.888888888888889, 'train/batch_loss': 0.0015535189304500818}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.999, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 64, 'learning_rate': 0.1}",magic-sweep-37
-65,"{'test/f1-score': 0.6190476190476191, 'test/epoch_loss': 0.6593369828330146, 'train/batch_loss': 0.6705241203308105, 'train/epoch_loss': 0.659313001562395, 'epoch': 9, '_runtime': 338.4290623664856, '_timestamp': 1678797929.8979273, 'test/recall': 0.6341463414634146, 'test/epoch_acc': 0.6444444444444445, 'test/precision': 0.6046511627906976, 'train/epoch_acc': 0.6572481572481572, '_step': 279, '_wandb': {'runtime': 332}}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.9, 'optimizer': 'adam', 'step_size': 7, 'batch_size': 32, 'learning_rate': 0.0003}",azure-sweep-36
-66,"{'test/epoch_acc': 0.9, 'test/epoch_loss': 0.5167779392666287, '_step': 1039, '_wandb': {'runtime': 343}, '_timestamp': 1678797575.4461255, 'test/recall': 0.8703703703703703, 'test/f1-score': 0.912621359223301, 'test/precision': 0.9591836734693876, 'train/epoch_acc': 0.7911547911547911, 'train/batch_loss': 0.5475739240646362, 'epoch': 9, '_runtime': 349.1018385887146, 'train/epoch_loss': 0.542006236622316}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.99, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 8, 'learning_rate': 0.001}",easy-sweep-35
-67,"{'test/epoch_loss': 0.27850865055532065, 'train/batch_loss': 4.9947026127483696e-05, 'train/epoch_loss': 0.012833298822080874, '_timestamp': 1678797212.2311337, 'test/recall': 0.8611111111111112, '_wandb': {'runtime': 362}, '_runtime': 367.9372293949127, 'test/f1-score': 0.8611111111111112, 'test/epoch_acc': 0.888888888888889, 'test/precision': 0.8611111111111112, 'train/epoch_acc': 0.9987714987714988, '_step': 2059, 'epoch': 9}","{'eps': 0.1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.9, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 4, 'learning_rate': 0.003}",usual-sweep-34
-68,"{'_step': 529, '_runtime': 335.99687933921814, 'test/f1-score': 0.903846153846154, 'test/epoch_acc': 0.888888888888889, 'test/precision': 0.8392857142857143, 'test/epoch_loss': 0.6554473309053315, 'epoch': 9, '_wandb': {'runtime': 330}, '_timestamp': 1678796827.8409674, 'test/recall': 0.9791666666666666, 'train/epoch_acc': 0.9742014742014742, 'train/batch_loss': 0.17918632924556732, 'train/epoch_loss': 0.07036763163974523}","{'eps': 1e-08, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.5, 'optimizer': 'adam', 'step_size': 5, 'batch_size': 16, 'learning_rate': 0.0003}",polar-sweep-33
-69,"{'epoch': 9, '_runtime': 336.63737440109253, 'test/f1-score': 0.7356321839080459, 'test/epoch_acc': 0.7444444444444445, 'test/precision': 0.64, 'test/epoch_loss': 0.5271965821584066, 'train/epoch_acc': 0.8660933660933661, 'train/epoch_loss': 0.47513497564072105, '_step': 149, '_wandb': {'runtime': 330}, '_timestamp': 1678796468.9253614, 'test/recall': 0.8648648648648649, 'train/batch_loss': 0.4695126414299011}","{'eps': 0.1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.5, 'optimizer': 'sgd', 'step_size': 2, 'batch_size': 64, 'learning_rate': 0.001}",still-sweep-32
-70,"{'train/batch_loss': 0.711412787437439, 'train/epoch_loss': 0.09577267487700432, '_step': 2059, 'epoch': 9, '_wandb': {'runtime': 372}, '_timestamp': 1678796117.3062005, 'test/f1-score': 0.868421052631579, 'test/epoch_acc': 0.888888888888889, '_runtime': 378.4032835960388, 'test/recall': 0.8048780487804879, 'test/precision': 0.9428571428571428, 'test/epoch_loss': 0.2378266812198692, 'train/epoch_acc': 0.9705159705159704}","{'eps': 0.1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.5, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 4, 'learning_rate': 0.001}",misty-sweep-31
-71,"{'_step': 529, 'epoch': 9, '_wandb': {'runtime': 333}, '_runtime': 336.8808288574219, '_timestamp': 1678795725.918603, 'test/recall': 0.8260869565217391, 'test/f1-score': 0.8636363636363636, 'test/epoch_acc': 0.8666666666666667, 'train/epoch_acc': 0.9926289926289926, 'test/precision': 0.9047619047619048, 'test/epoch_loss': 0.27924135790930854, 'train/batch_loss': 0.04936826974153519, 'train/epoch_loss': 0.05967479737370254}","{'eps': 1e-08, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.9, 'optimizer': 'sgd', 'step_size': 7, 'batch_size': 16, 'learning_rate': 0.001}",flowing-sweep-30
-72,"{'_step': 279, 'epoch': 9, '_wandb': {'runtime': 336}, '_runtime': 339.73244285583496, 'test/f1-score': 0.898876404494382, 'test/epoch_acc': 0.9, 'test/precision': 0.9523809523809524, 'test/epoch_loss': 0.37525106337335373, 'train/epoch_loss': 0.3784469199122024, '_timestamp': 1678795319.518895, 'test/recall': 0.851063829787234, 'train/epoch_acc': 0.8722358722358722, 'train/batch_loss': 0.4592914581298828}","{'eps': 0.1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.9, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 32, 'learning_rate': 0.001}",deep-sweep-28
-73,"{'_timestamp': 1678794965.2675128, 'test/f1-score': 0.6849315068493151, 'test/epoch_acc': 0.7444444444444445, 'test/precision': 0.7575757575757576, 'test/epoch_loss': 0.5484810524516636, 'epoch': 9, '_wandb': {'runtime': 377}, '_runtime': 381.0768678188324, 'train/epoch_acc': 0.7899262899262899, 'train/batch_loss': 0.6763702630996704, 'train/epoch_loss': 0.5319552311733255, '_step': 2059, 'test/recall': 0.625}","{'eps': 0.1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.5, 'optimizer': 'adam', 'step_size': 5, 'batch_size': 4, 'learning_rate': 0.0001}",glorious-sweep-27
-74,"{'_step': 529, 'epoch': 9, '_wandb': {'runtime': 334}, '_runtime': 338.11463618278503, '_timestamp': 1678794572.9156363, 'test/recall': 0.813953488372093, 'test/epoch_acc': 0.7555555555555555, 'test/epoch_loss': 0.5729872869120703, 'train/epoch_acc': 0.8968058968058967, 'train/batch_loss': 0.4391788542270661, 'test/f1-score': 0.7608695652173914, 'test/precision': 0.7142857142857143, 'train/epoch_loss': 0.2699748155379471}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.9, 'optimizer': 'sgd', 'step_size': 2, 'batch_size': 16, 'learning_rate': 0.1}",stoic-sweep-26
-75,"{'test/epoch_loss': 0.3083995895563728, '_step': 2059, '_wandb': {'runtime': 377}, '_timestamp': 1678794222.848524, 'test/recall': 0.8863636363636364, 'test/f1-score': 0.8666666666666666, 'test/precision': 0.8478260869565217, 'epoch': 9, '_runtime': 380.8983037471771, 'test/epoch_acc': 0.8666666666666667, 'train/epoch_acc': 0.9877149877149876, 'train/batch_loss': 0.025906365364789963, 'train/epoch_loss': 0.04955068614813831}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 7, 'batch_size': 4, 'learning_rate': 0.01}",vibrant-sweep-25
-76,"{'test/f1-score': 0.8867924528301887, 'test/precision': 0.8545454545454545, 'test/epoch_loss': 0.7976957665549385, '_step': 149, 'epoch': 9, '_wandb': {'runtime': 340}, '_timestamp': 1678793829.5489533, 'test/recall': 0.9215686274509804, 'train/epoch_acc': 1, '_runtime': 343.4739582538605, 'test/epoch_acc': 0.8666666666666667, 'train/batch_loss': 0.0010389955714344978, 'train/epoch_loss': 0.002287556243378495}","{'eps': 0.1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 5, 'batch_size': 64, 'learning_rate': 0.1}",valiant-sweep-24
-77,"{'test/f1-score': 0.8571428571428571, 'test/precision': 0.8666666666666667, 'test/epoch_loss': 0.4112878143787384, 'train/batch_loss': 0.3762533664703369, 'train/epoch_loss': 0.3862068348493272, 'epoch': 9, '_runtime': 344.0598545074463, 'test/recall': 0.8478260869565217, 'test/epoch_acc': 0.8555555555555556, 'train/epoch_acc': 0.8857493857493858, '_step': 149, '_wandb': {'runtime': 340}, '_timestamp': 1678793464.5180786}","{'eps': 0.1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 5, 'batch_size': 64, 'learning_rate': 0.001}",polished-sweep-23
-78,"{'_timestamp': 1678793108.7606344, 'test/recall': 0.8837209302325582, 'test/epoch_loss': 0.6097042110231188, 'train/epoch_acc': 0.6756756756756757, 'train/batch_loss': 0.7007869482040405, 'epoch': 9, '_wandb': {'runtime': 336}, '_runtime': 339.41979336738586, 'test/f1-score': 0.7102803738317758, 'test/epoch_acc': 0.6555555555555556, 'test/precision': 0.59375, 'train/epoch_loss': 0.6115244123215171, '_step': 529}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 2, 'batch_size': 16, 'learning_rate': 0.01}",clear-sweep-22
-79,"{'test/precision': 0.9393939393939394, 'train/epoch_loss': 0.07462231436439994, 'epoch': 9, '_runtime': 381.0477261543274, 'test/epoch_acc': 0.9, 'test/recall': 0.8157894736842105, 'test/f1-score': 0.8732394366197183, 'test/epoch_loss': 0.23743902287549443, 'train/epoch_acc': 0.9815724815724816, 'train/batch_loss': 0.5061427354812622, '_step': 2059, '_wandb': {'runtime': 377}, '_timestamp': 1678792758.596286}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.99, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 4, 'learning_rate': 0.01}",sage-sweep-21
-80,"{'_wandb': {'runtime': 331}, '_timestamp': 1678792364.5292609, 'test/f1-score': 0.8505747126436782, 'test/precision': 0.902439024390244, 'train/epoch_acc': 0.9791154791154792, 'train/batch_loss': 0.24579545855522156, 'train/epoch_loss': 0.12095561367287976, '_step': 529, 'epoch': 9, '_runtime': 335.3731348514557, 'test/recall': 0.8043478260869565, 'test/epoch_acc': 0.8555555555555556, 'test/epoch_loss': 0.28035063776705}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.999, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 16, 'learning_rate': 0.001}",olive-sweep-20
-81,"{'_wandb': {'runtime': 337}, 'test/recall': 0.9111111111111112, 'test/f1-score': 0.931818181818182, 'test/epoch_acc': 0.9333333333333332, 'test/precision': 0.9534883720930232, 'test/epoch_loss': 0.17397157057291932, 'epoch': 9, '_runtime': 340.5063774585724, '_timestamp': 1678792015.2579195, 'train/epoch_acc': 0.995085995085995, 'train/batch_loss': 0.0077079650945961475, 'train/epoch_loss': 0.018187719287696302, '_step': 1039}","{'eps': 0.1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 8, 'learning_rate': 0.003}",autumn-sweep-19
-82,"{'epoch': 9, '_wandb': {'runtime': 344}, 'test/recall': 0.8205128205128205, 'train/epoch_loss': 0.4784781006542412, 'test/epoch_loss': 0.4940012666914198, 'train/epoch_acc': 0.8218673218673218, '_step': 1039, '_runtime': 347.40152740478516, '_timestamp': 1678791661.9692383, 'test/f1-score': 0.7804878048780488, 'test/epoch_acc': 0.8, 'test/precision': 0.7441860465116279, 'train/batch_loss': 0.4317986071109772}","{'eps': 0.1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 7, 'batch_size': 8, 'learning_rate': 0.0001}",crisp-sweep-18
-83,"{'_runtime': 337.956387758255, 'test/recall': 0.9090909090909092, 'test/f1-score': 0.9090909090909092, 'test/precision': 0.9090909090909092, 'test/epoch_loss': 0.19624250796106127, '_step': 279, '_wandb': {'runtime': 335}, '_timestamp': 1678791236.6172178, 'test/epoch_acc': 0.9111111111111112, 'train/epoch_acc': 0.9828009828009828, 'train/batch_loss': 0.15555259585380554, 'train/epoch_loss': 0.08830470366618558, 'epoch': 9}","{'eps': 0.1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 2, 'batch_size': 32, 'learning_rate': 0.003}",deep-sweep-16
-84,"{'_step': 279, '_timestamp': 1678790886.952144, 'test/f1-score': 0.7818181818181819, 'test/precision': 0.7049180327868853, 'test/epoch_loss': 0.6228035251299541, 'train/epoch_acc': 0.7493857493857494, 'train/batch_loss': 0.6377201080322266, 'epoch': 9, '_wandb': {'runtime': 331}, '_runtime': 334.2993712425232, 'test/recall': 0.8775510204081632, 'test/epoch_acc': 0.7333333333333334, 'train/epoch_loss': 0.6127705679478751}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 2, 'batch_size': 32, 'learning_rate': 0.0003}",confused-sweep-15
-85,"{'train/epoch_loss': 0.3545121966840594, '_step': 529, 'epoch': 9, '_runtime': 345.0617377758026, '_timestamp': 1678790542.286384, 'test/f1-score': 0.7809523809523811, 'train/epoch_acc': 0.8415233415233415, 'train/batch_loss': 0.1340156048536301, '_wandb': {'runtime': 342}, 'test/recall': 0.8541666666666666, 'test/epoch_acc': 0.7444444444444445, 'test/precision': 0.7192982456140351, 'test/epoch_loss': 0.6144241677390204}","{'eps': 1e-08, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 7, 'batch_size': 16, 'learning_rate': 0.1}",ancient-sweep-14
-86,"{'_step': 529, '_timestamp': 1678790183.7024884, 'test/f1-score': 0.7422680412371134, 'train/batch_loss': 0.6280461549758911, 'test/precision': 0.7058823529411765, 'test/epoch_loss': 0.6392196734746297, 'train/epoch_acc': 0.7457002457002457, 'epoch': 9, '_wandb': {'runtime': 344}, '_runtime': 346.86587953567505, 'test/recall': 0.782608695652174, 'test/epoch_acc': 0.7222222222222222, 'train/epoch_loss': 0.6374555861334836}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.5, 'optimizer': 'adam', 'step_size': 7, 'batch_size': 16, 'learning_rate': 0.0003}",revived-sweep-13
-87,"{'_wandb': {'runtime': 348}, '_runtime': 350.9660577774048, 'test/recall': 0.9111111111111112, 'train/epoch_acc': 0.9987714987714988, 'epoch': 9, '_timestamp': 1678789826.0085878, 'test/f1-score': 0.9010989010989012, 'test/epoch_acc': 0.9, 'test/precision': 0.8913043478260869, 'test/epoch_loss': 0.24115624560250176, 'train/batch_loss': 0.04231283441185951, 'train/epoch_loss': 0.02119528235872196, '_step': 149}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 2, 'batch_size': 64, 'learning_rate': 0.0003}",swift-sweep-12
-88,"{'test/recall': 0.8333333333333334, 'test/epoch_loss': 0.5769641452365452, 'train/batch_loss': 0.6127220392227173, 'train/epoch_loss': 0.5840219159676929, 'epoch': 9, '_wandb': {'runtime': 393}, '_timestamp': 1678789464.8040044, 'test/f1-score': 0.7894736842105262, 'test/epoch_acc': 0.8222222222222223, 'test/precision': 0.75, 'train/epoch_acc': 0.757985257985258, '_step': 2059, '_runtime': 397.1281135082245}","{'eps': 0.1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 4, 'learning_rate': 0.0001}",rosy-sweep-11
-89,"{'epoch': 9, 'test/recall': 0.8076923076923077, 'test/f1-score': 0.8842105263157894, 'test/epoch_loss': 0.2696530275874668, 'train/epoch_acc': 0.9938574938574938, 'train/batch_loss': 0.11590295284986496, '_step': 149, '_wandb': {'runtime': 352}, '_runtime': 355.46944642066956, '_timestamp': 1678789057.5684297, 'test/epoch_acc': 0.8777777777777778, 'test/precision': 0.9767441860465116, 'train/epoch_loss': 0.06967324825777176}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 7, 'batch_size': 64, 'learning_rate': 0.003}",deft-sweep-10
-90,"{'_step': 279, '_wandb': {'runtime': 340}, '_runtime': 342.3234579563141, '_timestamp': 1678788683.006292, 'test/recall': 0.9069767441860463, 'test/f1-score': 0.7959183673469388, 'test/epoch_acc': 0.7777777777777778, 'test/precision': 0.7090909090909091, 'test/epoch_loss': 0.6248881856600443, 'train/epoch_acc': 0.7014742014742015, 'train/batch_loss': 0.5820533037185669, 'train/epoch_loss': 0.6400203514450599, 'epoch': 9}","{'eps': 0.1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.99, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 32, 'learning_rate': 0.0001}",atomic-sweep-9
-91,"{'_step': 1039, '_wandb': {'runtime': 351}, 'test/epoch_acc': 0.6555555555555556, 'test/precision': 0.6140350877192983, 'test/epoch_loss': 0.6175267219543457, 'train/epoch_acc': 0.7432432432432432, 'epoch': 9, '_runtime': 353.4816448688507, '_timestamp': 1678788328.1196988, 'test/recall': 0.7954545454545454, 'test/f1-score': 0.693069306930693, 'train/batch_loss': 0.3377891480922699, 'train/epoch_loss': 0.5329857344855841}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 7, 'batch_size': 8, 'learning_rate': 0.1}",cosmic-sweep-8
-92,"{'epoch': 9, '_wandb': {'runtime': 390}, '_runtime': 392.4064960479736, '_timestamp': 1678787961.3400052, 'test/f1-score': 0.6999999999999998, 'test/precision': 0.5932203389830508, 'train/epoch_loss': 0.5631518808058498, '_step': 2059, 'test/recall': 0.8536585365853658, 'test/epoch_acc': 0.6666666666666667, 'test/epoch_loss': 0.6419186863634322, 'train/epoch_acc': 0.7186732186732187, 'train/batch_loss': 0.17200787365436554}","{'eps': 1e-08, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.99, 'optimizer': 'adam', 'step_size': 7, 'batch_size': 4, 'learning_rate': 0.01}",lunar-sweep-7
-93,"{'train/epoch_acc': 0.9975429975429976, 'train/epoch_loss': 0.03237721893286529, 'epoch': 9, '_wandb': {'runtime': 343}, '_runtime': 345.9260220527649, 'test/f1-score': 0.8988764044943819, 'test/epoch_acc': 0.9, 'train/batch_loss': 0.04353119805455208, '_step': 529, '_timestamp': 1678787557.992564, 'test/recall': 0.8888888888888888, 'test/precision': 0.9090909090909092, 'test/epoch_loss': 0.24278527200222016}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.5, 'optimizer': 'sgd', 'step_size': 2, 'batch_size': 16, 'learning_rate': 0.01}",zany-sweep-6
-94,"{'_step': 529, '_runtime': 346.5414688587189, 'test/f1-score': 0.9130434782608696, 'train/epoch_acc': 0.9336609336609336, 'test/epoch_loss': 0.32114719019995797, 'train/batch_loss': 0.21811823546886444, 'epoch': 9, '_wandb': {'runtime': 344}, '_timestamp': 1678787192.9954038, 'test/recall': 0.8571428571428571, 'test/epoch_acc': 0.9111111111111112, 'test/precision': 0.9767441860465116, 'train/epoch_loss': 0.2347587838000103}","{'eps': 0.1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.9, 'optimizer': 'sgd', 'step_size': 3, 'batch_size': 16, 'learning_rate': 0.001}",absurd-sweep-5
-95,"{'_timestamp': 1678786835.7254088, 'test/f1-score': 0.8799999999999999, 'test/epoch_loss': 0.22436124781767527, 'train/epoch_loss': 0.02646600444977348, 'epoch': 9, '_wandb': {'runtime': 344}, '_runtime': 345.9469966888428, 'test/precision': 0.9166666666666666, 'train/epoch_acc': 1, 'train/batch_loss': 0.06225413456559181, '_step': 279, 'test/recall': 0.8461538461538461, 'test/epoch_acc': 0.9}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 32, 'learning_rate': 0.003}",radiant-sweep-4
-96,"{'_wandb': {'runtime': 353}, '_runtime': 355.012455701828, 'test/recall': 0.875, 'test/f1-score': 0.8045977011494252, 'test/epoch_acc': 0.8111111111111111, 'test/precision': 0.7446808510638298, '_step': 1039, 'epoch': 9, 'train/epoch_loss': 0.45506354690476775, 'train/epoch_acc': 0.8341523341523341, 'train/batch_loss': 0.5456343293190002, '_timestamp': 1678786479.0865147, 'test/epoch_loss': 0.4459853092829386}","{'eps': 0.1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.99, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 8, 'learning_rate': 0.0003}",sandy-sweep-3
-97,"{'_wandb': {'runtime': 342}, '_timestamp': 1678786112.108075, 'test/recall': 0.7894736842105263, 'test/precision': 0.9090909090909092, 'test/epoch_loss': 0.31915653232071134, 'train/batch_loss': 0.026765840128064156, 'train/epoch_loss': 0.045762457081668206, '_step': 529, 'epoch': 9, '_runtime': 344.01046657562256, 'test/f1-score': 0.8450704225352113, 'test/epoch_acc': 0.8777777777777778, 'train/epoch_acc': 0.9926289926289926}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.5, 'optimizer': 'sgd', 'step_size': 2, 'batch_size': 16, 'learning_rate': 0.01}",pretty-sweep-2
-98,"{'train/batch_loss': 0.7150550484657288, 'train/epoch_loss': 0.7011552195291262, '_step': 149, '_wandb': {'runtime': 357}, '_runtime': 359.66486382484436, '_timestamp': 1678785758.376562, 'test/f1-score': 0.379746835443038, 'test/precision': 0.42857142857142855, 'epoch': 9, 'test/recall': 0.3409090909090909, 'test/epoch_acc': 0.45555555555555555, 'test/epoch_loss': 0.7006691349877252, 'train/epoch_acc': 0.4815724815724816}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.99, 'optimizer': 'adam', 'step_size': 5, 'batch_size': 64, 'learning_rate': 0.0003}",rose-sweep-1
-99,"{'train/epoch_loss': 0.023103852647056927, '_step': 74, 'test/recall': 0.9090909090909092, 'test/f1-score': 0.8791208791208791, 'train/batch_loss': 0.0016211483161896467, 'test/epoch_acc': 0.8777777777777778, 'test/precision': 0.851063829787234, 'test/epoch_loss': 0.5091631063156657, 'train/epoch_acc': 0.995085995085995, 'epoch': 4, '_wandb': {'runtime': 181}, '_runtime': 180.05384421348572, '_timestamp': 1678785370.5563953}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.5, 'optimizer': 'sgd', 'step_size': 3, 'batch_size': 64, 'learning_rate': 0.1}",cosmic-sweep-2
-100,"{'test/f1-score': 0.9166666666666666, 'test/precision': 0.9166666666666666, 'train/epoch_acc': 0.9828009828009828, 'train/batch_loss': 0.0724378228187561, 'train/epoch_loss': 0.11044558714297244, '_step': 279, '_runtime': 347.11417746543884, 'test/recall': 0.9166666666666666, 'test/epoch_acc': 0.9111111111111112, 'test/epoch_loss': 0.2461573594146305, 'epoch': 9, '_wandb': {'runtime': 344}, '_timestamp': 1678743707.9633043}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.9, 'optimizer': 'sgd', 'step_size': 3, 'batch_size': 32, 'learning_rate': 0.003}",ethereal-sweep-14
-101,"{'_step': 149, 'epoch': 9, '_wandb': {'runtime': 346}, 'test/recall': 0.9130434782608696, 'test/precision': 0.9545454545454546, 'train/batch_loss': 0.05796322599053383, 'train/epoch_loss': 0.043383844352398226, '_runtime': 349.69085454940796, '_timestamp': 1678743349.8008895, 'test/f1-score': 0.9333333333333332, 'test/epoch_acc': 0.9333333333333332, 'test/epoch_loss': 0.16449517243438297, 'train/epoch_acc': 1}","{'eps': 1e-08, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 7, 'batch_size': 64, 'learning_rate': 0.003}",northern-sweep-13
-102,"{'_runtime': 560.5539684295654, '_timestamp': 1678743376.8770983, 'test/recall': 0.85, 'test/f1-score': 0.7816091954022989, 'train/epoch_acc': 0.8255528255528255, 'train/epoch_loss': 0.40511614706651, '_wandb': {'runtime': 559}, 'epoch': 9, 'test/epoch_acc': 0.788888888888889, 'test/precision': 0.723404255319149, 'test/epoch_loss': 0.5102662573258082, 'train/batch_loss': 0.42048144340515137, '_step': 2059}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 5, 'batch_size': 4, 'learning_rate': 0.001}",faithful-sweep-12
-103,"{'_timestamp': 1678742986.9751594, 'test/recall': 0.7777777777777778, 'test/epoch_loss': 0.3378064884079827, 'epoch': 9, '_runtime': 358.3485324382782, 'test/f1-score': 0.8536585365853658, 'test/epoch_acc': 0.8666666666666667, 'test/precision': 0.945945945945946, 'train/epoch_acc': 0.8955773955773956, 'train/batch_loss': 0.5923706889152527, 'train/epoch_loss': 0.27216847456936755, '_step': 1039, '_wandb': {'runtime': 355}}","{'eps': 1e-08, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 8, 'learning_rate': 0.0003}",zany-sweep-12
-104,"{'test/epoch_acc': 0.7444444444444445, 'test/precision': 0.6226415094339622, '_step': 1039, 'epoch': 9, '_wandb': {'runtime': 358}, '_timestamp': 1678742619.1453717, 'test/recall': 0.9166666666666666, 'test/f1-score': 0.7415730337078651, 'train/epoch_loss': 0.613342459283824, '_runtime': 362.78373169898987, 'test/epoch_loss': 0.615033131175571, 'train/epoch_acc': 0.7481572481572482, 'train/batch_loss': 0.6421169638633728}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.9, 'optimizer': 'sgd', 'step_size': 2, 'batch_size': 8, 'learning_rate': 0.0001}",ruby-sweep-11
-105,"{'_wandb': {'runtime': 531}, 'test/epoch_acc': 0.8666666666666667, 'test/precision': 0.9545454545454546, 'train/batch_loss': 0.07699991017580032, '_step': 2059, '_runtime': 531.6082515716553, '_timestamp': 1678742643.2100165, 'test/recall': 0.8076923076923077, 'test/f1-score': 0.875, 'test/epoch_loss': 0.3795760815549228, 'train/epoch_acc': 0.9656019656019657, 'train/epoch_loss': 0.09796744051757808, 'epoch': 9}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 4, 'learning_rate': 0.001}",fallen-sweep-10
-106,"{'test/f1-score': 0.875, 'test/precision': 0.9545454545454546, 'test/epoch_loss': 0.2956610471010208, 'train/batch_loss': 0.1150113120675087, '_step': 1039, 'epoch': 9, '_timestamp': 1678742242.6362762, 'test/recall': 0.8076923076923077, 'train/epoch_loss': 0.24495647845821825, '_wandb': {'runtime': 359}, '_runtime': 361.6978232860565, 'test/epoch_acc': 0.8666666666666667, 'train/epoch_acc': 0.9103194103194104}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 7, 'batch_size': 8, 'learning_rate': 0.003}",rare-sweep-10
-107,"{'_runtime': 471.6707801818848, 'test/precision': 0.9714285714285714, '_wandb': {'runtime': 471}, '_timestamp': 1678742103.7627492, 'test/recall': 0.7906976744186046, 'test/f1-score': 0.8717948717948717, 'test/epoch_acc': 0.888888888888889, 'test/epoch_loss': 0.26282389760017394, '_step': 1039, 'epoch': 9, 'train/epoch_loss': 0.310643073711407, 'train/epoch_acc': 0.8869778869778869, 'train/batch_loss': 0.14859537780284882}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 8, 'learning_rate': 0.003}",major-sweep-9
-108,"{'test/epoch_acc': 0.6333333333333333, 'test/precision': 0.6, 'train/epoch_acc': 0.5921375921375921, 'train/batch_loss': 0.6228023767471313, '_step': 279, '_runtime': 344.49258494377136, 'test/f1-score': 0.6451612903225806, 'test/recall': 0.6976744186046512, 'test/epoch_loss': 0.6676742302046882, 'train/epoch_loss': 0.6766868150204932, 'epoch': 9, '_wandb': {'runtime': 341}, '_timestamp': 1678741869.828495}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.5, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 32, 'learning_rate': 0.0001}",spring-sweep-9
-109,"{'test/epoch_loss': 0.16872049139605627, 'train/epoch_acc': 0.9987714987714988, '_step': 1039, 'epoch': 9, '_wandb': {'runtime': 451}, '_runtime': 452.4322986602783, 'test/f1-score': 0.9213483146067416, 'test/precision': 0.9111111111111112, 'train/epoch_loss': 0.02303326028314504, '_timestamp': 1678741623.0662856, 'test/recall': 0.9318181818181818, 'test/epoch_acc': 0.9222222222222224, 'train/batch_loss': 0.0022799931466579437}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 8, 'learning_rate': 0.003}",elated-sweep-8
-110,"{'_step': 149, '_runtime': 345.3405177593231, 'test/f1-score': 0.9534883720930232, 'test/precision': 0.9761904761904762, 'test/epoch_loss': 0.2148759490913815, 'train/epoch_acc': 0.9606879606879608, 'epoch': 9, '_wandb': {'runtime': 342}, '_timestamp': 1678741511.9070578, 'test/recall': 0.9318181818181818, 'test/epoch_acc': 0.9555555555555556, 'train/batch_loss': 0.11643347889184952, 'train/epoch_loss': 0.1359616077759049}","{'eps': 0.1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 5, 'batch_size': 64, 'learning_rate': 0.003}",hardy-sweep-8
-111,"{'epoch': 9, '_wandb': {'runtime': 342}, '_runtime': 345.1732180118561, '_timestamp': 1678741156.130327, 'test/recall': 0.8048780487804879, 'test/epoch_acc': 0.888888888888889, 'train/epoch_acc': 1, '_step': 279, 'train/epoch_loss': 0.008645273717600824, 'test/precision': 0.9428571428571428, 'test/epoch_loss': 0.2181672462158733, 'train/batch_loss': 0.042314428836107254, 'test/f1-score': 0.868421052631579}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 32, 'learning_rate': 0.1}",sweepy-sweep-7
-112,"{'_step': 1039, 'test/f1-score': 0.7222222222222222, 'test/epoch_acc': 0.7777777777777778, 'test/precision': 0.8387096774193549, 'test/epoch_loss': 0.4768455002042982, 'train/epoch_acc': 0.8292383292383292, 'train/epoch_loss': 0.45283343838825274, 'epoch': 9, '_wandb': {'runtime': 453}, '_runtime': 454.0593776702881, '_timestamp': 1678741159.4683807, 'test/recall': 0.6341463414634146, 'train/batch_loss': 0.3791900873184204}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.5, 'optimizer': 'sgd', 'step_size': 7, 'batch_size': 8, 'learning_rate': 0.0001}",glorious-sweep-7
-113,"{'test/epoch_loss': 0.1931780371401045, 'epoch': 9, '_wandb': {'runtime': 346}, 'test/f1-score': 0.9333333333333332, 'test/precision': 0.9333333333333332, 'test/epoch_acc': 0.9333333333333332, 'train/epoch_acc': 1, 'train/batch_loss': 0.001889266073703766, 'train/epoch_loss': 0.0030514685945077376, '_step': 149, '_runtime': 348.53755164146423, '_timestamp': 1678740798.1400597, 'test/recall': 0.9333333333333332}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 64, 'learning_rate': 0.01}",rural-sweep-6
-114,"{'epoch': 9, 'test/recall': 0.8666666666666667, 'test/f1-score': 0.896551724137931, 'test/epoch_acc': 0.9, 'train/batch_loss': 0.1385842263698578, '_step': 2059, '_runtime': 560.7404127120972, '_timestamp': 1678740696.0305526, 'test/precision': 0.9285714285714286, 'test/epoch_loss': 0.22745563416845269, 'train/epoch_acc': 0.984029484029484, 'train/epoch_loss': 0.07075482415817952, '_wandb': {'runtime': 560}}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.9, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 4, 'learning_rate': 0.01}",smart-sweep-6
-115,"{'_runtime': 345.5716743469238, '_timestamp': 1678740438.4959724, 'test/recall': 0.7755102040816326, 'test/f1-score': 0.8172043010752688, 'train/epoch_acc': 0.7616707616707616, 'train/epoch_loss': 0.5191410552225183, 'epoch': 9, '_wandb': {'runtime': 342}, 'test/precision': 0.8636363636363636, 'test/epoch_loss': 0.507676590151257, 'train/batch_loss': 0.44296249747276306, '_step': 529, 'test/epoch_acc': 0.8111111111111111}","{'eps': 0.1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 16, 'learning_rate': 0.1}",giddy-sweep-5
-116,"{'_step': 529, 'epoch': 9, '_runtime': 345.28623247146606, 'test/f1-score': 0.6842105263157895, 'train/epoch_acc': 0.8538083538083537, 'train/batch_loss': 0.4066888689994812, 'train/epoch_loss': 0.32492415251837314, '_wandb': {'runtime': 342}, '_timestamp': 1678740073.5443084, 'test/recall': 0.6666666666666666, 'test/epoch_acc': 0.7333333333333334, 'test/precision': 0.7027027027027027, 'test/epoch_loss': 0.6657861550649007}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 2, 'batch_size': 16, 'learning_rate': 0.1}",lilac-sweep-4
-117,"{'_step': 1039, 'epoch': 9, '_wandb': {'runtime': 454}, '_runtime': 454.98564982414246, 'test/epoch_acc': 0.888888888888889, 'test/epoch_loss': 0.2600655794143677, 'train/batch_loss': 0.01167443674057722, '_timestamp': 1678740126.212114, 'test/recall': 0.8367346938775511, 'test/f1-score': 0.8913043478260869, 'test/precision': 0.9534883720930232, 'train/epoch_acc': 0.9803439803439804, 'train/epoch_loss': 0.08152788232426166}","{'eps': 1e-08, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 3, 'batch_size': 8, 'learning_rate': 0.001}",hearty-sweep-5
-118,"{'train/epoch_acc': 0.8144963144963144, 'epoch': 9, '_wandb': {'runtime': 354}, '_timestamp': 1678739717.8250418, 'test/epoch_acc': 0.788888888888889, 'test/epoch_loss': 0.4899995631641812, 'train/batch_loss': 0.6180618405342102, 'train/epoch_loss': 0.5079173609724209, '_step': 1039, '_runtime': 356.9382667541504, 'test/recall': 0.875, 'test/f1-score': 0.7865168539325842, 'test/precision': 0.7142857142857143}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 8, 'learning_rate': 0.0001}",silvery-sweep-3
-119,"{'_wandb': {'runtime': 453}, 'test/precision': 0.9142857142857144, 'train/epoch_acc': 0.8968058968058967, 'train/batch_loss': 0.2711101472377777, 'test/epoch_loss': 0.3028925802972582, '_step': 1039, 'epoch': 9, '_runtime': 454.2519624233246, '_timestamp': 1678739662.5458224, 'test/recall': 0.8205128205128205, 'test/f1-score': 0.8648648648648648, 'test/epoch_acc': 0.888888888888889, 'train/epoch_loss': 0.28549219298128414}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 8, 'learning_rate': 0.0003}",dulcet-sweep-4
-120,"{'train/epoch_loss': 0.6479796424544707, '_step': 529, '_runtime': 343.88807487487793, 'test/f1-score': 0.6451612903225806, 'test/epoch_acc': 0.6333333333333333, 'test/precision': 0.5454545454545454, 'test/epoch_loss': 0.6651701913939582, 'train/epoch_acc': 0.6928746928746928, 'train/batch_loss': 0.6685948967933655, 'epoch': 9, '_wandb': {'runtime': 341}, '_timestamp': 1678739351.1315958, 'test/recall': 0.7894736842105263}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 2, 'batch_size': 16, 'learning_rate': 0.001}",glamorous-sweep-2
-121,"{'_runtime': 469.65283608436584, 'epoch': 9, '_wandb': {'runtime': 469}, 'test/recall': 0.875, 'test/f1-score': 0.7608695652173914, 'test/epoch_acc': 0.7555555555555555, 'test/precision': 0.6730769230769231, 'test/epoch_loss': 0.6144020875295003, 'train/epoch_acc': 0.7542997542997543, '_step': 1039, '_timestamp': 1678739200.083605, 'train/batch_loss': 0.6510805487632751, 'train/epoch_loss': 0.6267796501480684}","{'eps': 0.1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.5, 'optimizer': 'adam', 'step_size': 2, 'batch_size': 8, 'learning_rate': 0.0001}",hopeful-sweep-3
-122,"{'test/precision': 0.8409090909090909, 'train/epoch_acc': 0.9975429975429976, 'train/batch_loss': 0.0980801358819008, '_step': 279, '_wandb': {'runtime': 353}, '_runtime': 357.5890119075775, 'test/f1-score': 0.8409090909090909, 'test/epoch_acc': 0.8444444444444444, 'train/epoch_loss': 0.03763626415181805, 'epoch': 9, '_timestamp': 1678738994.027642, 'test/recall': 0.8409090909090909, 'test/epoch_loss': 0.3028163850307465}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.9, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 32, 'learning_rate': 0.003}",lunar-sweep-1
-123,"{'test/f1-score': 0.7157894736842105, 'test/epoch_loss': 0.5541173484590318, '_timestamp': 1678738720.9443874, 'test/recall': 0.8947368421052632, 'test/epoch_acc': 0.7000000000000001, 'test/precision': 0.5964912280701754, '_step': 2059, 'epoch': 9, '_wandb': {'runtime': 529}, '_runtime': 529.6096863746643, 'train/epoch_acc': 0.6658476658476659, 'train/batch_loss': 0.7896618843078613, 'train/epoch_loss': 0.618659178367118}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.9, 'optimizer': 'sgd', 'step_size': 2, 'batch_size': 4, 'learning_rate': 0.1}",stoic-sweep-2
-124,"{'train/epoch_loss': 0.016353931551580648, 'epoch': 9, '_wandb': {'runtime': 353}, '_runtime': 355.4184715747833, '_timestamp': 1678738469.1834886, 'test/recall': 0.6578947368421053, 'train/epoch_acc': 0.995085995085995, 'train/batch_loss': 0.0014543599681928754, '_step': 529, 'test/f1-score': 0.7575757575757577, 'test/epoch_acc': 0.8222222222222223, 'test/precision': 0.8928571428571429, 'test/epoch_loss': 0.4269479903909895}","{'eps': 1e-08, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.5, 'optimizer': 'adam', 'step_size': 2, 'batch_size': 16, 'learning_rate': 0.0001}",dark-sweep-2
-125,"{'_wandb': {'runtime': 381}, '_timestamp': 1678738101.018471, 'test/f1-score': 0.8470588235294119, 'test/epoch_acc': 0.8555555555555556, 'test/epoch_loss': 0.40116495291392007, 'epoch': 9, '_runtime': 384.5172441005707, 'test/recall': 0.8181818181818182, 'test/precision': 0.8780487804878049, 'train/epoch_acc': 0.8673218673218673, 'train/batch_loss': 0.31195682287216187, 'train/epoch_loss': 0.3623260387038716, '_step': 1039}","{'eps': 0.1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.5, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 8, 'learning_rate': 0.0003}",trim-sweep-1
-126,"{'epoch': 9, '_runtime': 560.7235152721405, 'test/f1-score': 0.8602150537634408, 'test/precision': 0.8163265306122449, 'train/epoch_acc': 0.7567567567567567, 'train/batch_loss': 0.6653294563293457, '_step': 2059, '_wandb': {'runtime': 560}, '_timestamp': 1678738182.1088202, 'test/recall': 0.9090909090909092, 'test/epoch_acc': 0.8555555555555556, 'test/epoch_loss': 0.6165981186760796, 'train/epoch_loss': 0.6107166709712448}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.5, 'optimizer': 'adam', 'step_size': 2, 'batch_size': 4, 'learning_rate': 0.001}",sparkling-sweep-1
-127,"{'_step': 555, 'epoch': 1, '_timestamp': 1678737059.0375042, 'test/recall': 0.6818181818181818, 'test/epoch_acc': 0.6555555555555556, 'test/precision': 0.6382978723404256, '_wandb': {'runtime': 118}, '_runtime': 122.13349413871764, 'test/f1-score': 0.6593406593406593, 'test/epoch_loss': 0.6796493821673923, 'train/epoch_acc': 0.5515970515970516, 'train/batch_loss': 0.6759337782859802, 'train/epoch_loss': 0.6851893525744539}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.5, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 4, 'learning_rate': 0.0003}",serene-sweep-1
-128,"{'_wandb': {'runtime': 455}, 'train/epoch_acc': 0.9914004914004914, 'test/precision': 0.9361702127659576, 'test/batch_loss': 0.1311825066804886, 'train/epoch_loss': 0.032788554922144414, '_runtime': 456.3002746105194, '_timestamp': 1678734250.8076646, 'test/f1-score': 0.8888888888888888, 'train/batch_loss': 0.003167948452755809, '_step': 1159, 'test/recall': 0.8461538461538461, 'test/epoch_loss': 0.45068282733360926, 'epoch': 9, 'test/epoch_acc': 0.8777777777777778}","{'gamma': 0.5, 'epochs': 10, 'optimizer': 'sgd', 'step_size': 2, 'batch_size': 8, 'learning_rate': 0.003}",super-sweep-10
-129,"{'_wandb': {'runtime': 563}, '_runtime': 564.230875492096, 'test/f1-score': 0.7173913043478259, 'test/batch_loss': 0.9658783674240112, 'train/epoch_loss': 0.5984233345387902, '_step': 2289, 'test/precision': 0.673469387755102, 'test/recall': 0.7674418604651163, 'train/epoch_acc': 0.687960687960688, 'train/batch_loss': 0.3260266184806824, 'epoch': 9, 'test/epoch_acc': 0.7111111111111111, 'test/epoch_loss': 0.5302444166607327, '_timestamp': 1678733784.6976814}","{'gamma': 0.1, 'epochs': 10, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 4, 'learning_rate': 0.01}",distinctive-sweep-9
-130,"{'_step': 2289, 'test/f1-score': 0.9268292682926828, '_timestamp': 1678733210.1129615, 'test/epoch_acc': 0.9333333333333332, 'test/epoch_loss': 0.17092165086004468, 'epoch': 9, 'train/batch_loss': 0.007875862531363964, 'train/epoch_loss': 0.1743801347293527, 'test/precision': 1, 'test/batch_loss': 0.1419784128665924, 'train/epoch_acc': 0.9496314496314496, '_wandb': {'runtime': 527}, '_runtime': 527.6160025596619, 'test/recall': 0.8636363636363636}","{'gamma': 0.5, 'epochs': 10, 'optimizer': 'sgd', 'step_size': 7, 'batch_size': 4, 'learning_rate': 0.0003}",winter-sweep-8
-131,"{'test/f1-score': 0.9066666666666668, '_runtime': 453.52900218963623, 'test/recall': 0.8292682926829268, 'test/precision': 1, 'test/batch_loss': 0.27116066217422485, '_step': 1159, '_wandb': {'runtime': 452}, 'test/epoch_loss': 0.21558621691332924, 'train/epoch_loss': 0.07730489082323246, 'epoch': 9, '_timestamp': 1678732673.1225052, 'test/epoch_acc': 0.9222222222222224, 'train/epoch_acc': 0.9791154791154792, 'train/batch_loss': 0.04383014515042305}","{'gamma': 0.5, 'epochs': 10, 'optimizer': 'sgd', 'step_size': 3, 'batch_size': 8, 'learning_rate': 0.001}",stilted-sweep-7
-132,"{'_timestamp': 1678732212.5530572, 'test/f1-score': 0.7010309278350516, 'test/epoch_acc': 0.6777777777777778, 'epoch': 9, 'test/batch_loss': 0.4716488718986511, 'train/batch_loss': 0.48304444551467896, '_step': 2289, '_wandb': {'runtime': 561}, '_runtime': 561.7993631362915, 'test/precision': 0.6538461538461539, 'test/recall': 0.7555555555555555, 'test/epoch_loss': 0.6190193812052409, 'train/epoch_acc': 0.7272727272727273, 'train/epoch_loss': 0.5549268187263967}","{'gamma': 0.5, 'epochs': 10, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 4, 'learning_rate': 0.01}",summer-sweep-6
-133,"{'test/epoch_acc': 0.8222222222222223, 'test/batch_loss': 0.5068956017494202, 'train/epoch_loss': 0.5186349417126442, '_step': 1159, '_wandb': {'runtime': 453}, 'test/f1-score': 0.813953488372093, 'test/epoch_loss': 0.4936415394147237, 'train/batch_loss': 0.4434223175048828, 'test/recall': 0.7142857142857143, 'test/precision': 0.945945945945946, 'train/epoch_acc': 0.8218673218673218, 'epoch': 9, '_runtime': 454.3645238876343, '_timestamp': 1678731639.156168}","{'gamma': 0.5, 'epochs': 10, 'optimizer': 'sgd', 'step_size': 3, 'batch_size': 8, 'learning_rate': 0.0001}",different-sweep-5
-134,"{'_wandb': {'runtime': 453}, '_runtime': 454.26038885116577, 'test/batch_loss': 0.5159374475479126, 'test/epoch_loss': 0.5482642173767089, '_step': 1159, 'epoch': 9, 'train/batch_loss': 0.5655931830406189, '_timestamp': 1678731176.111379, 'test/f1-score': 0.8354430379746836, 'test/epoch_acc': 0.8555555555555556, 'test/precision': 0.825, 'train/epoch_acc': 0.812039312039312, 'train/epoch_loss': 0.5429200196149016, 'test/recall': 0.8461538461538461}","{'gamma': 0.5, 'epochs': 10, 'optimizer': 'sgd', 'step_size': 2, 'batch_size': 8, 'learning_rate': 0.0001}",wise-sweep-4
-135,"{'test/batch_loss': 1.7588363885879517, 'train/batch_loss': 0.00470334617421031, 'train/epoch_loss': 0.02060394324720534, '_step': 2289, 'epoch': 9, 'test/f1-score': 0.8493150684931509, 'train/epoch_acc': 0.9963144963144964, '_runtime': 528.9760706424713, 'test/epoch_acc': 0.8777777777777778, 'test/precision': 0.9393939393939394, 'test/epoch_loss': 0.24194780117250048, '_wandb': {'runtime': 528}, '_timestamp': 1678730714.7711067, 'test/recall': 0.775}","{'gamma': 0.5, 'epochs': 10, 'optimizer': 'sgd', 'step_size': 3, 'batch_size': 4, 'learning_rate': 0.003}",misty-sweep-3
-136,"{'test/batch_loss': 0.455120325088501, 'train/batch_loss': 0.5347514748573303, 'test/precision': 0.8387096774193549, 'train/epoch_acc': 0.8329238329238329, '_runtime': 455.41485929489136, 'test/recall': 0.6842105263157895, 'test/epoch_acc': 0.8111111111111111, 'test/f1-score': 0.7536231884057972, 'train/epoch_loss': 0.42904984072326735, 'epoch': 9, '_wandb': {'runtime': 454}, '_timestamp': 1678730177.1362092, '_step': 1159, 'test/epoch_loss': 0.4792341656155056}","{'gamma': 0.1, 'epochs': 10, 'optimizer': 'sgd', 'step_size': 3, 'batch_size': 8, 'learning_rate': 0.0003}",unique-sweep-2
-137,"{'epoch': 9, '_wandb': {'runtime': 527}, 'test/recall': 0.8636363636363636, 'test/batch_loss': 2.5320074558258057, 'train/epoch_acc': 0.9901719901719902, 'train/batch_loss': 0.005740344058722258, 'train/epoch_loss': 0.024021292951151657, '_step': 2289, 'test/epoch_acc': 0.888888888888889, 'test/precision': 0.9047619047619048, 'test/epoch_loss': 0.5442472649919283, '_runtime': 528.4356484413147, '_timestamp': 1678729705.2001765, 'test/f1-score': 0.8837209302325582}","{'gamma': 0.5, 'epochs': 10, 'optimizer': 'sgd', 'step_size': 7, 'batch_size': 4, 'learning_rate': 0.003}",polar-sweep-1
+0,"{'_step': 2059, '_timestamp': 1680692970.2016854, 'test/recall': 0.6170212765957447, 'test/f1-score': 0.7073170731707318, 'test/epoch_acc': 0.7333333333333334, 'test/epoch_loss': 0.5664619127909343, 'train/epoch_loss': 0.4241055610431793, 'epoch': 9, '_wandb': {'runtime': 363}, '_runtime': 367.13677954673767, 'test/precision': 0.8285714285714286, 'train/epoch_acc': 0.8230958230958231, 'train/batch_loss': 0.33577921986579895}","{'eps': 0.1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.9, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 4, 'learning_rate': 0.0003}",fiery-sweep-26
+1,"{'test/f1-score': 0.7474747474747475, 'test/precision': 0.6851851851851852, 'test/epoch_loss': 0.6454579922888014, 'train/batch_loss': 0.7014500498771667, '_step': 1039, 'epoch': 9, '_wandb': {'runtime': 338}, '_runtime': 341.8420207500458, 'train/epoch_loss': 0.649790015355375, '_timestamp': 1680692589.503975, 'test/recall': 0.8222222222222222, 'test/epoch_acc': 0.7222222222222222, 'train/epoch_acc': 0.7125307125307125}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.9, 'optimizer': 'adam', 'step_size': 2, 'batch_size': 8, 'learning_rate': 0.0003}",radiant-sweep-25
+2,"{'train/epoch_acc': 0.9987714987714988, 'train/epoch_loss': 0.01614290558709019, '_step': 1039, 'epoch': 9, '_runtime': 336.8275649547577, '_timestamp': 1680692234.39516, 'test/epoch_acc': 0.888888888888889, 'test/precision': 0.935483870967742, '_wandb': {'runtime': 333}, 'test/recall': 0.7837837837837838, 'test/f1-score': 0.8529411764705881, 'test/epoch_loss': 0.34812947780333664, 'train/batch_loss': 0.01956617273390293}","{'eps': 1e-08, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 8, 'learning_rate': 0.003}",blooming-sweep-24
+3,"{'train/epoch_acc': 0.8353808353808354, 'train/epoch_loss': 0.5324229019572753, 'epoch': 9, '_runtime': 331.57809829711914, '_timestamp': 1680691883.3877182, 'test/recall': 0.8333333333333334, 'test/f1-score': 0.7954545454545455, 'test/precision': 0.7608695652173914, '_step': 529, '_wandb': {'runtime': 327}, 'test/epoch_acc': 0.8, 'test/epoch_loss': 0.5553177932898203, 'train/batch_loss': 0.5222326517105103}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.9, 'optimizer': 'sgd', 'step_size': 2, 'batch_size': 16, 'learning_rate': 0.0003}",visionary-sweep-23
+4,"{'test/precision': 0.5897435897435898, 'train/epoch_acc': 0.5577395577395577, '_step': 410, 'epoch': 1, '_runtime': 71.64615154266357, '_timestamp': 1680691538.7247725, 'test/f1-score': 0.7076923076923076, 'test/epoch_acc': 0.5777777777777778, 'train/batch_loss': 0.5083656311035156, '_wandb': {'runtime': 70}, 'test/recall': 0.8846153846153846, 'test/epoch_loss': 1.5602711306677923, 'train/epoch_loss': 0.7508098256090057}","{'eps': 1e-08, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.99, 'optimizer': 'adam', 'step_size': 7, 'batch_size': 4, 'learning_rate': 0.01}",ancient-sweep-22
+5,"{'_wandb': {'runtime': 328}, 'test/recall': 0.9545454545454546, '_step': 529, 'epoch': 9, '_runtime': 331.44886469841003, '_timestamp': 1680691453.5148375, 'test/f1-score': 0.8, 'test/epoch_acc': 0.7666666666666667, 'test/precision': 0.6885245901639344, 'test/epoch_loss': 0.4844042791260613, 'train/epoch_acc': 0.769041769041769, 'train/batch_loss': 0.4559023082256317, 'train/epoch_loss': 0.49390909720111537}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.99, 'optimizer': 'adam', 'step_size': 5, 'batch_size': 16, 'learning_rate': 0.003}",fresh-sweep-22
+6,"{'test/f1-score': 0.9306930693069309, 'test/epoch_acc': 0.9222222222222224, 'test/epoch_loss': 0.26263883135527266, 'train/epoch_loss': 0.018423480946079804, 'epoch': 9, '_runtime': 358.66950702667236, '_timestamp': 1680691110.042932, 'test/precision': 0.9791666666666666, 'train/epoch_acc': 0.9975429975429976, 'train/batch_loss': 0.0031523401848971844, '_step': 2059, '_wandb': {'runtime': 355}, 'test/recall': 0.8867924528301887}","{'eps': 0.1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.5, 'optimizer': 'adam', 'step_size': 5, 'batch_size': 4, 'learning_rate': 0.01}",pleasant-sweep-21
+7,"{'epoch': 9, '_wandb': {'runtime': 329}, 'test/epoch_acc': 0.8777777777777778, 'test/precision': 0.86, 'train/epoch_acc': 1, 'train/batch_loss': 0.003317732596769929, '_step': 279, '_runtime': 332.6156196594238, '_timestamp': 1680690741.3215847, 'test/recall': 0.9148936170212766, 'test/f1-score': 0.8865979381443299, 'test/epoch_loss': 0.3669874522421095, 'train/epoch_loss': 0.0014873178028192654}","{'eps': 0.1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.5, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 32, 'learning_rate': 0.01}",fragrant-sweep-20
+8,"{'test/epoch_loss': 0.5786970999505785, 'train/epoch_acc': 0.8206388206388207, 'train/epoch_loss': 0.5623220165765842, '_wandb': {'runtime': 338}, 'test/recall': 0.82, 'test/precision': 0.7592592592592593, '_timestamp': 1680690397.165603, 'test/f1-score': 0.7884615384615384, 'test/epoch_acc': 0.7555555555555555, 'train/batch_loss': 0.58731609582901, '_step': 149, 'epoch': 9, '_runtime': 342.05230498313904}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 2, 'batch_size': 64, 'learning_rate': 0.001}",treasured-sweep-19
+9,"{'test/recall': 0.7291666666666666, 'test/f1-score': 0.7865168539325843, 'test/precision': 0.8536585365853658, 'test/epoch_loss': 0.6037532766660054, 'train/batch_loss': 0.5736206769943237, 'train/epoch_loss': 0.5984062318134074, '_step': 2059, 'epoch': 9, '_timestamp': 1680690042.488695, 'test/epoch_acc': 0.788888888888889, 'train/epoch_acc': 0.7788697788697788, '_wandb': {'runtime': 357}, '_runtime': 360.5366156101227}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.999, 'optimizer': 'sgd', 'step_size': 2, 'batch_size': 4, 'learning_rate': 0.0001}",desert-sweep-18
+10,"{'epoch': 9, '_runtime': 365.3367943763733, 'test/recall': 0.7446808510638298, 'test/f1-score': 0.8333333333333334, 'test/precision': 0.945945945945946, 'train/epoch_acc': 0.8697788697788698, 'train/epoch_loss': 0.3086323318522451, '_step': 2059, '_wandb': {'runtime': 362}, '_timestamp': 1680689670.8310964, 'test/epoch_acc': 0.8444444444444444, 'test/epoch_loss': 0.3740654948684904, 'train/batch_loss': 0.5778521299362183}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.9, 'optimizer': 'adam', 'step_size': 5, 'batch_size': 4, 'learning_rate': 0.003}",celestial-sweep-17
+11,"{'train/batch_loss': 0.004256190732121468, 'train/epoch_loss': 0.0053219743558098115, 'epoch': 9, 'test/epoch_acc': 0.9222222222222224, 'test/precision': 0.9069767441860463, 'test/epoch_loss': 0.18080708616309696, 'train/epoch_acc': 1, 'test/f1-score': 0.9176470588235294, '_step': 149, '_wandb': {'runtime': 337}, '_runtime': 340.39124369621277, '_timestamp': 1680689237.7951498, 'test/recall': 0.9285714285714286}","{'eps': 0.1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.9, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 64, 'learning_rate': 0.01}",cosmic-sweep-15
+12,"{'test/f1-score': 0.8705882352941177, 'test/epoch_loss': 0.23811448697621623, 'train/epoch_acc': 0.968058968058968, 'train/batch_loss': 0.21692615747451785, 'train/epoch_loss': 0.09628425111664636, 'test/recall': 0.8222222222222222, 'test/epoch_acc': 0.8777777777777778, 'test/precision': 0.925, '_step': 2059, 'epoch': 9, '_wandb': {'runtime': 356}, '_runtime': 359.0396990776062, '_timestamp': 1680688886.363035}","{'eps': 0.1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.5, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 4, 'learning_rate': 0.001}",stilted-sweep-14
+13,"{'_wandb': {'runtime': 333}, '_runtime': 336.5640392303467, 'test/recall': 0.9, 'test/f1-score': 0.9278350515463918, 'test/epoch_acc': 0.9222222222222224, 'train/epoch_loss': 0.007631345846546077, '_step': 149, 'epoch': 9, 'test/epoch_loss': 0.16714997291564945, 'train/epoch_acc': 1, 'train/batch_loss': 0.007201554253697395, '_timestamp': 1680688517.0028613, 'test/precision': 0.9574468085106383}","{'eps': 0.1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 64, 'learning_rate': 0.01}",frosty-sweep-13
+14,"{'_timestamp': 1680688162.2054858, 'test/recall': 0.8181818181818182, 'test/epoch_acc': 0.8777777777777778, 'train/batch_loss': 0.27152174711227417, 'train/epoch_acc': 0.9496314496314496, '_step': 529, 'epoch': 9, '_wandb': {'runtime': 328}, '_runtime': 331.98337984085083, 'test/f1-score': 0.8674698795180724, 'test/precision': 0.9230769230769232, 'test/epoch_loss': 0.32556109494633145, 'train/epoch_loss': 0.17368088453934877}","{'eps': 0.1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.5, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 16, 'learning_rate': 0.001}",young-sweep-12
+15,"{'test/f1-score': 0.7311827956989247, 'train/epoch_acc': 0.7469287469287469, 'epoch': 9, '_wandb': {'runtime': 332}, '_timestamp': 1680687816.5057352, 'test/recall': 0.8292682926829268, 'test/epoch_acc': 0.7222222222222222, 'test/precision': 0.6538461538461539, 'test/epoch_loss': 0.5193446947468652, 'train/batch_loss': 0.3307788372039795, '_step': 1039, '_runtime': 335.6552822589874, 'train/epoch_loss': 0.5277571982775039}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.5, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 8, 'learning_rate': 0.1}",sandy-sweep-11
+16,"{'train/epoch_acc': 1, 'train/epoch_loss': 0.003708146820279612, 'epoch': 9, '_wandb': {'runtime': 334}, '_timestamp': 1680687470.9289024, 'test/f1-score': 0.853932584269663, 'test/precision': 0.8085106382978723, 'test/epoch_loss': 0.4616309046745301, '_step': 149, '_runtime': 336.80703043937683, 'test/recall': 0.9047619047619048, 'test/epoch_acc': 0.8555555555555556, 'train/batch_loss': 0.0030224076472222805}","{'eps': 0.1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 64, 'learning_rate': 0.1}",laced-sweep-10
+17,"{'_step': 422, 'epoch': 7, '_runtime': 265.48077392578125, 'train/epoch_acc': 0.5331695331695332, 'train/batch_loss': 9.74098777770996, 'train/epoch_loss': 9.16968992828444, '_wandb': {'runtime': 265}, '_timestamp': 1680687113.1220188, 'test/recall': 0.08888888888888889, 'test/f1-score': 0.14035087719298245, 'test/epoch_acc': 0.45555555555555555, 'test/precision': 0.3333333333333333, 'test/epoch_loss': 11610.708938450283}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.9, 'optimizer': 'adam', 'step_size': 2, 'batch_size': 16, 'learning_rate': 0.1}",jumping-sweep-9
+18,"{'_step': 529, '_runtime': 330.36346793174744, '_timestamp': 1680686834.80723, 'test/recall': 0.803921568627451, 'test/f1-score': 0.845360824742268, 'train/epoch_acc': 0.8955773955773956, 'train/epoch_loss': 0.3055295220024756, 'epoch': 9, '_wandb': {'runtime': 327}, 'test/epoch_acc': 0.8333333333333334, 'test/precision': 0.8913043478260869, 'test/epoch_loss': 0.3831123087141249, 'train/batch_loss': 0.34334877133369446}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.5, 'optimizer': 'sgd', 'step_size': 7, 'batch_size': 16, 'learning_rate': 0.0003}",dutiful-sweep-8
+19,"{'epoch': 2, '_runtime': 99.40804982185364, '_timestamp': 1680686491.634724, 'test/recall': 1, 'test/epoch_acc': 0.45555555555555555, 'train/epoch_acc': 0.484029484029484, 'train/batch_loss': 'NaN', '_step': 157, '_wandb': {'runtime': 99}, 'test/f1-score': 0.6259541984732825, 'test/precision': 0.45555555555555555, 'test/epoch_loss': 6.554853016439314e+29, 'train/epoch_loss': 'NaN'}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.5, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 16, 'learning_rate': 0.1}",olive-sweep-7
+20,"{'_timestamp': 1680686383.3591404, 'test/epoch_acc': 0.8666666666666667, 'test/precision': 0.851063829787234, 'train/epoch_loss': 0.3219767680771521, 'test/recall': 0.8888888888888888, 'test/f1-score': 0.8695652173913044, 'test/epoch_loss': 0.35141510632303025, 'train/epoch_acc': 0.9103194103194104, '_step': 279, 'epoch': 9, '_wandb': {'runtime': 334}, '_runtime': 337.17863941192627, 'train/batch_loss': 0.3707323968410492}","{'eps': 0.1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.9, 'optimizer': 'adam', 'step_size': 2, 'batch_size': 32, 'learning_rate': 0.001}",good-sweep-6
+21,"{'train/batch_loss': 0.7027227878570557, 'epoch': 9, '_wandb': {'runtime': 342}, '_runtime': 344.80718994140625, 'test/recall': 0.6938775510204082, 'test/f1-score': 0.6601941747572815, 'train/epoch_acc': 0.5196560196560196, '_step': 149, '_timestamp': 1680686028.304971, 'test/epoch_acc': 0.6111111111111112, 'test/precision': 0.6296296296296297, 'test/epoch_loss': 0.6818753732575311, 'train/epoch_loss': 0.6907664721955246}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.9, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 64, 'learning_rate': 0.0003}",summer-sweep-5
+22,"{'train/batch_loss': 0.15035715699195862, 'train/epoch_loss': 0.10497688309859292, 'epoch': 9, '_wandb': {'runtime': 331}, '_runtime': 333.9663326740265, 'test/recall': 0.8717948717948718, 'test/epoch_acc': 0.9222222222222224, 'train/epoch_acc': 0.9864864864864864, '_step': 529, '_timestamp': 1680685671.7387648, 'test/f1-score': 0.9066666666666668, 'test/precision': 0.9444444444444444, 'test/epoch_loss': 0.22382020586066775}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.9, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 16, 'learning_rate': 0.001}",firm-sweep-4
+23,"{'_timestamp': 1680685319.453976, 'test/recall': 0.925, 'epoch': 9, '_wandb': {'runtime': 333}, '_runtime': 335.79468297958374, 'test/precision': 0.4868421052631579, 'test/epoch_loss': 0.6597137530644734, 'train/epoch_acc': 0.5909090909090909, 'train/batch_loss': 0.652446985244751, 'train/epoch_loss': 0.6564877619028677, '_step': 149, 'test/f1-score': 0.6379310344827587, 'test/epoch_acc': 0.5333333333333333}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'sgd', 'step_size': 3, 'batch_size': 64, 'learning_rate': 0.0001}",genial-sweep-3
+24,"{'test/epoch_loss': 0.5467572536733415, 'train/batch_loss': 0.5583129525184631, '_wandb': {'runtime': 329}, 'test/recall': 0.9736842105263158, 'test/epoch_acc': 0.7444444444444445, '_timestamp': 1680684975.004809, 'test/f1-score': 0.7628865979381443, 'test/precision': 0.6271186440677966, 'train/epoch_acc': 0.7899262899262899, 'train/epoch_loss': 0.4703364581675143, '_step': 529, 'epoch': 9, '_runtime': 331.50625491142273}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.9, 'optimizer': 'sgd', 'step_size': 7, 'batch_size': 16, 'learning_rate': 0.1}",fine-sweep-2
+25,"{'test/epoch_acc': 0.9, 'test/precision': 0.9069767441860463, 'train/epoch_acc': 0.9987714987714988, 'train/batch_loss': 0.005764181260019541, '_step': 529, '_runtime': 450.5545320510864, '_timestamp': 1680684633.811369, 'test/f1-score': 0.896551724137931, 'train/epoch_loss': 0.007131033717467008, 'epoch': 9, '_wandb': {'runtime': 447}, 'test/recall': 0.8863636363636364, 'test/epoch_loss': 0.30911533037821454}","{'eps': 1e-08, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.9, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 16, 'learning_rate': 0.01}",visionary-sweep-1
+26,"{'_step': 239, '_wandb': {'runtime': 83}, '_runtime': 83.58446168899536, 'test/recall': 0.9047619047619048, 'test/precision': 0.8444444444444444, 'train/epoch_acc': 0.8931203931203932, 'train/batch_loss': 0.08615076541900635, 'train/epoch_loss': 0.2428556958016658, 'epoch': 1, '_timestamp': 1680629962.8990817, 'test/f1-score': 0.8735632183908046, 'test/epoch_acc': 0.8777777777777778, 'test/epoch_loss': 0.29840316110187104}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.9, 'optimizer': 'adam', 'step_size': 2, 'batch_size': 8, 'learning_rate': 0.1}",stoic-sweep-14
+27,"{'test/epoch_loss': 0.20102048052681817, 'train/batch_loss': 0.10338585078716278, '_wandb': {'runtime': 347}, 'test/recall': 0.975, 'test/f1-score': 0.951219512195122, 'test/epoch_acc': 0.9555555555555556, 'test/precision': 0.9285714285714286, 'train/epoch_loss': 0.1163152276517718, '_step': 149, 'epoch': 9, '_runtime': 348.9410927295685, '_timestamp': 1680629872.8401277, 'train/epoch_acc': 0.9803439803439804}","{'eps': 0.1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.5, 'optimizer': 'sgd', 'step_size': 2, 'batch_size': 64, 'learning_rate': 0.01}",rich-sweep-13
+28,"{'train/epoch_acc': 0.5282555282555282, 'train/batch_loss': 82027960.0, 'train/epoch_loss': 60563307.6520902, 'epoch': 3, 'test/recall': 0.9111111111111112, 'test/f1-score': 0.6721311475409836, 'test/precision': 0.5324675324675324, 'test/epoch_acc': 0.5555555555555556, 'test/epoch_loss': 3.395405118153546e+20, '_step': 210, '_wandb': {'runtime': 135}, '_runtime': 132.22715950012207, '_timestamp': 1680629513.1781075}","{'eps': 1e-08, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.5, 'optimizer': 'adam', 'step_size': 7, 'batch_size': 16, 'learning_rate': 0.003}",smooth-sweep-12
+29,"{'_timestamp': 1680629374.0562296, 'test/epoch_acc': 0.6333333333333333, 'train/batch_loss': 0.5836847424507141, 'train/epoch_loss': 0.6072891213970044, '_step': 279, '_wandb': {'runtime': 326}, '_runtime': 327.2181556224823, 'test/recall': 0.8888888888888888, 'test/f1-score': 0.6597938144329897, 'test/precision': 0.5245901639344263, 'test/epoch_loss': 0.6240786300765143, 'train/epoch_acc': 0.7469287469287469, 'epoch': 9}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.5, 'optimizer': 'sgd', 'step_size': 2, 'batch_size': 32, 'learning_rate': 0.0003}",resilient-sweep-11
+30,"{'_step': 529, 'epoch': 9, '_runtime': 332.23273372650146, 'test/f1-score': 0.8958333333333334, 'test/epoch_acc': 0.888888888888889, 'test/precision': 0.9772727272727272, 'test/epoch_loss': 0.2657569663392173, 'train/batch_loss': 0.13025684654712677, 'train/epoch_loss': 0.12745249926751018, '_wandb': {'runtime': 330}, '_timestamp': 1680629038.456323, 'test/recall': 0.8269230769230769, 'train/epoch_acc': 0.9717444717444718}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'sgd', 'step_size': 3, 'batch_size': 16, 'learning_rate': 0.001}",serene-sweep-10
+31,"{'test/epoch_loss': 0.23338710864384968, 'train/epoch_loss': 0.2116023584907412, '_wandb': {'runtime': 334}, '_timestamp': 1680628699.1189623, 'test/precision': 0.972972972972973, 'test/recall': 0.8372093023255814, 'test/f1-score': 0.9, 'test/epoch_acc': 0.9111111111111112, 'train/epoch_acc': 0.9275184275184276, 'train/batch_loss': 0.11391787976026536, '_step': 1039, 'epoch': 9, '_runtime': 335.94198656082153}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.5, 'optimizer': 'sgd', 'step_size': 7, 'batch_size': 8, 'learning_rate': 0.0003}",cool-sweep-9
+32,"{'_step': 529, 'epoch': 9, '_timestamp': 1680628351.790065, 'test/f1-score': 0.7959183673469388, 'test/epoch_acc': 0.7777777777777778, 'test/epoch_loss': 0.5824494547314114, 'train/epoch_acc': 0.7702702702702703, '_wandb': {'runtime': 326}, '_runtime': 327.29265093803406, 'test/recall': 0.8863636363636364, 'test/precision': 0.7222222222222222, 'train/batch_loss': 0.5777762532234192, 'train/epoch_loss': 0.6034659886828805}","{'eps': 0.1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.999, 'optimizer': 'sgd', 'step_size': 2, 'batch_size': 16, 'learning_rate': 0.0001}",lilac-sweep-8
+33,"{'_step': 149, '_wandb': {'runtime': 335}, '_timestamp': 1680628016.5942774, 'test/recall': 0.8048780487804879, 'test/f1-score': 0.717391304347826, 'train/epoch_loss': 0.618001790392311, 'train/batch_loss': 0.5935282111167908, 'epoch': 9, '_runtime': 337.11313247680664, 'test/epoch_acc': 0.7111111111111111, 'test/precision': 0.6470588235294118, 'test/epoch_loss': 0.6369305915302701, 'train/epoch_acc': 0.7199017199017199}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 7, 'batch_size': 64, 'learning_rate': 0.001}",warm-sweep-7
+34,"{'_step': 2059, 'test/f1-score': 0.6857142857142857, 'test/precision': 0.6, 'test/epoch_loss': 0.6619265423880683, 'train/batch_loss': 0.6662057638168335, 'epoch': 9, '_wandb': {'runtime': 354}, '_runtime': 355.7423675060272, '_timestamp': 1680627667.6215644, 'test/recall': 0.8, 'test/epoch_acc': 0.6333333333333333, 'train/epoch_acc': 0.6498771498771498, 'train/epoch_loss': 0.6663250732773353}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 7, 'batch_size': 4, 'learning_rate': 0.0001}",giddy-sweep-6
+35,"{'epoch': 9, '_runtime': 344.59358406066895, '_timestamp': 1680627305.434523, 'test/precision': 0.7407407407407407, 'train/batch_loss': 0.6531811356544495, 'train/epoch_loss': 0.6398702088093582, 'train/epoch_acc': 0.7125307125307125, '_step': 149, '_wandb': {'runtime': 343}, 'test/recall': 0.8163265306122449, 'test/f1-score': 0.7766990291262137, 'test/epoch_acc': 0.7444444444444445, 'test/epoch_loss': 0.6307997491624621}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.5, 'optimizer': 'sgd', 'step_size': 7, 'batch_size': 64, 'learning_rate': 0.0001}",stellar-sweep-5
+36,"{'test/recall': 0.8461538461538461, 'test/epoch_acc': 0.9222222222222224, 'test/precision': 0.9705882352941176, 'test/epoch_loss': 0.1906787835785912, 'train/epoch_acc': 0.9975429975429976, '_step': 1039, '_runtime': 335.76391553878784, '_timestamp': 1680626951.0603056, 'train/batch_loss': 0.0006497434806078672, 'train/epoch_loss': 0.02095988139033052, 'epoch': 9, '_wandb': {'runtime': 334}, 'test/f1-score': 0.9041095890410958}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.9, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 8, 'learning_rate': 0.003}",olive-sweep-4
+37,"{'test/precision': 0.8222222222222222, 'test/epoch_loss': 0.27919367684258356, '_step': 149, 'epoch': 9, '_runtime': 333.64992809295654, 'test/recall': 0.925, 'test/f1-score': 0.8705882352941177, 'test/epoch_acc': 0.8777777777777778, '_wandb': {'runtime': 332}, '_timestamp': 1680626608.419389, 'train/epoch_acc': 0.984029484029484, 'train/batch_loss': 0.12675245106220245, 'train/epoch_loss': 0.11751884335528429}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.9, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 64, 'learning_rate': 0.003}",dazzling-sweep-3
+38,"{'test/recall': 0.6842105263157895, 'test/precision': 0.5306122448979592, '_wandb': {'runtime': 336}, '_runtime': 337.19885444641113, '_timestamp': 1680626264.5954974, 'test/epoch_acc': 0.6111111111111112, 'test/epoch_loss': 0.6708752089076572, 'train/epoch_acc': 0.6547911547911548, 'train/batch_loss': 0.5270536541938782, 'train/epoch_loss': 0.6389284106085868, '_step': 1039, 'epoch': 9, 'test/f1-score': 0.5977011494252874}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.99, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 8, 'learning_rate': 0.01}",kind-sweep-2
+39,"{'test/f1-score': 0.853932584269663, 'test/epoch_loss': 0.38614972366227046, 'train/epoch_acc': 0.8746928746928747, 'train/epoch_loss': 0.3516608065117782, '_step': 529, 'epoch': 9, '_runtime': 337.9836483001709, 'test/recall': 0.8636363636363636, 'train/batch_loss': 0.3848239779472351, '_wandb': {'runtime': 337}, '_timestamp': 1680625919.9645753, 'test/epoch_acc': 0.8555555555555556, 'test/precision': 0.8444444444444444}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.5, 'optimizer': 'adam', 'step_size': 5, 'batch_size': 16, 'learning_rate': 0.003}",morning-sweep-1
+40,"{'_runtime': 347.9354045391083, '_timestamp': 1680624250.2654595, 'test/recall': 0.8653846153846154, 'test/epoch_loss': 0.25786760796585845, 'train/batch_loss': 0.05631007254123688, 'train/epoch_loss': 0.02368298517580857, '_step': 2059, 'epoch': 9, '_wandb': {'runtime': 346}, 'test/f1-score': 0.9, 'test/epoch_acc': 0.888888888888889, 'test/precision': 0.9375, 'train/epoch_acc': 0.9975429975429976}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 2, 'batch_size': 4, 'learning_rate': 0.1}",valiant-sweep-23
+41,"{'test/epoch_acc': 0.8444444444444444, 'test/epoch_loss': 0.490613665845659, 'train/epoch_acc': 0.8243243243243243, '_step': 1039, '_timestamp': 1680623895.362503, 'test/recall': 0.8936170212765957, 'test/f1-score': 0.8571428571428571, 'test/precision': 0.8235294117647058, 'train/batch_loss': 0.5639374256134033, 'train/epoch_loss': 0.48581602795996887, 'epoch': 9, '_wandb': {'runtime': 327}, '_runtime': 329.4802031517029}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.5, 'optimizer': 'sgd', 'step_size': 2, 'batch_size': 8, 'learning_rate': 0.0003}",earnest-sweep-22
+42,"{'test/epoch_acc': 0.9, 'test/precision': 0.8958333333333334, 'train/batch_loss': 0.06110217794775963, 'train/epoch_loss': 0.05107141801451289, 'epoch': 9, '_wandb': {'runtime': 326}, 'test/recall': 0.9148936170212766, 'test/f1-score': 0.9052631578947368, 'train/epoch_acc': 0.995085995085995, '_step': 149, '_runtime': 328.0050995349884, '_timestamp': 1680623556.4586525, 'test/epoch_loss': 0.2318242397573259}","{'eps': 1e-08, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 7, 'batch_size': 64, 'learning_rate': 0.003}",genial-sweep-21
+43,"{'_runtime': 327.10622239112854, 'test/f1-score': 0.780952380952381, 'test/epoch_acc': 0.7444444444444445, 'test/epoch_loss': 0.5943129923608568, 'train/batch_loss': 0.6166229844093323, 'train/epoch_loss': 0.5714027147914034, '_step': 149, 'epoch': 9, '_wandb': {'runtime': 325}, '_timestamp': 1680623221.0825984, 'test/recall': 0.8723404255319149, 'test/precision': 0.7068965517241379, 'train/epoch_acc': 0.7911547911547911}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 2, 'batch_size': 64, 'learning_rate': 0.001}",lemon-sweep-20
+44,"{'train/epoch_acc': 0.6277641277641277, 'train/epoch_loss': 0.6722187732302879, '_runtime': 331.60892701148987, 'test/recall': 0.7021276595744681, 'test/epoch_acc': 0.6, 'test/epoch_loss': 0.6746161646313138, 'test/f1-score': 0.6470588235294118, 'test/precision': 0.6, 'train/batch_loss': 0.7205827236175537, '_step': 1039, 'epoch': 9, '_wandb': {'runtime': 330}, '_timestamp': 1680622885.059607}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.9, 'optimizer': 'adam', 'step_size': 2, 'batch_size': 8, 'learning_rate': 0.0001}",ancient-sweep-19
+45,"{'train/epoch_loss': 0.0466749508011656, '_step': 2059, 'epoch': 9, 'test/recall': 0.8695652173913043, 'test/precision': 0.9302325581395348, 'test/epoch_loss': 0.24883262103216516, 'train/batch_loss': 0.015468262135982512, '_wandb': {'runtime': 347}, '_runtime': 348.9979507923126, '_timestamp': 1680622545.2735748, 'test/f1-score': 0.898876404494382, 'test/epoch_acc': 0.9, 'train/epoch_acc': 0.9877149877149876}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.9, 'optimizer': 'adam', 'step_size': 5, 'batch_size': 4, 'learning_rate': 0.01}",smart-sweep-18
+46,"{'train/epoch_acc': 0.9815724815724816, 'train/batch_loss': 0.007225348148494959, 'train/epoch_loss': 0.07856258183731457, '_step': 1039, 'epoch': 9, '_runtime': 329.3028633594513, '_timestamp': 1680622188.8210304, 'test/recall': 0.8536585365853658, '_wandb': {'runtime': 328}, 'test/f1-score': 0.8974358974358975, 'test/epoch_acc': 0.9111111111111112, 'test/precision': 0.945945945945946, 'test/epoch_loss': 0.2015038196825319}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.9, 'optimizer': 'sgd', 'step_size': 2, 'batch_size': 8, 'learning_rate': 0.003}",sleek-sweep-17
+47,"{'test/precision': 0.88, 'test/epoch_loss': 0.5843977000978258, 'train/epoch_acc': 0.828009828009828, 'train/batch_loss': 0.6047794222831726, '_wandb': {'runtime': 321}, 'test/recall': 0.8301886792452831, '_runtime': 323.3842430114746, '_timestamp': 1680621849.979658, 'test/f1-score': 0.8543689320388349, 'test/epoch_acc': 0.8333333333333334, 'train/epoch_loss': 0.5808350268101516, '_step': 279, 'epoch': 9}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.5, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 32, 'learning_rate': 0.0001}",winter-sweep-16
+48,"{'epoch': 9, '_runtime': 347.8050694465637, '_timestamp': 1680621511.323635, 'test/recall': 0.85, 'test/precision': 0.85, 'test/epoch_loss': 0.5281610590923164, 'train/epoch_acc': 0.995085995085995, 'train/batch_loss': 0.001602485659532249, 'train/epoch_loss': 0.029015880939893934, '_step': 2059, '_wandb': {'runtime': 346}, 'test/f1-score': 0.85, 'test/epoch_acc': 0.8666666666666667}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 7, 'batch_size': 4, 'learning_rate': 0.1}",rare-sweep-15
+49,"{'_step': 2059, '_wandb': {'runtime': 346}, '_runtime': 347.7671456336975, 'test/recall': 0.8809523809523809, 'test/f1-score': 0.9135802469135802, 'test/epoch_acc': 0.9222222222222224, 'test/precision': 0.9487179487179488, 'train/batch_loss': 0.010366588830947876, 'epoch': 9, '_timestamp': 1680621147.5604067, 'test/epoch_loss': 0.22225395898438163, 'train/epoch_acc': 0.9864864864864864, 'train/epoch_loss': 0.04606454834343147}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 7, 'batch_size': 4, 'learning_rate': 0.001}",stoic-sweep-14
+50,"{'test/precision': 0.6428571428571429, 'test/epoch_loss': 0.661226307021247, 'train/epoch_acc': 0.6523341523341524, 'train/batch_loss': 0.6023905277252197, '_step': 2059, '_wandb': {'runtime': 351}, 'test/epoch_acc': 0.6888888888888889, 'test/recall': 0.675, 'test/f1-score': 0.6585365853658537, 'train/epoch_loss': 0.6673213337211703, 'epoch': 9, '_runtime': 352.6435329914093, '_timestamp': 1680620790.920825}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 5, 'batch_size': 4, 'learning_rate': 0.0001}",glorious-sweep-13
+51,"{'epoch': 9, '_wandb': {'runtime': 329}, 'test/recall': 0.9574468085106383, 'test/f1-score': 0.9782608695652174, 'train/epoch_acc': 1, 'train/batch_loss': 0.004083937965333462, 'train/epoch_loss': 0.0071195896911716286, '_step': 149, '_runtime': 330.7649688720703, '_timestamp': 1680620431.024078, 'test/epoch_acc': 0.977777777777778, 'test/precision': 1, 'test/epoch_loss': 0.1352142873737547}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 64, 'learning_rate': 0.01}",chocolate-sweep-12
+52,"{'test/epoch_loss': 0.5375637359089321, 'train/epoch_acc': 0.800982800982801, '_step': 149, '_timestamp': 1680620092.0697718, 'test/recall': 0.926829268292683, 'test/f1-score': 0.8636363636363636, 'test/epoch_acc': 0.8666666666666667, 'test/precision': 0.8085106382978723, 'train/batch_loss': 0.5299303531646729, 'train/epoch_loss': 0.5577488642652731, 'epoch': 9, '_wandb': {'runtime': 328}, '_runtime': 329.12984681129456}","{'eps': 0.1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.99, 'optimizer': 'adam', 'step_size': 5, 'batch_size': 64, 'learning_rate': 0.0003}",glowing-sweep-11
+53,"{'test/epoch_acc': 0.7555555555555555, 'test/precision': 0.7659574468085106, 'test/epoch_loss': 0.5337554746203952, 'train/epoch_loss': 0.46212616409072127, '_runtime': 324.3058567047119, '_timestamp': 1680619755.0191748, 'test/recall': 0.7659574468085106, 'test/f1-score': 0.7659574468085105, 'train/batch_loss': 0.5281365513801575, '_step': 279, 'epoch': 9, '_wandb': {'runtime': 322}, 'train/epoch_acc': 0.8611793611793611}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.5, 'optimizer': 'adam', 'step_size': 5, 'batch_size': 32, 'learning_rate': 0.003}",different-sweep-10
+54,"{'_step': 279, '_wandb': {'runtime': 325}, '_runtime': 327.0705659389496, 'train/epoch_loss': 0.5580001385557564, 'test/epoch_acc': 0.8555555555555556, 'test/precision': 0.7843137254901961, 'test/epoch_loss': 0.5470490535100301, 'train/epoch_acc': 0.8058968058968059, 'epoch': 9, '_timestamp': 1680619423.656795, 'test/recall': 0.9523809523809524, 'test/f1-score': 0.8602150537634408, 'train/batch_loss': 0.6183260083198547}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 32, 'learning_rate': 0.003}",lilac-sweep-9
+55,"{'test/recall': 0.7551020408163265, 'test/f1-score': 0.7956989247311828, 'test/epoch_acc': 0.788888888888889, 'train/epoch_acc': 0.773955773955774, 'train/batch_loss': 0.6300776600837708, '_step': 529, 'epoch': 9, '_wandb': {'runtime': 327}, 'train/epoch_loss': 0.46969629490990605, 'test/epoch_loss': 0.46168507006433274, '_runtime': 328.68579959869385, '_timestamp': 1680619089.5332966, 'test/precision': 0.8409090909090909}","{'eps': 0.1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 3, 'batch_size': 16, 'learning_rate': 0.1}",crimson-sweep-8
+56,"{'test/precision': 0.9375, 'test/epoch_loss': 0.44089303129391433, 'train/batch_loss': 0.011611333116889, 'epoch': 9, '_runtime': 350.2308712005615, 'test/f1-score': 0.8737864077669902, 'test/recall': 0.8181818181818182, 'test/epoch_acc': 0.8555555555555556, 'train/epoch_acc': 0.9938574938574938, 'train/epoch_loss': 0.02176519967463292, '_step': 2059, '_wandb': {'runtime': 349}, '_timestamp': 1680618753.2361271}","{'eps': 0.1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 7, 'batch_size': 4, 'learning_rate': 0.003}",still-sweep-7
+57,"{'train/epoch_loss': 0.02099113287724536, '_timestamp': 1680618396.0194488, 'test/f1-score': 0.8607594936708861, 'test/epoch_acc': 0.8777777777777778, 'test/precision': 0.85, 'train/batch_loss': 0.030084805563092232, 'test/epoch_loss': 0.24035142682841976, 'train/epoch_acc': 0.9938574938574938, '_step': 1039, 'epoch': 9, '_wandb': {'runtime': 333}, '_runtime': 334.69481587409973, 'test/recall': 0.8717948717948718}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 8, 'learning_rate': 0.01}",charmed-sweep-6
+58,"{'train/epoch_acc': 0.9963144963144964, 'train/batch_loss': 0.001848929445259273, 'train/epoch_loss': 0.010693324584853135, '_wandb': {'runtime': 335}, '_runtime': 336.1621870994568, 'test/recall': 0.8780487804878049, 'test/f1-score': 0.8674698795180722, 'test/precision': 0.8571428571428571, '_step': 1039, 'epoch': 9, '_timestamp': 1680618051.044084, 'test/epoch_acc': 0.8777777777777778, 'test/epoch_loss': 0.5385394818252988}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.9, 'optimizer': 'adam', 'step_size': 7, 'batch_size': 8, 'learning_rate': 0.0003}",restful-sweep-5
+59,"{'test/recall': 0.8409090909090909, 'test/f1-score': 0.8409090909090909, 'test/epoch_acc': 0.8444444444444444, '_wandb': {'runtime': 333}, '_timestamp': 1680617708.075962, '_runtime': 334.4848310947418, 'test/precision': 0.8409090909090909, 'test/epoch_loss': 0.6238909363746643, 'train/epoch_acc': 1, 'train/batch_loss': 0.004928763955831528, 'train/epoch_loss': 0.004462716538065481, '_step': 149, 'epoch': 9}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.5, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 64, 'learning_rate': 0.1}",proud-sweep-4
+60,"{'_step': 149, 'epoch': 9, '_wandb': {'runtime': 337}, 'test/f1-score': 0.4778761061946903, 'test/precision': 0.35064935064935066, 'train/epoch_acc': 0.5626535626535626, 'train/epoch_loss': 0.6796711432845938, '_runtime': 338.4922821521759, '_timestamp': 1680617365.2791553, 'test/recall': 0.75, 'test/epoch_acc': 0.34444444444444444, 'test/epoch_loss': 0.7233364171451993, 'train/batch_loss': 0.6750851273536682}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.5, 'optimizer': 'sgd', 'step_size': 2, 'batch_size': 64, 'learning_rate': 0.0001}",visionary-sweep-3
+61,"{'epoch': 3, '_wandb': {'runtime': 132}, '_runtime': 129.48883533477783, 'test/f1-score': 0.59375, 'test/epoch_acc': 0.4222222222222222, 'test/precision': 0.4222222222222222, 'train/epoch_acc': 0.5147420147420148, 'train/batch_loss': 1.2695436477661133, '_step': 110, '_timestamp': 1680617007.4126654, 'test/recall': 1, 'test/epoch_loss': 109.22879723442924, 'train/epoch_loss': 3.225923076601521}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.99, 'optimizer': 'adam', 'step_size': 2, 'batch_size': 32, 'learning_rate': 0.1}",splendid-sweep-2
+62,"{'test/precision': 0.7755102040816326, 'test/epoch_loss': 0.6018742865986294, 'train/epoch_loss': 0.5949591096554693, '_step': 1039, 'epoch': 9, 'test/recall': 0.8636363636363636, 'test/f1-score': 0.8172043010752688, 'test/epoch_acc': 0.8111111111111111, '_wandb': {'runtime': 372}, '_runtime': 373.84231185913086, '_timestamp': 1680616870.0621138, 'train/epoch_acc': 0.7727272727272727, 'train/batch_loss': 0.563504695892334}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 3, 'batch_size': 8, 'learning_rate': 0.0001}",snowy-sweep-1
+63,"{'epoch': 9, '_wandb': {'runtime': 327}, 'test/precision': 0.625, 'train/epoch_acc': 0.5552825552825553, 'train/epoch_loss': 0.684732110699506, '_step': 529, '_runtime': 333.6077947616577, '_timestamp': 1678798635.5359335, 'test/recall': 0.5813953488372093, 'test/f1-score': 0.6024096385542168, 'test/epoch_acc': 0.6333333333333333, 'test/epoch_loss': 0.6787986318270366, 'train/batch_loss': 0.7118003964424133}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.5, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 16, 'learning_rate': 0.0001}",comic-sweep-38
+64,"{'_step': 149, 'test/epoch_acc': 0.888888888888889, 'test/precision': 0.8, 'train/epoch_acc': 1, 'test/epoch_loss': 0.5120628664890925, 'train/batch_loss': 0.0015535189304500818, 'epoch': 9, '_wandb': {'runtime': 337}, '_runtime': 342.7867271900177, '_timestamp': 1678798288.876002, 'test/recall': 1, 'test/f1-score': 0.888888888888889, 'train/epoch_loss': 0.001254009526264133}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.999, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 64, 'learning_rate': 0.1}",magic-sweep-37
+65,"{'test/epoch_loss': 0.6593369828330146, '_step': 279, '_wandb': {'runtime': 332}, '_runtime': 338.4290623664856, '_timestamp': 1678797929.8979273, 'test/recall': 0.6341463414634146, 'test/f1-score': 0.6190476190476191, 'test/epoch_acc': 0.6444444444444445, 'train/epoch_acc': 0.6572481572481572, 'train/batch_loss': 0.6705241203308105, 'epoch': 9, 'test/precision': 0.6046511627906976, 'train/epoch_loss': 0.659313001562395}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.9, 'optimizer': 'adam', 'step_size': 7, 'batch_size': 32, 'learning_rate': 0.0003}",azure-sweep-36
+66,"{'test/precision': 0.9591836734693876, 'train/epoch_acc': 0.7911547911547911, 'train/batch_loss': 0.5475739240646362, 'epoch': 9, '_wandb': {'runtime': 343}, 'test/recall': 0.8703703703703703, 'test/f1-score': 0.912621359223301, 'test/epoch_acc': 0.9, '_step': 1039, '_runtime': 349.1018385887146, '_timestamp': 1678797575.4461255, 'test/epoch_loss': 0.5167779392666287, 'train/epoch_loss': 0.542006236622316}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.99, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 8, 'learning_rate': 0.001}",easy-sweep-35
+67,"{'_timestamp': 1678797212.2311337, 'test/f1-score': 0.8611111111111112, 'test/epoch_loss': 0.27850865055532065, 'train/batch_loss': 4.9947026127483696e-05, 'train/epoch_loss': 0.012833298822080874, 'train/epoch_acc': 0.9987714987714988, '_step': 2059, 'epoch': 9, '_wandb': {'runtime': 362}, '_runtime': 367.9372293949127, 'test/recall': 0.8611111111111112, 'test/epoch_acc': 0.888888888888889, 'test/precision': 0.8611111111111112}","{'eps': 0.1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.9, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 4, 'learning_rate': 0.003}",usual-sweep-34
+68,"{'_step': 529, 'test/f1-score': 0.903846153846154, 'test/epoch_acc': 0.888888888888889, 'test/precision': 0.8392857142857143, 'train/epoch_acc': 0.9742014742014742, 'test/epoch_loss': 0.6554473309053315, 'train/batch_loss': 0.17918632924556732, 'train/epoch_loss': 0.07036763163974523, 'epoch': 9, '_wandb': {'runtime': 330}, '_runtime': 335.99687933921814, '_timestamp': 1678796827.8409674, 'test/recall': 0.9791666666666666}","{'eps': 1e-08, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.5, 'optimizer': 'adam', 'step_size': 5, 'batch_size': 16, 'learning_rate': 0.0003}",polar-sweep-33
+69,"{'_step': 149, '_runtime': 336.63737440109253, '_timestamp': 1678796468.9253614, 'test/recall': 0.8648648648648649, 'test/precision': 0.64, 'train/epoch_acc': 0.8660933660933661, 'train/epoch_loss': 0.47513497564072105, 'epoch': 9, '_wandb': {'runtime': 330}, 'test/f1-score': 0.7356321839080459, 'test/epoch_acc': 0.7444444444444445, 'test/epoch_loss': 0.5271965821584066, 'train/batch_loss': 0.4695126414299011}","{'eps': 0.1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.5, 'optimizer': 'sgd', 'step_size': 2, 'batch_size': 64, 'learning_rate': 0.001}",still-sweep-32
+70,"{'_runtime': 378.4032835960388, '_timestamp': 1678796117.3062005, 'test/epoch_acc': 0.888888888888889, 'test/precision': 0.9428571428571428, 'train/epoch_acc': 0.9705159705159704, 'train/batch_loss': 0.711412787437439, '_step': 2059, 'epoch': 9, '_wandb': {'runtime': 372}, 'test/recall': 0.8048780487804879, 'test/f1-score': 0.868421052631579, 'test/epoch_loss': 0.2378266812198692, 'train/epoch_loss': 0.09577267487700432}","{'eps': 0.1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.5, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 4, 'learning_rate': 0.001}",misty-sweep-31
+71,"{'train/epoch_acc': 0.9926289926289926, 'train/epoch_loss': 0.05967479737370254, '_step': 529, 'epoch': 9, '_runtime': 336.8808288574219, 'test/recall': 0.8260869565217391, 'test/f1-score': 0.8636363636363636, 'test/precision': 0.9047619047619048, '_wandb': {'runtime': 333}, '_timestamp': 1678795725.918603, 'test/epoch_acc': 0.8666666666666667, 'test/epoch_loss': 0.27924135790930854, 'train/batch_loss': 0.04936826974153519}","{'eps': 1e-08, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.9, 'optimizer': 'sgd', 'step_size': 7, 'batch_size': 16, 'learning_rate': 0.001}",flowing-sweep-30
+72,"{'epoch': 9, 'test/recall': 0.851063829787234, 'test/epoch_loss': 0.37525106337335373, 'train/epoch_acc': 0.8722358722358722, 'train/batch_loss': 0.4592914581298828, 'train/epoch_loss': 0.3784469199122024, 'test/precision': 0.9523809523809524, '_step': 279, '_wandb': {'runtime': 336}, '_runtime': 339.73244285583496, '_timestamp': 1678795319.518895, 'test/f1-score': 0.898876404494382, 'test/epoch_acc': 0.9}","{'eps': 0.1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.9, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 32, 'learning_rate': 0.001}",deep-sweep-28
+73,"{'test/precision': 0.7575757575757576, 'train/epoch_acc': 0.7899262899262899, 'train/epoch_loss': 0.5319552311733255, '_wandb': {'runtime': 377}, '_timestamp': 1678794965.2675128, 'test/recall': 0.625, 'test/f1-score': 0.6849315068493151, 'test/epoch_acc': 0.7444444444444445, 'test/epoch_loss': 0.5484810524516636, 'train/batch_loss': 0.6763702630996704, '_step': 2059, 'epoch': 9, '_runtime': 381.0768678188324}","{'eps': 0.1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.5, 'optimizer': 'adam', 'step_size': 5, 'batch_size': 4, 'learning_rate': 0.0001}",glorious-sweep-27
+74,"{'epoch': 9, '_runtime': 338.11463618278503, 'test/recall': 0.813953488372093, 'test/precision': 0.7142857142857143, 'train/epoch_loss': 0.2699748155379471, '_step': 529, '_timestamp': 1678794572.9156363, 'test/f1-score': 0.7608695652173914, 'test/epoch_acc': 0.7555555555555555, 'test/epoch_loss': 0.5729872869120703, 'train/epoch_acc': 0.8968058968058967, 'train/batch_loss': 0.4391788542270661, '_wandb': {'runtime': 334}}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.9, 'optimizer': 'sgd', 'step_size': 2, 'batch_size': 16, 'learning_rate': 0.1}",stoic-sweep-26
+75,"{'test/epoch_loss': 0.3083995895563728, 'train/epoch_acc': 0.9877149877149876, 'train/batch_loss': 0.025906365364789963, '_step': 2059, 'epoch': 9, 'test/f1-score': 0.8666666666666666, 'test/epoch_acc': 0.8666666666666667, 'test/precision': 0.8478260869565217, 'train/epoch_loss': 0.04955068614813831, '_wandb': {'runtime': 377}, '_runtime': 380.8983037471771, '_timestamp': 1678794222.848524, 'test/recall': 0.8863636363636364}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 7, 'batch_size': 4, 'learning_rate': 0.01}",vibrant-sweep-25
+76,"{'_step': 149, '_wandb': {'runtime': 340}, '_runtime': 343.4739582538605, 'test/f1-score': 0.8867924528301887, 'test/precision': 0.8545454545454545, 'test/epoch_loss': 0.7976957665549385, 'train/batch_loss': 0.0010389955714344978, 'train/epoch_loss': 0.002287556243378495, 'epoch': 9, '_timestamp': 1678793829.5489533, 'test/recall': 0.9215686274509804, 'test/epoch_acc': 0.8666666666666667, 'train/epoch_acc': 1}","{'eps': 0.1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 5, 'batch_size': 64, 'learning_rate': 0.1}",valiant-sweep-24
+77,"{'_timestamp': 1678793464.5180786, 'test/f1-score': 0.8571428571428571, 'test/epoch_acc': 0.8555555555555556, 'test/epoch_loss': 0.4112878143787384, 'train/epoch_acc': 0.8857493857493858, 'epoch': 9, '_wandb': {'runtime': 340}, '_runtime': 344.0598545074463, 'train/batch_loss': 0.3762533664703369, 'train/epoch_loss': 0.3862068348493272, '_step': 149, 'test/recall': 0.8478260869565217, 'test/precision': 0.8666666666666667}","{'eps': 0.1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 5, 'batch_size': 64, 'learning_rate': 0.001}",polished-sweep-23
+78,"{'_wandb': {'runtime': 336}, '_runtime': 339.41979336738586, 'test/epoch_acc': 0.6555555555555556, 'test/precision': 0.59375, 'test/epoch_loss': 0.6097042110231188, 'epoch': 9, '_timestamp': 1678793108.7606344, 'test/recall': 0.8837209302325582, 'test/f1-score': 0.7102803738317758, 'train/epoch_acc': 0.6756756756756757, 'train/batch_loss': 0.7007869482040405, 'train/epoch_loss': 0.6115244123215171, '_step': 529}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 2, 'batch_size': 16, 'learning_rate': 0.01}",clear-sweep-22
+79,"{'test/precision': 0.9393939393939394, 'train/epoch_acc': 0.9815724815724816, 'train/batch_loss': 0.5061427354812622, '_runtime': 381.0477261543274, 'test/recall': 0.8157894736842105, 'test/f1-score': 0.8732394366197183, '_timestamp': 1678792758.596286, 'test/epoch_acc': 0.9, 'test/epoch_loss': 0.23743902287549443, 'train/epoch_loss': 0.07462231436439994, '_step': 2059, 'epoch': 9, '_wandb': {'runtime': 377}}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.99, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 4, 'learning_rate': 0.01}",sage-sweep-21
+80,"{'_step': 529, '_timestamp': 1678792364.5292609, 'test/f1-score': 0.8505747126436782, 'train/epoch_acc': 0.9791154791154792, 'train/epoch_loss': 0.12095561367287976, 'train/batch_loss': 0.24579545855522156, 'epoch': 9, '_wandb': {'runtime': 331}, '_runtime': 335.3731348514557, 'test/recall': 0.8043478260869565, 'test/epoch_acc': 0.8555555555555556, 'test/precision': 0.902439024390244, 'test/epoch_loss': 0.28035063776705}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.999, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 16, 'learning_rate': 0.001}",olive-sweep-20
+81,"{'test/epoch_acc': 0.9333333333333332, 'test/epoch_loss': 0.17397157057291932, 'train/epoch_acc': 0.995085995085995, '_step': 1039, 'epoch': 9, '_timestamp': 1678792015.2579195, 'test/recall': 0.9111111111111112, 'test/f1-score': 0.931818181818182, '_wandb': {'runtime': 337}, '_runtime': 340.5063774585724, 'test/precision': 0.9534883720930232, 'train/batch_loss': 0.0077079650945961475, 'train/epoch_loss': 0.018187719287696302}","{'eps': 0.1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 8, 'learning_rate': 0.003}",autumn-sweep-19
+82,"{'train/epoch_loss': 0.4784781006542412, '_step': 1039, 'epoch': 9, '_wandb': {'runtime': 344}, '_timestamp': 1678791661.9692383, 'test/f1-score': 0.7804878048780488, 'train/epoch_acc': 0.8218673218673218, 'train/batch_loss': 0.4317986071109772, '_runtime': 347.40152740478516, 'test/recall': 0.8205128205128205, 'test/epoch_acc': 0.8, 'test/precision': 0.7441860465116279, 'test/epoch_loss': 0.4940012666914198}","{'eps': 0.1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 7, 'batch_size': 8, 'learning_rate': 0.0001}",crisp-sweep-18
+83,"{'_step': 279, 'epoch': 9, '_wandb': {'runtime': 335}, '_runtime': 337.956387758255, 'test/recall': 0.9090909090909092, 'test/f1-score': 0.9090909090909092, 'train/epoch_loss': 0.08830470366618558, '_timestamp': 1678791236.6172178, 'test/epoch_acc': 0.9111111111111112, 'test/precision': 0.9090909090909092, 'test/epoch_loss': 0.19624250796106127, 'train/epoch_acc': 0.9828009828009828, 'train/batch_loss': 0.15555259585380554}","{'eps': 0.1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 2, 'batch_size': 32, 'learning_rate': 0.003}",deep-sweep-16
+84,"{'test/recall': 0.8775510204081632, 'test/epoch_loss': 0.6228035251299541, 'train/epoch_acc': 0.7493857493857494, 'train/batch_loss': 0.6377201080322266, '_step': 279, '_runtime': 334.2993712425232, '_timestamp': 1678790886.952144, 'test/f1-score': 0.7818181818181819, 'test/epoch_acc': 0.7333333333333334, 'test/precision': 0.7049180327868853, 'train/epoch_loss': 0.6127705679478751, 'epoch': 9, '_wandb': {'runtime': 331}}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 2, 'batch_size': 32, 'learning_rate': 0.0003}",confused-sweep-15
+85,"{'test/precision': 0.7192982456140351, 'test/epoch_loss': 0.6144241677390204, 'train/epoch_acc': 0.8415233415233415, 'train/batch_loss': 0.1340156048536301, 'train/epoch_loss': 0.3545121966840594, '_wandb': {'runtime': 342}, '_timestamp': 1678790542.286384, '_runtime': 345.0617377758026, 'test/recall': 0.8541666666666666, 'test/f1-score': 0.7809523809523811, 'test/epoch_acc': 0.7444444444444445, '_step': 529, 'epoch': 9}","{'eps': 1e-08, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 7, 'batch_size': 16, 'learning_rate': 0.1}",ancient-sweep-14
+86,"{'test/epoch_loss': 0.6392196734746297, '_runtime': 346.86587953567505, '_timestamp': 1678790183.7024884, '_wandb': {'runtime': 344}, 'test/recall': 0.782608695652174, 'test/f1-score': 0.7422680412371134, 'test/epoch_acc': 0.7222222222222222, 'test/precision': 0.7058823529411765, 'train/epoch_acc': 0.7457002457002457, '_step': 529, 'epoch': 9, 'train/batch_loss': 0.6280461549758911, 'train/epoch_loss': 0.6374555861334836}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.5, 'optimizer': 'adam', 'step_size': 7, 'batch_size': 16, 'learning_rate': 0.0003}",revived-sweep-13
+87,"{'_wandb': {'runtime': 348}, '_runtime': 350.9660577774048, '_timestamp': 1678789826.0085878, 'test/recall': 0.9111111111111112, 'train/epoch_acc': 0.9987714987714988, 'train/epoch_loss': 0.02119528235872196, '_step': 149, 'epoch': 9, 'test/f1-score': 0.9010989010989012, 'test/epoch_acc': 0.9, 'test/precision': 0.8913043478260869, 'test/epoch_loss': 0.24115624560250176, 'train/batch_loss': 0.04231283441185951}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 2, 'batch_size': 64, 'learning_rate': 0.0003}",swift-sweep-12
+88,"{'_step': 2059, '_wandb': {'runtime': 393}, '_runtime': 397.1281135082245, '_timestamp': 1678789464.8040044, 'epoch': 9, 'test/recall': 0.8333333333333334, 'test/f1-score': 0.7894736842105262, 'test/epoch_acc': 0.8222222222222223, 'test/precision': 0.75, 'test/epoch_loss': 0.5769641452365452, 'train/epoch_acc': 0.757985257985258, 'train/batch_loss': 0.6127220392227173, 'train/epoch_loss': 0.5840219159676929}","{'eps': 0.1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 4, 'learning_rate': 0.0001}",rosy-sweep-11
+89,"{'_wandb': {'runtime': 352}, '_timestamp': 1678789057.5684297, 'test/f1-score': 0.8842105263157894, 'test/epoch_acc': 0.8777777777777778, 'train/epoch_acc': 0.9938574938574938, 'train/batch_loss': 0.11590295284986496, 'train/epoch_loss': 0.06967324825777176, '_step': 149, '_runtime': 355.46944642066956, 'test/recall': 0.8076923076923077, 'test/precision': 0.9767441860465116, 'test/epoch_loss': 0.2696530275874668, 'epoch': 9}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 7, 'batch_size': 64, 'learning_rate': 0.003}",deft-sweep-10
+90,"{'epoch': 9, '_wandb': {'runtime': 340}, '_runtime': 342.3234579563141, 'test/recall': 0.9069767441860463, 'test/f1-score': 0.7959183673469388, 'test/precision': 0.7090909090909091, 'test/epoch_loss': 0.6248881856600443, '_step': 279, 'train/batch_loss': 0.5820533037185669, 'train/epoch_acc': 0.7014742014742015, 'test/epoch_acc': 0.7777777777777778, 'train/epoch_loss': 0.6400203514450599, '_timestamp': 1678788683.006292}","{'eps': 0.1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.99, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 32, 'learning_rate': 0.0001}",atomic-sweep-9
+91,"{'_step': 1039, '_wandb': {'runtime': 351}, '_timestamp': 1678788328.1196988, 'test/f1-score': 0.693069306930693, 'test/epoch_loss': 0.6175267219543457, 'train/batch_loss': 0.3377891480922699, 'epoch': 9, '_runtime': 353.4816448688507, 'test/recall': 0.7954545454545454, 'test/epoch_acc': 0.6555555555555556, 'test/precision': 0.6140350877192983, 'train/epoch_acc': 0.7432432432432432, 'train/epoch_loss': 0.5329857344855841}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 7, 'batch_size': 8, 'learning_rate': 0.1}",cosmic-sweep-8
+92,"{'test/epoch_acc': 0.6666666666666667, 'test/epoch_loss': 0.6419186863634322, 'train/epoch_acc': 0.7186732186732187, 'train/batch_loss': 0.17200787365436554, 'epoch': 9, '_runtime': 392.4064960479736, '_timestamp': 1678787961.3400052, 'test/recall': 0.8536585365853658, 'train/epoch_loss': 0.5631518808058498, '_step': 2059, '_wandb': {'runtime': 390}, 'test/f1-score': 0.6999999999999998, 'test/precision': 0.5932203389830508}","{'eps': 1e-08, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.99, 'optimizer': 'adam', 'step_size': 7, 'batch_size': 4, 'learning_rate': 0.01}",lunar-sweep-7
+93,"{'_runtime': 345.9260220527649, 'test/recall': 0.8888888888888888, 'test/epoch_acc': 0.9, 'test/epoch_loss': 0.24278527200222016, 'train/epoch_acc': 0.9975429975429976, 'train/epoch_loss': 0.03237721893286529, 'epoch': 9, '_wandb': {'runtime': 343}, 'test/f1-score': 0.8988764044943819, 'test/precision': 0.9090909090909092, 'train/batch_loss': 0.04353119805455208, '_step': 529, '_timestamp': 1678787557.992564}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.5, 'optimizer': 'sgd', 'step_size': 2, 'batch_size': 16, 'learning_rate': 0.01}",zany-sweep-6
+94,"{'test/epoch_acc': 0.9111111111111112, 'test/epoch_loss': 0.32114719019995797, 'train/batch_loss': 0.21811823546886444, '_step': 529, 'epoch': 9, '_wandb': {'runtime': 344}, '_runtime': 346.5414688587189, '_timestamp': 1678787192.9954038, 'test/recall': 0.8571428571428571, 'test/f1-score': 0.9130434782608696, 'test/precision': 0.9767441860465116, 'train/epoch_acc': 0.9336609336609336, 'train/epoch_loss': 0.2347587838000103}","{'eps': 0.1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.9, 'optimizer': 'sgd', 'step_size': 3, 'batch_size': 16, 'learning_rate': 0.001}",absurd-sweep-5
+95,"{'train/epoch_loss': 0.02646600444977348, '_timestamp': 1678786835.7254088, 'test/precision': 0.9166666666666666, 'test/epoch_loss': 0.22436124781767527, 'train/epoch_acc': 1, 'test/recall': 0.8461538461538461, 'test/f1-score': 0.8799999999999999, 'test/epoch_acc': 0.9, 'train/batch_loss': 0.06225413456559181, '_step': 279, 'epoch': 9, '_wandb': {'runtime': 344}, '_runtime': 345.9469966888428}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 32, 'learning_rate': 0.003}",radiant-sweep-4
+96,"{'test/f1-score': 0.8045977011494252, 'test/precision': 0.7446808510638298, 'train/epoch_acc': 0.8341523341523341, 'epoch': 9, '_wandb': {'runtime': 353}, 'test/recall': 0.875, 'test/epoch_acc': 0.8111111111111111, 'test/epoch_loss': 0.4459853092829386, 'train/batch_loss': 0.5456343293190002, 'train/epoch_loss': 0.45506354690476775, '_step': 1039, '_runtime': 355.012455701828, '_timestamp': 1678786479.0865147}","{'eps': 0.1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.99, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 8, 'learning_rate': 0.0003}",sandy-sweep-3
+97,"{'test/epoch_loss': 0.31915653232071134, 'train/epoch_acc': 0.9926289926289926, 'train/epoch_loss': 0.045762457081668206, '_wandb': {'runtime': 342}, '_runtime': 344.01046657562256, 'test/recall': 0.7894736842105263, 'test/f1-score': 0.8450704225352113, 'test/precision': 0.9090909090909092, '_step': 529, 'epoch': 9, '_timestamp': 1678786112.108075, 'test/epoch_acc': 0.8777777777777778, 'train/batch_loss': 0.026765840128064156}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.5, 'optimizer': 'sgd', 'step_size': 2, 'batch_size': 16, 'learning_rate': 0.01}",pretty-sweep-2
+98,"{'_runtime': 359.66486382484436, 'test/f1-score': 0.379746835443038, 'test/precision': 0.42857142857142855, 'test/epoch_loss': 0.7006691349877252, 'train/batch_loss': 0.7150550484657288, '_step': 149, 'epoch': 9, '_wandb': {'runtime': 357}, '_timestamp': 1678785758.376562, 'test/recall': 0.3409090909090909, 'test/epoch_acc': 0.45555555555555555, 'train/epoch_acc': 0.4815724815724816, 'train/epoch_loss': 0.7011552195291262}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.99, 'optimizer': 'adam', 'step_size': 5, 'batch_size': 64, 'learning_rate': 0.0003}",rose-sweep-1
+99,"{'_timestamp': 1678785370.5563953, 'test/recall': 0.9090909090909092, 'train/epoch_acc': 0.995085995085995, 'train/epoch_loss': 0.023103852647056927, '_step': 74, '_runtime': 180.05384421348572, 'test/f1-score': 0.8791208791208791, 'test/epoch_acc': 0.8777777777777778, 'test/precision': 0.851063829787234, 'test/epoch_loss': 0.5091631063156657, 'train/batch_loss': 0.0016211483161896467, 'epoch': 4, '_wandb': {'runtime': 181}}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.5, 'optimizer': 'sgd', 'step_size': 3, 'batch_size': 64, 'learning_rate': 0.1}",cosmic-sweep-2
+100,"{'test/f1-score': 0.9166666666666666, 'test/epoch_acc': 0.9111111111111112, 'test/precision': 0.9166666666666666, 'test/epoch_loss': 0.2461573594146305, 'train/epoch_acc': 0.9828009828009828, 'train/batch_loss': 0.0724378228187561, '_step': 279, 'test/recall': 0.9166666666666666, '_runtime': 347.11417746543884, '_timestamp': 1678743707.9633043, 'train/epoch_loss': 0.11044558714297244, 'epoch': 9, '_wandb': {'runtime': 344}}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.9, 'optimizer': 'sgd', 'step_size': 3, 'batch_size': 32, 'learning_rate': 0.003}",ethereal-sweep-14
+101,"{'_timestamp': 1678743349.8008895, 'test/recall': 0.9130434782608696, 'test/f1-score': 0.9333333333333332, 'test/epoch_acc': 0.9333333333333332, 'test/precision': 0.9545454545454546, 'test/epoch_loss': 0.16449517243438297, '_step': 149, '_runtime': 349.69085454940796, 'train/epoch_loss': 0.043383844352398226, 'train/epoch_acc': 1, 'train/batch_loss': 0.05796322599053383, 'epoch': 9, '_wandb': {'runtime': 346}}","{'eps': 1e-08, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 7, 'batch_size': 64, 'learning_rate': 0.003}",northern-sweep-13
+102,"{'epoch': 9, 'test/precision': 0.723404255319149, 'train/epoch_loss': 0.40511614706651, '_step': 2059, '_wandb': {'runtime': 559}, '_runtime': 560.5539684295654, '_timestamp': 1678743376.8770983, 'test/recall': 0.85, 'test/f1-score': 0.7816091954022989, 'test/epoch_acc': 0.788888888888889, 'test/epoch_loss': 0.5102662573258082, 'train/epoch_acc': 0.8255528255528255, 'train/batch_loss': 0.42048144340515137}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 5, 'batch_size': 4, 'learning_rate': 0.001}",faithful-sweep-12
+103,"{'epoch': 9, '_wandb': {'runtime': 355}, '_timestamp': 1678742986.9751594, 'test/epoch_loss': 0.3378064884079827, 'train/epoch_acc': 0.8955773955773956, '_step': 1039, '_runtime': 358.3485324382782, 'test/recall': 0.7777777777777778, 'test/f1-score': 0.8536585365853658, 'test/epoch_acc': 0.8666666666666667, 'test/precision': 0.945945945945946, 'train/batch_loss': 0.5923706889152527, 'train/epoch_loss': 0.27216847456936755}","{'eps': 1e-08, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 8, 'learning_rate': 0.0003}",zany-sweep-12
+104,"{'train/epoch_acc': 0.7481572481572482, 'train/epoch_loss': 0.613342459283824, 'epoch': 9, '_wandb': {'runtime': 358}, '_runtime': 362.78373169898987, 'test/precision': 0.6226415094339622, 'test/epoch_loss': 0.615033131175571, 'train/batch_loss': 0.6421169638633728, '_step': 1039, '_timestamp': 1678742619.1453717, 'test/recall': 0.9166666666666666, 'test/f1-score': 0.7415730337078651, 'test/epoch_acc': 0.7444444444444445}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.9, 'optimizer': 'sgd', 'step_size': 2, 'batch_size': 8, 'learning_rate': 0.0001}",ruby-sweep-11
+105,"{'_timestamp': 1678742643.2100165, 'test/f1-score': 0.875, '_step': 2059, '_wandb': {'runtime': 531}, 'test/recall': 0.8076923076923077, 'test/epoch_acc': 0.8666666666666667, 'test/precision': 0.9545454545454546, 'test/epoch_loss': 0.3795760815549228, 'train/epoch_acc': 0.9656019656019657, 'train/batch_loss': 0.07699991017580032, 'epoch': 9, '_runtime': 531.6082515716553, 'train/epoch_loss': 0.09796744051757808}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 4, 'learning_rate': 0.001}",fallen-sweep-10
+106,"{'_step': 1039, 'epoch': 9, '_wandb': {'runtime': 359}, '_runtime': 361.6978232860565, 'train/batch_loss': 0.1150113120675087, 'train/epoch_loss': 0.24495647845821825, '_timestamp': 1678742242.6362762, 'test/recall': 0.8076923076923077, 'test/f1-score': 0.875, 'test/epoch_acc': 0.8666666666666667, 'test/precision': 0.9545454545454546, 'test/epoch_loss': 0.2956610471010208, 'train/epoch_acc': 0.9103194103194104}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 7, 'batch_size': 8, 'learning_rate': 0.003}",rare-sweep-10
+107,"{'train/epoch_acc': 0.8869778869778869, 'train/batch_loss': 0.14859537780284882, 'train/epoch_loss': 0.310643073711407, 'epoch': 9, '_timestamp': 1678742103.7627492, 'test/recall': 0.7906976744186046, 'test/epoch_acc': 0.888888888888889, 'test/epoch_loss': 0.26282389760017394, '_step': 1039, '_wandb': {'runtime': 471}, '_runtime': 471.6707801818848, 'test/f1-score': 0.8717948717948717, 'test/precision': 0.9714285714285714}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 8, 'learning_rate': 0.003}",major-sweep-9
+108,"{'train/epoch_loss': 0.6766868150204932, '_step': 279, 'epoch': 9, '_wandb': {'runtime': 341}, '_timestamp': 1678741869.828495, 'test/epoch_loss': 0.6676742302046882, 'train/epoch_acc': 0.5921375921375921, 'train/batch_loss': 0.6228023767471313, '_runtime': 344.49258494377136, 'test/recall': 0.6976744186046512, 'test/f1-score': 0.6451612903225806, 'test/epoch_acc': 0.6333333333333333, 'test/precision': 0.6}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.5, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 32, 'learning_rate': 0.0001}",spring-sweep-9
+109,"{'train/epoch_acc': 0.9987714987714988, 'train/batch_loss': 0.0022799931466579437, '_step': 1039, 'test/recall': 0.9318181818181818, 'test/f1-score': 0.9213483146067416, '_timestamp': 1678741623.0662856, 'test/epoch_acc': 0.9222222222222224, 'test/precision': 0.9111111111111112, 'test/epoch_loss': 0.16872049139605627, 'train/epoch_loss': 0.02303326028314504, 'epoch': 9, '_wandb': {'runtime': 451}, '_runtime': 452.4322986602783}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 8, 'learning_rate': 0.003}",elated-sweep-8
+110,"{'test/recall': 0.9318181818181818, 'test/epoch_acc': 0.9555555555555556, 'test/epoch_loss': 0.2148759490913815, 'train/epoch_loss': 0.1359616077759049, 'epoch': 9, '_wandb': {'runtime': 342}, '_runtime': 345.3405177593231, 'test/precision': 0.9761904761904762, 'train/epoch_acc': 0.9606879606879608, 'train/batch_loss': 0.11643347889184952, '_step': 149, '_timestamp': 1678741511.9070578, 'test/f1-score': 0.9534883720930232}","{'eps': 0.1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 5, 'batch_size': 64, 'learning_rate': 0.003}",hardy-sweep-8
+111,"{'test/recall': 0.8048780487804879, 'test/epoch_loss': 0.2181672462158733, 'train/epoch_acc': 1, 'train/epoch_loss': 0.008645273717600824, '_wandb': {'runtime': 342}, '_runtime': 345.1732180118561, '_timestamp': 1678741156.130327, 'test/f1-score': 0.868421052631579, 'test/epoch_acc': 0.888888888888889, 'test/precision': 0.9428571428571428, 'train/batch_loss': 0.042314428836107254, '_step': 279, 'epoch': 9}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 32, 'learning_rate': 0.1}",sweepy-sweep-7
+112,"{'test/recall': 0.6341463414634146, 'test/epoch_acc': 0.7777777777777778, 'train/epoch_acc': 0.8292383292383292, 'train/batch_loss': 0.3791900873184204, 'epoch': 9, '_wandb': {'runtime': 453}, '_runtime': 454.0593776702881, '_timestamp': 1678741159.4683807, 'test/f1-score': 0.7222222222222222, 'test/precision': 0.8387096774193549, 'test/epoch_loss': 0.4768455002042982, 'train/epoch_loss': 0.45283343838825274, '_step': 1039}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.5, 'optimizer': 'sgd', 'step_size': 7, 'batch_size': 8, 'learning_rate': 0.0001}",glorious-sweep-7
+113,"{'_runtime': 348.53755164146423, '_timestamp': 1678740798.1400597, 'test/recall': 0.9333333333333332, 'test/f1-score': 0.9333333333333332, 'test/epoch_acc': 0.9333333333333332, 'test/precision': 0.9333333333333332, 'test/epoch_loss': 0.1931780371401045, '_wandb': {'runtime': 346}, 'train/epoch_loss': 0.0030514685945077376, 'train/epoch_acc': 1, 'epoch': 9, 'train/batch_loss': 0.001889266073703766, '_step': 149}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 64, 'learning_rate': 0.01}",rural-sweep-6
+114,"{'train/epoch_acc': 0.984029484029484, 'train/batch_loss': 0.1385842263698578, 'train/epoch_loss': 0.07075482415817952, '_step': 2059, '_timestamp': 1678740696.0305526, 'test/recall': 0.8666666666666667, 'test/f1-score': 0.896551724137931, 'test/epoch_loss': 0.22745563416845269, 'epoch': 9, '_wandb': {'runtime': 560}, '_runtime': 560.7404127120972, 'test/epoch_acc': 0.9, 'test/precision': 0.9285714285714286}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.9, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 4, 'learning_rate': 0.01}",smart-sweep-6
+115,"{'test/epoch_acc': 0.8111111111111111, 'test/epoch_loss': 0.507676590151257, '_runtime': 345.5716743469238, 'test/f1-score': 0.8172043010752688, '_wandb': {'runtime': 342}, '_timestamp': 1678740438.4959724, 'test/recall': 0.7755102040816326, 'test/precision': 0.8636363636363636, 'train/epoch_acc': 0.7616707616707616, 'train/batch_loss': 0.44296249747276306, '_step': 529, 'epoch': 9, 'train/epoch_loss': 0.5191410552225183}","{'eps': 0.1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 16, 'learning_rate': 0.1}",giddy-sweep-5
+116,"{'_step': 529, '_wandb': {'runtime': 342}, '_runtime': 345.28623247146606, '_timestamp': 1678740073.5443084, 'test/recall': 0.6666666666666666, 'test/precision': 0.7027027027027027, 'test/epoch_loss': 0.6657861550649007, 'epoch': 9, 'test/f1-score': 0.6842105263157895, 'test/epoch_acc': 0.7333333333333334, 'train/epoch_acc': 0.8538083538083537, 'train/batch_loss': 0.4066888689994812, 'train/epoch_loss': 0.32492415251837314}","{'eps': 1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 2, 'batch_size': 16, 'learning_rate': 0.1}",lilac-sweep-4
+117,"{'_timestamp': 1678740126.212114, 'test/f1-score': 0.8913043478260869, 'test/epoch_loss': 0.2600655794143677, 'train/epoch_acc': 0.9803439803439804, '_step': 1039, 'epoch': 9, '_runtime': 454.98564982414246, 'test/precision': 0.9534883720930232, 'train/batch_loss': 0.01167443674057722, 'train/epoch_loss': 0.08152788232426166, '_wandb': {'runtime': 454}, 'test/recall': 0.8367346938775511, 'test/epoch_acc': 0.888888888888889}","{'eps': 1e-08, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 3, 'batch_size': 8, 'learning_rate': 0.001}",hearty-sweep-5
+118,"{'epoch': 9, '_wandb': {'runtime': 354}, '_timestamp': 1678739717.8250418, 'test/f1-score': 0.7865168539325842, 'test/epoch_acc': 0.788888888888889, 'test/epoch_loss': 0.4899995631641812, 'train/epoch_acc': 0.8144963144963144, '_step': 1039, 'train/epoch_loss': 0.5079173609724209, 'test/recall': 0.875, 'test/precision': 0.7142857142857143, 'train/batch_loss': 0.6180618405342102, '_runtime': 356.9382667541504}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 8, 'learning_rate': 0.0001}",silvery-sweep-3
+119,"{'_runtime': 454.2519624233246, 'test/recall': 0.8205128205128205, 'epoch': 9, '_wandb': {'runtime': 453}, 'test/f1-score': 0.8648648648648648, 'test/epoch_acc': 0.888888888888889, 'test/precision': 0.9142857142857144, 'test/epoch_loss': 0.3028925802972582, 'train/epoch_acc': 0.8968058968058967, 'train/batch_loss': 0.2711101472377777, '_step': 1039, '_timestamp': 1678739662.5458224, 'train/epoch_loss': 0.28549219298128414}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.99, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 8, 'learning_rate': 0.0003}",dulcet-sweep-4
+120,"{'train/epoch_loss': 0.6479796424544707, '_step': 529, '_wandb': {'runtime': 341}, '_runtime': 343.88807487487793, 'test/recall': 0.7894736842105263, 'test/precision': 0.5454545454545454, 'test/epoch_loss': 0.6651701913939582, 'epoch': 9, '_timestamp': 1678739351.1315958, 'test/f1-score': 0.6451612903225806, 'test/epoch_acc': 0.6333333333333333, 'train/epoch_acc': 0.6928746928746928, 'train/batch_loss': 0.6685948967933655}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.999, 'optimizer': 'adam', 'step_size': 2, 'batch_size': 16, 'learning_rate': 0.001}",glamorous-sweep-2
+121,"{'test/precision': 0.6730769230769231, 'train/epoch_acc': 0.7542997542997543, 'train/batch_loss': 0.6510805487632751, 'train/epoch_loss': 0.6267796501480684, '_step': 1039, '_runtime': 469.65283608436584, 'test/f1-score': 0.7608695652173914, 'test/recall': 0.875, 'test/epoch_acc': 0.7555555555555555, 'test/epoch_loss': 0.6144020875295003, 'epoch': 9, '_wandb': {'runtime': 469}, '_timestamp': 1678739200.083605}","{'eps': 0.1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.5, 'optimizer': 'adam', 'step_size': 2, 'batch_size': 8, 'learning_rate': 0.0001}",hopeful-sweep-3
+122,"{'_timestamp': 1678738994.027642, 'test/recall': 0.8409090909090909, 'test/f1-score': 0.8409090909090909, 'test/epoch_acc': 0.8444444444444444, '_step': 279, 'epoch': 9, '_wandb': {'runtime': 353}, '_runtime': 357.5890119075775, 'test/epoch_loss': 0.3028163850307465, 'train/epoch_acc': 0.9975429975429976, 'test/precision': 0.8409090909090909, 'train/batch_loss': 0.0980801358819008, 'train/epoch_loss': 0.03763626415181805}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.9, 'optimizer': 'sgd', 'step_size': 5, 'batch_size': 32, 'learning_rate': 0.003}",lunar-sweep-1
+123,"{'test/recall': 0.8947368421052632, 'test/f1-score': 0.7157894736842105, '_wandb': {'runtime': 529}, '_timestamp': 1678738720.9443874, '_runtime': 529.6096863746643, 'test/epoch_acc': 0.7000000000000001, 'test/precision': 0.5964912280701754, 'test/epoch_loss': 0.5541173484590318, 'train/epoch_acc': 0.6658476658476659, 'train/batch_loss': 0.7896618843078613, '_step': 2059, 'epoch': 9, 'train/epoch_loss': 0.618659178367118}","{'eps': 1e-08, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.9, 'optimizer': 'sgd', 'step_size': 2, 'batch_size': 4, 'learning_rate': 0.1}",stoic-sweep-2
+124,"{'_runtime': 355.4184715747833, 'test/epoch_acc': 0.8222222222222223, 'test/precision': 0.8928571428571429, 'test/epoch_loss': 0.4269479903909895, 'epoch': 9, '_wandb': {'runtime': 353}, '_timestamp': 1678738469.1834886, 'test/recall': 0.6578947368421053, 'test/f1-score': 0.7575757575757577, 'train/epoch_acc': 0.995085995085995, 'train/batch_loss': 0.0014543599681928754, 'train/epoch_loss': 0.016353931551580648, '_step': 529}","{'eps': 1e-08, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.5, 'optimizer': 'adam', 'step_size': 2, 'batch_size': 16, 'learning_rate': 0.0001}",dark-sweep-2
+125,"{'_step': 1039, '_runtime': 384.5172441005707, 'test/recall': 0.8181818181818182, 'test/epoch_acc': 0.8555555555555556, 'test/precision': 0.8780487804878049, 'test/epoch_loss': 0.40116495291392007, 'train/epoch_acc': 0.8673218673218673, 'epoch': 9, '_wandb': {'runtime': 381}, '_timestamp': 1678738101.018471, 'test/f1-score': 0.8470588235294119, 'train/batch_loss': 0.31195682287216187, 'train/epoch_loss': 0.3623260387038716}","{'eps': 0.1, 'gamma': 0.5, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.5, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 8, 'learning_rate': 0.0003}",trim-sweep-1
+126,"{'epoch': 9, '_wandb': {'runtime': 560}, '_runtime': 560.7235152721405, 'test/recall': 0.9090909090909092, 'test/f1-score': 0.8602150537634408, 'train/epoch_loss': 0.6107166709712448, '_step': 2059, '_timestamp': 1678738182.1088202, 'test/epoch_acc': 0.8555555555555556, 'test/precision': 0.8163265306122449, 'test/epoch_loss': 0.6165981186760796, 'train/epoch_acc': 0.7567567567567567, 'train/batch_loss': 0.6653294563293457}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.9, 'beta_two': 0.5, 'optimizer': 'adam', 'step_size': 2, 'batch_size': 4, 'learning_rate': 0.001}",sparkling-sweep-1
+127,"{'test/epoch_loss': 0.6796493821673923, 'train/epoch_acc': 0.5515970515970516, 'train/batch_loss': 0.6759337782859802, 'epoch': 1, '_wandb': {'runtime': 118}, '_runtime': 122.13349413871764, 'test/recall': 0.6818181818181818, 'test/precision': 0.6382978723404256, '_step': 555, '_timestamp': 1678737059.0375042, 'test/f1-score': 0.6593406593406593, 'test/epoch_acc': 0.6555555555555556, 'train/epoch_loss': 0.6851893525744539}","{'eps': 1, 'gamma': 0.1, 'epochs': 10, 'beta_one': 0.99, 'beta_two': 0.5, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 4, 'learning_rate': 0.0003}",serene-sweep-1
+128,"{'_runtime': 456.3002746105194, 'train/epoch_acc': 0.9914004914004914, 'train/epoch_loss': 0.032788554922144414, 'test/epoch_loss': 0.45068282733360926, 'train/batch_loss': 0.003167948452755809, 'test/f1-score': 0.8888888888888888, 'test/epoch_acc': 0.8777777777777778, 'test/batch_loss': 0.1311825066804886, 'test/precision': 0.9361702127659576, 'epoch': 9, '_wandb': {'runtime': 455}, 'test/recall': 0.8461538461538461, '_step': 1159, '_timestamp': 1678734250.8076646}","{'gamma': 0.5, 'epochs': 10, 'optimizer': 'sgd', 'step_size': 2, 'batch_size': 8, 'learning_rate': 0.003}",super-sweep-10
+129,"{'test/epoch_loss': 0.5302444166607327, '_wandb': {'runtime': 563}, '_runtime': 564.230875492096, '_timestamp': 1678733784.6976814, 'test/precision': 0.673469387755102, 'train/epoch_acc': 0.687960687960688, '_step': 2289, 'epoch': 9, 'test/epoch_acc': 0.7111111111111111, 'train/epoch_loss': 0.5984233345387902, 'test/batch_loss': 0.9658783674240112, 'train/batch_loss': 0.3260266184806824, 'test/recall': 0.7674418604651163, 'test/f1-score': 0.7173913043478259}","{'gamma': 0.1, 'epochs': 10, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 4, 'learning_rate': 0.01}",distinctive-sweep-9
+130,"{'test/epoch_loss': 0.17092165086004468, '_step': 2289, '_wandb': {'runtime': 527}, '_timestamp': 1678733210.1129615, 'test/batch_loss': 0.1419784128665924, 'train/epoch_acc': 0.9496314496314496, 'epoch': 9, '_runtime': 527.6160025596619, 'test/recall': 0.8636363636363636, 'test/precision': 1, 'train/batch_loss': 0.007875862531363964, 'test/f1-score': 0.9268292682926828, 'test/epoch_acc': 0.9333333333333332, 'train/epoch_loss': 0.1743801347293527}","{'gamma': 0.5, 'epochs': 10, 'optimizer': 'sgd', 'step_size': 7, 'batch_size': 4, 'learning_rate': 0.0003}",winter-sweep-8
+131,"{'epoch': 9, '_runtime': 453.52900218963623, '_timestamp': 1678732673.1225052, 'train/epoch_loss': 0.07730489082323246, 'test/epoch_loss': 0.21558621691332924, 'train/batch_loss': 0.04383014515042305, '_step': 1159, 'test/recall': 0.8292682926829268, 'test/f1-score': 0.9066666666666668, 'train/epoch_acc': 0.9791154791154792, '_wandb': {'runtime': 452}, 'test/epoch_acc': 0.9222222222222224, 'test/precision': 1, 'test/batch_loss': 0.27116066217422485}","{'gamma': 0.5, 'epochs': 10, 'optimizer': 'sgd', 'step_size': 3, 'batch_size': 8, 'learning_rate': 0.001}",stilted-sweep-7
+132,"{'_timestamp': 1678732212.5530572, 'test/recall': 0.7555555555555555, 'test/precision': 0.6538461538461539, '_wandb': {'runtime': 561}, '_runtime': 561.7993631362915, 'test/epoch_loss': 0.6190193812052409, '_step': 2289, 'test/epoch_acc': 0.6777777777777778, 'test/f1-score': 0.7010309278350516, 'test/batch_loss': 0.4716488718986511, 'train/epoch_acc': 0.7272727272727273, 'train/batch_loss': 0.48304444551467896, 'train/epoch_loss': 0.5549268187263967, 'epoch': 9}","{'gamma': 0.5, 'epochs': 10, 'optimizer': 'adam', 'step_size': 3, 'batch_size': 4, 'learning_rate': 0.01}",summer-sweep-6
+133,"{'epoch': 9, '_wandb': {'runtime': 453}, 'test/batch_loss': 0.5068956017494202, '_step': 1159, '_runtime': 454.3645238876343, 'test/f1-score': 0.813953488372093, 'test/epoch_acc': 0.8222222222222223, 'train/batch_loss': 0.4434223175048828, 'train/epoch_loss': 0.5186349417126442, 'test/recall': 0.7142857142857143, 'train/epoch_acc': 0.8218673218673218, '_timestamp': 1678731639.156168, 'test/precision': 0.945945945945946, 'test/epoch_loss': 0.4936415394147237}","{'gamma': 0.5, 'epochs': 10, 'optimizer': 'sgd', 'step_size': 3, 'batch_size': 8, 'learning_rate': 0.0001}",different-sweep-5
+134,"{'_runtime': 454.26038885116577, 'test/f1-score': 0.8354430379746836, 'test/batch_loss': 0.5159374475479126, 'test/epoch_loss': 0.5482642173767089, 'epoch': 9, '_wandb': {'runtime': 453}, 'test/epoch_acc': 0.8555555555555556, 'train/epoch_acc': 0.812039312039312, 'train/epoch_loss': 0.5429200196149016, '_step': 1159, '_timestamp': 1678731176.111379, 'test/recall': 0.8461538461538461, 'test/precision': 0.825, 'train/batch_loss': 0.5655931830406189}","{'gamma': 0.5, 'epochs': 10, 'optimizer': 'sgd', 'step_size': 2, 'batch_size': 8, 'learning_rate': 0.0001}",wise-sweep-4
+135,"{'_runtime': 528.9760706424713, 'test/f1-score': 0.8493150684931509, 'train/epoch_loss': 0.02060394324720534, 'epoch': 9, '_timestamp': 1678730714.7711067, 'test/batch_loss': 1.7588363885879517, 'train/batch_loss': 0.00470334617421031, '_wandb': {'runtime': 528}, 'test/recall': 0.775, 'test/epoch_acc': 0.8777777777777778, 'test/epoch_loss': 0.24194780117250048, '_step': 2289, 'train/epoch_acc': 0.9963144963144964, 'test/precision': 0.9393939393939394}","{'gamma': 0.5, 'epochs': 10, 'optimizer': 'sgd', 'step_size': 3, 'batch_size': 4, 'learning_rate': 0.003}",misty-sweep-3
+136,"{'epoch': 9, '_wandb': {'runtime': 454}, 'test/epoch_acc': 0.8111111111111111, 'test/precision': 0.8387096774193549, 'test/epoch_loss': 0.4792341656155056, '_step': 1159, 'test/recall': 0.6842105263157895, 'train/batch_loss': 0.5347514748573303, 'train/epoch_loss': 0.42904984072326735, 'train/epoch_acc': 0.8329238329238329, '_runtime': 455.41485929489136, '_timestamp': 1678730177.1362092, 'test/f1-score': 0.7536231884057972, 'test/batch_loss': 0.455120325088501}","{'gamma': 0.1, 'epochs': 10, 'optimizer': 'sgd', 'step_size': 3, 'batch_size': 8, 'learning_rate': 0.0003}",unique-sweep-2
+137,"{'_step': 2289, '_runtime': 528.4356484413147, '_timestamp': 1678729705.2001765, 'test/batch_loss': 2.5320074558258057, 'test/epoch_loss': 0.5442472649919283, 'epoch': 9, 'test/recall': 0.8636363636363636, 'train/epoch_acc': 0.9901719901719902, 'test/epoch_acc': 0.888888888888889, '_wandb': {'runtime': 527}, 'test/f1-score': 0.8837209302325582, 'test/precision': 0.9047619047619048, 'train/batch_loss': 0.005740344058722258, 'train/epoch_loss': 0.024021292951151657}","{'gamma': 0.5, 'epochs': 10, 'optimizer': 'sgd', 'step_size': 7, 'batch_size': 4, 'learning_rate': 0.003}",polar-sweep-1
diff --git a/classification/classifier/hyp-metrics.ipynb b/classification/classifier/hyp-metrics.ipynb
index bc4c7e3..a7b3f83 100644
--- a/classification/classifier/hyp-metrics.ipynb
+++ b/classification/classifier/hyp-metrics.ipynb
@@ -2,7 +2,7 @@
"cells": [
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": 2,
"id": "747ddcf2",
"metadata": {},
"outputs": [
@@ -10,8 +10,6 @@
"name": "stderr",
"output_type": "stream",
"text": [
- "/home/zenon/.local/share/miniconda3/lib/python3.7/site-packages/requests/__init__.py:104: RequestsDependencyWarning: urllib3 (1.26.13) or chardet (5.1.0)/charset_normalizer (2.0.4) doesn't match a supported version!\n",
- " RequestsDependencyWarning)\n",
"\u001b[34m\u001b[1mwandb\u001b[0m: Currently logged in as: \u001b[33me1527193\u001b[0m (\u001b[33mflower-classification\u001b[0m). Use \u001b[1m`wandb login --relogin`\u001b[0m to force relogin\n"
]
}
@@ -28,7 +26,39 @@
"import torch\n",
"wandb.login()\n",
"\n",
- "from evaluation.helpers import set_size\n",
+ "def set_size(width, fraction=1, subplots=(1, 1)):\n",
+ " \"\"\"Set figure dimensions to avoid scaling in LaTeX.\n",
+ "\n",
+ " Parameters\n",
+ " ----------\n",
+ " width: float\n",
+ " Document textwidth or columnwidth in pts\n",
+ " fraction: float, optional\n",
+ " Fraction of the width which you wish the figure to occupy\n",
+ "\n",
+ " Returns\n",
+ " -------\n",
+ " fig_dim: tuple\n",
+ " Dimensions of figure in inches\n",
+ " \"\"\"\n",
+ " # Width of figure (in pts)\n",
+ " fig_width_pt = width * fraction\n",
+ "\n",
+ " # Convert from pt to inches\n",
+ " inches_per_pt = 1 / 72.27\n",
+ "\n",
+ " # Golden ratio to set aesthetic figure height\n",
+ " # https://disq.us/p/2940ij3\n",
+ " golden_ratio = (5**.5 - 1) / 2\n",
+ "\n",
+ " # Figure width in inches\n",
+ " fig_width_in = fig_width_pt * inches_per_pt\n",
+ " # Figure height in inches\n",
+ " fig_height_in = fig_width_in * golden_ratio * (subplots[0] / subplots[1])\n",
+ "\n",
+ " fig_dim = (fig_width_in, fig_height_in)\n",
+ "\n",
+ " return fig_dim\n",
"\n",
"torch.manual_seed(42)\n",
"np.random.seed(42)"
@@ -44,7 +74,7 @@
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": 3,
"id": "76cc2ca7",
"metadata": {},
"outputs": [],
@@ -90,7 +120,7 @@
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": 4,
"id": "353f9082",
"metadata": {},
"outputs": [
@@ -117,14 +147,14 @@
"
| \n",
" Unnamed: 0 | \n",
" name | \n",
- " test/epoch_acc | \n",
- " test/precision | \n",
- " test/epoch_loss | \n",
- " train/epoch_acc | \n",
" _step | \n",
- " epoch | \n",
" _timestamp | \n",
+ " test/recall | \n",
" test/f1-score | \n",
+ " test/epoch_acc | \n",
+ " test/epoch_loss | \n",
+ " train/epoch_loss | \n",
+ " epoch | \n",
" ... | \n",
" test/batch_loss | \n",
" eps | \n",
@@ -143,14 +173,14 @@
" 0 | \n",
" 0 | \n",
" fiery-sweep-26 | \n",
- " 0.733333 | \n",
- " 0.828571 | \n",
- " 0.566462 | \n",
- " 0.823096 | \n",
" 2059 | \n",
- " 9 | \n",
" 1.680693e+09 | \n",
+ " 0.617021 | \n",
" 0.707317 | \n",
+ " 0.733333 | \n",
+ " 0.566462 | \n",
+ " 0.424106 | \n",
+ " 9 | \n",
" ... | \n",
" NaN | \n",
" 1.000000e-01 | \n",
@@ -167,14 +197,14 @@
" 1 | \n",
" 1 | \n",
" radiant-sweep-25 | \n",
- " 0.722222 | \n",
- " 0.685185 | \n",
- " 0.645458 | \n",
- " 0.712531 | \n",
" 1039 | \n",
- " 9 | \n",
" 1.680693e+09 | \n",
+ " 0.822222 | \n",
" 0.747475 | \n",
+ " 0.722222 | \n",
+ " 0.645458 | \n",
+ " 0.64979 | \n",
+ " 9 | \n",
" ... | \n",
" NaN | \n",
" 1.000000e+00 | \n",
@@ -191,14 +221,14 @@
" 2 | \n",
" 2 | \n",
" blooming-sweep-24 | \n",
- " 0.888889 | \n",
- " 0.935484 | \n",
- " 0.348129 | \n",
- " 0.998771 | \n",
" 1039 | \n",
- " 9 | \n",
" 1.680692e+09 | \n",
+ " 0.783784 | \n",
" 0.852941 | \n",
+ " 0.888889 | \n",
+ " 0.348129 | \n",
+ " 0.016143 | \n",
+ " 9 | \n",
" ... | \n",
" NaN | \n",
" 1.000000e-08 | \n",
@@ -215,14 +245,14 @@
" 3 | \n",
" 3 | \n",
" visionary-sweep-23 | \n",
- " 0.800000 | \n",
- " 0.760870 | \n",
- " 0.555318 | \n",
- " 0.835381 | \n",
" 529 | \n",
- " 9 | \n",
" 1.680692e+09 | \n",
+ " 0.833333 | \n",
" 0.795455 | \n",
+ " 0.800000 | \n",
+ " 0.555318 | \n",
+ " 0.532423 | \n",
+ " 9 | \n",
" ... | \n",
" NaN | \n",
" 1.000000e+00 | \n",
@@ -239,14 +269,14 @@
" 4 | \n",
" 4 | \n",
" ancient-sweep-22 | \n",
- " 0.577778 | \n",
- " 0.589744 | \n",
- " 1.560271 | \n",
- " 0.557740 | \n",
" 410 | \n",
- " 1 | \n",
" 1.680692e+09 | \n",
+ " 0.884615 | \n",
" 0.707692 | \n",
+ " 0.577778 | \n",
+ " 1.560271 | \n",
+ " 0.75081 | \n",
+ " 1 | \n",
" ... | \n",
" NaN | \n",
" 1.000000e-08 | \n",
@@ -287,14 +317,14 @@
" 133 | \n",
" 133 | \n",
" different-sweep-5 | \n",
- " 0.822222 | \n",
- " 0.945946 | \n",
- " 0.493642 | \n",
- " 0.821867 | \n",
" 1159 | \n",
- " 9 | \n",
" 1.678732e+09 | \n",
+ " 0.714286 | \n",
" 0.813953 | \n",
+ " 0.822222 | \n",
+ " 0.493642 | \n",
+ " 0.518635 | \n",
+ " 9 | \n",
" ... | \n",
" 0.506896 | \n",
" NaN | \n",
@@ -311,14 +341,14 @@
" 134 | \n",
" 134 | \n",
" wise-sweep-4 | \n",
- " 0.855556 | \n",
- " 0.825000 | \n",
- " 0.548264 | \n",
- " 0.812039 | \n",
" 1159 | \n",
- " 9 | \n",
" 1.678731e+09 | \n",
+ " 0.846154 | \n",
" 0.835443 | \n",
+ " 0.855556 | \n",
+ " 0.548264 | \n",
+ " 0.54292 | \n",
+ " 9 | \n",
" ... | \n",
" 0.515937 | \n",
" NaN | \n",
@@ -335,14 +365,14 @@
" 135 | \n",
" 135 | \n",
" misty-sweep-3 | \n",
- " 0.877778 | \n",
- " 0.939394 | \n",
- " 0.241948 | \n",
- " 0.996314 | \n",
" 2289 | \n",
- " 9 | \n",
" 1.678731e+09 | \n",
+ " 0.775000 | \n",
" 0.849315 | \n",
+ " 0.877778 | \n",
+ " 0.241948 | \n",
+ " 0.020604 | \n",
+ " 9 | \n",
" ... | \n",
" 1.758836 | \n",
" NaN | \n",
@@ -359,14 +389,14 @@
" 136 | \n",
" 136 | \n",
" unique-sweep-2 | \n",
- " 0.811111 | \n",
- " 0.838710 | \n",
- " 0.479234 | \n",
- " 0.832924 | \n",
" 1159 | \n",
- " 9 | \n",
" 1.678730e+09 | \n",
+ " 0.684211 | \n",
" 0.753623 | \n",
+ " 0.811111 | \n",
+ " 0.479234 | \n",
+ " 0.42905 | \n",
+ " 9 | \n",
" ... | \n",
" 0.455120 | \n",
" NaN | \n",
@@ -383,14 +413,14 @@
" 137 | \n",
" 137 | \n",
" polar-sweep-1 | \n",
- " 0.888889 | \n",
- " 0.904762 | \n",
- " 0.544247 | \n",
- " 0.990172 | \n",
" 2289 | \n",
- " 9 | \n",
" 1.678730e+09 | \n",
+ " 0.863636 | \n",
" 0.883721 | \n",
+ " 0.888889 | \n",
+ " 0.544247 | \n",
+ " 0.024021 | \n",
+ " 9 | \n",
" ... | \n",
" 2.532007 | \n",
" NaN | \n",
@@ -409,62 +439,62 @@
""
],
"text/plain": [
- " Unnamed: 0 name test/epoch_acc test/precision \\\n",
- "0 0 fiery-sweep-26 0.733333 0.828571 \n",
- "1 1 radiant-sweep-25 0.722222 0.685185 \n",
- "2 2 blooming-sweep-24 0.888889 0.935484 \n",
- "3 3 visionary-sweep-23 0.800000 0.760870 \n",
- "4 4 ancient-sweep-22 0.577778 0.589744 \n",
- ".. ... ... ... ... \n",
- "133 133 different-sweep-5 0.822222 0.945946 \n",
- "134 134 wise-sweep-4 0.855556 0.825000 \n",
- "135 135 misty-sweep-3 0.877778 0.939394 \n",
- "136 136 unique-sweep-2 0.811111 0.838710 \n",
- "137 137 polar-sweep-1 0.888889 0.904762 \n",
+ " Unnamed: 0 name _step _timestamp test/recall \\\n",
+ "0 0 fiery-sweep-26 2059 1.680693e+09 0.617021 \n",
+ "1 1 radiant-sweep-25 1039 1.680693e+09 0.822222 \n",
+ "2 2 blooming-sweep-24 1039 1.680692e+09 0.783784 \n",
+ "3 3 visionary-sweep-23 529 1.680692e+09 0.833333 \n",
+ "4 4 ancient-sweep-22 410 1.680692e+09 0.884615 \n",
+ ".. ... ... ... ... ... \n",
+ "133 133 different-sweep-5 1159 1.678732e+09 0.714286 \n",
+ "134 134 wise-sweep-4 1159 1.678731e+09 0.846154 \n",
+ "135 135 misty-sweep-3 2289 1.678731e+09 0.775000 \n",
+ "136 136 unique-sweep-2 1159 1.678730e+09 0.684211 \n",
+ "137 137 polar-sweep-1 2289 1.678730e+09 0.863636 \n",
"\n",
- " test/epoch_loss train/epoch_acc _step epoch _timestamp \\\n",
- "0 0.566462 0.823096 2059 9 1.680693e+09 \n",
- "1 0.645458 0.712531 1039 9 1.680693e+09 \n",
- "2 0.348129 0.998771 1039 9 1.680692e+09 \n",
- "3 0.555318 0.835381 529 9 1.680692e+09 \n",
- "4 1.560271 0.557740 410 1 1.680692e+09 \n",
- ".. ... ... ... ... ... \n",
- "133 0.493642 0.821867 1159 9 1.678732e+09 \n",
- "134 0.548264 0.812039 1159 9 1.678731e+09 \n",
- "135 0.241948 0.996314 2289 9 1.678731e+09 \n",
- "136 0.479234 0.832924 1159 9 1.678730e+09 \n",
- "137 0.544247 0.990172 2289 9 1.678730e+09 \n",
+ " test/f1-score test/epoch_acc test/epoch_loss train/epoch_loss epoch \\\n",
+ "0 0.707317 0.733333 0.566462 0.424106 9 \n",
+ "1 0.747475 0.722222 0.645458 0.64979 9 \n",
+ "2 0.852941 0.888889 0.348129 0.016143 9 \n",
+ "3 0.795455 0.800000 0.555318 0.532423 9 \n",
+ "4 0.707692 0.577778 1.560271 0.75081 1 \n",
+ ".. ... ... ... ... ... \n",
+ "133 0.813953 0.822222 0.493642 0.518635 9 \n",
+ "134 0.835443 0.855556 0.548264 0.54292 9 \n",
+ "135 0.849315 0.877778 0.241948 0.020604 9 \n",
+ "136 0.753623 0.811111 0.479234 0.42905 9 \n",
+ "137 0.883721 0.888889 0.544247 0.024021 9 \n",
"\n",
- " test/f1-score ... test/batch_loss eps gamma epochs \\\n",
- "0 0.707317 ... NaN 1.000000e-01 0.1 10 \n",
- "1 0.747475 ... NaN 1.000000e+00 0.5 10 \n",
- "2 0.852941 ... NaN 1.000000e-08 0.5 10 \n",
- "3 0.795455 ... NaN 1.000000e+00 0.1 10 \n",
- "4 0.707692 ... NaN 1.000000e-08 0.5 10 \n",
- ".. ... ... ... ... ... ... \n",
- "133 0.813953 ... 0.506896 NaN 0.5 10 \n",
- "134 0.835443 ... 0.515937 NaN 0.5 10 \n",
- "135 0.849315 ... 1.758836 NaN 0.5 10 \n",
- "136 0.753623 ... 0.455120 NaN 0.1 10 \n",
- "137 0.883721 ... 2.532007 NaN 0.5 10 \n",
+ " ... test/batch_loss eps gamma epochs beta_one beta_two \\\n",
+ "0 ... NaN 1.000000e-01 0.1 10 0.99 0.900 \n",
+ "1 ... NaN 1.000000e+00 0.5 10 0.99 0.900 \n",
+ "2 ... NaN 1.000000e-08 0.5 10 0.90 0.999 \n",
+ "3 ... NaN 1.000000e+00 0.1 10 0.90 0.900 \n",
+ "4 ... NaN 1.000000e-08 0.5 10 0.90 0.990 \n",
+ ".. ... ... ... ... ... ... ... \n",
+ "133 ... 0.506896 NaN 0.5 10 NaN NaN \n",
+ "134 ... 0.515937 NaN 0.5 10 NaN NaN \n",
+ "135 ... 1.758836 NaN 0.5 10 NaN NaN \n",
+ "136 ... 0.455120 NaN 0.1 10 NaN NaN \n",
+ "137 ... 2.532007 NaN 0.5 10 NaN NaN \n",
"\n",
- " beta_one beta_two optimizer step_size batch_size learning_rate \n",
- "0 0.99 0.900 adam 3 4 0.0003 \n",
- "1 0.99 0.900 adam 2 8 0.0003 \n",
- "2 0.90 0.999 sgd 5 8 0.0030 \n",
- "3 0.90 0.900 sgd 2 16 0.0003 \n",
- "4 0.90 0.990 adam 7 4 0.0100 \n",
- ".. ... ... ... ... ... ... \n",
- "133 NaN NaN sgd 3 8 0.0001 \n",
- "134 NaN NaN sgd 2 8 0.0001 \n",
- "135 NaN NaN sgd 3 4 0.0030 \n",
- "136 NaN NaN sgd 3 8 0.0003 \n",
- "137 NaN NaN sgd 7 4 0.0030 \n",
+ " optimizer step_size batch_size learning_rate \n",
+ "0 adam 3 4 0.0003 \n",
+ "1 adam 2 8 0.0003 \n",
+ "2 sgd 5 8 0.0030 \n",
+ "3 sgd 2 16 0.0003 \n",
+ "4 adam 7 4 0.0100 \n",
+ ".. ... ... ... ... \n",
+ "133 sgd 3 8 0.0001 \n",
+ "134 sgd 2 8 0.0001 \n",
+ "135 sgd 3 4 0.0030 \n",
+ "136 sgd 3 8 0.0003 \n",
+ "137 sgd 7 4 0.0030 \n",
"\n",
"[138 rows x 25 columns]"
]
},
- "execution_count": 3,
+ "execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
@@ -481,7 +511,7 @@
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": 5,
"id": "4679b2f8",
"metadata": {
"scrolled": true
@@ -491,8 +521,8 @@
"name": "stderr",
"output_type": "stream",
"text": [
- "/home/zenon/.local/share/miniconda3/lib/python3.7/site-packages/ipykernel_launcher.py:1: FutureWarning: In a future version of pandas all arguments of Series.sort_values will be keyword-only\n",
- " \"\"\"Entry point for launching an IPython kernel.\n"
+ "/run/user/1000/ipykernel_39845/2346208349.py:1: FutureWarning: In a future version of pandas all arguments of Series.sort_values will be keyword-only.\n",
+ " df['learning_rate'].value_counts().sort_values(0)\n"
]
},
{
@@ -507,7 +537,7 @@
"Name: learning_rate, dtype: int64"
]
},
- "execution_count": 4,
+ "execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
@@ -518,7 +548,7 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": 21,
"id": "1b1a54fc",
"metadata": {},
"outputs": [],
@@ -526,22 +556,22 @@
"# Style the plots (with grid this time)\n",
"width = 418\n",
"sns.set_theme(style='whitegrid',\n",
- " rc={'text.usetex': True, 'font.family': 'serif', 'axes.labelsize': 10,\n",
- " 'font.size': 10, 'legend.fontsize': 8,\n",
- " 'xtick.labelsize': 8, 'ytick.labelsize': 8})\n",
+ " rc={'text.usetex': True, 'font.family': 'serif', 'axes.labelsize': 16,\n",
+ " 'font.size': 16, 'legend.fontsize': 11,\n",
+ " 'xtick.labelsize': 12, 'ytick.labelsize': 12})\n",
"\n",
"fig_save_dir = '../../thesis/graphics/'"
]
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": 22,
"id": "00efa25b",
"metadata": {},
"outputs": [
{
"data": {
- "image/png": "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\n",
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiYAAAFJCAYAAACvhOZUAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAABcgElEQVR4nO3deUBTd743/ncSwp6FsroE16oQXCu1xC62LqBdZmpb05m2M1pFZ9XeKd7n3mcqnfF27vzuQJ+n9s48nUK9dpbOmDrSZVqJtnYntLV1g4C7yAGVRSEnbCEk5/cHTUokGyQ5OZDP6x8l55ucD8dj8sl3+XxFHMdxIIQQQggRAHG4AyCEEEIIcaDEhBBCCCGCQYkJIYQQQgSDEhNCCCGECAYlJoQQQggRDEpMCCGEECIYlJgQQgghRDAoMSGEEEKIYESFOwAhO3bsGDiOg1QqDXcohBBCyJhltVohEomwcOFCn22px8QLjuMQ7MK4HMehv78/6K87VtH18A9dJ1d0PfxD14mMRijum5F8ngq6x4RlWVRWVkKv12PPnj1+Pae8vBxyudz5/MLCwlGf39FTMnfu3FG/xo16enpQX1+PmTNnIj4+PmivO1bR9fAPXSdXdD38Q9eJjEYo7puamhq/2wq2x8RoNKKyshIsy8JkMvn1nPLycgCAVquFVquFWq1GcXFxKMMkhBBCSBAJNjFRq9XQarVQqVR+P6esrAxardb5s0ajgU6nC0V4hBBCCAkBQQ/ljATDMGBZ1jmMM5TBYIBGoxnV63Ich56enkDDc+rt7XX5M9LR9fAPXSdXdD38Q9eJjEYo7huO4yASifxqO64SE3fkcjlYlh3161qtVtTX14/6+Z40NDQE/TXHMroe/qHr5Iquh3/oOpHRCPZ9Ex0d7Ve7cZOYeKJQKPyeo+KOVCrFzJkzgxZPb28vGhoaMHXqVMTFxQXtdccquh7+oevkiq6Hd13mLrz5j3dR9ekX6OnuhuaOJdA+thbKJGW4QyNjQCj+f507d87vtuM+MQkkKQEAkUgUktnscXFxNEt+CLoe/qHr5Iqux3BfVn+Nwh/8HKbOb3uKj3x+DGV/+BN+X16C5auWhS84MqYE8/+Xv8M4gIAnv46Up0myLMuOaAItIYSMVVevtGDjYz91SUocent68eMnf4FzZ86HITJC/DeuEhO5XO52rsloJ74SQshY8rc/7YPZ3OXxeL+lH3vKX+MxIkJGTvCJiaehGIZhnHVLHDZv3gyDweD8Wa/XuywfJoSQ8ew9/Ye+21T6bkNIOAk2MXEkHjqdDkajESUlJdDr9c7jBoNhWI2SwsJCsCwLvV4PvV6Pmpoa7Ny5k+/QCSEkLCyWfp9t+vt9tyEknAQ7+VWlUqGwsNBjSXlHddcbDW1fUFAQsvgIIURo1HPn4MK5i17bZKln8xQNIaMj2MSEEEJu9NUXR/HXV3WoN54Gx3G4/8HVeHz9o0i6SRnu0ATh8fVa/PONSq9tntjwKE/REDI6gh3KIYSQoXY+8194+L4f4M1/vIvT9edw5tR5PP/b32PF0gdQezL4RRDHoiWaxdi45QmPx7/z0L1Yff9KHiMiZOQoMSGECN7rf3sD//PyX9weu9Z+HRsf+yn6+iw8RyU8HMehre2ax+PXr3VgYGCAx4gIGTlKTAghgvc/Ze6TEoeWq6149y291zaR4MP3PsHbFQc8Hv/0IwPe/Me7PEZEyMhRYkIIEbTWlnacMp7x2e6TDw0+24x3f/vLP3y3+fM+HiIhZPQoMSGECJrdbvOrnc3mX7vx7MJZ7ytyAOC8H20ICSdKTAghgpaWnorJmZN8trsld0HogxG4RFmC7zaJtLcQETZKTEjYWK5fR9/lZsT09cJutYY7HCJQYrEYax+532sbqVSKhx79Dk8RCdfq+1f5bFNw3woeIiFk9KiOCeGdpaMD12tPYqBrcE8PBYCOzw2wZk6BcvYciMSULxNXl30MP1itVnRe64BcLuMpImFKT0vx2SYl+SYeIiFk9OgTgPCqnzWh7cgXzqTEyW5HV8NFdNTWhCcwIlgWSz8OHPoIAKBKvgkZSgWkEgnio6MxLS0V8rg4AMCeF3aHMUpheP2vvie2vqF7i4dICBk96jEhvGLPngXnZZJid3MTZNOmQyqL7G++5FtXLjLo6bNg0z3LcGfWnGHHuy0W/J93KnHu1LkwRCcs9XVnfbZpuNTMQySEjB4lJoQ3tv5+9La1+mzX3dwE5ZwsHiISPmtfH05WHAZz8jwGbDYMzG3ConX5kMbGhjs03sTHx2F5jtptUgIACTEx2LYmH5VnTvMcmfD0+bGJn83PVU6EhAslJoQ39v5+gON8trP1UwVPAGgwHIP+92/C0vdtpc7m8+04VnkUq356P6bfvjiM0fEndfIE3Ltoodc28rg43Ht7Hk8RCVdMtBSWfu8TycU0h4sIHN2hhDfi6GhAJPLZThITOb0BnnRcasaBXRXgbBwmZsgwa0YyZs1IxsQMGTg7h8oX38K1i0y4w+RFf1c3UmSJPtsp42gZrFyp8NkmIYGuExE2SkwIbyTR0YhLS/PZLmHSZB6iEbbqP72LhPhoZM1ORXpaIhISopGQEI30tERkzU5FYkI0Pv+T59Lj40l3V69f7a61doQ4kjHAj8TfZrPzEAgho0dDOYRXCVOmg226DKlU4va4LVYOaaLvb8fjXeuFFkzNVEIsHv5BIxaLMEWlxMVLvufrjAc2AB3mXiTJ4ry2u9rRzU9AAhYbN9jbKJVIcOusWejrG5xzEhsbg6/PnUWf1YooKb3tE/csnR3oamhAb1sbUmwDYAf6IZo2HXFp6bzGQXco4dWh1w5hz97X8PMn7sesqd9W8+zu7UPFewbUHWvC/3x4K6LjYsIYZfgp5TFukxIHsVgEpTwyrlF0bDRqLl7FnfOmeWzT129F3aUrPEYlTLm33QKFXYxHNXdgyqw0pE1UACIRrl1lcel0K97+6gtEZ/rutSSRp4tpdCnXIAZgvX4d7devQzZtGpRzsnmLhRITwhubdQDlu/+C2suXsLH4RcyZNhnTJqWj19KPL2pOo7evHyKI8Mm+97DiB/eFO9ywSpT5TjpkiZGRmHReM6HmwlWkJyVitip12PF+6wAqvziDa/3+DfmMZ48+dB+uJqUj+xaVy+Npk5RIm6REUloixLOmhic4IljWri50GGs9HjdfvIiYpGTEpfPTc0KJCeHNlQvNqL/67YTNUxebcOpik0sbDhz2696K+MTE7sfqJc6PNuNBX89gMb73vz4HU1cv1NMyEBctBcdxaO3swmc1DWjt7EasjKbMmU+cHZaUDDUzZyLOn7nMY0RkLOhqvARwHJir7dh36DMYjteDs3OYO2sqHi24E3OmT4b5UgMlJmT8udLYBJvd98S7tuvXeIhG2Fo6ujAlXemzTSRIS0vFzZOTMTFZjpxpGYiVxUIaLwVn4yCNicL9smy8U12P6dOSwx1q2Enhe88pWQK97RNXlo4OfPD5Sfz6pb+5fCk6/PkJHP78BJ58cCWefDift3joDiW8Sc+c4Fe75GRlaAMZA3r6fBfK8qfNeBAXF4s75k6D4qYEpE5PRXR8tPMYZ+dgbjPjfjEQQ/cN5EneJwgDgDLZ9w7EJLI0t7ThVy/9zWMv7P+88R7mzFBh3aoCXuKhvk/CG9Wsabh5wkSf7R55/LuhD0bgMpJ9l+TPSJbzEEn4RcVEIzYxGhOyJrgkJQAgEosgT5dj8pwJkCtoGwN/lgtHxgAgGYmX/v6uz6HhP+7T8xQNJSaERyKRCD//2XqIvbx5zps6Bfc8ci+PUQlTYrzvInMJEbJyyTYwgLQpKRBLPL9dJSYnoruvh8eohKm9zffw3nU/2pDI8uVRzxNfHS5c4m9uEiUmhFf3F34Pv/zRBiTEDP9QXTxzBl7RvQSxxH2Nk0giS/M9XyIxLTK2r2c7OpGQ5Hv4QSKlvoAPPz/rtYAaZ+dw8EPfH0IksvTdMCwcI4lGbFQMRPDdAxcKNMeE8EokEuHJX/0Lbtfk4p+6t9DRyUIsFiN38Xzcs+FhJGYMXw4aiSYumoULhz732mbSwtk8RRNerLkb0V5qujjY7JSY2CQSdHf3ITExblgdHI7j0GexoqufNvEjrhz7J6UnpCAjMQWxUYNfHPttVrR1X0ezuQV85iiUmBBecXY7jHvfxfUzl3DrlKnAlG8OWGw49sp+zP/hdyFXZYQzREEQcxbEymPRx/a5PR4rj4UI7o+NN9GxsbDb7F6HcgDAavG9ImW8K7j3Vsi/mWrDcRzstsFkTSwRQSQSIS4uGg88SJsdElcJcbHIiE1BeoJrT220RIpJ8nQkRsfjzPUG3uKhxITwquGDL3D9zCW3x7iBARx/9Q3c/m+FEEd42eze9mtIn50OtoWFRCpBbOLgnJO+rj7YrDbI0+Xou349zFHyIyFKgqvXuyFL9T651c7SrtRTMhJh6x6cQyISiSCJGv41d0oGTRImrtITlZDZPW8AqYiVYaKcv95smmPCo97uXpw+dgbMmSZY+iLvTZSz29FQ9bX3RjYbmo7UeG8TATjODrFYDOUEJWQpMkhjpZDGSiFLkUE5QTnY9RohBdbM1zvQ2dwJm9XzEIS5zQwM0OZ0XL/v9xVuYICHSMhYMknme5uCyQr+9suJ7K+lPOnr7cPfXtiLj//5Kfp6Brvf3/zDP7F87d149GfrII2WhjlCfnS1XofEj8/Sc58eQaZmYegDEjBzRy9iMrzfF2xHZKxCEcsTMWAZwJX6K0iZloJY2bcrluw2O9gWFh1MB+yS8EzUExK7zY/5IxwlcMRVTHQcAO9JrYjjrx+DekxCzNpvxW9/8jsc1L3nTEoAoLerF+/8+QBK/+X/wB4h25A3n3c/hHOjvq7I+MD1xtTle6dcU4RcpwmZkyCJiYK114qOpg70mnox0D8Aa58VpqsmsFdZAIDthhonkcjuR6+RnSYJkxsoUpQ+2zh2ruYD9ZiE2Cf//BSnjp32ePx41Ul8cfgI8lYt4TGq8BAn+K5KCQDdETjMdSN5UrzPNgo/2owHnS3XkDIlGQP9A5CnuxaVS5qUBHm6HO0X2iFKiIy6Lt5YevoRlxiNgQEbmHPtaLtsAsdxSMmQI/PmVEijo9DfExkVg4n/MudOw7n6Bq9t0mbQUM648cEbH/luU/FBRCQm6WnJuMxxXgusAYAoiuqYiPyo4OlY4jfecRyHeC9JmCRKgrSb03DmbAuPUQlTX5cVvT0WVB86BUvvt6uUmi9cg/FII5asmA0q90Ju1HqtCQp5HEys+x26pVIJJFH87d4dGe9sYdTS5PvNsqW5jYdIws/eZ/WZlADApFTajK39m+EJb9qumHiIJPxEAxz6+71P2BSJRH4NY4x30uRUfHagziUpcRiw2lB9qB722MjYyoD4b2aqAg8/nAu7aPgcJTtnx6p8NW5fMJO3eKjHJMQSZAkwd3Zh2oQkzJs+ARO+2QOlqY3FyfNX0NjaiQRZZGyqFZ3o31AOfcAATeeuY3bWJI89JxzHoelcZCwXlojtiI72/VaVnJTIQzTCdr2zDwNeVi/ZbRzaOvj75kvGhoxkBX7133/BpSttSIpVQBGbCBFE6OrvQXtPB868dh7/b8dPeIuHekxCbOlqDTTqKVizZA4mpyogEYshEYsxJV2J+zVZuGXWJNy+WhPuMHnR3eHfHh1WKyUmHKQ4YbjodmMtjuNwsvoibPbIGPLypzw/AEgiZO8gby6dOO+zTWPNBR4iIWPJ16cu4NKVwZ77jj4TGjqbcbGzCW0918GBg6mrB28cruYtHuoxCbG8Jdm42HrV4/HbsjMxO3cOjxGFkY/KnQ52cWR84HqjvnsRPt97GB2tXZiek4HUCYPFj9qvmHDeeBUdbV1Ysu6eMEfJD4vVjvZrZqT42HH5SkcvFvATkmAN9PuufjvgY1iMRJ7qmjM+23zwJX/1pSgxCTHTad/fTjrqziF9zjQeogmv5CkT0NM3gPhY77edYkYmTxEJV86qW3Gi8nN0tHfh64/ODTseJ0/A3PxbwxAZ/3q7e1FVfQbfue8Wz216+3H6XAtW8xiXEKVMyUBHc7vPNoQM1evH/knmbpr8Om6Y/Zj8am7y3KMynkikUUicPsXt8IRDV7cVOffdzmNUwpSgTMSDzz4JeXrSsGPytCQ8+Ox6JCRFRmnxRHk8jnx1AcdPuq+D098/gD+/9ilkCZFRqNAbf5LVSEloif9UUyf7bJPpR5tgoR6TEBP5sSuqKEKWfQLAkh/ei8r/2I1EkRVRNwztsGYLZq9diZh4/gr5CFnq1Az88Pe/wMWvTqHh+Blcv34d2ZoFyLp9gc8N7caTKLEIC+ZPwWt7q1BTyyBvyc2YMEEJa/8AauqaUGU4g2vXzfj+pjXhDjXsVHNnYF7BEpzUf+H2+M2auZilyeE5KiJ0jz72EA6+exhpCQosnDQdU5LSIIIIV8zXcfzyRTR2tuHRxx/iLR5KTEIs6eYpaDlW77NNpJDGRGPNjk04/k4VLlUdA2exwM4BiZkTkPvEg0ifMSncIQqKWCLGjCXZmDB3Kurr6zEta05EJSUAIJZKsXLFPNSfvowTNY04UdM4rM1dd2RhwpQJYYhOeO7e/ABSp03A8Xerca1xsMdWnp6EBWvysODevIj6IkT8s2zFHVi3Mh8TeqMhFn17f8xInoAZyRNwoe8avv+DdbzFQ4lJiMknZ/hMTJRTIuvDOCpGisUPLcPih5bBzJpx+sxpZGdnIz4+MiqZkpERR0VhwuwZ+NmPVuKtd75GXX2zs6y6Qh6Hu+7Iwp23z0HCZFWYIxWOnJW5yFmZi/YrrTh7+gzm5S5EQkJklCUgI9d55Rom98eBE7kfZp8em4zWU42YtpifhRqUmIRYy3HvSQkAXPnaiOQImPw6FMdxMDU0o7P5Kgba2zAwrQ+gxIR4IJ85E31trVj/+J0wsT1obWUhlUqgmpwMiUSM+EmTEC2nwmE3ilckIloW51clYRK5Tuq/AOdjD6UTBz6nxGS8MF9u9dnGdKmZh0iEw3TpMs68/QF6r3U6HztR24AJi9SYnr8UYgktFyaupAmJSL31NnTU1kABQCH/JokVSyCbMgWKWbPDGh8hY9llH/vkAECzH22CRfCJSXl5OeTffBNiWRaFhYU+n6PT6cCyLORyORobG7Flyxbna/CNs/ux2+eAH1uVjxPmy62o+evbsFtdaylwAzZc/vIkBiwWzHlwZZiiI0LGSaQ4fdqEpuOnEBcrgW3ADps0Frd8VwUlzZsgJAB+LNLgsddN0IlJeXk5AECr1QIADAYDiouLsXPnTq/P0Wq1LsnMM888gxdffDH0Abshlkh8Jh6S6MhZ5njpoy+HJSVDtZ44DdXSRUjws9oniQyW7j7845lX0H5p+NL6d3/3N9y18V4suDcyKigTEmyqudPRet57z71q7nSeohF4HZOysjJnUgIAGo0GOp3O63MMBoNL74hcLofZbA5ZjL4o/SgWljyHv3/wcLL29OL6Wfe1KIZqOX6Kh2jIWHJk/0dukxKHT1+tRNd13xsfEkKGm1ewxOdqvwX38Zf4CzYxYRjGORxzI4PB4PF5MpkMGzZsAMuyztdRqcI3W7/ZbIHNy3COdcCG9oHI2Ifc2t0HeCmu5mAxd/MQzdjwZfXX+MmTv8DShauwQfszPPWjf8MXhq/CHRavbAM2GA9/7bWN3WaH8f3Iui6EBMtA/4BzpZsn1t5+nqIR8FAOwzBuH5fL5c6kw53nnnsOa9euRW5uLjZt2oTMzEyvQz++cByHnp6eUT9fX/ExlDFiLFswfdgYnd3O4fDR87DXNmPhmvHfDW0VceA4zudYJXvdHNA1Hy9eLX8Nv3tuFwBA8s0cikOVH+BQ5Qd4+t9/jo0/eiKc4fGm6xqLPrPv+6HlwmW6b27Q29vr8ich7hx9p8rnl8aj71QhI2f0Nbf8ee93EGxi4olCoYDJZPJ4XC6Xo7CwEFVVVXjllVeg0WiwevXqUU9+tVqtqK/3veTXE5Y1Y1leltt/ELFYhFtmTcShr88FdI6xorejC52mPiQp4zy24TgOjc3tiIqA6+HNmVPnUfKbF7Esdy4eXrUU82cPLic/eeYi/nHIgOd/+99ITlVidvbMMEcaetYei1/tuvu6I+L/0Wg0NDSEOwQiYJdOnvXZ5srpxoD/f0VHR/vVbswlJt6SEgAoKSnB0qVL8eKLL4JhGGzbtg1r167F+++/P6rzSaVSzJw5+jf/7KnpSJJ5/iBOVSbiZlUKsrKyRn2OsYJt6cCJq+8jISEa0VL3S4KbWky4KWtWRFwPb159eS9+tK4A3793mcvj82ZNw7xZ07C3UoWqj77Adx+6PzwB8qxxTg2unBpe8XWoBStvw5Ssm3mKaGzo7e1FQ0MDpk6dirg4z+9DJLKdiqtGFzq9tpFIJAG9L587N3wzUk8Em5h4mhfCsqzHYwzDwGw2Q6PROF+joqICa9euhV6vR0FBwYjjEIlEAVUkVU9N89kme2p6RFQ9jc2MxaUOFnWftWDZgulIT0p0HrNYB3DywlV8daoJRfffExHXw5vu1lZ8f4vnEtCPrr4Tv/qjLmKu05JH7sGbz/3JY3dzytQMzMmbS+XWPYiLi4uYe4WM3ITZKrRfvOK1TerUjIDuoZEsNxZ0YiKXy91OXnUkHjdiGAYy2fAdV4eu7OFbfIwU8DHfUxYfw08wYTYwMICrJhaWvn784+MapCgScJMsDlabDUyrCQO2wUnCl9uvw/MG95FhRa7vjdZW3jaPh0iEYcrCm7H8x9/FR+X/hO2G5eap0ybggV/+gJISQkbLn/UXPNYxEfT/5M2bN7uswNHr9S5JBsMwzlonwGDCUldXN2xyrNFoHFVvSTD4s+FapFSLbr96DZa+b2d2t5u6caapHRevdDiTEgBgfKynjwSzpkz03SbTd5vxJGfFYjz4m0JAlYymgT40DfQic+VCaP/rx0i8icrREzJaLed8v+e2+ehRCSbB9pgAQGFhIcrLy6HX6wEANTU1LitsDAYDdDqdSzXYXbt24eWXX4ZSqXSu4CkqKuI9dgdLvxVSsfcS611+Tu4b66L9LCQXHRM5Bec8sfuxrNrmR5vx5ODeQ/hT6V9hG1KwsPHlN/DZe1/i3//wr0iZkBLG6AgZy3y/l3A8vt8IOjEB4JJ03NjrodVqhw3TyOVybN++nZfY/HGxtQ2zMjIAAP1WG7q7B3sMEhOiIf1mAujF9vawxcenlAkpmDp7ChpOey+ydstdi3iKSLiusD2YkJLktc1lU+TUe/n6k6P4n//vT26PNV1oxm9/VoKS13/rVw8lIcTVxDlT0Xr+svc2WaNfKjxS9L84xC72dmNgwI6LlzpgrG9FQ2MnGho7YTw1+HebzY7LosjZK+eB9fc5/x4fI8XEZDlSFd9uxz5lViYWLJ0fjtAEZeoti2Dpt3o8bum3YsqihTxGFF5v73nH6/Gm8034+pOjPEVDyPgy/VbfuwZPmO27inmwCL7HZKy7PS8XZz85jb6+Gzat44COzl5Y+gewPIL2+Fi6WoP2xiu4/nUtpmYkOQuHmbr7cLGjB4/95qe0RTuA+bctxht7TiMnKR6xMa5r/y39Vpxs78La7+SGKTp+sR1mnDp22me7Ix98hdy7F/MQESHjS82hL322Ofe5Ebdpl/MQTZB6TOrr67Fx40YsWbIE+/btcz5eXFyM6urqYJxizBpo7BiWlAzV02NF//k2HiMKr75OM9K7WMyYmOxMSgBAkRCLBZNvQtepC2GMTlge3PAYOlMm4pPa8zhxpgHHT1/ERyfP4fpNGVi78fFwh8ebfot/pbCHTqwmhPiv8bjvGiPXGlt4iGRQwD0mdXV1WL9+PfLy8vD000+7HNu5cycOHjyI+vr6iC2YdaXR9/yR5vP8zXYOt0sffYF+L3vhXProS2QsyEKMItFjm0iSe/sS5N6+BD09Paivr8fyrKyIq0ehTFZAniQH2+F9k74ps/jraiZkPLlxCb5bPM61D7jHpKysDPv378euXbuwbt3wglD5+fleN90b76z9vueP9FsjY47JgKUfrTVnvDfiOFw9VsdPQGRMiJJG4Z4Hl3ltI4mS+GxDCHEvNtH3lx1xlPfVpcEUcGIyefLksO7eK3SxXsrRO8QrhxeFG4/6zd3gbJ53WnZgm/nrMhwLent6ceyrkzhVdxY9PZG5Gdt3Nz6A6dnT3R4TiUR48t/WQ5mi5DcoQsaJnFW+56tNXcjfdg8BJyZJSa5LGt2tde7s7Az0NGPWzFzfs51naXxX+RwP7AN+dBcC6PPRZR8pLJZ+/ObZEiyZtxyPPbQJv/zFc7h7yb14rrgEfX2RUfvGIS4hDs++8ks8uPE7UAwppjZn0Wz82++3Y8XD94QxOkLGtkXfuR3xSs/D5xJpFO7aeJ/H48EW8ByTS5cu4dSpU5gzZ/AD+MYVFbt37w70FGNaUmIUoqMl6PcwpBMbEwVZbGSs2rZzQFe3BYkJ3kvwd3TQ1vUDAwPY9PjP8OlHrsOgZrYLr7z0J9QbT+PVvS9BKo2cYnSx8bF49Ofr8MiPH8LV5hY0XLqIhYsXRtycG0KCTRoTjUd/9xPs31EOU0uHy7HYxDg8+KsnIU/zXlcpmAJOTIqKirBixQpoNBrMnTsXjY2NUCgUYBgGOp0OMpkM+/fvD0asY1L3lTbcPD0ZDUyns7iagywxGlNUSnQ3Xw1TdPzqtwzgytUuzJwe7XFJMMv2wRpHq9jffevgsKRkqKpPPsc7b+rx4CORsbvwUJIoCZJSlbjaHhvuUAgZN0xnLmB6eiy6E5PBmi3gACTESyGXxaCz9hTSpvO3BUbAnwByuRz79+9HcXExSkpKAAA6nQ4AsGnTprCWgxeK6GgJZs1IRk+v1ZmcyBKjERsbOd92ASA6IQ5d3f1oaOyEapICUVGuPUWdpj5cYjox566p4QlQQP7+l3/40WZ/RCYmhJDg6m5px4VDVQCAhIRoJCS41k66erQOSdNVSM3hZ55JUL6aqlQq7NmzB2azGbW1tVAoFMjOzg7GS495yqmT0GY8CwCIj5MiPm54MqKcOonvsMJCnqpESmY62htbYGL7kKSIQ2xsFGx2DiZTH/osg3NQbl4aObvmetLYwPhsc+liIw+RkLGK4zjYenogGRgAZ/c96ZxErstHav1oU8NbYhLw5IaDBw/iqaeeAgDIZDLk5eVRUjJE6rxZPtukz5/NQyTCsPjhZQAGK99e7+zF5atmtLR2OZOSlKkZmMLj7G+hkit8r9Typw2JPBzHgb1wHlc+/hCdR75A8vV2dHxRDdPZM5SgELfM36yEFElEkKfLkT4rHemz06GcpITkmz3dzM2tvMUTcGKi0+lgNBrR1dUVjHjGna7Lvv8xWR7/wcNt9u3zoHl8FUTi4XNMkjPT8cD//gGVpAdw73cKfLa5/7ureYiEjCUcx+H6yRMwnT4FW++3S8u5/n6w586i/ehXlJyQYURiMWISY6Car0Ly1GTEJ8UjXhmPpMlJUC1QIeGmBLfv2aES8FCORqPBpk2bvLbZvXs3Nm7cGOipxqQ2XwXFvmkzOW9B6IMRiNy1d2HW0rk48c5naGu4AqttAHNXLkHWnYtod9hvZGSk+WyTlpHKQyRkLOlrb0PP5WbPx9va0HP5MhImT+YxKiJ0STMmA90xkLgpoiYSi5A6IxW9ffwtSgj4U0Cj0WD37t1ee0xqamoCPc2YZe31XW/CnzbjSb/JhN5zdZg2UYJbNZOx9I6pUFjbwZ4/47YOTiR6+40DPtv8841KHiIhY0lXo+95R+bGSzxEQsYSebrcbVLiIBKLoJig4C2egFOgyspKsCyL5cuXY/LkyVAqlZDJvh37NpvNEV2SPjZJjq7ePp9tIkW/2YzWLz4HZ7tht2WbDebz52Hvt+KmnLlhik44zp+96LPNuTO04SFx1dt+Db463C0mEy+xkLHDynb6bDPQzV/hy4ATE51OB4VCAbVaDeCbiVcsVe50yFiUjXM+5plMWBQ5k4XZs2eGJSVDdTONkE2dBmliZG/iF5/gu2hYgh9tSGTpYXuQkBjttU1/L+3CTFz5Ne+Ix7lJAScmkydPRkVFhdc227ZtC/Q0Y1bG/DloPXEKLOO+iFrSjEykZM3gOarwsPX3o7fV9z443c1NUM72Xcp/PFvzwCq8WPpHr23u/U4+T9GQsaKlsQPTs9O9tmlr7gSteyNDRcsVsProUJDK+RvKCXiOyfbt23222bJlS6CnGbPE0ijMffwBTFicA/GQ8uGSaCkm3TYf6u/dC1GETPi09/cPrhP2wWbxPvQVCR7/oRZJNyk9HlcmKfD4Bi1/AZExQab0XQ1XpvS9sSiJLImZU/xok8lDJIMC/kTMy8sDABw6dAirVq1CVlYWsrKysGrVKuzbtw8AIr6uiSQmGjfftwy3/GQdpt5zC+SLpiN744OYUXAHr1tJh5s4OhrwYymwJNr7XjqRIC0jFX9+/WVMmDj82296Rhr+pPsj0v1YuUMiy03pvmvbKG5K4CESMpZEJSai2+R5iK/H1Ico+RjaKwcYHKqprq5GXl4ebrvtNgCAyWTCjh07oNfrI34jv4HeXrR99SUGurogApAsBbqOHoFFLkdq7hJIor2PCY8XkuhoxKamoc/HcE7CJFrKCABz56vxyVd6VL7zHj77uBqdHZ1YWXAPvvPQfYiOjqztDIh/JH70vvJZj4KMDe1159F6qhniuGgoJsihTB1McM2dPei8bMKAuQ8x6bWYevcSXuIJODF5/fXXoVKpsGvXLrfHi4uLsW/fPjzyyCOBnmpMslmtuPrpx+Bsw3cXtrIsrn7yESbevRwiSWT0nChm3gzLtXa31wMA4idNhlRGFU0dpFIpHnhwDVbkL0N9fT2ysrIoKSEeiaRScFar90biyBg6Jv5rOX4K7dd6wDRfAQCIJSKIRCLYBgYnvKalJCDm+CneEpOA79DGxkavG/Xt3LkzouuYdNbVevwQBgC71YrOM6d4jCi8ohUKpObeiqiEG1bdiMVInDqNlgoTEoCECb733YpNpSFA4qqz5TqY5m+XkdttnDMpAYDW9m60NrfzFk/APSZKpdJnm0weJ80ITW+L71UoPc3NSMpS8xCNMMQk3YQJd96FvuvX0HP9Oq5cbcGUuXORqOBv1jcZm/p7LTj18XFcPd8EtsuMJEkipi+InL2mfFHMmYPuy03gBjwsyReLkaTO4TcoInitLWafba5d529RQsCJiT/7mpgiuKCPt94SB7unN5FxLvamZNhj49BnYl1WLBHizpnPTuLwS2+if0il5OYvzmJi9lTc96/fR5ycJnWKJRJk3HEXWr/4HLaebpdjkthYpOYuQVQMTS4nrnp6fQz/Aejq4q9CecBDORzH4dChQx6P79u3L7LLjPuRuIlENOZLiDdNtRegf2GfS1LicLmuAW//5i+R/T4zRFRsLCbetQzpS+9AbOYUdMUnQL7wFky8e3nEFy4k7knjfC8z53MFacA9Jps2bcLatWuh0+lQUFAAxTfd8QzD4MCBAzCbzV4Tl/EuWqlEf0eH1zYxyck8RSMsF8834KjhGDrNJsyaNSvc4RABO7L/Y6/VKa+eZdB44hymLKDSYQ7RcjkSpk1HY58FUnnkbHtBRk41fyZaznve/BEAMufP5CmaIC0XrqioQHFxMXbs2OHyeH5+Pp577rlgnGLMSspWo6XqM88NRCIosyNnfgkAGI/V4rO9/8Stc6fh1hQZBpQ34YP/9ye02SXY9O8/Dnd4RGD6unrRePK8z3Znq2ooMSFkFObm34pj71TB1u95WsGCe/N4iydoYwg7d+7EqVOnUFFRgT179uDIkSPYtWuXy4Z+kSharkCCl6p6sukzII2PnD1P6k/Uo/3zI1izbB5SkgfvjagoCRbNm4blOZPwx2eeD3OERGj6ey1+VQx2N8xDCPFNnqrEml88Ckm0m74KkQh3bliDyTnTeYsnKD0mQ0V6ldcb9ZtM6GY8b0VuvngBCZMmQ5oQGRP3jr11EHfkuv9WGxUlwfJbpuN0zSnMnhvZe+WQb8UrExGTEAtLt/dVAUkTU3iKiJDxZ/qtWXhi1zbUHPwSF4+eRl9vH1Tq6bjl/qVInTaR11iC0mNSXV2Np556athcktdffz2i55cAgPlSg8u3ve5uC3p6hnyzs9vR1XiJ/8DCoK2lHQuzVF7bxMZG48u3IvuecafP3ANrT2T2CERJo5C1bJHXNiKxCOqVuTxFRMj4pEi/Cbf/oAAP/WchFm1egTs33ct7UgIEocekuroaVVVVMBqNAIBVq1Y5j61btw51dXXOcvWRqK+9DRzHofrLc6gynEFL6+DS6YkTknDH0tnIvWU6+tragKwwB8qDhrozyEj0PftbHktLhx1q3zuC4weqce3SYD2cM5O/xKL7l0K9YrFfS/XHi1sfWYaGY2fQedl9kafbHl0OeaqS36AIISERcGJiMBhQVFTksfprdna2czO/SGS32bB3XzW+Ptbg8vjlKx3Q/eNzNDdfx0PaO8ITHM+SkpOAZu8rlAD4tcQ6Ehz+45uoPXTE5bGOpjYcfulNXD3DYMVP14YpMv7FyRPwyHOFMLx2CKc/O4kBy2DdBeWkFNy6dhmy7l4Y5ggJIcES9Dkm7rAsy8dpBOnE8UvDkpKhPqs+A/W86Zi4jLeQwmbmvCwcOXYUGWlKr+0UmbSJX8PR08OSkqGMh7/GjCXZmLY4cubixCsTseKna3HHhjVoabiMS02NuOX2WxEfQZPHCYkEAc8x8aeqa2Oj58mf492nH9f6bPPR+yd4iEQYWLH3oZzWdhZ3PXwvT9EI10n9l360+YKHSIQnJj4WKVMzEJ8c2Sv+CBmvAk5McnJy8Oyzz6Krq8vt8eeffx7yCC7uc7XVd+J2tbUz9IEIxPInHsLpy51uj13r6MKkpZqImjvhSXvD1aC0IYSQsSbgoZx169Zh69atyM3NRUFBASZPngylUonGxkZUV1cDQESvzBGJfX/IRlop7RUbH0PrxUbUvP8xYkSAxTqAuAkZyNM+DJGEv7LHQua2nsAo2hBCiL/6zD0wHv4aF4+eRldXF7rmt2DRvRrIUpS8xhGUd7YXX3wROp0Ozz//vMt8Eqr8CgyIfG+OZBH18xCJsKRNy8TywifQ09OD+vp6ZGVlUVIyxIxbs/D1m5/6aEM1gwghwdFsvIi3f/tX9Pd8Wy/oeEMbTr77OVb+dC3m3LWAt1iC9pVLq9VCq9XCbDajs7MTKpX3ehWRgultx0RRCuweOkXEYhFauW73B8ex2i+NeP8fh9F4loFdZMcdq29H/rqVSFTQJmMAMK9gCU7qv4C1z33SKo2NxrzVS3iOihAyHnV3mPH2b/+Cfje1kuwDNhz67/1QTkxGxs38fK4HfVtbmUxGSckQd+XfiVPtF92ugBWJgNqWs1ixZhnvcYULx3Eo2/kK/mPzf6L60BdovngZVy5cxet/+Ad+sfZf0Xg2cidKDyVPS8L9//4EYhKGTxaOjo/Fff/2OBTpN4UhMkLIeFP73hG3SYkDZ7fj+DvVvMUTcI9JfX298+9ZWYNVwqqrq6HX62EymbBmzRqXomuR5oeF34fubxU40lyDtIRkpCQowAFo6+pAW08HEhLj8dj6deEOkzcHde/hcMWHbo+ZrpnwX1tLsevt/4MoKc2fUM2djg0vb0f9h8dw6eRZmFkzZi3JwfxVSxAT77tQHSGE+KPh6zM+21z8+hQPkQwKuMfk73//O0pLS8EwDIDBpOTJJ5+EyWSCVqvFyZMnI3ry64yZ0/DH//m/iI2PxZWuNtS0nENtyzm0dF9DojwR5X/5b0yYmBHuMHnBcRwqX9N7bdN+5RqOfPAVTxEJX0x8LBbcm4eV2x5G1sO3IWdVLiUlhJCgsttsvtsM2HmIZFDAX0szMzOxc+dO588lJSVQqVR44YUXAAB5eXnYvXt3oKcZ0+5eeSeqjr2H11/bj+OfHUNPbw/yVizF99evg0wWOXMqWpvbcJVp8dnu5Oc1yMu/jYeICCGEpM2YiNYLl3224UvQ55jU1dUhPz8/2C87pg1YB1B34AvgqyuY3S/HQkkGREevoq7yS78y1fGCs/uXcds9zRQmhBASdPMKfE+k96dNsATcY6JQKJx/r66uhkgkgkajcWkTSJ2O8vJyZ4E2lmVRWFjo1/NKSkqQmZnpjLGgoGDUMQTCNmDDP3/7FzQeP+fyeK+pG5/vPYz2hqtYU/QoROKg54iCkzoxFUmpSeho875fzqz5N/MUESHjU9fVdlz+4iSun2+E1dqPC+dakKlZCLlqQrhDIwKUOm0iNI+tguE199MuspYtxKzb5/EWT8CfhpcuXXL+3ZFEDN1JuKmpySV5GYny8nIA3y5FVqvVKC4u9voclmWxdu1abNmyBVqtFjk5Odi2bduozh8Mpz85MSwpGerc50Zc+Iq/SUXhJImSYMXD93htk6hIxO2rNV7bEEI8u3q0Dkdf1uHqsTr0s13gevtxvf4Cju/eD6bqaLjDIwKV+9BdWPaT78IkFaGm+QpONl/G1f4+LHhkGVb+/CFeK3IH3GOi1Wqxdu1adHV1obGxES+++CKAwd6TyspK7Nu3z+POw76UlZXh8OHDzp81Gg02bNjgMqflRqWlpVi9erWzl0WtVmPPnj2jOn8w1L7neSM2Z5tDRyKmWNZ3n3wAZ0+ew/Gq4fsDxcTF4F9KtyImLiYMkRFfbDYbrFbfBQP5YLFYnH+KBd7bKJVKIeGpeGB36zWc+eeHgIde6ovvGSCblA7l1Em8xEPGjhOGk3h+x0uw9H67bLir6SpeKvkT+qVirHx4OW+xBJyYqFQqVFRUoK6uDiqVCjLZtxtrrV69GqtXrx7V6zIMA5Zl3e6zYzAYhg0XOeh0Orz//vtgGAYMw0Cj0Xhs6w+O49DT0zPq519vbvOrTSDnGGt+9tsfo0pfjY/f/ATNFy8jSirB4rtvQcH3ViEjMyOiroW/ent7Xf7kE8dxuHbtGsxmM+/n9oTjOERFRaG5uXlM7K0kk8mQnJwc8lgbDcc8JiUOTPUxRKclhTQOMrZ0tHXg+adfcElKHDg7h92/2YO0yam4ed7MUZ+D4zi/7/+gFYvIznb9xj90OGc0HMuPbySXy13K3rt7jtFohEqlgkqlQnFxMQoKCkadnFitVpdaLSMW5fsfwgZ7YOcYg1JnJOPhpx90eayjuwMd9d7nn0S6hoaGsJxXKpUiJSUFMTExYyIREAqO42CxWNDe3o62Nt9fUgLVc+6SzzYdF5si7v2GePfpm1VukxIHjuOw/5U38J0f3xfQeaKjo/1qF/QqVgzDYNWqVSG78RUKBUwm9zv2OhITuVwOtVoNACgqKsLy5ctx5IjvIRV3pFIpZs4cfZZovv0KTviomJe9bJGzOF2k6e3tRUNDA6ZOnYq4uLhwhyNY4bpONpsNjY2NSEtLw003CafSrOMDf6wkSlKpFK2trcjMzAzpsE6toR59Xd571aIkURH7fkPc+8fzb/hsc6muMaD75tw5z3MtbxSS8pqh3C3XU1IyVE5OjvPvjh4Wb8M/3ohEIsTHx4/4eQ63PHAHTn903OObRUKSDAvXaBAXwDnGg7i4uICuc6Tg+zr19fVBLBYjMTGRt3kS/rB9s8xeJBIJKi5PEhMT0d7eDqlUitjY0BXIS5quwpVrnV7bKKdNov9rxIU/n9l2uz2g+2YkXyBCMmssGN9gPO23w7Ksx2OeHpfL5R6HhkJNlqLAd5/dgMSU4SuTFBOS8eCvnkScjN4kiLCNhV4JIePr+k3MzYHbjbmGmLRkPi+xkLFjZo7vUYGb545+5GCkBDudXaVSeUwoPPV8OOaV3PgclmVdelH4lj5jEja89DTWFH0P6lW5mJg7A6t+8Qh++N9PIVmVFra4CCHjS0JaMmY9cLfH5GTaSg0UU/ir4EnGhlXaFT6T51XrVvAUjYATEwDYvHkzDAaD82e9Xg+tVuv8mWEYZ60Th6KiIhw4cMDlORqNxjnnJFzEEglu1uRA84NVmL5qPqYsmhURRdXI+GUwGLB27Vps2LCB1/MajUZs3LgR3//+93k971iRsTAbi7ZokbEoG9GKRIjiYnBT9gws2PgwVEsXhTs8IkCZM1X4QdHjHpOTlY+swG0r+av8GpJPxmBNrCosLATLstDr9dDr9aipqXGpYWIwGKDT6VyeU1BQgMzMTJSXl6O8vBw1NTVhrWNCyHil0WiwefNmv+Z9+XLj/2Nv1Go1Nm7ciK6uroDP61BSUoKtW7cG7fXCLTEjBbMeuAfztqxD/IpFmH7fXZCrImOzUDI6ax4rwI6y/43Fy26BNFoKSZQEsxfMwlO/24pNv+T3y0fQJ7866poEy9AS9DeWlXdUhL2Ru8cIIcHnrs7QaFRVVY3o/61SqQzKeR2WLl3qsQwBIZFCnZsNdW42enp6UF9fj6ysrLBMlA7JqhxCCPGXTqdDU1NTWGMIpAgjISS4eElMnn32Wfz617/m41SEkDDQ6/UABpfz37jZJsuy0Ol0UKlUMBgMzn2vgMHh2KqqKpf5YkOfe+MQz429KnV1dWhubgbDMOjs7MT27du9xumIg2VZMAwDuVyOnJwclJaWgmEYvP/++wAG56+tXbsWmzdvhkqlgslkQnFxMfbs2eNMYsrLy52T7VUqVdg2CiVkvOElMQnGGDQhRJiMRiM0Go1zWEen06G4uNg5H+zll1/Go48+6vzwXrFiBSoqKiCXy50f8k1NTcN2Di8vL3dJNhxzzRwJgMlkQmdnp/PnFStWYM2aNR4nujuSJ8c5GYaBwWCAWq1GUVGRy2afLMti165dzrYlJSXIz893/rx161asWbPGee4NGzZApVKFfZI9IePBiBKTQ4fcb4nsjclkQnW198qnhJCxS61Wu8w10Wq1mD17NgoLC509Co6eEgDOnhNvPQwsy6K0tNSlYvOBAwcwd+5c589ms9llCMZxLm/JgV6vd27yqVKpPJYRMJlMzmNGoxGvv/66c0NRhmFw8OBB54alwOD8N51O53WDUUKIf0aUmLz77rs4dOjQiCu7UnEmQiKLSqVy7lnl+AB3DJ+YTCafvai1tbWQy+UuCc/QRAAAJk+e7PKzTCbz+rqO5CE3NxdqtRqrV68e1kvjMDTh2bZtG4qKipyxGAwGyOVyl1IGjY2NYSviSMh4M6LE5LnnnoNCofD4n9kdlmXx1FNPjTQuQsgYNjRBMBqNePnll7F06VKsXr16WEJxI8fO4qGwZ88eGI1Gl1ID3t7PHPNIHL09jthUKpVL8kKTZwkJnhElJjKZDCKRyGPpd09u3HmYEDK+sSwLtVoNlmWxfv16vPrqq84hFrPZDADOSaM3MhqNzue6e93RLlHW6XTOibdqtRparRbr16/3mJgwDIPS0lLnhFgAzjkpZWVlQY2NEPKtERdY6+zsHPFJRprIEELGjht7OBwJgGPOhyNJcXD0phiNRgBw2UbCMUdEpVIhPz/fpbIzy7KorKz0GIcj4fHEsTpoKG+9N44hHMf7l9FohEKhgEajQU5OjnMyrYO32Agh/hvxqpxdu3aN+CRFRUUjfg4hRPgUCgV27drlnG/hWC7smASqVquxadMmlJSUYOnSpQAG30NKSkqwZs0aAIOJybp161BSUoLMzEznsMmLL76IkpIS53CKyWSCVquF0WhEWVkZmpqasHv3bmzevBnl5eWora2FyWSCQqFwO7HW0ZvhSCgYhsFzzz3nHGpyLFkuLCyETqeD0WiEVquFXq8HwzAoKytzvv/t2bMHJSUlzvMBVNiRkGARcSOYydrU1ITq6mo88sgjoYxJMGpqagDAZSVAoMJdUU9o6Hr4J1zXqa+vDxcvXsS0adMQGxvL23l9sdls6OvrQ2xsLCQSSbjD8Slc15H+f5HRCMV9M5LP0xEN5RQXF6O0tNTlsXBXbCSEEELI+DGixESj0bhMBAMwLFFx5/nnnx9ZVIQQQgiJSCNKTGpqaka1jK+urm7EzyGEEEJI5BnR5NfNmzdj+fLlyMzMdM5Ur62txUMPPeTxOWazmQoPEUIIIcQvI0pM1Go13nvvPRw8eBCNjY0ABise+tofgvbKIYQQQog/RrxcWKVSYdOmTc6ft23b5nN/CEpMCCGEEOKPERdYu9GWLVt8tqE6JoQQQgjxR8CJiT/l5qnyKyGEEEL84VdiwjAM9u3bh66urlDHQwghhJAI5ldiolKpwHEcfvCDH2Djxo04dOhQqOMihBBCSATyeyhn3bp1qKiowK9+9SucPHkSK1euxFNPPYXq6upQxkcIiQCc3Y7e1hZ0MY3obW0BZ7eHJQ6GYVBSUhKWcxNCBo1qVU5RURGKiopQV1eHvXv34tlnn0V+fj60Wq3X3Toj2cDAAN6r/BCGz75AR8d1rL4vH6vvWwmxOOBpPoSMad1NDDrPnIbdYnE+Jo6JgXLWbCRM5nd+WnFxMc2JIyTMRpyYDJWdne1cKnzw4EGUlJSgqakJa9asgVarRWJiYlCCHOtqThjxo/VPobnpivOxd944hGnTp6Dszy/i5tkzwhgdIeHT3cTges3JYY/bLRbn43wlJwaDgZISQgQgaF/X8/PzsWvXLrz66quQyWTO+Sj79u0L1inGpCuXr+KJRza7JCUOFy9cwmMPbULH9U7+AyMkzDi7HZ1nTntt03nmNG/DOgzDUGJCiAAEfRxBJpM556O88MILMJlMWLt2bcTOR/nz7r+js8NzgbnWljbs/et+HiMiRBj62ttchm/csVss6GtvC3ksOp0OWq025OchhPgW0gkOMpkMmzZtQkVFBTZv3oyqqiqsXLkSzz77LOrr60N5asF49+2Dvtu85bsNIeONzUdSMtJ2o8WyLPWUECIgvM28zM7ORlFREd577z0UFBTgj3/8Y0QkJ2bWd+2XLjPVhyGRRxITE9R2o1VZWQmNRhPScxBC/BfQ5NfRysvLQ15eXjhOzbtpM6b4nEMydfoUfoIhREBiU1IhjonxOpwjjolBbEpqyGIwGAyUlBAiMCFLTJqamqBUKiN+Zc73nngER4+c8Nrm+z98hKdoCBEOkVgM5azZblflOChnzYEoxEvq9Xq98++VlZUAgPLycmi1Wsjl8pCemxAyXMCJyfPPP4+nn37a5TGz2QyGYWA0GtHU1ITs7OyI6SG50XcfvhdvV7yLTz9yP/G34N4VWJG/jN+gCBEIx1Jg93VM5iAhxHWRNBqNS49JZ2cnGIZBYWFhSM9LCPEs4MSksbFx2GMymcwlEdm9e3fEJiZSqRSv/PUPeOF3f8Dev+53DuukpCbjiScfxU+fKqQiaySiJUxWIX7iJPS1t8FmsUDyzfBNqHtKblReXo6DBw86/07JCSHhEXBiIhKJfLYxGAzYuHFjoKcas2JiovG/dvwLtm3/CWpP1qGh4SJW5q+AQkHdxIQAg8M6cWnpYY2hsLCQkhFCBGDEiUlpaSkYhnHuNFxbW+s16aitrcW6detGH+E4Ehsbg+yc2RBJ7JBKwzLvmBBCCBG0EX86FhUVARicMFZcXAyRSASO49y2lclkePrppykxIYQQQohfRv21vaCgAGq1GqWlpdi1a1cwYyKEEEJIhApodplKpcKaNWuCFQshhBBCIlzA097z8/ODEQchhBBCSOCrcoaWlc/KygIAVFdXQ6/Xw2QyYc2aNVi1alWgpyGEEEJIBAi4x+Tvf/+7c6UOMJiUPPnkkzCZTNBqtTh58iQOHToUcKCEEEIIGf8C7jHJzMzEzp07nT+XlJRApVLhhRdeADC4L87u3bsDPQ0hhBBCIkDQSyvW1dXRvBNCCCGEjErAPSYKhcL59+rqaohEomG7dXqqc0IIIQBgt9nQca4R/V09iE6MR9LMTIglEt7OX15eDrlcDpZloVKpUFBQwNu5CSGuAk5MLl265Py74z/30H1xmpqaXJIXQggZ6uqxejQcrkZ/V4/zsejEeExdnoeMhVkhP/+N++KUl5fDaDRCrVaH/NyEkOECTky0Wi3Wrl2Lrq4uNDY24sUXXwQw2HtSWVmJffv2OavFjoYj2QEAlmVHvJfFhg0bsGfPnlGfnxASOleP1ePMW4eHPd7f1eN8PNTJSU1NjcvPGo0GBoOBEhNCwiTgxESlUqGiogJ1dXVQqVSQyWTOY6tXr8bq1atH/drl5eUABpMfYHAzwOLiYpfJtt7o9XoYDIZRn58QEjp2mw0Nh6u9tmk4XI30ebMhkoRup+G6ujrodDrn+0xtbS0lJYSEUdB2ksvOznb5eehwzmiVlZXh8OFvv01pNBps2LDBr8SEZVmYTKaAYyCEhIZjTok3/V09uH6+EcmzpoYsjsLCQhQXF6OqqgpbtmwBy7LD5skRQvgTlK8h9fX12LhxI5YsWYJ9+/Y5Hy8uLkZ1tfdvRJ4wDAOWZZ3DOEP50wtSWVkZUG8NISS0fCUlznbm7pDGodVqodVqcfDgQaxfv56SEkLCLOAek7q6Oqxfvx55eXl4+umnXY7t3LkTBw8eRH19vbMqrL8cBdtu5Jg5743BYAjamwvHcejp8e8N1B+9vb0uf0Y6uh7+Cdd1slgssNvtsNlssNlsQX3tqPhY/9olxA07t2OlH8dxAcf1+uuv47bbbsOTTz6JX/3qV1i7di1eeeWVoCYoNpsNdrsdvb29sNvtQXtdX+j/FxmNUNw3HMdBJBL51TbgxKSsrAz79++HSqUCAJceE2BwL53du3ePODHxRKFQ+ByicSz585XA+MNqtbqU3Q+WhoaGoL/mWNNytQ1Nl5oRGxcLm80GCY/LQ8eqcNw3UVFRsFgsQX/duElpkCbEwdrt+c1PmhCHuEmp6Ovrc3s80Liamprw2Wef4Xe/+x0A4A9/+ANeffVVlJaW4m9/+1tArz2UxWLBwMAALly4ELTXHAl6vyGjEez7Jjo62q92AScmkydPdiYlfPCVlAydxBYMUqkUM2fODNrr9fb2oqGhAVOnTkVcXFzQXncsabhwCb95thSGT790fvNNSU3Gxh89gR9u+n6YoxOmcN03FosFly9fRkxMDGJj/evhGIkpy2/Dubc/9Hh86vLbEBcfP+xxjuNgsVgQExPj97cwd86fP4/58+e7/G4/+tGP8P777wf9942KikJmZiZiYmKC+rre0PsNGY1Q3Dfnzp3zu23AiUlSUpLLz+6KqXV2do74dT0lO47eEHeMRiNycnJGfC5vRCIR4t28MQYqLi4uJK8rdJcuNuKJR7bgWvt1l8fb267hv/7jBbAmM/7Xjn8JU3TCx/d9IxaLIRaLIZFIQtKjNXGRGmKR2H0dkxV5yFjgvqfVMXwjEokCiuv222/Htm3bsHnzZudjDMNgzZo1Qf19JRIJxGIx4uLiQpLg+RKp7zckMMG8b0byBSIoBdZOnTqFOXPmuD35aPfJUalUkMvlYBhmWCLiaezXZDLBaDQ6J8c65qmUl5dTNUeB+L+/+8OwpGSol3+/B9//4TqoMifxGBUJp4yFWUifNxvXzzei39yNaFkCbpqRGdIlwg5yuRxFRUUoKSlBZmam8/GR1ksihARPwIlJUVERVqxYAY1Gg7lz56KxsREKhQIMw0Cn00Emk2H//v2jeu3NmzfDYDA4h2b0er3LMA3DMNDr9c43EY1G45K0GI1G6HQ6epMRCJY148Db3neattvt2Pe3N/CLf/sZT1ERIRBJxCFdEuyNWq2muiWECEjAX0nkcjn2798Pk8mEkpIS6HQ6bN26FSUlJVi1atWokxJg8FsLy7LQ6/XQ6/WoqalxqWFiMBig0+ncPlev1+Pll18GMLjjMRVaC7/Wljb091t9tmtiLvMQDSGEECEKSoE1lUqFPXv2wGw2o7a2FgqFYljBtdEa2ttx41CMo/6AOwUFBTR0IzBKpQIikcjnpo5JNyn5CYgQQojgBHUQVyaTIS8vD9nZ2WhqakJXV1cwX56McSmpybj9rtt8tnvw4ft4iIYQQogQBZyYPP/888MeM5vNYBgGVVVV2L1796irv5LxZ1vRjxEdLfV4PP/e5ciZH5zeNkIIIWNPwIlJY2PjsMccPSf5+fnYuHEj6urqAj0NGScWL1mEl1/dhbT0VJfHxWIxHnzkPux66b/CFBkhhBAhCHiOiT9rkw0GAzZu3Bjoqcg4cffKO2E4/h7e138IY80pmLtYPPYDLW6eHbxCdoQQQsamEScmpaWlYBjGOX+ktrbWa9JRW1uLdevWjT5CMi5FRUWh4L6VuPOepaivr8ck1cRwh0QIIUQARpyYFBUVARhcjltcXOx1lYVMJsPTTz9NiQkhhBBC/DLqoZyCggKo1WqUlpZi165dwYyJEEIIIREqoDkmKpUKa9asCVYshJAIZRuw4dLxs+jpMCM+SYYpC26GJIqf3aYZhsHevXuRmZnpti6S4/jcuXMBDFaYlsvlvMRGSCQKePJrfn5+MOIghESoug+OwvDaIXR3mJ2PJSTJoHlsFbLvWRTScxsMBrAsi7q6OiiVymHHGYbBtm3bUFFRAQDYunUrGIahbS4ICaGgVH4lhJDRqPvgKN77/fBtK7o7zM7HQ5mcOPbWOnDggNvjJSUlLr0oW7Zs8bi7OSEkOEK/fSchhLhhG7DB8Jr3TR0Nrx2C3WbjKaLhDh486LIxqFqtpmEcQkKMekwIIWFx6fhZl+Ebd7o7zLh07CymLZ7DU1TfMhqNAAaHc4xGI0wmEwB43J+LEBIclJgQQsKix0dS4uAreQkVhmEAACzLOjcE3bBhAxQKBW0QSkgI0VAOISQs4pNkfrVL8LNdqKjVauffNRoNysrKwhgNIeMfJSaEkLCYsuBmn0lHQpIMUxbezFNErhyTXG+c7OroSSGEhAYlJoSQsJBESaB5bJXXNprHV0Es4aeeyY0cPSVDE5HOzk5alUNIiFFiQggJm+x7FmHlzx4a1nOSkCTDyp8/hOy7Q1vHxJdNmzbBYDA4f66rq8PmzZvDGBEh4x9NfiWEhFX2PYsw5675uHRscJWOY/iGj54Sg8EAo9GI6upqNDU1ARjcbsPRK7J9+3aUlJSgpKQESqUSBQUFNPGVkBCjxIQQEnZiiSQsS4I1Gg00Go3XSq7bt2/nMSJCCA3lEEIIIUQwKDEhhBBCiGBQYkIIIYQQwaDEhBBCCCGCQYkJIYQQQgSDEhNCCCGECAYlJoQQQggRDEpMCCGEECIYlJgQQgghRDCo8ishJOwGrAM4UX0SnW2dUKYqMT9vHqKk/Lw9sSwLnU4HuVwOo9EItVoNrVY77DgwWMJeq9VSWXpCQogSE0JIWH301sfY+/vX0dHW6XwsKVWJR3+2Dsu+c1fIz//MM89g+/btzv1xZs+eDZVKBY1GAwAoLS3Fzp07AQBarRa5ubmoqKhw7j5MCAkuGsohhITNR299jJeeLXNJSgCgo60TLz1bho/e+jjkMTQ1NbnsIOzoOQEAhmHAMAxYlnUe02g0ePnll0MeFyGRihITQkhYDFgHsPf3r3tts/f3r8M2YAtpHBUVFc6hG5ZlwbKss7cEAGpra2EymZw/q1Qq507EhJDgo8SEEBIWJ6pPDuspuVFHWydOGE7yEg/LsigtLcWuXbucwzQqlQpHjhxxDvMAg/NMcnJyeImJkEhEiQkhJCw6fSQlDh3t/rULBMuyqKys9NnOaDTCZDKhqKgo5DEREqlo8ishJCyUqUq/2iWl+NcuEHK53Dmck5ubCwBuV97s2LEDr776KuRyechjIiRSUY8JISQs5ufNQ5KP5CQpVYn5mnn8BPSNnJwclJWVDXu8pKQE//Ef/0GrcQgJMUpMCCFhESWNwqM/W+e1zfd+roUkShKyGIxGI3Jzc8EwjPMxmUzm8jMA6HQ6rFmzxpmUDF3FQwgJLhrKIYSEjaNOibs6Jt/7uRZ3PXBnSM8vl8uhUqmgUCicj9XV1WHdum8TJkcSIpfLnUuHjUajy8odQkjwUGJCCAmrZd+5C3fceztOGE6io70TSSmDwzeh7ClxUKlUKCoqcqn8mp+fj+3btwMYnBS7YcOGYc+jya+EhA4lJoSQsJNESbDozoVhObdGo/HY+yGXy3H69GmeIyIkstEcE0IIIYQIBiUmhBBCCBEMSkwIIYQQIhiUmBBCCCFEMAQ/+bW8vNxZZZFlWRQWFvr1HADOWgSOLcsJIYQQImyC7jFxJBharRZarRZqtRrFxcVen1NSUoLCwkIUFhY6ExJ3y/0IIYQQIjyCTkzKysqc+1cAg8v6dDqdx/Ysy6Kurg4syzof02q1MBgMwyo5EkIIIUR4BJuYOCosutssy1s56NraWpckxLFd+dBkhRBCCCHCJNg5Jp56OORyucckQy6X48iRIy6POZIYR4IyUhzHoaenZ1TPdae3t9flz0hH18M/4bpOFosFdrsdNpsNNpuN13N7w3Gc808hxeWJzWaD3W5Hb28v7HY7b+el/19kNEJx33AcB5FI5FdbwSYmnigUCphMJr/bl5WVYefOnaPeptxqtaK+vn5Uz/WmoaEh6K85ltH18E84rlNUVBQsFgvv5/WHUOO6kcViwcDAAC5cuBCW89P/LzIawb5voqOj/Wo35hKTkSQlJSUlWL16tcs8lZGSSqWYOXPmqJ9/o97eXjQ0NGDq1KmIi4sL2uuOVXQ9/BOu62SxWHD58mXExMQgNjY2ZOexWq349EMDWlvbkZaWgjvu1kAqlXpsz3EcLBYLYmJi/P4W5g3DMHj99deRk5MDAMjLy3P7ZcbR7umnnx7xOaKiopCZmYmYmJiA4/UX/f8ioxGK++bcuXN+txVsYuJp6IVlWb+GZfR6PTIzMwNKSgBAJBIhPj4+oNdwJy4uLiSvO1bR9fAP39dJLBZDLBZDIpFAIgnNpnr7/v4mSn6zC60tbc7H0tJTsf2X2/DI977r9jmO4RuRSBRwXAzD4Be/+AUqKioAAFu3bkVzc7Pb0gS//vWvoVKpRnxOiUQCsViMuLi4kCZ4ntD/LzIawbxvRvIFQtCJiWOb8RsTEV/bjTvmlTiSEpZlYTKZRj3PhBASGvv+/ia2b31m2OOtLW3Oxz0lJ8FSUlLi8gVmy5Ytbt8rDAYDvYcQwgPBrsoBgM2bN7uswNHr9S5vIAzDOGudOBiNRhiNRqjVajAMA4ZhoNPpoFAoeIubEOKb1WpFyW92eW1T8ptdGBgYCGkcBw8edPmyo1arPQ7jUGJCSOgJtscEAAoLC1FeXg69Xg8AqKmpcaniajAYoNPpnF2uLMti/fr1YFkWpaWlw16LECIcn3xY5TJ8405rSxs++aAK96y6KyQxGI1GAINJh9FodM5hu3EIWKfTQavVDvsiRAgJPkEnJoBrQlFQUOByzFER1sHdcmFCiDC1trT72c578hIIR1kClmWd7y8bNmyAQqFw/uzvvDZCSHAIeiiHEDJ+paWn+NkuNcSRDA7fOGg0GpSVlTl/rqys9DmvjRASPJSYEELC4s67l/pMOtLSU3HnPUtDFoOjJ+TGHhFHT4rBYKCkhBCeCX4ohxAyPkmlUmz/5Ta3q3Ic/vWZpxAVFbq3KUdPydCJrZ2dnS6JimOOGzDYewIMbjCq1WpHXbiREOIZJSaEkLBxLAV2V8fkX595Cg8/+p2Qx7Bp0yYYDAbnfLW6ujps3rwZwOCwztAek87OTjAMQ5PpCQkhSkwIIWH1yPe+iwcfuQ+ffDC4SscxfBPKnpKhtm/fjpKSEpSUlECpVKKgoGDYRHtgsJfk4MGDzr9TckLGG0t3H+o+PIqLX5+C2WxGz4I2LFqjQcJN/PYMUmJCCAm7qKiokC0J9sf27dt9tiksLKRkhIxbl09dwj//8y/o6/p2476jF1px4m0DVm59GLNvn8dbLDT5lRBCCIlgPZ1dePs3f3ZJShxsAzYc2rUPLeeaeIuHEhNCCCEkgtW+fwSW7j6Px+02O46/W81bPJSYEEIIIRHs4lenfba5cOQUD5EMosSEEEIIiWA2q+/9qGwh3rNqKEpMCCE+cRwX7hDGNLp+RMjSpk/03Waa7zbBQokJIcQjqVQKAOjp6QlzJGOb4/o5richQjKvYElQ2gQLLRcmhHgkkUigVCrR2toKAIiPj4dIJApzVIDNZoPFYgEwGKNQcRyHnp4etLa2QqlUCjpWErnSZkzCbY8ux+d7D7s9PvuO+Zh953ze4qHEhBDiVUZGBgA4kxMhsNvtGBgYQFRUFMRi4Xf8KpVK53UkRIiWrLsHKVMycOyfVWiuawAA3JSZhoX3aqBesZjXLySUmBBCvBKJRJgwYQLS0tJgtVrDHQ4AoLe3FxcuXEBmZibi4uLCHY5XUqmUekrImDBjSTZmLMkG28niVH09cubPRXx8PO9xUGJCCPGLRCIRzAes3W4HAMTExCA2NjbM0RAyvkRFR0ESHb70QPh9oIQQQgiJGJSYEEIIIUQwKDEhhBBCiGBQYkIIIYQQwRBxVJLQo6NHj4LjOERHRwftNTmOg9VqhVQqFUQ9iHCj6+Efuk6u6Hr4h64TGY1Q3Df9/f0QiURYtGiRz7a0KseLUPxHFolEQU10xjq6Hv6h6+SKrod/6DqR0QjFfSMSifz+TKUeE0IIIYQIBs0xIYQQQohgUGJCCCGEEMGgxIQQQgghgkGJCSGEEEIEgxITQgghhAgGJSaEEEIIEQxKTAghhBAiGJSYEEIIIUQwKDEhhBBCiGBQYkIIIYQQwaDEhBBCCCGCQYkJIYQQQgSDdhf2oby8HHK5HADAsiwKCwsDfk6gx1mWRWVlJfR6Pfbs2TO6X2yUhHY9HNcCABobG8EwDJ577jlne6EIx3UL533iC9/XY6zcJ/4IxbUT8r1CQmM09xFf9wn1mHhRXl4OANBqtdBqtVCr1SguLg7oOYEeNxqNqKysBMuyMJlMwflF/STE61FaWgqNRgOtVovt27dDqVRi27ZtwfmFgyQc1y2c94kv4bgeY+E+8Ucorp2Q7xUSGqO5j3i9Tzji0eLFizmTyeTy2KxZswJ6TqDHHSorK7kHH3zQ+y8QZEK8HuvXr+fKysqcP5eVlXGLFy/28ZvwKxzXzSEc94kv4bgeY+E+8Ucorp2DEO8VEhqjuY8c+LhPqMfEA4ZhwLKs265eg8EwqucEejychHo99uzZ49IFWVNTg7y8PL9/r1ALx3UTsnBdD6HfJ/4IxbUjkWcs3BM0x8QDhmHcPi6Xy8Gy7KieE+jxcBoL10Ov18NsNmPXrl1unxcO4bhuQiaE6yHE+8Qfobh2JPKMhXuCekxGSKFQjHh8zddzAj0eTkK4HizLQqfTgWEYFBQUjIkJjeG4bkLGx/UYi/eJP0Jx7UjkEdI9QYnJCI3mH87XcwI9Hk5CuB5yuRxardbZVZ+bmyuYzN+TcFw3IePjeozF+8Qfobh2JPII6Z6gxMQDlUrl9nGWZT0e8/WcQI+HkxCvB8uyKCkpcflw0Wg0YFlWMGOl4bhuQhaO6zEW7hN/hOLakcgzFu4JSkw8UKlUkMvlbsfjNBrNqJ4T6PFwEuL1YBgGr7zyyrDuegCC6aYPx3UTsnBcj7Fwn/gjFNeORJ6xcE9QYuLF5s2bXb5R6fV6aLVa588MwzjXg/v7nECPO4Sj201o10OtVmPTpk0uWf6BAwegVqsF8x8MCM91cxBS96wD39djrNwn/gjFtXMQ4r1CQmM095EDH/eJiOM4LuRnGcPKy8udb2g1NTXYvn2785her0dpaSnef/99v58T6HGGYaDX61FZWQmj0YhNmzZh7ty5KCgoCNJv7J3QrodjQqMDwzAoKioS3Ddhvq9buO8TX/i+HmPlPvFHsK+d0O8VEhojvY/4vE8oMSGEEEKIYNBQDiGEEEIEgxITQgghhAgGJSaEEEIIEQxKTAghhBAiGJSYEEIIIUQwKDEhhBBCiGBQYkIIIYQQwaDEhBBCCCGCQYkJIeMQwzBYu3YtcnNzsXbt2nCHM2Isy2LFihUey2ITQsYvSkwIGYdUKhUqKiqQk5MT7lBGxWQygWEY1NTUhDuUkCkpKQl3CIQIUlS4AyCEhI5KpRqTm7OpVCqcPn063GGElLvdXQkh1GNCCCG80+v1MJvN4Q6DEEGixIQQErHC0WvBMAx27NjB+3kJGStoKIeQCMSyLEpLS6FSqdDZ2QmGYbBlyxao1WqXdgzDYO/evVAqlejs7AQAl+3RAcBgMKC0tBQMw2DdunVYs2YNDAYDDAYDtFotVCoVduzYAYZhkJeXh+eeew46nQ5yuRxVVVVQqVQur8kwDIqLi1FbW+ucKwMARqNxRK8z9PVKSkowd+5cMAwDlUoFuVwOhUKBAwcOYM2aNV63bvf1+zme68+10uv1OHDgAACgtrYWW7duBYBhsfv770PIuMQRQsatHTt2cA8++KDLY42NjdzixYu52tpar485nj/U7373u2Gv57B8+XJux44dXFlZmfPnn//8587j69ev59avX+887rB48eJhjznauzvXSF7HZDJxixcv5qqqqlye7/i9amtrOZPJ5Pb3GenvN5Jr5fgd3BnJvw8h4xEN5RASYYqLi5GXl+fy7VulUiEvLw+lpaXOxwwGA3Q6HQwGg/OxLVu2wGg0Qq/XD3tdlUqFyspKaLVaAEBFRQVefPFF53GZTAaDwTCsdyInJweVlZVuX8+dkbyOTqcDy7LQaDTOxwoKCpyPq9VqyOVyt+cZye830mvljb//PoSMV5SYEBJBWJaFwWDA3Llzhx1bunQpamtrnT+rVCpoNBqXBMHxIe5pboZjmGRoWwelUgm5XD4s4fCUgHgyktdxDN24azea+SWefr/RXCt3RvLvQ8h4RXNMCIkgjg82hmGg0+mGHS8qKnL+XaVSYc+ePQAGPzAZhnF+yDrmUNxIoVB4Pb+v4/7y93XUavWw35NlWeexYJ13NNfKnZH8+xAyXlFiQkgEcXywajQarxM+HfR6PXQ6HbKzs52TRL0NfchkMq+v5++wiS/+vs7q1atRWloKg8HgHM45cOAANm3aNKrzevv9RnqthmJZ1jkhF/D/34eQ8YgSE0IiiKOXwJ/hBZ1Oh9LSUlRUVIx4uEUo5HI5Vq9eDb1ej6qqKgDA3LlzUVhYGNTzBHqtHCuQRvLvQ8h4RXNMCIkwmzZtcjtMAAxOvHQoLS3F6tWrh33QOoZCAAh+LxtHT8nOnTuxfft2bN++PehJCTDya3VjzwvLss7eEn//fQgZrygxIWScG/rhCAzW1pDL5cOSCr1e7zJ8oFAohn1z1+v10Gg0HquWeqtm2tnZOSwWb4+7i32kr6NSqVBWVgaDwQCj0egy92M0PP1+I71WN05kZRjGOezj778PIeOViOM4LtxBEEKCy1FUrLq6GizLIj8/H48++qjLslnHJnJKpRLA4LyGoRNCWZbFM888A7PZ7Hye44OxuLgY2dnZ2LJlCxiGwcsvv4yDBw8CAPLz812GSzzFolKpXB7XaDTQarVQq9XD2m/ZsgVyuXxEr+OIdcOGDS7LeB3y8/Px3HPP+ZwHYjQavf5+I7lWQ89VUlKCuro653Uf+m/jz78PIeMVJSaEkHGruLgYKpVqWBJRW1vrrAniqCxLCBEGSkwIIeOSo5S8p8SDZVnk5ubiyJEjQVstRAgJHM0xIYREJE+F4Agh4UWJCSFkXNJoNFAoFB5XDm3dupUKlhEiQDSUQwgZ1/R6PQwGg8tSXoZhUFBQMGzCKSEk/CgxIYQQQohg0FAOIYQQQgSDEhNCCCGECAYlJoQQQggRDEpMCCGEECIYlJgQQgghRDAoMSGEEEKIYFBiQgghhBDBoMSEEEIIIYLx/wOcVs1VNwg+TQAAAABJRU5ErkJggg==",
"text/plain": [
""
]
@@ -553,10 +583,9 @@
"source": [
"df_prepared = df.rename(columns={'learning_rate': 'learning rate', 'batch_size': 'batch size'})\n",
"fig, ax = plt.subplots(1, 1, figsize=set_size(width, subplots=(1,1)))\n",
- "sns.scatterplot(x=\"learning rate\", y=\"test/f1-score\",\n",
- " style=\"optimizer\", hue=\"batch size\",\n",
+ "sns.scatterplot(x=\"learning rate\", y=\"test/f1-score\", hue=\"batch size\",\n",
" palette=sns.cubehelix_palette(5, light=0.8, gamma=1.2),\n",
- " sizes=(5, 30), linewidth=0, s=15,\n",
+ " sizes=(5, 30), linewidth=0, s=50,\n",
" data=df_prepared, ax=ax)\n",
"ax.set_xscale('log')\n",
"ax.set_xticks([0.0001, 0.0003, 0.001, 0.003, 0.01, 0.1])\n",
@@ -911,7 +940,7 @@
},
{
"cell_type": "code",
- "execution_count": 57,
+ "execution_count": 23,
"id": "bb567230",
"metadata": {},
"outputs": [],
@@ -988,7 +1017,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.10.13"
+ "version": "3.11.6"
}
},
"nbformat": 4,
diff --git a/classification/classifier/k-fold-train.ipynb b/classification/classifier/k-fold-train.ipynb
index 3866abc..c6e5214 100644
--- a/classification/classifier/k-fold-train.ipynb
+++ b/classification/classifier/k-fold-train.ipynb
@@ -567,7 +567,7 @@
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": 5,
"id": "747ddcf2",
"metadata": {
"colab": {
@@ -588,67 +588,11 @@
"outputId": "e0fd939b-acea-4244-d17f-e9440ebd876a"
},
"outputs": [
- {
- "data": {
- "application/javascript": [
- "\n",
- " window._wandbApiKey = new Promise((resolve, reject) => {\n",
- " function loadScript(url) {\n",
- " return new Promise(function(resolve, reject) {\n",
- " let newScript = document.createElement(\"script\");\n",
- " newScript.onerror = reject;\n",
- " newScript.onload = resolve;\n",
- " document.body.appendChild(newScript);\n",
- " newScript.src = url;\n",
- " });\n",
- " }\n",
- " loadScript(\"https://cdn.jsdelivr.net/npm/postmate/build/postmate.min.js\").then(() => {\n",
- " const iframe = document.createElement('iframe')\n",
- " iframe.style.cssText = \"width:0;height:0;border:none\"\n",
- " document.body.appendChild(iframe)\n",
- " const handshake = new Postmate({\n",
- " container: iframe,\n",
- " url: 'https://wandb.ai/authorize'\n",
- " });\n",
- " const timeout = setTimeout(() => reject(\"Couldn't auto authenticate\"), 5000)\n",
- " handshake.then(function(child) {\n",
- " child.on('authorize', data => {\n",
- " clearTimeout(timeout)\n",
- " resolve(data)\n",
- " });\n",
- " });\n",
- " })\n",
- " });\n",
- " "
- ],
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
{
"name": "stderr",
"output_type": "stream",
"text": [
- "\u001b[34m\u001b[1mwandb\u001b[0m: Logging into wandb.ai. (Learn how to deploy a W&B server locally: https://wandb.me/wandb-server)\n",
- "\u001b[34m\u001b[1mwandb\u001b[0m: You can find your API key in your browser here: https://wandb.ai/authorize\n",
- "wandb: Paste an API key from your profile and hit enter, or press ctrl+c to quit:"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- " ··········\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "\u001b[34m\u001b[1mwandb\u001b[0m: Appending key for api.wandb.ai to your netrc file: /root/.netrc\n"
+ "\u001b[34m\u001b[1mwandb\u001b[0m: Currently logged in as: \u001b[33me1527193\u001b[0m (\u001b[33mflower-classification\u001b[0m). Use \u001b[1m`wandb login --relogin`\u001b[0m to force relogin\n"
]
},
{
@@ -657,7 +601,7 @@
"True"
]
},
- "execution_count": 2,
+ "execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
@@ -670,7 +614,7 @@
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": 6,
"id": "c37343d6",
"metadata": {
"executionInfo": {
@@ -753,7 +697,7 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": 7,
"id": "9kAalkZjkZss",
"metadata": {
"executionInfo": {
@@ -790,7 +734,7 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": 8,
"id": "hHslzk9d4dnq",
"metadata": {
"executionInfo": {
@@ -980,7 +924,7 @@
},
{
"cell_type": "code",
- "execution_count": 8,
+ "execution_count": 1,
"id": "5eff68bf",
"metadata": {
"executionInfo": {
@@ -1001,9 +945,9 @@
" # Style the plots (with grid this time)\n",
" width = 418\n",
" sns.set_theme(style='whitegrid',\n",
- " rc={'text.usetex': True, 'font.family': 'serif', 'axes.labelsize': 10,\n",
- " 'font.size': 10, 'legend.fontsize': 8,\n",
- " 'xtick.labelsize': 8, 'ytick.labelsize': 8})\n",
+ " rc={'text.usetex': True, 'font.family': 'serif', 'axes.labelsize': 16,\n",
+ " 'font.size': 16, 'legend.fontsize': 11,\n",
+ " 'xtick.labelsize': 12, 'ytick.labelsize': 12})\n",
"\n",
" fig_save_dir = '../../thesis/graphics/'\n",
" # Initialize a new wandb run\n",
@@ -1078,7 +1022,8 @@
" fpr, tpr, thresh = metrics.roc_curve(best_y_true, best_y_score)\n",
" ax.plot(fpr,\n",
" tpr,\n",
- " label=r\"Fold %d (AUC = %0.2f)\" % (fold, best_test_auc),\n",
+ " legend=False,\n",
+ " #label=r\"Fold %d (AUC = %0.2f)\" % (fold, best_test_auc),\n",
" lw=1,\n",
" alpha=0.5)\n",
" interp_tpr = np.interp(mean_fpr, fpr, tpr)\n",
@@ -1167,7 +1112,7 @@
},
{
"cell_type": "code",
- "execution_count": 12,
+ "execution_count": 2,
"id": "732a83df",
"metadata": {
"executionInfo": {
@@ -1219,7 +1164,7 @@
},
{
"cell_type": "code",
- "execution_count": 13,
+ "execution_count": 9,
"id": "9a01fef6",
"metadata": {
"colab": {
@@ -1243,8 +1188,8 @@
"name": "stdout",
"output_type": "stream",
"text": [
- "Create sweep with ID: bq0rvyfn\n",
- "Sweep URL: https://wandb.ai/flower-classification/classifier-optimized/sweeps/bq0rvyfn\n"
+ "Create sweep with ID: fp9p6hei\n",
+ "Sweep URL: https://wandb.ai/flower-classification/classifier-optimized/sweeps/fp9p6hei\n"
]
}
],
@@ -1254,7 +1199,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 10,
"id": "e80d1730",
"metadata": {
"colab": {
@@ -1382,7 +1327,7 @@
"name": "stderr",
"output_type": "stream",
"text": [
- "\u001b[34m\u001b[1mwandb\u001b[0m: Agent Starting Run: qxhbaz0l with config:\n",
+ "\u001b[34m\u001b[1mwandb\u001b[0m: Agent Starting Run: puf6qvta with config:\n",
"\u001b[34m\u001b[1mwandb\u001b[0m: \tbatch_size: 64\n",
"\u001b[34m\u001b[1mwandb\u001b[0m: \tepochs: 25\n",
"\u001b[34m\u001b[1mwandb\u001b[0m: \tk_splits: 10\n",
@@ -1394,7 +1339,8 @@
{
"data": {
"text/html": [
- "Tracking run with wandb version 0.15.0"
+ "wandb version 0.16.4 is available! To upgrade, please run:\n",
+ " $ pip install wandb --upgrade"
],
"text/plain": [
""
@@ -1406,7 +1352,7 @@
{
"data": {
"text/html": [
- "Run data is saved locally in /content/wandb/run-20230501_094215-qxhbaz0l"
+ "Tracking run with wandb version 0.16.1"
],
"text/plain": [
""
@@ -1418,7 +1364,19 @@
{
"data": {
"text/html": [
- "Syncing run good-sweep-1 to Weights & Biases (docs)
Sweep page: https://wandb.ai/flower-classification/classifier-optimized/sweeps/bq0rvyfn"
+ "Run data is saved locally in /home/zenon/Documents/master-thesis/classification/classifier/wandb/run-20240309_202329-puf6qvta"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "Syncing run faithful-sweep-1 to Weights & Biases (docs)
Sweep page: https://wandb.ai/flower-classification/classifier-optimized/sweeps/fp9p6hei"
],
"text/plain": [
""
@@ -1442,7 +1400,7 @@
{
"data": {
"text/html": [
- " View sweep at https://wandb.ai/flower-classification/classifier-optimized/sweeps/bq0rvyfn"
+ " View sweep at https://wandb.ai/flower-classification/classifier-optimized/sweeps/fp9p6hei"
],
"text/plain": [
""
@@ -1454,7 +1412,7 @@
{
"data": {
"text/html": [
- " View run at https://wandb.ai/flower-classification/classifier-optimized/runs/qxhbaz0l"
+ " View run at https://wandb.ai/flower-classification/classifier-optimized/runs/puf6qvta"
],
"text/plain": [
""
@@ -1467,274 +1425,58 @@
"name": "stderr",
"output_type": "stream",
"text": [
- "/usr/local/lib/python3.10/dist-packages/torch/utils/data/dataloader.py:561: UserWarning: This DataLoader will create 4 worker processes in total. Our suggested max number of worker in current system is 2, which is smaller than what this DataLoader is going to create. Please be aware that excessive worker creation might get DataLoader running slow or even freeze, lower the worker number to avoid potential slowness/freeze if necessary.\n",
- " warnings.warn(_create_warning_msg(\n"
+ "Traceback (most recent call last):\n",
+ " File \"/run/user/1000/ipykernel_27841/4074982736.py\", line 16, in train\n",
+ " dataset = build_dataset(config.batch_size)\n",
+ " ^^^^^^^^^^^^^\n",
+ "NameError: name 'build_dataset' is not defined\n"
]
},
{
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Dataset targets: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]\n",
- "Fold 1\n",
- "Dataset sizes: {'train': 813, 'test': 91}\n"
- ]
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "VBox(children=(Label(value='0.003 MB of 0.003 MB uploaded\\r'), FloatProgress(value=1.0, max=1.0)))"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " View run faithful-sweep-1 at: https://wandb.ai/flower-classification/classifier-optimized/runs/puf6qvta
Synced 5 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "Find logs at: ./wandb/run-20240309_202329-puf6qvta/logs"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
- "Downloading: \"https://download.pytorch.org/models/resnet50-11ad3fa6.pth\" to /root/.cache/torch/hub/checkpoints/resnet50-11ad3fa6.pth\n",
- "100%|██████████| 97.8M/97.8M [00:00<00:00, 206MB/s]\n"
+ "Run puf6qvta errored: NameError(\"name 'build_dataset' is not defined\")\n",
+ "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[32m\u001b[41mERROR\u001b[0m Run puf6qvta errored: NameError(\"name 'build_dataset' is not defined\")\n"
]
- },
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "e5784a8d425b45418ab8558ec841c9a3",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/25 [00:00, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "============= Diagnostic Run torch.onnx.export version 2.0.0+cu118 =============\n",
- "verbose: False, log level: Level.ERROR\n",
- "======================= 0 NONE 0 NOTE 0 WARNING 0 ERROR ========================\n",
- "\n",
- "Fold 2\n",
- "Dataset sizes: {'train': 813, 'test': 91}\n"
- ]
- },
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "c1e99ab4f9f442e993d5baadbbe41d4a",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/25 [00:00, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "============= Diagnostic Run torch.onnx.export version 2.0.0+cu118 =============\n",
- "verbose: False, log level: Level.ERROR\n",
- "======================= 0 NONE 0 NOTE 0 WARNING 0 ERROR ========================\n",
- "\n",
- "Fold 3\n",
- "Dataset sizes: {'train': 813, 'test': 91}\n"
- ]
- },
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "1104d0e89c06462b9a43701edca3b7ae",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/25 [00:00, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "============= Diagnostic Run torch.onnx.export version 2.0.0+cu118 =============\n",
- "verbose: False, log level: Level.ERROR\n",
- "======================= 0 NONE 0 NOTE 0 WARNING 0 ERROR ========================\n",
- "\n",
- "Fold 4\n",
- "Dataset sizes: {'train': 813, 'test': 91}\n"
- ]
- },
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "7b5565a86c1641a39312fb9c00d4e0a3",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/25 [00:00, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "============= Diagnostic Run torch.onnx.export version 2.0.0+cu118 =============\n",
- "verbose: False, log level: Level.ERROR\n",
- "======================= 0 NONE 0 NOTE 0 WARNING 0 ERROR ========================\n",
- "\n",
- "Fold 5\n",
- "Dataset sizes: {'train': 814, 'test': 90}\n"
- ]
- },
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "190d49b674df4f4694676ca83559c78c",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/25 [00:00, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "============= Diagnostic Run torch.onnx.export version 2.0.0+cu118 =============\n",
- "verbose: False, log level: Level.ERROR\n",
- "======================= 0 NONE 0 NOTE 0 WARNING 0 ERROR ========================\n",
- "\n",
- "Fold 6\n",
- "Dataset sizes: {'train': 814, 'test': 90}\n"
- ]
- },
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "11b6cc7d783e4d6f810293235b7d0243",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/25 [00:00, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "============= Diagnostic Run torch.onnx.export version 2.0.0+cu118 =============\n",
- "verbose: False, log level: Level.ERROR\n",
- "======================= 0 NONE 0 NOTE 0 WARNING 0 ERROR ========================\n",
- "\n",
- "Fold 7\n",
- "Dataset sizes: {'train': 814, 'test': 90}\n"
- ]
- },
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "716c02127a72437c836ec28a50800aec",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/25 [00:00, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "============= Diagnostic Run torch.onnx.export version 2.0.0+cu118 =============\n",
- "verbose: False, log level: Level.ERROR\n",
- "======================= 0 NONE 0 NOTE 0 WARNING 0 ERROR ========================\n",
- "\n",
- "Fold 8\n",
- "Dataset sizes: {'train': 814, 'test': 90}\n"
- ]
- },
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "bae73a0fa24a4400b2b93045f1423c99",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/25 [00:00, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "============= Diagnostic Run torch.onnx.export version 2.0.0+cu118 =============\n",
- "verbose: False, log level: Level.ERROR\n",
- "======================= 0 NONE 0 NOTE 0 WARNING 0 ERROR ========================\n",
- "\n",
- "Fold 9\n",
- "Dataset sizes: {'train': 814, 'test': 90}\n"
- ]
- },
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "bf26228e12614dbdb2ad1ba7ba44609c",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/25 [00:00, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "============= Diagnostic Run torch.onnx.export version 2.0.0+cu118 =============\n",
- "verbose: False, log level: Level.ERROR\n",
- "======================= 0 NONE 0 NOTE 0 WARNING 0 ERROR ========================\n",
- "\n",
- "Fold 10\n",
- "Dataset sizes: {'train': 814, 'test': 90}\n"
- ]
- },
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "c8e0dffe0021410e989d8390195b7f93",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/25 [00:00, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
}
],
"source": [
@@ -1774,7 +1516,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.10.13"
+ "version": "3.11.6"
},
"widgets": {
"application/vnd.jupyter.widget-state+json": {
diff --git a/classification/classifier/train.ipynb b/classification/classifier/train.ipynb
index 0609af6..c1ea74a 100644
--- a/classification/classifier/train.ipynb
+++ b/classification/classifier/train.ipynb
@@ -26,19 +26,10 @@
},
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": 2,
"id": "b88ce481",
"metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "/home/zenon/.local/share/miniconda3/lib/python3.7/site-packages/requests/__init__.py:104: RequestsDependencyWarning: urllib3 (1.26.13) or chardet (5.1.0)/charset_normalizer (2.0.4) doesn't match a supported version!\n",
- " RequestsDependencyWarning)\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"import torch\n",
"import torch.nn as nn\n",
@@ -438,12 +429,12 @@
},
{
"cell_type": "code",
- "execution_count": 44,
+ "execution_count": 6,
"id": "e507f97c",
"metadata": {},
"outputs": [],
"source": [
- "from evaluation.helpers import set_size\n",
+ "#from evaluation.helpers import set_size\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"import pandas as pd"
@@ -451,7 +442,7 @@
},
{
"cell_type": "code",
- "execution_count": 45,
+ "execution_count": 7,
"id": "bbc4bb1f",
"metadata": {},
"outputs": [],
@@ -499,6 +490,14 @@
"fig.savefig(fig_save_dir + 'classifier-cam.pdf', format='pdf', bbox_inches='tight')"
]
},
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "00485194-8f6e-4683-8b82-d6e081c897f2",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
{
"cell_type": "markdown",
"id": "4c521849",
@@ -511,7 +510,7 @@
},
{
"cell_type": "code",
- "execution_count": 57,
+ "execution_count": 58,
"id": "0d66d57b",
"metadata": {},
"outputs": [],
@@ -519,24 +518,66 @@
"# Style the plots (with grid this time)\n",
"width = 418\n",
"sns.set_theme(style='whitegrid',\n",
- " rc={'text.usetex': True, 'font.family': 'serif', 'axes.labelsize': 10,\n",
- " 'font.size': 10, 'legend.fontsize': 8,\n",
- " 'xtick.labelsize': 8, 'ytick.labelsize': 8})\n",
+ " rc={'text.usetex': True, 'font.family': 'serif', 'axes.labelsize': 16,\n",
+ " 'font.size': 16, 'legend.fontsize': 14,\n",
+ " 'xtick.labelsize': 12, 'ytick.labelsize': 12})\n",
"\n",
"fig_save_dir = '../../thesis/graphics/'"
]
},
{
"cell_type": "code",
- "execution_count": 58,
+ "execution_count": 59,
+ "id": "d571cd20-3051-4ef0-b2ba-ded824050cc9",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def set_size(width, fraction=1, subplots=(1, 1)):\n",
+ " \"\"\"Set figure dimensions to avoid scaling in LaTeX.\n",
+ "\n",
+ " Parameters\n",
+ " ----------\n",
+ " width: float\n",
+ " Document textwidth or columnwidth in pts\n",
+ " fraction: float, optional\n",
+ " Fraction of the width which you wish the figure to occupy\n",
+ "\n",
+ " Returns\n",
+ " -------\n",
+ " fig_dim: tuple\n",
+ " Dimensions of figure in inches\n",
+ " \"\"\"\n",
+ " # Width of figure (in pts)\n",
+ " fig_width_pt = width * fraction\n",
+ "\n",
+ " # Convert from pt to inches\n",
+ " inches_per_pt = 1 / 72.27\n",
+ "\n",
+ " # Golden ratio to set aesthetic figure height\n",
+ " # https://disq.us/p/2940ij3\n",
+ " golden_ratio = (5**.5 - 1) / 2\n",
+ "\n",
+ " # Figure width in inches\n",
+ " fig_width_in = fig_width_pt * inches_per_pt\n",
+ " # Figure height in inches\n",
+ " fig_height_in = fig_width_in * golden_ratio * (subplots[0] / subplots[1])\n",
+ "\n",
+ " fig_dim = (fig_width_in, fig_height_in)\n",
+ "\n",
+ " return fig_dim"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 60,
"id": "64f67d83",
"metadata": {},
"outputs": [
{
"data": {
- "image/png": "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\n",
+ "image/png": "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",
"text/plain": [
- ""
+ ""
]
},
"metadata": {},
@@ -548,7 +589,7 @@
"accs = results[['epoch', 'train_acc', 'val_acc']].rename(columns={'train_acc': 'train', 'val_acc': 'val'}).melt('epoch', var_name='metric', value_name='vals')\n",
"loss = results[['epoch', 'train_loss', 'val_loss']].rename(columns={'train_loss': 'train', 'val_loss': 'val'}).melt('epoch', var_name='metric', value_name='vals')\n",
"\n",
- "fig, ax = plt.subplots(1, 2, figsize=set_size(width, subplots=(1,2)))\n",
+ "fig, ax = plt.subplots(2, 1, figsize=set_size(width, subplots=(2,1)))\n",
"sns.lineplot(data=loss, x='epoch', y='vals', color='black',\n",
" style='metric', dashes=[\"\", (2,1)],\n",
" ax=ax[1], linewidth=1)\n",
@@ -556,10 +597,84 @@
" style='metric', dashes=[\"\", (2,1)],\n",
" ax=ax[0], linewidth=1)\n",
"ax[0].set_ylabel('accuracy')\n",
+ "ax[0].legend(title=False)\n",
"ax[1].set_ylabel('loss')\n",
+ "ax[1].legend(title=False)\n",
"fig.tight_layout()\n",
"fig.savefig(fig_save_dir + 'classifier-metrics.pdf', format='pdf', bbox_inches='tight')"
]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 61,
+ "id": "9ea2cbd9-ad60-49b1-b962-87a05c39cfc6",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "results = pd.read_csv('train-metrics.csv')\n",
+ "accs = results[['epoch', 'train_acc', 'val_acc']].rename(columns={'train_acc': 'train', 'val_acc': 'val'}).melt('epoch', var_name='metric', value_name='vals')\n",
+ "loss = results[['epoch', 'train_loss', 'val_loss']].rename(columns={'train_loss': 'train', 'val_loss': 'val'}).melt('epoch', var_name='metric', value_name='vals')\n",
+ "\n",
+ "fig, ax = plt.subplots(1, 1, figsize=set_size(width, subplots=(1,1)))\n",
+ "sns.lineplot(data=accs, x='epoch', y='vals', color='black',\n",
+ " style='metric', dashes=[\"\", (2,1)],\n",
+ " ax=ax, linewidth=1)\n",
+ "ax.set_ylabel('accuracy')\n",
+ "ax.legend(title=False)\n",
+ "fig.tight_layout()\n",
+ "fig.savefig(fig_save_dir + 'classifier-metrics-acc.pdf', format='pdf', bbox_inches='tight')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 62,
+ "id": "8fee1536-c38d-4a1a-b8a5-6140a8cbe451",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "results = pd.read_csv('train-metrics.csv')\n",
+ "accs = results[['epoch', 'train_acc', 'val_acc']].rename(columns={'train_acc': 'train', 'val_acc': 'val'}).melt('epoch', var_name='metric', value_name='vals')\n",
+ "loss = results[['epoch', 'train_loss', 'val_loss']].rename(columns={'train_loss': 'train', 'val_loss': 'val'}).melt('epoch', var_name='metric', value_name='vals')\n",
+ "\n",
+ "fig, ax = plt.subplots(1, 1, figsize=set_size(width, subplots=(1,1)))\n",
+ "sns.lineplot(data=loss, x='epoch', y='vals', color='black',\n",
+ " style='metric', dashes=[\"\", (2,1)],\n",
+ " ax=ax, linewidth=1)\n",
+ "ax.set_ylabel('loss')\n",
+ "ax.legend(title=False)\n",
+ "fig.tight_layout()\n",
+ "fig.savefig(fig_save_dir + 'classifier-metrics-loss.pdf', format='pdf', bbox_inches='tight')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "d9d554ab-f7e0-4837-8da1-07e2a17586df",
+ "metadata": {},
+ "outputs": [],
+ "source": []
}
],
"metadata": {
@@ -578,7 +693,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.7.15"
+ "version": "3.11.6"
}
},
"nbformat": 4,
diff --git a/classification/poetry.lock b/classification/poetry.lock
new file mode 100644
index 0000000..b6f27e9
--- /dev/null
+++ b/classification/poetry.lock
@@ -0,0 +1,4045 @@
+# This file is automatically @generated by Poetry 1.4.2 and should not be changed by hand.
+
+[[package]]
+name = "albumentations"
+version = "1.3.1"
+description = "Fast image augmentation library and easy to use wrapper around other libraries"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "albumentations-1.3.1-py3-none-any.whl", hash = "sha256:6b641d13733181d9ecdc29550e6ad580d1bfa9d25e2213a66940062f25e291bd"},
+ {file = "albumentations-1.3.1.tar.gz", hash = "sha256:a6a38388fe546c568071e8c82f414498e86c9ed03c08b58e7a88b31cf7a244c6"},
+]
+
+[package.dependencies]
+numpy = ">=1.11.1"
+opencv-python-headless = ">=4.1.1"
+PyYAML = "*"
+qudida = ">=0.0.4"
+scikit-image = ">=0.16.1"
+scipy = ">=1.1.0"
+
+[package.extras]
+develop = ["imgaug (>=0.4.0)", "pytest"]
+imgaug = ["imgaug (>=0.4.0)"]
+tests = ["pytest"]
+
+[[package]]
+name = "anyio"
+version = "4.2.0"
+description = "High level compatibility layer for multiple asynchronous event loop implementations"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "anyio-4.2.0-py3-none-any.whl", hash = "sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee"},
+ {file = "anyio-4.2.0.tar.gz", hash = "sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f"},
+]
+
+[package.dependencies]
+exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""}
+idna = ">=2.8"
+sniffio = ">=1.1"
+typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""}
+
+[package.extras]
+doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"]
+test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"]
+trio = ["trio (>=0.23)"]
+
+[[package]]
+name = "appdirs"
+version = "1.4.4"
+description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
+category = "main"
+optional = false
+python-versions = "*"
+files = [
+ {file = "appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"},
+ {file = "appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41"},
+]
+
+[[package]]
+name = "appnope"
+version = "0.1.3"
+description = "Disable App Nap on macOS >= 10.9"
+category = "main"
+optional = false
+python-versions = "*"
+files = [
+ {file = "appnope-0.1.3-py2.py3-none-any.whl", hash = "sha256:265a455292d0bd8a72453494fa24df5a11eb18373a60c7c0430889f22548605e"},
+ {file = "appnope-0.1.3.tar.gz", hash = "sha256:02bd91c4de869fbb1e1c50aafc4098827a7a54ab2f39d9dcba6c9547ed920e24"},
+]
+
+[[package]]
+name = "apscheduler"
+version = "3.10.4"
+description = "In-process task scheduler with Cron-like capabilities"
+category = "main"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "APScheduler-3.10.4-py3-none-any.whl", hash = "sha256:fb91e8a768632a4756a585f79ec834e0e27aad5860bac7eaa523d9ccefd87661"},
+ {file = "APScheduler-3.10.4.tar.gz", hash = "sha256:e6df071b27d9be898e486bc7940a7be50b4af2e9da7c08f0744a96d4bd4cef4a"},
+]
+
+[package.dependencies]
+pytz = "*"
+six = ">=1.4.0"
+tzlocal = ">=2.0,<3.0.0 || >=4.0.0"
+
+[package.extras]
+doc = ["sphinx", "sphinx-rtd-theme"]
+gevent = ["gevent"]
+mongodb = ["pymongo (>=3.0)"]
+redis = ["redis (>=3.0)"]
+rethinkdb = ["rethinkdb (>=2.4.0)"]
+sqlalchemy = ["sqlalchemy (>=1.4)"]
+testing = ["pytest", "pytest-asyncio", "pytest-cov", "pytest-tornado5"]
+tornado = ["tornado (>=4.3)"]
+twisted = ["twisted"]
+zookeeper = ["kazoo"]
+
+[[package]]
+name = "argon2-cffi"
+version = "23.1.0"
+description = "Argon2 for Python"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea"},
+ {file = "argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08"},
+]
+
+[package.dependencies]
+argon2-cffi-bindings = "*"
+
+[package.extras]
+dev = ["argon2-cffi[tests,typing]", "tox (>4)"]
+docs = ["furo", "myst-parser", "sphinx", "sphinx-copybutton", "sphinx-notfound-page"]
+tests = ["hypothesis", "pytest"]
+typing = ["mypy"]
+
+[[package]]
+name = "argon2-cffi-bindings"
+version = "21.2.0"
+description = "Low-level CFFI bindings for Argon2"
+category = "main"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f"},
+ {file = "argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93"},
+ {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3e385d1c39c520c08b53d63300c3ecc28622f076f4c2b0e6d7e796e9f6502194"},
+ {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c3e3cc67fdb7d82c4718f19b4e7a87123caf8a93fde7e23cf66ac0337d3cb3f"},
+ {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a22ad9800121b71099d0fb0a65323810a15f2e292f2ba450810a7316e128ee5"},
+ {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f9f8b450ed0547e3d473fdc8612083fd08dd2120d6ac8f73828df9b7d45bb351"},
+ {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:93f9bf70084f97245ba10ee36575f0c3f1e7d7724d67d8e5b08e61787c320ed7"},
+ {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3b9ef65804859d335dc6b31582cad2c5166f0c3e7975f324d9ffaa34ee7e6583"},
+ {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4966ef5848d820776f5f562a7d45fdd70c2f330c961d0d745b784034bd9f48d"},
+ {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef543a89dee4db46a1a6e206cd015360e5a75822f76df533845c3cbaf72670"},
+ {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2937d286e2ad0cc79a7087d3c272832865f779430e0cc2b4f3718d3159b0cb"},
+ {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a"},
+]
+
+[package.dependencies]
+cffi = ">=1.0.1"
+
+[package.extras]
+dev = ["cogapp", "pre-commit", "pytest", "wheel"]
+tests = ["pytest"]
+
+[[package]]
+name = "argparse"
+version = "1.4.0"
+description = "Python command-line parsing library"
+category = "main"
+optional = false
+python-versions = "*"
+files = [
+ {file = "argparse-1.4.0-py2.py3-none-any.whl", hash = "sha256:c31647edb69fd3d465a847ea3157d37bed1f95f19760b11a47aa91c04b666314"},
+ {file = "argparse-1.4.0.tar.gz", hash = "sha256:62b089a55be1d8949cd2bc7e0df0bddb9e028faefc8c32038cc84862aefdd6e4"},
+]
+
+[[package]]
+name = "arrow"
+version = "1.3.0"
+description = "Better dates & times for Python"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80"},
+ {file = "arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85"},
+]
+
+[package.dependencies]
+python-dateutil = ">=2.7.0"
+types-python-dateutil = ">=2.8.10"
+
+[package.extras]
+doc = ["doc8", "sphinx (>=7.0.0)", "sphinx-autobuild", "sphinx-autodoc-typehints", "sphinx_rtd_theme (>=1.3.0)"]
+test = ["dateparser (>=1.0.0,<2.0.0)", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytz (==2021.1)", "simplejson (>=3.0.0,<4.0.0)"]
+
+[[package]]
+name = "asttokens"
+version = "2.4.1"
+description = "Annotate AST trees with source code positions"
+category = "main"
+optional = false
+python-versions = "*"
+files = [
+ {file = "asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24"},
+ {file = "asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0"},
+]
+
+[package.dependencies]
+six = ">=1.12.0"
+
+[package.extras]
+astroid = ["astroid (>=1,<2)", "astroid (>=2,<4)"]
+test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"]
+
+[[package]]
+name = "async-lru"
+version = "2.0.4"
+description = "Simple LRU cache for asyncio"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "async-lru-2.0.4.tar.gz", hash = "sha256:b8a59a5df60805ff63220b2a0c5b5393da5521b113cd5465a44eb037d81a5627"},
+ {file = "async_lru-2.0.4-py3-none-any.whl", hash = "sha256:ff02944ce3c288c5be660c42dbcca0742b32c3b279d6dceda655190240b99224"},
+]
+
+[package.dependencies]
+typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""}
+
+[[package]]
+name = "attrs"
+version = "23.1.0"
+description = "Classes Without Boilerplate"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "attrs-23.1.0-py3-none-any.whl", hash = "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"},
+ {file = "attrs-23.1.0.tar.gz", hash = "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015"},
+]
+
+[package.extras]
+cov = ["attrs[tests]", "coverage[toml] (>=5.3)"]
+dev = ["attrs[docs,tests]", "pre-commit"]
+docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"]
+tests = ["attrs[tests-no-zope]", "zope-interface"]
+tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"]
+
+[[package]]
+name = "babel"
+version = "2.14.0"
+description = "Internationalization utilities"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "Babel-2.14.0-py3-none-any.whl", hash = "sha256:efb1a25b7118e67ce3a259bed20545c29cb68be8ad2c784c83689981b7a57287"},
+ {file = "Babel-2.14.0.tar.gz", hash = "sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363"},
+]
+
+[package.extras]
+dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"]
+
+[[package]]
+name = "beautifulsoup4"
+version = "4.12.2"
+description = "Screen-scraping library"
+category = "main"
+optional = false
+python-versions = ">=3.6.0"
+files = [
+ {file = "beautifulsoup4-4.12.2-py3-none-any.whl", hash = "sha256:bd2520ca0d9d7d12694a53d44ac482d181b4ec1888909b035a3dbf40d0f57d4a"},
+ {file = "beautifulsoup4-4.12.2.tar.gz", hash = "sha256:492bbc69dca35d12daac71c4db1bfff0c876c00ef4a2ffacce226d4638eb72da"},
+]
+
+[package.dependencies]
+soupsieve = ">1.2"
+
+[package.extras]
+html5lib = ["html5lib"]
+lxml = ["lxml"]
+
+[[package]]
+name = "bleach"
+version = "6.1.0"
+description = "An easy safelist-based HTML-sanitizing tool."
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "bleach-6.1.0-py3-none-any.whl", hash = "sha256:3225f354cfc436b9789c66c4ee030194bee0568fbf9cbdad3bc8b5c26c5f12b6"},
+ {file = "bleach-6.1.0.tar.gz", hash = "sha256:0a31f1837963c41d46bbf1331b8778e1308ea0791db03cc4e7357b97cf42a8fe"},
+]
+
+[package.dependencies]
+six = ">=1.9.0"
+webencodings = "*"
+
+[package.extras]
+css = ["tinycss2 (>=1.1.0,<1.3)"]
+
+[[package]]
+name = "blinker"
+version = "1.7.0"
+description = "Fast, simple object-to-object and broadcast signaling"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "blinker-1.7.0-py3-none-any.whl", hash = "sha256:c3f865d4d54db7abc53758a01601cf343fe55b84c1de4e3fa910e420b438d5b9"},
+ {file = "blinker-1.7.0.tar.gz", hash = "sha256:e6820ff6fa4e4d1d8e2747c2283749c3f547e4fee112b98555cdcdae32996182"},
+]
+
+[[package]]
+name = "certifi"
+version = "2023.11.17"
+description = "Python package for providing Mozilla's CA Bundle."
+category = "main"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "certifi-2023.11.17-py3-none-any.whl", hash = "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474"},
+ {file = "certifi-2023.11.17.tar.gz", hash = "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1"},
+]
+
+[[package]]
+name = "cffi"
+version = "1.16.0"
+description = "Foreign Function Interface for Python calling C code."
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "cffi-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088"},
+ {file = "cffi-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9"},
+ {file = "cffi-1.16.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673"},
+ {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896"},
+ {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684"},
+ {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7"},
+ {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614"},
+ {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743"},
+ {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d"},
+ {file = "cffi-1.16.0-cp310-cp310-win32.whl", hash = "sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a"},
+ {file = "cffi-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1"},
+ {file = "cffi-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404"},
+ {file = "cffi-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417"},
+ {file = "cffi-1.16.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627"},
+ {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936"},
+ {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d"},
+ {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56"},
+ {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e"},
+ {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc"},
+ {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb"},
+ {file = "cffi-1.16.0-cp311-cp311-win32.whl", hash = "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab"},
+ {file = "cffi-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba"},
+ {file = "cffi-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956"},
+ {file = "cffi-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e"},
+ {file = "cffi-1.16.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e"},
+ {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2"},
+ {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357"},
+ {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6"},
+ {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969"},
+ {file = "cffi-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520"},
+ {file = "cffi-1.16.0-cp312-cp312-win32.whl", hash = "sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b"},
+ {file = "cffi-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235"},
+ {file = "cffi-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc"},
+ {file = "cffi-1.16.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0"},
+ {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b"},
+ {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c"},
+ {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b"},
+ {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324"},
+ {file = "cffi-1.16.0-cp38-cp38-win32.whl", hash = "sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a"},
+ {file = "cffi-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36"},
+ {file = "cffi-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed"},
+ {file = "cffi-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2"},
+ {file = "cffi-1.16.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872"},
+ {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8"},
+ {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f"},
+ {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4"},
+ {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098"},
+ {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000"},
+ {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe"},
+ {file = "cffi-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4"},
+ {file = "cffi-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8"},
+ {file = "cffi-1.16.0.tar.gz", hash = "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0"},
+]
+
+[package.dependencies]
+pycparser = "*"
+
+[[package]]
+name = "charset-normalizer"
+version = "3.3.2"
+description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
+category = "main"
+optional = false
+python-versions = ">=3.7.0"
+files = [
+ {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"},
+ {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"},
+ {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"},
+ {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"},
+ {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"},
+ {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"},
+ {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"},
+ {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"},
+]
+
+[[package]]
+name = "click"
+version = "8.1.7"
+description = "Composable command line interface toolkit"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"},
+ {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"},
+]
+
+[package.dependencies]
+colorama = {version = "*", markers = "platform_system == \"Windows\""}
+
+[[package]]
+name = "colorama"
+version = "0.4.6"
+description = "Cross-platform colored terminal text."
+category = "main"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
+files = [
+ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
+ {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
+]
+
+[[package]]
+name = "coloredlogs"
+version = "15.0.1"
+description = "Colored terminal output for Python's logging module"
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+files = [
+ {file = "coloredlogs-15.0.1-py2.py3-none-any.whl", hash = "sha256:612ee75c546f53e92e70049c9dbfcc18c935a2b9a53b66085ce9ef6a6e5c0934"},
+ {file = "coloredlogs-15.0.1.tar.gz", hash = "sha256:7c991aa71a4577af2f82600d8f8f3a89f936baeaf9b50a9c197da014e5bf16b0"},
+]
+
+[package.dependencies]
+humanfriendly = ">=9.1"
+
+[package.extras]
+cron = ["capturer (>=2.4)"]
+
+[[package]]
+name = "comm"
+version = "0.2.0"
+description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc."
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "comm-0.2.0-py3-none-any.whl", hash = "sha256:2da8d9ebb8dd7bfc247adaff99f24dce705638a8042b85cb995066793e391001"},
+ {file = "comm-0.2.0.tar.gz", hash = "sha256:a517ea2ca28931c7007a7a99c562a0fa5883cfb48963140cf642c41c948498be"},
+]
+
+[package.dependencies]
+traitlets = ">=4"
+
+[package.extras]
+test = ["pytest"]
+
+[[package]]
+name = "contourpy"
+version = "1.2.0"
+description = "Python library for calculating contours of 2D quadrilateral grids"
+category = "main"
+optional = false
+python-versions = ">=3.9"
+files = [
+ {file = "contourpy-1.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0274c1cb63625972c0c007ab14dd9ba9e199c36ae1a231ce45d725cbcbfd10a8"},
+ {file = "contourpy-1.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ab459a1cbbf18e8698399c595a01f6dcc5c138220ca3ea9e7e6126232d102bb4"},
+ {file = "contourpy-1.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fdd887f17c2f4572ce548461e4f96396681212d858cae7bd52ba3310bc6f00f"},
+ {file = "contourpy-1.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5d16edfc3fc09968e09ddffada434b3bf989bf4911535e04eada58469873e28e"},
+ {file = "contourpy-1.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c203f617abc0dde5792beb586f827021069fb6d403d7f4d5c2b543d87edceb9"},
+ {file = "contourpy-1.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b69303ceb2e4d4f146bf82fda78891ef7bcd80c41bf16bfca3d0d7eb545448aa"},
+ {file = "contourpy-1.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:884c3f9d42d7218304bc74a8a7693d172685c84bd7ab2bab1ee567b769696df9"},
+ {file = "contourpy-1.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4a1b1208102be6e851f20066bf0e7a96b7d48a07c9b0cfe6d0d4545c2f6cadab"},
+ {file = "contourpy-1.2.0-cp310-cp310-win32.whl", hash = "sha256:34b9071c040d6fe45d9826cbbe3727d20d83f1b6110d219b83eb0e2a01d79488"},
+ {file = "contourpy-1.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:bd2f1ae63998da104f16a8b788f685e55d65760cd1929518fd94cd682bf03e41"},
+ {file = "contourpy-1.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:dd10c26b4eadae44783c45ad6655220426f971c61d9b239e6f7b16d5cdaaa727"},
+ {file = "contourpy-1.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5c6b28956b7b232ae801406e529ad7b350d3f09a4fde958dfdf3c0520cdde0dd"},
+ {file = "contourpy-1.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebeac59e9e1eb4b84940d076d9f9a6cec0064e241818bcb6e32124cc5c3e377a"},
+ {file = "contourpy-1.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:139d8d2e1c1dd52d78682f505e980f592ba53c9f73bd6be102233e358b401063"},
+ {file = "contourpy-1.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1e9dc350fb4c58adc64df3e0703ab076f60aac06e67d48b3848c23647ae4310e"},
+ {file = "contourpy-1.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18fc2b4ed8e4a8fe849d18dce4bd3c7ea637758c6343a1f2bae1e9bd4c9f4686"},
+ {file = "contourpy-1.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:16a7380e943a6d52472096cb7ad5264ecee36ed60888e2a3d3814991a0107286"},
+ {file = "contourpy-1.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8d8faf05be5ec8e02a4d86f616fc2a0322ff4a4ce26c0f09d9f7fb5330a35c95"},
+ {file = "contourpy-1.2.0-cp311-cp311-win32.whl", hash = "sha256:67b7f17679fa62ec82b7e3e611c43a016b887bd64fb933b3ae8638583006c6d6"},
+ {file = "contourpy-1.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:99ad97258985328b4f207a5e777c1b44a83bfe7cf1f87b99f9c11d4ee477c4de"},
+ {file = "contourpy-1.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:575bcaf957a25d1194903a10bc9f316c136c19f24e0985a2b9b5608bdf5dbfe0"},
+ {file = "contourpy-1.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9e6c93b5b2dbcedad20a2f18ec22cae47da0d705d454308063421a3b290d9ea4"},
+ {file = "contourpy-1.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:464b423bc2a009088f19bdf1f232299e8b6917963e2b7e1d277da5041f33a779"},
+ {file = "contourpy-1.2.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:68ce4788b7d93e47f84edd3f1f95acdcd142ae60bc0e5493bfd120683d2d4316"},
+ {file = "contourpy-1.2.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d7d1f8871998cdff5d2ff6a087e5e1780139abe2838e85b0b46b7ae6cc25399"},
+ {file = "contourpy-1.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e739530c662a8d6d42c37c2ed52a6f0932c2d4a3e8c1f90692ad0ce1274abe0"},
+ {file = "contourpy-1.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:247b9d16535acaa766d03037d8e8fb20866d054d3c7fbf6fd1f993f11fc60ca0"},
+ {file = "contourpy-1.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:461e3ae84cd90b30f8d533f07d87c00379644205b1d33a5ea03381edc4b69431"},
+ {file = "contourpy-1.2.0-cp312-cp312-win32.whl", hash = "sha256:1c2559d6cffc94890b0529ea7eeecc20d6fadc1539273aa27faf503eb4656d8f"},
+ {file = "contourpy-1.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:491b1917afdd8638a05b611a56d46587d5a632cabead889a5440f7c638bc6ed9"},
+ {file = "contourpy-1.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5fd1810973a375ca0e097dee059c407913ba35723b111df75671a1976efa04bc"},
+ {file = "contourpy-1.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:999c71939aad2780f003979b25ac5b8f2df651dac7b38fb8ce6c46ba5abe6ae9"},
+ {file = "contourpy-1.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7caf9b241464c404613512d5594a6e2ff0cc9cb5615c9475cc1d9b514218ae8"},
+ {file = "contourpy-1.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:266270c6f6608340f6c9836a0fb9b367be61dde0c9a9a18d5ece97774105ff3e"},
+ {file = "contourpy-1.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbd50d0a0539ae2e96e537553aff6d02c10ed165ef40c65b0e27e744a0f10af8"},
+ {file = "contourpy-1.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11f8d2554e52f459918f7b8e6aa20ec2a3bce35ce95c1f0ef4ba36fbda306df5"},
+ {file = "contourpy-1.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ce96dd400486e80ac7d195b2d800b03e3e6a787e2a522bfb83755938465a819e"},
+ {file = "contourpy-1.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6d3364b999c62f539cd403f8123ae426da946e142312a514162adb2addd8d808"},
+ {file = "contourpy-1.2.0-cp39-cp39-win32.whl", hash = "sha256:1c88dfb9e0c77612febebb6ac69d44a8d81e3dc60f993215425b62c1161353f4"},
+ {file = "contourpy-1.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:78e6ad33cf2e2e80c5dfaaa0beec3d61face0fb650557100ee36db808bfa6843"},
+ {file = "contourpy-1.2.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:be16975d94c320432657ad2402f6760990cb640c161ae6da1363051805fa8108"},
+ {file = "contourpy-1.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b95a225d4948b26a28c08307a60ac00fb8671b14f2047fc5476613252a129776"},
+ {file = "contourpy-1.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:0d7e03c0f9a4f90dc18d4e77e9ef4ec7b7bbb437f7f675be8e530d65ae6ef956"},
+ {file = "contourpy-1.2.0.tar.gz", hash = "sha256:171f311cb758de7da13fc53af221ae47a5877be5a0843a9fe150818c51ed276a"},
+]
+
+[package.dependencies]
+numpy = ">=1.20,<2.0"
+
+[package.extras]
+bokeh = ["bokeh", "selenium"]
+docs = ["furo", "sphinx (>=7.2)", "sphinx-copybutton"]
+mypy = ["contourpy[bokeh,docs]", "docutils-stubs", "mypy (==1.6.1)", "types-Pillow"]
+test = ["Pillow", "contourpy[test-no-images]", "matplotlib"]
+test-no-images = ["pytest", "pytest-cov", "pytest-xdist", "wurlitzer"]
+
+[[package]]
+name = "cycler"
+version = "0.12.1"
+description = "Composable style cycles"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30"},
+ {file = "cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c"},
+]
+
+[package.extras]
+docs = ["ipython", "matplotlib", "numpydoc", "sphinx"]
+tests = ["pytest", "pytest-cov", "pytest-xdist"]
+
+[[package]]
+name = "debugpy"
+version = "1.8.0"
+description = "An implementation of the Debug Adapter Protocol for Python"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "debugpy-1.8.0-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:7fb95ca78f7ac43393cd0e0f2b6deda438ec7c5e47fa5d38553340897d2fbdfb"},
+ {file = "debugpy-1.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef9ab7df0b9a42ed9c878afd3eaaff471fce3fa73df96022e1f5c9f8f8c87ada"},
+ {file = "debugpy-1.8.0-cp310-cp310-win32.whl", hash = "sha256:a8b7a2fd27cd9f3553ac112f356ad4ca93338feadd8910277aff71ab24d8775f"},
+ {file = "debugpy-1.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:5d9de202f5d42e62f932507ee8b21e30d49aae7e46d5b1dd5c908db1d7068637"},
+ {file = "debugpy-1.8.0-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:ef54404365fae8d45cf450d0544ee40cefbcb9cb85ea7afe89a963c27028261e"},
+ {file = "debugpy-1.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60009b132c91951354f54363f8ebdf7457aeb150e84abba5ae251b8e9f29a8a6"},
+ {file = "debugpy-1.8.0-cp311-cp311-win32.whl", hash = "sha256:8cd0197141eb9e8a4566794550cfdcdb8b3db0818bdf8c49a8e8f8053e56e38b"},
+ {file = "debugpy-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:a64093656c4c64dc6a438e11d59369875d200bd5abb8f9b26c1f5f723622e153"},
+ {file = "debugpy-1.8.0-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:b05a6b503ed520ad58c8dc682749113d2fd9f41ffd45daec16e558ca884008cd"},
+ {file = "debugpy-1.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c6fb41c98ec51dd010d7ed650accfd07a87fe5e93eca9d5f584d0578f28f35f"},
+ {file = "debugpy-1.8.0-cp38-cp38-win32.whl", hash = "sha256:46ab6780159eeabb43c1495d9c84cf85d62975e48b6ec21ee10c95767c0590aa"},
+ {file = "debugpy-1.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:bdc5ef99d14b9c0fcb35351b4fbfc06ac0ee576aeab6b2511702e5a648a2e595"},
+ {file = "debugpy-1.8.0-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:61eab4a4c8b6125d41a34bad4e5fe3d2cc145caecd63c3fe953be4cc53e65bf8"},
+ {file = "debugpy-1.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:125b9a637e013f9faac0a3d6a82bd17c8b5d2c875fb6b7e2772c5aba6d082332"},
+ {file = "debugpy-1.8.0-cp39-cp39-win32.whl", hash = "sha256:57161629133113c97b387382045649a2b985a348f0c9366e22217c87b68b73c6"},
+ {file = "debugpy-1.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:e3412f9faa9ade82aa64a50b602544efcba848c91384e9f93497a458767e6926"},
+ {file = "debugpy-1.8.0-py2.py3-none-any.whl", hash = "sha256:9c9b0ac1ce2a42888199df1a1906e45e6f3c9555497643a85e0bf2406e3ffbc4"},
+ {file = "debugpy-1.8.0.zip", hash = "sha256:12af2c55b419521e33d5fb21bd022df0b5eb267c3e178f1d374a63a2a6bdccd0"},
+]
+
+[[package]]
+name = "decorator"
+version = "5.1.1"
+description = "Decorators for Humans"
+category = "main"
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"},
+ {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"},
+]
+
+[[package]]
+name = "defusedxml"
+version = "0.7.1"
+description = "XML bomb protection for Python stdlib modules"
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+files = [
+ {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"},
+ {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"},
+]
+
+[[package]]
+name = "docker-pycreds"
+version = "0.4.0"
+description = "Python bindings for the docker credentials store API"
+category = "main"
+optional = false
+python-versions = "*"
+files = [
+ {file = "docker-pycreds-0.4.0.tar.gz", hash = "sha256:6ce3270bcaf404cc4c3e27e4b6c70d3521deae82fb508767870fdbf772d584d4"},
+ {file = "docker_pycreds-0.4.0-py2.py3-none-any.whl", hash = "sha256:7266112468627868005106ec19cd0d722702d2b7d5912a28e19b826c3d37af49"},
+]
+
+[package.dependencies]
+six = ">=1.4.0"
+
+[[package]]
+name = "exceptiongroup"
+version = "1.2.0"
+description = "Backport of PEP 654 (exception groups)"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"},
+ {file = "exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"},
+]
+
+[package.extras]
+test = ["pytest (>=6)"]
+
+[[package]]
+name = "executing"
+version = "2.0.1"
+description = "Get the currently executing AST node of a frame, and other information"
+category = "main"
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "executing-2.0.1-py2.py3-none-any.whl", hash = "sha256:eac49ca94516ccc753f9fb5ce82603156e590b27525a8bc32cce8ae302eb61bc"},
+ {file = "executing-2.0.1.tar.gz", hash = "sha256:35afe2ce3affba8ee97f2d69927fa823b08b472b7b994e36a52a964b93d16147"},
+]
+
+[package.extras]
+tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich"]
+
+[[package]]
+name = "fastjsonschema"
+version = "2.19.1"
+description = "Fastest Python implementation of JSON schema"
+category = "main"
+optional = false
+python-versions = "*"
+files = [
+ {file = "fastjsonschema-2.19.1-py3-none-any.whl", hash = "sha256:3672b47bc94178c9f23dbb654bf47440155d4db9df5f7bc47643315f9c405cd0"},
+ {file = "fastjsonschema-2.19.1.tar.gz", hash = "sha256:e3126a94bdc4623d3de4485f8d468a12f02a67921315ddc87836d6e456dc789d"},
+]
+
+[package.extras]
+devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benchmark", "pytest-cache", "validictory"]
+
+[[package]]
+name = "filelock"
+version = "3.13.1"
+description = "A platform independent file lock."
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "filelock-3.13.1-py3-none-any.whl", hash = "sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c"},
+ {file = "filelock-3.13.1.tar.gz", hash = "sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e"},
+]
+
+[package.extras]
+docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.24)"]
+testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)"]
+typing = ["typing-extensions (>=4.8)"]
+
+[[package]]
+name = "flask"
+version = "2.3.3"
+description = "A simple framework for building complex web applications."
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "flask-2.3.3-py3-none-any.whl", hash = "sha256:f69fcd559dc907ed196ab9df0e48471709175e696d6e698dd4dbe940f96ce66b"},
+ {file = "flask-2.3.3.tar.gz", hash = "sha256:09c347a92aa7ff4a8e7f3206795f30d826654baf38b873d0744cd571ca609efc"},
+]
+
+[package.dependencies]
+blinker = ">=1.6.2"
+click = ">=8.1.3"
+itsdangerous = ">=2.1.2"
+Jinja2 = ">=3.1.2"
+Werkzeug = ">=2.3.7"
+
+[package.extras]
+async = ["asgiref (>=3.2)"]
+dotenv = ["python-dotenv"]
+
+[[package]]
+name = "flatbuffers"
+version = "23.5.26"
+description = "The FlatBuffers serialization format for Python"
+category = "main"
+optional = false
+python-versions = "*"
+files = [
+ {file = "flatbuffers-23.5.26-py2.py3-none-any.whl", hash = "sha256:c0ff356da363087b915fde4b8b45bdda73432fc17cddb3c8157472eab1422ad1"},
+ {file = "flatbuffers-23.5.26.tar.gz", hash = "sha256:9ea1144cac05ce5d86e2859f431c6cd5e66cd9c78c558317c7955fb8d4c78d89"},
+]
+
+[[package]]
+name = "fonttools"
+version = "4.47.0"
+description = "Tools to manipulate font files"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "fonttools-4.47.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2d2404107626f97a221dc1a65b05396d2bb2ce38e435f64f26ed2369f68675d9"},
+ {file = "fonttools-4.47.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c01f409be619a9a0f5590389e37ccb58b47264939f0e8d58bfa1f3ba07d22671"},
+ {file = "fonttools-4.47.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d986b66ff722ef675b7ee22fbe5947a41f60a61a4da15579d5e276d897fbc7fa"},
+ {file = "fonttools-4.47.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e8acf6dd0434b211b3bd30d572d9e019831aae17a54016629fa8224783b22df8"},
+ {file = "fonttools-4.47.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:495369c660e0c27233e3c572269cbe520f7f4978be675f990f4005937337d391"},
+ {file = "fonttools-4.47.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c59227d7ba5b232281c26ae04fac2c73a79ad0e236bca5c44aae904a18f14faf"},
+ {file = "fonttools-4.47.0-cp310-cp310-win32.whl", hash = "sha256:59a6c8b71a245800e923cb684a2dc0eac19c56493e2f896218fcf2571ed28984"},
+ {file = "fonttools-4.47.0-cp310-cp310-win_amd64.whl", hash = "sha256:52c82df66201f3a90db438d9d7b337c7c98139de598d0728fb99dab9fd0495ca"},
+ {file = "fonttools-4.47.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:854421e328d47d70aa5abceacbe8eef231961b162c71cbe7ff3f47e235e2e5c5"},
+ {file = "fonttools-4.47.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:511482df31cfea9f697930f61520f6541185fa5eeba2fa760fe72e8eee5af88b"},
+ {file = "fonttools-4.47.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce0e2c88c8c985b7b9a7efcd06511fb0a1fe3ddd9a6cd2895ef1dbf9059719d7"},
+ {file = "fonttools-4.47.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7a0a8848726956e9d9fb18c977a279013daadf0cbb6725d2015a6dd57527992"},
+ {file = "fonttools-4.47.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e869da810ae35afb3019baa0d0306cdbab4760a54909c89ad8904fa629991812"},
+ {file = "fonttools-4.47.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dd23848f877c3754f53a4903fb7a593ed100924f9b4bff7d5a4e2e8a7001ae11"},
+ {file = "fonttools-4.47.0-cp311-cp311-win32.whl", hash = "sha256:bf1810635c00f7c45d93085611c995fc130009cec5abdc35b327156aa191f982"},
+ {file = "fonttools-4.47.0-cp311-cp311-win_amd64.whl", hash = "sha256:61df4dee5d38ab65b26da8efd62d859a1eef7a34dcbc331299a28e24d04c59a7"},
+ {file = "fonttools-4.47.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:e3f4d61f3a8195eac784f1d0c16c0a3105382c1b9a74d99ac4ba421da39a8826"},
+ {file = "fonttools-4.47.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:174995f7b057e799355b393e97f4f93ef1f2197cbfa945e988d49b2a09ecbce8"},
+ {file = "fonttools-4.47.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea592e6a09b71cb7a7661dd93ac0b877a6228e2d677ebacbad0a4d118494c86d"},
+ {file = "fonttools-4.47.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40bdbe90b33897d9cc4a39f8e415b0fcdeae4c40a99374b8a4982f127ff5c767"},
+ {file = "fonttools-4.47.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:843509ae9b93db5aaf1a6302085e30bddc1111d31e11d724584818f5b698f500"},
+ {file = "fonttools-4.47.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9acfa1cdc479e0dde528b61423855913d949a7f7fe09e276228298fef4589540"},
+ {file = "fonttools-4.47.0-cp312-cp312-win32.whl", hash = "sha256:66c92ec7f95fd9732550ebedefcd190a8d81beaa97e89d523a0d17198a8bda4d"},
+ {file = "fonttools-4.47.0-cp312-cp312-win_amd64.whl", hash = "sha256:e8fa20748de55d0021f83754b371432dca0439e02847962fc4c42a0e444c2d78"},
+ {file = "fonttools-4.47.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:c75e19971209fbbce891ebfd1b10c37320a5a28e8d438861c21d35305aedb81c"},
+ {file = "fonttools-4.47.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e79f1a3970d25f692bbb8c8c2637e621a66c0d60c109ab48d4a160f50856deff"},
+ {file = "fonttools-4.47.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:562681188c62c024fe2c611b32e08b8de2afa00c0c4e72bed47c47c318e16d5c"},
+ {file = "fonttools-4.47.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a77a60315c33393b2bd29d538d1ef026060a63d3a49a9233b779261bad9c3f71"},
+ {file = "fonttools-4.47.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b4fabb8cc9422efae1a925160083fdcbab8fdc96a8483441eb7457235df625bd"},
+ {file = "fonttools-4.47.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2a78dba8c2a1e9d53a0fb5382979f024200dc86adc46a56cbb668a2249862fda"},
+ {file = "fonttools-4.47.0-cp38-cp38-win32.whl", hash = "sha256:e6b968543fde4119231c12c2a953dcf83349590ca631ba8216a8edf9cd4d36a9"},
+ {file = "fonttools-4.47.0-cp38-cp38-win_amd64.whl", hash = "sha256:4a9a51745c0439516d947480d4d884fa18bd1458e05b829e482b9269afa655bc"},
+ {file = "fonttools-4.47.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:62d8ddb058b8e87018e5dc26f3258e2c30daad4c87262dfeb0e2617dd84750e6"},
+ {file = "fonttools-4.47.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5dde0eab40faaa5476133123f6a622a1cc3ac9b7af45d65690870620323308b4"},
+ {file = "fonttools-4.47.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4da089f6dfdb822293bde576916492cd708c37c2501c3651adde39804630538"},
+ {file = "fonttools-4.47.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:253bb46bab970e8aae254cebf2ae3db98a4ef6bd034707aa68a239027d2b198d"},
+ {file = "fonttools-4.47.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:1193fb090061efa2f9e2d8d743ae9850c77b66746a3b32792324cdce65784154"},
+ {file = "fonttools-4.47.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:084511482dd265bce6dca24c509894062f0117e4e6869384d853f46c0e6d43be"},
+ {file = "fonttools-4.47.0-cp39-cp39-win32.whl", hash = "sha256:97620c4af36e4c849e52661492e31dc36916df12571cb900d16960ab8e92a980"},
+ {file = "fonttools-4.47.0-cp39-cp39-win_amd64.whl", hash = "sha256:e77bdf52185bdaf63d39f3e1ac3212e6cfa3ab07d509b94557a8902ce9c13c82"},
+ {file = "fonttools-4.47.0-py3-none-any.whl", hash = "sha256:d6477ba902dd2d7adda7f0fd3bfaeb92885d45993c9e1928c9f28fc3961415f7"},
+ {file = "fonttools-4.47.0.tar.gz", hash = "sha256:ec13a10715eef0e031858c1c23bfaee6cba02b97558e4a7bfa089dba4a8c2ebf"},
+]
+
+[package.extras]
+all = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "fs (>=2.2.0,<3)", "lxml (>=4.0,<5)", "lz4 (>=1.7.4.2)", "matplotlib", "munkres", "pycairo", "scipy", "skia-pathops (>=0.5.0)", "sympy", "uharfbuzz (>=0.23.0)", "unicodedata2 (>=15.1.0)", "xattr", "zopfli (>=0.1.4)"]
+graphite = ["lz4 (>=1.7.4.2)"]
+interpolatable = ["munkres", "pycairo", "scipy"]
+lxml = ["lxml (>=4.0,<5)"]
+pathops = ["skia-pathops (>=0.5.0)"]
+plot = ["matplotlib"]
+repacker = ["uharfbuzz (>=0.23.0)"]
+symfont = ["sympy"]
+type1 = ["xattr"]
+ufo = ["fs (>=2.2.0,<3)"]
+unicode = ["unicodedata2 (>=15.1.0)"]
+woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"]
+
+[[package]]
+name = "fqdn"
+version = "1.5.1"
+description = "Validates fully-qualified domain names against RFC 1123, so that they are acceptable to modern bowsers"
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4, <4"
+files = [
+ {file = "fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014"},
+ {file = "fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f"},
+]
+
+[[package]]
+name = "fsspec"
+version = "2023.12.2"
+description = "File-system specification"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "fsspec-2023.12.2-py3-none-any.whl", hash = "sha256:d800d87f72189a745fa3d6b033b9dc4a34ad069f60ca60b943a63599f5501960"},
+ {file = "fsspec-2023.12.2.tar.gz", hash = "sha256:8548d39e8810b59c38014934f6b31e57f40c1b20f911f4cc2b85389c7e9bf0cb"},
+]
+
+[package.extras]
+abfs = ["adlfs"]
+adl = ["adlfs"]
+arrow = ["pyarrow (>=1)"]
+dask = ["dask", "distributed"]
+devel = ["pytest", "pytest-cov"]
+dropbox = ["dropbox", "dropboxdrivefs", "requests"]
+full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "dask", "distributed", "dropbox", "dropboxdrivefs", "fusepy", "gcsfs", "libarchive-c", "ocifs", "panel", "paramiko", "pyarrow (>=1)", "pygit2", "requests", "s3fs", "smbprotocol", "tqdm"]
+fuse = ["fusepy"]
+gcs = ["gcsfs"]
+git = ["pygit2"]
+github = ["requests"]
+gs = ["gcsfs"]
+gui = ["panel"]
+hdfs = ["pyarrow (>=1)"]
+http = ["aiohttp (!=4.0.0a0,!=4.0.0a1)", "requests"]
+libarchive = ["libarchive-c"]
+oci = ["ocifs"]
+s3 = ["s3fs"]
+sftp = ["paramiko"]
+smb = ["smbprotocol"]
+ssh = ["paramiko"]
+tqdm = ["tqdm"]
+
+[[package]]
+name = "gitdb"
+version = "4.0.11"
+description = "Git Object Database"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "gitdb-4.0.11-py3-none-any.whl", hash = "sha256:81a3407ddd2ee8df444cbacea00e2d038e40150acfa3001696fe0dcf1d3adfa4"},
+ {file = "gitdb-4.0.11.tar.gz", hash = "sha256:bf5421126136d6d0af55bc1e7c1af1c397a34f5b7bd79e776cd3e89785c2b04b"},
+]
+
+[package.dependencies]
+smmap = ">=3.0.1,<6"
+
+[[package]]
+name = "gitpython"
+version = "3.1.40"
+description = "GitPython is a Python library used to interact with Git repositories"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "GitPython-3.1.40-py3-none-any.whl", hash = "sha256:cf14627d5a8049ffbf49915732e5eddbe8134c3bdb9d476e6182b676fc573f8a"},
+ {file = "GitPython-3.1.40.tar.gz", hash = "sha256:22b126e9ffb671fdd0c129796343a02bf67bf2994b35449ffc9321aa755e18a4"},
+]
+
+[package.dependencies]
+gitdb = ">=4.0.1,<5"
+
+[package.extras]
+test = ["black", "coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock", "mypy", "pre-commit", "pytest", "pytest-cov", "pytest-instafail", "pytest-subtests", "pytest-sugar"]
+
+[[package]]
+name = "humanfriendly"
+version = "10.0"
+description = "Human friendly output for text interfaces using Python"
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+files = [
+ {file = "humanfriendly-10.0-py2.py3-none-any.whl", hash = "sha256:1697e1a8a8f550fd43c2865cd84542fc175a61dcb779b6fee18cf6b6ccba1477"},
+ {file = "humanfriendly-10.0.tar.gz", hash = "sha256:6b0b831ce8f15f7300721aa49829fc4e83921a9a301cc7f606be6686a2288ddc"},
+]
+
+[package.dependencies]
+pyreadline3 = {version = "*", markers = "sys_platform == \"win32\" and python_version >= \"3.8\""}
+
+[[package]]
+name = "idna"
+version = "3.6"
+description = "Internationalized Domain Names in Applications (IDNA)"
+category = "main"
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"},
+ {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"},
+]
+
+[[package]]
+name = "imageio"
+version = "2.33.1"
+description = "Library for reading and writing a wide range of image, video, scientific, and volumetric data formats."
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "imageio-2.33.1-py3-none-any.whl", hash = "sha256:c5094c48ccf6b2e6da8b4061cd95e1209380afafcbeae4a4e280938cce227e1d"},
+ {file = "imageio-2.33.1.tar.gz", hash = "sha256:78722d40b137bd98f5ec7312119f8aea9ad2049f76f434748eb306b6937cc1ce"},
+]
+
+[package.dependencies]
+numpy = "*"
+pillow = ">=8.3.2"
+
+[package.extras]
+all-plugins = ["astropy", "av", "imageio-ffmpeg", "pillow-heif", "psutil", "tifffile"]
+all-plugins-pypy = ["av", "imageio-ffmpeg", "pillow-heif", "psutil", "tifffile"]
+build = ["wheel"]
+dev = ["black", "flake8", "fsspec[github]", "pytest", "pytest-cov"]
+docs = ["numpydoc", "pydata-sphinx-theme", "sphinx (<6)"]
+ffmpeg = ["imageio-ffmpeg", "psutil"]
+fits = ["astropy"]
+full = ["astropy", "av", "black", "flake8", "fsspec[github]", "gdal", "imageio-ffmpeg", "itk", "numpydoc", "pillow-heif", "psutil", "pydata-sphinx-theme", "pytest", "pytest-cov", "sphinx (<6)", "tifffile", "wheel"]
+gdal = ["gdal"]
+itk = ["itk"]
+linting = ["black", "flake8"]
+pillow-heif = ["pillow-heif"]
+pyav = ["av"]
+test = ["fsspec[github]", "pytest", "pytest-cov"]
+tifffile = ["tifffile"]
+
+[[package]]
+name = "ipykernel"
+version = "6.28.0"
+description = "IPython Kernel for Jupyter"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "ipykernel-6.28.0-py3-none-any.whl", hash = "sha256:c6e9a9c63a7f4095c0a22a79f765f079f9ec7be4f2430a898ddea889e8665661"},
+ {file = "ipykernel-6.28.0.tar.gz", hash = "sha256:69c11403d26de69df02225916f916b37ea4b9af417da0a8c827f84328d88e5f3"},
+]
+
+[package.dependencies]
+appnope = {version = "*", markers = "platform_system == \"Darwin\""}
+comm = ">=0.1.1"
+debugpy = ">=1.6.5"
+ipython = ">=7.23.1"
+jupyter-client = ">=6.1.12"
+jupyter-core = ">=4.12,<5.0.0 || >=5.1.0"
+matplotlib-inline = ">=0.1"
+nest-asyncio = "*"
+packaging = "*"
+psutil = "*"
+pyzmq = ">=24"
+tornado = ">=6.1"
+traitlets = ">=5.4.0"
+
+[package.extras]
+cov = ["coverage[toml]", "curio", "matplotlib", "pytest-cov", "trio"]
+docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "trio"]
+pyqt5 = ["pyqt5"]
+pyside6 = ["pyside6"]
+test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio", "pytest-cov", "pytest-timeout"]
+
+[[package]]
+name = "ipython"
+version = "8.19.0"
+description = "IPython: Productive Interactive Computing"
+category = "main"
+optional = false
+python-versions = ">=3.10"
+files = [
+ {file = "ipython-8.19.0-py3-none-any.whl", hash = "sha256:2f55d59370f59d0d2b2212109fe0e6035cfea436b1c0e6150ad2244746272ec5"},
+ {file = "ipython-8.19.0.tar.gz", hash = "sha256:ac4da4ecf0042fb4e0ce57c60430c2db3c719fa8bdf92f8631d6bd8a5785d1f0"},
+]
+
+[package.dependencies]
+colorama = {version = "*", markers = "sys_platform == \"win32\""}
+decorator = "*"
+exceptiongroup = {version = "*", markers = "python_version < \"3.11\""}
+jedi = ">=0.16"
+matplotlib-inline = "*"
+pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""}
+prompt-toolkit = ">=3.0.41,<3.1.0"
+pygments = ">=2.4.0"
+stack-data = "*"
+traitlets = ">=5"
+
+[package.extras]
+all = ["black", "curio", "docrepr", "exceptiongroup", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib", "matplotlib (!=3.2.0)", "nbconvert", "nbformat", "notebook", "numpy (>=1.23)", "pandas", "pickleshare", "pytest", "pytest-asyncio (<0.22)", "qtconsole", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "trio", "typing-extensions"]
+black = ["black"]
+doc = ["docrepr", "exceptiongroup", "ipykernel", "matplotlib", "pickleshare", "pytest", "pytest-asyncio (<0.22)", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "typing-extensions"]
+kernel = ["ipykernel"]
+nbconvert = ["nbconvert"]
+nbformat = ["nbformat"]
+notebook = ["ipywidgets", "notebook"]
+parallel = ["ipyparallel"]
+qtconsole = ["qtconsole"]
+test = ["pickleshare", "pytest", "pytest-asyncio (<0.22)", "testpath"]
+test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.23)", "pandas", "pickleshare", "pytest", "pytest-asyncio (<0.22)", "testpath", "trio"]
+
+[[package]]
+name = "ipywidgets"
+version = "8.1.1"
+description = "Jupyter interactive widgets"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "ipywidgets-8.1.1-py3-none-any.whl", hash = "sha256:2b88d728656aea3bbfd05d32c747cfd0078f9d7e159cf982433b58ad717eed7f"},
+ {file = "ipywidgets-8.1.1.tar.gz", hash = "sha256:40211efb556adec6fa450ccc2a77d59ca44a060f4f9f136833df59c9f538e6e8"},
+]
+
+[package.dependencies]
+comm = ">=0.1.3"
+ipython = ">=6.1.0"
+jupyterlab-widgets = ">=3.0.9,<3.1.0"
+traitlets = ">=4.3.1"
+widgetsnbextension = ">=4.0.9,<4.1.0"
+
+[package.extras]
+test = ["ipykernel", "jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"]
+
+[[package]]
+name = "isoduration"
+version = "20.11.0"
+description = "Operations with ISO 8601 durations"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042"},
+ {file = "isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9"},
+]
+
+[package.dependencies]
+arrow = ">=0.15.0"
+
+[[package]]
+name = "itsdangerous"
+version = "2.1.2"
+description = "Safely pass data to untrusted environments and back."
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "itsdangerous-2.1.2-py3-none-any.whl", hash = "sha256:2c2349112351b88699d8d4b6b075022c0808887cb7ad10069318a8b0bc88db44"},
+ {file = "itsdangerous-2.1.2.tar.gz", hash = "sha256:5dbbc68b317e5e42f327f9021763545dc3fc3bfe22e6deb96aaf1fc38874156a"},
+]
+
+[[package]]
+name = "jedi"
+version = "0.19.1"
+description = "An autocompletion tool for Python that can be used for text editors."
+category = "main"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "jedi-0.19.1-py2.py3-none-any.whl", hash = "sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0"},
+ {file = "jedi-0.19.1.tar.gz", hash = "sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd"},
+]
+
+[package.dependencies]
+parso = ">=0.8.3,<0.9.0"
+
+[package.extras]
+docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx (==1.8.5)", "sphinx-rtd-theme (==0.4.3)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"]
+qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"]
+testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"]
+
+[[package]]
+name = "jinja2"
+version = "3.1.2"
+description = "A very fast and expressive template engine."
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"},
+ {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"},
+]
+
+[package.dependencies]
+MarkupSafe = ">=2.0"
+
+[package.extras]
+i18n = ["Babel (>=2.7)"]
+
+[[package]]
+name = "joblib"
+version = "1.3.2"
+description = "Lightweight pipelining with Python functions"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "joblib-1.3.2-py3-none-any.whl", hash = "sha256:ef4331c65f239985f3f2220ecc87db222f08fd22097a3dd5698f693875f8cbb9"},
+ {file = "joblib-1.3.2.tar.gz", hash = "sha256:92f865e621e17784e7955080b6d042489e3b8e294949cc44c6eac304f59772b1"},
+]
+
+[[package]]
+name = "json5"
+version = "0.9.14"
+description = "A Python implementation of the JSON5 data format."
+category = "main"
+optional = false
+python-versions = "*"
+files = [
+ {file = "json5-0.9.14-py2.py3-none-any.whl", hash = "sha256:740c7f1b9e584a468dbb2939d8d458db3427f2c93ae2139d05f47e453eae964f"},
+ {file = "json5-0.9.14.tar.gz", hash = "sha256:9ed66c3a6ca3510a976a9ef9b8c0787de24802724ab1860bc0153c7fdd589b02"},
+]
+
+[package.extras]
+dev = ["hypothesis"]
+
+[[package]]
+name = "jsonpointer"
+version = "2.4"
+description = "Identify specific nodes in a JSON document (RFC 6901)"
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*"
+files = [
+ {file = "jsonpointer-2.4-py2.py3-none-any.whl", hash = "sha256:15d51bba20eea3165644553647711d150376234112651b4f1811022aecad7d7a"},
+ {file = "jsonpointer-2.4.tar.gz", hash = "sha256:585cee82b70211fa9e6043b7bb89db6e1aa49524340dde8ad6b63206ea689d88"},
+]
+
+[[package]]
+name = "jsonschema"
+version = "4.20.0"
+description = "An implementation of JSON Schema validation for Python"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jsonschema-4.20.0-py3-none-any.whl", hash = "sha256:ed6231f0429ecf966f5bc8dfef245998220549cbbcf140f913b7464c52c3b6b3"},
+ {file = "jsonschema-4.20.0.tar.gz", hash = "sha256:4f614fd46d8d61258610998997743ec5492a648b33cf478c1ddc23ed4598a5fa"},
+]
+
+[package.dependencies]
+attrs = ">=22.2.0"
+fqdn = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+idna = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+isoduration = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+jsonpointer = {version = ">1.13", optional = true, markers = "extra == \"format-nongpl\""}
+jsonschema-specifications = ">=2023.03.6"
+referencing = ">=0.28.4"
+rfc3339-validator = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+rfc3986-validator = {version = ">0.1.0", optional = true, markers = "extra == \"format-nongpl\""}
+rpds-py = ">=0.7.1"
+uri-template = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
+webcolors = {version = ">=1.11", optional = true, markers = "extra == \"format-nongpl\""}
+
+[package.extras]
+format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"]
+format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"]
+
+[[package]]
+name = "jsonschema-specifications"
+version = "2023.12.1"
+description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jsonschema_specifications-2023.12.1-py3-none-any.whl", hash = "sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c"},
+ {file = "jsonschema_specifications-2023.12.1.tar.gz", hash = "sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc"},
+]
+
+[package.dependencies]
+referencing = ">=0.31.0"
+
+[[package]]
+name = "jupyter"
+version = "1.0.0"
+description = "Jupyter metapackage. Install all the Jupyter components in one go."
+category = "main"
+optional = false
+python-versions = "*"
+files = [
+ {file = "jupyter-1.0.0-py2.py3-none-any.whl", hash = "sha256:5b290f93b98ffbc21c0c7e749f054b3267782166d72fa5e3ed1ed4eaf34a2b78"},
+ {file = "jupyter-1.0.0.tar.gz", hash = "sha256:d9dc4b3318f310e34c82951ea5d6683f67bed7def4b259fafbfe4f1beb1d8e5f"},
+ {file = "jupyter-1.0.0.zip", hash = "sha256:3e1f86076bbb7c8c207829390305a2b1fe836d471ed54be66a3b8c41e7f46cc7"},
+]
+
+[package.dependencies]
+ipykernel = "*"
+ipywidgets = "*"
+jupyter-console = "*"
+nbconvert = "*"
+notebook = "*"
+qtconsole = "*"
+
+[[package]]
+name = "jupyter-client"
+version = "8.6.0"
+description = "Jupyter protocol implementation and client libraries"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter_client-8.6.0-py3-none-any.whl", hash = "sha256:909c474dbe62582ae62b758bca86d6518c85234bdee2d908c778db6d72f39d99"},
+ {file = "jupyter_client-8.6.0.tar.gz", hash = "sha256:0642244bb83b4764ae60d07e010e15f0e2d275ec4e918a8f7b80fbbef3ca60c7"},
+]
+
+[package.dependencies]
+jupyter-core = ">=4.12,<5.0.0 || >=5.1.0"
+python-dateutil = ">=2.8.2"
+pyzmq = ">=23.0"
+tornado = ">=6.2"
+traitlets = ">=5.3"
+
+[package.extras]
+docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"]
+test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"]
+
+[[package]]
+name = "jupyter-console"
+version = "6.6.3"
+description = "Jupyter terminal console"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "jupyter_console-6.6.3-py3-none-any.whl", hash = "sha256:309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485"},
+ {file = "jupyter_console-6.6.3.tar.gz", hash = "sha256:566a4bf31c87adbfadf22cdf846e3069b59a71ed5da71d6ba4d8aaad14a53539"},
+]
+
+[package.dependencies]
+ipykernel = ">=6.14"
+ipython = "*"
+jupyter-client = ">=7.0.0"
+jupyter-core = ">=4.12,<5.0.0 || >=5.1.0"
+prompt-toolkit = ">=3.0.30"
+pygments = "*"
+pyzmq = ">=17"
+traitlets = ">=5.4"
+
+[package.extras]
+test = ["flaky", "pexpect", "pytest"]
+
+[[package]]
+name = "jupyter-core"
+version = "5.6.0"
+description = "Jupyter core package. A base package on which Jupyter projects rely."
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter_core-5.6.0-py3-none-any.whl", hash = "sha256:7613ee3c01f1b0632b927d368bf4e2f5d38503320b2179eec46eea91d026b0ce"},
+ {file = "jupyter_core-5.6.0.tar.gz", hash = "sha256:2970f1554685c89ebfedd784e44eea62d17a935e817f7bb704329a6129e178ca"},
+]
+
+[package.dependencies]
+platformdirs = ">=2.5"
+pywin32 = {version = ">=300", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""}
+traitlets = ">=5.3"
+
+[package.extras]
+docs = ["myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "traitlets"]
+test = ["ipykernel", "pre-commit", "pytest", "pytest-cov", "pytest-timeout"]
+
+[[package]]
+name = "jupyter-events"
+version = "0.9.0"
+description = "Jupyter Event System library"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter_events-0.9.0-py3-none-any.whl", hash = "sha256:d853b3c10273ff9bc8bb8b30076d65e2c9685579db736873de6c2232dde148bf"},
+ {file = "jupyter_events-0.9.0.tar.gz", hash = "sha256:81ad2e4bc710881ec274d31c6c50669d71bbaa5dd9d01e600b56faa85700d399"},
+]
+
+[package.dependencies]
+jsonschema = {version = ">=4.18.0", extras = ["format-nongpl"]}
+python-json-logger = ">=2.0.4"
+pyyaml = ">=5.3"
+referencing = "*"
+rfc3339-validator = "*"
+rfc3986-validator = ">=0.1.1"
+traitlets = ">=5.3"
+
+[package.extras]
+cli = ["click", "rich"]
+docs = ["jupyterlite-sphinx", "myst-parser", "pydata-sphinx-theme", "sphinxcontrib-spelling"]
+test = ["click", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "pytest-console-scripts", "rich"]
+
+[[package]]
+name = "jupyter-lsp"
+version = "2.2.1"
+description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter-lsp-2.2.1.tar.gz", hash = "sha256:b17fab6d70fe83c8896b0cff59237640038247c196056b43684a0902b6a9e0fb"},
+ {file = "jupyter_lsp-2.2.1-py3-none-any.whl", hash = "sha256:17a689910c5e4ae5e7d334b02f31d08ffbe98108f6f658fb05e4304b4345368b"},
+]
+
+[package.dependencies]
+jupyter-server = ">=1.1.2"
+
+[[package]]
+name = "jupyter-server"
+version = "2.12.1"
+description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications."
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter_server-2.12.1-py3-none-any.whl", hash = "sha256:fd030dd7be1ca572e4598203f718df6630c12bd28a599d7f1791c4d7938e1010"},
+ {file = "jupyter_server-2.12.1.tar.gz", hash = "sha256:dc77b7dcc5fc0547acba2b2844f01798008667201eea27c6319ff9257d700a6d"},
+]
+
+[package.dependencies]
+anyio = ">=3.1.0"
+argon2-cffi = "*"
+jinja2 = "*"
+jupyter-client = ">=7.4.4"
+jupyter-core = ">=4.12,<5.0.0 || >=5.1.0"
+jupyter-events = ">=0.9.0"
+jupyter-server-terminals = "*"
+nbconvert = ">=6.4.4"
+nbformat = ">=5.3.0"
+overrides = "*"
+packaging = "*"
+prometheus-client = "*"
+pywinpty = {version = "*", markers = "os_name == \"nt\""}
+pyzmq = ">=24"
+send2trash = ">=1.8.2"
+terminado = ">=0.8.3"
+tornado = ">=6.2.0"
+traitlets = ">=5.6.0"
+websocket-client = "*"
+
+[package.extras]
+docs = ["ipykernel", "jinja2", "jupyter-client", "jupyter-server", "myst-parser", "nbformat", "prometheus-client", "pydata-sphinx-theme", "send2trash", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-openapi (>=0.8.0)", "sphinxcontrib-spelling", "sphinxemoji", "tornado", "typing-extensions"]
+test = ["flaky", "ipykernel", "pre-commit", "pytest (>=7.0)", "pytest-console-scripts", "pytest-jupyter[server] (>=0.4)", "pytest-timeout", "requests"]
+
+[[package]]
+name = "jupyter-server-terminals"
+version = "0.5.1"
+description = "A Jupyter Server Extension Providing Terminals."
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyter_server_terminals-0.5.1-py3-none-any.whl", hash = "sha256:5e63e947ddd97bb2832db5ef837a258d9ccd4192cd608c1270850ad947ae5dd7"},
+ {file = "jupyter_server_terminals-0.5.1.tar.gz", hash = "sha256:16d3be9cf48be6a1f943f3a6c93c033be259cf4779184c66421709cf63dccfea"},
+]
+
+[package.dependencies]
+pywinpty = {version = ">=2.0.3", markers = "os_name == \"nt\""}
+terminado = ">=0.8.3"
+
+[package.extras]
+docs = ["jinja2", "jupyter-server", "mistune (<4.0)", "myst-parser", "nbformat", "packaging", "pydata-sphinx-theme", "sphinxcontrib-github-alt", "sphinxcontrib-openapi", "sphinxcontrib-spelling", "sphinxemoji", "tornado"]
+test = ["jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-jupyter[server] (>=0.5.3)", "pytest-timeout"]
+
+[[package]]
+name = "jupyterlab"
+version = "4.0.9"
+description = "JupyterLab computational environment"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyterlab-4.0.9-py3-none-any.whl", hash = "sha256:9f6f8e36d543fdbcc3df961a1d6a3f524b4a4001be0327a398f68fa4e534107c"},
+ {file = "jupyterlab-4.0.9.tar.gz", hash = "sha256:9ebada41d52651f623c0c9f069ddb8a21d6848e4c887d8e5ddc0613166ed5c0b"},
+]
+
+[package.dependencies]
+async-lru = ">=1.0.0"
+ipykernel = "*"
+jinja2 = ">=3.0.3"
+jupyter-core = "*"
+jupyter-lsp = ">=2.0.0"
+jupyter-server = ">=2.4.0,<3"
+jupyterlab-server = ">=2.19.0,<3"
+notebook-shim = ">=0.2"
+packaging = "*"
+tomli = {version = "*", markers = "python_version < \"3.11\""}
+tornado = ">=6.2.0"
+traitlets = "*"
+
+[package.extras]
+dev = ["black[jupyter] (==23.10.1)", "build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.1.4)"]
+docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-tornasync", "sphinx (>=1.8,<7.2.0)", "sphinx-copybutton"]
+docs-screenshots = ["altair (==5.0.1)", "ipython (==8.14.0)", "ipywidgets (==8.0.6)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.0.post0)", "matplotlib (==3.7.1)", "nbconvert (>=7.0.0)", "pandas (==2.0.2)", "scipy (==1.10.1)", "vega-datasets (==0.9.0)"]
+test = ["coverage", "pytest (>=7.0)", "pytest-check-links (>=0.7)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter (>=0.5.3)", "pytest-timeout", "pytest-tornasync", "requests", "requests-cache", "virtualenv"]
+
+[[package]]
+name = "jupyterlab-pygments"
+version = "0.3.0"
+description = "Pygments theme using JupyterLab CSS variables"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"},
+ {file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"},
+]
+
+[[package]]
+name = "jupyterlab-server"
+version = "2.25.2"
+description = "A set of server components for JupyterLab and JupyterLab like applications."
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "jupyterlab_server-2.25.2-py3-none-any.whl", hash = "sha256:5b1798c9cc6a44f65c757de9f97fc06fc3d42535afbf47d2ace5e964ab447aaf"},
+ {file = "jupyterlab_server-2.25.2.tar.gz", hash = "sha256:bd0ec7a99ebcedc8bcff939ef86e52c378e44c2707e053fcd81d046ce979ee63"},
+]
+
+[package.dependencies]
+babel = ">=2.10"
+jinja2 = ">=3.0.3"
+json5 = ">=0.9.0"
+jsonschema = ">=4.18.0"
+jupyter-server = ">=1.21,<3"
+packaging = ">=21.3"
+requests = ">=2.31"
+
+[package.extras]
+docs = ["autodoc-traits", "jinja2 (<3.2.0)", "mistune (<4)", "myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-copybutton", "sphinxcontrib-openapi (>0.8)"]
+openapi = ["openapi-core (>=0.18.0,<0.19.0)", "ruamel-yaml"]
+test = ["hatch", "ipykernel", "openapi-core (>=0.18.0,<0.19.0)", "openapi-spec-validator (>=0.6.0,<0.8.0)", "pytest (>=7.0)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter[server] (>=0.6.2)", "pytest-timeout", "requests-mock", "ruamel-yaml", "sphinxcontrib-spelling", "strict-rfc3339", "werkzeug"]
+
+[[package]]
+name = "jupyterlab-widgets"
+version = "3.0.9"
+description = "Jupyter interactive widgets for JupyterLab"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "jupyterlab_widgets-3.0.9-py3-none-any.whl", hash = "sha256:3cf5bdf5b897bf3bccf1c11873aa4afd776d7430200f765e0686bd352487b58d"},
+ {file = "jupyterlab_widgets-3.0.9.tar.gz", hash = "sha256:6005a4e974c7beee84060fdfba341a3218495046de8ae3ec64888e5fe19fdb4c"},
+]
+
+[[package]]
+name = "kiwisolver"
+version = "1.4.5"
+description = "A fast implementation of the Cassowary constraint solver"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "kiwisolver-1.4.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:05703cf211d585109fcd72207a31bb170a0f22144d68298dc5e61b3c946518af"},
+ {file = "kiwisolver-1.4.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:146d14bebb7f1dc4d5fbf74f8a6cb15ac42baadee8912eb84ac0b3b2a3dc6ac3"},
+ {file = "kiwisolver-1.4.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6ef7afcd2d281494c0a9101d5c571970708ad911d028137cd558f02b851c08b4"},
+ {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9eaa8b117dc8337728e834b9c6e2611f10c79e38f65157c4c38e9400286f5cb1"},
+ {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ec20916e7b4cbfb1f12380e46486ec4bcbaa91a9c448b97023fde0d5bbf9e4ff"},
+ {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39b42c68602539407884cf70d6a480a469b93b81b7701378ba5e2328660c847a"},
+ {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa12042de0171fad672b6c59df69106d20d5596e4f87b5e8f76df757a7c399aa"},
+ {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2a40773c71d7ccdd3798f6489aaac9eee213d566850a9533f8d26332d626b82c"},
+ {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:19df6e621f6d8b4b9c4d45f40a66839294ff2bb235e64d2178f7522d9170ac5b"},
+ {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:83d78376d0d4fd884e2c114d0621624b73d2aba4e2788182d286309ebdeed770"},
+ {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:e391b1f0a8a5a10ab3b9bb6afcfd74f2175f24f8975fb87ecae700d1503cdee0"},
+ {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:852542f9481f4a62dbb5dd99e8ab7aedfeb8fb6342349a181d4036877410f525"},
+ {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59edc41b24031bc25108e210c0def6f6c2191210492a972d585a06ff246bb79b"},
+ {file = "kiwisolver-1.4.5-cp310-cp310-win32.whl", hash = "sha256:a6aa6315319a052b4ee378aa171959c898a6183f15c1e541821c5c59beaa0238"},
+ {file = "kiwisolver-1.4.5-cp310-cp310-win_amd64.whl", hash = "sha256:d0ef46024e6a3d79c01ff13801cb19d0cad7fd859b15037aec74315540acc276"},
+ {file = "kiwisolver-1.4.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:11863aa14a51fd6ec28688d76f1735f8f69ab1fabf388851a595d0721af042f5"},
+ {file = "kiwisolver-1.4.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8ab3919a9997ab7ef2fbbed0cc99bb28d3c13e6d4b1ad36e97e482558a91be90"},
+ {file = "kiwisolver-1.4.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fcc700eadbbccbf6bc1bcb9dbe0786b4b1cb91ca0dcda336eef5c2beed37b797"},
+ {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dfdd7c0b105af050eb3d64997809dc21da247cf44e63dc73ff0fd20b96be55a9"},
+ {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76c6a5964640638cdeaa0c359382e5703e9293030fe730018ca06bc2010c4437"},
+ {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bbea0db94288e29afcc4c28afbf3a7ccaf2d7e027489c449cf7e8f83c6346eb9"},
+ {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ceec1a6bc6cab1d6ff5d06592a91a692f90ec7505d6463a88a52cc0eb58545da"},
+ {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:040c1aebeda72197ef477a906782b5ab0d387642e93bda547336b8957c61022e"},
+ {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f91de7223d4c7b793867797bacd1ee53bfe7359bd70d27b7b58a04efbb9436c8"},
+ {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:faae4860798c31530dd184046a900e652c95513796ef51a12bc086710c2eec4d"},
+ {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:b0157420efcb803e71d1b28e2c287518b8808b7cf1ab8af36718fd0a2c453eb0"},
+ {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:06f54715b7737c2fecdbf140d1afb11a33d59508a47bf11bb38ecf21dc9ab79f"},
+ {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fdb7adb641a0d13bdcd4ef48e062363d8a9ad4a182ac7647ec88f695e719ae9f"},
+ {file = "kiwisolver-1.4.5-cp311-cp311-win32.whl", hash = "sha256:bb86433b1cfe686da83ce32a9d3a8dd308e85c76b60896d58f082136f10bffac"},
+ {file = "kiwisolver-1.4.5-cp311-cp311-win_amd64.whl", hash = "sha256:6c08e1312a9cf1074d17b17728d3dfce2a5125b2d791527f33ffbe805200a355"},
+ {file = "kiwisolver-1.4.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:32d5cf40c4f7c7b3ca500f8985eb3fb3a7dfc023215e876f207956b5ea26632a"},
+ {file = "kiwisolver-1.4.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f846c260f483d1fd217fe5ed7c173fb109efa6b1fc8381c8b7552c5781756192"},
+ {file = "kiwisolver-1.4.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5ff5cf3571589b6d13bfbfd6bcd7a3f659e42f96b5fd1c4830c4cf21d4f5ef45"},
+ {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7269d9e5f1084a653d575c7ec012ff57f0c042258bf5db0954bf551c158466e7"},
+ {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da802a19d6e15dffe4b0c24b38b3af68e6c1a68e6e1d8f30148c83864f3881db"},
+ {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3aba7311af82e335dd1e36ffff68aaca609ca6290c2cb6d821a39aa075d8e3ff"},
+ {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:763773d53f07244148ccac5b084da5adb90bfaee39c197554f01b286cf869228"},
+ {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2270953c0d8cdab5d422bee7d2007f043473f9d2999631c86a223c9db56cbd16"},
+ {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d099e745a512f7e3bbe7249ca835f4d357c586d78d79ae8f1dcd4d8adeb9bda9"},
+ {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:74db36e14a7d1ce0986fa104f7d5637aea5c82ca6326ed0ec5694280942d1162"},
+ {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:7e5bab140c309cb3a6ce373a9e71eb7e4873c70c2dda01df6820474f9889d6d4"},
+ {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:0f114aa76dc1b8f636d077979c0ac22e7cd8f3493abbab152f20eb8d3cda71f3"},
+ {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:88a2df29d4724b9237fc0c6eaf2a1adae0cdc0b3e9f4d8e7dc54b16812d2d81a"},
+ {file = "kiwisolver-1.4.5-cp312-cp312-win32.whl", hash = "sha256:72d40b33e834371fd330fb1472ca19d9b8327acb79a5821d4008391db8e29f20"},
+ {file = "kiwisolver-1.4.5-cp312-cp312-win_amd64.whl", hash = "sha256:2c5674c4e74d939b9d91dda0fae10597ac7521768fec9e399c70a1f27e2ea2d9"},
+ {file = "kiwisolver-1.4.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3a2b053a0ab7a3960c98725cfb0bf5b48ba82f64ec95fe06f1d06c99b552e130"},
+ {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cd32d6c13807e5c66a7cbb79f90b553642f296ae4518a60d8d76243b0ad2898"},
+ {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59ec7b7c7e1a61061850d53aaf8e93db63dce0c936db1fda2658b70e4a1be709"},
+ {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:da4cfb373035def307905d05041c1d06d8936452fe89d464743ae7fb8371078b"},
+ {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2400873bccc260b6ae184b2b8a4fec0e4082d30648eadb7c3d9a13405d861e89"},
+ {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1b04139c4236a0f3aff534479b58f6f849a8b351e1314826c2d230849ed48985"},
+ {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:4e66e81a5779b65ac21764c295087de82235597a2293d18d943f8e9e32746265"},
+ {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:7931d8f1f67c4be9ba1dd9c451fb0eeca1a25b89e4d3f89e828fe12a519b782a"},
+ {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:b3f7e75f3015df442238cca659f8baa5f42ce2a8582727981cbfa15fee0ee205"},
+ {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:bbf1d63eef84b2e8c89011b7f2235b1e0bf7dacc11cac9431fc6468e99ac77fb"},
+ {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:4c380469bd3f970ef677bf2bcba2b6b0b4d5c75e7a020fb863ef75084efad66f"},
+ {file = "kiwisolver-1.4.5-cp37-cp37m-win32.whl", hash = "sha256:9408acf3270c4b6baad483865191e3e582b638b1654a007c62e3efe96f09a9a3"},
+ {file = "kiwisolver-1.4.5-cp37-cp37m-win_amd64.whl", hash = "sha256:5b94529f9b2591b7af5f3e0e730a4e0a41ea174af35a4fd067775f9bdfeee01a"},
+ {file = "kiwisolver-1.4.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:11c7de8f692fc99816e8ac50d1d1aef4f75126eefc33ac79aac02c099fd3db71"},
+ {file = "kiwisolver-1.4.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:53abb58632235cd154176ced1ae8f0d29a6657aa1aa9decf50b899b755bc2b93"},
+ {file = "kiwisolver-1.4.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:88b9f257ca61b838b6f8094a62418421f87ac2a1069f7e896c36a7d86b5d4c29"},
+ {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3195782b26fc03aa9c6913d5bad5aeb864bdc372924c093b0f1cebad603dd712"},
+ {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fc579bf0f502e54926519451b920e875f433aceb4624a3646b3252b5caa9e0b6"},
+ {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a580c91d686376f0f7c295357595c5a026e6cbc3d77b7c36e290201e7c11ecb"},
+ {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cfe6ab8da05c01ba6fbea630377b5da2cd9bcbc6338510116b01c1bc939a2c18"},
+ {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:d2e5a98f0ec99beb3c10e13b387f8db39106d53993f498b295f0c914328b1333"},
+ {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a51a263952b1429e429ff236d2f5a21c5125437861baeed77f5e1cc2d2c7c6da"},
+ {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3edd2fa14e68c9be82c5b16689e8d63d89fe927e56debd6e1dbce7a26a17f81b"},
+ {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:74d1b44c6cfc897df648cc9fdaa09bc3e7679926e6f96df05775d4fb3946571c"},
+ {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:76d9289ed3f7501012e05abb8358bbb129149dbd173f1f57a1bf1c22d19ab7cc"},
+ {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:92dea1ffe3714fa8eb6a314d2b3c773208d865a0e0d35e713ec54eea08a66250"},
+ {file = "kiwisolver-1.4.5-cp38-cp38-win32.whl", hash = "sha256:5c90ae8c8d32e472be041e76f9d2f2dbff4d0b0be8bd4041770eddb18cf49a4e"},
+ {file = "kiwisolver-1.4.5-cp38-cp38-win_amd64.whl", hash = "sha256:c7940c1dc63eb37a67721b10d703247552416f719c4188c54e04334321351ced"},
+ {file = "kiwisolver-1.4.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9407b6a5f0d675e8a827ad8742e1d6b49d9c1a1da5d952a67d50ef5f4170b18d"},
+ {file = "kiwisolver-1.4.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:15568384086b6df3c65353820a4473575dbad192e35010f622c6ce3eebd57af9"},
+ {file = "kiwisolver-1.4.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0dc9db8e79f0036e8173c466d21ef18e1befc02de8bf8aa8dc0813a6dc8a7046"},
+ {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:cdc8a402aaee9a798b50d8b827d7ecf75edc5fb35ea0f91f213ff927c15f4ff0"},
+ {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6c3bd3cde54cafb87d74d8db50b909705c62b17c2099b8f2e25b461882e544ff"},
+ {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:955e8513d07a283056b1396e9a57ceddbd272d9252c14f154d450d227606eb54"},
+ {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:346f5343b9e3f00b8db8ba359350eb124b98c99efd0b408728ac6ebf38173958"},
+ {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b9098e0049e88c6a24ff64545cdfc50807818ba6c1b739cae221bbbcbc58aad3"},
+ {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:00bd361b903dc4bbf4eb165f24d1acbee754fce22ded24c3d56eec268658a5cf"},
+ {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7b8b454bac16428b22560d0a1cf0a09875339cab69df61d7805bf48919415901"},
+ {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:f1d072c2eb0ad60d4c183f3fb44ac6f73fb7a8f16a2694a91f988275cbf352f9"},
+ {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:31a82d498054cac9f6d0b53d02bb85811185bcb477d4b60144f915f3b3126342"},
+ {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6512cb89e334e4700febbffaaa52761b65b4f5a3cf33f960213d5656cea36a77"},
+ {file = "kiwisolver-1.4.5-cp39-cp39-win32.whl", hash = "sha256:9db8ea4c388fdb0f780fe91346fd438657ea602d58348753d9fb265ce1bca67f"},
+ {file = "kiwisolver-1.4.5-cp39-cp39-win_amd64.whl", hash = "sha256:59415f46a37f7f2efeec758353dd2eae1b07640d8ca0f0c42548ec4125492635"},
+ {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5c7b3b3a728dc6faf3fc372ef24f21d1e3cee2ac3e9596691d746e5a536de920"},
+ {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:620ced262a86244e2be10a676b646f29c34537d0d9cc8eb26c08f53d98013390"},
+ {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:378a214a1e3bbf5ac4a8708304318b4f890da88c9e6a07699c4ae7174c09a68d"},
+ {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaf7be1207676ac608a50cd08f102f6742dbfc70e8d60c4db1c6897f62f71523"},
+ {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ba55dce0a9b8ff59495ddd050a0225d58bd0983d09f87cfe2b6aec4f2c1234e4"},
+ {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:fd32ea360bcbb92d28933fc05ed09bffcb1704ba3fc7942e81db0fd4f81a7892"},
+ {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5e7139af55d1688f8b960ee9ad5adafc4ac17c1c473fe07133ac092310d76544"},
+ {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:dced8146011d2bc2e883f9bd68618b8247387f4bbec46d7392b3c3b032640126"},
+ {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9bf3325c47b11b2e51bca0824ea217c7cd84491d8ac4eefd1e409705ef092bd"},
+ {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5794cf59533bc3f1b1c821f7206a3617999db9fbefc345360aafe2e067514929"},
+ {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:e368f200bbc2e4f905b8e71eb38b3c04333bddaa6a2464a6355487b02bb7fb09"},
+ {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5d706eba36b4c4d5bc6c6377bb6568098765e990cfc21ee16d13963fab7b3e7"},
+ {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85267bd1aa8880a9c88a8cb71e18d3d64d2751a790e6ca6c27b8ccc724bcd5ad"},
+ {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:210ef2c3a1f03272649aff1ef992df2e724748918c4bc2d5a90352849eb40bea"},
+ {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:11d011a7574eb3b82bcc9c1a1d35c1d7075677fdd15de527d91b46bd35e935ee"},
+ {file = "kiwisolver-1.4.5.tar.gz", hash = "sha256:e57e563a57fb22a142da34f38acc2fc1a5c864bc29ca1517a88abc963e60d6ec"},
+]
+
+[[package]]
+name = "lazy-loader"
+version = "0.3"
+description = "lazy_loader"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "lazy_loader-0.3-py3-none-any.whl", hash = "sha256:1e9e76ee8631e264c62ce10006718e80b2cfc74340d17d1031e0f84af7478554"},
+ {file = "lazy_loader-0.3.tar.gz", hash = "sha256:3b68898e34f5b2a29daaaac172c6555512d0f32074f147e2254e4a6d9d838f37"},
+]
+
+[package.extras]
+lint = ["pre-commit (>=3.3)"]
+test = ["pytest (>=7.4)", "pytest-cov (>=4.1)"]
+
+[[package]]
+name = "markupsafe"
+version = "2.1.3"
+description = "Safely add untrusted strings to HTML/XML markup."
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa"},
+ {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57"},
+ {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f"},
+ {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52"},
+ {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00"},
+ {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6"},
+ {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779"},
+ {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7"},
+ {file = "MarkupSafe-2.1.3-cp310-cp310-win32.whl", hash = "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431"},
+ {file = "MarkupSafe-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559"},
+ {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c"},
+ {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575"},
+ {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee"},
+ {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2"},
+ {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9"},
+ {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc"},
+ {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9"},
+ {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"},
+ {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"},
+ {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"},
+ {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc"},
+ {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823"},
+ {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11"},
+ {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd"},
+ {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939"},
+ {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c"},
+ {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c"},
+ {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1"},
+ {file = "MarkupSafe-2.1.3-cp312-cp312-win32.whl", hash = "sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007"},
+ {file = "MarkupSafe-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb"},
+ {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"},
+ {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"},
+ {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"},
+ {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e"},
+ {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc"},
+ {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48"},
+ {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155"},
+ {file = "MarkupSafe-2.1.3-cp37-cp37m-win32.whl", hash = "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0"},
+ {file = "MarkupSafe-2.1.3-cp37-cp37m-win_amd64.whl", hash = "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24"},
+ {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4"},
+ {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0"},
+ {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee"},
+ {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be"},
+ {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e"},
+ {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8"},
+ {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3"},
+ {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d"},
+ {file = "MarkupSafe-2.1.3-cp38-cp38-win32.whl", hash = "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5"},
+ {file = "MarkupSafe-2.1.3-cp38-cp38-win_amd64.whl", hash = "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc"},
+ {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198"},
+ {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b"},
+ {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58"},
+ {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e"},
+ {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c"},
+ {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636"},
+ {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea"},
+ {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e"},
+ {file = "MarkupSafe-2.1.3-cp39-cp39-win32.whl", hash = "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2"},
+ {file = "MarkupSafe-2.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba"},
+ {file = "MarkupSafe-2.1.3.tar.gz", hash = "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad"},
+]
+
+[[package]]
+name = "matplotlib"
+version = "3.8.2"
+description = "Python plotting package"
+category = "main"
+optional = false
+python-versions = ">=3.9"
+files = [
+ {file = "matplotlib-3.8.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:09796f89fb71a0c0e1e2f4bdaf63fb2cefc84446bb963ecdeb40dfee7dfa98c7"},
+ {file = "matplotlib-3.8.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6f9c6976748a25e8b9be51ea028df49b8e561eed7809146da7a47dbecebab367"},
+ {file = "matplotlib-3.8.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b78e4f2cedf303869b782071b55fdde5987fda3038e9d09e58c91cc261b5ad18"},
+ {file = "matplotlib-3.8.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e208f46cf6576a7624195aa047cb344a7f802e113bb1a06cfd4bee431de5e31"},
+ {file = "matplotlib-3.8.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:46a569130ff53798ea5f50afce7406e91fdc471ca1e0e26ba976a8c734c9427a"},
+ {file = "matplotlib-3.8.2-cp310-cp310-win_amd64.whl", hash = "sha256:830f00640c965c5b7f6bc32f0d4ce0c36dfe0379f7dd65b07a00c801713ec40a"},
+ {file = "matplotlib-3.8.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d86593ccf546223eb75a39b44c32788e6f6440d13cfc4750c1c15d0fcb850b63"},
+ {file = "matplotlib-3.8.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9a5430836811b7652991939012f43d2808a2db9b64ee240387e8c43e2e5578c8"},
+ {file = "matplotlib-3.8.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9576723858a78751d5aacd2497b8aef29ffea6d1c95981505877f7ac28215c6"},
+ {file = "matplotlib-3.8.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ba9cbd8ac6cf422f3102622b20f8552d601bf8837e49a3afed188d560152788"},
+ {file = "matplotlib-3.8.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:03f9d160a29e0b65c0790bb07f4f45d6a181b1ac33eb1bb0dd225986450148f0"},
+ {file = "matplotlib-3.8.2-cp311-cp311-win_amd64.whl", hash = "sha256:3773002da767f0a9323ba1a9b9b5d00d6257dbd2a93107233167cfb581f64717"},
+ {file = "matplotlib-3.8.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:4c318c1e95e2f5926fba326f68177dee364aa791d6df022ceb91b8221bd0a627"},
+ {file = "matplotlib-3.8.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:091275d18d942cf1ee9609c830a1bc36610607d8223b1b981c37d5c9fc3e46a4"},
+ {file = "matplotlib-3.8.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b0f3b8ea0e99e233a4bcc44590f01604840d833c280ebb8fe5554fd3e6cfe8d"},
+ {file = "matplotlib-3.8.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7b1704a530395aaf73912be741c04d181f82ca78084fbd80bc737be04848331"},
+ {file = "matplotlib-3.8.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:533b0e3b0c6768eef8cbe4b583731ce25a91ab54a22f830db2b031e83cca9213"},
+ {file = "matplotlib-3.8.2-cp312-cp312-win_amd64.whl", hash = "sha256:0f4fc5d72b75e2c18e55eb32292659cf731d9d5b312a6eb036506304f4675630"},
+ {file = "matplotlib-3.8.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:deaed9ad4da0b1aea77fe0aa0cebb9ef611c70b3177be936a95e5d01fa05094f"},
+ {file = "matplotlib-3.8.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:172f4d0fbac3383d39164c6caafd3255ce6fa58f08fc392513a0b1d3b89c4f89"},
+ {file = "matplotlib-3.8.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7d36c2209d9136cd8e02fab1c0ddc185ce79bc914c45054a9f514e44c787917"},
+ {file = "matplotlib-3.8.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5864bdd7da445e4e5e011b199bb67168cdad10b501750367c496420f2ad00843"},
+ {file = "matplotlib-3.8.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ef8345b48e95cee45ff25192ed1f4857273117917a4dcd48e3905619bcd9c9b8"},
+ {file = "matplotlib-3.8.2-cp39-cp39-win_amd64.whl", hash = "sha256:7c48d9e221b637c017232e3760ed30b4e8d5dfd081daf327e829bf2a72c731b4"},
+ {file = "matplotlib-3.8.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:aa11b3c6928a1e496c1a79917d51d4cd5d04f8a2e75f21df4949eeefdf697f4b"},
+ {file = "matplotlib-3.8.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1095fecf99eeb7384dabad4bf44b965f929a5f6079654b681193edf7169ec20"},
+ {file = "matplotlib-3.8.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:bddfb1db89bfaa855912261c805bd0e10218923cc262b9159a49c29a7a1c1afa"},
+ {file = "matplotlib-3.8.2.tar.gz", hash = "sha256:01a978b871b881ee76017152f1f1a0cbf6bd5f7b8ff8c96df0df1bd57d8755a1"},
+]
+
+[package.dependencies]
+contourpy = ">=1.0.1"
+cycler = ">=0.10"
+fonttools = ">=4.22.0"
+kiwisolver = ">=1.3.1"
+numpy = ">=1.21,<2"
+packaging = ">=20.0"
+pillow = ">=8"
+pyparsing = ">=2.3.1"
+python-dateutil = ">=2.7"
+
+[[package]]
+name = "matplotlib-inline"
+version = "0.1.6"
+description = "Inline Matplotlib backend for Jupyter"
+category = "main"
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "matplotlib-inline-0.1.6.tar.gz", hash = "sha256:f887e5f10ba98e8d2b150ddcf4702c1e5f8b3a20005eb0f74bfdbd360ee6f304"},
+ {file = "matplotlib_inline-0.1.6-py3-none-any.whl", hash = "sha256:f1f41aab5328aa5aaea9b16d083b128102f8712542f819fe7e6a420ff581b311"},
+]
+
+[package.dependencies]
+traitlets = "*"
+
+[[package]]
+name = "mistune"
+version = "3.0.2"
+description = "A sane and fast Markdown parser with useful plugins and renderers"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "mistune-3.0.2-py3-none-any.whl", hash = "sha256:71481854c30fdbc938963d3605b72501f5c10a9320ecd412c121c163a1c7d205"},
+ {file = "mistune-3.0.2.tar.gz", hash = "sha256:fc7f93ded930c92394ef2cb6f04a8aabab4117a91449e72dcc8dfa646a508be8"},
+]
+
+[[package]]
+name = "mpmath"
+version = "1.3.0"
+description = "Python library for arbitrary-precision floating-point arithmetic"
+category = "main"
+optional = false
+python-versions = "*"
+files = [
+ {file = "mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c"},
+ {file = "mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f"},
+]
+
+[package.extras]
+develop = ["codecov", "pycodestyle", "pytest (>=4.6)", "pytest-cov", "wheel"]
+docs = ["sphinx"]
+gmpy = ["gmpy2 (>=2.1.0a4)"]
+tests = ["pytest (>=4.6)"]
+
+[[package]]
+name = "nbclient"
+version = "0.9.0"
+description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor."
+category = "main"
+optional = false
+python-versions = ">=3.8.0"
+files = [
+ {file = "nbclient-0.9.0-py3-none-any.whl", hash = "sha256:a3a1ddfb34d4a9d17fc744d655962714a866639acd30130e9be84191cd97cd15"},
+ {file = "nbclient-0.9.0.tar.gz", hash = "sha256:4b28c207877cf33ef3a9838cdc7a54c5ceff981194a82eac59d558f05487295e"},
+]
+
+[package.dependencies]
+jupyter-client = ">=6.1.12"
+jupyter-core = ">=4.12,<5.0.0 || >=5.1.0"
+nbformat = ">=5.1"
+traitlets = ">=5.4"
+
+[package.extras]
+dev = ["pre-commit"]
+docs = ["autodoc-traits", "mock", "moto", "myst-parser", "nbclient[test]", "sphinx (>=1.7)", "sphinx-book-theme", "sphinxcontrib-spelling"]
+test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>=7.0.0)", "pytest (>=7.0)", "pytest-asyncio", "pytest-cov (>=4.0)", "testpath", "xmltodict"]
+
+[[package]]
+name = "nbconvert"
+version = "7.13.1"
+description = "Converting Jupyter Notebooks"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "nbconvert-7.13.1-py3-none-any.whl", hash = "sha256:3c50eb2d326478cc90b8759cf2ab9dde3d892c6537cd6a5bc0991db8ef734bcc"},
+ {file = "nbconvert-7.13.1.tar.gz", hash = "sha256:2dc8267dbdfeedce2dcd34c9e3f1b51af18f43cb105549d1c5a18189ec23ba85"},
+]
+
+[package.dependencies]
+beautifulsoup4 = "*"
+bleach = "!=5.0.0"
+defusedxml = "*"
+jinja2 = ">=3.0"
+jupyter-core = ">=4.7"
+jupyterlab-pygments = "*"
+markupsafe = ">=2.0"
+mistune = ">=2.0.3,<4"
+nbclient = ">=0.5.0"
+nbformat = ">=5.7"
+packaging = "*"
+pandocfilters = ">=1.4.1"
+pygments = ">=2.4.1"
+tinycss2 = "*"
+traitlets = ">=5.1"
+
+[package.extras]
+all = ["nbconvert[docs,qtpdf,serve,test,webpdf]"]
+docs = ["ipykernel", "ipython", "myst-parser", "nbsphinx (>=0.2.12)", "pydata-sphinx-theme", "sphinx (==5.0.2)", "sphinxcontrib-spelling"]
+qtpdf = ["nbconvert[qtpng]"]
+qtpng = ["pyqtwebengine (>=5.15)"]
+serve = ["tornado (>=6.1)"]
+test = ["flaky", "ipykernel", "ipywidgets (>=7.5)", "pytest"]
+webpdf = ["playwright"]
+
+[[package]]
+name = "nbformat"
+version = "5.9.2"
+description = "The Jupyter Notebook format"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "nbformat-5.9.2-py3-none-any.whl", hash = "sha256:1c5172d786a41b82bcfd0c23f9e6b6f072e8fb49c39250219e4acfff1efe89e9"},
+ {file = "nbformat-5.9.2.tar.gz", hash = "sha256:5f98b5ba1997dff175e77e0c17d5c10a96eaed2cbd1de3533d1fc35d5e111192"},
+]
+
+[package.dependencies]
+fastjsonschema = "*"
+jsonschema = ">=2.6"
+jupyter-core = "*"
+traitlets = ">=5.1"
+
+[package.extras]
+docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"]
+test = ["pep440", "pre-commit", "pytest", "testpath"]
+
+[[package]]
+name = "nest-asyncio"
+version = "1.5.8"
+description = "Patch asyncio to allow nested event loops"
+category = "main"
+optional = false
+python-versions = ">=3.5"
+files = [
+ {file = "nest_asyncio-1.5.8-py3-none-any.whl", hash = "sha256:accda7a339a70599cb08f9dd09a67e0c2ef8d8d6f4c07f96ab203f2ae254e48d"},
+ {file = "nest_asyncio-1.5.8.tar.gz", hash = "sha256:25aa2ca0d2a5b5531956b9e273b45cf664cae2b145101d73b86b199978d48fdb"},
+]
+
+[[package]]
+name = "networkx"
+version = "3.2.1"
+description = "Python package for creating and manipulating graphs and networks"
+category = "main"
+optional = false
+python-versions = ">=3.9"
+files = [
+ {file = "networkx-3.2.1-py3-none-any.whl", hash = "sha256:f18c69adc97877c42332c170849c96cefa91881c99a7cb3e95b7c659ebdc1ec2"},
+ {file = "networkx-3.2.1.tar.gz", hash = "sha256:9f1bb5cf3409bf324e0a722c20bdb4c20ee39bf1c30ce8ae499c8502b0b5e0c6"},
+]
+
+[package.extras]
+default = ["matplotlib (>=3.5)", "numpy (>=1.22)", "pandas (>=1.4)", "scipy (>=1.9,!=1.11.0,!=1.11.1)"]
+developer = ["changelist (==0.4)", "mypy (>=1.1)", "pre-commit (>=3.2)", "rtoml"]
+doc = ["nb2plots (>=0.7)", "nbconvert (<7.9)", "numpydoc (>=1.6)", "pillow (>=9.4)", "pydata-sphinx-theme (>=0.14)", "sphinx (>=7)", "sphinx-gallery (>=0.14)", "texext (>=0.6.7)"]
+extra = ["lxml (>=4.6)", "pydot (>=1.4.2)", "pygraphviz (>=1.11)", "sympy (>=1.10)"]
+test = ["pytest (>=7.2)", "pytest-cov (>=4.0)"]
+
+[[package]]
+name = "notebook"
+version = "7.0.6"
+description = "Jupyter Notebook - A web-based notebook environment for interactive computing"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "notebook-7.0.6-py3-none-any.whl", hash = "sha256:0fe8f67102fea3744fedf652e4c15339390902ca70c5a31c4f547fa23da697cc"},
+ {file = "notebook-7.0.6.tar.gz", hash = "sha256:ec6113b06529019f7f287819af06c97a2baf7a95ac21a8f6e32192898e9f9a58"},
+]
+
+[package.dependencies]
+jupyter-server = ">=2.4.0,<3"
+jupyterlab = ">=4.0.2,<5"
+jupyterlab-server = ">=2.22.1,<3"
+notebook-shim = ">=0.2,<0.3"
+tornado = ">=6.2.0"
+
+[package.extras]
+dev = ["hatch", "pre-commit"]
+docs = ["myst-parser", "nbsphinx", "pydata-sphinx-theme", "sphinx (>=1.3.6)", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"]
+test = ["importlib-resources (>=5.0)", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.22.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"]
+
+[[package]]
+name = "notebook-shim"
+version = "0.2.3"
+description = "A shim layer for notebook traits and config"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "notebook_shim-0.2.3-py3-none-any.whl", hash = "sha256:a83496a43341c1674b093bfcebf0fe8e74cbe7eda5fd2bbc56f8e39e1486c0c7"},
+ {file = "notebook_shim-0.2.3.tar.gz", hash = "sha256:f69388ac283ae008cd506dda10d0288b09a017d822d5e8c7129a152cbd3ce7e9"},
+]
+
+[package.dependencies]
+jupyter-server = ">=1.8,<3"
+
+[package.extras]
+test = ["pytest", "pytest-console-scripts", "pytest-jupyter", "pytest-tornasync"]
+
+[[package]]
+name = "numpy"
+version = "1.26.2"
+description = "Fundamental package for array computing in Python"
+category = "main"
+optional = false
+python-versions = ">=3.9"
+files = [
+ {file = "numpy-1.26.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3703fc9258a4a122d17043e57b35e5ef1c5a5837c3db8be396c82e04c1cf9b0f"},
+ {file = "numpy-1.26.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cc392fdcbd21d4be6ae1bb4475a03ce3b025cd49a9be5345d76d7585aea69440"},
+ {file = "numpy-1.26.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36340109af8da8805d8851ef1d74761b3b88e81a9bd80b290bbfed61bd2b4f75"},
+ {file = "numpy-1.26.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bcc008217145b3d77abd3e4d5ef586e3bdfba8fe17940769f8aa09b99e856c00"},
+ {file = "numpy-1.26.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3ced40d4e9e18242f70dd02d739e44698df3dcb010d31f495ff00a31ef6014fe"},
+ {file = "numpy-1.26.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b272d4cecc32c9e19911891446b72e986157e6a1809b7b56518b4f3755267523"},
+ {file = "numpy-1.26.2-cp310-cp310-win32.whl", hash = "sha256:22f8fc02fdbc829e7a8c578dd8d2e15a9074b630d4da29cda483337e300e3ee9"},
+ {file = "numpy-1.26.2-cp310-cp310-win_amd64.whl", hash = "sha256:26c9d33f8e8b846d5a65dd068c14e04018d05533b348d9eaeef6c1bd787f9919"},
+ {file = "numpy-1.26.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b96e7b9c624ef3ae2ae0e04fa9b460f6b9f17ad8b4bec6d7756510f1f6c0c841"},
+ {file = "numpy-1.26.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:aa18428111fb9a591d7a9cc1b48150097ba6a7e8299fb56bdf574df650e7d1f1"},
+ {file = "numpy-1.26.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06fa1ed84aa60ea6ef9f91ba57b5ed963c3729534e6e54055fc151fad0423f0a"},
+ {file = "numpy-1.26.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96ca5482c3dbdd051bcd1fce8034603d6ebfc125a7bd59f55b40d8f5d246832b"},
+ {file = "numpy-1.26.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:854ab91a2906ef29dc3925a064fcd365c7b4da743f84b123002f6139bcb3f8a7"},
+ {file = "numpy-1.26.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f43740ab089277d403aa07567be138fc2a89d4d9892d113b76153e0e412409f8"},
+ {file = "numpy-1.26.2-cp311-cp311-win32.whl", hash = "sha256:a2bbc29fcb1771cd7b7425f98b05307776a6baf43035d3b80c4b0f29e9545186"},
+ {file = "numpy-1.26.2-cp311-cp311-win_amd64.whl", hash = "sha256:2b3fca8a5b00184828d12b073af4d0fc5fdd94b1632c2477526f6bd7842d700d"},
+ {file = "numpy-1.26.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a4cd6ed4a339c21f1d1b0fdf13426cb3b284555c27ac2f156dfdaaa7e16bfab0"},
+ {file = "numpy-1.26.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5d5244aabd6ed7f312268b9247be47343a654ebea52a60f002dc70c769048e75"},
+ {file = "numpy-1.26.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a3cdb4d9c70e6b8c0814239ead47da00934666f668426fc6e94cce869e13fd7"},
+ {file = "numpy-1.26.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa317b2325f7aa0a9471663e6093c210cb2ae9c0ad824732b307d2c51983d5b6"},
+ {file = "numpy-1.26.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:174a8880739c16c925799c018f3f55b8130c1f7c8e75ab0a6fa9d41cab092fd6"},
+ {file = "numpy-1.26.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f79b231bf5c16b1f39c7f4875e1ded36abee1591e98742b05d8a0fb55d8a3eec"},
+ {file = "numpy-1.26.2-cp312-cp312-win32.whl", hash = "sha256:4a06263321dfd3598cacb252f51e521a8cb4b6df471bb12a7ee5cbab20ea9167"},
+ {file = "numpy-1.26.2-cp312-cp312-win_amd64.whl", hash = "sha256:b04f5dc6b3efdaab541f7857351aac359e6ae3c126e2edb376929bd3b7f92d7e"},
+ {file = "numpy-1.26.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4eb8df4bf8d3d90d091e0146f6c28492b0be84da3e409ebef54349f71ed271ef"},
+ {file = "numpy-1.26.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1a13860fdcd95de7cf58bd6f8bc5a5ef81c0b0625eb2c9a783948847abbef2c2"},
+ {file = "numpy-1.26.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64308ebc366a8ed63fd0bf426b6a9468060962f1a4339ab1074c228fa6ade8e3"},
+ {file = "numpy-1.26.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baf8aab04a2c0e859da118f0b38617e5ee65d75b83795055fb66c0d5e9e9b818"},
+ {file = "numpy-1.26.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d73a3abcac238250091b11caef9ad12413dab01669511779bc9b29261dd50210"},
+ {file = "numpy-1.26.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b361d369fc7e5e1714cf827b731ca32bff8d411212fccd29ad98ad622449cc36"},
+ {file = "numpy-1.26.2-cp39-cp39-win32.whl", hash = "sha256:bd3f0091e845164a20bd5a326860c840fe2af79fa12e0469a12768a3ec578d80"},
+ {file = "numpy-1.26.2-cp39-cp39-win_amd64.whl", hash = "sha256:2beef57fb031dcc0dc8fa4fe297a742027b954949cabb52a2a376c144e5e6060"},
+ {file = "numpy-1.26.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:1cc3d5029a30fb5f06704ad6b23b35e11309491c999838c31f124fee32107c79"},
+ {file = "numpy-1.26.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94cc3c222bb9fb5a12e334d0479b97bb2df446fbe622b470928f5284ffca3f8d"},
+ {file = "numpy-1.26.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fe6b44fb8fcdf7eda4ef4461b97b3f63c466b27ab151bec2366db8b197387841"},
+ {file = "numpy-1.26.2.tar.gz", hash = "sha256:f65738447676ab5777f11e6bbbdb8ce11b785e105f690bc45966574816b6d3ea"},
+]
+
+[[package]]
+name = "nvidia-cublas-cu12"
+version = "12.1.3.1"
+description = "CUBLAS native runtime libraries"
+category = "main"
+optional = false
+python-versions = ">=3"
+files = [
+ {file = "nvidia_cublas_cu12-12.1.3.1-py3-none-manylinux1_x86_64.whl", hash = "sha256:ee53ccca76a6fc08fb9701aa95b6ceb242cdaab118c3bb152af4e579af792728"},
+ {file = "nvidia_cublas_cu12-12.1.3.1-py3-none-win_amd64.whl", hash = "sha256:2b964d60e8cf11b5e1073d179d85fa340c120e99b3067558f3cf98dd69d02906"},
+]
+
+[[package]]
+name = "nvidia-cuda-cupti-cu12"
+version = "12.1.105"
+description = "CUDA profiling tools runtime libs."
+category = "main"
+optional = false
+python-versions = ">=3"
+files = [
+ {file = "nvidia_cuda_cupti_cu12-12.1.105-py3-none-manylinux1_x86_64.whl", hash = "sha256:e54fde3983165c624cb79254ae9818a456eb6e87a7fd4d56a2352c24ee542d7e"},
+ {file = "nvidia_cuda_cupti_cu12-12.1.105-py3-none-win_amd64.whl", hash = "sha256:bea8236d13a0ac7190bd2919c3e8e6ce1e402104276e6f9694479e48bb0eb2a4"},
+]
+
+[[package]]
+name = "nvidia-cuda-nvrtc-cu12"
+version = "12.1.105"
+description = "NVRTC native runtime libraries"
+category = "main"
+optional = false
+python-versions = ">=3"
+files = [
+ {file = "nvidia_cuda_nvrtc_cu12-12.1.105-py3-none-manylinux1_x86_64.whl", hash = "sha256:339b385f50c309763ca65456ec75e17bbefcbbf2893f462cb8b90584cd27a1c2"},
+ {file = "nvidia_cuda_nvrtc_cu12-12.1.105-py3-none-win_amd64.whl", hash = "sha256:0a98a522d9ff138b96c010a65e145dc1b4850e9ecb75a0172371793752fd46ed"},
+]
+
+[[package]]
+name = "nvidia-cuda-runtime-cu12"
+version = "12.1.105"
+description = "CUDA Runtime native Libraries"
+category = "main"
+optional = false
+python-versions = ">=3"
+files = [
+ {file = "nvidia_cuda_runtime_cu12-12.1.105-py3-none-manylinux1_x86_64.whl", hash = "sha256:6e258468ddf5796e25f1dc591a31029fa317d97a0a94ed93468fc86301d61e40"},
+ {file = "nvidia_cuda_runtime_cu12-12.1.105-py3-none-win_amd64.whl", hash = "sha256:dfb46ef84d73fababab44cf03e3b83f80700d27ca300e537f85f636fac474344"},
+]
+
+[[package]]
+name = "nvidia-cudnn-cu12"
+version = "8.9.2.26"
+description = "cuDNN runtime libraries"
+category = "main"
+optional = false
+python-versions = ">=3"
+files = [
+ {file = "nvidia_cudnn_cu12-8.9.2.26-py3-none-manylinux1_x86_64.whl", hash = "sha256:5ccb288774fdfb07a7e7025ffec286971c06d8d7b4fb162525334616d7629ff9"},
+]
+
+[package.dependencies]
+nvidia-cublas-cu12 = "*"
+
+[[package]]
+name = "nvidia-cufft-cu12"
+version = "11.0.2.54"
+description = "CUFFT native runtime libraries"
+category = "main"
+optional = false
+python-versions = ">=3"
+files = [
+ {file = "nvidia_cufft_cu12-11.0.2.54-py3-none-manylinux1_x86_64.whl", hash = "sha256:794e3948a1aa71fd817c3775866943936774d1c14e7628c74f6f7417224cdf56"},
+ {file = "nvidia_cufft_cu12-11.0.2.54-py3-none-win_amd64.whl", hash = "sha256:d9ac353f78ff89951da4af698f80870b1534ed69993f10a4cf1d96f21357e253"},
+]
+
+[[package]]
+name = "nvidia-curand-cu12"
+version = "10.3.2.106"
+description = "CURAND native runtime libraries"
+category = "main"
+optional = false
+python-versions = ">=3"
+files = [
+ {file = "nvidia_curand_cu12-10.3.2.106-py3-none-manylinux1_x86_64.whl", hash = "sha256:9d264c5036dde4e64f1de8c50ae753237c12e0b1348738169cd0f8a536c0e1e0"},
+ {file = "nvidia_curand_cu12-10.3.2.106-py3-none-win_amd64.whl", hash = "sha256:75b6b0c574c0037839121317e17fd01f8a69fd2ef8e25853d826fec30bdba74a"},
+]
+
+[[package]]
+name = "nvidia-cusolver-cu12"
+version = "11.4.5.107"
+description = "CUDA solver native runtime libraries"
+category = "main"
+optional = false
+python-versions = ">=3"
+files = [
+ {file = "nvidia_cusolver_cu12-11.4.5.107-py3-none-manylinux1_x86_64.whl", hash = "sha256:8a7ec542f0412294b15072fa7dab71d31334014a69f953004ea7a118206fe0dd"},
+ {file = "nvidia_cusolver_cu12-11.4.5.107-py3-none-win_amd64.whl", hash = "sha256:74e0c3a24c78612192a74fcd90dd117f1cf21dea4822e66d89e8ea80e3cd2da5"},
+]
+
+[package.dependencies]
+nvidia-cublas-cu12 = "*"
+nvidia-cusparse-cu12 = "*"
+nvidia-nvjitlink-cu12 = "*"
+
+[[package]]
+name = "nvidia-cusparse-cu12"
+version = "12.1.0.106"
+description = "CUSPARSE native runtime libraries"
+category = "main"
+optional = false
+python-versions = ">=3"
+files = [
+ {file = "nvidia_cusparse_cu12-12.1.0.106-py3-none-manylinux1_x86_64.whl", hash = "sha256:f3b50f42cf363f86ab21f720998517a659a48131e8d538dc02f8768237bd884c"},
+ {file = "nvidia_cusparse_cu12-12.1.0.106-py3-none-win_amd64.whl", hash = "sha256:b798237e81b9719373e8fae8d4f091b70a0cf09d9d85c95a557e11df2d8e9a5a"},
+]
+
+[package.dependencies]
+nvidia-nvjitlink-cu12 = "*"
+
+[[package]]
+name = "nvidia-nccl-cu12"
+version = "2.18.1"
+description = "NVIDIA Collective Communication Library (NCCL) Runtime"
+category = "main"
+optional = false
+python-versions = ">=3"
+files = [
+ {file = "nvidia_nccl_cu12-2.18.1-py3-none-manylinux1_x86_64.whl", hash = "sha256:1a6c4acefcbebfa6de320f412bf7866de856e786e0462326ba1bac40de0b5e71"},
+]
+
+[[package]]
+name = "nvidia-nvjitlink-cu12"
+version = "12.3.101"
+description = "Nvidia JIT LTO Library"
+category = "main"
+optional = false
+python-versions = ">=3"
+files = [
+ {file = "nvidia_nvjitlink_cu12-12.3.101-py3-none-manylinux1_x86_64.whl", hash = "sha256:64335a8088e2b9d196ae8665430bc6a2b7e6ef2eb877a9c735c804bd4ff6467c"},
+ {file = "nvidia_nvjitlink_cu12-12.3.101-py3-none-win_amd64.whl", hash = "sha256:1b2e317e437433753530792f13eece58f0aec21a2b05903be7bffe58a606cbd1"},
+]
+
+[[package]]
+name = "nvidia-nvtx-cu12"
+version = "12.1.105"
+description = "NVIDIA Tools Extension"
+category = "main"
+optional = false
+python-versions = ">=3"
+files = [
+ {file = "nvidia_nvtx_cu12-12.1.105-py3-none-manylinux1_x86_64.whl", hash = "sha256:dc21cf308ca5691e7c04d962e213f8a4aa9bbfa23d95412f452254c2caeb09e5"},
+ {file = "nvidia_nvtx_cu12-12.1.105-py3-none-win_amd64.whl", hash = "sha256:65f4d98982b31b60026e0e6de73fbdfc09d08a96f4656dd3665ca616a11e1e82"},
+]
+
+[[package]]
+name = "onnx"
+version = "1.15.0"
+description = "Open Neural Network Exchange"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "onnx-1.15.0-cp310-cp310-macosx_10_12_universal2.whl", hash = "sha256:51cacb6aafba308aaf462252ced562111f6991cdc7bc57a6c554c3519453a8ff"},
+ {file = "onnx-1.15.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:0aee26b6f7f7da7e840de75ad9195a77a147d0662c94eaa6483be13ba468ffc1"},
+ {file = "onnx-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:baf6ef6c93b3b843edb97a8d5b3d229a1301984f3f8dee859c29634d2083e6f9"},
+ {file = "onnx-1.15.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96ed899fe6000edc05bb2828863d3841cfddd5a7cf04c1a771f112e94de75d9f"},
+ {file = "onnx-1.15.0-cp310-cp310-win32.whl", hash = "sha256:f1ad3d77fc2f4b4296f0ac2c8cadd8c1dcf765fc586b737462d3a0fe8f7c696a"},
+ {file = "onnx-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:ca4ebc4f47109bfb12c8c9e83dd99ec5c9f07d2e5f05976356c6ccdce3552010"},
+ {file = "onnx-1.15.0-cp311-cp311-macosx_10_12_universal2.whl", hash = "sha256:233ffdb5ca8cc2d960b10965a763910c0830b64b450376da59207f454701f343"},
+ {file = "onnx-1.15.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:51fa79c9ea9af033638ec51f9177b8e76c55fad65bb83ea96ee88fafade18ee7"},
+ {file = "onnx-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f277d4861729f5253a51fa41ce91bfec1c4574ee41b5637056b43500917295ce"},
+ {file = "onnx-1.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8a7c94d2ebead8f739fdb70d1ce5a71726f4e17b3e5b8ad64455ea1b2801a85"},
+ {file = "onnx-1.15.0-cp311-cp311-win32.whl", hash = "sha256:17dcfb86a8c6bdc3971443c29b023dd9c90ff1d15d8baecee0747a6b7f74e650"},
+ {file = "onnx-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:60a3e28747e305cd2e766e6a53a0a6d952cf9e72005ec6023ce5e07666676a4e"},
+ {file = "onnx-1.15.0-cp38-cp38-macosx_10_12_universal2.whl", hash = "sha256:6b5c798d9e0907eaf319e3d3e7c89a2ed9a854bcb83da5fefb6d4c12d5e90721"},
+ {file = "onnx-1.15.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:a4f774ff50092fe19bd8f46b2c9b27b1d30fbd700c22abde48a478142d464322"},
+ {file = "onnx-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2b0e7f3938f2d994c34616bfb8b4b1cebbc4a0398483344fe5e9f2fe95175e6"},
+ {file = "onnx-1.15.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49cebebd0020a4b12c1dd0909d426631212ef28606d7e4d49463d36abe7639ad"},
+ {file = "onnx-1.15.0-cp38-cp38-win32.whl", hash = "sha256:1fdf8a3ff75abc2b32c83bf27fb7c18d6b976c9c537263fadd82b9560fe186fa"},
+ {file = "onnx-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:763e55c26e8de3a2dce008d55ae81b27fa8fb4acbb01a29b9f3c01f200c4d676"},
+ {file = "onnx-1.15.0-cp39-cp39-macosx_10_12_universal2.whl", hash = "sha256:b2d5e802837629fc9c86f19448d19dd04d206578328bce202aeb3d4bedab43c4"},
+ {file = "onnx-1.15.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:9a9cfbb5e5d5d88f89d0dfc9df5fb858899db874e1d5ed21e76c481f3cafc90d"},
+ {file = "onnx-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f472bbe5cb670a0a4a4db08f41fde69b187a009d0cb628f964840d3f83524e9"},
+ {file = "onnx-1.15.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bf2de9bef64792e5b8080c678023ac7d2b9e05d79a3e17e92cf6a4a624831d2"},
+ {file = "onnx-1.15.0-cp39-cp39-win32.whl", hash = "sha256:ef4d9eb44b111e69e4534f3233fc2c13d1e26920d24ae4359d513bd54694bc6d"},
+ {file = "onnx-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:95d7a3e2d79d371e272e39ae3f7547e0b116d0c7f774a4004e97febe6c93507f"},
+ {file = "onnx-1.15.0.tar.gz", hash = "sha256:b18461a7d38f286618ca2a6e78062a2a9c634ce498e631e708a8041b00094825"},
+]
+
+[package.dependencies]
+numpy = "*"
+protobuf = ">=3.20.2"
+
+[package.extras]
+reference = ["Pillow", "google-re2"]
+
+[[package]]
+name = "onnxruntime"
+version = "1.16.3"
+description = "ONNX Runtime is a runtime accelerator for Machine Learning models"
+category = "main"
+optional = false
+python-versions = "*"
+files = [
+ {file = "onnxruntime-1.16.3-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:3bc41f323ac77acfed190be8ffdc47a6a75e4beeb3473fbf55eeb075ccca8df2"},
+ {file = "onnxruntime-1.16.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:212741b519ee61a4822c79c47147d63a8b0ffde25cd33988d3d7be9fbd51005d"},
+ {file = "onnxruntime-1.16.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f91f5497fe3df4ceee2f9e66c6148d9bfeb320cd6a71df361c66c5b8bac985a"},
+ {file = "onnxruntime-1.16.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef2b1fc269cabd27f129fb9058917d6fdc89b188c49ed8700f300b945c81f889"},
+ {file = "onnxruntime-1.16.3-cp310-cp310-win32.whl", hash = "sha256:f36b56a593b49a3c430be008c2aea6658d91a3030115729609ec1d5ffbaab1b6"},
+ {file = "onnxruntime-1.16.3-cp310-cp310-win_amd64.whl", hash = "sha256:3c467eaa3d2429c026b10c3d17b78b7f311f718ef9d2a0d6938e5c3c2611b0cf"},
+ {file = "onnxruntime-1.16.3-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:a225bb683991001d111f75323d355b3590e75e16b5e0f07a0401e741a0143ea1"},
+ {file = "onnxruntime-1.16.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9aded21fe3d898edd86be8aa2eb995aa375e800ad3dfe4be9f618a20b8ee3630"},
+ {file = "onnxruntime-1.16.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:00cccc37a5195c8fca5011b9690b349db435986bd508eb44c9fce432da9228a4"},
+ {file = "onnxruntime-1.16.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e253e572021563226a86f1c024f8f70cdae28f2fb1cc8c3a9221e8b1ce37db5"},
+ {file = "onnxruntime-1.16.3-cp311-cp311-win32.whl", hash = "sha256:a82a8f0b4c978d08f9f5c7a6019ae51151bced9fd91e5aaa0c20a9e4ac7a60b6"},
+ {file = "onnxruntime-1.16.3-cp311-cp311-win_amd64.whl", hash = "sha256:78d81d9af457a1dc90db9a7da0d09f3ccb1288ea1236c6ab19f0ca61f3eee2d3"},
+ {file = "onnxruntime-1.16.3-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:04ebcd29c20473596a1412e471524b2fb88d55e6301c40b98dd2407b5911595f"},
+ {file = "onnxruntime-1.16.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9996bab0f202a6435ab867bc55598f15210d0b72794d5de83712b53d564084ae"},
+ {file = "onnxruntime-1.16.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b8f5083f903408238883821dd8c775f8120cb4a604166dbdabe97f4715256d5"},
+ {file = "onnxruntime-1.16.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c2dcf1b70f8434abb1116fe0975c00e740722aaf321997195ea3618cc00558e"},
+ {file = "onnxruntime-1.16.3-cp38-cp38-win32.whl", hash = "sha256:d4a0151e1accd04da6711f6fd89024509602f82c65a754498e960b032359b02d"},
+ {file = "onnxruntime-1.16.3-cp38-cp38-win_amd64.whl", hash = "sha256:e8aa5bba78afbd4d8a2654b14ec7462ff3ce4a6aad312a3c2d2c2b65009f2541"},
+ {file = "onnxruntime-1.16.3-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:6829dc2a79d48c911fedaf4c0f01e03c86297d32718a3fdee7a282766dfd282a"},
+ {file = "onnxruntime-1.16.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:76f876c53bfa912c6c242fc38213a6f13f47612d4360bc9d599bd23753e53161"},
+ {file = "onnxruntime-1.16.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4137e5d443e2dccebe5e156a47f1d6d66f8077b03587c35f11ee0c7eda98b533"},
+ {file = "onnxruntime-1.16.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c56695c1a343c7c008b647fff3df44da63741fbe7b6003ef576758640719be7b"},
+ {file = "onnxruntime-1.16.3-cp39-cp39-win32.whl", hash = "sha256:985a029798744ce4743fcf8442240fed35c8e4d4d30ec7d0c2cdf1388cd44408"},
+ {file = "onnxruntime-1.16.3-cp39-cp39-win_amd64.whl", hash = "sha256:28ff758b17ce3ca6bcad3d936ec53bd7f5482e7630a13f6dcae518eba8f71d85"},
+]
+
+[package.dependencies]
+coloredlogs = "*"
+flatbuffers = "*"
+numpy = ">=1.21.6"
+packaging = "*"
+protobuf = "*"
+sympy = "*"
+
+[[package]]
+name = "opencv-python"
+version = "4.8.1.78"
+description = "Wrapper package for OpenCV python bindings."
+category = "main"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "opencv-python-4.8.1.78.tar.gz", hash = "sha256:cc7adbbcd1112877a39274106cb2752e04984bc01a031162952e97450d6117f6"},
+ {file = "opencv_python-4.8.1.78-cp37-abi3-macosx_10_16_x86_64.whl", hash = "sha256:91d5f6f5209dc2635d496f6b8ca6573ecdad051a09e6b5de4c399b8e673c60da"},
+ {file = "opencv_python-4.8.1.78-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:bc31f47e05447da8b3089faa0a07ffe80e114c91ce0b171e6424f9badbd1c5cd"},
+ {file = "opencv_python-4.8.1.78-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9814beca408d3a0eca1bae7e3e5be68b07c17ecceb392b94170881216e09b319"},
+ {file = "opencv_python-4.8.1.78-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4c406bdb41eb21ea51b4e90dfbc989c002786c3f601c236a99c59a54670a394"},
+ {file = "opencv_python-4.8.1.78-cp37-abi3-win32.whl", hash = "sha256:a7aac3900fbacf55b551e7b53626c3dad4c71ce85643645c43e91fcb19045e47"},
+ {file = "opencv_python-4.8.1.78-cp37-abi3-win_amd64.whl", hash = "sha256:b983197f97cfa6fcb74e1da1802c7497a6f94ed561aba6980f1f33123f904956"},
+]
+
+[package.dependencies]
+numpy = [
+ {version = ">=1.21.2", markers = "python_version >= \"3.10\""},
+ {version = ">=1.21.4", markers = "python_version >= \"3.10\" and platform_system == \"Darwin\""},
+ {version = ">=1.23.5", markers = "python_version >= \"3.11\""},
+ {version = ">=1.19.3", markers = "python_version >= \"3.6\" and platform_system == \"Linux\" and platform_machine == \"aarch64\" or python_version >= \"3.9\""},
+ {version = ">=1.17.0", markers = "python_version >= \"3.7\""},
+ {version = ">=1.17.3", markers = "python_version >= \"3.8\""},
+]
+
+[[package]]
+name = "opencv-python-headless"
+version = "4.8.1.78"
+description = "Wrapper package for OpenCV python bindings."
+category = "main"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "opencv-python-headless-4.8.1.78.tar.gz", hash = "sha256:bc7197b42352f6f865c302a49140b889ec7cd957dd697e2d7fc016ad0d3f28f1"},
+ {file = "opencv_python_headless-4.8.1.78-cp37-abi3-macosx_10_16_x86_64.whl", hash = "sha256:f3a33f644249f9ce1c913eac580e4b3ef4ce7cab0a71900274708959c2feb5e3"},
+ {file = "opencv_python_headless-4.8.1.78-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:2c7d45721df9801c4dcd34683a15caa0e30f38b185263fec04a6eb274bc720f0"},
+ {file = "opencv_python_headless-4.8.1.78-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b6bd6e1132b6f5dcb3a5bfe30fc4d341a7bfb26134da349a06c9255288ded94"},
+ {file = "opencv_python_headless-4.8.1.78-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58e70d2f0915fe23e02c6e405588276c9397844a47d38b9c87fac5f7f9ba2dcc"},
+ {file = "opencv_python_headless-4.8.1.78-cp37-abi3-win32.whl", hash = "sha256:382f8c7a6a14f80091284eecedd52cee4812231ee0eff1118592197b538d9252"},
+ {file = "opencv_python_headless-4.8.1.78-cp37-abi3-win_amd64.whl", hash = "sha256:0a0f1e9f836f7d5bad1dd164694944c8761711cbdf4b36ebbd4815a8ef731079"},
+]
+
+[package.dependencies]
+numpy = [
+ {version = ">=1.21.2", markers = "python_version >= \"3.10\""},
+ {version = ">=1.21.4", markers = "python_version >= \"3.10\" and platform_system == \"Darwin\""},
+ {version = ">=1.23.5", markers = "python_version >= \"3.11\""},
+ {version = ">=1.19.3", markers = "python_version >= \"3.6\" and platform_system == \"Linux\" and platform_machine == \"aarch64\" or python_version >= \"3.9\""},
+ {version = ">=1.17.0", markers = "python_version >= \"3.7\""},
+ {version = ">=1.17.3", markers = "python_version >= \"3.8\""},
+]
+
+[[package]]
+name = "overrides"
+version = "7.4.0"
+description = "A decorator to automatically detect mismatch when overriding a method."
+category = "main"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "overrides-7.4.0-py3-none-any.whl", hash = "sha256:3ad24583f86d6d7a49049695efe9933e67ba62f0c7625d53c59fa832ce4b8b7d"},
+ {file = "overrides-7.4.0.tar.gz", hash = "sha256:9502a3cca51f4fac40b5feca985b6703a5c1f6ad815588a7ca9e285b9dca6757"},
+]
+
+[[package]]
+name = "packaging"
+version = "23.2"
+description = "Core utilities for Python packages"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"},
+ {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"},
+]
+
+[[package]]
+name = "pandas"
+version = "1.5.3"
+description = "Powerful data structures for data analysis, time series, and statistics"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pandas-1.5.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3749077d86e3a2f0ed51367f30bf5b82e131cc0f14260c4d3e499186fccc4406"},
+ {file = "pandas-1.5.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:972d8a45395f2a2d26733eb8d0f629b2f90bebe8e8eddbb8829b180c09639572"},
+ {file = "pandas-1.5.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:50869a35cbb0f2e0cd5ec04b191e7b12ed688874bd05dd777c19b28cbea90996"},
+ {file = "pandas-1.5.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3ac844a0fe00bfaeb2c9b51ab1424e5c8744f89860b138434a363b1f620f354"},
+ {file = "pandas-1.5.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a0a56cef15fd1586726dace5616db75ebcfec9179a3a55e78f72c5639fa2a23"},
+ {file = "pandas-1.5.3-cp310-cp310-win_amd64.whl", hash = "sha256:478ff646ca42b20376e4ed3fa2e8d7341e8a63105586efe54fa2508ee087f328"},
+ {file = "pandas-1.5.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6973549c01ca91ec96199e940495219c887ea815b2083722821f1d7abfa2b4dc"},
+ {file = "pandas-1.5.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c39a8da13cede5adcd3be1182883aea1c925476f4e84b2807a46e2775306305d"},
+ {file = "pandas-1.5.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f76d097d12c82a535fda9dfe5e8dd4127952b45fea9b0276cb30cca5ea313fbc"},
+ {file = "pandas-1.5.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e474390e60ed609cec869b0da796ad94f420bb057d86784191eefc62b65819ae"},
+ {file = "pandas-1.5.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f2b952406a1588ad4cad5b3f55f520e82e902388a6d5a4a91baa8d38d23c7f6"},
+ {file = "pandas-1.5.3-cp311-cp311-win_amd64.whl", hash = "sha256:bc4c368f42b551bf72fac35c5128963a171b40dce866fb066540eeaf46faa003"},
+ {file = "pandas-1.5.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:14e45300521902689a81f3f41386dc86f19b8ba8dd5ac5a3c7010ef8d2932813"},
+ {file = "pandas-1.5.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9842b6f4b8479e41968eced654487258ed81df7d1c9b7b870ceea24ed9459b31"},
+ {file = "pandas-1.5.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:26d9c71772c7afb9d5046e6e9cf42d83dd147b5cf5bcb9d97252077118543792"},
+ {file = "pandas-1.5.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5fbcb19d6fceb9e946b3e23258757c7b225ba450990d9ed63ccceeb8cae609f7"},
+ {file = "pandas-1.5.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:565fa34a5434d38e9d250af3c12ff931abaf88050551d9fbcdfafca50d62babf"},
+ {file = "pandas-1.5.3-cp38-cp38-win32.whl", hash = "sha256:87bd9c03da1ac870a6d2c8902a0e1fd4267ca00f13bc494c9e5a9020920e1d51"},
+ {file = "pandas-1.5.3-cp38-cp38-win_amd64.whl", hash = "sha256:41179ce559943d83a9b4bbacb736b04c928b095b5f25dd2b7389eda08f46f373"},
+ {file = "pandas-1.5.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c74a62747864ed568f5a82a49a23a8d7fe171d0c69038b38cedf0976831296fa"},
+ {file = "pandas-1.5.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c4c00e0b0597c8e4f59e8d461f797e5d70b4d025880516a8261b2817c47759ee"},
+ {file = "pandas-1.5.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a50d9a4336a9621cab7b8eb3fb11adb82de58f9b91d84c2cd526576b881a0c5a"},
+ {file = "pandas-1.5.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd05f7783b3274aa206a1af06f0ceed3f9b412cf665b7247eacd83be41cf7bf0"},
+ {file = "pandas-1.5.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f69c4029613de47816b1bb30ff5ac778686688751a5e9c99ad8c7031f6508e5"},
+ {file = "pandas-1.5.3-cp39-cp39-win32.whl", hash = "sha256:7cec0bee9f294e5de5bbfc14d0573f65526071029d036b753ee6507d2a21480a"},
+ {file = "pandas-1.5.3-cp39-cp39-win_amd64.whl", hash = "sha256:dfd681c5dc216037e0b0a2c821f5ed99ba9f03ebcf119c7dac0e9a7b960b9ec9"},
+ {file = "pandas-1.5.3.tar.gz", hash = "sha256:74a3fd7e5a7ec052f183273dc7b0acd3a863edf7520f5d3a1765c04ffdb3b0b1"},
+]
+
+[package.dependencies]
+numpy = [
+ {version = ">=1.21.0", markers = "python_version >= \"3.10\""},
+ {version = ">=1.23.2", markers = "python_version >= \"3.11\""},
+]
+python-dateutil = ">=2.8.1"
+pytz = ">=2020.1"
+
+[package.extras]
+test = ["hypothesis (>=5.5.3)", "pytest (>=6.0)", "pytest-xdist (>=1.31)"]
+
+[[package]]
+name = "pandocfilters"
+version = "1.5.0"
+description = "Utilities for writing pandoc filters in python"
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+files = [
+ {file = "pandocfilters-1.5.0-py2.py3-none-any.whl", hash = "sha256:33aae3f25fd1a026079f5d27bdd52496f0e0803b3469282162bafdcbdf6ef14f"},
+ {file = "pandocfilters-1.5.0.tar.gz", hash = "sha256:0b679503337d233b4339a817bfc8c50064e2eff681314376a47cb582305a7a38"},
+]
+
+[[package]]
+name = "parso"
+version = "0.8.3"
+description = "A Python Parser"
+category = "main"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "parso-0.8.3-py2.py3-none-any.whl", hash = "sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75"},
+ {file = "parso-0.8.3.tar.gz", hash = "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0"},
+]
+
+[package.extras]
+qa = ["flake8 (==3.8.3)", "mypy (==0.782)"]
+testing = ["docopt", "pytest (<6.0.0)"]
+
+[[package]]
+name = "pexpect"
+version = "4.9.0"
+description = "Pexpect allows easy control of interactive console applications."
+category = "main"
+optional = false
+python-versions = "*"
+files = [
+ {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"},
+ {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"},
+]
+
+[package.dependencies]
+ptyprocess = ">=0.5"
+
+[[package]]
+name = "pillow"
+version = "10.1.0"
+description = "Python Imaging Library (Fork)"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "Pillow-10.1.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:1ab05f3db77e98f93964697c8efc49c7954b08dd61cff526b7f2531a22410106"},
+ {file = "Pillow-10.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6932a7652464746fcb484f7fc3618e6503d2066d853f68a4bd97193a3996e273"},
+ {file = "Pillow-10.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f63b5a68daedc54c7c3464508d8c12075e56dcfbd42f8c1bf40169061ae666"},
+ {file = "Pillow-10.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0949b55eb607898e28eaccb525ab104b2d86542a85c74baf3a6dc24002edec2"},
+ {file = "Pillow-10.1.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:ae88931f93214777c7a3aa0a8f92a683f83ecde27f65a45f95f22d289a69e593"},
+ {file = "Pillow-10.1.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:b0eb01ca85b2361b09480784a7931fc648ed8b7836f01fb9241141b968feb1db"},
+ {file = "Pillow-10.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d27b5997bdd2eb9fb199982bb7eb6164db0426904020dc38c10203187ae2ff2f"},
+ {file = "Pillow-10.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7df5608bc38bd37ef585ae9c38c9cd46d7c81498f086915b0f97255ea60c2818"},
+ {file = "Pillow-10.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:41f67248d92a5e0a2076d3517d8d4b1e41a97e2df10eb8f93106c89107f38b57"},
+ {file = "Pillow-10.1.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:1fb29c07478e6c06a46b867e43b0bcdb241b44cc52be9bc25ce5944eed4648e7"},
+ {file = "Pillow-10.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2cdc65a46e74514ce742c2013cd4a2d12e8553e3a2563c64879f7c7e4d28bce7"},
+ {file = "Pillow-10.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50d08cd0a2ecd2a8657bd3d82c71efd5a58edb04d9308185d66c3a5a5bed9610"},
+ {file = "Pillow-10.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:062a1610e3bc258bff2328ec43f34244fcec972ee0717200cb1425214fe5b839"},
+ {file = "Pillow-10.1.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:61f1a9d247317fa08a308daaa8ee7b3f760ab1809ca2da14ecc88ae4257d6172"},
+ {file = "Pillow-10.1.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a646e48de237d860c36e0db37ecaecaa3619e6f3e9d5319e527ccbc8151df061"},
+ {file = "Pillow-10.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:47e5bf85b80abc03be7455c95b6d6e4896a62f6541c1f2ce77a7d2bb832af262"},
+ {file = "Pillow-10.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a92386125e9ee90381c3369f57a2a50fa9e6aa8b1cf1d9c4b200d41a7dd8e992"},
+ {file = "Pillow-10.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:0f7c276c05a9767e877a0b4c5050c8bee6a6d960d7f0c11ebda6b99746068c2a"},
+ {file = "Pillow-10.1.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:a89b8312d51715b510a4fe9fc13686283f376cfd5abca8cd1c65e4c76e21081b"},
+ {file = "Pillow-10.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:00f438bb841382b15d7deb9a05cc946ee0f2c352653c7aa659e75e592f6fa17d"},
+ {file = "Pillow-10.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d929a19f5469b3f4df33a3df2983db070ebb2088a1e145e18facbc28cae5b27"},
+ {file = "Pillow-10.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a92109192b360634a4489c0c756364c0c3a2992906752165ecb50544c251312"},
+ {file = "Pillow-10.1.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:0248f86b3ea061e67817c47ecbe82c23f9dd5d5226200eb9090b3873d3ca32de"},
+ {file = "Pillow-10.1.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:9882a7451c680c12f232a422730f986a1fcd808da0fd428f08b671237237d651"},
+ {file = "Pillow-10.1.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1c3ac5423c8c1da5928aa12c6e258921956757d976405e9467c5f39d1d577a4b"},
+ {file = "Pillow-10.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:806abdd8249ba3953c33742506fe414880bad78ac25cc9a9b1c6ae97bedd573f"},
+ {file = "Pillow-10.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:eaed6977fa73408b7b8a24e8b14e59e1668cfc0f4c40193ea7ced8e210adf996"},
+ {file = "Pillow-10.1.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:fe1e26e1ffc38be097f0ba1d0d07fcade2bcfd1d023cda5b29935ae8052bd793"},
+ {file = "Pillow-10.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7a7e3daa202beb61821c06d2517428e8e7c1aab08943e92ec9e5755c2fc9ba5e"},
+ {file = "Pillow-10.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:24fadc71218ad2b8ffe437b54876c9382b4a29e030a05a9879f615091f42ffc2"},
+ {file = "Pillow-10.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa1d323703cfdac2036af05191b969b910d8f115cf53093125e4058f62012c9a"},
+ {file = "Pillow-10.1.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:912e3812a1dbbc834da2b32299b124b5ddcb664ed354916fd1ed6f193f0e2d01"},
+ {file = "Pillow-10.1.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:7dbaa3c7de82ef37e7708521be41db5565004258ca76945ad74a8e998c30af8d"},
+ {file = "Pillow-10.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9d7bc666bd8c5a4225e7ac71f2f9d12466ec555e89092728ea0f5c0c2422ea80"},
+ {file = "Pillow-10.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:baada14941c83079bf84c037e2d8b7506ce201e92e3d2fa0d1303507a8538212"},
+ {file = "Pillow-10.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:2ef6721c97894a7aa77723740a09547197533146fba8355e86d6d9a4a1056b14"},
+ {file = "Pillow-10.1.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0a026c188be3b443916179f5d04548092e253beb0c3e2ee0a4e2cdad72f66099"},
+ {file = "Pillow-10.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:04f6f6149f266a100374ca3cc368b67fb27c4af9f1cc8cb6306d849dcdf12616"},
+ {file = "Pillow-10.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb40c011447712d2e19cc261c82655f75f32cb724788df315ed992a4d65696bb"},
+ {file = "Pillow-10.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a8413794b4ad9719346cd9306118450b7b00d9a15846451549314a58ac42219"},
+ {file = "Pillow-10.1.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:c9aeea7b63edb7884b031a35305629a7593272b54f429a9869a4f63a1bf04c34"},
+ {file = "Pillow-10.1.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b4005fee46ed9be0b8fb42be0c20e79411533d1fd58edabebc0dd24626882cfd"},
+ {file = "Pillow-10.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4d0152565c6aa6ebbfb1e5d8624140a440f2b99bf7afaafbdbf6430426497f28"},
+ {file = "Pillow-10.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d921bc90b1defa55c9917ca6b6b71430e4286fc9e44c55ead78ca1a9f9eba5f2"},
+ {file = "Pillow-10.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:cfe96560c6ce2f4c07d6647af2d0f3c54cc33289894ebd88cfbb3bcd5391e256"},
+ {file = "Pillow-10.1.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:937bdc5a7f5343d1c97dc98149a0be7eb9704e937fe3dc7140e229ae4fc572a7"},
+ {file = "Pillow-10.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1c25762197144e211efb5f4e8ad656f36c8d214d390585d1d21281f46d556ba"},
+ {file = "Pillow-10.1.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:afc8eef765d948543a4775f00b7b8c079b3321d6b675dde0d02afa2ee23000b4"},
+ {file = "Pillow-10.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:883f216eac8712b83a63f41b76ddfb7b2afab1b74abbb413c5df6680f071a6b9"},
+ {file = "Pillow-10.1.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b920e4d028f6442bea9a75b7491c063f0b9a3972520731ed26c83e254302eb1e"},
+ {file = "Pillow-10.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c41d960babf951e01a49c9746f92c5a7e0d939d1652d7ba30f6b3090f27e412"},
+ {file = "Pillow-10.1.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1fafabe50a6977ac70dfe829b2d5735fd54e190ab55259ec8aea4aaea412fa0b"},
+ {file = "Pillow-10.1.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:3b834f4b16173e5b92ab6566f0473bfb09f939ba14b23b8da1f54fa63e4b623f"},
+ {file = "Pillow-10.1.0.tar.gz", hash = "sha256:e6bf8de6c36ed96c86ea3b6e1d5273c53f46ef518a062464cd7ef5dd2cf92e38"},
+]
+
+[package.extras]
+docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"]
+tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"]
+
+[[package]]
+name = "platformdirs"
+version = "4.1.0"
+description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "platformdirs-4.1.0-py3-none-any.whl", hash = "sha256:11c8f37bcca40db96d8144522d925583bdb7a31f7b0e37e3ed4318400a8e2380"},
+ {file = "platformdirs-4.1.0.tar.gz", hash = "sha256:906d548203468492d432bcb294d4bc2fff751bf84971fbb2c10918cc206ee420"},
+]
+
+[package.extras]
+docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.1)", "sphinx-autodoc-typehints (>=1.24)"]
+test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)"]
+
+[[package]]
+name = "prometheus-client"
+version = "0.19.0"
+description = "Python client for the Prometheus monitoring system."
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "prometheus_client-0.19.0-py3-none-any.whl", hash = "sha256:c88b1e6ecf6b41cd8fb5731c7ae919bf66df6ec6fafa555cd6c0e16ca169ae92"},
+ {file = "prometheus_client-0.19.0.tar.gz", hash = "sha256:4585b0d1223148c27a225b10dbec5ae9bc4c81a99a3fa80774fa6209935324e1"},
+]
+
+[package.extras]
+twisted = ["twisted"]
+
+[[package]]
+name = "prompt-toolkit"
+version = "3.0.43"
+description = "Library for building powerful interactive command lines in Python"
+category = "main"
+optional = false
+python-versions = ">=3.7.0"
+files = [
+ {file = "prompt_toolkit-3.0.43-py3-none-any.whl", hash = "sha256:a11a29cb3bf0a28a387fe5122cdb649816a957cd9261dcedf8c9f1fef33eacf6"},
+ {file = "prompt_toolkit-3.0.43.tar.gz", hash = "sha256:3527b7af26106cbc65a040bcc84839a3566ec1b051bb0bfe953631e704b0ff7d"},
+]
+
+[package.dependencies]
+wcwidth = "*"
+
+[[package]]
+name = "protobuf"
+version = "4.25.1"
+description = ""
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "protobuf-4.25.1-cp310-abi3-win32.whl", hash = "sha256:193f50a6ab78a970c9b4f148e7c750cfde64f59815e86f686c22e26b4fe01ce7"},
+ {file = "protobuf-4.25.1-cp310-abi3-win_amd64.whl", hash = "sha256:3497c1af9f2526962f09329fd61a36566305e6c72da2590ae0d7d1322818843b"},
+ {file = "protobuf-4.25.1-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:0bf384e75b92c42830c0a679b0cd4d6e2b36ae0cf3dbb1e1dfdda48a244f4bcd"},
+ {file = "protobuf-4.25.1-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:0f881b589ff449bf0b931a711926e9ddaad3b35089cc039ce1af50b21a4ae8cb"},
+ {file = "protobuf-4.25.1-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:ca37bf6a6d0046272c152eea90d2e4ef34593aaa32e8873fc14c16440f22d4b7"},
+ {file = "protobuf-4.25.1-cp38-cp38-win32.whl", hash = "sha256:abc0525ae2689a8000837729eef7883b9391cd6aa7950249dcf5a4ede230d5dd"},
+ {file = "protobuf-4.25.1-cp38-cp38-win_amd64.whl", hash = "sha256:1484f9e692091450e7edf418c939e15bfc8fc68856e36ce399aed6889dae8bb0"},
+ {file = "protobuf-4.25.1-cp39-cp39-win32.whl", hash = "sha256:8bdbeaddaac52d15c6dce38c71b03038ef7772b977847eb6d374fc86636fa510"},
+ {file = "protobuf-4.25.1-cp39-cp39-win_amd64.whl", hash = "sha256:becc576b7e6b553d22cbdf418686ee4daa443d7217999125c045ad56322dda10"},
+ {file = "protobuf-4.25.1-py3-none-any.whl", hash = "sha256:a19731d5e83ae4737bb2a089605e636077ac001d18781b3cf489b9546c7c80d6"},
+ {file = "protobuf-4.25.1.tar.gz", hash = "sha256:57d65074b4f5baa4ab5da1605c02be90ac20c8b40fb137d6a8df9f416b0d0ce2"},
+]
+
+[[package]]
+name = "psutil"
+version = "5.9.7"
+description = "Cross-platform lib for process and system monitoring in Python."
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
+files = [
+ {file = "psutil-5.9.7-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:0bd41bf2d1463dfa535942b2a8f0e958acf6607ac0be52265ab31f7923bcd5e6"},
+ {file = "psutil-5.9.7-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:5794944462509e49d4d458f4dbfb92c47539e7d8d15c796f141f474010084056"},
+ {file = "psutil-5.9.7-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:fe361f743cb3389b8efda21980d93eb55c1f1e3898269bc9a2a1d0bb7b1f6508"},
+ {file = "psutil-5.9.7-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:e469990e28f1ad738f65a42dcfc17adaed9d0f325d55047593cb9033a0ab63df"},
+ {file = "psutil-5.9.7-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:3c4747a3e2ead1589e647e64aad601981f01b68f9398ddf94d01e3dc0d1e57c7"},
+ {file = "psutil-5.9.7-cp27-none-win32.whl", hash = "sha256:1d4bc4a0148fdd7fd8f38e0498639ae128e64538faa507df25a20f8f7fb2341c"},
+ {file = "psutil-5.9.7-cp27-none-win_amd64.whl", hash = "sha256:4c03362e280d06bbbfcd52f29acd79c733e0af33d707c54255d21029b8b32ba6"},
+ {file = "psutil-5.9.7-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ea36cc62e69a13ec52b2f625c27527f6e4479bca2b340b7a452af55b34fcbe2e"},
+ {file = "psutil-5.9.7-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1132704b876e58d277168cd729d64750633d5ff0183acf5b3c986b8466cd0284"},
+ {file = "psutil-5.9.7-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe8b7f07948f1304497ce4f4684881250cd859b16d06a1dc4d7941eeb6233bfe"},
+ {file = "psutil-5.9.7-cp36-cp36m-win32.whl", hash = "sha256:b27f8fdb190c8c03914f908a4555159327d7481dac2f01008d483137ef3311a9"},
+ {file = "psutil-5.9.7-cp36-cp36m-win_amd64.whl", hash = "sha256:44969859757f4d8f2a9bd5b76eba8c3099a2c8cf3992ff62144061e39ba8568e"},
+ {file = "psutil-5.9.7-cp37-abi3-win32.whl", hash = "sha256:c727ca5a9b2dd5193b8644b9f0c883d54f1248310023b5ad3e92036c5e2ada68"},
+ {file = "psutil-5.9.7-cp37-abi3-win_amd64.whl", hash = "sha256:f37f87e4d73b79e6c5e749440c3113b81d1ee7d26f21c19c47371ddea834f414"},
+ {file = "psutil-5.9.7-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:032f4f2c909818c86cea4fe2cc407f1c0f0cde8e6c6d702b28b8ce0c0d143340"},
+ {file = "psutil-5.9.7.tar.gz", hash = "sha256:3f02134e82cfb5d089fddf20bb2e03fd5cd52395321d1c8458a9e58500ff417c"},
+]
+
+[package.extras]
+test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"]
+
+[[package]]
+name = "ptyprocess"
+version = "0.7.0"
+description = "Run a subprocess in a pseudo terminal"
+category = "main"
+optional = false
+python-versions = "*"
+files = [
+ {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"},
+ {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"},
+]
+
+[[package]]
+name = "pure-eval"
+version = "0.2.2"
+description = "Safely evaluate AST nodes without side effects"
+category = "main"
+optional = false
+python-versions = "*"
+files = [
+ {file = "pure_eval-0.2.2-py3-none-any.whl", hash = "sha256:01eaab343580944bc56080ebe0a674b39ec44a945e6d09ba7db3cb8cec289350"},
+ {file = "pure_eval-0.2.2.tar.gz", hash = "sha256:2b45320af6dfaa1750f543d714b6d1c520a1688dec6fd24d339063ce0aaa9ac3"},
+]
+
+[package.extras]
+tests = ["pytest"]
+
+[[package]]
+name = "pycparser"
+version = "2.21"
+description = "C parser in Python"
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+files = [
+ {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"},
+ {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"},
+]
+
+[[package]]
+name = "pygments"
+version = "2.17.2"
+description = "Pygments is a syntax highlighting package written in Python."
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "pygments-2.17.2-py3-none-any.whl", hash = "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c"},
+ {file = "pygments-2.17.2.tar.gz", hash = "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"},
+]
+
+[package.extras]
+plugins = ["importlib-metadata"]
+windows-terminal = ["colorama (>=0.4.6)"]
+
+[[package]]
+name = "pyparsing"
+version = "3.1.1"
+description = "pyparsing module - Classes and methods to define and execute parsing grammars"
+category = "main"
+optional = false
+python-versions = ">=3.6.8"
+files = [
+ {file = "pyparsing-3.1.1-py3-none-any.whl", hash = "sha256:32c7c0b711493c72ff18a981d24f28aaf9c1fb7ed5e9667c9e84e3db623bdbfb"},
+ {file = "pyparsing-3.1.1.tar.gz", hash = "sha256:ede28a1a32462f5a9705e07aea48001a08f7cf81a021585011deba701581a0db"},
+]
+
+[package.extras]
+diagrams = ["jinja2", "railroad-diagrams"]
+
+[[package]]
+name = "pyreadline3"
+version = "3.4.1"
+description = "A python implementation of GNU readline."
+category = "main"
+optional = false
+python-versions = "*"
+files = [
+ {file = "pyreadline3-3.4.1-py3-none-any.whl", hash = "sha256:b0efb6516fd4fb07b45949053826a62fa4cb353db5be2bbb4a7aa1fdd1e345fb"},
+ {file = "pyreadline3-3.4.1.tar.gz", hash = "sha256:6f3d1f7b8a31ba32b73917cefc1f28cc660562f39aea8646d30bd6eff21f7bae"},
+]
+
+[[package]]
+name = "python-dateutil"
+version = "2.8.2"
+description = "Extensions to the standard Python datetime module"
+category = "main"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
+files = [
+ {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"},
+ {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"},
+]
+
+[package.dependencies]
+six = ">=1.5"
+
+[[package]]
+name = "python-json-logger"
+version = "2.0.7"
+description = "A python library adding a json log formatter"
+category = "main"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "python-json-logger-2.0.7.tar.gz", hash = "sha256:23e7ec02d34237c5aa1e29a070193a4ea87583bb4e7f8fd06d3de8264c4b2e1c"},
+ {file = "python_json_logger-2.0.7-py3-none-any.whl", hash = "sha256:f380b826a991ebbe3de4d897aeec42760035ac760345e57b812938dc8b35e2bd"},
+]
+
+[[package]]
+name = "pytz"
+version = "2023.3.post1"
+description = "World timezone definitions, modern and historical"
+category = "main"
+optional = false
+python-versions = "*"
+files = [
+ {file = "pytz-2023.3.post1-py2.py3-none-any.whl", hash = "sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7"},
+ {file = "pytz-2023.3.post1.tar.gz", hash = "sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b"},
+]
+
+[[package]]
+name = "pywin32"
+version = "306"
+description = "Python for Window Extensions"
+category = "main"
+optional = false
+python-versions = "*"
+files = [
+ {file = "pywin32-306-cp310-cp310-win32.whl", hash = "sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d"},
+ {file = "pywin32-306-cp310-cp310-win_amd64.whl", hash = "sha256:84f4471dbca1887ea3803d8848a1616429ac94a4a8d05f4bc9c5dcfd42ca99c8"},
+ {file = "pywin32-306-cp311-cp311-win32.whl", hash = "sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407"},
+ {file = "pywin32-306-cp311-cp311-win_amd64.whl", hash = "sha256:a7639f51c184c0272e93f244eb24dafca9b1855707d94c192d4a0b4c01e1100e"},
+ {file = "pywin32-306-cp311-cp311-win_arm64.whl", hash = "sha256:70dba0c913d19f942a2db25217d9a1b726c278f483a919f1abfed79c9cf64d3a"},
+ {file = "pywin32-306-cp312-cp312-win32.whl", hash = "sha256:383229d515657f4e3ed1343da8be101000562bf514591ff383ae940cad65458b"},
+ {file = "pywin32-306-cp312-cp312-win_amd64.whl", hash = "sha256:37257794c1ad39ee9be652da0462dc2e394c8159dfd913a8a4e8eb6fd346da0e"},
+ {file = "pywin32-306-cp312-cp312-win_arm64.whl", hash = "sha256:5821ec52f6d321aa59e2db7e0a35b997de60c201943557d108af9d4ae1ec7040"},
+ {file = "pywin32-306-cp37-cp37m-win32.whl", hash = "sha256:1c73ea9a0d2283d889001998059f5eaaba3b6238f767c9cf2833b13e6a685f65"},
+ {file = "pywin32-306-cp37-cp37m-win_amd64.whl", hash = "sha256:72c5f621542d7bdd4fdb716227be0dd3f8565c11b280be6315b06ace35487d36"},
+ {file = "pywin32-306-cp38-cp38-win32.whl", hash = "sha256:e4c092e2589b5cf0d365849e73e02c391c1349958c5ac3e9d5ccb9a28e017b3a"},
+ {file = "pywin32-306-cp38-cp38-win_amd64.whl", hash = "sha256:e8ac1ae3601bee6ca9f7cb4b5363bf1c0badb935ef243c4733ff9a393b1690c0"},
+ {file = "pywin32-306-cp39-cp39-win32.whl", hash = "sha256:e25fd5b485b55ac9c057f67d94bc203f3f6595078d1fb3b458c9c28b7153a802"},
+ {file = "pywin32-306-cp39-cp39-win_amd64.whl", hash = "sha256:39b61c15272833b5c329a2989999dcae836b1eed650252ab1b7bfbe1d59f30f4"},
+]
+
+[[package]]
+name = "pywinpty"
+version = "2.0.12"
+description = "Pseudo terminal support for Windows from Python."
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pywinpty-2.0.12-cp310-none-win_amd64.whl", hash = "sha256:21319cd1d7c8844fb2c970fb3a55a3db5543f112ff9cfcd623746b9c47501575"},
+ {file = "pywinpty-2.0.12-cp311-none-win_amd64.whl", hash = "sha256:853985a8f48f4731a716653170cd735da36ffbdc79dcb4c7b7140bce11d8c722"},
+ {file = "pywinpty-2.0.12-cp312-none-win_amd64.whl", hash = "sha256:1617b729999eb6713590e17665052b1a6ae0ad76ee31e60b444147c5b6a35dca"},
+ {file = "pywinpty-2.0.12-cp38-none-win_amd64.whl", hash = "sha256:189380469ca143d06e19e19ff3fba0fcefe8b4a8cc942140a6b863aed7eebb2d"},
+ {file = "pywinpty-2.0.12-cp39-none-win_amd64.whl", hash = "sha256:7520575b6546db23e693cbd865db2764097bd6d4ef5dc18c92555904cd62c3d4"},
+ {file = "pywinpty-2.0.12.tar.gz", hash = "sha256:8197de460ae8ebb7f5d1701dfa1b5df45b157bb832e92acba316305e18ca00dd"},
+]
+
+[[package]]
+name = "pyyaml"
+version = "6.0.1"
+description = "YAML parser and emitter for Python"
+category = "main"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"},
+ {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"},
+ {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"},
+ {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"},
+ {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"},
+ {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"},
+ {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"},
+ {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"},
+ {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"},
+ {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"},
+ {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"},
+ {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"},
+ {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"},
+ {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"},
+ {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"},
+ {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"},
+ {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"},
+ {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"},
+ {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"},
+ {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"},
+ {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"},
+ {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"},
+ {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"},
+ {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"},
+ {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"},
+ {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"},
+ {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"},
+ {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"},
+ {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"},
+ {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"},
+ {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"},
+ {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"},
+ {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"},
+ {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"},
+ {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"},
+ {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"},
+ {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"},
+ {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"},
+ {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"},
+ {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"},
+ {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"},
+ {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"},
+ {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"},
+ {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"},
+ {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"},
+ {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"},
+ {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"},
+ {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"},
+ {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"},
+ {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"},
+]
+
+[[package]]
+name = "pyzmq"
+version = "25.1.2"
+description = "Python bindings for 0MQ"
+category = "main"
+optional = false
+python-versions = ">=3.6"
+files = [
+ {file = "pyzmq-25.1.2-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:e624c789359f1a16f83f35e2c705d07663ff2b4d4479bad35621178d8f0f6ea4"},
+ {file = "pyzmq-25.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:49151b0efece79f6a79d41a461d78535356136ee70084a1c22532fc6383f4ad0"},
+ {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9a5f194cf730f2b24d6af1f833c14c10f41023da46a7f736f48b6d35061e76e"},
+ {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:faf79a302f834d9e8304fafdc11d0d042266667ac45209afa57e5efc998e3872"},
+ {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f51a7b4ead28d3fca8dda53216314a553b0f7a91ee8fc46a72b402a78c3e43d"},
+ {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:0ddd6d71d4ef17ba5a87becf7ddf01b371eaba553c603477679ae817a8d84d75"},
+ {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:246747b88917e4867e2367b005fc8eefbb4a54b7db363d6c92f89d69abfff4b6"},
+ {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:00c48ae2fd81e2a50c3485de1b9d5c7c57cd85dc8ec55683eac16846e57ac979"},
+ {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5a68d491fc20762b630e5db2191dd07ff89834086740f70e978bb2ef2668be08"},
+ {file = "pyzmq-25.1.2-cp310-cp310-win32.whl", hash = "sha256:09dfe949e83087da88c4a76767df04b22304a682d6154de2c572625c62ad6886"},
+ {file = "pyzmq-25.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:fa99973d2ed20417744fca0073390ad65ce225b546febb0580358e36aa90dba6"},
+ {file = "pyzmq-25.1.2-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:82544e0e2d0c1811482d37eef297020a040c32e0687c1f6fc23a75b75db8062c"},
+ {file = "pyzmq-25.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:01171fc48542348cd1a360a4b6c3e7d8f46cdcf53a8d40f84db6707a6768acc1"},
+ {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc69c96735ab501419c432110016329bf0dea8898ce16fab97c6d9106dc0b348"},
+ {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3e124e6b1dd3dfbeb695435dff0e383256655bb18082e094a8dd1f6293114642"},
+ {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7598d2ba821caa37a0f9d54c25164a4fa351ce019d64d0b44b45540950458840"},
+ {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d1299d7e964c13607efd148ca1f07dcbf27c3ab9e125d1d0ae1d580a1682399d"},
+ {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4e6f689880d5ad87918430957297c975203a082d9a036cc426648fcbedae769b"},
+ {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cc69949484171cc961e6ecd4a8911b9ce7a0d1f738fcae717177c231bf77437b"},
+ {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9880078f683466b7f567b8624bfc16cad65077be046b6e8abb53bed4eeb82dd3"},
+ {file = "pyzmq-25.1.2-cp311-cp311-win32.whl", hash = "sha256:4e5837af3e5aaa99a091302df5ee001149baff06ad22b722d34e30df5f0d9097"},
+ {file = "pyzmq-25.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:25c2dbb97d38b5ac9fd15586e048ec5eb1e38f3d47fe7d92167b0c77bb3584e9"},
+ {file = "pyzmq-25.1.2-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:11e70516688190e9c2db14fcf93c04192b02d457b582a1f6190b154691b4c93a"},
+ {file = "pyzmq-25.1.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:313c3794d650d1fccaaab2df942af9f2c01d6217c846177cfcbc693c7410839e"},
+ {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b3cbba2f47062b85fe0ef9de5b987612140a9ba3a9c6d2543c6dec9f7c2ab27"},
+ {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fc31baa0c32a2ca660784d5af3b9487e13b61b3032cb01a115fce6588e1bed30"},
+ {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02c9087b109070c5ab0b383079fa1b5f797f8d43e9a66c07a4b8b8bdecfd88ee"},
+ {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:f8429b17cbb746c3e043cb986328da023657e79d5ed258b711c06a70c2ea7537"},
+ {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:5074adeacede5f810b7ef39607ee59d94e948b4fd954495bdb072f8c54558181"},
+ {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:7ae8f354b895cbd85212da245f1a5ad8159e7840e37d78b476bb4f4c3f32a9fe"},
+ {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b264bf2cc96b5bc43ce0e852be995e400376bd87ceb363822e2cb1964fcdc737"},
+ {file = "pyzmq-25.1.2-cp312-cp312-win32.whl", hash = "sha256:02bbc1a87b76e04fd780b45e7f695471ae6de747769e540da909173d50ff8e2d"},
+ {file = "pyzmq-25.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:ced111c2e81506abd1dc142e6cd7b68dd53747b3b7ae5edbea4578c5eeff96b7"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:7b6d09a8962a91151f0976008eb7b29b433a560fde056ec7a3db9ec8f1075438"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:967668420f36878a3c9ecb5ab33c9d0ff8d054f9c0233d995a6d25b0e95e1b6b"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5edac3f57c7ddaacdb4d40f6ef2f9e299471fc38d112f4bc6d60ab9365445fb0"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0dabfb10ef897f3b7e101cacba1437bd3a5032ee667b7ead32bbcdd1a8422fe7"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:2c6441e0398c2baacfe5ba30c937d274cfc2dc5b55e82e3749e333aabffde561"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:16b726c1f6c2e7625706549f9dbe9b06004dfbec30dbed4bf50cbdfc73e5b32a"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:a86c2dd76ef71a773e70551a07318b8e52379f58dafa7ae1e0a4be78efd1ff16"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-win32.whl", hash = "sha256:359f7f74b5d3c65dae137f33eb2bcfa7ad9ebefd1cab85c935f063f1dbb245cc"},
+ {file = "pyzmq-25.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:55875492f820d0eb3417b51d96fea549cde77893ae3790fd25491c5754ea2f68"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b8c8a419dfb02e91b453615c69568442e897aaf77561ee0064d789705ff37a92"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8807c87fa893527ae8a524c15fc505d9950d5e856f03dae5921b5e9aa3b8783b"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5e319ed7d6b8f5fad9b76daa0a68497bc6f129858ad956331a5835785761e003"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:3c53687dde4d9d473c587ae80cc328e5b102b517447456184b485587ebd18b62"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9add2e5b33d2cd765ad96d5eb734a5e795a0755f7fc49aa04f76d7ddda73fd70"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:e690145a8c0c273c28d3b89d6fb32c45e0d9605b2293c10e650265bf5c11cfec"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:00a06faa7165634f0cac1abb27e54d7a0b3b44eb9994530b8ec73cf52e15353b"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-win32.whl", hash = "sha256:0f97bc2f1f13cb16905a5f3e1fbdf100e712d841482b2237484360f8bc4cb3d7"},
+ {file = "pyzmq-25.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6cc0020b74b2e410287e5942e1e10886ff81ac77789eb20bec13f7ae681f0fdd"},
+ {file = "pyzmq-25.1.2-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:bef02cfcbded83473bdd86dd8d3729cd82b2e569b75844fb4ea08fee3c26ae41"},
+ {file = "pyzmq-25.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e10a4b5a4b1192d74853cc71a5e9fd022594573926c2a3a4802020360aa719d8"},
+ {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8c5f80e578427d4695adac6fdf4370c14a2feafdc8cb35549c219b90652536ae"},
+ {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5dde6751e857910c1339890f3524de74007958557593b9e7e8c5f01cd919f8a7"},
+ {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea1608dd169da230a0ad602d5b1ebd39807ac96cae1845c3ceed39af08a5c6df"},
+ {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0f513130c4c361201da9bc69df25a086487250e16b5571ead521b31ff6b02220"},
+ {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:019744b99da30330798bb37df33549d59d380c78e516e3bab9c9b84f87a9592f"},
+ {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2e2713ef44be5d52dd8b8e2023d706bf66cb22072e97fc71b168e01d25192755"},
+ {file = "pyzmq-25.1.2-cp38-cp38-win32.whl", hash = "sha256:07cd61a20a535524906595e09344505a9bd46f1da7a07e504b315d41cd42eb07"},
+ {file = "pyzmq-25.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb7e49a17fb8c77d3119d41a4523e432eb0c6932187c37deb6fbb00cc3028088"},
+ {file = "pyzmq-25.1.2-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:94504ff66f278ab4b7e03e4cba7e7e400cb73bfa9d3d71f58d8972a8dc67e7a6"},
+ {file = "pyzmq-25.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6dd0d50bbf9dca1d0bdea219ae6b40f713a3fb477c06ca3714f208fd69e16fd8"},
+ {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:004ff469d21e86f0ef0369717351073e0e577428e514c47c8480770d5e24a565"},
+ {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c0b5ca88a8928147b7b1e2dfa09f3b6c256bc1135a1338536cbc9ea13d3b7add"},
+ {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c9a79f1d2495b167119d02be7448bfba57fad2a4207c4f68abc0bab4b92925b"},
+ {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:518efd91c3d8ac9f9b4f7dd0e2b7b8bf1a4fe82a308009016b07eaa48681af82"},
+ {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:1ec23bd7b3a893ae676d0e54ad47d18064e6c5ae1fadc2f195143fb27373f7f6"},
+ {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:db36c27baed588a5a8346b971477b718fdc66cf5b80cbfbd914b4d6d355e44e2"},
+ {file = "pyzmq-25.1.2-cp39-cp39-win32.whl", hash = "sha256:39b1067f13aba39d794a24761e385e2eddc26295826530a8c7b6c6c341584289"},
+ {file = "pyzmq-25.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:8e9f3fabc445d0ce320ea2c59a75fe3ea591fdbdeebec5db6de530dd4b09412e"},
+ {file = "pyzmq-25.1.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a8c1d566344aee826b74e472e16edae0a02e2a044f14f7c24e123002dcff1c05"},
+ {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:759cfd391a0996345ba94b6a5110fca9c557ad4166d86a6e81ea526c376a01e8"},
+ {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c61e346ac34b74028ede1c6b4bcecf649d69b707b3ff9dc0fab453821b04d1e"},
+ {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cb8fc1f8d69b411b8ec0b5f1ffbcaf14c1db95b6bccea21d83610987435f1a4"},
+ {file = "pyzmq-25.1.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:3c00c9b7d1ca8165c610437ca0c92e7b5607b2f9076f4eb4b095c85d6e680a1d"},
+ {file = "pyzmq-25.1.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:df0c7a16ebb94452d2909b9a7b3337940e9a87a824c4fc1c7c36bb4404cb0cde"},
+ {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:45999e7f7ed5c390f2e87ece7f6c56bf979fb213550229e711e45ecc7d42ccb8"},
+ {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ac170e9e048b40c605358667aca3d94e98f604a18c44bdb4c102e67070f3ac9b"},
+ {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1b604734bec94f05f81b360a272fc824334267426ae9905ff32dc2be433ab96"},
+ {file = "pyzmq-25.1.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:a793ac733e3d895d96f865f1806f160696422554e46d30105807fdc9841b9f7d"},
+ {file = "pyzmq-25.1.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0806175f2ae5ad4b835ecd87f5f85583316b69f17e97786f7443baaf54b9bb98"},
+ {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ef12e259e7bc317c7597d4f6ef59b97b913e162d83b421dd0db3d6410f17a244"},
+ {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea253b368eb41116011add00f8d5726762320b1bda892f744c91997b65754d73"},
+ {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b9b1f2ad6498445a941d9a4fee096d387fee436e45cc660e72e768d3d8ee611"},
+ {file = "pyzmq-25.1.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:8b14c75979ce932c53b79976a395cb2a8cd3aaf14aef75e8c2cb55a330b9b49d"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:889370d5174a741a62566c003ee8ddba4b04c3f09a97b8000092b7ca83ec9c49"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9a18fff090441a40ffda8a7f4f18f03dc56ae73f148f1832e109f9bffa85df15"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99a6b36f95c98839ad98f8c553d8507644c880cf1e0a57fe5e3a3f3969040882"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4345c9a27f4310afbb9c01750e9461ff33d6fb74cd2456b107525bbeebcb5be3"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3516e0b6224cf6e43e341d56da15fd33bdc37fa0c06af4f029f7d7dfceceabbc"},
+ {file = "pyzmq-25.1.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:146b9b1f29ead41255387fb07be56dc29639262c0f7344f570eecdcd8d683314"},
+ {file = "pyzmq-25.1.2.tar.gz", hash = "sha256:93f1aa311e8bb912e34f004cf186407a4e90eec4f0ecc0efd26056bf7eda0226"},
+]
+
+[package.dependencies]
+cffi = {version = "*", markers = "implementation_name == \"pypy\""}
+
+[[package]]
+name = "qtconsole"
+version = "5.5.1"
+description = "Jupyter Qt console"
+category = "main"
+optional = false
+python-versions = ">= 3.8"
+files = [
+ {file = "qtconsole-5.5.1-py3-none-any.whl", hash = "sha256:8c75fa3e9b4ed884880ff7cea90a1b67451219279ec33deaee1d59e3df1a5d2b"},
+ {file = "qtconsole-5.5.1.tar.gz", hash = "sha256:a0e806c6951db9490628e4df80caec9669b65149c7ba40f9bf033c025a5b56bc"},
+]
+
+[package.dependencies]
+ipykernel = ">=4.1"
+jupyter-client = ">=4.1"
+jupyter-core = "*"
+packaging = "*"
+pygments = "*"
+pyzmq = ">=17.1"
+qtpy = ">=2.4.0"
+traitlets = "<5.2.1 || >5.2.1,<5.2.2 || >5.2.2"
+
+[package.extras]
+doc = ["Sphinx (>=1.3)"]
+test = ["flaky", "pytest", "pytest-qt"]
+
+[[package]]
+name = "qtpy"
+version = "2.4.1"
+description = "Provides an abstraction layer on top of the various Qt bindings (PyQt5/6 and PySide2/6)."
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "QtPy-2.4.1-py3-none-any.whl", hash = "sha256:1c1d8c4fa2c884ae742b069151b0abe15b3f70491f3972698c683b8e38de839b"},
+ {file = "QtPy-2.4.1.tar.gz", hash = "sha256:a5a15ffd519550a1361bdc56ffc07fda56a6af7292f17c7b395d4083af632987"},
+]
+
+[package.dependencies]
+packaging = "*"
+
+[package.extras]
+test = ["pytest (>=6,!=7.0.0,!=7.0.1)", "pytest-cov (>=3.0.0)", "pytest-qt"]
+
+[[package]]
+name = "qudida"
+version = "0.0.4"
+description = "QUick and DIrty Domain Adaptation"
+category = "main"
+optional = false
+python-versions = ">=3.5.0"
+files = [
+ {file = "qudida-0.0.4-py3-none-any.whl", hash = "sha256:4519714c40cd0f2e6c51e1735edae8f8b19f4efe1f33be13e9d644ca5f736dd6"},
+ {file = "qudida-0.0.4.tar.gz", hash = "sha256:db198e2887ab0c9aa0023e565afbff41dfb76b361f85fd5e13f780d75ba18cc8"},
+]
+
+[package.dependencies]
+numpy = ">=0.18.0"
+opencv-python-headless = ">=4.0.1"
+scikit-learn = ">=0.19.1"
+typing-extensions = "*"
+
+[[package]]
+name = "referencing"
+version = "0.32.0"
+description = "JSON Referencing + Python"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "referencing-0.32.0-py3-none-any.whl", hash = "sha256:bdcd3efb936f82ff86f993093f6da7435c7de69a3b3a5a06678a6050184bee99"},
+ {file = "referencing-0.32.0.tar.gz", hash = "sha256:689e64fe121843dcfd57b71933318ef1f91188ffb45367332700a86ac8fd6161"},
+]
+
+[package.dependencies]
+attrs = ">=22.2.0"
+rpds-py = ">=0.7.0"
+
+[[package]]
+name = "requests"
+version = "2.31.0"
+description = "Python HTTP for Humans."
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"},
+ {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"},
+]
+
+[package.dependencies]
+certifi = ">=2017.4.17"
+charset-normalizer = ">=2,<4"
+idna = ">=2.5,<4"
+urllib3 = ">=1.21.1,<3"
+
+[package.extras]
+socks = ["PySocks (>=1.5.6,!=1.5.7)"]
+use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
+
+[[package]]
+name = "rfc3339-validator"
+version = "0.1.4"
+description = "A pure python RFC3339 validator"
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+files = [
+ {file = "rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa"},
+ {file = "rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b"},
+]
+
+[package.dependencies]
+six = "*"
+
+[[package]]
+name = "rfc3986-validator"
+version = "0.1.1"
+description = "Pure python rfc3986 validator"
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+files = [
+ {file = "rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9"},
+ {file = "rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055"},
+]
+
+[[package]]
+name = "rpds-py"
+version = "0.15.2"
+description = "Python bindings to Rust's persistent data structures (rpds)"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "rpds_py-0.15.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:337a8653fb11d2fbe7157c961cc78cb3c161d98cf44410ace9a3dc2db4fad882"},
+ {file = "rpds_py-0.15.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:813a65f95bfcb7c8f2a70dd6add9b51e9accc3bdb3e03d0ff7a9e6a2d3e174bf"},
+ {file = "rpds_py-0.15.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:082e0e55d73690ffb4da4352d1b5bbe1b5c6034eb9dc8c91aa2a3ee15f70d3e2"},
+ {file = "rpds_py-0.15.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5595c80dd03d7e6c6afb73f3594bf3379a7d79fa57164b591d012d4b71d6ac4c"},
+ {file = "rpds_py-0.15.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fb10bb720348fe1647a94eb605accb9ef6a9b1875d8845f9e763d9d71a706387"},
+ {file = "rpds_py-0.15.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:53304cc14b1d94487d70086e1cb0cb4c29ec6da994d58ae84a4d7e78c6a6d04d"},
+ {file = "rpds_py-0.15.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d64a657de7aae8db2da60dc0c9e4638a0c3893b4d60101fd564a3362b2bfeb34"},
+ {file = "rpds_py-0.15.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ee40206d1d6e95eaa2b7b919195e3689a5cf6ded730632de7f187f35a1b6052c"},
+ {file = "rpds_py-0.15.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:1607cda6129f815493a3c184492acb5ae4aa6ed61d3a1b3663aa9824ed26f7ac"},
+ {file = "rpds_py-0.15.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:f3e6e2e502c4043c52a99316d89dc49f416acda5b0c6886e0dd8ea7bb35859e8"},
+ {file = "rpds_py-0.15.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:044f6f46d62444800402851afa3c3ae50141f12013060c1a3a0677e013310d6d"},
+ {file = "rpds_py-0.15.2-cp310-none-win32.whl", hash = "sha256:c827a931c6b57f50f1bb5de400dcfb00bad8117e3753e80b96adb72d9d811514"},
+ {file = "rpds_py-0.15.2-cp310-none-win_amd64.whl", hash = "sha256:3bbc89ce2a219662ea142f0abcf8d43f04a41d5b1880be17a794c39f0d609cb0"},
+ {file = "rpds_py-0.15.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:1fd0f0b1ccd7d537b858a56355a250108df692102e08aa2036e1a094fd78b2dc"},
+ {file = "rpds_py-0.15.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b414ef79f1f06fb90b5165db8aef77512c1a5e3ed1b4807da8476b7e2c853283"},
+ {file = "rpds_py-0.15.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c31272c674f725dfe0f343d73b0abe8c878c646967ec1c6106122faae1efc15b"},
+ {file = "rpds_py-0.15.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a6945c2d61c42bb7e818677f43638675b8c1c43e858b67a96df3eb2426a86c9d"},
+ {file = "rpds_py-0.15.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02744236ac1895d7be837878e707a5c35fb8edc5137602f253b63623d7ad5c8c"},
+ {file = "rpds_py-0.15.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2181e86d4e1cdf49a7320cb72a36c45efcb7670d0a88f09fd2d3a7967c0540fd"},
+ {file = "rpds_py-0.15.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a8ff8e809da81363bffca2b965cb6e4bf6056b495fc3f078467d1f8266fe27f"},
+ {file = "rpds_py-0.15.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:97532802f14d383f37d603a56e226909f825a83ff298dc1b6697de00d2243999"},
+ {file = "rpds_py-0.15.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:13716e53627ad97babf72ac9e01cf9a7d4af2f75dd5ed7b323a7a9520e948282"},
+ {file = "rpds_py-0.15.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:2f1f295a5c28cfa74a7d48c95acc1c8a7acd49d7d9072040d4b694fe11cd7166"},
+ {file = "rpds_py-0.15.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:8ec464f20fe803ae00419bd1610934e3bda963aeba1e6181dfc9033dc7e8940c"},
+ {file = "rpds_py-0.15.2-cp311-none-win32.whl", hash = "sha256:b61d5096e75fd71018b25da50b82dd70ec39b5e15bb2134daf7eb7bbbc103644"},
+ {file = "rpds_py-0.15.2-cp311-none-win_amd64.whl", hash = "sha256:9d41ebb471a6f064c0d1c873c4f7dded733d16ca5db7d551fb04ff3805d87802"},
+ {file = "rpds_py-0.15.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:13ff62d3561a23c17341b4afc78e8fcfd799ab67c0b1ca32091d71383a98ba4b"},
+ {file = "rpds_py-0.15.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b70b45a40ad0798b69748b34d508259ef2bdc84fb2aad4048bc7c9cafb68ddb3"},
+ {file = "rpds_py-0.15.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4ecbba7efd82bd2a4bb88aab7f984eb5470991c1347bdd1f35fb34ea28dba6e"},
+ {file = "rpds_py-0.15.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9d38494a8d21c246c535b41ecdb2d562c4b933cf3d68de03e8bc43a0d41be652"},
+ {file = "rpds_py-0.15.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:13152dfe7d7c27c40df8b99ac6aab12b978b546716e99f67e8a67a1d441acbc3"},
+ {file = "rpds_py-0.15.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:164fcee32f15d04d61568c9cb0d919e37ff3195919cd604039ff3053ada0461b"},
+ {file = "rpds_py-0.15.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a5122b17a4faf5d7a6d91fa67b479736c0cacc7afe791ddebb7163a8550b799"},
+ {file = "rpds_py-0.15.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:46b4f3d47d1033db569173be62365fbf7808c2bd3fb742314d251f130d90d44c"},
+ {file = "rpds_py-0.15.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c61e42b4ceb9759727045765e87d51c1bb9f89987aca1fcc8a040232138cad1c"},
+ {file = "rpds_py-0.15.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:d2aa3ca9552f83b0b4fa6ca8c6ce08da6580f37e3e0ab7afac73a1cfdc230c0e"},
+ {file = "rpds_py-0.15.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ec19e823b4ccd87bd69e990879acbce9e961fc7aebe150156b8f4418d4b27b7f"},
+ {file = "rpds_py-0.15.2-cp312-none-win32.whl", hash = "sha256:afeabb382c1256a7477b739820bce7fe782bb807d82927102cee73e79b41b38b"},
+ {file = "rpds_py-0.15.2-cp312-none-win_amd64.whl", hash = "sha256:422b0901878a31ef167435c5ad46560362891816a76cc0d150683f3868a6f0d1"},
+ {file = "rpds_py-0.15.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:baf744e5f9d5ee6531deea443be78b36ed1cd36c65a0b95ea4e8d69fa0102268"},
+ {file = "rpds_py-0.15.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7e072f5da38d6428ba1fc1115d3cc0dae895df671cb04c70c019985e8c7606be"},
+ {file = "rpds_py-0.15.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f138f550b83554f5b344d6be35d3ed59348510edc3cb96f75309db6e9bfe8210"},
+ {file = "rpds_py-0.15.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b2a4cd924d0e2f4b1a68034abe4cadc73d69ad5f4cf02db6481c0d4d749f548f"},
+ {file = "rpds_py-0.15.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5eb05b654a41e0f81ab27a7c3e88b6590425eb3e934e1d533ecec5dc88a6ffff"},
+ {file = "rpds_py-0.15.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2ee066a64f0d2ba45391cac15b3a70dcb549e968a117bd0500634754cfe0e5fc"},
+ {file = "rpds_py-0.15.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c51a899792ee2c696072791e56b2020caff58b275abecbc9ae0cb71af0645c95"},
+ {file = "rpds_py-0.15.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ac2ac84a4950d627d84b61f082eba61314373cfab4b3c264b62efab02ababe83"},
+ {file = "rpds_py-0.15.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:62b292fff4739c6be89e6a0240c02bda5a9066a339d90ab191cf66e9fdbdc193"},
+ {file = "rpds_py-0.15.2-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:98ee201a52a7f65608e5494518932e1473fd43535f12cade0a1b4ab32737fe28"},
+ {file = "rpds_py-0.15.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:3d40fb3ca22e3d40f494d577441b263026a3bd8c97ae6ce89b2d3c4b39ac9581"},
+ {file = "rpds_py-0.15.2-cp38-none-win32.whl", hash = "sha256:30479a9f1fce47df56b07460b520f49fa2115ec2926d3b1303c85c81f8401ed1"},
+ {file = "rpds_py-0.15.2-cp38-none-win_amd64.whl", hash = "sha256:2df3d07a16a3bef0917b28cd564778fbb31f3ffa5b5e33584470e2d1b0f248f0"},
+ {file = "rpds_py-0.15.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:56b51ba29a18e5f5810224bcf00747ad931c0716e3c09a76b4a1edd3d4aba71f"},
+ {file = "rpds_py-0.15.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3c11bc5814554b018f6c5d6ae0969e43766f81e995000b53a5d8c8057055e886"},
+ {file = "rpds_py-0.15.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2faa97212b0dc465afeedf49045cdd077f97be1188285e646a9f689cb5dfff9e"},
+ {file = "rpds_py-0.15.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:86c01299942b0f4b5b5f28c8701689181ad2eab852e65417172dbdd6c5b3ccc8"},
+ {file = "rpds_py-0.15.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dd7d3608589072f63078b4063a6c536af832e76b0b3885f1bfe9e892abe6c207"},
+ {file = "rpds_py-0.15.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:938518a11780b39998179d07f31a4a468888123f9b00463842cd40f98191f4d3"},
+ {file = "rpds_py-0.15.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dccc623725d0b298f557d869a68496a2fd2a9e9c41107f234fa5f7a37d278ac"},
+ {file = "rpds_py-0.15.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d46ee458452727a147d7897bb33886981ae1235775e05decae5d5d07f537695a"},
+ {file = "rpds_py-0.15.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:d9d7ebcd11ea76ba0feaae98485cd8e31467c3d7985210fab46983278214736b"},
+ {file = "rpds_py-0.15.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:8a5f574b92b3ee7d254e56d56e37ec0e1416acb1ae357c4956d76a1788dc58fb"},
+ {file = "rpds_py-0.15.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:3db0c998c92b909d7c90b66c965590d4f3cd86157176a6cf14aa1f867b77b889"},
+ {file = "rpds_py-0.15.2-cp39-none-win32.whl", hash = "sha256:bbc7421cbd28b4316d1d017db338039a7943f945c6f2bb15e1439b14b5682d28"},
+ {file = "rpds_py-0.15.2-cp39-none-win_amd64.whl", hash = "sha256:1c24e30d720c0009b6fb2e1905b025da56103c70a8b31b99138e4ed1c2a6c5b0"},
+ {file = "rpds_py-0.15.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1e6fcd0a0f62f2997107f758bb372397b8d5fd5f39cc6dcb86f7cb98a2172d6c"},
+ {file = "rpds_py-0.15.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d800a8e2ac62db1b9ea5d6d1724f1a93c53907ca061de4d05ed94e8dfa79050c"},
+ {file = "rpds_py-0.15.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9e09d017e3f4d9bd7d17a30d3f59e4d6d9ba2d2ced280eec2425e84112cf623f"},
+ {file = "rpds_py-0.15.2-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b88c3ab98556bc351b36d6208a6089de8c8db14a7f6e1f57f82a334bd2c18f0b"},
+ {file = "rpds_py-0.15.2-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f333bfe782a2d05a67cfaa0cc9cd68b36b39ee6acfe099f980541ed973a7093"},
+ {file = "rpds_py-0.15.2-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b629db53fe17e6ce478a969d30bd1d0e8b53238c46e3a9c9db39e8b65a9ef973"},
+ {file = "rpds_py-0.15.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:485fbdd23becb822804ed05622907ee5c8e8a5f43f6f43894a45f463b2217045"},
+ {file = "rpds_py-0.15.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:893e38d0f4319dfa70c0f36381a37cc418985c87b11d9784365b1fff4fa6973b"},
+ {file = "rpds_py-0.15.2-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:8ffdeb7dbd0160d4e391e1f857477e4762d00aa2199c294eb95dfb9451aa1d9f"},
+ {file = "rpds_py-0.15.2-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:fc33267d58dfbb2361baed52668c5d8c15d24bc0372cecbb79fed77339b55e0d"},
+ {file = "rpds_py-0.15.2-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:2e7e5633577b3bd56bf3af2ef6ae3778bbafb83743989d57f0e7edbf6c0980e4"},
+ {file = "rpds_py-0.15.2-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:8b9650f92251fdef843e74fc252cdfd6e3c700157ad686eeb0c6d7fdb2d11652"},
+ {file = "rpds_py-0.15.2-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:07a2e1d78d382f7181789713cdf0c16edbad4fe14fe1d115526cb6f0eef0daa3"},
+ {file = "rpds_py-0.15.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03f9c5875515820633bd7709a25c3e60c1ea9ad1c5d4030ce8a8c203309c36fd"},
+ {file = "rpds_py-0.15.2-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:580182fa5b269c2981e9ce9764367cb4edc81982ce289208d4607c203f44ffde"},
+ {file = "rpds_py-0.15.2-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa1e626c524d2c7972c0f3a8a575d654a3a9c008370dc2a97e46abd0eaa749b9"},
+ {file = "rpds_py-0.15.2-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ae9d83a81b09ce3a817e2cbb23aabc07f86a3abc664c613cd283ce7a03541e95"},
+ {file = "rpds_py-0.15.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9235be95662559141934fced8197de6fee8c58870f36756b0584424b6d708393"},
+ {file = "rpds_py-0.15.2-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a72e00826a2b032dda3eb25aa3e3579c6d6773d22d8446089a57a123481cc46c"},
+ {file = "rpds_py-0.15.2-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:ab095edf1d840a6a6a4307e1a5b907a299a94e7b90e75436ee770b8c35d22a25"},
+ {file = "rpds_py-0.15.2-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:3b79c63d29101cbaa53a517683557bb550462394fb91044cc5998dd2acff7340"},
+ {file = "rpds_py-0.15.2-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:911e600e798374c0d86235e7ef19109cf865d1336942d398ff313375a25a93ba"},
+ {file = "rpds_py-0.15.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3cd61e759c4075510052d1eca5cddbd297fe1164efec14ef1fce3f09b974dfe4"},
+ {file = "rpds_py-0.15.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:9d2ae79f31da5143e020a8d4fc74e1f0cbcb8011bdf97453c140aa616db51406"},
+ {file = "rpds_py-0.15.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e99d6510c8557510c220b865d966b105464740dcbebf9b79ecd4fbab30a13d9"},
+ {file = "rpds_py-0.15.2-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6c43e1b89099279cc03eb1c725c5de12af6edcd2f78e2f8a022569efa639ada3"},
+ {file = "rpds_py-0.15.2-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac7187bee72384b9cfedf09a29a3b2b6e8815cc64c095cdc8b5e6aec81e9fd5f"},
+ {file = "rpds_py-0.15.2-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3423007fc0661827e06f8a185a3792c73dda41f30f3421562f210cf0c9e49569"},
+ {file = "rpds_py-0.15.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2974e6dff38afafd5ccf8f41cb8fc94600b3f4fd9b0a98f6ece6e2219e3158d5"},
+ {file = "rpds_py-0.15.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:93c18a1696a8e0388ed84b024fe1a188a26ba999b61d1d9a371318cb89885a8c"},
+ {file = "rpds_py-0.15.2-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:c7cd0841a586b7105513a7c8c3d5c276f3adc762a072d81ef7fae80632afad1e"},
+ {file = "rpds_py-0.15.2-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:709dc11af2f74ba89c68b1592368c6edcbccdb0a06ba77eb28c8fe08bb6997da"},
+ {file = "rpds_py-0.15.2-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:fc066395e6332da1e7525d605b4c96055669f8336600bef8ac569d5226a7c76f"},
+ {file = "rpds_py-0.15.2.tar.gz", hash = "sha256:373b76eeb79e8c14f6d82cb1d4d5293f9e4059baec6c1b16dca7ad13b6131b39"},
+]
+
+[[package]]
+name = "scikit-image"
+version = "0.22.0"
+description = "Image processing in Python"
+category = "main"
+optional = false
+python-versions = ">=3.9"
+files = [
+ {file = "scikit_image-0.22.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:74ec5c1d4693506842cc7c9487c89d8fc32aed064e9363def7af08b8f8cbb31d"},
+ {file = "scikit_image-0.22.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:a05ae4fe03d802587ed8974e900b943275548cde6a6807b785039d63e9a7a5ff"},
+ {file = "scikit_image-0.22.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a92dca3d95b1301442af055e196a54b5a5128c6768b79fc0a4098f1d662dee6"},
+ {file = "scikit_image-0.22.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3663d063d8bf2fb9bdfb0ca967b9ee3b6593139c860c7abc2d2351a8a8863938"},
+ {file = "scikit_image-0.22.0-cp310-cp310-win_amd64.whl", hash = "sha256:ebdbdc901bae14dab637f8d5c99f6d5cc7aaf4a3b6f4003194e003e9f688a6fc"},
+ {file = "scikit_image-0.22.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:95d6da2d8a44a36ae04437c76d32deb4e3c993ffc846b394b9949fd8ded73cb2"},
+ {file = "scikit_image-0.22.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:2c6ef454a85f569659b813ac2a93948022b0298516b757c9c6c904132be327e2"},
+ {file = "scikit_image-0.22.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e87872f067444ee90a00dd49ca897208308645382e8a24bd3e76f301af2352cd"},
+ {file = "scikit_image-0.22.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c5c378db54e61b491b9edeefff87e49fcf7fdf729bb93c777d7a5f15d36f743e"},
+ {file = "scikit_image-0.22.0-cp311-cp311-win_amd64.whl", hash = "sha256:2bcb74adb0634258a67f66c2bb29978c9a3e222463e003b67ba12056c003971b"},
+ {file = "scikit_image-0.22.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:003ca2274ac0fac252280e7179ff986ff783407001459ddea443fe7916e38cff"},
+ {file = "scikit_image-0.22.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:cf3c0c15b60ae3e557a0c7575fbd352f0c3ce0afca562febfe3ab80efbeec0e9"},
+ {file = "scikit_image-0.22.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f5b23908dd4d120e6aecb1ed0277563e8cbc8d6c0565bdc4c4c6475d53608452"},
+ {file = "scikit_image-0.22.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:be79d7493f320a964f8fcf603121595ba82f84720de999db0fcca002266a549a"},
+ {file = "scikit_image-0.22.0-cp312-cp312-win_amd64.whl", hash = "sha256:722b970aa5da725dca55252c373b18bbea7858c1cdb406e19f9b01a4a73b30b2"},
+ {file = "scikit_image-0.22.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:22318b35044cfeeb63ee60c56fc62450e5fe516228138f1d06c7a26378248a86"},
+ {file = "scikit_image-0.22.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:9e801c44a814afdadeabf4dffdffc23733e393767958b82319706f5fa3e1eaa9"},
+ {file = "scikit_image-0.22.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c472a1fb3665ec5c00423684590631d95f9afcbc97f01407d348b821880b2cb3"},
+ {file = "scikit_image-0.22.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b7a6c89e8d6252332121b58f50e1625c35f7d6a85489c0b6b7ee4f5155d547a"},
+ {file = "scikit_image-0.22.0-cp39-cp39-win_amd64.whl", hash = "sha256:5071b8f6341bfb0737ab05c8ab4ac0261f9e25dbcc7b5d31e5ed230fd24a7929"},
+ {file = "scikit_image-0.22.0.tar.gz", hash = "sha256:018d734df1d2da2719087d15f679d19285fce97cd37695103deadfaef2873236"},
+]
+
+[package.dependencies]
+imageio = ">=2.27"
+lazy_loader = ">=0.3"
+networkx = ">=2.8"
+numpy = ">=1.22"
+packaging = ">=21"
+pillow = ">=9.0.1"
+scipy = ">=1.8"
+tifffile = ">=2022.8.12"
+
+[package.extras]
+build = ["Cython (>=0.29.32)", "build", "meson-python (>=0.14)", "ninja", "numpy (>=1.22)", "packaging (>=21)", "pythran", "setuptools (>=67)", "spin (==0.6)", "wheel"]
+data = ["pooch (>=1.6.0)"]
+developer = ["pre-commit", "tomli"]
+docs = ["PyWavelets (>=1.1.1)", "dask[array] (>=2022.9.2)", "ipykernel", "ipywidgets", "kaleido", "matplotlib (>=3.5)", "myst-parser", "numpydoc (>=1.6)", "pandas (>=1.5)", "plotly (>=5.10)", "pooch (>=1.6)", "pydata-sphinx-theme (>=0.14.1)", "pytest-runner", "scikit-learn (>=1.1)", "seaborn (>=0.11)", "sphinx (>=7.2)", "sphinx-copybutton", "sphinx-gallery (>=0.14)", "sphinx_design (>=0.5)", "tifffile (>=2022.8.12)"]
+optional = ["PyWavelets (>=1.1.1)", "SimpleITK", "astropy (>=5.0)", "cloudpickle (>=0.2.1)", "dask[array] (>=2021.1.0)", "matplotlib (>=3.5)", "pooch (>=1.6.0)", "pyamg", "scikit-learn (>=1.1)"]
+test = ["asv", "matplotlib (>=3.5)", "numpydoc (>=1.5)", "pooch (>=1.6.0)", "pytest (>=7.0)", "pytest-cov (>=2.11.0)", "pytest-faulthandler", "pytest-localserver"]
+
+[[package]]
+name = "scikit-learn"
+version = "1.3.2"
+description = "A set of python modules for machine learning and data mining"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "scikit-learn-1.3.2.tar.gz", hash = "sha256:a2f54c76accc15a34bfb9066e6c7a56c1e7235dda5762b990792330b52ccfb05"},
+ {file = "scikit_learn-1.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e326c0eb5cf4d6ba40f93776a20e9a7a69524c4db0757e7ce24ba222471ee8a1"},
+ {file = "scikit_learn-1.3.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:535805c2a01ccb40ca4ab7d081d771aea67e535153e35a1fd99418fcedd1648a"},
+ {file = "scikit_learn-1.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1215e5e58e9880b554b01187b8c9390bf4dc4692eedeaf542d3273f4785e342c"},
+ {file = "scikit_learn-1.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ee107923a623b9f517754ea2f69ea3b62fc898a3641766cb7deb2f2ce450161"},
+ {file = "scikit_learn-1.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:35a22e8015048c628ad099da9df5ab3004cdbf81edc75b396fd0cff8699ac58c"},
+ {file = "scikit_learn-1.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6fb6bc98f234fda43163ddbe36df8bcde1d13ee176c6dc9b92bb7d3fc842eb66"},
+ {file = "scikit_learn-1.3.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:18424efee518a1cde7b0b53a422cde2f6625197de6af36da0b57ec502f126157"},
+ {file = "scikit_learn-1.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3271552a5eb16f208a6f7f617b8cc6d1f137b52c8a1ef8edf547db0259b2c9fb"},
+ {file = "scikit_learn-1.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc4144a5004a676d5022b798d9e573b05139e77f271253a4703eed295bde0433"},
+ {file = "scikit_learn-1.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:67f37d708f042a9b8d59551cf94d30431e01374e00dc2645fa186059c6c5d78b"},
+ {file = "scikit_learn-1.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:8db94cd8a2e038b37a80a04df8783e09caac77cbe052146432e67800e430c028"},
+ {file = "scikit_learn-1.3.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:61a6efd384258789aa89415a410dcdb39a50e19d3d8410bd29be365bcdd512d5"},
+ {file = "scikit_learn-1.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb06f8dce3f5ddc5dee1715a9b9f19f20d295bed8e3cd4fa51e1d050347de525"},
+ {file = "scikit_learn-1.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5b2de18d86f630d68fe1f87af690d451388bb186480afc719e5f770590c2ef6c"},
+ {file = "scikit_learn-1.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:0402638c9a7c219ee52c94cbebc8fcb5eb9fe9c773717965c1f4185588ad3107"},
+ {file = "scikit_learn-1.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a19f90f95ba93c1a7f7924906d0576a84da7f3b2282ac3bfb7a08a32801add93"},
+ {file = "scikit_learn-1.3.2-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:b8692e395a03a60cd927125eef3a8e3424d86dde9b2370d544f0ea35f78a8073"},
+ {file = "scikit_learn-1.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15e1e94cc23d04d39da797ee34236ce2375ddea158b10bee3c343647d615581d"},
+ {file = "scikit_learn-1.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:785a2213086b7b1abf037aeadbbd6d67159feb3e30263434139c98425e3dcfcf"},
+ {file = "scikit_learn-1.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:64381066f8aa63c2710e6b56edc9f0894cc7bf59bd71b8ce5613a4559b6145e0"},
+ {file = "scikit_learn-1.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6c43290337f7a4b969d207e620658372ba3c1ffb611f8bc2b6f031dc5c6d1d03"},
+ {file = "scikit_learn-1.3.2-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:dc9002fc200bed597d5d34e90c752b74df516d592db162f756cc52836b38fe0e"},
+ {file = "scikit_learn-1.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d08ada33e955c54355d909b9c06a4789a729977f165b8bae6f225ff0a60ec4a"},
+ {file = "scikit_learn-1.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:763f0ae4b79b0ff9cca0bf3716bcc9915bdacff3cebea15ec79652d1cc4fa5c9"},
+ {file = "scikit_learn-1.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:ed932ea780517b00dae7431e031faae6b49b20eb6950918eb83bd043237950e0"},
+]
+
+[package.dependencies]
+joblib = ">=1.1.1"
+numpy = ">=1.17.3,<2.0"
+scipy = ">=1.5.0"
+threadpoolctl = ">=2.0.0"
+
+[package.extras]
+benchmark = ["matplotlib (>=3.1.3)", "memory-profiler (>=0.57.0)", "pandas (>=1.0.5)"]
+docs = ["Pillow (>=7.1.2)", "matplotlib (>=3.1.3)", "memory-profiler (>=0.57.0)", "numpydoc (>=1.2.0)", "pandas (>=1.0.5)", "plotly (>=5.14.0)", "pooch (>=1.6.0)", "scikit-image (>=0.16.2)", "seaborn (>=0.9.0)", "sphinx (>=6.0.0)", "sphinx-copybutton (>=0.5.2)", "sphinx-gallery (>=0.10.1)", "sphinx-prompt (>=1.3.0)", "sphinxext-opengraph (>=0.4.2)"]
+examples = ["matplotlib (>=3.1.3)", "pandas (>=1.0.5)", "plotly (>=5.14.0)", "pooch (>=1.6.0)", "scikit-image (>=0.16.2)", "seaborn (>=0.9.0)"]
+tests = ["black (>=23.3.0)", "matplotlib (>=3.1.3)", "mypy (>=1.3)", "numpydoc (>=1.2.0)", "pandas (>=1.0.5)", "pooch (>=1.6.0)", "pyamg (>=4.0.0)", "pytest (>=7.1.2)", "pytest-cov (>=2.9.0)", "ruff (>=0.0.272)", "scikit-image (>=0.16.2)"]
+
+[[package]]
+name = "scipy"
+version = "1.11.4"
+description = "Fundamental algorithms for scientific computing in Python"
+category = "main"
+optional = false
+python-versions = ">=3.9"
+files = [
+ {file = "scipy-1.11.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc9a714581f561af0848e6b69947fda0614915f072dfd14142ed1bfe1b806710"},
+ {file = "scipy-1.11.4-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:cf00bd2b1b0211888d4dc75656c0412213a8b25e80d73898083f402b50f47e41"},
+ {file = "scipy-1.11.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9999c008ccf00e8fbcce1236f85ade5c569d13144f77a1946bef8863e8f6eb4"},
+ {file = "scipy-1.11.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:933baf588daa8dc9a92c20a0be32f56d43faf3d1a60ab11b3f08c356430f6e56"},
+ {file = "scipy-1.11.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8fce70f39076a5aa62e92e69a7f62349f9574d8405c0a5de6ed3ef72de07f446"},
+ {file = "scipy-1.11.4-cp310-cp310-win_amd64.whl", hash = "sha256:6550466fbeec7453d7465e74d4f4b19f905642c89a7525571ee91dd7adabb5a3"},
+ {file = "scipy-1.11.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f313b39a7e94f296025e3cffc2c567618174c0b1dde173960cf23808f9fae4be"},
+ {file = "scipy-1.11.4-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:1b7c3dca977f30a739e0409fb001056484661cb2541a01aba0bb0029f7b68db8"},
+ {file = "scipy-1.11.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:00150c5eae7b610c32589dda259eacc7c4f1665aedf25d921907f4d08a951b1c"},
+ {file = "scipy-1.11.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:530f9ad26440e85766509dbf78edcfe13ffd0ab7fec2560ee5c36ff74d6269ff"},
+ {file = "scipy-1.11.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5e347b14fe01003d3b78e196e84bd3f48ffe4c8a7b8a1afbcb8f5505cb710993"},
+ {file = "scipy-1.11.4-cp311-cp311-win_amd64.whl", hash = "sha256:acf8ed278cc03f5aff035e69cb511741e0418681d25fbbb86ca65429c4f4d9cd"},
+ {file = "scipy-1.11.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:028eccd22e654b3ea01ee63705681ee79933652b2d8f873e7949898dda6d11b6"},
+ {file = "scipy-1.11.4-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:2c6ff6ef9cc27f9b3db93a6f8b38f97387e6e0591600369a297a50a8e96e835d"},
+ {file = "scipy-1.11.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b030c6674b9230d37c5c60ab456e2cf12f6784596d15ce8da9365e70896effc4"},
+ {file = "scipy-1.11.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad669df80528aeca5f557712102538f4f37e503f0c5b9541655016dd0932ca79"},
+ {file = "scipy-1.11.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ce7fff2e23ab2cc81ff452a9444c215c28e6305f396b2ba88343a567feec9660"},
+ {file = "scipy-1.11.4-cp312-cp312-win_amd64.whl", hash = "sha256:36750b7733d960d7994888f0d148d31ea3017ac15eef664194b4ef68d36a4a97"},
+ {file = "scipy-1.11.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6e619aba2df228a9b34718efb023966da781e89dd3d21637b27f2e54db0410d7"},
+ {file = "scipy-1.11.4-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:f3cd9e7b3c2c1ec26364856f9fbe78695fe631150f94cd1c22228456404cf1ec"},
+ {file = "scipy-1.11.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d10e45a6c50211fe256da61a11c34927c68f277e03138777bdebedd933712fea"},
+ {file = "scipy-1.11.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91af76a68eeae0064887a48e25c4e616fa519fa0d38602eda7e0f97d65d57937"},
+ {file = "scipy-1.11.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6df1468153a31cf55ed5ed39647279beb9cfb5d3f84369453b49e4b8502394fd"},
+ {file = "scipy-1.11.4-cp39-cp39-win_amd64.whl", hash = "sha256:ee410e6de8f88fd5cf6eadd73c135020bfbbbdfcd0f6162c36a7638a1ea8cc65"},
+ {file = "scipy-1.11.4.tar.gz", hash = "sha256:90a2b78e7f5733b9de748f589f09225013685f9b218275257f8a8168ededaeaa"},
+]
+
+[package.dependencies]
+numpy = ">=1.21.6,<1.28.0"
+
+[package.extras]
+dev = ["click", "cython-lint (>=0.12.2)", "doit (>=0.36.0)", "mypy", "pycodestyle", "pydevtool", "rich-click", "ruff", "types-psutil", "typing_extensions"]
+doc = ["jupytext", "matplotlib (>2)", "myst-nb", "numpydoc", "pooch", "pydata-sphinx-theme (==0.9.0)", "sphinx (!=4.1.0)", "sphinx-design (>=0.2.0)"]
+test = ["asv", "gmpy2", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"]
+
+[[package]]
+name = "seaborn"
+version = "0.13.0"
+description = "Statistical data visualization"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "seaborn-0.13.0-py3-none-any.whl", hash = "sha256:70d740828c48de0f402bb17234e475eda687e3c65f4383ea25d0cc4728f7772e"},
+ {file = "seaborn-0.13.0.tar.gz", hash = "sha256:0e76abd2ec291c655b516703c6a022f0fd5afed26c8e714e8baef48150f73598"},
+]
+
+[package.dependencies]
+matplotlib = ">=3.3,<3.6.1 || >3.6.1"
+numpy = ">=1.20,<1.24.0 || >1.24.0"
+pandas = ">=1.2"
+
+[package.extras]
+dev = ["flake8", "flit", "mypy", "pandas-stubs", "pre-commit", "pytest", "pytest-cov", "pytest-xdist"]
+docs = ["ipykernel", "nbconvert", "numpydoc", "pydata_sphinx_theme (==0.10.0rc2)", "pyyaml", "sphinx (<6.0.0)", "sphinx-copybutton", "sphinx-design", "sphinx-issues"]
+stats = ["scipy (>=1.7)", "statsmodels (>=0.12)"]
+
+[[package]]
+name = "send2trash"
+version = "1.8.2"
+description = "Send file to trash natively under Mac OS X, Windows and Linux"
+category = "main"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
+files = [
+ {file = "Send2Trash-1.8.2-py3-none-any.whl", hash = "sha256:a384719d99c07ce1eefd6905d2decb6f8b7ed054025bb0e618919f945de4f679"},
+ {file = "Send2Trash-1.8.2.tar.gz", hash = "sha256:c132d59fa44b9ca2b1699af5c86f57ce9f4c5eb56629d5d55fbb7a35f84e2312"},
+]
+
+[package.extras]
+nativelib = ["pyobjc-framework-Cocoa", "pywin32"]
+objc = ["pyobjc-framework-Cocoa"]
+win32 = ["pywin32"]
+
+[[package]]
+name = "sentry-sdk"
+version = "1.39.1"
+description = "Python client for Sentry (https://sentry.io)"
+category = "main"
+optional = false
+python-versions = "*"
+files = [
+ {file = "sentry-sdk-1.39.1.tar.gz", hash = "sha256:320a55cdf9da9097a0bead239c35b7e61f53660ef9878861824fd6d9b2eaf3b5"},
+ {file = "sentry_sdk-1.39.1-py2.py3-none-any.whl", hash = "sha256:81b5b9ffdd1a374e9eb0c053b5d2012155db9cbe76393a8585677b753bd5fdc1"},
+]
+
+[package.dependencies]
+certifi = "*"
+urllib3 = {version = ">=1.26.11", markers = "python_version >= \"3.6\""}
+
+[package.extras]
+aiohttp = ["aiohttp (>=3.5)"]
+arq = ["arq (>=0.23)"]
+asyncpg = ["asyncpg (>=0.23)"]
+beam = ["apache-beam (>=2.12)"]
+bottle = ["bottle (>=0.12.13)"]
+celery = ["celery (>=3)"]
+chalice = ["chalice (>=1.16.0)"]
+clickhouse-driver = ["clickhouse-driver (>=0.2.0)"]
+django = ["django (>=1.8)"]
+falcon = ["falcon (>=1.4)"]
+fastapi = ["fastapi (>=0.79.0)"]
+flask = ["blinker (>=1.1)", "flask (>=0.11)", "markupsafe"]
+grpcio = ["grpcio (>=1.21.1)"]
+httpx = ["httpx (>=0.16.0)"]
+huey = ["huey (>=2)"]
+loguru = ["loguru (>=0.5)"]
+opentelemetry = ["opentelemetry-distro (>=0.35b0)"]
+opentelemetry-experimental = ["opentelemetry-distro (>=0.40b0,<1.0)", "opentelemetry-instrumentation-aiohttp-client (>=0.40b0,<1.0)", "opentelemetry-instrumentation-django (>=0.40b0,<1.0)", "opentelemetry-instrumentation-fastapi (>=0.40b0,<1.0)", "opentelemetry-instrumentation-flask (>=0.40b0,<1.0)", "opentelemetry-instrumentation-requests (>=0.40b0,<1.0)", "opentelemetry-instrumentation-sqlite3 (>=0.40b0,<1.0)", "opentelemetry-instrumentation-urllib (>=0.40b0,<1.0)"]
+pure-eval = ["asttokens", "executing", "pure-eval"]
+pymongo = ["pymongo (>=3.1)"]
+pyspark = ["pyspark (>=2.4.4)"]
+quart = ["blinker (>=1.1)", "quart (>=0.16.1)"]
+rq = ["rq (>=0.6)"]
+sanic = ["sanic (>=0.8)"]
+sqlalchemy = ["sqlalchemy (>=1.2)"]
+starlette = ["starlette (>=0.19.1)"]
+starlite = ["starlite (>=1.48)"]
+tornado = ["tornado (>=5)"]
+
+[[package]]
+name = "setproctitle"
+version = "1.3.3"
+description = "A Python module to customize the process title"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "setproctitle-1.3.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:897a73208da48db41e687225f355ce993167079eda1260ba5e13c4e53be7f754"},
+ {file = "setproctitle-1.3.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8c331e91a14ba4076f88c29c777ad6b58639530ed5b24b5564b5ed2fd7a95452"},
+ {file = "setproctitle-1.3.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbbd6c7de0771c84b4aa30e70b409565eb1fc13627a723ca6be774ed6b9d9fa3"},
+ {file = "setproctitle-1.3.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c05ac48ef16ee013b8a326c63e4610e2430dbec037ec5c5b58fcced550382b74"},
+ {file = "setproctitle-1.3.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1342f4fdb37f89d3e3c1c0a59d6ddbedbde838fff5c51178a7982993d238fe4f"},
+ {file = "setproctitle-1.3.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc74e84fdfa96821580fb5e9c0b0777c1c4779434ce16d3d62a9c4d8c710df39"},
+ {file = "setproctitle-1.3.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9617b676b95adb412bb69645d5b077d664b6882bb0d37bfdafbbb1b999568d85"},
+ {file = "setproctitle-1.3.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6a249415f5bb88b5e9e8c4db47f609e0bf0e20a75e8d744ea787f3092ba1f2d0"},
+ {file = "setproctitle-1.3.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:38da436a0aaace9add67b999eb6abe4b84397edf4a78ec28f264e5b4c9d53cd5"},
+ {file = "setproctitle-1.3.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:da0d57edd4c95bf221b2ebbaa061e65b1788f1544977288bdf95831b6e44e44d"},
+ {file = "setproctitle-1.3.3-cp310-cp310-win32.whl", hash = "sha256:a1fcac43918b836ace25f69b1dca8c9395253ad8152b625064415b1d2f9be4fb"},
+ {file = "setproctitle-1.3.3-cp310-cp310-win_amd64.whl", hash = "sha256:200620c3b15388d7f3f97e0ae26599c0c378fdf07ae9ac5a13616e933cbd2086"},
+ {file = "setproctitle-1.3.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:334f7ed39895d692f753a443102dd5fed180c571eb6a48b2a5b7f5b3564908c8"},
+ {file = "setproctitle-1.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:950f6476d56ff7817a8fed4ab207727fc5260af83481b2a4b125f32844df513a"},
+ {file = "setproctitle-1.3.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:195c961f54a09eb2acabbfc90c413955cf16c6e2f8caa2adbf2237d1019c7dd8"},
+ {file = "setproctitle-1.3.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f05e66746bf9fe6a3397ec246fe481096664a9c97eb3fea6004735a4daf867fd"},
+ {file = "setproctitle-1.3.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b5901a31012a40ec913265b64e48c2a4059278d9f4e6be628441482dd13fb8b5"},
+ {file = "setproctitle-1.3.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64286f8a995f2cd934082b398fc63fca7d5ffe31f0e27e75b3ca6b4efda4e353"},
+ {file = "setproctitle-1.3.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:184239903bbc6b813b1a8fc86394dc6ca7d20e2ebe6f69f716bec301e4b0199d"},
+ {file = "setproctitle-1.3.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:664698ae0013f986118064b6676d7dcd28fefd0d7d5a5ae9497cbc10cba48fa5"},
+ {file = "setproctitle-1.3.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:e5119a211c2e98ff18b9908ba62a3bd0e3fabb02a29277a7232a6fb4b2560aa0"},
+ {file = "setproctitle-1.3.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:417de6b2e214e837827067048f61841f5d7fc27926f2e43954567094051aff18"},
+ {file = "setproctitle-1.3.3-cp311-cp311-win32.whl", hash = "sha256:6a143b31d758296dc2f440175f6c8e0b5301ced3b0f477b84ca43cdcf7f2f476"},
+ {file = "setproctitle-1.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:a680d62c399fa4b44899094027ec9a1bdaf6f31c650e44183b50d4c4d0ccc085"},
+ {file = "setproctitle-1.3.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d4460795a8a7a391e3567b902ec5bdf6c60a47d791c3b1d27080fc203d11c9dc"},
+ {file = "setproctitle-1.3.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:bdfd7254745bb737ca1384dee57e6523651892f0ea2a7344490e9caefcc35e64"},
+ {file = "setproctitle-1.3.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:477d3da48e216d7fc04bddab67b0dcde633e19f484a146fd2a34bb0e9dbb4a1e"},
+ {file = "setproctitle-1.3.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ab2900d111e93aff5df9fddc64cf51ca4ef2c9f98702ce26524f1acc5a786ae7"},
+ {file = "setproctitle-1.3.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:088b9efc62d5aa5d6edf6cba1cf0c81f4488b5ce1c0342a8b67ae39d64001120"},
+ {file = "setproctitle-1.3.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6d50252377db62d6a0bb82cc898089916457f2db2041e1d03ce7fadd4a07381"},
+ {file = "setproctitle-1.3.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:87e668f9561fd3a457ba189edfc9e37709261287b52293c115ae3487a24b92f6"},
+ {file = "setproctitle-1.3.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:287490eb90e7a0ddd22e74c89a92cc922389daa95babc833c08cf80c84c4df0a"},
+ {file = "setproctitle-1.3.3-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:4fe1c49486109f72d502f8be569972e27f385fe632bd8895f4730df3c87d5ac8"},
+ {file = "setproctitle-1.3.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4a6ba2494a6449b1f477bd3e67935c2b7b0274f2f6dcd0f7c6aceae10c6c6ba3"},
+ {file = "setproctitle-1.3.3-cp312-cp312-win32.whl", hash = "sha256:2df2b67e4b1d7498632e18c56722851ba4db5d6a0c91aaf0fd395111e51cdcf4"},
+ {file = "setproctitle-1.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:f38d48abc121263f3b62943f84cbaede05749047e428409c2c199664feb6abc7"},
+ {file = "setproctitle-1.3.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:816330675e3504ae4d9a2185c46b573105d2310c20b19ea2b4596a9460a4f674"},
+ {file = "setproctitle-1.3.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68f960bc22d8d8e4ac886d1e2e21ccbd283adcf3c43136161c1ba0fa509088e0"},
+ {file = "setproctitle-1.3.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:00e6e7adff74796ef12753ff399491b8827f84f6c77659d71bd0b35870a17d8f"},
+ {file = "setproctitle-1.3.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:53bc0d2358507596c22b02db079618451f3bd720755d88e3cccd840bafb4c41c"},
+ {file = "setproctitle-1.3.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad6d20f9541f5f6ac63df553b6d7a04f313947f550eab6a61aa758b45f0d5657"},
+ {file = "setproctitle-1.3.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c1c84beab776b0becaa368254801e57692ed749d935469ac10e2b9b825dbdd8e"},
+ {file = "setproctitle-1.3.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:507e8dc2891021350eaea40a44ddd887c9f006e6b599af8d64a505c0f718f170"},
+ {file = "setproctitle-1.3.3-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:b1067647ac7aba0b44b591936118a22847bda3c507b0a42d74272256a7a798e9"},
+ {file = "setproctitle-1.3.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2e71f6365744bf53714e8bd2522b3c9c1d83f52ffa6324bd7cbb4da707312cd8"},
+ {file = "setproctitle-1.3.3-cp37-cp37m-win32.whl", hash = "sha256:7f1d36a1e15a46e8ede4e953abb104fdbc0845a266ec0e99cc0492a4364f8c44"},
+ {file = "setproctitle-1.3.3-cp37-cp37m-win_amd64.whl", hash = "sha256:c9a402881ec269d0cc9c354b149fc29f9ec1a1939a777f1c858cdb09c7a261df"},
+ {file = "setproctitle-1.3.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ff814dea1e5c492a4980e3e7d094286077054e7ea116cbeda138819db194b2cd"},
+ {file = "setproctitle-1.3.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:accb66d7b3ccb00d5cd11d8c6e07055a4568a24c95cf86109894dcc0c134cc89"},
+ {file = "setproctitle-1.3.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:554eae5a5b28f02705b83a230e9d163d645c9a08914c0ad921df363a07cf39b1"},
+ {file = "setproctitle-1.3.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a911b26264dbe9e8066c7531c0591cfab27b464459c74385b276fe487ca91c12"},
+ {file = "setproctitle-1.3.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2982efe7640c4835f7355fdb4da313ad37fb3b40f5c69069912f8048f77b28c8"},
+ {file = "setproctitle-1.3.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:df3f4274b80709d8bcab2f9a862973d453b308b97a0b423a501bcd93582852e3"},
+ {file = "setproctitle-1.3.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:af2c67ae4c795d1674a8d3ac1988676fa306bcfa1e23fddb5e0bd5f5635309ca"},
+ {file = "setproctitle-1.3.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:af4061f67fd7ec01624c5e3c21f6b7af2ef0e6bab7fbb43f209e6506c9ce0092"},
+ {file = "setproctitle-1.3.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:37a62cbe16d4c6294e84670b59cf7adcc73faafe6af07f8cb9adaf1f0e775b19"},
+ {file = "setproctitle-1.3.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:a83ca086fbb017f0d87f240a8f9bbcf0809f3b754ee01cec928fff926542c450"},
+ {file = "setproctitle-1.3.3-cp38-cp38-win32.whl", hash = "sha256:059f4ce86f8cc92e5860abfc43a1dceb21137b26a02373618d88f6b4b86ba9b2"},
+ {file = "setproctitle-1.3.3-cp38-cp38-win_amd64.whl", hash = "sha256:ab92e51cd4a218208efee4c6d37db7368fdf182f6e7ff148fb295ecddf264287"},
+ {file = "setproctitle-1.3.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c7951820b77abe03d88b114b998867c0f99da03859e5ab2623d94690848d3e45"},
+ {file = "setproctitle-1.3.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5bc94cf128676e8fac6503b37763adb378e2b6be1249d207630f83fc325d9b11"},
+ {file = "setproctitle-1.3.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f5d9027eeda64d353cf21a3ceb74bb1760bd534526c9214e19f052424b37e42"},
+ {file = "setproctitle-1.3.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2e4a8104db15d3462e29d9946f26bed817a5b1d7a47eabca2d9dc2b995991503"},
+ {file = "setproctitle-1.3.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c32c41ace41f344d317399efff4cffb133e709cec2ef09c99e7a13e9f3b9483c"},
+ {file = "setproctitle-1.3.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cbf16381c7bf7f963b58fb4daaa65684e10966ee14d26f5cc90f07049bfd8c1e"},
+ {file = "setproctitle-1.3.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e18b7bd0898398cc97ce2dfc83bb192a13a087ef6b2d5a8a36460311cb09e775"},
+ {file = "setproctitle-1.3.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:69d565d20efe527bd8a9b92e7f299ae5e73b6c0470f3719bd66f3cd821e0d5bd"},
+ {file = "setproctitle-1.3.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:ddedd300cd690a3b06e7eac90ed4452348b1348635777ce23d460d913b5b63c3"},
+ {file = "setproctitle-1.3.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:415bfcfd01d1fbf5cbd75004599ef167a533395955305f42220a585f64036081"},
+ {file = "setproctitle-1.3.3-cp39-cp39-win32.whl", hash = "sha256:21112fcd2195d48f25760f0eafa7a76510871bbb3b750219310cf88b04456ae3"},
+ {file = "setproctitle-1.3.3-cp39-cp39-win_amd64.whl", hash = "sha256:5a740f05d0968a5a17da3d676ce6afefebeeeb5ce137510901bf6306ba8ee002"},
+ {file = "setproctitle-1.3.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:6b9e62ddb3db4b5205c0321dd69a406d8af9ee1693529d144e86bd43bcb4b6c0"},
+ {file = "setproctitle-1.3.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e3b99b338598de0bd6b2643bf8c343cf5ff70db3627af3ca427a5e1a1a90dd9"},
+ {file = "setproctitle-1.3.3-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38ae9a02766dad331deb06855fb7a6ca15daea333b3967e214de12cfae8f0ef5"},
+ {file = "setproctitle-1.3.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:200ede6fd11233085ba9b764eb055a2a191fb4ffb950c68675ac53c874c22e20"},
+ {file = "setproctitle-1.3.3-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0d3a953c50776751e80fe755a380a64cb14d61e8762bd43041ab3f8cc436092f"},
+ {file = "setproctitle-1.3.3-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5e08e232b78ba3ac6bc0d23ce9e2bee8fad2be391b7e2da834fc9a45129eb87"},
+ {file = "setproctitle-1.3.3-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1da82c3e11284da4fcbf54957dafbf0655d2389cd3d54e4eaba636faf6d117a"},
+ {file = "setproctitle-1.3.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:aeaa71fb9568ebe9b911ddb490c644fbd2006e8c940f21cb9a1e9425bd709574"},
+ {file = "setproctitle-1.3.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:59335d000c6250c35989394661eb6287187854e94ac79ea22315469ee4f4c244"},
+ {file = "setproctitle-1.3.3-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c3ba57029c9c50ecaf0c92bb127224cc2ea9fda057b5d99d3f348c9ec2855ad3"},
+ {file = "setproctitle-1.3.3-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d876d355c53d975c2ef9c4f2487c8f83dad6aeaaee1b6571453cb0ee992f55f6"},
+ {file = "setproctitle-1.3.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:224602f0939e6fb9d5dd881be1229d485f3257b540f8a900d4271a2c2aa4e5f4"},
+ {file = "setproctitle-1.3.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d7f27e0268af2d7503386e0e6be87fb9b6657afd96f5726b733837121146750d"},
+ {file = "setproctitle-1.3.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f5e7266498cd31a4572378c61920af9f6b4676a73c299fce8ba93afd694f8ae7"},
+ {file = "setproctitle-1.3.3-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33c5609ad51cd99d388e55651b19148ea99727516132fb44680e1f28dd0d1de9"},
+ {file = "setproctitle-1.3.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:eae8988e78192fd1a3245a6f4f382390b61bce6cfcc93f3809726e4c885fa68d"},
+ {file = "setproctitle-1.3.3.tar.gz", hash = "sha256:c913e151e7ea01567837ff037a23ca8740192880198b7fbb90b16d181607caae"},
+]
+
+[package.extras]
+test = ["pytest"]
+
+[[package]]
+name = "setuptools"
+version = "69.0.3"
+description = "Easily download, build, install, upgrade, and uninstall Python packages"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "setuptools-69.0.3-py3-none-any.whl", hash = "sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05"},
+ {file = "setuptools-69.0.3.tar.gz", hash = "sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78"},
+]
+
+[package.extras]
+docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"]
+testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"]
+testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"]
+
+[[package]]
+name = "six"
+version = "1.16.0"
+description = "Python 2 and 3 compatibility utilities"
+category = "main"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
+files = [
+ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
+ {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
+]
+
+[[package]]
+name = "smmap"
+version = "5.0.1"
+description = "A pure Python implementation of a sliding window memory map manager"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "smmap-5.0.1-py3-none-any.whl", hash = "sha256:e6d8668fa5f93e706934a62d7b4db19c8d9eb8cf2adbb75ef1b675aa332b69da"},
+ {file = "smmap-5.0.1.tar.gz", hash = "sha256:dceeb6c0028fdb6734471eb07c0cd2aae706ccaecab45965ee83f11c8d3b1f62"},
+]
+
+[[package]]
+name = "sniffio"
+version = "1.3.0"
+description = "Sniff out which async library your code is running under"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "sniffio-1.3.0-py3-none-any.whl", hash = "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"},
+ {file = "sniffio-1.3.0.tar.gz", hash = "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101"},
+]
+
+[[package]]
+name = "soupsieve"
+version = "2.5"
+description = "A modern CSS selector implementation for Beautiful Soup."
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "soupsieve-2.5-py3-none-any.whl", hash = "sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7"},
+ {file = "soupsieve-2.5.tar.gz", hash = "sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690"},
+]
+
+[[package]]
+name = "stack-data"
+version = "0.6.3"
+description = "Extract data from python stack frames and tracebacks for informative displays"
+category = "main"
+optional = false
+python-versions = "*"
+files = [
+ {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"},
+ {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"},
+]
+
+[package.dependencies]
+asttokens = ">=2.1.0"
+executing = ">=1.2.0"
+pure-eval = "*"
+
+[package.extras]
+tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"]
+
+[[package]]
+name = "sympy"
+version = "1.12"
+description = "Computer algebra system (CAS) in Python"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "sympy-1.12-py3-none-any.whl", hash = "sha256:c3588cd4295d0c0f603d0f2ae780587e64e2efeedb3521e46b9bb1d08d184fa5"},
+ {file = "sympy-1.12.tar.gz", hash = "sha256:ebf595c8dac3e0fdc4152c51878b498396ec7f30e7a914d6071e674d49420fb8"},
+]
+
+[package.dependencies]
+mpmath = ">=0.19"
+
+[[package]]
+name = "terminado"
+version = "0.18.0"
+description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library."
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "terminado-0.18.0-py3-none-any.whl", hash = "sha256:87b0d96642d0fe5f5abd7783857b9cab167f221a39ff98e3b9619a788a3c0f2e"},
+ {file = "terminado-0.18.0.tar.gz", hash = "sha256:1ea08a89b835dd1b8c0c900d92848147cef2537243361b2e3f4dc15df9b6fded"},
+]
+
+[package.dependencies]
+ptyprocess = {version = "*", markers = "os_name != \"nt\""}
+pywinpty = {version = ">=1.1.0", markers = "os_name == \"nt\""}
+tornado = ">=6.1.0"
+
+[package.extras]
+docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"]
+test = ["pre-commit", "pytest (>=7.0)", "pytest-timeout"]
+typing = ["mypy (>=1.6,<2.0)", "traitlets (>=5.11.1)"]
+
+[[package]]
+name = "threadpoolctl"
+version = "3.2.0"
+description = "threadpoolctl"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "threadpoolctl-3.2.0-py3-none-any.whl", hash = "sha256:2b7818516e423bdaebb97c723f86a7c6b0a83d3f3b0970328d66f4d9104dc032"},
+ {file = "threadpoolctl-3.2.0.tar.gz", hash = "sha256:c96a0ba3bdddeaca37dc4cc7344aafad41cdb8c313f74fdfe387a867bba93355"},
+]
+
+[[package]]
+name = "tifffile"
+version = "2023.12.9"
+description = "Read and write TIFF files"
+category = "main"
+optional = false
+python-versions = ">=3.9"
+files = [
+ {file = "tifffile-2023.12.9-py3-none-any.whl", hash = "sha256:9b066e4b1a900891ea42ffd33dab8ba34c537935618b9893ddef42d7d422692f"},
+ {file = "tifffile-2023.12.9.tar.gz", hash = "sha256:9dd1da91180a6453018a241ff219e1905f169384355cd89c9ef4034c1b46cdb8"},
+]
+
+[package.dependencies]
+numpy = "*"
+
+[package.extras]
+all = ["defusedxml", "fsspec", "imagecodecs (>=2023.8.12)", "lxml", "matplotlib", "zarr"]
+
+[[package]]
+name = "tinycss2"
+version = "1.2.1"
+description = "A tiny CSS parser"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "tinycss2-1.2.1-py3-none-any.whl", hash = "sha256:2b80a96d41e7c3914b8cda8bc7f705a4d9c49275616e886103dd839dfc847847"},
+ {file = "tinycss2-1.2.1.tar.gz", hash = "sha256:8cff3a8f066c2ec677c06dbc7b45619804a6938478d9d73c284b29d14ecb0627"},
+]
+
+[package.dependencies]
+webencodings = ">=0.4"
+
+[package.extras]
+doc = ["sphinx", "sphinx_rtd_theme"]
+test = ["flake8", "isort", "pytest"]
+
+[[package]]
+name = "tomli"
+version = "2.0.1"
+description = "A lil' TOML parser"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"},
+ {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"},
+]
+
+[[package]]
+name = "torch"
+version = "2.1.2"
+description = "Tensors and Dynamic neural networks in Python with strong GPU acceleration"
+category = "main"
+optional = false
+python-versions = ">=3.8.0"
+files = [
+ {file = "torch-2.1.2-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:3a871edd6c02dae77ad810335c0833391c1a4ce49af21ea8cf0f6a5d2096eea8"},
+ {file = "torch-2.1.2-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:bef6996c27d8f6e92ea4e13a772d89611da0e103b48790de78131e308cf73076"},
+ {file = "torch-2.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:0e13034fd5fb323cbbc29e56d0637a3791e50dd589616f40c79adfa36a5a35a1"},
+ {file = "torch-2.1.2-cp310-none-macosx_10_9_x86_64.whl", hash = "sha256:d9b535cad0df3d13997dbe8bd68ac33e0e3ae5377639c9881948e40794a61403"},
+ {file = "torch-2.1.2-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:f9a55d55af02826ebfbadf4e9b682f0f27766bc33df8236b48d28d705587868f"},
+ {file = "torch-2.1.2-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:a6ebbe517097ef289cc7952783588c72de071d4b15ce0f8b285093f0916b1162"},
+ {file = "torch-2.1.2-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:8f32ce591616a30304f37a7d5ea80b69ca9e1b94bba7f308184bf616fdaea155"},
+ {file = "torch-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:e0ee6cf90c8970e05760f898d58f9ac65821c37ffe8b04269ec787aa70962b69"},
+ {file = "torch-2.1.2-cp311-none-macosx_10_9_x86_64.whl", hash = "sha256:76d37967c31c99548ad2c4d3f2cf191db48476f2e69b35a0937137116da356a1"},
+ {file = "torch-2.1.2-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:e2d83f07b4aac983453ea5bf8f9aa9dacf2278a8d31247f5d9037f37befc60e4"},
+ {file = "torch-2.1.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:f41fe0c7ecbf903a568c73486139a75cfab287a0f6c17ed0698fdea7a1e8641d"},
+ {file = "torch-2.1.2-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:e3225f47d50bb66f756fe9196a768055d1c26b02154eb1f770ce47a2578d3aa7"},
+ {file = "torch-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:33d59cd03cb60106857f6c26b36457793637512998666ee3ce17311f217afe2b"},
+ {file = "torch-2.1.2-cp38-none-macosx_10_9_x86_64.whl", hash = "sha256:8e221deccd0def6c2badff6be403e0c53491805ed9915e2c029adbcdb87ab6b5"},
+ {file = "torch-2.1.2-cp38-none-macosx_11_0_arm64.whl", hash = "sha256:05b18594f60a911a0c4f023f38a8bda77131fba5fd741bda626e97dcf5a3dd0a"},
+ {file = "torch-2.1.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:9ca96253b761e9aaf8e06fb30a66ee301aecbf15bb5a303097de1969077620b6"},
+ {file = "torch-2.1.2-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:d93ba70f67b08c2ae5598ee711cbc546a1bc8102cef938904b8c85c2089a51a0"},
+ {file = "torch-2.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:255b50bc0608db177e6a3cc118961d77de7e5105f07816585fa6f191f33a9ff3"},
+ {file = "torch-2.1.2-cp39-none-macosx_10_9_x86_64.whl", hash = "sha256:6984cd5057c0c977b3c9757254e989d3f1124f4ce9d07caa6cb637783c71d42a"},
+ {file = "torch-2.1.2-cp39-none-macosx_11_0_arm64.whl", hash = "sha256:bc195d7927feabc0eb7c110e457c955ed2ab616f3c7c28439dd4188cf589699f"},
+]
+
+[package.dependencies]
+filelock = "*"
+fsspec = "*"
+jinja2 = "*"
+networkx = "*"
+nvidia-cublas-cu12 = {version = "12.1.3.1", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-cuda-cupti-cu12 = {version = "12.1.105", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-cuda-nvrtc-cu12 = {version = "12.1.105", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-cuda-runtime-cu12 = {version = "12.1.105", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-cudnn-cu12 = {version = "8.9.2.26", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-cufft-cu12 = {version = "11.0.2.54", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-curand-cu12 = {version = "10.3.2.106", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-cusolver-cu12 = {version = "11.4.5.107", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-cusparse-cu12 = {version = "12.1.0.106", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-nccl-cu12 = {version = "2.18.1", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+nvidia-nvtx-cu12 = {version = "12.1.105", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+sympy = "*"
+triton = {version = "2.1.0", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""}
+typing-extensions = "*"
+
+[package.extras]
+dynamo = ["jinja2"]
+opt-einsum = ["opt-einsum (>=3.3)"]
+
+[[package]]
+name = "torchvision"
+version = "0.16.2"
+description = "image and video datasets and models for torch deep learning"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "torchvision-0.16.2-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:bc86f2800cb2c0c1a09c581409cdd6bff66e62f103dc83fc63f73346264c3756"},
+ {file = "torchvision-0.16.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b024bd412df6d3a007dcebf311a894eb3c5c21e1af80d12be382bbcb097a7c3a"},
+ {file = "torchvision-0.16.2-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:e89f10f3c8351972b6e3fda95bc3e479ea8dbfc9dfcfd2c32902dbad4ba5cfc5"},
+ {file = "torchvision-0.16.2-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:96c7583700112a410bdc4e1e4f118c429dab49c29c9a31a2cc3579bc9b08b19d"},
+ {file = "torchvision-0.16.2-cp310-cp310-win_amd64.whl", hash = "sha256:9f4032ebb3277fb07ff6a9b818d50a547fb8fcd89d958cfd9e773322454bb688"},
+ {file = "torchvision-0.16.2-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:67b1aaf8b8cb02ce75dd445f291a27c8036a502f8c0aa76e28c37a0faac2e153"},
+ {file = "torchvision-0.16.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bef30d03e1d1c629761f4dca51d3b7d8a0dc0acce6f4068ab2a1634e8e7b64e0"},
+ {file = "torchvision-0.16.2-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:e59cc7b2bd1ab5c0ce4ae382e4e37be8f1c174e8b5de2f6a23c170de9ae28495"},
+ {file = "torchvision-0.16.2-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:e130b08cc9b3cc73a6c59d6edf032394a322f9579bfd21d14bc2e1d0999aa758"},
+ {file = "torchvision-0.16.2-cp311-cp311-win_amd64.whl", hash = "sha256:8692ab1e48807e9604046a6f4beeb67b523294cee1b00828654bb0df2cfce2b2"},
+ {file = "torchvision-0.16.2-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:b82732dcf876a37c852772342aa6ee3480c03bb3e2a802ae109fc5f7e28d26e9"},
+ {file = "torchvision-0.16.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4b065143d1a720fe8a9077fd4be35d491f98819ec80b3dbbc3ec64d0b707a906"},
+ {file = "torchvision-0.16.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:bc5f274e4ecd1b86062063cdf4fd385a1d39d147a3a2685fbbde9ff08bb720b8"},
+ {file = "torchvision-0.16.2-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:335959c43b371c0474af34c1ef2a52efdc7603c45700d29e4475eeb02984170c"},
+ {file = "torchvision-0.16.2-cp38-cp38-win_amd64.whl", hash = "sha256:7fd22d86e08eba321af70cad291020c2cdeac069b00ce88b923ca52e06174769"},
+ {file = "torchvision-0.16.2-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:56115268b37f0b75364e3654e47ad9abc66ac34c1f9e5e3dfa89a22d6a40017a"},
+ {file = "torchvision-0.16.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:82805f8445b094f9d1e770390ee6cc86855e89955e08ce34af2e2274fc0e5c45"},
+ {file = "torchvision-0.16.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:3f4bd5fcbc361476e2e78016636ac7d5509e59d9962521f06eb98e6803898182"},
+ {file = "torchvision-0.16.2-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:8199acdf8ab066a28b84a5b6f4d97b58976d9e164b1acc3a9d14fccfaf74bb3a"},
+ {file = "torchvision-0.16.2-cp39-cp39-win_amd64.whl", hash = "sha256:41dd4fa9f176d563fe9f1b9adef3b7e582cdfb60ce8c9bc51b094a025be687c9"},
+]
+
+[package.dependencies]
+numpy = "*"
+pillow = ">=5.3.0,<8.3.0 || >=8.4.0"
+requests = "*"
+torch = "2.1.2"
+
+[package.extras]
+scipy = ["scipy"]
+
+[[package]]
+name = "tornado"
+version = "6.4"
+description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed."
+category = "main"
+optional = false
+python-versions = ">= 3.8"
+files = [
+ {file = "tornado-6.4-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:02ccefc7d8211e5a7f9e8bc3f9e5b0ad6262ba2fbb683a6443ecc804e5224ce0"},
+ {file = "tornado-6.4-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:27787de946a9cffd63ce5814c33f734c627a87072ec7eed71f7fc4417bb16263"},
+ {file = "tornado-6.4-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7894c581ecdcf91666a0912f18ce5e757213999e183ebfc2c3fdbf4d5bd764e"},
+ {file = "tornado-6.4-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e43bc2e5370a6a8e413e1e1cd0c91bedc5bd62a74a532371042a18ef19e10579"},
+ {file = "tornado-6.4-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0251554cdd50b4b44362f73ad5ba7126fc5b2c2895cc62b14a1c2d7ea32f212"},
+ {file = "tornado-6.4-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fd03192e287fbd0899dd8f81c6fb9cbbc69194d2074b38f384cb6fa72b80e9c2"},
+ {file = "tornado-6.4-cp38-abi3-musllinux_1_1_i686.whl", hash = "sha256:88b84956273fbd73420e6d4b8d5ccbe913c65d31351b4c004ae362eba06e1f78"},
+ {file = "tornado-6.4-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:71ddfc23a0e03ef2df1c1397d859868d158c8276a0603b96cf86892bff58149f"},
+ {file = "tornado-6.4-cp38-abi3-win32.whl", hash = "sha256:6f8a6c77900f5ae93d8b4ae1196472d0ccc2775cc1dfdc9e7727889145c45052"},
+ {file = "tornado-6.4-cp38-abi3-win_amd64.whl", hash = "sha256:10aeaa8006333433da48dec9fe417877f8bcc21f48dda8d661ae79da357b2a63"},
+ {file = "tornado-6.4.tar.gz", hash = "sha256:72291fa6e6bc84e626589f1c29d90a5a6d593ef5ae68052ee2ef000dfd273dee"},
+]
+
+[[package]]
+name = "tqdm"
+version = "4.66.1"
+description = "Fast, Extensible Progress Meter"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "tqdm-4.66.1-py3-none-any.whl", hash = "sha256:d302b3c5b53d47bce91fea46679d9c3c6508cf6332229aa1e7d8653723793386"},
+ {file = "tqdm-4.66.1.tar.gz", hash = "sha256:d88e651f9db8d8551a62556d3cff9e3034274ca5d66e93197cf2490e2dcb69c7"},
+]
+
+[package.dependencies]
+colorama = {version = "*", markers = "platform_system == \"Windows\""}
+
+[package.extras]
+dev = ["pytest (>=6)", "pytest-cov", "pytest-timeout", "pytest-xdist"]
+notebook = ["ipywidgets (>=6)"]
+slack = ["slack-sdk"]
+telegram = ["requests"]
+
+[[package]]
+name = "traitlets"
+version = "5.14.0"
+description = "Traitlets Python configuration system"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "traitlets-5.14.0-py3-none-any.whl", hash = "sha256:f14949d23829023013c47df20b4a76ccd1a85effb786dc060f34de7948361b33"},
+ {file = "traitlets-5.14.0.tar.gz", hash = "sha256:fcdaa8ac49c04dfa0ed3ee3384ef6dfdb5d6f3741502be247279407679296772"},
+]
+
+[package.extras]
+docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"]
+test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<7.5)", "pytest-mock", "pytest-mypy-testing"]
+
+[[package]]
+name = "triton"
+version = "2.1.0"
+description = "A language and compiler for custom Deep Learning operations"
+category = "main"
+optional = false
+python-versions = "*"
+files = [
+ {file = "triton-2.1.0-0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:66439923a30d5d48399b08a9eae10370f6c261a5ec864a64983bae63152d39d7"},
+ {file = "triton-2.1.0-0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:919b06453f0033ea52c13eaf7833de0e57db3178d23d4e04f9fc71c4f2c32bf8"},
+ {file = "triton-2.1.0-0-cp37-cp37m-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ae4bb8a91de790e1866405211c4d618379781188f40d5c4c399766914e84cd94"},
+ {file = "triton-2.1.0-0-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:39f6fb6bdccb3e98f3152e3fbea724f1aeae7d749412bbb1fa9c441d474eba26"},
+ {file = "triton-2.1.0-0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:21544e522c02005a626c8ad63d39bdff2f31d41069592919ef281e964ed26446"},
+ {file = "triton-2.1.0-0-pp37-pypy37_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:143582ca31dd89cd982bd3bf53666bab1c7527d41e185f9e3d8a3051ce1b663b"},
+ {file = "triton-2.1.0-0-pp38-pypy38_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:82fc5aeeedf6e36be4e4530cbdcba81a09d65c18e02f52dc298696d45721f3bd"},
+ {file = "triton-2.1.0-0-pp39-pypy39_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:81a96d110a738ff63339fc892ded095b31bd0d205e3aace262af8400d40b6fa8"},
+]
+
+[package.dependencies]
+filelock = "*"
+
+[package.extras]
+build = ["cmake (>=3.18)", "lit"]
+tests = ["autopep8", "flake8", "isort", "numpy", "pytest", "scipy (>=1.7.1)"]
+tutorials = ["matplotlib", "pandas", "tabulate"]
+
+[[package]]
+name = "types-python-dateutil"
+version = "2.8.19.14"
+description = "Typing stubs for python-dateutil"
+category = "main"
+optional = false
+python-versions = "*"
+files = [
+ {file = "types-python-dateutil-2.8.19.14.tar.gz", hash = "sha256:1f4f10ac98bb8b16ade9dbee3518d9ace017821d94b057a425b069f834737f4b"},
+ {file = "types_python_dateutil-2.8.19.14-py3-none-any.whl", hash = "sha256:f977b8de27787639986b4e28963263fd0e5158942b3ecef91b9335c130cb1ce9"},
+]
+
+[[package]]
+name = "typing-extensions"
+version = "4.9.0"
+description = "Backported and Experimental Type Hints for Python 3.8+"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "typing_extensions-4.9.0-py3-none-any.whl", hash = "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"},
+ {file = "typing_extensions-4.9.0.tar.gz", hash = "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783"},
+]
+
+[[package]]
+name = "tzdata"
+version = "2023.3"
+description = "Provider of IANA time zone data"
+category = "main"
+optional = false
+python-versions = ">=2"
+files = [
+ {file = "tzdata-2023.3-py2.py3-none-any.whl", hash = "sha256:7e65763eef3120314099b6939b5546db7adce1e7d6f2e179e3df563c70511eda"},
+ {file = "tzdata-2023.3.tar.gz", hash = "sha256:11ef1e08e54acb0d4f95bdb1be05da659673de4acbd21bf9c69e94cc5e907a3a"},
+]
+
+[[package]]
+name = "tzlocal"
+version = "5.2"
+description = "tzinfo object for the local timezone"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "tzlocal-5.2-py3-none-any.whl", hash = "sha256:49816ef2fe65ea8ac19d19aa7a1ae0551c834303d5014c6d5a62e4cbda8047b8"},
+ {file = "tzlocal-5.2.tar.gz", hash = "sha256:8d399205578f1a9342816409cc1e46a93ebd5755e39ea2d85334bea911bf0e6e"},
+]
+
+[package.dependencies]
+tzdata = {version = "*", markers = "platform_system == \"Windows\""}
+
+[package.extras]
+devenv = ["check-manifest", "pytest (>=4.3)", "pytest-cov", "pytest-mock (>=3.3)", "zest.releaser"]
+
+[[package]]
+name = "uri-template"
+version = "1.3.0"
+description = "RFC 6570 URI Template Processor"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"},
+ {file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"},
+]
+
+[package.extras]
+dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake8-commas", "flake8-comprehensions", "flake8-continuation", "flake8-datetimez", "flake8-docstrings", "flake8-import-order", "flake8-literal", "flake8-modern-annotations", "flake8-noqa", "flake8-pyproject", "flake8-requirements", "flake8-typechecking-import", "flake8-use-fstring", "mypy", "pep8-naming", "types-PyYAML"]
+
+[[package]]
+name = "urllib3"
+version = "2.1.0"
+description = "HTTP library with thread-safe connection pooling, file post, and more."
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "urllib3-2.1.0-py3-none-any.whl", hash = "sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3"},
+ {file = "urllib3-2.1.0.tar.gz", hash = "sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54"},
+]
+
+[package.extras]
+brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"]
+socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"]
+zstd = ["zstandard (>=0.18.0)"]
+
+[[package]]
+name = "wandb"
+version = "0.16.1"
+description = "A CLI and library for interacting with the Weights & Biases API."
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "wandb-0.16.1-py3-none-any.whl", hash = "sha256:1d7423f92520984585bae9693bb637ae08d3e0c1d75ad4b34215bc44431f114c"},
+ {file = "wandb-0.16.1.tar.gz", hash = "sha256:ffe6e8dd8cc8fcd72010c1246fb3d6d226b37c4f111f3f94308a1c0ae28a2fec"},
+]
+
+[package.dependencies]
+appdirs = ">=1.4.3"
+Click = ">=7.1,<8.0.0 || >8.0.0"
+docker-pycreds = ">=0.4.0"
+GitPython = ">=1.0.0,<3.1.29 || >3.1.29"
+protobuf = {version = ">=3.19.0,<4.21.0 || >4.21.0,<5", markers = "python_version > \"3.9\" or sys_platform != \"linux\""}
+psutil = ">=5.0.0"
+PyYAML = "*"
+requests = ">=2.0.0,<3"
+sentry-sdk = ">=1.0.0"
+setproctitle = "*"
+setuptools = "*"
+
+[package.extras]
+async = ["httpx (>=0.23.0)"]
+aws = ["boto3"]
+azure = ["azure-identity", "azure-storage-blob"]
+core = ["wandb-core (>=0.17.0b2)"]
+gcp = ["google-cloud-storage"]
+kubeflow = ["google-cloud-storage", "kubernetes", "minio", "sh"]
+launch = ["PyYAML (>=6.0.0)", "awscli", "azure-containerregistry", "azure-identity", "azure-storage-blob", "boto3", "botocore", "chardet", "google-auth", "google-cloud-aiplatform", "google-cloud-artifact-registry", "google-cloud-compute", "google-cloud-storage", "iso8601", "kubernetes", "kubernetes-asyncio", "nbconvert", "nbformat", "optuna", "typing-extensions"]
+media = ["bokeh", "moviepy", "numpy", "pillow", "plotly", "rdkit-pypi", "soundfile"]
+models = ["cloudpickle"]
+perf = ["orjson"]
+sweeps = ["sweeps (>=0.2.0)"]
+
+[[package]]
+name = "wcwidth"
+version = "0.2.12"
+description = "Measures the displayed width of unicode strings in a terminal"
+category = "main"
+optional = false
+python-versions = "*"
+files = [
+ {file = "wcwidth-0.2.12-py2.py3-none-any.whl", hash = "sha256:f26ec43d96c8cbfed76a5075dac87680124fa84e0855195a6184da9c187f133c"},
+ {file = "wcwidth-0.2.12.tar.gz", hash = "sha256:f01c104efdf57971bcb756f054dd58ddec5204dd15fa31d6503ea57947d97c02"},
+]
+
+[[package]]
+name = "webcolors"
+version = "1.13"
+description = "A library for working with the color formats defined by HTML and CSS."
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "webcolors-1.13-py3-none-any.whl", hash = "sha256:29bc7e8752c0a1bd4a1f03c14d6e6a72e93d82193738fa860cbff59d0fcc11bf"},
+ {file = "webcolors-1.13.tar.gz", hash = "sha256:c225b674c83fa923be93d235330ce0300373d02885cef23238813b0d5668304a"},
+]
+
+[package.extras]
+docs = ["furo", "sphinx", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-notfound-page", "sphinxext-opengraph"]
+tests = ["pytest", "pytest-cov"]
+
+[[package]]
+name = "webencodings"
+version = "0.5.1"
+description = "Character encoding aliases for legacy web content"
+category = "main"
+optional = false
+python-versions = "*"
+files = [
+ {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"},
+ {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"},
+]
+
+[[package]]
+name = "websocket-client"
+version = "1.7.0"
+description = "WebSocket client for Python with low level API options"
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "websocket-client-1.7.0.tar.gz", hash = "sha256:10e511ea3a8c744631d3bd77e61eb17ed09304c413ad42cf6ddfa4c7787e8fe6"},
+ {file = "websocket_client-1.7.0-py3-none-any.whl", hash = "sha256:f4c3d22fec12a2461427a29957ff07d35098ee2d976d3ba244e688b8b4057588"},
+]
+
+[package.extras]
+docs = ["Sphinx (>=6.0)", "sphinx-rtd-theme (>=1.1.0)"]
+optional = ["python-socks", "wsaccel"]
+test = ["websockets"]
+
+[[package]]
+name = "werkzeug"
+version = "3.0.1"
+description = "The comprehensive WSGI web application library."
+category = "main"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "werkzeug-3.0.1-py3-none-any.whl", hash = "sha256:90a285dc0e42ad56b34e696398b8122ee4c681833fb35b8334a095d82c56da10"},
+ {file = "werkzeug-3.0.1.tar.gz", hash = "sha256:507e811ecea72b18a404947aded4b3390e1db8f826b494d76550ef45bb3b1dcc"},
+]
+
+[package.dependencies]
+MarkupSafe = ">=2.1.1"
+
+[package.extras]
+watchdog = ["watchdog (>=2.3)"]
+
+[[package]]
+name = "widgetsnbextension"
+version = "4.0.9"
+description = "Jupyter interactive widgets for Jupyter Notebook"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "widgetsnbextension-4.0.9-py3-none-any.whl", hash = "sha256:91452ca8445beb805792f206e560c1769284267a30ceb1cec9f5bcc887d15175"},
+ {file = "widgetsnbextension-4.0.9.tar.gz", hash = "sha256:3c1f5e46dc1166dfd40a42d685e6a51396fd34ff878742a3e47c6f0cc4a2a385"},
+]
+
+[metadata]
+lock-version = "2.0"
+python-versions = "^3.10"
+content-hash = "459b7d81e992c0c8cf92210f9bb94937cbaf8524b7bdd112018e4c7b85cdcfc2"
diff --git a/classification/pyproject.toml b/classification/pyproject.toml
new file mode 100644
index 0000000..a916502
--- /dev/null
+++ b/classification/pyproject.toml
@@ -0,0 +1,33 @@
+[tool.poetry]
+name = "thesis"
+version = "0.1.0"
+description = ""
+authors = ["Tobias Eidelpes "]
+readme = "README.md"
+
+[tool.poetry.dependencies]
+python = "^3.10"
+flask = "^2.0.3"
+apscheduler = "^3.10.0"
+albumentations = "^1.3.0"
+pandas = "^1.1.5"
+onnxruntime = "^1.8.0"
+opencv-python = "^4.7.0"
+torch = "^2.1.2"
+torchvision = "^0.16.2"
+numpy = "^1.18.0"
+scipy = "^1.11.4"
+scikit-learn = "^1.3.2"
+Pillow = "^10.1.0"
+argparse = "^1.1"
+matplotlib = "^3.3.4"
+jupyter = "^1.0.0"
+wandb = "^0.16.1"
+seaborn = "^0.13.0"
+onnx = "^1.15.0"
+tqdm = "^4.66.1"
+
+
+[build-system]
+requires = ["poetry-core"]
+build-backend = "poetry.core.masonry.api"
\ No newline at end of file
diff --git a/classification/shell.nix b/classification/shell.nix
new file mode 100644
index 0000000..e6a06cd
--- /dev/null
+++ b/classification/shell.nix
@@ -0,0 +1,11 @@
+{ pkgs ? import {} }:
+
+pkgs.mkShell {
+ buildInputs = [
+ pkgs.python3
+ pkgs.poetry
+ pkgs.libGL
+ pkgs.glib
+ ];
+ LD_LIBRARY_PATH = "$LD_LIBRARY_PATH:${pkgs.stdenv.cc.cc.lib}/lib:${pkgs.glib.out}/lib:${pkgs.libGL}/lib";
+}
diff --git a/presentation/graphics/APpt5-pt95-final.pdf b/presentation/graphics/APpt5-pt95-final.pdf
new file mode 100644
index 0000000..e9cc97f
Binary files /dev/null and b/presentation/graphics/APpt5-pt95-final.pdf differ
diff --git a/presentation/graphics/APpt5-pt95.pdf b/presentation/graphics/APpt5-pt95.pdf
new file mode 100644
index 0000000..bec6344
Binary files /dev/null and b/presentation/graphics/APpt5-pt95.pdf differ
diff --git a/presentation/graphics/classifier-cam-cropped.pdf b/presentation/graphics/classifier-cam-cropped.pdf
new file mode 100644
index 0000000..23e010f
Binary files /dev/null and b/presentation/graphics/classifier-cam-cropped.pdf differ
diff --git a/presentation/graphics/classifier-cam.pdf b/presentation/graphics/classifier-cam.pdf
new file mode 100644
index 0000000..886f213
Binary files /dev/null and b/presentation/graphics/classifier-cam.pdf differ
diff --git a/presentation/graphics/classifier-hyp-folds-roc.pdf b/presentation/graphics/classifier-hyp-folds-roc.pdf
new file mode 100644
index 0000000..fa59366
Binary files /dev/null and b/presentation/graphics/classifier-hyp-folds-roc.pdf differ
diff --git a/presentation/graphics/classifier-hyp-folds.pdf b/presentation/graphics/classifier-hyp-folds.pdf
new file mode 100644
index 0000000..8f194da
Binary files /dev/null and b/presentation/graphics/classifier-hyp-folds.pdf differ
diff --git a/presentation/graphics/classifier-hyp-metrics.pdf b/presentation/graphics/classifier-hyp-metrics.pdf
new file mode 100644
index 0000000..b8cada6
Binary files /dev/null and b/presentation/graphics/classifier-hyp-metrics.pdf differ
diff --git a/presentation/graphics/classifier-metrics-acc.pdf b/presentation/graphics/classifier-metrics-acc.pdf
new file mode 100644
index 0000000..9c934be
Binary files /dev/null and b/presentation/graphics/classifier-metrics-acc.pdf differ
diff --git a/presentation/graphics/classifier-metrics-loss.pdf b/presentation/graphics/classifier-metrics-loss.pdf
new file mode 100644
index 0000000..33c3033
Binary files /dev/null and b/presentation/graphics/classifier-metrics-loss.pdf differ
diff --git a/presentation/graphics/classifier-metrics.pdf b/presentation/graphics/classifier-metrics.pdf
new file mode 100644
index 0000000..b769bf4
Binary files /dev/null and b/presentation/graphics/classifier-metrics.pdf differ
diff --git a/presentation/graphics/houseplant.jpg b/presentation/graphics/houseplant.jpg
new file mode 100644
index 0000000..5acc82c
Binary files /dev/null and b/presentation/graphics/houseplant.jpg differ
diff --git a/presentation/graphics/model_fitness.pdf b/presentation/graphics/model_fitness.pdf
new file mode 100644
index 0000000..56fa22c
Binary files /dev/null and b/presentation/graphics/model_fitness.pdf differ
diff --git a/presentation/graphics/model_fitness_final.pdf b/presentation/graphics/model_fitness_final.pdf
new file mode 100644
index 0000000..85a60d4
Binary files /dev/null and b/presentation/graphics/model_fitness_final.pdf differ
diff --git a/presentation/graphics/setup.pdf b/presentation/graphics/setup.pdf
new file mode 100644
index 0000000..82134d0
Binary files /dev/null and b/presentation/graphics/setup.pdf differ
diff --git a/presentation/graphics/val_box_obj_loss.pdf b/presentation/graphics/val_box_obj_loss.pdf
new file mode 100644
index 0000000..09d030e
Binary files /dev/null and b/presentation/graphics/val_box_obj_loss.pdf differ
diff --git a/presentation/graphics/wilted_007.jpg b/presentation/graphics/wilted_007.jpg
new file mode 100644
index 0000000..ff5fb62
Binary files /dev/null and b/presentation/graphics/wilted_007.jpg differ
diff --git a/presentation/presentation.nav b/presentation/presentation.nav
new file mode 100644
index 0000000..75fd4fa
--- /dev/null
+++ b/presentation/presentation.nav
@@ -0,0 +1,71 @@
+\headcommand {\slideentry {0}{0}{1}{1/1}{}{0}}
+\headcommand {\beamer@framepages {1}{1}}
+\headcommand {\beamer@sectionpages {1}{1}}
+\headcommand {\beamer@subsectionpages {1}{1}}
+\headcommand {\sectionentry {1}{Introduction}{2}{Introduction}{0}}
+\headcommand {\slideentry {1}{0}{1}{2/5}{}{0}}
+\headcommand {\beamer@framepages {2}{5}}
+\headcommand {\slideentry {1}{0}{2}{6/8}{}{0}}
+\headcommand {\beamer@framepages {6}{8}}
+\headcommand {\beamer@sectionpages {2}{8}}
+\headcommand {\beamer@subsectionpages {2}{8}}
+\headcommand {\sectionentry {2}{Methodological Approach}{9}{Methodological Approach}{0}}
+\headcommand {\slideentry {2}{0}{1}{9/9}{}{0}}
+\headcommand {\beamer@framepages {9}{9}}
+\headcommand {\beamer@sectionpages {9}{9}}
+\headcommand {\beamer@subsectionpages {9}{9}}
+\headcommand {\sectionentry {3}{Prototype Design}{10}{Prototype Design}{0}}
+\headcommand {\slideentry {3}{0}{1}{10/14}{}{0}}
+\headcommand {\beamer@framepages {10}{14}}
+\headcommand {\slideentry {3}{0}{2}{15/15}{}{0}}
+\headcommand {\beamer@framepages {15}{15}}
+\headcommand {\beamer@sectionpages {10}{15}}
+\headcommand {\beamer@subsectionpages {10}{15}}
+\headcommand {\sectionentry {4}{Prototype Implementation}{16}{Prototype Implementation}{0}}
+\headcommand {\slideentry {4}{0}{1}{16/16}{}{0}}
+\headcommand {\beamer@framepages {16}{16}}
+\headcommand {\slideentry {4}{0}{2}{17/17}{}{0}}
+\headcommand {\beamer@framepages {17}{17}}
+\headcommand {\slideentry {4}{0}{3}{18/18}{}{0}}
+\headcommand {\beamer@framepages {18}{18}}
+\headcommand {\slideentry {4}{0}{4}{19/24}{}{0}}
+\headcommand {\beamer@framepages {19}{24}}
+\headcommand {\slideentry {4}{0}{5}{25/25}{}{0}}
+\headcommand {\beamer@framepages {25}{25}}
+\headcommand {\slideentry {4}{0}{6}{26/26}{}{0}}
+\headcommand {\beamer@framepages {26}{26}}
+\headcommand {\slideentry {4}{0}{7}{27/27}{}{0}}
+\headcommand {\beamer@framepages {27}{27}}
+\headcommand {\slideentry {4}{0}{8}{28/28}{}{0}}
+\headcommand {\beamer@framepages {28}{28}}
+\headcommand {\slideentry {4}{0}{9}{29/32}{}{0}}
+\headcommand {\beamer@framepages {29}{32}}
+\headcommand {\slideentry {4}{0}{10}{33/33}{}{0}}
+\headcommand {\beamer@framepages {33}{33}}
+\headcommand {\beamer@sectionpages {16}{33}}
+\headcommand {\beamer@subsectionpages {16}{33}}
+\headcommand {\sectionentry {5}{Evaluation}{34}{Evaluation}{0}}
+\headcommand {\slideentry {5}{0}{1}{34/35}{}{0}}
+\headcommand {\beamer@framepages {34}{35}}
+\headcommand {\slideentry {5}{0}{2}{36/36}{}{0}}
+\headcommand {\beamer@framepages {36}{36}}
+\headcommand {\slideentry {5}{0}{3}{37/39}{}{0}}
+\headcommand {\beamer@framepages {37}{39}}
+\headcommand {\beamer@sectionpages {34}{39}}
+\headcommand {\beamer@subsectionpages {34}{39}}
+\headcommand {\sectionentry {6}{Conclusion}{40}{Conclusion}{0}}
+\headcommand {\slideentry {6}{0}{1}{40/44}{}{0}}
+\headcommand {\beamer@framepages {40}{44}}
+\headcommand {\slideentry {6}{0}{2}{45/52}{}{0}}
+\headcommand {\beamer@framepages {45}{52}}
+\headcommand {\slideentry {6}{0}{3}{53/53}{}{0}}
+\headcommand {\beamer@framepages {53}{53}}
+\headcommand {\slideentry {6}{0}{4}{54/54}{}{0}}
+\headcommand {\beamer@framepages {54}{54}}
+\headcommand {\slideentry {6}{0}{5}{55/55}{}{0}}
+\headcommand {\beamer@framepages {55}{55}}
+\headcommand {\beamer@partpages {1}{55}}
+\headcommand {\beamer@subsectionpages {40}{55}}
+\headcommand {\beamer@sectionpages {40}{55}}
+\headcommand {\beamer@documentpages {55}}
+\headcommand {\gdef \inserttotalframenumber {24}}
diff --git a/presentation/presentation.pdf b/presentation/presentation.pdf
new file mode 100644
index 0000000..9877fe4
Binary files /dev/null and b/presentation/presentation.pdf differ
diff --git a/presentation/presentation.snm b/presentation/presentation.snm
new file mode 100644
index 0000000..c7d4e01
--- /dev/null
+++ b/presentation/presentation.snm
@@ -0,0 +1,6 @@
+\beamer@slide {fig:design}{15}
+\beamer@slide {tab:yolo-metrics}{34}
+\beamer@slide {tab:yolo-metrics-hyp}{34}
+\beamer@slide {fig:classifier-cam}{54}
+\beamer@slide {tab:model-metrics}{55}
+\beamer@slide {tab:model-metrics-hyp}{55}
diff --git a/presentation/presentation.tex b/presentation/presentation.tex
new file mode 100644
index 0000000..b5058c6
--- /dev/null
+++ b/presentation/presentation.tex
@@ -0,0 +1,390 @@
+\documentclass{beamer}
+
+\beamertemplatenavigationsymbolsempty
+
+\usetheme{default}
+\usecolortheme{dolphin}
+
+\usepackage{graphicx}
+\usepackage{caption}
+\usepackage{tikz}
+\usepackage{dsfont}
+\usepackage{siunitx}
+\usepackage{booktabs}
+\usepackage[labelformat=empty]{caption}
+\usetikzlibrary{shapes,arrows}
+
+% Define block styles
+\tikzstyle{decision} = [diamond, draw, fill=blue!20, text width=4.5em, text badly centered, node distance=3cm, inner sep=0pt]
+\tikzstyle{block} = [rectangle, draw, fill=blue!20, text width=5em, text centered, rounded corners, minimum height=4em]
+\tikzstyle{line} = [draw, -latex']
+\tikzstyle{cloud} = [draw, ellipse,fill=red!20, node distance=3cm, minimum height=2em]
+
+\setbeamerfont{caption}{size=\tiny}
+
+\begin{document}
+
+\title[Plant Detection and State Classification]{Plant Detection and
+ State Classification with Machine Learning}
+\author{Tobias Eidelpes}
+\date{March 12, 2024}
+
+\begin{frame}
+ \maketitle
+\end{frame}
+
+\section{Introduction}
+
+\begin{frame}
+ \frametitle{Problem Statement}
+ \begin{itemize}
+ \setlength{\itemsep}{1.1\baselineskip}
+ \item Automated detection of water stress \pause
+ \item Automated watering of household plants \pause
+ \item Decision-making \emph{in the field} \pause
+ \item No research so far in this context
+ \end{itemize}
+\end{frame}
+
+\begin{frame}
+ \frametitle{Research Questions}
+ \begin{enumerate}
+ \setlength{\itemsep}{1.1\baselineskip}
+ \item How well does the model work in theory and how well in
+ practice? \pause
+ \item What are possible reasons for it to work/not work? \pause
+ \item What are possible improvements to the system in the future?
+ \end{enumerate}
+\end{frame}
+
+\section{Methodological Approach}
+
+\begin{frame}
+ \frametitle{Methods}
+ \begin{columns}[c]
+ \column{.5\textwidth}
+ \begin{enumerate}
+ \setlength{\itemsep}{1.1\baselineskip}
+ \item Literature Review
+ \item Dataset Curation
+ \item Model Training
+ \item Optimization
+ \item Deployment
+ \item Evaluation
+ \end{enumerate}
+ \column{.5\textwidth}
+ \begin{center}
+ \includegraphics[width=\textwidth]{graphics/wilted\_007.jpg}
+ \end{center}
+ \end{columns}
+\end{frame}
+
+\section{Prototype Design}
+
+\begin{frame}
+ \frametitle{Prototype Design: Requirements} \pause
+ \begin{itemize}
+ \setlength{\itemsep}{1.1\baselineskip}
+ \item Detect and Classify \pause
+ \item Publish Results via REST-API \pause
+ \item Reasonable Inference Time \pause
+ \item Reasonable Model Performance
+ \end{itemize}
+\end{frame}
+
+\begin{frame}
+ \frametitle{Prototype Design}
+ \begin{figure}[htbp]
+ \centerline{\includegraphics[width=0.9\textwidth]{graphics/setup.pdf}}
+ \label{fig:design}
+ \end{figure}
+\end{frame}
+
+\section{Prototype Implementation}
+
+\begin{frame}
+ \frametitle{Prototype Implementation: YOLOv7n}
+ \begin{minipage}[bt]{.49\textwidth}
+ \begin{itemize}
+ \setlength{\itemsep}{1.1\baselineskip}
+ \item Pretrained on COCO
+ \item OID classes \emph{Houseplant} and \emph{Plant}
+ \item Training Set
+ \begin{itemize}
+ \item \num{79204} images
+ \item \num{284130} bounding boxes
+ \end{itemize}
+ \item Validation Set
+ \begin{itemize}
+ \item \num{3091} images
+ \item \num{4092} bounding boxes
+ \end{itemize}
+ \end{itemize}
+ \end{minipage}
+ \begin{minipage}[bt]{.49\textwidth}
+ \vspace{.5cm}
+ \begin{figure}
+ \begin{center}
+ \includegraphics[width=.85\textwidth]{graphics/houseplant.jpg}
+ \caption{Earthy Tones For Fallsurlevif by Flickr User decor8
+ under CC BY 2.0}
+ \end{center}
+ \end{figure}
+ \end{minipage}
+\end{frame}
+
+\begin{frame}
+ \frametitle{Prototype Implementation: YOLOv7n}
+ \begin{figure}[htbp]
+ \begin{center}
+ \includegraphics[width=\textwidth]{graphics/model_fitness.pdf}
+ \end{center}
+ \end{figure}
+\end{frame}
+
+\begin{frame}
+ \frametitle{Prototype Implementation: YOLOv7n}
+ \begin{figure}[htbp]
+ \begin{center}
+ \includegraphics[width=\textwidth]{graphics/val\_box\_obj\_loss.pdf}
+ \end{center}
+ \end{figure}
+\end{frame}
+
+\begin{frame}
+ \frametitle{YOLOv7n Hyperparameter Optimization} \pause
+ \begin{itemize}
+ \setlength{\itemsep}{1.1\baselineskip}
+ \item Mutate 26 out of 30 hyperparameters \pause
+ \item Parent chosen randomly from top five previous generations \pause
+ \item 3 epochs per iteration \pause
+ \item 87 iterations \pause
+ \item Best with 0.6076 fitness
+ \end{itemize}
+\end{frame}
+
+\begin{frame}
+ \frametitle{YOLOv7n Hyperparameter Optimization}
+ \begin{figure}[htbp]
+ \begin{center}
+ \includegraphics[width=\textwidth]{graphics/model_fitness\_final.pdf}
+ \end{center}
+ \end{figure}
+\end{frame}
+
+\begin{frame}
+ \frametitle{Prototype Implementation: ResNet-50}
+ \begin{minipage}[bt]{.49\textwidth}
+ \begin{itemize}
+ \setlength{\itemsep}{1.1\baselineskip}
+ \item Pretrained on ImageNet
+ \item Training Set
+ \begin{itemize}
+ \item \num{384} healthy
+ \item \num{384} stressed
+ \end{itemize}
+ \item Validation Set
+ \begin{itemize}
+ \item \num{68} healthy
+ \item \num{68} stressed
+ \end{itemize}
+ \end{itemize}
+ \end{minipage}
+ \begin{minipage}[bt]{.49\textwidth}
+ \begin{center}
+ \includegraphics[width=\textwidth]{graphics/classifier-cam-cropped.pdf}
+ \end{center}
+ \end{minipage}
+\end{frame}
+
+\begin{frame}
+ \frametitle{Prototype Implementation: ResNet-50 Accuracy}
+ \begin{figure}[htbp]
+ \begin{center}
+ \includegraphics[width=\textwidth]{graphics/classifier-metrics-acc.pdf}
+ \caption{\normalsize Maximum validation accuracy of 0.9118 at epoch 27}
+ \end{center}
+ \end{figure}
+\end{frame}
+
+\begin{frame}
+ \frametitle{Prototype Implementation: ResNet-50 Loss}
+ \begin{figure}[htbp]
+ \begin{center}
+ \includegraphics[width=\textwidth]{graphics/classifier-metrics-loss.pdf}
+ \end{center}
+ \end{figure}
+\end{frame}
+
+\begin{frame}
+ \frametitle{ResNet-50 Hyperparameter Optimization}
+ \begin{itemize}
+ \setlength{\itemsep}{1.1\baselineskip}
+ \item Random search \pause
+ \item 10 epochs per iteration \pause
+ \item 138 iterations \pause
+ \item Best with 0.9783 $\mathrm{F}_{1}$-score
+ \end{itemize}
+\end{frame}
+
+\begin{frame}
+ \frametitle{ResNet-50 Hyperparameter Optimization}
+ \begin{figure}[htbp]
+ \centerline{\includegraphics[width=\textwidth]{graphics/classifier-hyp-metrics.pdf}}
+ \caption{\normalsize Learning rate and batch size effect on
+ $\mathrm{F}_{1}$-score}
+ \end{figure}
+\end{frame}
+
+\section{Evaluation}
+
+\begin{frame}
+ \frametitle{YOLOv7n Evaluation}
+ \begin{itemize}
+ \setlength{\itemsep}{1.1\baselineskip}
+ \item Test Set
+ \begin{itemize}
+ \item \num{9000} images
+ \item \num{12238} bounding boxes \pause
+ \end{itemize}
+ \end{itemize}
+ \begin{table}[h]
+ \centering
+ \begin{tabular}{lrrrr}
+ \toprule
+ {} & Precision & Recall & $\mathrm{F}_1$-score & Support \\
+ \midrule
+ Plant & \num{0.5476} & \num{0.7379} & \num{0.6286} & \num{12238} \\
+ \bottomrule
+ \end{tabular}
+ \caption{\scriptsize Results for the non-optimized object detection model}
+ \label{tab:yolo-metrics}
+ \end{table}
+ \begin{table}[h]
+ \centering
+ \begin{tabular}{lrrrr}
+ \toprule
+ {} & Precision & Recall & $\mathrm{F}_1$-score & Support \\
+ \midrule
+ Plant & \num{0.6334} & \num{0.7028} & \num{0.6663} & \num{12238} \\
+ \bottomrule
+ \end{tabular}
+ \caption{\scriptsize Results for the optimized object detection model}
+ \label{tab:yolo-metrics-hyp}
+ \end{table}
+\end{frame}
+
+\begin{frame}
+ \frametitle{ResNet-50 Evaluation}
+ \begin{center}
+ \begin{figure}[htbp]
+ \includegraphics[width=0.65\textwidth]{graphics/classifier-hyp-folds.pdf}
+ \caption{\scriptsize ROC curves and AUC for classifier 10-fold
+ cross-validation}
+ \end{figure}
+ \end{center}
+\end{frame}
+
+\begin{frame}
+ \frametitle{Aggregate Model Evaluation}
+ \begin{itemize}
+ \setlength{\itemsep}{1.1\baselineskip}
+ \item Pre-annotated Test Set
+ \begin{itemize}
+ \item \num{640} images
+ \item \num{766} bounding boxes healthy
+ \item \num{494} bounding boxes stressed \pause
+ \end{itemize}
+ \item Non-optimized model $\mathrm{mAP} = 0.3581$ \pause
+ \item Optimized model $\mathrm{mAP} = 0.3838$
+ \end{itemize}
+\end{frame}
+
+\section{Conclusion}
+
+\begin{frame}
+ \frametitle{Limitations and Conclusions}
+ \begin{itemize}
+ \setlength{\itemsep}{0.75\baselineskip}
+ \item I am \emph{not} an expert labeler! \pause
+ \item Object detection performs well (mAP 0.5727) \pause
+ \item Optimized detector worse than non-optimized \pause
+ \item Inconsistent ground truth \pause
+ \item Robust classification
+ \end{itemize}
+\end{frame}
+
+\begin{frame}
+ \frametitle{Research Questions Revisited}
+ \begin{enumerate}
+ \setlength{\itemsep}{1.1\baselineskip}
+ \item How well does the model work in theory and how well in practice? \pause
+ \begin{itemize}
+ \item Plant detection comparable to benchmarks \pause
+ \item Impressive stress classification \pause
+ \end{itemize}
+ \item What are possible reasons for it to work/not work? \pause
+ \begin{itemize}
+ \item Dataset curation \pause
+ \end{itemize}
+ \item What are possible improvements to the system in the future? \pause
+ \begin{itemize}
+ \item Use more computational resources \pause
+ \item Expert labeling
+ \end{itemize}
+ \end{enumerate}
+\end{frame}
+
+\begin{frame}
+ \centering
+ \Large
+ Thank you for your attention!
+\end{frame}
+
+\begin{frame}
+ \frametitle{ResNet-50 CAM}
+ \begin{figure}[htbp]
+ \centerline{\includegraphics[width=0.9\textwidth]{graphics/classifier-cam.pdf}}
+ \caption[]{\label{fig:classifier-cam} Top-right: CAM for
+ \emph{healthy}. Bot-right: CAM for \emph{stressed}}
+ \end{figure}
+\end{frame}
+
+\begin{frame}
+ \frametitle{Aggregate Model Evaluation}
+ \begin{table}
+ \centering
+ \begin{tabular}{lrrrr}
+ \toprule
+ {} & Precision & Recall & $\mathrm{F}_{1}$-score & Support \\
+ \midrule
+ Healthy & \num{0.665} & \num{0.554} & \num{0.604} & \num{766} \\
+ Stressed & \num{0.639} & \num{0.502} & \num{0.562} & \num{494} \\
+ Weighted Avg & \num{0.655} & \num{0.533} & \num{0.588} & \num{1260} \\
+ \bottomrule
+ \end{tabular}
+ \caption{Metrics for the non-optimized aggregate model}
+ \label{tab:model-metrics}
+ \end{table}
+ \begin{table}
+ \centering
+ \begin{tabular}{lrrrr}
+ \toprule
+ {} & Precision & Recall & $\mathrm{F}_{1}$-score & Support \\
+ \midrule
+ Healthy & 0.711 & 0.555 & 0.623 & 766 \\
+ Stressed & 0.570 & 0.623 & 0.596 & 494 \\
+ Weighted Avg & 0.656 & 0.582 & 0.612 & 1260 \\
+ \bottomrule
+ \end{tabular}
+ \caption{Metrics for the optimized aggregate model}
+ \label{tab:model-metrics-hyp}
+ \end{table}
+\end{frame}
+
+
+\end{document}
+%%% Local Variables:
+%%% mode: LaTeX
+%%% TeX-master: t
+%%% End:
diff --git a/thesis/graphics/classifier-hyp-metrics.pdf b/thesis/graphics/classifier-hyp-metrics.pdf
index 9e1968b..b8cada6 100644
Binary files a/thesis/graphics/classifier-hyp-metrics.pdf and b/thesis/graphics/classifier-hyp-metrics.pdf differ
diff --git a/thesis/graphics/classifier-metrics-acc.pdf b/thesis/graphics/classifier-metrics-acc.pdf
new file mode 100644
index 0000000..9c934be
Binary files /dev/null and b/thesis/graphics/classifier-metrics-acc.pdf differ
diff --git a/thesis/graphics/classifier-metrics-loss.pdf b/thesis/graphics/classifier-metrics-loss.pdf
new file mode 100644
index 0000000..33c3033
Binary files /dev/null and b/thesis/graphics/classifier-metrics-loss.pdf differ
diff --git a/thesis/graphics/classifier-metrics.pdf b/thesis/graphics/classifier-metrics.pdf
index 8ffcffc..27f24c9 100644
Binary files a/thesis/graphics/classifier-metrics.pdf and b/thesis/graphics/classifier-metrics.pdf differ
diff --git a/thesis/thesis.pdf b/thesis/thesis.pdf
index a0b7fec..b1258b7 100644
Binary files a/thesis/thesis.pdf and b/thesis/thesis.pdf differ
diff --git a/thesis/thesis.tex b/thesis/thesis.tex
index 532f369..baaa823 100644
--- a/thesis/thesis.tex
+++ b/thesis/thesis.tex
@@ -64,7 +64,7 @@
\setadvisor{Ao.Univ.-Prof. Dr.}{Horst Eidenberger}{}{male}
\setregnumber{01527193}
-\setdate{27}{12}{2023} % Set date with 3 arguments: {day}{month}{year}.
+\setdate{30}{12}{2023} % Set date with 3 arguments: {day}{month}{year}.
\settitle{\thesistitle}{Plant Detection and State Classification with Machine Learning} % Sets English and German version of the title (both can be English or German).
% Select the thesis type: bachelor / master / doctor / phd-school.
@@ -190,36 +190,90 @@ Challenge}
\begin{kurzfassung}
Wassermangel in Zimmerpflanzen kann ihr Wachstum negativ
- beeinflussen. Derzeitige Lösungen zur Überwachung von Wasserstress
- sind hauptsächlich für landwirtschaftliche Anwendungen
- vorgesehen. Wir präsentieren den ersten Deep-Learning-basierten
- Prototyp zur Klassifizierung des Wasserstresslevels gängiger
- Zimmerpflanzen. Unser zweistufiger Ansatz besteht aus einem
- Erkennungs- und einem Klassifizierungsschritt und wird anhand eines
- eigens erstellten Datensatzes evaluiert. Die Parameter des Modells
- werden mit gängigen Methoden der Hyperparameteroptimierung
- ausgewählt. Der Prototyp wird auf einem embedded Computer
- bereitgestellt, der eine autonome Pflanzenüberwachung
- ermöglicht. Die Vorhersagen unseres Modells werden kontinuierlich
- über eine API veröffentlicht, wodurch nachgelagerte
- Bewässerungssysteme automatisch Zimmerpflanzen ohne menschliche
- Intervention bewässern können. Unser optimiertes Modell erreicht
- einen mAP-Wert von \num{0.3838}.
+ beeinflussen. Bestehende Lösungen zur Überwachung von Wasserstress
+ sind in erster Linie für landwirtschaftliche Kontexte gedacht, bei
+ denen nur eine kleine Auswahl an Pflanzen von Interesse ist. Bislang
+ gab es keine Forschung im Haushaltskontext, wo die Vielfalt der
+ Pflanzen wesentlich größer ist und es daher schwieriger ist,
+ Wasserstress zu erfassen. Außerdem beinhalten derzeitige Ansätze
+ entweder keinen eigenen Pflanzenerkennungsschritt oder es kommt
+ traditionelle Feature Extraction zur Anwendung. Wir entwickeln einen
+ Prototyp zur Erkennung und nachfolgender Klassifizierung des
+ Wasserstresses von Pflanzen, der ausschließlich auf Deep Learning
+ basiert.
+
+ Unser zweistufiger Ansatz besteht aus einem Erkennungs- und einem
+ Klassifizierungsschritt. In der Erkennungsphase werden die Pflanzen
+ identifiziert und aus dem Originalbild ausgeschnitten. Die
+ Ausschnitte werden an das Klassifizierungsmodell weitergeleitet, das
+ die Wahrscheinlichkeit für Wasserstress ausgibt. Wir verwenden
+ Transfer Learning und führen die Feinabstimmung der beiden Modelle
+ anhand zweier Datensätze durch. Jedes Modell wird mithilfe einer
+ Hyperparameter-Suche optimiert und zunächst einzeln und dann im
+ Aggregat auf einem eigens erstellten Datensatz evaluiert. Wir
+ stellen beide Modelle auf einem Nvidia Jetson Nano bereit, der in
+ der Lage ist, Pflanzen autonom über eine angeschlossene Kamera zu
+ klassifizieren. Die Ergebnisse der Pipeline werden kontinuierlich
+ über eine API veröffentlicht. Nachgeschaltete Bewässerungssysteme
+ können die Vorhersagen zum Wasserstress nutzen, um die Hauspflanzen
+ ohne menschliches Zutun zu bewässern.
+
+ Die beiden Modelle zusammengenommen erreichen einen mAP-Wert von
+ \num{0.3581} in der nicht optimierten Version. Beide Modelle sind in
+ der Lage, mit verschiedenen Lichtverhältnissen, verschiedenen
+ Blickwinkeln und einer Vielfalt an Pflanzen umzugehen. Die
+ optimierte Pipeline erreicht einen mAP-Wert von \num{0.3838}. Im
+ Vergleich zur nicht optimierten Version ist die Genauigkeit für
+ nicht gestresste Pflanzen höher, aber geringer für die gestresste
+ Klasse. Die Spezifität für die nicht gestresste Klasse bleibt im
+ Vergleich zur nicht optimierten Basislinie auf demselben Niveau, ist
+ aber um \num{12.1} Prozentpunkte höher für die gestresste
+ Klasse. Das gewichtete harmonische Mittel ($F_{1}$-score) für beide
+ Klassen konnte um \num{2.4} Prozentpunkte verbessert werden. Diese
+ Ergebnisse zeigen, dass unser zweistufiger Ansatz funktioniert und
+ ein vielversprechender erster Schritt zur Klassifizierung des
+ Zustands von Zimmerpflanzen ist.
\end{kurzfassung}
\begin{abstract}
Water deficiency in household plants can adversely affect
growth. Existing solutions to monitor water stress are primarily
- intended for agricultural contexts. We present the first deep
- learning based prototype to classify water stress of common
- household plants. Our two-stage approach consists of a detection and
- a classification step and is evaluated on a new dataset. The model
- parameters are optimized with a hyperparameter search. The prototype
- is deployed to an embedded device enabling autonomous plant
- monitoring. The predictions of our model are published continuously
- via an API, allowing downstream watering systems to automatically
- water household plants without human intervention. Our optimized
- model achieves a mAP of \num{0.3838} on unseen images.
+ intended for agricultural contexts where only a small selection of
+ plants are of interest. To date, there has been no research in
+ household settings where the variety of plants is considerably
+ higher and it is thus more difficult to obtain accurate measures of
+ water stress. Furthermore, current approaches either do not detect
+ plants in images first or use traditional feature extraction for
+ plant detection. We develop a prototype to detect plants and
+ classify them into water-stressed or not using deep learning based
+ methods exclusively.
+
+ Our two-stage approach consists of a detection and a classification
+ step. In the detection step, plants are identified and cut out from
+ the original image. The cutouts are passed to the classifier which
+ outputs a probability for water stress. We use transfer learning to
+ start from a robust base and fine-tune both models for their
+ respective tasks. Each model is optimized using hyperparameter
+ optimization and first evaluated individually and then in aggregate
+ on a custom dataset. We deploy both models to an Nvidia Jetson Nano
+ which is able to survey plants autonomously via an attached
+ camera. The results of the pipeline are published continuously via
+ an API. Downstream watering systems can use the water stress
+ predictions to water the plants without human intervention.
+
+ The two models in aggregate achieve a mAP of \num{0.3581} for the
+ non-optimized version. Both constituent models have robust feature
+ extraction capabilities and are able to cope with various lighting
+ conditions, different angles and a wide variety of household
+ plants. The optimized pipeline achieves a mAP of \num{0.3838} on
+ unseen images with higher precision for the non-stressed but lower
+ precision for the stressed class. Recall for the non-stressed class
+ remains at the same level compared to the non-optimized baseline but
+ is \num{12.1} percentage points higher for the stressed class. The
+ weighted $F_{1}$-score across both classes was improved by \num{2.4}
+ percentage points. These results show that our two-stage approach is
+ viable and a promising first step for plant state classification for
+ household plants.
\end{abstract}
% Select the language of the thesis, e.g., english or naustrian.
@@ -466,7 +520,7 @@ models. Chapter~\ref{chap:implementation} expands on how the datasets
are used during training as well as how the prototype publishes its
classification results. Chapter~\ref{chap:evaluation} shows the
results of the testing phases as well as the performance of the
-aggregate model. Futhermore, the results are compared with the
+aggregate model. Furthermore, the results are compared with the
expectations and it is discussed whether they are explainable in the
context of the task at hand as well as benchmark results from other
datasets (\gls{coco} \cite{lin2015}). Chapter~\ref{chap:conclusion}
@@ -496,12 +550,14 @@ The term machine learning was first used by \textcite{samuel1959} in
1959 in the context of teaching a machine how to play the game
Checkers. \textcite{mitchell1997a} defines learning in the context of
programs as:
-\begin{quote}
+
+\begin{quote}{\cite[p.2]{mitchell1997a}}
A computer program is said to \textbf{learn} from experience $E$
with respect to some class of tasks $T$ and performance measure $P$,
if its performance at tasks in $T$, as measured by $P$, improves
- with experience $E$. \cite[p.2]{mitchell1997a}
+ with experience $E$.
\end{quote}
+
In other words, if the aim is to learn to win at a game, the
performance measure $P$ is defined as the ability to win at that
game. The tasks in $T$ are playing the game multiple times, and the
@@ -509,7 +565,7 @@ experience $E$ is gained by letting the program play the game against
itself.
Machine learning is thought to be a sub-field of \gls{ai}. \gls{ai} is
-a more general term for the scientific endeavour of creating things
+a more general term for the scientific endeavor of creating things
which possess the kind of intelligence we humans have. Since those
things will not have been created \emph{naturally}, their intelligence
is termed \emph{artificial}. Within the field of \gls{ai} there have
@@ -628,7 +684,7 @@ The earliest attempts at describing learning machines were by
\textcite{mcculloch1943} with the idea of the \emph{perceptron}. This
idea was implemented in a more general sense by
\textcite{rosenblatt1957,rosenblatt1962} as a physical machine. At its
-core, the perceptron is the simplest artifical neural network with
+core, the perceptron is the simplest artificial neural network with
only one neuron in the center. The neuron takes all its inputs,
aggregates them with a weighted sum and outputs 1 if the result is
above some threshold $\theta$ and 0 if it is not (see
@@ -648,7 +704,7 @@ variables.
Due to the inherent limitations of perceptrons to only be able to
classify linearly separable data, \glspl{mlp} are the bedrock of
-modern artifical neural networks. By adding an input layer, a hidden
+modern artificial neural networks. By adding an input layer, a hidden
layer, and an output layer as well as requiring the activation
function of each neuron to be non-linear, a \gls{mlp} can classify
also non-linear data. Every neuron in each layer is fully connected to
@@ -657,7 +713,7 @@ straightforward case of a feedforward
network. Figure~\ref{fig:neural-network} shows the skeleton of a
\gls{mlp}.
-There are two types of artifical neural networks: feedforward and
+There are two types of artificial neural networks: feedforward and
recurrent networks. Their names refer to the way information flows
through the network. In a feedforward network, the information enters
the network and flows only uni-directionally to the output nodes. In a
@@ -700,7 +756,7 @@ The simplest activation function is the identity function. It is defined as
\begin{equation}
\label{eq:identity}
- g(x) = x
+ g(x) = x.
\end{equation}
If all layers in an artificial neural network use the identity
@@ -750,14 +806,14 @@ logistic function in machine learning. It is defined as
\begin{equation}
\label{eq:sigmoid}
- \sigma(x) = \frac{1}{1 + e^{-x}}
+ \sigma(x) = \frac{1}{1 + e^{-x}}.
\end{equation}
It has a characteristic S-shaped curve, mapping each input value to a
number between $0$ and $1$, regardless of input size. This
\emph{squashing} property is particularly desirable for binary
classification problems because the outputs can be interpreted as
-probabilities. Additionally to the squashing propery, it is also a
+probabilities. Additionally to the squashing property, it is also a
saturating function because large values map to $1$ and very small
values to $0$. If a learning algorithm has to update the weights in
the network, saturated neurons are very inefficient and difficult to
@@ -805,8 +861,8 @@ state, the model's capability of learning new patterns is
diminished. To address this problem, there are two possibilities. One
solution is to make sure that the learning rate is not set too high,
which reduces the problem but does not fully remove it. Another
-solution is to use one of the several variants of the ReLU function
-such as leaky \gls{relu}, \gls{elu}, and \gls{silu}.
+solution is to use one of the several variants of the \gls{relu}
+function such as leaky \gls{relu}, \gls{elu}, and \gls{silu}.
In recent years, the \gls{relu} function has become the most popular
activation function for deep neural networks and is recommended as the
@@ -959,15 +1015,15 @@ summation of the pixels above and to the left of it. This
representation allows them to quickly and efficiently calculate
Haar-like features.
-The Haar-like features are passed to a modified AdaBoost
-algorithm \cite{freund1995} which only selects the (presumably) most
-important features. At the end there is a cascading stage of
-classifiers where regions are only considered further if they are
-promising. Every additional classifier adds complexity, but once a
-classifier rejects a sub-window, the processing stops and the
-algorithm moves on to the next window. Despite their final structure
-containing 32 classifiers, the sliding-window approach is fast and
-achieves comparable results to the state of the art in 2001.
+The Haar-like features are passed to a modified AdaBoost algorithm
+\cite{freund1995} which only selects the (presumably) most important
+features. At the end there is a cascading stage of classifiers where
+regions are only considered further if they are promising. Every
+additional classifier adds complexity, but once a classifier rejects a
+sub-window, the processing stops and the algorithm moves on to the
+next window. Despite their final structure containing \num{32}
+classifiers, the sliding-window approach is fast and achieves
+comparable results to the state of the art in 2001.
\subsubsection{HOG Detector}
\label{sssec:obj-hog}
@@ -987,12 +1043,13 @@ are then passed as a feature vector to a classifier.
\textcite{dalal2005} successfully use the \gls{hog} with a linear
\gls{svm} for classification to detect humans in images. They work
-with images of 64 by 128 pixels and make sure that the image contains
-a margin of 16 pixels around the person. Decreasing the border by
-either enlarging the person or reducing the overall image size results
-in worse performance. Unfortunately, their method is far from being
-able to process images in real time—a $320$ by $240$ image takes
-roughly a second to process.
+with images of \num{64} by \num{128} pixels and make sure that the
+image contains a margin of \num{16} pixels around the
+person. Decreasing the border by either enlarging the person or
+reducing the overall image size results in worse
+performance. Unfortunately, their method is far from being able to
+process images in real time—a $320$ by $240$ image takes roughly a
+second to process.
\subsubsection{Deformable Part-Based Model}
\label{sssec:obj-dpm}
@@ -1028,20 +1085,21 @@ corresponding \gls{cnn} layer.
\label{ssec:theory-dl-based}
After the publication of the \gls{dpm}, the field of object detection
-did not make significant advances regarding speed or accuracy. Only
-the (re-)introduction of \glspl{cnn} by \textcite{krizhevsky2012} with
-their AlexNet architecture and their subsequent win of the
-\gls{ilsvrc} 2012 gave the field a new influx of ideas. The
-availability of the 12 million labeled images in the ImageNet dataset
-\cite{deng2009} allowed a shift from focusing on better methods to
-being able to use more data to train models. Earlier models had
-difficulties with making use of the large dataset since training was
-unfeasible. AlexNet, however, provided an architecture which was able
-to be trained on two \glspl{gpu} within 6 days. For an in depth
-overview of AlexNet see section~\ref{sssec:theory-alexnet}. Object
-detection networks from 2014 onward either follow a \emph{one-stage}
-or \emph{two-stage} detection approach. The following sections go into
-detail about each model category.
+did not make significant advances regarding speed or accuracy until
+2012. Only the (re-)introduction of \glspl{cnn} by
+\textcite{krizhevsky2012} with their AlexNet architecture and their
+subsequent win of the \gls{ilsvrc} 2012 gave the field a new influx of
+ideas. The availability of the \num{12e6} labeled images in the
+ImageNet dataset \cite{deng2009} allowed a shift from focusing on
+better methods to being able to use more data to train models. Earlier
+models had difficulties with making use of the large dataset since
+training was unfeasible. AlexNet, however, provided an architecture
+which was able to be trained on two \glspl{gpu} within six days. For
+an in depth overview of AlexNet see
+section~\ref{sssec:theory-alexnet}. Object detection networks from
+2014 onward either follow a \emph{one-stage} or \emph{two-stage}
+detection approach. The following sections go into detail about each
+model category.
\subsection{Two-Stage Detectors}
\label{ssec:theory-two-stage}
@@ -1059,7 +1117,7 @@ often not as efficient as one-stage detectors.
\textcite{girshick2014} were the first to propose using feature
representations of \glspl{cnn} for object detection. Their approach
-consists of generating around $2000$ region proposals and passing
+consists of generating around \num{2000} region proposals and passing
these on to a \gls{cnn} for feature extraction. The fixed-length
feature vector is used as input for a linear \gls{svm} which
classifies the region. They name their method R-\gls{cnn}, where the R
@@ -1067,17 +1125,17 @@ stands for region.
R-\gls{cnn} uses selective search to generate region proposals
\cite{uijlings2013}.The authors use selective search's \emph{fast
-mode} to generate the $2000$ proposals and warp (i.e. aspect ratios
-are not retained) each proposal into the image dimensions required by
-the \gls{cnn}. The \gls{cnn}, which matches the architecture of
-AlexNet \cite{krizhevsky2012}, generates a $4096$-dimensional feature
-vector and each feature vector is scored by a linear \gls{svm} for
-each class. Scored regions are selected/discarded by comparing each
-region to other regions within the same class and rejecting them if
-there exists another region with a higher score and greater \gls{iou}
-than a threshold. The linear \gls{svm} classifiers are trained to only
-label a region as positive if the overlap, as measured by \gls{iou},
-is above $0.3$.
+mode} to generate the \num{2000} proposals and warp (i.e. aspect
+ratios are not retained) each proposal into the image dimensions
+required by the \gls{cnn}. The \gls{cnn}, which matches the
+architecture of AlexNet \cite{krizhevsky2012}, generates a
+\num{4096}-dimensional feature vector and each feature vector is
+scored by a linear \gls{svm} for each class. Scored regions are
+selected/discarded by comparing each region to other regions within
+the same class and rejecting them if there exists another region with
+a higher score and greater \gls{iou} than a threshold. The linear
+\gls{svm} classifiers are trained to only label a region as positive
+if the overlap, as measured by \gls{iou}, is above $0.3$.
While the approach of generating region proposals is not new, using a
\gls{cnn} purely for feature extraction is. Unfortunately, R-\gls{cnn}
@@ -1123,7 +1181,7 @@ set at a \gls{map} of 59.2\%.
Fast R-\gls{cnn} was proposed by \textcite{girshick2015a} to fix the
three main problems R-\gls{cnn} and \gls{spp}-net have. The first
problem is that the training for both models is
-multi-stage. R-\gls{cnn} finetunes the convolutional network which is
+multi-stage. R-\gls{cnn} fine-tunes the convolutional network which is
responsible for feature extraction and then trains \glspl{svm} to
classify the feature vectors. The third stage consists of training the
bounding box regressors. The second problem is the training time which
@@ -1134,10 +1192,10 @@ the convolutional network) upwards of \qty{13}{\s\per image}.
Fast R-\gls{cnn} deals with these problems by having an architecture
which allows it to take in images and object proposals at once and
process them simultaneously to arrive at the results. The outputs of
-the network are the class an object proposal belongs to and 4 scalar
-values representing the bounding box of the object. Unfortunately,
-this approach still requires a separate object proposal generator such
-as selective search \cite{uijlings2013}.
+the network are the class an object proposal belongs to and four
+scalar values representing the bounding box of the
+object. Unfortunately, this approach still requires a separate object
+proposal generator such as selective search \cite{uijlings2013}.
\subsubsection{Faster R-\gls{cnn}}
\label{sssec:theory-faster-rcnn}
@@ -1192,14 +1250,14 @@ with the layer beneath it via element-wise addition and convolved with
a one by one convolutional layer to reduce channel dimensions and to
smooth out potential artifacts introduced during the upsampling
step. The results of that operation constitute the new \emph{top
- layer} and the process continues with the layer below it until the
+layer} and the process continues with the layer below it until the
finest resolution feature map is generated. In this way, the features
of the different layers at different scales are fused to obtain a
feature map with high semantic information but also high spatial
information.
\textcite{lin2017} report results on \gls{coco} with a \gls{map}@0.5
-of 59.1\% with a Faster R-\gls{cnn} structure and a ResNet-101
+of 59.1\% with a Faster R-\gls{cnn} structure and a \gls{resnet}-101
backbone. Their submission does not include any specific improvements
such as hard negative mining \cite{shrivastava2016} or data
augmentation.
@@ -1302,7 +1360,7 @@ on examples which are harder to achieve a good confidence score on.
\textcite{lin2017b} implement their focal loss with a simple one-stage
detector called \emph{RetinaNet}. It makes use of previous advances in
object detection and classification by including a \gls{fpn} on top of
-a ResNet \cite{he2016} as the backbone and using anchors for the
+a \gls{resnet} \cite{he2016} as the backbone and using anchors for the
different levels in the feature pyramid. Attached to the backbone are
two subnetworks which classify anchor boxes and regress them to the
ground truth boxes. The results are that the RetinaNet-101-500 version
@@ -1416,23 +1474,23 @@ increases the amount of feature maps to $16$ which aims to increase
the richness of the learned representations. Another pooling layer
follows which reduces the size of each of the $16$ feature maps to
five by five pixels. A dense block of three fully-connected layers of
-120, 84 and 10 neurons respectively serves as the actual classifier in
-the network. The last layer uses the euclidean \gls{rbf} to compute
-the class an image belongs to (0-9 digits).
+120, 84 and 10 neurons serves as the actual classifier in the
+network. The last layer uses the euclidean \gls{rbf} to compute the
+class an image belongs to (0-9 digits).
The performance of LeNet-5 was measured on the \gls{mnist} database
-which consists of $70000$ labeled images of handwritten digits. The
-\gls{mse} on the test set is 0.95\%. This result is impressive
-considering that character recognition with a \gls{cnn} had not been
-done before. However, standard machine learning methods of the time,
-such as manual feature engineering and \glspl{svm}, achieved a similar
-error rate, even though they are much more memory-intensive. LeNet-5
-was conceived to take advantage of the (then) large \gls{mnist}
-database. Since there were not many datasets available at the time,
-especially with more samples than in the \gls{mnist} database,
-\glspl{cnn} were not widely used even after their viability had been
-demonstrated by \textcite{lecun1998}. Only in 2012
-\textcite{krizhevsky2012} reintroduced \glspl{cnn} (see
+which consists of \num{70000} labeled images of handwritten
+digits. The \gls{mse} on the test set is 0.95\%. This result is
+impressive considering that character recognition with a \gls{cnn} had
+not been done before. However, standard machine learning methods of
+the time, such as manual feature engineering and \glspl{svm}, achieved
+a similar error rate, even though they are much more
+memory-intensive. LeNet-5 was conceived to take advantage of the
+(then) large \gls{mnist} database. Since there were not many datasets
+available at the time, especially with more samples than in the
+\gls{mnist} database, \glspl{cnn} were not widely used even after
+their viability had been demonstrated by \textcite{lecun1998}. Only in
+2012 \textcite{krizhevsky2012} reintroduced \glspl{cnn} (see
section~\ref{ssec:theory-dl-based}) and since then most
state-of-the-art image classification methods have used them.
@@ -1479,7 +1537,7 @@ maximum values are then put back into each two by two area (depending
on the kernel size). This process loses information because a
max-pooling layer is not invertible. The subsequent \gls{relu}
function can be easily inverted because negative values are squashed
-to zero and and positive values are retained. The final deconvolution
+to zero and positive values are retained. The final deconvolution
operation concerns the convolutional layer itself. In order to
\emph{reconstruct} the original spatial dimensions (before
convolution), a transposed convolution is performed. This process
@@ -1520,7 +1578,7 @@ other and a \emph{stem} with convolutions at the beginning as well as
two auxiliary classifiers which help retain the gradient during
backpropagation. The auxiliary classifiers are only used during
training. The authors submitted multiple model versions to the 2004
-\gls{ilsvrc} and their ensemble prediction model consisting of 7
+\gls{ilsvrc} and their ensemble prediction model consisting of seven
GoogleNets achieved a top-5 error rate of 6.67\%, which resulted in
first place.
@@ -1573,21 +1631,21 @@ section~\ref{sec:methods-classification}.
\label{sssec:theory-densenet}
The authors of DenseNet \cite{huang2017} go one step further than
-ResNets by connecting every convolutional layer to every other layer
-in the chain. Previously, each layer was connected in sequence with
-the one before and the one after it. Residual connections establish a
-link between the previous layer and the next one but still do not
-always propagate enough information forward. These \emph{shortcut
-connections} from earlier layers to later layers are thus only taking
-place in an episodic way for short sections in the chain. DenseNets
-are structured in a way such that every layer receives the feature map
-of every previous layer as input. In ResNets, information from
-previous layers is added on to the next layer via element-wise
-addition. DenseNets concatenate the features of the previous
-layers. The number of feature maps per layer has to be kept low so
-that the subsequent layers can still process their inputs. Otherwise,
-the last layer in each dense block would receive too many channels
-which increases computational complexity.
+\glspl{resnet} by connecting every convolutional layer to every other
+layer in the chain. Previously, each layer was connected in sequence
+with the one before and the one after it. Residual connections
+establish a link between the previous layer and the next one but still
+do not always propagate enough information forward. These
+\emph{shortcut connections} from earlier layers to later layers are
+thus only taking place in an episodic way for short sections in the
+chain. DenseNets are structured in a way such that every layer
+receives the feature map of every previous layer as input. In
+\glspl{resnet}, information from previous layers is added on to the
+next layer via element-wise addition. DenseNets concatenate the
+features of the previous layers. The number of feature maps per layer
+has to be kept low so that the subsequent layers can still process
+their inputs. Otherwise, the last layer in each dense block would
+receive too many channels which increases computational complexity.
The authors construct their network from multiple dense blocks which
are connected via a batch normalization layer, a one by one
@@ -1919,14 +1977,14 @@ was trained with a dataset containing images of maize, okra, and
soybean at different stages of growth and under stress and no
stress. The researchers did not include an object detection step
before image classification and compiled a fairly small dataset of
-$1200$ images. Of the three models, GoogLeNet beat the other two with
-a sizable lead at a classification accuracy of >94\% for all three
-types of crop. The authors attribute its success to its inherently
-deeper structure and application of multiple convolutional layers at
-different stages. Unfortunately, all of the images were taken at the
-same $\ang{45}\pm\ang{5}$ angle and it stands to reason that the models
-would perform significantly worse on images taken under different
-conditions.
+\num{1200} images. Of the three models, GoogLeNet beat the other two
+with a sizable lead at a classification accuracy of >94\% for all
+three types of crop. The authors attribute its success to its
+inherently deeper structure and application of multiple convolutional
+layers at different stages. Unfortunately, all of the images were
+taken at the same $\ang{45}\pm\ang{5}$ angle and it stands to reason
+that the models would perform significantly worse on images taken
+under different conditions.
\textcite{ramos-giraldo2020} detected water stress in soybean and corn
crops with a pretrained model based on DenseNet-121 (see
@@ -1949,7 +2007,7 @@ classification scores on corn and soybean with a low-cost setup.
\textcite{azimi2020} demonstrate the efficacy of deep learning models
versus classical machine learning models on chickpea plants. The
authors created their own dataset in a laboratory setting for stressed
-and non-stressed plants. They acquired $8000$ images at eight
+and non-stressed plants. They acquired \num{8000} images at eight
different angles in total. For the classical machine learning models,
they extracted feature vectors using \gls{sift} and \gls{hog}. The
features are fed into three classical machine learning models:
@@ -1957,30 +2015,28 @@ features are fed into three classical machine learning models:
algorithm. On the deep learning side, they used their own \gls{cnn}
architecture and the pretrained ResNet-18 (see
section~\ref{sssec:theory-resnet}) model. The accuracy scores for the
-classical models was in the range of $\qty{60}{\percent}$ to
-$\qty{73}{\percent}$ with the \gls{svm} outperforming the two
-others. The \gls{cnn} achieved higher scores at $\qty{72}{\percent}$
-to $\qty{78}{\percent}$ and ResNet-18 achieved the highest scores at
-$\qty{82}{\percent}$ to $\qty{86}{\percent}$. The results clearly show
-the superiority of deep learning over classical machine learning. A
-downside of their approach lies in the collection of the images. The
-background in all images was uniformly white and the plants were
-prominently placed in the center. It should, therefore, not be assumed
-that the same classification scores can be achieved on plants in the
-field with messy and noisy backgrounds as well as illumination changes
-and so forth.
+classical models was in the range of 60\% to 73\% with the \gls{svm}
+outperforming the two others. The \gls{cnn} achieved higher scores at
+72\% to 78\% and ResNet-18 achieved the highest scores at 82\% to
+86\%. The results clearly show the superiority of deep learning over
+classical machine learning. A downside of their approach lies in the
+collection of the images. The background in all images was uniformly
+white and the plants were prominently placed in the center. It should,
+therefore, not be assumed that the same classification scores can be
+achieved on plants in the field with messy and noisy backgrounds as
+well as illumination changes and so forth.
\textcite{venal2019} combine a standard \gls{cnn} architecture with a
\gls{svm} for classification. The \gls{cnn} acts as a feature
extractor and instead of using the last fully-connected layers of an
off-the-shelf \gls{cnn}, they replace them with a \gls{svm}. They use
this classifier to determine which biotic or abiotic stresses soybeans
-suffer from. Their dataset consists of $65184$ $64$ by $64$ RGB
-images of which around $40000$ were used for training and $6000$ for
-testing. All images show a close-up of a soybean leaf. Their \gls{cnn}
-architecture makes use of three Inception modules (see
-section~\ref{sssec:theory-googlenet}) with \gls{se} blocks and
-\gls{bn} layers in-between. Their model achieves an average
+suffer from. Their dataset consists of \num{65184} $64$ by $64$ RGB
+images of which around \num{40000} were used for training and
+\num{6000} for testing. All images show a close-up of a soybean
+leaf. Their \gls{cnn} architecture makes use of three Inception
+modules (see section~\ref{sssec:theory-googlenet}) with \gls{se}
+blocks and \gls{bn} layers in-between. Their model achieves an average
$\mathrm{F}_1$-score of 97\% and an average accuracy of 97.11\% on the
test set. Overall, the hybrid structure of their model is promising,
but it is not clear why only using the \gls{cnn} as a feature
@@ -2509,8 +2565,8 @@ phases, we will list a small selection of them.
\item[HSV-saturation] Randomly change the saturation of the color
channels.
\item[HSV-value] Randomly change the value of the color channels.
-\item[Translation] Randomly \emph{translate}, that is, move the image
- by a specified amount of pixels.
+\item[Translation] Randomly \emph{translate}, i.e., move the image by
+ a specified amount of pixels.
\item[Scaling] Randomly scale the image up and down by a factor.
\item[Rotation] Randomly rotate the image.
\item[Inversion] Randomly flip the image along the $x$ or the
@@ -2622,7 +2678,7 @@ nor recall change materially during training. In fact, precision
starts to decrease from the beginning, while recall experiences a
barely noticeable increase. Taken together with the box and object
loss from figure~\ref{fig:box-obj-loss}, we speculate that the
-pre-trained model already generalizes well to plant detection because
+pretrained model already generalizes well to plant detection because
one of the categories in the \gls{coco} \cite{lin2015} dataset is
\emph{potted plant}. Any further training solely impacts the
confidence of detection but does not lead to higher detection
@@ -2840,14 +2896,14 @@ which is hyperparameter optimization \cite{bergstra2012}.
\toprule
Parameter & Values \\
\midrule
- optimizer & adam, sgd \\
- batch size & 4, 8, 16, 32, 64 \\
- learning rate & 0.0001, 0.0003, 0.001, 0.003, 0.01, 0.1 \\
- step size & 2, 3, 5, 7 \\
- gamma & 0.1, 0.5 \\
- beta one & 0.9, 0.99 \\
- beta two & 0.5, 0.9, 0.99, 0.999 \\
- eps & 0.00000001, 0.1, 1 \\
+ Optimizer & Adam, \gls{sgd} \\
+ Batch Size & 4, 8, 16, 32, 64 \\
+ Learning Rate & 0.0001, 0.0003, 0.001, 0.003, 0.01, 0.1 \\
+ Step Size & 2, 3, 5, 7 \\
+ Gamma & 0.1, 0.5 \\
+ Beta One & 0.9, 0.99 \\
+ Beta Two & 0.5, 0.9, 0.99, 0.999 \\
+ Eps & 0.00000001, 0.1, 1 \\
\bottomrule
\end{tabular}
\caption{Hyperparameters and their possible values during