§
    9†Æj…Z  ã                   ó–   — d dl mZ d dlmZ d dlZd dlZd dlmZ d dlm	Z	m
Z
 d dlmZmZ  ej        e¦  «        Z G d„ de	¦  «        ZdS )	é    )Úinference_checkpoint)ÚOptionalN)ÚLQProjection2D)Ú
PixDiT_T2IÚ_take_tensor)Úcat_outputs_cp_with_gradÚsplit_inputs_cpc            ;       óh  ‡ — e Zd ZdZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dAdedededededededed ed!ed"ee         d#ee         d$ed%ed&ed'ed(ed)ed*ed+ed,ed-ed.ed/ed0ed1ed2ed3ed4ef:ˆ fd5„Z	d6„ Z
ed7„ ¦   «         Zd8„ Z	 	 dBd9„Zd:ed;ed<ed=efd>„Z	 	 	 	 	 	 	 	 dCd?efd@„Zˆ xZS )DÚPidNetu¤  PixDiT T2I with LQ condition injection for super-resolution.

    Inherits all PixDiT_T2I functionality (MMDiT patch blocks, PiT pixel blocks,
    text conditioning, RoPE, encoder-decoder compression, REPA). Adds LQ projection
    module and controlnet-style gated injection logic.

    Args (in addition to PixDiT_T2I args):
        lq_inject_mode: kept as a parameter for config compatibility â€” only
            "controlnet" is supported in this inference subset.
        lq_in_channels: LQ image channels (3 for RGB, 0 to disable image branch).
        lq_latent_channels: LQ latent channels (e.g. 16 for Wan VAE, 0 to disable).
        lq_hidden_dim: internal projection hidden dimension.
        lq_num_res_blocks: number of ResBlocks per branch for deeper feature extraction.
        lq_gate_type: "sigma_aware_per_token_per_dim" only.
        lq_interval: inject every N blocks.
        zero_init_lq: zero-init all LQ projections for safe pretrained start.
        train_lq_proj_only: freeze base T2I, train only LQ projection modules.
        sr_scale: super-resolution scale factor (default 4).
        latent_spatial_down_factor: VAE spatial downscale factor (default 8).
    é   é   é€  é@   Né   é   é   é   é   Tç     ˆÃ@Ú	ntk_awareéÿÿÿÿFé   Ú
controlnetr   é   ÚzerosÚsigma_aware_per_token_per_dimé   Úuse_text_ropeÚtext_rope_thetaÚ	rope_modeÚ
rope_ref_hÚ
rope_ref_wÚrepa_encoder_indexÚ	enable_edÚed_compress_ratioÚed_depth_per_stageÚed_window_sizeÚed_num_headsÚed_hidden_sizeÚed_use_token_shuffleÚlq_inject_modeÚlq_in_channelsÚlq_latent_channelsÚlq_hidden_dimÚlq_num_res_blocksÚlq_latent_unpatchify_factorÚlq_aux_rgb_headÚlq_conv_padding_modeÚlq_gate_typeÚlq_intervalÚzero_init_lqÚtrain_lq_proj_onlyÚsr_scaleÚlatent_spatial_down_factorÚpit_lq_injectÚpit_lq_gate_typec*                 ó  •— t          ¦   «                              |||||||||	|
|||||||||||||||¬¦  «         |dk    sJ d|› d�¦   «         ‚|| _        |&| _        |%| _        ||#z   dz
  |#z  }*|(| _        t          di d|“d|“d|“d	|“d
|
“d|&“d|'“d|“d|“d|*“d|"“d|#“d|$“d|!“d|(“d| “Ž| _        |(rddlm	}+  |+|)||$¬¦  «        | _
        nd | _
        |%rª|                      ¦   «         D ]},|,                     d¦  «         Œ| j                             ¦   «         D ]},|,                     d¦  «         Œ| j
        �Ht          | j
        d¦  «        r5| j
                             ¦   «         D ]},|,                     d¦  «         Œd S d S d S d S )N)Úin_channelsÚ
num_groupsÚhidden_sizeÚpixel_hidden_sizeÚpixel_attn_hidden_sizeÚpixel_num_groupsÚpatch_depthÚpixel_depthÚnum_text_blocksÚ
patch_sizeÚtxt_embed_dimÚtxt_max_lengthr   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r   zMOnly lq_inject_mode='controlnet' is supported in this inference subset, got 'ú'r   r<   Úlatent_channelsÚ
hidden_dimÚout_dimrE   r7   r8   Únum_res_blocksÚlatent_unpatchify_factorÚnum_outputsÚ	gate_typeÚintervalÚ	zero_initÚconv_padding_modeÚ
pit_outputr1   r   )Ú_build_gate)rQ   FTÚ
parameters© )ÚsuperÚ__init__r+   r7   r6   r9   r   Úlq_projÚ,postprocessing.pid.networks.lq_projection_2drT   Úpit_lq_gaterU   Úrequires_grad_Úhasattr).Úselfr<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   Únum_lq_outputsrT   ÚpÚ	__class__s.                                                €úKC:\Users\johnn\OneDrive\Documents\AI\postprocessing\pid\networks\pid_net.pyrX   zPidNet.__init__6   sÊ  ø€ õb 	‰Œ×ÒØ#Ø!Ø#Ø/Ø#9Ø-Ø#Ø#Ø+Ø!Ø'Ø)Ø'Ø+ØØ!Ø!Ø1ØØ/Ø1Ø)Ø%Ø)Ø!5ð3 	ñ 	
ô 	
ð 	
ð8  Ò-Ð-Ð-ØmÐ\jÐmÐmÐmñ .Ô-Ð-ð -ˆÔØ ˆŒØ"4ˆÔà%¨Ñ3°aÑ7¸KÑGˆà*ˆÔå%ð 
ð 
ð 
Ø&˜ð
à.Ð.ð
ð %�}ð
ð  �Kð	
ð
 "�zð
ð �Xð
ð (BÐ'Að
ð -Ð,ð
ð &AÐ%@ð
ð '˜ð
ð #�lð
ð !�[ð
ð #�lð
ð 3Ð2ð
ð %�}ð
ð  ,˜Oð!
ˆŒð( ð 	$ØPÐPÐPÐPÐPÐPà*˜{Ð+;¸[ÐT`ÐaÑaÔaˆDÔÐà#ˆDÔàð 	+Ø—_’_Ñ&Ô&ð (ð (�Ø× Ò  Ñ'Ô'Ð'Ð'Ø”\×,Ò,Ñ.Ô.ð 'ð '�Ø× Ò  Ñ&Ô&Ð&Ð&ØÔÐ+µ¸Ô8HÈ,Ñ0WÔ0WÐ+ØÔ)×4Ò4Ñ6Ô6ð +ð +�AØ×$Ò$ TÑ*Ô*Ð*Ð*ð	+ð 	+ð
 ,Ð+Ð+Ð+ð+ð +ó    c                 ól   — | j                              ¦   «          t                               d¦  «         dS )zInitialize LQ projection.z#LQ projection init_weights completeN)rY   Úinit_weightsÚlogÚinfo)r^   s    rb   re   zPidNet.init_weights²   s/   € àŒ×!Ò!Ñ#Ô#Ð#Ý�ŠÐ6Ñ7Ô7Ð7Ð7Ð7rc   c                 óx   — |                       |¦  «         t          j        j                             | d¬¦  «        S )NT)Úinplace)Úadd_ÚtorchÚnnÚ
functionalÚsilu)ÚtargetÚothers     rb   Ú	_add_siluzPidNet._add_silu·   s2   € à�Š�EÑÔÐÝŒxÔ"×'Ò'¨¸Ð'Ñ=Ô=Ð=rc   c                 óÊ   ‡ — ‰                       ||||¬¦  «        }|�1|                     ddd¦  «        }|D ]}|                     |¦  «         Œ‰ j        �ˆ fd„|D ¦   «         }|S )N)Úlq_video_or_imageÚ	lq_latentÚ	target_pHÚ	target_pWr   r   c                 ó>   •— g | ]}t          |d ‰j        ¬¦  «        ‘ŒS )r   ©Úseq_dimÚcp_group)r	   Ú	_cp_group)Ú.0Úfr^   s     €rb   ú
<listcomp>z/PidNet._compute_lq_features.<locals>.<listcomp>Ë   s+   ø€ ÐgÐgÐgÐVW�?¨1°aÀ$Ä.ÐQÑQÔQÐgÐgÐgrc   )rY   ÚviewÚmul_r{   )	r^   rs   rt   Úlq_maskÚHsÚWsÚlq_featuresÚmaskÚfeatures	   `        rb   Ú_compute_lq_featureszPidNet._compute_lq_features¼   s’   ø€ Ø—l’lØ/ØØØð	 #ñ 
ô 
ˆð ÐØ—<’<  A qÑ)Ô)ˆDØ&ð #ð #�Ø—’˜TÑ"Ô"Ð"Ð"ð Œ>Ð%ØgÐgÐgÐgÐ[fÐgÑgÔgˆKØÐrc   c
           	      óœ  — t          |¦  «        }|du}
|	�g nd}t          | j        ¦  «        D �]}t          ¦   «          |
r~| j                             |¦  «        rd| j                             |¦  «        }|t          |¦  «        k     r7||         }|�-d||<   |g}d}|g}d}| j                             ||||¬¦  «        }|g}|g}d}d} | j	        |         ||||||¦  «        \  }}|	�+||	v r'| 
                    |                     ¦   «         ¦  «         t          j        ¦   «         r d| j        cxk     r	|dz   k    rn �Œ|| _        �Œ|||fS )aÆ  Run patch_blocks loop with controlnet-style LQ injection.

        Args:
            feature_indices: Optional set of block indices whose output features should be
                collected and returned (for GAN discriminator). None = no collection.

        Returns:
            (s_main, y_emb, collected_features) where collected_features is a list of
            [B, L, D] tensors (one per index in feature_indices), or None if not requested.
        N)ÚsigmaÚout_idxr   r   )r   ÚrangerB   r   rY   Úis_gate_activeÚ_get_output_indexÚlenÚgateÚpatch_blocksÚappendÚclonerk   Úis_grad_enabledr#   Úlast_repa_tokens)r^   Ús_mainÚy_embÚ	conditionÚposÚpos_txtÚattn_mask_jointr„   Údegrade_sigmaÚfeature_indicesÚhas_lqÚcollected_featuresÚirŠ   Ú
lq_featureÚlq_feature_listÚs_main_listÚ
y_emb_lists                     rb   Ú_run_patch_blockszPidNet._run_patch_blocksÎ   s©  € õ, ˜fÑ%Ô%ˆØ DÐ(ˆà#2Ð#>˜R˜RÀDÐå�tÔ'Ñ(Ô(ð 	/ñ 	/ˆAÝ Ñ"Ô"Ð"Øð 
w˜$œ,×5Ò5°aÑ8Ô8ð 
wØœ,×8Ò8¸Ñ;Ô;�Ø�S Ñ-Ô-Ò-Ð-Ø!,¨WÔ!5�JØ!Ð-Ø/3˜ GÑ,Ø+5¨,˜Ø%)˜
Ø'- h˜Ø!%˜Ø!%¤×!2Ò!2°;ÀÐWdÐnuÐ!2Ñ!vÔ!v˜à!˜(ˆKØ˜ˆJØˆFØˆEØ0˜DÔ-¨aÔ0°¸jÈ)ÐUXÐZaÐcrÑsÔs‰MˆF�Eð Ð*¨q°OÐ/CÐ/CØ"×)Ò)¨&¯,ª,©.¬.Ñ9Ô9Ð9åÔ$Ñ&Ô&ð /¨1¨tÔ/FÐ+QÐ+QÒ+QÐ+QÈ1ÈqÉ5Ò+QÐ+QÐ+QÐ+QÑ+QØ(.�Ô%ùà�uÐ0Ð0Ð0rc   Úfeaturesr‚   rƒ   Úreturnc           	      ó  — g }|D ]~}| j         �)t          |                     ¦   «         d| j         ¬¦  «        }|j        \  }}}|                     |                     ||||¦  «                             dddd¦  «        ¦  «         Œ|S )uÓ  Reshape patch token features [B, L, D] â†’ [B, D, Hs, Ws] for discriminator.

        PixDiT tokens are 1-to-1 with spatial patches (no sub-patch splitting in the
        token dimension), so we just reshape to a 2D spatial feature map.
        Compatible with Discriminator_ImageDiT which uses Conv2D heads.

        Under CP, collected features are rank-local [B, L_local, D]. We gather
        them along the token axis here so the discriminator (which has no CP
        plumbing) sees the full feature map.

        Args:
            features: List of [B, L_local_or_full, D] token tensors.
            Hs, Ws: Spatial patch grid dimensions (full).

        Returns:
            List of [B, D, Hs, Ws] tensors.
        Nr   rx   r   r   r   )r{   r   Ú
contiguousÚshaper‘   r   Úpermute)	r^   r¥   r‚   rƒ   ÚresultÚfeatÚBÚ_LÚDs	            rb   Ú_unpatchify_featureszPidNet._unpatchify_features  s‘   € ð$ ˆØð 	Gð 	GˆDØŒ~Ð)Ý/°·²Ñ0AÔ0AÈ1ÐW[ÔWeÐfÑfÔf�Ø”z‰HˆAˆr�1Ø�MŠM˜$Ÿ)š) A r¨2¨qÑ1Ô1×9Ò9¸!¸QÀÀ1ÑEÔEÑFÔFÐFÐFØˆrc   Úreturn_features_earlyc                 ó  — |j         \  }}}}| | j        z  }| | j        z  }|s|r)t          j        j                             |d|d|f¦  «        }|j         \  }}}}|| j        z  }|| j        z  }||z  }| j        }|�|                     ¦   «         nd}|dk    r||z  dk    sJ d|› d|› �¦   «         ‚||z  }|d up|d u}|r|                      |||||¦  «        nd }d }|  	                    |||j
        ¦  «        }t          j        j                             || j        | j        ¬¦  «                             dd¦  «        }|                      |                     d¦  «        ¦  «                             |d| j        ¦  «        }|                     ¦   «         dk    rt#          d	¦  «        ‚t%          |j         d         | j        ¦  «        } |d d …d | …d d …f         }|                      |¦  «                             || | j        ¦  «        }!d }| j        d d …d | …d d …f                              |!j        ¦  «        }"|!                     |"¦  «         ~"t          j        j                             |¦  «        }#d }$| j        r|                      | |j
        ¦  «        nd }%|�÷t9          |t          j        ¦  «        rÝ|}&|&                     ¦   «         dk    r_|&                     d¦  «        dk    rF|&                     d¦  «        }&|&                     ¦   «         dk    r|&                     d¦  «        dk    °F|&                     ¦   «         dk    r.|&                     d¦  «        dk    r|&                     d¦  «        }&|&                     ¦   «         dk    r|&dk    }$|�€ô|g}'~|                      |'¦  «        }(|�tA          |(d|¬
¦  «        }(d | _!        | j"        �r£| j#        ��›| j$        ��“||}*})| j%        €|(n|  %                    |(¦  «        }+| j&        �|  &                    |+¦  «        }+| j'        €|#n|  '                    |#¦  «        },|  #                    |+|)|*|,¦  «        \  }-}.}/}0d }+|  	                    |/|0|j
        ¦  «        }1| j(        €|-n|  (                    |-¦  «        }2d }-| j)        �|  )                    |2¦  «        }2|  *                    |2|¦  «        }2d }3|$�Ì|2j         d         }4t          j+        ||4ft          j,        |j
        ¬¦  «        }5|$                     d¦  «        | k    r|$d d …d | …f         n>t          j        j                             |$d| |$                     d¦  «        z
  fd¬¦  «        }6t          j-        |6|5gd¬¦  «                             |dd| |4z   ¦  «        }3|2g}7d }2|  .                    |7|!|#|1|%|3||	|
¬¦	  «	        \  }2}!}| j%        €|2n|  %                    |2¦  «        }8| j&        �|  &                    |8¦  «        }8|  $                    |8|/|0|.|,¦  «        \  }9}}d }8d }.d },| j(        €|9n|  (                    |9¦  «        }d }9| j)        �|  )                    |¦  «        }|  *                    ||¦  «        }d }�n|(}2d }(d }3|$�¿t          j+        ||ft          j,        |j
        ¬¦  «        }5|$                     d¦  «        | k    r|$d d …d | …f         n>t          j        j                             |$d| |$                     d¦  «        z
  fd¬¦  «        }6t          j-        |6|5gd¬¦  «                             |dd| |z   ¦  «        }3|2g}7d }2|  .                    |7|!|#||%|3||	|
¬¦	  «	        \  }2}!}|  *                    |2|¦  «        }d }2d }!d }d }#| j/        sd }t          j0        ¦   «         r d| j1        cxk     r| j2        k    s	n || _!        |r|
�|r|  3                    |||¦  «        S |j         \  }:};}|;|k    rU|;|k    r|d d …d |…d d …f         }n=||;z
  }<t          j-        || 4                    ||<|j         d         ¦  «        gd¬¦  «        }| 5                    ||z  | j        ¦  «        }=| j/        rY|�W|d          5                    ||z  | j        ¦  «        }>|	�|	 6                    |¦  «        nd }?|  7                    |=|>|?¬¦  «        }=~>~?d }|g}'d }|  8                    |'||| j        ¬¦  «        }@|�]| j        | j        z  }A|@                     |||A| j9        ¦  «        }@tA          |@d|¬
¦  «        }@|@ 5                    ||z  |A| j9        ¦  «        }@| j:        D ]*}Btw          ¦   «          |@g}Cd }@ |B|C|=||| j        |¦  «        }@Œ+d }=|  <                    |@¦  «        }@| j=        }D| j        | j        z  }A|@                     |||A|D¦  «         >                    dddd¦  «         ?                    ¦   «         }@|@                     ||D|Az  |¦  «        }@|�$t�          |@ ?                    ¦   «         d|¬
¦  «        }@t          j        j         A                    |@||f| j        | j        ¬¦  «        }E|s|r|Ed d …d d …d |…d |…f         }E|
�|�|E|  3                    |||¦  «        fS |ES )Nr   r   zL=z not divisible by cp_size=)Úkernel_sizeÚstrider   r   r   z"Text embedding y must be [B, L, D]rx   )ÚdtypeÚdeviceT)Úvalue)Údim)r›   rœ   )r‰   )Ú
img_heightÚ	img_widthrE   )Br©   rE   rk   rl   rm   Úpadr{   Úsizer‡   Ú	fetch_posr¶   ÚunfoldÚ	transposeÚ
t_embedderr   r>   r¸   Ú
ValueErrorÚminrG   Ú
y_embedderÚy_pos_embeddingÚtorµ   rj   rn   r   Úfetch_pos_textÚ
isinstanceÚTensorÚsqueezeÚ
s_embedderr	   r”   Úuse_edÚ
encoder_edÚ
decoder_edÚs_ed_proj_inÚs_ed_in_normÚs_ed_cond_projÚs_ed_proj_outÚs_ed_out_normrq   r   ÚboolÚcatr¤   r9   r“   r#   rB   r°   Ú	new_zerosÚreshapeÚrepeat_interleaver[   Úpixel_embedderr?   Úpixel_blocksr   Úfinal_layerÚout_channelsrª   r¨   r   Úfold)Fr^   ÚxÚtÚyÚsr…   rs   rt   r�   r›   rœ   r±   r­   Ú_ÚH_origÚW_origÚpad_hÚpad_wÚHÚWr‚   rƒ   ÚLrz   Úcp_sizeÚL_localr�   r„   rž   r˜   Ú	x_patchesÚt_embÚLtxtr–   Úy_posr—   r»   r™   ÚmÚx_listÚs0ÚH_tokensÚW_tokensÚs_edÚc_edÚ
bottleneckÚskip_tokensÚHbÚWbÚpos_br•   rš   Ú
L_img_currÚpad_imgÚpad_txtr¢   Ús_bottleneck2ÚdecodedÚ
batch_sizeÚlengthÚpad_lenÚs_condÚpit_lqÚ
sigma_flatÚx_pixelsÚP2ÚblkÚx_pixels_listÚC_outÚoutputsF                                                                         rb   ÚforwardzPidNet.forward   s‘  € ð  !œwÑˆˆ1ˆf�fØ�˜DœOÑ+ˆØ�˜DœOÑ+ˆØð 	A�Eð 	AÝ”Ô#×'Ò'¨¨A¨u°a¸Ð+?Ñ@Ô@ˆAØ”W‰
ˆˆ1ˆa�Ø�$”/Ñ!ˆØ�$”/Ñ!ˆØ�‰Gˆð ”>ˆØ%-Ð%9�(—-’-‘/”/�/¸qˆØ�QŠ;ˆ;Ø�w‘; !Ò#Ð#Ð#Ð%P¨!Ð%PÐ%PÀwÐ%PÐ%PÑ#Ô#Ð#Ø�w‘,ˆð #¨$Ð.ÐG°)À4Ð2GˆØbhÐr�d×/Ò/Ð0AÀ9ÈgÐWYÐ[]Ñ^Ô^Ð^Ðnrˆà!Ðð �nŠn˜R  Q¤XÑ.Ô.ˆÝ”HÔ'×.Ò.¨q¸d¼oÐVZÔVeÐ.ÑfÔf×pÒpÐqrÐtuÑvÔvˆ	à—’ §¢ r¡
¤
Ñ+Ô+×0Ò0°°B¸Ô8HÑIÔIˆð �5Š5‰7Œ7�aŠ<ˆ<ÝÐAÑBÔBÐBÝ�1”7˜1”:˜tÔ2Ñ3Ô3ˆØˆaˆaˆa��$�˜˜˜ˆkŒNˆØ—’ Ñ"Ô"×'Ò'¨¨4°Ô1AÑBÔBˆØˆØÔ$ Q Q Q¨¨¨¨q¨q¨q [Ô1×4Ò4°U´[ÑAÔAˆØ�
Š
�5ÑÔÐØõ ”HÔ'×,Ò,¨UÑ3Ô3ˆ	ð ˆØ9=Ô9KÐU�$×%Ò% d¨A¬HÑ5Ô5Ð5ÐQUˆØÐ¥
¨4µ´Ñ >Ô >ÐØˆAØ—%’%‘'”'˜A’+�+ !§&¢&¨¡)¤)¨q¢. .Ø—I’I˜a‘L”L�ð —%’%‘'”'˜A’+�+ !§&¢&¨¡)¤)¨q¢. .à�uŠu‰wŒw˜!Š|ˆ| §¢ q¡	¤	¨Q¢ Ø—I’I˜a‘L”L�Ø�uŠu‰wŒw˜!Š|ˆ|Ø˜1’f�à‰9Ø�[ˆFØØ—’ Ñ(Ô(ˆBð Ð#Ý$ R°¸XÐFÑFÔF�Ø$(ˆDÔ!àŒ{ñ F˜tœÑ:¸t¼Ñ?Zà%'¨˜(�Ø!Ô.Ð6�r�r¸D×<MÒ<MÈbÑ<QÔ<Q�ØÔ$Ð0Ø×,Ò,¨TÑ2Ô2�DØ$(Ô$7Ð$?�y�yÀT×EXÒEXÐYbÑEcÔEc�Ø26·/²/À$ÈÐRZÐ\`Ñ2aÔ2aÑ/�
˜K¨¨RØ�ØŸš r¨2¨q¬xÑ8Ô8�Ø'+Ô'9Ð'A˜˜Àt×GYÒGYÐZdÑGeÔGe�Ø!�
ØÔ%Ð1Ø!×/Ò/°Ñ7Ô7�FØŸš¨°Ñ6Ô6�à"&�Ø�?Ø!'¤¨a¤�JÝ#œk¨1¨j¨/ÅÄÐTUÔT\Ð]Ñ]Ô]�Gð Ÿ8š8 A™;œ;¨$Ò.Ð.ð ˜A˜A˜A˜u ˜u˜Hœ˜å"œXÔ0×4Ò4°S¸1¸dÀSÇXÂXÈaÁ[Ä[Ñ>PÐ:QÐY]Ð4Ñ^Ô^ð õ
 ',¤i°¸'Ð0BÈÐ&JÑ&JÔ&J×&OÒ&OÐPQÐSTÐVWÐY]Ð`jÑYjÑ&kÔ&k�Oà%˜h�Ø�Ø48×4JÒ4JØ ¨	°5¸'À?ÐT_Ðo|ð  O^ð 5Kñ 5ô 5Ñ1�˜Ð1ð +/Ô*;Ð*C  È×IZÒIZÐ[aÑIbÔIb�ØÔ$Ð0Ø$(×$5Ò$5°mÑ$DÔ$D�MØ $§¢°¸rÀ2À{ÐTXÑ YÔ Y‘�˜˜AØ $�Ø"�Ø�Ø#Ô1Ð9�G�G¸t×?QÒ?QÐRYÑ?ZÔ?Z�Ø�ØÔ%Ð1Ø×*Ò*¨1Ñ-Ô-�AØ—N’N 1 eÑ,Ô,�Ø"�‘ð �Ø�Ø"&�Ø�?õ $œk¨1¨a¨&½¼
È1Ì8ÐTÑTÔT�Gð Ÿ8š8 A™;œ;¨$Ò.Ð.ð ˜A˜A˜A˜u ˜u˜Hœ˜å"œXÔ0×4Ò4°S¸1¸dÀSÇXÂXÈaÁ[Ä[Ñ>PÐ:QÐY]Ð4Ñ^Ô^ð õ
 ',¤i°¸'Ð0BÈÐ&JÑ&JÔ&J×&OÒ&OÐPQÐSTÐVWÐY]Ð`aÑYaÑ&bÔ&b�Oà%˜h�Ø�Ø48×4JÒ4JØ ¨	°3¸ÀÐR]Ðmzð  M\ð 5Kñ 5ô 5Ñ1�˜Ð1ð —N’N 6¨5Ñ1Ô1�Ø�àˆEØˆEØˆIØÔ%ð #Ø"�åÔ Ñ"Ô"ð 	&¨A°Ô0GÐ,[Ð,[Ò,[Ð,[È4ÔK[Ò,[Ð,[Ð,[Ð,[Ø$%ˆDÔ!ð !ð 	I _Ð%@ÐEWÐ%@Ø×,Ò,Ð-?ÀÀRÑHÔHÐHð
 !"¤Ñˆ
�F˜AØ�WÒÐØ˜ÒÐØ�a�a�a˜˜'˜ 1 1 1�nÔ%��à! FÑ*�Ý”I˜q !§+¢+¨a°¸!¼'À!¼*Ñ"EÔ"EÐFÈAÐNÑNÔN�ð
 —’˜1˜w™;¨Ô(8Ñ9Ô9ˆØÔð 	# +Ð"9Ø  ”_×,Ò,¨Q°©[¸$Ô:JÑKÔKˆFØERÐE^˜×8Ò8¸ÑAÔAÐAÐdhˆJØ×%Ò% f¨f¸JÐ%ÑGÔGˆFØ˜
Øˆð
 �ˆØˆØ×&Ò& v¸!ÀqÐUYÔUdÐ&ÑeÔeˆØÐØ” 4¤?Ñ2ˆBØ—}’} Q¨¨2¨tÔ/EÑFÔFˆHÝ& x¸ÀXÐNÑNÔNˆHØ×'Ò'¨¨G©°R¸Ô9OÑPÔPˆHØÔ$ð 	Oð 	OˆCÝ Ñ"Ô"Ð"Ø%˜JˆMØˆHØ�s˜=¨&°!°Q¸¼ÈÑNÔNˆHˆHØˆà×#Ò# HÑ-Ô-ˆØÔ!ˆØŒ_˜tœÑ.ˆØ—=’=  G¨R°Ñ7Ô7×?Ò?ÀÀ1ÀaÈÑKÔK×VÒVÑXÔXˆØ—=’=  E¨B¡J°Ñ8Ô8ˆð ÐÝ/°×0CÒ0CÑ0EÔ0EÈqÐ[cÐdÑdÔdˆHÝ”Ô$×)Ò)¨(°Q¸°FÈÌÐ`dÔ`oÐ)ÑpÔpˆØð 	4�Eð 	4Ø˜A˜A˜A˜q˜q˜q ' 6 '¨7¨F¨7Ð2Ô3ˆFð Ð&Ð+=Ð+IØ˜4×4Ò4Ð5GÈÈRÑPÔPÐPÐPØˆrc   ))r   r   r   r   NNr   r   r   r   r   r   Tr   r   r   r   r   Fr   r   r   NNTr   r   r   r   r   r   Fr   r   r   TFr   r   Fr   )NN)NNNNNNNF)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rÓ   ÚfloatÚstrÚintr   rX   re   Ústaticmethodrq   r‡   r¤   Úlistr°   r  Ú__classcell__)ra   s   @rb   r   r       s  ø€ € € € € ðð ð0 ØØØØ#ØØØØØØØØ"Ø!(Ø$ØØØ"$ØØ!"Ø"#ØØ&*Ø(,Ø%)à*ØØ"#Ø Ø!"Ø+,Ø %Ø$+Ø;ØØ!Ø#(ØØ*+ð $Ø ?ð_z+ð z+ð ðz+ð  ð!z+ð" ð#z+ð$ ð%z+ð& ð'z+ð(  ð)z+ð* ð+z+ð, ð-z+ð.  ð/z+ð0 ð1z+ð2 ˜s”mð3z+ð4 ! œð5z+ð6 #ð7z+ð: ð;z+ð< ð=z+ð>  ð?z+ð@ ðAz+ðB ðCz+ðD &)ðEz+ðF ðGz+ðH "ðIz+ðJ ðKz+ðL ðMz+ðN ðOz+ðP !ðQz+ðR ðSz+ðT %(ðUz+ð\ ð]z+ð^ ð_z+ð z+ð z+ð z+ð z+ð z+ðx8ð 8ð 8ð
 ð>ð >ñ „\ð>ðð ð ð6 Øð61ð 61ð 61ð 61ðp¨Tð °sð Àð Èð ð ð ð ð> ØØØØØàØ&+ðcð cð  $ðcð cð cð cð cð cð cð crc   r   )Úshared.utils.media_controlr   Útypingr   rk   ÚloggingrZ   r   Ú-postprocessing.pid.networks.pixeldit_officialr   r   Ú)postprocessing.pid.utils.context_parallelr   r	   Ú	getLoggerr  rf   r   rV   rc   rb   ú<module>r     sÏ   ðØ ;Ð ;Ð ;Ð ;Ð ;Ð ;ð$ Ð Ð Ð Ð Ð à €€€à €€€à GÐ GÐ GÐ GÐ GÐ GØ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RØ _Ð _Ð _Ð _Ð _Ð _Ð _Ð _à€gÔ˜Ñ!Ô!€ðcð cð cð cð cˆZñ cô cð cð cð crc   