
Yuv Video Director
- 25 installs
- 262 repo stars
- Updated July 11, 2026
- hoodini/ai-agents-skills
Turn an idea or script into an on-brand MP4 by routing beats to HyperFrames, Lottie, ManimCE, and a caption flow, then rendering.
About
Acts as a router and reference for YUV.AI video, deciding which engine each beat needs, composing into one HyperFrames composition, and rendering to MP4. A developer uses it to make explainers, promos, or reels.
- Live seekable adapters vs pre-rendered assets rule per engine
- frame.md brand wrap with phoenix logo, Lottie, and link end-card
Yuv Video Director by the numbers
- 25 all-time installs (skills.sh)
- +6 installs in the week ending Aug 2, 2026 (Skillselion tracking)
- Ranked #990 of 1,335 Generative Media skills by installs in the Skillselion catalog
- Data as of Aug 2, 2026 (Skillselion catalog sync)
npx skills add https://github.com/hoodini/ai-agents-skills --skill yuv-video-directorAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 25 |
|---|---|
| repo stars | ★ 262 |
| Last updated | July 11, 2026 |
| Repository | hoodini/ai-agents-skills ↗ |
What it does
Turn an idea or script into an on-brand MP4 by routing beats to HyperFrames, Lottie, ManimCE, and a caption flow, then rendering.
Files
yuv-video-director
The conductor for YUV.AI video. You (the agent) decide what each beat needs, route it to the right engine, compose everything into one HyperFrames composition, wrap it in the YUV.AI Neon Phoenix brand, self-verify, and render to MP4. This skill is the router + the working reference implementations; load a reference file only when that engine is in play.
Design source of truth: theyuv-design-systemskill (Neon mode — pink#FF1464, cyan
#00E5FF, rich-black/white, Anton+Inter+JetBrains Mono, neural-net phoenix motif). The videoform of it is `frame.md` — see references/frame-md.md. Bundled
template: assets/FRAME.md. Drop it in the project root; HyperFrames reads it.
The one law (decides everything)
HyperFrames renders by seeking each frame in headless Chrome → FFmpeg (frameIndex = floor(t·fps), same input → same output). So every visual is one of two kinds:
| Pattern | Runs… | Engines | Rule |
|---|---|---|---|
| Live seekable adapter | inside the render, driven to time t per frame | GSAP, Lottie (window.__hfLottie), Three.js, a canvas driven by a GSAP proxy onUpdate | must be clock-driven — no Date.now(), Math.random() (seed a mulberry32), setTimeout, or .play() |
| Pre-rendered asset | offline, outputs a file, imported as a clip | ManimCE (Python→MP4/alpha), TTS audio, background-removal | render first, then drop in as a <video>/asset clip |
If it can be seeked, it's an adapter. If it can't, pre-render it. Manim is always a pre-rendered clip — it has its own renderer and runs in Python; it can never be a live adapter.
Route each beat to an engine
"explain X as a TEASER/promo (FOMO, cliffhanger, fast)" → references/teaser-explainer.md (the formula)
"explain a concept / math / neural network / algorithm / training" → ManimCE (pre-rendered clip — cut into BURSTS for teasers)
"branded motion: logo sting · stat reveal · icon pop · pulse" → Lottie (live, lottie-web)
"kinetic captions · titles · reveals · transitions · data callouts" → GSAP (live) ← default
"3D / spatial" → Three.js (live) (Babylon NOT used)
speech → captions → transcribe + approve webapp (see video-edit skill)
no voiceover provided → TTS (Kokoro: npx hyperframes tts)
brand colors / fonts / motifs → frame.md (picked up front)GSAP is the reliable default for text/motion. Reach for Lottie for designed branded graphics, Manim for explaining an idea.
Workflow
1. Plan the beats. Narrative arc + which engine each beat needs. Pick 16:9 and/or 9:16. 2. Set the brand. Ensure FRAME.md is in the project root (copy assets/FRAME.md). All colors/fonts/motifs come from it — never invent. Three brand must-haves on every video (see references/brand-kit.md + references/cinematic.md): the real phoenix logo (assets/logo-phoenix.png) at the reveal + end card, a real featured Lottie (generate one — assets/lottie-burst-generator.py), and the link end-card (logo + "LET'S FLY HIGH" + the full link set + CTA). For teaser/social pacing see references/editing.md; for psychological/cliffhanger/FOMO cuts see references/cinematic.md. 3. Pre-render the asset beats first (so they exist as clips):
- Manim → references/manim.md + assets/manim-scene-template.py. Render
py -m manim render -qh --fps 30 scene.py SceneName, copy the MP4 intoassets/. - Captions/TTS → reuse the
video-editskill (transcribe → approve webapp → sync) andnpx hyperframes tts.
4. Scaffold + compose. npx hyperframes init <slug> --non-interactive. Author index.html (the hyperframes skill is the contract). Use:
- the seekable neural-net field background → assets/neural-net-field.js
- Lottie the brand way → references/lottie.md + assets/neural-pulse.json
- the Manim render as a
<video class="clip" muted playsinline>body clip - GSAP entrances per scene, a neon flash transition on each boundary, fade-out only on the final scene
- for teaser / social pacing (fast hard cuts, kinetic word-slams, a hook montage, glitch/chromatic stabs) → references/editing.md — cut it like a producer, not a slideshow
5. Self-verify (gates). references/gates.md: npx hyperframes lint (0 errors) → validate (0 console errors, WCAG AA) → render → spot-check 5 frames across the timeline. Fix → re-run. Lottie MUST be screenshot-verified (the Skottie-vs-lottie-web trap). 6. Render. npx hyperframes render --fps 30 --output renders/<name>_FINAL.mp4. For vertical, clone with a 1080×1920 layout (see video-edit).
Prerequisites (check first; degrade gracefully)
See references/prereqs.md. Need Node 22+, FFmpeg, Python 3.11+ with pip (Manim/captions). On this machine: real Python is `py` → `C:\Python313` (the bare python is Hermes' venv with NO pip — don't use it). ManimCE installs via py -m pip install manim (no LaTeX needed if you author with Text()/MarkupText, not Tex/MathTex). If Manim isn't available → skip math beats or offer to install; never hard-fail the whole video.
What this skill bundles (reference implementations that lint + render)
| File | What it is |
|---|---|
| assets/FRAME.md | YUV.AI Neon Phoenix video frame spec (rebranded from HeyGen's Coral pack) |
| assets/neural-net-field.js | Deterministic, seekable neural-net phoenix canvas background |
| assets/neural-pulse.json | Hand-authored Bodymovin Lottie (renders in lottie-web, not just Skottie) |
| assets/gen_content_lotties.py | Generator for 6 production-grade CONTENT lotties (WhatsApp-collapse, decode-beam, eye-read, ghost-line hero, orb-extract, brain-fire) — transparent, persistent+continuous, lottie-web verified |
| assets/{wa-collapse,decode-beam,eye-read,ghost-line,orb-extract,brain-fire}.json | The 6 generated content lotties, ready to drop in |
| assets/manim-scene-template.py | ManimCE scene template, neon brand styling, Text-only (no LaTeX) |
| assets/what_is_nn.py | "What is a neural network" ManimCE scene (neuron → network → training, 34.5s) |
| assets/Anton-Regular.woff2 | Local Anton (renderer doesn't auto-resolve it; declare @font-face) |
| references/composition-pattern.md | The full multi-engine index.html pattern (field + Lottie + Manim clip + GSAP + flash) |
| references/teaser-explainer.md | The cinematic teaser-explainer formula: cold-open slams → manim BURSTS → face-off → FOMO montage → cliffhanger; content-synced transparent lottie beats; the seek-modulo fix; teaser music synth |
Companion skills
hyperframes (composition contract — always invoke when authoring), hyperframes-cli, lottie, video-edit (transcribe + approve webapp), yuv-design-system (brand). This skill orchestrates them.
<!doctype html>
<html lang="he">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=1920, height=1080" />
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bodymovin/5.12.2/lottie.min.js"></script>
<style>
@font-face{font-family:"Anton";font-weight:400;src:url("fonts/Anton-Regular.woff2") format("woff2");}
@font-face{font-family:"Rubik";font-weight:900;src:url("fonts/Rubik-900.woff2") format("woff2");}
@font-face{font-family:"Rubik";font-weight:700;src:url("fonts/Rubik-700.woff2") format("woff2");}
:root{--pink:#FF1464;--cyan:#00E5FF;--ink:#0A0A0A;--phx:linear-gradient(100deg,#F9AD45,#F0664E,#DE6092,#FF1464,#8B459A,#7C3AED,#4E7DB7,#00E5FF,#F9AD45);}
*{margin:0;padding:0;box-sizing:border-box;}
html,body{width:1920px;height:1080px;overflow:hidden;background:var(--ink);font-family:"Rubik",sans-serif;}
#net{position:absolute;inset:0;z-index:0;}
#mvid{position:absolute;inset:0;width:1920px;height:1080px;object-fit:cover;z-index:5;}
.grad{background:var(--phx);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;}
.scene{position:absolute;inset:0;z-index:10;}
.sc{position:relative;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:80px 150px;box-sizing:border-box;direction:rtl;}
.eyebrow{font-family:"JetBrains Mono",monospace;font-size:24px;letter-spacing:6px;color:var(--cyan);direction:ltr;}
/* S1 hook */
#s1 .title{font-weight:900;font-size:128px;color:#fff;line-height:1.08;margin-top:26px;text-shadow:0 4px 30px rgba(0,0,0,.6);}
#s1 .title em{font-style:normal;color:var(--pink);text-shadow:0 0 24px rgba(255,20,100,.55);}
#s1 .sub{font-weight:700;font-size:42px;color:var(--cyan);margin-top:22px;}
#s1 .spark{width:200px;height:200px;}
/* S2 brain */
#s2 .sc{flex-direction:row;gap:90px;justify-content:center;align-items:center;}
#s2 .lot{width:560px;height:560px;filter:drop-shadow(0 14px 34px rgba(0,0,0,.7));}
#s2 .tx{display:flex;flex-direction:column;gap:26px;text-align:right;max-width:760px;}
#s2 .h{font-weight:900;font-size:96px;line-height:1.05;}
#s2 .l{font-weight:700;font-size:46px;color:rgba(255,255,255,.92);}
#s2 .l b{color:var(--cyan);font-weight:900;}
/* manim captions */
.mcap{position:absolute;left:0;right:0;bottom:64px;margin:0 auto;width:max-content;max-width:1560px;z-index:20;direction:rtl;
font-family:"Rubik";font-weight:900;font-size:46px;line-height:1.3;text-align:center;color:#fff;
background:rgba(8,8,12,.84);border:1px solid rgba(0,229,255,.4);border-right:6px solid var(--pink);
padding:14px 34px;box-shadow:0 10px 36px rgba(0,0,0,.6);}
.mcap em{font-style:normal;color:var(--pink);}
/* S5 results */
#s5 .h{font-weight:900;font-size:96px;margin-bottom:60px;}
#s5 .row{display:flex;gap:36px;direction:rtl;}
#s5 .card{width:420px;padding:46px 30px;background:#101018;border-top:6px solid;box-shadow:0 14px 40px rgba(0,0,0,.5);}
#s5 .card .t{font-weight:900;font-size:48px;color:#fff;line-height:1.15;}
#s5 .card .d{font-weight:700;font-size:28px;color:rgba(255,255,255,.7);margin-top:14px;}
#s5 .orb{position:absolute;left:90px;top:120px;width:300px;height:300px;filter:drop-shadow(0 12px 30px rgba(0,0,0,.7));}
/* S6 punch */
#s6 .lot{width:760px;height:522px;filter:drop-shadow(0 14px 36px rgba(0,0,0,.75));}
#s6 .q1{font-weight:900;font-size:76px;color:#fff;margin-top:8px;}
#s6 .q2{font-weight:900;font-size:88px;color:var(--pink);text-shadow:0 0 26px rgba(255,20,100,.55);margin-top:10px;}
/* S7 outro */
#burst{position:absolute;left:50%;top:38%;width:760px;height:760px;margin-left:-380px;margin-top:-380px;z-index:-1;}
#s7 .logo{width:190px;filter:drop-shadow(0 0 24px rgba(255,20,100,.5)) drop-shadow(0 0 54px rgba(0,229,255,.3));}
#s7 .nm{font-weight:900;font-size:104px;color:#fff;margin-top:14px;}
#s7 .sign{font-family:"Anton";text-transform:uppercase;letter-spacing:0;font-size:66px;margin-top:6px;}
#s7 .cred{font-weight:700;font-size:32px;color:var(--cyan);margin-top:16px;}
#s7 .links{font-family:"JetBrains Mono",monospace;font-size:28px;letter-spacing:2px;color:#fff;margin-top:20px;direction:ltr;}
#s7 .handles{font-family:"JetBrains Mono",monospace;font-size:21px;letter-spacing:2px;color:rgba(255,255,255,.72);margin-top:10px;direction:ltr;}
#grain{position:absolute;inset:0;z-index:40;opacity:.05;pointer-events:none;mix-blend-mode:overlay;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='2' stitchTiles='stitch'/></filter><rect width='160' height='160' filter='url(%23n)'/></svg>");}
#vig{position:absolute;inset:0;z-index:41;pointer-events:none;background:radial-gradient(ellipse 82% 82% at 50% 50%,transparent 58%,rgba(0,0,0,.44) 100%);}
#dip{position:absolute;inset:0;z-index:50;opacity:0;pointer-events:none;background:var(--ink);}
#fade{position:absolute;inset:0;z-index:60;opacity:0;pointer-events:none;background:var(--ink);}
</style>
</head>
<body>
<div id="root" data-composition-id="main" data-start="0" data-duration="@@D@@" data-width="1920" data-height="1080">
<canvas id="net" width="1920" height="1080"></canvas>
<audio id="music" class="clip" data-start="0" data-duration="@@D@@" data-track-index="9" data-volume="0.17" src="music.wav"></audio>
<!-- S1 HOOK -->
<div id="s1" class="scene clip" data-start="0" data-duration="5.0" data-track-index="1">
<div class="sc">
<div id="spark1" class="spark"></div>
<div class="eyebrow">YUV.AI · EXPLAINER</div>
<div class="title">איך מכונה <em>לומדת</em> לחשוב?</div>
<div class="sub">רשתות נוירונים — ההסבר הפשוט</div>
</div>
</div>
<!-- S2 BRAIN -->
<div id="s2" class="scene clip" data-start="5.0" data-duration="8.0" data-track-index="2">
<div class="sc">
<div class="tx">
<div class="h grad">הכול מתחיל במוח</div>
<div class="l">בראש שלנו: <b>כ-86 מיליארד</b> נוירונים</div>
<div class="l">כל למידה = <b>חיבורים שמתחזקים</b></div>
</div>
<div id="brainlot" class="lot"></div>
</div>
</div>
<!-- MANIM BODY -->
<video id="mvid" class="clip" data-start="13.0" data-duration="@@DM@@" data-track-index="0" src="assets/WhatIsNN.mp4" muted playsinline crossorigin="anonymous"></video>
@@MCAPS_HTML@@
<!-- S5 RESULTS -->
<div id="s5" class="scene clip" data-start="@@S5@@" data-duration="8.0" data-track-index="3">
<div class="sc">
<div class="h grad">מה זה נותן לנו?</div>
<div class="row">
<div class="card" style="border-color:#FF1464"><div class="t">זיהוי תמונות</div><div class="d">רואה — ומבינה מה בתמונה</div></div>
<div class="card" style="border-color:#00E5FF"><div class="t">תרגום בזמן אמת</div><div class="d">שפה נכנסת, שפה יוצאת</div></div>
<div class="card" style="border-color:#F9AD45"><div class="t">שיחה טבעית</div><div class="d">מבינה אותך — ועונה</div></div>
</div>
<div id="orblot" class="orb"></div>
</div>
</div>
<!-- S6 PUNCH -->
<div id="s6" class="scene clip" data-start="@@S6@@" data-duration="6.0" data-track-index="4">
<div class="sc">
<div id="ghostlot" class="lot"></div>
<div class="q1">והקסם האמיתי?</div>
<div class="q2">היא לומדת לזהות גם מה שלא נאמר.</div>
</div>
</div>
<!-- S7 OUTRO -->
<div id="s7" class="scene clip" data-start="@@S7@@" data-duration="6.0" data-track-index="5">
<div class="sc">
<div id="burst"></div>
<img class="logo" src="assets/logo-phoenix.png" crossorigin="anonymous" alt="" />
<div class="nm">יובל אבידני</div>
<div class="sign grad">LET'S FLY HIGH</div>
<div class="cred">מומחה AI · פינת ה-AI בחדשות 12</div>
<div class="links">yuv.ai · linktr.ee/yuvai</div>
<div class="handles">X @yuvalav · IG @yuval_770 · TikTok @yuval.ai · YT @yuv-ai · GitHub @hoodini</div>
</div>
</div>
<div id="grain"></div><div id="vig"></div><div id="dip"></div><div id="fade"></div>
</div>
<script>
const cv=document.getElementById("net"),ctx=cv.getContext("2d");
function mul(a){return function(){a|=0;a=(a+0x6d2b79f5)|0;let t=Math.imul(a^(a>>>15),1|a);t=(t+Math.imul(t^(t>>>7),61|t))^t;return((t^(t>>>14))>>>0)/4294967296;};}
const rnd=mul(20260609);
const STOPS=[[249,173,69],[240,102,78],[222,96,146],[124,58,237],[78,125,183],[0,229,255]];
function col(u){u=Math.max(0,Math.min(0.999,u));const s=u*(STOPS.length-1),i=Math.floor(s),f=s-i,a=STOPS[i],b=STOPS[i+1];return[(a[0]+(b[0]-a[0])*f)|0,(a[1]+(b[1]-a[1])*f)|0,(a[2]+(b[2]-a[2])*f)|0];}
const Np=64,nodes=[];
for(let i=0;i<Np;i++){let x,y,u;if(i<22){const a=rnd();x=840-a*640+(rnd()-0.5)*70;y=470-a*300+(rnd()-0.5)*130;u=a*0.26;}else if(i<44){const a=rnd();x=1080+a*640+(rnd()-0.5)*70;y=470-a*300+(rnd()-0.5)*130;u=0.74+a*0.26;}else{const a=rnd();x=960+(rnd()-0.5)*200;y=360+a*440+(rnd()-0.5)*70;u=0.30+a*0.42;}nodes.push({x,y,seed:rnd()*6.2832,u});}
function drawNet(t){ctx.clearRect(0,0,1920,1080);for(const n of nodes){n.px=n.x+Math.sin(t*0.5+n.seed)*15;n.py=n.y+Math.cos(t*0.4+n.seed)*15;}ctx.lineWidth=1;for(let i=0;i<Np;i++)for(let j=i+1;j<Np;j++){const a=nodes[i],b=nodes[j],d=Math.hypot(a.px-b.px,a.py-b.py);if(d>150)continue;ctx.strokeStyle="rgba(170,195,255,"+(0.17*(1-d/150)).toFixed(3)+")";ctx.beginPath();ctx.moveTo(a.px,a.py);ctx.lineTo(b.px,b.py);ctx.stroke();}for(const n of nodes){const c=col(n.u);ctx.fillStyle="rgb("+c[0]+","+c[1]+","+c[2]+")";ctx.shadowColor=ctx.fillStyle;ctx.shadowBlur=10;ctx.beginPath();ctx.arc(n.px,n.py,2.5,0,6.2832);ctx.fill();}ctx.shadowBlur=0;}
drawNet(0);
window.__hfLottie=window.__hfLottie||[];
// seek-modulo wrapper: sections start past the lottie's own duration, so wrap the
// adapter's goToAndStop(ms) to loop deterministically instead of clamping at the end
const L=(id,p)=>{
const a=lottie.loadAnimation({container:document.getElementById(id),renderer:"svg",loop:true,autoplay:false,path:p});
const o=a.goToAndStop.bind(a);
a.goToAndStop=(v,f)=>{const d=a.getDuration(false)*1000;o(f?v:(d>0?v%d:v),f);};
window.__hfLottie.push(a);
};
L("spark1","assets/c-magic.json"); L("brainlot","assets/brain-fire.json"); L("orblot","assets/c-ai.json"); L("ghostlot","assets/ghost-line.json"); L("burst","assets/phoenix-burst.json");
window.__timelines=window.__timelines||{};
const tl=gsap.timeline({paused:true});
const D=@@D@@,proxy={t:0};
tl.to(proxy,{t:D,duration:D,ease:"none",onUpdate:()=>drawNet(proxy.t)},0);
tl.to(".grad",{backgroundPositionX:"-200%",duration:D,ease:"none"},0);
// S1
tl.from("#spark1",{scale:0.5,opacity:0,duration:0.6,ease:"back.out(1.6)"},0.25);
tl.from("#s1 .eyebrow",{opacity:0,y:18,duration:0.5,ease:"power2.out"},0.45);
tl.from("#s1 .title",{opacity:0,y:50,duration:0.8,ease:"power4.out"},0.65);
tl.from("#s1 .sub",{opacity:0,y:24,duration:0.6,ease:"power2.out"},1.15);
// S2
tl.from("#s2 .h",{opacity:0,x:60,duration:0.7,ease:"power3.out"},5.3);
tl.from("#s2 .l",{opacity:0,x:40,duration:0.6,stagger:0.25,ease:"power2.out"},5.7);
tl.from("#brainlot",{opacity:0,scale:0.7,duration:0.7,ease:"back.out(1.5)"},5.5);
// manim captions
@@MCAPS_JS@@
// S5
tl.from("#s5 .h",{opacity:0,y:40,duration:0.6,ease:"power3.out"},@@S5@@+0.25);
tl.from("#s5 .card",{opacity:0,y:70,duration:0.55,stagger:0.16,ease:"back.out(1.4)"},@@S5@@+0.6);
tl.from("#orblot",{opacity:0,scale:0.5,duration:0.6,ease:"back.out(1.6)"},@@S5@@+1.0);
// S6
tl.from("#ghostlot",{opacity:0,scale:0.72,duration:0.6,ease:"back.out(1.5)"},@@S6@@+0.25);
tl.from("#s6 .q1",{opacity:0,y:30,duration:0.6,ease:"power3.out"},@@S6@@+0.9);
tl.from("#s6 .q2",{opacity:0,y:30,duration:0.7,ease:"power3.out"},@@S6@@+1.5);
// S7
tl.from("#burst",{scale:0.3,opacity:0,duration:0.8,ease:"power3.out"},@@S7@@+0.15);
tl.from("#s7 .logo",{scale:0.6,opacity:0,duration:0.7,ease:"back.out(1.6)"},@@S7@@+0.2);
tl.from("#s7 .nm",{y:34,opacity:0,duration:0.6,ease:"power3.out"},@@S7@@+0.55);
tl.from("#s7 .sign",{y:24,opacity:0,duration:0.6,ease:"power3.out"},@@S7@@+0.85);
tl.from("#s7 .cred",{opacity:0,y:16,duration:0.5},@@S7@@+1.15);
tl.from("#s7 .links",{opacity:0,y:16,duration:0.5},@@S7@@+1.4);
tl.from("#s7 .handles",{opacity:0,y:14,duration:0.5},@@S7@@+1.65);
// clean dip transitions at section boundaries
[13.0,@@S5@@,@@S6@@,@@S7@@].forEach((b)=>{
tl.to("#dip",{opacity:0.9,duration:0.24,ease:"power2.in",overwrite:"auto"},b-0.26);
tl.to("#dip",{opacity:0,duration:0.42,ease:"power2.out",overwrite:"auto"},b+0.02);
});
tl.to("#fade",{opacity:1,duration:0.6,ease:"power2.in"},D-0.6);
window.__timelines["main"]=tl;
</script>
</body>
</html>
"""Fetch Rubik 700+900 woff2 subsets covering the FULL Hebrew alphabet + latin + digits."""
import re, urllib.request, urllib.parse, os
os.makedirs("fonts", exist_ok=True)
UA = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/120 Safari/537.36"}
TEXT = ("אבגדהוזחטיכךלמםנןסעפףצץקרשת"
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
"?!,.·:;-–—'\"()%+=×@ ")
def fetch(w, out):
url = "https://fonts.googleapis.com/css2?family=Rubik:wght@%d&text=%s" % (w, urllib.parse.quote(TEXT))
css = urllib.request.urlopen(urllib.request.Request(url, headers=UA)).read().decode()
m = re.search(r"url\((https://[^)]+)\)", css)
open(out, "wb").write(urllib.request.urlopen(urllib.request.Request(m.group(1), headers=UA)).read())
print(out, os.path.getsize(out), "bytes")
fetch(900, "fonts/Rubik-900.woff2")
fetch(700, "fonts/Rubik-700.woff2")
# NN-explainer builder: fills template_b.tpl given the measured Manim duration.
# Usage: py gen_b.py <manim_duration_seconds>
import sys
sys.stdout.reconfigure(encoding="utf-8")
DM = float(sys.argv[1])
M0 = 13.0 # manim clip start
S5 = round(M0 + DM, 2) # results
S6 = round(S5 + 8.0, 2) # punch
S7 = round(S6 + 6.0, 2) # outro
D = round(S7 + 6.0, 2) # total
# Hebrew captions over the Manim body, windows as fractions of the clip
# windows matched to the measured chapters: neuron 0-13.27s, network 13.27-23.7s, training 23.7-34.5s
MCAPS = [
(0.015, 0.180, 'נוירון מלאכותי: מקבל מספרים, שוקל אותם — <em>ומחליט אם לירות</em>'),
(0.200, 0.360, 'המשקלים הם <em>הידע</em>: כל קו = חשיבות אחרת'),
(0.395, 0.660, 'מחברים אלפי נוירונים בשכבות — <em>וזו רשת</em>'),
(0.700, 0.985, 'אימון: כל טעות מכווננת את המשקלים — <em>והשגיאה צונחת</em>'),
]
mc_html, mc_js = [], []
for i,(f0,f1,txt) in enumerate(MCAPS):
t0 = round(M0 + f0*DM, 2); t1 = round(M0 + f1*DM, 2); dur = round(t1-t0, 2)
mc_html.append(f'<div id="mc{i}" class="mcap clip" data-start="{t0}" data-duration="{dur}" data-track-index="{20+i}">{txt}</div>')
mc_js.append(f'tl.from("#mc{i}",{{yPercent:30,opacity:0,duration:0.3,ease:"power2.out",overwrite:"auto"}},{t0});'
f'tl.to("#mc{i}",{{opacity:0,duration:0.28,ease:"power1.in",overwrite:"auto"}},{round(t1-0.3,2)});')
html = (open("template_b.tpl", encoding="utf-8").read()
.replace("@@DM@@", str(round(DM,2)))
.replace("@@S5@@", str(S5)).replace("@@S6@@", str(S6)).replace("@@S7@@", str(S7))
.replace("@@D@@", str(D))
.replace("@@MCAPS_HTML@@", "\n ".join(mc_html))
.replace("@@MCAPS_JS@@", "\n ".join(mc_js)))
open("index.html", "w", encoding="utf-8").write(html)
print(f"wrote index.html — manim {DM}s, total {D}s (S5 {S5} / S6 {S6} / S7 {S7})")
"""72s cinematic bed for the NN explainer: Am pad + soft pulse, lift at the punch, swell into outro."""
import numpy as np, wave
sr = 44100
D = 72.0
n = int(sr * D)
t = np.arange(n) / sr
def adsr(att, rel, level=1.0):
env = np.ones(n) * level
a = int(att*sr); r = int(rel*sr)
env[:a] = np.linspace(0, level, a)
env[-r:] = np.linspace(level, 0, r)
return env
pad = np.zeros(n)
for f in [110.0, 164.81, 220.0, 261.63, 329.63]:
for det in (-0.15, 0.15):
pad += np.sin(2*np.pi*(f+det)*t)
pad += 0.25*np.sin(2*np.pi*2*f*t)
pad /= np.max(np.abs(pad))
trem = 0.85 + 0.15*np.sin(2*np.pi*0.1*t)
pad *= trem
lp = np.zeros(n); a = 0.012
for i in range(1, n): lp[i] = lp[i-1] + a*(pad[i]-lp[i-1])
pad = lp * adsr(3.0, 2.5, 0.5)
pulse = np.zeros(n)
step = int(0.5*sr)
env = np.exp(-np.linspace(0, 8, int(0.22*sr)))
blip = np.sin(2*np.pi*58*np.arange(len(env))/sr) * env
for k in range(0, n-len(blip), step):
pulse[k:k+len(blip)] += blip
pulse *= 0.2
# gentle lift at the punch section (last 14-8s) + swell into outro (last 6s)
swell = np.zeros(n)
s0 = int((D-6.0)*sr); ln = n - s0
ns = np.random.default_rng(7).standard_normal(ln)
lp2 = np.zeros(ln); a2 = 0.002
for i in range(1, ln): lp2[i] = lp2[i-1] + a2*(ns[i]-lp2[i-1])
ramp = np.linspace(0, 1, ln)**2
sweep = np.sin(2*np.pi*np.cumsum(np.linspace(120, 320, ln))/sr)
swell[s0:] = (lp2/(np.max(np.abs(lp2))+1e-9)*0.6 + sweep*0.4) * ramp * 0.5
mix = pad*0.6 + pulse*0.5 + swell*0.7
mix /= (np.max(np.abs(mix)) + 1e-9)
mix *= 0.6
st = np.stack([mix, mix], axis=1)
pcm = (st*32767).astype(np.int16)
with wave.open("music.wav", "w") as w:
w.setnchannels(2); w.setsampwidth(2); w.setframerate(sr)
w.writeframes(pcm.tobytes())
print("wrote music.wav", D, "s")
"""46.3s TEASER bed: driving kick + bass hits on slams + risers into drops + quiet tension for the
cliffhanger + final swell. Synthesized, royalty-free, deterministic."""
import numpy as np, wave
sr = 44100
D = 46.3
n = int(sr * D)
t = np.arange(n) / sr
rng = np.random.default_rng(12)
def place(buf, sig, at):
i = int(at*sr); j = min(n, i+len(sig))
if i < n: buf[i:j] += sig[:j-i]
# --- light Am pad for body ---
pad = np.zeros(n)
for f in [110.0, 220.0, 261.63, 329.63]:
pad += np.sin(2*np.pi*f*t) + 0.5*np.sin(2*np.pi*(f+0.18)*t)
pad /= np.max(np.abs(pad)); lp = np.zeros(n); a = 0.010
for i in range(1, n): lp[i] = lp[i-1] + a*(pad[i]-lp[i-1])
pad = lp * 0.30
# --- kick every 0.46s, driving 0 -> 34.6, out for cliffhanger, back at 40.8 ---
kick = np.zeros(n)
kl = int(0.16*sr); ke = np.exp(-np.linspace(0, 9, kl))
ks = np.sin(2*np.pi*52*np.arange(kl)/sr * (1+1.6*np.exp(-np.linspace(0,5,kl)))) * ke
tt = 0.0
while tt < D-0.2:
if tt < 34.4 or tt >= 40.8: place(kick, ks*0.9, tt)
tt += 0.46
# --- bass hits on the hard cuts ---
hit = np.zeros(n)
hl = int(0.30*sr); he = np.exp(-np.linspace(0, 7, hl))
hs = (np.sin(2*np.pi*40*np.arange(hl)/sr)*0.8 + rng.standard_normal(hl)*0.15) * he
for at in [0.0,2.2,3.3,4.6,6.4,7.1,11.1,11.8,16.1,16.8,22.1,29.4,30.7,32.0,33.3,40.8]:
place(hit, hs*1.1, at)
# --- risers (1.8s) ending at the drops ---
ris = np.zeros(n)
rl = int(1.8*sr)
ramp = np.linspace(0, 1, rl)**2
noise = rng.standard_normal(rl); lpn = np.zeros(rl); a2 = 0.004
for i in range(1, rl): lpn[i] = lpn[i-1] + a2*(noise[i]-lpn[i-1])
sweep = np.sin(2*np.pi*np.cumsum(np.linspace(180, 720, rl))/sr)
riser = (lpn/(np.max(np.abs(lpn))+1e-9)*0.55 + sweep*0.45) * ramp * 0.55
for end in [6.4, 22.1, 29.4, 40.8]:
place(ris, riser, max(0, end-1.8))
# --- cliffhanger tension 34.6-40.6: quiet high tremolo + low drone ---
ten = np.zeros(n)
i0, i1 = int(34.6*sr), int(40.6*sr)
seg = np.arange(i1-i0)/sr
trem = (0.6+0.4*np.sin(2*np.pi*5.2*seg))
ten[i0:i1] = (np.sin(2*np.pi*880*seg)*0.05 + np.sin(2*np.pi*55*seg)*0.22) * trem
fade_in = np.linspace(0,1,int(0.4*sr)); ten[i0:i0+len(fade_in)] *= fade_in
# --- final swell 40.8 -> end ---
sw = np.zeros(n)
s0 = int(40.8*sr); ln = n-s0
sramp = np.linspace(0,1,ln)**1.5
sw[s0:] = np.sin(2*np.pi*np.cumsum(np.linspace(140, 300, ln))/sr) * sramp * 0.35
mix = pad + kick + hit + ris + ten + sw
# duck pad during cliffhanger for contrast
duck = np.ones(n); duck[i0:i1] = 0.45
mix *= duck
mix /= (np.max(np.abs(mix)) + 1e-9)
mix[-int(0.45*sr):] *= np.linspace(1, 0, int(0.45*sr))
mix *= 0.7
st = np.stack([mix, mix], axis=1)
pcm = (st*32767).astype(np.int16)
with wave.open("music_teaser.wav", "w") as w:
w.setnchannels(2); w.setsampwidth(2); w.setframerate(sr)
w.writeframes(pcm.tobytes())
print("wrote music_teaser.wav", D, "s")
# Personal-brand cut builder: 2-line karaoke captions + DIRECTOR-TIMED transparent Lottie beats.
# Usage: py gen_news.py [maxchars] [foot_start] [layout: h|v]
import json, sys
sys.stdout.reconfigure(encoding="utf-8")
MAXCHARS = int(sys.argv[1]) if len(sys.argv) > 1 else 46
FOOT_START = float(sys.argv[2]) if len(sys.argv) > 2 else 0.0
LAYOUT = sys.argv[3] if len(sys.argv) > 3 else "h"
FIX = [
("מומחי היי שלנו","מומחה ה-AI שלנו"),("ברוך בורי הקלוד","ברוך בורא ה-Claude"),
("עסקת מסקנות","הסקת מסקנות"),("ונטיח","וננתח"),("טבוני","תבוני"),
("פויקט","פרויקט"),("מעולדת","ימי הולדת"),("האיי-איי","ה-AI"),
]
def fix(t):
for a,b in FIX: t=t.replace(a,b)
return t
CUT_START, CUT_END = 124.3, 150.6
PUNCH = ("לא","נאמר","שורות","בין","תבוני","קלוד")
# ---- DIRECTOR BEATS: (start, end, lottie, label, style_16x9, style_9x16) ----
# Timed to the spoken content of the cut (offsets from CUT_START):
# 0.2-4.2 "קיצור ותמצות" -> WhatsApp chatter collapses into a summary
# 4.2-9.9 "פענוח, לפלח... תבוני" -> decode beam scanning text (RTL)
# 9.9-12.7 "הדבר הקסום" -> magic sparkles
# 12.7-16.0 "בני אדם רואים בטקסט" -> reading eye over text
# 16.0-21.3 "מה שלא נאמר/בין השורות" -> THE hero: hidden line materializes between lines
# 21.4-24.7 "ה-AI טוב בלחלץ" -> orb extracts the hidden gem
BEATS = [
(0.25, 4.15, "wa-collapse.json", "קיצור ותמצות",
"right:80px;top:128px;width:430px;height:430px",
"left:0;right:0;margin:0 auto;top:160px;width:470px;height:470px"),
(4.35, 9.75, "decode-beam.json", "פענוח",
"right:80px;top:140px;width:430px;height:430px",
"left:0;right:0;margin:0 auto;top:172px;width:460px;height:460px"),
(9.95, 12.55, "c-magic.json", "הקסם",
"right:112px;top:128px;width:390px;height:390px",
"left:0;right:0;margin:0 auto;top:184px;width:430px;height:430px"),
(12.8, 15.9, "eye-read.json", "מה שכתוב — בני אדם",
"right:86px;top:138px;width:420px;height:420px",
"left:0;right:0;margin:0 auto;top:178px;width:450px;height:450px"),
(16.05, 21.2, "ghost-line.json", "מה שלא נאמר · בין השורות",
"right:56px;top:132px;width:560px;height:385px",
"left:0;right:0;margin:0 auto;top:208px;width:600px;height:413px"),
(21.4, 24.7, "orb-extract.json", "ה-AI מחלץ",
"right:90px;top:128px;width:430px;height:430px",
"left:0;right:0;margin:0 auto;top:172px;width:460px;height:460px"),
]
data = json.load(open("transcript.json", encoding="utf-8"))
# ---- captions: pack words into <=MAXCHARS chunks, karaoke per word ----
chunks = []
for s in data["segments"]:
if not (CUT_START <= s["start"] < CUT_END): continue
words = fix(s["text"]).strip().split()
if not words: continue
cs = FOOT_START + (s["start"]-CUT_START); ce = FOOT_START + (min(s["end"],CUT_END)-CUT_START)
cd = max(0.8, ce-cs)
groups, cur, cl = [], [], 0
for w in words:
add = len(w)+(1 if cur else 0)
if cur and cl+add>MAXCHARS: groups.append(cur); cur=[w]; cl=len(w)
else: cur.append(w); cl+=add
if cur: groups.append(cur)
tot = sum(sum(len(w) for w in g) for g in groups) or 1; acc=0
for g in groups:
gl=sum(len(w) for w in g); gstart=round(cs+(acc/tot)*cd,2); gdur=max(0.7,round((gl/tot)*cd,2))
chunks.append((g,gstart,gdur)); acc+=gl
caps_html, caps_js = [], []
for i,(words,cs,cd) in enumerate(chunks):
total=sum(len(w) for w in words) or 1; spans=[]; acc=0
for j,w in enumerate(words):
spans.append(f'<span id="c{i}w{j}">{w}</span>')
wt=round(cs+(acc/total)*cd*0.82,2)
pink=any(p in w for p in PUNCH); c="#FF1464" if pink else "#FFFFFF"
sh="0 0 16px rgba(255,20,100,.6)" if pink else "0 0 10px rgba(255,255,255,.22)"
caps_js.append(f'tl.set("#c{i}w{j}",{{color:"{c}",textShadow:"{sh}"}},{wt});'); acc+=len(w)
caps_html.append(f'<div id="cap{i}" class="cap clip" data-start="{cs}" data-duration="{cd}" data-track-index="{20+i}">{" ".join(spans)}</div>')
caps_js.append(f'tl.from("#cap{i}",{{yPercent:30,opacity:0,duration:0.26,ease:"power2.out",overwrite:"auto"}},{cs});')
# ---- director beats -> transparent floating lottie overlays ----
illu_html, illu_js = [], []
for n,(b0,b1,lot,lab,sh,sv) in enumerate(BEATS):
st = sh if LAYOUT=="h" else sv
dur = round(b1-b0,2)
illu_html.append(f'<div id="bt{n}" class="illu clip" data-start="{b0}" data-duration="{dur}" data-track-index="{60+n}" style="{st}"><div class="illu-lot" id="bt{n}lot"></div><div class="illu-lab">{lab}</div></div>')
illu_js.append(
f'L("bt{n}lot","assets/{lot}");'
f'tl.from("#bt{n}",{{scale:0.7,opacity:0,duration:0.45,ease:"back.out(1.6)",overwrite:"auto"}},{b0});'
f'tl.to("#bt{n}",{{opacity:0,y:-14,duration:0.3,ease:"power1.in",overwrite:"auto"}},{round(b0+dur-0.32,2)});')
print(f"{len(chunks)} captions (<= {MAXCHARS} chars), {len(BEATS)} director beats, layout {LAYOUT}")
html = (open("template.tpl",encoding="utf-8").read()
.replace("@@CAPS_HTML@@","\n ".join(caps_html))
.replace("@@CAPS_JS@@","\n ".join(caps_js))
.replace("@@ILLU_HTML@@","\n ".join(illu_html))
.replace("@@ILLU_JS@@","\n ".join(illu_js)))
open("index.html","w",encoding="utf-8").write(html)
print("wrote index.html")
<!doctype html>
<html lang="he">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=1920, height=1080" />
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bodymovin/5.12.2/lottie.min.js"></script>
<style>
@font-face{font-family:"Anton";font-weight:400;src:url("fonts/Anton-Regular.woff2") format("woff2");}
@font-face{font-family:"Rubik";font-weight:900;src:url("fonts/Rubik-900.woff2") format("woff2");}
@font-face{font-family:"Rubik";font-weight:700;src:url("fonts/Rubik-700.woff2") format("woff2");}
:root{--pink:#FF1464;--cyan:#00E5FF;--ink:#0A0A0A;--phx:linear-gradient(100deg,#F9AD45,#F0664E,#DE6092,#FF1464,#8B459A,#7C3AED,#4E7DB7,#00E5FF,#F9AD45);}
*{margin:0;padding:0;box-sizing:border-box;}
html,body{width:1920px;height:1080px;overflow:hidden;background:var(--ink);font-family:"Inter",sans-serif;}
#net{position:absolute;inset:0;z-index:0;}
#mvid{position:absolute;inset:0;width:1920px;height:1080px;object-fit:cover;z-index:5;}
.grad{background:var(--phx);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;}
.display{font-family:"Anton";text-transform:uppercase;letter-spacing:0;line-height:0.9;}
/* broadcast name-super (top-left, personal brand) */
#nsuper{position:absolute;left:60px;top:120px;z-index:18;display:flex;flex-direction:column;gap:6px;}
#nsuper .row{display:flex;align-items:center;gap:16px;}
#nsuper img{width:64px;filter:drop-shadow(0 0 10px rgba(255,20,100,.4));}
#nsuper .nm{direction:rtl;font-family:"Rubik";font-weight:900;font-size:58px;color:#fff;line-height:1;text-shadow:0 2px 18px rgba(0,0,0,.7);}
#nsuper .ti{direction:rtl;font-family:"Rubik";font-weight:700;font-size:27px;color:var(--cyan);text-shadow:0 2px 14px rgba(0,0,0,.8);}
#acc{width:380px;height:62px;margin-top:-4px;}
/* karaoke captions — centered via margin (no transform), 2-line safe, lower */
.cap{position:absolute;left:0;right:0;bottom:38px;margin:0 auto;width:max-content;max-width:1480px;z-index:20;direction:rtl;
font-family:"Rubik",sans-serif;font-weight:900;font-size:46px;line-height:1.28;text-align:center;
background:rgba(8,8,12,.86);border:1px solid rgba(0,229,255,.4);border-right:6px solid var(--pink);
padding:13px 32px;box-shadow:0 10px 34px rgba(0,0,0,.6);}
.cap span{color:rgba(255,255,255,.5);}
/* director-timed TRANSPARENT lottie overlays — float directly on the footage */
.illu{position:absolute;z-index:18;filter:drop-shadow(0 12px 30px rgba(0,0,0,.78));}
.illu-lot{width:100%;height:100%;}
.illu-lab{position:absolute;left:-70px;right:-70px;top:100%;margin-top:8px;direction:rtl;font-family:"Rubik";font-weight:700;font-size:25px;color:#fff;text-align:center;text-shadow:0 2px 12px rgba(0,0,0,.95),0 0 20px rgba(0,229,255,.35);white-space:nowrap;}
/* outro */
#ec{position:absolute;inset:0;z-index:30;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;}
#burst{position:absolute;left:50%;top:40%;width:760px;height:760px;margin-left:-380px;margin-top:-380px;z-index:-1;}
#ec .logo{width:180px;filter:drop-shadow(0 0 22px rgba(255,20,100,.5)) drop-shadow(0 0 50px rgba(0,229,255,.3));}
#ec .nm{direction:rtl;font-family:"Rubik";font-weight:900;font-size:96px;color:#fff;margin-top:14px;}
#ec .sign{font-size:64px;margin-top:4px;}
#ec .cred{direction:rtl;font-family:"Rubik";font-weight:700;font-size:30px;color:var(--cyan);margin-top:14px;}
#ec .links{font-family:"JetBrains Mono";font-size:27px;letter-spacing:2px;color:#fff;margin-top:18px;}
#ec .handles{font-family:"JetBrains Mono";font-size:21px;letter-spacing:2px;color:rgba(255,255,255,.72);margin-top:10px;}
#grain{position:absolute;inset:0;z-index:40;opacity:.05;pointer-events:none;mix-blend-mode:overlay;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='2' stitchTiles='stitch'/></filter><rect width='160' height='160' filter='url(%23n)'/></svg>");}
#vig{position:absolute;inset:0;z-index:41;pointer-events:none;background:radial-gradient(ellipse 82% 82% at 50% 50%,transparent 60%,rgba(0,0,0,.42) 100%);}
#dip{position:absolute;inset:0;z-index:50;opacity:0;pointer-events:none;background:var(--ink);}
#fade{position:absolute;inset:0;z-index:60;opacity:0;pointer-events:none;background:var(--ink);}
</style>
</head>
<body>
<div id="root" data-composition-id="main" data-start="0" data-duration="31.3" data-width="1920" data-height="1080">
<canvas id="net" width="1920" height="1080"></canvas>
<video id="mvid" class="clip" data-start="0" data-duration="26.3" data-media-start="124.3" data-track-index="0" src="source.mp4" muted playsinline crossorigin="anonymous"></video>
<audio id="news-audio" class="clip" data-start="0" data-duration="26.3" data-media-start="124.3" data-track-index="2" data-volume="1" src="source.mp4"></audio>
<audio id="music" class="clip" data-start="0" data-duration="31.3" data-track-index="9" data-volume="0.15" src="music.wav"></audio>
<div id="nsuper" class="clip" data-start="1.0" data-duration="5.4" data-track-index="15">
<div class="row"><img src="assets/logo-phoenix.png" crossorigin="anonymous" alt="" /><div class="nm">יובל אבידני</div></div>
<div class="ti">מומחה AI · פינת ה-AI בחדשות 12</div>
<div id="acc"></div>
</div>
@@ILLU_HTML@@
@@CAPS_HTML@@
<div id="ec" class="clip" data-start="26.3" data-duration="5.0" data-track-index="4">
<div id="burst"></div>
<img class="logo" src="assets/logo-phoenix.png" crossorigin="anonymous" alt="" />
<div class="nm">יובל אבידני</div>
<div class="sign display grad">LET'S FLY HIGH</div>
<div class="cred">מומחה AI · פינת ה-AI בחדשות 12</div>
<div class="links">yuv.ai · linktr.ee/yuvai</div>
<div class="handles">X @yuvalav · IG @yuval_770 · TikTok @yuval.ai · YT @yuv-ai · GitHub @hoodini</div>
</div>
<div id="grain"></div><div id="vig"></div><div id="dip"></div><div id="fade"></div>
</div>
<script>
const cv=document.getElementById("net"),ctx=cv.getContext("2d");
function mul(a){return function(){a|=0;a=(a+0x6d2b79f5)|0;let t=Math.imul(a^(a>>>15),1|a);t=(t+Math.imul(t^(t>>>7),61|t))^t;return((t^(t>>>14))>>>0)/4294967296;};}
const rnd=mul(20260609);
const STOPS=[[249,173,69],[240,102,78],[222,96,146],[124,58,237],[78,125,183],[0,229,255]];
function col(u){u=Math.max(0,Math.min(0.999,u));const s=u*(STOPS.length-1),i=Math.floor(s),f=s-i,a=STOPS[i],b=STOPS[i+1];return[(a[0]+(b[0]-a[0])*f)|0,(a[1]+(b[1]-a[1])*f)|0,(a[2]+(b[2]-a[2])*f)|0];}
const Np=60,nodes=[];
for(let i=0;i<Np;i++){let x,y,u;if(i<20){const a=rnd();x=840-a*640+(rnd()-0.5)*70;y=470-a*300+(rnd()-0.5)*130;u=a*0.26;}else if(i<40){const a=rnd();x=1080+a*640+(rnd()-0.5)*70;y=470-a*300+(rnd()-0.5)*130;u=0.74+a*0.26;}else{const a=rnd();x=960+(rnd()-0.5)*200;y=360+a*440+(rnd()-0.5)*70;u=0.30+a*0.42;}nodes.push({x,y,seed:rnd()*6.2832,u});}
function net(t,g){ctx.clearRect(0,0,1920,1080);for(const n of nodes){n.px=n.x+Math.sin(t*0.5+n.seed)*15;n.py=n.y+Math.cos(t*0.4+n.seed)*15;}ctx.lineWidth=1;for(let i=0;i<Np;i++)for(let j=i+1;j<Np;j++){const a=nodes[i],b=nodes[j],d=Math.hypot(a.px-b.px,a.py-b.py);if(d>150)continue;ctx.strokeStyle="rgba(170,195,255,"+(0.16*(1-d/150)*g).toFixed(3)+")";ctx.beginPath();ctx.moveTo(a.px,a.py);ctx.lineTo(b.px,b.py);ctx.stroke();}for(const n of nodes){const c=col(n.u);ctx.globalAlpha=g;ctx.fillStyle="rgb("+c[0]+","+c[1]+","+c[2]+")";ctx.shadowColor=ctx.fillStyle;ctx.shadowBlur=10;ctx.beginPath();ctx.arc(n.px,n.py,2.4,0,6.2832);ctx.fill();}ctx.globalAlpha=1;ctx.shadowBlur=0;}
net(0,1);
window.__hfLottie=window.__hfLottie||[];
const L=(id,p)=>window.__hfLottie.push(lottie.loadAnimation({container:document.getElementById(id),renderer:"svg",loop:true,autoplay:false,path:p}));
L("acc","assets/name-accent.json"); L("burst","assets/phoenix-burst.json");
window.__timelines=window.__timelines||{};
const tl=gsap.timeline({paused:true});
const D=31.3,proxy={t:0};
// field: hidden under footage, ignites for the outro
tl.to(proxy,{t:D,duration:D,ease:"none",onUpdate:()=>{const g=proxy.t<25.8?0:Math.min(1,(proxy.t-25.8)/1.2);net(proxy.t,g);}},0);
tl.to("#ec .grad",{backgroundPositionX:"-200%",duration:6,ease:"none"},26);
// name-super in + out (broadcast lower-third)
tl.from("#nsuper .row",{x:-40,opacity:0,duration:0.6,ease:"power3.out"},1.1);
tl.from("#nsuper .ti",{x:-30,opacity:0,duration:0.5,ease:"power2.out"},1.35);
tl.to("#nsuper",{opacity:0,duration:0.5,ease:"power1.in"},5.6);
// concept illustrations (fire in sync with the spoken terms)
@@ILLU_JS@@
// captions (karaoke)
@@CAPS_JS@@
// clean dip-to-ink transition footage -> outro
tl.to("#dip",{opacity:0.92,duration:0.28,ease:"power2.in"},26.0);
tl.to("#dip",{opacity:0,duration:0.5,ease:"power2.out"},26.45);
// outro
tl.from("#burst",{scale:0.3,opacity:0,duration:0.8,ease:"power3.out"},26.4);
tl.from("#ec .logo",{scale:0.6,opacity:0,duration:0.7,ease:"back.out(1.6)"},26.45);
tl.from("#ec .nm",{y:30,opacity:0,duration:0.6,ease:"power3.out"},26.8);
tl.from("#ec .sign",{y:24,opacity:0,duration:0.6,ease:"power3.out"},27.1);
tl.from("#ec .cred",{opacity:0,y:16,duration:0.5},27.4);
tl.from("#ec .links",{opacity:0,y:16,duration:0.5},27.65);
tl.from("#ec .handles",{opacity:0,y:14,duration:0.5},27.9);
tl.to("#fade",{opacity:1,duration:0.55,ease:"power2.in"},D-0.55);
window.__timelines["main"]=tl;
</script>
</body>
</html>
<!doctype html>
<html lang="he">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=1080, height=1920" />
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bodymovin/5.12.2/lottie.min.js"></script>
<style>
@font-face{font-family:"Anton";font-weight:400;src:url("fonts/Anton-Regular.woff2") format("woff2");}
@font-face{font-family:"Rubik";font-weight:900;src:url("fonts/Rubik-900.woff2") format("woff2");}
@font-face{font-family:"Rubik";font-weight:700;src:url("fonts/Rubik-700.woff2") format("woff2");}
:root{--pink:#FF1464;--cyan:#00E5FF;--ink:#0A0A0A;--phx:linear-gradient(100deg,#F9AD45,#F0664E,#DE6092,#FF1464,#8B459A,#7C3AED,#4E7DB7,#00E5FF,#F9AD45);}
*{margin:0;padding:0;box-sizing:border-box;}
html,body{width:1080px;height:1920px;overflow:hidden;background:var(--ink);font-family:"Inter",sans-serif;}
#bg{position:absolute;inset:0;z-index:0;background:radial-gradient(ellipse 80% 55% at 50% 42%,#161622,#0A0A0F 70%);}
#mvid{position:absolute;left:0;top:656px;width:1080px;height:607px;object-fit:cover;z-index:5;box-shadow:0 0 0 2px rgba(0,229,255,.35),0 18px 60px rgba(0,0,0,.6);}
.grad{background:var(--phx);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;}
.display{font-family:"Anton";text-transform:uppercase;letter-spacing:0;line-height:0.92;}
#nsuper{position:absolute;left:0;right:0;top:150px;z-index:18;display:flex;flex-direction:column;align-items:center;gap:6px;}
#nsuper img{width:120px;filter:drop-shadow(0 0 14px rgba(255,20,100,.45));}
#nsuper .nm{direction:rtl;font-family:"Rubik";font-weight:900;font-size:80px;color:#fff;line-height:1;margin-top:8px;}
#nsuper .ti{direction:rtl;font-family:"Rubik";font-weight:700;font-size:34px;color:var(--cyan);}
#acc{width:460px;height:74px;}
.illu{position:absolute;z-index:18;filter:drop-shadow(0 14px 34px rgba(0,0,0,.8));}
.illu-lot{width:100%;height:100%;}
.illu-lab{position:absolute;left:-80px;right:-80px;top:100%;margin-top:10px;direction:rtl;font-family:"Rubik";font-weight:700;font-size:32px;color:#fff;text-align:center;text-shadow:0 2px 14px rgba(0,0,0,.95),0 0 22px rgba(0,229,255,.35);white-space:nowrap;}
.cap{position:absolute;left:0;right:0;bottom:380px;margin:0 auto;width:max-content;max-width:980px;z-index:20;direction:rtl;
font-family:"Rubik",sans-serif;font-weight:900;font-size:56px;line-height:1.3;text-align:center;
background:rgba(8,8,12,.88);border:1px solid rgba(0,229,255,.4);border-right:7px solid var(--pink);
padding:18px 34px;box-shadow:0 10px 40px rgba(0,0,0,.6);}
.cap span{color:rgba(255,255,255,.5);}
#ec{position:absolute;inset:0;z-index:30;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;}
#burst{position:absolute;left:50%;top:40%;width:760px;height:760px;margin-left:-380px;margin-top:-380px;z-index:-1;}
#ec .logo{width:240px;filter:drop-shadow(0 0 26px rgba(255,20,100,.5)) drop-shadow(0 0 60px rgba(0,229,255,.3));}
#ec .nm{direction:rtl;font-family:"Rubik";font-weight:900;font-size:118px;color:#fff;margin-top:16px;}
#ec .sign{font-size:88px;margin-top:6px;}
#ec .cred{direction:rtl;font-family:"Rubik";font-weight:700;font-size:38px;color:var(--cyan);margin-top:18px;}
#ec .links{font-family:"JetBrains Mono";font-size:34px;letter-spacing:2px;color:#fff;margin-top:22px;}
#ec .handles{font-family:"JetBrains Mono";font-size:24px;letter-spacing:1px;color:rgba(255,255,255,.72);margin-top:16px;line-height:1.7;}
#grain{position:absolute;inset:0;z-index:40;opacity:.05;pointer-events:none;mix-blend-mode:overlay;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='2' stitchTiles='stitch'/></filter><rect width='160' height='160' filter='url(%23n)'/></svg>");}
#vig{position:absolute;inset:0;z-index:41;pointer-events:none;background:radial-gradient(ellipse 95% 80% at 50% 50%,transparent 55%,rgba(0,0,0,.5) 100%);}
#dip{position:absolute;inset:0;z-index:50;opacity:0;pointer-events:none;background:var(--ink);}
#fade{position:absolute;inset:0;z-index:60;opacity:0;pointer-events:none;background:var(--ink);}
</style>
</head>
<body>
<div id="root" data-composition-id="main" data-start="0" data-duration="31.3" data-width="1080" data-height="1920">
<div id="bg"></div>
<video id="mvid" class="clip" data-start="0" data-duration="26.3" data-media-start="124.3" data-track-index="0" src="source.mp4" muted playsinline crossorigin="anonymous"></video>
<audio id="news-audio" class="clip" data-start="0" data-duration="26.3" data-media-start="124.3" data-track-index="2" data-volume="1" src="source.mp4"></audio>
<audio id="music" class="clip" data-start="0" data-duration="31.3" data-track-index="9" data-volume="0.15" src="music.wav"></audio>
<div id="nsuper" class="clip" data-start="1.0" data-duration="5.4" data-track-index="15">
<img src="assets/logo-phoenix.png" crossorigin="anonymous" alt="" />
<div class="nm">יובל אבידני</div>
<div class="ti">מומחה AI · פינת ה-AI בחדשות 12</div>
<div id="acc"></div>
</div>
@@ILLU_HTML@@
@@CAPS_HTML@@
<div id="ec" class="clip" data-start="26.3" data-duration="5.0" data-track-index="4">
<div id="burst"></div>
<img class="logo" src="assets/logo-phoenix.png" crossorigin="anonymous" alt="" />
<div class="nm">יובל אבידני</div>
<div class="sign display grad">LET'S FLY HIGH</div>
<div class="cred">מומחה AI · פינת ה-AI בחדשות 12</div>
<div class="links">yuv.ai · linktr.ee/yuvai</div>
<div class="handles">X @yuvalav · IG @yuval_770 · TikTok @yuval.ai<br>YT @yuv-ai · GitHub @hoodini</div>
</div>
<div id="grain"></div><div id="vig"></div><div id="dip"></div><div id="fade"></div>
</div>
<script>
window.__hfLottie=window.__hfLottie||[];
const L=(id,p)=>window.__hfLottie.push(lottie.loadAnimation({container:document.getElementById(id),renderer:"svg",loop:true,autoplay:false,path:p}));
L("acc","assets/name-accent.json"); L("burst","assets/phoenix-burst.json");
window.__timelines=window.__timelines||{};
const tl=gsap.timeline({paused:true});
const D=31.3;
tl.to("#ec .grad",{backgroundPositionX:"-200%",duration:6,ease:"none"},26);
tl.from("#mvid",{opacity:0,scale:0.94,duration:0.5,ease:"power2.out"},0.0);
tl.from("#nsuper img",{scale:0.6,opacity:0,duration:0.6,ease:"back.out(1.6)"},1.1);
tl.from("#nsuper .nm",{y:24,opacity:0,duration:0.5,ease:"power3.out"},1.35);
tl.from("#nsuper .ti",{y:18,opacity:0,duration:0.45,ease:"power2.out"},1.6);
tl.to("#nsuper",{opacity:0,duration:0.5,ease:"power1.in"},5.6);
@@ILLU_JS@@
@@CAPS_JS@@
tl.to("#dip",{opacity:0.92,duration:0.28,ease:"power2.in"},26.0);
tl.to("#dip",{opacity:0,duration:0.5,ease:"power2.out"},26.45);
tl.from("#burst",{scale:0.3,opacity:0,duration:0.8,ease:"power3.out"},26.4);
tl.from("#ec .logo",{scale:0.6,opacity:0,duration:0.7,ease:"back.out(1.6)"},26.45);
tl.from("#ec .nm",{y:36,opacity:0,duration:0.6,ease:"power3.out"},26.8);
tl.from("#ec .sign",{y:24,opacity:0,duration:0.6,ease:"power3.out"},27.1);
tl.from("#ec .cred",{opacity:0,y:18,duration:0.5},27.4);
tl.from("#ec .links",{opacity:0,y:18,duration:0.5},27.65);
tl.from("#ec .handles",{opacity:0,y:16,duration:0.5},27.9);
tl.to("#fade",{opacity:1,duration:0.55,ease:"power2.in"},D-0.55);
window.__timelines["main"]=tl;
</script>
</body>
</html>
{"v":"5.7.4","fr":30,"ip":0,"op":1170,"w":512,"h":512,"assets":[],"layers":[{"ty":4,"nm":"dot","ip":0,"op":1170,"st":0,"ao":0,"ks":{"o":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":10,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":70,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":82,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":89,"s":[0]},{"t":90,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":100,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":160,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":172,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":179,"s":[0]},{"t":180,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":190,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":250,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":262,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":269,"s":[0]},{"t":270,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":280,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":340,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":352,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":359,"s":[0]},{"t":360,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":370,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":430,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":442,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":449,"s":[0]},{"t":450,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":460,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":520,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":532,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":539,"s":[0]},{"t":540,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":550,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":610,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":622,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":629,"s":[0]},{"t":630,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":640,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":700,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":712,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":719,"s":[0]},{"t":720,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":730,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":790,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":802,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":809,"s":[0]},{"t":810,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":820,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":880,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":892,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":899,"s":[0]},{"t":900,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":910,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":970,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":982,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":989,"s":[0]},{"t":990,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1000,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1060,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1072,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1079,"s":[0]},{"t":1080,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1090,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1150,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1162,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1169,"s":[0]},{"t":1170,"s":[0]}]},"r":{"a":0,"k":0},"p":{"a":1,"k":[{"t":0,"s":[442,396,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":82,"s":[50,196,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":89,"s":[50,196,0]},{"t":90,"s":[442,396,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":172,"s":[50,196,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":179,"s":[50,196,0]},{"t":180,"s":[442,396,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":262,"s":[50,196,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":269,"s":[50,196,0]},{"t":270,"s":[442,396,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":352,"s":[50,196,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":359,"s":[50,196,0]},{"t":360,"s":[442,396,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":442,"s":[50,196,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":449,"s":[50,196,0]},{"t":450,"s":[442,396,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":532,"s":[50,196,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":539,"s":[50,196,0]},{"t":540,"s":[442,396,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":622,"s":[50,196,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":629,"s":[50,196,0]},{"t":630,"s":[442,396,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":712,"s":[50,196,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":719,"s":[50,196,0]},{"t":720,"s":[442,396,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":802,"s":[50,196,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":809,"s":[50,196,0]},{"t":810,"s":[442,396,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":892,"s":[50,196,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":899,"s":[50,196,0]},{"t":900,"s":[442,396,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":982,"s":[50,196,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":989,"s":[50,196,0]},{"t":990,"s":[442,396,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":1072,"s":[50,196,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":1079,"s":[50,196,0]},{"t":1080,"s":[442,396,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":1162,"s":[50,196,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":1169,"s":[50,196,0]},{"t":1170,"s":[442,396,0]}]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[100,100,100]}},"shapes":[{"ty":"gr","nm":"d","it":[{"ty":"el","p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[12,12]}},{"ty":"fl","c":{"a":0,"k":[0,0.898,1,1]},"o":{"a":0,"k":95}},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]},{"ty":"gr","nm":"g","it":[{"ty":"el","p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[26,26]}},{"ty":"fl","c":{"a":0,"k":[0,0.898,1,1]},"o":{"a":0,"k":30}},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]}]},{"ty":4,"nm":"dot","ip":0,"op":1170,"st":0,"ao":0,"ks":{"o":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":10,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":70,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":82,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":89,"s":[0]},{"t":90,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":100,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":160,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":172,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":179,"s":[0]},{"t":180,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":190,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":250,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":262,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":269,"s":[0]},{"t":270,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":280,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":340,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":352,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":359,"s":[0]},{"t":360,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":370,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":430,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":442,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":449,"s":[0]},{"t":450,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":460,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":520,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":532,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":539,"s":[0]},{"t":540,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":550,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":610,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":622,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":629,"s":[0]},{"t":630,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":640,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":700,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":712,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":719,"s":[0]},{"t":720,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":730,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":790,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":802,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":809,"s":[0]},{"t":810,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":820,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":880,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":892,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":899,"s":[0]},{"t":900,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":910,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":970,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":982,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":989,"s":[0]},{"t":990,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1000,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1060,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1072,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1079,"s":[0]},{"t":1080,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1090,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1150,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1162,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1169,"s":[0]},{"t":1170,"s":[0]}]},"r":{"a":0,"k":0},"p":{"a":1,"k":[{"t":0,"s":[460,344,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":82,"s":[68,158,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":89,"s":[68,158,0]},{"t":90,"s":[460,344,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":172,"s":[68,158,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":179,"s":[68,158,0]},{"t":180,"s":[460,344,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":262,"s":[68,158,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":269,"s":[68,158,0]},{"t":270,"s":[460,344,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":352,"s":[68,158,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":359,"s":[68,158,0]},{"t":360,"s":[460,344,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":442,"s":[68,158,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":449,"s":[68,158,0]},{"t":450,"s":[460,344,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":532,"s":[68,158,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":539,"s":[68,158,0]},{"t":540,"s":[460,344,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":622,"s":[68,158,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":629,"s":[68,158,0]},{"t":630,"s":[460,344,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":712,"s":[68,158,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":719,"s":[68,158,0]},{"t":720,"s":[460,344,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":802,"s":[68,158,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":809,"s":[68,158,0]},{"t":810,"s":[460,344,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":892,"s":[68,158,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":899,"s":[68,158,0]},{"t":900,"s":[460,344,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":982,"s":[68,158,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":989,"s":[68,158,0]},{"t":990,"s":[460,344,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":1072,"s":[68,158,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":1079,"s":[68,158,0]},{"t":1080,"s":[460,344,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":1162,"s":[68,158,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":1169,"s":[68,158,0]},{"t":1170,"s":[460,344,0]}]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[100,100,100]}},"shapes":[{"ty":"gr","nm":"d","it":[{"ty":"el","p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[12,12]}},{"ty":"fl","c":{"a":0,"k":[0,0.898,1,1]},"o":{"a":0,"k":95}},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]},{"ty":"gr","nm":"g","it":[{"ty":"el","p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[26,26]}},{"ty":"fl","c":{"a":0,"k":[0,0.898,1,1]},"o":{"a":0,"k":30}},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]}]},{"ty":4,"nm":"dot","ip":0,"op":1170,"st":0,"ao":0,"ks":{"o":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":10,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":70,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":82,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":89,"s":[0]},{"t":90,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":100,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":160,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":172,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":179,"s":[0]},{"t":180,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":190,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":250,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":262,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":269,"s":[0]},{"t":270,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":280,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":340,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":352,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":359,"s":[0]},{"t":360,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":370,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":430,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":442,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":449,"s":[0]},{"t":450,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":460,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":520,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":532,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":539,"s":[0]},{"t":540,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":550,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":610,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":622,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":629,"s":[0]},{"t":630,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":640,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":700,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":712,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":719,"s":[0]},{"t":720,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":730,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":790,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":802,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":809,"s":[0]},{"t":810,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":820,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":880,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":892,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":899,"s":[0]},{"t":900,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":910,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":970,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":982,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":989,"s":[0]},{"t":990,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1000,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1060,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1072,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1079,"s":[0]},{"t":1080,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1090,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1150,"s":[85],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1162,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1169,"s":[0]},{"t":1170,"s":[0]}]},"r":{"a":0,"k":0},"p":{"a":1,"k":[{"t":0,"s":[452,300,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":82,"s":[60,130,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":89,"s":[60,130,0]},{"t":90,"s":[452,300,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":172,"s":[60,130,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":179,"s":[60,130,0]},{"t":180,"s":[452,300,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":262,"s":[60,130,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":269,"s":[60,130,0]},{"t":270,"s":[452,300,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":352,"s":[60,130,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":359,"s":[60,130,0]},{"t":360,"s":[452,300,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":442,"s":[60,130,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":449,"s":[60,130,0]},{"t":450,"s":[452,300,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":532,"s":[60,130,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":539,"s":[60,130,0]},{"t":540,"s":[452,300,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":622,"s":[60,130,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":629,"s":[60,130,0]},{"t":630,"s":[452,300,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":712,"s":[60,130,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":719,"s":[60,130,0]},{"t":720,"s":[452,300,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":802,"s":[60,130,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":809,"s":[60,130,0]},{"t":810,"s":[452,300,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":892,"s":[60,130,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":899,"s":[60,130,0]},{"t":900,"s":[452,300,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":982,"s":[60,130,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":989,"s":[60,130,0]},{"t":990,"s":[452,300,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":1072,"s":[60,130,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":1079,"s":[60,130,0]},{"t":1080,"s":[452,300,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":1162,"s":[60,130,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":1169,"s":[60,130,0]},{"t":1170,"s":[452,300,0]}]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[100,100,100]}},"shapes":[{"ty":"gr","nm":"d","it":[{"ty":"el","p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[12,12]}},{"ty":"fl","c":{"a":0,"k":[0,0.898,1,1]},"o":{"a":0,"k":95}},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]},{"ty":"gr","nm":"g","it":[{"ty":"el","p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[26,26]}},{"ty":"fl","c":{"a":0,"k":[0,0.898,1,1]},"o":{"a":0,"k":30}},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]}]},{"ty":4,"nm":"beam","ip":0,"op":1170,"st":0,"ao":0,"ks":{"o":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":4,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":78,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":84,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":89,"s":[0]},{"t":90,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":94,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":168,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":174,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":179,"s":[0]},{"t":180,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":184,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":258,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":264,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":269,"s":[0]},{"t":270,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":274,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":348,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":354,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":359,"s":[0]},{"t":360,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":364,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":438,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":444,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":449,"s":[0]},{"t":450,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":454,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":528,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":534,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":539,"s":[0]},{"t":540,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":544,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":618,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":624,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":629,"s":[0]},{"t":630,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":634,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":708,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":714,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":719,"s":[0]},{"t":720,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":724,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":798,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":804,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":809,"s":[0]},{"t":810,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":814,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":888,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":894,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":899,"s":[0]},{"t":900,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":904,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":978,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":984,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":989,"s":[0]},{"t":990,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":994,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1068,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1074,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1079,"s":[0]},{"t":1080,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1084,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1158,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1164,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1169,"s":[0]},{"t":1170,"s":[0]}]},"r":{"a":0,"k":0},"p":{"a":1,"k":[{"t":0,"s":[452,250,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":82,"s":[60,250,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":89,"s":[60,250,0]},{"t":90,"s":[452,250,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":172,"s":[60,250,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":179,"s":[60,250,0]},{"t":180,"s":[452,250,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":262,"s":[60,250,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":269,"s":[60,250,0]},{"t":270,"s":[452,250,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":352,"s":[60,250,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":359,"s":[60,250,0]},{"t":360,"s":[452,250,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":442,"s":[60,250,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":449,"s":[60,250,0]},{"t":450,"s":[452,250,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":532,"s":[60,250,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":539,"s":[60,250,0]},{"t":540,"s":[452,250,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":622,"s":[60,250,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":629,"s":[60,250,0]},{"t":630,"s":[452,250,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":712,"s":[60,250,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":719,"s":[60,250,0]},{"t":720,"s":[452,250,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":802,"s":[60,250,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":809,"s":[60,250,0]},{"t":810,"s":[452,250,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":892,"s":[60,250,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":899,"s":[60,250,0]},{"t":900,"s":[452,250,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":982,"s":[60,250,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":989,"s":[60,250,0]},{"t":990,"s":[452,250,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":1072,"s":[60,250,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":1079,"s":[60,250,0]},{"t":1080,"s":[452,250,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":1162,"s":[60,250,0],"i":{"x":[0.6,0.6],"y":[1,1]},"o":{"x":[0.4,0.4],"y":[0,0]}},{"t":1169,"s":[60,250,0]},{"t":1170,"s":[452,250,0]}]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[100,100,100]}},"shapes":[{"ty":"gr","nm":"wc","it":[{"ty":"rc","p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[3,378]},"r":{"a":0,"k":1.5}},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":85}},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]},{"ty":"gr","nm":"core","it":[{"ty":"rc","p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[8,378]},"r":{"a":0,"k":4}},{"ty":"fl","c":{"a":0,"k":[0,0.898,1,1]},"o":{"a":0,"k":100}},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]},{"ty":"gr","nm":"mid","it":[{"ty":"rc","p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[38,366]},"r":{"a":0,"k":12}},{"ty":"fl","c":{"a":0,"k":[0,0.898,1,1]},"o":{"a":0,"k":20}},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]},{"ty":"gr","nm":"out","it":[{"ty":"rc","p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[78,366]},"r":{"a":0,"k":18}},{"ty":"fl","c":{"a":0,"k":[0,0.898,1,1]},"o":{"a":0,"k":10}},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]},{"ty":"gr","nm":"halo","it":[{"ty":"el","p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[130,420]}},{"ty":"fl","c":{"a":0,"k":[0,0.898,1,1]},"o":{"a":0,"k":8}},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]}]},{"ty":4,"nm":"lit0","ip":0,"op":1170,"st":0,"ao":0,"ks":{"o":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":7,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":65,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":71,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":80,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":89,"s":[0]},{"t":90,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":97,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":155,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":161,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":170,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":179,"s":[0]},{"t":180,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":187,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":245,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":251,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":260,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":269,"s":[0]},{"t":270,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":277,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":335,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":341,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":350,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":359,"s":[0]},{"t":360,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":367,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":425,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":431,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":440,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":449,"s":[0]},{"t":450,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":457,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":515,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":521,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":530,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":539,"s":[0]},{"t":540,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":547,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":605,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":611,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":620,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":629,"s":[0]},{"t":630,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":637,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":695,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":701,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":710,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":719,"s":[0]},{"t":720,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":727,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":785,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":791,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":800,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":809,"s":[0]},{"t":810,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":817,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":875,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":881,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":890,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":899,"s":[0]},{"t":900,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":907,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":965,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":971,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":980,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":989,"s":[0]},{"t":990,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":997,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1055,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1061,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1070,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1079,"s":[0]},{"t":1080,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1087,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1145,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1151,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1160,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1169,"s":[0]},{"t":1170,"s":[0]}]},"r":{"a":0,"k":0},"p":{"a":0,"k":[280.0,150,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[100,100,100]}},"shapes":[{"ty":"gr","nm":"lit","it":[{"ty":"rc","p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[280,18]},"r":{"a":0,"k":9}},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100}},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]}]},{"ty":4,"nm":"lit1","ip":0,"op":1170,"st":0,"ao":0,"ks":{"o":{"a":1,"k":[{"t":0,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":8,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":13,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":18,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":76,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":89,"s":[100]},{"t":90,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":98,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":103,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":108,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":166,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":179,"s":[100]},{"t":180,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":188,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":193,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":198,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":256,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":269,"s":[100]},{"t":270,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":278,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":283,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":288,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":346,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":359,"s":[100]},{"t":360,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":368,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":373,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":378,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":436,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":449,"s":[100]},{"t":450,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":458,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":463,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":468,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":526,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":539,"s":[100]},{"t":540,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":548,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":553,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":558,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":616,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":629,"s":[100]},{"t":630,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":638,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":643,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":648,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":706,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":719,"s":[100]},{"t":720,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":728,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":733,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":738,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":796,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":809,"s":[100]},{"t":810,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":818,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":823,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":828,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":886,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":899,"s":[100]},{"t":900,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":908,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":913,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":918,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":976,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":989,"s":[100]},{"t":990,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":998,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1003,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1008,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1066,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1079,"s":[100]},{"t":1080,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1088,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1093,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1098,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1156,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1169,"s":[100]},{"t":1170,"s":[100]}]},"r":{"a":0,"k":0},"p":{"a":0,"k":[255.0,215,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[100,100,100]}},"shapes":[{"ty":"gr","nm":"pglo","it":[{"ty":"rc","p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[348,32]},"r":{"a":0,"k":16}},{"ty":"fl","c":{"a":0,"k":[1,0.078,0.392,1]},"o":{"a":0,"k":20}},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]},{"ty":"gr","nm":"lit","it":[{"ty":"rc","p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[330,18]},"r":{"a":0,"k":9}},{"ty":"fl","c":{"a":0,"k":[1,0.078,0.392,1]},"o":{"a":0,"k":100}},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]}]},{"ty":4,"nm":"lit2","ip":0,"op":1170,"st":0,"ao":0,"ks":{"o":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":7,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":57,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":63,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":73,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":89,"s":[0]},{"t":90,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":97,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":147,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":153,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":163,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":179,"s":[0]},{"t":180,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":187,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":237,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":243,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":253,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":269,"s":[0]},{"t":270,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":277,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":327,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":333,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":343,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":359,"s":[0]},{"t":360,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":367,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":417,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":423,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":433,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":449,"s":[0]},{"t":450,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":457,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":507,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":513,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":523,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":539,"s":[0]},{"t":540,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":547,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":597,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":603,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":613,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":629,"s":[0]},{"t":630,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":637,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":687,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":693,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":703,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":719,"s":[0]},{"t":720,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":727,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":777,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":783,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":793,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":809,"s":[0]},{"t":810,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":817,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":867,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":873,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":883,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":899,"s":[0]},{"t":900,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":907,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":957,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":963,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":973,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":989,"s":[0]},{"t":990,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":997,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1047,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1053,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1063,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1079,"s":[0]},{"t":1080,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1087,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1137,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1143,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1153,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1169,"s":[0]},{"t":1170,"s":[0]}]},"r":{"a":0,"k":0},"p":{"a":0,"k":[300.0,280,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[100,100,100]}},"shapes":[{"ty":"gr","nm":"lit","it":[{"ty":"rc","p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[240,18]},"r":{"a":0,"k":9}},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100}},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]}]},{"ty":4,"nm":"lit3","ip":0,"op":1170,"st":0,"ao":0,"ks":{"o":{"a":1,"k":[{"t":0,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":7,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":70,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":75,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":84,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":89,"s":[0]},{"t":90,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":97,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":160,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":165,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":174,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":179,"s":[0]},{"t":180,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":187,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":250,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":255,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":264,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":269,"s":[0]},{"t":270,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":277,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":340,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":345,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":354,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":359,"s":[0]},{"t":360,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":367,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":430,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":435,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":444,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":449,"s":[0]},{"t":450,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":457,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":520,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":525,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":534,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":539,"s":[0]},{"t":540,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":547,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":610,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":615,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":624,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":629,"s":[0]},{"t":630,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":637,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":700,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":705,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":714,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":719,"s":[0]},{"t":720,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":727,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":790,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":795,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":804,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":809,"s":[0]},{"t":810,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":817,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":880,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":885,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":894,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":899,"s":[0]},{"t":900,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":907,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":970,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":975,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":984,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":989,"s":[0]},{"t":990,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":997,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1060,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1065,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1074,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1079,"s":[0]},{"t":1080,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1087,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1150,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1155,"s":[100],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1164,"s":[0],"i":{"x":[0.6],"y":[1]},"o":{"x":[0.4],"y":[0]}},{"t":1169,"s":[0]},{"t":1170,"s":[0]}]},"r":{"a":0,"k":0},"p":{"a":0,"k":[270.0,345,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[100,100,100]}},"shapes":[{"ty":"gr","nm":"lit","it":[{"ty":"rc","p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[300,18]},"r":{"a":0,"k":9}},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100}},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]}]},{"ty":4,"nm":"dim","ip":0,"op":1170,"st":0,"ao":0,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[280.0,150,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[100,100,100]}},"shapes":[{"ty":"gr","nm":"d","it":[{"ty":"rc","p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[280,18]},"r":{"a":0,"k":9}},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":35}},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]}]},{"ty":4,"nm":"dim","ip":0,"op":1170,"st":0,"ao":0,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[255.0,215,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[100,100,100]}},"shapes":[{"ty":"gr","nm":"d","it":[{"ty":"rc","p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[330,18]},"r":{"a":0,"k":9}},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":35}},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]}]},{"ty":4,"nm":"dim","ip":0,"op":1170,"st":0,"ao":0,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[300.0,280,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[100,100,100]}},"shapes":[{"ty":"gr","nm":"d","it":[{"ty":"rc","p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[240,18]},"r":{"a":0,"k":9}},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":35}},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]}]},{"ty":4,"nm":"dim","ip":0,"op":1170,"st":0,"ao":0,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[270.0,345,0]},"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[100,100,100]}},"shapes":[{"ty":"gr","nm":"d","it":[{"ty":"rc","p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[300,18]},"r":{"a":0,"k":9}},{"ty":"fl","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":35}},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}]}]}]}YUV.AI Neon Phoenix — Frame (video / frame layer)
Overview
YUV.AI at frame scale is a neon command deck: a rich-black ground alive with the neural-net phoenix — glowing graph nodes joined by faint edges, seeded along a phoenix silhouette, graded amber → pink → violet → cyan. Over that environment, composition is built from hard region splits (ink ↔ white ↔ charcoal) and Anton uppercase headlines, with hot pink and electric cyan in a strict lead/counter relationship — one leads each frame, the other accents. Glow is the atmosphere; it fires on the hero and the primary CTA, not on everything.
The voice: Anton — tall condensed caps, uppercase, letter-spacing: 0 (Anton is already condensed; never negative except a hair at jumbo) — carries every headline, stat, and title; Inter carries body and labels; JetBrains Mono carries instrument readouts. Anton declares; Inter explains; Mono measures.
Key characteristics at frame scale:
- Neon two-canvas —
{colors.ink}OR{colors.white}, never grey. Pick one per frame. - Neural-net phoenix as the living environment + the brand mark (the rainbow lives here).
- Lead / counter — pink leads OR cyan leads; never both at full strength on one frame.
- Anton uppercase + Inter + Mono. Headlines ink-on-white / white-on-ink / pink-with-glow.
- Glow in moderation — hero + primary CTA + 1–2 accents. Strip-mall neon is failure.
- Flat — zero shadow, radius only on circles (nodes, nav) and pills (CTAs).
- Fly High throughline — flight metaphors, HUD strips, phoenix mark, "LET'S FLY HIGH" watermark.
Frame Craft Bar
Three eyeball tests gate every frame:
- Squint — one element dominates at 3–6× its neighbor: the
hero-title/jumbo-feature, astat-numeral, or the phoenix mark. Never two rival headlines. - Silence — frames read 40–55% empty (the neural-net field fills negative space, not more text); the catalog is the one dense exception.
- Restraint — pink or cyan leads; rainbow ONLY in the phoenix/neural-net field; glow on hero + CTA only.
- Reference — aim at a neon mission-control HUD / Tron title card (glowing graph on black, condensed caps as architecture); failure looks like a soft drop-shadowed SaaS card deck.
The Frame
- Primary: 1920×1080 (16:9). Display sizes authored in `cqw` (
px ÷ 1920 × 100 = cqw). - Vertical: 1080×1920 (9:16). Square: 1080×1080 (1:1).
- Safe area:
5cqw(pad-x). The neural-net field bleeds full-frame behind everything.
The container law. Every frame ground sets container-type: size; frame-relative units are cqw/cqh against it — never `vw`. In a fixed-1920 HyperFrames composition you may author in px directly (cqw × 19.2 = px); keep the ratios.
Colors
Two canvases: rich-black {colors.ink} (default — the neon ground) or {colors.white} (light marketing / about). Never #F1F2F2 grey (that's Decks mode), never #FAFAF7 (Warm Editorial). Pink and cyan in lead/counter: if pink leads a frame, cyan appears only on small high- attention marks (a focus ring, one data point), and vice-versa. The only UI gradient is pink → cyan (progress bars, underlines, small surfaces). Rainbow (amber→pink→violet→cyan) is reserved for the phoenix mark and the neural-net field — never a UI wash. Headlines: white on ink, ink on white, or pink-with-glow. Never grey headlines (grey is body/meta).
Typography
Two ramps. The reading ramp (Inter body 1.05cqw, body-light 1.5cqw, labels/Mono in px) carries copy, eyebrows, and readouts; the display ramp (Anton, card-title 1.9cqw → jumbo-feature 10cqw) carries every headline and stat.
- Legibility floor: any load-bearing line ≥ 1.4cqw (~27px); px labels are chrome only.
- Fit-to-measure: ≤3 words →
hero-title/jumbo-feature; 4–6 →section-headline; 7+ →column-title. Cap the block ≤ 78cqw. - Anton is uppercase, `letter-spacing: 0` (never negative; a hair
-0.01emonly at jumbo ≥180px-equiv). Inter labels uppercase, 3–4px tracked. Mono readouts 2px tracked. No italic, no sentence-case Anton.
Depth & Surface
Flat, with hard edges and neon glow as the only "depth":
- Hard region boundaries — primary structural device.
- Accent borders — 4px pink/cyan left (lead cards), 4px top (catalog cards).
- Glow — moderated bloom on hero text, primary CTA, phoenix mark.
- Neural-net field — the living texture behind content (never a literal depth/shadow).
Ceiling: no box-shadow as elevation, no rounded rectangle, no rainbow UI wash, no grey canvas.
Shapes
- 0 radius on every rectangle — regions, cards, panels, accent lines, HUD.
- 999px on pills (CTAs) only. 50% on circles — neural-net nodes, nav dots.
Components
- neural-net-field — the signature environment + brand mark (rainbow lives here).
- region-split — the layout device; ink ↔ white ↔ charcoal at a hard edge.
- card (4px pink/cyan stripe, flat) / cta (pill) / accent-line (pink, or pink→cyan progress).
- glow — moderated bloom. hud-strip — the Fly High instrument throughline. phoenix-mark — watermark or hero.
Frame Treatments
Recipe per plate: ground · composes · focal · chrome · accent · silence · density.
Lean centered where the move allows; vary anchor; one idea per frame.
1 · Neural-Net Phoenix Cover (identity · move: living field · centered)
Ground full {colors.ink} with the neural-net-field alive behind. Composes neural-net-field, hero-title, section-label, hud-strip, phoenix-mark. Focal the hero-title (2 lines) centered, line two in {colors.pink} with glow; the phoenix mark forms / hovers behind. Chrome a cyan section-label eyebrow above; a HUD strip along the bottom. Accent pink leads, cyan eyebrow counters. Silence the field fills the negative space; ~50% type-empty. Density sparse.
2 · Feature Stat (anchor · move: scale + glow · left)
Ground {colors.ink}, field dimmed. Composes stat-numeral/jumbo-feature, section-label, body-light. Focal a stat-numeral or 2-line headline, pink-with-glow OR white, left-anchored. Chrome an Inter section-label eyebrow; an optional Inter-300 support line ≤44cqw. Accent pink lead, one cyan mark. Silence ~45% empty. Density sparse.
3 · Statement (voice · move: panel split · giant type)
Ground 40/60 split — {colors.charcoal} panel + {colors.ink} field. Composes region-split, section-headline, accent-line. Focal a 2–3 line statement in white, one key word pink-with-glow. Chrome a pink accent-line above; small Mono attribution. Accent pink line + pink word. Density sparse.
4 · Three-Column Catalog (the pieces · move: density — the dense frame · centered head)
Ground {colors.ink}, pad-x. Composes section-headline, 3–4× card. Focal a centered section-headline over cards (4px pink/cyan top stripe, Anton title, Inter body, one Mono tag). Accent alternating pink/cyan stripes; glow off (cards are calm). Silence tight — the density exception. Density dense-exception.
5 · Pipeline Timeline (process · move: horizontal rail · left→right)
Ground {colors.ink}, pad-x. Composes section-headline, a pink→cyan rail with cyan nodes (ink halos) + Anton stage labels. Focal the rail with 4–5 stages. Accent the pink→cyan gradient rail (the sanctioned UI gradient). Density standard.
6 · Closing Plate (closer · move: phoenix + sign-off · centered)
Ground {colors.ink}, neural-net-field re-igniting. Composes phoenix-mark, hero-title, accent-line, section-label, hud-strip. Focal the phoenix mark + "LET'S FLY HIGH" sign-off, centered, pink-with-glow. Chrome website + socials in Mono; HUD reads LANDED. Accent pink lead. Silence ~55% empty; field carries it. Density sparse. (Only the final frame may fade out.)
Composition Rules
Do
- Keep the canvas ink OR white, never grey; let the neural-net field fill negative space.
- Pick one lead (pink or cyan) per frame; the other only accents.
- Set every Anton element uppercase, `letter-spacing: 0`; Inter labels uppercase 3–4px; Mono 2px.
- Reserve rainbow for the phoenix mark + neural-net field; keep UI gradients pink→cyan.
- Fire glow on the hero + primary CTA + 1–2 accents only.
- Carry one Fly High throughline per video — HUD strip, phoenix mark, "let's fly high", flight copy.
Don't
- Don't use a grey canvas, a fourth surface, a drop-shadow elevation, or a rounded rectangle.
- Don't run pink AND cyan both at full strength on one frame.
- Don't spill rainbow into UI fills/washes (phoenix + field only).
- Don't glow every element (strip-mall neon). Don't set Anton sentence-case or negative-tracked.
- Don't drop a load-bearing line below 1.4cqw.
Aspect-Ratio Behavior
| Treatment | 16:9 | 9:16 | 1:1 |
|---|---|---|---|
| Phoenix Cover | hero centered, field full | hero lower, phoenix top | centered |
| Feature Stat | figure left, support right | figure top, support below | centered |
| Statement | 40/60 panel+field | stacked panel over field | stacked |
| Catalog | head over 3–4-up | head top, cards stacked | head top, 2×2 |
| Pipeline | horizontal rail | vertical rail | compact rail |
| Closing | phoenix centered, HUD base | phoenix top, sign-off below | centered |
Hold 5cqw on the short edge; re-step display per ratio so no line drops below 1.4cqw.
Numerals & Claims (hard rule)
Never invent figures, stats, dates, or counts. Render slots as — figure —, {metric}, N×. Real numerals appear only when the script supplies them. Node-graph counts are decorative.
Pre-Render Self-Audit
- Canvas — ink OR white, never grey; neural-net field present where the ground is ink.
- Squint — one focal per frame dominates 3–6×; never two rival headlines.
- Lead — pink or cyan leads; the other only accents; rainbow only in phoenix/field.
- Type — Anton uppercase
ls:0, fit-to-measure, ≥1.4cqw floor; Inter/Mono labels tracked. - Glow — hero + CTA + 1–2 accents only; never every element; never text-shadow AND box-shadow on one element.
- Depth — 0 elevation shadow, 0 rounded rectangle; pills + circles only.
- Throughline — one Fly High motif present (HUD / phoenix / flight copy / "let's fly high").
- Fabrication — every numeral traces to the script, else placeholder.
Known Gaps
- Motion is composition-adjacent here — this frame spec defines look + layout; HyperFrames GSAP
timelines carry timing/transitions. The neural-net field MUST be seekable (clock-driven), never wall-clock.
- Anton + Inter + JetBrains Mono via Google Fonts (HyperFrames embeds them). Hebrew swaps Anton→Rubik, Inter→Assistant.
- 9:16 / 1:1 are guidance, not pixel-locked; verify the 1.4cqw legibility floor per ratio.
- The neural-net field, glow, and pink→cyan gradients are CSS/canvas-only; the phoenix mark art is the one external asset.
"""Generate a looping 'phoenix-burst' Bodymovin Lottie (radiating rainbow rays + rings).
Loops every CYCLE frames across OP frames so HyperFrames' goToAndStop(t*1000) shows a live
burst at any composition time. Renders in lottie-web (verified). Full phoenix palette."""
import json, math
W = H = 400
CX = CY = 200
FR = 30
CYCLE = 60 # 2s per burst
CYCLES = 22
OP = CYCLE * CYCLES # 1320 frames ≈ 44s, covers any comp time
# phoenix palette stops as normalized RGBA
PHX = [
(0xF9,0xAD,0x45),(0xF7,0x88,0x44),(0xF0,0x66,0x4E),(0xDE,0x60,0x92),
(0xFF,0x14,0x64),(0x8B,0x45,0x9A),(0x7C,0x3A,0xED),(0x4E,0x7D,0xB7),(0x00,0xE5,0xFF),
]
def rgba(c): return [round(c[0]/255,4), round(c[1]/255,4), round(c[2]/255,4), 1]
EO = {"x":[0.33],"y":[0]}; EI = {"x":[0.5],"y":[1]} # 1-dim ease
EO2 = {"x":[0.33,0.33],"y":[0,0]}; EI2 = {"x":[0.5,0.5],"y":[1,1]} # 2-dim
def kf_scale_y(start_peak):
"""scaleY pulses 6 -> 100 each cycle, X constant 100."""
k = []
for c in range(CYCLES):
b = c*CYCLE
k.append({"t":b, "s":[100,6], "i":EI2,"o":EO2})
k.append({"t":b+34, "s":[100,100], "i":EI2,"o":EO2})
k.append({"t":b+CYCLE-1,"s":[100,100],"i":EI2,"o":EO2})
k.append({"t":OP,"s":[100,6]})
return {"a":1,"k":k}
def kf_opacity():
k = []
for c in range(CYCLES):
b = c*CYCLE
k.append({"t":b, "s":[0], "i":EI,"o":EO})
k.append({"t":b+6, "s":[100], "i":EI,"o":EO})
k.append({"t":b+48, "s":[0], "i":EI,"o":EO})
k.append({"t":OP,"s":[0]})
return {"a":1,"k":k}
def kf_ring_scale():
k = []
for c in range(CYCLES):
b = c*CYCLE
k.append({"t":b, "s":[12,12], "i":EI2,"o":EO2})
k.append({"t":b+52, "s":[260,260],"i":EI2,"o":EO2})
k.append({"t":b+CYCLE-1,"s":[260,260],"i":EI2,"o":EO2})
k.append({"t":OP,"s":[12,12]})
return {"a":1,"k":k}
def kf_ring_opacity():
k = []
for c in range(CYCLES):
b = c*CYCLE
k.append({"t":b, "s":[0], "i":EI,"o":EO})
k.append({"t":b+8, "s":[85], "i":EI,"o":EO})
k.append({"t":b+52, "s":[0], "i":EI,"o":EO})
k.append({"t":OP,"s":[0]})
return {"a":1,"k":k}
layers = []
ind = 1
RAYS = 18
for i in range(RAYS):
ang = i * (360.0/RAYS)
c = PHX[i % len(PHX)]
layers.append({
"ddd":0,"ind":ind,"ty":4,"nm":f"ray{i}","sr":1,
"ks":{"o":kf_opacity(),"r":{"a":0,"k":ang},"p":{"a":0,"k":[CX,CY,0]},
"a":{"a":0,"k":[0,0,0]},"s":kf_scale_y(34)},
"ao":0,
"shapes":[{"ty":"gr","nm":"g","it":[
{"ty":"rc","nm":"r","d":1,"p":{"a":0,"k":[0,-78]},"s":{"a":0,"k":[7,150]},"r":{"a":0,"k":0}},
{"ty":"fl","nm":"f","c":{"a":0,"k":rgba(c)},"o":{"a":0,"k":100}},
{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}
]}],
"ip":0,"op":OP,"st":0,"bm":0
})
ind += 1
# 3 expanding rings, staggered, alternating pink/cyan/amber
ring_cols = [(0xFF,0x14,0x64),(0x00,0xE5,0xFF),(0xF9,0xAD,0x45)]
for r in range(3):
c = ring_cols[r]
op_kf = kf_ring_opacity()
sc_kf = kf_ring_scale()
# stagger by shifting times
shift = r*14
for kf in op_kf["k"]: kf["t"] = min(OP, kf["t"]+shift)
for kf in sc_kf["k"]: kf["t"] = min(OP, kf["t"]+shift)
layers.append({
"ddd":0,"ind":ind,"ty":4,"nm":f"ring{r}","sr":1,
"ks":{"o":op_kf,"r":{"a":0,"k":0},"p":{"a":0,"k":[CX,CY,0]},
"a":{"a":0,"k":[0,0,0]},"s":sc_kf},
"ao":0,
"shapes":[{"ty":"gr","nm":"g","it":[
{"ty":"el","nm":"e","p":{"a":0,"k":[0,0]},"s":{"a":0,"k":[60,60]}},
{"ty":"st","nm":"s","c":{"a":0,"k":rgba(c)},"o":{"a":0,"k":100},"w":{"a":0,"k":5},"lc":2,"lj":1},
{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100}}
]}],
"ip":0,"op":OP,"st":0,"bm":0
})
ind += 1
doc = {"v":"5.7.4","fr":FR,"ip":0,"op":OP,"w":W,"h":H,"nm":"phoenix-burst","ddd":0,"assets":[],"layers":layers}
with open(r"assets\phoenix-burst.json","w") as f:
json.dump(doc, f, separators=(",",":"))
print("wrote assets/phoenix-burst.json :", len(layers), "layers, op", OP)
/*
* YUV.AI neural-net phoenix field — deterministic, SEEKABLE canvas background.
* Drive it from a GSAP proxy so HyperFrames renders it frame-accurately:
*
* const proxy = { t: 0 };
* tl.to(proxy, { t: DURATION, ease: "none", onUpdate: () => drawNet(proxy.t) }, 0);
* drawNet(0); // initial frame
*
* Warm-left / cool-right gradient = the phoenix (amber wing -> pink/violet body -> cyan wing).
* No Date.now()/Math.random() — seeded mulberry32 — so the same t always yields the same frame.
* Requires a <canvas id="net" width="1920" height="1080"> on the page.
*/
const cv = document.getElementById("net"), ctx = cv.getContext("2d");
function mulberry32(a) {
return function () {
a |= 0; a = (a + 0x6d2b79f5) | 0;
let t = Math.imul(a ^ (a >>> 15), 1 | a);
t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t;
return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
};
}
const rnd = mulberry32(20260609);
const STOPS = [[249,173,69],[240,102,78],[222,96,146],[124,58,237],[78,125,183],[0,229,255]];
function col(u) {
u = Math.max(0, Math.min(0.999, u));
const s = u * (STOPS.length - 1), i = Math.floor(s), f = s - i, a = STOPS[i], b = STOPS[i + 1];
return [(a[0]+(b[0]-a[0])*f)|0, (a[1]+(b[1]-a[1])*f)|0, (a[2]+(b[2]-a[2])*f)|0];
}
const N = 74, nodes = [];
for (let i = 0; i < N; i++) {
let x, y, u;
if (i < 25) { const a = rnd(); x = 840 - a*640 + (rnd()-0.5)*70; y = 470 - a*300 + (rnd()-0.5)*130; u = a*0.26; } // warm left wing
else if (i < 50) { const a = rnd(); x = 1080 + a*640 + (rnd()-0.5)*70; y = 470 - a*300 + (rnd()-0.5)*130; u = 0.74 + a*0.26; } // cool right wing
else { const a = rnd(); x = 960 + (rnd()-0.5)*200; y = 360 + a*440 + (rnd()-0.5)*70; u = 0.30 + a*0.42; } // body + tail
nodes.push({ x, y, seed: rnd()*6.2832, u });
}
function drawNet(t) {
ctx.clearRect(0, 0, 1920, 1080);
for (const n of nodes) { n.px = n.x + Math.sin(t*0.5 + n.seed)*16; n.py = n.y + Math.cos(t*0.4 + n.seed)*16; }
ctx.lineWidth = 1;
for (let i = 0; i < N; i++) for (let j = i + 1; j < N; j++) {
const a = nodes[i], b = nodes[j], d = Math.hypot(a.px-b.px, a.py-b.py);
if (d > 158) continue;
ctx.strokeStyle = "rgba(170,195,255," + (0.20*(1 - d/158)).toFixed(3) + ")";
ctx.beginPath(); ctx.moveTo(a.px, a.py); ctx.lineTo(b.px, b.py); ctx.stroke();
}
for (const n of nodes) {
const c = col(n.u);
ctx.fillStyle = "rgb(" + c[0] + "," + c[1] + "," + c[2] + ")";
ctx.shadowColor = ctx.fillStyle; ctx.shadowBlur = 12;
ctx.beginPath(); ctx.arc(n.px, n.py, 3, 0, 6.2832); ctx.fill();
}
ctx.shadowBlur = 0;
}
Brand kit — logo + links (always include)
Source of truth: the `yuv-design-system` skill (§3 assets, §4 canonical links). This file mirrors what every YUV.AI video must carry so the director never ships a video without the brand mark + links.
Logo
- Bundled: ../assets/logo-phoenix.png — the phoenix mark, transparent,
sits on rich-black. Use it at the reveal (large, with a pink/cyan drop-shadow glow) and the end card (smaller). The full design-system set (square-color, wordmark, profile) lives in the yuv-design-system skill's assets/.
- The signature motif is the neural-net phoenix — the seekable field
(../assets/neural-net-field.js) converging toward / behind the mark.
Canonical link set (end card + any footer)
website yuv.ai
linktree linktr.ee/yuvai
X @yuvalav
Instagram @yuval_770
TikTok @yuval.ai
YouTube @yuv-ai
GitHub @hoodini
Facebook yuval.avidani
LinkedIn in/yuval-avidani-87081474End-card layout that ships well: logo → "LET'S FLY HIGH" (rainbow) → `yuv.ai · linktr.ee/yuvai` (prominent, mono) → handles row (mono, dimmer) → a gradient CTA pill ("BUILD YOURS → YUV.AI"). For a short cut, collapse to website + linktree + one signature social; for a full end card, list all.
Credentials (for longer pieces / bios)
2× GitHub Star · AWS Gen AI Superstar · AI commentator on Channel 12 News (Israel) · Founder of YUV.AI.
Rule
Every shareable YUV.AI video ends on the logo + links. No exceptions — the end card is the CTA.