4-rings or 4-squares puzzle

You are encouraged to solve this task according to the task description, using any language you may know.
Task

Replace       a, b, c, d, e, f,   and
  g        with the decimal
digits   LOW   ───►   HIGH

such that the sum of the letters inside of each of the four large squares add up to
the same sum.

            ╔══════════════╗      ╔══════════════╗
            ║              ║      ║              ║
            ║      a       ║      ║      e       ║
            ║              ║      ║              ║
            ║          ┌───╫──────╫───┐      ┌───╫─────────┐
            ║          │   ║      ║   │      │   ║         │
            ║          │ b ║      ║ d │      │ f ║         │
            ║          │   ║      ║   │      │   ║         │
            ║          │   ║      ║   │      │   ║         │
            ╚══════════╪═══╝      ╚═══╪══════╪═══╝         │
                       │       c      │      │      g      │
                       │              │      │             │
                       │              │      │             │
                       └──────────────┘      └─────────────┘

Show all output here.



   Show all solutions for each letter being unique with
        LOW=1     HIGH=7

   Show all solutions for each letter being unique with
        LOW=3     HIGH=9

   Show only the   number   of solutions when each letter can be non-unique
        LOW=0     HIGH=9



Related task

 Solve the no connection puzzle


perm 7
rename * (a b c d e f g)
list if a==c+d & b+c==e+f & d+e==g, noobs sep(50)
 
  +---------------------------+
  | a   b   c   d   e   f   g |
  |---------------------------|
  | 3   7   2   1   5   4   6 |
  | 4   5   3   1   6   2   7 |
  | 4   7   1   3   2   6   5 |
  | 5   6   2   3   1   7   4 |
  | 6   4   1   5   2   3   7 |
  | 6   4   5   1   2   7   3 |
  | 7   2   6   1   3   5   4 |
  | 7   3   2   5   1   4   6 |
  +---------------------------+
 
foreach var of varlist _all {
	replace `var'=`var'+2
}
list if a==c+d & b+c==e+f & d+e==g, noobs sep(50)
 
  +---------------------------+
  | a   b   c   d   e   f   g |
  |---------------------------|
  | 7   8   3   4   5   6   9 |
  | 8   7   3   5   4   6   9 |
  | 9   6   4   5   3   7   8 |
  | 9   6   5   4   3   8   7 |
  +---------------------------+
 
clear
set obs 10
gen b=_n-1
gen q=1
save temp, replace
rename b c
joinby q using temp
rename b d
joinby q using temp
rename b e
gen a=c+d
gen g=d+e
drop if a>9 | g>9
joinby q using temp
gen f=b+c-e
drop if f<0 | f>9
drop q
order a b c d e f g
erase temp.dta
count
  2,860