unity – Why do I receive a non-expressed token error when compiling this shader?

Following this tutorial, I get the following error

syntax unexpected error vertex token

I'm still learning shaders, so I really can not understand the reason for this error. How can I make this shader work?

enter Shader "Custom / VertAnimShader"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
_PosTex ("position texture", 2D) = "black" {}
_NmlTex ("normal texture", 2D) = "white" {}
_Length ("Animator length", float) = 1
_DT ("Delta time", float) = 0
}

SubShader {
Happen{
CGPROGRAM
#pragma vertex vert
Fragment fragment of #pragma
#pragma debug
#include "UnityCG.cginc"

#define ts _PosTex_TexelSize

appdata structure
{
float2 uv: TEXTCOORD0;
};

structure v2f {
float2 uv: TEXTCOORD0;
normal float3: TEXTCOORD1;
float4 vertex: SV_POSITION;
};

sampler2D _MainTex, _PosTex, _NmlTex;
float4 _PosTex_TexelSize;
float _Length, _DT;

v2f vert (appdata v, uint vid: SV_VertexID)
{
float t = (_Time.y - _DT) / _Length;
t = fmod (t, 1.0);
float x = (vid + 0.5) * ts.x;
float y = t;
float4 pos = tex2Dlod (_PosTex, float4 (x, y, 0, 0));
normal float4 = tex2Dlod (_NmlTex, float4 (x, y, 0, 0));
v2f o;
o.vertex = UnityObjectToClipPos (pos);
o.normal = UnityObjectToWorldNormal (normal);
o.uv = v.uv;
return or;
}

half4 frag (v2f i): SV_TARGET
{
mean difference = point (i.normal, float3 (0,1,0)) * 0.5 + 0.5;
half4 col = tex2D (_MainTex, i.uv);
return diff * col;
}
ENDCG
}
}
}