+
    €DAiqP  ã                   ó¬   € R t ^ RIt^ RIt^ RIt^ RIt^ RIHt  ^ RItRt^ RI	H
t
 ^ RIt^RIHt  ! R R]P                  4      tR#   ] d    Rt L2i ; i)	znetplan migrate command lineN)ÚglobFT)ÚOrderedDict)Úutilsc                   ó`   a a€ ] tR t^$t oV 3R ltR tR tR tR tR t	R t
R
R ltR	tVtV ;t# )ÚNetplanMigratec                ó.   <€ \         SV `  R RRRR7       R# )Úmigratez/Migration of /etc/network/interfaces to netplanT)Ú
command_idÚdescriptionÚleafÚtestingN)ÚsuperÚ__init__)ÚselfÚ	__class__s   &€Ú6/usr/share/netplan/netplan_cli/cli/commands/migrate.pyr   ÚNetplanMigrate.__init__%   s    ø€ Ü‰Ñ IØ%VØ"Ø!%ð 	ö 	'ó    c                óâ  € RV9   dp   RV9  d   / VR&   RVR,          9  d   . VR,          R&   VR,          P                  R4       F*  pV'       g   K  VR,          R;;,          V.,          uu&   K,  	  VR RV9   dr   RV9  d   / VR&   RVR,          9  d   . VR,          R&   VR,          P                  R4       F*  pV'       g   K  VR,          R;;,          V.,          uu&   K,  	  VR R# R# )zªParse dns options (dns-nameservers and dns-search) from if_options
(an interface options dict) into the interface configuration if_config
Mutates the arguments in place.
zdns-nameserversÚnameserversÚ	addressesÚ z
dns-searchÚsearchN)Úsplit)r   Ú
if_optionsÚ	if_configÚnsÚdomains   &&&  r   Úparse_dns_optionsÚ NetplanMigrate.parse_dns_options+   sù   € ð
  
Ô*Ø IÔ-Ø+-�	˜-Ñ(Ø )¨MÕ":Ô:Ø8:�	˜-Õ(¨Ñ5Ø Ð!2Õ3×9Ñ9¸#Ö>�çÙà˜-Õ(¨×5¸"¸Õ=Õ5ñ ?ð Ð,Ð-Ø˜:Ô%Ø IÔ-Ø+-�	˜-Ñ(Ø˜y¨Õ7Ô7Ø57�	˜-Õ(¨Ñ2Ø$ \Õ2×8Ñ8¸Ö=�çÙØ˜-Õ(¨×2°v°hÕ>Õ2ñ	 >ð
 ˜<Ò(ñ &r   c                ól  € RV9   dh    \        VR,          4      pRV9   dD   VR,          X8X  g6   \        P                  ! RWVR,          4       \        P
                  ! ^4       XVR&   VR R# R#   \         d8    \        P                  ! RYR,          4       \        P
                  ! ^4        L—i ; i)z„Parse out the MTU. Operates the same way as parse_dns_options
iface is the name of the interface, used only to print error messages
Úmtuz%s: cannot parse "%s" as an MTUz0%s: tried to set MTU=%d, but already have MTU=%dN)ÚintÚ
ValueErrorÚloggingÚerrorÚsysÚexit)r   Úifacer   r   r!   s   &&&& r   Ú	parse_mtuÚNetplanMigrate.parse_mtuH   s¢   € ð
 �JÔðÜ˜* UÕ+Ó,�ð
 ˜	Ô!¨)°EÕ*:¸cÔ*AÜ—’ÐPÐRWÐ^gÐhmÕ^nÔoÜ—’˜”à"ˆI�eÑØ˜5Ò!ñ øô ô Ü—’Ð?ÀÐSXÕHYÔZÜ—’˜–ðús   ‰A1 Á1?B3Â2B3c                óè   € RV9   dk   RV9   dS   VR,          VR,          8X  g>   \         P                  ! RVVR,          VR,          4       \        P                  ! ^4       VR,          VR&   VR R# R# )z˜Parse out the manually configured MAC.
Operates the same way as parse_dns_options
iface is the name of the interface, used only to print error messages
Ú	hwaddressÚ
macaddressz0%s: tried to set MAC %s, but already have MAC %sN)r$   r%   r&   r'   )r   r(   r   r   s   &&&&r   Úparse_hwaddressÚNetplanMigrate.parse_hwaddress[   so   € ð ˜*Ô$Ø˜yÔ(°¸<Õ1HÈJÐWbÕLcÔ1cÜ—’ÐPÐRWØ(¨Õ5°yÀÕ7NôPä—’˜”à&0°Õ&=ˆI�lÑ#Ø˜;Ò'ñ %r   c                óN  € V P                   P                  R RR7       V P                   P                  RRRR7       V P                  V n        V P	                  4        \
        '       d-   \        P                  ! R4       \        P                  ! ^4       V P                  4        R# )	z
--root-dirzOSearch for and generate configuration files in this root directory instead of /)Úhelpz	--dry-runÚ
store_truezQPrint converted netplan configuration to stdout instead of writing/changing files)Úactionr1   z¥The `yaml` Python package couldn't be imported, and is needed for the migrate command.
To install it on Debian or Ubuntu-based system, run `apt install python3-yaml`N)ÚparserÚadd_argumentÚcommand_migrateÚfuncÚ
parse_argsÚNO_YAMLr$   r%   r&   r'   Úrun_command)r   s   &r   ÚrunÚNetplanMigrate.runj   s„   € Ø�‰× Ñ  Ø&wð 	!ô 	yà�‰× Ñ  °\Ø&yð 	!ô 	{à×(Ñ(ˆŒ	à�‰Ôß‹7Ü�MŠMð Rô Sä�HŠH�QŒKØ×ÑÖr   c           
     ó°  € / p T P                  V P                  ;'       g    R 4      w  r#XP                  4        EF  w  rVVP                  4        EFõ  w  rx\        P                  ! RWWV4       VX9  d.   \        P                  ! RV4       \        P                  ! ^4       VR,          R8X  d   \        P                  ! RV4       Ky  VR,          R8X  dæ   VP                  R/ 4      P                  R	/ 4      P                  V/ 4      p	V P                  VR
,          V	4       V P                  WXR
,          V	4       VR
,          '       dS   \        P                  ! RVRP                  VR
,          P                  4       4      4       \        P                  ! ^4       VR8X  d	   RV	R&   EK[  VR8X  g   Q hRV	R&   EKl  VR,          R8X  EdG   RV9   d   VP                  R4      ^ ,          pVP                  R/ 4      P                  R	/ 4      P                  V/ 4      p	RV	9  d   . V	R&   V P                  VR
,          V	4       V P!                  WXR
,          V	4       V P                  WXR
,          V	4       VR8X  Edc   \#        . R5O4      p
\#        . R6O4      p\#        VR
,          P                  4       4      pWÊ,
          pV'       d„   VP%                  V4       F1  p\        P                  ! RWWV4       \        P                  ! ^4       K3  	  WÛ,
           F1  p\        P                  ! RWWV4       \        P                  ! ^4       K3  	  RVR
,          9  d.   \        P                  ! RV4       \        P                  ! ^4       RVR
,          R,          9   d8   VR
,          R,          P                  R4      ^ ,          pVR
,          R,          pMwRVR
,          9  d.   \        P                  ! RV4       \        P                  ! ^4       VR
,          R,          pVR
,          R,          R,           VR
,          R,          ,           p \&        P(                  ! V4      p \&        P,                  ! VRR7      pV	R;;,          \        X4      R,           \        XP0                  4      ,           .,          uu&   RVR
,          9   d   VR
,          R,          V	R!&   EKŠ  EK�  VR8X  g   Q h\#        . R7O4      p
\#        . R8O4      p\#        VR
,          P                  4       4      pWÊ,
          pV'       d„   VP%                  V4       F1  p\        P                  ! RWWV4       \        P                  ! ^4       K3  	  WÛ,
           F1  p\        P                  ! RWWV4       \        P                  ! ^4       K3  	  RVR
,          9  d.   \        P                  ! RV4       \        P                  ! ^4       RVR
,          R,          9   d8   VR
,          R,          P                  R4      ^ ,          pVR
,          R,          pMwRVR
,          9  d.   \        P                  ! RV4       \        P                  ! ^4       VR
,          R,          pVR
,          R,          R,           VR
,          R,          ,           p \&        P2                  ! V4      p \&        P4                  ! VRR7      pV	R;;,          \        X4      R,           \        XP0                  4      ,           .,          uu&   RVR
,          9   d   VR
,          R,          V	R%&   R"VR
,          9   d¿   VR
,          R",          R&8X  d	   RV	R"&   EK  VR
,          R",          R'8X  d	   RV	R"&   EK:  VR
,          R",          R(8X  d1   \        P                  ! R)V4       \        P                  ! ^4       EK  \        P                  ! R*VVR
,          R",          4       \        P                  ! ^4       EK¾  EKÁ  \        P                  ! R+WXR,          4       \        P                  ! ^4       EKø  	  EK  	  \6        P8                  P                  V P                  ;'       g    RR,4      pV'       dð   ^VR,          R-&   \:        P<                  ! V4      pV P>                  '       d   \A        V4       MÅ\6        P8                  P                  V P                  ;'       g    RR.4      p \6        PB                  ! \6        P8                  PE                  V4      4        \I        VR/4      ;_uu_ 4       pVPK                  V4       RRR4       \        PL                  ! R1T4       M\        PL                  ! R24       V P>                  '       g9   \        PL                  ! R3VV4       \6        PN                  ! VVR4,           4       R# R#   \         dA   p\        P                  ! \        T4      4       \        P                  ! ^4        Rp?E	LøRp?ii ; i  \&        P*                   d;   p\        P                  ! RTTT4       \        P                  ! ^4        Rp?ELRp?ii ; i  \&        P.                   d;   p\        P                  ! R TTT4       \        P                  ! ^4        Rp?ELPRp?ii ; i  \&        P*                   d;   p\        P                  ! R#TTT4       \        P                  ! ^4        Rp?ELPRp?ii ; i  \&        P.                   d;   p\        P                  ! R$TTT4       \        P                  ! ^4        Rp?EL‰Rp?ii ; i  \F         d     ELMi ; i  + '       g   i     EL3; i  \F         d2    \        P                  ! R0T4       \        P                  ! ^4        ELqi ; i)9Ú NzConverting %s family %s %sz.%s: non-automatic interfaces are not supportedÚmethodÚloopbackzIgnoring loopback interface %sÚdhcpÚnetworkÚ	ethernetsÚoptionsz2%s: option(s) %s are not supported for dhcp methodz, ÚinetTÚdhcp4Úinet6Údhcp6ÚstaticÚ:r   ÚaddressÚnetmaskÚgatewayz%s: unsupported %s option "%s"z%s: unknown %s option "%s"z(%s: no address supplied in static methodÚ/zE%s: address does not specify prefix length, and netmask not specifiedz-%s: error parsing "%s" as an IPv4 address: %sF)Ústrictz-%s: error parsing "%s" as an IPv4 network: %sÚgateway4Ú	accept_raz-%s: error parsing "%s" as an IPv6 address: %sz-%s: error parsing "%s" as an IPv6 network: %sÚgateway6Ú0Ú1Ú2z(%s: netplan does not support accept_ra=2z#%s: unexpected accept_ra value "%s"z%s: method %s is not supportedzetc/network/interfacesÚversionzetc/netplan/10-ifupdown.yamlÚxzC%s already exists; remove it if you want to run the migration againzmigration complete, wrote %sz>ifupdown does not configure any interfaces, nothing to migratez#renaming %s to %s.netplan-convertedz.netplan-converted)rK   rL   rM   )Ú	broadcastÚmetricÚpointopointÚscope)rK   rL   rM   rQ   )rY   ÚmediaÚautoconfÚprivextr[   zpreferred-lifetimezdad-attemptszdad-interval)(Úparse_ifupdownÚroot_dirr#   r$   r%   Ústrr&   r'   ÚitemsÚdebugÚ
setdefaultr   r.   ÚjoinÚkeysr   r)   ÚsetÚintersectionÚ	ipaddressÚIPv4AddressÚAddressValueErrorÚIPv4NetworkÚNetmaskValueErrorÚ	prefixlenÚIPv6AddressÚIPv6NetworkÚosÚpathÚyamlÚdumpÚdry_runÚprintÚmakedirsÚdirnameÚFileExistsErrorÚopenÚwriteÚinfoÚrename)r   Únetplan_configÚifacesÚauto_ifacesÚer(   Úfamily_configÚfamilyÚconfigÚcÚsupported_optsÚunsupported_optsÚoptsÚbad_optsÚunsupportedÚunknownÚ	addr_specÚnet_specÚipaddrÚaÚipnetr   Únetplan_yamlÚdestÚfs   &                        r   r6   ÚNetplanMigrate.command_migratex   s,	  € Øˆð	Ø"&×"5Ñ"5°d·m±m×6IÐ6IÀrÓ"JÑˆFð %+§L¡L§NÑ ˆEØ"/×"5Ñ"5×"7‘�Ü—’Ð:¸EÈ6ÔRØ Ô+Ü—M’MÐ"RÐTYÔZÜ—H’H˜Q”KØ˜(Õ# zÔ1ä—M’MÐ"BÀEÖJØ˜HÕ%¨Ô/Ø&×1Ñ1°)¸RÓ@×KÑKÈKÐY[Ó\×gÑgÐhmÐoqÓr�Aà×*Ñ*¨6°)Õ+<¸aÔ@Ø×(Ñ(¨°yÕ0AÀ1ÔEà˜i×(Ô(ÜŸšÐ&ZØ&+¨T¯Y©Y°v¸iÕ7H×7MÑ7MÓ7OÓ-PôRäŸš œØ Ô'Ø%)˜˜'œ
à%¨Ô0Ð0Ð0Ø%)˜˜'œ
à˜HÕ%¨Õ1à˜uœØ %§¡¨CÓ 0°Õ 3˜à&×1Ñ1°)¸RÓ@×KÑKÈKÐY[Ó\×gÑgÐhmÐoqÓr�Aà"¨!Ô+Ø)+˜˜+™à×*Ñ*¨6°)Õ+<¸aÔ@Ø—N‘N 5°Õ*;¸QÔ?Ø×(Ñ(¨°yÕ0AÀ1ÔEð  Õ'ô
 *-Ò-NÓ)O˜Ü+.Ò/^Ó+_Ð(ä" 6¨)Õ#4×#9Ñ#9Ó#;Ó<˜Ø#'Õ#8˜ß#Ø/7×/DÑ/DÐEUÖ/V Ü '§¢Ð.NÐPUÐ_jÔ kÜ #§¢¨¦ñ 0Wð ,4×+FÐ+F Ü '§¢Ð.JÈEÐ[bÔ cÜ #§¢¨¦ñ ,Gð %¨F°9Õ,=Ô=Ü#ŸMšMÐ*TÐV[Ô\ÜŸHšH QœKà &¨Õ"3°IÕ">Ô>Ø(.¨yÕ(9¸)Õ(D×(JÑ(JÈ3Ó(OÐPQÕ(R˜IØ'-¨iÕ'8¸Õ'C™Hà(°°yÕ0AÔAÜ '§¢Ð.uØ.3ô!5ä #§¢¨¤Ø(.¨yÕ(9¸)Õ(D˜IØ'-¨iÕ'8¸Õ'CÀcÕ'IÈFÐS\ÕL]Ð^gÕLhÕ'h˜Hð(Ü%.×%:Ò%:¸9Ó%E˜Fð
(Ü$-×$9Ò$9¸(È5Ô$Q˜Eð
 ˜+Ÿ¬3¨v«;¸Õ+<¼sÀ5Ç?Á?Ó?SÕ+SÐ*TÕT›à$¨¨yÕ(9Ô9à,2°9Õ,=¸iÕ,H˜A˜jœMò :ð  &¨Ô0Ð0Ð0ô *-Ò-[Ó)\˜Ü+.ò 0oó ,pÐ(ô  # 6¨)Õ#4×#9Ñ#9Ó#;Ó<˜Ø#'Õ#8˜ß#Ø/7×/DÑ/DÐEUÖ/V Ü '§¢Ð.NÐPUÐ_jÔ kÜ #§¢¨¦ñ 0Wð ,4×+FÐ+F Ü '§¢Ð.JÈEÐ[bÔ cÜ #§¢¨¦ñ ,Gð %¨F°9Õ,=Ô=Ü#ŸMšMÐ*TÐV[Ô\ÜŸHšH QœKà &¨Õ"3°IÕ">Ô>Ø(.¨yÕ(9¸)Õ(D×(JÑ(JÈ3Ó(OÐPQÕ(R˜IØ'-¨iÕ'8¸Õ'C™Hà(°°yÕ0AÔAÜ '§¢Ð.uØ.3ô!5ä #§¢¨¤Ø(.¨yÕ(9¸)Õ(D˜IØ'-¨iÕ'8¸Õ'CÀcÕ'IÈFÐS\ÕL]Ð^gÕLhÕ'h˜Hð(Ü%.×%:Ò%:¸9Ó%E˜Fð
(Ü$-×$9Ò$9¸(È5Ô$Q˜Eð
 ˜+Ÿ¬3¨v«;¸Õ+<¼sÀ5Ç?Á?Ó?SÕ+SÐ*TÕT›à$¨¨yÕ(9Ô9à,2°9Õ,=¸iÕ,H˜A˜j™Mà&¨&°Õ*;Ô;Ø% iÕ0°Õ=ÀÔDØ16  +¤Ø!'¨	Õ!2°;Õ!?À3Ô!FØ15  +¤Ø!'¨	Õ!2°;Õ!?À3Ô!FÜ '§¢Ð.XÐZ_Ô `Ü #§¢¨§ä '§¢Ð.SÐUZØ.4°YÕ.?ÀÕ.Lô!Nä #§¢¨§ò <ô —M’MÐ"BÀEÐRZÕK[Ô\Ü—H’H˜Q—KôS #8ñ %3ôX —G‘G—L‘L §¡×!5Ð!5°#Ð7OÓPˆ	çØ34ˆN˜9Õ% iÑ0ÜŸ9š9 ^Ó4ˆLØ�|�|ˆ|Ü�lÕ#ä—w‘w—|‘| D§M¡M×$8Ð$8°SÐ:XÓY�ðÜ—K’K¤§¡§¡°Ó 5Ô6ð Ü˜d CŸœ¨AØŸ™ Ô-÷ )ô
 —’Ð;¸TÕBä�LŠLÐYÔZà�|�|ˆ|Ü�LŠLÐ>À	È9ÔUÜ�IŠI�i Ð-AÕ!AÖBñ øôM ô 	Ü�MŠMœ#˜a›&Ô!Ü�HŠH�Q�KŠKûð	ûôb  )×:Ñ:ô (Ü#ŸMšMÐ*YÐ[`ÐbkÐmnÔoÜŸHšH QŸKšKûð(ûô  )×:Ñ:ô (Ü#ŸMšMÐ*YÐ[`ÐbjÐlmÔnÜŸHšH QŸKšKûð(ûôl  )×:Ñ:ô (Ü#ŸMšMÐ*YÐ[`ÐbkÐmnÔoÜŸHšH QŸKšKûð(ûô  )×:Ñ:ô (Ü#ŸMšMÐ*YÐ[`ÐbjÐlmÔnÜŸHšH QŸKšKûð(ûôN 'ô Úðú÷ )Ÿ˜ûä&ô  Ü—M’MÐ"gÐimÔnÜ—H’H˜Q—Kð ús¾   „g ¢	g Ñh+Ñi=Ú3kÛ
l!ä3m3 ä5n å	nån çh(ç(5h#è#h(è+i:é /i5é5i:é=kê/këkëlë$/lìlì!m0ì6/m+í+m0í3nînîn	în în î8oïoc                óh  € R p. p\        V4      ^,           p \        VR,           V,           4      ;_uu_ 4       p\        P                  ! RVP                  4       V EFŠ  pVP                  4       pV'       d   VP                  R4      '       d   K5  VP                  R4      '       d¹   \        P                  ! R4      pV! V\        P                  P                  VP                  4      V4      p	\        P                  ! V	4       FT  pVP                  V4      '       g   K  W@P                  V\        P                  P                  W•R V4      4      ,          pKV  	  EK  VP                  R4      '       d_   \!        V! V\        P                  P                  VP                  4      V4      4       F  pW@P                  WVR 4      ,          pK  	  EKy  VP#                  V4       EK�  	  RRR4       V#   + '       g   i     T# ; i  \$         d    \        P                  ! R	Y4        T# i ; i)
zfReturn normalized lines from ifupdown config

This resolves "source" and "source-directory" includes.
c                 óŽ   € VP                  4       ^,          pVP                  R4      '       d	   W,           # VR,           V,           # )é   rN   )r   Ú
startswith)ÚrootdirÚcurdirÚlineÚargs   &&& r   Úexpand_source_argÚCNetplanMigrate._ifupdown_lines_from_file.<locals>.expand_source_argK  s7   € Ø—*‘*“,˜q•/ˆCØ�~‰~˜c×"Ò"Ø•}Ð$à •| cÕ)Ð)r   rN   z
reading %sÚ#zsource-directory z^[a-zA-Z0-9_-]+$Nzsource z%s/%s does not exist, ignoring)Úlenrz   r$   rc   ÚnameÚstripr˜   ÚreÚcompilerq   rr   rx   ÚlistdirÚmatchÚ_ifupdown_lines_from_filere   r   ÚappendÚFileNotFoundError)
r   r™   rr   r�   ÚlinesÚrootdir_lenr“   r›   Úvalid_reÚds
   &&&       r   r§   Ú(NetplanMigrate._ifupdown_lines_from_fileF  s­  € ò
	*ð ˆÜ˜'“l QÕ&ˆð	KÜ�g •m dÕ*×+Ô+¨qÜ—’˜l¨A¯F©FÔ3Ü�DàŸ:™:›<�Dß 4§?¡?°3×#7Ò#7Ù à—‘Ð':×;Ò;Ü#%§:¢:Ð.@Ó#A˜Ù-¨g´r·w±w·±ÀqÇvÁvÓ7NÐPTÓU˜Ü!#§¢¨A¦˜AØ'Ÿ~™~¨a×0Ô0Ø %×)GÑ)GÈÔQS×QXÑQX×Q]ÑQ]Ð^_Ð`lÐ^mÐopÓQqÓ)rÕ r¢ô "/ð Ÿ™¨×3Ò3Ü!%Ñ&7¸ÄÇÁÇÁÐQR×QWÑQWÓAXÐZ^Ó&_Ö!`˜AØ!×%CÑ%CÀGÈ{È|È_Ó%]Õ]šEô "að Ÿ™ T×*ñ! ÷ ,ð* ˆ÷+ ,Ö+ð* ˆûô !ô 	KÜ�MŠMÐ:¸GÕJØˆð	KúsJ   ™!H ºAG7ÂG7Â*A4G7Ä#AG7Å9A4G7Ç-H Ç7H	ÈH ÈH È"H1È0H1c                óÈ  € R^R^R^R^R^R^/pV P                  VR4      p\        4       p\        4       pRpRpV EFˆ  pVP                  4       p	 W)^ ,          ,          p
\        P
                  ! R	Wš4       RpRp\        T	4      T
^,           8w  d,   \        RY©^ ,          \        T	4      ^,
          3,          4      hT	^ ,          R9   d   TP                  T	^,          4       K©  T	^ ,          R8X  d   \        R4      hT	^ ,          R8X  d   KÒ  T	^ ,          R8X  d“   T	^,          R9  d   \        RT	^,          ,          4      hT	^,          R9  d   \        RT	^,          ,          4      hT	^,          pT	^,          pRT	^,          R/ /TP                  T	^,          \        4       4      T&   EKr  \        RT	^ ,          ,          4      h	  \        P
                  ! RWE4       WE3#   \         du    T'       dS   \        P
                  ! R
Yh4       TP                  ^R7      ^,          YF,          T,          R,          T	^ ,          &    EK  \        RT	^ ,          ,          4      hi ; i)u/  Parse ifupdown configuration.

Return (iface_name â†’  family â†’ {method, options}, auto_ifaces: set) tuple
on successful parsing, or a ValueError when encountering an invalid file or
ifupdown features which are not supported (such as "mapping").

options is itself a dictionary option_name â†’ value.
Úautoú
allow-autoúallow-hotplugÚmappingz
no-scriptsr(   z/etc/network/interfacesNz$line fields %s (expected length: %i)z$in_options %s, parsing as option: %s)ÚmaxsplitrD   zUnknown stanza type %sz0Expected %i fields for stanza type %s but got %izmapping stanza is not supportedzUnknown address family %szUnsupported method %sr?   z!stanza type %s is not implementedz,final parsed interfaces: %s; auto ifaces: %s)r°   r±   r²   )rE   rG   )r@   rI   rA   )r§   r   rg   r   r$   rc   ÚKeyErrorr#   r    Úaddrd   ÚNotImplementedError)r   r™   Úfieldlenrª   r   r°   Ú
in_optionsÚ	in_familyr›   ÚfieldsÚexp_lens   &&         r   r_   ÚNetplanMigrate.parse_ifupdownl  sH  € ð ˜A˜|¨Q°ÀÀIÈqÐR^Ð`aÐcjÐlmÐnˆð ×.Ñ.¨wÐ8QÓRˆä“ˆÜ‹uˆØˆ
Øˆ	ô ˆDØ—Z‘Z“\ˆFðKà"¨!¥9Õ-�Ü—’ÐDÀfÔVØ!�
Ø �	ô �6‹{˜g¨�kÔ)Ü Ð!SØ")°!­9´c¸&³kÀAµoÐ!Fõ"Gó Hð Hð �a�yÐCÔCØ—‘˜ �Ö#Ø˜•˜iÔ'Ü Ð!BÓCÐCØ˜•˜lÔ*ÙØ˜•˜gÔ%Ø˜!•9Ð$5Ô5Ü$Ð%@À6È!Å9Õ%LÓMÐMØ˜!•9Ð$BÔBÜ$Ð%<¸vÀa½yÕ%HÓIÐIØ# A�Y�
Ø" 1�I�	ØJRÐTZÐ[\ÕT]Ð_hÐjlÐIm�×!Ñ! &¨¥)¬[«]Ó;¸IÔFä)Ð*MÐPVÐWXÕPYÕ*YÓZÐZñO ôR 	�ŠÐDÀfÔSØˆ~ÐøôC ô KçÜ—M’MÐ"HÈ*Ô[ØJNÏ*É*Ð^_È*ÓJ`ÐabÕJc�FÕ& yÕ1°)Õ<¸VÀA½YÑGÛä$Ð%=ÀÀqÅ	Õ%IÓJÐJðKús   Á*G"Ç"I!Ç5AI!ÉI!)r7   )rN   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   r)   r.   r;   r6   r§   r_   Ú__static_attributes__Ú__classdictcell__Ú__classcell__)r   Ú__classdict__s   @@r   r   r   $   s6   ù‡ € õ'ò)ò:"ò&(òòLCò\$÷L?ô ?r   r   )Ú__doc__r$   rq   r&   r£   r   rs   r9   ÚImportErrorÚcollectionsr   ri   r>   r   ÚNetplanCommandr   © r   r   Ú<module>rË      s[   ðñ$ #ã Û 	Û 
Û 	Ý ðÛØ€Gõ $Û å ôG�U×)Ñ)ö Gøð ô Ø‚Gðús   šA Á	AÁA