Qual o salário necessário para viver confortável trabalhando em Lisboa ou no Porto? Faça as contas e descubra

‘);

function ao(e, t) {
var a = to(),
r = M(a),
h = M(r);
Pt(h, () => t.children ?? ct), k(e, a)
}
const ro = new Intl.NumberFormat(“pt-PT”, {
style: “percent”,
maximumFractionDigits: 0
}),
ho = new Intl.NumberFormat(“pt-PT”, {
minimumFractionDigits: 1,
maximumFractionDigits: 1
}),
wh = new Intl.NumberFormat(“pt-PT”, {
maximumFractionDigits: 0
}),
yh = e => {
const t = Math.abs(Math.round(e)),
a = t >= 1e4 ? String(t).replace(/\B(?=(\d{3})+(?!\d))/g, “.”) : String(t);
return (e < 0 ? “-” : “”) + a
};

function J1(e) {
return e == null || Number.isNaN(e) ? “\u2014” : `\u20AC ${yh(e)}`
}

function so(e) {
return e == null || Number.isNaN(e) ? “\u2014” : yh(e)
}

function no(e) {
return e == null || Number.isNaN(e) ? “\u2014” : ro.format(e)
}

function Zt(e) {
return e == null || Number.isNaN(e) ? “\u2014” : e < 10 ? `${ho.format(e)} h` : `${wh.format(e)} h`
}

function oo(e) {
return e == null || Number.isNaN(e) ? “\u2014” : wh.format(Math.round(e))
}
const Qa = .45,
lo = {
presencial: 22,
hibrido: 9,
teletrabalho: 0
},
Xt = {
metropolitano: 40,
municipal: 30,
ferroviario_verde: 20
},
io = [“transportes”, “gasoleo”, “gasolina”, “eletrico”],
vo = {
transportes: “Transportes p\xFAblicos”,
gasoleo: “Carro a gas\xF3leo”,
gasolina: “Carro a gasolina”,
eletrico: “Carro el\xE9trico”
},
xh = {
transportes: “autocarro”,
gasoleo: “bomba”,
gasolina: “bomba”,
eletrico: “tomada”
},
Ct = [{
pele: “#ffb27a”,
cabelo: “#2b0204”,
roupa: “#2f7fd1”,
estilo: “curto”
}, {
pele: “#c98a52”,
cabelo: “#2b0204”,
roupa: “#5a3d9e”,
estilo: “comprido”
}, {
pele: “#ffe0c2”,
cabelo: “#5c3a1e”,
roupa: “#1f8a70”,
estilo: “chapeu”
}, {
pele: “#8d5524”,
cabelo: “#2b0204”,
roupa: “#b0306f”,
estilo: “comprido”
}],
ea = e => e === “Porto” ? “do Porto” : “de Lisboa”,
co = (e, t) => t !== “transportes” ? “carro” : “transportes p\xFAblicos”,
ie = {
voltar: “VOLTAR”,
recomecar: “RECOME\xC7AR”,
comoJogarTitulo: “Como jogar”,
comoJogar: “Fa\xE7a as escolhas de cada passo: a personagem, onde vai trabalhar e morar, e como se desloca. No fim, mostramos-lhe o custo de vida dessas escolhas e o sal\xE1rio que seria preciso para as sustentar.”
},
Se = {
tag: “SIMULADOR”,
titulo: “RECEBI UMA PROPOSTA”,
premissa: “Aceitou um emprego numa das principais cidades do pa\xEDs. Parece simples, mas depois \xE9 preciso encontrar casa e chegar ao trabalho todos os dias, e isso tem um custo. Fa\xE7a as escolhas e descubra quanto lhe fica a vida ao fim do m\xEAs.”,
comoTitulo: “Como funciona”,
passo1: “Crie a sua personagem e aceite o emprego”,
passo2: “Escolha a cidade para trabalhar, onde morar e como se deslocar”,
passo3: “No fim, mostramos-lhe a fatura do m\xEAs: o que gasta e o que sobra”,
botao: “COME\xC7AR”
},
_h = {
curriculos: {
mensagens: [“A preparar o curr\xEDculo\u2026”, “A enviar candidaturas\u2026”, “A aguardar resposta\u2026”],
feito: “Conseguiu uma proposta de emprego.”,
botao: “CONTINUAR”,
saltar: “AVAN\xC7AR”
},
extrato: {
mensagens: [“A reunir as despesas\u2026”, “A somar a casa e as viagens\u2026”, “A rever o extrato banc\xE1rio\u2026”],
feito: “As suas contas est\xE3o prontas.”,
botao: “VER AS CONTAS”,
saltar: “AVAN\xC7AR”
}
},
ht = {
titulo: “ONDE VAI TRABALHAR”,
texto: “O escrit\xF3rio fica no centro de uma grande cidade. Em qual prefere trabalhar?”,
lisboa: “LISBOA”,
porto: “PORTO”,
continuar: “CONTINUAR”
},
st = {
titulo: “COMO VAI TRABALHAR”,
texto: “Quantos dias vai ao escrit\xF3rio?”,
opcoes: {
presencial: {
rotulo: “PRESENCIAL”,
sub: “Todos os dias no escrit\xF3rio.”
},
hibrido: {
rotulo: “H\xCDBRIDO”,
sub: “Dois dias por semana no escrit\xF3rio.”
},
teletrabalho: {
rotulo: “TELETRABALHO”,
sub: “Sempre a partir de casa.”
}
},
continuar: “CONTINUAR”
},
_e = {
titulo: “ARRENDAR OU COMPRAR”,
texto: “Vai precisar de uma casa. Prefere arrendar ou comprar?”,
nota: “Todos os valores assumem uma casa de 100 m\xB2.”,
arrendar: “ARRENDAR”,
arrendarSub: “Paga uma renda todos os meses.”,
comprar: “COMPRAR”,
comprarSub: “Paga a presta\xE7\xE3o de um cr\xE9dito habita\xE7\xE3o.”,
continuar: “CONTINUAR”
},
nt = {
titulo: “CRIAR PERSONAGEM”,
rotuloNome: “O seu nome”,
placeholderNome: “Opcional”,
escolha: “Escolha a sua personagem”,
botao: “CONTINUAR”
},
Rt = {
texto: e => `Onde quer morar? O trabalho fica no centro ${ea(e)}. Em cada concelho v\xEA o pre\xE7o da casa e a dist\xE2ncia at\xE9 ao trabalho.`,
legendaTitulo: e => `Da ${e===”arrendar”?”renda”:”presta\xE7\xE3o”} mais baixa \xE0 mais alta, em euros`,
rendaPropria: (e, t) => `Mora ${t} e sabe a ${e===”arrendar”?”renda”:”presta\xE7\xE3o”} certa? Introduza-a (opcional).`,
semDados: e => `N\xE3o temos ${e===”arrendar”?”a renda”:”a presta\xE7\xE3o”} deste concelho. Insira um valor para continuar ou escolha outro munic\xEDpio.`,
continuar: “CONTINUAR”
},
Wa = {
titulo: “COMO SE DESLOCA”,
texto: “Para ir at\xE9 ao seu local de trabalho, precisa de se deslocar. Como vai faz\xEA-lo?”,
verContas: “CONTINUAR”
},
ot = {
texto: “Nos transportes p\xFAblicos, paga um passe mensal. Qual usa?”,
rot: “Que passe usa?”,
multi: “Pode escolher mais do que um.”,
outroRot: “Sabe o valor certo do seu passe?”,
outroPlaceholder: “Insira outro valor (opcional)”,
continuar: “VER AS CONTAS”
},
B1 = {
titulo: “AS CONTAS DO M\xCAS”,
mudarIntro: “Mude uma escolha e veja as contas a mudar”,
mudarCidade: “CIDADE”,
mudarCasa: “CASA”,
mudarMunicipio: “MUNIC\xCDPIO”,
mudarRegime: “REGIME”,
mudarTransporte: “TRANSPORTE”,
continuarLer: “Fa\xE7a scroll”,
etiquetaCusto: “Quanto custa”,
porMesLongo: “por m\xEAs”,
decCasa: “em habita\xE7\xE3o”,
decDeslocacao: “em desloca\xE7\xE3o”,
horasViagem: e => `e ${e} em viagem`,
m1Frase: (e, t, a) => `${e?e+”, s”:”S”}egundo as suas escolhas, \xE9 isto que lhe custa morar ${t} e trabalhar ${a}.`,
etiquetaTempo: “O tempo”,
porAno: e => e === “carro” ? `por ano dentro do ${e}` : `por ano nos ${e}`,
m2Frase: e => {
const t = Math.round(e / 8),
a = Math.round(e / 24),
r = h => h === 1 ? “dia” : “dias”;
return `Se fizer este percurso durante 11 meses, equivale a ${t} ${r(t)} de trabalho, ou ${a} ${r(a)} de 24 horas.`
},
etiquetaRendimento: “O rendimento”,
reflexaoIntro: e => `${e===”Porto”?”A fuga do Porto, onde comprar ou arrendar casa passa, pelo menos, os \u20AC1200 mensais,”:”A fuga de Lisboa, onde comprar ou arrendar casa passa facilmente os \u20AC1700 por m\xEAs,”} parece ser a escolha \xF3bvia num pa\xEDs onde um casal que ganhe o sal\xE1rio m\xE9dio l\xEDquido tem pouco mais de \u20AC2500 l\xEDquidos para gerir o seu m\xEAs. No final, v\xE1rios factores pesam: o tamanho da casa, o transporte, o tempo, a conta banc\xE1ria. Ent\xE3o, ser\xE1 a fuga das cidades a op\xE7\xE3o mais acertada?`,
reflexao: “Estes n\xFAmeros s\xF3 ganham sentido ao lado de outra escolha. Valeria a pena morar mais longe para pagar menos, ou mais perto, para poupar horas?”,
compensaSub: “Compare com outro s\xEDtio”,
historias: “CONHE\xC7A HIST\xD3RIAS REAIS”,
suaEscolha: “A sua escolha”,
labelCasa: “Casa”,
labelDeslocacao: “Desloca\xE7\xE3o”,
rendimentoNecessario: “Rendimento necess\xE1rio”,
custoVida: “Custo de vida”,
necessarioRot: e => `Para a habita\xE7\xE3o n\xE3o pesar mais de ${no(e)} do rendimento, o agregado familiar deveria ganhar pelo menos`,
liquidosMes: “l\xEDquidos por m\xEAs”,
labelViagem: “Tempo em viagem”,
porMes: “/m\xEAs”,
equivDias: e => `\u2248 ${oo(e)} ${Math.round(e)===1?”dia”:”dias”} de trabalho de 8 h`,
comoCompara: “Como se compara”,
compSub: “Todos os valores s\xE3o mensais, para o mesmo agregado. A sua escolha est\xE1 a laranja e o s\xEDtio comparado a amarelo.”,
compAdd: “Comparar com:”,
compararOutro: “Comparar outro munic\xEDpio”,
compAddMun: “Outro munic\xEDpio”,
compAddReg: “Outro regime”,
compAddTrans: “Outro transporte”,
compMax: “Chegou ao limite de cen\xE1rios. Remova um para acrescentar outro.”,
comparacaoCentro({
escolheuCentro: e,
cenEscolhido: t,
cenCentro: a,
concEscolhido: r,
cidade: h
}) {
if (e) return `Escolheu morar no centro ${ea(h)}: a casa custa mais, mas quase n\xE3o perde tempo em desloca\xE7\xF5es.`;
if (a?.custo == null || t.custo == null) return `No centro ${ea(h)} n\xE3o h\xE1 dados de pre\xE7o para comparar.`;
const n = t.custo – a.custo,
o = J1(Math.round(Math.abs(n))),
l = t.horas – (a.horas ?? 0),
i = `Face ao centro ${ea(h)}, morar ${r.em_concelho} fica-lhe ${o} mais ${n<0?”barato”:”caro”} por m\xEAs`;
return Math.abs(l) < .05 ? `${i}, sem diferen\xE7a no tempo de desloca\xE7\xF5es.` : l > 0 ? `${i}, mas perde ${Zt(l)} em desloca\xE7\xF5es.` : `${i}, e ainda poupa ${Zt(Math.abs(l))} em desloca\xE7\xF5es.`
}
},
uo = {
k: “#2b0204”,
w: “#fff1e0”,
y: “#ffbf00”,
Y: “#ffe08a”,
c: “#b5831f”,
e: “#a8401a”,
o: “#e65100”,
R: “#a70e13”,
p: “#fff1e0”,
P: “#fffaf0”,
d: “#e8dcc4”
},
I1 = e => e.split(`
`).filter(t => t.length);
I1(`….kkkk….
..kkyyyykk..
.kyYYyyyyck.
.kYyyeeeyck.
kyYyeyyyyyck
kyYeeeeyyyck
kyyyeyyyyyck
kyyeeeeyyyck
kyyyeyyyyyck
.kyyyeeeyck.
.kccyyyycck.
..kkcccckk..
….kkkk….`);
const fo = I1(`..kkkkkkkk..
..kwwwwwwk..
..kwRRRRwk..
kkkwwwwwwkkk
kokwRRRRwkok
kookwwwwkook
koookkkkoook
kooooooooook
kkkkkkkkkkkk`),
$h = I1(`…..kk…..
….kRRk….
…kRRRRk…
..kRRRRRRk..
.kRRRRRRRRk.
kkkkkkkkkkkk
.kwwwwwwwwk.
.kwyywwyywk.
.kwyywwyywk.
.kwwkkkkwwk.
.kwwkookwwk.
.kkkkkkkkkk.`),
po = I1(`kkkkkkkkkk
kwwwwwwwwk
kwRRRRwwwk
kwwwwwwwwk
kwRRRwwRwk
kwwwwwwwwk
kwRRRRwRwk
kwwwwwwwwk
kkkkkkkkkk
kwRRwwyyyk
kwwkwwkwwk
k..k..k..k`),
Mo = I1(`k…….
kk……
kwk…..
kwwk….
kwwwk…
kwwwwk..
kwwwwwk.
kwwwwwwk
kwwwkkkk
kwkkwk..
kk..kwk.
…..kk.`),
Ph = I1(`..w..
..w..
ww.ww
..w..
..w..`),
zo = I1(`…….k
…….k
..k….k
.kk….k
kkkkkkkk
.kk…..
..k…..`),
Ch = I1(`kkkkkkk
.kwwwk.
.kyyyk.
..kyk..
…k…
..kyk..
.kwyyk.
.kyyyk.
kkkkkkk`);
I1(`.kkkkkkkkkkkkkk.
.kPPPPPPPPPPPPk.
.kPRRRRRRRRRPPk.
.kPPPPPPPPPPPPk.
.kPRRRRRRRRRRPk.
.kPPPPPPPPPPPPk.
.kPRRRRRRRPPPPk.
.kPPPPPPPPPPPPk.
.kkkkkkkkkkkkkk.
……kkkk……
……keek……
..kkkkkkkkkkkk..
.keeeeeeeeeeeek.
..kkkkkkkkkkkk..`);
const mo = I1(`.kkk.
k…k
….k
..kk.
..k..
…..
..k..`),
go = I1(`…k…
..kk…
.kkk…
kkkkkk.
.kkk…
..kk…
…k…`),
ko = I1(`…k…
…kk..
…kkk.
.kkkkkk
…kkk.
…kk..
…k…`),
Rh = I1(`kkkkkkk
.kkkkk.
..kkk..
…k…`);
I1(`…k…
…k…
…k…
…k…
k..k..k
.k.k.k.
..kkk..`);
const Ah = I1(`.kkkk.k
k….kk
k…kkk
k……
k…..k
.k…k.
..kkk..`);
var bo = Y1(“ “),
wo = Y1(‘‘),
yo = Y1(‘‘);

function L1(e, t) { u1(t, !0); let a = N(t, “map”, 19, () => []), r = N(t, “palette”, 3, uo), h = N(t, “cell”, 3, 4), n = N(t, “titulo”, 3, “”), o = N(t, “classe”, 3, “”), l = N(t, “sombra”, 3, !1); const i = y(() => a().length), v = y(() => a().reduce((g, m) => Math.max(g, m.length), 0)), p = y(() => l() ? `filter:drop-shadow(${h()}px ${h()}px 0 #d9c7a6)` : “”); var c = yo(), d = M(c); { var u = g => { var m = bo(), b = O(m, !0); P(() => x(b, n())), k(g, m) }; Q(d, g => { n() && g(u) }) } var z = f(d); i1(z, 17, a, R1, (g, m, b) => { var _ = me(), w = S1(_); i1(w, 17, () => s(m).split(“”), R1, (C, R, A) => { var S = me(), F = S1(S); { var J = q => { var V = wo(); j(V, “x”, A), j(V, “y”, b), P(() => j(V, “fill”, r()[s(R)])), k(q, V) }; Q(F, q => { r()[s(R)] && q(J) }) } k(C, S) }), k(g, _) }), P(() => { k1(c, 0, Dn(o()), “svelte-huaby4”), j(c, “width”, s(v) * h()), j(c, “height”, s(i) * h()), j(c, “viewBox”, `0 0 ${s(v)??””} ${s(i)??””}`), j(c, “role”, n() ? “img” : “presentation”), j(c, “aria-label”, n() || void 0), j(c, “aria-hidden”, n() ? void 0 : “true”), n1(c, s(p)) }), k(e, c), d1() } var xo = Y1(‘‘), _o = Y1(‘‘), $o = T(“”);

function Ga(e, t) { u1(t, !0); let a = N(t, “tamanho”, 3, 72), r = N(t, “andar”, 3, !1), h = N(t, “pele”, 3, “#ffb27a”), n = N(t, “cabelo”, 3, “#2b0204”), o = N(t, “roupa”, 3, “#e65100”), l = N(t, “estilo”, 3, “curto”); const i = w => w.map(C => C.padEnd(16, “.”).slice(0, 16)), v = { curto: [“…………….”, “…..cccc…….”, “….cccccc……”, “….cppppc……”, “….cpppcc……”, “….cppppc……”, “…..pppp…….”], comprido: [“…………….”, “…..cccc…….”, “….cccccc……”, “…ccppppcc…..”, “…ccpppccc…..”, “…ccppppcc…..”, “….cppppc……”], chapeu: [“…………….”, “….cccccc……”, “…cccccccc…..”, “…..cccc…….”, “….pppppp……”, “….ppppcp……”, “….pppppp……”] }, p = [“….rrrrrr……”, “…rrrrrrrr…..”, “..rrrrrrrrrr….”, “..rprrrrrrpr….”, “..rprrrrrrpr….”, “…rrrrrrrr…..”, “….rrrrrr……”, “….rr..rr……”, “….rr..rr……”, “….rr..rr……”], c = y(() => […v[l()] ?? v.curto, …p]), d = y(() => i([…s(c), “….rr..rr……”, “…ss….ss…..”, “…………….”])), u = y(() => i([…s(c), “…rr….rr…..”, “..ss……ss….”, “…………….”])), z = y(() => ({ c: n(), p: h(), r: o(), s: “#2b0204” })), g = 16, m = 20; var b = $o(); let _; i1(b, 21, () => [s(d), s(u)], R1, (w, C, R) => { var A = _o(); k1(A, 0, `frame f${R}`, “svelte-x57pi4”), j(A, “viewBox”, `0 0 ${g} ${m}`), i1(A, 21, () => s(C), R1, (S, F, J) => { var q = me(), V = S1(q); i1(V, 17, () => s(F).split(“”), R1, (D, H, t1) => { var o1 = me(), z1 = S1(o1); { var p1 = O1 => { var E1 = xo(); j(E1, “x”, t1), j(E1, “y”, J), P(() => j(E1, “fill”, s(z)[s(H)])), k(O1, E1) }; Q(z1, O1 => { s(z)[s(H)] && O1(p1) }) } k(D, o1) }), k(S, q) }), P(() => { j(A, “width”, a()), j(A, “height”, a() / g * m) }), k(w, A) }), P(() => { _ = k1(b, 1, “personagem svelte-x57pi4”, null, _, { andar: r() }), n1(b, `width:${a()}px;height:${a()/g*m}px`) }), k(e, b), d1() } var Po = T(‘‘);

function At(e, t) { u1(t, !0); let a = N(t, “alvo”, 3, null), r = N(t, “parado”, 3, !1), h = N(t, “texto”, 3, “Fa\xE7a scroll”);

function n() { a()?.scrollIntoView?.({ behavior: “smooth”, block: “start” }) } var o = Po(); let l; var i = M(o), v = O(i, !0), p = f(i, 2), c = M(p); L1(c, { get map() { return Rh }, cell: 3, palette: { k: “var(–economia)” } }), P(() => { l = k1(o, 1, “seta-momento svelte-1x75ren”, null, l, { parado: r() }), x(v, h()) }), N1(“click”, o, n), k(e, o), d1() } xe([“click”]); var Co = T(”), Ro = T(‘‘), Ao = T(‘ ‘), So = T(““), No = T(”), Oo = T(‘‘);

function v1(e, t) { let a = N(t, “selecionado”, 3, !1), r = N(t, “variante”, 3, “normal”), h = N(t, “seta”, 3, null), n = N(t, “disabled”, 3, !1), o = N(t, “type”, 3, “button”), l = N(t, “ariaPressed”, 3, void 0), i = N(t, “title”, 3, void 0); const v = “var(–tinta)”, p = y(() => h() ?? (r() === “primario” ? “dir” : null)); var c = Lo(); let d; var u = M(c), z = f(M(u), 2); { var g = A => { var S = Sh(), F = M(S); L1(F, { get map() { return go }, palette: { k: v }, cell: 3 }), k(A, S) }; Q(z, A => { s(p) === “esq” && A(g) }) } var m = f(z, 2); { var b = A => { var S = Io(); k(A, S) }; Q(m, A => { r() === “opcao” && A(b) }) } var _ = f(m, 2), w = M(_); Pt(w, () => t.children ?? ct); var C = f(_, 2); { var R = A => { var S = Sh(), F = M(S); L1(F, { get map() { return ko }, palette: { k: v }, cell: 3 }), k(A, S) }; Q(C, A => { s(p) === “dir” && A(R) }) } P(() => { j(c, “type”, o()), c.disabled = n(), j(c, “title”, i()), j(c, “aria-pressed”, l()), d = k1(c, 1, `botao ${r()??””}`, “svelte-i7ejp8”, d, { selecionado: a(), “so-seta”: s(p) === “esq” }) }), N1(“click”, c, function(…A) { t.onclick?.apply(this, A) }), k(e, c) } xe([“click”]); const V1 = e => e.map(t => t.padEnd(16, “.”).slice(0, 16)), Nh = { casa: V1([“…………….”, “…….11…….”, “……1111……”, “…..112211…..”, “….11222211….”, “…1122222211…”, “..112222222211..”, “.11222222222211.”, “.11111111111111.”, “.11122211122111.”, “.11122211122111.”, “.11122211111111.”, “.11111111111111.”, “.11111111111111.”, “…………….”, “…………….”]), chave: V1([“…………….”, “….1111……..”, “…11..11…….”, “..11….11……”, “..11….11……”, “..11….11……”, “…11..11…….”, “….1111……..”, “…..11………”, “…..11………”, “…..11………”, “…..1111…….”, “…..11………”, “…..1111…….”, “…………….”, “…………….”]), moeda: V1([“…………….”, “…..111111…..”, “…1122222211…”, “..112221222211..”, “.11222212122211.”, “.12221212121221.”, “.12212121212121.”, “.12121212121221.”, “.12212121212121.”, “.12221212121221.”, “.11222121222211.”, “..112221222211..”, “…1122222211…”, “…..111111…..”, “…………….”, “…………….”]), autocarro: V1([“…………….”, “..1111111111….”, “.111111111111…”, “.12211221221…”, “.12211221221…”, “.111111111111…”, “.111111111111…”, “.111111111111…”, “.111111111111…”, “.112111111211…”, “.111111111111…”, “..1.111111.1….”, “…111..111…..”, “..12.1..1.21….”, “…1…..1……”, “…………….”]), comboio: V1([“…………….”, “….11111111….”, “…1111111111…”, “..111111111111..”, “..112211221111..”, “..112211221111..”, “..111111111111..”, “..111111111111..”, “..111111111112..”, “..111111111112..”, “..1111111111111.”, “..11.111111.111.”, “…1.1….1.1…”, “..12.1….1.21..”, “…1…….1….”, “…………….”]), carro: V1([“…………….”, “…………….”, “…………….”, “……1111……”, “…..122221…..”, “…1111111111…”, “..111111111111..”, “.11111111111111.”, “.11111111111111.”, “..111111111111..”, “…11……11…”, “..1221….1221..”, “..1221….1221..”, “…11……11…”, “…………….”, “…………….”]), bomba: V1([“…………….”, “..111111…1….”, “..1….1..111…”, “..1.11.1..1.1…”, “..1.11.1.111….”, “..1….1..1…..”, “..111111..1…..”, “..1….1.11…..”, “..1….1.1……”, “..1….111……”, “..1….1……..”, “..11111111……”, “..111111111…..”, “…………….”, “…………….”, “…………….”]), tomada: V1([“…………….”, “…………….”, “….11..11……”, “….11..11……”, “…111111111….”, “…111111111….”, “…111111111….”, “….1111111…..”, “…..11111……”, “…….1……..”, “……221…….”, “…..22………”, “….22……….”, “…2…………”, “…………….”, “…………….”]), portagem: V1([“…………….”, “…11………..”, “…11.222222222.”, “…11.222222222.”, “…11………..”, “…11………..”, “…11………..”, “…11………..”, “…11………..”, “…11………..”, “.1111111……..”, “.1111111……..”, “.1111111……..”, “…………….”, “…………….”, “…………….”]), relogio: V1([“…………….”, “…..111111…..”, “…11122211111..”, “..11122211111…”, “.1112221111111..”, “.1122211111111..”, “.1112211111111..”, “.1111211111111..”, “.1111221111111..”, “.1111112111111..”, “.1111111111111..”, “..111111111111..”, “…1111111111…”, “…..111111…..”, “…………….”, “…………….”]), calendario: V1([“…………….”, “…1…….1….”, “…1…….1….”, “.1111111111111..”, “.1111111111111..”, “.1122112211221..”, “.1122112211221..”, “.1111111111111..”, “.1122112211221..”, “.1122112211221..”, “.1111111111111..”, “.1122112211221..”, “.1122112211221..”, “.1111111111111..”, “…………….”, “…………….”]), escritorio: V1([“…………….”, “…1111111111…”, “…1111111111…”, “…1221221221…”, “…1221221221…”, “…1111111111…”, “…1221221221…”, “…1221221221…”, “…1111111111…”, “…1221221221…”, “…1221221221…”, “…1111111111…”, “…1111221111…”, “…1111221111…”, “..11111111111..”, “…………….”]), envelope: V1([“…………….”, “…………….”, “.11111111111111.”, “.12111111111121.”, “.11211111111211.”, “.11121111112111.”, “.11112111121111.”, “.11111222211111.”, “.11112111121111.”, “.11121111112111.”, “.11211111111211.”, “.12111111111121.”, “.11111111111111.”, “…………….”, “…………….”, “…………….”]), carteira: V1([“…………….”, “…………….”, “..111111111111..”, “.11111111111111.”, “.11111111111111.”, “.11111111111221.”, “.11111111111121.”, “.11111111111121.”, “.11111111111221.”, “.11111111111111.”, “.11111111111111.”, “..111111111111..”, “…………….”, “…………….”, “…………….”, “…………….”]), euro: V1([“…………….”, “……111111….”, “…..11….11…”, “….11……….”, “….11……….”, “.1111111……..”, “….11……….”, “.111111………”, “….11……….”, “….11……….”, “…..11….11…”, “……111111….”, “…………….”, “…………….”, “…………….”, “…………….”]) }; var Vo = Y1(“ “), Fo = Y1(‘‘), Do = Y1(‘‘);

function Ye(e, t) { u1(t, !0); let a = N(t, “tamanho”, 3, 32), r = N(t, “cor”, 3, “currentColor”), h = N(t, “realce”, 3, “var(–amarelo)”), n = N(t, “titulo”, 3, “”), o = N(t, “sombra”, 3, !0); const l = y(() => Nh[t.nome] ?? []), i = y(() => Math.max(2, Math.round(a() / 16))), v = y(() => o() ? `display:block;filter:drop-shadow(${s(i)}px ${s(i)}px 0 #d9c7a6)` : “display:block”); var p = Do(), c = M(p); { var d = z => { var g = Vo(), m = O(g, !0); P(() => x(m, n())), k(z, g) }; Q(c, z => { n() && z(d) }) } var u = f(c); i1(u, 17, () => s(l), R1, (z, g, m) => { var b = me(), _ = S1(b); i1(_, 17, () => s(g).split(“”), R1, (w, C, R) => { var A = me(), S = S1(A); { var F = J => { var q = Fo(); j(q, “x”, R), j(q, “y”, m), P(() => j(q, “fill”, s(C) === “2” ? h() : r())), k(J, q) }; Q(S, J => { (s(C) === “1” || s(C) === “2”) && J(F) }) } k(w, A) }), k(z, b) }), P(() => { j(p, “width”, a()), j(p, “height”, a()), j(p, “role”, n() ? “img” : “presentation”), j(p, “aria-label”, n() || void 0), j(p, “aria-hidden”, n() ? void 0 : “true”), n1(p, s(v)) }), k(e, p), d1() } var Bo = T(”), Uo = T(”);

function Yo(e, t) { let a = N(t, “tamanho”, 3, 232), r = N(t, “ativo”, 3, !0); const h = y(() => a() / 256); var n = Uo(), o = M(n), l = f(o, 2); let i; var v = f(l, 2); { var p = c => { var d = Bo(), u = M(d), z = f(u, 2), g = f(z, 2), m = f(g, 2), b = f(m, 2); P(() => { n1(d, `left:${28*s(h)}px;top:${28*s(h)}px;gap:${8*s(h)}px`), n1(u, `height:${8*s(h)}px`), n1(z, `height:${8*s(h)}px`), n1(g, `height:${8*s(h)}px`), n1(m, `height:${8*s(h)}px`), n1(b, `width:${8*s(h)}px;height:${12*s(h)}px`) }), k(c, d) }; Q(v, c => { r() && c(p) }) } P(() => { n1(n, `width:${a()}px;height:${a()*.75}px`), j(o, “width”, a()), j(o, “height”, a() * .75), i = k1(l, 1, “led svelte-5tsl3t”, null, i, { on: r() }), n1(l, `left:${220*s(h)}px;top:${140*s(h)}px;width:${12*s(h)}px;height:${8*s(h)}px`) }), k(e, n) } var Jo = T(”), Qo = T(”), Wo = T(”), Go = T(”), Ho = T(““), Ko = T(‘ ‘, 1), Zo = T(”), Xo = T(‘

‘);

function Oh(e, t) { u1(t, !0); const a = 12; let r = N(t, “icone”, 3, “envelope”), h = N(t, “cena”, 3, “pc”); const n = typeof window < “u” && window.matchMedia && window.matchMedia(“(prefers-reduced-motion: reduce)”).matches; let o = r1(ne(n ? 100 : 0)), l = r1(ne(n)); const i = y(() => Math.round(s(o) / 100 * a)), v = y(() => Math.min(t.config.mensagens.length – 1, Math.floor(s(o) / (100 / t.config.mensagens.length)))); oe(() => { if (n) return; const R = setInterval(() => { K(o, Math.min(100, s(o) + 2.5), !0), s(o) >= 100 && (K(l, !0), clearInterval(R)) }, 100); return () => clearInterval(R) }); var p = Xo(), c = M(p), d = M(c); { var u = R => { var A = Wo(), S = M(A), F = M(S); Ye(F, { nome: “euro”, tamanho: 18, cor: “var(–tinta)”, realce: “var(–economia)” }); var J = f(S, 2); { var q = D => { var H = Jo(); k(D, H) }, V = D => { var H = Qo(), t1 = M(H); Ye(t1, { get nome() { return r() }, tamanho: 40, cor: “var(–economia)”, realce: “var(–tinta)” }), k(D, H) }; Q(J, D => { s(l) ? D(V, -1) : D(q) }) } k(R, A) }, z = R => { var A = Go(), S = M(A), F = M(S); L1(F, { get map() { return Ph }, cell: 4 }); var J = f(S, 2); { let D = y(() => !s(l)); Yo(J, { tamanho: 224, get ativo() { return s(D) } }) } var q = f(J, 2), V = M(q); L1(V, { get map() { return Ph }, cell: 3 }), k(R, A) }; Q(d, R => { h() === “extrato” ? R(u) : R(z, -1) }) } var g = f(d, 2); { var m = R => { var A = Ko(), S = S1(A), F = M(S), J = M(F); L1(J, { get map() { return Ch }, cell: 3 }); var q = f(F, 2), V = O(q, !0), D = f(S, 2); i1(D, 21, () => Array(a), R1, (H, t1, o1) => { var z1 = Ho(); let p1; P(() => p1 = k1(z1, 1, “bloco svelte-k3acpr”, null, p1, { cheio: o1 < s(i) })), k(H, z1) }), P(H => { x(V, t.config.mensagens[s(v)]), j(D, “aria-valuenow”, H) }, [() => Math.round(s(o))]), k(R, A) }, b = R => { var A = Zo(), S = O(A, !0); P(() => x(S, t.config.feito)), k(R, A) }; Q(g, R => { s(l) ? R(b, -1) : R(m) }) } var _ = f(c, 2), w = M(_); v1(w, { get onclick() { return t.voltar }, seta: “esq”, children: (R, A) => { var S = s1(); P(() => x(S, ie.voltar)), k(R, S) }, $$slots: { default: !0 } }); var C = f(w, 2); v1(C, { variante: “primario”, get onclick() { return t.avancar }, children: (R, A) => { var S = s1(); P(() => x(S, s(l) ? t.config.botao : t.config.saltar)), k(R, S) }, $$slots: { default: !0 } }), k(e, p), d1() } var el = T(‘

function al(e, t) { let a = N(t, “variante”, 3, “base”), r = N(t, “disabled”, 3, !1), h = N(t, “ariaLabel”, 3, void 0), n = N(t, “type”, 3, “button”); var o = tl(); let l; var i = M(o), v = f(M(i), 2); { var p = u => { var z = el(), g = M(z); L1(g, { get map() { return zo }, cell: 3 }), k(u, z) }; Q(v, u => { a() === “cta” && u(p) }) } var c = f(v, 2), d = M(c); Pt(d, () => t.children ?? ct), P(() => { l = k1(o, 1, `pb ${a()??””}`, “svelte-96g6mr”, l, { cta: a() === “cta” }), j(o, “type”, n()), o.disabled = r(), j(o, “aria-label”, h()) }), N1(“click”, o, function(…u) { t.onclick?.apply(this, u) }), k(e, o) } xe([“click”]); var Eh = Y1(‘‘), rl = T(‘‘);

function hl(e, t) { u1(t, !0); let a = N(t, “tamanho”, 3, 52); const r = “#2b0204”, h = Nh.euro ?? [], n = d => d === “1” || d === “2”, o = (() => { const d = h.map(b => b.split(“”)), u = d.length, z = Math.max(0, …d.map(b => b.length)), g = (b, _) => _ >= 0 && _ < u && b >= 0 && b < d[_].length && n(d[_][b]), m = []; for (let b = 0; b < u; b++) for (let _ = 0; _ < z; _++) { if (g(_, b)) continue; let w = !1; for (let C = -1; C <= 1 && !w; C++) for (let R = -1; R <= 1 && !w; R++)(R || C) && g(_ + R, b + C) && (w = !0); w && m.push({ x: _, y: b }) } return m })(), l = d => d === “2” ? “#fff1e0” : “#ffbf00”; var i = rl(), v = M(i); j(v, “viewBox”, “0 0 16 16”); var p = M(v); i1(p, 17, () => o, R1, (d, u) => { var z = Eh(); j(z, “fill”, r), P(() => { j(z, “x”, s(u).x), j(z, “y”, s(u).y) }), k(d, z) }); var c = f(p); i1(c, 17, () => h, R1, (d, u, z) => { var g = me(), m = S1(g); i1(m, 17, () => s(u).split(“”), R1, (b, _, w) => { var C = me(), R = S1(C); { var A = F => { var J = Eh(); j(J, “x”, w), j(J, “y”, z), P(q => j(J, “fill”, q), [() => l(s(_))]), k(F, J) }, S = y(() => n(s(_))); Q(R, F => { s(S) && F(A) }) } k(b, C) }), k(d, g) }), P(() => { n1(i, `width:${a()}px;height:${a()}px`), j(v, “width”, a()), j(v, “height”, a()) }), k(e, i), d1() } var sl = T(‘

  • ‘), nl = T(‘

    ‘);

    function ol(e, t) { u1(t, !0); const a = [{ sprite: fo, txt: Se.passo1 }, { sprite: $h, txt: Se.passo2 }, { sprite: po, txt: Se.passo3 }]; var r = nl(), h = M(r), n = M(h); hl(n, { tamanho: 48 }); var o = f(h, 2), l = O(o, !0), i = f(o, 2), v = O(i, !0), p = f(i, 2), c = O(p, !0), d = f(p, 2), u = M(d), z = O(u, !0), g = f(u, 2); i1(g, 21, () => a, R1, (R, A) => { var S = sl(), F = M(S), J = M(F); L1(J, { get map() { return s(A).sprite }, cell: 3 }); var q = f(F, 2), V = O(q, !0); P(() => x(V, s(A).txt)), k(R, S) }); var m = f(d, 2), b = M(m), _ = M(b); al(_, { variante: “cta”, get onclick() { return t.avancar }, children: (R, A) => { var S = s1(); P(() => x(S, Se.botao)), k(R, S) }, $$slots: { default: !0 } }); var w = f(_, 2), C = M(w); L1(C, { get map() { return Mo }, cell: 4 }), P(() => { x(l, Se.tag), x(v, Se.titulo), x(c, Se.premissa), x(z, Se.comoTitulo) }), k(e, r), d1() } var ll = T(‘‘), il = T(‘

    ‘);

    function vl(e, t) { u1(t, !0); let a = N(t, “estado”, 7); var r = il(), h = M(r), n = O(h, !0), o = f(h, 2), l = M(o), i = O(l, !0), v = f(l, 2), p = f(o, 2), c = O(p, !0), d = f(p, 2); i1(d, 21, () => Ct, R1, (m, b, _) => { var w = ll(); let C; j(w, “aria-label”, `Personagem ${_+1}`); var R = M(w); let A; var S = M(R); { let F = y(() => a().avatar === _ ? 64 : 52); Ga(S, { get tamanho() { return s(F) }, get pele() { return s(b).pele }, get cabelo() { return s(b).cabelo }, get roupa() { return s(b).roupa }, get estilo() { return s(b).estilo } }) } P(() => { C = k1(w, 1, “opcao svelte-6nek8t”, null, C, { ativa: a().avatar === _ }), j(w, “aria-checked”, a().avatar === _), A = k1(R, 1, “av svelte-6nek8t”, null, A, { respira: a().avatar === _ }) }), N1(“click”, w, () => a().avatar = _), k(m, w) }); var u = f(d, 2), z = M(u); v1(z, { get onclick() { return t.voltar }, seta: “esq”, children: (m, b) => { var _ = s1(); P(() => x(_, ie.voltar)), k(m, _) }, $$slots: { default: !0 } }); var g = f(z, 2); v1(g, { variante: “primario”, get onclick() { return t.avancar }, children: (m, b) => { var _ = s1(); P(() => x(_, nt.botao)), k(m, _) }, $$slots: { default: !0 } }), P(() => { x(n, nt.titulo), x(i, nt.rotuloNome), j(v, “placeholder”, nt.placeholderNome), x(c, nt.escolha), j(d, “aria-label”, nt.escolha) }), Ba(v, () => a().nome, m => a().nome = m), k(e, r), d1() } xe([“click”]); var cl = T(‘

    ‘);

    function ul(e, t) { u1(t, !0); let a = N(t, “estado”, 7);

    function r(g) { a().cidade = g, a().area = g } var h = cl(), n = M(h), o = O(n, !0), l = f(n, 2), i = O(l, !0), v = f(l, 2), p = M(v); { let g = y(() => a().cidade === “Lisboa”), m = y(() => a().cidade === “Lisboa”); v1(p, { variante: “opcao”, get selecionado() { return s(g) }, get ariaPressed() { return s(m) }, onclick: () => r(“Lisboa”), children: (b, _) => { var w = s1(); P(() => x(w, ht.lisboa)), k(b, w) }, $$slots: { default: !0 } }) } var c = f(p, 2); { let g = y(() => a().cidade === “Porto”), m = y(() => a().cidade === “Porto”); v1(c, { variante: “opcao”, get selecionado() { return s(g) }, get ariaPressed() { return s(m) }, onclick: () => r(“Porto”), children: (b, _) => { var w = s1(); P(() => x(w, ht.porto)), k(b, w) }, $$slots: { default: !0 } }) } var d = f(v, 2), u = M(d); v1(u, { get onclick() { return t.voltar }, seta: “esq”, children: (g, m) => { var b = s1(); P(() => x(b, ie.voltar)), k(g, b) }, $$slots: { default: !0 } }); var z = f(u, 2); { let g = y(() => !a().cidade); v1(z, { variante: “primario”, get disabled() { return s(g) }, get onclick() { return t.avancar }, children: (m, b) => { var _ = s1(); P(() => x(_, ht.continuar)), k(m, _) }, $$slots: { default: !0 } }) } P(() => { x(o, ht.titulo), x(i, ht.texto), j(v, “aria-label”, ht.titulo) }), k(e, h), d1() } var dl = T(‘ ‘), fl = T(‘

    ‘);

    function pl(e, t) { u1(t, !0); let a = N(t, “estado”, 7); const r = [“presencial”, “hibrido”, “teletrabalho”]; var h = fl(), n = M(h), o = O(n, !0), l = f(n, 2), i = O(l, !0), v = f(l, 2); i1(v, 21, () => r, R1, (u, z) => { { let g = y(() => a().regime === s(z)), m = y(() => a().regime === s(z)); v1(u, { variante: “opcao”, get selecionado() { return s(g) }, get ariaPressed() { return s(m) }, onclick: () => a().regime = s(z), children: (b, _) => { var w = dl(), C = M(w), R = O(C, !0), A = f(C, 2), S = O(A, !0); P(() => { x(R, st.opcoes[s(z)].rotulo), x(S, st.opcoes[s(z)].sub) }), k(b, w) }, $$slots: { default: !0 } }) } }); var p = f(v, 2), c = M(p); v1(c, { get onclick() { return t.voltar }, seta: “esq”, children: (u, z) => { var g = s1(); P(() => x(g, ie.voltar)), k(u, g) }, $$slots: { default: !0 } }); var d = f(c, 2); { let u = y(() => !a().regime); v1(d, { variante: “primario”, get disabled() { return s(u) }, get onclick() { return t.avancar }, children: (z, g) => { var m = s1(); P(() => x(m, st.continuar)), k(z, m) }, $$slots: { default: !0 } }) } P(() => { x(o, st.titulo), x(i, st.texto), j(v, “aria-label”, st.titulo) }), k(e, h), d1() } const Ml = “https://docs.google.com/spreadsheets/d/e/2PACX-1vQMpYQLYwrmlwdgIMZ-T6NQdUvMJ2FbGeZ6VMmLQFMdqVhcNn1CSbNgtkWYdy1i8SqtD_WEk5Tf34L_/pub?output=csv”; async function zl() { try { const e = await fetch(Ml, { cache: “no-store” }); if (!e.ok) throw new Error(`HTTP ${e.status}`); return await e.text() } catch (e) { return console.error(“N\xE3o foi poss\xEDvel obter os dados da folha:”, e), “” } } const ml = { Lisboa: “em Lisboa”, Amadora: “na Amadora”, Oeiras: “em Oeiras”, Sintra: “em Sintra”, Cascais: “em Cascais”, Mafra: “em Mafra”, Loures: “em Loures”, Odivelas: “em Odivelas”, “Vila Franca de Xira”: “em Vila Franca de Xira”, Seixal: “no Seixal”, Sesimbra: “em Sesimbra”, Set\u00FAbal: “em Set\xFAbal”, Montijo: “no Montijo”, Almada: “em Almada”, Alcochete: “em Alcochete”, Barreiro: “no Barreiro”, Moita: “na Moita”, Palmela: “em Palmela”, Porto: “no Porto”, Arouca: “em Arouca”, Espinho: “em Espinho”, Maia: “na Maia”, Gondomar: “em Gondomar”, “S\xE3o Jo\xE3o da Madeira”: “em S\xE3o Jo\xE3o da Madeira”, Matosinhos: “em Matosinhos”, Valongo: “em Valongo”, “Vila do Conde”: “em Vila do Conde”, “Vila Nova de Gaia”: “em Vila Nova de Gaia”, “Santa Maria da Feira”: “em Santa Maria da Feira”, “Santo Tirso”: “em Santo Tirso”, Paredes: “em Paredes”, “P\xF3voa de Varzim”: “na P\xF3voa de Varzim”, Trofa: “na Trofa”, “Vale de Cambra”: “em Vale de Cambra”, “Oliveira de Azem\xE9is”: “em Oliveira de Azem\xE9is” };

    function gl(e) { const t = []; let a = “”, r = [], h = !1; const n = e.replace(/\r\n?/g, ` `); for (let o = 0; o < n.length; o++) { const l = n[o]; h ? l === ‘”‘ ? n[o + 1] === ‘”‘ ? (a += ‘”‘, o++) : h = !1 : a += l : l === ‘”‘ ? h = !0 : l === “,” ? (r.push(a), a = “”) : l === ` ` ? (r.push(a), t.push(r), r = [], a = “”) : a += l } return (a !== “” || r.length) && (r.push(a), t.push(r)), t.filter(o => o.length > 1 || o.length === 1 && o[0] !== “”) } const Th = e => (e ?? “”).normalize(“NFD”).replace(/[\u0300-\u036f]/g, “”).toLowerCase().replace(/\s+/g, ” “).trim(), Q1 = e => { const t = (e ?? “”).trim(); return t === “” ? “” : +t };

    function kl(e) { const t = gl(e); if (!t.length) return []; const a = t[0], r = new Map(a.map((i, v) => [Th(i), v])), h = i => r.get(Th(i)) ?? -1, n = { area: “\xC1rea”, concelho: “Concelho”, tempo_carro_total_min: “Carro: tempo total em viagens (min/dia)”, km_ida_volta: “Km total ida e volta (por dia)”, portagens_dia_eur: “Portagens (\u20AC/dia)”, custo_mes_hibrido_gasoleo: “Custo m\xEAs h\xEDbrido \u2013 gas\xF3leo (\u20AC)”, custo_mes_presencial_gasoleo: “Custo m\xEAs presencial \u2013 gas\xF3leo (\u20AC)”, custo_mes_hibrido_gasolina: “Custo m\xEAs h\xEDbrido \u2013 gasolina (\u20AC)”, custo_mes_presencial_gasolina: “Custo m\xEAs presencial \u2013 gasolina (\u20AC)”, custo_mes_hibrido_eletrico: “Custo m\xEAs h\xEDbrido \u2013 el\xE9trico (\u20AC)”, custo_mes_presencial_eletrico: “Custo m\xEAs presencial \u2013 el\xE9trico (\u20AC)”, transporte_publico: “TP: transportes usados”, tempo_tp_total_min: “TP: tempo total em viagens (min/dia)”, passe_mensal_eur: “TP: passe mensal (\u20AC)”, mensalidade_credito_eur: “Presta\xE7\xE3o mensal (\u20AC)”, renda_100m2_eur: “Renda mensal (\u20AC)” }, o = {}, l = []; for (const [i, v] of Object.entries(n)) { const p = h(v); o[i] = p, p === -1 && l.push(v) } return l.length && console.error(`Folha de dados: ${l.length} coluna(s) n\xE3o encontrada(s): ${l.map(i=>`”${i}”`).join(“, “)}. Os cabe\xE7alhos da folha publicada podem ter mudado \u2014 estes campos v\xE3o ficar vazios.`), t.slice(1).map(i => { const v = d => (i[o[d]] ?? “”).trim(), p = v(“area”), c = v(“concelho”); return { area: p, concelho: c, centro: c === p ? 1 : 0, em_concelho: ml[c] ?? `em ${c}`, renda_casa: Q1(v(“renda_100m2_eur”)), prestacao_casa: Q1(v(“mensalidade_credito_eur”)), km_dia: Q1(v(“km_ida_volta”)), tempo_carro_min: (() => { const d = Q1(v(“tempo_carro_total_min”)); return d === “” ? “” : d / 2 })(), tempo_transportes_min: (() => { const d = Q1(v(“tempo_tp_total_min”)); return d === “” ? “” : d / 2 })(), portagens_dia: Q1(v(“portagens_dia_eur”)), transporte_modo: v(“transporte_publico”), passe: Q1(v(“passe_mensal_eur”)), gasoleo_hibrido: Q1(v(“custo_mes_hibrido_gasoleo”)), gasoleo_presencial: Q1(v(“custo_mes_presencial_gasoleo”)), gasolina_hibrido: Q1(v(“custo_mes_hibrido_gasolina”)), gasolina_presencial: Q1(v(“custo_mes_presencial_gasolina”)), eletrico_hibrido: Q1(v(“custo_mes_hibrido_eletrico”)), eletrico_presencial: Q1(v(“custo_mes_presencial_eletrico”)) } }) } const ta = kl(await zl()), aa = new Map(ta.map(e => [e.concelho, e]));

    function Ha(e) { return ta.filter(t => t.area === e) } const bl = { Lisboa: ta.find(e => e.area === “Lisboa” && e.centro), Porto: ta.find(e => e.area === “Porto” && e.centro) }, ra = (e, t) => e ? t === “arrendar” ? e.renda_casa : e.prestacao_casa == null || e.prestacao_casa === “” ? null : +e.prestacao_casa : null;

    function wl(e, t, a, r = “metropolitano”) { return a === “teletrabalho” ? 0 : t === “transportes” ? (Array.isArray(r) ? r : [r]).reduce((h, n) => h + (Xt[n] || 0), 0) : +e[`${t}_${a}`] }

    function yl(e, t, a) { return a === “teletrabalho” ? 0 : 2 * (t === “transportes” ? +e.tempo_transportes_min : +e.tempo_carro_min) * lo[a] / 60 }

    function Ka(e, { modoCasa: t, meio: a, regime: r, passes: h, rendaCustom: n = null, passeCustom: o = null } = {}) { if (!e) return { concelho: void 0, casa: null, deslocacao: 0, custo: null, salarioNecessario: null, horas: 0, diasTrabalho: 0 }; const l = n ?? ra(e, t), i = a === “transportes” && r !== “teletrabalho” && o != null ? o : wl(e, a, r, h), v = l == null ? null : l + i, p = yl(e, a, r); return { concelho: e.concelho, casa: l, deslocacao: i, custo: v, salarioNecessario: l == null ? null : l / Qa, horas: p, diasTrabalho: p / 8 } }

    function xl(e, t) { const a = e.map(r => ra(r, t)).filter(r => r != null); return a.length ? { min: Math.min(…a), max: Math.max(…a) } : { min: null, max: null } }

    function _l(e, t, a) { if (e == null || t == null || a == null || a <= t) return 2; const r = Math.floor((e – t) / (a – t) * 5); return Math.max(0, Math.min(4, r)) } var $l = T(‘sem dados‘), Pl = T(‘ ‘), Cl = T(‘ ‘), Rl = T(‘‘), Al = T(‘ ‘), Sl = T(‘‘), Nl = T(‘‘), Ol = T(‘

    Escolher o munic\xEDpio

    ‘);

    function El(e, t) { u1(t, !0); let a = N(t, “estado”, 7); const r = y(() => a().cidade), h = y(() => a().modoCasa ?? “arrendar”), n = L => ra(L, s(h)), o = y(() => xl(Ha(s(r)), s(h))), l = L => _l(L, s(o).min, s(o).max), i = L => typeof L.km_dia == “number” ? Math.round(L.km_dia / 2) : null, v = y(() => Ha(s(r)).map(L => ({ nome: L.concelho, renda: n(L), km: i(L) })).sort((L, Z) => L.renda == null && Z.renda == null ? 0 : L.renda == null ? 1 : Z.renda == null ? -1 : L.renda – Z.renda)), p = y(() => s(v).find(L => L.nome === a().concelho)?.renda ?? null), c = y(() => a().concelho ? aa.get(a().concelho) : null), d = y(() => s(c)?.em_concelho ?? `em ${a().concelho}`), u = y(() => !!s(c) && n(s(c)) == null), z = y(() => !!a().concelho && (!s(u) || a().rendaCustom != null)), g = L => Math.round(L / 10) * 10, m = y(() => { if (s(o).min == null || s(o).max == null) return []; const L = (s(o).max – s(o).min) / 5; return Array.from({ length: 5 }, (Z, l1) => `${g(s(o).min+l1*L)}\u2013${g(s(o).min+(l1+1)*L)}`) }), b = y(() => s(v).some(L => L.renda == null)); let _ = r1(ne(Ue(() => a().rendaCustom != null ? String(a().rendaCustom) : “”)));

    function w(L) { a().concelho = L, a().rendaCustom = null, K(_, “”) } oe(() => { const L = Number(s(_).replace(/[^0-9]/g, “”)); a().rendaCustom = s(_).trim() !== “” && L > 0 ? L : null }); var C = Ol(), R = f(M(C), 2), A = O(R, !0), S = f(R, 2); i1(S, 21, () => s(v), L => L.nome, (L, Z) => { const l1 = y(() => s(Z).nome === a().concelho && a().rendaCustom != null), c1 = y(() => s(l1) ? a().rendaCustom : s(Z).renda), U = y(() => s(c1) == null); var B = Rl(); let E; var b1 = M(B), I = O(b1, !0), W = f(b1, 2); { var h1 = m1 => { var P1 = $l(); k(m1, P1) }, $1 = m1 => { var P1 = Pl(), G1 = O(P1, !0); P(ve => x(G1, ve), [() => J1(s(c1))]), k(m1, P1) }; Q(W, m1 => { s(U) ? m1(h1) : m1($1, -1) }) } var M1 = f(W, 2); { var W1 = m1 => { var P1 = Cl(), G1 = O(P1); P(() => x(G1, `a ${s(Z).km??””} km`)), k(m1, P1) }; Q(M1, m1 => { s(Z).km != null && m1(W1) }) } P(m1 => { E = k1(B, 1, `chip ${m1??””}`, “svelte-185hxsx”, E, { sel: a().concelho === s(Z).nome }), j(B, “aria-checked”, a().concelho === s(Z).nome), x(I, s(Z).nome) }, [() => s(U) ? “sem-dados” : “c” + l(s(c1))]), N1(“click”, B, () => w(s(Z).nome)), k(L, B) }); var F = f(S, 2), J = M(F), q = O(J, !0), V = f(J, 2), D = M(V); i1(D, 20, () => [“c0”, “c1”, “c2”, “c3”, “c4″], R1, (L, Z, l1) => { var c1 = Al(), U = M(c1), B = f(U, 2), E = O(B, !0); P(() => { k1(U, 1, `passo ${Z??””}`, “svelte-185hxsx”), x(E, s(m)[l1] ?? “”) }), k(L, c1) }); var H = f(D, 2); { var t1 = L => { var Z = Sl(); k(L, Z) }; Q(H, L => { s(b) && L(t1) }) } var o1 = f(F, 2); { var z1 = L => { var Z = Nl(), l1 = M(Z), c1 = O(l1, !0), U = f(l1, 2), B = f(M(U), 2); P((E, b1) => { x(c1, E), j(B, “placeholder”, b1) }, [() => s(u) ? Rt.semDados(s(h)) : Rt.rendaPropria(s(h), s(d)), () => s(p) != null ? so(s(p)) : “”]), Ba(B, () => s(_), E => K(_, E)), k(L, Z) }; Q(o1, L => { a().concelho && L(z1) }) } var p1 = f(o1, 2), O1 = M(p1); v1(O1, { get onclick() { return t.voltar }, seta: “esq”, children: (L, Z) => { var l1 = s1(); P(() => x(l1, ie.voltar)), k(L, l1) }, $$slots: { default: !0 } }); var E1 = f(O1, 2); { let L = y(() => !s(z)); v1(E1, { variante: “primario”, get disabled() { return s(L) }, get onclick() { return t.avancar }, children: (Z, l1) => { var c1 = s1(); P(() => x(c1, Rt.continuar)), k(Z, c1) }, $$slots: { default: !0 } }) } P((L, Z) => { x(A, L), x(q, Z) }, [() => Rt.texto(s(r)), () => Rt.legendaTitulo(s(h))]), k(e, C), d1() } xe([“click”]); var Tl = T(‘

    ‘);

    function jl(e, t) { u1(t, !0); let a = N(t, “estado”, 7); var r = Tl(), h = M(r), n = O(h, !0), o = f(h, 2), l = O(o, !0), i = f(o, 2), v = M(i); let p; var c = f(M(v), 2), d = M(c); Ye(d, { nome: “chave”, tamanho: 40, cor: “currentColor” }); var u = f(c, 2), z = O(u, !0), g = f(u, 2), m = O(g, !0), b = f(v, 2); let _; var w = f(M(b), 2), C = M(w); Ye(C, { nome: “moeda”, tamanho: 40, cor: “currentColor” }); var R = f(w, 2), A = O(R, !0), S = f(R, 2), F = O(S, !0), J = f(i, 2), q = O(J, !0), V = f(J, 2), D = M(V); v1(D, { get onclick() { return t.voltar }, seta: “esq”, children: (t1, o1) => { var z1 = s1(); P(() => x(z1, ie.voltar)), k(t1, z1) }, $$slots: { default: !0 } }); var H = f(D, 2); { let t1 = y(() => !a().modoCasa); v1(H, { variante: “primario”, get disabled() { return s(t1) }, get onclick() { return t.avancar }, children: (o1, z1) => { var p1 = s1(); P(() => x(p1, _e.continuar)), k(o1, p1) }, $$slots: { default: !0 } }) } P(() => { x(n, _e.titulo), x(l, _e.texto), j(i, “aria-label”, _e.titulo), p = k1(v, 1, “cartao svelte-1hhfjbu”, null, p, { ativo: a().modoCasa === “arrendar” }), j(v, “aria-checked”, a().modoCasa === “arrendar”), x(z, _e.arrendar), x(m, _e.arrendarSub), _ = k1(b, 1, “cartao svelte-1hhfjbu”, null, _, { ativo: a().modoCasa === “comprar” }), j(b, “aria-checked”, a().modoCasa === “comprar”), x(A, _e.comprar), x(F, _e.comprarSub), x(q, _e.nota) }), N1(“click”, v, () => a().modoCasa = “arrendar”), N1(“click”, b, () => a().modoCasa = “comprar”), k(e, r), d1() } xe([“click”]); var ql = T(‘ ‘), Il = T(‘

    ‘);

    function Ll(e, t) { u1(t, !0); let a = N(t, “estado”, 7); var r = Il(), h = M(r), n = O(h, !0), o = f(h, 2), l = O(o, !0), i = f(o, 2); i1(i, 21, () => io, R1, (d, u) => { { let z = y(() => a().meio === s(u)), g = y(() => a().meio === s(u)); v1(d, { variante: “opcao”, get selecionado() { return s(z) }, get ariaPressed() { return s(g) }, onclick: () => a().meio = s(u), children: (m, b) => { var _ = ql(), w = M(_); Ye(w, { get nome() { return xh[s(u)] }, tamanho: 22, cor: “currentColor” }); var C = f(w); P(() => x(C, ` ${vo[s(u)]??””}`)), k(m, _) }, $$slots: { default: !0 } }) } }); var v = f(i, 2), p = M(v); v1(p, { get onclick() { return t.voltar }, seta: “esq”, children: (d, u) => { var z = s1(); P(() => x(z, ie.voltar)), k(d, z) }, $$slots: { default: !0 } }); var c = f(p, 2); v1(c, { variante: “primario”, get onclick() { return t.avancar }, children: (d, u) => { var z = s1(); P(() => x(z, Wa.verContas)), k(d, z) }, $$slots: { default: !0 } }), P(() => { x(n, Wa.titulo), x(l, Wa.texto) }), k(e, r), d1() } var Vl = T(‘

    O passe

    ‘);

    function Fl(e, t) { u1(t, !0); let a = N(t, “estado”, 7); const r = y(() => aa.get(a().concelho)), h = y(() => { const V = [{ id: “metropolitano”, rotulo: `Passe metropolitano: ${J1(Xt.metropolitano)}` }]; return s(r)?.centro && V.push({ id: “municipal”, rotulo: `Passe municipal: ${J1(Xt.municipal)}` }), V.push({ id: “ferroviario_verde”, rotulo: `Passe Ferrovi\xE1rio Verde: ${J1(Xt.ferroviario_verde)}` }), V });

    function n(V) { const D = new Set(a().passes); D.has(V) ? D.delete(V) : D.add(V), a().passes = […D] } oe(() => { const V = s(h).map(H => H.id), D = a().passes.filter(H => V.includes(H)); D.join() !== a().passes.join() && (a().passes = D) }); const o = y(() => a().passes.length === 0 && a().passeCustom == null); let l = r1(ne(Ue(() => a().passeCustom != null ? String(a().passeCustom) : “”))); oe(() => { const V = parseInt(s(l).replace(/[^\d]/g, “”), 10); a().passeCustom = Number.isFinite(V) && s(l).trim() !== “” ? V : null }); const i = y(() => a().passeCustom != null); var v = Vl(), p = f(M(v), 2), c = O(p, !0), d = f(p, 2); let u; var z = M(d), g = M(z), m = f(g); { var b = V => { var D = s1(); P(() => x(D, ` ${ot.multi}`)), k(V, D) }; Q(m, V => { s(h).length > 1 && V(b) }) } var _ = f(z, 2); i1(_, 17, () => s(h), R1, (V, D) => { { let H = y(() => a().passes.includes(s(D).id)), t1 = y(() => a().passes.includes(s(D).id)); v1(V, { variante: “opcao”, get selecionado() { return s(H) }, get ariaPressed() { return s(t1) }, onclick: () => n(s(D).id), children: (o1, z1) => { var p1 = s1(); P(() => x(p1, s(D).rotulo)), k(o1, p1) }, $$slots: { default: !0 } }) } }); var w = f(d, 2), C = M(w), R = O(C, !0), A = f(C, 2), S = f(M(A), 2), F = f(w, 2), J = M(F); v1(J, { get onclick() { return t.voltar }, seta: “esq”, children: (V, D) => { var H = s1(); P(() => x(H, ie.voltar)), k(V, H) }, $$slots: { default: !0 } }); var q = f(J, 2); v1(q, { variante: “primario”, get disabled() { return s(o) }, get onclick() { return t.avancar }, children: (V, D) => { var H = s1(); P(() => x(H, ot.continuar)), k(V, H) }, $$slots: { default: !0 } }), P(() => { x(c, ot.texto), u = k1(d, 1, “passes svelte-1sgrhi9”, null, u, { esmaecido: s(i) }), x(g, ot.rot), x(R, ot.outroRot), j(S, “placeholder”, ot.outroPlaceholder) }), Ba(S, () => s(l), V => K(l, V)), k(e, v), d1() } var Dl = Y1(‘‘);

    function jh(e, t) {
    let a = N(t, “celula”, 3, 4);
    const r = y(a);
    var h = Dl();
    P(() => {
    j(h, “width”, 44 * a()), j(h, “height”, 38 * a()), n1(h, `display:block;filter:drop-shadow(${s(r)}px ${s(r)}px 0 #d9c7a6)`)
    }), k(e, h)
    }
    var Bl = Y1(‘‘);

    function Ul(e, t) {
    let a = N(t, “celula”, 3, 4);
    const r = y(a);
    var h = Bl();
    P(() => {
    j(h, “width”, 44 * a()), j(h, “height”, 38 * a()), n1(h, `display:block;filter:drop-shadow(${s(r)}px ${s(r)}px 0 #d9c7a6)`)
    }), k(e, h)
    }
    let Yl = 0;

    function Jl() {
    return Yl += 1
    }
    var Ql = Y1(‘‘);

    function Wl(e, t) {
    let a = N(t, “largura”, 3, 236),
    r = N(t, “celula”, 3, 2);
    const h = `carril-${Jl()}`;
    var n = Ql(),
    o = M(n),
    l = O(o),
    i = f(o);
    P(() => {
    j(n, “height”, 32 * r()), j(n, “viewBox”, `0 0 ${a()/r()} 32`), j(l, “id”, h), j(i, “fill”, `url(#${h})`)
    }), k(e, n)
    }
    let Gl = 0;

    function Hl() {
    return Gl += 1
    }
    var Kl = Y1(‘‘);

    function Zl(e, t) {
    let a = N(t, “largura”, 3, 242),
    r = N(t, “celula”, 3, 2);
    const h = `estrada-${Hl()}`;
    var n = Kl(),
    o = M(n),
    l = O(o),
    i = f(o);
    P(() => {
    j(n, “height”, 38 * r()), j(n, “viewBox”, `0 0 ${a()/r()} 38`), j(l, “id”, h), j(i, “fill”, `url(#${h})`)
    }), k(e, n)
    }
    var Xl = T(‘

    Trabalha a partir de casa
    ‘, 1),
    ei = T(‘ ‘, 1),
    ti = T(‘

    ‘);

    function ai(e, t) {
    u1(t, !0);
    let a = N(t, “meio”, 3, “transportes”),
    r = N(t, “origem”, 3, “”),
    h = N(t, “destino”, 3, “”);
    const n = y(() => t.regime === “teletrabalho”),
    o = y(() => a() === “transportes”);
    var l = ti(),
    i = M(l);
    {
    var v = c => {
    var d = Xl(),
    u = S1(d),
    z = M(u);
    jh(z, {
    celula: 2
    }), k(c, d)
    },
    p = c => {
    var d = ei(),
    u = S1(d),
    z = M(u),
    g = M(z);
    jh(g, {
    celula: 2
    });
    var m = f(z, 2),
    b = M(m),
    _ = M(b);
    {
    var w = t1 => {
    Wl(t1, {
    celula: 1
    })
    },
    C = t1 => {
    Zl(t1, {
    celula: 1
    })
    };
    Q(_, t1 => {
    s(o) ? t1(w) : t1(C, -1)
    })
    }
    var R = f(b, 2),
    A = M(R);
    Ga(A, {
    tamanho: 48,
    andar: !0,
    get pele() {
    return t.avatar.pele
    },
    get cabelo() {
    return t.avatar.cabelo
    },
    get roupa() {
    return t.avatar.roupa
    },
    get estilo() {
    return t.avatar.estilo
    }
    });
    var S = f(m, 2),
    F = M(S);
    Ul(F, {
    celula: 2
    });
    var J = f(u, 2),
    q = M(J),
    V = O(q, !0),
    D = f(q, 2),
    H = O(D, !0);
    P(() => {
    x(V, r()), x(H, h())
    }), k(c, d)
    };
    Q(i, c => {
    s(n) ? c(v) : c(p, -1)
    })
    }
    k(e, l), d1()
    }

    function Ne(e, t) {
    u1(t, !0);
    let a = N(t, “valor”, 3, 0),
    r = N(t, “fmt”, 3, v => String(v)),
    h = N(t, “dur”, 3, 650),
    n = N(t, “ativo”, 3, !0),
    o = r1(0),
    l = !1;
    oe(() => {
    if (!n()) return;
    const v = a() ?? 0,
    p = Ue(() => s(o));
    if (p === v) return;
    if (l) {
    K(o, v, !0);
    return
    }
    l = !0;
    let c = 0,
    d = null,
    u = !1;
    const z = m => {
    if (u) return;
    d === null && (d = m);
    const b = Math.min(1, (m – d) / h());
    K(o, p + (v – p) * b), b < 1 ? c = requestAnimationFrame(z) : u = !0
    };
    c = requestAnimationFrame(z);
    const g = setTimeout(() => {
    u || (u = !0, K(o, v, !0))
    }, h() + 150);
    return () => {
    u = !0, c && cancelAnimationFrame(c), clearTimeout(g)
    }
    });
    var i = s1();
    P(v => x(i, v), [() => r()(s(o))]), k(e, i), d1()
    }
    var ri = T(‘+ ‘, 1),
    hi = T(‘

    ‘),
    si = T(‘ ‘, 1),
    ni = T(‘‘),
    oi = T(‘ ‘),
    li = T(”),
    ii = T(‘

    ‘);

    function ci(e, t) {
    u1(t, !0);
    let a = N(t, “estado”, 7);
    const r = “section-Testemunhos-P9KeSsM8DT”;

    function h() {
    const $ = document.getElementById(r);
    $ ? $.scrollIntoView({
    behavior: “smooth”,
    block: “start”
    }) : window.location.hash = r
    }
    const n = y(() => Ct[a().avatar] ?? Ct[0]),
    o = y(() => a().nome?.trim()),
    l = y(() => s(o) ? `AS CONTAS DE ${s(o).toUpperCase()}` : B1.titulo),
    i = y(() => a().regime !== “teletrabalho”),
    v = y(() => ({
    modoCasa: a().modoCasa,
    meio: a().meio,
    regime: a().regime,
    passes: a().passes,
    passeCustom: a().passeCustom
    })),
    p = y(() => ({
    …s(v),
    rendaCustom: a().rendaCustom
    })),
    c = y(() => aa.get(a().concelho)),
    d = y(() => bl[a().cidade]?.concelho),
    u = y(() => Ka(s(c), s(p))),
    z = y(() => Ha(a().cidade)),
    g = y(() => a().cidade === “Porto” ? “do Porto” : “de Lisboa”),
    m = y(() => a().concelho === “Lisboa” || a().concelho === “Porto” ? `no ${a().concelho}` : `em ${a().concelho}`),
    b = y(() => s(u).custo),
    _ = y(() => s(u).casa),
    w = y(() => s(u).deslocacao),
    C = y(() => s(u).horas),
    R = y(() => s(C) * 11),
    A = y(() => s(u).salarioNecessario),
    S = y(() => co(s(c), a().meio)),
    F = “var(–economia)”,
    J = “var(–amarelo)”,
    q = y(() => s(z).filter($ => $.concelho !== a().concelho && ra($, a().modoCasa) != null).map($ => ({
    nome: $.concelho,
    rotulo: $.concelho === s(d) ? `${$.concelho} (centro)` : $.concelho
    })).sort(($, Y) => $.rotulo.localeCompare(Y.rotulo))),
    V = y(() => s(d) && s(d) !== a().concelho ? s(d) : s(q)[0]?.nome ?? null),
    D = y(() => a().comparado && s(q).some($ => $.nome === a().comparado) ? a().comparado : s(V)),
    H = y(() => s(q).find($ => $.nome === s(D))?.rotulo ?? s(D)),
    t1 = y(() => Ka(aa.get(s(D)), s(v))),
    o1 = y(() => {
    const $ = s(z).map(a1 => Ka(a1, {
    …s(v),
    regime: “presencial”
    })),
    Y = a1 => Math.max(1, …$.map(w1 => w1[a1] ?? 0));
    return {
    custo: Y(“custo”),
    casa: Y(“casa”),
    deslocacao: Y(“deslocacao”),
    horas: Y(“horas”)
    }
    }),
    z1 = y(() => Math.max(s(o1).custo, s(o1).casa, s(o1).deslocacao) * 1.02),
    p1 = $ => $ === “horas” ? s(o1).horas * 1.02 : $ === “salarioNecessario” ? s(z1) / Qa : s(z1),
    O1 = y(() => a().modoCasa === “arrendar” ? “Renda mensal” : “Presta\xE7\xE3o mensal”),
    E1 = y(() => [s(i) ? {
    nome: “Total”,
    campo: “custo”,
    sub: “Casa e desloca\xE7\xE3o”,
    fmt: J1,
    grossaAbaixo: !0
    } : null, {
    nome: “Casa”,
    campo: “casa”,
    sub: s(O1),
    fmt: J1
    }, s(i) ? {
    nome: “Desloca\xE7\xF5es”,
    campo: “deslocacao”,
    sub: null,
    fmt: J1
    } : null, s(i) ? {
    nome: “Tempo em viagem”,
    campo: “horas”,
    sub: null,
    fmt: Zt,
    grossaAcima: !0
    } : null, {
    nome: “Rendimento necess\xE1rio”,
    campo: “salarioNecessario”,
    sub: “Para a habita\xE7\xE3o n\xE3o passar 45% do rendimento l\xEDquido do agregado”,
    fmt: J1,
    grossaAcima: !s(i)
    }].filter(Boolean));

    function L($, Y) {
    if ($ == null || $ <= 0) return 0;
    const a1 = $ / p1(Y) * 80;
    return Math.max(1.5, Math.min(80, a1))
    }
    let Z = r1(null),
    l1 = r1(null),
    c1 = r1(null),
    U = r1(null),
    B = r1(null),
    E = r1(!1),
    b1 = r1(!1),
    I = r1(!1),
    W = r1(!1);

    function h1($, Y) {
    if (!$) return;
    if (typeof IntersectionObserver > “u”) {
    Y(!0);
    return
    }
    const a1 = new IntersectionObserver(w1 => {
    w1.some(C1 => C1.isIntersecting) && (Y(!0), a1.disconnect())
    }, {
    threshold: .4
    });
    return a1.observe($), () => a1.disconnect()
    }
    oe(() => h1(s(Z), $ => K(E, $, !0))), oe(() => h1(s(l1), $ => K(b1, $, !0))), oe(() => h1(s(c1), $ => K(I, $, !0))), oe(() => h1(s(B), $ => K(W, $, !0)));
    const $1 = $ => `${Math.round($)} h`;
    var M1 = vi(),
    W1 = M(M1),
    m1 = O(W1, !0),
    P1 = f(W1, 2),
    G1 = M(P1);
    ai(G1, {
    get avatar() {
    return s(n)
    },
    get regime() {
    return a().regime
    },
    get meio() {
    return a().meio
    },
    get origem() {
    return a().concelho
    },
    get destino() {
    return a().cidade
    }
    });
    var ve = f(G1, 2),
    ha = M(ve);
    {
    var sa = $ => {
    var Y = s1(“\u2014”);
    k($, Y)
    },
    St = $ => {
    Ne($, {
    get valor() {
    return s(b)
    },
    get fmt() {
    return J1
    },
    get ativo() {
    return s(E)
    }
    })
    };
    Q(ha, $ => {
    s(b) == null ? $(sa) : $(St, -1)
    })
    }
    var lt = f(ve, 2),
    na = O(lt, !0),
    it = f(lt, 2),
    Nt = M(it),
    Ot = M(Nt),
    oa = M(Ot);
    L1(oa, {
    get map() {
    return $h
    },
    cell: 3
    });
    var te = f(Ot, 2),
    ce = M(te),
    Je = M(ce);
    {
    var la = $ => {
    var Y = s1(“\u2014”);
    k($, Y)
    },
    Et = $ => {
    Ne($, {
    get valor() {
    return s(_)
    },
    get fmt() {
    return J1
    },
    get ativo() {
    return s(E)
    }
    })
    };
    Q(Je, $ => {
    s(_) == null ? $(la) : $(Et, -1)
    })
    }
    var ia = f(ce),
    va = f(Nt, 2);
    {
    var ca = $ => {
    var Y = ri(),
    a1 = f(S1(Y), 2),
    w1 = M(a1);
    Ye(w1, {
    get nome() {
    return xh[a().meio]
    },
    tamanho: 28,
    cor: “var(–economia-2)”,
    realce: “var(–amarelo)”
    });
    var C1 = f(w1, 2),
    ae = M(C1),
    ue = M(ae);
    Ne(ue, {
    get valor() {
    return s(w)
    },
    get fmt() {
    return J1
    },
    get ativo() {
    return s(E)
    }
    });
    var vt = f(ae);
    P(() => x(vt, ` ${B1.decDeslocacao}`)), k($, Y)
    };
    Q(va, $ => {
    s(i) && $(ca)
    })
    }
    var Za = f(it, 2);
    {
    var qh = $ => {
    var Y = hi(),
    a1 = M(Y),
    w1 = M(a1);
    L1(w1, {
    get map() {
    return Ch
    },
    cell: 3
    });
    var C1 = f(a1, 2),
    ae = f(M(C1)),
    ue = M(ae);
    Ne(ue, {
    get valor() {
    return s(C)
    },
    get fmt() {
    return Zt
    },
    get ativo() {
    return s(E)
    }
    }), k($, Y)
    };
    Q(Za, $ => {
    s(i) && $(qh)
    })
    }
    var Ih = f(Za, 2),
    Lh = O(Ih, !0);
    Ae(P1, $ => K(Z, $), () => s(Z));
    var Xa = f(P1, 2);
    {
    var Vh = $ => {
    var Y = si(),
    a1 = S1(Y);
    At(a1, {
    get alvo() {
    return s(l1)
    }
    });
    var w1 = f(a1, 2),
    C1 = M(w1),
    ae = M(C1);
    Ne(ae, {
    get valor() {
    return s(R)
    },
    fmt: $1,
    get ativo() {
    return s(b1)
    }
    });
    var ue = f(C1, 2),
    vt = O(ue, !0),
    Ma = f(ue, 2),
    za = O(Ma, !0);
    Ae(w1, Qe => K(l1, Qe), () => s(l1)), P((Qe, jt) => {
    x(vt, Qe), x(za, jt)
    }, [() => B1.porAno(s(S)), () => B1.m2Frase(s(R))]), k($, Y)
    };
    Q(Xa, $ => {
    s(i) && $(Vh)
    })
    }
    var er = f(Xa, 2);
    At(er, {
    get alvo() {
    return s(c1)
    }
    });
    var ua = f(er, 2),
    tr = M(ua),
    Fh = O(tr, !0),
    da = f(tr, 2);
    let ar;
    var Dh = M(da);
    {
    var Bh = $ => {
    var Y = s1(“\u2014”);
    k($, Y)
    },
    Uh = $ => {
    Ne($, {
    get valor() {
    return s(A)
    },
    get fmt() {
    return J1
    },
    dur: 1200,
    get ativo() {
    return s(I)
    }
    })
    };
    Q(Dh, $ => {
    s(A) == null ? $(Bh) : $(Uh, -1)
    })
    }
    var Yh = f(da, 2),
    Jh = O(Yh, !0);
    Ae(ua, $ => K(c1, $), () => s(c1));
    var rr = f(ua, 2);
    At(rr, {
    get alvo() {
    return s(U)
    }
    });
    var fa = f(rr, 2),
    hr = M(fa),
    Qh = O(hr, !0),
    sr = f(hr, 2),
    Wh = O(sr, !0),
    Gh = f(sr, 2);
    At(Gh, {
    get alvo() {
    return s(B)
    }
    }), Ae(fa, $ => K(U, $), () => s(U));
    var nr = f(fa, 2),
    or = M(nr),
    Hh = M(or),
    lr = M(Hh),
    Kh = O(lr, !0),
    ir = f(lr, 2);
    n1(ir, `–cor:${J}`);
    var Ee = M(ir);
    i1(Ee, 21, () => s(q), $ => $.nome, ($, Y) => {
    var a1 = ni(),
    w1 = O(a1, !0),
    C1 = {};
    P(() => {
    x(w1, s(Y).rotulo), C1 !== (C1 = s(Y).nome) && (a1.value = (a1.__value = C1) ?? “”)
    }), k($, a1)
    });
    var Tt;
    kh(Ee);
    var Zh = f(Ee, 2),
    Xh = M(Zh);
    L1(Xh, {
    get map() {
    return Rh
    },
    cell: 2
    });
    var vr = f(or, 2),
    cr = M(vr),
    ur = M(cr);
    n1(ur, `background:${F}`);
    var es = f(ur),
    ts = f(cr, 2),
    dr = M(ts);
    n1(dr, `background:${J}`);
    var as = f(dr, 1, !0),
    fr = f(vr, 2);
    i1(fr, 21, () => s(E1), $ => $.campo, ($, Y) => {
    var a1 = li();
    let w1;
    var C1 = M(a1),
    ae = M(C1),
    ue = O(ae, !0),
    vt = f(ae, 2);
    {
    var Ma = y1 => {
    var $e = oi(),
    Ms = O($e, !0);
    P(() => x(Ms, s(Y).sub)), k(y1, $e)
    };
    Q(vt, y1 => {
    s(Y).sub && y1(Ma)
    })
    }
    var za = f(C1, 2),
    Qe = M(za),
    jt = M(Qe),
    os = f(jt, 2),
    ls = M(os);
    {
    var is = y1 => {
    var $e = s1(“\u2014”);
    k(y1, $e)
    },
    vs = y1 => {
    Ne(y1, {
    get valor() {
    return s(u)[s(Y).campo]
    },
    get fmt() {
    return s(Y).fmt
    },
    get ativo() {
    return s(W)
    }
    })
    };
    Q(ls, y1 => {
    s(u)[s(Y).campo] == null ? y1(is) : y1(vs, -1)
    })
    }
    var cs = f(Qe, 2),
    Mr = M(cs),
    us = f(Mr, 2),
    ds = M(us);
    {
    var fs = y1 => {
    var $e = s1(“\u2014”);
    k(y1, $e)
    },
    ps = y1 => {
    Ne(y1, {
    get valor() {
    return s(t1)[s(Y).campo]
    },
    get fmt() {
    return s(Y).fmt
    },
    get ativo() {
    return s(W)
    }
    })
    };
    Q(ds, y1 => {
    s(t1)[s(Y).campo] == null ? y1(fs) : y1(ps, -1)
    })
    }
    P((y1, $e) => {
    w1 = k1(a1, 1, “linha svelte-1csvft8”, null, w1, {
    ab: s(Y).grossaAbaixo,
    ac: s(Y).grossaAcima
    }), x(ue, s(Y).nome), n1(jt, y1), n1(Mr, $e)
    }, [() => `background:${F};width:${s(W)?L(s(u)[s(Y).campo],s(Y).campo):0}%`, () => `background:${J};width:${s(W)?L(s(t1)[s(Y).campo],s(Y).campo):0}%`]), k($, a1)
    });
    var pa = f(fr, 2),
    rs = O(pa, !0),
    hs = f(pa, 2),
    pr = M(hs);
    {
    var ss = $ => {
    v1($, {
    get onclick() {
    return t.recomecar
    },
    children: (Y, a1) => {
    var w1 = ii(),
    C1 = S1(w1),
    ae = M(C1);
    L1(ae, {
    get map() {
    return Ah
    },
    cell: 3
    });
    var ue = f(C1, 1, !0);
    P(() => x(ue, ie.recomecar)), k(Y, w1)
    },
    $$slots: {
    default: !0
    }
    })
    };
    Q(pr, $ => {
    t.recomecar && $(ss)
    })
    }
    var ns = f(pr, 2);
    v1(ns, {
    variante: “primario”,
    onclick: h,
    children: ($, Y) => {
    var a1 = s1();
    P(() => x(a1, B1.historias)), k($, a1)
    },
    $$slots: {
    default: !0
    }
    }), Ae(nr, $ => K(B, $), () => s(B)), P(($, Y, a1) => {
    x(m1, s(l)), x(na, B1.porMesLongo), x(ia, ` ${B1.decCasa}`), x(Lh, $), x(Fh, Y), ar = k1(da, 1, “num svelte-1csvft8”, null, ar, {
    pop: s(I)
    }), x(Jh, B1.liquidosMes), x(Qh, a1), x(Wh, B1.reflexao), x(Kh, B1.compAdd), Tt !== (Tt = s(D)) && (Ee.value = (Ee.__value = Tt) ?? “”, Da(Ee, Tt)), x(es, `${a().concelho??””} (a sua escolha)`), x(as, s(H)), x(rs, B1.compararOutro)
    }, [() => B1.m1Frase(s(o), s(m), `no centro ${s(g)}`), () => B1.necessarioRot(Qa), () => B1.reflexaoIntro(a().cidade)]), N1(“change”, Ee, $ => a().comparado = $.currentTarget.value), N1(“click”, pa, () => s(B)?.scrollIntoView({
    behavior: “smooth”,
    block: “start”
    })), k(e, M1), d1()
    }
    xe([“change”, “click”]);
    var ui = T(”);

    function di(e, t) {
    u1(t, !0);
    const a = () => ({
    nome: “”,
    avatar: 0,
    cidade: null,
    area: null,
    regime: null,
    modoCasa: null,
    concelho: null,
    rendaCustom: null,
    meio: “transportes”,
    passes: [],
    passeCustom: null,
    comparado: null
    });
    let r = ne(a()),
    h = r1(“capa”),
    n = r1(null);

    function o() {
    Object.assign(r, a()), K(h, “capa”), u()
    }
    const l = y(() => r.regime !== “teletrabalho”),
    i = y(() => s(l) && r.meio === “transportes”),
    v = y(() => [{
    k: “capa”,
    pip: !1
    }, {
    k: “curriculos”,
    pip: !1,
    loading: !0
    }, {
    k: “personagem”,
    pip: !0
    }, {
    k: “cidade”,
    pip: !0
    }, {
    k: “modo”,
    pip: !0
    }, {
    k: “morar”,
    pip: !0
    }, {
    k: “regime”,
    pip: !0
    }, …s(l) ? [{
    k: “desloca”,
    pip: !0
    }] : [], …s(i) ? [{
    k: “passe”,
    pip: !0
    }] : [], {
    k: “extrato”,
    pip: !1,
    loading: !0
    }, {
    k: “contas”,
    pip: !1
    }]),
    p = y(() => s(v).findIndex(w => w.k === s(h))),
    c = y(() => s(v).filter(w => w.pip).length),
    d = y(() => s(v)[s(p)]?.pip ? s(v).slice(0, s(p) + 1).filter(w => w.pip).length : 0);

    function u() {
    s(n)?.getBoundingClientRect && s(n).getBoundingClientRect().top < 0 && s(n).scrollIntoView({
    behavior: “smooth”,
    block: “start”
    })
    }

    function z() {
    const w = s(v).findIndex(C => C.k === s(h));
    w >= 0 && w < s(v).length – 1 && K(h, s(v)[w + 1].k, !0), u()
    }

    function g() {
    let w = s(v).findIndex(C => C.k === s(h)) – 1;
    for (; w > 0 && s(v)[w].loading;) w–;
    w >= 0 && K(h, s(v)[w].k, !0), u()
    }

    function m(w) {
    s(v).some(C => C.k === w) && K(h, w, !0), u()
    }
    var b = ui(),
    _ = M(b);
    ao(_, {
    children: (w, C) => {
    {
    let R = y(() => Ct[r.avatar] ?? Ct[0]),
    A = y(() => s(h) === “capa” ? null : o),
    S = y(() => s(h) !== “contas”);
    qo(w, {
    get passo() {
    return s(d)
    },
    get total() {
    return s(c)
    },
    get avatar() {
    return s(R)
    },
    get nome() {
    return r.nome
    },
    get recomecar() {
    return s(A)
    },
    get dicaScroll() {
    return s(S)
    },
    children: (F, J) => {
    var q = me(),
    V = S1(q);
    Mh(V, () => s(h), D => {
    var H = me(),
    t1 = S1(H);
    {
    var o1 = E => {
    ol(E, {
    avancar: z
    })
    },
    z1 = E => {
    Oh(E, {
    get config() {
    return _h.curriculos
    },
    avancar: z,
    voltar: g,
    icone: “escritorio”,
    cena: “pc”
    })
    },
    p1 = E => {
    vl(E, {
    get estado() {
    return r
    },
    avancar: z,
    voltar: g
    })
    },
    O1 = E => {
    ul(E, {
    get estado() {
    return r
    },
    avancar: z,
    voltar: g
    })
    },
    E1 = E => {
    pl(E, {
    get estado() {
    return r
    },
    avancar: z,
    voltar: g
    })
    },
    L = E => {
    El(E, {
    get estado() {
    return r
    },
    avancar: z,
    voltar: g
    })
    },
    Z = E => {
    jl(E, {
    get estado() {
    return r
    },
    avancar: z,
    voltar: g
    })
    },
    l1 = E => {
    Ll(E, {
    get estado() {
    return r
    },
    avancar: z,
    voltar: g
    })
    },
    c1 = E => {
    Fl(E, {
    get estado() {
    return r
    },
    avancar: z,
    voltar: g
    })
    },
    U = E => {
    Oh(E, {
    get config() {
    return _h.extrato
    },
    avancar: z,
    voltar: g,
    icone: “carteira”,
    cena: “extrato”
    })
    },
    B = E => {
    ci(E, {
    get estado() {
    return r
    },
    irPara: m,
    voltar: g,
    recomecar: o
    })
    };
    Q(t1, E => {
    s(h) === “capa” ? E(o1) : s(h) === “curriculos” ? E(z1, 1) : s(h) === “personagem” ? E(p1, 2) : s(h) === “cidade” ? E(O1, 3) : s(h) === “regime” ? E(E1, 4) : s(h) === “morar” ? E(L, 5) : s(h) === “modo” ? E(Z, 6) : s(h) === “desloca” ? E(l1, 7) : s(h) === “passe” ? E(c1, 8) : s(h) === “extrato” ? E(U, 9) : s(h) === “contas” && E(B, 10)
    })
    }
    k(D, H)
    }), k(F, q)
    },
    $$slots: {
    default: !0
    }
    })
    }
    }
    }), Ae(b, w => K(n, w), () => s(n)), k(e, b), d1()
    }
    var fi = T(““),
    pi = T(”),
    Mi = T(”),
    zi = T(”),
    mi = T(”),
    gi = T(‘

    ‘),
    ki = T(‘

    ‘),
    bi = T(‘

    ‘);

    function wi(e, t) {
    u1(t, !0);
    let a = N(t, “itens”, 19, () => []),
    r = N(t, “categorias”, 19, () => []),
    h = N(t, “principalId”, 3, null),
    n = N(t, “corA”, 3, “var(–economia, #e65100)”),
    o = N(t, “corB”, 3, “var(–verde-exp, #1f8a70)”),
    l = N(t, “formatar”, 3, I => `\u20AC ${Math.round(I)}`),
    i = N(t, “rotuloEixo”, 3, “Mais caro \u2192”),
    v = N(t, “rotuloSeletor”, 3, “Comparar com:”),
    p = N(t, “placeholderSeletor”, 3, “Escolha um item”),
    c = N(t, “aoRecomecar”, 3, null);
    const d = y(() => h() ?? a()[0]?.id ?? null),
    u = y(() => a().find(I => I.id === s(d)) ?? null);
    let z = r1(null);
    oe(() => {
    s(z) != null && (s(z) === s(d) || !a().some(I => I.id === s(z))) && K(z, null)
    });
    const g = y(() => s(z) != null ? a().find(I => I.id === s(z)) ?? null : null),
    m = y(() => a().filter(I => I.id !== s(d))),
    b = I => I ? r().reduce((W, h1) => W + (I.valores?.[h1.id] ?? 0), 0) : 0,
    _ = y(() => b(s(u))),
    w = y(() => b(s(g))),
    C = y(() => Math.max(1, s(_), s(w)) * 1.08),
    R = I => Math.max(0, Math.min(100, I / s(C) * 100)),
    A = y(() => {
    let I = 1;
    for (const W of r()) I = Math.max(I, s(u)?.valores?.[W.id] ?? 0, s(g)?.valores?.[W.id] ?? 0);
    return I * 1.02
    }),
    S = I => I == null ? 0 : Math.max(0, Math.min(100, I / s(A) * 100)),
    F = I => I < 18 ? “ini” : I > 82 ? “fim” : “meio”;
    var J = bi(),
    q = M(J),
    V = M(q),
    D = O(V, !0),
    H = f(V, 2),
    t1 = M(H),
    o1 = O(t1, !0);
    t1.value = (t1.__value = null) ?? “”;
    var z1 = f(t1);
    i1(z1, 17, () => s(m), I => I.id, (I, W) => {
    var h1 = fi(),
    $1 = O(h1, !0),
    M1 = {};
    P(() => {
    x($1, s(W).nome), M1 !== (M1 = s(W).id) && (h1.value = (h1.__value = M1) ?? “”)
    }), k(I, h1)
    }), kh(H);
    var p1 = f(q, 2),
    O1 = M(p1),
    E1 = O(O1, !0),
    L = f(O1, 2),
    Z = M(L);
    {
    var l1 = I => {
    const W = y(() => R(s(_)));
    var h1 = pi(),
    $1 = f(M(h1), 2),
    M1 = M($1),
    W1 = M(M1),
    m1 = f(W1),
    P1 = O(m1, !0);
    P((G1, ve) => {
    n1($1, `left:${s(W)}%;–c:${n()}`), k1(M1, 1, `etq ${G1??””}`, “svelte-19m7grf”), x(W1, s(u).nome), x(P1, ve)
    }, [() => F(s(W)), () => l()(s(_))]), k(I, h1)
    };
    Q(Z, I => {
    s(u) && I(l1)
    })
    }
    var c1 = f(Z, 2);
    {
    var U = I => {
    const W = y(() => R(s(w)));
    var h1 = Mi(),
    $1 = f(M(h1), 2),
    M1 = M($1),
    W1 = M(M1),
    m1 = f(W1),
    P1 = O(m1, !0);
    P((G1, ve) => {
    n1($1, `left:${s(W)}%;–c:${o()}`), k1(M1, 1, `etq ${G1??””}`, “svelte-19m7grf”), x(W1, s(g).nome), x(P1, ve)
    }, [() => F(s(W)), () => l()(s(w))]), k(I, h1)
    };
    Q(c1, I => {
    s(g) && I(U)
    })
    }
    var B = f(p1, 2);
    i1(B, 21, r, I => I.id, (I, W) => {
    var h1 = gi(),
    $1 = M(h1),
    M1 = M($1),
    W1 = M(M1);
    Ye(W1, {
    get nome() {
    return s(W).icone
    },
    tamanho: 24,
    cor: “currentColor”
    });
    var m1 = f(M1, 2),
    P1 = M(m1),
    G1 = O(P1, !0),
    ve = f(P1, 2);
    {
    var ha = te => {
    var ce = zi(),
    Je = O(ce, !0);
    P(() => x(Je, s(W).subtitulo)), k(te, ce)
    };
    Q(ve, te => {
    s(W).subtitulo && te(ha)
    })
    }
    var sa = f($1, 2),
    St = M(sa),
    lt = M(St),
    na = O(lt),
    it = f(lt, 2),
    Nt = O(it, !0),
    Ot = f(St, 2);
    {
    var oa = te => {
    var ce = mi(),
    Je = M(ce),
    la = O(Je),
    Et = f(Je, 2),
    ia = O(Et, !0);
    P((va, ca) => {
    n1(la, va), n1(Et, `color:${o()}`), x(ia, ca)
    }, [() => `width:${S(s(g)?.valores?.[s(W).id])}%;background:${o()}`, () => l()(s(g)?.valores?.[s(W).id] ?? 0)]), k(te, ce)
    };
    Q(Ot, te => {
    s(g) && te(oa)
    })
    }
    P((te, ce) => {
    x(G1, s(W).titulo), n1(na, te), n1(it, `color:${n()}`), x(Nt, ce)
    }, [() => `width:${S(s(u)?.valores?.[s(W).id])}%;background:${n()}`, () => l()(s(u)?.valores?.[s(W).id] ?? 0)]), k(I, h1)
    });
    var E = f(B, 2);
    {
    var b1 = I => {
    var W = ki(),
    h1 = O(W);
    N1(“click”, h1, function(…$1) {
    c()?.apply(this, $1)
    }), k(I, W)
    };
    Q(E, I => {
    c() && I(b1)
    })
    }
    P(() => {
    x(D, v()), x(o1, p()), x(E1, i())
    }), Qn(H, () => s(z), I => K(z, I)), k(e, J), d1()
    }
    xe([“click”]);
    const yi = [{
    id: “habitacao”,
    titulo: “Habita\xE7\xE3o”,
    subtitulo: “Renda de um T2, \xE1gua e condom\xEDnio”,
    icone: “casa”
    }, {
    id: “transportes”,
    titulo: “Transportes”,
    subtitulo: “Passe mensal ou combust\xEDvel”,
    icone: “comboio”
    }, {
    id: “alimentacao”,
    titulo: “Alimenta\xE7\xE3o”,
    subtitulo: “Compras e algumas refei\xE7\xF5es fora”,
    icone: “moeda”
    }, {
    id: “energia”,
    titulo: “Energia”,
    subtitulo: “Eletricidade, g\xE1s e aquecimento”,
    icone: “bomba”
    }, {
    id: “servicos”,
    titulo: “Servi\xE7os”,
    subtitulo: “Internet, telem\xF3vel e seguros”,
    icone: “carteira”
    }, {
    id: “lazer”,
    titulo: “Lazer”,
    subtitulo: “Gin\xE1sio, cinema e sa\xEDdas”,
    icone: “relogio”
    }],
    xi = [{
    id: “lisboa”,
    nome: “Lisboa”,
    valores: {
    habitacao: 1250,
    transportes: 40,
    alimentacao: 360,
    energia: 110,
    servicos: 95,
    lazer: 180
    }
    }, {
    id: “porto”,
    nome: “Porto”,
    valores: {
    habitacao: 980,
    transportes: 40,
    alimentacao: 330,
    energia: 105,
    servicos: 90,
    lazer: 150
    }
    }, {
    id: “braga”,
    nome: “Braga”,
    valores: {
    habitacao: 680,
    transportes: 32,
    alimentacao: 300,
    energia: 100,
    servicos: 85,
    lazer: 120
    }
    }, {
    id: “coimbra”,
    nome: “Coimbra”,
    valores: {
    habitacao: 720,
    transportes: 30,
    alimentacao: 310,
    energia: 102,
    servicos: 88,
    lazer: 130
    }
    }];
    var _i = T(‘

    COMPARADOR

    Escolha uma segunda cidade para comparar o custo de vida mensal.

    ‘);

    function $i(e, t) {
    u1(t, !0);
    let a = r1(0);
    var r = _i(),
    h = f(M(r), 2);
    Mh(h, () => s(a), n => {
    wi(n, {
    get itens() {
    return xi
    },
    get categorias() {
    return yi
    },
    principalId: “lisboa”,
    formatar: o => `\u20AC ${Math.round(o).toLocaleString(“pt-PT”)}`,
    aoRecomecar: () => K(a, s(a) + 1)
    })
    }), k(e, r), d1()
    }
    const Pi = new URLSearchParams(location.search).get(“demo”) === “comparador”,
    Ci = En(Pi ? $i : di, {
    target: document.getElementById(“app”)
    });
    export {
    Ci as
    default
    };

    Fonte: multimedia.expresso.pt

    Leia também

    Colunistas

    - Publicidade -
    0FãsCurtir
    0SeguidoresSeguir
    0InscritosInscrever