
    xi}                     J    d Z ddlZddlZddlmZ ddlmZ ddlm	Z	 dde
fdZy)	z
Gradio UI Training Tab Module

Contains the dataset builder and LoRA training interface components.
The outer gr.Tab wrapper is now created in __init__.py.
    N)t)create_help_button)DEBUG_TRAININGreturnc                 86   t        t              j                         j                         dk7  }|rdnd}|rdnd}|rdnd}t	        j
                  d       t	        j                         5  t	        j                  t        d            5  t        d       t	        j
                  dt        d	       d
       t	        j                         5  t	        j                  d      5  t	        j
                  d       t	        j                         5  t	        j                  t        d      dt        d      dgd      }t	        j                  t        d      dd      }ddd       t	        j                  t        d      d      }	ddd       t	        j                  d      5  t	        j
                  d       t	        j                         5  t	        j                  t        d      dt        d      dgd      }
t	        j                  t        d      dd      }ddd       t	        j                  t        d       d      }ddd       ddd       t	        j
                  d!       t	        j                         5  t	        j                  d"      5  t	        j                  g d#g d$t        d%      dd&'      }ddd       t	        j                  d      5  t	        j
                  d(t        d)       d*       t	        j                  t        d+      d,t        d-      .      }t	        j                  t        d/      d&t        d0      dg1      }t	        j                  d2dd3dgd4      }t	        j                  d5dd6dgd4      }t	        j                  t        d7      d8t        d9      dg:      }t	        j                   t        d;      d<ft        d=      d>ft        d?      d@fgd@t        dA      t        dB      dgC      }t	        j"                  dDddEdDt        dF      t        dG      dgH      }ddd       ddd       t	        j
                  dIt        dJ       d*       t	        j                         5  t	        j                  d      5  t	        j$                  t        dK             t	        j                  t        dL      dt        dM      dg1      }t	        j                  t        dN      dt        dO      dg1      }ddd       t	        j                  d      5  t	        j                  t        dP      ddQR      }ddd       ddd       t	        j                  t        dS      dd"T      }t	        j
                  dUt        dV       d*       t	        j                         5  t	        j                  d      5  t	        j"                  dDdDddDt        dW      t        dX      dgH      }t	        j&                  t        dY      dZd[      }t	        j                  t        d\      d      }ddd       t	        j                  d"      5  t	        j                         5  t	        j                  t        d]      dd^_      }ddd       t	        j                         5  t	        j                  t        d`      dda_      }t	        j(                  g dbdct        dd      t        de      dgC      }ddd       t	        j                         5  t	        j                  t        df      dgdh_      }t	        j                  t        di      dgt        dj      ddk      } t	        j*                  d      }!ddd       t	        j                         5  t	        j,                  t        dl      dDm      }"t	        j                  t        dn      t        do      p      }#t	        j(                  g dqt        dr      s      }$t	        j,                  t        dt      ddu      }%ddd       t	        j                         5  t	        j(                  g dvdwt        dx      y      }&t	        j                  t        dz      d&{      }'t	        j                  t        d|      d}      }(ddd       t	        j                  t        d~      d      })ddd       ddd       t	        j
                  dt        d       d*       t	        j                         5  t	        j                  d      5  t	        j                  t        d      ddt        d      dg      }*ddd       t	        j                  d      5  t	        j                  t        d      ddQR      }+ddd       ddd       t	        j                  t        d      dd"T      },t	        j
                  dt        d       d*       t	        j$                  t        d             t	        j                         5  t	        j                  d      5  t	        j                  t        d      dt        d      dg:      }-ddd       t	        j                  d      5  t	        j                  t        d      ddQR      }.ddd       ddd       t	        j                  t        d      d      }/t	        j$                  t        d             t	        j                         5  t	        j(                  dddgdddg      }0ddd       t	        j                         5  t	        j                  d      5  t	        j                  t        d      ddt        d      dg      }1ddd       t	        j                  d      5  t	        j                  t        d      ddQR      }2ddd       ddd       t	        j                  t        d      ddT      }3ddd       t	        j                  t        d            5  t        d       t	        j                         5  t	        j                  d"      5  t	        j
                  dt        d       d*       t	        j$                  t        d             t	        j                  t        d      ddt        d      dg      }4t	        j                  t        d      d}      }5t	        j                  t        d      ddT      }6ddd       t	        j                  d      5  t	        j
                  d(t        d       d*       t	        j"                  ddddt        d      t        d      dgH      }7t	        j"                  ddddt        d      t        d      dgH      }8t	        j"                  ddddt        d            }9ddd       ddd       t	        j
                  dt        d       d*       t	        j                         5  t	        j,                  t        d      dt        d      dg1      }:t	        j"                  |d||t        d            };t	        j"                  ddddt        d      t        d      dgH      }<t	        j"                  ddddt        d      t        d      dgH      }=ddd       t	        j                         5  t	        j"                  ddddt        d            }>t	        j"                  ddddt        dī      t        dū      dgH      }?t	        j,                  t        dƫ      ddDȫ      }@ddd       t	        j                         5  t	        j                  t        dɫ      ddt        d˫      dg      }Addd       t	        j                         5  t	        j                  ddddg:      }Bddd       t	        j
                  d!       t	        j                         5  t	        j                  d      5  t	        j                  t        dϫ      ddQR      }Cddd       t	        j                  d      5  t	        j                  t        dЫ      ddQR      }Dddd       ddd       t	        j                  t        dҫ      dd"T      }Et	        j                         5  t	        j                  t        dӫ      ddEddի      }Ft	        j.                  t        d֫      d׫      }Gddd       t	        j
                  dt        d٫       d*       t	        j                         5  t	        j                  t        dګ      ddܬ.      }Ht	        j                  t        dݫ      d}      }Iddd       t	        j                  t        dޫ      d      }Jddd       t	        j                  d߫      5  t        d       t	        j                         5  t	        j                  d"      5  t	        j
                  d       t	        j$                  d       t	        j                  dddddg      }Kt	        j                  dd}      }Lt	        j                  dddT      }Mddd       t	        j                  d      5  t	        j
                  d       t	        j"                  dddddddgH      }Nt	        j"                  dddddddgH      }Ot	        j,                  dddDddg      }Pt	        j                  ddddg1      }Qt	        j                  ddddg1      }Rt	        j                  ddddg1      }St	        j                  dd&ddg1      }Tddd       ddd       t	        j
                  d       t	        j                         5  t	        j,                  ddddg1      }Ut	        j"                  ddddd      }Vt	        j"                  ddddd      }Wt	        j"                  ddddd      }Xddd       t	        j                         5  t	        j"                  ddddd       }Yt	        j"                  ddddÐdddgH      }Zt	        j,                  dddDȫ      }[ddd       t	        j                         5  t	        j                  dddddg      }\ddd       t	        j
                  d!       t	        j                         5  t	        j                  d      5  t	        j                  dddQR      }]ddd       t	        j                  d      5  t	        j                  dddQR      }^ddd       ddd       t	        j                  d	dd"T      }_t	        j                         5  t	        j                  d
ddEddի      }`t	        j.                  dd׫      }addd       t	        j
                  d       t	        j                         5  t	        j                  ddd.      }bt	        j                  dd}      }cddd       t	        j                         5  t	        j(                  dgddddgC      }dt	        j                  dd}      }eddd       t	        j                  dd      }fddd       ddd       t	        j*                  d      }gt	        j*                  ddd      }hi ddd	d
dddddd d!d"d#d$d%d&d'i d(d)d*d+d,d-d.d/d0 d1!d2"d3#d4$d5%d6&d7'd8(i d9)d:*d;+d<,d=-d>.d?/d@0dA1dB2dC3dD|gdE4dF5dG6dH7dI8i dJ9dK:dL;dM<dN=dO>dP?dQ@dRAdSBdTCdUDdVEdWFdXGdYHdZIi d[Jd\Kd]Ld^Md_Nd`OdaPdbQdcRddSdeTdfUdgVdhWdiXdjYdkZ[\]^_`abdecf|hdlS # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   9xY w# 1 sw Y   xY w# 1 sw Y   #xY w# 1 sw Y   xY w# 1 sw Y   TxY w# 1 sw Y   YxY w# 1 sw Y   xY w# 1 sw Y   gxY w# 1 sw Y   lxY w# 1 sw Y   xY w# 1 sw Y   JxY w# 1 sw Y   xY w# 1 sw Y   xxY w# 1 sw Y   xY w# 1 sw Y   ixY w# 1 sw Y   NxY w# 1 sw Y   SxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   bxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   6xY w# 1 sw Y   
xY w# 1 sw Y   
vxY w# 1 sw Y   
LxY w# 1 sw Y   	xY w# 1 sw Y   	xY w# 1 sw Y   	xY w# 1 sw Y   	MxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   $xY w# 1 sw Y   xY w# 1 sw Y   4xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   .xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   zxY w# 1 sw Y   xY w(m  a  Create the training tab content (without the outer gr.Tab wrapper).
    
    The outer gr.Tab is now created in __init__.py so that Generation and
    Training tabs are siblings under the same gr.Tabs container.
    
    Args:
        dit_handler: DiT handler instance
        llm_handler: LLM handler instance
        init_params: Dictionary containing initialization parameters and state.
                    If None, service will not be pre-initialized.
        
    Returns:
        Dictionary of Gradio components for event handling
    OFF   d   i  u   
    <div style="text-align: center; padding: 10px; margin-bottom: 15px;">
        <h2>🎵 LoRA Training for ACE-Step</h2>
        <p>Build datasets from your audio files and train custom LoRA adapters</p>
    </div>
    ztraining.tab_dataset_buildertraining_datasetz
            <div style="padding: 10px; margin-bottom: 10px; border: 1px solid #4a4a6a; border-radius: 8px; background: linear-gradient(135deg, #2a2a4a 0%, #1a1a3a 100%);">
                <h3 style="margin: 0 0 5px 0;">ztraining.quick_start_titlez</h3>
                <p style="margin: 0; color: #aaa;">Choose one: <b>Load existing dataset</b> OR <b>Scan new directory</b></p>
            </div>
            )scaleu#   <h4>📂 Load Existing Dataset</h4>ztraining.load_dataset_labelz./datasets/my_lora_dataset.jsonztraining.load_dataset_infozhas-info-container   )labelplaceholderinfoelem_classesr   ztraining.load_btnprimary)variantr   Nztraining.load_statusF)r   interactiveu    <h4>🔍 Scan New Directory</h4>ztraining.scan_labelz/path/to/your/audio/folderztraining.scan_infoztraining.scan_btn	secondaryztraining.scan_statusz<hr>   )#FilenameDurationLyricsLabeledBPMKeyCaption)numberstrr    r    r    r    r    r    ztraining.found_audio_filesT)headersdatatyper   r   wrapu   <h3>⚙️ z training.dataset_settings_headerz</h3>ztraining.dataset_namemy_lora_datasetz!training.dataset_name_placeholder)r   valuer   ztraining.all_instrumentalztraining.all_instrumental_info)r   r%   r   r   zFormat Lyrics (LM)zMUse LM to format/structure user-provided lyrics from .txt files (coming soon))r   r%   r   r   r   zTranscribe Lyrics (LM)z4Use LM to transcribe lyrics from audio (coming soon)ztraining.custom_tagze.g., 8bit_retro, my_styleztraining.custom_tag_info)r   r   r   r   ztraining.tag_prependprependztraining.tag_appendappendztraining.tag_replacereplaceztraining.tag_positionztraining.tag_position_info)choicesr%   r   r   r   r   
   ztraining.genre_ratioztraining.genre_ratio_info)minimummaximumstepr%   r   r   r   u   <hr><h3>🤖 ztraining.step2_titleztraining.step2_instructionztraining.skip_metasztraining.skip_metas_infoztraining.only_unlabeledztraining.only_unlabeled_infoztraining.auto_label_btnlg)r   sizeztraining.label_progress)r   r   linesu   <hr><h3>👀 ztraining.step3_titleztraining.select_sampleztraining.select_sample_infoztraining.audio_previewfilepath)r   typer   ztraining.filenameztraining.captionzMusic description...)r   r0   r   ztraining.genrezpop, electronic, dance...)Use Global Ratior   Genrer3   ztraining.prompt_override_labelztraining.prompt_override_infoztraining.lyrics_editable_label   z&[Verse 1]
Lyrics here...

[Chorus]
...ztraining.raw_lyrics_labelztraining.no_lyrics_placeholder)r   r0   r   r   visibleztraining.bpm)r   	precisionztraining.key_labelztraining.key_placeholder)r   r   ) 2346zN/Aztraining.time_sig)r)   r   ztraining.duration_s)r   r7   r   )instrumentalenzhjakoesfrdeptruunknownr=   ztraining.language)r)   r%   r   ztraining.instrumental)r   r%   ztraining.save_changes_btn)r   ztraining.edit_statusu   <hr><h3>💾 ztraining.step4_titleztraining.save_pathz./datasets/dataset_name.jsonztraining.save_path_info)r   r%   r   r   r   ztraining.save_dataset_btnztraining.save_statusu   <hr><h3>⚡ ztraining.step5_titleztraining.step5_introztraining.load_existing_labelztraining.load_existing_infoztraining.load_dataset_btnztraining.step5_detailszPreprocess ForLoRALoKrzILoRA keeps compatibility mode; LoKr uses per-sample source-style context.)r   r)   r%   r   r   ztraining.tensor_output_dirz./datasets/preprocessed_tensorsztraining.tensor_output_infoztraining.preprocess_btnztraining.preprocess_progressztraining.tab_train_loratraining_trainu	   <h3>📊 ztraining.train_section_tensorsz$training.train_tensor_selection_descz!training.preprocessed_tensors_dirz"training.preprocessed_tensors_info)r   r   r%   r   r   ztraining.dataset_infoztraining.train_section_lora      @   ztraining.lora_rankztraining.lora_rank_infoi      ztraining.lora_alphaztraining.lora_alpha_infog        g      ?g?g?ztraining.lora_dropout)r+   r,   r-   r%   r   u   <hr><h3>🎛️ ztraining.train_section_paramsztraining.learning_ratega2U0*3?ztraining.learning_rate_infoi  ztraining.max_epochs   ztraining.batch_sizeztraining.batch_size_info   ztraining.gradient_accumulationz#training.gradient_accumulation_info2      ztraining.save_every_n_epochsg      ?g      @g      @ztraining.shiftztraining.shift_infoztraining.seed*   )r   r%   r7   ztraining.output_dirz./lora_outputztraining.output_dir_infozResume Checkpointz#./lora_output/checkpoints/epoch_200z3Directory of a saved LoRA checkpoint to resume fromztraining.start_training_btnztraining.stop_training_btnstopztraining.training_progressztraining.training_log   )r   r   r0   	max_linesr   ztraining.training_loss_title)r   r   u   <hr><h3>📦 ztraining.export_headerztraining.export_pathz./lora_output/final_loraz./lora_output/my_loraztraining.export_lora_btnztraining.export_statusu   🚀 Train LoKrtraining_lokru"   <h3>📊 Preprocessed Tensors</h3>zvSelect the directory containing preprocessed tensor files (`.pt` files). These are created in the Dataset Builder tab.zPreprocessed Tensors Directoryz@Path to directory containing manifest.json and tensor .pt files.zLoad DatasetzDataset Infou   <h3>⚙️ LoKr Settings</h3>zLoKr Linear Dimz/Adapter rank-like width for LoKr linear layers.zLoKr Linear Alphaz!Scaling factor for LoKr adapters.zLoKr Factorz--1 uses automatic Kronecker factor selection.)r   r%   r7   r   r   zDecompose Bothz&Enable decomposition on both matrices.z
Use Tuckerz!Enable Tucker decomposition mode.z
Use Scalarz%Enable scalar calibration in LyCORIS.zWeight Decompose (DoRA)z6Enable DoRA-style weight decomposition when supported.u(   <hr><h3>🎛️ Training Parameters</h3>zLearning RategMbP?z;LoKr commonly uses a higher LR than LoRA. Tune per dataset.i  z
Max Epochsz
Batch SizezGradient AccumulationzSave Every N EpochsShiftz$Turbo model training timestep shift.SeedzOutput Directoryz./lokr_outputz9Where LoKr checkpoints and final weights will be written.zStart LoKr TrainingzStop TrainingzTraining ProgresszTraining LogzLoKr Training Lossu   <hr><h3>📦 Export LoKr</h3>zExport Pathz./lokr_output/final_lokrz./lokr_output/my_lokru   📦 Export LoKrzLatest (auto)zCheckpoint EpochzDSelect a specific epoch checkpoint to export, or keep Latest (auto).u   ↻ Refresh EpochszExport Status)is_trainingshould_stopload_json_pathload_json_btnload_json_statusaudio_directoryscan_btnscan_statusaudio_files_tabledataset_nameall_instrumentalformat_lyricstranscribe_lyrics
custom_tagtag_position
skip_metasonly_unlabeledauto_label_btnlabel_progresssample_selectorpreview_audiopreview_filenameedit_caption
edit_genreprompt_overridegenre_ratioedit_lyricsraw_lyrics_displayhas_raw_lyrics_stateedit_bpmedit_keyscaleedit_timesigedit_durationedit_languageedit_instrumentalsave_edit_btnedit_status	save_pathsave_dataset_btnsave_statusload_existing_dataset_pathload_existing_dataset_btnload_existing_statuspreprocess_modepreprocess_output_dirpreprocess_btnpreprocess_progressdataset_builder_statetraining_tensor_dirload_dataset_btntraining_dataset_info	lora_rank
lora_alphalora_dropoutlearning_ratetrain_epochstrain_batch_sizegradient_accumulationsave_every_n_epochstraining_shifttraining_seedlora_output_dirresume_checkpoint_dirstart_training_btnstop_training_btntraining_progresstraining_logtraining_loss_plotexport_pathexport_lora_btnexport_statuslokr_training_tensor_dirlokr_load_dataset_btnlokr_training_dataset_infolokr_linear_dimlokr_linear_alphalokr_factorlokr_decompose_bothlokr_use_tuckerlokr_use_scalarlokr_weight_decomposelokr_learning_ratelokr_train_epochslokr_train_batch_sizelokr_gradient_accumulationlokr_save_every_n_epochslokr_training_shift)lokr_training_seedlokr_output_dirstart_lokr_training_btnstop_lokr_training_btnlokr_training_progresslokr_training_loglokr_training_loss_plotlokr_export_pathlokr_export_epochrefresh_lokr_export_epochs_btnexport_lokr_btnlokr_export_statustraining_state)r    r   stripuppergrHTMLTabsTabr   r   RowColumnTextboxButton	DataframeCheckboxRadioSliderMarkdownAudioDropdownStateNumberPlot)idit_handlerllm_handlerinit_paramsdebug_training_enabled	epoch_min
epoch_stepepoch_defaultr]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rt   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   si                                                                                                            D/mnt/workspace/ACE-Step-1.5/acestep/ui/gradio/interfaces/training.pycreate_training_sectionr      sL    !0668>>@EI+I,#J/ATMGG  	 
VVA45612GG 0012N0O/P Q  YYQ'GGAB)+"#$A"B(I!"#?!@PdOe"#	* )+		!4G2HR[cd(e " (*zz 67$)($ ( YYQ'GG>?*,**"#$9":(D!"#7!8H\G]"#	+ $&99Q/B-C[`a#b " #%** 67$)#K (! > GGFOYYQ' )+ k!\ <=$)!)% ( YYQ'GGk!,N*O)PPUVW#%:: 78/$%&I$J$L (*{{ ;<"?@PdOe($ %'KK2#l  }Q  |R$)	%M )+6#Scwbx$)	)% "$ 56$@9:J^I_"J $&8856	B45x@56	B!
 ( 78;<L`Ka	$L #%)) ! # 67:;K_J`#K] ( F GGmA&<$=#>eDEYYQ'KK"> ?@!# 56#9:J^I_"J
 &([[ 9:#=>NbMc&N ( YYQ'%'YY34 )!&N ( (  ZZ12!N GGmA&<$=#>eDEYYQ'&(ii ! ! 89<=MaLb'O %'HH 89'$)%M (*zz 34$)($! (* YYQ'')zz"#$6"7"#(>( " %'ZZ"#$4"5"#(C&

 +-++$L"4"#$D"E!"#B!CSgRh	+ " &(jj"#$D"E"#(T'
 .0ZZ"#$?"@"#()*J(K(-$).* 02xx, " #%99"#N"3&'$ )+

"#$8"9()*D(E) (*{{$C"#$7"8( )+		"#$9":&'(-) "& (*$u"0"#$7"8)
 -/KK"#$;"<"&-) )+		!4O2PZe(f " #%** 67$)#KG (- | GGmA&<$=#>eDEYYQ' "

 45?$B89I]H^	!I ( YYQ'')yy56 )!($ (  **./!K GGl1%;#<"=UCDKK012YYQ'13 >?$E<=MaLb2. ( YYQ'02		56 +!1- (  $&::./!$ 
 KK234"$++*#V, d  uI  tJ	#  YYQ',.JJ <=?$E<=MaLb	-) ( YYQ'%'YY34 )!&N (  #%**67!#c	 7p	 VVA/01/0YYQ'GGi*J(K'LERSKK"H IJ*,** CD$E?CDThSi	+' (*yy3N1OYd'e$,.JJ 78$)-) (( YYQ'GGk!,I*J)K5QR "		 ! #  4589I]H^!I "$ ! #! 569:J^I_"J $&99 # #!! 78$L+ (+ d GG&q)H'I&J%PQ "		4589I]H^!  "yy% #'12  $&991256FZE[$  )+		<=@AQePf)%1 B &(ii :;'# "$,-01AU@V" !#		O,!% 0 "$**12) /56FZE[	#  (*

- EN^r]s)%  GGFOYYQ')+78 )!*& ( YYQ'(*		67 &!)% (  !#

45!! !zz34 %   &(WW:;&"  GGmA&>$?#@FG jj234 7
 #%))A.H,IS^"_  JJ01!MW 2b VV%&/YYQ'GG@AKKH
 02zz>$E?_  pD  oE	0, -/IInk,Z)13,$)2.! (, YYQ'GG;<&(ii ! # /N^r]s'O )+		 ! #!1@PdOe)% #%))+ "#L\p[q	#K +-++.#EUiTj+'
 ')kk*#@PdOe'O
 ')kk*#DThSi'O
 -/KK7"Ueydz-)Q (/ J GG>?%'YY)Vfze{&" %'II &%! )+		&)% .0YY1.*/ > +-99 /,( ')ii!?OcNd'# &(YY &"% 0 "$**,) /Tdxcy	#  GGFOYYQ'.0ii- )!/+ ( YYQ'-/YY' &!.* (  &(ZZ)!&" $&JJ( % %! +-''.+'  GG34#%::'4 7$ 
 #%)),>"T  $&KK,-),_  pD  oE	%! 24;OYd1e.  "$%!"} 'W 
^ HHTNXXeEJKNg.g 	g 	,	g
 	?g 	Hg 	{g 	.g 	g 	,g 	g 	.g 	jg 	g 	jg  	.!g" 	.#g$ 	.%g& 	?'g( 	)g* 	,+g, 	-g. 	j/g0 	?1g2 	{3g4 	{5g6 	07g8 	 49g: 	H;g< 	=g> 	?g@ 	AgB 	CgD 	.EgF 	GgH 	{IgJ 	YKgL 	,MgN 	{OgR 	%&@SgT 	$%>UgV 	 4WgX 	?YgZ 	 !6[g\ 	.]g^ 	2_g` 	 !6agd 	2egf 	,ggh 	 !6igj 	Ykgl 	jmgn 	ogp 	qgr 	sgt 	,ugv 	 !6wgx 	2ygz 	.{g| 	}g~ 	?g@ 	 !6AgB 	0CgD 	.EgF 	.GgH 	IgJ 	0KgL 	{MgN 	?OgP 	QgT 	#$<UgV 	 !6WgX 	%&@YgZ 	?[g\ 	.]g^ 	{_g` 	2agb 	?cgd 	?egf 	 !6ggh 	0igj 	.kgl 	 !6mgn 	%&@ogp 	#$<qgr 	2sgt 1*#:"8"8.#:,.*H*0(Mg gG " ('" " ('! D (' (' L (' (' : (', " " " "& "o ('- B (' (' 4 (' (' *  (' (' E	 76v	 ('( ('+ h B 0   (' (' (  G 21h (', ('/ N > 0  (' (' (   k '&W 
s  *Al	AAf0Aa+"*Aa	AA`7(Aa	Aa+!*Aa	AAa(Aa	Aa+
1Af0;Ab(Aa8	:AbEAb	3Ab;>Af09Ab9A7Ab	Ab9%"Ab,	Ab9AAf0.Ad!A1Ac	6Ad!Ad	)"AcAd	'AAc 8Ad	A#Ac-7Ad	BAc: Ad	<A$Ad (Ad	Ad!>Af0Ae%.Ad.	Ae1"Ad;	AeA=Af0Ae//-Ae	Ae/:"Ae"	Ae/$AAf0>Ae<Af08Af#.Af		=Af#"Af	=Af#)Af0.&Al Ai4AgB/Af=	:AgB$Ag
	<Ag>AiB.Ag$0AiA4Ag1 Ai.Ag>
Ai&Ah1Ai2Ah2@	"Ah	@+Ah2A	"Ah%	A+Ah2A3=AiB0AAh?C4>AiD2AAiE4(AiFAlF9 AlGAj G0A5Ai&	I%Aj JCAi3	MAj M1AlNA)AjO8AlPAAjQ(AlR Aj'R$1AlSAkS,Aj4	TAkT$Ak	T>AkU5AlU;4AkV/2AlW!4Ak(XAlX19Ak5Y* AlZ
Al`7Aa`<Aa	aAaa	Aa+aAaaAa	aAa(a#Aa+a+Aa5a0Af0a8Aba=AbbAbb
AbbAbbAf0bAb)b$Ab9b,Ab6b1Ab9b9Acb>Af0cAccAd!cAccAd	c Ac*c%Ad	c-Ac7c2Ad	c:Adc?Ad	dAddAd	dAddAd!d!Ad+d&Af0d.Ad8d3Aed;Aee AeeAeeAf0eAeeAe/e"Ae,e'Ae/e/Ae9e4Af0e<AffAf0f	AffAf#fAf fAf#f#Af-f(Af0f0Af:	f5Alf=AggAgg
AggAggAg!gAig$Ag.g)Aig1Ag;g6Aig>AhhAihAhhAihAh"hAh2h%Ah/h*Ah2h2Ah<h7Aih?Ai	iAiiAiiAiiAi#	iAli&Ai0i+Aj i3Ai=i8Aj j Aj
jAljAjjAljAj$jAlj'Aj1j,Alj4Aj>j9AkkAkkAkkAkkAlkAk%k Alk(Ak2k-Alk5Ak?k:AllAl	lAllAl)N)__doc__osgradior   acestep.ui.gradio.i18nr   acestep.ui.gradio.help_contentr   acestep.constantsr   dictr        r   <module>r      s)    
  $ = ,t4 tr   