#include<iostream>
#include <complex>
using namespace std;

typedef complex<double> P;

#define EPS (1e-10)
#define EQ(a,b) (fabs((a)-(b)) < EPS)

double cross(P a, P b){
  return a.real() * b.imag() - a.imag() * b.real();
}
double dot(P a, P b){
  return a.real() * b.real() + a.imag() * b.imag();
}

int ccw(P a, P b, P c){
  b -= a; c -= a;
  if(cross(b, c) > 0) return 1;
  if(cross(b, c) < 0) return -1;
  if(dot(b, c) < 0) return 2;
  if(norm(b) < norm(c)) return -2;
  return 0;
}
// 2直線の直交判定 : a⊥b <=> dot(a, b) = 0
int is_orthogonal(P a1, P a2, P b1, P b2) {
  return EQ( dot(a1-a2, b1-b2), 0.0 );
}
// 2直線の平行判定 : a//b <=> cross(a, b) = 0
int is_parallel(P a1, P a2, P b1, P b2) {
  return EQ( cross(a1-a2, b1-b2), 0.0 );
}

int main()
{
  P a,b,c,d;
  double ax,bx,cx,dx,ay,by,cy,dy;
  for(;cin>>ax>>ay>>bx>>by>>cx>>cy>>dx>>dy;)
    {
      P a=P(ax,ay),b=P(bx,by),c=P(cx,cy),d=P(dx,dy);
      if(is_orthogonal(a,b,c,d))
	cout<<"YES"<<endl;
      else
	cout<<"NO"<<endl;
    }
}