+
    EjK                     >   R t ^ RIt^ RIt]P                  P	                  ]P
                  P                  RR4      4      t]P                  P                  ]R4      t	]P                  P                  ]R4      t
]P                  P                  ]R4      tR tR tR	 tR# )
u  sshj.jsonio — state-dir constants + JSON I/O (leaf).

B2 step 1: moved verbatim from sshj_cli.py (single-file era) — no behavior
change. Owns the state-dir constants because both lastused and identity
need them and they must live in a leaf (no intra-project imports).
NSSHJ_STATE_DIRz~/.local/state/sshjzlast_used.jsonzlast_success.jsonzidentity.jsonc                     \         P                  P                  R4      R8X  d   R# \         P                  P	                  \         P                  P                  \        R4      4      '       d   R# R# )zFTrue if an update is flagged (SSHJ_UPDATE=1 or flag file); no network.SSHJ_UPDATE1Tzupdate.flagF)osenvirongetpathexistsjoin	STATE_DIR     src/sshj/jsonio.pyupdate_neededr      sB    	zz~~m$+	ww~~bggll9m<==r   c                     \        V 4      ;_uu_ 4       p\        P                  ! V4      uuRRR4       #   + '       g   i     R# ; i  \         d    Tu # i ; i)z;Read JSON, or return `default` on any error (never raises).N)openjsonload	Exception)r	   defaultfs   && r   	load_jsonr      s<    $ZZ199Q< ZZZ s+   A
 6
A
 A	A
 A
 
AAc                >   \         P                  ! \         P                  P                  V 4      RR7       V R,           p\	        VR4      ;_uu_ 4       p\
        P                  ! W^R7       RRR4       \         P                  ! W 4       R#   + '       g   i     L(; i)z:Atomic JSON write (tmp + os.replace); creates parent dirs.T)exist_okz.tmpw)indentN)r   makedirsr	   dirnamer   r   dumpreplace)r	   datatmpr   s   &&  r   	save_jsonr#   "   sZ    KK%5
-C	c31		$!$ 
JJs 
s   BB	)__doc__r   r   r	   
expanduserr   r   r   r   LAST_USED_FILELAST_SUCCESS_FILEIDENTITY_FILEr   r   r#   r   r   r   <module>r)      s     	GGrzz~~.>@UVW	i)9:GGLL,?@ Y8r   