From c0b290df667fd342c14b6a6d7c072aeb8cfb0de0 Mon Sep 17 00:00:00 2001 From: Roburmaster <25195137+Roburmaster@users.noreply.github.com> Date: Mon, 28 Sep 2026 15:26:16 +0200 Subject: [PATCH] 1.20.0: Trinket report in the website's design, 1/3/5 target tabs, set trinkets both ways - The Trinket Lab page now wears mythicpersona.com's weapon tier list design, with its two fonts (SIL OFL) inside the file. - A job run with "Also compare 3 and 5 targets" shows tabs for each target count, switched with radio buttons and CSS alone (no script). - A trinket that completes an item set is simulated and listed twice: with the set bonus, and with it switched off (set_bonus=_pc=0). - Verified end to end through the UI: LightMovement with the target matrix reached SimC as fight_style=LightMovement with 1, 3 and 5 enemies. Co-Authored-By: Claude Opus 5.5 --- README.md | 6 +- desktop/package.json | 2 +- lib/catalog.mjs | 8 +- lib/trinketpage.mjs | 268 +++++++++++++++++----------- lib/trinkets.mjs | 15 +- lib/upgrades.mjs | 3 +- lib/weapons.mjs | 2 +- package-lock.json | 4 +- package.json | 2 +- public/fonts/Oswald-OFL.txt | 93 ++++++++++ public/fonts/Oswald-Regular.ttf | Bin 0 -> 105572 bytes public/fonts/RobotoMono-OFL.txt | 93 ++++++++++ public/fonts/RobotoMono-Regular.ttf | Bin 0 -> 125748 bytes public/trinkets.js | 4 +- server.mjs | 2 +- tests/trinketpage.test.mjs | 37 +++- tests/trinkets.test.mjs | 22 ++- tests/weapons.test.mjs | 4 +- 18 files changed, 434 insertions(+), 131 deletions(-) create mode 100644 public/fonts/Oswald-OFL.txt create mode 100644 public/fonts/Oswald-Regular.ttf create mode 100644 public/fonts/RobotoMono-OFL.txt create mode 100644 public/fonts/RobotoMono-Regular.ttf diff --git a/README.md b/README.md index 8f9d39a..8e3ae42 100644 --- a/README.md +++ b/README.md @@ -143,9 +143,11 @@ Trinket Lab is one trinket tier list per specialization, charted the way Bloodma The candidates are every trinket in the active season's loot tables — raid, Mythic+ (reissued older dungeon trinkets included, through the season's own tables), delves and crafting — filtered for the specialization as Upgrade Finder filters them. Each is simulated at every chosen item level, the top of an upgrade track (Champion, Hero and Myth by default), below the level its own source can give it, and then at that level: a delve or dungeon trinket stops at the top of the Hero track, a raid trinket reaches the Myth track and a last boss's its own higher drop level, and a crafted trinket its crafting cap. Source limits are set as in Weapon Lab. The Great Vault is on by default: it gives Mythic+ loot on the Myth track, above the dungeon chest's Hero track, so a dungeon trinket runs up to the vault's level (Myth 6/6 unless you choose another) and the chest's level stays one of its steps. Crafted trinkets have no track; their level is chosen from the item levels the season uses, up to the crafting cap SimulationCraft's own profiles craft to. Equal footing shows every trinket at every level instead. The bar for a trinket is what it adds over no trinket, split at each level; its tier is read at its top level, with the same thresholds as Weapon Lab. -A specialization with more trinkets than the final round size (16, 32 or 64; 64 covers every list in Midnight Season 2) is screened first, one run per trinket at its top level, and the best go on to be simulated at every level; the rest keep their screened number and no curve. Tanks are ranked on the weighted DPS and survival score with a calibrated boss each, and Augmentation on the raid's damage against its measured share, as in Weapon Lab. A trinket that completes an item set with the reference gear — Zul'jin's Guillotine Technique beside Maze'roa — is marked, and the rest are measured from the best trinket without one. A full season list is about 2,700 trinket and item level runs per scenario, with the vault on. +A specialization with more trinkets than the final round size (16, 32 or 64; 64 covers every list in Midnight Season 2) is screened first, one run per trinket at its top level, and the best go on to be simulated at every level; the rest keep their screened number and no curve. Tanks are ranked on the weighted DPS and survival score with a calibrated boss each, and Augmentation on the raid's damage against its measured share, as in Weapon Lab. A trinket that completes an item set with the reference gear — Zul'jin's Guillotine Technique beside Maze'roa — is simulated twice and listed twice: with the set's bonus, as that character would wear it, and with the bonus switched off (`set_bonus=bite_of_zuljan_2pc=0`), the trinket alone. The rest are measured from the best trinket without a set bonus. A full season list is about 2,700 trinket and item level runs per scenario, with the vault on. -**The tier list page.** A finished job offers one page with every class and specialization, each trinket in its tier with its split bar, source, item level and Wowhead tooltip, and the gain at every level in the row's data so the website can import it. Two trinkets together are not the sum of their bars; the page says so. +**Fight style and targets.** Trinket Lab simulates the fight style chosen under the run settings, and **Also compare 3 and 5 targets** runs every specialization at 1, 3 and 5 targets in that style — AoE trinkets move a lot between them. + +**The tier list page.** A finished job offers one page in the design of mythicpersona.com's weapon tier list, with its fonts inside the file: every class and specialization, each trinket in its tier with its split bar, source, item level and Wowhead tooltip, and the gain at every level in the row's data so the website can import it. When the job ran 1, 3 and 5 targets, tabs at the top switch between them, with no script. Two trinkets together are not the sum of their bars; the page says so. ## Tank simulation diff --git a/desktop/package.json b/desktop/package.json index dc40099..56d9bb1 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -2,7 +2,7 @@ "name": "simc-lab", "productName": "SimC Lab", "desktopName": "simc-lab.desktop", - "version": "1.19.0", + "version": "1.20.0", "description": "Local SimulationCraft workbench with upgrade finder and tank simulation.", "author": "Roburmaster", "private": true, diff --git a/lib/catalog.mjs b/lib/catalog.mjs index c36c718..2882246 100644 --- a/lib/catalog.mjs +++ b/lib/catalog.mjs @@ -29,11 +29,11 @@ export async function loadCatalog(source) { export function parseSetBonuses(text){ const out=[]; for(const line of String(text).split(/\r?\n/)){ - const match=line.match(/^\s*\{\s*"((?:[^"\\]|\\.)*)"\s*,\s*"[^"]*"\s*,\s*"[^"]*"\s*,([^{]+)\{([^}]*)\}/); + const match=line.match(/^\s*\{\s*"((?:[^"\\]|\\.)*)"\s*,\s*"([^"]*)"\s*,\s*"[^"]*"\s*,([^{]+)\{([^}]*)\}/); if(!match)continue; - const [,setId,pieces,classId,specId,,spellId]=match[2].split(',').map(v=>Number(v.trim())); - const items=match[3].split(',').map(v=>Number(v.trim())).filter(Boolean); - if(items.length&&pieces>0)out.push({name:match[1].replace(/\\"/g,'"'),setId,pieces,classId,specId,spellId,items}); + const [,setId,pieces,classId,specId,,spellId]=match[3].split(',').map(v=>Number(v.trim())); + const items=match[4].split(',').map(v=>Number(v.trim())).filter(Boolean); + if(items.length&&pieces>0)out.push({name:match[1].replace(/\\"/g,'"'),option:match[2],setId,pieces,classId,specId,spellId,items}); } return out; } diff --git a/lib/trinketpage.mjs b/lib/trinketpage.mjs index 41834c4..2bdbb4e 100644 --- a/lib/trinketpage.mjs +++ b/lib/trinketpage.mjs @@ -1,8 +1,14 @@ // One page holding the whole Trinket Lab result: every class and specialization, each trinket as a bar of what it -// adds over wearing none, split at every item level it was simulated at, and sorted into its tier. Built like the -// weapon tier list: from a finished job, with no script of its own but Wowhead's tooltips, so it reads the same in -// the app, from a folder, and when the website imports it. +// adds over wearing none, split at every item level it was simulated at, and sorted into its tier. It wears the +// website's weapon tier list design (mythicpersona.com/weapon-tier-list): the same type, colours, tier badges and +// cards, with the site's two fonts carried inside the file. +// There is no script of its own but Wowhead's tooltips, so it reads the same in the app, from a folder, and when +// the website imports it. The 1, 3 and 5 target results sit side by side and are switched with radio buttons and +// CSS alone. +import fs from 'node:fs'; +import path from 'node:path'; import {tiers} from './weapons.mjs'; +import {appRoot} from './paths.mjs'; const escape=s=>String(s??'').replace(/[&<>"']/g,c=>({'&':'&','<':'<','>':'>','"':'"',"'":'''}[c])); const number=n=>new Intl.NumberFormat('en-US',{maximumFractionDigits:0}).format(n); @@ -10,6 +16,20 @@ const anchor=s=>String(s).toLowerCase().replace(/[^a-z0-9]+/g,'-').replace(/^-|- const classColors={deathknight:'#C41E3A',demonhunter:'#A330C9',druid:'#FF7C0A',evoker:'#33937F',hunter:'#AAD372',mage:'#3FC7EB',monk:'#00FF98',paladin:'#F48CBA',priest:'#DFDFDF',rogue:'#FFF468',shaman:'#0070DD',warlock:'#8788EE',warrior:'#C69B6D'}; // One colour per item level, dark to bright, so the bright end of every bar is the highest level simulated. const levelColors=['#3b4a63','#4f6b8f','#5f8fb8','#7fb6d6','#a6dcc1','#f3d27a','#f3b754','#ff9d4a']; +// The website's tier colours. +const tierColors={S:'#f3bd65',A:'#7edcb0',B:'#8bbffa',C:'#c2cbd9',D:'#d1a6b6'}; + +// The site's two fonts (SIL Open Font License, beside them in public/fonts), inlined once so a saved page keeps them. +let fontFaces=null; +function fonts(){ + if(fontFaces!==null)return fontFaces; + const face=(family,file)=>{ + try{return `@font-face{font-family:"${family}";src:url(data:font/ttf;base64,${fs.readFileSync(path.join(appRoot,'public','fonts',file)).toString('base64')}) format("truetype");font-weight:400;font-display:swap}`;} + catch{return '';} + }; + fontFaces=face('Oswald','Oswald-Regular.ttf')+face('Roboto Mono','RobotoMono-Regular.ttf'); + return fontFaces; +} function itemParams(candidate){ const params=[`item=${Number(candidate.itemId)}`]; @@ -20,6 +40,7 @@ function itemParams(candidate){ return params; } const itemUrl=candidate=>{const [item,...rest]=itemParams(candidate);return `https://www.wowhead.com/${item}${rest.length?`?${rest.join('&')}`:''}`;}; +const groupOf=c=>c.group||String(c.itemId); // Every item level any trinket in the job was simulated at, lowest first: the bar's colour key. export function jobLevels(job){ @@ -27,19 +48,23 @@ export function jobLevels(job){ } // One entry per ranked trinket of a spec and scenario: its ranked row (the top level) and the gain at every level -// the final round simulated, lowest first. A trinket screened out of the final round has its top level only. +// the final round simulated, lowest first. A trinket screened out of the final round has its top level only. A set +// trinket is two entries, with and without its set bonus. export function trinketSeries(job,spec,scenario){ const byKey=new Map(spec.candidates.map(c=>[c.key,c])); const rows=job.results.filter(r=>r.spec===spec.key&&r.scenario===scenario&&!r.superseded&&r.status==='complete'); return rows.filter(r=>Number.isFinite(r.rank)).sort((a,b)=>a.rank-b.rank).map(row=>{ const top=byKey.get(row.key); - const levels=rows.filter(r=>byKey.get(r.key)?.itemId===top.itemId&&Number.isFinite(r.gain)&&r.stage===row.stage) + const levels=rows.filter(r=>byKey.has(r.key)&&groupOf(byKey.get(r.key))===groupOf(top)&&Number.isFinite(r.gain)&&r.stage===row.stage) .map(r=>({itemLevel:byKey.get(r.key).itemLevel,label:byKey.get(r.key).levelLabel,gain:r.gain,percent:r.percent})) .sort((a,b)=>a.itemLevel-b.itemLevel); return {row,candidate:top,levels}; }); } +// "Patchwerk · 1 target", or just "1 target" when every scenario shares one fight style. +const scenarioName=(s,shared)=>`${shared?'':`${s.style} · `}${s.targets} target${s.targets===1?'':'s'}`; + function specSection(job,spec,scenario,palette){ const series=trinketSeries(job,spec,scenario); if(!series.length)return ''; @@ -49,30 +74,32 @@ function specSection(job,spec,scenario,palette){ const share=stages.find(s=>s.idle&&s.status==='complete')?.share; const most=Math.max(...series.flatMap(s=>s.levels.map(l=>l.gain)),0)||1; const unit=tanky?' score':' %'; - const bar=entry=>{ + const bar=levels=>{ let before=0; - return entry.levels.map(level=>{ + return levels.map(level=>{ const width=Math.max(0,Math.min(level.gain,most)-Math.max(before,0)); const left=Math.max(before,0);before=Math.max(before,level.gain); return width>0?``:''; }).join(''); }; - const chip=({row,candidate:c,levels})=>{ + const item=({row,candidate:c,levels})=>{ const top=levels.at(-1)||{gain:row.gain,percent:row.percent,itemLevel:c.itemLevel}; const gain=Number.isFinite(top.gain)?(tanky?`+${top.gain.toFixed(2)} score`:`+${top.percent.toFixed(2)} % · +${number(top.gain)} ${spec.support?'raid ':''}DPS`):'no gain measured'; const behind=c.set&&row.behind<0?`+${(-row.behind).toFixed(2)}${unit} with the set`:row.behind<=0?'best trinket':`−${row.behind.toFixed(2)}${unit}`; const data=levels.map(l=>`${l.itemLevel}:${l.gain.toFixed(tanky?3:1)}:${l.percent.toFixed(3)}`).join('|'); - return `
  • + return `
  • ${row.rank} ${escape(c.name)} - ${escape(c.sources[0]||'')}${c.sources.length>1?` +${c.sources.length-1}`:''} · ${c.itemLevel}${c.levelLabel?` ${escape(c.levelLabel)}`:''}${c.onUse?' · on use':''} - ${bar({levels})} - ${escape(gain)}${escape(behind)}${row.tied?' ~':''}${row.screened?'screened only':''} - ${c.set?`${escape(c.set.name)} ${c.set.pieces}-set with ${escape(c.set.with.join(', '))}`:''} -
  • `; + ${escape(c.sources[0]||'')}${c.sources.length>1?` +${c.sources.length-1}`:''} · ${c.itemLevel}${c.levelLabel?` ${escape(c.levelLabel)}`:''}${c.onUse?' · on use':''} + ${bar(levels)} + ${row.screened?'screened only':''} + ${c.set?`With the ${escape(c.set.name)} ${c.set.pieces}-set bonus, beside ${escape(c.set.with.join(', '))}`:''} + ${c.setOff?`Without the ${escape(c.setOff.name)} set bonus: the trinket alone`:''} + + ${escape(gain)}${escape(behind)}${row.tied?' ~':''}`; }; - return `
    + return `

    ${escape(spec.specName)}${escape(spec.className)}

    ${series.length} trinkets${spec.gear?` · reference gear ${spec.gear.itemLevel} ilvl`:''}${baseline?` · ${number(baseline.dps)} ${spec.support?'raid ':''}DPS with no trinket`:''}${tanky?' · DPS and survival':''} · ${escape(spec.file.replace(/\.simc$/,''))}

    @@ -81,7 +108,7 @@ function specSection(job,spec,scenario,palette){ ${spec.stale?`

    Ranked on last season's character: SimulationCraft has not rebuilt this profile for the current season, so its gear sits well below the others. The order here holds; the numbers do not belong next to another specialization's.

    `:''} ${spec.ours?`

    Carried by SimC Lab's own character: SimulationCraft has no profile for this specialization this season${spec.provenance?`, so its gear and talents come from ${escape(spec.provenance.name)}'s best in slot for patch ${escape(spec.provenance.patch)}, read ${escape(spec.provenance.readAt)}`:''}. Item levels, enchant ranks and the crafting cap are taken from the game data, not from the guide.

    `:''} ${tiers.map(t=>({tier:t.tier,list:series.filter(s=>s.row.tier===t.tier)})).filter(g=>g.list.length) - .map(g=>`
    ${g.tier}
      ${g.list.map(chip).join('')}
    `).join('')} + .map(g=>`
    ${g.tier}
      ${g.list.map(item).join('')}
    `).join('')}
    `; } @@ -95,6 +122,7 @@ export function trinketListPage(job){ const existing=classes.find(c=>c.name===spec.className); if(existing)existing.specs.push(spec);else classes.push({name:spec.className,key:spec.class,specs:[spec]}); } + const shared=new Set(job.scenarios.map(s=>s.style)).size===1; const scenarios=job.scenarios.map((scenario,index)=>{ const present=classes.map(c=>({...c,sections:c.specs.map(spec=>specSection(job,spec,index,palette)).join('')})).filter(c=>c.sections); return present.length?{scenario,index,present}:null; @@ -102,119 +130,157 @@ export function trinketListPage(job){ const when=new Date(job.finished||job.created).toISOString().slice(0,10); const range=lab.levels||{min:levels[0],max:levels.at(-1)}; const levelText=range.min===range.max?`item level ${range.max}`:`item level ${range.min}–${range.max}`; - const ranked=new Set(job.results.filter(r=>Number.isFinite(r.rank)).map(r=>`${r.scenario}|${r.spec}|${r.key}`)).size; + const ranked=new Set(job.results.filter(r=>Number.isFinite(r.rank)&&r.scenario===scenarios[0]?.index).map(r=>`${r.spec}|${r.key}`)).size; const src=lab.sources||{}; const stat=(value,label)=>`
    ${escape(value)}${escape(label)}
    `; + // One radio per scenario, before everything it switches: the checked one shows its results and lights its tab. + const switchCss=scenarios.map((s,i)=>`#scn-${i}:checked~.targets label[for="scn-${i}"]{background:var(--surface-2);color:var(--ink);border-bottom-color:var(--brand)}#scn-${i}:checked~.scenarios>.scenario[data-scenario="${i}"]{display:block}`).join(''); return ` Trinket tier list · ${escape(lab.season?.name||'')} · ${escape(levelText)} -
    + +
    SimC Lab +
    +
    ${escape(lab.season?.name||'Trinket Lab')} -

    Trinket tier list

    +

    Trinkettier list.

    ${src.equal ? `Every trinket at every chosen item level (${escape((src.steps||[]).join(', '))}), equal footing: this answers what a trinket is worth, not what you can reach with it.` - : `Each trinket up to the level its own source can give it: ${escape([src.raid&&`raid ${src.raid.label}`,src.mplus&&`Mythic+ ${src.mplus.label}`,src.delves&&`delves ${src.delves.label}`,src.vault&&`Mythic+ through the Great Vault ${src.vault.label.replace(/^Great Vault · /,'')}`,src.crafted&&`crafted ${src.crafted.label}`].filter(Boolean).join(', '))}. A trinket's tier is read at the highest of those levels.`} + : `Each trinket up to the level its own source can give it: ${escape([src.raid&&`raid ${src.raid.label}`,src.mplus&&`Mythic+ ${src.mplus.label}`,src.vault&&`Mythic+ through the Great Vault ${src.vault.label.replace(/^Great Vault · /,'')}`,src.delves&&`delves ${src.delves.label}`,src.crafted&&`crafted ${src.crafted.label}`].filter(Boolean).join(', '))}. A trinket's tier is read at the highest of those levels.`} Each trinket is worn alone, the second slot empty, and the bar is what it adds over the same character with no trinket at all. Simulated locally with SimulationCraft ${escape(job.engine.version)} on WoW ${escape(job.engine.wowVersion)}.

    + ${stat(when,'simulated')} ${stat(String(specs.length),'specializations')} ${stat(String(ranked),'trinkets ranked')} ${stat(range.min===range.max?String(range.max):`${range.min}–${range.max}`,'item level')} ${stat(number(job.settings.iterations),'iterations')} - ${stat(when,'simulated')}
    -

    Item level:${levels.map(level=>`${level}`).join('')}

    -

    Distance behind the best trinket of the same specialization:${tiers.map((t,i)=>`${t.tier}${Number.isFinite(t.behind)?`under ${t.behind}${i

    -${scenarios.map(s=>`
    + +${scenarios.map((s,i)=>``).join('')} +${scenarios.length>1?``:''} +

    Item level:${levels.map(level=>`${level}`).join('')}

    +

    Distance behind the best trinket of the same specialization:${tiers.map((t,i)=>`${t.tier}${Number.isFinite(t.behind)?`under ${t.behind}${i +

    +${scenarios.map((s,i)=>`

    ${escape(s.scenario.style)} · ${s.scenario.targets} target${s.scenario.targets===1?'':'s'} ${job.settings.duration} sec · ${number(job.settings.iterations)} iterations · ${job.settings.targetError}% target error

    - - ${s.present.map(c=>`

    ${escape(c.name)}

    ${c.sections}
    `).join('')}
    `).join('')} -
    + + ${s.present.map(c=>`

    ${escape(c.name)}

    ${c.sections}
    `).join('')}
    `).join('')} +
    +
    The simulation context Built by SimC Lab · powered by SimulationCraft · items link to Wowhead, and hovering one shows its tooltip from there.
    -Reference characters are SimulationCraft's own profiles, one per specialization, with both trinkets taken off: the gear, gems and enchants around the trinket are theirs and not yours.${specs.some(s=>s.stale)?` ${specs.filter(s=>s.stale).map(s=>escape(s.label)).join(', ')} are marked: their profile is a season behind.`:''} Healing specializations are not ranked: SimulationCraft cannot simulate healing, and a trinket is mostly its effect, which no stat score can value. A trinket that completes an item set with the reference gear is marked ◆: its lead is the set's bonus.
    -${number(job.settings.iterations)} iterations at ${job.settings.targetError}% target error${lab.screen?`; screening at ${number(lab.screen.iterations)} iterations and ${lab.screen.targetError}%`:''}. Numbers compare trinkets within one specialization; they are not a ranking between classes, and a pair of trinkets is not the sum of two bars. +Reference characters are SimulationCraft's own profiles, one per specialization, with both trinkets taken off: the gear, gems and enchants around the trinket are theirs and not yours.${specs.some(s=>s.stale)?` ${specs.filter(s=>s.stale).map(s=>escape(s.label)).join(', ')} are marked: their profile is a season behind.`:''} Healing specializations are not ranked: SimulationCraft cannot simulate healing, and a trinket is mostly its effect, which no stat score can value.
    +A trinket that completes an item set with the reference gear is shown twice: ◆ with the set's bonus, as that character would wear it, and ◇ without it, the trinket alone. The rest of the list is measured from the best trinket without a set bonus.
    +${number(job.settings.iterations)} iterations at ${job.settings.targetError}% target error${lab.screen?`; screening at ${number(lab.screen.iterations)} iterations and ${lab.screen.targetError}%`:''}. Numbers compare trinkets within one specialization; they are not a ranking between classes, and a pair of trinkets is not the sum of two bars.
    +Oswald and Roboto Mono are used under the SIL Open Font License.
    `; } diff --git a/lib/trinkets.mjs b/lib/trinkets.mjs index 136d37b..6549aa8 100644 --- a/lib/trinkets.mjs +++ b/lib/trinkets.mjs @@ -56,12 +56,15 @@ export function trinketCandidates(spec,season,catalog,{drops,steps,equal=false}) // Crafted trinkets have no upgrade track; their level is set directly, as the game's own crafting does. const crafted=kind==='crafted'&&!equal; const levels=equal?steps:[...steps.filter(s=>s.itemLevelcrafted?{ilevel:s.itemLevel,itemLevel:s.itemLevel,label:`item level ${s.itemLevel}`}:s),cap]; + // A trinket that completes an item set with the reference gear is shown twice: with the set's bonus, as the + // character would wear it, and with the bonus switched off, as the trinket alone. Each is its own entry. const set=completedSet(spec,'trinket1',item.id,catalog); - levels.forEach((level,index)=>{ + const variants=set?[{group:`${item.id}`,set},{group:`${item.id}|noset`,setOff:{name:set.name,pieces:set.pieces},extra:set.option?[`set_bonus=${set.option}_${set.pieces}pc=0`]:[]}]:[{group:`${item.id}`}]; + for(const variant of variants)levels.forEach((level,index)=>{ const bonuses=[...(item.bonusLists||[]),...(level.bonusId?[level.bonusId]:[])]; const value=[`,id=${item.id}`,...(bonuses.length?[`bonus_id=${bonuses.join('/')}`]:[]),...(level.ilevel?[`ilevel=${level.ilevel}`]:[]),...carried(null,item,bonuses,season.bonusSockets)].join(','); list.push({slot:'trinket1',itemId:item.id,name:item.name,itemLevel:level.itemLevel,levelLabel:level.label,value,line:`trinket1=${value}`, - sources,onUse:!!item.onUseTrinket,top:index===levels.length-1,...(set?{set}:{})}); + sources,onUse:!!item.onUseTrinket,top:index===levels.length-1,...variant}); }); } list.forEach((c,i)=>c.key='t'+String(i+1).padStart(4,'0')); @@ -84,7 +87,9 @@ export function withVault(drops,vault){ return {...drops,of:{...drops.of,mplus},public:{...drops.public,vault:{track:vault.track,level:vault.level,label:vault.label,itemLevel:vault.itemLevel}}}; } -export const trinketCount=spec=>new Set(spec.candidates.map(c=>c.itemId)).size; +// A trinket entry: the item, or the item without its set bonus. +export const groupOf=c=>c.group||String(c.itemId); +export const trinketCount=spec=>new Set(spec.candidates.map(groupOf)).size; export async function prepareTrinkets(request,catalog,season,talentData,source,scenarios=1){ const options=request.trinkets||{}; @@ -124,8 +129,8 @@ export const topRows=spec=>spec.candidates.filter(c=>c.top); export function selectTopTrinkets(candidates,screen,size,tank){ const byKey=new Map(screen.rows.map(r=>[r.key,r])); const metric=r=>tank?.boss?(Number.isFinite(r.score)?r.score:-Infinity):(Number.isFinite(r.dps)?r.dps:-Infinity); - const chosen=new Set(candidates.filter(c=>c.top&&byKey.has(c.key)).sort((a,b)=>metric(byKey.get(b.key))-metric(byKey.get(a.key))).slice(0,size).map(c=>c.itemId)); - return candidates.filter(c=>chosen.has(c.itemId)); + const chosen=new Set(candidates.filter(c=>c.top&&byKey.has(c.key)).sort((a,b)=>metric(byKey.get(b.key))-metric(byKey.get(a.key))).slice(0,size).map(groupOf)); + return candidates.filter(c=>chosen.has(groupOf(c))); } // What a row adds over the character with no trinket: DPS, the raid's DPS for a support specialization, or the diff --git a/lib/upgrades.mjs b/lib/upgrades.mjs index c37eb60..8b41677 100644 --- a/lib/upgrades.mjs +++ b/lib/upgrades.mjs @@ -274,7 +274,8 @@ const clearedBy=(item,slot,profile)=>slot==='main_hand'&&weaponKinds[item?.inven // A two-hander in a single-wield main hand must clear the equipped off-hand so SimC does not wield both. export function candidateLines(candidate,profile,catalog){ - const lines=[candidate.line]; + // A candidate may carry option lines of its own, such as a set bonus switched off. + const lines=[candidate.line,...(candidate.extra||[])]; if(clearedBy(catalog.items.get(candidate.itemId),candidate.slot,profile).length)lines.push('off_hand='); return lines; } diff --git a/lib/weapons.mjs b/lib/weapons.mjs index 45a496c..e8f295a 100644 --- a/lib/weapons.mjs +++ b/lib/weapons.mjs @@ -193,7 +193,7 @@ export function completedSet(spec,slot,itemId,catalog){ if(bonus.specId>0&&bonus.specId!==spec.specId)continue; const worn=bonus.items.filter(id=>others.has(id)); if(worn.length>=bonus.pieces||worn.includes(itemId)||worn.length+1found.pieces)found={name:bonus.name,pieces:bonus.pieces,with:worn.map(id=>catalog.items.get(id)?.name||`item ${id}`)}; + if(!found||bonus.pieces>found.pieces)found={name:bonus.name,...(bonus.option?{option:bonus.option}:{}),pieces:bonus.pieces,with:worn.map(id=>catalog.items.get(id)?.name||`item ${id}`)}; } return found; } diff --git a/package-lock.json b/package-lock.json index ea55bc6..4f34ef4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "simc-lab", - "version": "1.19.0", + "version": "1.20.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "simc-lab", - "version": "1.19.0", + "version": "1.20.0", "license": "GPL-3.0-or-later", "devDependencies": { "luaparse": "^0.3.1", diff --git a/package.json b/package.json index 71c9443..544d5b1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "simc-lab", - "version": "1.19.0", + "version": "1.20.0", "private": true, "type": "module", "scripts": { diff --git a/public/fonts/Oswald-OFL.txt b/public/fonts/Oswald-OFL.txt new file mode 100644 index 0000000..9d0219e --- /dev/null +++ b/public/fonts/Oswald-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2016 The Oswald Project Authors (https://github.com/googlefonts/OswaldFont) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/public/fonts/Oswald-Regular.ttf b/public/fonts/Oswald-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..dc593e1ebdf33e1e9b67f3d9ebc6a1dd268ee303 GIT binary patch literal 105572 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

    `D6_HPx(WvS01DJw*GeL8DsGC>+;tk)#nnk49cV z%J_xRu_HPKz1XxPv}?zNq}5FFShz>WE{uwM?Fii6X(o%C;ui?_52J$@&PN_il5>8O z)B}^4mp!KYoD<;kOo3?{t3f?}134lp2R>(7su7QbhnezkqRP>DWDFoZdlVjFy^)&a zA!<60Bx8k*vqrqhUc?O~VK*J|h!LJ<5GUd_#byDRtD`;kJl#=}8S&cxBEg@i`|O|o z@8qay#XGQ2 z&Mjm=YLYVcBGg2B&;d2)ARni?LYAuhqk2BAC((92AM32mD2Da#-vEz&Y7zLCboeUd zH$>&1qI}SR;=2|@UgVJtFU4ihfYHz%BB-+96S>(zMz2up3YO+DVCj2^$bBt0r$lcd z3j441EksYXb(*>@dAXTcr7N<=bu>?%X_{&B!EPSSb^uno= zttg6Qm=|ui2X2`E?c5Eh5p8p!58UD-IP{=TC1Z(*urT;T;lQImk_Q9%_;dru0s13C&(mL|bs1OOgh2vElSFRjt<;%7G)Xe_c7bES&SRr~{ zp!H&y?nblCINk9NtQ~q6{FUwDHGvDUUJLPCk`e~v>2-EWjwct!0cah`e=VF(eV{#~ z@=@m@_8sM9vyCkd0|UoAK&HBb`WKiS!f{Ow4V@>YDO--f z6J3YHxfL>3jtPk1<>cUn^yv=TX}6W`g-0YH9T*`Or?6_Pp44NyzT?Xy7lK?KXS7*h zir}vf%*^&X6Zp&Lo`!J(G?HzV@?Gfg+p6E+!7*$W$CItD5SjeW4`;5wF zLDG$}&*-YH8``F>-2_`~DgRIDT7m3B!~o3NO-!AW6TQz!n%}~^HOAU!bm@|=hFKl6 z8oGKG&Y6vxJNbhHUHtxY_z}^8wS( zzZD->p#A6X8#>=U9oaXOQcH(9<(sWnU%7h0jCH%OUA<^FeswtM@y7?=8~EMf!>BiQ zaI>s8ku^OAZ#Zo6GeR!Xy2z*snSdDc<)mCmMH`)gd#0_H59zELQnzsCb&^Y}TQoOP z)PmYr1eLL5LLlCLGfn{KFA=;4R0A%0C&MFZo&JpNP(v{HgMfQ$FbD z!AA@F#Y%f_O+-MfMKBj3TTRapy8qL5AkY3E^Q4FOP2~@^*AGmaE88vWm2?TAt|2{C z++A+?a>`GRc(gtOTI-YA;|HMInSc~thlteG*AL$iqxTrc85O) z|KVMZ91SRy9V`Q6Ot-H4M7~0SQ~x+L5*3P+pG}cS*J62?C+|L4f9?8f`Ne&@W@MIu zNfe``?jQ;NHV{XN9C9Erc-S$xN&CK}{bQ2$_2M+HQpXb~H7|Bw-4aajf|NERj}bnu z#gJuy=!|nevF3pXj=|L&6JzUTHe2Z|3+b-fGMt1+wrexCY|#OOZtT^tu^7!3L!q$Y zQlrDd*1{QWn}FFPEj23G*lIFh9nS;tn9F%Z3aFu*Oi23)Qzxu4M#x5cvxIAEe_v8o zT%f?x)zx=2;8=cUUiSr7ztOi=|}Xt zgE$r)^y>x)1$hhWn$f_zgQ@B8Fs0+ig)-cDZ<-wuY?XFc)?A37hNEg1bK8?El5**EbAA6l^+x4+eTN328(N||i5f&iAKo#b za{-^sXK6KPOD@|JjP+!jHKRyFTsAGm6F_O&}Go?#RZLXc*>P)ERPM@V9=;D(b%c_F~iPgCkmATUw1v)1Uyb{bD*O8gD z#Zf*kjU0)&snM~K06^BEATiT zXVM#~Sc0O*&$mIo+|}INHLtC0L3WzSlm_#r+3e=Ql?!$+Sh=QScgLF9-rDR9o@%eR z+Or|MhGOq%9f;qf5hk>R+DGS*oPh6@qBN;}0v$lV^8mBJG61B|_7)AR9ZgHs5MYzy zlqa#odhK?znNDKCc@cDe4J}digZ{B}^*8dxAEk9&IR3J4WqT?nXE%0c;^!y^$E{v+ zMgQECmZo`Aq#UDn)42gAj6dAUw$NG1>I}z73rHhNl_yH7GaSuyj3J#DhIF8$lj;*RFE{}}Gy*6ZJ<-HOPYHnk-+g@}M7(a;GBS<*;=C)t58^eo2h5Ae3{4uuQe=>8s*G2nLv7@r z#jMA$DvF}cxy{YM@2ac#b)9_b+<$ZqY@@mx2RHJ+qHZtF+D^i52U8NH7Dh4bI*5(K zcuK=~@-sxmA*6U6jC_V==s|QN5L3n;I&s@g0jQn`6#ec2NBrq9Xqa|`PJtu*lsr$2 z$3_RQ@LJ636pZ}p3S}eLW4rvaOGtVVt75{=$S@nNHh)P;bz-Au3$Hp9oHJ+T%$q^s z89b+cpg3TTANUEK*niYJtMjWBP)~>-V+J?M-$}8fjVly3xfGj6N>9ox6MBkCj8fG- zew=|$2zFDSWzj9u=8XzYA+<@2(E^?9c=$`PTg~$9l}QGer(mr1=X=e#@tflfF}Zec zW~##&$LGzyz&fzWTFXt}vKZ_snckbyJ|6Hn52@Z@1O;@tNL4DG#EFbBgh;XUl=7y}3cO5uzWob~BQh_x7Skb3wy z0}zD{jklS4%>TCO!QX7Y-_m1# zfZxThqYe5pZ5vq5e=yKTNsh@h*uf6qOq>dKUC`#m2Fwz$TG)3}faj#ar8yk2AF-W%g0OZja;oe7b+b)LW>b=J)`X(k>VToI zZ^g=ujny@i7Sn0)<^)q!)7<99`9|K!jcvi&=H{AockibD-f4>yl2**yaFwJB_3eA; zlaXhWrl?3GC9m|eNtK|$3AmWcwZ@fyn!Dm794YaVD93RU_2-_C@XC91?hAiW^2#yp z9xlIhUU^T-I0bWtkq=bU7I~NDp*7=()hP;}o z6+A0)!7lzFhU?kbM`uoM0%uO^3*K0SQH%AqH!+655y$6o`B}yJtj6aH5_3j=MiL7t zX>TW-u{=t^hF>HWl6ta9-m8P3n*Ry8QHkeI2etka#;bwdo~VOz?-+2tQ=3SyKv+Zu z_DNZ%1^e}5sMF4((KPs-V0a+u(gLE5+Drm3HfIbFK_bX)ER#MlWt;p7vhZh%tu`-> zlD%G~btwi%u%8ziI3U{Fiv2o+(Ty%3_!|tH zxC$8cOn)5eJQFt>xN%o{N}6JTmU~*hF-XS7z$R;|eO|^|o2sKV(NMr!<*P!;oO0xka8-Y|;7#T2!PzGBfhEp}XV!<;1rI|6k7Y zqs>n?NAvRJOFri@D>xB3w;32Q!V)paTrALs;`6JL&LN{i_QYI*swk@$%-d`?={fCE zjh?3?;=-{5G+ab4=Z8IJY4*aJBgH1UA@cLP>UVD2U)vsT*w4?;TECGSV}EZ3=YAd` z+Q@TXtUz69Y?(?r0LP)?CCJ|Nmj)N$(_g_dL84`W0thMv7JV=M%SVJmWtuT+0lr1SzD^3>L zF@N*?weu*gMEnmu;ut;PWh5SR7K0jqmV<|2`stV_zcr@zO1?L4B7`xg5#7qiJ7HY$ z)+?!F*=WULqBN7ymE1LIi%opgbow4@&;Fzis-48WDu4A0*-veW=BWcn+r=jESQzIe zBdjg}TEmG8&NjmKAceEjKcDe6<300V-FKHUKEQ82dlFS^y!a1f-72=Fx^I)&Me=WA z6NwA*WU*NQW`bl}pd-l*qu{sl;PdX)`@w-17uR;WqpN(_${$STz-6vCL3y^)FlG+c z5UoZ331ndx9CoQnyB1Z}BtQGoi6s7?VP;Vp6q=0rO&-d+xYS>-HaaN>%;6s1pid_LrfCKd<9pIcg2Xms%HSyDVYep9Y7JjFk3lXGO@e1%eWWFP;! z)<~Rp@4e{5BP%qS32mZv_$T-|Tfk8PI}^kS#0Ch+yM#JtMx$;M5L$IQx#zf?xoS!a z$J@F%Q z{m_|9x%WbBAlgg#r-&#%#*BJ{-e@3pPjA#M=A{9D2$LSvDw03stk~}^bV7loCE^S5 z5b=8FO2kJhB-Ma+&SZSw`qo*}@wsx%V=-jUHz%2_x8mnL$G?MLFl5E2ij-*7`kb9pFj);~S5YD01H266Pf5_ef&uymy6 z*wFdw`bq|?eEy+*9RnAP#9mrSg_bBrnaeRbzsO?V z4*nX7Fv5>f%OjE`vz#?wh2(U^W)kRKXXdN0FU?nhokjDIRgvk>ny&)wPsMr|K>Ka9 za;;!a(qJzZBP8TvMTlKwrrgPv3aLXhdB0PILBmqTs^!$*T`B*srdRyOd9 zc5PM9o>;!&W$*iV8h7#p@`ie?V(NR2P2dJ+b)6KJ-2^gZtPyA=EP>9IA%>vr#6SG;CyY&sB_9t)Rc zXP1S;<=NTgrp_Z12V&RbT=~$p$%E}32Pa}rk00rx%wS7U`9Wa<`#O`jer6zKG)C(& zNx=Mte1cihNj-(8fsvrUm?enmEZ3ToZ^jx%iQM zNmG_*Wu)jBU?jBt4#!9hA`FSk)!f51f{d$IKAT#UW=PX}ilAMIy5~>u%T9DmLcL;A zbc0;@DlSviE0RXPL;Vr$<&KeG2LNC4Ct- z5xq(+m3E5c&>0dxMUvbY-okkdE?++X;SVq6KE&X}O*c*KOJ+bMU65{raPKl;?!$SO zl?Hr4c%JYP8KAKd*MNnF^e82?OfasQ*_qk6I>V9!B?pm&;-SPcM9&}xdqnr*o&5Cs zU)pmQR2v`KvvUh1uF}{KVoF@AA)a~aDeN0M@ScyNUI*es((IOmPDN!z^C8|)&2ZsR z^m-`H$mIi^fK!dN0w}to+p_c;0`?{L6H0w#kRlxnv7bwIFr;IOH#JEQb9>WjllN?@ zn9sa?GTv<3tBGGGxjKujh?+7pw7ffNixCq`4F=1Cqo0^jg^+orKxxDB!w7CkzJkk1YI^Yg40H5*M_jUCT*r=Ea{jrc6ua}5@$Wst7m zOES`&dQQzpLkS+V1euGd_ehK>Cg1ZO33z|{$2bVDzn)TLf_5a%9{d#z5@%1vExJ}2 zW^U+xo1+mMS9lm_j~K~F7YKt|G!v=zA>tUk9@toeo(gY;!_M5?4WGcU-Js^EjzE7# z@DDIr#p8&e_#}%_{0spz`P|5qy{4qJtIeHT(B0*7xvc|Uf2+S@GVCt27i5*>x>ES| zEqukurp9b@rr9!`W6sFTY^qsr@dVb6?OD6gH(uTPV5BlD>vtG)MaH3BF1j!e`LOI^ z9!zJ=749G#lA0@A@|DFt7a*DdXkljA9;3=%;ta9p8jSE2C-@32TezAmoIF2ZQfl}} zOSg;j!b*QI%hli6URUHV^@jrXfZgV^hecPg!yoR+L;$>}W~7u)`zu23*!ql;KzRr( zq8c+-gtjiREjgsOkE*LpvMte)Y`9RaT2TFl`%pjXvEr#2ZO>rAs2@5219oyaB4SkK zCXexzBB?x`&DlmecCe@*GN2rW;-Lzpkp2$Hys5f+`T5x5VK9qBonh-gFM4x)7#v+ zW|z6xDQ16tiSRah+bi2oD!eaL_eXb8db)@`E4s#S7FJ7VIQI876W9lt8~ynQ`jZ9W zd^Va2ogGFAd+=hn43fiiKp}@8=y1%FZw0xQ2;n4o#6@qpSWZ$Yu^!16Q=iO8pat1M zJvGht6seSLSCY&}q~FO@+=VrPTpS1bzA;nmho=0m4-0Pbgirp+9^HK7_K{fXiziRM z$UkA*ef@MD=u2WC(cS=kD$$#YiA3~<&!D%ZxJ=}uqkb=OpD>riLv^6m7R4!awdh=wWOAsJY) zc8GO8Mw~PD0@^3k!vdBwnf4Hs!MJLnw1;M>5Y4rQ@ne^b8`jKv0HqQ8Am4&Yrei+? zn))ZSdAo#tcTQb7Qih1y*;7FvjivfPm?Cg6)*Ps84Lb>D(u~*30O1XC| zll`E%KaM(<*tjGio!iFMz$a!eBPKAl6!& zGtGMf?MSwxsgmpAIo<=$g^7t6#17P<`G=y8k1c+dxFYy0Y4)3V#hP5`61Ct*UC_$a zv)ffCQeR4%fSd?rB2(p65>@#OghWsdtWwedqNYjpsYa@|xq-mOJV~Z317b9GopHU4 z;La}usQ}=+v@lc{^19I^SBb}5;z^fo1U_$tP~({B+?DE8n>ADTe8@mfIttBpwP?KZ zolf=iwH7z5sn6JAu3ug6Z|U`9?lz_tRpjSYU1#uBIr1yrrc*DND^~aI99|#()1SiY zhj;d^t}wsAOZjnYL+#<_4u_+o`EYFmI0THT=F5vQ{SQeC#h4k)EBFV<4dyfLQ_%9$ zaM2=CWg>*`Spc3R?Ne%87TMTU4XZR!Wmy8&@IdLTt0Fx=bM_UX%j;}7#^~ZpjmHcr%Jx;Y*v&dcB=Q9Vh_z;JKJ~iB$iq#e;uc)y2eCA z)*rW15tH}s>{Jaqw&P#CH2!*0p9J|xpJAuMs(qJsswG#xOFLDiDV8nUlhi@AlX7lp zoKMJpCflj7Zzjx8XSGu$UvRb&PPS8>GF>`*boQtrKES6>X?7~wW3EHp>9A^34mNcs zBRiF3|HPu5%5KY|WM^p!JC&_gWATHUnTR<1S@Za&aM{+C219Lgo-I zoQ>^#Yh!4OTx^h7coXCBB-)b+rBAZ&Tw+6%9D2fc&S5ua;o6LZ?;Ke4xbNJe^Bmf7 z@W?L~N2G~HBo)4uzjq}@Bv647fy@g(iwjVHKJ&3Vhaa*^^`yY&D~t)V6-W;ov@#>z zq(~G|Pg*zvpLrb(v341mW#aG2vkD;ZZ@C&*s7y5O)5CoXo*k)rN4T?spEPtx z)Xu819wO%7|AiOycgdEg#s1nM!fg$em=)TywfIcz*%W_BSS5es2f#xI*}Jfxfv1hz z&x*(-NuE;Vf34y226<59XA{m96y2^$UT`jso6l6xdc!jkguFM}M11?EoO71qIsaDwPUCz z5-zYcFDq->(RbCrjtGrAe1`~!4dY%)^RPgi@LBN4;<#P7u9@a%;h%WA75qpc={pFU zjwj>N=^3ICvG_>!CsFBCFV8|&=(AGP0BO&cqS8sZH(`2$Tw(42pwSIC2yc@&RArqt zyD|cWLTnhm?6TqaL*jLn=fw{3`TPPBgAbrdME}58$Og@j{po-jndeEEi{kbtN3#71 zBTw%AaT}GQNZOYsB{@IICM8_^?kq~sn$XfvqdyZsxl#coHEI$`hF{p+l|Qjz!$f{p zb91ND+1XrR*X!*C@|oads$z`!KYYQ+Y+~s_CbQV7m$5i3$T!S6)c!E)vBlJRaC4+&{13k^mf{n1gRwy zEPREkVL7l!a!|6|3MGqbJ9S&gd|>f{Ji+m85+I3m^lu zaBlk%SX@{?&TT(}*Ke}@NV#thzhUmaE%W--`uUlzcE0f!zleR98)E;Ek2g*d69kS2 zwwSf3*TMEhGo{YO2!W9t<%U&Th!-a&KpqpS7gNevOi4xYi*RYeq=c2KUQ6~6kS^+Q zm^GV{+&+?ZHH0m?Xj59$*UWW}nM%&0vib3gCzt4Kh>v_iuBFY7LhzAsdgO}bMjsQV z9LKvh<;1Uyn{u$;FzaOYkk&BTAfPZvG+I>}tm_yvHO2J?FQ9=^aR9vt+V*3#?dMiyqDPzll#Ht}V8+yAnQq(3@ohEEcJ&geRnPy+oLkCM}`p`sd zl$Iq`(2y!_T$1G1&o#@Ex<87Xi#16e>SZdMM0!b6=?g1m%;a10tf_ixs3>t60Ev)i zO}a;@1|-|f$7LYoeNTy^*k%0E)2}>@xr>*T$yPiH^RArN0?ey}ycDTCG<%b35F^G} zdJG~m8|N3WLzr%-dYSr*idG;ESTvQSFGR}Hg!u{_MQH0~)P}3J?3~FN7ADz@H-_)H z1MS6GOV}6JlHa5jbNc^yUNsw&oY$JMyuqati}r}|a^|5qL; zITbF0cQg~M8FhUJ_PcC&Uy!9%v)a`{7Xj&&!l4)vZR7wB!09l1bG)$FWpiXxKf@L5 z94;$L?{v6yx^L&E@ao<`Fe@_{43=bOg-q>py?lNDZ0i-Xv3vUF+E$nK7W0k4-qOyZ^2t-BVJ=V5UMWKWPc0CMlwdVVHxS^EW zJKC(1;x3+=nlfpy`kZk;*AUA59Qx~GbY415qlj-fa)gCPcr2)P)LG6o~Qoh50qxlu9@4s$x)K`InG9Sr@y_o zyfIqZ6Lc1wcj?~Ebz?pL*vo*Tp+1&i{6CBKRI#fc4QqOOg5uJ2?z&^=P}HN5m>=oB zCR3%H%RMfkb6sIDT^Z!zu3KH>((tD^^vyq6v~kUNbBOBvgo9a&x*#*NY`MK z8Ic@&X9ibin|CZn_5#EvVnBdT44yKBv}74%q2MDRMC^rd;@*j!lajY<(~=IKTb4=( zn$ZL=?s{K61=xU%fsT(`e)EG%)~@~amCx_vKaXW@e4aNVw2a2P68p&$sKd`jqeJ;z zF=GBf1Tc_bq*0N$gxCN$+7gQ>oz;L$MJs`Pg(NOdVS&o@(wwAAd(`ao8bPX4Ir&1bs5Bht{Yo{WS z(NHL#e|q+3w!HSazU5bvid|c)Pl8rF@Q%C^oDSM+hhtm0mI98{opa1 zSkI&tK>8weJyTwexIgIIUx~aNJ}=U5g}l|iYJwz^h;1++Qm2!>LG3`_@<|t|gw-28 zmSK`wcmTAQxt#Z{4*91>HX@{AE>K@qmE98V9&wkf9t4n%DFAzVy1B&Ef58y!qnD3u z-zbbqOZ$rHiyTGGyZQ%@^iPL+N~)Gs`>Yp)`e-R5Ydzy@FrNkn9iw`<(ma#lqFh>( z6M1UQYMxp(Kj-?JpXWWd!X>NjG}&boV3fSUzl^cX!@kkQCFht8eIVU;mMz*dNBO9Ov)%*^ZRmUb8NWnFj+H~}}O&*=?1So)yoLxmHDLzg|X%!fl!K$PJkK7DM z=UVfp)?E?g5A&`5-mVz2jX264=KGY(Ap@QB>}*>+JKN>i33(~kpA#^o<^$$jMg&UZ zt;UJr+1nL4?-iBob1cD^=wN@4yg7(FwW@3*CQG9s%H<=;sNh;F}sZ&z?j&h6c{#$u1jB$ z3N~i83giZ{BbhK51IhymcB80iPsJ4#rt+c#^YtAV(^eS4J}%6t&q(|Rq%d;mgEJ4J zGQ|`IR{;})wiKF0W?l8$JPj&H+lCq!Xp4|i0-ph)X;Om5 zj=F%F;Bvd%MTPK#EGPvWQy$`(la6`2k-X*O!h(%@eOJw7Rdr=arB2zJwsq~s-8HM~ zx6Xd&XxZw`&6VvH{tSDjrN}+8ZFY0_+`96a@6f;qU?Fz%uZn}H#SPyolWZS^Ol$)Z zNt6~kh>aaXyELN1EN@18Yb33m?RU)9G_5~e#rQIqTF%xPZj%YPRT~kID6yg_;8mh_ zM6lEGDcPG)1@&gjx(&0kH~bSv!_!)K@-on!@$GXnJ+txdph7?IVmAWkNMVI=ETIKF zMQx##561?)jW2u)M$A9QyCi*Z*2A;m|MXALGRfKC#rQPcJVQbvn}qH}kLZ&$1x%_6 zE~1Y7qYW)B4Uv`>p50krAC1;GL~$c4=g$BuAcPfL5OpAlDXlTY@e7`gEd}x>8_VUi z)`F2>#2&0QM(jqrF?h0L{QUg+^vR6^nC8lj!U2i_ z&2kazkM;n}N6AWoOrwaMnI@E;N)a+lZpr1N*%=}&ts)KbW>KLF;Pfn^TqYr3{Ue|w z@UOKIJm4KJA2uHjP@jT42=Eq1s^U;MlG!~Lm<_B6><)zLvZBMKv!&Cax;2^8+&eKd z8P}dp&P>E!;9flTgPbAbGVJSb&kIp~t{<)cvC0X(%X`quH-5A(aZeTI`;vD%-&JFY z`7UAqAbsvT(@6w$Qu5+ICMPj-=ojw8uKTX;^VmwbcB8ycd4UhSoBD8{^4WikVdlW+ zY3&pSu~pX37B1wg7rujX0uLLu_PjlfKWtzEHqFM4KoD|F_{} zP`4m4mS@h-)V5vo?vy=`t`2yLBk{$4Ug*RnsB-8QT!AvGdW*Frh|@-z&%cBQ_q zLI8K95cOp$F27obzd2s(SEz>fqlSw|cz@H@%WfPRy6N(*U?XWx7CON)fUjjMA1y=` zw0jXAoeOJ*yq3veu22j<_E-{Hag$8*mY?_?K9_1vH}x{&XH11?Tpl!21rST6`w!#> ziQg(QlWeNjkHl^zDXW&-ItF|ulOr$BVKVs!Iy?mie_^5DP~iDuMrfk@`bfQbD5s&} zy6%Zk#&}j;fCl9h32NGZbbfqvUGX=I;vXDtp2t!UuxX}ZxOPQj~>ooX_iu?wrcS)bV zNbUaMaMYL*9ljIo9;c37*U*qNWUh}~PaQ+k(3cM6J@0Ns!8 z4>Hvbh3nb-aD6I6-Xri-Qe6ol3yLKH{|0nt6C`FX;3SP}QmqypxC9GLu9_mSuqM`~o8Yx0F(b??2)mVNb}dzLK=yHM)ybRBf)yR&91&QtzCP6?%K7V3SD)j{ieL-Ksklg+x z@73f7+(q^N>6_m?bV#d;`rOLaW7O72IYY_~TKTPq4t-<&@e2-L{c=6VMlh?Wf%=xt zEhF<2XaSUYpk1&5IM&a`bApdBf{is=XM&S6K~eKJ{GmRS!w$)Eke7|b4k<{W2-K3q zg3xVr56ufa72d-S1N*O-9g61U0w2u|O$xE1kjy0h6T$oyF*v`V0*UBEnv_ZyEJ(B< zUnC^qf~Pw+478hozSJw1{4OO=4;V{Qz7cZ*M6zOD99N&HnBWn~6-fUDFq$NNl2{G= z7SU~SSyNK%DQ=sts%u!M&u?z97FbhEwv-~fPB*f$3f~-7lyR;r_3-~1_ty=VC}M)^ zWJcCDe8M`gptH{_Zvqzyql#7Y9ril=HgINyc<9^e;v&BELS+NSubmCEAFF;379>m1 zbz6nO)XGyt8}hE}5Xwp4>d*KV@tkB23zC&n0M&3eOM%Tj1!JbAkHj8fGU=p~af2zI zHK7<9dInHK6I8Y5x{pvQ$`Fu*e3hnS80UAqoFaBP>+5N0s;w?9DfWAc?72DFfZJ;4 z?P+n9r_@mu3L{ihV1kia(rBPySatkiQ#Ghs;D!o;nUG370E^fS3VA})MM$u_m382fZD4ch3&({NU8Gn>ViBVA*?t zy)4z2l~K}P<~zRTu^S%w_5SGIYll~#TwNV5YE*R9E2|q1Y--LnnPWE!=45x_YXg4Q$2)X7f5+@91AY^*VYP@HIEw5H1M^|nEy5E2{fE7iL>^ zyX}5UMrmHAtD@NKoT|1J=OJ};VUaOVXE~bZa+!9FkIt9*2gkz`Tm0RX^)t)eUn*K1 z4z3z?W;^z9hdDi&;Sntx0J7Oj6HTNc zpydNlooFEFnoyQTwwsy``y>M!V19Di$Iq|A4o;s<^Oj z!*EScscF)f>&-9l zuw9Zj-au)8jRq`Kz<8KaF2OXwF%UZFxGPr*foG=ZcBMg0!^AXRU;@KVA=t7|iOtH{ zKz~nHYjdQbrmAElG*aZU0J)G4+ zj~Ffr;3HL%fj>BV`%Fc}%1?fR8NI8n(biPycC<}ZfOd4OV&TuqkP?yOR*&6Q8@VcONZ}*M(W5sY zMXxwULkEruoHWLgcE}XigHjAgrMx(DGjil6OXSG4w>CDE)R)xP)z(ypL;udm1qo+` z6uNde!PxLY^(N&{?7nSNdHJT>cFWg|x6Mu;TV7JK{MhvLW%PPk$DPv?6~Rq2E89Hn zAzwu#WAK7ohDY9a!QkKp?;D}ln)cmS^!8q{tF3Jpz3y(G6*&__HErg8?9 z>X{B|-EGCf;Y}D~C4j=x(3(tc(3+^0y;=o{QU0j*fq4qoB7Y-XHgCPgq<}>>V7-C(TsE;VVKkH8Fp1~LH2c`)@0oU#gD3r zWozzBqiffWj;>ob8mg!W;lY2tW_*10>hbY40}bJ_`uehP11JE|KMeS1SZ!~^(;&ZP zVb)B8=z8^4YImVn#f#-V@0OoJ0q`S|g{-H7R{aovpjF_REX*NKEY)A7`eBg?LN&5T zZ4{zw!5JN=FUhY_HN*kt1iBU^EHd|QeV=mb%`W_mc6BW5V7F-Pf>#$Mjakgqo1|!z zVu}?+ zKr#ztH+{uYq%9;8lu`*ug^1-n8#nIUxKTKlKlwWJB@Ir0JyKpX(VCZ)U6|SwO)tn=yT^Nq zKT;BLMOvC4xp?LGGxAdX9&b?~P^Q$xzI^BdVNVgX0vHn?p4KXU>_3rc9pdc4v6=`^ zRi~pd(NyL@u1*C=bA^exXA3Ah{+C7?EKY^TVY>bHM-Vc>}X&8 z6JBSTY^)o0WG+8GGP0-N+kg3*#~p!=CR?zxgipTL8uI5+n-$iHC*)CJCRnHaY%tmf z9?1v}l`x;Rqb!vhpfwN%-7YKvtO=w{m#Gf&>}gmAz}WQX`OR6WxoNp5g@O&!AX&q` z!2(jnhQtYz2wS!E>|G2jC%r)DL6scD~BJ-!HTPerkRU< z0DFcJ*LX}iSQ{?ER3nS%ykrltN{BygagU5#K(%43HQ)#J z*wOtWSdPFvnx)3M7W1Zh&#UaTnv*1cJR5DNC#QYB=}F(V$yrkg0GTpW=qdMj|7edg zczB2xP8{h`x_b;4?u<662vo5zN&u?X*8cN4b-kEJvUNR-yc9QrH~wlgH5J?$0+|zd zt5vvyGvE~~@X*>1LWJmd3Gnd1%+3>sNSrcKI_Y$V84O1Rk!|W2!pOCFpB_y0JKq?s zq}E)eR<-07DpumsN17~mh_@J?MbH`QPo0|;-eWeqvULOS@e3rrwDodJIl=Tzs z$7!YvD!XPj6zy-Q$~R}i0HoSuaLP9tjK?vopbZTZRniWUGNJWl ztjui92OO6TXW! zr~oab_)_c^lP|ToYF1|&DDj(S{j10EWvW zD1_00giA<55r|7z^ICFB;~uDhemtFge`mK9g# z9|`RlS-v%;4^08>hZk<(U&Owj4=X?!`;wLgkWvs7x zm0($Lf`V_^!BR7MT58%Bd8$J5p=~A^NXH2mu5>U7a)fH%@eb%uDn`}Yz+uu|)6rlk z1PWxKvQSyL6u^lk1tnSx16be;xHhnSo}Z;j?6hAH$t|AOV1>!8D>*Nq5hjZ#;&}o0 z?VD|BnYEM)w^z#!cqt!9iDw7Are$ED<@9v1)v+RXF-71hvUc!=*WsH)c!l+BQ*=FK zL8S209RvJ+I?qUlpOMalv4I&qmC`!!3_{(|pw~cNfW({uXg|>xzyqtwN`rx7zYjVH z0=`HBUaRNz)Hlfm$W9S6qINR*Kp_rJJ~ZqBb$j8dt2P!lxC0Yegoa!2M0(>|DFt}r_0>k`L2%%Ca9(l}U>)Om=IMnj5`g2(tw(m4<|AJh3XLAfwpKKJ1?0751%{tisgp%y30bd0J_ASJ{s5^`~XlmydSyn=a>BtB!Vq zSI{5aU+Ads_Ee15#D2JX)rPf=6S2MPgAGQke!lPqHh;66PiS-qe=3^;_x}tGD)4zm zFzXfad{d`WhGWFDdw{tkv#t%yJ~xN!>URI=f|oz@2+uqcdz0Tb!MkHm@tW8dCStqz z<*`f9bIdLF0{8`0W5>DavlztmG%}{q9$XEuOL%tdH*&;P%3XzW=5c9p2162e>Pt&Y z--s2KUXcz?twy~^Iri>vLKYRYqlA^H>&1b^Rc$bVp>b)v3i=dy~K5l>-*ucXy|6yMxW#$5;=czO|I zUdVtqso_Yb$xMH+-Dks=NWifeB7O{)Lq_CW*+gb0HM>e7b6G4KcXN!{Grms6)L@jEEPUNQm7PO)Y?v zT#%Ckx}2 zDS6*g4~F<{)1)vBm1z4fycy7-w>mS}h(JiMLL@?I5kUOfMg|GT2RM4@6@orHe#hz4 zQHQ_Li+63H*MZA-SS&$(1g-l&L) z5Aq+hwzl50a;(*AOEtAltcg7*o?lkweJn4hHRXc=h-=h0{tEh@0}l^EXM=M)H!3@z z7=g1ie3*BzloZVjOTZm+YjQbl7D^0kHv17Mm6s$UBKkU31MjYFu0}(UO-GCc08dElE z2RB9R%PaY@ce+%KFmy9Ff_i8hwW!B@M6MFey0mly#fqWLQ*NCdd~xr@&dGBo)-BmM z@12PKp7u@X^+4~0w^<~2iBfRU)i}X7M>oRG1#uKmuc^rJ1}`N9>Za*N2R4lD zkO{}iM;%!rBcmb%LRwvIbyY<<_{fm9|9em<`7gb7z2_78BSr^nTE?qk#nV4J?NkRQ zC|WH>(j{We)4GrN^z#45YbSftnkyox=dfdWGl3UZq!jjD3qY#=a$14_?1zWhpEarss zo=e_-$T}v`P7xI%`=3JT6c`T89TW^yj>uQJ)G>&;3@aDs939`3GAv20wHS*>%jEIt z>FKe1cU^Sh>^-A+d!Vngm;Xj$O4@om`^c|=ze^uD13b`hKqY+O6xhfaM;=c|9^}(0 z^>J~4O`LX+$~L8d2Y4snPMQP-1ykY6UtIUX!P(nqmGGO-h(`_|K0QL7w$#Q&|1kL4 z(ic}jY~|Rd`53289 z_e=KJ^eDUmW(k-k`1dC#KOOfaYd}ACiL23{{VK3qDMFtV-9Al$myjlRf`7$WPvHe_ z5Yi`MoVGDUMI+A$ZPsslsj9tOqV~m39U-Sh`M?@i*SvA3b977o#V4KX3wqY%AH2r- z`7M((liRoBX$#GDGkcm(i@j&~faq<_Pd&wpo}S&hdG3x`x~>4%wP@EV*2+_P&vTb&R?Djm%I4V$e)l_S-s6*(%JzMP%5$K+!20Y)(%!pcfh+L(}1#015)vW{V@$o5sC;ug^SY6VJ6|vx8 zu%=*p#E}PVZm<)ib65Fn3X+nR3#ofIXJw@66^3-+WU?l67Sz_n{2PN(7$AcxY2JB> z1NqA`LY6>gxZLajXOvZJ4P=DEe9Bc|&#KMx<`uZ|va7TF@bsoJD&Y~nlm87IZ=ZS= zBUl>ew3x?lOBe=(KhQ7Y_?bUUN5L!Oe!UtL#xZ2@y3G3nkMhXA$uHw_FaH%Md<6pw z%6=Cl`Ex;6uWo$^f=~;PwmL$d3mU!0=Z<2rEzuDpHZG@X4aW!s4RhKq#m;IHXEY zRa!`0pwxVNgAprqq!?Z(1MBO8#@yxMU}4#KZDY7394wM=QjJF~_F&C)pcZdl3 z*G;ABV*`Uy81j=Fm&@m`A9ngP;L;lL*%0gG3&*8HGixk#QkVhKK zGL&UOI)*^U37-X0(m}5YO%wFh(CY2ehf zMyzFScbT=o@8=VFK3`t8&+YbIFx}m=y3*$^7h=4pdqVIskFRPicNP~rk$TAGDmE25 zorQn}@FBi{vy6o<`1aLdrho)Y`TQ)z3Xww>`U`z6oV(zsg)3EebCT@H&P2Hw;h5#( zF3m~@)OhJIKpJb}^|dUb6xFuO3YRQ+WSMgs>habDNhl|${*)pn;dbQ_4<%f%Jf|n> zhf7qN??AiMxN^vpv}*}6oWf8DE`|{U&jg*L*b~5y5RKT$YK?y~y!@2%>YI7WZEx(2!ushC=lLlJ`0$({EvKu4}AN? zwNIVmZ}2~^h;50jkvcq>?PN~G6jl{2$1x#=a42_B7*pP|4pBH^D5x!#+@S?r#B=+0 ze`WllT@MJQBeq7|fUrBxY8NK?WrA>}U^#^*gJoigNE0BcP>u;q36f-!a4$`>HPSQ- zuqfcF`czL^$d^)?NAP*1!!#No$n4fq*XNWu%vleLKPIKFw-lu4KZOPg=)3=dn8`ZG zk9Fk7k04fLaMkhZG76yuRgmrqM6PfhG7%_P@zdnn$KbApbud{HMAUJ4u&$&o&z_#j z0z5!wNQp;KR~Lz>(ZQg4Xsw~YRvoGZfNLpqR=SHBjiCMKD<^AsmT}FHx4t-4h~~|0 zR?qNYE7E|aC@I0l?m}nCY0PV{T$Yj@P7h8-Q!u?y5i zjyV)k&S!}Is~ydRc2b$iFr)#b6KWM`49;@7^zltNkAca?B+-qAnGA@WFpW(|!_`$j zuO%lFD%_?>RY!G4X^FSeSLt-*cr2bw0AOclshLSkfXK0y?NKv9WpgxwEc zAf;ID_0H-ri0u4LcYUf3kIzwhsaqz*uQdB|KN)J{1o*oesue) zj_FP7R`*YBj$KJiG5?;c%Gn=kZVB}}D_yaQZBreqXV$OoTRk)Bs>&aT|3G7EWW@{r z)O|B)OxxHf;y@o&$F(M#>(JXYj4M*MWkBC=L~`fFk+r5o-iTYNx$PwtSvEH{Dk&4_g|T$ZBy;jXPGWnrBhDbKuJ5TcgV;5 z0nv?BVPc+WA!wfRV8p$-<8lwUhaBSPC`*GyL2QumhYx+C`k_zcAHL`?_fTX_?8SlS zfA9mM1$4=7-ja+zW0g#j5=N|%q#I85Nl=8S@!!S)V&?-{=!XcGjJ zD)Et#l$cH$BJ^7Iq=6qLFCA!U=U@|xI$FeKW6l0xiLaS#sbb-v_&lTB9wbxLNRB3m zJ(IXz+B%VZnjEJQadnm`J;~faR-phu_gw7NIq~_u_>=uwcv5_bH7L0#_g%)fkf_-( zCq5(vOTKVK>}Lf^BknJftvZWr2^%OiK?&B{9eZb+#Qtx5L#_K|+C&e-LlqNg>JL7=@eRz~K&+UCQxOz|=yAOZl6E2)=k79b^5ktuNzrcSgky?1(8LwY;-qd7UtGMXF2QRol z9jAlhVmbE-UY3|*K7u9*b`{2V3Iu>Ncbs~BNOt55qz%EiO z6Wfe%FfhT(VEGQ>5-(T=;_mdWE(mRQ?&4 zvPpk{VzuQqL(4)sr5NjpZN~A=y)M5mKRrJqSXvqF5JyWg@-4O;Mc0s8T3%Lxy2L^Y z*7D51zqirGQj5pReRIu2L#s=~u}|U;eK;y^K{OHN)TxktSi*Nx$gG&b3KFDLg%Iww z_{f$cmyasnYIrEdE4i(yzP>59qbN{Z#KkRupeX4stttss;!f1_B-$TQHet`GlJyi5 zvka~l92XrCGI9tUK9?N+VwjH{Fg0?B^3Z`O9g(?0WmCNweVrn; zvA7tskNzx7059&#@1Ax@6V@>I(EL1_jHsG}3(MGb3tvVY*H;*O^EQg(5|6!kTU;lx z@a@>oW%-Hm!Yp7fgYZK72kMYABjpX6nWf{UEbhD7c*TCcWW1hSu(4}!n@#hqPRoeP ze+0FVioq*@hy;e81oVA!93>^w;mv8?I^#bpBot_JqV}siz{%4Xyet-JTrC1wATBP# z^oOyKgrAY^HD`eEePyABnzn)87<3IfCC8SZXIS1?QBo!SjrhXh1>kPV_G&Z=l3Bt! z;8X`w!C6k0DTON4X*+`|fI!5kjR$r|AjJElL2qq-Lr&0HSCC>h=4AgWy|~!ZS_Y}2 z(q3fdydIQEb98jU!me2O0OsgP%+bwitlgV8t8;|k?_P+qO$(Rd_wV8NliKem6LWYs z?`4}H!v0Hq!=^9sUb(*rtj#?*hdzk=&1{!?3i&YF3|>bN46nlWix^UPDhi>SCd15T zsPuJ2;odW@!Ze+E5#Sc!u*QJ%f&Elx))PX6VkWo+oUumZk|U}vIy;-OcuXn5^Ur^L zk@5Qft)1A;mbNozb~al1w(X>I{kzz&-E3PljdpAJ*+3Tss;Ag2xn+QsaPYuMNhh{r zgq2E?_`Gz~QON5tqIdO@#Hh<_fhl0NS_+Y2&z@^>TiyNu!6Qf(Xz5DU@u<%hi^XAam~;IBLc2T5 z6ls;-wq$N%pV6xSUh>40Rcuj5g!YTw7?WF-$1pE1V_uAy7sgJgGjl@S6q3)ulIXiR z1EJ-zywmxo^3l0qZz0L4I$ToUG8uMI$w)X#XmQWvpw-s%h5t>Qp{?pplOuQbeZ)Gm z8I&NyIL-KyOLjW`-5IAQBp>a>v|5*(n4lTfDn8Gb|NA@)*_22=`_)|Rwb>;3jJaW( zxL%wF{k}{2j7oB!C$8TI_5eL<5?dMNsC;Mn%mR}9*dEAdTfgxQ+=_b}aqkQ7?p~~_ zMv~9edtsw!5XXS)7DjaSH`sMl9Lg&adyxC#pPe2!Y{nRNiTWShAY7=1|?-E1cY<-M!nSjP& zg9611{0hy&VtAM(hcf%+0Q?65PG%0DLCvy&6;1N9j1N*lI5Aw(@lxu?zth_1a`m;g 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�PZ4Sk2WI@86!(}(8; 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 r33OkQ literal 0 HcmV?d00001 diff --git a/public/fonts/RobotoMono-OFL.txt b/public/fonts/RobotoMono-OFL.txt new file mode 100644 index 0000000..8e7df33 --- /dev/null +++ b/public/fonts/RobotoMono-OFL.txt @@ -0,0 +1,93 @@ +Copyright 2015 The Roboto Mono Project Authors (https://github.com/googlefonts/robotomono) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/public/fonts/RobotoMono-Regular.ttf b/public/fonts/RobotoMono-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..eb1fde54413e39d6ba47fc081714b21a3267d1dd GIT binary patch literal 125748 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

    uq2}yoYcq5r)8$W(y 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 G`+oq&a&smC literal 0 HcmV?d00001 diff --git a/public/trinkets.js b/public/trinkets.js index d08d315..146d146 100644 --- a/public/trinkets.js +++ b/public/trinkets.js @@ -86,7 +86,7 @@ export function trinketUI({api,notice,updateCount}){ const rows=job.results.filter(r=>r.spec===spec.key&&r.scenario===s&&!r.superseded&&r.status==='complete'); return rows.filter(r=>Number.isFinite(r.rank)).sort((a,b)=>a.rank-b.rank).map(row=>{ const c=byKey.get(row.key); - const levels=rows.filter(r=>byKey.get(r.key)?.itemId===c.itemId&&Number.isFinite(r.gain)&&r.stage===row.stage).map(r=>({itemLevel:byKey.get(r.key).itemLevel,gain:r.gain,percent:r.percent})).sort((a,b)=>a.itemLevel-b.itemLevel); + const levels=rows.filter(r=>(byKey.get(r.key)?.group||byKey.get(r.key)?.itemId)===(c.group||c.itemId)&&Number.isFinite(r.gain)&&r.stage===row.stage).map(r=>({itemLevel:byKey.get(r.key).itemLevel,gain:r.gain,percent:r.percent})).sort((a,b)=>a.itemLevel-b.itemLevel); return {row,c,levels}; }); } @@ -128,7 +128,7 @@ export function trinketUI({api,notice,updateCount}){ for(const st of stages)if(st.status==='failed')html+=`

    ${st.stage===1?'Screening':st.idle?'Measuring its share of the raid':'Final round'} failed: ${esc(st.error)}

    `; html+=`${list.map(({row,c,levels:ls})=>{ const top=ls.at(-1)||row; - return ``; + return ``; }).join('')}
    #TrinketGain by item levelAt its top levelBehind bestTier
    ${row.rank}${itemLink(c.itemId,c.name,c.value)}${esc(c.sources.join(' · '))} · item level ${c.itemLevel}${c.levelLabel?` (${esc(c.levelLabel)})`:''}${c.onUse?' · on use':''}${row.screened?' · screening only':''}${c.set?`
    ◆ ${esc(c.set.name)} ${c.set.pieces}-set with ${esc(c.set.with.join(', '))}`:''}
    ${bar(ls.length?ls:[{itemLevel:c.itemLevel,gain:row.gain,percent:row.percent}],most,palette,tanky)}${Number.isFinite(top.gain)?(tanky?`+${top.gain.toFixed(2)}score`:`+${top.percent.toFixed(2)} %+${number(top.gain)} DPS`):'—'}${row.behind<=0?'—':`−${row.behind.toFixed(2)}${tanky?'':' %'}${row.tied?'within uncertainty':''}`}${row.tier}
    ${row.rank}${itemLink(c.itemId,c.name,c.value)}${esc(c.sources.join(' · '))} · item level ${c.itemLevel}${c.levelLabel?` (${esc(c.levelLabel)})`:''}${c.onUse?' · on use':''}${row.screened?' · screening only':''}${c.set?`
    ◆ with the ${esc(c.set.name)} ${c.set.pieces}-set bonus (with ${esc(c.set.with.join(', '))})`:''}${c.setOff?`
    ◇ without the ${esc(c.setOff.name)} set bonus`:''}
    ${bar(ls.length?ls:[{itemLevel:c.itemLevel,gain:row.gain,percent:row.percent}],most,palette,tanky)}${Number.isFinite(top.gain)?(tanky?`+${top.gain.toFixed(2)}score`:`+${top.percent.toFixed(2)} %+${number(top.gain)} DPS`):'—'}${row.behind<=0?'—':`−${row.behind.toFixed(2)}${tanky?'':' %'}${row.tied?'within uncertainty':''}`}${row.tier}
    `; html+=`

    ${stages.filter(st=>st.stem).map(st=>`${st.stage===1?'Screening':st.idle?'Raid without its buffs':'Final round'}${st.idle?'':` (${st.count})`}: HTML JSON Input`).join(' · ')}

    `; } diff --git a/server.mjs b/server.mjs index 925b4e3..e11beaf 100644 --- a/server.mjs +++ b/server.mjs @@ -60,7 +60,7 @@ const server=http.createServer(async(req,res)=>{ const url=new URL(req.url,`http://127.0.0.1:${port}`);const route=url.pathname; res.setHeader('Cache-Control','no-store'); res.setHeader('X-Content-Type-Options','nosniff');res.setHeader('Referrer-Policy','no-referrer'); - if(!route.startsWith('/reports/'))res.setHeader('Content-Security-Policy',"default-src 'self'; script-src 'self' https://wow.zamimg.com https://www.wowhead.com https://nether.wowhead.com; style-src 'self' 'unsafe-inline' https://wow.zamimg.com; img-src 'self' data: https://wow.zamimg.com https://*.wowhead.com; frame-ancestors 'none'; connect-src 'self' https://www.wowhead.com https://nether.wowhead.com https://wow.zamimg.com"); + if(!route.startsWith('/reports/'))res.setHeader('Content-Security-Policy',"default-src 'self'; font-src 'self' data:; script-src 'self' https://wow.zamimg.com https://www.wowhead.com https://nether.wowhead.com; style-src 'self' 'unsafe-inline' https://wow.zamimg.com; img-src 'self' data: https://wow.zamimg.com https://*.wowhead.com; frame-ancestors 'none'; connect-src 'self' https://www.wowhead.com https://nether.wowhead.com https://wow.zamimg.com"); if(req.method==='POST'){ const received=Buffer.from(req.headers['x-simc-token'] || '');const expected=Buffer.from(token); if(received.length!==expected.length || !timingSafeEqual(received,expected))return json(res,403,{error:'Reload the page.'}); diff --git a/tests/trinketpage.test.mjs b/tests/trinketpage.test.mjs index 7c793cf..c3f6665 100644 --- a/tests/trinketpage.test.mjs +++ b/tests/trinketpage.test.mjs @@ -29,6 +29,38 @@ const job={ ] }; +// The same job with three target counts, and the set trinket shown with and without its bonus. +const multi=structuredClone(job); +multi.scenarios=[{style:'Patchwerk',targets:1},{style:'Patchwerk',targets:3},{style:'Patchwerk',targets:5}]; +const spec=multi.trinkets.specs[0]; +spec.candidates.push(candidate('t0007',54,'Technique',334,true,{group:'54',set:{name:"Bite of Zul'jan",pieces:2,with:["Maze'roa"]}}),candidate('t0008',54,'Technique',334,true,{group:'54|noset',setOff:{name:"Bite of Zul'jan",pieces:2}})); +multi.results.push({spec:'warrior-arms',scenario:0,stage:2,key:'t0007',status:'complete',dps:216000,gain:16000,percent:8,rank:4,behind:-2.86,tier:'S',tied:false}, + {spec:'warrior-arms',scenario:0,stage:2,key:'t0008',status:'complete',dps:204000,gain:4000,percent:2,rank:5,behind:2.86,tier:'B',tied:false}); +for(const s of [1,2]){ + multi.stages.push({spec:'warrior-arms',scenario:s,stage:2,stem:'00'+s,status:'complete',baseline:{dps:200000*(s+1)}}); + multi.results.push({spec:'warrior-arms',scenario:s,stage:2,key:'t0003',status:'complete',dps:210000*(s+1),gain:10000*(s+1),percent:5,rank:1,behind:0,tier:'S',tied:false}); +} + +test('1, 3 and 5 targets sit side by side and are switched without a script',()=>{ + const html=trinketListPage(multi); + assert.deepEqual(html.match(/]*>/gi),['']); @@ -40,7 +72,10 @@ test('each ranked trinket carries its gain at every simulated level, lowest firs test('the page is a tier list with a split bar per trinket and no script but Wowhead’s',()=>{ const html=trinketListPage(job); - assert.match(html,/

    Trinket tier list<\/em><\/h1>/); + assert.match(html,/

    Trinket<\/span>tier list\.<\/span><\/h1>/,'the website\'s heading'); + assert.match(html,/@font-face\{font-family:"Oswald";src:url\(data:font\/ttf;base64,/,'the site\'s fonts travel inside the file'); + assert.match(html,/Always sim your own character\./); + assert.equal(html.includes('class="targets"'),false,'one scenario needs no switch'); assert.deepEqual(html.match(/]*>/gi),['