Ë
     ™&fÑÓ  ã                   ó¾  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlmZmZ ddlmZ ddlmZ ddlmZ  G d„ de«      Z G d	„ d
e«      Z G d„ de«      Zd„ Z e«       \  ZZ G d„ de«      Z G d„ de«      Z G d„ de j<                  «      Ze dk(  r¹d dl!Z!ddl"m#Z# ddl$m$Z$  e%d«        e e#d«       e$«       d«      Z& e%e&jO                  «       «        e!jP                  «        e&jS                  «        e&jU                  «        e&jV                   e&jY                  dg«        e%e&j[                  «       «       e&j]                  «        yy)é    N)ÚPopenÚPIPEé   )Úgettext)Úngettext)Úinside_chrootc                   ó   — e Zd Zy)ÚCacheExceptionN©Ú__name__Ú
__module__Ú__qualname__© ó    ú>/usr/lib/python3/dist-packages/DistUpgrade/DistUpgradeCache.pyr
   r
   (   ó   „ Ør   r
   c                   ó   — e Zd Zy)ÚCacheExceptionLockingFailedNr   r   r   r   r   r   ,   r   r   r   c                   ó   — e Zd Zy)ÚCacheExceptionDpkgInterruptedNr   r   r   r   r   r   0   r   r   r   c                  ó0  — d} d}t        j                  «       d   }t        j                  d|z  «      D ]Œ  }|d|z  k(  r#|t         j                  j	                  |«      z  }Œ.|j                  d«      dk\  s(|j                  d«      dk\  s|j                  d«      dk\  rŒk| t         j                  j	                  |«      z  } ŒŽ | dk(  rt        j                  d«       d	} |dk(  rt        j                  d
«       d}| dz  } d}|dz  |kD  r|dz  }||z  }| |fS )zjestimate the amount of space used by the kernel and initramfs in /boot,
    including a safety margin
    r   é   z
/boot/*%s*z/boot/initrd.img-%sz
initrd.imgz.bakz.dpkg-z>estimate_kernel_initrd_size_in_boot() returned '0' for kernel?i   z>estimate_kernel_initrd_size_in_boot() returned '0' for initrd?i  ð
i   gš™™™™™©?)ÚosÚunameÚglobÚpathÚgetsizeÚfindÚloggingÚwarning)ÚkernelÚinitrdÚkverÚfÚinitrd_buffers        r   Ú#estimate_kernel_initrd_size_in_bootr&   4   s  € ð €FØ€FÜ�8‰8‹:�a‰=€DÜ�Y‰Y�| dÑ*Ó+ò 	)ˆØÐ%¨Ñ,Ò,Ø”b—g‘g—o‘o aÓ(Ñ(‰Fð �f‰f�\Ó" aÒ'¨1¯6©6°&«>¸QÒ+>Ø—‘˜Ó! QÒ&Øà”b—g‘g—o‘o aÓ(Ñ(‰Fð	)ð �‚{Ü�‰ØLô	NàˆØ�‚{Ü�‰ØLô	Nàˆà
ˆkÑ€Fà€MØ��}�}Ò$Ø ™ˆØ
ˆmÑ€FØ�&ˆ=Ðr   c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚFreeSpaceRequiredzÁ FreeSpaceRequired object:

    This exposes:
    - the total size required (size_total)
    - the dir that requires the space (dir)
    - the additional space that is needed (size_needed)
    c                 ó.   — || _         || _        || _        y ©N)Ú
size_totalÚdirÚsize_needed)Úselfr+   r,   r-   s       r   Ú__init__zFreeSpaceRequired.__init__`   s   € Ø$ˆŒØˆŒØ&ˆÕr   c                 óT   — d| j                   ›d| j                  ›d| j                  ›�S )NzFreeSpaceRequired Object: Dir: z size_total: z size_needed: )r,   r+   r-   ©r.   s    r   Ú__str__zFreeSpaceRequired.__str__d   s1   � ØUY×U]ÓU]Ð_c×_nÓ_nÐpt÷  qAò  qAð  Bð  	Br   N)r   r   r   Ú__doc__r/   r2   r   r   r   r(   r(   X   s   „ ñò'óBr   r(   c                   ó   — e Zd ZdZd„ Zy)ÚNotEnoughFreeSpaceErrorzI
    Exception if there is not enough free space for this operation

    c                 ó   — || _         y r*   )Úfree_space_required_list)r.   r7   s     r   r/   z NotEnoughFreeSpaceError.__init__m   s
   € Ø(@ˆÕ%r   N©r   r   r   r3   r/   r   r   r   r5   r5   h   s   „ ñóAr   r5   c                   ó¼  — e Zd ZdZdZd:d„Zd„ Zed„ «       Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zd„ Zd„ Zd;d„Zd„ Zd<d„Zd<d„Zd<d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd=d„Z d=d„Z!d=d „Z"d=d!„Z#d"„ Z$d#„ Z%d$„ Z&d%„ Z'd&„ Z(d'„ Z)d(„ Z*d)„ Z+d*„ Z,ed+„ «       Z-d,„ Z.d-„ Z/ed.„ «       Z0d/„ Z1d0„ Z2d1„ Z3d2„ Z4ed3„ «       Z5d4„ Z6d5„ Z7d6„ Z8d7„ Z9d8„ Z:d>d9„Z;y)?ÚMyCacher   é   Nc                 óˆ  — g | _         g | _        || _        || _        d| _        d| _        || _        | j                  j                  dd«      | _        d| _	        |r,	 t        j                  «        | j                  «        d| _        t"        j$                  j'                  | |«       |j)                  dd«      | _        | j                  j-                  | d«      | _        t1        dd	gt2        d¬
«      j5                  «       d   j7                  «       | _        | j;                  «        |j=                  dd«      dk(  r2dt>        j@                  vr t        j                  jC                  dd«       t        j                  jC                  dd«       y # t        $ r(}dt        |«      v rt        |«      ‚t!        |«      ‚d }~ww xY w)NFÚDistroÚMetaPkgséÿÿÿÿTzdpkg --configure -aÚRemovalDenylistFiler   z-r)ÚstdoutÚuniversal_newlinesr   ÚSourcesÚFromÚhardyÚRELEASE_UPGRADE_NO_RECOMMENDSzAPT::Install-RecommendsÚtruez"APT::AutoRemove::SuggestsImportantÚfalse)"Ú
to_installÚ	to_removeÚviewÚquirksÚlockÚpartialUpgradeÚconfigÚgetlistÚmetapkgsÚ
_listsLockÚapt_pkgÚpkgsystem_lockÚlock_lists_dirÚSystemErrorÚstrr   r   ÚaptÚCacher/   ÚgetListFromFileÚremoval_denylistÚ_get_linux_metapackageÚlinux_metapackager   r   ÚcommunicateÚstripr   Ú_initAptLogÚgetr   ÚenvironÚset)r.   rO   rK   rL   ÚprogressrM   Úes          r   r/   zMyCache.__init__v   s|  € ØˆŒØˆŒØˆŒ	ØˆŒØˆŒ	Ø#ˆÔØˆŒØŸ™×+Ñ+¨H°jÓAˆŒàˆŒÙð5Ü×&Ñ&Ô(Ø×#Ñ#Ô%Ø �”	ô 	�	‰	×Ñ˜4 Ô*à &× 6Ñ 6°xÐAVÓ WˆÔà!%§¡×!CÑ!CÀDÈ%Ó!PˆÔÜ˜G T˜?´4Ø.2ô4ß4?±K³MÀ!ñEßEJÁUÃWð 	Œ
à×ÑÔð �J‰J�y &Ó)¨WÒ4Ø/´2·:±:Ñ=Ü�N‰N×ÑÐ8¸&ÔAô 	�‰×ÑÐ?ÀÕIøô+ ò 5à(¬C°«FÑ2Ü7¸Ó:Ð:Ü1°!Ó4Ð4ûð	5ús   Á+F Æ	GÆ#F<Æ<Gc                 ó¢   — | D ]J  }|j                   rŒ|j                  j                  t        j                  k(  sŒ8|j                  dd¬«       ŒL y)z! honor the dselect install state F)Ú	auto_instÚauto_fixN)Úis_installedÚ_pkgÚselected_staterS   ÚSELSTATE_INSTALLÚmark_install©r.   Úpkgs     r   Ú_apply_dselect_upgradezMyCache._apply_dselect_upgrade�   sJ   € àò 	BˆCØ×ÒØØ�x‰x×&Ñ&¬'×*BÑ*BÓBà× Ñ ¨5¸5Ð ÕAñ	Br   c                 ó2  — t        «       }| D ]‡  }|j                  r|j                  j                  rŒ&|j                  j                  | j
                  k(  s$|j                  j                  | j                  k(  sŒm|j                  |j                  «       Œ‰ |S )zB return the packages not downloadable packages in reqreinst state )	rc   Ú	candidateÚdownloadablerj   Ú
inst_stateÚ	ReInstReqÚHoldReInstReqÚaddÚname)r.   Ú	reqreinstro   s      r   Úreq_reinstall_pkgszMyCache.req_reinstall_pkgs¦   ss   € ô “Eˆ	Øò 	(ˆCØ—]’]¨#¯-©-×*DÓ*Dà—‘×$Ñ$¨¯©Ò6Ø—‘×$Ñ$¨×(:Ñ(:Ó:Ø—‘˜cŸh™hÕ'ð	(ð Ðr   c                 óx  — | j                   }t        |«      dkD  r t        ddt        |«      «      }t        ddt        |«      «      dj                  |«      z  }|j	                  ||«      rP| j                  «        g d¢t        |«      z   }|j                  «       j                  |«       | j                  «        yy	)
z/ check for reqreinst state and offer to fix it r   zRemove package in bad statezRemove packages in bad statez¡The package '%s' is in an inconsistent state and needs to be reinstalled, but no archive can be found for it. Do you want to remove this package now to continue?z§The packages '%s' are in an inconsistent state and need to be reinstalled, but no archives can be found for them. Do you want to remove these packages now to continue?ú, )z/usr/bin/dpkgz--removez--force-remove-reinstreqTF)
rz   Úlenr   ÚjoinÚaskYesNoQuestionÚrelease_lockÚlistÚgetTerminalÚcallÚget_lock)r.   rK   ry   ÚheaderÚsummaryÚcmds         r   Úfix_req_reinstzMyCache.fix_req_reinst²   s¸   € à×+Ñ+ˆ	Üˆy‹>˜AÒÜÐ;Ø<Ü! )›nó.ˆFô ð  2ð
 +ô
  # 9›~ó
/ð 26·±¸9Ó1Eñ
FˆGð ×$Ñ$ V¨WÔ5Ø×!Ñ!Ô#ÚOÔRVÐW`ÓRaÑa�Ø× Ñ Ó"×'Ñ'¨Ô,Ø—‘”ØØr   c                 ó^  — | j                   j                  ddd«      }t        j                  j	                  |«      st        j
                  |«       t        j                   j                  d|«       t        j                   j                  dd«       t        j                  t        j                  j                  |d«      t        j                  t        j                  z  t        j                  z  d«      | _        t        j                  j                  «       }d	|z  }t        j                   | j                  |j#                  d
«      «       t        j                   j                  dd«       t        j                   j                  dd«       t        j                   j                  dd«       y)z init logging, create log fileÚFilesÚLogDirz/var/log/dist-upgradezDir::LogzDir::Log::Terminalzapt-term.logzapt.logi¤  zLog time: %s
zutf-8zDebug::pkgProblemResolverrG   zDebug::pkgDepCache::MarkerzDebug::pkgDepCache::AutoInstallN)rO   ÚgetWithDefaultr   r   ÚexistsÚmakedirsrS   rc   Úopenr~   ÚO_RDWRÚO_CREATÚO_APPENDÚlogfdÚdatetimeÚnowÚwriteÚencode)r.   Úlogdirr•   r…   s       r   r`   zMyCache._initAptLogÍ   s  € à—‘×+Ñ+¨G°XØ,CóEˆä�w‰w�~‰~˜fÔ%Ü�K‰K˜ÔÜ�‰×Ñ˜: vÔ.Ü�‰×ÑÐ/°Ô@Ü—W‘WœRŸW™WŸ\™\¨&°)Ó<ÜŸY™Y¬¯©Ñ3´b·k±kÑAÀ5óJˆŒ
ä×Ñ×#Ñ#Ó%ˆØ! CÑ'ˆÜ
�‰�—‘˜VŸ]™]¨7Ó3Ô4ô 	�‰×ÑÐ6¸Ô?Ü�‰×ÑÐ7¸Ô@Ü�‰×ÑÐ<¸fÕEr   c                 ó€  — t        | d«      r>t        j                  | j                  «       t        j                  | j                  «       t        j
                  d«      | _        t        j
                  d«      | _        t        j                  | j                  d«       t        j                  | j                  d«       y )NÚ
old_stdoutr   r   )Úhasattrr   Úcloserš   Ú
old_stderrÚdupÚdup2r“   r1   s    r   Ú_startAptResolverLogzMyCache._startAptResolverLogß   sn   € Ü�4˜Ô&Ü�H‰H�T—_‘_Ô%Ü�H‰H�T—_‘_Ô%ÜŸ&™& ›)ˆŒÜŸ&™& ›)ˆŒÜ
�‰�—
‘
˜AÔÜ
�‰�—
‘
˜AÕr   c                 óØ   — t        j                  d«       t        j                  d«       t        j                  | j                  d«       t        j                  | j                  d«       y )Nr   r   )r   ÚfsyncrŸ   rš   r�   r1   s    r   Ú_stopAptResolverLogzMyCache._stopAptResolverLogç   s<   € Ü
�‰�ŒÜ
�‰�ŒÜ
�‰�—‘ Ô#Ü
�‰�—‘ Õ#r   c                 ó   ‡ — ˆ fd„}|S )z3 decorator to ensure that the apt output is logged c                  ód   •— | d   j                  «         ‰| i |¤Ž}| d   j                  «        |S ©Nr   )r    r£   )ÚargsÚkwargsÚresr$   s      €r   Úwrapperz(MyCache.withResolverLog.<locals>.wrapperñ   s7   ø€ Ø�‰G×(Ñ(Ô*Ù�TÐ$˜VÑ$ˆCØ�‰G×'Ñ'Ô)ØˆJr   r   )r$   rª   s   ` r   ÚwithResolverLogzMyCache.withResolverLogï   s   ø€ ô	ð
 ˆr   c                 óÎ   — t        j                  | j                  «      }t        j                  «       }|j	                  || j
                  | j                  «       |j                  S )z< get the size of the packages that are required to download )rS   ÚPackageManagerÚ	_depcacheÚAcquireÚget_archivesÚ_listÚ_recordsÚfetch_needed)r.   ÚpmÚfetchers      r   Úrequired_downloadzMyCache.required_downloadù   sH   € ô ×#Ñ# D§N¡NÓ3ˆÜ—/‘/Ó#ˆØ
�‰˜ §¡¨T¯]©]Ô;Ø×#Ñ#Ð#r   c                 ó.   — | j                   j                  S )z9 get the size of the additional required space on the fs )r®   Úusr_sizer1   s    r   Úadditional_required_spacez!MyCache.additional_required_space   s   € ð �~‰~×&Ñ&Ð&r   c                 óN   — 	 | j                   j                  S # t        $ r Y yw xY w)z< get the extra size needed to install the snap replacements r   )rL   Úextra_snap_spaceÚAttributeErrorr1   s    r   Ú#additional_required_space_for_snapsz+MyCache.additional_required_space_for_snaps  s+   € ð
	ð —;‘;×/Ñ/Ð/øÜò 	Ùð	ús   ‚ ˜	$£$c                 ó4   — | j                   j                  dkD  S )z is the cache broken r   )r®   Úbroken_countr1   s    r   Ú	is_brokenzMyCache.is_broken  s   € ð �~‰~×*Ñ*¨QÑ.Ð.r   c                 óº   — t         j                  j                  d«      dz   }t        j                  |«      | _        | j                  dk  rd|z  }t        |«      ‚y )NzDir::State::ListsrM   r   zCan not lock '%s' )rS   rO   Úfind_dirr„   rR   r   )r.   rx   re   s      r   rU   zMyCache.lock_lists_dir  sT   € Ü�~‰~×&Ñ&Ð':Ó;¸fÑDˆÜ!×*Ñ*¨4Ó0ˆŒØ�?‰?˜QÒØ$ tÑ+ˆAÜ-¨aÓ0Ð0ð r   c                 óp   — | j                   dkD  r't        j                  | j                   «       d| _         y y )Nr   r?   )rR   r   rœ   r1   s    r   Úunlock_lists_dirzMyCache.unlock_lists_dir  s*   € Ø�?‰?˜QÒÜ�H‰H�T—_‘_Ô%Ø ˆD�Oð r   c                 óè   — | j                  «        t        j                  j                  | |«      }| j	                  «        |r |j
                  rt        t        d«      «      ‚|dk(  rt        d«      ‚y)zf
        our own update implementation is required because we keep the lists
        dir lock
        zThe server may be overloadedFzAapt.cache.update() returned False, but did not raise exception?!?N)rÄ   rX   rY   ÚupdaterU   Úrelease_file_download_errorÚIOErrorÚ_)r.   Ú	fprogressr©   s      r   rÆ   zMyCache.update"  sh   € ð
 	×ÑÔÜ�i‰i×Ñ˜t YÓ/ˆØ×ÑÔÙ˜×>Ò>ô œ!Ð:Ó;Ó<Ð<Ø�%Š<ÜÐ]Ó^Ð^ð r   c                 ó¨   — t        j                  d«       | j                  r| j                  «        t        j
                  j                  | ||«       y )Nzcache.commit())r   ÚinforM   r€   rX   rY   Úcommit)r.   rÊ   Ú	iprogresss      r   rÍ   zMyCache.commit1  s8   € Ü�‰Ð%Ô&Ø�9Š9Ø×ÑÔÜ�	‰	×Ñ˜˜y¨)Õ4r   c                 ó²   — | j                   r	 t        j                  «        d| _         y y # t        $ r"}t	        j
                  d|z  «       Y d }~y d }~ww xY w)NFzfailed to SystemUnLock() (%s) )rM   rS   Úpkgsystem_unlockrV   r   Údebug©r.   ÚpkgSystemOnlyre   s      r   r€   zMyCache.release_lock7  sP   € Ø�9Š9ðDÜ×(Ñ(Ô*Ø!�•	ð øô ò DÜ—‘Ð>ÀÑB×CÑCûðDúó   Ž+ «	A´AÁAc                 ó²   — | j                   s	 t        j                  «        d| _         y y # t        $ r"}t	        j
                  d|z  «       Y d }~y d }~ww xY w)NTzfailed to SystemLock() (%s) )rM   rS   rT   rV   r   rÑ   rÒ   s      r   r„   zMyCache.get_lock?  sP   € Ø�yŠyðBÜ×&Ñ&Ô(Ø �•	ð øô ò BÜ—‘Ð<¸qÑ@×AÑAûðBúrÔ   c                 óî   — |r&| j                   j                  |j                  «      }n|j                  j                  }|dk(  r't	        j
                  d|j                  ›d|›d�«       y|j                  S )z* check if the given pkg can be downloaded Nzno version information for 'z' (useCandidate=ú)F)r®   Úget_candidate_verrj   Úcurrent_verr   r    rx   rs   )r.   ro   ÚuseCandidateÚvers       r   rs   zMyCache.downloadableG  s[   € áØ—.‘.×2Ñ2°3·8±8Ó<‰Cà—(‘(×&Ñ&ˆCØ�$Š;Ü�OŠOÐSV×S[ÓS[Ò]iÐjÔkØØ×ÑÐr   c                 óh   — |j                   xr% | j                  j                  |j                  «      S )z$ check if the pkg is auto-removable )ri   r®   Ú
is_garbagerj   rn   s     r   Úpkg_auto_removablezMyCache.pkg_auto_removableR  s+   € à× Ñ ò 4Ø—‘×)Ñ)¨#¯(©(Ó3ð	5r   c                 ó6   — | j                   j                  «       S )z^ try to fix broken dependencies on the system, may throw
            SystemError when it can't)r®   Ú
fix_brokenr1   s    r   rà   zMyCache.fix_brokenW  s   € ð �~‰~×(Ñ(Ó*Ð*r   c                 ó(  — g | _         g | _        | j                  «       D ]q  }|j                  s|j                  r%| j                   j                  |j                  «       |j                  sŒM| j                  j                  |j                  «       Œs y)z* create a snapshot of the current changes N)rI   rJ   Úget_changesÚmarked_installÚmarked_upgradeÚappendrx   Úmarked_deletern   s     r   Úcreate_snapshotzMyCache.create_snapshot\  sn   € àˆŒØˆŒØ×#Ñ#Ó%ò 	0ˆCØ×!Ò! S×%7Ò%7Ø—‘×&Ñ& s§x¡xÔ0Ø× Ó Ø—‘×%Ñ% c§h¡hÕ/ñ		0r   c                 ó8   — | j                   j                  «        y r*   )r®   Úinitr1   s    r   ÚclearzMyCache.clearf  s   € Ø�‰×ÑÕr   c                 ó  — t        j                  | j                  «      }| | j                  «        | j                  D ]  }| |   }|j                  «        Œ | j                  D ]  }| |   }|j                  dd¬«       Œ y)z restore a snapshot F)rh   rg   N)rS   ÚActionGroupr®   rê   rJ   Úmark_deleterI   rm   )r.   Úactiongrouprx   ro   s       r   Úrestore_snapshotzMyCache.restore_snapshoti  s{   € ä×)Ñ)¨$¯.©.Ó9ˆñ 	Ø�
‰
ŒØ—N‘Nò 	ˆDØ�t‘*ˆCØ�O‰OÕð	ð —O‘Oò 	>ˆDØ�t‘*ˆCØ×Ñ e°uÐÕ=ñ	>r   c                 ó|  — | j                   j                  dd«      }|D ]†  }|| v r)| |   j                  rt        j                  d|z  «        yd}| j                   j                  |d«      D ]  }||| v xr | |   j                  z  }Œ |sŒnt        j                  d|z  «        y t        j                  d«       y)	ac  
        This checks if we run on a desktop or a server install.

        A server install has more freedoms, for a desktop install
        we force a desktop meta package to be install on the upgrade.

        We look for a installed desktop meta pkg and for key
        dependencies, if none of those are installed we assume
        server mode
        r=   r>   z@need_server_mode(): run in 'desktop' mode, (because of pkg '%s')FTÚKeyDependencieszIneed_server_mode(): run in 'desktop' mode, (because of key deps for '%s')z[need_server_mode(): can not find a desktop meta package or key deps, running in server mode)rO   rP   ri   r   rÑ   )r.   rQ   ÚkeyÚ
deps_foundro   s        r   Úneed_server_modezMyCache.need_server_modew  sÄ   € ð —;‘;×&Ñ& x°Ó<ˆØò 	ˆCà�d‰{˜t C™y×5Ò5Ü—‘Ð`ÐcfÑfÔgÙð ˆJØ—{‘{×*Ñ*¨3Ð0AÓBò E�Ø˜c T˜kÒD¨d°3©i×.DÑ.DÑD‘
ðEâÜ—‘ÐiÐloÑoÔpÙð	ô 	�‰ÐsÔtØr   c                 óÐ   — | j                   r'	 t        j                  d«       | j                  «        yy# t        $ r' |j                  t        d«      t        d«      «       Y yw xY w)zY check if the cache is ok and if the required metapkgs
            are installed
        z$Have broken pkgs, trying to fix themzBroken packagesz’Your system contains broken packages that couldn't be fixed with this software. Please fix them first using synaptic or apt-get before proceeding.FT)rÀ   r   rÑ   rà   rV   ÚerrorrÉ   )r.   rK   s     r   Úcoherence_checkzMyCache.coherence_check•  sf   € ð �>Š>ð
Ü—‘ÐDÔEØ—‘Ô!ñ øô ò Ø—
‘
œ1Ð.Ó/Ü!"ð $@ó "AôBñ ðús   Ž%5 µ-A%Á$A%c                 óÜ   — t        j                  d|›d|›d�«       || v rL | |   j                  di |¤Ž | |   j                  s(| |   j                  st        j
                  d|z  «       yy)NzInstalling 'ú' (r×   z Installing/upgrading '%s' failedFTr   )r   rÑ   rm   rã   rä   rö   ©r.   ro   ÚreasonÚflagss       r   rm   zMyCache.mark_install§  sb   € Ü�Š²²VÐ<Ô=Ø�$‰;Ø"ˆD�‰I×"Ñ"Ñ+ UÒ+Ø˜‘I×,Ò,°°S±	×0HÒ0HÜ—‘Ð@À3ÑFÔGàØr   c                 óØ   — t        j                  d|›d|›d�«       || v rJ| |   j                  r;| |   j                  «        | |   j                  st        j
                  d|z  «       yy)NzUpgrading 'rù   r×   zUpgrading '%s' failedFT)r   rÑ   ri   Úmark_upgraderä   rö   ©r.   ro   rû   s      r   rþ   zMyCache.mark_upgrade±  s[   € Ü�Šªs²FÐ;Ô<Ø�$‰;˜4 ™9×1Ò1Ø�‰I×"Ñ"Ô$Ø˜‘9×+Ò+Ü—‘Ð5¸Ñ;Ô<ØØr   c                 óp   — t        j                  d|›d|›d�«       || v r | |   j                  di |¤Ž y y )Nz
Removing 'rù   r×   r   )r   rÑ   rí   rú   s       r   Úmark_removezMyCache.mark_removeº  s6   € Ü�Šªc²6Ð:Ô;Ø�$‰;Ø!ˆD�‰I×!Ñ!Ñ* EÓ*ð r   c                 ó˜   — t        j                  d|›d|›d�«       || v r*| j                  j                  | |   j                  d«       y y )Nz	Purging 'rù   r×   T)r   rÑ   r®   rí   rj   rÿ   s      r   Ú
mark_purgezMyCache.mark_purge¿  s;   € Ü�ŠªS²&Ð9Ô:Ø�$‰;Ø�N‰N×&Ñ& t¨C¡y§~¡~°tÕ<ð r   c                 ór   — || v r3| |   j                   r#| |   j                  r| j                  ||«       y y y y r*   )ri   ræ   rm   )r.   Úpkgnamerû   s      r   Ú_keep_installedzMyCache._keep_installedÄ  sB   € Ø�t‰OØ�W‘×*Ò*Ø�W‘×+Ò+Ø×Ñ˜g vÕ.ð ,ð +ð r   c           	      ób  — | j                   j                  dd«      D ]  }| j                  |d«       Œ | j                  D ]\  }|| v sŒ| |   j                  s| |   j
                  sŒ'| j                   j                  |d«      D ]  }| j                  |d|z  «       Œ Œ^ | j                   j                  dd«      dk(  �rqt        j                  d«       | j                   j                  dd	«      D ]s  }| D ]l  }|j                  sŒ|j                  j                  sŒ'|j                  sŒ4|j                  j                  |k(  sŒN| j                  |j                  d
|z  «       Œn Œu | j                  D ]º  }|| v sŒ| |   j                  s| |   j
                  sŒ'| j                   j                  |d	«      D ]u  }| D ]n  }|j                  sŒ|j                  j                  sŒ'|j                  sŒ4|j                  j                  |k(  sŒN| j                  |j                  |›d|›�«       Œp Œw Œ¼ yy)z[ run after the dist-upgrade to ensure that certain
            packages are kept installed r=   ÚKeepInstalledPkgszDistro KeepInstalledPkgs rulez%s KeepInstalledPkgs ruleÚOptionsÚwithNetworkÚTruez"Running KeepInstalledSection rulesÚKeepInstalledSectionz$Distro KeepInstalledSection rule: %sz KeepInstalledSection rule: N)rO   rP   r  rQ   ri   rã   ra   r   rÑ   rr   rs   ræ   Úsectionrx   )r.   r  rò   r  ro   s        r   Úkeep_installed_rulezMyCache.keep_installed_ruleÊ  s  € ð —{‘{×*Ñ*¨8Ð5HÓIò 	KˆGØ× Ñ  Ð*IÕJð	Kð —=‘=ò 	UˆCØ�dŠ{  S¡	× 6Ò 6Ø $ S¡	× 8Ó 8Ø#Ÿ{™{×2Ñ2°3Ð8KÓLò U�GØ×(Ñ(¨Ð2MÐPSÑ2SÕTñUð	Uð �;‰;�?‰?˜9 mÓ4¸Ó>Ü�M‰MÐ>Ô?àŸ;™;×.Ñ.¨xÐ9OÓPò i�Øò i�CØŸ›¨#¯-©-×*DÓ*DØ×-Ó-ØŸM™M×1Ñ1°WÓ<Ø×,Ñ,¨S¯X©XÐ7]Ð`gÑ7gÕhñ	iðið —}‘}ò t�Ø˜$’; D¨¡I×$:Ò$:Ø$(¨¡I×$<Ó$<Ø#'§;¡;×#6Ñ#6°sÐ<RÓ#Sò t˜Ø#'ò t˜CØ #§£°#·-±-×2LÓ2LØ$'×$5Ó$5Ø #§¡× 5Ñ 5¸Ó @Ø $× 4Ñ 4°S·X±XÒehÑjqÐ?rÕ sñ	tñtñtð ?r   c                 óT   — | j                   s| j                  j                  d«       yy)z. run before the upgrade was done in the cache ÚPreDistUpgradeCacheN)rN   rL   Úrunr1   s    r   Úpre_upgrade_rulezMyCache.pre_upgrade_ruleí  s#   € ð ×"Ò"Ø�K‰K�O‰OÐ1Õ2ð #r   c           
      ó   — d| j                   fd| j                  fd| j                  fd| j                  ffD ]�  \  }}| j                  j                  dd|z  «      D ]  } ||d|z  «       Œ | j                  D ]Y  }|| v sŒ| |   j                  s| |   j                  sŒ'| j                  j                  |d|z  «      D ]  } |||›d|›d	�«       Œ Œ[ ŒŸ | j                  s| j                  j                  d
«       yy)z- run after the upgrade was done in the cache ÚInstallÚUpgradeÚRemoveÚPurger=   zPostUpgrade%szDistro PostUpgrade%s rulez PostUpgradez ruleÚPostDistUpgradeCacheN)rm   rþ   r  r  rO   rP   rQ   ri   rã   rN   rL   r  )r.   ÚruleÚactionro   rò   s        r   Úpost_upgrade_rulezMyCache.post_upgrade_ruleó  s  € à )¨4×+<Ñ+<Ð=Ø )¨4×+<Ñ+<Ð=Ø (¨$×*:Ñ*:Ð;Ø '¨¯©Ð9ð;ò 	K‰NˆT�6ð
 —{‘{×*Ñ*¨8°_ÀtÑ5KÓLò @�Ù�sÐ7¸$Ñ>Õ?ð@à—}‘}ò K�Ø˜$’; D¨¡I×$:Ò$:Ø$(¨¡I×$<Ó$<Ø#Ÿ{™{×2Ñ2°3¸È$Ñ8NÓOò K˜Ù˜sºsÂDÐ$IÕJñKñKð	Kð ×"Ò"Ø�K‰K�O‰OÐ2Õ3ð #r   c                 óÐ  — t        j                  d«       	 ddlm} 	  |d¬«      }|j                  D ]*  }|| v sŒ| |   j                  sŒ| j                  |d	«        n t        j                  d
«       y|j                  «       }t        j                  d|z  «       || vrt        j                  d|z  «       y| |   j                  s;| |   j                  s,| |   j                  «        t        j                  d|z  «       yy# t        t
        f$ r"}t        j                  d|z  «       Y d}~yd}~ww xY w# t         $ r"}t        j                  d|z  «       Y d}~yd}~ww xY w)zR
        this checks for nvidia hardware and checks what driver is needed
        znvidiaUpdate()r   )ÚNvidiaDetectionz%NvidiaDetector can not be imported %sNFz./ubuntu-drivers-obsolete.pkgs)Úobsoletezold nvidia driverz1no old nvidia driver installed, installing no newznv.selectDriver() returned '%s'zno '%s' foundz,installing %s as suggested by NvidiaDetectorTz$NvidiaDetection returned a error: %s)r   rÑ   ÚNvidiaDetector.nvidiadetectorr  ÚImportErrorÚSyntaxErrorrö   ÚoldPackagesri   r  rÌ   ÚselectDriverr    rã   rä   rm   Ú	Exception)r.   r  re   ÚnvÚ	oldDriverÚdrivers         r   ÚcheckForNvidiazMyCache.checkForNvidia  sP  € ô 	�‰Ð&Ô'ð	ÝEð	Fñ !Ð*JÔKˆBð  Ÿ^™^ò �	Ø Ò$¨¨i©×)EÓ)EØ×$Ñ$ YÐ0CÔDÙðô
 —‘ÐPÔQØà—_‘_Ó&ˆFÜ�M‰MÐ;¸fÑDÔEØ˜T‘>Ü—‘ °&Ñ 8Ô9ØØ˜‘L×/Ò/°4¸±<×3NÒ3NØ�V‘×)Ñ)Ô+Ü—‘ÐKÈfÑTÔUØð øô= œ[Ð)ò 	ô �M‰MÐAÀAÑEÔFÜûð		ûô8 ò 	FÜ�M‰MÐ@À1ÑD×EÐEØûð	FúsG   —D žD: »D: Á*D: Á6AD: Â;A	D: ÄD7ÄD2Ä2D7Ä:	E%ÅE Å E%c                 óf   — | D ],  }|j                   j                  d«      sŒ|j                  sŒ, y y)Nzlinux-headers-TF)rx   Ú
startswithri   rn   s     r   Ú_has_kernel_headers_installedz%MyCache._has_kernel_headers_installed/  s5   € Øò 	ˆCØ—‘×#Ñ#Ð$4Õ5Ø× Ó Ùð	ð r   c                 ó\  — t        j                  d| j                  z  «       	 | j                  j                  d«      \  }}}t        dgt        ¬«      j                  «       d   }d	|v rt        j                  d
«       y# t        $ r"}t        j
                  d|z  «       Y d}~yd}~ww xY w)zd check for the running kernel and try to ensure that we have
            an updated version
        zKernel uname: '%s' ú-z/Can't parse kernel uname: '%s' (self compiled?)NFÚdmesg)rA   r   s   WARNING: NR_CPUS limitzUP kernel on SMP system!?!T)	r   rÑ   r   Úsplitr$  r    r   r   r^   )r.   ÚversionÚbuildÚflavourre   r.  s         r   ÚcheckForKernelzMyCache.checkForKernel6  s˜   € ô 	�‰Ð+¨d¯j©jÑ8Ô9ð	Ø(,¯
©
×(8Ñ(8¸Ó(=Ñ%ˆW�e˜Wô
 �w�i¬Ô-×9Ñ9Ó;¸AÑ>ˆØ$¨Ñ-Ü�M‰MÐ6Ô7Øøô ò 	Ü�O‰OÐMÐPQÑQÔRÜûð	ús   ¤B  Â 	B+Â	B&Â&B+c                 ó<  — d}| j                   j                  dd«      }| D ]ù  }|j                  j                  j	                  |j
                  «      }|r2|j                  dk(  r#t        j                  d|j                  z  «       Œf|j                  sŒs|j                  j                  sŒŠ|j                  rŒ—|j                  rŒ¤|j                  |vsŒ³d|j                  vsŒÂ|j                  j                  |v sŒÛ| j                  |j                  d|z  «       Œû y )N)Úrequiredr=   ÚRemoveEssentialOkr   zPackage %s has no priority setú:z;priority in required set '%s' but not scheduled for install)rO   rP   Ú_pcacher®   rØ   rj   Úpriorityr   rö   rx   rr   rs   ri   rã   rm   )r.   ÚneedÚremoveEssentialOkro   rÛ   s        r   ÚcheckPriorityzMyCache.checkPriorityF  sÞ   € àˆà ŸK™K×/Ñ/°Ð:MÓNÐàò 	rˆCà—+‘+×'Ñ'×9Ñ9¸#¿(¹(ÓCˆCÙ�s—|‘| qÒ(Ü—‘Ð>ÀÇÁÑIÔJØØ—“ #§-¡-×"<Ó"<Ø×%Ó%¨×);Ó);Ø—H‘HÐ 1Ò1à˜3Ÿ8™8’OØ—‘×&Ñ&¨$Ò.Ø×!Ñ! #§(¡(Ð,iÐlpÑ,pÕqñ	rr   c                 ó  — d}|j                  «       rS|dz  dk(  r|j                  «        |j                  «        t        j                  d«       |dz  }|j                  «       rŒS|j                  d¬«       |j                  «        y )Nr   é   g{®Gáz”?r   T)Úfinished)ÚlockedÚpulseProgressÚprocessEventsÚtimeÚsleep)r.   rK   rM   Úis       r   Ú	updateGUIzMyCache.updateGUI[  sr   € ØˆØ�k‰kŒmØ�2‰v˜Š{Ø×"Ñ"Ô$Ø×ÑÔ Ü�J‰J�tÔØ�‰FˆAð �k‰k�mð 	×Ñ DÐÔ)Ø×ÑÕr   c                 óâ
  — t        j                  «       }|j                  «        t        j                  | j                  | j
                  |f¬«      }|j                  «        	 | j                  «        | j                  d«       | j                  «        | j                  «        t        «       rt        j                  d«       n| j                  «        | j                  «        | j!                  «        | j#                  |«       |s| j%                  |«       | j'                  «        | j(                  r-t+        t-        d«      dj/                  d„ | D «       «      z  «      ‚	 |j=                  «        |j/                  «        g }	g }
| j?                  «       D �]=  }|j@                  rŒ|jB                  rÔ|
jE                  |jF                  «       |jH                  jJ                  D ]Ÿ  }tM        jN                  |jP                  |jR                  jT                  «      dk  sŒ;|jV                  D ]V  \  }}|jX                  jZ                  j]                  |«      }|sŒ.|j^                  rŒ;|	jE                  |jF                  «        ŒŸ Œ¡ Œñ|j`                  jb                  }d}|D ]  }||jd                  z  }Œ |r�Œ#|	jE                  |jF                  «       �Œ@ 	 | j0                  jg                  dd«      }|rt        j                  d«       y	 tm        |
«      dkD  r7|
jo                  «        t        j6                  ddj/                  |
«      z  «       tm        |	«      dkD  rŒ|	jo                  «        t        j6                  ddj/                  |	«      z  «       | j5                  «        |j7                  t-        d«      t-        d«      dj/                  |	«      «       | j;                  «        yy# t*        $ �r8}t-        d«      }| j0                  j3                  dd	«      d
k(  r|t-        d«      z  }nL| j0                  j3                  dd	«      dk(  r-| j0                  j3                  dd«      d
k(  r|t-        d«      z  }|r|t-        d«      z  }n|t-        d«      z  }|t-        d«      z  }| j5                  «        |j7                  t-        d«      |«       t9        |«      }t        j6                  d|«       | j;                  «        Y d }~|j=                  «        |j/                  «        yd }~ww xY w# |j=                  «        |j/                  «        w xY w# th        jj                  $ r Y �Œ`w xY w)N)Útargetr§   Tz5skipping kernel checks because we run inside a chrootz!Broken packages after upgrade: %sr|   c              3   óf   K  — | ])  }|j                   s|j                  sŒ|j                  –— Œ+ y ­wr*   )Úis_inst_brokenÚis_now_brokenrx   )Ú.0Úps     r   ú	<genexpr>z&MyCache.distUpgrade.<locals>.<genexpr>”  s>   è ø€ ò  URÐ`aÐmn×m}Òm}ð  BC÷  BQó  BQÐUV×U[ÕU[ñ  URùs   ‚1 1zBAn unresolvable problem occurred while calculating the upgrade.

 r	  ÚforeignPkgsr  zÓThis was likely caused by:
 * Unofficial software packages not provided by Ubuntu
Please use the tool 'ppa-purge' from the ppa-purge 
package to remove software from a Launchpad PPA and 
try the upgrade again.

ÚFalseÚ
devReleasez†This was caused by:
 * Upgrading to a pre-release version of Ubuntu
This is most likely a transient problem, 
please try again later.
z@This is most likely a transient problem, please try again later.z€If none of this applies, then please report this bug using the command 'ubuntu-bug ubuntu-release-upgrader-core' in a terminal. z©If you want to investigate this yourself the log files in '/var/log/dist-upgrade' will contain details about the upgrade. Specifically, look at 'main.log' and 'apt.log'.zCould not calculate the upgradezDist-upgrade failed: '%s'Fr   r=   ÚAllowUnauthenticatedzAllowUnauthenticated set!z!Packages to downgrade found: '%s'ú z$Unauthenticated packages found: '%s'z"Error authenticating some packagesz®It was not possible to authenticate some packages. This may be a transient network problem. You may want to try again later. See below for a list of unauthenticated packages.ú
)8Ú	threadingÚLockÚacquireÚThreadrF  rK   Ústartr  Úupgrader<  r  r   r   r    r3  r(  r  Ú_keepBaseMetaPkgsInstalledÚ_installMetaPkgsÚ_verifyChangesrÀ   rV   rÉ   r~   rO   ra   r£   rö   rW   r    Úreleaserâ   ræ   Úmarked_downgraderå   rx   rj   Úversion_listrS   Úversion_compareÚver_strÚ	installedr0  Ú	file_listr8  r±   Ú
find_indexÚ
is_trustedrr   ÚoriginsÚtrustedÚ
getbooleanÚconfigparserÚNoOptionErrorr}   Úsort)r.   rK   Ú
serverModerN   rM   Útre   ÚdetailsÚ	error_msgÚ	untrustedÚ	downgradero   rÛ   ÚverFileIterÚindexÚ	indexfilerg  rh  ÚoriginÚbs                       r   ÚdistUpgradezMyCache.distUpgradef  sÜ  € ô �~‰~ÓˆØ�‰ŒÜ×Ñ D§N¡N¸$¿)¹)ÀTÐ9KÔLˆØ	�‰Œ	ðT	ð
 ×!Ñ!Ô#ð �L‰L˜Ôð ×ÑÔ ð ×$Ñ$Ô&ô ŒÜ—‘Ð WÕXà×#Ñ#Ô%ð ×ÑÔ!ð ×"Ñ"Ô$ð ×+Ñ+¨DÔ1Ùà×%Ñ% dÔ+ð ×ÑÔ!à�~Š~Ü!¤!Ð$GÓ"HÈ4Ï9É9ñ  URÐeiô  URó  LRñ  #Ró  Sð  Sð ðZ �L‰LŒNØ�F‰FŒHð ˆ	Øˆ	Ø×#Ñ#Ó%ó 	+ˆCØ× Ò Øà×#Ò#Ø× Ñ  §¡Ô*ØŸ8™8×0Ñ0ò &�Cä×.Ñ.ØŸ™ S§]¡]×%:Ñ%:ó<Ø>?ó@à47·M±Mò &Ñ0˜[¨%Ø(+¯©×(9Ñ(9×(DÑ(DÀ[Ó(Q˜IÚ(°×1EÓ1EØ )× 0Ñ 0°·±Ô :Ù %ñ	&ð	&ð Ø—m‘m×+Ñ+ˆGØˆGØ!ò *�à˜6Ÿ>™>Ñ)‘ð*ó Ø× Ñ  §¡Ö*ð-	+ð0	Ø—‘×&Ñ& xÐ1GÓHˆAÙÜ—‘Ð ;Ô<Øð ô
 ˆy‹>˜AÒØ�N‰NÔÜ�M‰MÐ=ØŸ(™( 9Ó-ñ.ô /äˆy‹>˜AÒØ�N‰NÔÜ�M‰MÐ@ØŸ(™( 9Ó-ñ.ô /ð ×$Ñ$Ô&Ø�J‰J”qÐ=Ó>Üð =ó >ð —y‘y Ó+ô-ð ×%Ñ%Ô'ØØøôG ó '	ô ð 9ó :ˆGà�{‰{�‰˜y¨-Ó8¸FÒBØœ1ð "ó #ñ #‘ð —‘—‘ ¨MÓ:¸gÒEØ—‘—‘ 	¨<Ó8¸FÒBØœAð :ó ;ñ ;�ñ Øœ1ð 7ó 8ñ 8‘ð œ1ð eó fñ f�àœ1ð Oó Pñ P�ð
 ×$Ñ$Ô&Ø�J‰J”qÐ:Ó;¸WÔEä˜A›ˆIÜ�M‰MÐ5°yÔAð ×%Ñ%Ô'Ûð �L‰LŒNØ�F‰F�HûðW'	ûðT �L‰LŒNØ�F‰F�HûôD ×)Ñ)ò 	Úð	ús>   Á#C>O- Ë3U Ï-
T/Ï7DT*ÔT2 Ô*T/Ô/T2 Ô2"UÕU.Õ-U.c                 óÒ  — t         j                  j                  d«      }| j                  j                  dd«      }| j	                  «       D ]û  }|j
                  r\| j                  |j                  «      rAt        j                  d|j                  «       t        t        d«      |j                  z  «      ‚|j
                  sŒx|j                  j                  dk(  sŒ’|j                  j                  |dfv sŒ­|j                  |vsŒ¼t        j                  d|j                  «       t        t        d	«      |j                  z  «      ‚ | j                  j                  dd
«      }|D ]}  }|j!                  d«      \  }}|| v sŒ| |   j"                  sŒ,| |   j"                  j$                  |k(  sŒI| |   j&                  s| |   j(                  sŒht        t        d«      |z  «      ‚ y)zy this function tests if the current changes don't violate
            our constraints (deny listed removals etc)
        zAPT::Architecturer=   r6  zHThe package '%s' is marked for removal but it's in the removal deny listzJThe package '%s' is marked for removal but it is in the removal deny list.TÚallzDThe package '%s' is marked for removal but it's an ESSENTIAL packagez1The essential package '%s' is marked for removal.ÚBadVersionsrÉ   z*Trying to install deny listed version '%s')rS   rO   r   rP   râ   ræ   Ú_inRemovalDenylistrx   r   rÑ   rV   rÉ   rj   Ú	essentialrc  Úarchitecturer/  rr   r0  rã   rä   )r.   Ú	main_archr;  ro   ÚbadVersionsÚbvr  rÛ   s           r   r]  zMyCache._verifyChangesû  s¥  € ô —N‘N×'Ñ'Ð(;Ó<ˆ	Ø ŸK™K×/Ñ/°Ð:MÓNÐà×#Ñ#Ó%ò 		eˆCØ× Ò  T×%<Ñ%<¸S¿X¹XÔ%FÜ—‘ÐhÐjm×jrÑjrÔsÜ!¤!Ð$pÓ"qÐtw×t|Ñt|Ñ"|Ó}Ð}Ø× Ó Ø—H‘H×&Ñ&¨$Ó.Ø—M‘M×.Ñ.°9¸eÐ2DÒDØŸ™Ð$5Ò5Ü—‘ÐdÐfi×fnÑfnÔoÜ!¤!Ð$WÓ"XÐ[^×[cÑ[cÑ"cÓdÐdð		eð —k‘k×)Ñ)¨(°MÓBˆØò 	XˆBØŸX™X c›]‰NˆW�cØ˜4’ D¨¡M×$;Ó$;Ø�W‘×'Ñ'×/Ñ/°3Ó6Ø�g‘×-Ò-Ø�g‘×-Ó-Ü!¤!Ð$PÓ"QÐTVÑ"VÓWÐWð	Xð r   c                 ó„  — |j                   j                  j                  |j                  «      }|€t	        d|j
                  «       y|j                  €'t	        d| j                  j                  «       z  «       y|j                  j                  d«      \  }}|j                   j                  j                  ||f«       y)a  
        helper to make sure that the pkg._records is pointing to the right
        location - needed because python-apt 0.7.9 dropped the python-apt
        version but we can not yet use the new version because on upgrade
        the old version is still installed
        zNo candidate ver: FzNo file_list for: %s r   T)
r8  r®   rØ   rj   Úprintrx   rd  Úpopr²   Úlookup)r.   ro   rÛ   r$   rt  s        r   Ú_lookupPkgRecordzMyCache._lookupPkgRecord  s–   € ð �k‰k×#Ñ#×5Ñ5°c·h±hÓ?ˆØˆ;ÜÐ&¨¯©Ô1ØØ�=‰=Ð ÜÐ)¨D¯I©I¯N©NÓ,<Ñ<Ô=ØØ—=‘=×$Ñ$ QÓ'‰ˆˆ5Ø�‰×Ñ×#Ñ# Q¨ JÔ/Ør   c                 óš  — i }t        «       }| D ]Ý  }| j                  |«      s#t        j                  d|j                  z  «       Œ7|j
                  j                  j                  j                  d«      D ]u  }|j                  d«      sŒ|t        d«      d  j                  d«      D ]A  }|j                  «       }||vrt        «       ||<   ||   j                  |j                  «       ŒC Œw Œß |D ]W  }d}| j                  j                  dd«      }||v rd}||   D ]  }| |   j                  rŒd} n |sŒG|j                  |«       ŒY |S )	Nz&no PkgRecord found for '%s', skipping rT  úTask:ú,Tr=   ÚIgnoredTasksF)rc   r†  r   rÑ   rx   r8  r²   Úrecordr/  r*  r}   r_   rw   rO   rP   ri   )	r.   ÚtasksÚinstalled_tasksro   ÚlineÚtaskrc  Úignored_tasksr  s	            r   ÚinstalledTaskszMyCache.installedTasks)  sM  € àˆÜ›%ˆØò 
	2ˆCØ×(Ñ(¨Ô-Ü—‘ÐFÈÏÉÑQÔRØØŸ™×,Ñ,×3Ñ3×9Ñ9¸$Ó?ò 2�Ø—?‘? 7Õ+Ø!%¤c¨'£l mÐ!4× ;Ñ ;¸CÓ @ò 2˜Ø#Ÿz™z›|˜Ø uÑ,Ü*-«%˜E $™KØ˜d™Ÿ™¨¯©Õ1ñ	2ñ2ð	
	2ð ò 
	*ˆDØˆIØ ŸK™K×/Ñ/°¸.ÓIˆMØ�}Ñ$Ø!�	Ø  ™;ò �Ø˜G‘}×1Ó1Ø %�IÙðò Ø×#Ñ# DÕ)ð
	*ð Ðr   c                 ót  — t        j                  d«       | D �]  }|j                  s|j                  rŒ| j	                  |«       t        |j                  j                  d«      r |j                  j                  j                  s#t        j                  d|j                  z  «       Œ‘|j                  j                  j                  j                  d«      D ][  }|j                  d«      sŒ|t        d«      d  j                  d«      D ]'  }|j                  «       }||v sŒ|j                  «        Œ) Œ] �Œ  y)Nzrunning installTasksr‹  zcan not find Record for '%s'rT  rˆ  r‰  T)r   rÑ   rã   ri   r†  r›   r8  r²   r‹  r    rx   r/  r*  r}   r_   rm   )r.   rŒ  ro   rŽ  r�  s        r   ÚinstallTaskszMyCache.installTasksE  sý   € Ü�‰Ð,Ô-Øó 	/ˆCØ×!Ò! S×%5Ò%5ØØ×!Ñ! #Ô&Ü˜CŸK™K×0Ñ0°(Ô;ÀÇÁ×@TÑ@T×@[Ò@[Ü—‘Ð >ÀÇÁÑ IÔJØØŸ™×,Ñ,×3Ñ3×9Ñ9¸$Ó?ò /�Ø—?‘? 7Õ+Ø!%¤c¨'£l mÐ!4× ;Ñ ;¸CÓ @ò /˜Ø#Ÿz™z›|˜Ø 5š=Ø×,Ñ,Õ.ñ/ò/ð	/ð r   c                 ój   — | j                   j                  dd«      D ]  }| j                  |d«       Œ y )Nr=   ÚBaseMetaPkgsz%base meta package keep installed rule)rO   rP   r  )r.   rK   ro   s      r   r[  z"MyCache._keepBaseMetaPkgsInstalledV  s5   € Ø—;‘;×&Ñ& x°Ó@ò 	OˆCØ× Ñ  Ð&MÕNñ	Or   c           	      óˆ  ‡ ‡— ˆˆ fd„}‰ j                   j                  dd«      Š‰ j                   j                  dd«      D ]  }‰ |   j                  «        Œ ‰D ]P  }	 |‰ v rI‰ |   j                  r:‰ |   j                  r+t        j                  d|z  «       ‰ |   j                  «        ŒR  |«       s³t        j                  d	‰z  «       ‰D ]–  }d
}‰ j                   j                  |d«      D ]  }||‰ v xr ‰ |   j                  z  }Œ |sŒAt        j                  d|z  «       	 ‰ |   j                  «        t        j                  d|›d‰ |   j                  ›d�«        n  |«       sAdj                  ‰dd «      }|j                  t        d«      t        d«      |‰d   fz  «       yy
# t        $ r'}t        j                  d|›d|›d�«       Y d }~�Œ�d }~ww xY w# t        t        f$ rN}t        j                  d|›d|›d�«       |j                  t        d«      |z  t        d«      «       Y d }~ yd }~ww xY w)Nc                  óî   •— ‰D ]o  } | ‰v sŒ‰|    }|j                   r.|j                  r"t        j                  d|j                  z  «       |j                   r|j                  r‰|    j
                  sŒo y y)zy
            internal helper that checks if at least one meta-pkg is
            installed or marked install
            z(metapkg '%s' installed but marked_deleteTF)ri   ræ   r   rÑ   rx   rã   )rò   ro   rQ   r.   s     €€r   ÚmetaPkgInstalledz2MyCache._installMetaPkgs.<locals>.metaPkgInstalled\  st   ø€ ð
  ò $�Ø˜$’;Ø˜s™)�CØ×'Ò'¨C×,=Ò,=ÜŸ™Ð&PÐSV×S[ÑS[Ñ&[Ô\Ø×)Ò)°#×2CÒ2CØ ™9×3Ó3Ù#ð$ð r   r=   r>   r•  zMarking '%s' for upgradezCan't mark 'z' for upgrade (r×   z$none of the '%s' meta-pkgs installedTrñ   z!guessing '%s' as missing meta-pkgzfailed to mark 'z' for install (zCan't install '%s'z‹It was impossible to install a required package. Please report this as a bug using 'ubuntu-bug ubuntu-release-upgrader-core' in a terminal.Fzmarked_install: 'z' -> 'ú'r|   r   r?   zCan't guess meta-packagez×Your system does not contain a %s or %s package and it was not possible to detect which version of Ubuntu you are running.
 Please install one of the packages above first using synaptic or apt-get before proceeding.)rO   rP   rm   ri   Úis_upgradabler   rÑ   rþ   rV   r    ÚKeyErrorrö   rÉ   rã   r~   )	r.   rK   r˜  ro   rò   re   ró   Ú	meta_pkgsrQ   s	   `       @r   r\  zMyCache._installMetaPkgsZ  sA  ù€ õ	ð  —;‘;×&Ñ& x°Ó<ˆð —;‘;×&Ñ& x°Ó@ò 	%ˆCØ�‰I×"Ñ"Õ$ð	%ð
 ò 
	OˆCð	OØ˜4‘KØ˜‘I×*Ò*Ø˜‘I×+Ò+Ü—M‘MÐ"<¸sÑ"BÔCØ˜‘I×*Ñ*Ô,øð
	Oñ  Ô!Ü�M‰MÐ@À8ÑKÔLØò �Ø!�
ØŸ;™;×.Ñ.¨sÐ4EÓFò I�CØ #¨ +Ò"H°$°s±)×2HÑ2HÑH‘JðIâÜ—M‘MÐ"EÈÑ"KÔLð%Ø˜S™	×.Ñ.Ô0ô —M’MÂCÈÈcÉ×IaÓIaÐ"bÔcÙð'ñ*  Ô!ØŸ	™	 (¨1¨R .Ó1ˆIØ�J‰J”qÐ3Ó4Üð 6ó 7ð # H¨R¡LÐ1ñ2ô3ð ØøôS ò Oô —’ÂcÊ1Ð M×NÒNûðOûô  (¬Ð2ò 	%ÜŸšÚ'*ªAð'/ô 0àŸ
™
¤1Ð%9Ó#:¸SÑ#@Ü#$ð &3ó $4ô5õ  %ûð	%ús2   ÁAF1Ä)G$Æ1	G!Æ:GÇG!Ç$IÇ3AH<È<Ic                 óª   — | j                   D ]D  }t        j                  |«      j                  |«      sŒ(t	        j
                  d|›d|›d�«        y y)Nzdenylist expr 'z' matches 'r™  TF)r[   ÚreÚcompileÚmatchr   rÑ   )r.   r  Úexprs      r   r|  zMyCache._inRemovalDenylist¦  sL   € Ø×)Ñ)ò 	ˆDÜ�z‰z˜$Ó×%Ñ% gÕ.Ü—’Ú#¢Wð.ô /áð		ð
 r   c           
      ó  — |j                  | j                  «      rt        j                  d|z  «       y|| j                  k(  rt        j                  d|z  «       y| j                  |«      rt        j                  d|z  «       y| j                  j                  dd«      D ]M  }|| v sŒ| |   j                  sŒ| |   j                  j                  |k(  sŒ5t        j                  d|z  «        y || vry	 | j                  j                  dd	«      }t        j                  | j                  «      }| | j!                  «        	 | |   j#                  |¬
«       | j$                  j'                  «        ||v ry| j)                  «       D ]Š  }|j*                  |vsC|j*                  |v s5| j                  |j*                  «      s|j*                  | j                  k(  sŒTt        j                  d|›d|j*                  ›d�«       | j-                  «         y 	 y# t        j                  $ r d}Y �Œw xY w# t.        t0        f$ rB}	t        j2                  d|›dt5        |	«      ›d|	›d�«       | j-                  «        Y d }	~	yd }	~	ww xY w)Nz skipping running kernel pkg '%s'Fz skipping kernel metapackage '%s'z"skipping '%s' (in removalDenylist)r=   r  z'skipping '%s' (in KeepInstalledSection)TÚPurgeObsoletes)Úpurgez	package 'z ' produces an unwanted removal 'z', skippingz'_tryMarkObsoleteForRemoval failed for 'rù   ú: r×   )Úendswithr   r   rÑ   r]   r|  rO   rP   rc  r  ri  rj  rk  rS   rì   r®   rç   rí   rK   rB  râ   rx   rï   rV   r›  r    Úrepr)
r.   r  Úremove_candidatesÚforced_obsoletesÚforeign_pkgsr  r¤  rî   ro   re   s
             r   ÚtryMarkObsoleteForRemovalz!MyCache.tryMarkObsoleteForRemoval®  s7  € ð ×Ñ˜DŸJ™JÔ'Ü�M‰MÐ<¸wÑFÔGØØ�d×,Ñ,Ò,Ü�M‰MÐ<¸wÑFÔGØØ×"Ñ" 7Ô+Ü�M‰MÐ>ÀÑHÔIØà—{‘{×*Ñ*¨8Ð5KÓLò 	ˆGØ˜4’ D¨¡M×$;Ó$;Ø˜‘M×+Ñ+×3Ñ3°wÓ>Ü—‘ÐGÈ'ÑQÔRÙð		ð ˜$Ñàð	Ø—K‘K×*Ñ*¨8Ð5EÓFˆEô ×)Ñ)¨$¯.©.Ó9ˆñ 	Ø×ÑÔð	Ø�‰M×%Ñ%¨EÐ%Ô2Ø�I‰I×#Ñ#Ô%ØÐ*Ñ*Øà×'Ñ'Ó)ò !�Ø—H‘HÐ$5Ñ5Ø—h‘h ,Ñ.Ø×-Ñ-¨c¯h©hÔ7Ø—h‘h $×"8Ñ"8Ó8Ü—M’MÒ`gÐil×iqÓiqÐ"rÔsØ×)Ñ)Ô+Ù ñ!ð øô; ×)Ñ)ò 	Ø‹Eð	ûô2 œXÐ&ò 	Ü�OŠOÒU\Ô^bÐcdÕ^eÒghÐiÔjØ×!Ñ!Ô#Üûð	ús=   Ã9H Å3H6 Å;A#H6 Ç7H6 ÈH6 ÈH3È2H3È6JÉ8JÊJc                 óœ   — t        «       }| D ]<  }|j                  sŒ| j                  |«      rŒ"|j                  |j                  «       Œ> |S ©z1 get all package names that are not downloadable )rc   ri   ÚanyVersionDownloadablerw   rx   )r.   Úobsolete_pkgsro   s      r   Ú_getObsoletesPkgszMyCache._getObsoletesPkgsè  sK   € ä›ˆØò 	0ˆCØ×Óð
 ×2Ñ2°3Õ7Ø!×%Ñ% c§h¡hÕ/ð	0ð Ðr   c                 óV   — |j                   j                  D ]  }|j                  sŒ y y)zA helper that checks if any of the version of pkg is downloadable TF)rj   r`  rs   )r.   ro   rÛ   s      r   r®  zMyCache.anyVersionDownloadableõ  s,   € à—8‘8×(Ñ(ò 	ˆCØ×ÓÙð	ð r   c                 óÄ   — t        «       }| D ]P  }|j                  sŒ| j                  j                  |j                  «      sŒ6|j                  |j                  «       ŒR |S r­  )rc   ri   r®   rÝ   rj   rw   rx   )r.   Úunused_dependenciesro   s      r   Ú_getUnusedDependencieszMyCache._getUnusedDependenciesü  sQ   € ä!›eÐØò 	2ˆCØ×Ó D§N¡N×$=Ñ$=¸c¿h¹hÕ$GØ#×'Ñ'¨¯©Õ1ð	2ð #Ð"r   c                 ó(  — t        «       }| j                  j                  dd«      }t        j                  j                  |«      rMt        |«      5 }|D ]3  }|j                  d«      rŒ|j                  |j                  «       «       Œ5 	 ddd«       t        «       }|D ][  }|| vrŒ| |   }|j                  r1| j                  j                  |j                  «      s|j                  rŒK|j                  |«       Œ] t        |«      S # 1 sw Y   Œ~xY w)zƒ return list of installed and demoted packages

            If a demoted package is a automatic install it will be skipped
        r=   Ú	Demotionsú#N)rc   rO   ra   r   r   r�   r�   r*  rw   r_   ri   r®   Úis_auto_installedrj   ræ   r�   )r.   Ú	demotionsÚdemotions_fileÚdemotions_frŽ  Úinstalled_demotionsÚdemoted_pkgnamero   s           r   Úget_installed_demoted_packagesz&MyCache.get_installed_demoted_packages  sð   € ô
 “Eˆ	ØŸ™Ÿ™¨°;Ó?ˆÜ�7‰7�>‰>˜.Ô)Ü�nÓ%ð 4¨Ø'ò 4�DØŸ?™?¨3Õ/Ø!Ÿ™ d§j¡j£lÕ3ñ4÷4ô "›eÐØ(ò 	)ˆOØ dÑ*ØØ�Ñ'ˆCØ×$Ò$Ø—‘×0Ñ0°·±Ô:Ø×!Ò!ØØ×#Ñ# CÕ(ð	)ô Ð'Ó(Ð(÷4ð 4ús   ÁDÁ)!DÄDc                 óv  — t        «       }| D ]©  }|j                  sŒ| j                  |«      sŒ"|j                  sŒ/d}|j                  j                  D ]B  }||j
                  v r|j                  |k(  rd}||j
                  v sŒ1|j                  |k(  sŒAd}ŒD |sŒ�|j                  |j                  «       Œ« |S )zm get all packages that are installed from a foreign repo
            (and are actually downloadable)
        TF)	rc   ri   rs   rr   rg  Úarchiverv  rw   rx   )r.   Úallowed_originÚfromDistÚtoDistrª  ro   Úforeignrv  s           r   Ú_getForeignPkgszMyCache._getForeignPkgs  s³   € ô “uˆØò 	/ˆCØ×Ó D×$5Ñ$5°cÕ$:Ø—}’}Øð �Ø!Ÿm™m×3Ñ3ò (�Fà 6§>¡>Ñ1Ø!Ÿ=™=¨NÒ:Ø"'˜Ø §¡Ò/Ø!Ÿ=™=¨NÓ:Ø"'™ð(ò Ø ×$Ñ$ S§X¡XÕ.ð!	/ð" Ðr   c           
      ó.  ‡ —  G d„ dt         «      }ˆ fd„}g Š i }i }t        d«      5 }|D ]0  }	 |j                  «       \  }}	}
}}}|	‰ vsŒ ‰ j                  |	«       Œ2 	 ddd«       ‰ j                  t        d	¬
«       t        j                  j                  d«      }d}t        | d«      rm| j                  j                  ddd«      rP| j                  j                  dd«      }t        j                   j#                  |«      st        j$                  |«       t	        j
                  d|z  «       dddd||ddfD ]ê  }t        j                   j'                  |«      } ||«      }t        j                   j#                  |«      r/t        j(                  |«      }|j*                  |j,                  z  }nt	        j.                  d|z  «       d}||v r*t	        j
                  d|›d||   ›�«       |||      ||<   ŒÀt	        j
                  d|›d|›�«       |||<    ||«      ||<   Œì ~t	        j
                  d|z  «       d}| D ]j  }t1        j2                  d|j4                  «      sŒ$|j6                  s|j8                  sŒ=t	        j
                  |j4                  ›d t:        ›d!�«       |d"z  }Œl |t:        z  |d"z   t<        z  z   }d#}t        | d«      r‡| j                  j                  ddd«      rjt	        j
                  d$«       | j                  j                  dd«      }| D ]4  }|j8                  s|j6                  sŒ||j>                  j@                  z  }Œ6 d#}|r^| D ]A  }|jB                  sŒ|j8                  s|jD                  sŒ)||jF                  j@                  z  }ŒC t	        j
                  d%|z  «       || jH                  fd| jJ                  fd| jL                  fd&d|fd'd(||fd|ff	D ]†  \  }}|dk  rŒt        j                   j'                  |«      }t	        j
                  d)||||   ||   jN                  fz  «       ||   xjN                  |z  c_'        ||   xjP                  |z  c_(        Œˆ i }|D ]ð  }||   jN                  dk  sŒt        jR                  tU        tW        ||   jN                  «      d"z   «      «      }tY        |tZ        «      r#|j]                  t_        j`                  «       «      }t        jR                  ||   jP                  «      }tY        |tZ        «      r#|j]                  t_        j`                  «       «      }tc        | ||«      |«      | ||«      <   Œò t        |«      dkD  rQt	        jd                  d*|D �cg c]  }tg        |«      ‘Œ c}z  «       ti        tk        |jm                  «       «      «      ‚y	# t        $ r'}t	        j
                  d|›d|›d�«       Y d}~�ŒÓd}~ww xY w# 1 sw Y   �Œ©xY wc c}w )+zã
        this checks if we have enough free space on /var, /boot and /usr
        with the given cache

        Note: this can not be fully accurate if there are multiple
              mountpoints for /usr, /var, /boot
        c                   ó   — e Zd ZdZd„ Zy)ú)MyCache.checkFreeSpace.<locals>.FreeSpacez@ helper class that represents the free space on each mounted fs c                 ó    — || _         d| _        y r¦   )Úfreer:  )r.   ÚinitialFrees     r   r/   z2MyCache.checkFreeSpace.<locals>.FreeSpace.__init__?  s   € Ø'�”	Ø�•	r   Nr8   r   r   r   Ú	FreeSpacerÈ  =  s
   „ ÙNór   rÌ  c                 ó>   •— ‰D ]  }| j                  |«      sŒ|c S  y)zŒ return 'id' of a directory so that directories on the
                same filesystem get the same id (simply the mount_point)
            ú/)r*  )ÚdÚmount_pointÚmounteds     €r   Ú
make_fs_idz*MyCache.checkFreeSpace.<locals>.make_fs_idC  s+   ø€ ð  'ò '�Ø—<‘< Õ,Ø&Ò&ð'ð r   z/proc/mountszline 'z"' in /proc/mounts not understood (r×   NT)rò   ÚreversezDir::Cache::archivesz/tmp/rO   ÚAufsÚEnabledFÚRWDirzcache aufs_rw_dir: %srÎ  ú/usrz/varz/bootz/homezdirectory '%s' does not existsr   zDir z mounted on zFree space on r¥  zfs_free contains: '%s'z%^linux-(image|image-debug)-[0-9.]*-.*z (new-install) added with z to boot spacer   g        z*taking aufs overlay into space calculationz&additional space for the snapshots: %s)r×  i   )z/tmpi  P )rÎ  i    z dir '%s' needs '%s' of '%s' (%f)zNot enough free space: %s)7Úobjectr�   r/  Ú
ValueErrorr   rÑ   rå   rl  r}   rS   rO   rÂ   r›   rŒ   ra   r   r   r�   rŽ   ÚrealpathÚstatvfsÚf_bavailÚf_frsizer    rž  r   rx   rã   rä   ÚKERNEL_SIZEÚINITRD_SIZErr   Úinstalled_sizeri   ræ   rc  r¶   r¹   r½   rÊ  r:  Úsize_to_strÚfloatÚabsÚ
isinstanceÚbytesÚdecodeÚlocaleÚgetpreferredencodingr(   rö   rW   r5   r�   Úvalues)!r.   Úsnapshots_in_userÌ  rÒ  Úmnt_mapÚfs_freeÚmountsrŽ  ÚwhatÚwhereÚfsÚoptionsÚarw  re   Ú
archivedirÚaufs_rw_dirrÏ  Úfs_idÚstrÊ  Úkernel_countro   Úspace_in_bootÚrequired_for_aufsÚrequired_for_snapshotsr,   ÚsizeÚrequired_listÚfree_at_leastÚfree_neededrE  rÑ  s!                                   @r   ÚcheckFreeSpacezMyCache.checkFreeSpace4  s¢  ø€ ô	œô 	ô	ð ˆØˆØˆÜ�.Ó!ð 	* VØò *�ðØ7;·z±z³|Ñ4�T˜5 " g¨q°!ð  Ò'Ø—N‘N 5Õ)ñ*÷	*ð 	�‰œ dˆÔ+Ü—^‘^×,Ñ,Ð-CÓDˆ
ØˆÜ�D˜(Ô#Ø�K‰K×&Ñ& v¨y¸%Ô@ØŸ+™+Ÿ/™/¨&°'Ó:ˆKÜ—7‘7—>‘> +Ô.Ü—‘˜KÔ(Ü�‰Ð-°Ñ;Ô<Ø�v˜v w°
¸KÈÐRYÐZò 	-ˆAÜ—‘× Ñ  Ó#ˆAÙ˜q“MˆEÜ�w‰w�~‰~˜aÔ Ü—Z‘Z “]�Ø—{‘{ R§[¡[Ñ0‘ä—‘Ð @À1Ñ DÔEØ�Ø˜ÑÜ—’Ú  '¨%¢.ð2ô 3à$ W¨U¡^Ñ4�˜’
ä—’Ú ¡$ð(ô )à!"�˜‘Ù& t›_�˜’
ð#	-ð$ Ü�‰Ð.°Ñ8Ô9ð
 ˆØò 	&ˆCô �x‰xÐ?ÀÇÁÕJð ×%Ò%¨×);Ó);Ü—M‘MÐTW×T\ÓT\Ö^iÐ"jÔkØ  AÑ%‘Lð	&ð &¬Ñ3Ø(¨1Ñ,´Ñ;ñ<ˆð  ÐÜ�D˜(Ô#Ø�K‰K×&Ñ& v¨y¸%Ô@Ü�M‰MÐFÔGØŸ+™+Ÿ/™/¨&°'Ó:ˆKð ò F�Ø×%Ò%¨×);Ó);Ø%¨¯©×)EÑ)EÑEÑ%ðFð
 "%ÐÙØò K�Ø×$Ó$Ø×'Ò'¨3×+<Ó+<Ø*¨c¯m©m×.JÑ.JÑJÑ*ðKô �M‰MÐBÐE[Ñ[Ô\ð (¨×)?Ñ)?Ð@Ø# T×%CÑ%CÐDà# T×%MÑ%MÐNà2Ø$ mÐ4Ø1Ø/Ø(Ð*;Ð<à#Ð%;Ð<ðò 	&‰KˆS�$ð �aŠxØÜ—'‘'×"Ñ" 3Ó'ˆCÜ�M‰MÐ<ÀÀTÈ7ÐSVÉ<ÐY`ÐadÑYe×YjÑYjÐ?kÑkÔlØ�C‰L×Ò Ñ%ÕØ�C‰L×Ò Ñ%Öð'	&ð, ˆØò 	pˆCØ�s‰|× Ñ  1Ó$ä '× 3Ñ 3´E¼#¸gÀc¹l×>OÑ>OÓ:PÐQRÑ:RÓ4SÓ T�Ü˜m¬UÔ3Ø$1×$8Ñ$8Ü×3Ñ3Ó5ó%7�Mä%×1Ñ1°'¸#±,×2CÑ2CÓD�Ü˜k¬5Ô1Ø"-×"4Ñ"4Ü×3Ñ3Ó5ó#7�Kô
 2CÀ;ÑPZÐ[^ÓP_ÐanÓ1o�™j¨›oÒ.ð	pô  ˆ}Ó Ò!Ü�M‰MÐ5ÈÖ8WÀA¼¸Q½Ò8WÑWÔXÜ)¬$¨}×/CÑ/CÓ/EÓ*FÓGÐGØøôs "ò Ü—M’MÒUYÒ[\Ð"]Ô^Ýûðú÷		*ñ 	*üòv 9Xs@   §X®WÁXÁ
XÖX
×	X×W=×7X×=XØXØX)NTr*   )T)Ú )F)<r   r   r   ru   rv   r/   rp   Úpropertyrz   rˆ   r`   r    r£   r«   r¶   r¹   r½   rÀ   rU   rÄ   rÆ   rÍ   r€   r„   rs   rÞ   rà   rç   rê   rï   rô   r÷   rm   rþ   r  r  r  r  r  r  r(  r+  r3  r<  rF  rx  r]  r†  r‘  r“  r[  r\  r|  r«  r°  r®  r´  r¾  rÅ  rÿ  r   r   r   r:   r:   q   s¥  „ Ø€IØ€Mó%JòNBð ñ	ó ð	òò6Fò$ò$òð ñ$ó ð$ð ñ'ó ð'ð ñó ðð ñ/ó ð/ò
1ò!ó_ò5óDóBó	 ò5ò
+ò
0òò>òò<ó$óó+ó
=ò
/ò tòF3ò4ò$'òTòò rò*	ð ñRó ðRòhò8ð$ ñó ðò6ò"OòJòXð ñ7ó ð7òròò#ò)ò0ô0^r   r:   Ú__main__)ÚDistUpgradeConfig)ÚDistUpgradeViewÚfooú.zubuntu-desktop)/rX   rS   r   rç  r   rž  r   rC  r”   rU  rj  Ú
subprocessr   r   ÚDistUpgradeGettextr   rÉ   r   Úutilsr   r$  r
   r   r   r&   rÞ  rß  rØ  r(   r5   rY   r:   r   ÚsysÚDistUpgradeConfigParserr  r  rƒ  Úcrÿ  Úexitrê   rç   r‘  r“  râ   rï   r   r   r   ú<module>r     s8  ðó, Û Û Û Û 	Û 	Û Û Û Û Û ß "å ,Ý (å  ô	�Yô 	ô	 .ô 	ô	 Nô 	ò ñB ?Ó@Ñ €ˆ[ôB˜ô Bô A˜nô Aôaˆc�i‰iô aðH# ˆzÒÛÝ:Ý0Ù	ˆ%„LÙÑ! #Ó&©Ó(9¸4Ó@€Añ 
ˆ!×
Ñ
Ó
ÔØ€C‡H�H„Jà‡G�G„IØ×ÑÔØ×ÒØ‡N�NÐ$Ð%Ô&Ù	ˆ!�-‰-‹/ÔØ×ÑÕð! r   