JinghuiLuAstronaut commited on
Commit
a62e1ee
·
verified ·
1 Parent(s): 056e20f

Add files using upload-large-folder tool

Browse files
Files changed (20) hide show
  1. LTA_openwebtext_dualt/docs/lta_samples/metrics_20260517/ctx1024_sampleds_sweep_bs512_ode128_ctx1024_sampledpath_20260517_223933/hit_ratio_curve.csv +1 -0
  2. LTA_openwebtext_dualt/logs/selfcond_4gpu/lta_owt_gpt2cached_len1024_1gpu_rollout_returnbase_step1_gradnorm_diag_20260514_004725.log +102 -0
  3. LTA_openwebtext_dualt/logs/selfcond_4gpu/lta_owt_gpt2cached_len1024_gradmode_rollout_return_base_diag_20260514_003039.log +102 -0
  4. LTA_openwebtext_dualt/logs/selfcond_4gpu/lta_owt_gpt2cached_len1024_rollout_ddp_forward_return_base_diag_4gpu_20260514_002607.log +104 -0
  5. LTA_openwebtext_dualt/logs/selfcond_4gpu/lta_owt_gpt2cached_len1024_selfcond_p05_rollout1_samplewise_c1024_ddit768x12_muon_ema_gbs512_4gpu_50k_20260513_233654.log +520 -0
  6. LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/huggingface_hub-1.16.4.dist-info/INSTALLER +1 -0
  7. LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/huggingface_hub-1.16.4.dist-info/METADATA +329 -0
  8. LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/huggingface_hub-1.16.4.dist-info/RECORD +190 -0
  9. LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/huggingface_hub-1.16.4.dist-info/REQUESTED +0 -0
  10. LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/huggingface_hub-1.16.4.dist-info/WHEEL +5 -0
  11. LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/huggingface_hub-1.16.4.dist-info/entry_points.txt +7 -0
  12. LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/huggingface_hub-1.16.4.dist-info/top_level.txt +1 -0
  13. LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/idna/compat.py +41 -0
  14. LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/idna/idnadata.py +4366 -0
  15. LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/idna/package_data.py +1 -0
  16. LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/idna/uts46data.py +0 -0
  17. LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/transformers/models/siglip/image_processing_pil_siglip.py +38 -0
  18. LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/transformers/models/siglip/image_processing_siglip.py +38 -0
  19. LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/transformers/models/siglip/modeling_siglip.py +936 -0
  20. LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/transformers/models/siglip/tokenization_siglip.py +352 -0
LTA_openwebtext_dualt/docs/lta_samples/metrics_20260517/ctx1024_sampleds_sweep_bs512_ode128_ctx1024_sampledpath_20260517_223933/hit_ratio_curve.csv ADDED
@@ -0,0 +1 @@
 
 
1
+ config,run_name,ckpt_step,train_views_seen,train_tokens_seen,token_acc_mean,exact_count,exact_ref_count,exact_ref_hits
LTA_openwebtext_dualt/logs/selfcond_4gpu/lta_owt_gpt2cached_len1024_1gpu_rollout_returnbase_step1_gradnorm_diag_20260514_004725.log ADDED
@@ -0,0 +1,102 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "device": "cuda:0",
3
+ "rank": 0,
4
+ "world_size": 1,
5
+ "samples": "owt_cached_chunks:8734897",
6
+ "vocab_size": 50257,
7
+ "tokenizer_vocab_size": 50257,
8
+ "save_dir": "runs/lta_owt_gpt2cached_len1024_1gpu_rollout_returnbase_step1_gradnorm_diag_20260514_004725",
9
+ "batch_size": 16,
10
+ "grad_accum": 1,
11
+ "effective_batch_size": 16,
12
+ "global_batch_size": 16,
13
+ "lr_schedule": "constant_warmup",
14
+ "optimizer": "muon",
15
+ "warmup_steps": 2000,
16
+ "min_lr": 0.0,
17
+ "weight_decay": 0.0,
18
+ "adamw_param_groups": "nanogpt",
19
+ "adam_beta1": 0.9,
20
+ "adam_beta2": 0.95,
21
+ "adam_eps": 1e-08,
22
+ "muon_momentum": 0.95,
23
+ "muon_ns_steps": 5,
24
+ "muon_update_scale": 1.0,
25
+ "ema_decay": 0.0,
26
+ "ema_start_step": 0,
27
+ "model_type": "ddit",
28
+ "dual_t": true,
29
+ "corrupt_t_mode": "same",
30
+ "corrupt_min_t": 0.0,
31
+ "corrupt_max_t": 1.0,
32
+ "prefix_block_prob": 0.0,
33
+ "prefix_block_len": 128,
34
+ "mask_ratio_floor_schedule": "none",
35
+ "dirichlet_endpoint_mode": "categorical_dual_t",
36
+ "dirichlet_semantic_t_mode": "same",
37
+ "dirichlet_semantic_t_value": 0.0,
38
+ "dirichlet_semantic_t_curve": "linear",
39
+ "dirichlet_semantic_t_power": 1.0,
40
+ "endpoint_sequence_random_prob_alpha": 0.0,
41
+ "categorical_wrong_from_full_vocab": true,
42
+ "categorical_wrong_from_batch_valid_tokens": false,
43
+ "mask_mixture_original_prob": 0.0,
44
+ "mask_mixture_lowk_prob": 0.0,
45
+ "mask_mixture_lowcorrupt_prob": 0.0,
46
+ "mask_mixture_block_prob": 0.0,
47
+ "mask_mixture_all_prob": 0.0,
48
+ "mask_mixture_lowk_clean_tokens": "1,2,4,8,16,32,64",
49
+ "mask_mixture_lowcorrupt_tokens": "1,2,4,8,16,32,64",
50
+ "mask_mixture_block_tokens": "64,128",
51
+ "simplex_bridge_sampler": "dirichlet",
52
+ "logistic_normal_sigma_min": 0.18,
53
+ "logistic_normal_sigma_max": 2.2,
54
+ "logistic_normal_tau_min": 0.65,
55
+ "logistic_normal_tau_max": 1.15,
56
+ "torch_compile": false,
57
+ "compile_mode": "max-autotune",
58
+ "state_format": "prob",
59
+ "target_loss": "hard_ce",
60
+ "meanflow_weight": 0.0,
61
+ "rollout_train_prob": 0.5,
62
+ "rollout_train_steps": 1,
63
+ "rollout_train_infer_steps": 64,
64
+ "rollout_train_temp": 1.45,
65
+ "rollout_train_max_gamma": 1.0,
66
+ "rollout_train_corrupt_only": true,
67
+ "rollout_train_samplewise": true,
68
+ "rollout_train_compute_always": false,
69
+ "bridge_noise_init": "logistic_normal",
70
+ "noise_sigma": -1.0,
71
+ "allow_tf32": true,
72
+ "activation_checkpointing": false,
73
+ "activation_checkpoint_interval": 1,
74
+ "activation_checkpoint_scope": "block",
75
+ "ddp_static_graph": false,
76
+ "ddp_gradient_as_bucket_view": true,
77
+ "blocking_data_transfer": false,
78
+ "dataloader_prefetch_factor": 4,
79
+ "full_train_stats": false,
80
+ "record_pad_truncate": false,
81
+ "record_add_eos": false,
82
+ "record_add_special_tokens": false,
83
+ "record_pad_token": "pad",
84
+ "record_shuffle_buffer": 10000,
85
+ "wrap": true,
86
+ "wrap_mode": "stream",
87
+ "wrap_record_buffer_size": 200,
88
+ "owt_cached_chunks": true,
89
+ "owt_chunk_cache_dir": "/e2e-data/evad-tech-vla/wanghan58/data/small_benchmarks/langflow_2604_11748/openwebtext_lta_cached_chunks/gpt2_len1024_train_minus_100k",
90
+ "owt_chunk_cache_rebuild": false,
91
+ "owt_chunk_cache_write_batch": 4096,
92
+ "owt_exact_repeat_per_chunk": 0,
93
+ "online_chunk_shuffle": false,
94
+ "online_chunk_shuffle_buffer": 10000,
95
+ "openwebtext_split": "train_minus_100k",
96
+ "detokenizer": "auto",
97
+ "resolved_detokenizer": null,
98
+ "num_workers": 4,
99
+ "latest_every": 0,
100
+ "resume_path": ""
101
+ }
102
+ step=1 micro_steps=1 elapsed=1.2s lr=2.000000e-06 loss=10.8125 loss_recon=10.8125 loss_meanflow=0.0000 mean_model_t=0.4310 mean_corrupt_t=0.4310 mean_loss_t_weight=1.0000 prior_center_loss_beta=0.0000 rollout_train_applied=0.5625 grad_enabled_before_rollout=1.0000 grad_enabled_after_rollout=1.0000 logits_requires_grad=1.0000 raw_loss_requires_grad=1.0000 out_w_norm=0.0000 out_g_norm=0.0000 acc_all=0.0002 acc_corrupt=0.0002 corrupt_frac=0.4929 loss_all=10.8125 loss_corrupt=10.8125 acc_corrupt_t_0p0_0p2=0.0006 corrupt_frac_t_0p0_0p2=0.1911 acc_corrupt_t_0p2_0p4=0.0000 corrupt_frac_t_0p2_0p4=0.3956 acc_corrupt_t_0p4_0p6=0.0000 corrupt_frac_t_0p4_0p6=0.2106 acc_corrupt_t_0p6_0p8=0.0011 corrupt_frac_t_0p6_0p8=0.1145 acc_corrupt_t_0p8_1p0=0.0000 corrupt_frac_t_0p8_1p0=0.0882 wrong_frac=0.6139 init_acc_corrupt=0.3400 init_gold_top10=0.3813 init_gold_top100=0.4182 rollout_applied_pos_frac=0.4916 init_acc_rollout_applied=0.3756 init_acc_rollout_kept=0.3057 logit_acc_rollout_applied=0.0003 logit_acc_rollout_kept=0.0002
LTA_openwebtext_dualt/logs/selfcond_4gpu/lta_owt_gpt2cached_len1024_gradmode_rollout_return_base_diag_20260514_003039.log ADDED
@@ -0,0 +1,102 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "device": "cuda:0",
3
+ "rank": 0,
4
+ "world_size": 1,
5
+ "samples": "owt_cached_chunks:8734897",
6
+ "vocab_size": 50257,
7
+ "tokenizer_vocab_size": 50257,
8
+ "save_dir": "runs/lta_owt_gpt2cached_len1024_gradmode_rollout_return_base_diag_20260514_003039",
9
+ "batch_size": 32,
10
+ "grad_accum": 1,
11
+ "effective_batch_size": 32,
12
+ "global_batch_size": 32,
13
+ "lr_schedule": "constant_warmup",
14
+ "optimizer": "muon",
15
+ "warmup_steps": 2000,
16
+ "min_lr": 0.0,
17
+ "weight_decay": 0.0,
18
+ "adamw_param_groups": "nanogpt",
19
+ "adam_beta1": 0.9,
20
+ "adam_beta2": 0.95,
21
+ "adam_eps": 1e-08,
22
+ "muon_momentum": 0.95,
23
+ "muon_ns_steps": 5,
24
+ "muon_update_scale": 1.0,
25
+ "ema_decay": 0.0,
26
+ "ema_start_step": 0,
27
+ "model_type": "ddit",
28
+ "dual_t": true,
29
+ "corrupt_t_mode": "same",
30
+ "corrupt_min_t": 0.0,
31
+ "corrupt_max_t": 1.0,
32
+ "prefix_block_prob": 0.0,
33
+ "prefix_block_len": 128,
34
+ "mask_ratio_floor_schedule": "none",
35
+ "dirichlet_endpoint_mode": "categorical_dual_t",
36
+ "dirichlet_semantic_t_mode": "same",
37
+ "dirichlet_semantic_t_value": 0.0,
38
+ "dirichlet_semantic_t_curve": "linear",
39
+ "dirichlet_semantic_t_power": 1.0,
40
+ "endpoint_sequence_random_prob_alpha": 0.0,
41
+ "categorical_wrong_from_full_vocab": true,
42
+ "categorical_wrong_from_batch_valid_tokens": false,
43
+ "mask_mixture_original_prob": 0.0,
44
+ "mask_mixture_lowk_prob": 0.0,
45
+ "mask_mixture_lowcorrupt_prob": 0.0,
46
+ "mask_mixture_block_prob": 0.0,
47
+ "mask_mixture_all_prob": 0.0,
48
+ "mask_mixture_lowk_clean_tokens": "1,2,4,8,16,32,64",
49
+ "mask_mixture_lowcorrupt_tokens": "1,2,4,8,16,32,64",
50
+ "mask_mixture_block_tokens": "64,128",
51
+ "simplex_bridge_sampler": "dirichlet",
52
+ "logistic_normal_sigma_min": 0.18,
53
+ "logistic_normal_sigma_max": 2.2,
54
+ "logistic_normal_tau_min": 0.65,
55
+ "logistic_normal_tau_max": 1.15,
56
+ "torch_compile": false,
57
+ "compile_mode": "max-autotune",
58
+ "state_format": "prob",
59
+ "target_loss": "hard_ce",
60
+ "meanflow_weight": 0.0,
61
+ "rollout_train_prob": 0.5,
62
+ "rollout_train_steps": 1,
63
+ "rollout_train_infer_steps": 64,
64
+ "rollout_train_temp": 1.45,
65
+ "rollout_train_max_gamma": 1.0,
66
+ "rollout_train_corrupt_only": true,
67
+ "rollout_train_samplewise": true,
68
+ "rollout_train_compute_always": false,
69
+ "bridge_noise_init": "logistic_normal",
70
+ "noise_sigma": -1.0,
71
+ "allow_tf32": true,
72
+ "activation_checkpointing": false,
73
+ "activation_checkpoint_interval": 1,
74
+ "activation_checkpoint_scope": "block",
75
+ "ddp_static_graph": false,
76
+ "ddp_gradient_as_bucket_view": true,
77
+ "blocking_data_transfer": false,
78
+ "dataloader_prefetch_factor": 4,
79
+ "full_train_stats": false,
80
+ "record_pad_truncate": false,
81
+ "record_add_eos": false,
82
+ "record_add_special_tokens": false,
83
+ "record_pad_token": "pad",
84
+ "record_shuffle_buffer": 10000,
85
+ "wrap": true,
86
+ "wrap_mode": "stream",
87
+ "wrap_record_buffer_size": 200,
88
+ "owt_cached_chunks": true,
89
+ "owt_chunk_cache_dir": "/e2e-data/evad-tech-vla/wanghan58/data/small_benchmarks/langflow_2604_11748/openwebtext_lta_cached_chunks/gpt2_len1024_train_minus_100k",
90
+ "owt_chunk_cache_rebuild": false,
91
+ "owt_chunk_cache_write_batch": 4096,
92
+ "owt_exact_repeat_per_chunk": 0,
93
+ "online_chunk_shuffle": false,
94
+ "online_chunk_shuffle_buffer": 10000,
95
+ "openwebtext_split": "train_minus_100k",
96
+ "detokenizer": "auto",
97
+ "resolved_detokenizer": null,
98
+ "num_workers": 4,
99
+ "latest_every": 0,
100
+ "resume_path": ""
101
+ }
102
+ step=20 micro_steps=20 elapsed=18.0s lr=2.100000e-05 loss=10.8125 loss_recon=10.8125 loss_meanflow=0.0000 mean_model_t=0.4886 mean_corrupt_t=0.4886 mean_loss_t_weight=1.0000 prior_center_loss_beta=0.0000 rollout_train_applied=0.5078 grad_enabled_before_rollout=1.0000 grad_enabled_after_rollout=1.0000 logits_requires_grad=1.0000 raw_loss_requires_grad=1.0000 acc_all=0.0005 acc_corrupt=0.0003 corrupt_frac=0.4716 loss_all=10.8125 loss_corrupt=10.8125 acc_corrupt_t_0p0_0p2=0.0037 corrupt_frac_t_0p0_0p2=0.0353 acc_corrupt_t_0p2_0p4=0.0000 corrupt_frac_t_0p2_0p4=0.3025 acc_corrupt_t_0p4_0p6=0.0000 corrupt_frac_t_0p4_0p6=0.1542 acc_corrupt_t_0p6_0p8=0.0004 corrupt_frac_t_0p6_0p8=0.3077 acc_corrupt_t_0p8_1p0=0.0000 corrupt_frac_t_0p8_1p0=0.2003 wrong_frac=0.4271 init_acc_corrupt=0.5455 init_gold_top10=0.5717 init_gold_top100=0.5815 rollout_applied_pos_frac=0.5593 init_acc_rollout_applied=0.5406 init_acc_rollout_kept=0.5517 logit_acc_rollout_applied=0.0000 logit_acc_rollout_kept=0.0006
LTA_openwebtext_dualt/logs/selfcond_4gpu/lta_owt_gpt2cached_len1024_rollout_ddp_forward_return_base_diag_4gpu_20260514_002607.log ADDED
@@ -0,0 +1,104 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ NCCL version 2.25.1+cuda12.8
2
+ {
3
+ "device": "cuda:0",
4
+ "rank": 0,
5
+ "world_size": 4,
6
+ "samples": "owt_cached_chunks:8734897",
7
+ "vocab_size": 50257,
8
+ "tokenizer_vocab_size": 50257,
9
+ "save_dir": "runs/lta_owt_gpt2cached_len1024_rollout_ddp_forward_return_base_diag_4gpu_20260514_002607",
10
+ "batch_size": 32,
11
+ "grad_accum": 4,
12
+ "effective_batch_size": 512,
13
+ "global_batch_size": 512,
14
+ "lr_schedule": "constant_warmup",
15
+ "optimizer": "muon",
16
+ "warmup_steps": 2000,
17
+ "min_lr": 0.0,
18
+ "weight_decay": 0.0,
19
+ "adamw_param_groups": "nanogpt",
20
+ "adam_beta1": 0.9,
21
+ "adam_beta2": 0.95,
22
+ "adam_eps": 1e-08,
23
+ "muon_momentum": 0.95,
24
+ "muon_ns_steps": 5,
25
+ "muon_update_scale": 1.0,
26
+ "ema_decay": 0.0,
27
+ "ema_start_step": 0,
28
+ "model_type": "ddit",
29
+ "dual_t": true,
30
+ "corrupt_t_mode": "same",
31
+ "corrupt_min_t": 0.0,
32
+ "corrupt_max_t": 1.0,
33
+ "prefix_block_prob": 0.0,
34
+ "prefix_block_len": 128,
35
+ "mask_ratio_floor_schedule": "none",
36
+ "dirichlet_endpoint_mode": "categorical_dual_t",
37
+ "dirichlet_semantic_t_mode": "same",
38
+ "dirichlet_semantic_t_value": 0.0,
39
+ "dirichlet_semantic_t_curve": "linear",
40
+ "dirichlet_semantic_t_power": 1.0,
41
+ "endpoint_sequence_random_prob_alpha": 0.0,
42
+ "categorical_wrong_from_full_vocab": true,
43
+ "categorical_wrong_from_batch_valid_tokens": false,
44
+ "mask_mixture_original_prob": 0.0,
45
+ "mask_mixture_lowk_prob": 0.0,
46
+ "mask_mixture_lowcorrupt_prob": 0.0,
47
+ "mask_mixture_block_prob": 0.0,
48
+ "mask_mixture_all_prob": 0.0,
49
+ "mask_mixture_lowk_clean_tokens": "1,2,4,8,16,32,64",
50
+ "mask_mixture_lowcorrupt_tokens": "1,2,4,8,16,32,64",
51
+ "mask_mixture_block_tokens": "64,128",
52
+ "simplex_bridge_sampler": "dirichlet",
53
+ "logistic_normal_sigma_min": 0.18,
54
+ "logistic_normal_sigma_max": 2.2,
55
+ "logistic_normal_tau_min": 0.65,
56
+ "logistic_normal_tau_max": 1.15,
57
+ "torch_compile": false,
58
+ "compile_mode": "max-autotune",
59
+ "state_format": "prob",
60
+ "target_loss": "hard_ce",
61
+ "meanflow_weight": 0.0,
62
+ "rollout_train_prob": 0.5,
63
+ "rollout_train_steps": 1,
64
+ "rollout_train_infer_steps": 64,
65
+ "rollout_train_temp": 1.45,
66
+ "rollout_train_max_gamma": 1.0,
67
+ "rollout_train_corrupt_only": true,
68
+ "rollout_train_samplewise": true,
69
+ "rollout_train_compute_always": false,
70
+ "bridge_noise_init": "logistic_normal",
71
+ "noise_sigma": -1.0,
72
+ "allow_tf32": true,
73
+ "activation_checkpointing": false,
74
+ "activation_checkpoint_interval": 1,
75
+ "activation_checkpoint_scope": "block",
76
+ "ddp_static_graph": false,
77
+ "ddp_gradient_as_bucket_view": true,
78
+ "blocking_data_transfer": false,
79
+ "dataloader_prefetch_factor": 4,
80
+ "full_train_stats": false,
81
+ "record_pad_truncate": false,
82
+ "record_add_eos": false,
83
+ "record_add_special_tokens": false,
84
+ "record_pad_token": "pad",
85
+ "record_shuffle_buffer": 10000,
86
+ "wrap": true,
87
+ "wrap_mode": "stream",
88
+ "wrap_record_buffer_size": 200,
89
+ "owt_cached_chunks": true,
90
+ "owt_chunk_cache_dir": "/e2e-data/evad-tech-vla/wanghan58/data/small_benchmarks/langflow_2604_11748/openwebtext_lta_cached_chunks/gpt2_len1024_train_minus_100k",
91
+ "owt_chunk_cache_rebuild": false,
92
+ "owt_chunk_cache_write_batch": 4096,
93
+ "owt_exact_repeat_per_chunk": 0,
94
+ "online_chunk_shuffle": false,
95
+ "online_chunk_shuffle_buffer": 10000,
96
+ "openwebtext_split": "train_minus_100k",
97
+ "detokenizer": "auto",
98
+ "resolved_detokenizer": null,
99
+ "num_workers": 4,
100
+ "latest_every": 0,
101
+ "resume_path": ""
102
+ }
103
+ step=20 micro_steps=80 elapsed=74.7s lr=2.100000e-05 loss=10.8125 loss_recon=10.8125 loss_meanflow=0.0000 mean_model_t=0.4997 mean_corrupt_t=0.4997 mean_loss_t_weight=1.0000 prior_center_loss_beta=0.0000 rollout_train_applied=0.5125 acc_all=0.0006 acc_corrupt=0.0006 corrupt_frac=0.5791 loss_all=10.8125 loss_corrupt=10.8125 acc_corrupt_t_0p0_0p2=0.0022 corrupt_frac_t_0p0_0p2=0.2347 acc_corrupt_t_0p2_0p4=0.0004 corrupt_frac_t_0p2_0p4=0.1446 acc_corrupt_t_0p4_0p6=0.0000 corrupt_frac_t_0p4_0p6=0.0960 acc_corrupt_t_0p6_0p8=0.0000 corrupt_frac_t_0p6_0p8=0.0845 acc_corrupt_t_0p8_1p0=0.0000 corrupt_frac_t_0p8_1p0=0.4403 wrong_frac=0.4264 init_acc_corrupt=0.5383 init_gold_top10=0.5672 init_gold_top100=0.6066 rollout_applied_pos_frac=0.5383 init_acc_rollout_applied=0.6241 init_acc_rollout_kept=0.4383 logit_acc_rollout_applied=0.0009 logit_acc_rollout_kept=0.0002
104
+ step=40 micro_steps=160 elapsed=83.6s lr=4.100000e-05 loss=10.8125 loss_recon=10.8125 loss_meanflow=0.0000 mean_model_t=0.4828 mean_corrupt_t=0.4828 mean_loss_t_weight=1.0000 prior_center_loss_beta=0.0000 rollout_train_applied=0.5297 acc_all=0.0008 acc_corrupt=0.0010 corrupt_frac=0.5686 loss_all=10.8125 loss_corrupt=10.8125 acc_corrupt_t_0p0_0p2=0.0012 corrupt_frac_t_0p0_0p2=0.2223 acc_corrupt_t_0p2_0p4=0.0000 corrupt_frac_t_0p2_0p4=0.2560 acc_corrupt_t_0p4_0p6=0.0028 corrupt_frac_t_0p4_0p6=0.1561 acc_corrupt_t_0p6_0p8=0.0006 corrupt_frac_t_0p6_0p8=0.1894 acc_corrupt_t_0p8_1p0=0.0009 corrupt_frac_t_0p8_1p0=0.1763 wrong_frac=0.5301 init_acc_corrupt=0.4423 init_gold_top10=0.4647 init_gold_top100=0.5085 rollout_applied_pos_frac=0.6069 init_acc_rollout_applied=0.4848 init_acc_rollout_kept=0.3766 logit_acc_rollout_applied=0.0008 logit_acc_rollout_kept=0.0012
LTA_openwebtext_dualt/logs/selfcond_4gpu/lta_owt_gpt2cached_len1024_selfcond_p05_rollout1_samplewise_c1024_ddit768x12_muon_ema_gbs512_4gpu_50k_20260513_233654.log ADDED
@@ -0,0 +1,520 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ NCCL version 2.25.1+cuda12.8
2
+ {
3
+ "device": "cuda:0",
4
+ "rank": 0,
5
+ "world_size": 4,
6
+ "samples": "owt_cached_chunks:8734897",
7
+ "vocab_size": 50257,
8
+ "tokenizer_vocab_size": 50257,
9
+ "save_dir": "runs/lta_owt_gpt2cached_len1024_selfcond_p05_rollout1_samplewise_c1024_ddit768x12_muon_ema_gbs512_4gpu_50k_20260513_233654",
10
+ "batch_size": 32,
11
+ "grad_accum": 4,
12
+ "effective_batch_size": 512,
13
+ "global_batch_size": 512,
14
+ "lr_schedule": "constant_warmup",
15
+ "optimizer": "muon",
16
+ "warmup_steps": 2000,
17
+ "min_lr": 0.0,
18
+ "weight_decay": 0.0,
19
+ "adamw_param_groups": "nanogpt",
20
+ "adam_beta1": 0.9,
21
+ "adam_beta2": 0.95,
22
+ "adam_eps": 1e-08,
23
+ "muon_momentum": 0.95,
24
+ "muon_ns_steps": 5,
25
+ "muon_update_scale": 1.0,
26
+ "ema_decay": 0.9999,
27
+ "ema_start_step": 0,
28
+ "model_type": "ddit",
29
+ "dual_t": true,
30
+ "corrupt_t_mode": "same",
31
+ "corrupt_min_t": 0.0,
32
+ "corrupt_max_t": 1.0,
33
+ "prefix_block_prob": 0.0,
34
+ "prefix_block_len": 128,
35
+ "mask_ratio_floor_schedule": "none",
36
+ "dirichlet_endpoint_mode": "categorical_dual_t",
37
+ "dirichlet_semantic_t_mode": "same",
38
+ "dirichlet_semantic_t_value": 0.0,
39
+ "dirichlet_semantic_t_curve": "linear",
40
+ "dirichlet_semantic_t_power": 1.0,
41
+ "endpoint_sequence_random_prob_alpha": 0.0,
42
+ "categorical_wrong_from_full_vocab": true,
43
+ "categorical_wrong_from_batch_valid_tokens": false,
44
+ "mask_mixture_original_prob": 0.0,
45
+ "mask_mixture_lowk_prob": 0.0,
46
+ "mask_mixture_lowcorrupt_prob": 0.0,
47
+ "mask_mixture_block_prob": 0.0,
48
+ "mask_mixture_all_prob": 0.0,
49
+ "mask_mixture_lowk_clean_tokens": "1,2,4,8,16,32,64",
50
+ "mask_mixture_lowcorrupt_tokens": "1,2,4,8,16,32,64",
51
+ "mask_mixture_block_tokens": "64,128",
52
+ "simplex_bridge_sampler": "dirichlet",
53
+ "logistic_normal_sigma_min": 0.18,
54
+ "logistic_normal_sigma_max": 2.2,
55
+ "logistic_normal_tau_min": 0.65,
56
+ "logistic_normal_tau_max": 1.15,
57
+ "torch_compile": false,
58
+ "compile_mode": "max-autotune",
59
+ "state_format": "prob",
60
+ "target_loss": "hard_ce",
61
+ "meanflow_weight": 0.0,
62
+ "rollout_train_prob": 0.5,
63
+ "rollout_train_steps": 1,
64
+ "rollout_train_infer_steps": 64,
65
+ "rollout_train_temp": 1.45,
66
+ "rollout_train_max_gamma": 1.0,
67
+ "rollout_train_corrupt_only": true,
68
+ "rollout_train_samplewise": true,
69
+ "rollout_train_compute_always": false,
70
+ "bridge_noise_init": "logistic_normal",
71
+ "noise_sigma": -1.0,
72
+ "allow_tf32": true,
73
+ "activation_checkpointing": true,
74
+ "activation_checkpoint_interval": 2,
75
+ "activation_checkpoint_scope": "block",
76
+ "ddp_static_graph": false,
77
+ "ddp_gradient_as_bucket_view": true,
78
+ "blocking_data_transfer": false,
79
+ "dataloader_prefetch_factor": 4,
80
+ "full_train_stats": false,
81
+ "record_pad_truncate": false,
82
+ "record_add_eos": false,
83
+ "record_add_special_tokens": false,
84
+ "record_pad_token": "pad",
85
+ "record_shuffle_buffer": 10000,
86
+ "wrap": true,
87
+ "wrap_mode": "stream",
88
+ "wrap_record_buffer_size": 200,
89
+ "owt_cached_chunks": true,
90
+ "owt_chunk_cache_dir": "/e2e-data/evad-tech-vla/wanghan58/data/small_benchmarks/langflow_2604_11748/openwebtext_lta_cached_chunks/gpt2_len1024_train_minus_100k",
91
+ "owt_chunk_cache_rebuild": false,
92
+ "owt_chunk_cache_write_batch": 4096,
93
+ "owt_exact_repeat_per_chunk": 0,
94
+ "online_chunk_shuffle": false,
95
+ "online_chunk_shuffle_buffer": 10000,
96
+ "openwebtext_split": "train_minus_100k",
97
+ "detokenizer": "auto",
98
+ "resolved_detokenizer": null,
99
+ "num_workers": 4,
100
+ "latest_every": 500,
101
+ "resume_path": ""
102
+ }
103
+ [rank0]: Traceback (most recent call last):
104
+ [rank0]: File "/e2e-data/evad-tech-vla/wanghan58/workspace/LTA_openwebtext_dualt/train.py", line 1591, in <module>
105
+ [rank0]: main()
106
+ [rank0]: File "/e2e-data/evad-tech-vla/wanghan58/workspace/LTA_openwebtext_dualt/train.py", line 1510, in main
107
+ [rank0]: loss.backward()
108
+ [rank0]: File "/usr/local/lib/python3.12/dist-packages/torch/_tensor.py", line 648, in backward
109
+ [rank0]: torch.autograd.backward(
110
+ [rank0]: File "/usr/local/lib/python3.12/dist-packages/torch/autograd/__init__.py", line 347, in backward
111
+ [rank0]: _engine_run_backward(
112
+ [rank0]: File "/usr/local/lib/python3.12/dist-packages/torch/autograd/graph.py", line 823, in _engine_run_backward
113
+ [rank0]: return Variable._execution_engine.run_backward( # Calls into the C++ engine to run the backward pass
114
+ [rank0]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
115
+ [rank0]: File "/usr/local/lib/python3.12/dist-packages/torch/utils/checkpoint.py", line 1128, in unpack_hook
116
+ [rank0]: frame.check_recomputed_tensors_match(gid)
117
+ [rank0]: File "/usr/local/lib/python3.12/dist-packages/torch/utils/checkpoint.py", line 902, in check_recomputed_tensors_match
118
+ [rank0]: raise CheckpointError(
119
+ [rank0]: torch.utils.checkpoint.CheckpointError: torch.utils.checkpoint: Recomputed values for the following tensors have different metadata than during the forward pass.
120
+ [rank0]: tensor at position 0:
121
+ [rank0]: saved metadata: {'shape': torch.Size([32, 1024, 768]), 'dtype': torch.float32, 'device': device(type='cuda', index=0)}
122
+ [rank0]: recomputed metadata: {'shape': torch.Size([32, 128]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=0)}
123
+ [rank0]: tensor at position 1:
124
+ [rank0]: saved metadata: {'shape': torch.Size([32, 1024, 1]), 'dtype': torch.float32, 'device': device(type='cuda', index=0)}
125
+ [rank0]: recomputed metadata: {'shape': torch.Size([32, 1024, 768]), 'dtype': torch.float32, 'device': device(type='cuda', index=0)}
126
+ [rank0]: tensor at position 3:
127
+ [rank0]: saved metadata: {'shape': torch.Size([1, 1, 768]), 'dtype': torch.float32, 'device': device(type='cuda', index=0)}
128
+ [rank0]: recomputed metadata: {'shape': torch.Size([32, 1024, 1]), 'dtype': torch.float32, 'device': device(type='cuda', index=0)}
129
+ [rank0]: tensor at position 4:
130
+ [rank0]: saved metadata: {'shape': torch.Size([32, 1024, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=0)}
131
+ [rank0]: recomputed metadata: {'shape': torch.Size([1, 1, 768]), 'dtype': torch.float32, 'device': device(type='cuda', index=0)}
132
+ [rank0]: tensor at position 5:
133
+ [rank0]: saved metadata: {'shape': torch.Size([32, 1, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=0)}
134
+ [rank0]: recomputed metadata: {'shape': torch.Size([32, 1024, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=0)}
135
+ [rank0]: tensor at position 6:
136
+ [rank0]: saved metadata: {'shape': torch.Size([768, 2304]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=0)}
137
+ [rank0]: recomputed metadata: {'shape': torch.Size([32, 1, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=0)}
138
+ [rank0]: tensor at position 7:
139
+ [rank0]: saved metadata: {'shape': torch.Size([1, 1, 1024, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=0)}
140
+ [rank0]: recomputed metadata: {'shape': torch.Size([32, 1024, 768]), 'dtype': torch.float32, 'device': device(type='cuda', index=0)}
141
+ [rank0]: tensor at position 8:
142
+ [rank0]: saved metadata: {'shape': torch.Size([1, 1, 1024, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=0)}
143
+ [rank0]: recomputed metadata: {'shape': torch.Size([768, 2304]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=0)}
144
+ [rank0]: tensor at position 9:
145
+ [rank0]: saved metadata: {'shape': torch.Size([1, 1, 1024, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=0)}
146
+ [rank0]: recomputed metadata: {'shape': torch.Size([32768, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=0)}
147
+ [rank0]: tensor at position 11:
148
+ [rank0]: saved metadata: {'shape': torch.Size([32, 1024, 12, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=0)}
149
+ [rank0]: recomputed metadata: {'shape': torch.Size([1, 1, 1024, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=0)}
150
+ [rank0]: tensor at position 12:
151
+ [rank0]: saved metadata: {'shape': torch.Size([32, 1024, 12, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=0)}
152
+ [rank0]: recomputed metadata: {'shape': torch.Size([1, 1, 1024, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=0)}
153
+ [rank0]: tensor at position 13:
154
+ [rank0]: saved metadata: {'shape': torch.Size([32, 1024, 12, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=0)}
155
+ [rank0]: recomputed metadata: {'shape': torch.Size([1, 1, 1024, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=0)}
156
+ [rank0]: tensor at position 15:
157
+ [rank0]: saved metadata: {'shape': torch.Size([32, 12, 1024]), 'dtype': torch.float32, 'device': device(type='cuda', index=0)}
158
+ [rank0]: recomputed metadata: {'shape': torch.Size([32, 1024, 12, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=0)}
159
+ [rank0]: tensor at position 16:
160
+ [rank0]: saved metadata: {'shape': torch.Size([2]), 'dtype': torch.int64, 'device': device(type='cuda', index=0)}
161
+ [rank0]: recomputed metadata: {'shape': torch.Size([32, 1024, 12, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=0)}
162
+ [rank0]: tensor at position 17:
163
+ [rank0]: saved metadata: {'shape': torch.Size([768, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=0)}
164
+ [rank0]: recomputed metadata: {'shape': torch.Size([32, 1024, 12, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=0)}
165
+ [rank0]: tensor at position 18:
166
+ [rank0]: saved metadata: {'shape': torch.Size([32, 1, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=0)}
167
+ [rank0]: recomputed metadata: {'shape': torch.Size([32, 12, 1024]), 'dtype': torch.float32, 'device': device(type='cuda', index=0)}
168
+ [rank0]: tensor at position 19:
169
+ [rank0]: saved metadata: {'shape': torch.Size([32, 1024, 768]), 'dtype': torch.float32, 'device': device(type='cuda', index=0)}
170
+ [rank0]: recomputed metadata: {'shape': torch.Size([2]), 'dtype': torch.int64, 'device': device(type='cuda', index=0)}
171
+ [rank0]: tensor at position 20:
172
+ [rank0]: saved metadata: {'shape': torch.Size([32, 1024, 1]), 'dtype': torch.float32, 'device': device(type='cuda', index=0)}
173
+ [rank0]: recomputed metadata: {'shape': torch.Size([768, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=0)}
174
+ [rank0]: tensor at position 21:
175
+ [rank0]: saved metadata: {'shape': torch.Size([32, 1024, 1]), 'dtype': torch.float32, 'device': device(type='cuda', index=0)}
176
+ [rank0]: recomputed metadata: {'shape': torch.Size([32768, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=0)}
177
+ [rank0]: tensor at position 22:
178
+ [rank0]: saved metadata: {'shape': torch.Size([1, 1, 768]), 'dtype': torch.float32, 'device': device(type='cuda', index=0)}
179
+ [rank0]: recomputed metadata: {'shape': torch.Size([32, 1024, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=0)}
180
+ [rank0]: tensor at position 23:
181
+ [rank0]: saved metadata: {'shape': torch.Size([32, 1024, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=0)}
182
+ [rank0]: recomputed metadata: {'shape': torch.Size([32, 1, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=0)}
183
+ [rank0]: tensor at position 24:
184
+ [rank0]: saved metadata: {'shape': torch.Size([32, 1, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=0)}
185
+ [rank0]: recomputed metadata: {'shape': torch.Size([32, 1024, 768]), 'dtype': torch.float32, 'device': device(type='cuda', index=0)}
186
+ [rank0]: tensor at position 25:
187
+ [rank0]: saved metadata: {'shape': torch.Size([768, 3072]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=0)}
188
+ [rank0]: recomputed metadata: {'shape': torch.Size([32, 1024, 1]), 'dtype': torch.float32, 'device': device(type='cuda', index=0)}
189
+ [rank0]: tensor at position 26:
190
+ [rank0]: saved metadata: {'shape': torch.Size([32, 1024, 3072]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=0)}
191
+ [rank0]: recomputed metadata: {'shape': torch.Size([32, 1024, 1]), 'dtype': torch.float32, 'device': device(type='cuda', index=0)}
192
+ [rank0]: tensor at position 27:
193
+ [rank0]: saved metadata: {'shape': torch.Size([3072, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=0)}
194
+ [rank0]: recomputed metadata: {'shape': torch.Size([1, 1, 768]), 'dtype': torch.float32, 'device': device(type='cuda', index=0)}
195
+ [rank0]: tensor at position 28:
196
+ [rank0]: saved metadata: {'shape': torch.Size([32, 1, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=0)}
197
+ [rank0]: recomputed metadata: {'shape': torch.Size([32, 1024, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=0)}
198
+
199
+ [rank3]: Traceback (most recent call last):
200
+ [rank3]: File "/e2e-data/evad-tech-vla/wanghan58/workspace/LTA_openwebtext_dualt/train.py", line 1591, in <module>
201
+ [rank3]: main()
202
+ [rank3]: File "/e2e-data/evad-tech-vla/wanghan58/workspace/LTA_openwebtext_dualt/train.py", line 1510, in main
203
+ [rank3]: loss.backward()
204
+ [rank3]: File "/usr/local/lib/python3.12/dist-packages/torch/_tensor.py", line 648, in backward
205
+ [rank3]: torch.autograd.backward(
206
+ [rank3]: File "/usr/local/lib/python3.12/dist-packages/torch/autograd/__init__.py", line 347, in backward
207
+ [rank3]: _engine_run_backward(
208
+ [rank3]: File "/usr/local/lib/python3.12/dist-packages/torch/autograd/graph.py", line 823, in _engine_run_backward
209
+ [rank3]: return Variable._execution_engine.run_backward( # Calls into the C++ engine to run the backward pass
210
+ [rank3]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
211
+ [rank3]: File "/usr/local/lib/python3.12/dist-packages/torch/utils/checkpoint.py", line 1128, in unpack_hook
212
+ [rank3]: frame.check_recomputed_tensors_match(gid)
213
+ [rank3]: File "/usr/local/lib/python3.12/dist-packages/torch/utils/checkpoint.py", line 902, in check_recomputed_tensors_match
214
+ [rank3]: raise CheckpointError(
215
+ [rank3]: torch.utils.checkpoint.CheckpointError: torch.utils.checkpoint: Recomputed values for the following tensors have different metadata than during the forward pass.
216
+ [rank3]: tensor at position 0:
217
+ [rank3]: saved metadata: {'shape': torch.Size([32, 1024, 768]), 'dtype': torch.float32, 'device': device(type='cuda', index=3)}
218
+ [rank3]: recomputed metadata: {'shape': torch.Size([32, 128]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=3)}
219
+ [rank3]: tensor at position 1:
220
+ [rank3]: saved metadata: {'shape': torch.Size([32, 1024, 1]), 'dtype': torch.float32, 'device': device(type='cuda', index=3)}
221
+ [rank3]: recomputed metadata: {'shape': torch.Size([32, 1024, 768]), 'dtype': torch.float32, 'device': device(type='cuda', index=3)}
222
+ [rank3]: tensor at position 3:
223
+ [rank3]: saved metadata: {'shape': torch.Size([1, 1, 768]), 'dtype': torch.float32, 'device': device(type='cuda', index=3)}
224
+ [rank3]: recomputed metadata: {'shape': torch.Size([32, 1024, 1]), 'dtype': torch.float32, 'device': device(type='cuda', index=3)}
225
+ [rank3]: tensor at position 4:
226
+ [rank3]: saved metadata: {'shape': torch.Size([32, 1024, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=3)}
227
+ [rank3]: recomputed metadata: {'shape': torch.Size([1, 1, 768]), 'dtype': torch.float32, 'device': device(type='cuda', index=3)}
228
+ [rank3]: tensor at position 5:
229
+ [rank3]: saved metadata: {'shape': torch.Size([32, 1, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=3)}
230
+ [rank3]: recomputed metadata: {'shape': torch.Size([32, 1024, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=3)}
231
+ [rank3]: tensor at position 6:
232
+ [rank3]: saved metadata: {'shape': torch.Size([768, 2304]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=3)}
233
+ [rank3]: recomputed metadata: {'shape': torch.Size([32, 1, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=3)}
234
+ [rank3]: tensor at position 7:
235
+ [rank3]: saved metadata: {'shape': torch.Size([1, 1, 1024, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=3)}
236
+ [rank3]: recomputed metadata: {'shape': torch.Size([32, 1024, 768]), 'dtype': torch.float32, 'device': device(type='cuda', index=3)}
237
+ [rank3]: tensor at position 8:
238
+ [rank3]: saved metadata: {'shape': torch.Size([1, 1, 1024, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=3)}
239
+ [rank3]: recomputed metadata: {'shape': torch.Size([768, 2304]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=3)}
240
+ [rank3]: tensor at position 9:
241
+ [rank3]: saved metadata: {'shape': torch.Size([1, 1, 1024, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=3)}
242
+ [rank3]: recomputed metadata: {'shape': torch.Size([32768, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=3)}
243
+ [rank3]: tensor at position 11:
244
+ [rank3]: saved metadata: {'shape': torch.Size([32, 1024, 12, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=3)}
245
+ [rank3]: recomputed metadata: {'shape': torch.Size([1, 1, 1024, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=3)}
246
+ [rank3]: tensor at position 12:
247
+ [rank3]: saved metadata: {'shape': torch.Size([32, 1024, 12, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=3)}
248
+ [rank3]: recomputed metadata: {'shape': torch.Size([1, 1, 1024, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=3)}
249
+ [rank3]: tensor at position 13:
250
+ [rank3]: saved metadata: {'shape': torch.Size([32, 1024, 12, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=3)}
251
+ [rank3]: recomputed metadata: {'shape': torch.Size([1, 1, 1024, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=3)}
252
+ [rank3]: tensor at position 15:
253
+ [rank3]: saved metadata: {'shape': torch.Size([32, 12, 1024]), 'dtype': torch.float32, 'device': device(type='cuda', index=3)}
254
+ [rank3]: recomputed metadata: {'shape': torch.Size([32, 1024, 12, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=3)}
255
+ [rank3]: tensor at position 16:
256
+ [rank3]: saved metadata: {'shape': torch.Size([2]), 'dtype': torch.int64, 'device': device(type='cuda', index=3)}
257
+ [rank3]: recomputed metadata: {'shape': torch.Size([32, 1024, 12, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=3)}
258
+ [rank3]: tensor at position 17:
259
+ [rank3]: saved metadata: {'shape': torch.Size([768, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=3)}
260
+ [rank3]: recomputed metadata: {'shape': torch.Size([32, 1024, 12, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=3)}
261
+ [rank3]: tensor at position 18:
262
+ [rank3]: saved metadata: {'shape': torch.Size([32, 1, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=3)}
263
+ [rank3]: recomputed metadata: {'shape': torch.Size([32, 12, 1024]), 'dtype': torch.float32, 'device': device(type='cuda', index=3)}
264
+ [rank3]: tensor at position 19:
265
+ [rank3]: saved metadata: {'shape': torch.Size([32, 1024, 768]), 'dtype': torch.float32, 'device': device(type='cuda', index=3)}
266
+ [rank3]: recomputed metadata: {'shape': torch.Size([2]), 'dtype': torch.int64, 'device': device(type='cuda', index=3)}
267
+ [rank3]: tensor at position 20:
268
+ [rank3]: saved metadata: {'shape': torch.Size([32, 1024, 1]), 'dtype': torch.float32, 'device': device(type='cuda', index=3)}
269
+ [rank3]: recomputed metadata: {'shape': torch.Size([768, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=3)}
270
+ [rank3]: tensor at position 21:
271
+ [rank3]: saved metadata: {'shape': torch.Size([32, 1024, 1]), 'dtype': torch.float32, 'device': device(type='cuda', index=3)}
272
+ [rank3]: recomputed metadata: {'shape': torch.Size([32768, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=3)}
273
+ [rank3]: tensor at position 22:
274
+ [rank3]: saved metadata: {'shape': torch.Size([1, 1, 768]), 'dtype': torch.float32, 'device': device(type='cuda', index=3)}
275
+ [rank3]: recomputed metadata: {'shape': torch.Size([32, 1024, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=3)}
276
+ [rank3]: tensor at position 23:
277
+ [rank3]: saved metadata: {'shape': torch.Size([32, 1024, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=3)}
278
+ [rank3]: recomputed metadata: {'shape': torch.Size([32, 1, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=3)}
279
+ [rank3]: tensor at position 24:
280
+ [rank3]: saved metadata: {'shape': torch.Size([32, 1, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=3)}
281
+ [rank3]: recomputed metadata: {'shape': torch.Size([32, 1024, 768]), 'dtype': torch.float32, 'device': device(type='cuda', index=3)}
282
+ [rank3]: tensor at position 25:
283
+ [rank3]: saved metadata: {'shape': torch.Size([768, 3072]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=3)}
284
+ [rank3]: recomputed metadata: {'shape': torch.Size([32, 1024, 1]), 'dtype': torch.float32, 'device': device(type='cuda', index=3)}
285
+ [rank3]: tensor at position 26:
286
+ [rank3]: saved metadata: {'shape': torch.Size([32, 1024, 3072]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=3)}
287
+ [rank3]: recomputed metadata: {'shape': torch.Size([32, 1024, 1]), 'dtype': torch.float32, 'device': device(type='cuda', index=3)}
288
+ [rank3]: tensor at position 27:
289
+ [rank3]: saved metadata: {'shape': torch.Size([3072, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=3)}
290
+ [rank3]: recomputed metadata: {'shape': torch.Size([1, 1, 768]), 'dtype': torch.float32, 'device': device(type='cuda', index=3)}
291
+ [rank3]: tensor at position 28:
292
+ [rank3]: saved metadata: {'shape': torch.Size([32, 1, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=3)}
293
+ [rank3]: recomputed metadata: {'shape': torch.Size([32, 1024, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=3)}
294
+
295
+ [rank1]: Traceback (most recent call last):
296
+ [rank1]: File "/e2e-data/evad-tech-vla/wanghan58/workspace/LTA_openwebtext_dualt/train.py", line 1591, in <module>
297
+ [rank1]: main()
298
+ [rank1]: File "/e2e-data/evad-tech-vla/wanghan58/workspace/LTA_openwebtext_dualt/train.py", line 1510, in main
299
+ [rank1]: loss.backward()
300
+ [rank1]: File "/usr/local/lib/python3.12/dist-packages/torch/_tensor.py", line 648, in backward
301
+ [rank1]: torch.autograd.backward(
302
+ [rank1]: File "/usr/local/lib/python3.12/dist-packages/torch/autograd/__init__.py", line 347, in backward
303
+ [rank1]: _engine_run_backward(
304
+ [rank1]: File "/usr/local/lib/python3.12/dist-packages/torch/autograd/graph.py", line 823, in _engine_run_backward
305
+ [rank1]: return Variable._execution_engine.run_backward( # Calls into the C++ engine to run the backward pass
306
+ [rank1]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
307
+ [rank1]: File "/usr/local/lib/python3.12/dist-packages/torch/utils/checkpoint.py", line 1128, in unpack_hook
308
+ [rank1]: frame.check_recomputed_tensors_match(gid)
309
+ [rank1]: File "/usr/local/lib/python3.12/dist-packages/torch/utils/checkpoint.py", line 902, in check_recomputed_tensors_match
310
+ [rank1]: raise CheckpointError(
311
+ [rank1]: torch.utils.checkpoint.CheckpointError: torch.utils.checkpoint: Recomputed values for the following tensors have different metadata than during the forward pass.
312
+ [rank1]: tensor at position 0:
313
+ [rank1]: saved metadata: {'shape': torch.Size([32, 1024, 768]), 'dtype': torch.float32, 'device': device(type='cuda', index=1)}
314
+ [rank1]: recomputed metadata: {'shape': torch.Size([32, 128]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=1)}
315
+ [rank1]: tensor at position 1:
316
+ [rank1]: saved metadata: {'shape': torch.Size([32, 1024, 1]), 'dtype': torch.float32, 'device': device(type='cuda', index=1)}
317
+ [rank1]: recomputed metadata: {'shape': torch.Size([32, 1024, 768]), 'dtype': torch.float32, 'device': device(type='cuda', index=1)}
318
+ [rank1]: tensor at position 3:
319
+ [rank1]: saved metadata: {'shape': torch.Size([1, 1, 768]), 'dtype': torch.float32, 'device': device(type='cuda', index=1)}
320
+ [rank1]: recomputed metadata: {'shape': torch.Size([32, 1024, 1]), 'dtype': torch.float32, 'device': device(type='cuda', index=1)}
321
+ [rank1]: tensor at position 4:
322
+ [rank1]: saved metadata: {'shape': torch.Size([32, 1024, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=1)}
323
+ [rank1]: recomputed metadata: {'shape': torch.Size([1, 1, 768]), 'dtype': torch.float32, 'device': device(type='cuda', index=1)}
324
+ [rank1]: tensor at position 5:
325
+ [rank1]: saved metadata: {'shape': torch.Size([32, 1, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=1)}
326
+ [rank1]: recomputed metadata: {'shape': torch.Size([32, 1024, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=1)}
327
+ [rank1]: tensor at position 6:
328
+ [rank1]: saved metadata: {'shape': torch.Size([768, 2304]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=1)}
329
+ [rank1]: recomputed metadata: {'shape': torch.Size([32, 1, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=1)}
330
+ [rank1]: tensor at position 7:
331
+ [rank1]: saved metadata: {'shape': torch.Size([1, 1, 1024, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=1)}
332
+ [rank1]: recomputed metadata: {'shape': torch.Size([32, 1024, 768]), 'dtype': torch.float32, 'device': device(type='cuda', index=1)}
333
+ [rank1]: tensor at position 8:
334
+ [rank1]: saved metadata: {'shape': torch.Size([1, 1, 1024, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=1)}
335
+ [rank1]: recomputed metadata: {'shape': torch.Size([768, 2304]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=1)}
336
+ [rank1]: tensor at position 9:
337
+ [rank1]: saved metadata: {'shape': torch.Size([1, 1, 1024, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=1)}
338
+ [rank1]: recomputed metadata: {'shape': torch.Size([32768, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=1)}
339
+ [rank1]: tensor at position 11:
340
+ [rank1]: saved metadata: {'shape': torch.Size([32, 1024, 12, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=1)}
341
+ [rank1]: recomputed metadata: {'shape': torch.Size([1, 1, 1024, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=1)}
342
+ [rank1]: tensor at position 12:
343
+ [rank1]: saved metadata: {'shape': torch.Size([32, 1024, 12, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=1)}
344
+ [rank1]: recomputed metadata: {'shape': torch.Size([1, 1, 1024, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=1)}
345
+ [rank1]: tensor at position 13:
346
+ [rank1]: saved metadata: {'shape': torch.Size([32, 1024, 12, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=1)}
347
+ [rank1]: recomputed metadata: {'shape': torch.Size([1, 1, 1024, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=1)}
348
+ [rank1]: tensor at position 15:
349
+ [rank1]: saved metadata: {'shape': torch.Size([32, 12, 1024]), 'dtype': torch.float32, 'device': device(type='cuda', index=1)}
350
+ [rank1]: recomputed metadata: {'shape': torch.Size([32, 1024, 12, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=1)}
351
+ [rank1]: tensor at position 16:
352
+ [rank1]: saved metadata: {'shape': torch.Size([2]), 'dtype': torch.int64, 'device': device(type='cuda', index=1)}
353
+ [rank1]: recomputed metadata: {'shape': torch.Size([32, 1024, 12, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=1)}
354
+ [rank1]: tensor at position 17:
355
+ [rank1]: saved metadata: {'shape': torch.Size([768, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=1)}
356
+ [rank1]: recomputed metadata: {'shape': torch.Size([32, 1024, 12, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=1)}
357
+ [rank1]: tensor at position 18:
358
+ [rank1]: saved metadata: {'shape': torch.Size([32, 1, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=1)}
359
+ [rank1]: recomputed metadata: {'shape': torch.Size([32, 12, 1024]), 'dtype': torch.float32, 'device': device(type='cuda', index=1)}
360
+ [rank1]: tensor at position 19:
361
+ [rank1]: saved metadata: {'shape': torch.Size([32, 1024, 768]), 'dtype': torch.float32, 'device': device(type='cuda', index=1)}
362
+ [rank1]: recomputed metadata: {'shape': torch.Size([2]), 'dtype': torch.int64, 'device': device(type='cuda', index=1)}
363
+ [rank1]: tensor at position 20:
364
+ [rank1]: saved metadata: {'shape': torch.Size([32, 1024, 1]), 'dtype': torch.float32, 'device': device(type='cuda', index=1)}
365
+ [rank1]: recomputed metadata: {'shape': torch.Size([768, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=1)}
366
+ [rank1]: tensor at position 21:
367
+ [rank1]: saved metadata: {'shape': torch.Size([32, 1024, 1]), 'dtype': torch.float32, 'device': device(type='cuda', index=1)}
368
+ [rank1]: recomputed metadata: {'shape': torch.Size([32768, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=1)}
369
+ [rank1]: tensor at position 22:
370
+ [rank1]: saved metadata: {'shape': torch.Size([1, 1, 768]), 'dtype': torch.float32, 'device': device(type='cuda', index=1)}
371
+ [rank1]: recomputed metadata: {'shape': torch.Size([32, 1024, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=1)}
372
+ [rank1]: tensor at position 23:
373
+ [rank1]: saved metadata: {'shape': torch.Size([32, 1024, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=1)}
374
+ [rank1]: recomputed metadata: {'shape': torch.Size([32, 1, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=1)}
375
+ [rank1]: tensor at position 24:
376
+ [rank1]: saved metadata: {'shape': torch.Size([32, 1, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=1)}
377
+ [rank1]: recomputed metadata: {'shape': torch.Size([32, 1024, 768]), 'dtype': torch.float32, 'device': device(type='cuda', index=1)}
378
+ [rank1]: tensor at position 25:
379
+ [rank1]: saved metadata: {'shape': torch.Size([768, 3072]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=1)}
380
+ [rank1]: recomputed metadata: {'shape': torch.Size([32, 1024, 1]), 'dtype': torch.float32, 'device': device(type='cuda', index=1)}
381
+ [rank1]: tensor at position 26:
382
+ [rank1]: saved metadata: {'shape': torch.Size([32, 1024, 3072]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=1)}
383
+ [rank1]: recomputed metadata: {'shape': torch.Size([32, 1024, 1]), 'dtype': torch.float32, 'device': device(type='cuda', index=1)}
384
+ [rank1]: tensor at position 27:
385
+ [rank1]: saved metadata: {'shape': torch.Size([3072, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=1)}
386
+ [rank1]: recomputed metadata: {'shape': torch.Size([1, 1, 768]), 'dtype': torch.float32, 'device': device(type='cuda', index=1)}
387
+ [rank1]: tensor at position 28:
388
+ [rank1]: saved metadata: {'shape': torch.Size([32, 1, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=1)}
389
+ [rank1]: recomputed metadata: {'shape': torch.Size([32, 1024, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=1)}
390
+
391
+ [rank2]: Traceback (most recent call last):
392
+ [rank2]: File "/e2e-data/evad-tech-vla/wanghan58/workspace/LTA_openwebtext_dualt/train.py", line 1591, in <module>
393
+ [rank2]: main()
394
+ [rank2]: File "/e2e-data/evad-tech-vla/wanghan58/workspace/LTA_openwebtext_dualt/train.py", line 1510, in main
395
+ [rank2]: loss.backward()
396
+ [rank2]: File "/usr/local/lib/python3.12/dist-packages/torch/_tensor.py", line 648, in backward
397
+ [rank2]: torch.autograd.backward(
398
+ [rank2]: File "/usr/local/lib/python3.12/dist-packages/torch/autograd/__init__.py", line 347, in backward
399
+ [rank2]: _engine_run_backward(
400
+ [rank2]: File "/usr/local/lib/python3.12/dist-packages/torch/autograd/graph.py", line 823, in _engine_run_backward
401
+ [rank2]: return Variable._execution_engine.run_backward( # Calls into the C++ engine to run the backward pass
402
+ [rank2]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
403
+ [rank2]: File "/usr/local/lib/python3.12/dist-packages/torch/utils/checkpoint.py", line 1128, in unpack_hook
404
+ [rank2]: frame.check_recomputed_tensors_match(gid)
405
+ [rank2]: File "/usr/local/lib/python3.12/dist-packages/torch/utils/checkpoint.py", line 902, in check_recomputed_tensors_match
406
+ [rank2]: raise CheckpointError(
407
+ [rank2]: torch.utils.checkpoint.CheckpointError: torch.utils.checkpoint: Recomputed values for the following tensors have different metadata than during the forward pass.
408
+ [rank2]: tensor at position 0:
409
+ [rank2]: saved metadata: {'shape': torch.Size([32, 1024, 768]), 'dtype': torch.float32, 'device': device(type='cuda', index=2)}
410
+ [rank2]: recomputed metadata: {'shape': torch.Size([32, 128]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=2)}
411
+ [rank2]: tensor at position 1:
412
+ [rank2]: saved metadata: {'shape': torch.Size([32, 1024, 1]), 'dtype': torch.float32, 'device': device(type='cuda', index=2)}
413
+ [rank2]: recomputed metadata: {'shape': torch.Size([32, 1024, 768]), 'dtype': torch.float32, 'device': device(type='cuda', index=2)}
414
+ [rank2]: tensor at position 3:
415
+ [rank2]: saved metadata: {'shape': torch.Size([1, 1, 768]), 'dtype': torch.float32, 'device': device(type='cuda', index=2)}
416
+ [rank2]: recomputed metadata: {'shape': torch.Size([32, 1024, 1]), 'dtype': torch.float32, 'device': device(type='cuda', index=2)}
417
+ [rank2]: tensor at position 4:
418
+ [rank2]: saved metadata: {'shape': torch.Size([32, 1024, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=2)}
419
+ [rank2]: recomputed metadata: {'shape': torch.Size([1, 1, 768]), 'dtype': torch.float32, 'device': device(type='cuda', index=2)}
420
+ [rank2]: tensor at position 5:
421
+ [rank2]: saved metadata: {'shape': torch.Size([32, 1, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=2)}
422
+ [rank2]: recomputed metadata: {'shape': torch.Size([32, 1024, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=2)}
423
+ [rank2]: tensor at position 6:
424
+ [rank2]: saved metadata: {'shape': torch.Size([768, 2304]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=2)}
425
+ [rank2]: recomputed metadata: {'shape': torch.Size([32, 1, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=2)}
426
+ [rank2]: tensor at position 7:
427
+ [rank2]: saved metadata: {'shape': torch.Size([1, 1, 1024, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=2)}
428
+ [rank2]: recomputed metadata: {'shape': torch.Size([32, 1024, 768]), 'dtype': torch.float32, 'device': device(type='cuda', index=2)}
429
+ [rank2]: tensor at position 8:
430
+ [rank2]: saved metadata: {'shape': torch.Size([1, 1, 1024, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=2)}
431
+ [rank2]: recomputed metadata: {'shape': torch.Size([768, 2304]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=2)}
432
+ [rank2]: tensor at position 9:
433
+ [rank2]: saved metadata: {'shape': torch.Size([1, 1, 1024, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=2)}
434
+ [rank2]: recomputed metadata: {'shape': torch.Size([32768, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=2)}
435
+ [rank2]: tensor at position 11:
436
+ [rank2]: saved metadata: {'shape': torch.Size([32, 1024, 12, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=2)}
437
+ [rank2]: recomputed metadata: {'shape': torch.Size([1, 1, 1024, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=2)}
438
+ [rank2]: tensor at position 12:
439
+ [rank2]: saved metadata: {'shape': torch.Size([32, 1024, 12, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=2)}
440
+ [rank2]: recomputed metadata: {'shape': torch.Size([1, 1, 1024, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=2)}
441
+ [rank2]: tensor at position 13:
442
+ [rank2]: saved metadata: {'shape': torch.Size([32, 1024, 12, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=2)}
443
+ [rank2]: recomputed metadata: {'shape': torch.Size([1, 1, 1024, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=2)}
444
+ [rank2]: tensor at position 15:
445
+ [rank2]: saved metadata: {'shape': torch.Size([32, 12, 1024]), 'dtype': torch.float32, 'device': device(type='cuda', index=2)}
446
+ [rank2]: recomputed metadata: {'shape': torch.Size([32, 1024, 12, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=2)}
447
+ [rank2]: tensor at position 16:
448
+ [rank2]: saved metadata: {'shape': torch.Size([2]), 'dtype': torch.int64, 'device': device(type='cuda', index=2)}
449
+ [rank2]: recomputed metadata: {'shape': torch.Size([32, 1024, 12, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=2)}
450
+ [rank2]: tensor at position 17:
451
+ [rank2]: saved metadata: {'shape': torch.Size([768, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=2)}
452
+ [rank2]: recomputed metadata: {'shape': torch.Size([32, 1024, 12, 64]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=2)}
453
+ [rank2]: tensor at position 18:
454
+ [rank2]: saved metadata: {'shape': torch.Size([32, 1, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=2)}
455
+ [rank2]: recomputed metadata: {'shape': torch.Size([32, 12, 1024]), 'dtype': torch.float32, 'device': device(type='cuda', index=2)}
456
+ [rank2]: tensor at position 19:
457
+ [rank2]: saved metadata: {'shape': torch.Size([32, 1024, 768]), 'dtype': torch.float32, 'device': device(type='cuda', index=2)}
458
+ [rank2]: recomputed metadata: {'shape': torch.Size([2]), 'dtype': torch.int64, 'device': device(type='cuda', index=2)}
459
+ [rank2]: tensor at position 20:
460
+ [rank2]: saved metadata: {'shape': torch.Size([32, 1024, 1]), 'dtype': torch.float32, 'device': device(type='cuda', index=2)}
461
+ [rank2]: recomputed metadata: {'shape': torch.Size([768, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=2)}
462
+ [rank2]: tensor at position 21:
463
+ [rank2]: saved metadata: {'shape': torch.Size([32, 1024, 1]), 'dtype': torch.float32, 'device': device(type='cuda', index=2)}
464
+ [rank2]: recomputed metadata: {'shape': torch.Size([32768, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=2)}
465
+ [rank2]: tensor at position 22:
466
+ [rank2]: saved metadata: {'shape': torch.Size([1, 1, 768]), 'dtype': torch.float32, 'device': device(type='cuda', index=2)}
467
+ [rank2]: recomputed metadata: {'shape': torch.Size([32, 1024, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=2)}
468
+ [rank2]: tensor at position 23:
469
+ [rank2]: saved metadata: {'shape': torch.Size([32, 1024, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=2)}
470
+ [rank2]: recomputed metadata: {'shape': torch.Size([32, 1, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=2)}
471
+ [rank2]: tensor at position 24:
472
+ [rank2]: saved metadata: {'shape': torch.Size([32, 1, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=2)}
473
+ [rank2]: recomputed metadata: {'shape': torch.Size([32, 1024, 768]), 'dtype': torch.float32, 'device': device(type='cuda', index=2)}
474
+ [rank2]: tensor at position 25:
475
+ [rank2]: saved metadata: {'shape': torch.Size([768, 3072]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=2)}
476
+ [rank2]: recomputed metadata: {'shape': torch.Size([32, 1024, 1]), 'dtype': torch.float32, 'device': device(type='cuda', index=2)}
477
+ [rank2]: tensor at position 26:
478
+ [rank2]: saved metadata: {'shape': torch.Size([32, 1024, 3072]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=2)}
479
+ [rank2]: recomputed metadata: {'shape': torch.Size([32, 1024, 1]), 'dtype': torch.float32, 'device': device(type='cuda', index=2)}
480
+ [rank2]: tensor at position 27:
481
+ [rank2]: saved metadata: {'shape': torch.Size([3072, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=2)}
482
+ [rank2]: recomputed metadata: {'shape': torch.Size([1, 1, 768]), 'dtype': torch.float32, 'device': device(type='cuda', index=2)}
483
+ [rank2]: tensor at position 28:
484
+ [rank2]: saved metadata: {'shape': torch.Size([32, 1, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=2)}
485
+ [rank2]: recomputed metadata: {'shape': torch.Size([32, 1024, 768]), 'dtype': torch.bfloat16, 'device': device(type='cuda', index=2)}
486
+
487
+ W0513 23:37:21.171000 944815 torch/distributed/elastic/agent/server/api.py:719] Received 15 death signal, shutting down workers
488
+ W0513 23:37:21.173000 944815 torch/distributed/elastic/multiprocessing/api.py:898] Sending process 944821 closing signal SIGTERM
489
+ W0513 23:37:21.173000 944815 torch/distributed/elastic/multiprocessing/api.py:898] Sending process 944822 closing signal SIGTERM
490
+ W0513 23:37:21.173000 944815 torch/distributed/elastic/multiprocessing/api.py:898] Sending process 944823 closing signal SIGTERM
491
+ W0513 23:37:21.174000 944815 torch/distributed/elastic/multiprocessing/api.py:898] Sending process 944824 closing signal SIGTERM
492
+ Traceback (most recent call last):
493
+ File "<frozen runpy>", line 198, in _run_module_as_main
494
+ File "<frozen runpy>", line 88, in _run_code
495
+ File "/usr/local/lib/python3.12/dist-packages/torch/distributed/run.py", line 922, in <module>
496
+ main()
497
+ File "/usr/local/lib/python3.12/dist-packages/torch/distributed/elastic/multiprocessing/errors/__init__.py", line 355, in wrapper
498
+ return f(*args, **kwargs)
499
+ ^^^^^^^^^^^^^^^^^^
500
+ File "/usr/local/lib/python3.12/dist-packages/torch/distributed/run.py", line 918, in main
501
+ run(args)
502
+ File "/usr/local/lib/python3.12/dist-packages/torch/distributed/run.py", line 909, in run
503
+ elastic_launch(
504
+ File "/usr/local/lib/python3.12/dist-packages/torch/distributed/launcher/api.py", line 139, in __call__
505
+ return launch_agent(self._config, self._entrypoint, list(args))
506
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
507
+ File "/usr/local/lib/python3.12/dist-packages/torch/distributed/launcher/api.py", line 261, in launch_agent
508
+ result = agent.run()
509
+ ^^^^^^^^^^^
510
+ File "/usr/local/lib/python3.12/dist-packages/torch/distributed/elastic/metrics/api.py", line 137, in wrapper
511
+ result = f(*args, **kwargs)
512
+ ^^^^^^^^^^^^^^^^^^
513
+ File "/usr/local/lib/python3.12/dist-packages/torch/distributed/elastic/agent/server/api.py", line 711, in run
514
+ result = self._invoke_run(role)
515
+ ^^^^^^^^^^^^^^^^^^^^^^
516
+ File "/usr/local/lib/python3.12/dist-packages/torch/distributed/elastic/agent/server/api.py", line 870, in _invoke_run
517
+ time.sleep(monitor_interval)
518
+ File "/usr/local/lib/python3.12/dist-packages/torch/distributed/elastic/multiprocessing/api.py", line 84, in _terminate_process_handler
519
+ raise SignalException(f"Process {os.getpid()} got signal: {sigval}", sigval=sigval)
520
+ torch.distributed.elastic.multiprocessing.api.SignalException: Process 944815 got signal: 15
LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/huggingface_hub-1.16.4.dist-info/INSTALLER ADDED
@@ -0,0 +1 @@
 
 
1
+ uv
LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/huggingface_hub-1.16.4.dist-info/METADATA ADDED
@@ -0,0 +1,329 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Metadata-Version: 2.4
2
+ Name: huggingface_hub
3
+ Version: 1.16.4
4
+ Summary: Client library to download and publish models, datasets and other repos on the huggingface.co hub
5
+ Home-page: https://github.com/huggingface/huggingface_hub
6
+ Author: Hugging Face, Inc.
7
+ Author-email: julien@huggingface.co
8
+ License: Apache-2.0
9
+ Keywords: model-hub machine-learning models natural-language-processing deep-learning pytorch pretrained-models
10
+ Classifier: Intended Audience :: Developers
11
+ Classifier: Intended Audience :: Education
12
+ Classifier: Intended Audience :: Science/Research
13
+ Classifier: License :: OSI Approved :: Apache Software License
14
+ Classifier: Operating System :: OS Independent
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3 :: Only
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Programming Language :: Python :: 3.14
22
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
23
+ Requires-Python: >=3.10.0
24
+ Description-Content-Type: text/markdown
25
+ License-File: LICENSE
26
+ Requires-Dist: click>=8.4.0
27
+ Requires-Dist: filelock>=3.10.0
28
+ Requires-Dist: fsspec>=2023.5.0
29
+ Requires-Dist: hf-xet<2.0.0,>=1.4.3; platform_machine == "x86_64" or platform_machine == "amd64" or platform_machine == "AMD64" or platform_machine == "arm64" or platform_machine == "aarch64"
30
+ Requires-Dist: httpx<1,>=0.23.0
31
+ Requires-Dist: packaging>=20.9
32
+ Requires-Dist: pyyaml>=5.1
33
+ Requires-Dist: tqdm>=4.42.1
34
+ Requires-Dist: typer<0.26.0,>=0.20.0
35
+ Requires-Dist: typing-extensions>=4.1.0
36
+ Provides-Extra: oauth
37
+ Requires-Dist: authlib>=1.3.2; extra == "oauth"
38
+ Requires-Dist: fastapi; extra == "oauth"
39
+ Requires-Dist: httpx; extra == "oauth"
40
+ Requires-Dist: itsdangerous; extra == "oauth"
41
+ Provides-Extra: torch
42
+ Requires-Dist: torch; extra == "torch"
43
+ Requires-Dist: safetensors[torch]; extra == "torch"
44
+ Provides-Extra: fastai
45
+ Requires-Dist: toml; extra == "fastai"
46
+ Requires-Dist: fastai>=2.4; extra == "fastai"
47
+ Requires-Dist: fastcore>=1.3.27; extra == "fastai"
48
+ Provides-Extra: hf-xet
49
+ Requires-Dist: hf-xet<2.0.0,>=1.4.3; extra == "hf-xet"
50
+ Provides-Extra: mcp
51
+ Requires-Dist: mcp>=1.8.0; extra == "mcp"
52
+ Provides-Extra: testing
53
+ Requires-Dist: authlib>=1.3.2; extra == "testing"
54
+ Requires-Dist: fastapi; extra == "testing"
55
+ Requires-Dist: httpx; extra == "testing"
56
+ Requires-Dist: itsdangerous; extra == "testing"
57
+ Requires-Dist: jedi; extra == "testing"
58
+ Requires-Dist: Jinja2; extra == "testing"
59
+ Requires-Dist: pytest>=8.4.2; extra == "testing"
60
+ Requires-Dist: pytest-cov; extra == "testing"
61
+ Requires-Dist: pytest-env; extra == "testing"
62
+ Requires-Dist: pytest-xdist; extra == "testing"
63
+ Requires-Dist: pytest-vcr; extra == "testing"
64
+ Requires-Dist: pytest-asyncio; extra == "testing"
65
+ Requires-Dist: pytest-rerunfailures<16.0; extra == "testing"
66
+ Requires-Dist: pytest-mock; extra == "testing"
67
+ Requires-Dist: urllib3<2.0; extra == "testing"
68
+ Requires-Dist: soundfile; extra == "testing"
69
+ Requires-Dist: Pillow; extra == "testing"
70
+ Requires-Dist: numpy; extra == "testing"
71
+ Requires-Dist: duckdb; extra == "testing"
72
+ Requires-Dist: fastapi; extra == "testing"
73
+ Provides-Extra: gradio
74
+ Requires-Dist: gradio>=5.0.0; extra == "gradio"
75
+ Requires-Dist: requests; extra == "gradio"
76
+ Provides-Extra: typing
77
+ Requires-Dist: typing-extensions>=4.8.0; extra == "typing"
78
+ Requires-Dist: types-PyYAML; extra == "typing"
79
+ Requires-Dist: types-simplejson; extra == "typing"
80
+ Requires-Dist: types-toml; extra == "typing"
81
+ Requires-Dist: types-tqdm; extra == "typing"
82
+ Requires-Dist: types-urllib3; extra == "typing"
83
+ Provides-Extra: quality
84
+ Requires-Dist: ruff>=0.9.0; extra == "quality"
85
+ Requires-Dist: mypy==1.15.0; extra == "quality"
86
+ Requires-Dist: libcst>=1.4.0; extra == "quality"
87
+ Requires-Dist: ty; extra == "quality"
88
+ Provides-Extra: all
89
+ Requires-Dist: authlib>=1.3.2; extra == "all"
90
+ Requires-Dist: fastapi; extra == "all"
91
+ Requires-Dist: httpx; extra == "all"
92
+ Requires-Dist: itsdangerous; extra == "all"
93
+ Requires-Dist: jedi; extra == "all"
94
+ Requires-Dist: Jinja2; extra == "all"
95
+ Requires-Dist: pytest>=8.4.2; extra == "all"
96
+ Requires-Dist: pytest-cov; extra == "all"
97
+ Requires-Dist: pytest-env; extra == "all"
98
+ Requires-Dist: pytest-xdist; extra == "all"
99
+ Requires-Dist: pytest-vcr; extra == "all"
100
+ Requires-Dist: pytest-asyncio; extra == "all"
101
+ Requires-Dist: pytest-rerunfailures<16.0; extra == "all"
102
+ Requires-Dist: pytest-mock; extra == "all"
103
+ Requires-Dist: urllib3<2.0; extra == "all"
104
+ Requires-Dist: soundfile; extra == "all"
105
+ Requires-Dist: Pillow; extra == "all"
106
+ Requires-Dist: numpy; extra == "all"
107
+ Requires-Dist: duckdb; extra == "all"
108
+ Requires-Dist: fastapi; extra == "all"
109
+ Requires-Dist: ruff>=0.9.0; extra == "all"
110
+ Requires-Dist: mypy==1.15.0; extra == "all"
111
+ Requires-Dist: libcst>=1.4.0; extra == "all"
112
+ Requires-Dist: ty; extra == "all"
113
+ Requires-Dist: typing-extensions>=4.8.0; extra == "all"
114
+ Requires-Dist: types-PyYAML; extra == "all"
115
+ Requires-Dist: types-simplejson; extra == "all"
116
+ Requires-Dist: types-toml; extra == "all"
117
+ Requires-Dist: types-tqdm; extra == "all"
118
+ Requires-Dist: types-urllib3; extra == "all"
119
+ Provides-Extra: dev
120
+ Requires-Dist: authlib>=1.3.2; extra == "dev"
121
+ Requires-Dist: fastapi; extra == "dev"
122
+ Requires-Dist: httpx; extra == "dev"
123
+ Requires-Dist: itsdangerous; extra == "dev"
124
+ Requires-Dist: jedi; extra == "dev"
125
+ Requires-Dist: Jinja2; extra == "dev"
126
+ Requires-Dist: pytest>=8.4.2; extra == "dev"
127
+ Requires-Dist: pytest-cov; extra == "dev"
128
+ Requires-Dist: pytest-env; extra == "dev"
129
+ Requires-Dist: pytest-xdist; extra == "dev"
130
+ Requires-Dist: pytest-vcr; extra == "dev"
131
+ Requires-Dist: pytest-asyncio; extra == "dev"
132
+ Requires-Dist: pytest-rerunfailures<16.0; extra == "dev"
133
+ Requires-Dist: pytest-mock; extra == "dev"
134
+ Requires-Dist: urllib3<2.0; extra == "dev"
135
+ Requires-Dist: soundfile; extra == "dev"
136
+ Requires-Dist: Pillow; extra == "dev"
137
+ Requires-Dist: numpy; extra == "dev"
138
+ Requires-Dist: duckdb; extra == "dev"
139
+ Requires-Dist: fastapi; extra == "dev"
140
+ Requires-Dist: ruff>=0.9.0; extra == "dev"
141
+ Requires-Dist: mypy==1.15.0; extra == "dev"
142
+ Requires-Dist: libcst>=1.4.0; extra == "dev"
143
+ Requires-Dist: ty; extra == "dev"
144
+ Requires-Dist: typing-extensions>=4.8.0; extra == "dev"
145
+ Requires-Dist: types-PyYAML; extra == "dev"
146
+ Requires-Dist: types-simplejson; extra == "dev"
147
+ Requires-Dist: types-toml; extra == "dev"
148
+ Requires-Dist: types-tqdm; extra == "dev"
149
+ Requires-Dist: types-urllib3; extra == "dev"
150
+ Dynamic: author
151
+ Dynamic: author-email
152
+ Dynamic: classifier
153
+ Dynamic: description
154
+ Dynamic: description-content-type
155
+ Dynamic: home-page
156
+ Dynamic: keywords
157
+ Dynamic: license
158
+ Dynamic: license-file
159
+ Dynamic: provides-extra
160
+ Dynamic: requires-dist
161
+ Dynamic: requires-python
162
+ Dynamic: summary
163
+
164
+ <p align="center">
165
+ <picture>
166
+ <source media="(prefers-color-scheme: dark)" srcset="https://huggingface.co/datasets/huggingface/documentation-images/raw/main/huggingface_hub-dark.svg">
167
+ <source media="(prefers-color-scheme: light)" srcset="https://huggingface.co/datasets/huggingface/documentation-images/raw/main/huggingface_hub.svg">
168
+ <img alt="huggingface_hub library logo" src="https://huggingface.co/datasets/huggingface/documentation-images/raw/main/huggingface_hub.svg" width="352" height="59" style="max-width: 100%">
169
+ </picture>
170
+ <br/>
171
+ <br/>
172
+ </p>
173
+
174
+ <p align="center">
175
+ <i>The official Python client for the Huggingface Hub.</i>
176
+ </p>
177
+
178
+ <p align="center">
179
+ <a href="https://huggingface.co/docs/huggingface_hub/en/index"><img alt="Documentation" src="https://img.shields.io/website/http/huggingface.co/docs/huggingface_hub/index.svg?down_color=red&down_message=offline&up_message=online&label=doc"></a>
180
+ <a href="https://github.com/huggingface/huggingface_hub/releases"><img alt="GitHub release" src="https://img.shields.io/github/release/huggingface/huggingface_hub.svg"></a>
181
+ <a href="https://github.com/huggingface/huggingface_hub"><img alt="PyPi version" src="https://img.shields.io/pypi/pyversions/huggingface_hub.svg"></a>
182
+ <a href="https://pypi.org/project/huggingface-hub"><img alt="PyPI - Downloads" src="https://img.shields.io/pypi/dm/huggingface_hub"></a>
183
+ <a href="https://codecov.io/gh/huggingface/huggingface_hub"><img alt="Code coverage" src="https://codecov.io/gh/huggingface/huggingface_hub/branch/main/graph/badge.svg?token=RXP95LE2XL"></a>
184
+ </p>
185
+
186
+ <h4 align="center">
187
+ <p>
188
+ <b>English</b> |
189
+ <a href="https://github.com/huggingface/huggingface_hub/blob/main/i18n/README_de.md">Deutsch</a> |
190
+ <a href="https://github.com/huggingface/huggingface_hub/blob/main/i18n/README_fr.md">Français</a> |
191
+ <a href="https://github.com/huggingface/huggingface_hub/blob/main/i18n/README_hi.md">हिंदी</a> |
192
+ <a href="https://github.com/huggingface/huggingface_hub/blob/main/i18n/README_ko.md">한국어</a> |
193
+ <a href="https://github.com/huggingface/huggingface_hub/blob/main/i18n/README_cn.md">中文 (简体)</a>
194
+ <p>
195
+ </h4>
196
+
197
+ ---
198
+
199
+ **Documentation**: <a href="https://hf.co/docs/huggingface_hub" target="_blank">https://hf.co/docs/huggingface_hub</a>
200
+
201
+ **Source Code**: <a href="https://github.com/huggingface/huggingface_hub" target="_blank">https://github.com/huggingface/huggingface_hub</a>
202
+
203
+ ---
204
+
205
+ ## Welcome to the huggingface_hub library
206
+
207
+ The `huggingface_hub` library allows you to interact with the [Hugging Face Hub](https://huggingface.co/), a platform democratizing open-source Machine Learning for creators and collaborators. Discover pre-trained models and datasets for your projects or play with the thousands of machine learning apps hosted on the Hub. You can also create and share your own models, datasets and demos with the community. The `huggingface_hub` library provides a simple way to do all these things with Python.
208
+
209
+ ## Key features
210
+
211
+ - [Download files](https://huggingface.co/docs/huggingface_hub/en/guides/download) from the Hub.
212
+ - [Upload files](https://huggingface.co/docs/huggingface_hub/en/guides/upload) to the Hub.
213
+ - [Manage your repositories](https://huggingface.co/docs/huggingface_hub/en/guides/repository).
214
+ - [Run Inference](https://huggingface.co/docs/huggingface_hub/en/guides/inference) on deployed models.
215
+ - [Search](https://huggingface.co/docs/huggingface_hub/en/guides/search) for models, datasets and Spaces.
216
+ - [Share Model Cards](https://huggingface.co/docs/huggingface_hub/en/guides/model-cards) to document your models.
217
+ - [Engage with the community](https://huggingface.co/docs/huggingface_hub/en/guides/community) through PRs and comments.
218
+
219
+ ## Installation
220
+
221
+ Install the `huggingface_hub` package with [pip](https://pypi.org/project/huggingface-hub/):
222
+
223
+ ```bash
224
+ pip install huggingface_hub
225
+ ```
226
+
227
+ We recommend using [`uv`](https://docs.astral.sh/uv/) for a fast and reliable install:
228
+
229
+ ```bash
230
+ uv pip install huggingface_hub
231
+ ```
232
+
233
+ In order to keep the package minimal by default, `huggingface_hub` comes with optional dependencies useful for some use cases. For example, if you want to use the MCP module, run:
234
+
235
+ ```bash
236
+ pip install "huggingface_hub[mcp]"
237
+ ```
238
+
239
+ To learn more about installation and optional dependencies, check out the [installation guide](https://huggingface.co/docs/huggingface_hub/en/installation).
240
+
241
+ ## Quick start
242
+
243
+ ### Download files
244
+
245
+ Download a single file
246
+
247
+ ```py
248
+ from huggingface_hub import hf_hub_download
249
+
250
+ hf_hub_download(repo_id="tiiuae/falcon-7b-instruct", filename="config.json")
251
+ ```
252
+
253
+ Or an entire repository
254
+
255
+ ```py
256
+ from huggingface_hub import snapshot_download
257
+
258
+ snapshot_download("stabilityai/stable-diffusion-2-1")
259
+ ```
260
+
261
+ Files will be downloaded in a local cache folder. More details in [this guide](https://huggingface.co/docs/huggingface_hub/en/guides/manage-cache).
262
+
263
+ ### Login
264
+
265
+ The Hugging Face Hub uses tokens to authenticate applications (see [docs](https://huggingface.co/docs/hub/security-tokens)). To log in your machine, run the following CLI:
266
+
267
+ ```bash
268
+ hf auth login
269
+ # or using an environment variable
270
+ hf auth login --token $HUGGINGFACE_TOKEN
271
+ ```
272
+
273
+ ### Create a repository
274
+
275
+ ```py
276
+ from huggingface_hub import create_repo
277
+
278
+ create_repo(repo_id="super-cool-model")
279
+ ```
280
+
281
+ ### Upload files
282
+
283
+ Upload a single file
284
+
285
+ ```py
286
+ from huggingface_hub import upload_file
287
+
288
+ upload_file(
289
+ path_or_fileobj="/home/lysandre/dummy-test/README.md",
290
+ path_in_repo="README.md",
291
+ repo_id="lysandre/test-model",
292
+ )
293
+ ```
294
+
295
+ Or an entire folder
296
+
297
+ ```py
298
+ from huggingface_hub import upload_folder
299
+
300
+ upload_folder(
301
+ folder_path="/path/to/local/space",
302
+ repo_id="username/my-cool-space",
303
+ repo_type="space",
304
+ )
305
+ ```
306
+
307
+ For details in the [upload guide](https://huggingface.co/docs/huggingface_hub/en/guides/upload).
308
+
309
+ ## Integrating to the Hub.
310
+
311
+ We're partnering with cool open source ML libraries to provide free model hosting and versioning. You can find the existing integrations [here](https://huggingface.co/docs/hub/libraries).
312
+
313
+ The advantages are:
314
+
315
+ - Free model or dataset hosting for libraries and their users.
316
+ - Built-in file versioning, even with very large files, thanks to a git-based approach.
317
+ - In-browser widgets to play with the uploaded models.
318
+ - Anyone can upload a new model for your library, they just need to add the corresponding tag for the model to be discoverable.
319
+ - Fast downloads! We use Cloudfront (a CDN) to geo-replicate downloads so they're blazing fast from anywhere on the globe.
320
+ - Usage stats and more features to come.
321
+
322
+ If you would like to integrate your library, feel free to open an issue to begin the discussion. We wrote a [step-by-step guide](https://huggingface.co/docs/hub/adding-a-library) with ❤️ showing how to do this integration.
323
+
324
+ ## Contributions (feature requests, bugs, etc.) are super welcome 💙💚💛💜🧡❤️
325
+
326
+ Everyone is welcome to contribute, and we value everybody's contribution. Code is not the only way to help the community.
327
+ Answering questions, helping others, reaching out and improving the documentations are immensely valuable to the community.
328
+ We wrote a [contribution guide](https://github.com/huggingface/huggingface_hub/blob/main/CONTRIBUTING.md) to summarize
329
+ how to get started to contribute to this repository.
LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/huggingface_hub-1.16.4.dist-info/RECORD ADDED
@@ -0,0 +1,190 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ../../../bin/hf,sha256=ZjsaqM9VAGvLjgJnKER1v3UphjDyEu_X_7apDAUm85E,403
2
+ ../../../bin/huggingface-cli,sha256=kXACNG2uAqa7QXEUfnxmi_1tLaWSJlthITSbnr6NJq4,415
3
+ ../../../bin/tiny-agents,sha256=NC5jidmsrVRx5-YECf-OWqsWaK8zxUPuVwgRQONhAuw,413
4
+ huggingface_hub-1.16.4.dist-info/INSTALLER,sha256=5hhM4Q4mYTT9z6QB6PGpUAW81PGNFrYrdXMj4oM_6ak,2
5
+ huggingface_hub-1.16.4.dist-info/METADATA,sha256=6sVNOMaSIJ1S8dBKl2DMK3gydvPsjPVfPKd_KgD7B9s,14065
6
+ huggingface_hub-1.16.4.dist-info/RECORD,,
7
+ huggingface_hub-1.16.4.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
+ huggingface_hub-1.16.4.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
9
+ huggingface_hub-1.16.4.dist-info/entry_points.txt,sha256=zP7F_bBSdircPQFysHQZ9F3Lcn5_dCSOEZxVlGCsG0w,212
10
+ huggingface_hub-1.16.4.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
11
+ huggingface_hub-1.16.4.dist-info/top_level.txt,sha256=8KzlQJAY4miUvjAssOAJodqKOw3harNzuiwGQ9qLSSk,16
12
+ huggingface_hub/__init__.py,sha256=OgNUzM7hRg0yUW2A5MDg-pyl3uxGw6txiQ5JEvJqbME,58591
13
+ huggingface_hub/_buckets.py,sha256=gDnbGy6wP_2BtQ7UZE7akiA-j_Bq5ZnlbdieG-FmF3c,44789
14
+ huggingface_hub/_commit_api.py,sha256=cEdBcUeL6e2mb2KSTXV9A5bQPuQ48rF1nhJQ4DqC2-c,40992
15
+ huggingface_hub/_commit_scheduler.py,sha256=VG3zjb7xb66NrFMq_pB9dWIsoqSPoF6CntovV7vUiWg,14684
16
+ huggingface_hub/_dataset_viewer.py,sha256=LE9k4s0WJ0JNdriJ8L6qV_-xfbUVC1VEh7CBd0jOjLI,5675
17
+ huggingface_hub/_eval_results.py,sha256=Og7p7bCl2HQG6ZWlSDyir-CRTXjNWPu3S3q65cTGffs,8126
18
+ huggingface_hub/_hot_reload/__init__.py,sha256=nQEuyVZLAS_463Dff1JH5MorTpkYsBVFCyPhYWY3UyI,606
19
+ huggingface_hub/_hot_reload/client.py,sha256=Ax7qT4CUi5wrg3mDzqkAG8ZzDsCwdcIIS1FIXK0SqD8,4269
20
+ huggingface_hub/_hot_reload/sse_client.py,sha256=49kmsB2P9sxgbZ16ed6F4aLDs3rsHrNpbp6iKlvF90c,4948
21
+ huggingface_hub/_hot_reload/types.py,sha256=d3AOJCLUxT41Fhz4jUrFevm9bfpooe_3PQhpBdgNYSs,2725
22
+ huggingface_hub/_inference_endpoints.py,sha256=rwetck_MnbV-MrTLVN7cazIrxUNYi5x2nBkw1devnxY,17643
23
+ huggingface_hub/_jobs_api.py,sha256=0-hp_z5uaBDkDimIp3eVTOCPRprirdeixMoIpYk0tfQ,17816
24
+ huggingface_hub/_local_folder.py,sha256=Fc_hikyMaZRHtXIDZj38hL7MNkq5nZZVxQF-dd-EkMo,18279
25
+ huggingface_hub/_login.py,sha256=cLfWjoEVwMBNYBLm1EGubGTyJaqsNtDTmy8djo5SBw0,19403
26
+ huggingface_hub/_oauth.py,sha256=S8evEd8JLJHz-JiSjGH4WiIi_A7oDox_xH7E9rN1Jic,18628
27
+ huggingface_hub/_snapshot_download.py,sha256=KqiEBSM8CvVXFAZHUS1lINN94WK05q9-exNWrzYO6kE,20614
28
+ huggingface_hub/_space_api.py,sha256=jaHNfSRes25Rw4GZyyZYq-Gm8WZvUCGPlG4ZatIVdCo,12144
29
+ huggingface_hub/_tensorboard_logger.py,sha256=GA-LhoG4Z-0Zq7w5B9vTIDJbWUkAhiG2d8a-ktlwGDY,8377
30
+ huggingface_hub/_upload_large_folder.py,sha256=BWA1zyOK9W_3YUerX9YWQa3wAYtHRe_ypgsO79JEkqo,31235
31
+ huggingface_hub/_webhooks_payload.py,sha256=B9zqljcm20DGeVxJKba570i6RP-cR9CEupMGBuNDHHA,3544
32
+ huggingface_hub/_webhooks_server.py,sha256=VXOk3FHkbIc28phxknJfaFy5B_EoKOKihoCKyOaWZQk,15767
33
+ huggingface_hub/cli/__init__.py,sha256=A4zmzuHD2OHjQ5zmdfcnsj0JeCzHVPtpzh-wCjInugA,606
34
+ huggingface_hub/cli/_cli_utils.py,sha256=tr08EX3oYLEp1MFSPIuNXsj0CtRI4JieTnWEFyCUL_A,45431
35
+ huggingface_hub/cli/_errors.py,sha256=o-HeTA2pyDnpAZFONYyxzmTtTHO-aUdjrjItzejUi2E,4976
36
+ huggingface_hub/cli/_file_listing.py,sha256=20SGu3-PRJiGZu3wPEMzf8lKgf1eMTLxuF-q59KJeAE,7950
37
+ huggingface_hub/cli/_help_formatter.py,sha256=lRTErOPXukyoT-AF9cnFg9qtAAhIGdhZ6pa0px7Ey3U,1288
38
+ huggingface_hub/cli/_output.py,sha256=AUqT3LDeEuWfNzLVTRQsVN8FA3ezp6KxrfMPdDE2bHg,12069
39
+ huggingface_hub/cli/_skills.py,sha256=Uw8owzRAIse2KZGhf5S4_VsAQQ7pwjl2YOT-W0ZnbgE,10046
40
+ huggingface_hub/cli/auth.py,sha256=N-u8T1pld-ZrY7X9PKtyFO0d8qcj8c0C9PVoCyTkCSo,5311
41
+ huggingface_hub/cli/buckets.py,sha256=gJkyxqtF6t_y5ypxNiBtaE6CG5a4J53SjcSU_mK86ac,25904
42
+ huggingface_hub/cli/cache.py,sha256=T2LgVzYsfM-EFP3WEKZPHNu_r9Bi6ukxaqn0RtQEU6U,26879
43
+ huggingface_hub/cli/collections.py,sha256=ttCZBumqb6p3GAqdW36Ux02h2h2ey7m9qCZPZJVelec,10775
44
+ huggingface_hub/cli/datasets.py,sha256=XK_wgrArGuF3AcRIpMJkqv3VwtGppyIiFBE1EwH3ne4,10816
45
+ huggingface_hub/cli/deprecated_cli.py,sha256=vAK_CR4NE9uzNJ0I59SyBnIln5nlypG4CPoohMoPMVg,1090
46
+ huggingface_hub/cli/discussions.py,sha256=mLUZrTW8h40TLt4pIa4qmBkJusVt970z15fcnwo3uSY,12654
47
+ huggingface_hub/cli/download.py,sha256=eegvJJrV3TTan8ZyESpZiuK8vtZbEQsOKrF7_yRnnWQ,8298
48
+ huggingface_hub/cli/extensions.py,sha256=yQwyQdm-k9OVsezvG99COxl27-YsjoXuB3dR70-Lnqc,22030
49
+ huggingface_hub/cli/hf.py,sha256=71mAgK3VnjV4nRZkVPcSEthnUM-fZgCVvftFAb95kBE,4562
50
+ huggingface_hub/cli/inference_endpoints.py,sha256=0T2FMOo3kIrlJeTjtxgnE1-9BKlelzm0m2g_0jB62UA,14040
51
+ huggingface_hub/cli/jobs.py,sha256=Uq7VgzSJfMhuyLrJn4CbsihR68TcGSfJXU1dO51juZE,38915
52
+ huggingface_hub/cli/lfs.py,sha256=v2yBjwBNOg0WAr6WtT5wWlTxut8OUVmcQ0ryG99OtCA,5876
53
+ huggingface_hub/cli/models.py,sha256=xdiy8l9ECuY0TSUOmfBdryJAy-hjV7tgwg3T7oAUWms,7747
54
+ huggingface_hub/cli/papers.py,sha256=3MR7hZbvH3BxldCbdbbsNh5o7q85wXSHDQhBn9AK_eY,5747
55
+ huggingface_hub/cli/repo_files.py,sha256=0VdacUlJH_fxCMrVutBt-rtOTjYk_2AhlbW5xlAeKck,2440
56
+ huggingface_hub/cli/repos.py,sha256=34XzJQumxruBOlbI3Fot-MbF4wQWLbjPTxLQP8pnWWE,16572
57
+ huggingface_hub/cli/skills.py,sha256=bQKcpRN91ffJLDR8R2qa9Im4_SAg7_25nQmGGXdDhs8,19317
58
+ huggingface_hub/cli/spaces.py,sha256=ie-CXIRCHRrFPyd0K-f5_UtH1nUksYp9dUiyfLe2xDs,38092
59
+ huggingface_hub/cli/system.py,sha256=tqs0BW-hUHHJypPDUUkrl258xYL4AI8tDWwuM0l70So,1722
60
+ huggingface_hub/cli/upload.py,sha256=DXhdx0-Lapiu-HLJg8iP5Mr9xN50sQP2pSNajGH2Lok,10949
61
+ huggingface_hub/cli/upload_large_folder.py,sha256=WDhKyGeH5FqAkesfzCla-nRVQHl6spOVc9VD-iHtcd8,4575
62
+ huggingface_hub/cli/webhooks.py,sha256=uO2t1Kgc4DXy_Ut2nWK3uDlvFrKmqvLUSjb68kbafA0,9268
63
+ huggingface_hub/community.py,sha256=N5OE5Rbc2BMwpNXCFOPQAwn0otqQunsXdEnSE_0J2Xo,12325
64
+ huggingface_hub/constants.py,sha256=VhGIGr8ceqOBm2x9hbh7MV1WKS8T3R3p87RswhBB7Rw,11870
65
+ huggingface_hub/dataclasses.py,sha256=LoEOPRQTXgr9V7OPWvieADLuflW47l6THGaduntlqx4,26047
66
+ huggingface_hub/errors.py,sha256=OVdrv_WpfyOHinFP7_RhZncwafVE0CoFNj0tTsHEC8A,14739
67
+ huggingface_hub/fastai_utils.py,sha256=jwKeVXH_VP0zxnOKVNQCVCkF-stH70l-bExbbrYkBKQ,16583
68
+ huggingface_hub/file_download.py,sha256=02qIL15ANahYpLsCDcah35xFFK5GvIw09LaJxUVTV_A,82745
69
+ huggingface_hub/hf_api.py,sha256=zIRD4dYc1RNcGSWOqoZxgvlSoBo1MGjQNpcyUHA85UA,617952
70
+ huggingface_hub/hf_file_system.py,sha256=qCrdrIwKLjJFiKuVs4EjUgZpRKc0nHXwvzSHrgjvV34,60458
71
+ huggingface_hub/hub_mixin.py,sha256=ljKAtm3qQsY-ARtxY-PCFx0koFXLI37JytMrzpqfnQo,36912
72
+ huggingface_hub/inference/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
+ huggingface_hub/inference/_client.py,sha256=yu99zMNIkXBEpq7WFdRZ8sy1ZICIXI-DwCDxjr17_as,157777
74
+ huggingface_hub/inference/_common.py,sha256=X-fBP8s6xuNTAuQsGVIethE8dNQaa-mK7Ds54qVVDz8,14999
75
+ huggingface_hub/inference/_generated/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
76
+ huggingface_hub/inference/_generated/_async_client.py,sha256=xST7gThlcdS50Ky6KiTo5RukiS5FaFECPi33uaHNnQ4,160988
77
+ huggingface_hub/inference/_generated/types/__init__.py,sha256=e625ENOmTUM4uUL1eAlsZOK7CovNoGBDH-TxSNQhaC4,6869
78
+ huggingface_hub/inference/_generated/types/audio_classification.py,sha256=DGWEvrRPX7xpXlbYY4LMojGcULdEZFTshhNR81rTNcQ,1567
79
+ huggingface_hub/inference/_generated/types/audio_to_audio.py,sha256=2Ep4WkePL7oJwcp5nRJqApwviumGHbft9HhXE9XLHj4,891
80
+ huggingface_hub/inference/_generated/types/automatic_speech_recognition.py,sha256=X0uCj9qwAcOmlKtV3vWH5cAgLGY0PuYIy2eSH7GE1qs,5439
81
+ huggingface_hub/inference/_generated/types/base.py,sha256=EPWp1qudjeEimEAyQ-ptdxpAACoRM8tW342-Ds7pP3I,6938
82
+ huggingface_hub/inference/_generated/types/chat_completion.py,sha256=3yc06ZI0NCZzsaeoxSMWyIHqGc8Vn_6aExncuXa1llE,11100
83
+ huggingface_hub/inference/_generated/types/depth_estimation.py,sha256=5Kn4xNGJg235Cofr1lzO59eRGCuLTZun8z5t6a2do8Q,910
84
+ huggingface_hub/inference/_generated/types/document_question_answering.py,sha256=aUZcrDGexjw8Fnm2rACm_3my77V15NnQHZxj-sa7bjo,3146
85
+ huggingface_hub/inference/_generated/types/feature_extraction.py,sha256=DiO47PqwhdNta_KPDBsXfCPIL6BWNhyCLymxORlqUA0,1509
86
+ huggingface_hub/inference/_generated/types/fill_mask.py,sha256=NhEskgoiMst7U_0cV_S-wryga4_2T5LgpbyQ23vHMp0,1680
87
+ huggingface_hub/inference/_generated/types/image_classification.py,sha256=xWr4OY65EcIIhd7MI610a7xlaAVHQeydi8Gc7tlaPTU,1579
88
+ huggingface_hub/inference/_generated/types/image_segmentation.py,sha256=lZKzbn_gkSi1sYGLb9ryeRr0aDAVrfYh0H5Iiv5JNsY,1935
89
+ huggingface_hub/inference/_generated/types/image_text_to_image.py,sha256=pRQgYKXJbIpEjRBxuIE6NRDtk_km9DSTQ2s2qxkYJRM,2585
90
+ huggingface_hub/inference/_generated/types/image_text_to_video.py,sha256=MVhP8D4eYjpT3hWYkkpuiME-hWY09o7C4rIn_wmnAmY,2450
91
+ huggingface_hub/inference/_generated/types/image_to_image.py,sha256=P9TeMFSnZI_pa6DyinzDPWL0PNm_INJwsqFUEzpwIcU,2262
92
+ huggingface_hub/inference/_generated/types/image_to_text.py,sha256=DCDS0Nqi-4AuATitvZm4EgrzYQuQEQ5lzBcaHuCmHnY,4740
93
+ huggingface_hub/inference/_generated/types/image_to_video.py,sha256=iMCjiFTUza9AW_MyJ1videhYgvMY9QSzQ59kNdTE9QY,2206
94
+ huggingface_hub/inference/_generated/types/object_detection.py,sha256=zNILlyZJh59rNNfqXM5x9uprDCPfEU-bvBtabeKSMzI,1965
95
+ huggingface_hub/inference/_generated/types/question_answering.py,sha256=lIRf8DjRiAsjzWUBEsGt354SB4bvejLokf-8luHw6_o,2845
96
+ huggingface_hub/inference/_generated/types/sentence_similarity.py,sha256=eNGiO4dR-Lft9yOLE0E97jfVyOT_ExDWZW5GeJGdatU,1027
97
+ huggingface_hub/inference/_generated/types/summarization.py,sha256=5Dpt6LRteT-hO9esa3Ty_-xSL5U-zTtVZzy3iKwZRng,1472
98
+ huggingface_hub/inference/_generated/types/table_question_answering.py,sha256=bwn616XJ-eLa5JKzn3m9rZZ3z63INGEUwRSOCWlEh-4,2269
99
+ huggingface_hub/inference/_generated/types/text2text_generation.py,sha256=fotSlPWtIlp_LG26AQvNRXxU-jCUfda5PWsxCkbFeKM,1591
100
+ huggingface_hub/inference/_generated/types/text_classification.py,sha256=uamBzz4YzWQ9mb6yuriykX8r47ZHf0K3eJpOLzB2qJw,1439
101
+ huggingface_hub/inference/_generated/types/text_generation.py,sha256=FRUljypvCSQ2RaiylhlHeLJfHNy8qZvuty6SCB_zcaA,5813
102
+ huggingface_hub/inference/_generated/types/text_to_audio.py,sha256=CiaTUSBdFtOs3gGTosqyQrjCwrN8mVJLRxDDWUtwZpQ,4677
103
+ huggingface_hub/inference/_generated/types/text_to_image.py,sha256=Ju25WIDHE-1n8jlZ_udG4rpAaPYpmghR7-cDgVfuf48,1869
104
+ huggingface_hub/inference/_generated/types/text_to_speech.py,sha256=WqDzWkhZsDcjapkoFrkyjF903SKs7aHhjypsYrn8oBw,4693
105
+ huggingface_hub/inference/_generated/types/text_to_video.py,sha256=KjcDbtChwrIxIdTH6vcesUaMcjL2xjPf2nWEnHazj4Y,1756
106
+ huggingface_hub/inference/_generated/types/token_classification.py,sha256=8KRBlqgFDszaUnPMvdRkZNQaZBtDfBhKZ6SggQldQMM,1894
107
+ huggingface_hub/inference/_generated/types/translation.py,sha256=-j2PC1-qfoxvGMaKesqf5jXelqj0BDlEpfvZ7dsIEJM,1742
108
+ huggingface_hub/inference/_generated/types/video_classification.py,sha256=vfaCqp8MuRMMtGvYCX0x4-AcwEd71kPHgSYJTNIOxLQ,1668
109
+ huggingface_hub/inference/_generated/types/visual_question_answering.py,sha256=sWIB-SuEpW21oU6O5qQF3tt5PavUFsFOa8Xg4upTtek,1654
110
+ huggingface_hub/inference/_generated/types/zero_shot_classification.py,sha256=gx-7WHad7xsNa89iSKSteKHjaHrKbIyzN_nSdJN3HCY,1697
111
+ huggingface_hub/inference/_generated/types/zero_shot_image_classification.py,sha256=JZTQvcbSGrOQlWcPuJvAMT8YziDpBRn1O2RQSw507uY,1449
112
+ huggingface_hub/inference/_generated/types/zero_shot_object_detection.py,sha256=sjdpVUN5zW9aYBymLVUs6i5HVk2qkUBO9ysEjHmsXVM,1605
113
+ huggingface_hub/inference/_mcp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
114
+ huggingface_hub/inference/_mcp/_cli_hacks.py,sha256=KX9HZJPa1p8ngY3mtYGGlVUXfg4vYbbBRs-8HLToP04,3284
115
+ huggingface_hub/inference/_mcp/agent.py,sha256=ufIzMGHore5n252hV5GZPM0ouDXIl6tv5Jl_5gHXnbg,4250
116
+ huggingface_hub/inference/_mcp/cli.py,sha256=YsabbtVJzQ4vNN5km86BYcLV0SgkgE3hM2pIt6BpyAA,9801
117
+ huggingface_hub/inference/_mcp/constants.py,sha256=lLRgR6gRuqJ4u7jqngVUgVYeOzactgJpkTxx66t1piE,2463
118
+ huggingface_hub/inference/_mcp/mcp_client.py,sha256=dGp8PhN6aVw4bDnuSySFSiguHUiz-nzhgv89CVdO7pI,17243
119
+ huggingface_hub/inference/_mcp/types.py,sha256=yHNfPsM9MhD06oeKdkbmrBsW-3WhUeqA26fyfRfx_bk,929
120
+ huggingface_hub/inference/_mcp/utils.py,sha256=gxSB_rBjQ6VrkApKFsxk6-UzhijxkDVNuZrsjW5pL8k,4318
121
+ huggingface_hub/inference/_providers/__init__.py,sha256=w_xvb8LjHqV4lCfxyYS7aRjgF4bw-T3VwuZFemEMq1c,11136
122
+ huggingface_hub/inference/_providers/_common.py,sha256=9Ykgz6nT5ok-p7PpvnxkuNURR-yr85uP9B1wHwbSJ58,13815
123
+ huggingface_hub/inference/_providers/black_forest_labs.py,sha256=HO3DaD97Hqy6b823b6VUPqiEqhHLKGeMVtJ4CMjGRPA,2817
124
+ huggingface_hub/inference/_providers/cerebras.py,sha256=QOJ-1U-os7uE7p6eUnn_P_APq-yQhx28be7c3Tq2EuA,210
125
+ huggingface_hub/inference/_providers/clarifai.py,sha256=1cEXQwhGk4DRKiPCQUa5y-L6okTo4781EImQC8yJVOw,380
126
+ huggingface_hub/inference/_providers/cohere.py,sha256=P9kbIuvQ2rXI1yNmgbw5VKFFTE0huLq2k-BCyDkDico,1226
127
+ huggingface_hub/inference/_providers/deepinfra.py,sha256=EaeeEMJCiKKuAdOjZwq0lWGonzBISr4ucErb6KpVCgE,1564
128
+ huggingface_hub/inference/_providers/fal_ai.py,sha256=Y2vo5Dl3e8EoehplwNshu8LbDT1e7V4ZyhAMqs0wXws,11705
129
+ huggingface_hub/inference/_providers/featherless_ai.py,sha256=C8OHdFpoFyA--pawLTekUmUSRq4sw_r0D-cSPekD4kE,1347
130
+ huggingface_hub/inference/_providers/fireworks_ai.py,sha256=go6XPum8u0-g768HJ_r0S4Gb445gZJxnuY_acktz-9c,1188
131
+ huggingface_hub/inference/_providers/groq.py,sha256=JTk2JV4ZOlaohho7zLAFQtk92kGVsPmLJ1hmzcwsqvQ,315
132
+ huggingface_hub/inference/_providers/hf_inference.py,sha256=d2vdCKSi5CtyQqYndHHvH7SY131-7YHUK3yE7653eIc,9467
133
+ huggingface_hub/inference/_providers/hyperbolic.py,sha256=Zk2rw2k-R0JxrfpcaHhAUuB5D6s40XK0tuvuKwglsUE,1950
134
+ huggingface_hub/inference/_providers/nebius.py,sha256=OTPXQIYxQSwZc8FzhGAHUaa6Mkp3h6LphSVoa_1gY7I,3513
135
+ huggingface_hub/inference/_providers/novita.py,sha256=ATEoSdPAPLMfx3JpBc0sOyLh4upJYP6xHBuo4YEDYvg,2470
136
+ huggingface_hub/inference/_providers/nscale.py,sha256=T1L2JLI9LqYT9_YEdW76YEtxfDNtdGkoFhH-p2LmSxg,1767
137
+ huggingface_hub/inference/_providers/nvidia.py,sha256=ocMuhycyIo8qiJf-E50oHGYuPvMcJC0BexSXBOYaOFg,251
138
+ huggingface_hub/inference/_providers/openai.py,sha256=wwjaaQ55xLmDsDnHpZk52xbuLoGZfWzJkFsE8AdFVaI,1054
139
+ huggingface_hub/inference/_providers/ovhcloud.py,sha256=tdmymlkbddMJKV7NRZ-tH2wymbLPFDTqUSXpWJUXyDQ,314
140
+ huggingface_hub/inference/_providers/publicai.py,sha256=1I2W6rORloB5QHSvky4njZO2XKLTwA-kPdNoauoT5rg,210
141
+ huggingface_hub/inference/_providers/replicate.py,sha256=hte0ZB2RtGFwpAuLrFp2Gbgsn3EOlccCnJkWTDTW__A,6027
142
+ huggingface_hub/inference/_providers/sambanova.py,sha256=2dkhLf5nKGZ8hOqF-oWYHIN-Wckcwq0cMVf8UYgmDy4,1999
143
+ huggingface_hub/inference/_providers/scaleway.py,sha256=MfIc7ZND1sPr__rOmNHZVg0VpECQo0bVyksgIm_32xQ,1174
144
+ huggingface_hub/inference/_providers/together.py,sha256=lrymDZ86n5yoR_Zz7o3AzzSePyo0s7BOBU5digLxb5o,12220
145
+ huggingface_hub/inference/_providers/wavespeed.py,sha256=MGM7Y7r2nQiH_EH0t5UE1o1fT-o3sS7RaQlicS9WHsg,5028
146
+ huggingface_hub/inference/_providers/zai_org.py,sha256=gLJZOEmCPmUZvdM7VDn2nxm4ac3veHdoMgQNR63UeWE,4739
147
+ huggingface_hub/lfs.py,sha256=sVkRZMD8w-3vxaqSDSrsBCog6-lLyWP98u_xR1dIwMo,14123
148
+ huggingface_hub/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
149
+ huggingface_hub/repocard.py,sha256=p2b9GiEzqrMJZW3O41nwiC6AseQhFNbqCbSIpoP_8VE,34829
150
+ huggingface_hub/repocard_data.py,sha256=lI-DEIbmjtlOMvkntqwXA9ED4icTeCvNbAOYc2P2ZMk,33879
151
+ huggingface_hub/serialization/__init__.py,sha256=jCiw_vVQYW52gwVfWiqgocf2Q19kGTQlRGVpf-4SLP8,963
152
+ huggingface_hub/serialization/_base.py,sha256=-bhRW21ZIqza5gE_kWkL8ax-EE6L6xabKkkK35wOX0Y,8176
153
+ huggingface_hub/serialization/_dduf.py,sha256=FmGRg5wkXI5sNCgZgCNJFmqb_nVrrQYOHf4Lqq0d64I,15385
154
+ huggingface_hub/serialization/_torch.py,sha256=BtaCP-G3oYRP6Pj9MhI-ygBsk3JbBPnVDW9huSOgtkk,46897
155
+ huggingface_hub/templates/datasetcard_template.md,sha256=W-EMqR6wndbrnZorkVv56URWPG49l7MATGeI015kTvs,5503
156
+ huggingface_hub/templates/modelcard_template.md,sha256=4AqArS3cqdtbit5Bo-DhjcnDFR-pza5hErLLTPM4Yuc,6870
157
+ huggingface_hub/utils/__init__.py,sha256=XWwVg0UI35d1RmJc-jwmLqUGOPduz7NcGOjEgAiMBj8,4061
158
+ huggingface_hub/utils/_auth.py,sha256=ri-nYdCzDGGm4_sDYux2BUVCR9jxk_QWFmZ4CY_lFgY,8855
159
+ huggingface_hub/utils/_cache_assets.py,sha256=nnzHRtQAR50dQeIK6qKddsmjjTW9v9HZ7b9bq7PJqss,5691
160
+ huggingface_hub/utils/_cache_manager.py,sha256=K3MfxR2we_uU2j5xLD1bMru6zihzDDlyZZm6mGUOxtM,33023
161
+ huggingface_hub/utils/_chunk_utils.py,sha256=pTjy8Z-KLU4W_6D3OUh3E8lCodWDCd6aJwjNDU0C5U8,2121
162
+ huggingface_hub/utils/_datetime.py,sha256=tbNyI0Dkh27oScPUtLIT_8apqIIkXZYbigjOn9S3aMw,2755
163
+ huggingface_hub/utils/_deprecation.py,sha256=n4kNHbGipquSObJ-gxodcfd6lqoe_8s-VIsTuo3Oruk,4865
164
+ huggingface_hub/utils/_detect_agent.py,sha256=tSfJZsIzrPZWYHV77UJY07KLiNkaoxAXaOmF9MXWkdI,3029
165
+ huggingface_hub/utils/_dotenv.py,sha256=QfL6aWFp5NffhJEYFd6FtKHqly5EBpY8Cb-o9t8Ul04,1980
166
+ huggingface_hub/utils/_experimental.py,sha256=q9vUvc1JybVFRQ0GRREG-BLouZEJC_40MxcwbAlOud0,2464
167
+ huggingface_hub/utils/_fixes.py,sha256=jTK1VLmc0ZC9ROSXjKoL5F6kOZFByzirRWIdXxhBfWU,4124
168
+ huggingface_hub/utils/_git_credential.py,sha256=1BhjvIScCOAToDORLOKrR3Szs-m0E5AYHPmC0SD7Nrs,4548
169
+ huggingface_hub/utils/_headers.py,sha256=fHd8JflV1sX02mdQnwc7k1zll3ZXceu-HmmGz0UOEFo,8090
170
+ huggingface_hub/utils/_hf_uris.py,sha256=i_t0aWmFISnhgV84WMu7XXYs6HHT-a6P6aMdAXbR7Bw,16797
171
+ huggingface_hub/utils/_http.py,sha256=SCTMeZjKM9agYGfVfRjtT_eXKMNK9u1-RCSzBif_ojs,42652
172
+ huggingface_hub/utils/_lfs.py,sha256=xMU-ROgNAUpDkzbH6yRZsE-eVYUYTNMGrgVb_QdTv-k,3942
173
+ huggingface_hub/utils/_pagination.py,sha256=buIKERSyWOJqVSY9nv8hImDmNErD-PPOnXosXm2O87Y,1832
174
+ huggingface_hub/utils/_parsing.py,sha256=FKnaKPp169aO_PITL68-eBb-iQXxx89nWbDUQlQbbdA,3461
175
+ huggingface_hub/utils/_paths.py,sha256=ZceF9JnRzNrvrMSvPbgriuRQ3_LpLa3EE8W21bvBxaU,5265
176
+ huggingface_hub/utils/_runtime.py,sha256=GVJ_Dt6y_48TZWl0ui9yPdW8M7rqGblRGyUqKaXxkCo,13493
177
+ huggingface_hub/utils/_safetensors.py,sha256=qFE7OA-vjU8X0zBBtOeNRzLu147KF-PdFoaxkYfWB4M,4426
178
+ huggingface_hub/utils/_subprocess.py,sha256=tFVBBNot_HLVqQ79y873TGb12C4PUTMwub-GhzDTemE,4542
179
+ huggingface_hub/utils/_telemetry.py,sha256=Tpa3YmOLhK_MEnL2i2fRLQy8aqAEZWbj6MKC18Hs8BA,4824
180
+ huggingface_hub/utils/_terminal.py,sha256=BCyoZv8Dv1tbAYaIInRvT-Xl9t9EBMM56AxmJQ2KiZA,3715
181
+ huggingface_hub/utils/_typing.py,sha256=1LeE785YedppXSR9a1fQDu5rhTxX5v9kBYBaHrP65rA,3542
182
+ huggingface_hub/utils/_validators.py,sha256=tuC1U4yxB-4XKIajZMnKZUSKvZ6qPpydY8LItfa0g40,8419
183
+ huggingface_hub/utils/_verification.py,sha256=ZSilnolSkYmHB3vmBlWuuVr53xz59P5uGnxC3H-Hjc0,5434
184
+ huggingface_hub/utils/_xet.py,sha256=v2VI_iVGIp4-mGT44L9nY9R4fdBeVepjUBzsVIeQS1g,9834
185
+ huggingface_hub/utils/_xet_progress_reporting.py,sha256=IlrrHAgHYKsep4o9fhsCtdMFhKxp5rKoHs785x5q21k,6826
186
+ huggingface_hub/utils/endpoint_helpers.py,sha256=9VtIAlxQ5H_4y30sjCAgbu7XCqAtNLC7aRYxaNn0hLI,2366
187
+ huggingface_hub/utils/insecure_hashlib.py,sha256=z3dVUFvdBZ8kQI_8Vzvvlr3ims-EBiY-SYPdnzIKOkw,1008
188
+ huggingface_hub/utils/logging.py,sha256=WaXk5gRa8Ml_LUIH34QCr8suYj8i_8Wot4IDnYJyWyM,4870
189
+ huggingface_hub/utils/sha.py,sha256=h8wxheZpcv671RhtiIFcFmQTDSrogN3kwQx3ZaNEUHg,2121
190
+ huggingface_hub/utils/tqdm.py,sha256=KbHhkB5g76JgGOGCcjAQOaR-oc-wzd4Sr3wqd41ny7k,13350
LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/huggingface_hub-1.16.4.dist-info/REQUESTED ADDED
File without changes
LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/huggingface_hub-1.16.4.dist-info/WHEEL ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (82.0.1)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/huggingface_hub-1.16.4.dist-info/entry_points.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ [console_scripts]
2
+ hf = huggingface_hub.cli.hf:main
3
+ huggingface-cli = huggingface_hub.cli.deprecated_cli:main
4
+ tiny-agents = huggingface_hub.inference._mcp.cli:app
5
+
6
+ [fsspec.specs]
7
+ hf = huggingface_hub.HfFileSystem
LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/huggingface_hub-1.16.4.dist-info/top_level.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ huggingface_hub
LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/idna/compat.py ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from typing import Any, Union
2
+
3
+ from .core import decode, encode
4
+
5
+
6
+ def ToASCII(label: str) -> bytes:
7
+ """Compatibility shim for :rfc:`3490` ``ToASCII``.
8
+
9
+ Delegates to :func:`idna.encode` (IDNA 2008). Provided to ease porting
10
+ of code written against the legacy :mod:`encodings.idna` API; new code
11
+ should call :func:`idna.encode` directly.
12
+
13
+ :param label: The label or domain to encode.
14
+ :returns: The encoded form as ASCII :class:`bytes`.
15
+ """
16
+ return encode(label)
17
+
18
+
19
+ def ToUnicode(label: Union[bytes, bytearray]) -> str:
20
+ """Compatibility shim for :rfc:`3490` ``ToUnicode``.
21
+
22
+ Delegates to :func:`idna.decode` (IDNA 2008). Provided to ease porting
23
+ of code written against the legacy :mod:`encodings.idna` API; new code
24
+ should call :func:`idna.decode` directly.
25
+
26
+ :param label: The label or domain to decode.
27
+ :returns: The decoded Unicode form.
28
+ """
29
+ return decode(label)
30
+
31
+
32
+ def nameprep(s: Any) -> None:
33
+ """Stub for :rfc:`3491` Nameprep, which is not used by IDNA 2008.
34
+
35
+ IDNA 2008 (:rfc:`5891`) replaces Nameprep with the per-codepoint
36
+ validity classes from :rfc:`5892`; this function exists only to
37
+ return a clear error if legacy code attempts to call it.
38
+
39
+ :raises NotImplementedError: Always.
40
+ """
41
+ raise NotImplementedError("IDNA 2008 does not utilise nameprep protocol")
LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/idna/idnadata.py ADDED
@@ -0,0 +1,4366 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # This file is automatically generated by tools/idna-data
2
+
3
+ from functools import cache
4
+
5
+ __version__ = "17.0.0"
6
+
7
+ scripts = {
8
+ "Greek": (
9
+ 0x37000000374,
10
+ 0x37500000378,
11
+ 0x37A0000037E,
12
+ 0x37F00000380,
13
+ 0x38400000385,
14
+ 0x38600000387,
15
+ 0x3880000038B,
16
+ 0x38C0000038D,
17
+ 0x38E000003A2,
18
+ 0x3A3000003E2,
19
+ 0x3F000000400,
20
+ 0x1D2600001D2B,
21
+ 0x1D5D00001D62,
22
+ 0x1D6600001D6B,
23
+ 0x1DBF00001DC0,
24
+ 0x1F0000001F16,
25
+ 0x1F1800001F1E,
26
+ 0x1F2000001F46,
27
+ 0x1F4800001F4E,
28
+ 0x1F5000001F58,
29
+ 0x1F5900001F5A,
30
+ 0x1F5B00001F5C,
31
+ 0x1F5D00001F5E,
32
+ 0x1F5F00001F7E,
33
+ 0x1F8000001FB5,
34
+ 0x1FB600001FC5,
35
+ 0x1FC600001FD4,
36
+ 0x1FD600001FDC,
37
+ 0x1FDD00001FF0,
38
+ 0x1FF200001FF5,
39
+ 0x1FF600001FFF,
40
+ 0x212600002127,
41
+ 0xAB650000AB66,
42
+ 0x101400001018F,
43
+ 0x101A0000101A1,
44
+ 0x1D2000001D246,
45
+ ),
46
+ "Han": (
47
+ 0x2E8000002E9A,
48
+ 0x2E9B00002EF4,
49
+ 0x2F0000002FD6,
50
+ 0x300500003006,
51
+ 0x300700003008,
52
+ 0x30210000302A,
53
+ 0x30380000303C,
54
+ 0x340000004DC0,
55
+ 0x4E000000A000,
56
+ 0xF9000000FA6E,
57
+ 0xFA700000FADA,
58
+ 0x16FE200016FE4,
59
+ 0x16FF000016FF7,
60
+ 0x200000002A6E0,
61
+ 0x2A7000002B81E,
62
+ 0x2B8200002CEAE,
63
+ 0x2CEB00002EBE1,
64
+ 0x2EBF00002EE5E,
65
+ 0x2F8000002FA1E,
66
+ 0x300000003134B,
67
+ 0x313500003347A,
68
+ ),
69
+ "Hebrew": (
70
+ 0x591000005C8,
71
+ 0x5D0000005EB,
72
+ 0x5EF000005F5,
73
+ 0xFB1D0000FB37,
74
+ 0xFB380000FB3D,
75
+ 0xFB3E0000FB3F,
76
+ 0xFB400000FB42,
77
+ 0xFB430000FB45,
78
+ 0xFB460000FB50,
79
+ ),
80
+ "Hiragana": (
81
+ 0x304100003097,
82
+ 0x309D000030A0,
83
+ 0x1B0010001B120,
84
+ 0x1B1320001B133,
85
+ 0x1B1500001B153,
86
+ 0x1F2000001F201,
87
+ ),
88
+ "Katakana": (
89
+ 0x30A1000030FB,
90
+ 0x30FD00003100,
91
+ 0x31F000003200,
92
+ 0x32D0000032FF,
93
+ 0x330000003358,
94
+ 0xFF660000FF70,
95
+ 0xFF710000FF9E,
96
+ 0x1AFF00001AFF4,
97
+ 0x1AFF50001AFFC,
98
+ 0x1AFFD0001AFFF,
99
+ 0x1B0000001B001,
100
+ 0x1B1200001B123,
101
+ 0x1B1550001B156,
102
+ 0x1B1640001B168,
103
+ ),
104
+ }
105
+
106
+
107
+ @cache
108
+ def joining_types() -> dict[int, int]:
109
+ return {
110
+ 0xAD: 84,
111
+ 0x300: 84,
112
+ 0x301: 84,
113
+ 0x302: 84,
114
+ 0x303: 84,
115
+ 0x304: 84,
116
+ 0x305: 84,
117
+ 0x306: 84,
118
+ 0x307: 84,
119
+ 0x308: 84,
120
+ 0x309: 84,
121
+ 0x30A: 84,
122
+ 0x30B: 84,
123
+ 0x30C: 84,
124
+ 0x30D: 84,
125
+ 0x30E: 84,
126
+ 0x30F: 84,
127
+ 0x310: 84,
128
+ 0x311: 84,
129
+ 0x312: 84,
130
+ 0x313: 84,
131
+ 0x314: 84,
132
+ 0x315: 84,
133
+ 0x316: 84,
134
+ 0x317: 84,
135
+ 0x318: 84,
136
+ 0x319: 84,
137
+ 0x31A: 84,
138
+ 0x31B: 84,
139
+ 0x31C: 84,
140
+ 0x31D: 84,
141
+ 0x31E: 84,
142
+ 0x31F: 84,
143
+ 0x320: 84,
144
+ 0x321: 84,
145
+ 0x322: 84,
146
+ 0x323: 84,
147
+ 0x324: 84,
148
+ 0x325: 84,
149
+ 0x326: 84,
150
+ 0x327: 84,
151
+ 0x328: 84,
152
+ 0x329: 84,
153
+ 0x32A: 84,
154
+ 0x32B: 84,
155
+ 0x32C: 84,
156
+ 0x32D: 84,
157
+ 0x32E: 84,
158
+ 0x32F: 84,
159
+ 0x330: 84,
160
+ 0x331: 84,
161
+ 0x332: 84,
162
+ 0x333: 84,
163
+ 0x334: 84,
164
+ 0x335: 84,
165
+ 0x336: 84,
166
+ 0x337: 84,
167
+ 0x338: 84,
168
+ 0x339: 84,
169
+ 0x33A: 84,
170
+ 0x33B: 84,
171
+ 0x33C: 84,
172
+ 0x33D: 84,
173
+ 0x33E: 84,
174
+ 0x33F: 84,
175
+ 0x340: 84,
176
+ 0x341: 84,
177
+ 0x342: 84,
178
+ 0x343: 84,
179
+ 0x344: 84,
180
+ 0x345: 84,
181
+ 0x346: 84,
182
+ 0x347: 84,
183
+ 0x348: 84,
184
+ 0x349: 84,
185
+ 0x34A: 84,
186
+ 0x34B: 84,
187
+ 0x34C: 84,
188
+ 0x34D: 84,
189
+ 0x34E: 84,
190
+ 0x34F: 84,
191
+ 0x350: 84,
192
+ 0x351: 84,
193
+ 0x352: 84,
194
+ 0x353: 84,
195
+ 0x354: 84,
196
+ 0x355: 84,
197
+ 0x356: 84,
198
+ 0x357: 84,
199
+ 0x358: 84,
200
+ 0x359: 84,
201
+ 0x35A: 84,
202
+ 0x35B: 84,
203
+ 0x35C: 84,
204
+ 0x35D: 84,
205
+ 0x35E: 84,
206
+ 0x35F: 84,
207
+ 0x360: 84,
208
+ 0x361: 84,
209
+ 0x362: 84,
210
+ 0x363: 84,
211
+ 0x364: 84,
212
+ 0x365: 84,
213
+ 0x366: 84,
214
+ 0x367: 84,
215
+ 0x368: 84,
216
+ 0x369: 84,
217
+ 0x36A: 84,
218
+ 0x36B: 84,
219
+ 0x36C: 84,
220
+ 0x36D: 84,
221
+ 0x36E: 84,
222
+ 0x36F: 84,
223
+ 0x483: 84,
224
+ 0x484: 84,
225
+ 0x485: 84,
226
+ 0x486: 84,
227
+ 0x487: 84,
228
+ 0x488: 84,
229
+ 0x489: 84,
230
+ 0x591: 84,
231
+ 0x592: 84,
232
+ 0x593: 84,
233
+ 0x594: 84,
234
+ 0x595: 84,
235
+ 0x596: 84,
236
+ 0x597: 84,
237
+ 0x598: 84,
238
+ 0x599: 84,
239
+ 0x59A: 84,
240
+ 0x59B: 84,
241
+ 0x59C: 84,
242
+ 0x59D: 84,
243
+ 0x59E: 84,
244
+ 0x59F: 84,
245
+ 0x5A0: 84,
246
+ 0x5A1: 84,
247
+ 0x5A2: 84,
248
+ 0x5A3: 84,
249
+ 0x5A4: 84,
250
+ 0x5A5: 84,
251
+ 0x5A6: 84,
252
+ 0x5A7: 84,
253
+ 0x5A8: 84,
254
+ 0x5A9: 84,
255
+ 0x5AA: 84,
256
+ 0x5AB: 84,
257
+ 0x5AC: 84,
258
+ 0x5AD: 84,
259
+ 0x5AE: 84,
260
+ 0x5AF: 84,
261
+ 0x5B0: 84,
262
+ 0x5B1: 84,
263
+ 0x5B2: 84,
264
+ 0x5B3: 84,
265
+ 0x5B4: 84,
266
+ 0x5B5: 84,
267
+ 0x5B6: 84,
268
+ 0x5B7: 84,
269
+ 0x5B8: 84,
270
+ 0x5B9: 84,
271
+ 0x5BA: 84,
272
+ 0x5BB: 84,
273
+ 0x5BC: 84,
274
+ 0x5BD: 84,
275
+ 0x5BF: 84,
276
+ 0x5C1: 84,
277
+ 0x5C2: 84,
278
+ 0x5C4: 84,
279
+ 0x5C5: 84,
280
+ 0x5C7: 84,
281
+ 0x610: 84,
282
+ 0x611: 84,
283
+ 0x612: 84,
284
+ 0x613: 84,
285
+ 0x614: 84,
286
+ 0x615: 84,
287
+ 0x616: 84,
288
+ 0x617: 84,
289
+ 0x618: 84,
290
+ 0x619: 84,
291
+ 0x61A: 84,
292
+ 0x61C: 84,
293
+ 0x620: 68,
294
+ 0x622: 82,
295
+ 0x623: 82,
296
+ 0x624: 82,
297
+ 0x625: 82,
298
+ 0x626: 68,
299
+ 0x627: 82,
300
+ 0x628: 68,
301
+ 0x629: 82,
302
+ 0x62A: 68,
303
+ 0x62B: 68,
304
+ 0x62C: 68,
305
+ 0x62D: 68,
306
+ 0x62E: 68,
307
+ 0x62F: 82,
308
+ 0x630: 82,
309
+ 0x631: 82,
310
+ 0x632: 82,
311
+ 0x633: 68,
312
+ 0x634: 68,
313
+ 0x635: 68,
314
+ 0x636: 68,
315
+ 0x637: 68,
316
+ 0x638: 68,
317
+ 0x639: 68,
318
+ 0x63A: 68,
319
+ 0x63B: 68,
320
+ 0x63C: 68,
321
+ 0x63D: 68,
322
+ 0x63E: 68,
323
+ 0x63F: 68,
324
+ 0x640: 67,
325
+ 0x641: 68,
326
+ 0x642: 68,
327
+ 0x643: 68,
328
+ 0x644: 68,
329
+ 0x645: 68,
330
+ 0x646: 68,
331
+ 0x647: 68,
332
+ 0x648: 82,
333
+ 0x649: 68,
334
+ 0x64A: 68,
335
+ 0x64B: 84,
336
+ 0x64C: 84,
337
+ 0x64D: 84,
338
+ 0x64E: 84,
339
+ 0x64F: 84,
340
+ 0x650: 84,
341
+ 0x651: 84,
342
+ 0x652: 84,
343
+ 0x653: 84,
344
+ 0x654: 84,
345
+ 0x655: 84,
346
+ 0x656: 84,
347
+ 0x657: 84,
348
+ 0x658: 84,
349
+ 0x659: 84,
350
+ 0x65A: 84,
351
+ 0x65B: 84,
352
+ 0x65C: 84,
353
+ 0x65D: 84,
354
+ 0x65E: 84,
355
+ 0x65F: 84,
356
+ 0x66E: 68,
357
+ 0x66F: 68,
358
+ 0x670: 84,
359
+ 0x671: 82,
360
+ 0x672: 82,
361
+ 0x673: 82,
362
+ 0x675: 82,
363
+ 0x676: 82,
364
+ 0x677: 82,
365
+ 0x678: 68,
366
+ 0x679: 68,
367
+ 0x67A: 68,
368
+ 0x67B: 68,
369
+ 0x67C: 68,
370
+ 0x67D: 68,
371
+ 0x67E: 68,
372
+ 0x67F: 68,
373
+ 0x680: 68,
374
+ 0x681: 68,
375
+ 0x682: 68,
376
+ 0x683: 68,
377
+ 0x684: 68,
378
+ 0x685: 68,
379
+ 0x686: 68,
380
+ 0x687: 68,
381
+ 0x688: 82,
382
+ 0x689: 82,
383
+ 0x68A: 82,
384
+ 0x68B: 82,
385
+ 0x68C: 82,
386
+ 0x68D: 82,
387
+ 0x68E: 82,
388
+ 0x68F: 82,
389
+ 0x690: 82,
390
+ 0x691: 82,
391
+ 0x692: 82,
392
+ 0x693: 82,
393
+ 0x694: 82,
394
+ 0x695: 82,
395
+ 0x696: 82,
396
+ 0x697: 82,
397
+ 0x698: 82,
398
+ 0x699: 82,
399
+ 0x69A: 68,
400
+ 0x69B: 68,
401
+ 0x69C: 68,
402
+ 0x69D: 68,
403
+ 0x69E: 68,
404
+ 0x69F: 68,
405
+ 0x6A0: 68,
406
+ 0x6A1: 68,
407
+ 0x6A2: 68,
408
+ 0x6A3: 68,
409
+ 0x6A4: 68,
410
+ 0x6A5: 68,
411
+ 0x6A6: 68,
412
+ 0x6A7: 68,
413
+ 0x6A8: 68,
414
+ 0x6A9: 68,
415
+ 0x6AA: 68,
416
+ 0x6AB: 68,
417
+ 0x6AC: 68,
418
+ 0x6AD: 68,
419
+ 0x6AE: 68,
420
+ 0x6AF: 68,
421
+ 0x6B0: 68,
422
+ 0x6B1: 68,
423
+ 0x6B2: 68,
424
+ 0x6B3: 68,
425
+ 0x6B4: 68,
426
+ 0x6B5: 68,
427
+ 0x6B6: 68,
428
+ 0x6B7: 68,
429
+ 0x6B8: 68,
430
+ 0x6B9: 68,
431
+ 0x6BA: 68,
432
+ 0x6BB: 68,
433
+ 0x6BC: 68,
434
+ 0x6BD: 68,
435
+ 0x6BE: 68,
436
+ 0x6BF: 68,
437
+ 0x6C0: 82,
438
+ 0x6C1: 68,
439
+ 0x6C2: 68,
440
+ 0x6C3: 82,
441
+ 0x6C4: 82,
442
+ 0x6C5: 82,
443
+ 0x6C6: 82,
444
+ 0x6C7: 82,
445
+ 0x6C8: 82,
446
+ 0x6C9: 82,
447
+ 0x6CA: 82,
448
+ 0x6CB: 82,
449
+ 0x6CC: 68,
450
+ 0x6CD: 82,
451
+ 0x6CE: 68,
452
+ 0x6CF: 82,
453
+ 0x6D0: 68,
454
+ 0x6D1: 68,
455
+ 0x6D2: 82,
456
+ 0x6D3: 82,
457
+ 0x6D5: 82,
458
+ 0x6D6: 84,
459
+ 0x6D7: 84,
460
+ 0x6D8: 84,
461
+ 0x6D9: 84,
462
+ 0x6DA: 84,
463
+ 0x6DB: 84,
464
+ 0x6DC: 84,
465
+ 0x6DF: 84,
466
+ 0x6E0: 84,
467
+ 0x6E1: 84,
468
+ 0x6E2: 84,
469
+ 0x6E3: 84,
470
+ 0x6E4: 84,
471
+ 0x6E7: 84,
472
+ 0x6E8: 84,
473
+ 0x6EA: 84,
474
+ 0x6EB: 84,
475
+ 0x6EC: 84,
476
+ 0x6ED: 84,
477
+ 0x6EE: 82,
478
+ 0x6EF: 82,
479
+ 0x6FA: 68,
480
+ 0x6FB: 68,
481
+ 0x6FC: 68,
482
+ 0x6FF: 68,
483
+ 0x70F: 84,
484
+ 0x710: 82,
485
+ 0x711: 84,
486
+ 0x712: 68,
487
+ 0x713: 68,
488
+ 0x714: 68,
489
+ 0x715: 82,
490
+ 0x716: 82,
491
+ 0x717: 82,
492
+ 0x718: 82,
493
+ 0x719: 82,
494
+ 0x71A: 68,
495
+ 0x71B: 68,
496
+ 0x71C: 68,
497
+ 0x71D: 68,
498
+ 0x71E: 82,
499
+ 0x71F: 68,
500
+ 0x720: 68,
501
+ 0x721: 68,
502
+ 0x722: 68,
503
+ 0x723: 68,
504
+ 0x724: 68,
505
+ 0x725: 68,
506
+ 0x726: 68,
507
+ 0x727: 68,
508
+ 0x728: 82,
509
+ 0x729: 68,
510
+ 0x72A: 82,
511
+ 0x72B: 68,
512
+ 0x72C: 82,
513
+ 0x72D: 68,
514
+ 0x72E: 68,
515
+ 0x72F: 82,
516
+ 0x730: 84,
517
+ 0x731: 84,
518
+ 0x732: 84,
519
+ 0x733: 84,
520
+ 0x734: 84,
521
+ 0x735: 84,
522
+ 0x736: 84,
523
+ 0x737: 84,
524
+ 0x738: 84,
525
+ 0x739: 84,
526
+ 0x73A: 84,
527
+ 0x73B: 84,
528
+ 0x73C: 84,
529
+ 0x73D: 84,
530
+ 0x73E: 84,
531
+ 0x73F: 84,
532
+ 0x740: 84,
533
+ 0x741: 84,
534
+ 0x742: 84,
535
+ 0x743: 84,
536
+ 0x744: 84,
537
+ 0x745: 84,
538
+ 0x746: 84,
539
+ 0x747: 84,
540
+ 0x748: 84,
541
+ 0x749: 84,
542
+ 0x74A: 84,
543
+ 0x74D: 82,
544
+ 0x74E: 68,
545
+ 0x74F: 68,
546
+ 0x750: 68,
547
+ 0x751: 68,
548
+ 0x752: 68,
549
+ 0x753: 68,
550
+ 0x754: 68,
551
+ 0x755: 68,
552
+ 0x756: 68,
553
+ 0x757: 68,
554
+ 0x758: 68,
555
+ 0x759: 82,
556
+ 0x75A: 82,
557
+ 0x75B: 82,
558
+ 0x75C: 68,
559
+ 0x75D: 68,
560
+ 0x75E: 68,
561
+ 0x75F: 68,
562
+ 0x760: 68,
563
+ 0x761: 68,
564
+ 0x762: 68,
565
+ 0x763: 68,
566
+ 0x764: 68,
567
+ 0x765: 68,
568
+ 0x766: 68,
569
+ 0x767: 68,
570
+ 0x768: 68,
571
+ 0x769: 68,
572
+ 0x76A: 68,
573
+ 0x76B: 82,
574
+ 0x76C: 82,
575
+ 0x76D: 68,
576
+ 0x76E: 68,
577
+ 0x76F: 68,
578
+ 0x770: 68,
579
+ 0x771: 82,
580
+ 0x772: 68,
581
+ 0x773: 82,
582
+ 0x774: 82,
583
+ 0x775: 68,
584
+ 0x776: 68,
585
+ 0x777: 68,
586
+ 0x778: 82,
587
+ 0x779: 82,
588
+ 0x77A: 68,
589
+ 0x77B: 68,
590
+ 0x77C: 68,
591
+ 0x77D: 68,
592
+ 0x77E: 68,
593
+ 0x77F: 68,
594
+ 0x7A6: 84,
595
+ 0x7A7: 84,
596
+ 0x7A8: 84,
597
+ 0x7A9: 84,
598
+ 0x7AA: 84,
599
+ 0x7AB: 84,
600
+ 0x7AC: 84,
601
+ 0x7AD: 84,
602
+ 0x7AE: 84,
603
+ 0x7AF: 84,
604
+ 0x7B0: 84,
605
+ 0x7CA: 68,
606
+ 0x7CB: 68,
607
+ 0x7CC: 68,
608
+ 0x7CD: 68,
609
+ 0x7CE: 68,
610
+ 0x7CF: 68,
611
+ 0x7D0: 68,
612
+ 0x7D1: 68,
613
+ 0x7D2: 68,
614
+ 0x7D3: 68,
615
+ 0x7D4: 68,
616
+ 0x7D5: 68,
617
+ 0x7D6: 68,
618
+ 0x7D7: 68,
619
+ 0x7D8: 68,
620
+ 0x7D9: 68,
621
+ 0x7DA: 68,
622
+ 0x7DB: 68,
623
+ 0x7DC: 68,
624
+ 0x7DD: 68,
625
+ 0x7DE: 68,
626
+ 0x7DF: 68,
627
+ 0x7E0: 68,
628
+ 0x7E1: 68,
629
+ 0x7E2: 68,
630
+ 0x7E3: 68,
631
+ 0x7E4: 68,
632
+ 0x7E5: 68,
633
+ 0x7E6: 68,
634
+ 0x7E7: 68,
635
+ 0x7E8: 68,
636
+ 0x7E9: 68,
637
+ 0x7EA: 68,
638
+ 0x7EB: 84,
639
+ 0x7EC: 84,
640
+ 0x7ED: 84,
641
+ 0x7EE: 84,
642
+ 0x7EF: 84,
643
+ 0x7F0: 84,
644
+ 0x7F1: 84,
645
+ 0x7F2: 84,
646
+ 0x7F3: 84,
647
+ 0x7FA: 67,
648
+ 0x7FD: 84,
649
+ 0x816: 84,
650
+ 0x817: 84,
651
+ 0x818: 84,
652
+ 0x819: 84,
653
+ 0x81B: 84,
654
+ 0x81C: 84,
655
+ 0x81D: 84,
656
+ 0x81E: 84,
657
+ 0x81F: 84,
658
+ 0x820: 84,
659
+ 0x821: 84,
660
+ 0x822: 84,
661
+ 0x823: 84,
662
+ 0x825: 84,
663
+ 0x826: 84,
664
+ 0x827: 84,
665
+ 0x829: 84,
666
+ 0x82A: 84,
667
+ 0x82B: 84,
668
+ 0x82C: 84,
669
+ 0x82D: 84,
670
+ 0x840: 82,
671
+ 0x841: 68,
672
+ 0x842: 68,
673
+ 0x843: 68,
674
+ 0x844: 68,
675
+ 0x845: 68,
676
+ 0x846: 82,
677
+ 0x847: 82,
678
+ 0x848: 68,
679
+ 0x849: 82,
680
+ 0x84A: 68,
681
+ 0x84B: 68,
682
+ 0x84C: 68,
683
+ 0x84D: 68,
684
+ 0x84E: 68,
685
+ 0x84F: 68,
686
+ 0x850: 68,
687
+ 0x851: 68,
688
+ 0x852: 68,
689
+ 0x853: 68,
690
+ 0x854: 82,
691
+ 0x855: 68,
692
+ 0x856: 82,
693
+ 0x857: 82,
694
+ 0x858: 82,
695
+ 0x859: 84,
696
+ 0x85A: 84,
697
+ 0x85B: 84,
698
+ 0x860: 68,
699
+ 0x862: 68,
700
+ 0x863: 68,
701
+ 0x864: 68,
702
+ 0x865: 68,
703
+ 0x867: 82,
704
+ 0x868: 68,
705
+ 0x869: 82,
706
+ 0x86A: 82,
707
+ 0x870: 82,
708
+ 0x871: 82,
709
+ 0x872: 82,
710
+ 0x873: 82,
711
+ 0x874: 82,
712
+ 0x875: 82,
713
+ 0x876: 82,
714
+ 0x877: 82,
715
+ 0x878: 82,
716
+ 0x879: 82,
717
+ 0x87A: 82,
718
+ 0x87B: 82,
719
+ 0x87C: 82,
720
+ 0x87D: 82,
721
+ 0x87E: 82,
722
+ 0x87F: 82,
723
+ 0x880: 82,
724
+ 0x881: 82,
725
+ 0x882: 82,
726
+ 0x883: 67,
727
+ 0x884: 67,
728
+ 0x885: 67,
729
+ 0x886: 68,
730
+ 0x889: 68,
731
+ 0x88A: 68,
732
+ 0x88B: 68,
733
+ 0x88C: 68,
734
+ 0x88D: 68,
735
+ 0x88E: 82,
736
+ 0x88F: 68,
737
+ 0x897: 84,
738
+ 0x898: 84,
739
+ 0x899: 84,
740
+ 0x89A: 84,
741
+ 0x89B: 84,
742
+ 0x89C: 84,
743
+ 0x89D: 84,
744
+ 0x89E: 84,
745
+ 0x89F: 84,
746
+ 0x8A0: 68,
747
+ 0x8A1: 68,
748
+ 0x8A2: 68,
749
+ 0x8A3: 68,
750
+ 0x8A4: 68,
751
+ 0x8A5: 68,
752
+ 0x8A6: 68,
753
+ 0x8A7: 68,
754
+ 0x8A8: 68,
755
+ 0x8A9: 68,
756
+ 0x8AA: 82,
757
+ 0x8AB: 82,
758
+ 0x8AC: 82,
759
+ 0x8AE: 82,
760
+ 0x8AF: 68,
761
+ 0x8B0: 68,
762
+ 0x8B1: 82,
763
+ 0x8B2: 82,
764
+ 0x8B3: 68,
765
+ 0x8B4: 68,
766
+ 0x8B5: 68,
767
+ 0x8B6: 68,
768
+ 0x8B7: 68,
769
+ 0x8B8: 68,
770
+ 0x8B9: 82,
771
+ 0x8BA: 68,
772
+ 0x8BB: 68,
773
+ 0x8BC: 68,
774
+ 0x8BD: 68,
775
+ 0x8BE: 68,
776
+ 0x8BF: 68,
777
+ 0x8C0: 68,
778
+ 0x8C1: 68,
779
+ 0x8C2: 68,
780
+ 0x8C3: 68,
781
+ 0x8C4: 68,
782
+ 0x8C5: 68,
783
+ 0x8C6: 68,
784
+ 0x8C7: 68,
785
+ 0x8C8: 68,
786
+ 0x8CA: 84,
787
+ 0x8CB: 84,
788
+ 0x8CC: 84,
789
+ 0x8CD: 84,
790
+ 0x8CE: 84,
791
+ 0x8CF: 84,
792
+ 0x8D0: 84,
793
+ 0x8D1: 84,
794
+ 0x8D2: 84,
795
+ 0x8D3: 84,
796
+ 0x8D4: 84,
797
+ 0x8D5: 84,
798
+ 0x8D6: 84,
799
+ 0x8D7: 84,
800
+ 0x8D8: 84,
801
+ 0x8D9: 84,
802
+ 0x8DA: 84,
803
+ 0x8DB: 84,
804
+ 0x8DC: 84,
805
+ 0x8DD: 84,
806
+ 0x8DE: 84,
807
+ 0x8DF: 84,
808
+ 0x8E0: 84,
809
+ 0x8E1: 84,
810
+ 0x8E3: 84,
811
+ 0x8E4: 84,
812
+ 0x8E5: 84,
813
+ 0x8E6: 84,
814
+ 0x8E7: 84,
815
+ 0x8E8: 84,
816
+ 0x8E9: 84,
817
+ 0x8EA: 84,
818
+ 0x8EB: 84,
819
+ 0x8EC: 84,
820
+ 0x8ED: 84,
821
+ 0x8EE: 84,
822
+ 0x8EF: 84,
823
+ 0x8F0: 84,
824
+ 0x8F1: 84,
825
+ 0x8F2: 84,
826
+ 0x8F3: 84,
827
+ 0x8F4: 84,
828
+ 0x8F5: 84,
829
+ 0x8F6: 84,
830
+ 0x8F7: 84,
831
+ 0x8F8: 84,
832
+ 0x8F9: 84,
833
+ 0x8FA: 84,
834
+ 0x8FB: 84,
835
+ 0x8FC: 84,
836
+ 0x8FD: 84,
837
+ 0x8FE: 84,
838
+ 0x8FF: 84,
839
+ 0x900: 84,
840
+ 0x901: 84,
841
+ 0x902: 84,
842
+ 0x93A: 84,
843
+ 0x93C: 84,
844
+ 0x941: 84,
845
+ 0x942: 84,
846
+ 0x943: 84,
847
+ 0x944: 84,
848
+ 0x945: 84,
849
+ 0x946: 84,
850
+ 0x947: 84,
851
+ 0x948: 84,
852
+ 0x94D: 84,
853
+ 0x951: 84,
854
+ 0x952: 84,
855
+ 0x953: 84,
856
+ 0x954: 84,
857
+ 0x955: 84,
858
+ 0x956: 84,
859
+ 0x957: 84,
860
+ 0x962: 84,
861
+ 0x963: 84,
862
+ 0x981: 84,
863
+ 0x9BC: 84,
864
+ 0x9C1: 84,
865
+ 0x9C2: 84,
866
+ 0x9C3: 84,
867
+ 0x9C4: 84,
868
+ 0x9CD: 84,
869
+ 0x9E2: 84,
870
+ 0x9E3: 84,
871
+ 0x9FE: 84,
872
+ 0xA01: 84,
873
+ 0xA02: 84,
874
+ 0xA3C: 84,
875
+ 0xA41: 84,
876
+ 0xA42: 84,
877
+ 0xA47: 84,
878
+ 0xA48: 84,
879
+ 0xA4B: 84,
880
+ 0xA4C: 84,
881
+ 0xA4D: 84,
882
+ 0xA51: 84,
883
+ 0xA70: 84,
884
+ 0xA71: 84,
885
+ 0xA75: 84,
886
+ 0xA81: 84,
887
+ 0xA82: 84,
888
+ 0xABC: 84,
889
+ 0xAC1: 84,
890
+ 0xAC2: 84,
891
+ 0xAC3: 84,
892
+ 0xAC4: 84,
893
+ 0xAC5: 84,
894
+ 0xAC7: 84,
895
+ 0xAC8: 84,
896
+ 0xACD: 84,
897
+ 0xAE2: 84,
898
+ 0xAE3: 84,
899
+ 0xAFA: 84,
900
+ 0xAFB: 84,
901
+ 0xAFC: 84,
902
+ 0xAFD: 84,
903
+ 0xAFE: 84,
904
+ 0xAFF: 84,
905
+ 0xB01: 84,
906
+ 0xB3C: 84,
907
+ 0xB3F: 84,
908
+ 0xB41: 84,
909
+ 0xB42: 84,
910
+ 0xB43: 84,
911
+ 0xB44: 84,
912
+ 0xB4D: 84,
913
+ 0xB55: 84,
914
+ 0xB56: 84,
915
+ 0xB62: 84,
916
+ 0xB63: 84,
917
+ 0xB82: 84,
918
+ 0xBC0: 84,
919
+ 0xBCD: 84,
920
+ 0xC00: 84,
921
+ 0xC04: 84,
922
+ 0xC3C: 84,
923
+ 0xC3E: 84,
924
+ 0xC3F: 84,
925
+ 0xC40: 84,
926
+ 0xC46: 84,
927
+ 0xC47: 84,
928
+ 0xC48: 84,
929
+ 0xC4A: 84,
930
+ 0xC4B: 84,
931
+ 0xC4C: 84,
932
+ 0xC4D: 84,
933
+ 0xC55: 84,
934
+ 0xC56: 84,
935
+ 0xC62: 84,
936
+ 0xC63: 84,
937
+ 0xC81: 84,
938
+ 0xCBC: 84,
939
+ 0xCBF: 84,
940
+ 0xCC6: 84,
941
+ 0xCCC: 84,
942
+ 0xCCD: 84,
943
+ 0xCE2: 84,
944
+ 0xCE3: 84,
945
+ 0xD00: 84,
946
+ 0xD01: 84,
947
+ 0xD3B: 84,
948
+ 0xD3C: 84,
949
+ 0xD41: 84,
950
+ 0xD42: 84,
951
+ 0xD43: 84,
952
+ 0xD44: 84,
953
+ 0xD4D: 84,
954
+ 0xD62: 84,
955
+ 0xD63: 84,
956
+ 0xD81: 84,
957
+ 0xDCA: 84,
958
+ 0xDD2: 84,
959
+ 0xDD3: 84,
960
+ 0xDD4: 84,
961
+ 0xDD6: 84,
962
+ 0xE31: 84,
963
+ 0xE34: 84,
964
+ 0xE35: 84,
965
+ 0xE36: 84,
966
+ 0xE37: 84,
967
+ 0xE38: 84,
968
+ 0xE39: 84,
969
+ 0xE3A: 84,
970
+ 0xE47: 84,
971
+ 0xE48: 84,
972
+ 0xE49: 84,
973
+ 0xE4A: 84,
974
+ 0xE4B: 84,
975
+ 0xE4C: 84,
976
+ 0xE4D: 84,
977
+ 0xE4E: 84,
978
+ 0xEB1: 84,
979
+ 0xEB4: 84,
980
+ 0xEB5: 84,
981
+ 0xEB6: 84,
982
+ 0xEB7: 84,
983
+ 0xEB8: 84,
984
+ 0xEB9: 84,
985
+ 0xEBA: 84,
986
+ 0xEBB: 84,
987
+ 0xEBC: 84,
988
+ 0xEC8: 84,
989
+ 0xEC9: 84,
990
+ 0xECA: 84,
991
+ 0xECB: 84,
992
+ 0xECC: 84,
993
+ 0xECD: 84,
994
+ 0xECE: 84,
995
+ 0xF18: 84,
996
+ 0xF19: 84,
997
+ 0xF35: 84,
998
+ 0xF37: 84,
999
+ 0xF39: 84,
1000
+ 0xF71: 84,
1001
+ 0xF72: 84,
1002
+ 0xF73: 84,
1003
+ 0xF74: 84,
1004
+ 0xF75: 84,
1005
+ 0xF76: 84,
1006
+ 0xF77: 84,
1007
+ 0xF78: 84,
1008
+ 0xF79: 84,
1009
+ 0xF7A: 84,
1010
+ 0xF7B: 84,
1011
+ 0xF7C: 84,
1012
+ 0xF7D: 84,
1013
+ 0xF7E: 84,
1014
+ 0xF80: 84,
1015
+ 0xF81: 84,
1016
+ 0xF82: 84,
1017
+ 0xF83: 84,
1018
+ 0xF84: 84,
1019
+ 0xF86: 84,
1020
+ 0xF87: 84,
1021
+ 0xF8D: 84,
1022
+ 0xF8E: 84,
1023
+ 0xF8F: 84,
1024
+ 0xF90: 84,
1025
+ 0xF91: 84,
1026
+ 0xF92: 84,
1027
+ 0xF93: 84,
1028
+ 0xF94: 84,
1029
+ 0xF95: 84,
1030
+ 0xF96: 84,
1031
+ 0xF97: 84,
1032
+ 0xF99: 84,
1033
+ 0xF9A: 84,
1034
+ 0xF9B: 84,
1035
+ 0xF9C: 84,
1036
+ 0xF9D: 84,
1037
+ 0xF9E: 84,
1038
+ 0xF9F: 84,
1039
+ 0xFA0: 84,
1040
+ 0xFA1: 84,
1041
+ 0xFA2: 84,
1042
+ 0xFA3: 84,
1043
+ 0xFA4: 84,
1044
+ 0xFA5: 84,
1045
+ 0xFA6: 84,
1046
+ 0xFA7: 84,
1047
+ 0xFA8: 84,
1048
+ 0xFA9: 84,
1049
+ 0xFAA: 84,
1050
+ 0xFAB: 84,
1051
+ 0xFAC: 84,
1052
+ 0xFAD: 84,
1053
+ 0xFAE: 84,
1054
+ 0xFAF: 84,
1055
+ 0xFB0: 84,
1056
+ 0xFB1: 84,
1057
+ 0xFB2: 84,
1058
+ 0xFB3: 84,
1059
+ 0xFB4: 84,
1060
+ 0xFB5: 84,
1061
+ 0xFB6: 84,
1062
+ 0xFB7: 84,
1063
+ 0xFB8: 84,
1064
+ 0xFB9: 84,
1065
+ 0xFBA: 84,
1066
+ 0xFBB: 84,
1067
+ 0xFBC: 84,
1068
+ 0xFC6: 84,
1069
+ 0x102D: 84,
1070
+ 0x102E: 84,
1071
+ 0x102F: 84,
1072
+ 0x1030: 84,
1073
+ 0x1032: 84,
1074
+ 0x1033: 84,
1075
+ 0x1034: 84,
1076
+ 0x1035: 84,
1077
+ 0x1036: 84,
1078
+ 0x1037: 84,
1079
+ 0x1039: 84,
1080
+ 0x103A: 84,
1081
+ 0x103D: 84,
1082
+ 0x103E: 84,
1083
+ 0x1058: 84,
1084
+ 0x1059: 84,
1085
+ 0x105E: 84,
1086
+ 0x105F: 84,
1087
+ 0x1060: 84,
1088
+ 0x1071: 84,
1089
+ 0x1072: 84,
1090
+ 0x1073: 84,
1091
+ 0x1074: 84,
1092
+ 0x1082: 84,
1093
+ 0x1085: 84,
1094
+ 0x1086: 84,
1095
+ 0x108D: 84,
1096
+ 0x109D: 84,
1097
+ 0x135D: 84,
1098
+ 0x135E: 84,
1099
+ 0x135F: 84,
1100
+ 0x1712: 84,
1101
+ 0x1713: 84,
1102
+ 0x1714: 84,
1103
+ 0x1732: 84,
1104
+ 0x1733: 84,
1105
+ 0x1752: 84,
1106
+ 0x1753: 84,
1107
+ 0x1772: 84,
1108
+ 0x1773: 84,
1109
+ 0x17B4: 84,
1110
+ 0x17B5: 84,
1111
+ 0x17B7: 84,
1112
+ 0x17B8: 84,
1113
+ 0x17B9: 84,
1114
+ 0x17BA: 84,
1115
+ 0x17BB: 84,
1116
+ 0x17BC: 84,
1117
+ 0x17BD: 84,
1118
+ 0x17C6: 84,
1119
+ 0x17C9: 84,
1120
+ 0x17CA: 84,
1121
+ 0x17CB: 84,
1122
+ 0x17CC: 84,
1123
+ 0x17CD: 84,
1124
+ 0x17CE: 84,
1125
+ 0x17CF: 84,
1126
+ 0x17D0: 84,
1127
+ 0x17D1: 84,
1128
+ 0x17D2: 84,
1129
+ 0x17D3: 84,
1130
+ 0x17DD: 84,
1131
+ 0x1807: 68,
1132
+ 0x180A: 67,
1133
+ 0x180B: 84,
1134
+ 0x180C: 84,
1135
+ 0x180D: 84,
1136
+ 0x180F: 84,
1137
+ 0x1820: 68,
1138
+ 0x1821: 68,
1139
+ 0x1822: 68,
1140
+ 0x1823: 68,
1141
+ 0x1824: 68,
1142
+ 0x1825: 68,
1143
+ 0x1826: 68,
1144
+ 0x1827: 68,
1145
+ 0x1828: 68,
1146
+ 0x1829: 68,
1147
+ 0x182A: 68,
1148
+ 0x182B: 68,
1149
+ 0x182C: 68,
1150
+ 0x182D: 68,
1151
+ 0x182E: 68,
1152
+ 0x182F: 68,
1153
+ 0x1830: 68,
1154
+ 0x1831: 68,
1155
+ 0x1832: 68,
1156
+ 0x1833: 68,
1157
+ 0x1834: 68,
1158
+ 0x1835: 68,
1159
+ 0x1836: 68,
1160
+ 0x1837: 68,
1161
+ 0x1838: 68,
1162
+ 0x1839: 68,
1163
+ 0x183A: 68,
1164
+ 0x183B: 68,
1165
+ 0x183C: 68,
1166
+ 0x183D: 68,
1167
+ 0x183E: 68,
1168
+ 0x183F: 68,
1169
+ 0x1840: 68,
1170
+ 0x1841: 68,
1171
+ 0x1842: 68,
1172
+ 0x1843: 68,
1173
+ 0x1844: 68,
1174
+ 0x1845: 68,
1175
+ 0x1846: 68,
1176
+ 0x1847: 68,
1177
+ 0x1848: 68,
1178
+ 0x1849: 68,
1179
+ 0x184A: 68,
1180
+ 0x184B: 68,
1181
+ 0x184C: 68,
1182
+ 0x184D: 68,
1183
+ 0x184E: 68,
1184
+ 0x184F: 68,
1185
+ 0x1850: 68,
1186
+ 0x1851: 68,
1187
+ 0x1852: 68,
1188
+ 0x1853: 68,
1189
+ 0x1854: 68,
1190
+ 0x1855: 68,
1191
+ 0x1856: 68,
1192
+ 0x1857: 68,
1193
+ 0x1858: 68,
1194
+ 0x1859: 68,
1195
+ 0x185A: 68,
1196
+ 0x185B: 68,
1197
+ 0x185C: 68,
1198
+ 0x185D: 68,
1199
+ 0x185E: 68,
1200
+ 0x185F: 68,
1201
+ 0x1860: 68,
1202
+ 0x1861: 68,
1203
+ 0x1862: 68,
1204
+ 0x1863: 68,
1205
+ 0x1864: 68,
1206
+ 0x1865: 68,
1207
+ 0x1866: 68,
1208
+ 0x1867: 68,
1209
+ 0x1868: 68,
1210
+ 0x1869: 68,
1211
+ 0x186A: 68,
1212
+ 0x186B: 68,
1213
+ 0x186C: 68,
1214
+ 0x186D: 68,
1215
+ 0x186E: 68,
1216
+ 0x186F: 68,
1217
+ 0x1870: 68,
1218
+ 0x1871: 68,
1219
+ 0x1872: 68,
1220
+ 0x1873: 68,
1221
+ 0x1874: 68,
1222
+ 0x1875: 68,
1223
+ 0x1876: 68,
1224
+ 0x1877: 68,
1225
+ 0x1878: 68,
1226
+ 0x1885: 84,
1227
+ 0x1886: 84,
1228
+ 0x1887: 68,
1229
+ 0x1888: 68,
1230
+ 0x1889: 68,
1231
+ 0x188A: 68,
1232
+ 0x188B: 68,
1233
+ 0x188C: 68,
1234
+ 0x188D: 68,
1235
+ 0x188E: 68,
1236
+ 0x188F: 68,
1237
+ 0x1890: 68,
1238
+ 0x1891: 68,
1239
+ 0x1892: 68,
1240
+ 0x1893: 68,
1241
+ 0x1894: 68,
1242
+ 0x1895: 68,
1243
+ 0x1896: 68,
1244
+ 0x1897: 68,
1245
+ 0x1898: 68,
1246
+ 0x1899: 68,
1247
+ 0x189A: 68,
1248
+ 0x189B: 68,
1249
+ 0x189C: 68,
1250
+ 0x189D: 68,
1251
+ 0x189E: 68,
1252
+ 0x189F: 68,
1253
+ 0x18A0: 68,
1254
+ 0x18A1: 68,
1255
+ 0x18A2: 68,
1256
+ 0x18A3: 68,
1257
+ 0x18A4: 68,
1258
+ 0x18A5: 68,
1259
+ 0x18A6: 68,
1260
+ 0x18A7: 68,
1261
+ 0x18A8: 68,
1262
+ 0x18A9: 84,
1263
+ 0x18AA: 68,
1264
+ 0x1920: 84,
1265
+ 0x1921: 84,
1266
+ 0x1922: 84,
1267
+ 0x1927: 84,
1268
+ 0x1928: 84,
1269
+ 0x1932: 84,
1270
+ 0x1939: 84,
1271
+ 0x193A: 84,
1272
+ 0x193B: 84,
1273
+ 0x1A17: 84,
1274
+ 0x1A18: 84,
1275
+ 0x1A1B: 84,
1276
+ 0x1A56: 84,
1277
+ 0x1A58: 84,
1278
+ 0x1A59: 84,
1279
+ 0x1A5A: 84,
1280
+ 0x1A5B: 84,
1281
+ 0x1A5C: 84,
1282
+ 0x1A5D: 84,
1283
+ 0x1A5E: 84,
1284
+ 0x1A60: 84,
1285
+ 0x1A62: 84,
1286
+ 0x1A65: 84,
1287
+ 0x1A66: 84,
1288
+ 0x1A67: 84,
1289
+ 0x1A68: 84,
1290
+ 0x1A69: 84,
1291
+ 0x1A6A: 84,
1292
+ 0x1A6B: 84,
1293
+ 0x1A6C: 84,
1294
+ 0x1A73: 84,
1295
+ 0x1A74: 84,
1296
+ 0x1A75: 84,
1297
+ 0x1A76: 84,
1298
+ 0x1A77: 84,
1299
+ 0x1A78: 84,
1300
+ 0x1A79: 84,
1301
+ 0x1A7A: 84,
1302
+ 0x1A7B: 84,
1303
+ 0x1A7C: 84,
1304
+ 0x1A7F: 84,
1305
+ 0x1AB0: 84,
1306
+ 0x1AB1: 84,
1307
+ 0x1AB2: 84,
1308
+ 0x1AB3: 84,
1309
+ 0x1AB4: 84,
1310
+ 0x1AB5: 84,
1311
+ 0x1AB6: 84,
1312
+ 0x1AB7: 84,
1313
+ 0x1AB8: 84,
1314
+ 0x1AB9: 84,
1315
+ 0x1ABA: 84,
1316
+ 0x1ABB: 84,
1317
+ 0x1ABC: 84,
1318
+ 0x1ABD: 84,
1319
+ 0x1ABE: 84,
1320
+ 0x1ABF: 84,
1321
+ 0x1AC0: 84,
1322
+ 0x1AC1: 84,
1323
+ 0x1AC2: 84,
1324
+ 0x1AC3: 84,
1325
+ 0x1AC4: 84,
1326
+ 0x1AC5: 84,
1327
+ 0x1AC6: 84,
1328
+ 0x1AC7: 84,
1329
+ 0x1AC8: 84,
1330
+ 0x1AC9: 84,
1331
+ 0x1ACA: 84,
1332
+ 0x1ACB: 84,
1333
+ 0x1ACC: 84,
1334
+ 0x1ACD: 84,
1335
+ 0x1ACE: 84,
1336
+ 0x1ACF: 84,
1337
+ 0x1AD0: 84,
1338
+ 0x1AD1: 84,
1339
+ 0x1AD2: 84,
1340
+ 0x1AD3: 84,
1341
+ 0x1AD4: 84,
1342
+ 0x1AD5: 84,
1343
+ 0x1AD6: 84,
1344
+ 0x1AD7: 84,
1345
+ 0x1AD8: 84,
1346
+ 0x1AD9: 84,
1347
+ 0x1ADA: 84,
1348
+ 0x1ADB: 84,
1349
+ 0x1ADC: 84,
1350
+ 0x1ADD: 84,
1351
+ 0x1AE0: 84,
1352
+ 0x1AE1: 84,
1353
+ 0x1AE2: 84,
1354
+ 0x1AE3: 84,
1355
+ 0x1AE4: 84,
1356
+ 0x1AE5: 84,
1357
+ 0x1AE6: 84,
1358
+ 0x1AE7: 84,
1359
+ 0x1AE8: 84,
1360
+ 0x1AE9: 84,
1361
+ 0x1AEA: 84,
1362
+ 0x1AEB: 84,
1363
+ 0x1B00: 84,
1364
+ 0x1B01: 84,
1365
+ 0x1B02: 84,
1366
+ 0x1B03: 84,
1367
+ 0x1B34: 84,
1368
+ 0x1B36: 84,
1369
+ 0x1B37: 84,
1370
+ 0x1B38: 84,
1371
+ 0x1B39: 84,
1372
+ 0x1B3A: 84,
1373
+ 0x1B3C: 84,
1374
+ 0x1B42: 84,
1375
+ 0x1B6B: 84,
1376
+ 0x1B6C: 84,
1377
+ 0x1B6D: 84,
1378
+ 0x1B6E: 84,
1379
+ 0x1B6F: 84,
1380
+ 0x1B70: 84,
1381
+ 0x1B71: 84,
1382
+ 0x1B72: 84,
1383
+ 0x1B73: 84,
1384
+ 0x1B80: 84,
1385
+ 0x1B81: 84,
1386
+ 0x1BA2: 84,
1387
+ 0x1BA3: 84,
1388
+ 0x1BA4: 84,
1389
+ 0x1BA5: 84,
1390
+ 0x1BA8: 84,
1391
+ 0x1BA9: 84,
1392
+ 0x1BAB: 84,
1393
+ 0x1BAC: 84,
1394
+ 0x1BAD: 84,
1395
+ 0x1BE6: 84,
1396
+ 0x1BE8: 84,
1397
+ 0x1BE9: 84,
1398
+ 0x1BED: 84,
1399
+ 0x1BEF: 84,
1400
+ 0x1BF0: 84,
1401
+ 0x1BF1: 84,
1402
+ 0x1C2C: 84,
1403
+ 0x1C2D: 84,
1404
+ 0x1C2E: 84,
1405
+ 0x1C2F: 84,
1406
+ 0x1C30: 84,
1407
+ 0x1C31: 84,
1408
+ 0x1C32: 84,
1409
+ 0x1C33: 84,
1410
+ 0x1C36: 84,
1411
+ 0x1C37: 84,
1412
+ 0x1CD0: 84,
1413
+ 0x1CD1: 84,
1414
+ 0x1CD2: 84,
1415
+ 0x1CD4: 84,
1416
+ 0x1CD5: 84,
1417
+ 0x1CD6: 84,
1418
+ 0x1CD7: 84,
1419
+ 0x1CD8: 84,
1420
+ 0x1CD9: 84,
1421
+ 0x1CDA: 84,
1422
+ 0x1CDB: 84,
1423
+ 0x1CDC: 84,
1424
+ 0x1CDD: 84,
1425
+ 0x1CDE: 84,
1426
+ 0x1CDF: 84,
1427
+ 0x1CE0: 84,
1428
+ 0x1CE2: 84,
1429
+ 0x1CE3: 84,
1430
+ 0x1CE4: 84,
1431
+ 0x1CE5: 84,
1432
+ 0x1CE6: 84,
1433
+ 0x1CE7: 84,
1434
+ 0x1CE8: 84,
1435
+ 0x1CED: 84,
1436
+ 0x1CF4: 84,
1437
+ 0x1CF8: 84,
1438
+ 0x1CF9: 84,
1439
+ 0x1DC0: 84,
1440
+ 0x1DC1: 84,
1441
+ 0x1DC2: 84,
1442
+ 0x1DC3: 84,
1443
+ 0x1DC4: 84,
1444
+ 0x1DC5: 84,
1445
+ 0x1DC6: 84,
1446
+ 0x1DC7: 84,
1447
+ 0x1DC8: 84,
1448
+ 0x1DC9: 84,
1449
+ 0x1DCA: 84,
1450
+ 0x1DCB: 84,
1451
+ 0x1DCC: 84,
1452
+ 0x1DCD: 84,
1453
+ 0x1DCE: 84,
1454
+ 0x1DCF: 84,
1455
+ 0x1DD0: 84,
1456
+ 0x1DD1: 84,
1457
+ 0x1DD2: 84,
1458
+ 0x1DD3: 84,
1459
+ 0x1DD4: 84,
1460
+ 0x1DD5: 84,
1461
+ 0x1DD6: 84,
1462
+ 0x1DD7: 84,
1463
+ 0x1DD8: 84,
1464
+ 0x1DD9: 84,
1465
+ 0x1DDA: 84,
1466
+ 0x1DDB: 84,
1467
+ 0x1DDC: 84,
1468
+ 0x1DDD: 84,
1469
+ 0x1DDE: 84,
1470
+ 0x1DDF: 84,
1471
+ 0x1DE0: 84,
1472
+ 0x1DE1: 84,
1473
+ 0x1DE2: 84,
1474
+ 0x1DE3: 84,
1475
+ 0x1DE4: 84,
1476
+ 0x1DE5: 84,
1477
+ 0x1DE6: 84,
1478
+ 0x1DE7: 84,
1479
+ 0x1DE8: 84,
1480
+ 0x1DE9: 84,
1481
+ 0x1DEA: 84,
1482
+ 0x1DEB: 84,
1483
+ 0x1DEC: 84,
1484
+ 0x1DED: 84,
1485
+ 0x1DEE: 84,
1486
+ 0x1DEF: 84,
1487
+ 0x1DF0: 84,
1488
+ 0x1DF1: 84,
1489
+ 0x1DF2: 84,
1490
+ 0x1DF3: 84,
1491
+ 0x1DF4: 84,
1492
+ 0x1DF5: 84,
1493
+ 0x1DF6: 84,
1494
+ 0x1DF7: 84,
1495
+ 0x1DF8: 84,
1496
+ 0x1DF9: 84,
1497
+ 0x1DFA: 84,
1498
+ 0x1DFB: 84,
1499
+ 0x1DFC: 84,
1500
+ 0x1DFD: 84,
1501
+ 0x1DFE: 84,
1502
+ 0x1DFF: 84,
1503
+ 0x200B: 84,
1504
+ 0x200D: 67,
1505
+ 0x200E: 84,
1506
+ 0x200F: 84,
1507
+ 0x202A: 84,
1508
+ 0x202B: 84,
1509
+ 0x202C: 84,
1510
+ 0x202D: 84,
1511
+ 0x202E: 84,
1512
+ 0x2060: 84,
1513
+ 0x2061: 84,
1514
+ 0x2062: 84,
1515
+ 0x2063: 84,
1516
+ 0x2064: 84,
1517
+ 0x206A: 84,
1518
+ 0x206B: 84,
1519
+ 0x206C: 84,
1520
+ 0x206D: 84,
1521
+ 0x206E: 84,
1522
+ 0x206F: 84,
1523
+ 0x20D0: 84,
1524
+ 0x20D1: 84,
1525
+ 0x20D2: 84,
1526
+ 0x20D3: 84,
1527
+ 0x20D4: 84,
1528
+ 0x20D5: 84,
1529
+ 0x20D6: 84,
1530
+ 0x20D7: 84,
1531
+ 0x20D8: 84,
1532
+ 0x20D9: 84,
1533
+ 0x20DA: 84,
1534
+ 0x20DB: 84,
1535
+ 0x20DC: 84,
1536
+ 0x20DD: 84,
1537
+ 0x20DE: 84,
1538
+ 0x20DF: 84,
1539
+ 0x20E0: 84,
1540
+ 0x20E1: 84,
1541
+ 0x20E2: 84,
1542
+ 0x20E3: 84,
1543
+ 0x20E4: 84,
1544
+ 0x20E5: 84,
1545
+ 0x20E6: 84,
1546
+ 0x20E7: 84,
1547
+ 0x20E8: 84,
1548
+ 0x20E9: 84,
1549
+ 0x20EA: 84,
1550
+ 0x20EB: 84,
1551
+ 0x20EC: 84,
1552
+ 0x20ED: 84,
1553
+ 0x20EE: 84,
1554
+ 0x20EF: 84,
1555
+ 0x20F0: 84,
1556
+ 0x2CEF: 84,
1557
+ 0x2CF0: 84,
1558
+ 0x2CF1: 84,
1559
+ 0x2D7F: 84,
1560
+ 0x2DE0: 84,
1561
+ 0x2DE1: 84,
1562
+ 0x2DE2: 84,
1563
+ 0x2DE3: 84,
1564
+ 0x2DE4: 84,
1565
+ 0x2DE5: 84,
1566
+ 0x2DE6: 84,
1567
+ 0x2DE7: 84,
1568
+ 0x2DE8: 84,
1569
+ 0x2DE9: 84,
1570
+ 0x2DEA: 84,
1571
+ 0x2DEB: 84,
1572
+ 0x2DEC: 84,
1573
+ 0x2DED: 84,
1574
+ 0x2DEE: 84,
1575
+ 0x2DEF: 84,
1576
+ 0x2DF0: 84,
1577
+ 0x2DF1: 84,
1578
+ 0x2DF2: 84,
1579
+ 0x2DF3: 84,
1580
+ 0x2DF4: 84,
1581
+ 0x2DF5: 84,
1582
+ 0x2DF6: 84,
1583
+ 0x2DF7: 84,
1584
+ 0x2DF8: 84,
1585
+ 0x2DF9: 84,
1586
+ 0x2DFA: 84,
1587
+ 0x2DFB: 84,
1588
+ 0x2DFC: 84,
1589
+ 0x2DFD: 84,
1590
+ 0x2DFE: 84,
1591
+ 0x2DFF: 84,
1592
+ 0x302A: 84,
1593
+ 0x302B: 84,
1594
+ 0x302C: 84,
1595
+ 0x302D: 84,
1596
+ 0x3099: 84,
1597
+ 0x309A: 84,
1598
+ 0xA66F: 84,
1599
+ 0xA670: 84,
1600
+ 0xA671: 84,
1601
+ 0xA672: 84,
1602
+ 0xA674: 84,
1603
+ 0xA675: 84,
1604
+ 0xA676: 84,
1605
+ 0xA677: 84,
1606
+ 0xA678: 84,
1607
+ 0xA679: 84,
1608
+ 0xA67A: 84,
1609
+ 0xA67B: 84,
1610
+ 0xA67C: 84,
1611
+ 0xA67D: 84,
1612
+ 0xA69E: 84,
1613
+ 0xA69F: 84,
1614
+ 0xA6F0: 84,
1615
+ 0xA6F1: 84,
1616
+ 0xA802: 84,
1617
+ 0xA806: 84,
1618
+ 0xA80B: 84,
1619
+ 0xA825: 84,
1620
+ 0xA826: 84,
1621
+ 0xA82C: 84,
1622
+ 0xA840: 68,
1623
+ 0xA841: 68,
1624
+ 0xA842: 68,
1625
+ 0xA843: 68,
1626
+ 0xA844: 68,
1627
+ 0xA845: 68,
1628
+ 0xA846: 68,
1629
+ 0xA847: 68,
1630
+ 0xA848: 68,
1631
+ 0xA849: 68,
1632
+ 0xA84A: 68,
1633
+ 0xA84B: 68,
1634
+ 0xA84C: 68,
1635
+ 0xA84D: 68,
1636
+ 0xA84E: 68,
1637
+ 0xA84F: 68,
1638
+ 0xA850: 68,
1639
+ 0xA851: 68,
1640
+ 0xA852: 68,
1641
+ 0xA853: 68,
1642
+ 0xA854: 68,
1643
+ 0xA855: 68,
1644
+ 0xA856: 68,
1645
+ 0xA857: 68,
1646
+ 0xA858: 68,
1647
+ 0xA859: 68,
1648
+ 0xA85A: 68,
1649
+ 0xA85B: 68,
1650
+ 0xA85C: 68,
1651
+ 0xA85D: 68,
1652
+ 0xA85E: 68,
1653
+ 0xA85F: 68,
1654
+ 0xA860: 68,
1655
+ 0xA861: 68,
1656
+ 0xA862: 68,
1657
+ 0xA863: 68,
1658
+ 0xA864: 68,
1659
+ 0xA865: 68,
1660
+ 0xA866: 68,
1661
+ 0xA867: 68,
1662
+ 0xA868: 68,
1663
+ 0xA869: 68,
1664
+ 0xA86A: 68,
1665
+ 0xA86B: 68,
1666
+ 0xA86C: 68,
1667
+ 0xA86D: 68,
1668
+ 0xA86E: 68,
1669
+ 0xA86F: 68,
1670
+ 0xA870: 68,
1671
+ 0xA871: 68,
1672
+ 0xA872: 76,
1673
+ 0xA8C4: 84,
1674
+ 0xA8C5: 84,
1675
+ 0xA8E0: 84,
1676
+ 0xA8E1: 84,
1677
+ 0xA8E2: 84,
1678
+ 0xA8E3: 84,
1679
+ 0xA8E4: 84,
1680
+ 0xA8E5: 84,
1681
+ 0xA8E6: 84,
1682
+ 0xA8E7: 84,
1683
+ 0xA8E8: 84,
1684
+ 0xA8E9: 84,
1685
+ 0xA8EA: 84,
1686
+ 0xA8EB: 84,
1687
+ 0xA8EC: 84,
1688
+ 0xA8ED: 84,
1689
+ 0xA8EE: 84,
1690
+ 0xA8EF: 84,
1691
+ 0xA8F0: 84,
1692
+ 0xA8F1: 84,
1693
+ 0xA8FF: 84,
1694
+ 0xA926: 84,
1695
+ 0xA927: 84,
1696
+ 0xA928: 84,
1697
+ 0xA929: 84,
1698
+ 0xA92A: 84,
1699
+ 0xA92B: 84,
1700
+ 0xA92C: 84,
1701
+ 0xA92D: 84,
1702
+ 0xA947: 84,
1703
+ 0xA948: 84,
1704
+ 0xA949: 84,
1705
+ 0xA94A: 84,
1706
+ 0xA94B: 84,
1707
+ 0xA94C: 84,
1708
+ 0xA94D: 84,
1709
+ 0xA94E: 84,
1710
+ 0xA94F: 84,
1711
+ 0xA950: 84,
1712
+ 0xA951: 84,
1713
+ 0xA980: 84,
1714
+ 0xA981: 84,
1715
+ 0xA982: 84,
1716
+ 0xA9B3: 84,
1717
+ 0xA9B6: 84,
1718
+ 0xA9B7: 84,
1719
+ 0xA9B8: 84,
1720
+ 0xA9B9: 84,
1721
+ 0xA9BC: 84,
1722
+ 0xA9BD: 84,
1723
+ 0xA9E5: 84,
1724
+ 0xAA29: 84,
1725
+ 0xAA2A: 84,
1726
+ 0xAA2B: 84,
1727
+ 0xAA2C: 84,
1728
+ 0xAA2D: 84,
1729
+ 0xAA2E: 84,
1730
+ 0xAA31: 84,
1731
+ 0xAA32: 84,
1732
+ 0xAA35: 84,
1733
+ 0xAA36: 84,
1734
+ 0xAA43: 84,
1735
+ 0xAA4C: 84,
1736
+ 0xAA7C: 84,
1737
+ 0xAAB0: 84,
1738
+ 0xAAB2: 84,
1739
+ 0xAAB3: 84,
1740
+ 0xAAB4: 84,
1741
+ 0xAAB7: 84,
1742
+ 0xAAB8: 84,
1743
+ 0xAABE: 84,
1744
+ 0xAABF: 84,
1745
+ 0xAAC1: 84,
1746
+ 0xAAEC: 84,
1747
+ 0xAAED: 84,
1748
+ 0xAAF6: 84,
1749
+ 0xABE5: 84,
1750
+ 0xABE8: 84,
1751
+ 0xABED: 84,
1752
+ 0xFB1E: 84,
1753
+ 0xFE00: 84,
1754
+ 0xFE01: 84,
1755
+ 0xFE02: 84,
1756
+ 0xFE03: 84,
1757
+ 0xFE04: 84,
1758
+ 0xFE05: 84,
1759
+ 0xFE06: 84,
1760
+ 0xFE07: 84,
1761
+ 0xFE08: 84,
1762
+ 0xFE09: 84,
1763
+ 0xFE0A: 84,
1764
+ 0xFE0B: 84,
1765
+ 0xFE0C: 84,
1766
+ 0xFE0D: 84,
1767
+ 0xFE0E: 84,
1768
+ 0xFE0F: 84,
1769
+ 0xFE20: 84,
1770
+ 0xFE21: 84,
1771
+ 0xFE22: 84,
1772
+ 0xFE23: 84,
1773
+ 0xFE24: 84,
1774
+ 0xFE25: 84,
1775
+ 0xFE26: 84,
1776
+ 0xFE27: 84,
1777
+ 0xFE28: 84,
1778
+ 0xFE29: 84,
1779
+ 0xFE2A: 84,
1780
+ 0xFE2B: 84,
1781
+ 0xFE2C: 84,
1782
+ 0xFE2D: 84,
1783
+ 0xFE2E: 84,
1784
+ 0xFE2F: 84,
1785
+ 0xFEFF: 84,
1786
+ 0xFFF9: 84,
1787
+ 0xFFFA: 84,
1788
+ 0xFFFB: 84,
1789
+ 0x101FD: 84,
1790
+ 0x102E0: 84,
1791
+ 0x10376: 84,
1792
+ 0x10377: 84,
1793
+ 0x10378: 84,
1794
+ 0x10379: 84,
1795
+ 0x1037A: 84,
1796
+ 0x10A01: 84,
1797
+ 0x10A02: 84,
1798
+ 0x10A03: 84,
1799
+ 0x10A05: 84,
1800
+ 0x10A06: 84,
1801
+ 0x10A0C: 84,
1802
+ 0x10A0D: 84,
1803
+ 0x10A0E: 84,
1804
+ 0x10A0F: 84,
1805
+ 0x10A38: 84,
1806
+ 0x10A39: 84,
1807
+ 0x10A3A: 84,
1808
+ 0x10A3F: 84,
1809
+ 0x10AC0: 68,
1810
+ 0x10AC1: 68,
1811
+ 0x10AC2: 68,
1812
+ 0x10AC3: 68,
1813
+ 0x10AC4: 68,
1814
+ 0x10AC5: 82,
1815
+ 0x10AC7: 82,
1816
+ 0x10AC9: 82,
1817
+ 0x10ACA: 82,
1818
+ 0x10ACD: 76,
1819
+ 0x10ACE: 82,
1820
+ 0x10ACF: 82,
1821
+ 0x10AD0: 82,
1822
+ 0x10AD1: 82,
1823
+ 0x10AD2: 82,
1824
+ 0x10AD3: 68,
1825
+ 0x10AD4: 68,
1826
+ 0x10AD5: 68,
1827
+ 0x10AD6: 68,
1828
+ 0x10AD7: 76,
1829
+ 0x10AD8: 68,
1830
+ 0x10AD9: 68,
1831
+ 0x10ADA: 68,
1832
+ 0x10ADB: 68,
1833
+ 0x10ADC: 68,
1834
+ 0x10ADD: 82,
1835
+ 0x10ADE: 68,
1836
+ 0x10ADF: 68,
1837
+ 0x10AE0: 68,
1838
+ 0x10AE1: 82,
1839
+ 0x10AE4: 82,
1840
+ 0x10AE5: 84,
1841
+ 0x10AE6: 84,
1842
+ 0x10AEB: 68,
1843
+ 0x10AEC: 68,
1844
+ 0x10AED: 68,
1845
+ 0x10AEE: 68,
1846
+ 0x10AEF: 82,
1847
+ 0x10B80: 68,
1848
+ 0x10B81: 82,
1849
+ 0x10B82: 68,
1850
+ 0x10B83: 82,
1851
+ 0x10B84: 82,
1852
+ 0x10B85: 82,
1853
+ 0x10B86: 68,
1854
+ 0x10B87: 68,
1855
+ 0x10B88: 68,
1856
+ 0x10B89: 82,
1857
+ 0x10B8A: 68,
1858
+ 0x10B8B: 68,
1859
+ 0x10B8C: 82,
1860
+ 0x10B8D: 68,
1861
+ 0x10B8E: 82,
1862
+ 0x10B8F: 82,
1863
+ 0x10B90: 68,
1864
+ 0x10B91: 82,
1865
+ 0x10BA9: 82,
1866
+ 0x10BAA: 82,
1867
+ 0x10BAB: 82,
1868
+ 0x10BAC: 82,
1869
+ 0x10BAD: 68,
1870
+ 0x10BAE: 68,
1871
+ 0x10D00: 76,
1872
+ 0x10D01: 68,
1873
+ 0x10D02: 68,
1874
+ 0x10D03: 68,
1875
+ 0x10D04: 68,
1876
+ 0x10D05: 68,
1877
+ 0x10D06: 68,
1878
+ 0x10D07: 68,
1879
+ 0x10D08: 68,
1880
+ 0x10D09: 68,
1881
+ 0x10D0A: 68,
1882
+ 0x10D0B: 68,
1883
+ 0x10D0C: 68,
1884
+ 0x10D0D: 68,
1885
+ 0x10D0E: 68,
1886
+ 0x10D0F: 68,
1887
+ 0x10D10: 68,
1888
+ 0x10D11: 68,
1889
+ 0x10D12: 68,
1890
+ 0x10D13: 68,
1891
+ 0x10D14: 68,
1892
+ 0x10D15: 68,
1893
+ 0x10D16: 68,
1894
+ 0x10D17: 68,
1895
+ 0x10D18: 68,
1896
+ 0x10D19: 68,
1897
+ 0x10D1A: 68,
1898
+ 0x10D1B: 68,
1899
+ 0x10D1C: 68,
1900
+ 0x10D1D: 68,
1901
+ 0x10D1E: 68,
1902
+ 0x10D1F: 68,
1903
+ 0x10D20: 68,
1904
+ 0x10D21: 68,
1905
+ 0x10D22: 82,
1906
+ 0x10D23: 68,
1907
+ 0x10D24: 84,
1908
+ 0x10D25: 84,
1909
+ 0x10D26: 84,
1910
+ 0x10D27: 84,
1911
+ 0x10D69: 84,
1912
+ 0x10D6A: 84,
1913
+ 0x10D6B: 84,
1914
+ 0x10D6C: 84,
1915
+ 0x10D6D: 84,
1916
+ 0x10EAB: 84,
1917
+ 0x10EAC: 84,
1918
+ 0x10EC2: 82,
1919
+ 0x10EC3: 68,
1920
+ 0x10EC4: 68,
1921
+ 0x10EC6: 68,
1922
+ 0x10EC7: 68,
1923
+ 0x10EFA: 84,
1924
+ 0x10EFB: 84,
1925
+ 0x10EFC: 84,
1926
+ 0x10EFD: 84,
1927
+ 0x10EFE: 84,
1928
+ 0x10EFF: 84,
1929
+ 0x10F30: 68,
1930
+ 0x10F31: 68,
1931
+ 0x10F32: 68,
1932
+ 0x10F33: 82,
1933
+ 0x10F34: 68,
1934
+ 0x10F35: 68,
1935
+ 0x10F36: 68,
1936
+ 0x10F37: 68,
1937
+ 0x10F38: 68,
1938
+ 0x10F39: 68,
1939
+ 0x10F3A: 68,
1940
+ 0x10F3B: 68,
1941
+ 0x10F3C: 68,
1942
+ 0x10F3D: 68,
1943
+ 0x10F3E: 68,
1944
+ 0x10F3F: 68,
1945
+ 0x10F40: 68,
1946
+ 0x10F41: 68,
1947
+ 0x10F42: 68,
1948
+ 0x10F43: 68,
1949
+ 0x10F44: 68,
1950
+ 0x10F46: 84,
1951
+ 0x10F47: 84,
1952
+ 0x10F48: 84,
1953
+ 0x10F49: 84,
1954
+ 0x10F4A: 84,
1955
+ 0x10F4B: 84,
1956
+ 0x10F4C: 84,
1957
+ 0x10F4D: 84,
1958
+ 0x10F4E: 84,
1959
+ 0x10F4F: 84,
1960
+ 0x10F50: 84,
1961
+ 0x10F51: 68,
1962
+ 0x10F52: 68,
1963
+ 0x10F53: 68,
1964
+ 0x10F54: 82,
1965
+ 0x10F70: 68,
1966
+ 0x10F71: 68,
1967
+ 0x10F72: 68,
1968
+ 0x10F73: 68,
1969
+ 0x10F74: 82,
1970
+ 0x10F75: 82,
1971
+ 0x10F76: 68,
1972
+ 0x10F77: 68,
1973
+ 0x10F78: 68,
1974
+ 0x10F79: 68,
1975
+ 0x10F7A: 68,
1976
+ 0x10F7B: 68,
1977
+ 0x10F7C: 68,
1978
+ 0x10F7D: 68,
1979
+ 0x10F7E: 68,
1980
+ 0x10F7F: 68,
1981
+ 0x10F80: 68,
1982
+ 0x10F81: 68,
1983
+ 0x10F82: 84,
1984
+ 0x10F83: 84,
1985
+ 0x10F84: 84,
1986
+ 0x10F85: 84,
1987
+ 0x10FB0: 68,
1988
+ 0x10FB2: 68,
1989
+ 0x10FB3: 68,
1990
+ 0x10FB4: 82,
1991
+ 0x10FB5: 82,
1992
+ 0x10FB6: 82,
1993
+ 0x10FB8: 68,
1994
+ 0x10FB9: 82,
1995
+ 0x10FBA: 82,
1996
+ 0x10FBB: 68,
1997
+ 0x10FBC: 68,
1998
+ 0x10FBD: 82,
1999
+ 0x10FBE: 68,
2000
+ 0x10FBF: 68,
2001
+ 0x10FC1: 68,
2002
+ 0x10FC2: 82,
2003
+ 0x10FC3: 82,
2004
+ 0x10FC4: 68,
2005
+ 0x10FC9: 82,
2006
+ 0x10FCA: 68,
2007
+ 0x10FCB: 76,
2008
+ 0x11001: 84,
2009
+ 0x11038: 84,
2010
+ 0x11039: 84,
2011
+ 0x1103A: 84,
2012
+ 0x1103B: 84,
2013
+ 0x1103C: 84,
2014
+ 0x1103D: 84,
2015
+ 0x1103E: 84,
2016
+ 0x1103F: 84,
2017
+ 0x11040: 84,
2018
+ 0x11041: 84,
2019
+ 0x11042: 84,
2020
+ 0x11043: 84,
2021
+ 0x11044: 84,
2022
+ 0x11045: 84,
2023
+ 0x11046: 84,
2024
+ 0x11070: 84,
2025
+ 0x11073: 84,
2026
+ 0x11074: 84,
2027
+ 0x1107F: 84,
2028
+ 0x11080: 84,
2029
+ 0x11081: 84,
2030
+ 0x110B3: 84,
2031
+ 0x110B4: 84,
2032
+ 0x110B5: 84,
2033
+ 0x110B6: 84,
2034
+ 0x110B9: 84,
2035
+ 0x110BA: 84,
2036
+ 0x110C2: 84,
2037
+ 0x11100: 84,
2038
+ 0x11101: 84,
2039
+ 0x11102: 84,
2040
+ 0x11127: 84,
2041
+ 0x11128: 84,
2042
+ 0x11129: 84,
2043
+ 0x1112A: 84,
2044
+ 0x1112B: 84,
2045
+ 0x1112D: 84,
2046
+ 0x1112E: 84,
2047
+ 0x1112F: 84,
2048
+ 0x11130: 84,
2049
+ 0x11131: 84,
2050
+ 0x11132: 84,
2051
+ 0x11133: 84,
2052
+ 0x11134: 84,
2053
+ 0x11173: 84,
2054
+ 0x11180: 84,
2055
+ 0x11181: 84,
2056
+ 0x111B6: 84,
2057
+ 0x111B7: 84,
2058
+ 0x111B8: 84,
2059
+ 0x111B9: 84,
2060
+ 0x111BA: 84,
2061
+ 0x111BB: 84,
2062
+ 0x111BC: 84,
2063
+ 0x111BD: 84,
2064
+ 0x111BE: 84,
2065
+ 0x111C9: 84,
2066
+ 0x111CA: 84,
2067
+ 0x111CB: 84,
2068
+ 0x111CC: 84,
2069
+ 0x111CF: 84,
2070
+ 0x1122F: 84,
2071
+ 0x11230: 84,
2072
+ 0x11231: 84,
2073
+ 0x11234: 84,
2074
+ 0x11236: 84,
2075
+ 0x11237: 84,
2076
+ 0x1123E: 84,
2077
+ 0x11241: 84,
2078
+ 0x112DF: 84,
2079
+ 0x112E3: 84,
2080
+ 0x112E4: 84,
2081
+ 0x112E5: 84,
2082
+ 0x112E6: 84,
2083
+ 0x112E7: 84,
2084
+ 0x112E8: 84,
2085
+ 0x112E9: 84,
2086
+ 0x112EA: 84,
2087
+ 0x11300: 84,
2088
+ 0x11301: 84,
2089
+ 0x1133B: 84,
2090
+ 0x1133C: 84,
2091
+ 0x11340: 84,
2092
+ 0x11366: 84,
2093
+ 0x11367: 84,
2094
+ 0x11368: 84,
2095
+ 0x11369: 84,
2096
+ 0x1136A: 84,
2097
+ 0x1136B: 84,
2098
+ 0x1136C: 84,
2099
+ 0x11370: 84,
2100
+ 0x11371: 84,
2101
+ 0x11372: 84,
2102
+ 0x11373: 84,
2103
+ 0x11374: 84,
2104
+ 0x113BB: 84,
2105
+ 0x113BC: 84,
2106
+ 0x113BD: 84,
2107
+ 0x113BE: 84,
2108
+ 0x113BF: 84,
2109
+ 0x113C0: 84,
2110
+ 0x113CE: 84,
2111
+ 0x113D0: 84,
2112
+ 0x113D2: 84,
2113
+ 0x113E1: 84,
2114
+ 0x113E2: 84,
2115
+ 0x11438: 84,
2116
+ 0x11439: 84,
2117
+ 0x1143A: 84,
2118
+ 0x1143B: 84,
2119
+ 0x1143C: 84,
2120
+ 0x1143D: 84,
2121
+ 0x1143E: 84,
2122
+ 0x1143F: 84,
2123
+ 0x11442: 84,
2124
+ 0x11443: 84,
2125
+ 0x11444: 84,
2126
+ 0x11446: 84,
2127
+ 0x1145E: 84,
2128
+ 0x114B3: 84,
2129
+ 0x114B4: 84,
2130
+ 0x114B5: 84,
2131
+ 0x114B6: 84,
2132
+ 0x114B7: 84,
2133
+ 0x114B8: 84,
2134
+ 0x114BA: 84,
2135
+ 0x114BF: 84,
2136
+ 0x114C0: 84,
2137
+ 0x114C2: 84,
2138
+ 0x114C3: 84,
2139
+ 0x115B2: 84,
2140
+ 0x115B3: 84,
2141
+ 0x115B4: 84,
2142
+ 0x115B5: 84,
2143
+ 0x115BC: 84,
2144
+ 0x115BD: 84,
2145
+ 0x115BF: 84,
2146
+ 0x115C0: 84,
2147
+ 0x115DC: 84,
2148
+ 0x115DD: 84,
2149
+ 0x11633: 84,
2150
+ 0x11634: 84,
2151
+ 0x11635: 84,
2152
+ 0x11636: 84,
2153
+ 0x11637: 84,
2154
+ 0x11638: 84,
2155
+ 0x11639: 84,
2156
+ 0x1163A: 84,
2157
+ 0x1163D: 84,
2158
+ 0x1163F: 84,
2159
+ 0x11640: 84,
2160
+ 0x116AB: 84,
2161
+ 0x116AD: 84,
2162
+ 0x116B0: 84,
2163
+ 0x116B1: 84,
2164
+ 0x116B2: 84,
2165
+ 0x116B3: 84,
2166
+ 0x116B4: 84,
2167
+ 0x116B5: 84,
2168
+ 0x116B7: 84,
2169
+ 0x1171D: 84,
2170
+ 0x1171F: 84,
2171
+ 0x11722: 84,
2172
+ 0x11723: 84,
2173
+ 0x11724: 84,
2174
+ 0x11725: 84,
2175
+ 0x11727: 84,
2176
+ 0x11728: 84,
2177
+ 0x11729: 84,
2178
+ 0x1172A: 84,
2179
+ 0x1172B: 84,
2180
+ 0x1182F: 84,
2181
+ 0x11830: 84,
2182
+ 0x11831: 84,
2183
+ 0x11832: 84,
2184
+ 0x11833: 84,
2185
+ 0x11834: 84,
2186
+ 0x11835: 84,
2187
+ 0x11836: 84,
2188
+ 0x11837: 84,
2189
+ 0x11839: 84,
2190
+ 0x1183A: 84,
2191
+ 0x1193B: 84,
2192
+ 0x1193C: 84,
2193
+ 0x1193E: 84,
2194
+ 0x11943: 84,
2195
+ 0x119D4: 84,
2196
+ 0x119D5: 84,
2197
+ 0x119D6: 84,
2198
+ 0x119D7: 84,
2199
+ 0x119DA: 84,
2200
+ 0x119DB: 84,
2201
+ 0x119E0: 84,
2202
+ 0x11A01: 84,
2203
+ 0x11A02: 84,
2204
+ 0x11A03: 84,
2205
+ 0x11A04: 84,
2206
+ 0x11A05: 84,
2207
+ 0x11A06: 84,
2208
+ 0x11A07: 84,
2209
+ 0x11A08: 84,
2210
+ 0x11A09: 84,
2211
+ 0x11A0A: 84,
2212
+ 0x11A33: 84,
2213
+ 0x11A34: 84,
2214
+ 0x11A35: 84,
2215
+ 0x11A36: 84,
2216
+ 0x11A37: 84,
2217
+ 0x11A38: 84,
2218
+ 0x11A3B: 84,
2219
+ 0x11A3C: 84,
2220
+ 0x11A3D: 84,
2221
+ 0x11A3E: 84,
2222
+ 0x11A47: 84,
2223
+ 0x11A51: 84,
2224
+ 0x11A52: 84,
2225
+ 0x11A53: 84,
2226
+ 0x11A54: 84,
2227
+ 0x11A55: 84,
2228
+ 0x11A56: 84,
2229
+ 0x11A59: 84,
2230
+ 0x11A5A: 84,
2231
+ 0x11A5B: 84,
2232
+ 0x11A8A: 84,
2233
+ 0x11A8B: 84,
2234
+ 0x11A8C: 84,
2235
+ 0x11A8D: 84,
2236
+ 0x11A8E: 84,
2237
+ 0x11A8F: 84,
2238
+ 0x11A90: 84,
2239
+ 0x11A91: 84,
2240
+ 0x11A92: 84,
2241
+ 0x11A93: 84,
2242
+ 0x11A94: 84,
2243
+ 0x11A95: 84,
2244
+ 0x11A96: 84,
2245
+ 0x11A98: 84,
2246
+ 0x11A99: 84,
2247
+ 0x11B60: 84,
2248
+ 0x11B62: 84,
2249
+ 0x11B63: 84,
2250
+ 0x11B64: 84,
2251
+ 0x11B66: 84,
2252
+ 0x11C30: 84,
2253
+ 0x11C31: 84,
2254
+ 0x11C32: 84,
2255
+ 0x11C33: 84,
2256
+ 0x11C34: 84,
2257
+ 0x11C35: 84,
2258
+ 0x11C36: 84,
2259
+ 0x11C38: 84,
2260
+ 0x11C39: 84,
2261
+ 0x11C3A: 84,
2262
+ 0x11C3B: 84,
2263
+ 0x11C3C: 84,
2264
+ 0x11C3D: 84,
2265
+ 0x11C3F: 84,
2266
+ 0x11C92: 84,
2267
+ 0x11C93: 84,
2268
+ 0x11C94: 84,
2269
+ 0x11C95: 84,
2270
+ 0x11C96: 84,
2271
+ 0x11C97: 84,
2272
+ 0x11C98: 84,
2273
+ 0x11C99: 84,
2274
+ 0x11C9A: 84,
2275
+ 0x11C9B: 84,
2276
+ 0x11C9C: 84,
2277
+ 0x11C9D: 84,
2278
+ 0x11C9E: 84,
2279
+ 0x11C9F: 84,
2280
+ 0x11CA0: 84,
2281
+ 0x11CA1: 84,
2282
+ 0x11CA2: 84,
2283
+ 0x11CA3: 84,
2284
+ 0x11CA4: 84,
2285
+ 0x11CA5: 84,
2286
+ 0x11CA6: 84,
2287
+ 0x11CA7: 84,
2288
+ 0x11CAA: 84,
2289
+ 0x11CAB: 84,
2290
+ 0x11CAC: 84,
2291
+ 0x11CAD: 84,
2292
+ 0x11CAE: 84,
2293
+ 0x11CAF: 84,
2294
+ 0x11CB0: 84,
2295
+ 0x11CB2: 84,
2296
+ 0x11CB3: 84,
2297
+ 0x11CB5: 84,
2298
+ 0x11CB6: 84,
2299
+ 0x11D31: 84,
2300
+ 0x11D32: 84,
2301
+ 0x11D33: 84,
2302
+ 0x11D34: 84,
2303
+ 0x11D35: 84,
2304
+ 0x11D36: 84,
2305
+ 0x11D3A: 84,
2306
+ 0x11D3C: 84,
2307
+ 0x11D3D: 84,
2308
+ 0x11D3F: 84,
2309
+ 0x11D40: 84,
2310
+ 0x11D41: 84,
2311
+ 0x11D42: 84,
2312
+ 0x11D43: 84,
2313
+ 0x11D44: 84,
2314
+ 0x11D45: 84,
2315
+ 0x11D47: 84,
2316
+ 0x11D90: 84,
2317
+ 0x11D91: 84,
2318
+ 0x11D95: 84,
2319
+ 0x11D97: 84,
2320
+ 0x11EF3: 84,
2321
+ 0x11EF4: 84,
2322
+ 0x11F00: 84,
2323
+ 0x11F01: 84,
2324
+ 0x11F36: 84,
2325
+ 0x11F37: 84,
2326
+ 0x11F38: 84,
2327
+ 0x11F39: 84,
2328
+ 0x11F3A: 84,
2329
+ 0x11F40: 84,
2330
+ 0x11F42: 84,
2331
+ 0x11F5A: 84,
2332
+ 0x13430: 84,
2333
+ 0x13431: 84,
2334
+ 0x13432: 84,
2335
+ 0x13433: 84,
2336
+ 0x13434: 84,
2337
+ 0x13435: 84,
2338
+ 0x13436: 84,
2339
+ 0x13437: 84,
2340
+ 0x13438: 84,
2341
+ 0x13439: 84,
2342
+ 0x1343A: 84,
2343
+ 0x1343B: 84,
2344
+ 0x1343C: 84,
2345
+ 0x1343D: 84,
2346
+ 0x1343E: 84,
2347
+ 0x1343F: 84,
2348
+ 0x13440: 84,
2349
+ 0x13447: 84,
2350
+ 0x13448: 84,
2351
+ 0x13449: 84,
2352
+ 0x1344A: 84,
2353
+ 0x1344B: 84,
2354
+ 0x1344C: 84,
2355
+ 0x1344D: 84,
2356
+ 0x1344E: 84,
2357
+ 0x1344F: 84,
2358
+ 0x13450: 84,
2359
+ 0x13451: 84,
2360
+ 0x13452: 84,
2361
+ 0x13453: 84,
2362
+ 0x13454: 84,
2363
+ 0x13455: 84,
2364
+ 0x1611E: 84,
2365
+ 0x1611F: 84,
2366
+ 0x16120: 84,
2367
+ 0x16121: 84,
2368
+ 0x16122: 84,
2369
+ 0x16123: 84,
2370
+ 0x16124: 84,
2371
+ 0x16125: 84,
2372
+ 0x16126: 84,
2373
+ 0x16127: 84,
2374
+ 0x16128: 84,
2375
+ 0x16129: 84,
2376
+ 0x1612D: 84,
2377
+ 0x1612E: 84,
2378
+ 0x1612F: 84,
2379
+ 0x16AF0: 84,
2380
+ 0x16AF1: 84,
2381
+ 0x16AF2: 84,
2382
+ 0x16AF3: 84,
2383
+ 0x16AF4: 84,
2384
+ 0x16B30: 84,
2385
+ 0x16B31: 84,
2386
+ 0x16B32: 84,
2387
+ 0x16B33: 84,
2388
+ 0x16B34: 84,
2389
+ 0x16B35: 84,
2390
+ 0x16B36: 84,
2391
+ 0x16F4F: 84,
2392
+ 0x16F8F: 84,
2393
+ 0x16F90: 84,
2394
+ 0x16F91: 84,
2395
+ 0x16F92: 84,
2396
+ 0x16FE4: 84,
2397
+ 0x1BC9D: 84,
2398
+ 0x1BC9E: 84,
2399
+ 0x1BCA0: 84,
2400
+ 0x1BCA1: 84,
2401
+ 0x1BCA2: 84,
2402
+ 0x1BCA3: 84,
2403
+ 0x1CF00: 84,
2404
+ 0x1CF01: 84,
2405
+ 0x1CF02: 84,
2406
+ 0x1CF03: 84,
2407
+ 0x1CF04: 84,
2408
+ 0x1CF05: 84,
2409
+ 0x1CF06: 84,
2410
+ 0x1CF07: 84,
2411
+ 0x1CF08: 84,
2412
+ 0x1CF09: 84,
2413
+ 0x1CF0A: 84,
2414
+ 0x1CF0B: 84,
2415
+ 0x1CF0C: 84,
2416
+ 0x1CF0D: 84,
2417
+ 0x1CF0E: 84,
2418
+ 0x1CF0F: 84,
2419
+ 0x1CF10: 84,
2420
+ 0x1CF11: 84,
2421
+ 0x1CF12: 84,
2422
+ 0x1CF13: 84,
2423
+ 0x1CF14: 84,
2424
+ 0x1CF15: 84,
2425
+ 0x1CF16: 84,
2426
+ 0x1CF17: 84,
2427
+ 0x1CF18: 84,
2428
+ 0x1CF19: 84,
2429
+ 0x1CF1A: 84,
2430
+ 0x1CF1B: 84,
2431
+ 0x1CF1C: 84,
2432
+ 0x1CF1D: 84,
2433
+ 0x1CF1E: 84,
2434
+ 0x1CF1F: 84,
2435
+ 0x1CF20: 84,
2436
+ 0x1CF21: 84,
2437
+ 0x1CF22: 84,
2438
+ 0x1CF23: 84,
2439
+ 0x1CF24: 84,
2440
+ 0x1CF25: 84,
2441
+ 0x1CF26: 84,
2442
+ 0x1CF27: 84,
2443
+ 0x1CF28: 84,
2444
+ 0x1CF29: 84,
2445
+ 0x1CF2A: 84,
2446
+ 0x1CF2B: 84,
2447
+ 0x1CF2C: 84,
2448
+ 0x1CF2D: 84,
2449
+ 0x1CF30: 84,
2450
+ 0x1CF31: 84,
2451
+ 0x1CF32: 84,
2452
+ 0x1CF33: 84,
2453
+ 0x1CF34: 84,
2454
+ 0x1CF35: 84,
2455
+ 0x1CF36: 84,
2456
+ 0x1CF37: 84,
2457
+ 0x1CF38: 84,
2458
+ 0x1CF39: 84,
2459
+ 0x1CF3A: 84,
2460
+ 0x1CF3B: 84,
2461
+ 0x1CF3C: 84,
2462
+ 0x1CF3D: 84,
2463
+ 0x1CF3E: 84,
2464
+ 0x1CF3F: 84,
2465
+ 0x1CF40: 84,
2466
+ 0x1CF41: 84,
2467
+ 0x1CF42: 84,
2468
+ 0x1CF43: 84,
2469
+ 0x1CF44: 84,
2470
+ 0x1CF45: 84,
2471
+ 0x1CF46: 84,
2472
+ 0x1D167: 84,
2473
+ 0x1D168: 84,
2474
+ 0x1D169: 84,
2475
+ 0x1D173: 84,
2476
+ 0x1D174: 84,
2477
+ 0x1D175: 84,
2478
+ 0x1D176: 84,
2479
+ 0x1D177: 84,
2480
+ 0x1D178: 84,
2481
+ 0x1D179: 84,
2482
+ 0x1D17A: 84,
2483
+ 0x1D17B: 84,
2484
+ 0x1D17C: 84,
2485
+ 0x1D17D: 84,
2486
+ 0x1D17E: 84,
2487
+ 0x1D17F: 84,
2488
+ 0x1D180: 84,
2489
+ 0x1D181: 84,
2490
+ 0x1D182: 84,
2491
+ 0x1D185: 84,
2492
+ 0x1D186: 84,
2493
+ 0x1D187: 84,
2494
+ 0x1D188: 84,
2495
+ 0x1D189: 84,
2496
+ 0x1D18A: 84,
2497
+ 0x1D18B: 84,
2498
+ 0x1D1AA: 84,
2499
+ 0x1D1AB: 84,
2500
+ 0x1D1AC: 84,
2501
+ 0x1D1AD: 84,
2502
+ 0x1D242: 84,
2503
+ 0x1D243: 84,
2504
+ 0x1D244: 84,
2505
+ 0x1DA00: 84,
2506
+ 0x1DA01: 84,
2507
+ 0x1DA02: 84,
2508
+ 0x1DA03: 84,
2509
+ 0x1DA04: 84,
2510
+ 0x1DA05: 84,
2511
+ 0x1DA06: 84,
2512
+ 0x1DA07: 84,
2513
+ 0x1DA08: 84,
2514
+ 0x1DA09: 84,
2515
+ 0x1DA0A: 84,
2516
+ 0x1DA0B: 84,
2517
+ 0x1DA0C: 84,
2518
+ 0x1DA0D: 84,
2519
+ 0x1DA0E: 84,
2520
+ 0x1DA0F: 84,
2521
+ 0x1DA10: 84,
2522
+ 0x1DA11: 84,
2523
+ 0x1DA12: 84,
2524
+ 0x1DA13: 84,
2525
+ 0x1DA14: 84,
2526
+ 0x1DA15: 84,
2527
+ 0x1DA16: 84,
2528
+ 0x1DA17: 84,
2529
+ 0x1DA18: 84,
2530
+ 0x1DA19: 84,
2531
+ 0x1DA1A: 84,
2532
+ 0x1DA1B: 84,
2533
+ 0x1DA1C: 84,
2534
+ 0x1DA1D: 84,
2535
+ 0x1DA1E: 84,
2536
+ 0x1DA1F: 84,
2537
+ 0x1DA20: 84,
2538
+ 0x1DA21: 84,
2539
+ 0x1DA22: 84,
2540
+ 0x1DA23: 84,
2541
+ 0x1DA24: 84,
2542
+ 0x1DA25: 84,
2543
+ 0x1DA26: 84,
2544
+ 0x1DA27: 84,
2545
+ 0x1DA28: 84,
2546
+ 0x1DA29: 84,
2547
+ 0x1DA2A: 84,
2548
+ 0x1DA2B: 84,
2549
+ 0x1DA2C: 84,
2550
+ 0x1DA2D: 84,
2551
+ 0x1DA2E: 84,
2552
+ 0x1DA2F: 84,
2553
+ 0x1DA30: 84,
2554
+ 0x1DA31: 84,
2555
+ 0x1DA32: 84,
2556
+ 0x1DA33: 84,
2557
+ 0x1DA34: 84,
2558
+ 0x1DA35: 84,
2559
+ 0x1DA36: 84,
2560
+ 0x1DA3B: 84,
2561
+ 0x1DA3C: 84,
2562
+ 0x1DA3D: 84,
2563
+ 0x1DA3E: 84,
2564
+ 0x1DA3F: 84,
2565
+ 0x1DA40: 84,
2566
+ 0x1DA41: 84,
2567
+ 0x1DA42: 84,
2568
+ 0x1DA43: 84,
2569
+ 0x1DA44: 84,
2570
+ 0x1DA45: 84,
2571
+ 0x1DA46: 84,
2572
+ 0x1DA47: 84,
2573
+ 0x1DA48: 84,
2574
+ 0x1DA49: 84,
2575
+ 0x1DA4A: 84,
2576
+ 0x1DA4B: 84,
2577
+ 0x1DA4C: 84,
2578
+ 0x1DA4D: 84,
2579
+ 0x1DA4E: 84,
2580
+ 0x1DA4F: 84,
2581
+ 0x1DA50: 84,
2582
+ 0x1DA51: 84,
2583
+ 0x1DA52: 84,
2584
+ 0x1DA53: 84,
2585
+ 0x1DA54: 84,
2586
+ 0x1DA55: 84,
2587
+ 0x1DA56: 84,
2588
+ 0x1DA57: 84,
2589
+ 0x1DA58: 84,
2590
+ 0x1DA59: 84,
2591
+ 0x1DA5A: 84,
2592
+ 0x1DA5B: 84,
2593
+ 0x1DA5C: 84,
2594
+ 0x1DA5D: 84,
2595
+ 0x1DA5E: 84,
2596
+ 0x1DA5F: 84,
2597
+ 0x1DA60: 84,
2598
+ 0x1DA61: 84,
2599
+ 0x1DA62: 84,
2600
+ 0x1DA63: 84,
2601
+ 0x1DA64: 84,
2602
+ 0x1DA65: 84,
2603
+ 0x1DA66: 84,
2604
+ 0x1DA67: 84,
2605
+ 0x1DA68: 84,
2606
+ 0x1DA69: 84,
2607
+ 0x1DA6A: 84,
2608
+ 0x1DA6B: 84,
2609
+ 0x1DA6C: 84,
2610
+ 0x1DA75: 84,
2611
+ 0x1DA84: 84,
2612
+ 0x1DA9B: 84,
2613
+ 0x1DA9C: 84,
2614
+ 0x1DA9D: 84,
2615
+ 0x1DA9E: 84,
2616
+ 0x1DA9F: 84,
2617
+ 0x1DAA1: 84,
2618
+ 0x1DAA2: 84,
2619
+ 0x1DAA3: 84,
2620
+ 0x1DAA4: 84,
2621
+ 0x1DAA5: 84,
2622
+ 0x1DAA6: 84,
2623
+ 0x1DAA7: 84,
2624
+ 0x1DAA8: 84,
2625
+ 0x1DAA9: 84,
2626
+ 0x1DAAA: 84,
2627
+ 0x1DAAB: 84,
2628
+ 0x1DAAC: 84,
2629
+ 0x1DAAD: 84,
2630
+ 0x1DAAE: 84,
2631
+ 0x1DAAF: 84,
2632
+ 0x1E000: 84,
2633
+ 0x1E001: 84,
2634
+ 0x1E002: 84,
2635
+ 0x1E003: 84,
2636
+ 0x1E004: 84,
2637
+ 0x1E005: 84,
2638
+ 0x1E006: 84,
2639
+ 0x1E008: 84,
2640
+ 0x1E009: 84,
2641
+ 0x1E00A: 84,
2642
+ 0x1E00B: 84,
2643
+ 0x1E00C: 84,
2644
+ 0x1E00D: 84,
2645
+ 0x1E00E: 84,
2646
+ 0x1E00F: 84,
2647
+ 0x1E010: 84,
2648
+ 0x1E011: 84,
2649
+ 0x1E012: 84,
2650
+ 0x1E013: 84,
2651
+ 0x1E014: 84,
2652
+ 0x1E015: 84,
2653
+ 0x1E016: 84,
2654
+ 0x1E017: 84,
2655
+ 0x1E018: 84,
2656
+ 0x1E01B: 84,
2657
+ 0x1E01C: 84,
2658
+ 0x1E01D: 84,
2659
+ 0x1E01E: 84,
2660
+ 0x1E01F: 84,
2661
+ 0x1E020: 84,
2662
+ 0x1E021: 84,
2663
+ 0x1E023: 84,
2664
+ 0x1E024: 84,
2665
+ 0x1E026: 84,
2666
+ 0x1E027: 84,
2667
+ 0x1E028: 84,
2668
+ 0x1E029: 84,
2669
+ 0x1E02A: 84,
2670
+ 0x1E08F: 84,
2671
+ 0x1E130: 84,
2672
+ 0x1E131: 84,
2673
+ 0x1E132: 84,
2674
+ 0x1E133: 84,
2675
+ 0x1E134: 84,
2676
+ 0x1E135: 84,
2677
+ 0x1E136: 84,
2678
+ 0x1E2AE: 84,
2679
+ 0x1E2EC: 84,
2680
+ 0x1E2ED: 84,
2681
+ 0x1E2EE: 84,
2682
+ 0x1E2EF: 84,
2683
+ 0x1E4EC: 84,
2684
+ 0x1E4ED: 84,
2685
+ 0x1E4EE: 84,
2686
+ 0x1E4EF: 84,
2687
+ 0x1E5EE: 84,
2688
+ 0x1E5EF: 84,
2689
+ 0x1E6E3: 84,
2690
+ 0x1E6E6: 84,
2691
+ 0x1E6EE: 84,
2692
+ 0x1E6EF: 84,
2693
+ 0x1E6F5: 84,
2694
+ 0x1E8D0: 84,
2695
+ 0x1E8D1: 84,
2696
+ 0x1E8D2: 84,
2697
+ 0x1E8D3: 84,
2698
+ 0x1E8D4: 84,
2699
+ 0x1E8D5: 84,
2700
+ 0x1E8D6: 84,
2701
+ 0x1E900: 68,
2702
+ 0x1E901: 68,
2703
+ 0x1E902: 68,
2704
+ 0x1E903: 68,
2705
+ 0x1E904: 68,
2706
+ 0x1E905: 68,
2707
+ 0x1E906: 68,
2708
+ 0x1E907: 68,
2709
+ 0x1E908: 68,
2710
+ 0x1E909: 68,
2711
+ 0x1E90A: 68,
2712
+ 0x1E90B: 68,
2713
+ 0x1E90C: 68,
2714
+ 0x1E90D: 68,
2715
+ 0x1E90E: 68,
2716
+ 0x1E90F: 68,
2717
+ 0x1E910: 68,
2718
+ 0x1E911: 68,
2719
+ 0x1E912: 68,
2720
+ 0x1E913: 68,
2721
+ 0x1E914: 68,
2722
+ 0x1E915: 68,
2723
+ 0x1E916: 68,
2724
+ 0x1E917: 68,
2725
+ 0x1E918: 68,
2726
+ 0x1E919: 68,
2727
+ 0x1E91A: 68,
2728
+ 0x1E91B: 68,
2729
+ 0x1E91C: 68,
2730
+ 0x1E91D: 68,
2731
+ 0x1E91E: 68,
2732
+ 0x1E91F: 68,
2733
+ 0x1E920: 68,
2734
+ 0x1E921: 68,
2735
+ 0x1E922: 68,
2736
+ 0x1E923: 68,
2737
+ 0x1E924: 68,
2738
+ 0x1E925: 68,
2739
+ 0x1E926: 68,
2740
+ 0x1E927: 68,
2741
+ 0x1E928: 68,
2742
+ 0x1E929: 68,
2743
+ 0x1E92A: 68,
2744
+ 0x1E92B: 68,
2745
+ 0x1E92C: 68,
2746
+ 0x1E92D: 68,
2747
+ 0x1E92E: 68,
2748
+ 0x1E92F: 68,
2749
+ 0x1E930: 68,
2750
+ 0x1E931: 68,
2751
+ 0x1E932: 68,
2752
+ 0x1E933: 68,
2753
+ 0x1E934: 68,
2754
+ 0x1E935: 68,
2755
+ 0x1E936: 68,
2756
+ 0x1E937: 68,
2757
+ 0x1E938: 68,
2758
+ 0x1E939: 68,
2759
+ 0x1E93A: 68,
2760
+ 0x1E93B: 68,
2761
+ 0x1E93C: 68,
2762
+ 0x1E93D: 68,
2763
+ 0x1E93E: 68,
2764
+ 0x1E93F: 68,
2765
+ 0x1E940: 68,
2766
+ 0x1E941: 68,
2767
+ 0x1E942: 68,
2768
+ 0x1E943: 68,
2769
+ 0x1E944: 84,
2770
+ 0x1E945: 84,
2771
+ 0x1E946: 84,
2772
+ 0x1E947: 84,
2773
+ 0x1E948: 84,
2774
+ 0x1E949: 84,
2775
+ 0x1E94A: 84,
2776
+ 0x1E94B: 84,
2777
+ 0xE0001: 84,
2778
+ 0xE0020: 84,
2779
+ 0xE0021: 84,
2780
+ 0xE0022: 84,
2781
+ 0xE0023: 84,
2782
+ 0xE0024: 84,
2783
+ 0xE0025: 84,
2784
+ 0xE0026: 84,
2785
+ 0xE0027: 84,
2786
+ 0xE0028: 84,
2787
+ 0xE0029: 84,
2788
+ 0xE002A: 84,
2789
+ 0xE002B: 84,
2790
+ 0xE002C: 84,
2791
+ 0xE002D: 84,
2792
+ 0xE002E: 84,
2793
+ 0xE002F: 84,
2794
+ 0xE0030: 84,
2795
+ 0xE0031: 84,
2796
+ 0xE0032: 84,
2797
+ 0xE0033: 84,
2798
+ 0xE0034: 84,
2799
+ 0xE0035: 84,
2800
+ 0xE0036: 84,
2801
+ 0xE0037: 84,
2802
+ 0xE0038: 84,
2803
+ 0xE0039: 84,
2804
+ 0xE003A: 84,
2805
+ 0xE003B: 84,
2806
+ 0xE003C: 84,
2807
+ 0xE003D: 84,
2808
+ 0xE003E: 84,
2809
+ 0xE003F: 84,
2810
+ 0xE0040: 84,
2811
+ 0xE0041: 84,
2812
+ 0xE0042: 84,
2813
+ 0xE0043: 84,
2814
+ 0xE0044: 84,
2815
+ 0xE0045: 84,
2816
+ 0xE0046: 84,
2817
+ 0xE0047: 84,
2818
+ 0xE0048: 84,
2819
+ 0xE0049: 84,
2820
+ 0xE004A: 84,
2821
+ 0xE004B: 84,
2822
+ 0xE004C: 84,
2823
+ 0xE004D: 84,
2824
+ 0xE004E: 84,
2825
+ 0xE004F: 84,
2826
+ 0xE0050: 84,
2827
+ 0xE0051: 84,
2828
+ 0xE0052: 84,
2829
+ 0xE0053: 84,
2830
+ 0xE0054: 84,
2831
+ 0xE0055: 84,
2832
+ 0xE0056: 84,
2833
+ 0xE0057: 84,
2834
+ 0xE0058: 84,
2835
+ 0xE0059: 84,
2836
+ 0xE005A: 84,
2837
+ 0xE005B: 84,
2838
+ 0xE005C: 84,
2839
+ 0xE005D: 84,
2840
+ 0xE005E: 84,
2841
+ 0xE005F: 84,
2842
+ 0xE0060: 84,
2843
+ 0xE0061: 84,
2844
+ 0xE0062: 84,
2845
+ 0xE0063: 84,
2846
+ 0xE0064: 84,
2847
+ 0xE0065: 84,
2848
+ 0xE0066: 84,
2849
+ 0xE0067: 84,
2850
+ 0xE0068: 84,
2851
+ 0xE0069: 84,
2852
+ 0xE006A: 84,
2853
+ 0xE006B: 84,
2854
+ 0xE006C: 84,
2855
+ 0xE006D: 84,
2856
+ 0xE006E: 84,
2857
+ 0xE006F: 84,
2858
+ 0xE0070: 84,
2859
+ 0xE0071: 84,
2860
+ 0xE0072: 84,
2861
+ 0xE0073: 84,
2862
+ 0xE0074: 84,
2863
+ 0xE0075: 84,
2864
+ 0xE0076: 84,
2865
+ 0xE0077: 84,
2866
+ 0xE0078: 84,
2867
+ 0xE0079: 84,
2868
+ 0xE007A: 84,
2869
+ 0xE007B: 84,
2870
+ 0xE007C: 84,
2871
+ 0xE007D: 84,
2872
+ 0xE007E: 84,
2873
+ 0xE007F: 84,
2874
+ 0xE0100: 84,
2875
+ 0xE0101: 84,
2876
+ 0xE0102: 84,
2877
+ 0xE0103: 84,
2878
+ 0xE0104: 84,
2879
+ 0xE0105: 84,
2880
+ 0xE0106: 84,
2881
+ 0xE0107: 84,
2882
+ 0xE0108: 84,
2883
+ 0xE0109: 84,
2884
+ 0xE010A: 84,
2885
+ 0xE010B: 84,
2886
+ 0xE010C: 84,
2887
+ 0xE010D: 84,
2888
+ 0xE010E: 84,
2889
+ 0xE010F: 84,
2890
+ 0xE0110: 84,
2891
+ 0xE0111: 84,
2892
+ 0xE0112: 84,
2893
+ 0xE0113: 84,
2894
+ 0xE0114: 84,
2895
+ 0xE0115: 84,
2896
+ 0xE0116: 84,
2897
+ 0xE0117: 84,
2898
+ 0xE0118: 84,
2899
+ 0xE0119: 84,
2900
+ 0xE011A: 84,
2901
+ 0xE011B: 84,
2902
+ 0xE011C: 84,
2903
+ 0xE011D: 84,
2904
+ 0xE011E: 84,
2905
+ 0xE011F: 84,
2906
+ 0xE0120: 84,
2907
+ 0xE0121: 84,
2908
+ 0xE0122: 84,
2909
+ 0xE0123: 84,
2910
+ 0xE0124: 84,
2911
+ 0xE0125: 84,
2912
+ 0xE0126: 84,
2913
+ 0xE0127: 84,
2914
+ 0xE0128: 84,
2915
+ 0xE0129: 84,
2916
+ 0xE012A: 84,
2917
+ 0xE012B: 84,
2918
+ 0xE012C: 84,
2919
+ 0xE012D: 84,
2920
+ 0xE012E: 84,
2921
+ 0xE012F: 84,
2922
+ 0xE0130: 84,
2923
+ 0xE0131: 84,
2924
+ 0xE0132: 84,
2925
+ 0xE0133: 84,
2926
+ 0xE0134: 84,
2927
+ 0xE0135: 84,
2928
+ 0xE0136: 84,
2929
+ 0xE0137: 84,
2930
+ 0xE0138: 84,
2931
+ 0xE0139: 84,
2932
+ 0xE013A: 84,
2933
+ 0xE013B: 84,
2934
+ 0xE013C: 84,
2935
+ 0xE013D: 84,
2936
+ 0xE013E: 84,
2937
+ 0xE013F: 84,
2938
+ 0xE0140: 84,
2939
+ 0xE0141: 84,
2940
+ 0xE0142: 84,
2941
+ 0xE0143: 84,
2942
+ 0xE0144: 84,
2943
+ 0xE0145: 84,
2944
+ 0xE0146: 84,
2945
+ 0xE0147: 84,
2946
+ 0xE0148: 84,
2947
+ 0xE0149: 84,
2948
+ 0xE014A: 84,
2949
+ 0xE014B: 84,
2950
+ 0xE014C: 84,
2951
+ 0xE014D: 84,
2952
+ 0xE014E: 84,
2953
+ 0xE014F: 84,
2954
+ 0xE0150: 84,
2955
+ 0xE0151: 84,
2956
+ 0xE0152: 84,
2957
+ 0xE0153: 84,
2958
+ 0xE0154: 84,
2959
+ 0xE0155: 84,
2960
+ 0xE0156: 84,
2961
+ 0xE0157: 84,
2962
+ 0xE0158: 84,
2963
+ 0xE0159: 84,
2964
+ 0xE015A: 84,
2965
+ 0xE015B: 84,
2966
+ 0xE015C: 84,
2967
+ 0xE015D: 84,
2968
+ 0xE015E: 84,
2969
+ 0xE015F: 84,
2970
+ 0xE0160: 84,
2971
+ 0xE0161: 84,
2972
+ 0xE0162: 84,
2973
+ 0xE0163: 84,
2974
+ 0xE0164: 84,
2975
+ 0xE0165: 84,
2976
+ 0xE0166: 84,
2977
+ 0xE0167: 84,
2978
+ 0xE0168: 84,
2979
+ 0xE0169: 84,
2980
+ 0xE016A: 84,
2981
+ 0xE016B: 84,
2982
+ 0xE016C: 84,
2983
+ 0xE016D: 84,
2984
+ 0xE016E: 84,
2985
+ 0xE016F: 84,
2986
+ 0xE0170: 84,
2987
+ 0xE0171: 84,
2988
+ 0xE0172: 84,
2989
+ 0xE0173: 84,
2990
+ 0xE0174: 84,
2991
+ 0xE0175: 84,
2992
+ 0xE0176: 84,
2993
+ 0xE0177: 84,
2994
+ 0xE0178: 84,
2995
+ 0xE0179: 84,
2996
+ 0xE017A: 84,
2997
+ 0xE017B: 84,
2998
+ 0xE017C: 84,
2999
+ 0xE017D: 84,
3000
+ 0xE017E: 84,
3001
+ 0xE017F: 84,
3002
+ 0xE0180: 84,
3003
+ 0xE0181: 84,
3004
+ 0xE0182: 84,
3005
+ 0xE0183: 84,
3006
+ 0xE0184: 84,
3007
+ 0xE0185: 84,
3008
+ 0xE0186: 84,
3009
+ 0xE0187: 84,
3010
+ 0xE0188: 84,
3011
+ 0xE0189: 84,
3012
+ 0xE018A: 84,
3013
+ 0xE018B: 84,
3014
+ 0xE018C: 84,
3015
+ 0xE018D: 84,
3016
+ 0xE018E: 84,
3017
+ 0xE018F: 84,
3018
+ 0xE0190: 84,
3019
+ 0xE0191: 84,
3020
+ 0xE0192: 84,
3021
+ 0xE0193: 84,
3022
+ 0xE0194: 84,
3023
+ 0xE0195: 84,
3024
+ 0xE0196: 84,
3025
+ 0xE0197: 84,
3026
+ 0xE0198: 84,
3027
+ 0xE0199: 84,
3028
+ 0xE019A: 84,
3029
+ 0xE019B: 84,
3030
+ 0xE019C: 84,
3031
+ 0xE019D: 84,
3032
+ 0xE019E: 84,
3033
+ 0xE019F: 84,
3034
+ 0xE01A0: 84,
3035
+ 0xE01A1: 84,
3036
+ 0xE01A2: 84,
3037
+ 0xE01A3: 84,
3038
+ 0xE01A4: 84,
3039
+ 0xE01A5: 84,
3040
+ 0xE01A6: 84,
3041
+ 0xE01A7: 84,
3042
+ 0xE01A8: 84,
3043
+ 0xE01A9: 84,
3044
+ 0xE01AA: 84,
3045
+ 0xE01AB: 84,
3046
+ 0xE01AC: 84,
3047
+ 0xE01AD: 84,
3048
+ 0xE01AE: 84,
3049
+ 0xE01AF: 84,
3050
+ 0xE01B0: 84,
3051
+ 0xE01B1: 84,
3052
+ 0xE01B2: 84,
3053
+ 0xE01B3: 84,
3054
+ 0xE01B4: 84,
3055
+ 0xE01B5: 84,
3056
+ 0xE01B6: 84,
3057
+ 0xE01B7: 84,
3058
+ 0xE01B8: 84,
3059
+ 0xE01B9: 84,
3060
+ 0xE01BA: 84,
3061
+ 0xE01BB: 84,
3062
+ 0xE01BC: 84,
3063
+ 0xE01BD: 84,
3064
+ 0xE01BE: 84,
3065
+ 0xE01BF: 84,
3066
+ 0xE01C0: 84,
3067
+ 0xE01C1: 84,
3068
+ 0xE01C2: 84,
3069
+ 0xE01C3: 84,
3070
+ 0xE01C4: 84,
3071
+ 0xE01C5: 84,
3072
+ 0xE01C6: 84,
3073
+ 0xE01C7: 84,
3074
+ 0xE01C8: 84,
3075
+ 0xE01C9: 84,
3076
+ 0xE01CA: 84,
3077
+ 0xE01CB: 84,
3078
+ 0xE01CC: 84,
3079
+ 0xE01CD: 84,
3080
+ 0xE01CE: 84,
3081
+ 0xE01CF: 84,
3082
+ 0xE01D0: 84,
3083
+ 0xE01D1: 84,
3084
+ 0xE01D2: 84,
3085
+ 0xE01D3: 84,
3086
+ 0xE01D4: 84,
3087
+ 0xE01D5: 84,
3088
+ 0xE01D6: 84,
3089
+ 0xE01D7: 84,
3090
+ 0xE01D8: 84,
3091
+ 0xE01D9: 84,
3092
+ 0xE01DA: 84,
3093
+ 0xE01DB: 84,
3094
+ 0xE01DC: 84,
3095
+ 0xE01DD: 84,
3096
+ 0xE01DE: 84,
3097
+ 0xE01DF: 84,
3098
+ 0xE01E0: 84,
3099
+ 0xE01E1: 84,
3100
+ 0xE01E2: 84,
3101
+ 0xE01E3: 84,
3102
+ 0xE01E4: 84,
3103
+ 0xE01E5: 84,
3104
+ 0xE01E6: 84,
3105
+ 0xE01E7: 84,
3106
+ 0xE01E8: 84,
3107
+ 0xE01E9: 84,
3108
+ 0xE01EA: 84,
3109
+ 0xE01EB: 84,
3110
+ 0xE01EC: 84,
3111
+ 0xE01ED: 84,
3112
+ 0xE01EE: 84,
3113
+ 0xE01EF: 84,
3114
+ }
3115
+
3116
+
3117
+ codepoint_classes = {
3118
+ "PVALID": (
3119
+ 0x2D0000002E,
3120
+ 0x300000003A,
3121
+ 0x610000007B,
3122
+ 0xDF000000F7,
3123
+ 0xF800000100,
3124
+ 0x10100000102,
3125
+ 0x10300000104,
3126
+ 0x10500000106,
3127
+ 0x10700000108,
3128
+ 0x1090000010A,
3129
+ 0x10B0000010C,
3130
+ 0x10D0000010E,
3131
+ 0x10F00000110,
3132
+ 0x11100000112,
3133
+ 0x11300000114,
3134
+ 0x11500000116,
3135
+ 0x11700000118,
3136
+ 0x1190000011A,
3137
+ 0x11B0000011C,
3138
+ 0x11D0000011E,
3139
+ 0x11F00000120,
3140
+ 0x12100000122,
3141
+ 0x12300000124,
3142
+ 0x12500000126,
3143
+ 0x12700000128,
3144
+ 0x1290000012A,
3145
+ 0x12B0000012C,
3146
+ 0x12D0000012E,
3147
+ 0x12F00000130,
3148
+ 0x13100000132,
3149
+ 0x13500000136,
3150
+ 0x13700000139,
3151
+ 0x13A0000013B,
3152
+ 0x13C0000013D,
3153
+ 0x13E0000013F,
3154
+ 0x14200000143,
3155
+ 0x14400000145,
3156
+ 0x14600000147,
3157
+ 0x14800000149,
3158
+ 0x14B0000014C,
3159
+ 0x14D0000014E,
3160
+ 0x14F00000150,
3161
+ 0x15100000152,
3162
+ 0x15300000154,
3163
+ 0x15500000156,
3164
+ 0x15700000158,
3165
+ 0x1590000015A,
3166
+ 0x15B0000015C,
3167
+ 0x15D0000015E,
3168
+ 0x15F00000160,
3169
+ 0x16100000162,
3170
+ 0x16300000164,
3171
+ 0x16500000166,
3172
+ 0x16700000168,
3173
+ 0x1690000016A,
3174
+ 0x16B0000016C,
3175
+ 0x16D0000016E,
3176
+ 0x16F00000170,
3177
+ 0x17100000172,
3178
+ 0x17300000174,
3179
+ 0x17500000176,
3180
+ 0x17700000178,
3181
+ 0x17A0000017B,
3182
+ 0x17C0000017D,
3183
+ 0x17E0000017F,
3184
+ 0x18000000181,
3185
+ 0x18300000184,
3186
+ 0x18500000186,
3187
+ 0x18800000189,
3188
+ 0x18C0000018E,
3189
+ 0x19200000193,
3190
+ 0x19500000196,
3191
+ 0x1990000019C,
3192
+ 0x19E0000019F,
3193
+ 0x1A1000001A2,
3194
+ 0x1A3000001A4,
3195
+ 0x1A5000001A6,
3196
+ 0x1A8000001A9,
3197
+ 0x1AA000001AC,
3198
+ 0x1AD000001AE,
3199
+ 0x1B0000001B1,
3200
+ 0x1B4000001B5,
3201
+ 0x1B6000001B7,
3202
+ 0x1B9000001BC,
3203
+ 0x1BD000001C4,
3204
+ 0x1CE000001CF,
3205
+ 0x1D0000001D1,
3206
+ 0x1D2000001D3,
3207
+ 0x1D4000001D5,
3208
+ 0x1D6000001D7,
3209
+ 0x1D8000001D9,
3210
+ 0x1DA000001DB,
3211
+ 0x1DC000001DE,
3212
+ 0x1DF000001E0,
3213
+ 0x1E1000001E2,
3214
+ 0x1E3000001E4,
3215
+ 0x1E5000001E6,
3216
+ 0x1E7000001E8,
3217
+ 0x1E9000001EA,
3218
+ 0x1EB000001EC,
3219
+ 0x1ED000001EE,
3220
+ 0x1EF000001F1,
3221
+ 0x1F5000001F6,
3222
+ 0x1F9000001FA,
3223
+ 0x1FB000001FC,
3224
+ 0x1FD000001FE,
3225
+ 0x1FF00000200,
3226
+ 0x20100000202,
3227
+ 0x20300000204,
3228
+ 0x20500000206,
3229
+ 0x20700000208,
3230
+ 0x2090000020A,
3231
+ 0x20B0000020C,
3232
+ 0x20D0000020E,
3233
+ 0x20F00000210,
3234
+ 0x21100000212,
3235
+ 0x21300000214,
3236
+ 0x21500000216,
3237
+ 0x21700000218,
3238
+ 0x2190000021A,
3239
+ 0x21B0000021C,
3240
+ 0x21D0000021E,
3241
+ 0x21F00000220,
3242
+ 0x22100000222,
3243
+ 0x22300000224,
3244
+ 0x22500000226,
3245
+ 0x22700000228,
3246
+ 0x2290000022A,
3247
+ 0x22B0000022C,
3248
+ 0x22D0000022E,
3249
+ 0x22F00000230,
3250
+ 0x23100000232,
3251
+ 0x2330000023A,
3252
+ 0x23C0000023D,
3253
+ 0x23F00000241,
3254
+ 0x24200000243,
3255
+ 0x24700000248,
3256
+ 0x2490000024A,
3257
+ 0x24B0000024C,
3258
+ 0x24D0000024E,
3259
+ 0x24F000002B0,
3260
+ 0x2B9000002C2,
3261
+ 0x2C6000002D2,
3262
+ 0x2EC000002ED,
3263
+ 0x2EE000002EF,
3264
+ 0x30000000340,
3265
+ 0x34200000343,
3266
+ 0x3460000034F,
3267
+ 0x35000000370,
3268
+ 0x37100000372,
3269
+ 0x37300000374,
3270
+ 0x37700000378,
3271
+ 0x37B0000037E,
3272
+ 0x39000000391,
3273
+ 0x3AC000003CF,
3274
+ 0x3D7000003D8,
3275
+ 0x3D9000003DA,
3276
+ 0x3DB000003DC,
3277
+ 0x3DD000003DE,
3278
+ 0x3DF000003E0,
3279
+ 0x3E1000003E2,
3280
+ 0x3E3000003E4,
3281
+ 0x3E5000003E6,
3282
+ 0x3E7000003E8,
3283
+ 0x3E9000003EA,
3284
+ 0x3EB000003EC,
3285
+ 0x3ED000003EE,
3286
+ 0x3EF000003F0,
3287
+ 0x3F3000003F4,
3288
+ 0x3F8000003F9,
3289
+ 0x3FB000003FD,
3290
+ 0x43000000460,
3291
+ 0x46100000462,
3292
+ 0x46300000464,
3293
+ 0x46500000466,
3294
+ 0x46700000468,
3295
+ 0x4690000046A,
3296
+ 0x46B0000046C,
3297
+ 0x46D0000046E,
3298
+ 0x46F00000470,
3299
+ 0x47100000472,
3300
+ 0x47300000474,
3301
+ 0x47500000476,
3302
+ 0x47700000478,
3303
+ 0x4790000047A,
3304
+ 0x47B0000047C,
3305
+ 0x47D0000047E,
3306
+ 0x47F00000480,
3307
+ 0x48100000482,
3308
+ 0x48300000488,
3309
+ 0x48B0000048C,
3310
+ 0x48D0000048E,
3311
+ 0x48F00000490,
3312
+ 0x49100000492,
3313
+ 0x49300000494,
3314
+ 0x49500000496,
3315
+ 0x49700000498,
3316
+ 0x4990000049A,
3317
+ 0x49B0000049C,
3318
+ 0x49D0000049E,
3319
+ 0x49F000004A0,
3320
+ 0x4A1000004A2,
3321
+ 0x4A3000004A4,
3322
+ 0x4A5000004A6,
3323
+ 0x4A7000004A8,
3324
+ 0x4A9000004AA,
3325
+ 0x4AB000004AC,
3326
+ 0x4AD000004AE,
3327
+ 0x4AF000004B0,
3328
+ 0x4B1000004B2,
3329
+ 0x4B3000004B4,
3330
+ 0x4B5000004B6,
3331
+ 0x4B7000004B8,
3332
+ 0x4B9000004BA,
3333
+ 0x4BB000004BC,
3334
+ 0x4BD000004BE,
3335
+ 0x4BF000004C0,
3336
+ 0x4C2000004C3,
3337
+ 0x4C4000004C5,
3338
+ 0x4C6000004C7,
3339
+ 0x4C8000004C9,
3340
+ 0x4CA000004CB,
3341
+ 0x4CC000004CD,
3342
+ 0x4CE000004D0,
3343
+ 0x4D1000004D2,
3344
+ 0x4D3000004D4,
3345
+ 0x4D5000004D6,
3346
+ 0x4D7000004D8,
3347
+ 0x4D9000004DA,
3348
+ 0x4DB000004DC,
3349
+ 0x4DD000004DE,
3350
+ 0x4DF000004E0,
3351
+ 0x4E1000004E2,
3352
+ 0x4E3000004E4,
3353
+ 0x4E5000004E6,
3354
+ 0x4E7000004E8,
3355
+ 0x4E9000004EA,
3356
+ 0x4EB000004EC,
3357
+ 0x4ED000004EE,
3358
+ 0x4EF000004F0,
3359
+ 0x4F1000004F2,
3360
+ 0x4F3000004F4,
3361
+ 0x4F5000004F6,
3362
+ 0x4F7000004F8,
3363
+ 0x4F9000004FA,
3364
+ 0x4FB000004FC,
3365
+ 0x4FD000004FE,
3366
+ 0x4FF00000500,
3367
+ 0x50100000502,
3368
+ 0x50300000504,
3369
+ 0x50500000506,
3370
+ 0x50700000508,
3371
+ 0x5090000050A,
3372
+ 0x50B0000050C,
3373
+ 0x50D0000050E,
3374
+ 0x50F00000510,
3375
+ 0x51100000512,
3376
+ 0x51300000514,
3377
+ 0x51500000516,
3378
+ 0x51700000518,
3379
+ 0x5190000051A,
3380
+ 0x51B0000051C,
3381
+ 0x51D0000051E,
3382
+ 0x51F00000520,
3383
+ 0x52100000522,
3384
+ 0x52300000524,
3385
+ 0x52500000526,
3386
+ 0x52700000528,
3387
+ 0x5290000052A,
3388
+ 0x52B0000052C,
3389
+ 0x52D0000052E,
3390
+ 0x52F00000530,
3391
+ 0x5590000055A,
3392
+ 0x56000000587,
3393
+ 0x58800000589,
3394
+ 0x591000005BE,
3395
+ 0x5BF000005C0,
3396
+ 0x5C1000005C3,
3397
+ 0x5C4000005C6,
3398
+ 0x5C7000005C8,
3399
+ 0x5D0000005EB,
3400
+ 0x5EF000005F3,
3401
+ 0x6100000061B,
3402
+ 0x62000000640,
3403
+ 0x64100000660,
3404
+ 0x66E00000675,
3405
+ 0x679000006D4,
3406
+ 0x6D5000006DD,
3407
+ 0x6DF000006E9,
3408
+ 0x6EA000006F0,
3409
+ 0x6FA00000700,
3410
+ 0x7100000074B,
3411
+ 0x74D000007B2,
3412
+ 0x7C0000007F6,
3413
+ 0x7FD000007FE,
3414
+ 0x8000000082E,
3415
+ 0x8400000085C,
3416
+ 0x8600000086B,
3417
+ 0x87000000888,
3418
+ 0x88900000890,
3419
+ 0x897000008E2,
3420
+ 0x8E300000958,
3421
+ 0x96000000964,
3422
+ 0x96600000970,
3423
+ 0x97100000984,
3424
+ 0x9850000098D,
3425
+ 0x98F00000991,
3426
+ 0x993000009A9,
3427
+ 0x9AA000009B1,
3428
+ 0x9B2000009B3,
3429
+ 0x9B6000009BA,
3430
+ 0x9BC000009C5,
3431
+ 0x9C7000009C9,
3432
+ 0x9CB000009CF,
3433
+ 0x9D7000009D8,
3434
+ 0x9E0000009E4,
3435
+ 0x9E6000009F2,
3436
+ 0x9FC000009FD,
3437
+ 0x9FE000009FF,
3438
+ 0xA0100000A04,
3439
+ 0xA0500000A0B,
3440
+ 0xA0F00000A11,
3441
+ 0xA1300000A29,
3442
+ 0xA2A00000A31,
3443
+ 0xA3200000A33,
3444
+ 0xA3500000A36,
3445
+ 0xA3800000A3A,
3446
+ 0xA3C00000A3D,
3447
+ 0xA3E00000A43,
3448
+ 0xA4700000A49,
3449
+ 0xA4B00000A4E,
3450
+ 0xA5100000A52,
3451
+ 0xA5C00000A5D,
3452
+ 0xA6600000A76,
3453
+ 0xA8100000A84,
3454
+ 0xA8500000A8E,
3455
+ 0xA8F00000A92,
3456
+ 0xA9300000AA9,
3457
+ 0xAAA00000AB1,
3458
+ 0xAB200000AB4,
3459
+ 0xAB500000ABA,
3460
+ 0xABC00000AC6,
3461
+ 0xAC700000ACA,
3462
+ 0xACB00000ACE,
3463
+ 0xAD000000AD1,
3464
+ 0xAE000000AE4,
3465
+ 0xAE600000AF0,
3466
+ 0xAF900000B00,
3467
+ 0xB0100000B04,
3468
+ 0xB0500000B0D,
3469
+ 0xB0F00000B11,
3470
+ 0xB1300000B29,
3471
+ 0xB2A00000B31,
3472
+ 0xB3200000B34,
3473
+ 0xB3500000B3A,
3474
+ 0xB3C00000B45,
3475
+ 0xB4700000B49,
3476
+ 0xB4B00000B4E,
3477
+ 0xB5500000B58,
3478
+ 0xB5F00000B64,
3479
+ 0xB6600000B70,
3480
+ 0xB7100000B72,
3481
+ 0xB8200000B84,
3482
+ 0xB8500000B8B,
3483
+ 0xB8E00000B91,
3484
+ 0xB9200000B96,
3485
+ 0xB9900000B9B,
3486
+ 0xB9C00000B9D,
3487
+ 0xB9E00000BA0,
3488
+ 0xBA300000BA5,
3489
+ 0xBA800000BAB,
3490
+ 0xBAE00000BBA,
3491
+ 0xBBE00000BC3,
3492
+ 0xBC600000BC9,
3493
+ 0xBCA00000BCE,
3494
+ 0xBD000000BD1,
3495
+ 0xBD700000BD8,
3496
+ 0xBE600000BF0,
3497
+ 0xC0000000C0D,
3498
+ 0xC0E00000C11,
3499
+ 0xC1200000C29,
3500
+ 0xC2A00000C3A,
3501
+ 0xC3C00000C45,
3502
+ 0xC4600000C49,
3503
+ 0xC4A00000C4E,
3504
+ 0xC5500000C57,
3505
+ 0xC5800000C5B,
3506
+ 0xC5C00000C5E,
3507
+ 0xC6000000C64,
3508
+ 0xC6600000C70,
3509
+ 0xC8000000C84,
3510
+ 0xC8500000C8D,
3511
+ 0xC8E00000C91,
3512
+ 0xC9200000CA9,
3513
+ 0xCAA00000CB4,
3514
+ 0xCB500000CBA,
3515
+ 0xCBC00000CC5,
3516
+ 0xCC600000CC9,
3517
+ 0xCCA00000CCE,
3518
+ 0xCD500000CD7,
3519
+ 0xCDC00000CDF,
3520
+ 0xCE000000CE4,
3521
+ 0xCE600000CF0,
3522
+ 0xCF100000CF4,
3523
+ 0xD0000000D0D,
3524
+ 0xD0E00000D11,
3525
+ 0xD1200000D45,
3526
+ 0xD4600000D49,
3527
+ 0xD4A00000D4F,
3528
+ 0xD5400000D58,
3529
+ 0xD5F00000D64,
3530
+ 0xD6600000D70,
3531
+ 0xD7A00000D80,
3532
+ 0xD8100000D84,
3533
+ 0xD8500000D97,
3534
+ 0xD9A00000DB2,
3535
+ 0xDB300000DBC,
3536
+ 0xDBD00000DBE,
3537
+ 0xDC000000DC7,
3538
+ 0xDCA00000DCB,
3539
+ 0xDCF00000DD5,
3540
+ 0xDD600000DD7,
3541
+ 0xDD800000DE0,
3542
+ 0xDE600000DF0,
3543
+ 0xDF200000DF4,
3544
+ 0xE0100000E33,
3545
+ 0xE3400000E3B,
3546
+ 0xE4000000E4F,
3547
+ 0xE5000000E5A,
3548
+ 0xE8100000E83,
3549
+ 0xE8400000E85,
3550
+ 0xE8600000E8B,
3551
+ 0xE8C00000EA4,
3552
+ 0xEA500000EA6,
3553
+ 0xEA700000EB3,
3554
+ 0xEB400000EBE,
3555
+ 0xEC000000EC5,
3556
+ 0xEC600000EC7,
3557
+ 0xEC800000ECF,
3558
+ 0xED000000EDA,
3559
+ 0xEDE00000EE0,
3560
+ 0xF0000000F01,
3561
+ 0xF0B00000F0C,
3562
+ 0xF1800000F1A,
3563
+ 0xF2000000F2A,
3564
+ 0xF3500000F36,
3565
+ 0xF3700000F38,
3566
+ 0xF3900000F3A,
3567
+ 0xF3E00000F43,
3568
+ 0xF4400000F48,
3569
+ 0xF4900000F4D,
3570
+ 0xF4E00000F52,
3571
+ 0xF5300000F57,
3572
+ 0xF5800000F5C,
3573
+ 0xF5D00000F69,
3574
+ 0xF6A00000F6D,
3575
+ 0xF7100000F73,
3576
+ 0xF7400000F75,
3577
+ 0xF7A00000F81,
3578
+ 0xF8200000F85,
3579
+ 0xF8600000F93,
3580
+ 0xF9400000F98,
3581
+ 0xF9900000F9D,
3582
+ 0xF9E00000FA2,
3583
+ 0xFA300000FA7,
3584
+ 0xFA800000FAC,
3585
+ 0xFAD00000FB9,
3586
+ 0xFBA00000FBD,
3587
+ 0xFC600000FC7,
3588
+ 0x10000000104A,
3589
+ 0x10500000109E,
3590
+ 0x10D0000010FB,
3591
+ 0x10FD00001100,
3592
+ 0x120000001249,
3593
+ 0x124A0000124E,
3594
+ 0x125000001257,
3595
+ 0x125800001259,
3596
+ 0x125A0000125E,
3597
+ 0x126000001289,
3598
+ 0x128A0000128E,
3599
+ 0x1290000012B1,
3600
+ 0x12B2000012B6,
3601
+ 0x12B8000012BF,
3602
+ 0x12C0000012C1,
3603
+ 0x12C2000012C6,
3604
+ 0x12C8000012D7,
3605
+ 0x12D800001311,
3606
+ 0x131200001316,
3607
+ 0x13180000135B,
3608
+ 0x135D00001360,
3609
+ 0x138000001390,
3610
+ 0x13A0000013F6,
3611
+ 0x14010000166D,
3612
+ 0x166F00001680,
3613
+ 0x16810000169B,
3614
+ 0x16A0000016EB,
3615
+ 0x16F1000016F9,
3616
+ 0x170000001716,
3617
+ 0x171F00001735,
3618
+ 0x174000001754,
3619
+ 0x17600000176D,
3620
+ 0x176E00001771,
3621
+ 0x177200001774,
3622
+ 0x1780000017B4,
3623
+ 0x17B6000017D4,
3624
+ 0x17D7000017D8,
3625
+ 0x17DC000017DE,
3626
+ 0x17E0000017EA,
3627
+ 0x18100000181A,
3628
+ 0x182000001879,
3629
+ 0x1880000018AB,
3630
+ 0x18B0000018F6,
3631
+ 0x19000000191F,
3632
+ 0x19200000192C,
3633
+ 0x19300000193C,
3634
+ 0x19460000196E,
3635
+ 0x197000001975,
3636
+ 0x1980000019AC,
3637
+ 0x19B0000019CA,
3638
+ 0x19D0000019DA,
3639
+ 0x1A0000001A1C,
3640
+ 0x1A2000001A5F,
3641
+ 0x1A6000001A7D,
3642
+ 0x1A7F00001A8A,
3643
+ 0x1A9000001A9A,
3644
+ 0x1AA700001AA8,
3645
+ 0x1AB000001ABE,
3646
+ 0x1ABF00001ADE,
3647
+ 0x1AE000001AEC,
3648
+ 0x1B0000001B4D,
3649
+ 0x1B5000001B5A,
3650
+ 0x1B6B00001B74,
3651
+ 0x1B8000001BF4,
3652
+ 0x1C0000001C38,
3653
+ 0x1C4000001C4A,
3654
+ 0x1C4D00001C7E,
3655
+ 0x1C8A00001C8B,
3656
+ 0x1CD000001CD3,
3657
+ 0x1CD400001CFB,
3658
+ 0x1D0000001D2C,
3659
+ 0x1D2F00001D30,
3660
+ 0x1D3B00001D3C,
3661
+ 0x1D4E00001D4F,
3662
+ 0x1D6B00001D78,
3663
+ 0x1D7900001D9B,
3664
+ 0x1DC000001E00,
3665
+ 0x1E0100001E02,
3666
+ 0x1E0300001E04,
3667
+ 0x1E0500001E06,
3668
+ 0x1E0700001E08,
3669
+ 0x1E0900001E0A,
3670
+ 0x1E0B00001E0C,
3671
+ 0x1E0D00001E0E,
3672
+ 0x1E0F00001E10,
3673
+ 0x1E1100001E12,
3674
+ 0x1E1300001E14,
3675
+ 0x1E1500001E16,
3676
+ 0x1E1700001E18,
3677
+ 0x1E1900001E1A,
3678
+ 0x1E1B00001E1C,
3679
+ 0x1E1D00001E1E,
3680
+ 0x1E1F00001E20,
3681
+ 0x1E2100001E22,
3682
+ 0x1E2300001E24,
3683
+ 0x1E2500001E26,
3684
+ 0x1E2700001E28,
3685
+ 0x1E2900001E2A,
3686
+ 0x1E2B00001E2C,
3687
+ 0x1E2D00001E2E,
3688
+ 0x1E2F00001E30,
3689
+ 0x1E3100001E32,
3690
+ 0x1E3300001E34,
3691
+ 0x1E3500001E36,
3692
+ 0x1E3700001E38,
3693
+ 0x1E3900001E3A,
3694
+ 0x1E3B00001E3C,
3695
+ 0x1E3D00001E3E,
3696
+ 0x1E3F00001E40,
3697
+ 0x1E4100001E42,
3698
+ 0x1E4300001E44,
3699
+ 0x1E4500001E46,
3700
+ 0x1E4700001E48,
3701
+ 0x1E4900001E4A,
3702
+ 0x1E4B00001E4C,
3703
+ 0x1E4D00001E4E,
3704
+ 0x1E4F00001E50,
3705
+ 0x1E5100001E52,
3706
+ 0x1E5300001E54,
3707
+ 0x1E5500001E56,
3708
+ 0x1E5700001E58,
3709
+ 0x1E5900001E5A,
3710
+ 0x1E5B00001E5C,
3711
+ 0x1E5D00001E5E,
3712
+ 0x1E5F00001E60,
3713
+ 0x1E6100001E62,
3714
+ 0x1E6300001E64,
3715
+ 0x1E6500001E66,
3716
+ 0x1E6700001E68,
3717
+ 0x1E6900001E6A,
3718
+ 0x1E6B00001E6C,
3719
+ 0x1E6D00001E6E,
3720
+ 0x1E6F00001E70,
3721
+ 0x1E7100001E72,
3722
+ 0x1E7300001E74,
3723
+ 0x1E7500001E76,
3724
+ 0x1E7700001E78,
3725
+ 0x1E7900001E7A,
3726
+ 0x1E7B00001E7C,
3727
+ 0x1E7D00001E7E,
3728
+ 0x1E7F00001E80,
3729
+ 0x1E8100001E82,
3730
+ 0x1E8300001E84,
3731
+ 0x1E8500001E86,
3732
+ 0x1E8700001E88,
3733
+ 0x1E8900001E8A,
3734
+ 0x1E8B00001E8C,
3735
+ 0x1E8D00001E8E,
3736
+ 0x1E8F00001E90,
3737
+ 0x1E9100001E92,
3738
+ 0x1E9300001E94,
3739
+ 0x1E9500001E9A,
3740
+ 0x1E9C00001E9E,
3741
+ 0x1E9F00001EA0,
3742
+ 0x1EA100001EA2,
3743
+ 0x1EA300001EA4,
3744
+ 0x1EA500001EA6,
3745
+ 0x1EA700001EA8,
3746
+ 0x1EA900001EAA,
3747
+ 0x1EAB00001EAC,
3748
+ 0x1EAD00001EAE,
3749
+ 0x1EAF00001EB0,
3750
+ 0x1EB100001EB2,
3751
+ 0x1EB300001EB4,
3752
+ 0x1EB500001EB6,
3753
+ 0x1EB700001EB8,
3754
+ 0x1EB900001EBA,
3755
+ 0x1EBB00001EBC,
3756
+ 0x1EBD00001EBE,
3757
+ 0x1EBF00001EC0,
3758
+ 0x1EC100001EC2,
3759
+ 0x1EC300001EC4,
3760
+ 0x1EC500001EC6,
3761
+ 0x1EC700001EC8,
3762
+ 0x1EC900001ECA,
3763
+ 0x1ECB00001ECC,
3764
+ 0x1ECD00001ECE,
3765
+ 0x1ECF00001ED0,
3766
+ 0x1ED100001ED2,
3767
+ 0x1ED300001ED4,
3768
+ 0x1ED500001ED6,
3769
+ 0x1ED700001ED8,
3770
+ 0x1ED900001EDA,
3771
+ 0x1EDB00001EDC,
3772
+ 0x1EDD00001EDE,
3773
+ 0x1EDF00001EE0,
3774
+ 0x1EE100001EE2,
3775
+ 0x1EE300001EE4,
3776
+ 0x1EE500001EE6,
3777
+ 0x1EE700001EE8,
3778
+ 0x1EE900001EEA,
3779
+ 0x1EEB00001EEC,
3780
+ 0x1EED00001EEE,
3781
+ 0x1EEF00001EF0,
3782
+ 0x1EF100001EF2,
3783
+ 0x1EF300001EF4,
3784
+ 0x1EF500001EF6,
3785
+ 0x1EF700001EF8,
3786
+ 0x1EF900001EFA,
3787
+ 0x1EFB00001EFC,
3788
+ 0x1EFD00001EFE,
3789
+ 0x1EFF00001F08,
3790
+ 0x1F1000001F16,
3791
+ 0x1F2000001F28,
3792
+ 0x1F3000001F38,
3793
+ 0x1F4000001F46,
3794
+ 0x1F5000001F58,
3795
+ 0x1F6000001F68,
3796
+ 0x1F7000001F71,
3797
+ 0x1F7200001F73,
3798
+ 0x1F7400001F75,
3799
+ 0x1F7600001F77,
3800
+ 0x1F7800001F79,
3801
+ 0x1F7A00001F7B,
3802
+ 0x1F7C00001F7D,
3803
+ 0x1FB000001FB2,
3804
+ 0x1FB600001FB7,
3805
+ 0x1FC600001FC7,
3806
+ 0x1FD000001FD3,
3807
+ 0x1FD600001FD8,
3808
+ 0x1FE000001FE3,
3809
+ 0x1FE400001FE8,
3810
+ 0x1FF600001FF7,
3811
+ 0x214E0000214F,
3812
+ 0x218400002185,
3813
+ 0x2C3000002C60,
3814
+ 0x2C6100002C62,
3815
+ 0x2C6500002C67,
3816
+ 0x2C6800002C69,
3817
+ 0x2C6A00002C6B,
3818
+ 0x2C6C00002C6D,
3819
+ 0x2C7100002C72,
3820
+ 0x2C7300002C75,
3821
+ 0x2C7600002C7C,
3822
+ 0x2C8100002C82,
3823
+ 0x2C8300002C84,
3824
+ 0x2C8500002C86,
3825
+ 0x2C8700002C88,
3826
+ 0x2C8900002C8A,
3827
+ 0x2C8B00002C8C,
3828
+ 0x2C8D00002C8E,
3829
+ 0x2C8F00002C90,
3830
+ 0x2C9100002C92,
3831
+ 0x2C9300002C94,
3832
+ 0x2C9500002C96,
3833
+ 0x2C9700002C98,
3834
+ 0x2C9900002C9A,
3835
+ 0x2C9B00002C9C,
3836
+ 0x2C9D00002C9E,
3837
+ 0x2C9F00002CA0,
3838
+ 0x2CA100002CA2,
3839
+ 0x2CA300002CA4,
3840
+ 0x2CA500002CA6,
3841
+ 0x2CA700002CA8,
3842
+ 0x2CA900002CAA,
3843
+ 0x2CAB00002CAC,
3844
+ 0x2CAD00002CAE,
3845
+ 0x2CAF00002CB0,
3846
+ 0x2CB100002CB2,
3847
+ 0x2CB300002CB4,
3848
+ 0x2CB500002CB6,
3849
+ 0x2CB700002CB8,
3850
+ 0x2CB900002CBA,
3851
+ 0x2CBB00002CBC,
3852
+ 0x2CBD00002CBE,
3853
+ 0x2CBF00002CC0,
3854
+ 0x2CC100002CC2,
3855
+ 0x2CC300002CC4,
3856
+ 0x2CC500002CC6,
3857
+ 0x2CC700002CC8,
3858
+ 0x2CC900002CCA,
3859
+ 0x2CCB00002CCC,
3860
+ 0x2CCD00002CCE,
3861
+ 0x2CCF00002CD0,
3862
+ 0x2CD100002CD2,
3863
+ 0x2CD300002CD4,
3864
+ 0x2CD500002CD6,
3865
+ 0x2CD700002CD8,
3866
+ 0x2CD900002CDA,
3867
+ 0x2CDB00002CDC,
3868
+ 0x2CDD00002CDE,
3869
+ 0x2CDF00002CE0,
3870
+ 0x2CE100002CE2,
3871
+ 0x2CE300002CE5,
3872
+ 0x2CEC00002CED,
3873
+ 0x2CEE00002CF2,
3874
+ 0x2CF300002CF4,
3875
+ 0x2D0000002D26,
3876
+ 0x2D2700002D28,
3877
+ 0x2D2D00002D2E,
3878
+ 0x2D3000002D68,
3879
+ 0x2D7F00002D97,
3880
+ 0x2DA000002DA7,
3881
+ 0x2DA800002DAF,
3882
+ 0x2DB000002DB7,
3883
+ 0x2DB800002DBF,
3884
+ 0x2DC000002DC7,
3885
+ 0x2DC800002DCF,
3886
+ 0x2DD000002DD7,
3887
+ 0x2DD800002DDF,
3888
+ 0x2DE000002E00,
3889
+ 0x2E2F00002E30,
3890
+ 0x300500003008,
3891
+ 0x302A0000302E,
3892
+ 0x303C0000303D,
3893
+ 0x304100003097,
3894
+ 0x30990000309B,
3895
+ 0x309D0000309F,
3896
+ 0x30A1000030FB,
3897
+ 0x30FC000030FF,
3898
+ 0x310500003130,
3899
+ 0x31A0000031C0,
3900
+ 0x31F000003200,
3901
+ 0x340000004DC0,
3902
+ 0x4E000000A48D,
3903
+ 0xA4D00000A4FE,
3904
+ 0xA5000000A60D,
3905
+ 0xA6100000A62C,
3906
+ 0xA6410000A642,
3907
+ 0xA6430000A644,
3908
+ 0xA6450000A646,
3909
+ 0xA6470000A648,
3910
+ 0xA6490000A64A,
3911
+ 0xA64B0000A64C,
3912
+ 0xA64D0000A64E,
3913
+ 0xA64F0000A650,
3914
+ 0xA6510000A652,
3915
+ 0xA6530000A654,
3916
+ 0xA6550000A656,
3917
+ 0xA6570000A658,
3918
+ 0xA6590000A65A,
3919
+ 0xA65B0000A65C,
3920
+ 0xA65D0000A65E,
3921
+ 0xA65F0000A660,
3922
+ 0xA6610000A662,
3923
+ 0xA6630000A664,
3924
+ 0xA6650000A666,
3925
+ 0xA6670000A668,
3926
+ 0xA6690000A66A,
3927
+ 0xA66B0000A66C,
3928
+ 0xA66D0000A670,
3929
+ 0xA6740000A67E,
3930
+ 0xA67F0000A680,
3931
+ 0xA6810000A682,
3932
+ 0xA6830000A684,
3933
+ 0xA6850000A686,
3934
+ 0xA6870000A688,
3935
+ 0xA6890000A68A,
3936
+ 0xA68B0000A68C,
3937
+ 0xA68D0000A68E,
3938
+ 0xA68F0000A690,
3939
+ 0xA6910000A692,
3940
+ 0xA6930000A694,
3941
+ 0xA6950000A696,
3942
+ 0xA6970000A698,
3943
+ 0xA6990000A69A,
3944
+ 0xA69B0000A69C,
3945
+ 0xA69E0000A6E6,
3946
+ 0xA6F00000A6F2,
3947
+ 0xA7170000A720,
3948
+ 0xA7230000A724,
3949
+ 0xA7250000A726,
3950
+ 0xA7270000A728,
3951
+ 0xA7290000A72A,
3952
+ 0xA72B0000A72C,
3953
+ 0xA72D0000A72E,
3954
+ 0xA72F0000A732,
3955
+ 0xA7330000A734,
3956
+ 0xA7350000A736,
3957
+ 0xA7370000A738,
3958
+ 0xA7390000A73A,
3959
+ 0xA73B0000A73C,
3960
+ 0xA73D0000A73E,
3961
+ 0xA73F0000A740,
3962
+ 0xA7410000A742,
3963
+ 0xA7430000A744,
3964
+ 0xA7450000A746,
3965
+ 0xA7470000A748,
3966
+ 0xA7490000A74A,
3967
+ 0xA74B0000A74C,
3968
+ 0xA74D0000A74E,
3969
+ 0xA74F0000A750,
3970
+ 0xA7510000A752,
3971
+ 0xA7530000A754,
3972
+ 0xA7550000A756,
3973
+ 0xA7570000A758,
3974
+ 0xA7590000A75A,
3975
+ 0xA75B0000A75C,
3976
+ 0xA75D0000A75E,
3977
+ 0xA75F0000A760,
3978
+ 0xA7610000A762,
3979
+ 0xA7630000A764,
3980
+ 0xA7650000A766,
3981
+ 0xA7670000A768,
3982
+ 0xA7690000A76A,
3983
+ 0xA76B0000A76C,
3984
+ 0xA76D0000A76E,
3985
+ 0xA76F0000A770,
3986
+ 0xA7710000A779,
3987
+ 0xA77A0000A77B,
3988
+ 0xA77C0000A77D,
3989
+ 0xA77F0000A780,
3990
+ 0xA7810000A782,
3991
+ 0xA7830000A784,
3992
+ 0xA7850000A786,
3993
+ 0xA7870000A789,
3994
+ 0xA78C0000A78D,
3995
+ 0xA78E0000A790,
3996
+ 0xA7910000A792,
3997
+ 0xA7930000A796,
3998
+ 0xA7970000A798,
3999
+ 0xA7990000A79A,
4000
+ 0xA79B0000A79C,
4001
+ 0xA79D0000A79E,
4002
+ 0xA79F0000A7A0,
4003
+ 0xA7A10000A7A2,
4004
+ 0xA7A30000A7A4,
4005
+ 0xA7A50000A7A6,
4006
+ 0xA7A70000A7A8,
4007
+ 0xA7A90000A7AA,
4008
+ 0xA7AF0000A7B0,
4009
+ 0xA7B50000A7B6,
4010
+ 0xA7B70000A7B8,
4011
+ 0xA7B90000A7BA,
4012
+ 0xA7BB0000A7BC,
4013
+ 0xA7BD0000A7BE,
4014
+ 0xA7BF0000A7C0,
4015
+ 0xA7C10000A7C2,
4016
+ 0xA7C30000A7C4,
4017
+ 0xA7C80000A7C9,
4018
+ 0xA7CA0000A7CB,
4019
+ 0xA7CD0000A7CE,
4020
+ 0xA7CF0000A7D0,
4021
+ 0xA7D10000A7D2,
4022
+ 0xA7D30000A7D4,
4023
+ 0xA7D50000A7D6,
4024
+ 0xA7D70000A7D8,
4025
+ 0xA7D90000A7DA,
4026
+ 0xA7DB0000A7DC,
4027
+ 0xA7F60000A7F8,
4028
+ 0xA7FA0000A828,
4029
+ 0xA82C0000A82D,
4030
+ 0xA8400000A874,
4031
+ 0xA8800000A8C6,
4032
+ 0xA8D00000A8DA,
4033
+ 0xA8E00000A8F8,
4034
+ 0xA8FB0000A8FC,
4035
+ 0xA8FD0000A92E,
4036
+ 0xA9300000A954,
4037
+ 0xA9800000A9C1,
4038
+ 0xA9CF0000A9DA,
4039
+ 0xA9E00000A9FF,
4040
+ 0xAA000000AA37,
4041
+ 0xAA400000AA4E,
4042
+ 0xAA500000AA5A,
4043
+ 0xAA600000AA77,
4044
+ 0xAA7A0000AAC3,
4045
+ 0xAADB0000AADE,
4046
+ 0xAAE00000AAF0,
4047
+ 0xAAF20000AAF7,
4048
+ 0xAB010000AB07,
4049
+ 0xAB090000AB0F,
4050
+ 0xAB110000AB17,
4051
+ 0xAB200000AB27,
4052
+ 0xAB280000AB2F,
4053
+ 0xAB300000AB5B,
4054
+ 0xAB600000AB69,
4055
+ 0xABC00000ABEB,
4056
+ 0xABEC0000ABEE,
4057
+ 0xABF00000ABFA,
4058
+ 0xAC000000D7A4,
4059
+ 0xFA0E0000FA10,
4060
+ 0xFA110000FA12,
4061
+ 0xFA130000FA15,
4062
+ 0xFA1F0000FA20,
4063
+ 0xFA210000FA22,
4064
+ 0xFA230000FA25,
4065
+ 0xFA270000FA2A,
4066
+ 0xFB1E0000FB1F,
4067
+ 0xFE200000FE30,
4068
+ 0xFE730000FE74,
4069
+ 0x100000001000C,
4070
+ 0x1000D00010027,
4071
+ 0x100280001003B,
4072
+ 0x1003C0001003E,
4073
+ 0x1003F0001004E,
4074
+ 0x100500001005E,
4075
+ 0x10080000100FB,
4076
+ 0x101FD000101FE,
4077
+ 0x102800001029D,
4078
+ 0x102A0000102D1,
4079
+ 0x102E0000102E1,
4080
+ 0x1030000010320,
4081
+ 0x1032D00010341,
4082
+ 0x103420001034A,
4083
+ 0x103500001037B,
4084
+ 0x103800001039E,
4085
+ 0x103A0000103C4,
4086
+ 0x103C8000103D0,
4087
+ 0x104280001049E,
4088
+ 0x104A0000104AA,
4089
+ 0x104D8000104FC,
4090
+ 0x1050000010528,
4091
+ 0x1053000010564,
4092
+ 0x10597000105A2,
4093
+ 0x105A3000105B2,
4094
+ 0x105B3000105BA,
4095
+ 0x105BB000105BD,
4096
+ 0x105C0000105F4,
4097
+ 0x1060000010737,
4098
+ 0x1074000010756,
4099
+ 0x1076000010768,
4100
+ 0x1078000010781,
4101
+ 0x1080000010806,
4102
+ 0x1080800010809,
4103
+ 0x1080A00010836,
4104
+ 0x1083700010839,
4105
+ 0x1083C0001083D,
4106
+ 0x1083F00010856,
4107
+ 0x1086000010877,
4108
+ 0x108800001089F,
4109
+ 0x108E0000108F3,
4110
+ 0x108F4000108F6,
4111
+ 0x1090000010916,
4112
+ 0x109200001093A,
4113
+ 0x109400001095A,
4114
+ 0x10980000109B8,
4115
+ 0x109BE000109C0,
4116
+ 0x10A0000010A04,
4117
+ 0x10A0500010A07,
4118
+ 0x10A0C00010A14,
4119
+ 0x10A1500010A18,
4120
+ 0x10A1900010A36,
4121
+ 0x10A3800010A3B,
4122
+ 0x10A3F00010A40,
4123
+ 0x10A6000010A7D,
4124
+ 0x10A8000010A9D,
4125
+ 0x10AC000010AC8,
4126
+ 0x10AC900010AE7,
4127
+ 0x10B0000010B36,
4128
+ 0x10B4000010B56,
4129
+ 0x10B6000010B73,
4130
+ 0x10B8000010B92,
4131
+ 0x10C0000010C49,
4132
+ 0x10CC000010CF3,
4133
+ 0x10D0000010D28,
4134
+ 0x10D3000010D3A,
4135
+ 0x10D4000010D50,
4136
+ 0x10D6900010D6E,
4137
+ 0x10D6F00010D86,
4138
+ 0x10E8000010EAA,
4139
+ 0x10EAB00010EAD,
4140
+ 0x10EB000010EB2,
4141
+ 0x10EC200010EC8,
4142
+ 0x10EFA00010F1D,
4143
+ 0x10F2700010F28,
4144
+ 0x10F3000010F51,
4145
+ 0x10F7000010F86,
4146
+ 0x10FB000010FC5,
4147
+ 0x10FE000010FF7,
4148
+ 0x1100000011047,
4149
+ 0x1106600011076,
4150
+ 0x1107F000110BB,
4151
+ 0x110C2000110C3,
4152
+ 0x110D0000110E9,
4153
+ 0x110F0000110FA,
4154
+ 0x1110000011135,
4155
+ 0x1113600011140,
4156
+ 0x1114400011148,
4157
+ 0x1115000011174,
4158
+ 0x1117600011177,
4159
+ 0x11180000111C5,
4160
+ 0x111C9000111CD,
4161
+ 0x111CE000111DB,
4162
+ 0x111DC000111DD,
4163
+ 0x1120000011212,
4164
+ 0x1121300011238,
4165
+ 0x1123E00011242,
4166
+ 0x1128000011287,
4167
+ 0x1128800011289,
4168
+ 0x1128A0001128E,
4169
+ 0x1128F0001129E,
4170
+ 0x1129F000112A9,
4171
+ 0x112B0000112EB,
4172
+ 0x112F0000112FA,
4173
+ 0x1130000011304,
4174
+ 0x113050001130D,
4175
+ 0x1130F00011311,
4176
+ 0x1131300011329,
4177
+ 0x1132A00011331,
4178
+ 0x1133200011334,
4179
+ 0x113350001133A,
4180
+ 0x1133B00011345,
4181
+ 0x1134700011349,
4182
+ 0x1134B0001134E,
4183
+ 0x1135000011351,
4184
+ 0x1135700011358,
4185
+ 0x1135D00011364,
4186
+ 0x113660001136D,
4187
+ 0x1137000011375,
4188
+ 0x113800001138A,
4189
+ 0x1138B0001138C,
4190
+ 0x1138E0001138F,
4191
+ 0x11390000113B6,
4192
+ 0x113B7000113C1,
4193
+ 0x113C2000113C3,
4194
+ 0x113C5000113C6,
4195
+ 0x113C7000113CB,
4196
+ 0x113CC000113D4,
4197
+ 0x113E1000113E3,
4198
+ 0x114000001144B,
4199
+ 0x114500001145A,
4200
+ 0x1145E00011462,
4201
+ 0x11480000114C6,
4202
+ 0x114C7000114C8,
4203
+ 0x114D0000114DA,
4204
+ 0x11580000115B6,
4205
+ 0x115B8000115C1,
4206
+ 0x115D8000115DE,
4207
+ 0x1160000011641,
4208
+ 0x1164400011645,
4209
+ 0x116500001165A,
4210
+ 0x11680000116B9,
4211
+ 0x116C0000116CA,
4212
+ 0x116D0000116E4,
4213
+ 0x117000001171B,
4214
+ 0x1171D0001172C,
4215
+ 0x117300001173A,
4216
+ 0x1174000011747,
4217
+ 0x118000001183B,
4218
+ 0x118C0000118EA,
4219
+ 0x118FF00011907,
4220
+ 0x119090001190A,
4221
+ 0x1190C00011914,
4222
+ 0x1191500011917,
4223
+ 0x1191800011936,
4224
+ 0x1193700011939,
4225
+ 0x1193B00011944,
4226
+ 0x119500001195A,
4227
+ 0x119A0000119A8,
4228
+ 0x119AA000119D8,
4229
+ 0x119DA000119E2,
4230
+ 0x119E3000119E5,
4231
+ 0x11A0000011A3F,
4232
+ 0x11A4700011A48,
4233
+ 0x11A5000011A9A,
4234
+ 0x11A9D00011A9E,
4235
+ 0x11AB000011AF9,
4236
+ 0x11B6000011B68,
4237
+ 0x11BC000011BE1,
4238
+ 0x11BF000011BFA,
4239
+ 0x11C0000011C09,
4240
+ 0x11C0A00011C37,
4241
+ 0x11C3800011C41,
4242
+ 0x11C5000011C5A,
4243
+ 0x11C7200011C90,
4244
+ 0x11C9200011CA8,
4245
+ 0x11CA900011CB7,
4246
+ 0x11D0000011D07,
4247
+ 0x11D0800011D0A,
4248
+ 0x11D0B00011D37,
4249
+ 0x11D3A00011D3B,
4250
+ 0x11D3C00011D3E,
4251
+ 0x11D3F00011D48,
4252
+ 0x11D5000011D5A,
4253
+ 0x11D6000011D66,
4254
+ 0x11D6700011D69,
4255
+ 0x11D6A00011D8F,
4256
+ 0x11D9000011D92,
4257
+ 0x11D9300011D99,
4258
+ 0x11DA000011DAA,
4259
+ 0x11DB000011DDC,
4260
+ 0x11DE000011DEA,
4261
+ 0x11EE000011EF7,
4262
+ 0x11F0000011F11,
4263
+ 0x11F1200011F3B,
4264
+ 0x11F3E00011F43,
4265
+ 0x11F5000011F5B,
4266
+ 0x11FB000011FB1,
4267
+ 0x120000001239A,
4268
+ 0x1248000012544,
4269
+ 0x12F9000012FF1,
4270
+ 0x1300000013430,
4271
+ 0x1344000013456,
4272
+ 0x13460000143FB,
4273
+ 0x1440000014647,
4274
+ 0x161000001613A,
4275
+ 0x1680000016A39,
4276
+ 0x16A4000016A5F,
4277
+ 0x16A6000016A6A,
4278
+ 0x16A7000016ABF,
4279
+ 0x16AC000016ACA,
4280
+ 0x16AD000016AEE,
4281
+ 0x16AF000016AF5,
4282
+ 0x16B0000016B37,
4283
+ 0x16B4000016B44,
4284
+ 0x16B5000016B5A,
4285
+ 0x16B6300016B78,
4286
+ 0x16B7D00016B90,
4287
+ 0x16D4000016D6D,
4288
+ 0x16D7000016D7A,
4289
+ 0x16E6000016E80,
4290
+ 0x16EBB00016ED4,
4291
+ 0x16F0000016F4B,
4292
+ 0x16F4F00016F88,
4293
+ 0x16F8F00016FA0,
4294
+ 0x16FE000016FE2,
4295
+ 0x16FE300016FE5,
4296
+ 0x16FF000016FF4,
4297
+ 0x1700000018CD6,
4298
+ 0x18CFF00018D1F,
4299
+ 0x18D8000018DF3,
4300
+ 0x1AFF00001AFF4,
4301
+ 0x1AFF50001AFFC,
4302
+ 0x1AFFD0001AFFF,
4303
+ 0x1B0000001B123,
4304
+ 0x1B1320001B133,
4305
+ 0x1B1500001B153,
4306
+ 0x1B1550001B156,
4307
+ 0x1B1640001B168,
4308
+ 0x1B1700001B2FC,
4309
+ 0x1BC000001BC6B,
4310
+ 0x1BC700001BC7D,
4311
+ 0x1BC800001BC89,
4312
+ 0x1BC900001BC9A,
4313
+ 0x1BC9D0001BC9F,
4314
+ 0x1CF000001CF2E,
4315
+ 0x1CF300001CF47,
4316
+ 0x1DA000001DA37,
4317
+ 0x1DA3B0001DA6D,
4318
+ 0x1DA750001DA76,
4319
+ 0x1DA840001DA85,
4320
+ 0x1DA9B0001DAA0,
4321
+ 0x1DAA10001DAB0,
4322
+ 0x1DF000001DF1F,
4323
+ 0x1DF250001DF2B,
4324
+ 0x1E0000001E007,
4325
+ 0x1E0080001E019,
4326
+ 0x1E01B0001E022,
4327
+ 0x1E0230001E025,
4328
+ 0x1E0260001E02B,
4329
+ 0x1E08F0001E090,
4330
+ 0x1E1000001E12D,
4331
+ 0x1E1300001E13E,
4332
+ 0x1E1400001E14A,
4333
+ 0x1E14E0001E14F,
4334
+ 0x1E2900001E2AF,
4335
+ 0x1E2C00001E2FA,
4336
+ 0x1E4D00001E4FA,
4337
+ 0x1E5D00001E5FB,
4338
+ 0x1E6C00001E6DF,
4339
+ 0x1E6E00001E6F6,
4340
+ 0x1E6FE0001E700,
4341
+ 0x1E7E00001E7E7,
4342
+ 0x1E7E80001E7EC,
4343
+ 0x1E7ED0001E7EF,
4344
+ 0x1E7F00001E7FF,
4345
+ 0x1E8000001E8C5,
4346
+ 0x1E8D00001E8D7,
4347
+ 0x1E9220001E94C,
4348
+ 0x1E9500001E95A,
4349
+ 0x200000002A6E0,
4350
+ 0x2A7000002B81E,
4351
+ 0x2B8200002CEAE,
4352
+ 0x2CEB00002EBE1,
4353
+ 0x2EBF00002EE5E,
4354
+ 0x300000003134B,
4355
+ 0x313500003347A,
4356
+ ),
4357
+ "CONTEXTJ": (0x200C0000200E,),
4358
+ "CONTEXTO": (
4359
+ 0xB7000000B8,
4360
+ 0x37500000376,
4361
+ 0x5F3000005F5,
4362
+ 0x6600000066A,
4363
+ 0x6F0000006FA,
4364
+ 0x30FB000030FC,
4365
+ ),
4366
+ }
LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/idna/package_data.py ADDED
@@ -0,0 +1 @@
 
 
1
+ __version__ = "3.16"
LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/idna/uts46data.py ADDED
The diff for this file is too large to render. See raw diff
 
LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/transformers/models/siglip/image_processing_pil_siglip.py ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright 2024 The HuggingFace Inc. team. All rights reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ """Image processor class for SigLIP."""
15
+
16
+ from ...image_processing_backends import PilBackend
17
+ from ...image_utils import (
18
+ IMAGENET_STANDARD_MEAN,
19
+ IMAGENET_STANDARD_STD,
20
+ PILImageResampling,
21
+ )
22
+ from ...utils import auto_docstring
23
+
24
+
25
+ @auto_docstring(custom_intro="Constructs a SigLIP image processor.")
26
+ class SiglipImageProcessorPil(PilBackend):
27
+ resample = PILImageResampling.BICUBIC
28
+ image_mean = IMAGENET_STANDARD_MEAN
29
+ image_std = IMAGENET_STANDARD_STD
30
+ size = {"height": 224, "width": 224}
31
+ default_to_square = False
32
+ do_resize = True
33
+ do_rescale = True
34
+ do_normalize = True
35
+ do_convert_rgb = True
36
+
37
+
38
+ __all__ = ["SiglipImageProcessorPil"]
LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/transformers/models/siglip/image_processing_siglip.py ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright 2024 The HuggingFace Inc. team. All rights reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ """Image processor class for SigLIP."""
15
+
16
+ from ...image_processing_backends import TorchvisionBackend
17
+ from ...image_utils import (
18
+ IMAGENET_STANDARD_MEAN,
19
+ IMAGENET_STANDARD_STD,
20
+ PILImageResampling,
21
+ )
22
+ from ...utils import auto_docstring
23
+
24
+
25
+ @auto_docstring(custom_intro="Constructs a SigLIP image processor.")
26
+ class SiglipImageProcessor(TorchvisionBackend):
27
+ resample = PILImageResampling.BICUBIC
28
+ image_mean = IMAGENET_STANDARD_MEAN
29
+ image_std = IMAGENET_STANDARD_STD
30
+ size = {"height": 224, "width": 224}
31
+ default_to_square = False
32
+ do_resize = True
33
+ do_rescale = True
34
+ do_normalize = True
35
+ do_convert_rgb = True
36
+
37
+
38
+ __all__ = ["SiglipImageProcessor"]
LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/transformers/models/siglip/modeling_siglip.py ADDED
@@ -0,0 +1,936 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright 2024 Google AI and The HuggingFace Team. All rights reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ """PyTorch Siglip model."""
15
+
16
+ from collections.abc import Callable
17
+ from dataclasses import dataclass
18
+ from typing import Any
19
+
20
+ import numpy as np
21
+ import torch
22
+ from torch import nn
23
+
24
+ from ... import initialization as init
25
+ from ...activations import ACT2FN
26
+ from ...masking_utils import create_bidirectional_mask
27
+ from ...modeling_layers import GradientCheckpointingLayer
28
+ from ...modeling_outputs import BaseModelOutput, BaseModelOutputWithPooling, ImageClassifierOutput
29
+ from ...modeling_utils import ALL_ATTENTION_FUNCTIONS, PreTrainedModel
30
+ from ...processing_utils import Unpack
31
+ from ...utils import (
32
+ ModelOutput,
33
+ TransformersKwargs,
34
+ auto_docstring,
35
+ can_return_tuple,
36
+ torch_int,
37
+ )
38
+ from ...utils.generic import merge_with_config_defaults
39
+ from ...utils.output_capturing import capture_outputs
40
+ from .configuration_siglip import SiglipConfig, SiglipTextConfig, SiglipVisionConfig
41
+
42
+
43
+ @auto_docstring(
44
+ custom_intro="""
45
+ Base class for vision model's outputs that also contains image embeddings of the pooling of the last hidden states.
46
+ """
47
+ )
48
+ @dataclass
49
+ # Copied from transformers.models.clip.modeling_clip.CLIPVisionModelOutput with CLIP->Siglip
50
+ class SiglipVisionModelOutput(ModelOutput):
51
+ r"""
52
+ image_embeds (`torch.FloatTensor` of shape `(batch_size, output_dim)` *optional* returned when model is initialized with `with_projection=True`):
53
+ The image embeddings obtained by applying the projection layer to the pooler_output.
54
+ """
55
+
56
+ image_embeds: torch.FloatTensor | None = None
57
+ last_hidden_state: torch.FloatTensor | None = None
58
+ hidden_states: tuple[torch.FloatTensor, ...] | None = None
59
+ attentions: tuple[torch.FloatTensor, ...] | None = None
60
+
61
+
62
+ @auto_docstring(
63
+ custom_intro="""
64
+ Base class for text model's outputs that also contains a pooling of the last hidden states.
65
+ """
66
+ )
67
+ @dataclass
68
+ # Copied from transformers.models.clip.modeling_clip.CLIPTextModelOutput with CLIP->Siglip
69
+ class SiglipTextModelOutput(ModelOutput):
70
+ r"""
71
+ text_embeds (`torch.FloatTensor` of shape `(batch_size, output_dim)` *optional* returned when model is initialized with `with_projection=True`):
72
+ The text embeddings obtained by applying the projection layer to the pooler_output.
73
+ """
74
+
75
+ text_embeds: torch.FloatTensor | None = None
76
+ last_hidden_state: torch.FloatTensor | None = None
77
+ hidden_states: tuple[torch.FloatTensor, ...] | None = None
78
+ attentions: tuple[torch.FloatTensor, ...] | None = None
79
+
80
+
81
+ @auto_docstring
82
+ @dataclass
83
+ # Copied from transformers.models.clip.modeling_clip.CLIPOutput with CLIP->Siglip
84
+ class SiglipOutput(ModelOutput):
85
+ r"""
86
+ loss (`torch.FloatTensor` of shape `(1,)`, *optional*, returned when `return_loss` is `True`):
87
+ Contrastive loss for image-text similarity.
88
+ logits_per_image (`torch.FloatTensor` of shape `(image_batch_size, text_batch_size)`):
89
+ The scaled dot product scores between `image_embeds` and `text_embeds`. This represents the image-text
90
+ similarity scores.
91
+ logits_per_text (`torch.FloatTensor` of shape `(text_batch_size, image_batch_size)`):
92
+ The scaled dot product scores between `text_embeds` and `image_embeds`. This represents the text-image
93
+ similarity scores.
94
+ text_embeds (`torch.FloatTensor` of shape `(batch_size, output_dim`):
95
+ The text embeddings obtained by applying the projection layer to the pooled output of [`SiglipTextModel`].
96
+ image_embeds (`torch.FloatTensor` of shape `(batch_size, output_dim`):
97
+ The image embeddings obtained by applying the projection layer to the pooled output of [`SiglipVisionModel`].
98
+ text_model_output (`BaseModelOutputWithPooling`):
99
+ The output of the [`SiglipTextModel`].
100
+ vision_model_output (`BaseModelOutputWithPooling`):
101
+ The output of the [`SiglipVisionModel`].
102
+ """
103
+
104
+ loss: torch.FloatTensor | None = None
105
+ logits_per_image: torch.FloatTensor | None = None
106
+ logits_per_text: torch.FloatTensor | None = None
107
+ text_embeds: torch.FloatTensor | None = None
108
+ image_embeds: torch.FloatTensor | None = None
109
+ text_model_output: BaseModelOutputWithPooling = None
110
+ vision_model_output: BaseModelOutputWithPooling = None
111
+
112
+ def to_tuple(self) -> tuple[Any]:
113
+ return tuple(v.to_tuple() if isinstance(v, ModelOutput) else v for v in self.values())
114
+
115
+
116
+ class SiglipVisionEmbeddings(nn.Module):
117
+ def __init__(self, config: SiglipVisionConfig):
118
+ super().__init__()
119
+ self.config = config
120
+ self.embed_dim = config.hidden_size
121
+ self.image_size = config.image_size
122
+ self.patch_size = config.patch_size
123
+
124
+ self.patch_embedding = nn.Conv2d(
125
+ in_channels=config.num_channels,
126
+ out_channels=self.embed_dim,
127
+ kernel_size=self.patch_size,
128
+ stride=self.patch_size,
129
+ padding="valid",
130
+ )
131
+
132
+ self.num_patches = (self.image_size // self.patch_size) ** 2
133
+ self.num_positions = self.num_patches
134
+ self.position_embedding = nn.Embedding(self.num_positions, self.embed_dim)
135
+ self.register_buffer("position_ids", torch.arange(self.num_positions).expand((1, -1)), persistent=False)
136
+
137
+ def interpolate_pos_encoding(self, embeddings: torch.Tensor, height: int, width: int) -> torch.Tensor:
138
+ """
139
+ This method allows to interpolate the pre-trained position encodings, to be able to use the model on higher resolution
140
+ images. This method is also adapted to support torch.jit tracing and no class embeddings.
141
+
142
+ Adapted from:
143
+ - https://github.com/facebookresearch/dino/blob/de9ee3df6cf39fac952ab558447af1fa1365362a/vision_transformer.py#L174-L194, and
144
+ - https://github.com/facebookresearch/dinov2/blob/e1277af2ba9496fbadf7aec6eba56e8d882d1e35/dinov2/models/vision_transformer.py#L179-L211
145
+ """
146
+
147
+ num_patches = embeddings.shape[1]
148
+ num_positions = self.position_embedding.weight.shape[0]
149
+
150
+ # always interpolate when tracing to ensure the exported model works for dynamic input shapes
151
+ if not torch.jit.is_tracing() and num_patches == num_positions and height == width:
152
+ return self.position_embedding(self.position_ids)
153
+
154
+ patch_pos_embed = self.position_embedding.weight.unsqueeze(0)
155
+
156
+ dim = embeddings.shape[-1]
157
+
158
+ new_height = height // self.patch_size
159
+ new_width = width // self.patch_size
160
+
161
+ sqrt_num_positions = torch_int(num_positions**0.5)
162
+ patch_pos_embed = patch_pos_embed.reshape(1, sqrt_num_positions, sqrt_num_positions, dim)
163
+ patch_pos_embed = patch_pos_embed.permute(0, 3, 1, 2)
164
+
165
+ patch_pos_embed = nn.functional.interpolate(
166
+ patch_pos_embed,
167
+ size=(new_height, new_width),
168
+ mode="bicubic",
169
+ align_corners=False,
170
+ )
171
+
172
+ patch_pos_embed = patch_pos_embed.permute(0, 2, 3, 1).view(1, -1, dim)
173
+ return patch_pos_embed
174
+
175
+ def forward(self, pixel_values: torch.FloatTensor, interpolate_pos_encoding=False) -> torch.Tensor:
176
+ _, _, height, width = pixel_values.shape
177
+ target_dtype = self.patch_embedding.weight.dtype
178
+ patch_embeds = self.patch_embedding(pixel_values.to(dtype=target_dtype)) # shape = [*, width, grid, grid]
179
+ embeddings = patch_embeds.flatten(2).transpose(1, 2)
180
+
181
+ if interpolate_pos_encoding:
182
+ embeddings = embeddings + self.interpolate_pos_encoding(embeddings, height, width)
183
+ else:
184
+ embeddings = embeddings + self.position_embedding(self.position_ids)
185
+ return embeddings
186
+
187
+
188
+ # Copied from transformers.models.clip.modeling_clip.CLIPTextEmbeddings with CLIP->Siglip
189
+ class SiglipTextEmbeddings(nn.Module):
190
+ def __init__(self, config: SiglipTextConfig):
191
+ super().__init__()
192
+ embed_dim = config.hidden_size
193
+
194
+ self.token_embedding = nn.Embedding(config.vocab_size, embed_dim)
195
+ self.position_embedding = nn.Embedding(config.max_position_embeddings, embed_dim)
196
+
197
+ # position_ids (1, len position emb) is contiguous in memory and exported when serialized
198
+ self.register_buffer(
199
+ "position_ids", torch.arange(config.max_position_embeddings).expand((1, -1)), persistent=False
200
+ )
201
+
202
+ def forward(
203
+ self,
204
+ input_ids: torch.LongTensor | None = None,
205
+ position_ids: torch.LongTensor | None = None,
206
+ inputs_embeds: torch.FloatTensor | None = None,
207
+ ) -> torch.Tensor:
208
+ seq_length = input_ids.shape[-1] if input_ids is not None else inputs_embeds.shape[-2]
209
+ max_position_embedding = self.position_embedding.weight.shape[0]
210
+
211
+ if seq_length > max_position_embedding:
212
+ raise ValueError(
213
+ f"Sequence length must be less than max_position_embeddings (got `sequence length`: "
214
+ f"{seq_length} and max_position_embeddings: {max_position_embedding}"
215
+ )
216
+
217
+ if position_ids is None:
218
+ position_ids = self.position_ids[:, :seq_length]
219
+
220
+ if inputs_embeds is None:
221
+ inputs_embeds = self.token_embedding(input_ids)
222
+
223
+ position_embeddings = self.position_embedding(position_ids)
224
+ embeddings = inputs_embeds + position_embeddings
225
+
226
+ return embeddings
227
+
228
+
229
+ def eager_attention_forward(
230
+ module: nn.Module,
231
+ query: torch.Tensor,
232
+ key: torch.Tensor,
233
+ value: torch.Tensor,
234
+ attention_mask: torch.Tensor | None,
235
+ scaling: float,
236
+ dropout: float = 0.0,
237
+ **kwargs,
238
+ ):
239
+ attn_weights = torch.matmul(query, key.transpose(-1, -2)) * scaling
240
+ if attention_mask is not None:
241
+ attn_weights = attn_weights + attention_mask
242
+
243
+ attn_weights = nn.functional.softmax(attn_weights, dim=-1, dtype=torch.float32).to(query.dtype)
244
+ attn_weights = nn.functional.dropout(attn_weights, p=dropout, training=module.training)
245
+
246
+ attn_output = torch.matmul(attn_weights, value)
247
+ attn_output = attn_output.transpose(1, 2).contiguous()
248
+
249
+ return attn_output, attn_weights
250
+
251
+
252
+ class SiglipAttention(nn.Module):
253
+ """Multi-headed attention from 'Attention Is All You Need' paper"""
254
+
255
+ def __init__(self, config):
256
+ super().__init__()
257
+ self.config = config
258
+ self.embed_dim = config.hidden_size
259
+ self.num_heads = config.num_attention_heads
260
+ self.head_dim = self.embed_dim // self.num_heads
261
+ if self.head_dim * self.num_heads != self.embed_dim:
262
+ raise ValueError(
263
+ f"embed_dim must be divisible by num_heads (got `embed_dim`: {self.embed_dim} and `num_heads`:"
264
+ f" {self.num_heads})."
265
+ )
266
+ self.scale = self.head_dim**-0.5
267
+ self.dropout = config.attention_dropout
268
+ self.is_causal = False
269
+
270
+ self.k_proj = nn.Linear(self.embed_dim, self.embed_dim)
271
+ self.v_proj = nn.Linear(self.embed_dim, self.embed_dim)
272
+ self.q_proj = nn.Linear(self.embed_dim, self.embed_dim)
273
+ self.out_proj = nn.Linear(self.embed_dim, self.embed_dim)
274
+
275
+ def forward(
276
+ self,
277
+ hidden_states: torch.Tensor,
278
+ attention_mask: torch.Tensor | None = None,
279
+ **kwargs,
280
+ ) -> tuple[torch.Tensor, torch.Tensor | None]:
281
+ """Input shape: Batch x Time x Channel"""
282
+
283
+ input_shape = hidden_states.shape[:-1]
284
+
285
+ hidden_shape = (*input_shape, -1, self.head_dim)
286
+ queries = self.q_proj(hidden_states).view(hidden_shape).transpose(1, 2)
287
+ keys = self.k_proj(hidden_states).view(hidden_shape).transpose(1, 2)
288
+ values = self.v_proj(hidden_states).view(hidden_shape).transpose(1, 2)
289
+
290
+ attention_interface: Callable = ALL_ATTENTION_FUNCTIONS.get_interface(
291
+ self.config._attn_implementation, eager_attention_forward
292
+ )
293
+
294
+ attn_output, attn_weights = attention_interface(
295
+ self,
296
+ queries,
297
+ keys,
298
+ values,
299
+ attention_mask,
300
+ is_causal=self.is_causal,
301
+ scaling=self.scale,
302
+ dropout=0.0 if not self.training else self.dropout,
303
+ )
304
+
305
+ attn_output = attn_output.reshape(*input_shape, -1).contiguous()
306
+ attn_output = self.out_proj(attn_output)
307
+
308
+ return attn_output, attn_weights
309
+
310
+
311
+ # Copied from transformers.models.clip.modeling_clip.CLIPMLP with CLIP->Siglip
312
+ class SiglipMLP(nn.Module):
313
+ def __init__(self, config):
314
+ super().__init__()
315
+ self.config = config
316
+ self.activation_fn = ACT2FN[config.hidden_act]
317
+ self.fc1 = nn.Linear(config.hidden_size, config.intermediate_size)
318
+ self.fc2 = nn.Linear(config.intermediate_size, config.hidden_size)
319
+
320
+ def forward(self, hidden_states: torch.Tensor) -> torch.Tensor:
321
+ hidden_states = self.fc1(hidden_states)
322
+ hidden_states = self.activation_fn(hidden_states)
323
+ hidden_states = self.fc2(hidden_states)
324
+ return hidden_states
325
+
326
+
327
+ class SiglipEncoderLayer(GradientCheckpointingLayer):
328
+ def __init__(self, config: SiglipVisionConfig | SiglipTextConfig):
329
+ super().__init__()
330
+ self.embed_dim = config.hidden_size
331
+ self.layer_norm1 = nn.LayerNorm(self.embed_dim, eps=config.layer_norm_eps)
332
+ self.self_attn = SiglipAttention(config)
333
+ self.layer_norm2 = nn.LayerNorm(self.embed_dim, eps=config.layer_norm_eps)
334
+ self.mlp = SiglipMLP(config)
335
+
336
+ @auto_docstring
337
+ def forward(
338
+ self,
339
+ hidden_states: torch.Tensor,
340
+ attention_mask: torch.Tensor,
341
+ **kwargs: Unpack[TransformersKwargs],
342
+ ) -> torch.FloatTensor:
343
+ residual = hidden_states
344
+
345
+ hidden_states = self.layer_norm1(hidden_states)
346
+ hidden_states, _ = self.self_attn(
347
+ hidden_states=hidden_states,
348
+ attention_mask=attention_mask,
349
+ **kwargs,
350
+ )
351
+ hidden_states = residual + hidden_states
352
+
353
+ residual = hidden_states
354
+ hidden_states = self.layer_norm2(hidden_states)
355
+ hidden_states = self.mlp(hidden_states)
356
+ hidden_states = residual + hidden_states
357
+
358
+ return hidden_states
359
+
360
+
361
+ @auto_docstring
362
+ class SiglipPreTrainedModel(PreTrainedModel):
363
+ config: SiglipConfig
364
+ base_model_prefix = "siglip"
365
+ input_modalities = ("image", "text")
366
+ supports_gradient_checkpointing = True
367
+
368
+ _no_split_modules = [
369
+ "SiglipTextEmbeddings",
370
+ "SiglipVisionEmbeddings",
371
+ "SiglipEncoderLayer",
372
+ "SiglipMultiheadAttentionPoolingHead",
373
+ ]
374
+ _supports_flash_attn = True
375
+ _supports_sdpa = True
376
+ _supports_flex_attn = True
377
+ _supports_attention_backend = True
378
+
379
+ _can_record_outputs = {
380
+ "hidden_states": SiglipEncoderLayer,
381
+ "attentions": SiglipAttention,
382
+ }
383
+
384
+ @torch.no_grad()
385
+ def _init_weights(self, module):
386
+ """Initialize the weights"""
387
+ if isinstance(module, SiglipVisionEmbeddings):
388
+ width = (
389
+ self.config.vision_config.hidden_size
390
+ if isinstance(self.config, SiglipConfig)
391
+ else self.config.hidden_size
392
+ )
393
+ init.normal_(module.position_embedding.weight, std=1 / np.sqrt(width))
394
+ if hasattr(module, "position_ids"):
395
+ init.copy_(module.position_ids, torch.arange(module.position_ids.shape[-1]).expand((1, -1)))
396
+ elif isinstance(module, nn.Embedding):
397
+ init.default_flax_embed_init_(module.weight)
398
+ elif isinstance(module, SiglipAttention):
399
+ init.xavier_uniform_(module.q_proj.weight)
400
+ init.xavier_uniform_(module.k_proj.weight)
401
+ init.xavier_uniform_(module.v_proj.weight)
402
+ init.xavier_uniform_(module.out_proj.weight)
403
+ init.zeros_(module.q_proj.bias)
404
+ init.zeros_(module.k_proj.bias)
405
+ init.zeros_(module.v_proj.bias)
406
+ init.zeros_(module.out_proj.bias)
407
+ elif isinstance(module, SiglipMLP):
408
+ init.xavier_uniform_(module.fc1.weight)
409
+ init.xavier_uniform_(module.fc2.weight)
410
+ init.normal_(module.fc1.bias, std=1e-6)
411
+ init.normal_(module.fc2.bias, std=1e-6)
412
+ elif isinstance(module, SiglipMultiheadAttentionPoolingHead):
413
+ init.xavier_uniform_(module.probe)
414
+ init.xavier_uniform_(module.attention.in_proj_weight)
415
+ init.zeros_(module.attention.in_proj_bias)
416
+ elif isinstance(module, SiglipModel):
417
+ init.zeros_(module.logit_scale)
418
+ init.zeros_(module.logit_bias)
419
+ elif isinstance(module, SiglipForImageClassification):
420
+ init.normal_(
421
+ module.classifier.weight,
422
+ std=self.config.vision_config.hidden_size**-0.5 * self.config.initializer_factor,
423
+ )
424
+ elif isinstance(module, (nn.Linear, nn.Conv2d)):
425
+ init.lecun_normal_(module.weight)
426
+ if module.bias is not None:
427
+ init.zeros_(module.bias)
428
+ elif isinstance(module, nn.LayerNorm):
429
+ init.zeros_(module.bias)
430
+ init.ones_(module.weight)
431
+ elif isinstance(module, SiglipTextEmbeddings):
432
+ init.copy_(module.position_ids, torch.arange(module.position_ids.shape[-1]).expand((1, -1)))
433
+
434
+
435
+ # Copied from transformers.models.altclip.modeling_altclip.AltCLIPEncoder with AltCLIP->Siglip
436
+ class SiglipEncoder(nn.Module):
437
+ """
438
+ Transformer encoder consisting of `config.num_hidden_layers` self attention layers. Each layer is a
439
+ [`SiglipEncoderLayer`].
440
+
441
+ Args:
442
+ config: SiglipConfig
443
+ """
444
+
445
+ def __init__(self, config: SiglipConfig):
446
+ super().__init__()
447
+ self.config = config
448
+ self.layers = nn.ModuleList([SiglipEncoderLayer(config) for _ in range(config.num_hidden_layers)])
449
+ self.gradient_checkpointing = False
450
+
451
+ # Ignore copy
452
+ @auto_docstring
453
+ def forward(
454
+ self,
455
+ inputs_embeds,
456
+ attention_mask: torch.Tensor | None = None,
457
+ **kwargs: Unpack[TransformersKwargs],
458
+ ) -> BaseModelOutput:
459
+ hidden_states = inputs_embeds
460
+ for encoder_layer in self.layers:
461
+ hidden_states = encoder_layer(
462
+ hidden_states,
463
+ attention_mask,
464
+ **kwargs,
465
+ )
466
+
467
+ return BaseModelOutput(last_hidden_state=hidden_states)
468
+
469
+
470
+ @auto_docstring(
471
+ custom_intro="""
472
+ The text model from SigLIP without any head or projection on top.
473
+ """
474
+ )
475
+ class SiglipTextModel(SiglipPreTrainedModel):
476
+ config: SiglipTextConfig
477
+ input_modalities = ("text",)
478
+ base_model_prefix = "text_model"
479
+ _input_embed_layer = "token_embedding"
480
+
481
+ def __init__(self, config: SiglipTextConfig):
482
+ super().__init__(config)
483
+ self.config = config
484
+ embed_dim = config.hidden_size
485
+ self.embeddings = SiglipTextEmbeddings(config)
486
+ self.encoder = SiglipEncoder(config)
487
+ self.final_layer_norm = nn.LayerNorm(embed_dim, eps=config.layer_norm_eps)
488
+
489
+ self.head = nn.Linear(embed_dim, config.projection_size)
490
+ self.post_init()
491
+
492
+ @merge_with_config_defaults
493
+ @capture_outputs(tie_last_hidden_states=False)
494
+ @auto_docstring
495
+ def forward(
496
+ self,
497
+ input_ids: torch.Tensor | None = None,
498
+ attention_mask: torch.Tensor | None = None,
499
+ position_ids: torch.Tensor | None = None,
500
+ **kwargs: Unpack[TransformersKwargs],
501
+ ) -> BaseModelOutputWithPooling:
502
+ r"""
503
+ Examples:
504
+
505
+ ```python
506
+ >>> from transformers import AutoTokenizer, SiglipTextModel
507
+
508
+ >>> model = SiglipTextModel.from_pretrained("google/siglip-base-patch16-224")
509
+ >>> tokenizer = AutoTokenizer.from_pretrained("google/siglip-base-patch16-224")
510
+
511
+ >>> # important: make sure to set padding="max_length" as that's how the model was trained
512
+ >>> inputs = tokenizer(["a photo of a cat", "a photo of a dog"], padding="max_length", return_tensors="pt")
513
+
514
+ >>> outputs = model(**inputs)
515
+ >>> last_hidden_state = outputs.last_hidden_state
516
+ >>> pooled_output = outputs.pooler_output # pooled (EOS token) states
517
+ ```"""
518
+ if input_ids is None:
519
+ raise ValueError("You have to specify input_ids")
520
+
521
+ input_shape = input_ids.size()
522
+ input_ids = input_ids.view(-1, input_shape[-1])
523
+
524
+ hidden_states = self.embeddings(input_ids=input_ids, position_ids=position_ids)
525
+
526
+ # note: SigLIP's text model does not use a causal mask, unlike the original CLIP model.
527
+ attention_mask = create_bidirectional_mask(
528
+ config=self.config,
529
+ inputs_embeds=hidden_states,
530
+ attention_mask=attention_mask,
531
+ )
532
+
533
+ encoder_outputs: BaseModelOutput = self.encoder(
534
+ inputs_embeds=hidden_states,
535
+ attention_mask=attention_mask,
536
+ **kwargs,
537
+ )
538
+
539
+ last_hidden_state = encoder_outputs.last_hidden_state
540
+ last_hidden_state = self.final_layer_norm(last_hidden_state)
541
+
542
+ # The model uses the last token's hidden state, which may be padding.
543
+ pooled_output = last_hidden_state[:, -1, :]
544
+ pooled_output = self.head(pooled_output)
545
+
546
+ return BaseModelOutputWithPooling(
547
+ last_hidden_state=last_hidden_state,
548
+ pooler_output=pooled_output,
549
+ )
550
+
551
+
552
+ @auto_docstring(
553
+ custom_intro="""
554
+ The vision model from SigLIP without any head or projection on top.
555
+ """
556
+ )
557
+ class SiglipVisionModel(SiglipPreTrainedModel):
558
+ config: SiglipVisionConfig
559
+ main_input_name = "pixel_values"
560
+ input_modalities = ("image",)
561
+ base_model_prefix = "vision_model"
562
+ _input_embed_layer = "patch_embedding"
563
+
564
+ def __init__(self, config: SiglipVisionConfig):
565
+ super().__init__(config)
566
+ self.config = config
567
+ embed_dim = config.hidden_size
568
+
569
+ self.embeddings = SiglipVisionEmbeddings(config)
570
+ self.encoder = SiglipEncoder(config)
571
+ self.post_layernorm = nn.LayerNorm(embed_dim, eps=config.layer_norm_eps)
572
+ self.use_head = True if not hasattr(config, "vision_use_head") else config.vision_use_head
573
+ if self.use_head:
574
+ self.head = SiglipMultiheadAttentionPoolingHead(config)
575
+ self.post_init()
576
+
577
+ @merge_with_config_defaults
578
+ @capture_outputs(tie_last_hidden_states=False)
579
+ @auto_docstring
580
+ def forward(
581
+ self,
582
+ pixel_values,
583
+ interpolate_pos_encoding: bool | None = False,
584
+ **kwargs: Unpack[TransformersKwargs],
585
+ ) -> BaseModelOutputWithPooling:
586
+ r"""
587
+ Examples:
588
+
589
+ ```python
590
+ >>> import httpx
591
+ >>> from io import BytesIO
592
+ >>> from PIL import Image
593
+ >>> from transformers import AutoProcessor, SiglipVisionModel
594
+
595
+ >>> model = SiglipVisionModel.from_pretrained("google/siglip-base-patch16-224")
596
+ >>> processor = AutoProcessor.from_pretrained("google/siglip-base-patch16-224")
597
+
598
+ >>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
599
+ >>> with httpx.stream("GET", url) as response:
600
+ ... image = Image.open(BytesIO(response.read()))
601
+
602
+ >>> inputs = processor(images=image, return_tensors="pt")
603
+
604
+ >>> outputs = model(**inputs)
605
+ >>> last_hidden_state = outputs.last_hidden_state
606
+ >>> pooled_output = outputs.pooler_output # pooled features
607
+ ```"""
608
+ hidden_states = self.embeddings(pixel_values, interpolate_pos_encoding=interpolate_pos_encoding)
609
+
610
+ encoder_outputs: BaseModelOutput = self.encoder(
611
+ inputs_embeds=hidden_states,
612
+ **kwargs,
613
+ )
614
+
615
+ last_hidden_state = encoder_outputs.last_hidden_state
616
+ last_hidden_state = self.post_layernorm(last_hidden_state)
617
+
618
+ pooler_output = self.head(last_hidden_state) if self.use_head else None
619
+
620
+ return BaseModelOutputWithPooling(
621
+ last_hidden_state=last_hidden_state,
622
+ pooler_output=pooler_output,
623
+ )
624
+
625
+
626
+ class SiglipMultiheadAttentionPoolingHead(nn.Module):
627
+ """Multihead Attention Pooling."""
628
+
629
+ def __init__(self, config: SiglipVisionConfig):
630
+ super().__init__()
631
+
632
+ self.probe = nn.Parameter(torch.randn(1, 1, config.hidden_size))
633
+ self.attention = torch.nn.MultiheadAttention(config.hidden_size, config.num_attention_heads, batch_first=True)
634
+ self.layernorm = nn.LayerNorm(config.hidden_size, eps=config.layer_norm_eps)
635
+ self.mlp = SiglipMLP(config)
636
+
637
+ def forward(self, hidden_state):
638
+ batch_size = hidden_state.shape[0]
639
+ probe = self.probe.repeat(batch_size, 1, 1)
640
+
641
+ hidden_state = self.attention(probe, hidden_state, hidden_state)[0]
642
+
643
+ residual = hidden_state
644
+ hidden_state = self.layernorm(hidden_state)
645
+ hidden_state = residual + self.mlp(hidden_state)
646
+
647
+ return hidden_state[:, 0]
648
+
649
+
650
+ @auto_docstring
651
+ class SiglipModel(SiglipPreTrainedModel):
652
+ config: SiglipConfig
653
+
654
+ def __init__(self, config: SiglipConfig):
655
+ super().__init__(config)
656
+
657
+ text_config = config.text_config
658
+ vision_config = config.vision_config
659
+
660
+ # First, initialize the text and vision models with proper attention implementation
661
+ self.text_model = SiglipTextModel._from_config(text_config)
662
+ self.vision_model = SiglipVisionModel._from_config(vision_config)
663
+
664
+ self.logit_scale = nn.Parameter(torch.randn(1))
665
+ self.logit_bias = nn.Parameter(torch.randn(1))
666
+
667
+ # Initialize weights and apply final processing
668
+ self.post_init()
669
+
670
+ def get_input_embeddings(self) -> nn.Module:
671
+ return self.text_model.embeddings.token_embedding
672
+
673
+ def set_input_embeddings(self, value: nn.Module):
674
+ self.text_model.embeddings.token_embedding = value
675
+
676
+ @can_return_tuple
677
+ @auto_docstring
678
+ def get_text_features(
679
+ self,
680
+ input_ids: torch.Tensor,
681
+ attention_mask: torch.Tensor | None = None,
682
+ position_ids: torch.Tensor | None = None,
683
+ **kwargs: Unpack[TransformersKwargs],
684
+ ) -> tuple | BaseModelOutputWithPooling:
685
+ r"""
686
+ Examples:
687
+
688
+ ```python
689
+ >>> from transformers import AutoTokenizer, AutoModel
690
+ >>> import torch
691
+
692
+ >>> model = AutoModel.from_pretrained("google/siglip-base-patch16-224")
693
+ >>> tokenizer = AutoTokenizer.from_pretrained("google/siglip-base-patch16-224")
694
+
695
+ >>> # important: make sure to set padding="max_length" as that's how the model was trained
696
+ >>> inputs = tokenizer(["a photo of a cat", "a photo of a dog"], padding="max_length", return_tensors="pt")
697
+ >>> with torch.no_grad():
698
+ ... text_features = model.get_text_features(**inputs)
699
+ ```"""
700
+ return self.text_model(
701
+ input_ids=input_ids,
702
+ attention_mask=attention_mask,
703
+ position_ids=position_ids,
704
+ **kwargs,
705
+ )
706
+
707
+ @can_return_tuple
708
+ @auto_docstring
709
+ def get_image_features(
710
+ self,
711
+ pixel_values: torch.FloatTensor,
712
+ interpolate_pos_encoding: bool = False,
713
+ **kwargs: Unpack[TransformersKwargs],
714
+ ) -> tuple | BaseModelOutputWithPooling:
715
+ r"""
716
+ Examples:
717
+
718
+ ```python
719
+ >>> import torch
720
+ >>> from transformers import AutoProcessor, AutoModel
721
+ >>> from transformers.image_utils import load_image
722
+
723
+ >>> model = AutoModel.from_pretrained("google/siglip-base-patch16-224")
724
+ >>> processor = AutoProcessor.from_pretrained("google/siglip-base-patch16-224")
725
+
726
+ >>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
727
+ >>> image = load_image(url)
728
+
729
+ >>> inputs = processor(images=image, return_tensors="pt")
730
+
731
+ >>> with torch.no_grad():
732
+ ... image_features = model.get_image_features(**inputs)
733
+ ```"""
734
+ return self.vision_model(
735
+ pixel_values=pixel_values,
736
+ interpolate_pos_encoding=interpolate_pos_encoding,
737
+ **kwargs,
738
+ )
739
+
740
+ # NOTE: SiglipModel uses Pretrained backbones, so we don't need to add `capture_outputs` here
741
+ @can_return_tuple
742
+ @auto_docstring
743
+ def forward(
744
+ self,
745
+ input_ids: torch.LongTensor | None = None,
746
+ pixel_values: torch.FloatTensor | None = None,
747
+ attention_mask: torch.Tensor | None = None,
748
+ position_ids: torch.LongTensor | None = None,
749
+ return_loss: bool | None = None,
750
+ interpolate_pos_encoding: bool = False,
751
+ **kwargs: Unpack[TransformersKwargs],
752
+ ) -> SiglipOutput:
753
+ r"""
754
+ return_loss (`bool`, *optional*):
755
+ Whether or not to return the contrastive loss.
756
+
757
+ Examples:
758
+
759
+ ```python
760
+ >>> from PIL import Image
761
+ >>> import httpx
762
+ >>> from io import BytesIO
763
+ >>> from transformers import AutoProcessor, AutoModel
764
+ >>> import torch
765
+
766
+ >>> model = AutoModel.from_pretrained("google/siglip-base-patch16-224")
767
+ >>> processor = AutoProcessor.from_pretrained("google/siglip-base-patch16-224")
768
+
769
+ >>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
770
+ >>> with httpx.stream("GET", url) as response:
771
+ ... image = Image.open(BytesIO(response.read()))
772
+
773
+ >>> texts = ["a photo of 2 cats", "a photo of 2 dogs"]
774
+ >>> # important: we pass `padding=max_length` since the model was trained with this
775
+ >>> inputs = processor(text=texts, images=image, padding="max_length", return_tensors="pt")
776
+
777
+ >>> with torch.no_grad():
778
+ ... outputs = model(**inputs)
779
+
780
+ >>> logits_per_image = outputs.logits_per_image
781
+ >>> probs = torch.sigmoid(logits_per_image) # these are the probabilities
782
+ >>> print(f"{probs[0][0]:.1%} that image 0 is '{texts[0]}'")
783
+ 31.9% that image 0 is 'a photo of 2 cats'
784
+ ```"""
785
+ vision_outputs: BaseModelOutputWithPooling = self.vision_model(
786
+ pixel_values=pixel_values,
787
+ interpolate_pos_encoding=interpolate_pos_encoding,
788
+ **kwargs,
789
+ )
790
+
791
+ text_outputs: BaseModelOutputWithPooling = self.text_model(
792
+ input_ids=input_ids,
793
+ attention_mask=attention_mask,
794
+ position_ids=position_ids,
795
+ **kwargs,
796
+ )
797
+
798
+ image_embeds = vision_outputs.pooler_output
799
+ text_embeds = text_outputs.pooler_output
800
+
801
+ # normalized features
802
+ image_embeds = image_embeds / image_embeds.norm(p=2, dim=-1, keepdim=True)
803
+ text_embeds = text_embeds / text_embeds.norm(p=2, dim=-1, keepdim=True)
804
+
805
+ # cosine similarity as logits
806
+ logits_per_text = torch.matmul(text_embeds, image_embeds.t().to(text_embeds.device))
807
+
808
+ logit_scale, logit_bias = self.logit_scale.to(text_embeds.device), self.logit_bias.to(text_embeds.device)
809
+ logits_per_text = logits_per_text * logit_scale.exp() + logit_bias
810
+
811
+ logits_per_image = logits_per_text.t()
812
+
813
+ loss = None
814
+ if return_loss:
815
+ # Adapted from https://github.com/google-research/big_vision/blob/01edb81a4716f93a48be43b3a4af14e29cdb3a7f/big_vision/trainers/proj/image_text/siglip.py#L287
816
+ eye = torch.eye(logits_per_text.size(0), device=logits_per_text.device)
817
+ m1_diag1 = -torch.ones_like(logits_per_text) + 2 * eye
818
+ loglik = torch.nn.functional.logsigmoid(m1_diag1 * logits_per_text)
819
+ nll = -torch.sum(loglik, dim=-1)
820
+ loss = nll.mean()
821
+
822
+ return SiglipOutput(
823
+ loss=loss,
824
+ logits_per_image=logits_per_image,
825
+ logits_per_text=logits_per_text,
826
+ text_embeds=text_embeds,
827
+ image_embeds=image_embeds,
828
+ text_model_output=text_outputs,
829
+ vision_model_output=vision_outputs,
830
+ )
831
+
832
+
833
+ @auto_docstring(
834
+ custom_intro="""
835
+ SigLIP vision encoder with an image classification head on top (a linear layer on top of the pooled final hidden states of
836
+ the patch tokens) e.g. for ImageNet.
837
+ """
838
+ )
839
+ class SiglipForImageClassification(SiglipPreTrainedModel):
840
+ main_input_name = "pixel_values"
841
+ input_modalities = ("image",)
842
+
843
+ def __init__(self, config: SiglipConfig) -> None:
844
+ super().__init__(config)
845
+
846
+ self.num_labels = config.num_labels
847
+ self.vision_model = SiglipVisionModel._from_config(config.vision_config)
848
+
849
+ # Classifier head
850
+ self.classifier = (
851
+ nn.Linear(config.vision_config.hidden_size, config.num_labels) if config.num_labels > 0 else nn.Identity()
852
+ )
853
+
854
+ # Initialize weights and apply final processing
855
+ self.post_init()
856
+
857
+ def get_input_embeddings(self) -> nn.Module:
858
+ return self.vision_model.embeddings.patch_embedding
859
+
860
+ def set_input_embeddings(self, value: nn.Module):
861
+ self.vision_model.embeddings.patch_embedding = value
862
+
863
+ @can_return_tuple
864
+ @auto_docstring
865
+ def forward(
866
+ self,
867
+ pixel_values: torch.Tensor | None = None,
868
+ labels: torch.Tensor | None = None,
869
+ interpolate_pos_encoding: bool = False,
870
+ **kwargs: Unpack[TransformersKwargs],
871
+ ) -> ImageClassifierOutput:
872
+ r"""
873
+ labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
874
+ Labels for computing the image classification/regression loss. Indices should be in `[0, ...,
875
+ config.num_labels - 1]`. If `config.num_labels == 1` a regression loss is computed (Mean-Square loss), If
876
+ `config.num_labels > 1` a classification loss is computed (Cross-Entropy).
877
+
878
+ Examples:
879
+
880
+ ```python
881
+ >>> from transformers import AutoImageProcessor, SiglipForImageClassification
882
+ >>> import torch
883
+ >>> from PIL import Image
884
+ >>> import httpx
885
+ >>> from io import BytesIO
886
+
887
+ >>> torch.manual_seed(3) # doctest: +IGNORE_RESULT
888
+ >>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
889
+ >>> with httpx.stream("GET", url) as response:
890
+ ... image = Image.open(BytesIO(response.read()))
891
+
892
+ >>> # note: we are loading a `SiglipModel` from the hub here,
893
+ >>> # so the head will be randomly initialized, hence the predictions will be random if seed is not set above.
894
+ >>> image_processor = AutoImageProcessor.from_pretrained("google/siglip-base-patch16-224")
895
+ >>> model = SiglipForImageClassification.from_pretrained("google/siglip-base-patch16-224")
896
+
897
+ >>> inputs = image_processor(images=image, return_tensors="pt")
898
+ >>> outputs = model(**inputs)
899
+ >>> logits = outputs.logits
900
+ >>> # model predicts one of the two classes
901
+ >>> predicted_class_idx = logits.argmax(-1).item()
902
+ >>> print("Predicted class:", model.config.id2label[predicted_class_idx])
903
+ Predicted class: LABEL_1
904
+ ```"""
905
+ outputs: BaseModelOutputWithPooling = self.vision_model(
906
+ pixel_values,
907
+ interpolate_pos_encoding=interpolate_pos_encoding,
908
+ **kwargs,
909
+ )
910
+
911
+ sequence_output = outputs.last_hidden_state
912
+
913
+ # average pool the patch tokens
914
+ sequence_output = torch.mean(sequence_output, dim=1)
915
+ # apply classifier
916
+ logits = self.classifier(sequence_output)
917
+
918
+ loss = None
919
+ if labels is not None:
920
+ loss = self.loss_function(labels, logits, self.config)
921
+
922
+ return ImageClassifierOutput(
923
+ loss=loss,
924
+ logits=logits,
925
+ hidden_states=outputs.hidden_states,
926
+ attentions=outputs.attentions,
927
+ )
928
+
929
+
930
+ __all__ = [
931
+ "SiglipModel",
932
+ "SiglipPreTrainedModel",
933
+ "SiglipTextModel",
934
+ "SiglipVisionModel",
935
+ "SiglipForImageClassification",
936
+ ]
LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/transformers/models/siglip/tokenization_siglip.py ADDED
@@ -0,0 +1,352 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright 2024 The HuggingFace Inc. team.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ """Tokenization class for SigLIP model."""
15
+
16
+ import os
17
+ import re
18
+ import string
19
+ import warnings
20
+ from shutil import copyfile
21
+ from typing import TYPE_CHECKING, Any
22
+
23
+ import sentencepiece as spm
24
+
25
+ from ...tokenization_utils_base import AddedToken
26
+ from ...tokenization_utils_sentencepiece import SentencePieceBackend
27
+
28
+
29
+ if TYPE_CHECKING:
30
+ from ...tokenization_utils_base import TextInput
31
+ from ...utils import logging, requires_backends
32
+ from ...utils.import_utils import requires
33
+
34
+
35
+ logger = logging.get_logger(__name__)
36
+
37
+ VOCAB_FILES_NAMES = {"vocab_file": "spiece.model"}
38
+
39
+
40
+ SPIECE_UNDERLINE = "▁"
41
+
42
+
43
+ @requires(backends=("sentencepiece",))
44
+ class SiglipTokenizer(SentencePieceBackend):
45
+ """
46
+ Construct a Siglip tokenizer. Based on [SentencePiece](https://github.com/google/sentencepiece).
47
+
48
+ This tokenizer inherits from [`PreTrainedTokenizer`] which contains most of the main methods. Users should refer to
49
+ this superclass for more information regarding those methods.
50
+
51
+ Args:
52
+ vocab_file (`str`):
53
+ [SentencePiece](https://github.com/google/sentencepiece) file (generally has a *.spm* extension) that
54
+ contains the vocabulary necessary to instantiate a tokenizer.
55
+ eos_token (`str`, *optional*, defaults to `"</s>"`):
56
+ The end of sequence token.
57
+ unk_token (`str`, *optional*, defaults to `"<unk>"`):
58
+ The unknown token. A token that is not in the vocabulary cannot be converted to an ID and is set to be this
59
+ token instead.
60
+ pad_token (`str`, *optional*, defaults to `"</s>"`):
61
+ The token used for padding, for example when batching sequences of different lengths.
62
+ additional_special_tokens (`list[str]`, *optional*):
63
+ Additional special tokens used by the tokenizer.
64
+ sp_model_kwargs (`dict`, *optional*):
65
+ Will be passed to the `SentencePieceProcessor.__init__()` method. The [Python wrapper for
66
+ SentencePiece](https://github.com/google/sentencepiece/tree/master/python) can be used, among other things,
67
+ to set:
68
+
69
+ - `enable_sampling`: Enable subword regularization.
70
+ - `nbest_size`: Sampling parameters for unigram. Invalid for BPE-Dropout.
71
+
72
+ - `nbest_size = {0,1}`: No sampling is performed.
73
+ - `nbest_size > 1`: samples from the nbest_size results.
74
+ - `nbest_size < 0`: assuming that nbest_size is infinite and samples from the all hypothesis (lattice)
75
+ using forward-filtering-and-backward-sampling algorithm.
76
+
77
+ - `alpha`: Smoothing parameter for unigram sampling, and dropout probability of merge operations for
78
+ BPE-dropout.
79
+ model_max_length (`int`, *optional*, defaults to 64):
80
+ The maximum length (in number of tokens) for model inputs.
81
+ do_lower_case (`bool`, *optional*, defaults to `True`):
82
+ Whether or not to lowercase the input when tokenizing.
83
+ """
84
+
85
+ vocab_files_names = VOCAB_FILES_NAMES
86
+ model_input_names = ["input_ids", "attention_mask"]
87
+
88
+ def __init__(
89
+ self,
90
+ vocab_file,
91
+ eos_token="</s>",
92
+ unk_token="<unk>",
93
+ pad_token="</s>",
94
+ additional_special_tokens=None,
95
+ sp_model_kwargs: dict[str, Any] | None = None,
96
+ model_max_length=64,
97
+ do_lower_case=True,
98
+ **kwargs,
99
+ ) -> None:
100
+ requires_backends(self, "protobuf")
101
+
102
+ pad_token = (
103
+ AddedToken(pad_token, rstrip=True, lstrip=True, normalized=False, special=True)
104
+ if isinstance(pad_token, str)
105
+ else pad_token
106
+ )
107
+ unk_token = (
108
+ AddedToken(unk_token, rstrip=True, lstrip=True, normalized=False, special=True)
109
+ if isinstance(unk_token, str)
110
+ else unk_token
111
+ )
112
+ eos_token = (
113
+ AddedToken(eos_token, rstrip=True, lstrip=True, normalized=False, special=True)
114
+ if isinstance(eos_token, str)
115
+ else eos_token
116
+ )
117
+
118
+ self.sp_model_kwargs = {} if sp_model_kwargs is None else sp_model_kwargs
119
+ self.do_lower_case = do_lower_case
120
+
121
+ super().__init__(
122
+ vocab_file=vocab_file,
123
+ eos_token=eos_token,
124
+ unk_token=unk_token,
125
+ pad_token=pad_token,
126
+ additional_special_tokens=additional_special_tokens,
127
+ sp_model_kwargs=self.sp_model_kwargs,
128
+ model_max_length=model_max_length,
129
+ do_lower_case=do_lower_case,
130
+ **kwargs,
131
+ )
132
+
133
+ @property
134
+ def vocab_size(self):
135
+ return self.sp_model.get_piece_size()
136
+
137
+ def get_vocab(self):
138
+ vocab = {self.convert_ids_to_tokens(i): i for i in range(self.vocab_size)}
139
+ vocab.update(self.added_tokens_encoder)
140
+ return vocab
141
+
142
+ def get_special_tokens_mask(
143
+ self, token_ids_0: list[int], token_ids_1: list[int] | None = None, already_has_special_tokens: bool = False
144
+ ) -> list[int]:
145
+ """
146
+ Retrieve sequence ids from a token list that has no special tokens added. This method is called when adding
147
+ special tokens using the tokenizer `prepare_for_model` method.
148
+
149
+ Args:
150
+ token_ids_0 (`list[int]`):
151
+ List of IDs.
152
+ token_ids_1 (`list[int]`, *optional*):
153
+ Optional second list of IDs for sequence pairs.
154
+ already_has_special_tokens (`bool`, *optional*, defaults to `False`):
155
+ Whether or not the token list is already formatted with special tokens for the model.
156
+
157
+ Returns:
158
+ `list[int]`: A list of integers in the range [0, 1]: 1 for a special token, 0 for a sequence token.
159
+ """
160
+ if already_has_special_tokens:
161
+ return super().get_special_tokens_mask(
162
+ token_ids_0=token_ids_0, token_ids_1=token_ids_1, already_has_special_tokens=True
163
+ )
164
+
165
+ # normal case: some special tokens
166
+ if token_ids_1 is None:
167
+ return ([0] * len(token_ids_0)) + [1]
168
+ return ([0] * len(token_ids_0)) + [1] + ([0] * len(token_ids_1)) + [1]
169
+
170
+ def _add_eos_if_not_present(self, token_ids: list[int]) -> list[int]:
171
+ """Do not add eos again if user already added it."""
172
+ if len(token_ids) > 0 and token_ids[-1] == self.eos_token_id:
173
+ warnings.warn(
174
+ f"This sequence already has {self.eos_token}. In future versions this behavior may lead to duplicated"
175
+ " eos tokens being added."
176
+ )
177
+ return token_ids
178
+ else:
179
+ return token_ids + [self.eos_token_id]
180
+
181
+ def create_token_type_ids_from_sequences(
182
+ self, token_ids_0: list[int], token_ids_1: list[int] | None = None
183
+ ) -> list[int]:
184
+ """
185
+ Create a mask from the two sequences passed to be used in a sequence-pair classification task. T5 does not make
186
+ use of token type ids, therefore a list of zeros is returned.
187
+
188
+ Args:
189
+ token_ids_0 (`list[int]`):
190
+ List of IDs.
191
+ token_ids_1 (`list[int]`, *optional*):
192
+ Optional second list of IDs for sequence pairs.
193
+
194
+ Returns:
195
+ `list[int]`: List of zeros.
196
+ """
197
+ eos = [self.eos_token_id]
198
+
199
+ if token_ids_1 is None:
200
+ return len(token_ids_0 + eos) * [0]
201
+ return len(token_ids_0 + eos + token_ids_1 + eos) * [0]
202
+
203
+ def build_inputs_with_special_tokens(
204
+ self, token_ids_0: list[int], token_ids_1: list[int] | None = None
205
+ ) -> list[int]:
206
+ """
207
+ Build model inputs from a sequence or a pair of sequence for sequence classification tasks by concatenating and
208
+ adding special tokens. A sequence has the following format:
209
+
210
+ - single sequence: `X </s>`
211
+ - pair of sequences: `A </s> B </s>`
212
+
213
+ Args:
214
+ token_ids_0 (`list[int]`):
215
+ List of IDs to which the special tokens will be added.
216
+ token_ids_1 (`list[int]`, *optional*):
217
+ Optional second list of IDs for sequence pairs.
218
+
219
+ Returns:
220
+ `list[int]`: List of [input IDs](../glossary#input-ids) with the appropriate special tokens.
221
+ """
222
+ token_ids_0 = self._add_eos_if_not_present(token_ids_0)
223
+ if token_ids_1 is None:
224
+ return token_ids_0
225
+ else:
226
+ token_ids_1 = self._add_eos_if_not_present(token_ids_1)
227
+ return token_ids_0 + token_ids_1
228
+
229
+ def __getstate__(self):
230
+ state = self.__dict__.copy()
231
+ state["sp_model"] = None
232
+ return state
233
+
234
+ def __setstate__(self, d):
235
+ self.__dict__ = d
236
+
237
+ # for backward compatibility
238
+ if not hasattr(self, "sp_model_kwargs"):
239
+ self.sp_model_kwargs = {}
240
+
241
+ self.sp_model = spm.SentencePieceProcessor(**self.sp_model_kwargs)
242
+ self.sp_model.Load(self.vocab_file)
243
+
244
+ def remove_punctuation(self, text: str) -> str:
245
+ return text.translate(str.maketrans("", "", string.punctuation))
246
+
247
+ # source: https://github.com/google-research/big_vision/blob/3b8e5ab6ad4f96e32b32826f9e1b8fd277914f9c/big_vision/evaluators/proj/image_text/prompt_engineering.py#L94
248
+ def canonicalize_text(self, text, *, keep_punctuation_exact_string=None):
249
+ """Returns canonicalized `text` (puncuation removed).
250
+
251
+ Args:
252
+ text (`str`):
253
+ String to be canonicalized.
254
+ keep_punctuation_exact_string (`str`, *optional*):
255
+ If provided, then this exact string is kept. For example providing '{}' will keep any occurrences of '{}'
256
+ (but will still remove '{' and '}' that appear separately).
257
+ """
258
+ if self.do_lower_case:
259
+ text = text.lower()
260
+
261
+ if keep_punctuation_exact_string:
262
+ text = keep_punctuation_exact_string.join(
263
+ self.remove_punctuation(part) for part in text.split(keep_punctuation_exact_string)
264
+ )
265
+ else:
266
+ text = self.remove_punctuation(text)
267
+ text = re.sub(r"\s+", " ", text)
268
+ text = text.strip()
269
+
270
+ return text
271
+
272
+ def tokenize(self, text: "TextInput", add_special_tokens=False, **kwargs) -> list[str]:
273
+ """
274
+ Converts a string to a list of tokens.
275
+ """
276
+ tokens = super().tokenize(SPIECE_UNDERLINE + text.replace(SPIECE_UNDERLINE, " "), **kwargs)
277
+
278
+ if len(tokens) > 1 and tokens[0] == SPIECE_UNDERLINE and tokens[1] in self.all_special_tokens:
279
+ tokens = tokens[1:]
280
+ return tokens
281
+
282
+ @property
283
+ def unk_token_length(self):
284
+ return len(self.sp_model.encode(str(self.unk_token)))
285
+
286
+ def _tokenize(self, text, **kwargs):
287
+ """
288
+ Returns a tokenized string.
289
+
290
+ We de-activated the `add_dummy_prefix` option, thus the sentencepiece internals will always strip any
291
+ SPIECE_UNDERLINE.
292
+
293
+ For example: `self.sp_model.encode(f"{SPIECE_UNDERLINE}Hey", out_type = str)` will give `['H', 'e', 'y']` instead of `['▁He', 'y']`.
294
+
295
+ Thus we always encode `f"{unk_token}text"` and strip the `unk_token`. Here is an example with `unk_token = "<unk>"` and `unk_token_length = 4`.
296
+ `self.tokenizer.sp_model.encode("<unk> Hey", out_type = str)[4:]`.
297
+ """
298
+ text = self.canonicalize_text(text, keep_punctuation_exact_string=None)
299
+ tokens = self.sp_model.encode(text, out_type=str)
300
+
301
+ # 1. Encode string + prefix ex: "<unk> Hey"
302
+ tokens = self.sp_model.encode(self.unk_token + text, out_type=str)
303
+ # 2. Remove self.unk_token from ['<','unk','>', '▁Hey']
304
+ return tokens[self.unk_token_length :] if len(tokens) >= self.unk_token_length else tokens
305
+
306
+ def _convert_token_to_id(self, token):
307
+ """Converts a token (str) in an id using the vocab."""
308
+ return self.sp_model.piece_to_id(token)
309
+
310
+ def _convert_id_to_token(self, index):
311
+ """Converts an index (integer) in a token (str) using the vocab."""
312
+ token = self.sp_model.IdToPiece(index)
313
+ return token
314
+
315
+ def convert_tokens_to_string(self, tokens):
316
+ """Converts a sequence of tokens (string) in a single string."""
317
+ current_sub_tokens = []
318
+ out_string = ""
319
+ prev_is_special = False
320
+ for token in tokens:
321
+ # make sure that special tokens are not decoded using sentencepiece model
322
+ if token in self.all_special_tokens:
323
+ if not prev_is_special:
324
+ out_string += " "
325
+ out_string += self.sp_model.decode(current_sub_tokens) + token
326
+ prev_is_special = True
327
+ current_sub_tokens = []
328
+ else:
329
+ current_sub_tokens.append(token)
330
+ prev_is_special = False
331
+ out_string += self.sp_model.decode(current_sub_tokens)
332
+ return out_string.strip()
333
+
334
+ def save_vocabulary(self, save_directory: str, filename_prefix: str | None = None) -> tuple[str]:
335
+ if not os.path.isdir(save_directory):
336
+ logger.error(f"Vocabulary path ({save_directory}) should be a directory")
337
+ return
338
+ out_vocab_file = os.path.join(
339
+ save_directory, (filename_prefix + "-" if filename_prefix else "") + VOCAB_FILES_NAMES["vocab_file"]
340
+ )
341
+
342
+ if os.path.abspath(self.vocab_file) != os.path.abspath(out_vocab_file) and os.path.isfile(self.vocab_file):
343
+ copyfile(self.vocab_file, out_vocab_file)
344
+ elif not os.path.isfile(self.vocab_file):
345
+ with open(out_vocab_file, "wb") as fi:
346
+ content_spiece_model = self.sp_model.serialized_model_proto()
347
+ fi.write(content_spiece_model)
348
+
349
+ return (out_vocab_file,)
350
+
351
+
352
+ __all__ = ["SiglipTokenizer"]