static constexpr char SKSL_MINIFIED_sksl_graphite_frag[] =
"$pure half4 sk_error(){return half4(1.,0.,0.,1.);}$pure half4 sk_passthrough"
"(half4 a){return a;}$pure half4 sk_solid_shader(float4 a){return half4(a);}"
"$pure half4 sk_rgb_opaque(float4 a){return half4(half3(a.xyz),1.);}$pure half4"
" sk_alpha_only(float4 a){return half4(0.,0.,0.,half(a.w));}$pure float $k(int"
" a,float b,half4[2]c){float d=float(c[0].x);float e=float(c[0].y);float f=float"
"(c[0].z);float g=float(c[0].w);float h=float(c[1].x);float i=float(c[1].y);"
"float j=float(c[1].z);float k=sign(b);b=abs(b);{float l;switch(a){case 1:b="
"b<h?g*b+j:pow(e*b+f,d)+i;break;case 2:l=pow(b,g);b=pow(max(e+f*l,0.)/(h+i*l"
"),j);break;case 3:b=b*e<=1.?pow(b*e,f):exp((b-i)*g)+h;b*=j+1.;break;case 4:"
"b/=j+1.;b=b<=1.?e*pow(b,f):g*log(b-h)+i;break;}}return k*b;}$pure half4 sk_color_space_transform"
"(half4 a,int b,int c,half3x3 d,int e,half4x4 f){float4 g=float4(a);if(bool("
"b&1))g=unpremul(g);if(bool(b&2)){half4 h[2];h[0]=f[0];h[1]=f[1];g.x=$k(c,g."
"x,h);g.y=$k(c,g.y,h);g.z=$k(c,g.z,h);}if(bool(b&4))g.xyz=float3x3(d)*g.xyz;"
"if(bool(b&8)){half4 h[2];h[0]=f[2];h[1]=f[3];g.x=$k(e,g.x,h);g.y=$k(e,g.y,h"
");g.z=$k(e,g.z,h);}if(bool(b&16))g.xyz*=g.w;return half4(g);}$pure half4 $l"
"(half4 a,int b,int c,half3x3 d,int e,half4x4 f){if(b==0)return a;else{if(bool"
"(b&32))a.w=dot(half2(a.x,1.),half2(f[1].w,f[3].w));return sk_color_space_transform"
"(a,b,c,d,e,f);}}$pure float $m(int a,float b,float c,float d){switch(a){case"
" 0:return clamp(b,c,d);case 1:{float e=d-c;return mod(b-c,e)+c;}case 2:{float"
" e=d-c;float g=2.*e;float h=mod(b-c,g);return mix(h,g-h,step(e,h))+c;}default"
":return b;}}$pure half4 $n(float2 a,float2 b,sampler2D c){return sample(c,a"
"*b);}$pure half4 $o(float2 a,float2 b,float4 c,int d,int e,int f,float2 g,sampler2D"
" h){if(d==3&&f==0){float i=floor(a.x)+.5;if(i<c.x||i>c.z)return half4(0.);}"
"if(e==3&&f==0){float i=floor(a.y)+.5;if(i<c.y||i>c.w)return half4(0.);}a.x="
"$m(d,a.x,c.x,c.z);a.y=$m(e,a.y,c.y,c.w);float4 i;if(f==0)i=float4(floor(c.xy"
")+.50001,ceil(c.zw)-.50001);else i=float4(c.xy+g.x,c.zw-g.y);float2 j=clamp"
"(a,i.xy,i.zw);half4 k=$n(j,b,h);if(f==1){half2 l=half2(a-j);half2 m=abs(l);"
"bool n=d==1;bool o=e==1;if(n||o){float p;float q;half4 r;half4 t;if(n){p=l."
"x>0.?i.x:i.z;r=$n(float2(p,j.y),b,h);}if(o){q=l.y>0.?i.y:i.w;t=$n(float2(j."
"x,q),b,h);}if(n&&o){half4 u=$n(float2(p,q),b,h);k=mix(mix(k,r,m.x),mix(t,u,"
"m.x),m.y);}else if(n)k=mix(k,r,m.x);else if(o)k=mix(k,t,m.y);}if(d==3)k*=max"
"(1.-m.x,0.);if(e==3)k*=max(1.-m.y,0.);}return k;}$pure half4 $p(float2 a,float2"
" b,float4 c,int d,int e,half4x4 g,sampler2D h){float2 i=fract(a-.5);a-=1.5;"
"a=floor(a)+.5;half4 j=g*half4(1.,half(i.x),half(i.x*i.x),half((i.x*i.x)*i.x"
"));half4 k=g*half4(1.,half(i.y),half(i.y*i.y),half((i.y*i.y)*i.y));half4 l="
"half4(0.);for(int m=0;m<4;++m){half4 n=half4(0.);for(int o=0;o<4;++o)n+=j[o"
"]*$o(a+float2(float(o),float(m)),b,c,d,e,0,float2(.50001),h);l+=k[m]*n;}l.w"
"=saturate(l.w);l.xyz=clamp(l.xyz,half3(0.),l.www);return l;}$pure half4 sk_image_shader"
"(float2 a,float2 b,float4 c,int d,int e,int f,int g,int h,half3x3 i,int j,half4x4"
" k,sampler2D l){half4 m=$o(a,b,c,d,e,f,float2(.50001),l);return $l(m,g,h,i,"
"j,k);}$pure half4 sk_cubic_image_shader(float2 a,float2 b,float4 c,int d,int"
" e,half4x4 f,int g,int h,half3x3 i,int j,half4x4 k,sampler2D l){half4 m=$p("
"a,b,c,d,e,f,l);return $l(m,g,h,i,j,k);}$pure half4 sk_hw_image_shader(float2"
" a,float2 b,int c,int d,half3x3 e,int f,half4x4 g,sampler2D h){half4 i=$n(a"
",b,h);return $l(i,c,d,e,f,g);}$pure half4 $q(half4 a,half4 b,half4 c,half4 d"
",half4 e,half4 f,half4 g,half4 h,half3x3 i,float3 j){float k=float(dot(e,a)"
");float l=float(dot(f,b));float m=float(dot(g,c));half3 n=half3(half(k),half"
"(l),half(m));half4 o;o.xyz=saturate(i*n+half3(j));o.w=dot(h,d);o.xyz*=o.w;return"
" o;}$pure half4 sk_yuv_image_shader(float2 a,float2 b,float2 c,float4 d,float2"
" e,int f,int g,int h,int i,half4 j,half4 k,half4 l,half4 m,half3x3 n,float3"
" o,sampler2D p,sampler2D q,sampler2D r,sampler2D s){if(h!=i)a=floor(a)+.5;half4"
" t;half4 u;half4 v;half4 w;t=$o(a,b,d,f,g,h,float2(.50001),p);u=$o(a,c,d,f,"
"g,i,e,q);v=$o(a,c,d,f,g,i,e,r);if(m==half4(1.))w=half4(0.,0.,0.,1.);else w="
"$o(a,b,d,f,g,h,float2(.50001),s);return $q(t,u,v,w,j,k,l,m,n,o);}$pure half4"
" sk_cubic_yuv_image_shader(float2 a,float2 b,float2 c,float4 d,int e,int f,"
"half4x4 g,half4 h,half4 i,half4 j,half4 k,half3x3 l,float3 m,sampler2D n,sampler2D"
" o,sampler2D p,sampler2D q){half4 r;half4 s;half4 t;half4 u;r=$p(a,b,d,e,f,"
"g,n);s=$p(a,c,d,e,f,g,o);t=$p(a,c,d,e,f,g,p);if(k==half4(1.))u=half4(0.,0.,"
"0.,1.);else u=$p(a,b,d,e,f,g,q);return $q(r,s,t,u,h,i,j,k,l,m);}$pure half4"
" sk_dither_shader(half4 a,float2 b,half c,sampler2D d){half f=sample(d,b*.125"
").x-.5;return half4(clamp(a.xyz+f*c,0.,a.w),a.w);}$pure float2 $r(int a,float2"
" b){switch(a){case 0:b.x=saturate(b.x);break;case 1:b.x=fract(b.x);break;case"
" 2:{float c=b.x-1.;b.x=(c-2.*floor(c*.5))-1.;if(sk_Caps.mustDoOpBetweenFloorAndAbs"
")b.x=clamp(b.x,-1.,1.);b.x=abs(b.x);break;}case 3:if(b.x<0.||b.x>1.)return float2"
"(0.,-1.);break;}return b;}$pure half4 $s(float4[4]a,float4 b,float2 c){if(c"
".y<0.)return half4(0.);else if(c.x<=b.x)return half4(a[0]);else if(c.x<b.y)"
"return half4(mix(a[0],a[1],(c.x-b.x)/(b.y-b.x)));else if(c.x<b.z)return half4"
"(mix(a[1],a[2],(c.x-b.y)/(b.z-b.y)));else if(c.x<b.w)return half4(mix(a[2],"
"a[3],(c.x-b.z)/(b.w-b.z)));else return half4(a[3]);}$pure half4 $t(float4[8"
"]a,float4[2]b,float2 c){if(c.y<0.)return half4(0.);else if(c.x<b[1].x)if(c."
"x<b[0].z)if(c.x<=b[0].x)return half4(a[0]);else if(c.x<b[0].y)return half4("
"mix(a[0],a[1],(c.x-b[0].x)/(b[0].y-b[0].x)));else return half4(mix(a[1],a[2"
"],(c.x-b[0].y)/(b[0].z-b[0].y)));else if(c.x<b[0].w)return half4(mix(a[2],a"
"[3],(c.x-b[0].z)/(b[0].w-b[0].z)));else return half4(mix(a[3],a[4],(c.x-b[0"
"].w)/(b[1].x-b[0].w)));else if(c.x<b[1].z)if(c.x<b[1].y)return half4(mix(a["
"4],a[5],(c.x-b[1].x)/(b[1].y-b[1].x)));else return half4(mix(a[5],a[6],(c.x"
"-b[1].y)/(b[1].z-b[1].y)));else if(c.x<b[1].w)return half4(mix(a[6],a[7],(c"
".x-b[1].z)/(b[1].w-b[1].z)));else return half4(a[7]);}half4 $u(sampler2D a,"
"int b,float2 c){if(c.y<0.)return half4(0.);else if(c.x==0.)return sampleLod"
"(a,float2(0.,.25),0.);else if(c.x==1.)return sampleLod(a,float2(1.,.25),0.)"
";else{float f=0.;float g=float(b);float h=1./g;for(int i=1;i<b;i+=i){float j"
"=floor((f+g)*.5);float k=(j+.5)*h;float2 l=float2(sampleLod(a,float2(k,.75)"
",0.).xy);float m=ldexp(l.x,int(l.y));if(c.x<m)g=j;else f=j;}g=(f+1.5)*h;f=("
"f+.5)*h;half4 i=sampleLod(a,float2(f,.25),0.);half4 j=sampleLod(a,float2(g,"
".25),0.);float2 k=float2(sampleLod(a,float2(f,.75),0.).xy);float l=ldexp(k."
"x,int(k.y));k=float2(sampleLod(a,float2(g,.75),0.).xy);float m=ldexp(k.x,int"
"(k.y));return half4(mix(float4(i),float4(j),(c.x-l)/(m-l)));}}$pure float2 $v"
"(float2 a,float2 b,float2 c){c-=a;float2 d=b-a;float e=dot(c,d)/dot(d,d);return"
" float2(e,1.);}$pure float2 $w(float2 a,float b,float2 c){float d=distance("
"c,a)/b;return float2(d,1.);}$pure float2 $x(float2 a,float b,float c,float2"
" d){d-=a;float e=sk_Caps.atan2ImplementedAsAtanYOverX?2.*atan(-d.y,length(d"
")-d.x):atan(-d.y,-d.x);float f=((e*.159154937+.5)+b)*c;return float2(f,1.);"
"}$pure float3x3 $y(float2 a,float2 b){return float3x3(0.,-1.,0.,1.,0.,0.,0."
",0.,1.)*inverse(float3x3(b.y-a.y,a.x-b.x,0.,b.x-a.x,b.y-a.y,0.,a.x,a.y,1.))"
";}$pure float2 $z(float2 a,float2 b,float c,float d,float2 e){const float f"
"=.000244140625;float g=distance(a,b);float h=d-c;bool i=g<f;bool j=abs(h)<f"
";if(i){if(j)return float2(0.,-1.);float k=1./h;float l=sign(h);float m=c/h;"
"float2 n=(e-a)*k;float o=length(n)*l-m;return float2(o,1.);}else if(j){float3x3"
" k=$y(a,b);float l=c/g;float m=l*l;float2 n=(k*float3(e,1.)).xy;float o=m-n"
".y*n.y;if(o<0.)return float2(0.,-1.);o=n.x+sqrt(o);return float2(o,1.);}else"
"{float k=c/(c-d);bool l=abs(k-1.)<f;if(l){float2 m=a;a=b;b=m;k=0.;}float2 m"
"=mix(a,b,k);float3x3 n=$y(m,b);float o=abs(1.-k);float p=o;float q=abs(d-c)"
"/g;bool r=abs(q-1.)<f;if(r){o*=.5;p*=.5;}else{o*=q/(q*q-1.);p/=sqrt(abs(q*q"
"-1.));}n=float3x3(o,0.,0.,0.,p,0.,0.,0.,1.)*n;float2 s=(n*float3(e,1.)).xy;"
"float u=1./q;float v=sign(1.-k);bool w=!r&&q>1.;float x=-1.;if(r)x=dot(s,s)"
"/s.x;else if(w)x=length(s)-s.x*u;else{float y=s.x*s.x-s.y*s.y;if(y>=0.)if(l"
"||v<0.)x=-sqrt(y)-s.x*u;else x=sqrt(y)-s.x*u;}if(!w&&x<0.)return float2(0.,"
"-1.);float y=k+v*x;if(l)y=1.-y;return float2(y,1.);}}$pure half4 sk_linear_grad_4_shader"
"(float2 a,float4[4]b,float4 c,float2 d,float2 e,int f,int g,int h){float2 i"
"=$v(d,e,a);i=$r(f,i);half4 j=$s(b,c,i);return $interpolated_to_rgb_unpremul"
"(j,g,h);}$pure half4 sk_linear_grad_8_shader(float2 a,float4[8]b,float4[2]c"
",float2 d,float2 e,int f,int g,int h){float2 i=$v(d,e,a);i=$r(f,i);half4 j="
"$t(b,c,i);return $interpolated_to_rgb_unpremul(j,g,h);}$pure half4 sk_linear_grad_tex_shader"
"(float2 a,float2 b,float2 c,int d,int e,int f,int g,sampler2D h){float2 i=$v"
"(b,c,a);i=$r(e,i);half4 j=$u(h,d,i);return $interpolated_to_rgb_unpremul(j,"
"f,g);}$pure half4 sk_radial_grad_4_shader(float2 a,float4[4]b,float4 c,float2"
" d,float e,int f,int g,int h){float2 i=$w(d,e,a);i=$r(f,i);half4 j=$s(b,c,i"
");return $interpolated_to_rgb_unpremul(j,g,h);}$pure half4 sk_radial_grad_8_shader"
"(float2 a,float4[8]b,float4[2]c,float2 d,float e,int f,int g,int h){float2 i"
"=$w(d,e,a);i=$r(f,i);half4 j=$t(b,c,i);return $interpolated_to_rgb_unpremul"
"(j,g,h);}$pure half4 sk_radial_grad_tex_shader(float2 a,float2 b,float c,int"
" d,int e,int f,int g,sampler2D h){float2 i=$w(b,c,a);i=$r(e,i);half4 j=$u(h"
",d,i);return $interpolated_to_rgb_unpremul(j,f,g);}$pure half4 sk_sweep_grad_4_shader"
"(float2 a,float4[4]b,float4 c,float2 d,float e,float f,int g,int h,int i){float2"
" j=$x(d,e,f,a);j=$r(g,j);half4 k=$s(b,c,j);return $interpolated_to_rgb_unpremul"
"(k,h,i);}$pure half4 sk_sweep_grad_8_shader(float2 a,float4[8]b,float4[2]c,"
"float2 d,float e,float f,int g,int h,int i){float2 j=$x(d,e,f,a);j=$r(g,j);"
"half4 k=$t(b,c,j);return $interpolated_to_rgb_unpremul(k,h,i);}$pure half4 sk_sweep_grad_tex_shader"
"(float2 a,float2 b,float c,float d,int e,int f,int g,int h,sampler2D i){float2"
" j=$x(b,c,d,a);j=$r(f,j);half4 k=$u(i,e,j);return $interpolated_to_rgb_unpremul"
"(k,g,h);}$pure half4 sk_conical_grad_4_shader(float2 a,float4[4]b,float4 c,"
"float2 d,float2 e,float f,float g,int h,int i,int j){float2 k=$z(d,e,f,g,a)"
";k=$r(h,k);half4 l=$s(b,c,k);return $interpolated_to_rgb_unpremul(l,i,j);}$pure"
" half4 sk_conical_grad_8_shader(float2 a,float4[8]b,float4[2]c,float2 d,float2"
" e,float f,float g,int h,int i,int j){float2 k=$z(d,e,f,g,a);k=$r(h,k);half4"
" l=$t(b,c,k);return $interpolated_to_rgb_unpremul(l,i,j);}$pure half4 sk_conical_grad_tex_shader"
"(float2 a,float2 b,float2 c,float d,float e,int f,int g,int h,int i,sampler2D"
" j){float2 k=$z(b,c,d,e,a);k=$r(g,k);half4 l=$u(j,f,k);return $interpolated_to_rgb_unpremul"
"(l,h,i);}$pure half4 sk_matrix_colorfilter(half4 a,float4x4 b,float4 c,int d"
"){if(bool(d))a=$rgb_to_hsl(a.xyz,a.w);else a=unpremul(a);half4 e=half4(b*float4"
"(a)+c);if(bool(d))e=$hsl_to_rgb(e.xyz,e.w);else{e=saturate(e);e.xyz*=e.w;}return"
" e;}$pure half4 $A(half2 a,half2 b,int c,sampler2D d){half4 f;f.xy=floor(a)"
";f.zw=f.xy+half2(1.);if(bool(c))f-=step(b.xyxy,f)*b.xyxy;half g=sample(d,float2"
"(half2((f.x+.5)*.00390625,.5))).x;half h=sample(d,float2(half2((f.z+.5)*.00390625"
",.5))).x;half2 i=half2(g,h);if(sk_Caps.PerlinNoiseRoundingFix)i=floor(i*half2"
"(255.)+half2(.5))*half2(.003921569);half4 j=256.*i.xyxy+f.yyww;j*=half4(.00390625"
");return j;}$pure half4 $B(half2 a,half4 b,sampler2D c){half2 d=fract(a);half2"
" e=smoothstep(0.,1.,d);const half f=.00390625;half4 g;for(int h=0;h<4;h++){"
"half i=(half(h)+.5)*.25;half4 j=sample(c,float2(float(b.x),float(i)));half4"
" k=sample(c,float2(float(b.y),float(i)));half4 l=sample(c,float2(float(b.w)"
",float(i)));half4 m=sample(c,float2(float(b.z),float(i)));half2 n=d;half o="
"dot((j.yw+j.xz*f)*2.-1.,n);n.x-=1.;half p=dot((k.yw+k.xz*f)*2.-1.,n);half q"
"=mix(o,p,e.x);n.y-=1.;p=dot((l.yw+l.xz*f)*2.-1.,n);n.x+=1.;o=dot((m.yw+m.xz"
"*f)*2.-1.,n);half r=mix(o,p,e.x);g[h]=mix(q,r,e.y);}return g;}$pure half4 perlin_noise_shader"
"(float2 a,float2 b,float2 c,int d,int e,int f,sampler2D g,sampler2D h){half2"
" k=half2((a+.5)*b);half4 l=half4(0.);half2 m=half2(c);half n=1.;for(int o=0"
";o<e;++o){half4 p=$A(k,m,f,g);half4 q=$B(k,p,h);if(d!=0)q=abs(q);l+=q*n;k*="
"half2(2.);n*=.5;m*=half2(2.);}if(d==0)l=l*half4(.5)+half4(.5);l=saturate(l)"
";return half4(l.xyz*l.www,l.w);}$pure half4 sk_blend(half4 a,half4 b,int c)"
"{switch(c){case 0:return blend_clear(a,b);case 1:return blend_src(a,b);case"
" 2:return blend_dst(a,b);case 3:return blend_porter_duff(half4(1.,0.,0.,-1."
"),a,b);case 4:return blend_porter_duff(half4(0.,1.,-1.,0.),a,b);case 5:return"
" blend_porter_duff(half4(0.,0.,1.,0.),a,b);case 6:return blend_porter_duff("
"half4(0.,0.,0.,1.),a,b);case 7:return blend_porter_duff(half4(0.,0.,-1.,0.)"
",a,b);case 8:return blend_porter_duff(half4(0.,0.,0.,-1.),a,b);case 9:return"
" blend_porter_duff(half4(0.,0.,1.,-1.),a,b);case 10:return blend_porter_duff"
"(half4(0.,0.,-1.,1.),a,b);case 11:return blend_porter_duff(half4(0.,0.,-1.,"
"-1.),a,b);case 12:return blend_porter_duff(half4(1.,1.,0.,0.),a,b);case 13:"
"return blend_modulate(a,b);case 14:return blend_screen(a,b);case 15:return blend_overlay"
"(0.,a,b);case 16:return blend_darken(1.,a,b);case 17:return blend_darken(-1."
",a,b);case 18:return blend_color_dodge(a,b);case 19:return blend_color_burn"
"(a,b);case 20:return blend_overlay(1.,a,b);case 21:return blend_soft_light("
"a,b);case 22:return blend_difference(a,b);case 23:return blend_exclusion(a,"
"b);case 24:return blend_multiply(a,b);case 25:return blend_hslc(half2(0.,1."
"),a,b);case 26:return blend_hslc(half2(1.),a,b);case 27:return blend_hslc(half2"
"(0.),a,b);case 28:return blend_hslc(half2(1.,0.),a,b);default:return half4("
"0.);}}$pure half4 sk_coeff_blend(half4 a,half4 b,half4 c){return blend_porter_duff"
"(c,a,b);}$pure half4 sk_table_colorfilter(half4 a,sampler2D b){half4 c=(unpremul"
"(a)*255.)*.00390625+.001953125;half4 d=half4(sample(b,float2(half2(c.x,.375"
"))).x,sample(b,float2(half2(c.y,.625))).x,sample(b,float2(half2(c.z,.875)))"
".x,1.);return d*sample(b,float2(half2(c.w,.125))).x;}$pure half4 sk_gaussian_colorfilter"
"(half4 a){half b=1.-a.w;b=exp((-b*b)*4.)-.018;return half4(b);}$pure half4 sample_indexed_atlas"
"(float2 a,int b,sampler2D c,sampler2D d,sampler2D e,sampler2D f){switch(b){"
"case 1:return sample(d,a);case 2:return sample(e,a);case 3:return sample(f,"
"a);default:return sample(c,a);}}$pure half4 bitmap_text_coverage_fn(half4 a"
",int b){return b==0?a.xxxx:a;}$pure half4 sdf_text_coverage_fn(half a,half b"
",float2 c){half d=7.96875*(a-.5019608);d-=b;half2 e=half2(dFdx(d),dFdy(d));"
"half f=dot(e,e);e=f>=.0001?e*inversesqrt(f):half2(.7071);half2 g=half2(dFdx"
"(c));half2 h=half2(dFdy(c));half2 i=half2(e.x*g.x+e.y*h.x,e.x*g.y+e.y*h.y);"
"half j=.65*length(i);return half4(smoothstep(-j,j,d));}$pure float $C(float2"
" a,float2x2 b){float2 c=a*b;return inversesqrt(dot(c,c));}$pure float2 $D(float2"
" a,float2 b,float c,float2x2 d){float2 e=1./(b*b+c*c);float2 g=e*a;float h="
"$C(g,d);float i=(.5*h)*(dot(a,g)-1.);float j=((b.x*c)*e.x)*h;return float2("
"j-i,j+i);}void $E(inout float2 a,float2x2 b,float2 c,float2 d,float2 e,float2"
" f){float2 g=f-d;if(all(greaterThan(g,float2(0.))))if(all(greaterThan(f,float2"
"(0.)))||c.x>0.&&c.y<0.){float2 h=$D(g*e,f,c.x,b);h.y=f.x-c.x<=0.?1.:-h.y;a="
"min(a,h);}else if(c.y==0.){float h=((c.x-g.x)-g.y)*$C(e,b);a.x=min(a.x,h);}"
"}void $F(inout float2 a,float2x2 b,float2 c,float4 e,float4 f,float4 g){$E("
"a,b,c,e.xy,float2(-1.),float2(f.x,g.x));$E(a,b,c,e.zy,float2(1.,-1.),float2"
"(f.y,g.y));$E(a,b,c,e.zw,float2(1.),float2(f.z,g.z));$E(a,b,c,e.xw,float2(-"
"1.,1.),float2(f.w,g.w));}$pure half4 analytic_rrect_coverage_fn(float4 a,float4"
" b,float4 c,float4 d,float4 e,float2 f,float2 g){if(g.x>0.)return half4(1.)"
";else if(g.y>1.){float2 h=min(c.xy,c.zw);float i=min(h.x,h.y)*a.w;float j=("
"g.y-1.)*a.w;float k=coverage_bias(j);return half4(half(saturate(j*(i+k))));"
"}else{float2x2 h=float2x2(b)*(1./a.w);float2 i=float2($C(float2(1.,0.),h),$C"
"(float2(0.,1.),h));float2 j=i*(f.x+min(c.xy,c.zw));float2 k=float2(min(j.x,"
"j.y),-1.);float l;float m;if(g.x>-.95){float2 n=i*((c.xy+c.zw)+2.*f.xx);l=min"
"(min(n.x,n.y),1.);m=coverage_bias(l);}else{float2 n=(2.*f.x)*i;float2 o=n-j"
";k.y=-max(o.x,o.y);if(f.x>0.){float p=min(n.x,n.y);if(o.y>=-.5&&n.y>p)p=n.y"
";if(o.x>=-.5&&n.x>p)p=n.x;l=min(p,1.);m=coverage_bias(l);}else l=(m=1.);}$F"
"(k,h,f,c,d,e);float n=min(g.y,0.)*a.w;float o=l*(min(k.x+n,-k.y)+m);return half4"
"(half(saturate(o)));}}$pure half4 per_edge_aa_quad_coverage_fn(float4 a,float4"
" b){float2 d=min(b.xy,b.zw);float e=min(d.x,d.y)*a.w;return half4(half(saturate"
"(e)));}$pure half4 $G(float2 a,float4 b,int c,half d,sampler2D e){half f;half"
" g;if(bool(c)){half2 h=max(half2(b.xy-a),half2(a-b.zw));f=sample(e,float2(float"
"(d*h.x),.5)).x;g=sample(e,float2(float(d*h.y),.5)).x;}else{half4 h=half4(half2"
"(b.xy-a),half2(a-b.zw));f=(1.-sample(e,float2(float(d*h.x),.5)).x)-sample(e"
",float2(float(d*h.z),.5)).x;g=(1.-sample(e,float2(float(d*h.y),.5)).x)-sample"
"(e,float2(float(d*h.w),.5)).x;}return half4(f*g);}$pure half4 $H(float2 a,float4"
" b,sampler2D c){float d=b.z;float e=b.w;half2 f=half2((a-b.xy)*e);float g=float"
"(length(f))+(.5-d)*e;return sample(c,float2(g,.5)).xxxx;}$pure half4 blur_coverage_fn"
"(float2 a,float4 b,int c,int d,half e,sampler2D f){switch(c){case 0:{return"
" $G(a,b,d,e,f);}case 2:{return $H(a,b,f);}}return half4(0.);}";
