§
    $�’j„2  ã                   ó:   — d dl Zd dlmZ  G d„ d¦  «        Zd„ ZdS )é    Nc                   ó²   — e Zd ZdZd„ Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Z	ed„ ¦   «         Z
ed„ ¦   «         Zed	„ ¦   «         Zd
S )ÚCanonicalConstrainta®  Canonical constraint to use with trust-constr algorithm.

    It represents the set of constraints of the form::

        f_eq(x) = 0
        f_ineq(x) <= 0

    where ``f_eq`` and ``f_ineq`` are evaluated by a single function, see
    below.

    The class is supposed to be instantiated by factory methods, which
    should prepare the parameters listed below.

    Parameters
    ----------
    n_eq, n_ineq : int
        Number of equality and inequality constraints respectively.
    fun : callable
        Function defining the constraints. The signature is
        ``fun(x) -> c_eq, c_ineq``, where ``c_eq`` is ndarray with `n_eq`
        components and ``c_ineq`` is ndarray with `n_ineq` components.
    jac : callable
        Function to evaluate the Jacobian of the constraint. The signature
        is ``jac(x) -> J_eq, J_ineq``, where ``J_eq`` and ``J_ineq`` are
        either ndarray of csr_array of shapes (n_eq, n) and (n_ineq, n),
        respectively.
    hess : callable
        Function to evaluate the Hessian of the constraints multiplied
        by Lagrange multipliers, that is
        ``dot(f_eq, v_eq) + dot(f_ineq, v_ineq)``. The signature is
        ``hess(x, v_eq, v_ineq) -> H``, where ``H`` has an implied
        shape (n, n) and provide a matrix-vector product operation
        ``H.dot(p)``.
    keep_feasible : ndarray, shape (n_ineq,)
        Mask indicating which inequality constraints should be kept feasible.
    c                 óZ   — || _         || _        || _        || _        || _        || _        d S ©N)Ún_eqÚn_ineqÚfunÚjacÚhessÚkeep_feasible)Úselfr   r   r	   r
   r   r   s          úeC:\Projects\DSCons\.venv\Lib\site-packages\scipy\optimize\_trustregion_constr\canonical_constraint.pyÚ__init__zCanonicalConstraint.__init__*   s3   € ØˆŒ	ØˆŒØˆŒØˆŒØˆŒ	Ø*ˆÔÐÐó    c                 ó   — |j         \  }}|j        }|j        }t          j        |t          j         k    ¦  «        r<t          j        |t          j        k    ¦  «        r|                      |j        ¦  «        S t          j        |t          j         k    ¦  «        r<t          j        |t          j        k    ¦  «        r|                      |j        ¦  «        S t          j        ||k    ¦  «        r|                      ||¦  «        S t          j        |t          j         k    ¦  «        r|  	                    |||¦  «        S t          j        |t          j        k    ¦  «        r|  
                    |||¦  «        S |                      ||||¦  «        S )z5Create an instance from `PreparedConstrained` object.)Úboundsr	   r   ÚnpÚallÚinfÚemptyÚnÚ_equal_to_canonicalÚ_less_to_canonicalÚ_greater_to_canonicalÚ_interval_to_canonical)ÚclsÚ
constraintÚlbÚubÚcfunr   s         r   Úfrom_PreparedConstraintz+CanonicalConstraint.from_PreparedConstraint2   sV  € ð Ô"‰ˆˆBØŒ~ˆØ"Ô0ˆåŒ6�"�œ˜’-Ñ Ô ð 	%¥R¤V¨Bµ"´&ªLÑ%9Ô%9ð 	%Ø—9’9˜TœVÑ$Ô$Ð$åŒ6�"�œ˜’-Ñ Ô ð 		K¥R¤V¨Bµ"´&ªLÑ%9Ô%9ð 		KØ—9’9˜TœVÑ$Ô$Ð$ÝŒV�B˜"’HÑÔð 	KØ×*Ò*¨4°Ñ4Ô4Ð4ÝŒV�B�2œ6˜'’MÑ"Ô"ð 	KØ×)Ò)¨$°°MÑBÔBÐBÝŒV�B�"œ&’LÑ!Ô!ð 	KØ×,Ò,¨T°2°}ÑEÔEÐEà×-Ò-¨d°B¸¸MÑJÔJÐJr   c                 ó  ‡‡‡— t          j        d¦  «        Št          j        d|f¦  «        Št          j        ||f¦  «        Šˆfd„}ˆfd„}ˆfd„} | dd|||t          j        dt           j        ¬¦  «        ¦  «        S )z¦Create an "empty" instance.

        This "empty" instance is required to allow working with unconstrained
        problems as if they have some constraints.
        r   c                 ó   •— ‰‰fS r   © )ÚxÚ	empty_funs    €r   r	   z&CanonicalConstraint.empty.<locals>.funR   ó   ø€ Ø˜iÐ'Ð'r   c                 ó   •— ‰‰fS r   r$   )r%   Ú	empty_jacs    €r   r
   z&CanonicalConstraint.empty.<locals>.jacU   r'   r   c                 ó   •— ‰S r   r$   )r%   Úv_eqÚv_ineqÚ
empty_hesss      €r   r   z'CanonicalConstraint.empty.<locals>.hessX   s	   ø€ ØÐr   ©Údtype)r   r   ÚspsÚ	csr_arrayÚbool_)r   r   r	   r
   r   r&   r-   r)   s        @@@r   r   zCanonicalConstraint.emptyG   s²   øøø€ õ ”H˜Q‘K”Kˆ	Ý”H˜a ˜VÑ$Ô$ˆ	Ý”] A q 6Ñ*Ô*ˆ
ð	(ð 	(ð 	(ð 	(ð 	(ð	(ð 	(ð 	(ð 	(ð 	(ð	ð 	ð 	ð 	ð 	ð ˆs�1�a˜˜c 4­¬°!½2¼8Ð)DÑ)DÔ)DÑEÔEÐEr   c                 ó  ‡‡	— ˆfd„}|rt           j        Š	nt          j        Š	ˆˆ	fd„}ˆfd„}t          d„ ‰D ¦   «         ¦  «        }t          d„ ‰D ¦   «         ¦  «        }t          j        d„ ‰D ¦   «         ¦  «        } | ||||||¦  «        S )a  Concatenate multiple `CanonicalConstraint` into one.

        `sparse_jacobian` (bool) determines the Jacobian format of the
        concatenated constraint. Note that items in `canonical_constraints`
        must have their Jacobians in the same format.
        c                 ó”   •‡ — ‰rt          ˆ fd„‰D ¦   «         Ž \  }}ng g }}t          j        |¦  «        t          j        |¦  «        fS )Nc                 ó:   •— g | ]}|                      ‰¦  «        ‘ŒS r$   ©r	   ©Ú.0Úcr%   s     €r   ú
<listcomp>z@CanonicalConstraint.concatenate.<locals>.fun.<locals>.<listcomp>h   ó#   ø€ ÐBÐBÐB q˜!Ÿ%š% ™(œ(ÐBÐBÐBr   )Úzipr   Úhstack)r%   Úeq_allÚineq_allÚcanonical_constraintss   `  €r   r	   z,CanonicalConstraint.concatenate.<locals>.fune   s`   øø€ Ø$ð *Ý#&ØBÐBÐBÐBÐ,AÐBÑBÔBð$DÑ �˜˜ð $& r˜�å”9˜VÑ$Ô$¥b¤i°Ñ&9Ô&9Ð9Ð9r   c                 óp   •‡ — ‰rt          ˆ fd„‰D ¦   «         Ž \  }}ng g }} ‰|¦  «         ‰|¦  «        fS )Nc                 ó:   •— g | ]}|                      ‰¦  «        ‘ŒS r$   ©r
   r7   s     €r   r:   z@CanonicalConstraint.concatenate.<locals>.jac.<locals>.<listcomp>v   r;   r   )r<   )r%   r>   r?   r@   Úvstacks   `  €€r   r
   z,CanonicalConstraint.concatenate.<locals>.jacs   s^   øø€ Ø$ð *Ý#&ØBÐBÐBÐBÐ,AÐBÑBÔBð$DÑ �˜˜ð $& r˜�à�6˜&‘>”> 6 6¨(Ñ#3Ô#3Ð3Ð3r   c                 óV  •‡
— g Š
d}d}‰D ]d}||||j         z   …         }||||j        z   …         }‰
                     |                     | ||¦  «        ¦  «         ||j         z  }||j        z  }Œeˆ
fd„}| j        d         }	t
          j                             |	|	f|t          ¬¦  «        S )Nr   c                 óx   •— t          j        | t          ¬¦  «        }‰D ]}||                     | ¦  «        z  }Œ|S )Nr.   )r   Ú
zeros_likeÚfloatÚdot)ÚpÚresultÚhÚhess_alls      €r   Úmatvecz=CanonicalConstraint.concatenate.<locals>.hess.<locals>.matvec‡   sA   ø€ Ýœ qµÐ6Ñ6Ô6�Ø!ð 'ð '�AØ˜aŸeše A™hœhÑ&�F�FØ�r   r.   )	r   r   Úappendr   Úshaper0   ÚlinalgÚLinearOperatorrH   )r%   r+   r,   Úindex_eqÚ
index_ineqr9   Úvc_eqÚvc_ineqrN   r   rM   r@   s             @€r   r   z-CanonicalConstraint.concatenate.<locals>.hess|   sÑ   øø€ ØˆHØˆHØˆJØ*ð 'ð '�Ø˜X h°´Ñ&7Ð7Ô8�Ø  ¨J¸¼Ñ,AÐ!AÔB�Ø—’ §¢ q¨%°Ñ 9Ô 9Ñ:Ô:Ð:Ø˜AœFÑ"�Ø˜aœhÑ&�
�
ðð ð ð ð ð ”˜”
ˆAÝ”:×,Ò,¨a°¨V°VÅ5Ð,ÑIÔIÐIr   c              3   ó$   K  — | ]}|j         V — Œd S r   )r   ©r8   r9   s     r   ú	<genexpr>z2CanonicalConstraint.concatenate.<locals>.<genexpr>�   s$   è è € Ð9Ð9˜a�1”6Ð9Ð9Ð9Ð9Ð9Ð9r   c              3   ó$   K  — | ]}|j         V — Œd S r   )r   rX   s     r   rY   z2CanonicalConstraint.concatenate.<locals>.<genexpr>‘   s$   è è € Ð=Ð= !�Q”XÐ=Ð=Ð=Ð=Ð=Ð=r   c                 ó   — g | ]	}|j         ‘Œ
S r$   )r   rX   s     r   r:   z3CanonicalConstraint.concatenate.<locals>.<listcomp>’   s&   € ð #:ð #:ð #:°q 1¤?ð #:ð #:ð #:r   )r0   rD   r   Úsumr=   )
r   r@   Úsparse_jacobianr	   r
   r   r   r   r   rD   s
    `       @r   ÚconcatenatezCanonicalConstraint.concatenate]   sø   øø€ ð	:ð 	:ð 	:ð 	:ð 	:ð ð 	Ý”ZˆFˆFå”YˆFð	4ð 	4ð 	4ð 	4ð 	4ð 	4ð	Jð 	Jð 	Jð 	Jð 	Jõ( Ð9Ð9Ð#8Ð9Ñ9Ô9Ñ9Ô9ˆÝÐ=Ð=Ð'<Ð=Ñ=Ô=Ñ=Ô=ˆÝœ	ð #:ð #:Ø#8ð#:ñ #:ô #:ñ ;ô ;ˆð ˆs�4˜  c¨4°Ñ?Ô?Ð?r   c                 óÞ  ‡‡‡
‡— t          j        d¦  «        Š
‰j        }‰j        d         }d}t          j        dt          ¬¦  «        }‰j        rt          j        d|f¦  «        Šnt          j        d|f¦  «        Šˆˆ
ˆfd„}ˆˆfd„}ˆfd„}	t          j        d¦  «        Š
‰j        }‰j        rt          j        d|f¦  «        Šnt          j        d|f¦  «        Š | |||||	|¦  «        S )Nr   r.   c                 ó8   •— ‰                      | ¦  «        ‰z
  ‰fS r   r6   )r%   r    r&   Úvalues    €€€r   r	   z4CanonicalConstraint._equal_to_canonical.<locals>.fun¥   s   ø€ Ø—8’8˜A‘;”; Ñ&¨	Ð1Ð1r   c                 ó2   •— ‰                      | ¦  «        ‰fS r   rC   ©r%   r    r)   s    €€r   r
   z4CanonicalConstraint._equal_to_canonical.<locals>.jac¨   s   ø€ Ø—8’8˜A‘;”; 	Ð)Ð)r   c                 ó0   •— ‰                      | |¦  «        S r   ©r   ©r%   r+   r,   r    s      €r   r   z5CanonicalConstraint._equal_to_canonical.<locals>.hess«   s   ø€ Ø—9’9˜Q Ñ%Ô%Ð%r   )r   r   r   rP   Úboolr]   r0   r1   )r   r    ra   r   r   r   r   r	   r
   r   r&   r)   s    ``       @@r   r   z'CanonicalConstraint._equal_to_canonical—   s.  øøøø€ å”H˜Q‘K”Kˆ	ØŒFˆàŒ{˜1Œ~ˆØˆÝœ ­$Ð/Ñ/Ô/ˆàÔð 	)Ýœ q¨! fÑ-Ô-ˆIˆIåœ ! Q Ñ(Ô(ˆIð	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð	*ð 	*ð 	*ð 	*ð 	*ð 	*ð	&ð 	&ð 	&ð 	&ð 	&õ ”H˜Q‘K”Kˆ	ØŒFˆØÔð 	)Ýœ q¨! fÑ-Ô-ˆIˆIåœ ! Q Ñ(Ô(ˆIàˆs�4˜  c¨4°Ñ?Ô?Ð?r   c                 óâ  ‡‡‡
‡‡— t          j        d¦  «        Š
‰j        }‰j        rt	          j        d|f¦  «        Šnt          j        d|f¦  «        Š‰t           j        k     Šd}t          j        ‰¦  «        }t          j        ‰¦  «        rˆˆ
ˆfd„}ˆˆfd„}ˆfd„}	n?t          j	        ‰¦  «        d         Š|‰         }‰‰         Šˆˆ
ˆˆfd„}ˆˆˆfd„}ˆˆfd„}	 | |||||	|¦  «        S )Nr   c                 ó8   •— ‰‰                      | ¦  «        ‰z
  fS r   r6   )r%   r    r&   r   s    €€€r   r	   z3CanonicalConstraint._less_to_canonical.<locals>.funÅ   s   ø€ Ø  $§(¢(¨1¡+¤+°Ñ"2Ð2Ð2r   c                 ó2   •— ‰‰                      | ¦  «        fS r   rC   rc   s    €€r   r
   z3CanonicalConstraint._less_to_canonical.<locals>.jacÈ   s   ø€ Ø  $§(¢(¨1¡+¤+Ð-Ð-r   c                 ó0   •— ‰                      | |¦  «        S r   re   rf   s      €r   r   z4CanonicalConstraint._less_to_canonical.<locals>.hessË   s   ø€ Ø—y’y  FÑ+Ô+Ð+r   c                 óD   •— ‰‰                      | ¦  «        ‰         ‰z
  fS r   r6   )r%   r    r&   Ú	finite_ubr   s    €€€€r   r	   z3CanonicalConstraint._less_to_canonical.<locals>.funÒ   s"   ø€ Ø  $§(¢(¨1¡+¤+¨iÔ"8¸2Ñ"=Ð=Ð=r   c                 ó>   •— ‰‰                      | ¦  «        ‰         fS r   rC   )r%   r    r)   rm   s    €€€r   r
   z3CanonicalConstraint._less_to_canonical.<locals>.jacÕ   s   ø€ Ø  $§(¢(¨1¡+¤+¨iÔ"8Ð8Ð8r   c                 ól   •— t          j        ‰j        ¦  «        }||‰<   ‰                     | |¦  «        S r   ©r   ÚzerosÚmr   )r%   r+   r,   Úvr    rm   s       €€r   r   z4CanonicalConstraint._less_to_canonical.<locals>.hessØ   s/   ø€ Ý”H˜TœVÑ$Ô$�Ø%��)‘Ø—y’y  A‘”Ð&r   ©
r   r   r   r]   r0   r1   r   r\   r   Únonzero)r   r    r   r   r   r   r   r	   r
   r   r&   r)   rm   s    ``       @@@r   r   z&CanonicalConstraint._less_to_canonical·   sŒ  øøøøø€ å”H˜Q‘K”Kˆ	ØŒFˆØÔð 	)Ýœ q¨! fÑ-Ô-ˆIˆIåœ ! Q Ñ(Ô(ˆIà�œ’Kˆ	ØˆÝ”˜	Ñ"Ô"ˆåŒ6�)ÑÔð 	'ð3ð 3ð 3ð 3ð 3ð 3ð 3ð.ð .ð .ð .ð .ð .ð,ð ,ð ,ð ,ð ,ð ,õ œ
 9Ñ-Ô-¨aÔ0ˆIØ)¨)Ô4ˆMØ�I”ˆBð>ð >ð >ð >ð >ð >ð >ð >ð9ð 9ð 9ð 9ð 9ð 9ð 9ð'ð 'ð 'ð 'ð 'ð 'ð
 ˆs�4˜  c¨4°Ñ?Ô?Ð?r   c                 óä  ‡‡‡
‡‡— t          j        d¦  «        Š
‰j        }‰j        rt	          j        d|f¦  «        Šnt          j        d|f¦  «        Š‰t           j         k    Šd}t          j        ‰¦  «        }t          j        ‰¦  «        rˆˆ
ˆfd„}ˆˆfd„}ˆfd„}	n?t          j	        ‰¦  «        d         Š|‰         }‰‰         Šˆˆ
ˆˆfd„}ˆˆˆfd„}ˆˆfd„}	 | |||||	|¦  «        S )Nr   c                 ó8   •— ‰‰‰                      | ¦  «        z
  fS r   r6   )r%   r    r&   r   s    €€€r   r	   z6CanonicalConstraint._greater_to_canonical.<locals>.funí   s   ø€ Ø  " t§x¢x°¡{¤{Ñ"2Ð2Ð2r   c                 ó4   •— ‰‰                      | ¦  «         fS r   rC   rc   s    €€r   r
   z6CanonicalConstraint._greater_to_canonical.<locals>.jacð   s   ø€ Ø  4§8¢8¨A¡;¤; ,Ð.Ð.r   c                 ó2   •— ‰                      | | ¦  «        S r   re   rf   s      €r   r   z7CanonicalConstraint._greater_to_canonical.<locals>.hessó   s   ø€ Ø—y’y  V GÑ,Ô,Ð,r   c                 óD   •— ‰‰‰                      | ¦  «        ‰         z
  fS r   r6   )r%   r    r&   Ú	finite_lbr   s    €€€€r   r	   z6CanonicalConstraint._greater_to_canonical.<locals>.funú   s"   ø€ Ø  " t§x¢x°¡{¤{°9Ô'=Ñ"=Ð=Ð=r   c                 ó@   •— ‰‰                      | ¦  «        ‰          fS r   rC   )r%   r    r)   r{   s    €€€r   r
   z6CanonicalConstraint._greater_to_canonical.<locals>.jacý   s    ø€ Ø  4§8¢8¨A¡;¤;¨yÔ#9Ð"9Ð9Ð9r   c                 ón   •— t          j        ‰j        ¦  «        }| |‰<   ‰                     | |¦  «        S r   rp   )r%   r+   r,   rs   r    r{   s       €€r   r   z7CanonicalConstraint._greater_to_canonical.<locals>.hess   s1   ø€ Ý”H˜TœVÑ$Ô$�Ø &˜w��)‘Ø—y’y  A‘”Ð&r   rt   )r   r    r   r   r   r   r   r	   r
   r   r&   r)   r{   s    ``       @@@r   r   z)CanonicalConstraint._greater_to_canonicalß   sŽ  øøøøø€ å”H˜Q‘K”Kˆ	ØŒFˆØÔð 	)Ýœ q¨! fÑ-Ô-ˆIˆIåœ ! Q Ñ(Ô(ˆIà�"œ&˜’Lˆ	ØˆÝ”˜	Ñ"Ô"ˆåŒ6�)ÑÔð 	'ð3ð 3ð 3ð 3ð 3ð 3ð 3ð/ð /ð /ð /ð /ð /ð-ð -ð -ð -ð -ð -õ œ
 9Ñ-Ô-¨aÔ0ˆIØ)¨)Ô4ˆMØ�I”ˆBð>ð >ð >ð >ð >ð >ð >ð >ð:ð :ð :ð :ð :ð :ð :ð'ð 'ð 'ð 'ð 'ð 'ð
 ˆs�4˜  c¨4°Ñ?Ô?Ð?r   c           	      ó¢  ‡‡‡‡‡‡‡‡‡‡— ‰t           j         k    }‰t           j        k    }‰‰k    Š|| z  Š|| z  Š‰ | z  | z  Št          j        ‰¦  «        d         Št          j        ‰¦  «        d         Št          j        ‰¦  «        d         Št          j        ‰¦  «        d         Š‰j        d         Š‰j        d         Š‰j        d         Š‰‰z   d‰z  z   }‰j        d         }t          j        |‰         |‰         |‰         |‰         f¦  «        }ˆˆˆˆˆˆˆfd„}	ˆˆˆˆˆfd„}
ˆˆˆˆˆˆˆˆˆf	d„} | |||	|
||¦  «        S )Nr   é   c                 ó  •— ‰                      | ¦  «        }|‰         ‰‰         z
  }|‰         ‰‰         z
  }‰‰	         |‰	         z
  }|‰
         ‰‰
         z
  }‰‰
         |‰
         z
  }|t          j        ||||f¦  «        fS r   )r	   r   r=   )r%   ÚfÚeqÚleÚgeÚilÚigr    ÚequalÚgreaterÚintervalr   Úlessr   s          €€€€€€€r   r	   z7CanonicalConstraint._interval_to_canonical.<locals>.fun  sŠ   ø€ Ø—’˜‘”ˆAØ�5”˜B˜uœIÑ%ˆBØ�4”˜2˜dœ8Ñ#ˆBØ�G”˜q œzÑ)ˆBØ�8”˜r (œ|Ñ+ˆBØ�H”  (¤Ñ+ˆBØ•r”y " b¨"¨bÐ!1Ñ2Ô2Ð2Ð2r   c                 ó  •— ‰                      | ¦  «        }|‰	         }|‰         }|‰
          }|‰         }| }t          j        |¦  «        rt          j        ||||f¦  «        }nt	          j        ||||f¦  «        }||fS r   )r
   r0   ÚissparserD   r   )r%   ÚJr‚   rƒ   r„   r…   r†   Úineqr    r‡   rˆ   r‰   rŠ   s           €€€€€r   r
   z7CanonicalConstraint._interval_to_canonical.<locals>.jac(  sŠ   ø€ Ø—’˜‘”ˆAØ�5”ˆBØ�4”ˆBØ�G”*�ˆBØ�8”ˆBØ�ˆBÝŒ|˜A‰Œð 3Ý”z 2 r¨2¨rÐ"2Ñ3Ô3��å”y " b¨"¨bÐ!1Ñ2Ô2�Ø�t�8ˆOr   c                 ó  •	— d}|||‰z   …         }|‰z  }|||‰z   …         }|‰z  }|||‰z   …         }|‰z  }|||‰z   …         }t          j        ‰¦  «        }||‰
<   ||‰<   | |‰<   ||z
  |‰<   ‰	                     | |¦  «        S )Nr   )r   rG   r   )r%   r+   r,   Ún_startÚv_lÚv_gÚv_ilÚv_igrs   r    r‡   rˆ   r‰   r   rŠ   Ú	n_greaterÚ
n_intervalÚn_lesss            €€€€€€€€€r   r   z8CanonicalConstraint._interval_to_canonical.<locals>.hess5  sÁ   ø€ ØˆGØ˜ ¨6Ñ!1Ð1Ô2ˆCØ�vÑˆGØ˜ ¨9Ñ!4Ð4Ô5ˆCØ�yÑ ˆGØ˜' '¨JÑ"6Ð6Ô7ˆDØ�zÑ!ˆGØ˜' '¨JÑ"6Ð6Ô7ˆDå”˜bÑ!Ô!ˆAØˆAˆe‰HØˆAˆd‰GØ˜ˆAˆg‰JØ ™+ˆAˆh‰Kà—9’9˜Q ‘?”?Ð"r   )r   r   ru   rP   r=   )r   r    r   r   r   Úlb_infÚub_infr   r   r	   r
   r   r‡   rˆ   r‰   rŠ   r•   r–   r—   s    ```        @@@@@@@r   r   z*CanonicalConstraint._interval_to_canonical  sá  øøøøøøøøøø€ à�œ�w’ˆØ•r”v’ˆØ�b’ˆØ˜˜ÑˆØ˜F˜7Ñ"ˆØ�6˜V˜GÑ# v gÑ-ˆå”
˜5Ñ!Ô! !Ô$ˆÝŒz˜$ÑÔ Ô"ˆÝ”*˜WÑ%Ô% aÔ(ˆÝ”:˜hÑ'Ô'¨Ô*ˆØ”˜A”ˆØ”M !Ô$ˆ	Ø”^ AÔ&ˆ
Ø˜)Ñ# a¨*¡nÑ4ˆØŒ{˜1Œ~ˆåœ	 =°Ô#6Ø#0°Ô#9Ø#0°Ô#:Ø#0°Ô#:ð#<ñ =ô =ˆð
	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð$ ˆs�4˜  c¨4°Ñ?Ô?Ð?r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úclassmethodr!   r   r^   r   r   r   r   r$   r   r   r   r      s  € € € € € ð#ð #ðH+ð +ð +ð ðKð Kñ „[ðKð( ðFð Fñ „[ðFð* ð7@ð 7@ñ „[ð7@ðr ð@ð @ñ „[ð@ð> ð%@ð %@ñ „[ð%@ðN ð%@ð %@ñ „[ð%@ðN ð?@ð ?@ñ „[ð?@ð ?@ð ?@r   r   c                 ó4  — g }g }g }g }|D �]Î}|j         j        }|j         j        }	|j        \  }
}t	          j        |
|k    ¦  «        r.|                     ||
z
  ¦  «         |                     |	¦  «         Œkt	          j        |
t          j         k    ¦  «        rP|t          j        k     }|                     ||         ||         z
  ¦  «         |                     |	|         ¦  «         ŒÞt	          j        |t          j        k    ¦  «        rS|
t          j         k    }|                     |
|         ||         z
  ¦  «         |                     |	|          ¦  «         �ŒS|
t          j         k    }|t          j        k    }|
|k    }|| z  }|| z  }| | z  | z  }|                     ||         |
|         z
  ¦  «         |                     ||         ||         z
  ¦  «         |                     |
|         ||         z
  ¦  «         |                     ||         ||         z
  ¦  «         |                     |
|         ||         z
  ¦  «         |                     |	|         ¦  «         |                     |	|         ¦  «         |                     |	|          ¦  «         |                     |	|         ¦  «         |                     |	|          ¦  «         �ŒÐ|rt	          j        |¦  «        nt	          j	        d¦  «        }|rt	          j        |¦  «        nt	          j	        d¦  «        }|r#t          j        }t          j        d| f¦  «        }n"t          j        }t	          j	        d| f¦  «        }|r ||¦  «        n|}|r ||¦  «        n|}||||fS )a  Convert initial values of the constraints to the canonical format.

    The purpose to avoid one additional call to the constraints at the initial
    point. It takes saved values in `PreparedConstraint`, modifies and
    concatenates them to the canonical constraint format.
    r   )r	   r�   r�   r   r   r   rO   r   r=   r   r0   rD   r1   )r   Úprepared_constraintsr]   Úc_eqÚc_ineqÚJ_eqÚJ_ineqr9   r�   r�   r   r   rm   r{   r˜   r™   r‡   rŠ   rˆ   r‰   rD   r   s                         r   Ú initial_constraints_as_canonicalr¥   J  sS  € ð €DØ€FØ€DØ€Fà!ð !(ñ !(ˆØŒEŒGˆØŒEŒGˆØ”‰ˆˆBÝŒ6�"˜’(ÑÔð 	(Ø�KŠK˜˜B™ÑÔÐØ�KŠK˜‰NŒNˆNˆNÝŒV�B�2œ6˜'’MÑ"Ô"ð 	(Ø�RœVšˆIØ�MŠM˜!˜Iœ,¨¨I¬Ñ6Ñ7Ô7Ð7Ø�MŠM˜!˜Iœ,Ñ'Ô'Ð'Ð'ÝŒV�B�"œ&’LÑ!Ô!ð 	(Ø�bœf˜WšˆIØ�MŠM˜"˜Yœ-¨!¨I¬,Ñ6Ñ7Ô7Ð7Ø�MŠM˜1˜Yœ<˜-Ñ(Ô(Ð(Ñ(à�BœF˜7’]ˆFØ�2œ6’\ˆFØ˜"’HˆEØ˜V˜GÑ#ˆDØ ˜wÑ&ˆGØ�v  Ñ'¨6¨'Ñ1ˆHà�KŠK˜˜%œ 2 e¤9Ñ,Ñ-Ô-Ð-Ø�MŠM˜!˜Dœ' B t¤HÑ,Ñ-Ô-Ð-Ø�MŠM˜"˜Wœ+¨¨'¬
Ñ2Ñ3Ô3Ð3Ø�MŠM˜!˜Hœ+¨¨8¬Ñ4Ñ5Ô5Ð5Ø�MŠM˜"˜Xœ,¨¨8¬Ñ4Ñ5Ô5Ð5à�KŠK˜˜%œÑ!Ô!Ð!Ø�MŠM˜!˜Dœ'Ñ"Ô"Ð"Ø�MŠM˜1˜Wœ:˜+Ñ&Ô&Ð&Ø�MŠM˜!˜Hœ+Ñ&Ô&Ð&Ø�MŠM˜1˜Xœ;˜,Ñ'Ô'Ð'Ñ'à"Ð3�2Œ9�T‰?Œ?ˆ?­¬°©¬€DØ"(Ð9�RŒY�vÑÔÐ­b¬h°q©k¬k€Fàð !Ý”ˆÝ”˜q !˜fÑ%Ô%ˆˆå”ˆÝ”˜!˜Q˜Ñ Ô ˆàÐ*ˆ6ˆ6�$‰<Œ<ˆ< U€DØ%Ð0ˆVˆV�F‰^Œ^ˆ^¨5€Fà�˜˜vÐ%Ð%r   )Únumpyr   Úscipy.sparseÚsparser0   r   r¥   r$   r   r   ú<module>r©      su   ðØ Ð Ð Ð Ø Ð Ð Ð Ð Ð ðB@ð B@ð B@ð B@ð B@ñ B@ô B@ð B@ðJ
<&ð <&ð <&ð <&ð <&r   