#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <complex>
using namespace std;

#define REP(i,n) for(int i=0;i<(int)n;++i)
#define FOR(i,c) for(__typeof((c).begin())i=(c).begin();i!=(c).end();++i)
#define ALL(c) (c).begin(), (c).end()

const double EPS = 1e-8;
const double INF = 1e12;
typedef complex<double> P;
namespace std {
  bool operator < (const P& a, const P& b) {
    return real(a) != real(b) ? real(a) < real(b) : imag(a) < imag(b);
  }
}
double cross(const P& a, const P& b) {
  return imag(conj(a)*b);
}
double dot(const P& a, const P& b) {
  return real(conj(a)*b);
}


int main() {
  double x1,y1,x2,y2,x3,y3,x4,y4;
  while(cin>>x1>>y1>>x2>>y2>>x3>>y3>>x4>>y4) {
    P a(x1,y1), b(x2,y2), c(x3,y3), d(x4,y4);
    if(abs(dot(b-a,d-c))<EPS)
      cout <<"YES";
    else
      cout << "NO";
    cout << endl;
  }
}