#include<cstdio>
#include<algorithm>
#include<vector>
#include<string>
#include<iostream>
#include<queue>
#include<map>
#include<set>
#include<complex>
#include<stack>
#include<cmath>

using namespace std;

#define reps(i,f,n) for(int i=f;i<int(n);i++)
#define rep(i,n) reps(i,0,n)

#define X real()
#define Y imag()
typedef complex<double> P;
double cross(P a,P b){return a.X*b.Y-a.Y*b.X;}
bool ccw(P a,P b,P c){return cross(b-a,c-a)>=0;}

int main(){
	
	double a,b,c,d,e,f,g,h;
	while(cin>>a>>b>>c>>d>>e>>f>>g>>h){
		P s(a,b);
		P t(c,d);
		P u(e,f);
		P v(g,h);
		
		P r = s-t;
		P g = u-v;
		
		r *= P(0,1);
		
		const double EPS = 0.0000000000001;
		if(abs(cross(r,g))==0)puts("YES");
		else puts("NO");
	}
}