{"version":3,"file":"cds-cad-viewer.js","mappings":"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AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,+BAA+B;AAChG;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,EAAE,2BAA2B;AAC7B,EAAE,2BAA0B;AAC5B;;AAEA,sBAAsB,mBAAO,CAAC,EAAY;AAC1C;AACA;;AAEA;AACA;AACA;AACA;;AAEA,2DAA2D,iBAAiB;;AAE5E;AACA;AACA;AACA,qBAAqB,sBAAsB;;AAE3C,qDAAqD,4BAA4B;;AAEjF;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH,2BAA2B,gBAAgB;AAC3C,2BAA2B;AAC3B,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,+CAA+C,aAAa;;AAE5D;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,MAAM,QAAQ,iCAAiC;AACpG,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA,oCAAoC,mBAAO,CAAC,EAAS;AACrD;AACA;AACA;AACA;AACA;AACA;;;;;;;ACrPA;AACA;AACA;AACA;AACA;AACA,0CAA0C;;;;;;;ACL1C,uBAAuB;AACvB;AACA;AACA;;;;;;;ACHA;AACA,kBAAkB,mBAAO,CAAC,CAAU;AACpC,iCAAiC,SAAS,mBAAmB,aAAa;AAC1E,CAAC;;;;;;;ACHD;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;;;;;;ACNA,aAAa,mBAAO,CAAC,CA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1C;AACA;AACA;AACA;AACA;AACA,4BAA4B,iBAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,mBAAO,CAAC,EAAa;AACvB;;;;;;;ACpEA,eAAe,mBAAO,CAAC,EAAc;AACrC,qBAAqB,6BAA2B;AAChD;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;;;;;;;ACRa;AACb,cAAc,mBAAO,CAAC,CAAW;AACjC,gBAAgB,mBAAO,CAAC,EAAe;AACvC,mBAAmB,mBAAO,CAAC,EAAmB;AAC9C,aAAa,mBAAO,CAAC,EAAkB;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM,mBAAO,CAAC,CAAU;AACxB;AACA,kBAAkB;AAClB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA,CAAC;;;;;;;ACjHD,UAAU,mBAAO,CAAC,EAAQ;AAC1B;AACA;AACA;AACA;;;;;;;;ACJa;AACb,gBAAgB,mBAAO,CAAC,EAAe;AACvC,cAAc,mBAAO,CAAC,EAAY;;AAElC;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO;AACf;AACA;;;;;;;;ACXa;AACb,cAAc,mBAAO,CAAC,CAAW;AACjC,aAAa,mBAAO,CAAC,CAAU;AAC/B,mBAAmB,mBAAO,CAAC,EAAmB;AAC9C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CrC,eAAe,mBAAO,CAAC,EAAc;AACrC,yBAAyB,mBAAO,CAAC,GAAyB;AAC1D,iBAAiB,mBAAO,CAAC,GAAyB;;AAElD;AACA,mBAAO,CAAC,GAAe;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;ACvCY;AACb,SAAS,mBAAO,CAAC,GAAc;;AAE/B;AACA;AACA;AACA;AACA;;;;;;;;ACPa;;AAEb,cAAc,mBAAO,CAAC,EAAY;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpBa;AACb,mBAAO,CAAC,GAAmB;AAC3B,eAAe,mBAAO,CAAC,EAAa;AACpC,WAAW,mBAAO,CAAC,EAAS;AAC5B,YAAY,mBAAO,CAAC,CAAU;AAC9B,cAAc,mBAAO,CAAC,EAAY;AAClC,UAAU,mBAAO,CAAC,EAAQ;AAC1B,iBAAiB,mBAAO,CAAC,GAAgB;;AAEzC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,mBAAmB;AACnB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;;;;;;;;AC/Fa;;AAEb,eAAe,mBAAO,CAAC,EAAc;AACrC,eAAe,mBAAO,CAAC,EAAc;AACrC,eAAe,mBAAO,CAAC,EAAc;AACrC,gBAAgB,mBAAO,CAAC,EAAe;AACvC,yBAAyB,mBAAO,CAAC,GAAyB;AAC1D,iBAAiB,mBAAO,CAAC,GAAyB;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mBAAO,CAAC,GAAe;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,oBAAoB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC;;;;;;;;ACrHY;;AAEb,eAAe,mBAAO,CAAC,EAAc;AACrC,gBAAgB,mBAAO,CAAC,EAAe;AACvC,iBAAiB,mBAAO,CAAC,GAAyB;;AAElD;AACA,mBAAO,CAAC,GAAe;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;AC9BY;;AAEb,eAAe,mBAAO,CAAC,GAAc;AACrC,eAAe,mBAAO,CAAC,EAAc;AACrC,yBAAyB,mBAAO,CAAC,GAAwB;AACzD,yBAAyB,mBAAO,CAAC,GAAyB;AAC1D,eAAe,mBAAO,CAAC,EAAc;AACrC,qBAAqB,mBAAO,CAAC,GAAyB;AACtD,iBAAiB,mBAAO,CAAC,GAAgB;AACzC,YAAY,mBAAO,CAAC,CAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC,0BAA0B;;AAEhE;AACA,mBAAO,CAAC,GAAe;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oFAAoF;AACpF;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,0BAA0B,mBAAmB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;ACrID;AACA,eAAe,mBAAO,CAAC,EAAc;AACrC,gBAAgB,mBAAO,CAAC,EAAe;AACvC,cAAc,mBAAO,CAAC,EAAQ;AAC9B;AACA;AACA;AACA;AACA;;;;;;;;ACRa;AACb,cAAc,mBAAO,CAAC,EAAY;AAClC,aAAa,mBAAO,CAAC,CAAW;AAChC,UAAU,mBAAO,CAAC,EAAQ;AAC1B,cAAc,mBAAO,CAAC,EAAY;AAClC,cAAc,mBAAO,CAAC,CAAW;AACjC,eAAe,mBAAO,CAAC,EAAc;AACrC,gBAAgB,mBAAO,CAAC,EAAe;AACvC,iBAAiB,mBAAO,CAAC,GAAgB;AACzC,YAAY,mBAAO,CAAC,GAAW;AAC/B,yBAAyB,mBAAO,CAAC,GAAwB;AACzD,WAAW,8BAAsB;AACjC,gBAAgB,mBAAO,CAAC,GAAc;AACtC,iCAAiC,mBAAO,CAAC,GAA2B;AACpE,cAAc,mBAAO,CAAC,GAAY;AAClC,gBAAgB,mBAAO,CAAC,GAAe;AACvC,qBAAqB,mBAAO,CAAC,GAAoB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA,+CAA+C,EAAE,mBAAO,CAAC,EAAQ;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,YAAY;AAChB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,YAAY;AACZ,UAAU;AACV,QAAQ;AACR;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,oBAAoB,iCAAiC;AACrD,UAAU;AACV;AACA;AACA,OAAO;AACP;AACA;AACA,MAAM;AACN;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,gBAAgB,sCAAsC;AACtD;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA,wBAAwB,0BAA0B;AAClD;AACA;AACA,UAAU;AACV;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA;AACA;AACA,IAAI;AACJ,mBAAmB,wBAAwB,MAAM;AACjD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B;AAC9B;AACA,uBAAuB,mBAAO,CAAC,GAAiB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2DAA2D,mBAAmB;AAC9E,mBAAO,CAAC,EAAsB;AAC9B,mBAAO,CAAC,GAAgB;AACxB,UAAU,mBAAO,CAAC,CAAS;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,gDAAgD,mBAAO,CAAC,GAAgB;AACxE;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA,CAAC;;;;;;;AC7RD;AACA;AACA;AACA,IAAI;AACJ;;;;;;;ACJA,UAAU,mBAAO,CAAC,EAAQ;AAC1B,WAAW,mBAAO,CAAC,GAAc;AACjC,kBAAkB,mBAAO,CAAC,GAAkB;AAC5C,eAAe,mBAAO,CAAC,EAAc;AACrC,eAAe,mBAAO,CAAC,EAAc;AACrC,gBAAgB,mBAAO,CAAC,GAA4B;AACpD;AACA;AACA;AACA,wCAAwC,mBAAmB;AAC3D;AACA;AACA;AACA;AACA;AACA,oEAAoE,gBAAgB;AACpF;AACA;AACA,IAAI,4CAA4C,+BAA+B;AAC/E;AACA;AACA;AACA;AACA;AACA;;;;;;;ACxBA,UAAU,mBAAO,CAAC,EAAQ;AAC1B,aAAa,mBAAO,CAAC,EAAW;AAChC,WAAW,mBAAO,CAAC,EAAS;AAC5B,UAAU,mBAAO,CAAC,EAAe;AACjC,aAAa,mBAAO,CAAC,CAAW;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,mBAAO,CAAC,EAAQ;AACtB;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnFA,aAAa,mBAAO,CAAC,CAAW;AAChC,gBAAgB,8BAAsB;AACtC;AACA;AACA;AACA,aAAa,mBAAO,CAAC,EAAQ;;AAE7B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,wCAAwC,qBAAqB,GAAG;AAChE;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;;;;;;;ACpEa;AACb;AACA,gBAAgB,mBAAO,CAAC,EAAe;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,gBAAgB;AAChB;AACA;;;;;;;ACjBA;AACA;AACA,aAAa;AACb,IAAI;AACJ,aAAa;AACb;AACA;;;;;;;ACNA,aAAa,mBAAO,CAAC,CAAW;AAChC;;AAEA;;;;;;;ACHA,eAAe,mBAAO,CAAC,EAAc;AACrC,eAAe,mBAAO,CAAC,EAAc;AACrC,2BAA2B,mBAAO,CAAC,GAA2B;;AAE9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACXA,eAAe,mBAAO,CAAC,EAAa;AACpC;AACA;AACA;AACA;;;;;;;;ACJa;AACb,aAAa,mBAAO,CAAC,GAAsB;AAC3C,eAAe,mBAAO,CAAC,GAAwB;AAC/C;;AAEA;AACA,iBAAiB,mBAAO,CAAC,GAAe;AACxC,0BAA0B;AAC1B,CAAC;AACD;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,CAAC;;;;;;;;AClBY;AACb,SAAS,2BAAyB;AAClC,aAAa,mBAAO,CAAC,EAAkB;AACvC,kBAAkB,mBAAO,CAAC,GAAiB;AAC3C,UAAU,mBAAO,CAAC,EAAQ;AAC1B,iBAAiB,mBAAO,CAAC,GAAgB;AACzC,YAAY,mBAAO,CAAC,GAAW;AAC/B,kBAAkB,mBAAO,CAAC,GAAgB;AAC1C,WAAW,mBAAO,CAAC,GAAc;AACjC,iBAAiB,mBAAO,CAAC,GAAgB;AACzC,kBAAkB,mBAAO,CAAC,CAAgB;AAC1C,cAAc,iCAA0B;AACxC,eAAe,mBAAO,CAAC,GAAwB;AAC/C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,OAAO;AAC/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B;AAC9B;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,+EAA+E,OAAO;AACtF;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;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gB;AACzC,gBAAgB,mBAAO,CAAC,EAAe;AACvC,eAAe,mBAAO,CAAC,EAAc;AACrC,cAAc,mBAAO,CAAC,GAAa;AACnC,WAAW,2BAA2B;AACtC,SAAS,2BAAyB;AAClC,gBAAgB,mBAAO,CAAC,GAAe;AACvC,qBAAqB,mBAAO,CAAC,EAAsB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,SAAS,WAAW;AACpB;AACA;AACA,SAAS,UAAU;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,WAAW;AACpB;AACA;AACA;AACA,SAAS,WAAW;AACpB;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B,mBAAmB,0BAA0B;AACvE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,WAAW;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;A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AACR;AACA;AACA,8EAA8E,YAAY;AAC1F;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0DAA0D,8CAA8C;;AAExG;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,oDAAoD;AACpD;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,qCAAqC;AACrC;AACA,KAAK;AACL,yEAAyE;AACzE;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,+DAA+D;AAC/D;AACA,KAAK;AACL,yEAAyE;AACzE;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH,0BAA0B,qBAAqB,IAAI;AACnD;AACA;AACA;AACA;;AAEA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA,+BAA+B,YAAY;AAC3C;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA,MAAM;AACN;AACA,KAAK;AACL,0BAA0B;AAC1B,KAAK;AACL,wBAAwB;AACxB,4BAA4B;AAC5B,2BAA2B;AAC3B,4BAA4B;AAC5B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B;AAC3B,OAAO;AACP;;AAEA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL,wDAAwD,8BAA8B;AACtF;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA,wDAAwD,WAAW;;AAEnE;;AAEA;;AAEA;AACA;AACA,KAAK,WAAW,eAAe;;AAE/B;AACA;AACA,KAAK;AACL;AACA,KAAK,YAAY,iCAAiC;;AAElD;AACA;AACA;AACA,EAAE,oCAAoC;;;;;;;AC/dtC,mBAAO,CAAC,GAAgB;AACxB;AACA;AACA;AACA,CAAC;;;;;;;ACJD,mBAAO,CAAC,GAAgB;AACxB;AACA;AACA;AACA,CAAC;;;;;;;ACJD,mBAAO,CAAC,GAAgB;AACxB;AACA;AACA;AACA,CAAC;;;;;;;ACJD,mBAAO,CAAC,GAAgB;AACxB;AACA;AACA;AACA,CAAC;;;;;;;ACJD,mBAAO,CAAC,GAAgB;AACxB;AACA;AACA;AACA,CAAC;;;;;;;ACJD,mBAAO,CAAC,GAAgB;AACxB;AACA;AACA;AACA,CAAC;;;;;;;ACJD,mBAAO,CAAC,GAAgB;AACxB;AACA;AACA;AACA,CAAC;;;;;;;ACJD,mBAAO,CAAC,GAAgB;AACxB;AACA;AACA;AACA,CAAC;;;;;;;ACJD;AACA,cAAc,mBAAO,CAAC,CAAW;AACjC,gBAAgB,mBAAO,CAAC,EAAe;AACvC,eAAe,mBAAO,CAAC,EAAc;AACrC,cAAc,gCAA4B,MAAM;AAChD;AACA;AACA,iCAAiC,mBAAO,CAAC,CAAU;AACnD,uBAAuB,aAAa;AACpC,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;ACfD;AACA,cAAc,mBAAO,CAAC,CAAW;AACjC,aAAa,mBAAO,CAAC,EAAkB;AACvC,gBAAgB,mBAAO,CAAC,EAAe;AACvC,eAAe,mBAAO,CAAC,EAAc;AACrC,eAAe,mBAAO,CAAC,EAAc;AACrC,YAAY,mBAAO,CAAC,CAAU;AAC9B,WAAW,mBAAO,CAAC,EAAS;AAC5B,kBAAkB,gCAA4B,MAAM;;AAEpD;AACA;AACA;AACA,iBAAiB;AACjB,oCAAoC,aAAa;AACjD,CAAC;AACD;AACA,2BAA2B,aAAa;AACxC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;AC9CD;AACA,SAAS,mBAAO,CAAC,EAAc;AAC/B,cAAc,mBAAO,CAAC,CAAW;AACjC,eAAe,mBAAO,CAAC,EAAc;AACrC,kBAAkB,mBAAO,CAAC,EAAiB;;AAE3C;AACA,gCAAgC,mBAAO,CAAC,CAAU;AAClD;AACA,gCAAgC,OAAO,UAAU,QAAQ,UAAU;AACnE,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,CAAC;;;;;;;ACtBD;AACA,cAAc,mBAAO,CAAC,CAAW;AACjC,WAAW,2BAA2B;AACtC,eAAe,mBAAO,CAAC,EAAc;;AAErC;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;ACVY;AACb;AACA,cAAc,mBAAO,CAAC,CAAW;AACjC,eAAe,mBAAO,CAAC,EAAc;AACrC;AACA,gCAAgC;AAChC,gCAAgC;AAChC,gCAAgC;AAChC;AACA;AACA;AACA,mBAAO,CAAC,GAAgB;AACxB;AACA;AACA;AACA;AACA,yCAAyC;AACzC,IAAI;AACJ,WAAW;AACX,CAAC;;AAED;AACA;AACA;AACA;AACA,CAAC;;;;;;;ACzBD;AACA,WAAW,mBAAO,CAAC,EAAgB;AACnC,qBAAqB,mBAAO,CAAC,EAAe;AAC5C,UAAU,mBAAO,CAAC,CAAQ;AAC1B,cAAc,mBAAO,CAAC,CAAW;AACjC,eAAe,mBAAO,CAAC,EAAc;AACrC,eAAe,mBAAO,CAAC,EAAc;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gCAAgC,UAAU;;;;;;;ACpB1C;AACA,WAAW,mBAAO,CAAC,EAAgB;AACnC,cAAc,mBAAO,CAAC,CAAW;AACjC,eAAe,mBAAO,CAAC,EAAc;;AAErC;AACA;AACA;AACA;AACA,CAAC;;;;;;;ACTD;AACA,cAAc,mBAAO,CAAC,CAAW;AACjC,eAAe,mBAAO,CAAC,EAAe;AACtC,eAAe,mBAAO,CAAC,EAAc;;AAErC;AACA;AACA;AACA;AACA,CAAC;;;;;;;ACTD;AACA,cAAc,mBAAO,CAAC,CAAW;;AAEjC;AACA;AACA;AACA;AACA,CAAC;;;;;;;ACPD;AACA,cAAc,mBAAO,CAAC,CAAW;AACjC,eAAe,mBAAO,CAAC,EAAc;AACrC;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;ACVD;AACA,cAAc,mBAAO,CAAC,CAAW;;AAEjC,gCAAgC,SAAS,mBAAO,CAAC,GAAa,GAAG;;;;;;;ACHjE;AACA,WAAW,mBAAO,CAAC,EAAgB;AACnC,WAAW,mBAAO,CAAC,EAAgB;AACnC,eAAe,mBAAO,CAAC,EAAc;AACrC,cAAc,gCAA4B;AAC1C;AACA;AACA;AACA;AACA;;;;;;;ACTA;AACA,cAAc,mBAAO,CAAC,CAAW;AACjC,eAAe,mBAAO,CAAC,EAAc;AACrC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,CAAC;;;;;;;ACfD;AACA,SAAS,mBAAO,CAAC,EAAc;AAC/B,WAAW,mBAAO,CAAC,EAAgB;AACnC,qBAAqB,mBAAO,CAAC,EAAe;AAC5C,UAAU,mBAAO,CAAC,CAAQ;AAC1B,cAAc,mBAAO,CAAC,CAAW;AACjC,iBAAiB,mBAAO,CAAC,EAAkB;AAC3C,eAAe,mBAAO,CAAC,EAAc;AACrC,eAAe,mBAAO,CAAC,EAAc;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA,gCAAgC,UAAU;;;;;;;AChC1C;AACA,cAAc,mBAAO,CAAC,CAAW;AACjC,eAAe,mBAAO,CAAC,EAAc;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,CAAC;;;;;;;ACdD,mBAAO,CAAC,GAAkC;AAC1C,sDAA8D;;;;;;;;ACDjD;AACb;AACA,cAAc,mBAAO,CAAC,CAAW;AACjC,gBAAgB,mBAAO,CAAC,EAAmB;;AAE3C;AACA;AACA;AACA;AACA,CAAC;;AAED,mBAAO,CAAC,GAAuB;;;;;;;ACX/B,mBAAO,CAAC,GAAkC;AAC1C,qDAA6D;;;;;;;;ACDhD;AACb;AACA,cAAc,mBAAO,CAAC,CAAW;AACjC,uBAAuB,mBAAO,CAAC,GAAuB;AACtD,eAAe,mBAAO,CAAC,EAAc;AACrC,eAAe,mBAAO,CAAC,EAAc;AACrC,gBAAgB,mBAAO,CAAC,EAAe;AACvC,yBAAyB,mBAAO,CAAC,GAAyB;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,mBAAO,CAAC,GAAuB;;;;;;;;ACrBlB;AACb;AACA,cAAc,mBAAO,CAAC,EAAa;AACnC,eAAe,mBAAO,CAAC,EAAc;AACrC,eAAe,mBAAO,CAAC,EAAc;AACrC,UAAU,mBAAO,CAAC,EAAQ;AAC1B,2BAA2B,mBAAO,CAAC,EAAQ;;AAE3C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACtCA,mBAAO,CAAC,GAAoC;AAC5C,uDAA+D;;;;;;;;ACDlD;AACb;AACA,cAAc,mBAAO,CAAC,CAAW;AACjC,WAAW,mBAAO,CAAC,GAAe;AAClC,gBAAgB,mBAAO,CAAC,GAAe;;AAEvC;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;;;;;ACbD;AACA,eAAe,mBAAO,CAAC,EAAc;AACrC,aAAa,mBAAO,CAAC,EAAkB;AACvC,cAAc,mBAAO,CAAC,EAAY;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACfA,mBAAO,CAAC,GAAkC;AAC1C,qDAA6D;;;;;;;;ACDhD;AACb;AACA,cAAc,mBAAO,CAAC,CAAW;AACjC,WAAW,mBAAO,CAAC,GAAe;AAClC,gBAAgB,mBAAO,CAAC,GAAe;;AAEvC;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;;;;;ACbD,mBAAO,CAAC,GAAoC;AAC5C,uDAA+D;;;;;;;;ACDlD;AACb;AACA,mBAAO,CAAC,EAAgB;AACxB;AACA;AACA;AACA,CAAC;;;;;;;ACND,mBAAO,CAAC,GAAqC;AAC7C,wDAAgE;;;;;;;;ACDnD;AACb;AACA,mBAAO,CAAC,EAAgB;AACxB;AACA;AACA;AACA,CAAC;;;;;;;ACND,mBAAO,CAAC,GAAyC;AACjD,iBAAiB,2BAAmC;;;;;;;ACDpD,mBAAO,CAAC,EAAe;;;;;;;ACAvB,mBAAO,CAAC,GAAuD;AAC/D,wEAAgF;;;;;;;ACDhF;AACA,cAAc,mBAAO,CAAC,CAAW;AACjC,cAAc,mBAAO,CAAC,GAAa;AACnC,gBAAgB,mBAAO,CAAC,EAAe;AACvC,WAAW,mBAAO,CAAC,EAAgB;AACnC,qBAAqB,mBAAO,CAAC,GAAoB;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;ACrBD,mBAAO,CAAC,GAAiC;AACzC,qDAA6D;;;;;;;ACD7D;AACA,cAAc,mBAAO,CAAC,CAAW;AACjC,cAAc,mBAAO,CAAC,GAAoB;;AAE1C;AACA;AACA;AACA;AACA,CAAC;;;;;;;ACRD,kBAAkB,mBAAO,CAAC,CAAgB;AAC1C,cAAc,mBAAO,CAAC,EAAgB;AACtC,gBAAgB,mBAAO,CAAC,EAAe;AACvC,aAAa,2BAA0B;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpBA,mBAAO,CAAC,GAAkC;AAC1C,sDAA8D;;;;;;;ACD9D;AACA,cAAc,mBAAO,CAAC,CAAW;AACjC,eAAe,mBAAO,CAAC,GAAoB;;AAE3C;AACA;AACA;AACA;AACA,CAAC;;;;;;;;ACRY;AACb,mBAAO,CAAC,GAA2B;AACnC,mBAAO,CAAC,GAAmC;AAC3C,0DAAkE;;;;;;;;ACHlE;AACa;AACb,cAAc,mBAAO,CAAC,CAAW;AACjC,WAAW,mBAAO,CAAC,CAAS;AAC5B,aAAa,mBAAO,CAAC,CAAW;AAChC,yBAAyB,mBAAO,CAAC,GAAwB;AACzD,qBAAqB,mBAAO,CAAC,GAAoB;;AAEjD,4CAA4C;AAC5C;AACA;AACA;AACA;AACA,+DAA+D,WAAW;AAC1E,MAAM;AACN;AACA,+DAA+D,UAAU;AACzE,MAAM;AACN;AACA,GAAG;;;;;;;ACnBH,mBAAO,CAAC,GAAuB;AAC/B,mBAAO,CAAC,GAA0B;AAClC,mBAAO,CAAC,GAA6B;AACrC,uCAA4C;;;;;;;ACH5C;AACA,aAAa,mBAAO,CAAC,CAAW;AAChC,cAAc,mBAAO,CAAC,CAAW;AACjC,gBAAgB,mBAAO,CAAC,GAAe;AACvC;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;ACnBD,cAAc,mBAAO,CAAC,CAAW;AACjC,YAAY,mBAAO,CAAC,GAAS;AAC7B;AACA;AACA;AACA,CAAC;;;;;;;ACLD,iBAAiB,mBAAO,CAAC,GAAsB;AAC/C,cAAc,mBAAO,CAAC,EAAgB;AACtC,eAAe,mBAAO,CAAC,EAAa;AACpC,aAAa,mBAAO,CAAC,CAAW;AAChC,WAAW,mBAAO,CAAC,EAAS;AAC5B,gBAAgB,mBAAO,CAAC,GAAc;AACtC,UAAU,mBAAO,CAAC,EAAQ;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qDAAqD,wBAAwB;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,4EAA4E;AAC5E,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,aAAa;AACb,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2CAA2C,iDAAiD;;AAE5F;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,MAAM;AACN,eAAe;AACf;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;;AAEA;AACA;AACA;AACA,sCAAsC,uDAAuD;AAC7F;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX;;AAEA;AACA;AACA,wCAAwC,WAAW;AACnD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sCAAsC,gBAAgB;AACtD;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA,4BAA4B;AAC5B;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,UAAU;AACV;AACA;AACA;AACA;;AAEA;;AAEA,UAAU;AACV;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qCAAqC,cAAc;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iCAAiC,mBAAmB;AACpD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA,kBAAkB;;AAElB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yBAAyB,gBAAgB;AACzC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,aAAa;AACb;AACA;;AAEA;AACA,aAAa;AACb;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,+CAA+C,QAAQ;AACvD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA,YAAY;AACZ;AACA;AACA;;AAEA,YAAY;AACZ;AACA;AACA;;AAEA,YAAY;AACZ;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,+CAA+C,QAAQ;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA,KAAK;;AAEL;AACA,+CAA+C,QAAQ;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,+CAA+C,QAAQ;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD;AACA;AACA;AACA;AACA,EAAE,KAA0B,oBAAoB,CAAE;AAClD;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;;;;;;ACvvBA,mBAAO,CAAC,GAAuB;AAC/B,gDAAmD;;;;;;;ACDnD;AACA,cAAc,mBAAO,CAAC,GAAW;;AAEjC,qBAAqB,QAAQ,mBAAO,CAAC,GAAW,GAAG;;;;;;;ACHnD,aAAa,mBAAO,CAAC,GAAW;AAChC,WAAW,mBAAO,CAAC,GAAS;AAC5B,UAAU,mBAAO,CAAC,GAAQ;AAC1B,WAAW,mBAAO,CAAC,GAAS;AAC5B,UAAU,mBAAO,CAAC,GAAQ;AAC1B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE;AACjE;AACA,kFAAkF;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ,UAAU;AACV;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,iBAAi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ACA;AACA;;;AAGA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,2CAA2C,kBAAkB;AAC7D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;AACA;AACA,eAAe,UAAU;AACzB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,iBAAiB;AACrC;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA,iCAAiC,EAAE;AACnC;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,gCAAgC,mBAAmB;AACnD;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA,4BAA4B,kBAAkB;AAC9C;AACA;;AAEA;AACA;;AAEA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,CAAC,SAAS,qBAAM,mBAAmB,qBAAM;;;;;;UClWzC;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCzBA;;;;;WCAA;WACA;WACA;WACA,eAAe,4BAA4B;WAC3C,eAAe;WACf,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,GAAG;WACH;WACA;WACA,CAAC;;;;;WCPD;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,EAAE;WACF;WACA;;;;;WCVA,8CAA8C;;;;;WCA9C;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;UENA;UACA;UACA;UACA;UACA;UACA","sources":["webpack://v88-webpack-Babel/./node_modules/@babel/polyfill/lib/index.js","webpack://v88-webpack-Babel/./node_modules/@babel/polyfill/lib/noConflict.js","webpack://v88-webpack-Babel/./node_modules/core-js/es6/index.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.symbol.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_global.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_has.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_descriptors.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_fails.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_export.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_core.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_hide.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_object-dp.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_an-object.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_is-object.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_ie8-dom-define.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_dom-create.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_to-primitive.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_property-desc.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_redefine.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_uid.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_function-to-string.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_shared.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_library.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_ctx.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_a-function.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_meta.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_set-to-string-tag.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_wks.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_wks-ext.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_wks-define.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_enum-keys.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_object-keys.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_object-keys-internal.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_to-iobject.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_iobject.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_cof.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_defined.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_array-includes.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_to-length.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_to-integer.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_to-absolute-index.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_shared-key.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_enum-bug-keys.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_object-gops.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_object-pie.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_is-array.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_to-object.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_object-create.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_object-dps.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_html.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_object-gopn-ext.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_object-gopn.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_object-gopd.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.object.create.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.object.define-property.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.object.define-properties.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.object.get-own-property-descriptor.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_object-sap.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.object.get-prototype-of.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_object-gpo.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.object.keys.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.object.get-own-property-names.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.object.freeze.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.object.seal.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.object.prevent-extensions.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.object.is-frozen.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.object.is-sealed.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.object.is-extensible.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.object.assign.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_object-assign.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.object.is.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_same-value.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.object.set-prototype-of.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_set-proto.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.object.to-string.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_classof.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.function.bind.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_bind.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_invoke.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.function.name.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.function.has-instance.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.parse-int.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_parse-int.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_string-trim.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_string-ws.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.parse-float.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_parse-float.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.number.constructor.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_inherit-if-required.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.number.to-fixed.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_a-number-value.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_string-repeat.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.number.to-precision.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.number.epsilon.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.number.is-finite.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.number.is-integer.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_is-integer.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.number.is-nan.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.number.is-safe-integer.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.number.max-safe-integer.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.number.min-safe-integer.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.number.parse-float.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.number.parse-int.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.math.acosh.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_math-log1p.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.math.asinh.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.math.atanh.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.math.cbrt.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_math-sign.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.math.clz32.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.math.cosh.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.math.expm1.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_math-expm1.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.math.fround.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_math-fround.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.math.hypot.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.math.imul.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.math.log10.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.math.log1p.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.math.log2.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.math.sign.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.math.sinh.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.math.tanh.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.math.trunc.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.string.from-code-point.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.string.raw.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.string.trim.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.string.iterator.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_string-at.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_iter-define.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_iterators.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_iter-create.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.string.code-point-at.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.string.ends-with.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_string-context.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_is-regexp.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_fails-is-regexp.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.string.includes.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.string.repeat.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.string.starts-with.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.string.anchor.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_string-html.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.string.big.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.string.blink.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.string.bold.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.string.fixed.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.string.fontcolor.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.string.fontsize.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.string.italics.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.string.link.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.string.small.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.string.strike.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.string.sub.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.string.sup.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.date.now.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.date.to-json.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.date.to-iso-string.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_date-to-iso-string.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.date.to-string.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.date.to-primitive.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_date-to-primitive.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.array.is-array.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.array.from.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_iter-call.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_is-array-iter.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_create-property.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/core.get-iterator-method.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_iter-detect.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.array.of.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.array.join.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_strict-method.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.array.slice.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.array.sort.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.array.for-each.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_array-methods.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_array-species-create.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_array-species-constructor.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.array.map.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.array.filter.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.array.some.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.array.every.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.array.reduce.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_array-reduce.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.array.reduce-right.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.array.index-of.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.array.last-index-of.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.array.copy-within.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_array-copy-within.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_add-to-unscopables.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.array.fill.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_array-fill.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.array.find.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.array.find-index.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.array.species.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_set-species.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.array.iterator.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_iter-step.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.regexp.constructor.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_flags.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.regexp.exec.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_regexp-exec.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.regexp.to-string.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.regexp.flags.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.regexp.match.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_advance-string-index.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_regexp-exec-abstract.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_fix-re-wks.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.regexp.replace.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.regexp.search.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.regexp.split.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_species-constructor.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.promise.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_an-instance.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_for-of.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_task.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_microtask.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_new-promise-capability.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_perform.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_user-agent.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_promise-resolve.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_redefine-all.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.map.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_collection-strong.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_validate-collection.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_collection.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.set.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.weak-map.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_collection-weak.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.weak-set.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.typed.array-buffer.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_typed.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_typed-buffer.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_to-index.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.typed.data-view.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.typed.int8-array.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_typed-array.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.typed.uint8-array.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.typed.uint8-clamped-array.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.typed.int16-array.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.typed.uint16-array.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.typed.int32-array.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.typed.uint32-array.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.typed.float32-array.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.typed.float64-array.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.reflect.apply.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.reflect.construct.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.reflect.define-property.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.reflect.delete-property.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.reflect.enumerate.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.reflect.get.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.reflect.get-own-property-descriptor.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.reflect.get-prototype-of.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.reflect.has.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.reflect.is-extensible.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.reflect.own-keys.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_own-keys.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.reflect.prevent-extensions.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.reflect.set.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es6.reflect.set-prototype-of.js","webpack://v88-webpack-Babel/./node_modules/core-js/fn/array/includes.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es7.array.includes.js","webpack://v88-webpack-Babel/./node_modules/core-js/fn/array/flat-map.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es7.array.flat-map.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_flatten-into-array.js","webpack://v88-webpack-Babel/./node_modules/core-js/fn/string/pad-start.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es7.string.pad-start.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_string-pad.js","webpack://v88-webpack-Babel/./node_modules/core-js/fn/string/pad-end.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es7.string.pad-end.js","webpack://v88-webpack-Babel/./node_modules/core-js/fn/string/trim-start.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es7.string.trim-left.js","webpack://v88-webpack-Babel/./node_modules/core-js/fn/string/trim-end.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es7.string.trim-right.js","webpack://v88-webpack-Babel/./node_modules/core-js/fn/symbol/async-iterator.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es7.symbol.async-iterator.js","webpack://v88-webpack-Babel/./node_modules/core-js/fn/object/get-own-property-descriptors.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js","webpack://v88-webpack-Babel/./node_modules/core-js/fn/object/values.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es7.object.values.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/_object-to-array.js","webpack://v88-webpack-Babel/./node_modules/core-js/fn/object/entries.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es7.object.entries.js","webpack://v88-webpack-Babel/./node_modules/core-js/fn/promise/finally.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/es7.promise.finally.js","webpack://v88-webpack-Babel/./node_modules/core-js/web/index.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/web.timers.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/web.immediate.js","webpack://v88-webpack-Babel/./node_modules/core-js/modules/web.dom.iterable.js","webpack://v88-webpack-Babel/./node_modules/regenerator-runtime/runtime.js","webpack://v88-webpack-Babel/./node_modules/core-js/library/fn/global.js","webpack://v88-webpack-Babel/./node_modules/core-js/library/modules/es7.global.js","webpack://v88-webpack-Babel/./node_modules/core-js/library/modules/_export.js","webpack://v88-webpack-Babel/./node_modules/core-js/library/modules/_global.js","webpack://v88-webpack-Babel/./node_modules/core-js/library/modules/_core.js","webpack://v88-webpack-Babel/./node_modules/core-js/library/modules/_ctx.js","webpack://v88-webpack-Babel/./node_modules/core-js/library/modules/_a-function.js","webpack://v88-webpack-Babel/./node_modules/core-js/library/modules/_hide.js","webpack://v88-webpack-Babel/./node_modules/core-js/library/modules/_object-dp.js","webpack://v88-webpack-Babel/./node_modules/core-js/library/modules/_an-object.js","webpack://v88-webpack-Babel/./node_modules/core-js/library/modules/_is-object.js","webpack://v88-webpack-Babel/./node_modules/core-js/library/modules/_ie8-dom-define.js","webpack://v88-webpack-Babel/./node_modules/core-js/library/modules/_descriptors.js","webpack://v88-webpack-Babel/./node_modules/core-js/library/modules/_fails.js","webpack://v88-webpack-Babel/./node_modules/core-js/library/modules/_dom-create.js","webpack://v88-webpack-Babel/./node_modules/core-js/library/modules/_to-primitive.js","webpack://v88-webpack-Babel/./node_modules/core-js/library/modules/_property-desc.js","webpack://v88-webpack-Babel/./node_modules/core-js/library/modules/_has.js","webpack://v88-webpack-Babel/./js/cds-cad-viewer-dev.js","webpack://v88-webpack-Babel/./js/Tween.js","webpack://v88-webpack-Babel/./js/HotspotManager.js","webpack://v88-webpack-Babel/./js/threejsExtension.js","webpack://v88-webpack-Babel/./js/LegacyJSONLoader.js","webpack://v88-webpack-Babel/./js/OrbitControls.js","webpack://v88-webpack-Babel/./node_modules/url-search-params-polyfill/index.js","webpack://v88-webpack-Babel/webpack/bootstrap","webpack://v88-webpack-Babel/webpack/runtime/amd options","webpack://v88-webpack-Babel/webpack/runtime/compat get default export","webpack://v88-webpack-Babel/webpack/runtime/define property getters","webpack://v88-webpack-Babel/webpack/runtime/global","webpack://v88-webpack-Babel/webpack/runtime/harmony module decorator","webpack://v88-webpack-Babel/webpack/runtime/hasOwnProperty shorthand","webpack://v88-webpack-Babel/webpack/runtime/make namespace object","webpack://v88-webpack-Babel/webpack/before-startup","webpack://v88-webpack-Babel/webpack/startup","webpack://v88-webpack-Babel/webpack/after-startup"],"sourcesContent":["\"use strict\";\n\nrequire(\"./noConflict\");\n\nvar _global = _interopRequireDefault(require(\"core-js/library/fn/global\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nif (_global[\"default\"]._babelPolyfill && typeof console !== \"undefined\" && console.warn) {\n console.warn(\"@babel/polyfill is loaded more than once on this page. This is probably not desirable/intended \" + \"and may have consequences if different versions of the polyfills are applied sequentially. \" + \"If you do need to load the polyfill more than once, use @babel/polyfill/noConflict \" + \"instead to bypass the warning.\");\n}\n\n_global[\"default\"]._babelPolyfill = true;","\"use strict\";\n\nrequire(\"core-js/es6\");\n\nrequire(\"core-js/fn/array/includes\");\n\nrequire(\"core-js/fn/array/flat-map\");\n\nrequire(\"core-js/fn/string/pad-start\");\n\nrequire(\"core-js/fn/string/pad-end\");\n\nrequire(\"core-js/fn/string/trim-start\");\n\nrequire(\"core-js/fn/string/trim-end\");\n\nrequire(\"core-js/fn/symbol/async-iterator\");\n\nrequire(\"core-js/fn/object/get-own-property-descriptors\");\n\nrequire(\"core-js/fn/object/values\");\n\nrequire(\"core-js/fn/object/entries\");\n\nrequire(\"core-js/fn/promise/finally\");\n\nrequire(\"core-js/web\");\n\nrequire(\"regenerator-runtime/runtime\");","require('../modules/es6.symbol');\nrequire('../modules/es6.object.create');\nrequire('../modules/es6.object.define-property');\nrequire('../modules/es6.object.define-properties');\nrequire('../modules/es6.object.get-own-property-descriptor');\nrequire('../modules/es6.object.get-prototype-of');\nrequire('../modules/es6.object.keys');\nrequire('../modules/es6.object.get-own-property-names');\nrequire('../modules/es6.object.freeze');\nrequire('../modules/es6.object.seal');\nrequire('../modules/es6.object.prevent-extensions');\nrequire('../modules/es6.object.is-frozen');\nrequire('../modules/es6.object.is-sealed');\nrequire('../modules/es6.object.is-extensible');\nrequire('../modules/es6.object.assign');\nrequire('../modules/es6.object.is');\nrequire('../modules/es6.object.set-prototype-of');\nrequire('../modules/es6.object.to-string');\nrequire('../modules/es6.function.bind');\nrequire('../modules/es6.function.name');\nrequire('../modules/es6.function.has-instance');\nrequire('../modules/es6.parse-int');\nrequire('../modules/es6.parse-float');\nrequire('../modules/es6.number.constructor');\nrequire('../modules/es6.number.to-fixed');\nrequire('../modules/es6.number.to-precision');\nrequire('../modules/es6.number.epsilon');\nrequire('../modules/es6.number.is-finite');\nrequire('../modules/es6.number.is-integer');\nrequire('../modules/es6.number.is-nan');\nrequire('../modules/es6.number.is-safe-integer');\nrequire('../modules/es6.number.max-safe-integer');\nrequire('../modules/es6.number.min-safe-integer');\nrequire('../modules/es6.number.parse-float');\nrequire('../modules/es6.number.parse-int');\nrequire('../modules/es6.math.acosh');\nrequire('../modules/es6.math.asinh');\nrequire('../modules/es6.math.atanh');\nrequire('../modules/es6.math.cbrt');\nrequire('../modules/es6.math.clz32');\nrequire('../modules/es6.math.cosh');\nrequire('../modules/es6.math.expm1');\nrequire('../modules/es6.math.fround');\nrequire('../modules/es6.math.hypot');\nrequire('../modules/es6.math.imul');\nrequire('../modules/es6.math.log10');\nrequire('../modules/es6.math.log1p');\nrequire('../modules/es6.math.log2');\nrequire('../modules/es6.math.sign');\nrequire('../modules/es6.math.sinh');\nrequire('../modules/es6.math.tanh');\nrequire('../modules/es6.math.trunc');\nrequire('../modules/es6.string.from-code-point');\nrequire('../modules/es6.string.raw');\nrequire('../modules/es6.string.trim');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/es6.string.code-point-at');\nrequire('../modules/es6.string.ends-with');\nrequire('../modules/es6.string.includes');\nrequire('../modules/es6.string.repeat');\nrequire('../modules/es6.string.starts-with');\nrequire('../modules/es6.string.anchor');\nrequire('../modules/es6.string.big');\nrequire('../modules/es6.string.blink');\nrequire('../modules/es6.string.bold');\nrequire('../modules/es6.string.fixed');\nrequire('../modules/es6.string.fontcolor');\nrequire('../modules/es6.string.fontsize');\nrequire('../modules/es6.string.italics');\nrequire('../modules/es6.string.link');\nrequire('../modules/es6.string.small');\nrequire('../modules/es6.string.strike');\nrequire('../modules/es6.string.sub');\nrequire('../modules/es6.string.sup');\nrequire('../modules/es6.date.now');\nrequire('../modules/es6.date.to-json');\nrequire('../modules/es6.date.to-iso-string');\nrequire('../modules/es6.date.to-string');\nrequire('../modules/es6.date.to-primitive');\nrequire('../modules/es6.array.is-array');\nrequire('../modules/es6.array.from');\nrequire('../modules/es6.array.of');\nrequire('../modules/es6.array.join');\nrequire('../modules/es6.array.slice');\nrequire('../modules/es6.array.sort');\nrequire('../modules/es6.array.for-each');\nrequire('../modules/es6.array.map');\nrequire('../modules/es6.array.filter');\nrequire('../modules/es6.array.some');\nrequire('../modules/es6.array.every');\nrequire('../modules/es6.array.reduce');\nrequire('../modules/es6.array.reduce-right');\nrequire('../modules/es6.array.index-of');\nrequire('../modules/es6.array.last-index-of');\nrequire('../modules/es6.array.copy-within');\nrequire('../modules/es6.array.fill');\nrequire('../modules/es6.array.find');\nrequire('../modules/es6.array.find-index');\nrequire('../modules/es6.array.species');\nrequire('../modules/es6.array.iterator');\nrequire('../modules/es6.regexp.constructor');\nrequire('../modules/es6.regexp.exec');\nrequire('../modules/es6.regexp.to-string');\nrequire('../modules/es6.regexp.flags');\nrequire('../modules/es6.regexp.match');\nrequire('../modules/es6.regexp.replace');\nrequire('../modules/es6.regexp.search');\nrequire('../modules/es6.regexp.split');\nrequire('../modules/es6.promise');\nrequire('../modules/es6.map');\nrequire('../modules/es6.set');\nrequire('../modules/es6.weak-map');\nrequire('../modules/es6.weak-set');\nrequire('../modules/es6.typed.array-buffer');\nrequire('../modules/es6.typed.data-view');\nrequire('../modules/es6.typed.int8-array');\nrequire('../modules/es6.typed.uint8-array');\nrequire('../modules/es6.typed.uint8-clamped-array');\nrequire('../modules/es6.typed.int16-array');\nrequire('../modules/es6.typed.uint16-array');\nrequire('../modules/es6.typed.int32-array');\nrequire('../modules/es6.typed.uint32-array');\nrequire('../modules/es6.typed.float32-array');\nrequire('../modules/es6.typed.float64-array');\nrequire('../modules/es6.reflect.apply');\nrequire('../modules/es6.reflect.construct');\nrequire('../modules/es6.reflect.define-property');\nrequire('../modules/es6.reflect.delete-property');\nrequire('../modules/es6.reflect.enumerate');\nrequire('../modules/es6.reflect.get');\nrequire('../modules/es6.reflect.get-own-property-descriptor');\nrequire('../modules/es6.reflect.get-prototype-of');\nrequire('../modules/es6.reflect.has');\nrequire('../modules/es6.reflect.is-extensible');\nrequire('../modules/es6.reflect.own-keys');\nrequire('../modules/es6.reflect.prevent-extensions');\nrequire('../modules/es6.reflect.set');\nrequire('../modules/es6.reflect.set-prototype-of');\nmodule.exports = require('../modules/_core');\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toObject = require('./_to-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $GOPS = require('./_object-gops');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n $GOPS.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });\n\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return $GOPS.f(toObject(it));\n }\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar $toString = require('./_function-to-string');\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","module.exports = require('./_shared')('native-function-to-string', Function.toString);\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","module.exports = false;\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","exports.f = require('./_wks');\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","exports.f = Object.getOwnPropertySymbols;\n","exports.f = {}.propertyIsEnumerable;\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","var $export = require('./_export');\n// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperties: require('./_object-dps') });\n","// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = require('./_to-iobject');\nvar $getOwnPropertyDescriptor = require('./_object-gopd').f;\n\nrequire('./_object-sap')('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object');\nvar $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","// 19.1.2.7 Object.getOwnPropertyNames(O)\nrequire('./_object-sap')('getOwnPropertyNames', function () {\n return require('./_object-gopn-ext').f;\n});\n","// 19.1.2.5 Object.freeze(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('freeze', function ($freeze) {\n return function freeze(it) {\n return $freeze && isObject(it) ? $freeze(meta(it)) : it;\n };\n});\n","// 19.1.2.17 Object.seal(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('seal', function ($seal) {\n return function seal(it) {\n return $seal && isObject(it) ? $seal(meta(it)) : it;\n };\n});\n","// 19.1.2.15 Object.preventExtensions(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('preventExtensions', function ($preventExtensions) {\n return function preventExtensions(it) {\n return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;\n };\n});\n","// 19.1.2.12 Object.isFrozen(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isFrozen', function ($isFrozen) {\n return function isFrozen(it) {\n return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;\n };\n});\n","// 19.1.2.13 Object.isSealed(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isSealed', function ($isSealed) {\n return function isSealed(it) {\n return isObject(it) ? $isSealed ? $isSealed(it) : false : true;\n };\n});\n","// 19.1.2.11 Object.isExtensible(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isExtensible', function ($isExtensible) {\n return function isExtensible(it) {\n return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;\n };\n});\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","// 19.1.3.10 Object.is(value1, value2)\nvar $export = require('./_export');\n$export($export.S, 'Object', { is: require('./_same-value') });\n","// 7.2.9 SameValue(x, y)\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","'use strict';\n// 19.1.3.6 Object.prototype.toString()\nvar classof = require('./_classof');\nvar test = {};\ntest[require('./_wks')('toStringTag')] = 'z';\nif (test + '' != '[object z]') {\n require('./_redefine')(Object.prototype, 'toString', function toString() {\n return '[object ' + classof(this) + ']';\n }, true);\n}\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)\nvar $export = require('./_export');\n\n$export($export.P, 'Function', { bind: require('./_bind') });\n","'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n","var dP = require('./_object-dp').f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || require('./_descriptors') && dP(FProto, NAME, {\n configurable: true,\n get: function () {\n try {\n return ('' + this).match(nameRE)[1];\n } catch (e) {\n return '';\n }\n }\n});\n","'use strict';\nvar isObject = require('./_is-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar HAS_INSTANCE = require('./_wks')('hasInstance');\nvar FunctionProto = Function.prototype;\n// 19.2.3.6 Function.prototype[@@hasInstance](V)\nif (!(HAS_INSTANCE in FunctionProto)) require('./_object-dp').f(FunctionProto, HAS_INSTANCE, { value: function (O) {\n if (typeof this != 'function' || !isObject(O)) return false;\n if (!isObject(this.prototype)) return O instanceof this;\n // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:\n while (O = getPrototypeOf(O)) if (this.prototype === O) return true;\n return false;\n} });\n","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 18.2.5 parseInt(string, radix)\n$export($export.G + $export.F * (parseInt != $parseInt), { parseInt: $parseInt });\n","var $parseInt = require('./_global').parseInt;\nvar $trim = require('./_string-trim').trim;\nvar ws = require('./_string-ws');\nvar hex = /^[-+]?0[xX]/;\n\nmodule.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) {\n var string = $trim(String(str), 3);\n return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));\n} : $parseInt;\n","var $export = require('./_export');\nvar defined = require('./_defined');\nvar fails = require('./_fails');\nvar spaces = require('./_string-ws');\nvar space = '[' + spaces + ']';\nvar non = '\\u200b\\u0085';\nvar ltrim = RegExp('^' + space + space + '*');\nvar rtrim = RegExp(space + space + '*$');\n\nvar exporter = function (KEY, exec, ALIAS) {\n var exp = {};\n var FORCE = fails(function () {\n return !!spaces[KEY]() || non[KEY]() != non;\n });\n var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];\n if (ALIAS) exp[ALIAS] = fn;\n $export($export.P + $export.F * FORCE, 'String', exp);\n};\n\n// 1 -> String#trimLeft\n// 2 -> String#trimRight\n// 3 -> String#trim\nvar trim = exporter.trim = function (string, TYPE) {\n string = String(defined(string));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n};\n\nmodule.exports = exporter;\n","module.exports = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\n '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var $export = require('./_export');\nvar $parseFloat = require('./_parse-float');\n// 18.2.4 parseFloat(string)\n$export($export.G + $export.F * (parseFloat != $parseFloat), { parseFloat: $parseFloat });\n","var $parseFloat = require('./_global').parseFloat;\nvar $trim = require('./_string-trim').trim;\n\nmodule.exports = 1 / $parseFloat(require('./_string-ws') + '-0') !== -Infinity ? function parseFloat(str) {\n var string = $trim(String(str), 3);\n var result = $parseFloat(string);\n return result === 0 && string.charAt(0) == '-' ? -0 : result;\n} : $parseFloat;\n","'use strict';\nvar global = require('./_global');\nvar has = require('./_has');\nvar cof = require('./_cof');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar toPrimitive = require('./_to-primitive');\nvar fails = require('./_fails');\nvar gOPN = require('./_object-gopn').f;\nvar gOPD = require('./_object-gopd').f;\nvar dP = require('./_object-dp').f;\nvar $trim = require('./_string-trim').trim;\nvar NUMBER = 'Number';\nvar $Number = global[NUMBER];\nvar Base = $Number;\nvar proto = $Number.prototype;\n// Opera ~12 has broken Object#toString\nvar BROKEN_COF = cof(require('./_object-create')(proto)) == NUMBER;\nvar TRIM = 'trim' in String.prototype;\n\n// 7.1.3 ToNumber(argument)\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n if (typeof it == 'string' && it.length > 2) {\n it = TRIM ? it.trim() : $trim(it, 3);\n var first = it.charCodeAt(0);\n var third, radix, maxCode;\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i\n default: return +it;\n }\n for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {\n code = digits.charCodeAt(i);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\nif (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {\n $Number = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var that = this;\n return that instanceof $Number\n // check on 1..constructor(foo) case\n && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)\n ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);\n };\n for (var keys = require('./_descriptors') ? gOPN(Base) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES6 (in case, if modules with ES6 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(Base, key = keys[j]) && !has($Number, key)) {\n dP($Number, key, gOPD(Base, key));\n }\n }\n $Number.prototype = proto;\n proto.constructor = $Number;\n require('./_redefine')(global, NUMBER, $Number);\n}\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n var S = target.constructor;\n var P;\n if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n setPrototypeOf(that, P);\n } return that;\n};\n","'use strict';\nvar $export = require('./_export');\nvar toInteger = require('./_to-integer');\nvar aNumberValue = require('./_a-number-value');\nvar repeat = require('./_string-repeat');\nvar $toFixed = 1.0.toFixed;\nvar floor = Math.floor;\nvar data = [0, 0, 0, 0, 0, 0];\nvar ERROR = 'Number.toFixed: incorrect invocation!';\nvar ZERO = '0';\n\nvar multiply = function (n, c) {\n var i = -1;\n var c2 = c;\n while (++i < 6) {\n c2 += n * data[i];\n data[i] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n};\nvar divide = function (n) {\n var i = 6;\n var c = 0;\n while (--i >= 0) {\n c += data[i];\n data[i] = floor(c / n);\n c = (c % n) * 1e7;\n }\n};\nvar numToString = function () {\n var i = 6;\n var s = '';\n while (--i >= 0) {\n if (s !== '' || i === 0 || data[i] !== 0) {\n var t = String(data[i]);\n s = s === '' ? t : s + repeat.call(ZERO, 7 - t.length) + t;\n }\n } return s;\n};\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\n$export($export.P + $export.F * (!!$toFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !require('./_fails')(function () {\n // V8 ~ Android 4.3-\n $toFixed.call({});\n})), 'Number', {\n toFixed: function toFixed(fractionDigits) {\n var x = aNumberValue(this, ERROR);\n var f = toInteger(fractionDigits);\n var s = '';\n var m = ZERO;\n var e, z, j, k;\n if (f < 0 || f > 20) throw RangeError(ERROR);\n // eslint-disable-next-line no-self-compare\n if (x != x) return 'NaN';\n if (x <= -1e21 || x >= 1e21) return String(x);\n if (x < 0) {\n s = '-';\n x = -x;\n }\n if (x > 1e-21) {\n e = log(x * pow(2, 69, 1)) - 69;\n z = e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(0, z);\n j = f;\n while (j >= 7) {\n multiply(1e7, 0);\n j -= 7;\n }\n multiply(pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(1 << 23);\n j -= 23;\n }\n divide(1 << j);\n multiply(1, 1);\n divide(2);\n m = numToString();\n } else {\n multiply(0, z);\n multiply(1 << -e, 0);\n m = numToString() + repeat.call(ZERO, f);\n }\n }\n if (f > 0) {\n k = m.length;\n m = s + (k <= f ? '0.' + repeat.call(ZERO, f - k) + m : m.slice(0, k - f) + '.' + m.slice(k - f));\n } else {\n m = s + m;\n } return m;\n }\n});\n","var cof = require('./_cof');\nmodule.exports = function (it, msg) {\n if (typeof it != 'number' && cof(it) != 'Number') throw TypeError(msg);\n return +it;\n};\n","'use strict';\nvar toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n\nmodule.exports = function repeat(count) {\n var str = String(defined(this));\n var res = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError(\"Count can't be negative\");\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str;\n return res;\n};\n","'use strict';\nvar $export = require('./_export');\nvar $fails = require('./_fails');\nvar aNumberValue = require('./_a-number-value');\nvar $toPrecision = 1.0.toPrecision;\n\n$export($export.P + $export.F * ($fails(function () {\n // IE7-\n return $toPrecision.call(1, undefined) !== '1';\n}) || !$fails(function () {\n // V8 ~ Android 4.3-\n $toPrecision.call({});\n})), 'Number', {\n toPrecision: function toPrecision(precision) {\n var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!');\n return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision);\n }\n});\n","// 20.1.2.1 Number.EPSILON\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { EPSILON: Math.pow(2, -52) });\n","// 20.1.2.2 Number.isFinite(number)\nvar $export = require('./_export');\nvar _isFinite = require('./_global').isFinite;\n\n$export($export.S, 'Number', {\n isFinite: function isFinite(it) {\n return typeof it == 'number' && _isFinite(it);\n }\n});\n","// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { isInteger: require('./_is-integer') });\n","// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object');\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","// 20.1.2.4 Number.isNaN(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', {\n isNaN: function isNaN(number) {\n // eslint-disable-next-line no-self-compare\n return number != number;\n }\n});\n","// 20.1.2.5 Number.isSafeInteger(number)\nvar $export = require('./_export');\nvar isInteger = require('./_is-integer');\nvar abs = Math.abs;\n\n$export($export.S, 'Number', {\n isSafeInteger: function isSafeInteger(number) {\n return isInteger(number) && abs(number) <= 0x1fffffffffffff;\n }\n});\n","// 20.1.2.6 Number.MAX_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });\n","// 20.1.2.10 Number.MIN_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff });\n","var $export = require('./_export');\nvar $parseFloat = require('./_parse-float');\n// 20.1.2.12 Number.parseFloat(string)\n$export($export.S + $export.F * (Number.parseFloat != $parseFloat), 'Number', { parseFloat: $parseFloat });\n","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 20.1.2.13 Number.parseInt(string, radix)\n$export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', { parseInt: $parseInt });\n","// 20.2.2.3 Math.acosh(x)\nvar $export = require('./_export');\nvar log1p = require('./_math-log1p');\nvar sqrt = Math.sqrt;\nvar $acosh = Math.acosh;\n\n$export($export.S + $export.F * !($acosh\n // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509\n && Math.floor($acosh(Number.MAX_VALUE)) == 710\n // Tor Browser bug: Math.acosh(Infinity) -> NaN\n && $acosh(Infinity) == Infinity\n), 'Math', {\n acosh: function acosh(x) {\n return (x = +x) < 1 ? NaN : x > 94906265.62425156\n ? Math.log(x) + Math.LN2\n : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));\n }\n});\n","// 20.2.2.20 Math.log1p(x)\nmodule.exports = Math.log1p || function log1p(x) {\n return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);\n};\n","// 20.2.2.5 Math.asinh(x)\nvar $export = require('./_export');\nvar $asinh = Math.asinh;\n\nfunction asinh(x) {\n return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));\n}\n\n// Tor Browser bug: Math.asinh(0) -> -0\n$export($export.S + $export.F * !($asinh && 1 / $asinh(0) > 0), 'Math', { asinh: asinh });\n","// 20.2.2.7 Math.atanh(x)\nvar $export = require('./_export');\nvar $atanh = Math.atanh;\n\n// Tor Browser bug: Math.atanh(-0) -> 0\n$export($export.S + $export.F * !($atanh && 1 / $atanh(-0) < 0), 'Math', {\n atanh: function atanh(x) {\n return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2;\n }\n});\n","// 20.2.2.9 Math.cbrt(x)\nvar $export = require('./_export');\nvar sign = require('./_math-sign');\n\n$export($export.S, 'Math', {\n cbrt: function cbrt(x) {\n return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3);\n }\n});\n","// 20.2.2.28 Math.sign(x)\nmodule.exports = Math.sign || function sign(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n","// 20.2.2.11 Math.clz32(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n clz32: function clz32(x) {\n return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32;\n }\n});\n","// 20.2.2.12 Math.cosh(x)\nvar $export = require('./_export');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n cosh: function cosh(x) {\n return (exp(x = +x) + exp(-x)) / 2;\n }\n});\n","// 20.2.2.14 Math.expm1(x)\nvar $export = require('./_export');\nvar $expm1 = require('./_math-expm1');\n\n$export($export.S + $export.F * ($expm1 != Math.expm1), 'Math', { expm1: $expm1 });\n","// 20.2.2.14 Math.expm1(x)\nvar $expm1 = Math.expm1;\nmodule.exports = (!$expm1\n // Old FF bug\n || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168\n // Tor Browser bug\n || $expm1(-2e-17) != -2e-17\n) ? function expm1(x) {\n return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;\n} : $expm1;\n","// 20.2.2.16 Math.fround(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { fround: require('./_math-fround') });\n","// 20.2.2.16 Math.fround(x)\nvar sign = require('./_math-sign');\nvar pow = Math.pow;\nvar EPSILON = pow(2, -52);\nvar EPSILON32 = pow(2, -23);\nvar MAX32 = pow(2, 127) * (2 - EPSILON32);\nvar MIN32 = pow(2, -126);\n\nvar roundTiesToEven = function (n) {\n return n + 1 / EPSILON - 1 / EPSILON;\n};\n\nmodule.exports = Math.fround || function fround(x) {\n var $abs = Math.abs(x);\n var $sign = sign(x);\n var a, result;\n if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;\n a = (1 + EPSILON32 / EPSILON) * $abs;\n result = a - (a - $abs);\n // eslint-disable-next-line no-self-compare\n if (result > MAX32 || result != result) return $sign * Infinity;\n return $sign * result;\n};\n","// 20.2.2.17 Math.hypot([value1[, value2[, … ]]])\nvar $export = require('./_export');\nvar abs = Math.abs;\n\n$export($export.S, 'Math', {\n hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars\n var sum = 0;\n var i = 0;\n var aLen = arguments.length;\n var larg = 0;\n var arg, div;\n while (i < aLen) {\n arg = abs(arguments[i++]);\n if (larg < arg) {\n div = larg / arg;\n sum = sum * div * div + 1;\n larg = arg;\n } else if (arg > 0) {\n div = arg / larg;\n sum += div * div;\n } else sum += arg;\n }\n return larg === Infinity ? Infinity : larg * Math.sqrt(sum);\n }\n});\n","// 20.2.2.18 Math.imul(x, y)\nvar $export = require('./_export');\nvar $imul = Math.imul;\n\n// some WebKit versions fails with big numbers, some has wrong arity\n$export($export.S + $export.F * require('./_fails')(function () {\n return $imul(0xffffffff, 5) != -5 || $imul.length != 2;\n}), 'Math', {\n imul: function imul(x, y) {\n var UINT16 = 0xffff;\n var xn = +x;\n var yn = +y;\n var xl = UINT16 & xn;\n var yl = UINT16 & yn;\n return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);\n }\n});\n","// 20.2.2.21 Math.log10(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log10: function log10(x) {\n return Math.log(x) * Math.LOG10E;\n }\n});\n","// 20.2.2.20 Math.log1p(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { log1p: require('./_math-log1p') });\n","// 20.2.2.22 Math.log2(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log2: function log2(x) {\n return Math.log(x) / Math.LN2;\n }\n});\n","// 20.2.2.28 Math.sign(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { sign: require('./_math-sign') });\n","// 20.2.2.30 Math.sinh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n// V8 near Chromium 38 has a problem with very small numbers\n$export($export.S + $export.F * require('./_fails')(function () {\n return !Math.sinh(-2e-17) != -2e-17;\n}), 'Math', {\n sinh: function sinh(x) {\n return Math.abs(x = +x) < 1\n ? (expm1(x) - expm1(-x)) / 2\n : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);\n }\n});\n","// 20.2.2.33 Math.tanh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n tanh: function tanh(x) {\n var a = expm1(x = +x);\n var b = expm1(-x);\n return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));\n }\n});\n","// 20.2.2.34 Math.trunc(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n trunc: function trunc(it) {\n return (it > 0 ? Math.floor : Math.ceil)(it);\n }\n});\n","var $export = require('./_export');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar fromCharCode = String.fromCharCode;\nvar $fromCodePoint = String.fromCodePoint;\n\n// length should be 1, old FF problem\n$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {\n // 21.1.2.2 String.fromCodePoint(...codePoints)\n fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars\n var res = [];\n var aLen = arguments.length;\n var i = 0;\n var code;\n while (aLen > i) {\n code = +arguments[i++];\n if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');\n res.push(code < 0x10000\n ? fromCharCode(code)\n : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)\n );\n } return res.join('');\n }\n});\n","var $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\n\n$export($export.S, 'String', {\n // 21.1.2.4 String.raw(callSite, ...substitutions)\n raw: function raw(callSite) {\n var tpl = toIObject(callSite.raw);\n var len = toLength(tpl.length);\n var aLen = arguments.length;\n var res = [];\n var i = 0;\n while (len > i) {\n res.push(String(tpl[i++]));\n if (i < aLen) res.push(String(arguments[i]));\n } return res.join('');\n }\n});\n","'use strict';\n// 21.1.3.25 String.prototype.trim()\nrequire('./_string-trim')('trim', function ($trim) {\n return function trim() {\n return $trim(this, 3);\n };\n});\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","module.exports = {};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","'use strict';\nvar $export = require('./_export');\nvar $at = require('./_string-at')(false);\n$export($export.P, 'String', {\n // 21.1.3.3 String.prototype.codePointAt(pos)\n codePointAt: function codePointAt(pos) {\n return $at(this, pos);\n }\n});\n","// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar ENDS_WITH = 'endsWith';\nvar $endsWith = ''[ENDS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(ENDS_WITH), 'String', {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = context(this, searchString, ENDS_WITH);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = toLength(that.length);\n var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len);\n var search = String(searchString);\n return $endsWith\n ? $endsWith.call(that, search, end)\n : that.slice(end - search.length, end) === search;\n }\n});\n","// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = require('./_is-regexp');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n","// 7.2.8 IsRegExp(argument)\nvar isObject = require('./_is-object');\nvar cof = require('./_cof');\nvar MATCH = require('./_wks')('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n","var MATCH = require('./_wks')('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n","// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n'use strict';\nvar $export = require('./_export');\nvar context = require('./_string-context');\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var $export = require('./_export');\n\n$export($export.P, 'String', {\n // 21.1.3.13 String.prototype.repeat(count)\n repeat: require('./_string-repeat')\n});\n","// 21.1.3.18 String.prototype.startsWith(searchString [, position ])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar STARTS_WITH = 'startsWith';\nvar $startsWith = ''[STARTS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(STARTS_WITH), 'String', {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = context(this, searchString, STARTS_WITH);\n var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return $startsWith\n ? $startsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n","'use strict';\n// B.2.3.2 String.prototype.anchor(name)\nrequire('./_string-html')('anchor', function (createHTML) {\n return function anchor(name) {\n return createHTML(this, 'a', 'name', name);\n };\n});\n","var $export = require('./_export');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar quot = /\"/g;\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\nvar createHTML = function (string, tag, attribute, value) {\n var S = String(defined(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '"') + '\"';\n return p1 + '>' + S + '';\n};\nmodule.exports = function (NAME, exec) {\n var O = {};\n O[NAME] = exec(createHTML);\n $export($export.P + $export.F * fails(function () {\n var test = ''[NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n }), 'String', O);\n};\n","'use strict';\n// B.2.3.3 String.prototype.big()\nrequire('./_string-html')('big', function (createHTML) {\n return function big() {\n return createHTML(this, 'big', '', '');\n };\n});\n","'use strict';\n// B.2.3.4 String.prototype.blink()\nrequire('./_string-html')('blink', function (createHTML) {\n return function blink() {\n return createHTML(this, 'blink', '', '');\n };\n});\n","'use strict';\n// B.2.3.5 String.prototype.bold()\nrequire('./_string-html')('bold', function (createHTML) {\n return function bold() {\n return createHTML(this, 'b', '', '');\n };\n});\n","'use strict';\n// B.2.3.6 String.prototype.fixed()\nrequire('./_string-html')('fixed', function (createHTML) {\n return function fixed() {\n return createHTML(this, 'tt', '', '');\n };\n});\n","'use strict';\n// B.2.3.7 String.prototype.fontcolor(color)\nrequire('./_string-html')('fontcolor', function (createHTML) {\n return function fontcolor(color) {\n return createHTML(this, 'font', 'color', color);\n };\n});\n","'use strict';\n// B.2.3.8 String.prototype.fontsize(size)\nrequire('./_string-html')('fontsize', function (createHTML) {\n return function fontsize(size) {\n return createHTML(this, 'font', 'size', size);\n };\n});\n","'use strict';\n// B.2.3.9 String.prototype.italics()\nrequire('./_string-html')('italics', function (createHTML) {\n return function italics() {\n return createHTML(this, 'i', '', '');\n };\n});\n","'use strict';\n// B.2.3.10 String.prototype.link(url)\nrequire('./_string-html')('link', function (createHTML) {\n return function link(url) {\n return createHTML(this, 'a', 'href', url);\n };\n});\n","'use strict';\n// B.2.3.11 String.prototype.small()\nrequire('./_string-html')('small', function (createHTML) {\n return function small() {\n return createHTML(this, 'small', '', '');\n };\n});\n","'use strict';\n// B.2.3.12 String.prototype.strike()\nrequire('./_string-html')('strike', function (createHTML) {\n return function strike() {\n return createHTML(this, 'strike', '', '');\n };\n});\n","'use strict';\n// B.2.3.13 String.prototype.sub()\nrequire('./_string-html')('sub', function (createHTML) {\n return function sub() {\n return createHTML(this, 'sub', '', '');\n };\n});\n","'use strict';\n// B.2.3.14 String.prototype.sup()\nrequire('./_string-html')('sup', function (createHTML) {\n return function sup() {\n return createHTML(this, 'sup', '', '');\n };\n});\n","// 20.3.3.1 / 15.9.4.4 Date.now()\nvar $export = require('./_export');\n\n$export($export.S, 'Date', { now: function () { return new Date().getTime(); } });\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar toPrimitive = require('./_to-primitive');\n\n$export($export.P + $export.F * require('./_fails')(function () {\n return new Date(NaN).toJSON() !== null\n || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1;\n}), 'Date', {\n // eslint-disable-next-line no-unused-vars\n toJSON: function toJSON(key) {\n var O = toObject(this);\n var pv = toPrimitive(O);\n return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();\n }\n});\n","// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar $export = require('./_export');\nvar toISOString = require('./_date-to-iso-string');\n\n// PhantomJS / old WebKit has a broken implementations\n$export($export.P + $export.F * (Date.prototype.toISOString !== toISOString), 'Date', {\n toISOString: toISOString\n});\n","'use strict';\n// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar fails = require('./_fails');\nvar getTime = Date.prototype.getTime;\nvar $toISOString = Date.prototype.toISOString;\n\nvar lz = function (num) {\n return num > 9 ? num : '0' + num;\n};\n\n// PhantomJS / old WebKit has a broken implementations\nmodule.exports = (fails(function () {\n return $toISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z';\n}) || !fails(function () {\n $toISOString.call(new Date(NaN));\n})) ? function toISOString() {\n if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value');\n var d = this;\n var y = d.getUTCFullYear();\n var m = d.getUTCMilliseconds();\n var s = y < 0 ? '-' : y > 9999 ? '+' : '';\n return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) +\n '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) +\n 'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) +\n ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z';\n} : $toISOString;\n","var DateProto = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar $toString = DateProto[TO_STRING];\nvar getTime = DateProto.getTime;\nif (new Date(NaN) + '' != INVALID_DATE) {\n require('./_redefine')(DateProto, TO_STRING, function toString() {\n var value = getTime.call(this);\n // eslint-disable-next-line no-self-compare\n return value === value ? $toString.call(this) : INVALID_DATE;\n });\n}\n","var TO_PRIMITIVE = require('./_wks')('toPrimitive');\nvar proto = Date.prototype;\n\nif (!(TO_PRIMITIVE in proto)) require('./_hide')(proto, TO_PRIMITIVE, require('./_date-to-primitive'));\n","'use strict';\nvar anObject = require('./_an-object');\nvar toPrimitive = require('./_to-primitive');\nvar NUMBER = 'number';\n\nmodule.exports = function (hint) {\n if (hint !== 'string' && hint !== NUMBER && hint !== 'default') throw TypeError('Incorrect hint');\n return toPrimitive(anObject(this), hint != NUMBER);\n};\n","// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)\nvar $export = require('./_export');\n\n$export($export.S, 'Array', { isArray: require('./_is-array') });\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","'use strict';\nvar $export = require('./_export');\nvar createProperty = require('./_create-property');\n\n// WebKit Array.of isn't generic\n$export($export.S + $export.F * require('./_fails')(function () {\n function F() { /* empty */ }\n return !(Array.of.call(F) instanceof F);\n}), 'Array', {\n // 22.1.2.3 Array.of( ...items)\n of: function of(/* ...args */) {\n var index = 0;\n var aLen = arguments.length;\n var result = new (typeof this == 'function' ? this : Array)(aLen);\n while (aLen > index) createProperty(result, index, arguments[index++]);\n result.length = aLen;\n return result;\n }\n});\n","'use strict';\n// 22.1.3.13 Array.prototype.join(separator)\nvar $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar arrayJoin = [].join;\n\n// fallback for not array-like strings\n$export($export.P + $export.F * (require('./_iobject') != Object || !require('./_strict-method')(arrayJoin)), 'Array', {\n join: function join(separator) {\n return arrayJoin.call(toIObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call\n arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n });\n};\n","'use strict';\nvar $export = require('./_export');\nvar html = require('./_html');\nvar cof = require('./_cof');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nvar arraySlice = [].slice;\n\n// fallback for not array-like ES3 strings and DOM objects\n$export($export.P + $export.F * require('./_fails')(function () {\n if (html) arraySlice.call(html);\n}), 'Array', {\n slice: function slice(begin, end) {\n var len = toLength(this.length);\n var klass = cof(this);\n end = end === undefined ? len : end;\n if (klass == 'Array') return arraySlice.call(this, begin, end);\n var start = toAbsoluteIndex(begin, len);\n var upTo = toAbsoluteIndex(end, len);\n var size = toLength(upTo - start);\n var cloned = new Array(size);\n var i = 0;\n for (; i < size; i++) cloned[i] = klass == 'String'\n ? this.charAt(start + i)\n : this[start + i];\n return cloned;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar fails = require('./_fails');\nvar $sort = [].sort;\nvar test = [1, 2, 3];\n\n$export($export.P + $export.F * (fails(function () {\n // IE8-\n test.sort(undefined);\n}) || !fails(function () {\n // V8 bug\n test.sort(null);\n // Old WebKit\n}) || !require('./_strict-method')($sort)), 'Array', {\n // 22.1.3.25 Array.prototype.sort(comparefn)\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? $sort.call(toObject(this))\n : $sort.call(toObject(this), aFunction(comparefn));\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $forEach = require('./_array-methods')(0);\nvar STRICT = require('./_strict-method')([].forEach, true);\n\n$export($export.P + $export.F * !STRICT, 'Array', {\n // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])\n forEach: function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments[1]);\n }\n});\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","'use strict';\nvar $export = require('./_export');\nvar $map = require('./_array-methods')(1);\n\n$export($export.P + $export.F * !require('./_strict-method')([].map, true), 'Array', {\n // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $filter = require('./_array-methods')(2);\n\n$export($export.P + $export.F * !require('./_strict-method')([].filter, true), 'Array', {\n // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $some = require('./_array-methods')(3);\n\n$export($export.P + $export.F * !require('./_strict-method')([].some, true), 'Array', {\n // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $every = require('./_array-methods')(4);\n\n$export($export.P + $export.F * !require('./_strict-method')([].every, true), 'Array', {\n // 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg])\n every: function every(callbackfn /* , thisArg */) {\n return $every(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $reduce = require('./_array-reduce');\n\n$export($export.P + $export.F * !require('./_strict-method')([].reduce, true), 'Array', {\n // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue])\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments[1], false);\n }\n});\n","var aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar toLength = require('./_to-length');\n\nmodule.exports = function (that, callbackfn, aLen, memo, isRight) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IObject(O);\n var length = toLength(O.length);\n var index = isRight ? length - 1 : 0;\n var i = isRight ? -1 : 1;\n if (aLen < 2) for (;;) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (isRight ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;isRight ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n};\n","'use strict';\nvar $export = require('./_export');\nvar $reduce = require('./_array-reduce');\n\n$export($export.P + $export.F * !require('./_strict-method')([].reduceRight, true), 'Array', {\n // 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue])\n reduceRight: function reduceRight(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments[1], true);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $indexOf = require('./_array-includes')(false);\nvar $native = [].indexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? $native.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar $native = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].lastIndexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex])\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return $native.apply(this, arguments) || 0;\n var O = toIObject(this);\n var length = toLength(O.length);\n var index = length - 1;\n if (arguments.length > 1) index = Math.min(index, toInteger(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O) if (O[index] === searchElement) return index || 0;\n return -1;\n }\n});\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { copyWithin: require('./_array-copy-within') });\n\nrequire('./_add-to-unscopables')('copyWithin');\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\n\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n","// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { fill: require('./_array-fill') });\n\nrequire('./_add-to-unscopables')('fill');\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var aLen = arguments.length;\n var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);\n var end = aLen > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","'use strict';\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","require('./_set-species')('Array');\n","'use strict';\nvar global = require('./_global');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","var global = require('./_global');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar dP = require('./_object-dp').f;\nvar gOPN = require('./_object-gopn').f;\nvar isRegExp = require('./_is-regexp');\nvar $flags = require('./_flags');\nvar $RegExp = global.RegExp;\nvar Base = $RegExp;\nvar proto = $RegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n// \"new\" creates a new object, old webkit buggy here\nvar CORRECT_NEW = new $RegExp(re1) !== re1;\n\nif (require('./_descriptors') && (!CORRECT_NEW || require('./_fails')(function () {\n re2[require('./_wks')('match')] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';\n}))) {\n $RegExp = function RegExp(p, f) {\n var tiRE = this instanceof $RegExp;\n var piRE = isRegExp(p);\n var fiU = f === undefined;\n return !tiRE && piRE && p.constructor === $RegExp && fiU ? p\n : inheritIfRequired(CORRECT_NEW\n ? new Base(piRE && !fiU ? p.source : p, f)\n : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)\n , tiRE ? this : proto, $RegExp);\n };\n var proxy = function (key) {\n key in $RegExp || dP($RegExp, key, {\n configurable: true,\n get: function () { return Base[key]; },\n set: function (it) { Base[key] = it; }\n });\n };\n for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]);\n proto.constructor = $RegExp;\n $RegExp.prototype = proto;\n require('./_redefine')(global, 'RegExp', $RegExp);\n}\n\nrequire('./_set-species')('RegExp');\n","'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","'use strict';\nvar regexpExec = require('./_regexp-exec');\nrequire('./_export')({\n target: 'RegExp',\n proto: true,\n forced: regexpExec !== /./.exec\n}, {\n exec: regexpExec\n});\n","'use strict';\n\nvar regexpFlags = require('./_flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/,\n re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n match = nativeExec.call(re, str);\n\n if (UPDATES_LAST_INDEX_WRONG && match) {\n re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n // eslint-disable-next-line no-loop-func\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nrequire('./es6.regexp.flags');\nvar anObject = require('./_an-object');\nvar $flags = require('./_flags');\nvar DESCRIPTORS = require('./_descriptors');\nvar TO_STRING = 'toString';\nvar $toString = /./[TO_STRING];\n\nvar define = function (fn) {\n require('./_redefine')(RegExp.prototype, TO_STRING, fn, true);\n};\n\n// 21.2.5.14 RegExp.prototype.toString()\nif (require('./_fails')(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) {\n define(function toString() {\n var R = anObject(this);\n return '/'.concat(R.source, '/',\n 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);\n });\n// FF44- RegExp#toString has a wrong name\n} else if ($toString.name != TO_STRING) {\n define(function toString() {\n return $toString.call(this);\n });\n}\n","// 21.2.5.3 get RegExp.prototype.flags()\nif (require('./_descriptors') && /./g.flags != 'g') require('./_object-dp').f(RegExp.prototype, 'flags', {\n configurable: true,\n get: require('./_flags')\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[MATCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative($match, regexp, this);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n if (!rx.global) return regExpExec(rx, S);\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","'use strict';\nvar at = require('./_string-at')(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? at(S, index).length : 1);\n};\n","'use strict';\n\nvar classof = require('./_classof');\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw new TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n if (classof(R) !== 'RegExp') {\n throw new TypeError('RegExp#exec called on incompatible receiver');\n }\n return builtinExec.call(R, S);\n};\n","'use strict';\nrequire('./es6.regexp.exec');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\nvar regexpExec = require('./_regexp-exec');\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n re.exec = function () { execCalled = true; return null; };\n if (KEY === 'split') {\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n }\n re[SYMBOL]('');\n return !execCalled;\n }) : undefined;\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var fns = exec(\n defined,\n SYMBOL,\n ''[KEY],\n function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }\n );\n var strfn = fns[0];\n var rxfn = fns[1];\n\n redefine(String.prototype, KEY, strfn);\n hide(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return rxfn.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return rxfn.call(string, this); }\n );\n }\n};\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar toInteger = require('./_to-integer');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&`']|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&`']|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nrequire('./_fix-re-wks')('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = defined(this);\n var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n return fn !== undefined\n ? fn.call(searchValue, O, replaceValue)\n : $replace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n var res = maybeCallNative($replace, regexp, this, replaceValue);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n results.push(result);\n if (!global) break;\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return $replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar sameValue = require('./_same-value');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@search logic\nrequire('./_fix-re-wks')('search', 1, function (defined, SEARCH, $search, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[SEARCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search\n function (regexp) {\n var res = maybeCallNative($search, regexp, this);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","'use strict';\n\nvar isRegExp = require('./_is-regexp');\nvar anObject = require('./_an-object');\nvar speciesConstructor = require('./_species-constructor');\nvar advanceStringIndex = require('./_advance-string-index');\nvar toLength = require('./_to-length');\nvar callRegExpExec = require('./_regexp-exec-abstract');\nvar regexpExec = require('./_regexp-exec');\nvar fails = require('./_fails');\nvar $min = Math.min;\nvar $push = [].push;\nvar $SPLIT = 'split';\nvar LENGTH = 'length';\nvar LAST_INDEX = 'lastIndex';\nvar MAX_UINT32 = 0xffffffff;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nrequire('./_fix-re-wks')('split', 2, function (defined, SPLIT, $split, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||\n 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||\n 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||\n '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||\n '.'[$SPLIT](/()()/)[LENGTH] > 1 ||\n ''[$SPLIT](/.?/)[LENGTH]\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(this);\n if (separator === undefined && limit === 0) return [];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) return $split.call(string, separator, limit);\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy[LAST_INDEX];\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));\n lastLength = match[0][LENGTH];\n lastLastIndex = lastIndex;\n if (output[LENGTH] >= splitLimit) break;\n }\n if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop\n }\n if (lastLastIndex === string[LENGTH]) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;\n };\n // Chakra, V8\n } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit);\n };\n } else {\n internalSplit = $split;\n }\n\n return [\n // `String.prototype.split` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = defined(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n});\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","var redefine = require('./_redefine');\nmodule.exports = function (target, src, safe) {\n for (var key in src) redefine(target, key, src[key], safe);\n return target;\n};\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar redefineAll = require('./_redefine-all');\nvar meta = require('./_meta');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar $iterDetect = require('./_iter-detect');\nvar setToStringTag = require('./_set-to-string-tag');\nvar inheritIfRequired = require('./_inherit-if-required');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n var fixMethod = function (KEY) {\n var fn = proto[KEY];\n redefine(proto, KEY,\n KEY == 'delete' ? function (a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'has' ? function has(a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'get' ? function get(a) {\n return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n );\n };\n if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n var instance = new C();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new C();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n if (!ACCEPT_ITERABLES) {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME);\n var that = inheritIfRequired(new Base(), target, C);\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n return that;\n });\n C.prototype = proto;\n proto.constructor = C;\n }\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n // weak collections should not contains .clear method\n if (IS_WEAK && proto.clear) delete proto.clear;\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F * (C != Base), O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n","'use strict';\nvar global = require('./_global');\nvar each = require('./_array-methods')(0);\nvar redefine = require('./_redefine');\nvar meta = require('./_meta');\nvar assign = require('./_object-assign');\nvar weak = require('./_collection-weak');\nvar isObject = require('./_is-object');\nvar validate = require('./_validate-collection');\nvar NATIVE_WEAK_MAP = require('./_validate-collection');\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar InternalMap;\n\nvar wrapper = function (get) {\n return function WeakMap() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n};\n\nvar methods = {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n if (isObject(key)) {\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n return data ? data[this._i] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return weak.def(validate(this, WEAK_MAP), key, value);\n }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = require('./_collection')(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (NATIVE_WEAK_MAP && IS_IE11) {\n InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n assign(InternalMap.prototype, methods);\n meta.NEED = true;\n each(['delete', 'has', 'get', 'set'], function (key) {\n var proto = $WeakMap.prototype;\n var method = proto[key];\n redefine(proto, key, function (a, b) {\n // store frozen objects on internal weakmap shim\n if (isObject(a) && !isExtensible(a)) {\n if (!this._f) this._f = new InternalMap();\n var result = this._f[key](a, b);\n return key == 'set' ? this : result;\n // store all the rest on native weakmap\n } return method.call(this, a, b);\n });\n });\n}\n","'use strict';\nvar redefineAll = require('./_redefine-all');\nvar getWeak = require('./_meta').getWeak;\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar createArrayMethod = require('./_array-methods');\nvar $has = require('./_has');\nvar validate = require('./_validate-collection');\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n return arrayFind(store.a, function (it) {\n return it[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.a.push([key, value]);\n },\n 'delete': function (key) {\n var index = arrayFindIndex(this.a, function (it) {\n return it[0] === key;\n });\n if (~index) this.a.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = id++; // collection id\n that._l = undefined; // leak store for uncaught frozen objects\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n return data && $has(data, this._i) && delete data[this._i];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n return data && $has(data, this._i);\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var data = getWeak(anObject(key), true);\n if (data === true) uncaughtFrozenStore(that).set(key, value);\n else data[that._i] = value;\n return that;\n },\n ufstore: uncaughtFrozenStore\n};\n","'use strict';\nvar weak = require('./_collection-weak');\nvar validate = require('./_validate-collection');\nvar WEAK_SET = 'WeakSet';\n\n// 23.4 WeakSet Objects\nrequire('./_collection')(WEAK_SET, function (get) {\n return function WeakSet() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.4.3.1 WeakSet.prototype.add(value)\n add: function add(value) {\n return weak.def(validate(this, WEAK_SET), value, true);\n }\n}, weak, false, true);\n","'use strict';\nvar $export = require('./_export');\nvar $typed = require('./_typed');\nvar buffer = require('./_typed-buffer');\nvar anObject = require('./_an-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nvar isObject = require('./_is-object');\nvar ArrayBuffer = require('./_global').ArrayBuffer;\nvar speciesConstructor = require('./_species-constructor');\nvar $ArrayBuffer = buffer.ArrayBuffer;\nvar $DataView = buffer.DataView;\nvar $isView = $typed.ABV && ArrayBuffer.isView;\nvar $slice = $ArrayBuffer.prototype.slice;\nvar VIEW = $typed.VIEW;\nvar ARRAY_BUFFER = 'ArrayBuffer';\n\n$export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), { ArrayBuffer: $ArrayBuffer });\n\n$export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, {\n // 24.1.3.1 ArrayBuffer.isView(arg)\n isView: function isView(it) {\n return $isView && $isView(it) || isObject(it) && VIEW in it;\n }\n});\n\n$export($export.P + $export.U + $export.F * require('./_fails')(function () {\n return !new $ArrayBuffer(2).slice(1, undefined).byteLength;\n}), ARRAY_BUFFER, {\n // 24.1.4.3 ArrayBuffer.prototype.slice(start, end)\n slice: function slice(start, end) {\n if ($slice !== undefined && end === undefined) return $slice.call(anObject(this), start); // FF fix\n var len = anObject(this).byteLength;\n var first = toAbsoluteIndex(start, len);\n var fin = toAbsoluteIndex(end === undefined ? len : end, len);\n var result = new (speciesConstructor(this, $ArrayBuffer))(toLength(fin - first));\n var viewS = new $DataView(this);\n var viewT = new $DataView(result);\n var index = 0;\n while (first < fin) {\n viewT.setUint8(index++, viewS.getUint8(first++));\n } return result;\n }\n});\n\nrequire('./_set-species')(ARRAY_BUFFER);\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar uid = require('./_uid');\nvar TYPED = uid('typed_array');\nvar VIEW = uid('view');\nvar ABV = !!(global.ArrayBuffer && global.DataView);\nvar CONSTR = ABV;\nvar i = 0;\nvar l = 9;\nvar Typed;\n\nvar TypedArrayConstructors = (\n 'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'\n).split(',');\n\nwhile (i < l) {\n if (Typed = global[TypedArrayConstructors[i++]]) {\n hide(Typed.prototype, TYPED, true);\n hide(Typed.prototype, VIEW, true);\n } else CONSTR = false;\n}\n\nmodule.exports = {\n ABV: ABV,\n CONSTR: CONSTR,\n TYPED: TYPED,\n VIEW: VIEW\n};\n","'use strict';\nvar global = require('./_global');\nvar DESCRIPTORS = require('./_descriptors');\nvar LIBRARY = require('./_library');\nvar $typed = require('./_typed');\nvar hide = require('./_hide');\nvar redefineAll = require('./_redefine-all');\nvar fails = require('./_fails');\nvar anInstance = require('./_an-instance');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar toIndex = require('./_to-index');\nvar gOPN = require('./_object-gopn').f;\nvar dP = require('./_object-dp').f;\nvar arrayFill = require('./_array-fill');\nvar setToStringTag = require('./_set-to-string-tag');\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length!';\nvar WRONG_INDEX = 'Wrong index!';\nvar $ArrayBuffer = global[ARRAY_BUFFER];\nvar $DataView = global[DATA_VIEW];\nvar Math = global.Math;\nvar RangeError = global.RangeError;\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = global.Infinity;\nvar BaseBuffer = $ArrayBuffer;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\nvar BUFFER = 'buffer';\nvar BYTE_LENGTH = 'byteLength';\nvar BYTE_OFFSET = 'byteOffset';\nvar $BUFFER = DESCRIPTORS ? '_b' : BUFFER;\nvar $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH;\nvar $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nfunction packIEEE754(value, mLen, nBytes) {\n var buffer = new Array(nBytes);\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var i = 0;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n var e, m, c;\n value = abs(value);\n // eslint-disable-next-line no-self-compare\n if (value != value || value === Infinity) {\n // eslint-disable-next-line no-self-compare\n m = value != value ? 1 : 0;\n e = eMax;\n } else {\n e = floor(log(value) / LN2);\n if (value * (c = pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * pow(2, eBias - 1) * pow(2, mLen);\n e = 0;\n }\n }\n for (; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);\n e = e << mLen | m;\n eLen += mLen;\n for (; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);\n buffer[--i] |= s * 128;\n return buffer;\n}\nfunction unpackIEEE754(buffer, mLen, nBytes) {\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = eLen - 7;\n var i = nBytes - 1;\n var s = buffer[i--];\n var e = s & 127;\n var m;\n s >>= 7;\n for (; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : s ? -Infinity : Infinity;\n } else {\n m = m + pow(2, mLen);\n e = e - eBias;\n } return (s ? -1 : 1) * m * pow(2, e - mLen);\n}\n\nfunction unpackI32(bytes) {\n return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];\n}\nfunction packI8(it) {\n return [it & 0xff];\n}\nfunction packI16(it) {\n return [it & 0xff, it >> 8 & 0xff];\n}\nfunction packI32(it) {\n return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];\n}\nfunction packF64(it) {\n return packIEEE754(it, 52, 8);\n}\nfunction packF32(it) {\n return packIEEE754(it, 23, 4);\n}\n\nfunction addGetter(C, key, internal) {\n dP(C[PROTOTYPE], key, { get: function () { return this[internal]; } });\n}\n\nfunction get(view, bytes, index, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = store.slice(start, start + bytes);\n return isLittleEndian ? pack : pack.reverse();\n}\nfunction set(view, bytes, index, conversion, value, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = conversion(+value);\n for (var i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];\n}\n\nif (!$typed.ABV) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n this._b = arrayFill.call(new Array(byteLength), 0);\n this[$LENGTH] = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = buffer[$LENGTH];\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset!');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n this[$BUFFER] = buffer;\n this[$OFFSET] = offset;\n this[$LENGTH] = byteLength;\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, BYTE_LENGTH, '_l');\n addGetter($DataView, BUFFER, '_b');\n addGetter($DataView, BYTE_LENGTH, '_l');\n addGetter($DataView, BYTE_OFFSET, '_o');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1]));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packF32, value, arguments[2]);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packF64, value, arguments[2]);\n }\n });\n} else {\n if (!fails(function () {\n $ArrayBuffer(1);\n }) || !fails(function () {\n new $ArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new $ArrayBuffer(); // eslint-disable-line no-new\n new $ArrayBuffer(1.5); // eslint-disable-line no-new\n new $ArrayBuffer(NaN); // eslint-disable-line no-new\n return $ArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new BaseBuffer(toIndex(length));\n };\n var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];\n for (var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]);\n }\n if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer;\n }\n // iOS Safari 7.x bug\n var view = new $DataView(new $ArrayBuffer(2));\n var $setInt8 = $DataView[PROTOTYPE].setInt8;\n view.setInt8(0, 2147483648);\n view.setInt8(1, 2147483649);\n if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView[PROTOTYPE], {\n setInt8: function setInt8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, true);\n}\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\nhide($DataView[PROTOTYPE], $typed.VIEW, true);\nexports[ARRAY_BUFFER] = $ArrayBuffer;\nexports[DATA_VIEW] = $DataView;\n","// https://tc39.github.io/ecma262/#sec-toindex\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length!');\n return length;\n};\n","var $export = require('./_export');\n$export($export.G + $export.W + $export.F * !require('./_typed').ABV, {\n DataView: require('./_typed-buffer').DataView\n});\n","require('./_typed-array')('Int8', 1, function (init) {\n return function Int8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","'use strict';\nif (require('./_descriptors')) {\n var LIBRARY = require('./_library');\n var global = require('./_global');\n var fails = require('./_fails');\n var $export = require('./_export');\n var $typed = require('./_typed');\n var $buffer = require('./_typed-buffer');\n var ctx = require('./_ctx');\n var anInstance = require('./_an-instance');\n var propertyDesc = require('./_property-desc');\n var hide = require('./_hide');\n var redefineAll = require('./_redefine-all');\n var toInteger = require('./_to-integer');\n var toLength = require('./_to-length');\n var toIndex = require('./_to-index');\n var toAbsoluteIndex = require('./_to-absolute-index');\n var toPrimitive = require('./_to-primitive');\n var has = require('./_has');\n var classof = require('./_classof');\n var isObject = require('./_is-object');\n var toObject = require('./_to-object');\n var isArrayIter = require('./_is-array-iter');\n var create = require('./_object-create');\n var getPrototypeOf = require('./_object-gpo');\n var gOPN = require('./_object-gopn').f;\n var getIterFn = require('./core.get-iterator-method');\n var uid = require('./_uid');\n var wks = require('./_wks');\n var createArrayMethod = require('./_array-methods');\n var createArrayIncludes = require('./_array-includes');\n var speciesConstructor = require('./_species-constructor');\n var ArrayIterators = require('./es6.array.iterator');\n var Iterators = require('./_iterators');\n var $iterDetect = require('./_iter-detect');\n var setSpecies = require('./_set-species');\n var arrayFill = require('./_array-fill');\n var arrayCopyWithin = require('./_array-copy-within');\n var $DP = require('./_object-dp');\n var $GOPD = require('./_object-gopd');\n var dP = $DP.f;\n var gOPD = $GOPD.f;\n var RangeError = global.RangeError;\n var TypeError = global.TypeError;\n var Uint8Array = global.Uint8Array;\n var ARRAY_BUFFER = 'ArrayBuffer';\n var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER;\n var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\n var PROTOTYPE = 'prototype';\n var ArrayProto = Array[PROTOTYPE];\n var $ArrayBuffer = $buffer.ArrayBuffer;\n var $DataView = $buffer.DataView;\n var arrayForEach = createArrayMethod(0);\n var arrayFilter = createArrayMethod(2);\n var arraySome = createArrayMethod(3);\n var arrayEvery = createArrayMethod(4);\n var arrayFind = createArrayMethod(5);\n var arrayFindIndex = createArrayMethod(6);\n var arrayIncludes = createArrayIncludes(true);\n var arrayIndexOf = createArrayIncludes(false);\n var arrayValues = ArrayIterators.values;\n var arrayKeys = ArrayIterators.keys;\n var arrayEntries = ArrayIterators.entries;\n var arrayLastIndexOf = ArrayProto.lastIndexOf;\n var arrayReduce = ArrayProto.reduce;\n var arrayReduceRight = ArrayProto.reduceRight;\n var arrayJoin = ArrayProto.join;\n var arraySort = ArrayProto.sort;\n var arraySlice = ArrayProto.slice;\n var arrayToString = ArrayProto.toString;\n var arrayToLocaleString = ArrayProto.toLocaleString;\n var ITERATOR = wks('iterator');\n var TAG = wks('toStringTag');\n var TYPED_CONSTRUCTOR = uid('typed_constructor');\n var DEF_CONSTRUCTOR = uid('def_constructor');\n var ALL_CONSTRUCTORS = $typed.CONSTR;\n var TYPED_ARRAY = $typed.TYPED;\n var VIEW = $typed.VIEW;\n var WRONG_LENGTH = 'Wrong length!';\n\n var $map = createArrayMethod(1, function (O, length) {\n return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);\n });\n\n var LITTLE_ENDIAN = fails(function () {\n // eslint-disable-next-line no-undef\n return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;\n });\n\n var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () {\n new Uint8Array(1).set({});\n });\n\n var toOffset = function (it, BYTES) {\n var offset = toInteger(it);\n if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!');\n return offset;\n };\n\n var validate = function (it) {\n if (isObject(it) && TYPED_ARRAY in it) return it;\n throw TypeError(it + ' is not a typed array!');\n };\n\n var allocate = function (C, length) {\n if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) {\n throw TypeError('It is not a typed array constructor!');\n } return new C(length);\n };\n\n var speciesFromList = function (O, list) {\n return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);\n };\n\n var fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = allocate(C, length);\n while (length > index) result[index] = list[index++];\n return result;\n };\n\n var addGetter = function (it, key, internal) {\n dP(it, key, { get: function () { return this._d[internal]; } });\n };\n\n var $from = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iterFn = getIterFn(O);\n var i, length, values, result, step, iterator;\n if (iterFn != undefined && !isArrayIter(iterFn)) {\n for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) {\n values.push(step.value);\n } O = values;\n }\n if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2);\n for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n };\n\n var $of = function of(/* ...items */) {\n var index = 0;\n var length = arguments.length;\n var result = allocate(this, length);\n while (length > index) result[index] = arguments[index++];\n return result;\n };\n\n // iOS Safari 6.x fails here\n var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); });\n\n var $toLocaleString = function toLocaleString() {\n return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);\n };\n\n var proto = {\n copyWithin: function copyWithin(target, start /* , end */) {\n return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n },\n every: function every(callbackfn /* , thisArg */) {\n return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars\n return arrayFill.apply(validate(this), arguments);\n },\n filter: function filter(callbackfn /* , thisArg */) {\n return speciesFromList(this, arrayFilter(validate(this), callbackfn,\n arguments.length > 1 ? arguments[1] : undefined));\n },\n find: function find(predicate /* , thisArg */) {\n return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n findIndex: function findIndex(predicate /* , thisArg */) {\n return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n forEach: function forEach(callbackfn /* , thisArg */) {\n arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n indexOf: function indexOf(searchElement /* , fromIndex */) {\n return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n includes: function includes(searchElement /* , fromIndex */) {\n return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n join: function join(separator) { // eslint-disable-line no-unused-vars\n return arrayJoin.apply(validate(this), arguments);\n },\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars\n return arrayLastIndexOf.apply(validate(this), arguments);\n },\n map: function map(mapfn /* , thisArg */) {\n return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduce.apply(validate(this), arguments);\n },\n reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduceRight.apply(validate(this), arguments);\n },\n reverse: function reverse() {\n var that = this;\n var length = validate(that).length;\n var middle = Math.floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n },\n some: function some(callbackfn /* , thisArg */) {\n return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n sort: function sort(comparefn) {\n return arraySort.call(validate(this), comparefn);\n },\n subarray: function subarray(begin, end) {\n var O = validate(this);\n var length = O.length;\n var $begin = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(\n O.buffer,\n O.byteOffset + $begin * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin)\n );\n }\n };\n\n var $slice = function slice(start, end) {\n return speciesFromList(this, arraySlice.call(validate(this), start, end));\n };\n\n var $set = function set(arrayLike /* , offset */) {\n validate(this);\n var offset = toOffset(arguments[1], 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError(WRONG_LENGTH);\n while (index < len) this[offset + index] = src[index++];\n };\n\n var $iterators = {\n entries: function entries() {\n return arrayEntries.call(validate(this));\n },\n keys: function keys() {\n return arrayKeys.call(validate(this));\n },\n values: function values() {\n return arrayValues.call(validate(this));\n }\n };\n\n var isTAIndex = function (target, key) {\n return isObject(target)\n && target[TYPED_ARRAY]\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n };\n var $getDesc = function getOwnPropertyDescriptor(target, key) {\n return isTAIndex(target, key = toPrimitive(key, true))\n ? propertyDesc(2, target[key])\n : gOPD(target, key);\n };\n var $setDesc = function defineProperty(target, key, desc) {\n if (isTAIndex(target, key = toPrimitive(key, true))\n && isObject(desc)\n && has(desc, 'value')\n && !has(desc, 'get')\n && !has(desc, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !desc.configurable\n && (!has(desc, 'writable') || desc.writable)\n && (!has(desc, 'enumerable') || desc.enumerable)\n ) {\n target[key] = desc.value;\n return target;\n } return dP(target, key, desc);\n };\n\n if (!ALL_CONSTRUCTORS) {\n $GOPD.f = $getDesc;\n $DP.f = $setDesc;\n }\n\n $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {\n getOwnPropertyDescriptor: $getDesc,\n defineProperty: $setDesc\n });\n\n if (fails(function () { arrayToString.call({}); })) {\n arrayToString = arrayToLocaleString = function toString() {\n return arrayJoin.call(this);\n };\n }\n\n var $TypedArrayPrototype$ = redefineAll({}, proto);\n redefineAll($TypedArrayPrototype$, $iterators);\n hide($TypedArrayPrototype$, ITERATOR, $iterators.values);\n redefineAll($TypedArrayPrototype$, {\n slice: $slice,\n set: $set,\n constructor: function () { /* noop */ },\n toString: arrayToString,\n toLocaleString: $toLocaleString\n });\n addGetter($TypedArrayPrototype$, 'buffer', 'b');\n addGetter($TypedArrayPrototype$, 'byteOffset', 'o');\n addGetter($TypedArrayPrototype$, 'byteLength', 'l');\n addGetter($TypedArrayPrototype$, 'length', 'e');\n dP($TypedArrayPrototype$, TAG, {\n get: function () { return this[TYPED_ARRAY]; }\n });\n\n // eslint-disable-next-line max-statements\n module.exports = function (KEY, BYTES, wrapper, CLAMPED) {\n CLAMPED = !!CLAMPED;\n var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + KEY;\n var SETTER = 'set' + KEY;\n var TypedArray = global[NAME];\n var Base = TypedArray || {};\n var TAC = TypedArray && getPrototypeOf(TypedArray);\n var FORCED = !TypedArray || !$typed.ABV;\n var O = {};\n var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];\n var getter = function (that, index) {\n var data = that._d;\n return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);\n };\n var setter = function (that, index, value) {\n var data = that._d;\n if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;\n data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);\n };\n var addElement = function (that, index) {\n dP(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n if (FORCED) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME, '_d');\n var index = 0;\n var offset = 0;\n var buffer, byteLength, length, klass;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new $ArrayBuffer(byteLength);\n } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n buffer = data;\n offset = toOffset($offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - offset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (TYPED_ARRAY in data) {\n return fromList(TypedArray, data);\n } else {\n return $from.call(TypedArray, data);\n }\n hide(that, '_d', {\n b: buffer,\n o: offset,\n l: byteLength,\n e: length,\n v: new $DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);\n hide(TypedArrayPrototype, 'constructor', TypedArray);\n } else if (!fails(function () {\n TypedArray(1);\n }) || !fails(function () {\n new TypedArray(-1); // eslint-disable-line no-new\n }) || !$iterDetect(function (iter) {\n new TypedArray(); // eslint-disable-line no-new\n new TypedArray(null); // eslint-disable-line no-new\n new TypedArray(1.5); // eslint-disable-line no-new\n new TypedArray(iter); // eslint-disable-line no-new\n }, true)) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME);\n var klass;\n // `ws` module bug, temporarily remove validation length for Uint8Array\n // https://github.com/websockets/ws/pull/645\n if (!isObject(data)) return new Base(toIndex(data));\n if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n return $length !== undefined\n ? new Base(data, toOffset($offset, BYTES), $length)\n : $offset !== undefined\n ? new Base(data, toOffset($offset, BYTES))\n : new Base(data);\n }\n if (TYPED_ARRAY in data) return fromList(TypedArray, data);\n return $from.call(TypedArray, data);\n });\n arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) {\n if (!(key in TypedArray)) hide(TypedArray, key, Base[key]);\n });\n TypedArray[PROTOTYPE] = TypedArrayPrototype;\n if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray;\n }\n var $nativeIterator = TypedArrayPrototype[ITERATOR];\n var CORRECT_ITER_NAME = !!$nativeIterator\n && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined);\n var $iterator = $iterators.values;\n hide(TypedArray, TYPED_CONSTRUCTOR, true);\n hide(TypedArrayPrototype, TYPED_ARRAY, NAME);\n hide(TypedArrayPrototype, VIEW, true);\n hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);\n\n if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) {\n dP(TypedArrayPrototype, TAG, {\n get: function () { return NAME; }\n });\n }\n\n O[NAME] = TypedArray;\n\n $export($export.G + $export.W + $export.F * (TypedArray != Base), O);\n\n $export($export.S, NAME, {\n BYTES_PER_ELEMENT: BYTES\n });\n\n $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, {\n from: $from,\n of: $of\n });\n\n if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);\n\n $export($export.P, NAME, proto);\n\n setSpecies(NAME);\n\n $export($export.P + $export.F * FORCED_SET, NAME, { set: $set });\n\n $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);\n\n if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString;\n\n $export($export.P + $export.F * fails(function () {\n new TypedArray(1).slice();\n }), NAME, { slice: $slice });\n\n $export($export.P + $export.F * (fails(function () {\n return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString();\n }) || !fails(function () {\n TypedArrayPrototype.toLocaleString.call([1, 2]);\n })), NAME, { toLocaleString: $toLocaleString });\n\n Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;\n if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator);\n };\n} else module.exports = function () { /* empty */ };\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8ClampedArray(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n}, true);\n","require('./_typed-array')('Int16', 2, function (init) {\n return function Int16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint16', 2, function (init) {\n return function Uint16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Int32', 4, function (init) {\n return function Int32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint32', 4, function (init) {\n return function Uint32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Float32', 4, function (init) {\n return function Float32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Float64', 8, function (init) {\n return function Float64Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","// 26.1.1 Reflect.apply(target, thisArgument, argumentsList)\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar rApply = (require('./_global').Reflect || {}).apply;\nvar fApply = Function.apply;\n// MS Edge argumentsList argument is optional\n$export($export.S + $export.F * !require('./_fails')(function () {\n rApply(function () { /* empty */ });\n}), 'Reflect', {\n apply: function apply(target, thisArgument, argumentsList) {\n var T = aFunction(target);\n var L = anObject(argumentsList);\n return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L);\n }\n});\n","// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])\nvar $export = require('./_export');\nvar create = require('./_object-create');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar bind = require('./_bind');\nvar rConstruct = (require('./_global').Reflect || {}).construct;\n\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n rConstruct(function () { /* empty */ });\n});\n\n$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)\nvar dP = require('./_object-dp');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar toPrimitive = require('./_to-primitive');\n\n// MS Edge has broken Reflect.defineProperty - throwing instead of returning false\n$export($export.S + $export.F * require('./_fails')(function () {\n // eslint-disable-next-line no-undef\n Reflect.defineProperty(dP.f({}, 1, { value: 1 }), 1, { value: 2 });\n}), 'Reflect', {\n defineProperty: function defineProperty(target, propertyKey, attributes) {\n anObject(target);\n propertyKey = toPrimitive(propertyKey, true);\n anObject(attributes);\n try {\n dP.f(target, propertyKey, attributes);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.4 Reflect.deleteProperty(target, propertyKey)\nvar $export = require('./_export');\nvar gOPD = require('./_object-gopd').f;\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n deleteProperty: function deleteProperty(target, propertyKey) {\n var desc = gOPD(anObject(target), propertyKey);\n return desc && !desc.configurable ? false : delete target[propertyKey];\n }\n});\n","'use strict';\n// 26.1.5 Reflect.enumerate(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar Enumerate = function (iterated) {\n this._t = anObject(iterated); // target\n this._i = 0; // next index\n var keys = this._k = []; // keys\n var key;\n for (key in iterated) keys.push(key);\n};\nrequire('./_iter-create')(Enumerate, 'Object', function () {\n var that = this;\n var keys = that._k;\n var key;\n do {\n if (that._i >= keys.length) return { value: undefined, done: true };\n } while (!((key = keys[that._i++]) in that._t));\n return { value: key, done: false };\n});\n\n$export($export.S, 'Reflect', {\n enumerate: function enumerate(target) {\n return new Enumerate(target);\n }\n});\n","// 26.1.6 Reflect.get(target, propertyKey [, receiver])\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\n\nfunction get(target, propertyKey /* , receiver */) {\n var receiver = arguments.length < 3 ? target : arguments[2];\n var desc, proto;\n if (anObject(target) === receiver) return target[propertyKey];\n if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value')\n ? desc.value\n : desc.get !== undefined\n ? desc.get.call(receiver)\n : undefined;\n if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver);\n}\n\n$export($export.S, 'Reflect', { get: get });\n","// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)\nvar gOPD = require('./_object-gopd');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {\n return gOPD.f(anObject(target), propertyKey);\n }\n});\n","// 26.1.8 Reflect.getPrototypeOf(target)\nvar $export = require('./_export');\nvar getProto = require('./_object-gpo');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getPrototypeOf: function getPrototypeOf(target) {\n return getProto(anObject(target));\n }\n});\n","// 26.1.9 Reflect.has(target, propertyKey)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', {\n has: function has(target, propertyKey) {\n return propertyKey in target;\n }\n});\n","// 26.1.10 Reflect.isExtensible(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $isExtensible = Object.isExtensible;\n\n$export($export.S, 'Reflect', {\n isExtensible: function isExtensible(target) {\n anObject(target);\n return $isExtensible ? $isExtensible(target) : true;\n }\n});\n","// 26.1.11 Reflect.ownKeys(target)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', { ownKeys: require('./_own-keys') });\n","// all object keys, includes non-enumerable and symbols\nvar gOPN = require('./_object-gopn');\nvar gOPS = require('./_object-gops');\nvar anObject = require('./_an-object');\nvar Reflect = require('./_global').Reflect;\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n var keys = gOPN.f(anObject(it));\n var getSymbols = gOPS.f;\n return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n","// 26.1.12 Reflect.preventExtensions(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $preventExtensions = Object.preventExtensions;\n\n$export($export.S, 'Reflect', {\n preventExtensions: function preventExtensions(target) {\n anObject(target);\n try {\n if ($preventExtensions) $preventExtensions(target);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.13 Reflect.set(target, propertyKey, V [, receiver])\nvar dP = require('./_object-dp');\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar createDesc = require('./_property-desc');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\n\nfunction set(target, propertyKey, V /* , receiver */) {\n var receiver = arguments.length < 4 ? target : arguments[3];\n var ownDesc = gOPD.f(anObject(target), propertyKey);\n var existingDescriptor, proto;\n if (!ownDesc) {\n if (isObject(proto = getPrototypeOf(target))) {\n return set(proto, propertyKey, V, receiver);\n }\n ownDesc = createDesc(0);\n }\n if (has(ownDesc, 'value')) {\n if (ownDesc.writable === false || !isObject(receiver)) return false;\n if (existingDescriptor = gOPD.f(receiver, propertyKey)) {\n if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false;\n existingDescriptor.value = V;\n dP.f(receiver, propertyKey, existingDescriptor);\n } else dP.f(receiver, propertyKey, createDesc(0, V));\n return true;\n }\n return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);\n}\n\n$export($export.S, 'Reflect', { set: set });\n","// 26.1.14 Reflect.setPrototypeOf(target, proto)\nvar $export = require('./_export');\nvar setProto = require('./_set-proto');\n\nif (setProto) $export($export.S, 'Reflect', {\n setPrototypeOf: function setPrototypeOf(target, proto) {\n setProto.check(target, proto);\n try {\n setProto.set(target, proto);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","require('../../modules/es7.array.includes');\nmodule.exports = require('../../modules/_core').Array.includes;\n","'use strict';\n// https://github.com/tc39/Array.prototype.includes\nvar $export = require('./_export');\nvar $includes = require('./_array-includes')(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\nrequire('./_add-to-unscopables')('includes');\n","require('../../modules/es7.array.flat-map');\nmodule.exports = require('../../modules/_core').Array.flatMap;\n","'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatMap\nvar $export = require('./_export');\nvar flattenIntoArray = require('./_flatten-into-array');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar aFunction = require('./_a-function');\nvar arraySpeciesCreate = require('./_array-species-create');\n\n$export($export.P, 'Array', {\n flatMap: function flatMap(callbackfn /* , thisArg */) {\n var O = toObject(this);\n var sourceLen, A;\n aFunction(callbackfn);\n sourceLen = toLength(O.length);\n A = arraySpeciesCreate(O, 0);\n flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments[1]);\n return A;\n }\n});\n\nrequire('./_add-to-unscopables')('flatMap');\n","'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar isArray = require('./_is-array');\nvar isObject = require('./_is-object');\nvar toLength = require('./_to-length');\nvar ctx = require('./_ctx');\nvar IS_CONCAT_SPREADABLE = require('./_wks')('isConcatSpreadable');\n\nfunction flattenIntoArray(target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? ctx(mapper, thisArg, 3) : false;\n var element, spreadable;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n spreadable = false;\n if (isObject(element)) {\n spreadable = element[IS_CONCAT_SPREADABLE];\n spreadable = spreadable !== undefined ? !!spreadable : isArray(element);\n }\n\n if (spreadable && depth > 0) {\n targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;\n } else {\n if (targetIndex >= 0x1fffffffffffff) throw TypeError();\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n}\n\nmodule.exports = flattenIntoArray;\n","require('../../modules/es7.string.pad-start');\nmodule.exports = require('../../modules/_core').String.padStart;\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\nvar WEBKIT_BUG = /Version\\/10\\.\\d+(\\.\\d+)?( Mobile\\/\\w+)? Safari\\//.test(userAgent);\n\n$export($export.P + $export.F * WEBKIT_BUG, 'String', {\n padStart: function padStart(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);\n }\n});\n","// https://github.com/tc39/proposal-string-pad-start-end\nvar toLength = require('./_to-length');\nvar repeat = require('./_string-repeat');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, maxLength, fillString, left) {\n var S = String(defined(that));\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : String(fillString);\n var intMaxLength = toLength(maxLength);\n if (intMaxLength <= stringLength || fillStr == '') return S;\n var fillLen = intMaxLength - stringLength;\n var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);\n return left ? stringFiller + S : S + stringFiller;\n};\n","require('../../modules/es7.string.pad-end');\nmodule.exports = require('../../modules/_core').String.padEnd;\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\nvar WEBKIT_BUG = /Version\\/10\\.\\d+(\\.\\d+)?( Mobile\\/\\w+)? Safari\\//.test(userAgent);\n\n$export($export.P + $export.F * WEBKIT_BUG, 'String', {\n padEnd: function padEnd(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);\n }\n});\n","require('../../modules/es7.string.trim-left');\nmodule.exports = require('../../modules/_core').String.trimLeft;\n","'use strict';\n// https://github.com/sebmarkbage/ecmascript-string-left-right-trim\nrequire('./_string-trim')('trimLeft', function ($trim) {\n return function trimLeft() {\n return $trim(this, 1);\n };\n}, 'trimStart');\n","require('../../modules/es7.string.trim-right');\nmodule.exports = require('../../modules/_core').String.trimRight;\n","'use strict';\n// https://github.com/sebmarkbage/ecmascript-string-left-right-trim\nrequire('./_string-trim')('trimRight', function ($trim) {\n return function trimRight() {\n return $trim(this, 2);\n };\n}, 'trimEnd');\n","require('../../modules/es7.symbol.async-iterator');\nmodule.exports = require('../../modules/_wks-ext').f('asyncIterator');\n","require('./_wks-define')('asyncIterator');\n","require('../../modules/es7.object.get-own-property-descriptors');\nmodule.exports = require('../../modules/_core').Object.getOwnPropertyDescriptors;\n","// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = require('./_export');\nvar ownKeys = require('./_own-keys');\nvar toIObject = require('./_to-iobject');\nvar gOPD = require('./_object-gopd');\nvar createProperty = require('./_create-property');\n\n$export($export.S, 'Object', {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIObject(object);\n var getDesc = gOPD.f;\n var keys = ownKeys(O);\n var result = {};\n var i = 0;\n var key, desc;\n while (keys.length > i) {\n desc = getDesc(O, key = keys[i++]);\n if (desc !== undefined) createProperty(result, key, desc);\n }\n return result;\n }\n});\n","require('../../modules/es7.object.values');\nmodule.exports = require('../../modules/_core').Object.values;\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $values = require('./_object-to-array')(false);\n\n$export($export.S, 'Object', {\n values: function values(it) {\n return $values(it);\n }\n});\n","var DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || isEnum.call(O, key)) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n","require('../../modules/es7.object.entries');\nmodule.exports = require('../../modules/_core').Object.entries;\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n","'use strict';\nrequire('../../modules/es6.promise');\nrequire('../../modules/es7.promise.finally');\nmodule.exports = require('../../modules/_core').Promise['finally'];\n","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n","require('../modules/web.timers');\nrequire('../modules/web.immediate');\nrequire('../modules/web.dom.iterable');\nmodule.exports = require('../modules/_core');\n","// ie9- setTimeout & setInterval additional parameters fix\nvar global = require('./_global');\nvar $export = require('./_export');\nvar userAgent = require('./_user-agent');\nvar slice = [].slice;\nvar MSIE = /MSIE .\\./.test(userAgent); // <- dirty ie9- check\nvar wrap = function (set) {\n return function (fn, time /* , ...args */) {\n var boundArgs = arguments.length > 2;\n var args = boundArgs ? slice.call(arguments, 2) : false;\n return set(boundArgs ? function () {\n // eslint-disable-next-line no-new-func\n (typeof fn == 'function' ? fn : Function(fn)).apply(this, args);\n } : fn, time);\n };\n};\n$export($export.G + $export.B + $export.F * MSIE, {\n setTimeout: wrap(global.setTimeout),\n setInterval: wrap(global.setInterval)\n});\n","var $export = require('./_export');\nvar $task = require('./_task');\n$export($export.G + $export.B, {\n setImmediate: $task.set,\n clearImmediate: $task.clear\n});\n","var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; };\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n defineProperty(generator, \"_invoke\", { value: makeInvokeMethod(innerFn, self, context) });\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n defineProperty(Gp, \"constructor\", { value: GeneratorFunctionPrototype, configurable: true });\n defineProperty(\n GeneratorFunctionPrototype,\n \"constructor\",\n { value: GeneratorFunction, configurable: true }\n );\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n defineProperty(this, \"_invoke\", { value: enqueue });\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(val) {\n var object = Object(val);\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","require('../modules/es7.global');\nmodule.exports = require('../modules/_core').global;\n","// https://github.com/tc39/proposal-global\nvar $export = require('./_export');\n\n$export($export.G, { global: require('./_global') });\n","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","import { TWEEN } from './Tween.js';\r\nimport { HotspotManager } from './HotspotManager.js';\r\nimport { ThreejsExtension } from './threejsExtension.js';\r\nimport { OrbitControls } from './OrbitControls.js';\r\nimport 'url-search-params-polyfill';\r\n\r\n/*\r\n * CDS CAD Viewer JavaScript Library\r\n * cds-cad-viewer.js\r\n * Original Author: Tamas Szucs (Tamas 4D) - 2014-05-13 14:06:34\r\n *\r\n * Copyright (c) Catalog Data Solutions. All Rights Reserved.\r\n *\r\n * Version 2.0.0\r\n *\r\n * GLOBAL NAMES: THREE, THREEx, TWEEN, cancelAnimationFrame,\r\n * requestAnimationFrame\r\n *\r\n * Known Issues:\r\n * - turn bounding box on, load new model while bounding box is on, switch to\r\n * transparent... javascript errors\r\n * - currently using a modified version of Three.js r66, should move to a\r\n * non-modified version of latest (r71) and move modifications to CDS code\r\n */\r\n\r\nvar cds = window.cds || {};\r\n\r\n/**\r\n * Extension functions for three js\r\n */\r\n\r\n/**\r\n * Calculates the boundingBox of the model\r\n */\r\nTHREE.Object3D.prototype.getBoundingBox = function () {\r\n return new THREE.Box3().setFromObject(this)\r\n}\r\n\r\nTHREE.Box3.prototype.getLength = function () {\r\n var v1 = this.max;\r\n var v2 = this.min;\r\n var dx = v1.x - v2.x;\r\n var dy = v1.y - v2.y;\r\n var dz = v1.z - v2.z;\r\n\r\n var len = Math.sqrt(dx * dx + dy * dy + dz * dz);\r\n\r\n return len;\r\n}\r\n\r\ncds.cadViewer = {\r\n forceStudioProperties: false,\r\n // Constants\r\n MODE_SHADED: 0,\r\n MODE_WIREFRAME: 1,\r\n MODE_TRANSPARENT: 2,\r\n\r\n VIEW_ISOMETRIC: 0,\r\n VIEW_TOP: 1,\r\n VIEW_LEFT: 2,\r\n VIEW_BOTTOM: 3,\r\n VIEW_RIGHT: 4,\r\n\r\n ZOOM_MULTIPLIER: 5.0,\r\n AMBIENT_COLOR: 0x303030,\r\n SPOTLIGHT_COLOR: 0xFFFFFF,\r\n SPOTLIGHT_INTENSITY: 0.5,\r\n LOADING_ICON_URL: \"https://dpk3n3gg92jwt.cloudfront.net/cadviewer/images/loading_gears.gif\",\r\n\r\n //Another canvas for coordinate axes\r\n CANVAS_WIDTH: 200,\r\n CANVAS_HEIGHT: 200,\r\n CAM_DISTANCE: 50,\r\n facing: null,\r\n\r\n ENVIRONMENT_MAP_URLS: [\r\n \"https://dpk3n3gg92jwt.cloudfront.net/cadviewer/images/0004.png\",\r\n \"https://dpk3n3gg92jwt.cloudfront.net/cadviewer/images/0002.png\",\r\n \"https://dpk3n3gg92jwt.cloudfront.net/cadviewer/images/0006.png\",\r\n \"https://dpk3n3gg92jwt.cloudfront.net/cadviewer/images/0005.png\",\r\n \"https://dpk3n3gg92jwt.cloudfront.net/cadviewer/images/0001.png\",\r\n \"https://dpk3n3gg92jwt.cloudfront.net/cadviewer/images/0003.png\"\r\n ],\r\n ENVIRONMENT_MAP_LINK : \"https://www.product-config.net/cadviewer/images/envMap/\",\r\n targetList: [],\r\n parentElement: null,\r\n container: null,\r\n viewerHeight: 0,\r\n viewerWidth: 0,\r\n spotLight: null,\r\n ambientLight: null,\r\n camera: null,\r\n camera2: null,\r\n scene: null,\r\n scene2: null,\r\n overlayScene: null,\r\n renderer: null,\r\n renderer2: null,\r\n composer: null,\r\n controls: null,\r\n sceneObject: null,\r\n dimension: null, // Add new dimensions in this node (like - Linear, Diameter, Radius, etc)\r\n sceneBoundingBox: null,\r\n cameraPosX: 0,\r\n cameraPosY: 0,\r\n cameraPosZ: 0,\r\n cameraRotX: 0,\r\n cameraRotY: 0,\r\n cameraRotZ: 0,\r\n loadingIcon: null,\r\n isLoading: false,\r\n currentFileName: null,\r\n showBoundingBox: false,\r\n sceneBoundingBoxIndicator: null,\r\n INTERSECTED: null,\r\n raycaster: null,\r\n mouse: null,\r\n\r\n showSpinCenters: false,\r\n spinCenters: null,\r\n edgesHelpers: [],\r\n edgeOccluder: null,\r\n edgeEffect: null,\r\n originalSceneObjectMatertials: [],\r\n projector: null,\r\n isMouseDown: false,\r\n isRotated: false,\r\n translationSum: 0,\r\n textureCube: null,\r\n previousPartAdded: null,\r\n bbs: [], // debug purposed\r\n clock: null,\r\n frameId: null,\r\n isMobile: false, // probably working\r\n prevViewerWidth: 0,\r\n prevViewerHeight: 0,\r\n isRenderingAllowed: true,\r\n cacheWebGLAvailability: null,\r\n cnt: 1,\r\n hlColor: null,\r\n useCustomToolTipText: false,\r\n mouseSubscribed: false,\r\n openAssemblyInNewTab: false,\r\n annotationSubscribed: null,\r\n explosionSubscribed: null,\r\n firstWireframe: 1,\r\n isMouseUp: false,\r\n originalVectors: undefined,\r\n explodedVectors: undefined,\r\n explodeEffect: null,\r\n raycaster: new THREE.Raycaster(),\r\n mouse: new THREE.Vector2(),\r\n INTERSECTED: undefined,\r\n intersectedPart: undefined,\r\n annoTemp: new THREE.Object3D(),\r\n texturemap: \"/texture/bricks.jpg\",\r\n pivot: null,\r\n rotateSpeed: null,\r\n tempcolor: null,\r\n rendertemp: 1,\r\n explode: false,\r\n tooltip_span: null,\r\n subAssemblyLoaded: false,\r\n viewerVersion: \"206.3\",\r\n environment: {\r\n type: 'Relfection',\r\n map: 'cloud'\r\n },\r\n skyBox: \"cloud\",\r\n ENVIRONMENT_MAP: {\r\n CLOUD: \"cloud\",\r\n CASTLE: \"castle\",\r\n BRIDGE: \"bridge\",\r\n CLOUDYDAY: \"cloudyday\",\r\n DESERTHIGHWAY: \"deserthighway\",\r\n AUTOSHOP: \"autoshop\",\r\n STUDIO6: \"studio6\",\r\n STUDIO2: \"studio2\",\r\n ROOM: \"room\",\r\n ROCKY: \"rocky\",\r\n FIELD: \"field\",\r\n CITY: \"city\"\r\n },\r\n ENVIRONMENT_TYPE: {\r\n REFLECTION: \"Reflection\",\r\n REFRACTION: \"Refraction\",\r\n },\r\n distanceFromBoundingBox:null,\r\n environmentMapEnabled: false,\r\n threeExtension: new ThreejsExtension(),//Converts normal geometry to buffer geometry\r\n reflectiveMaterials: [],\r\n cadFilePath: null,\r\n isAssembly: false,\r\n showPercentLoader: false,\r\n urlToSceneObjectMap: [],\r\n studio: null,\r\n partNameToObject3d: [],\r\n instancingEnabled: false,\r\n partFileSize: undefined,\r\n studioMaterials: [],\r\n studioEnvironmentMaps: [],\r\n zoomPercentage: 0,\r\n replacedAssemblyToPartName: [],\r\n recursiveExplosion: false,\r\n isloadReplacementObjectsEnabled: false,\r\n enableOrbitControl: false,\r\n enableModelSpin: false,\r\n ModelSpinValue: {},\r\n hotspotImgDisplayType: \"\",\r\n hotspotPin: null,\r\n dimensionDivElements: [],\r\n isDimensionsData: false,\r\n boolIE : false || !!document.documentMode,//Turns var to true if browser is IE\r\n\r\n /*\r\n * Initialize the CAD model viewer\r\n */\r\n init: function (parentElementId) {\r\n \"use strict\";\r\n\t\t//Added MODE_SHADED here to fix the webpack error in cadViewer object above\r\n cds.cadViewer.MODE_SHADED = 0;\r\n cds.cadViewer.currentRenderMode = cds.cadViewer.MODE_SHADED;\r\n \r\n if (!this.isWebGLAvailable()) {\r\n console.log(\"Error in CDS CAD viewer: webGL not available\");\r\n return;\r\n }\r\n //Replace existing shader in order to support decal textures\r\n THREE.ShaderChunk.map_fragment = THREE.ShaderChunk.map_fragment.replace(\"diffuseColor *= texelColor;\", \"diffuseColor = vec4( mix( diffuse, texelColor.rgb, texelColor.a ), opacity );\");\r\n\r\n this.parentElement = document.getElementById(parentElementId);\r\n if (!this.parentElement) {\r\n console.log(\"Could not initialize CDS CAD viewer: invalid container element id \" + parentElementId);\r\n return;\r\n }\r\n this.mouse = new THREE.Vector2();\r\n\r\n this.container = document.createElement(\"div\");\r\n this.container.setAttribute(\"class\", \"cds-cad-viewer-container\");\r\n this.parentElement.appendChild(this.container);\r\n\r\n //// loading indicator icon\r\n if (!cds.cadViewer.showPercentLoader) {\r\n this.loadingIcon = document.createElement(\"div\");\r\n this.loadingIcon.setAttribute(\"class\", \"cds-cad-viewer-loading-icon\");\r\n this.container.appendChild(this.loadingIcon);\r\n var img = document.createElement(\"img\");\r\n img.setAttribute(\"src\", this.LOADING_ICON_URL);\r\n img.setAttribute(\"class\", \"cds-cad-viewer-loading-icon-image\");\r\n this.loadingIcon.appendChild(img);\r\n }\r\n\r\n this.renderer = new THREE.WebGLRenderer({\r\n antialias: true, // not much difference if enabled\r\n preserveDrawingBuffer: true, // to allow screenshot\r\n clearColor: 0xFFFFFF,\r\n clearAlpha: 1,\r\n alpha: true,\r\n stencil: false,\r\n logarithmicDepthBuffer: true //added and turned to true to remove the flicker issue\r\n });\r\n this.renderer.autoClear = false;\r\n\r\n var self = this;\r\n\r\n this.renderer.domElement.addEventListener(\"webglcontextlost\", function (e) {\r\n // context is lost\r\n console.log(\"Error in CDS CAD viewer: context is lost, cancelling animation frame \" + self.frameId);\r\n e.preventDefault();\r\n cancelAnimationFrame(self.frameId);\r\n window.location.reload();\r\n }, false);\r\n\r\n this.renderer.domElement.addEventListener(\"webglcontextrestored\", function (e) {\r\n // context is restored\r\n console.log(\"Warning in CDS CAD viewer: context is restored \" + e);\r\n e.preventDefault();\r\n }, false);\r\n\r\n THREEx.FullScreen.init(this.renderer.domElement);\r\n this.getViewerSize();\r\n this.renderer.setSize(this.viewerWidth, this.viewerHeight);\r\n this.renderer.setClearColor(0x000000, 0);\r\n this.container.appendChild(this.renderer.domElement);\r\n this.renderer.domElement.setAttribute(\"id\", \"cds-cad-viewer-renderer\");\r\n // -7Nov\r\n this.renderer.gammaInput = true;\r\n this.renderer.gammaOutput = true;\r\n this.scene = new THREE.Scene();\r\n this.overlayScene = new THREE.Scene();\r\n\r\n this.camera = new THREE.PerspectiveCamera(45, this.viewerWidth / this.viewerHeight, 0.0001, 200000);\r\n //this.camera = new THREE.OrthographicCamera(this.viewerWidth / -2, this.viewerWidth / 2, this.viewerHeight / 2, this.viewerHeight / -2, 0.1, 200000);\r\n this.camera.position.z = 60;\r\n this.camera.position.y = 60;\r\n this.camera.position.x = 60;\r\n this.scene.add(this.camera);\r\n\r\n this.mouse.x = 0;\r\n this.mouse.y = 0;\r\n\r\n this.ambientLight = new THREE.AmbientLight(this.AMBIENT_COLOR);\r\n this.scene.add(this.ambientLight);\r\n\r\n this.spotLight = new THREE.SpotLight(this.SPOTLIGHT_COLOR, this.SPOTLIGHT_INTENSITY);\r\n this.scene.add(this.spotLight);\r\n this.camera.add(this.spotLight);\r\n this.spotLight.position.set(190, 190, 165);\r\n this.spotLight.target.position.set(0, 0, -1);\r\n\r\n this.controls = new THREE.TrackballControls(this.camera, this.renderer.domElement);\r\n\r\n if (this.enableOrbitControl === true && THREE.hasOwnProperty('OrbitControls')) {\r\n this.controls = new OrbitControls(this.camera, this.renderer.domElement);\r\n }\r\n\r\n this.controls.target.set(0, 0, 0);\r\n this.clock = new THREE.Clock();\r\n this.composer = new THREE.EffectComposer(this.renderer);\r\n this.composer.addPass(new THREE.RenderPass(this.scene, this.camera));\r\n\r\n this.edgeEffect = new THREE.ShaderPass(THREE.EdgeShader);\r\n this.edgeEffect.uniforms.aspect.value.x = this.viewerWidth;\r\n this.edgeEffect.uniforms.aspect.value.y = this.viewerHeight;\r\n this.edgeEffect.renderToScreen = true;\r\n this.edgeEffect.enabled = false;\r\n this.composer.addPass(this.edgeEffect);\r\n\r\n this.renderer2 = new THREE.WebGLRenderer({\r\n antialias: true, // not much difference if enabled\r\n // clearColor: 0xFFFFFF,\r\n // clearAlpha: 1,\r\n alpha: true,\r\n });\r\n\r\n this.renderer2.autoClear = false;\r\n THREEx.FullScreen.init(this.renderer2.domElement);\r\n this.getViewerSize();\r\n\r\n this.renderer2.setSize(this.viewerWidth / 10, this.viewerHeight / 10);\r\n this.renderer2.setClearColor(0x000000, 0);\r\n this.renderer2.setPixelRatio(window.devicePixelRatio)\r\n this.container.appendChild(this.renderer2.domElement);\r\n this.renderer2.domElement.setAttribute(\"id\", \"inset\");\r\n\r\n // scene\r\n this.scene2 = new THREE.Scene();\r\n\r\n // camera\r\n this.camera2 = new THREE.PerspectiveCamera(50, this.viewerWidth / this.viewerHeight, 1, 1000);\r\n this.camera2.up = this.camera.up; // important!\r\n\r\n this.scene2.add(this.camera2);\r\n // axes\r\n var axes = new THREE.AxesHelper(25);\r\n this.scene2.add(axes);\r\n\r\n if (this.renderer && this.renderer.context) {\r\n this.renderer.context.getProgramInfoLog = function () { return \"\"; };\r\n }\r\n\r\n this.projector = new THREE.Projector();\r\n\r\n this.animate();\r\n\r\n this.isMobile = \"onorientationchange\" in window;\r\n window.addEventListener(\"resize\", this.onWindowResize, false);\r\n if (this.isMobile) {\r\n window.addEventListener(\"orientationchange\", function () {\r\n setTimeout(self.onWindowResize, 100);\r\n });\r\n }\r\n document.addEventListener(\"mousemove\", this.onMouseMove, false);\r\n this.renderer.domElement.addEventListener(\"mousedown\", this.onMouseDown, false);\r\n this.renderer.domElement.addEventListener(\"mouseup\", this.onMouseUp, false);\r\n // this.renderer.domElement.addEventListener(\"click\", this.onMouseClick, false);\r\n this.renderer.domElement.addEventListener('dblclick', cds.cadViewer.onMouseDoubleClick, false);\r\n\r\n cds.cadViewer.setHotspotPin(\"https://protodev.product-config.net/temp/prince/swapnilImages/pin-blue.png\");\r\n //Code Added by Prashant\r\n var isMobile = /iPhone|Android/i.test(navigator.userAgent);\r\n if (isMobile) {\r\n if (window.matchMedia(\"(orientation: portrait)\").matches) { //Check Device is in Portrait or landscape mode\r\n //var i = document.getElementById(\"icon-container\");\r\n //i.style.height = \"50px\";\r\n var i = document.getElementById(\"sprite-icon\");\r\n if(i != null) {\r\n i.style.height = \"80px\";\r\n i.style.marginLeft = \"5px\"\r\n }\r\n i = document.getElementById(\"annot-icon\");\r\n if(i != null) {\r\n i.style.height = \"80px\";\r\n i.style.marginLeft = \"5px\"\r\n }\r\n i = document.getElementById(\"anim-icon\");\r\n if(i != null) {\r\n i.style.height = \"80px\";\r\n i.style.marginLeft = \"5px\"\r\n }\r\n i = document.getElementById(\"grid-icon\");\r\n if(i != null) {\r\n i.style.height = \"80px\";\r\n i.style.marginLeft = \"5px\"\r\n }\r\n i = document.getElementById(\"shadow-icon\");\r\n if(i != null) {\r\n i.style.height = \"80px\";\r\n i.style.marginLeft = \"5px\"\r\n }\r\n i = document.getElementById(\"group2\");\r\n if(i != null) {\r\n i.style.height = \"80px\";\r\n i.style.marginLeft = \"5px\";\r\n i.style.marginRight = \"-310px\";\r\n }\r\n i = document.getElementById(\"solid-icon\");\r\n if(i != null) {\r\n i.style.height = \"80px\";\r\n i.style.marginLeft = \"5px\"\r\n }\r\n i = document.getElementById(\"transparent-icon\");\r\n if(i != null) {\r\n i.style.height = \"80px\";\r\n i.style.marginLeft = \"5px\"\r\n }\r\n i = document.getElementById(\"top-icon\");\r\n if(i != null) {\r\n i.style.height = \"80px\";\r\n i.style.marginLeft = \"5px\";\r\n i.style.visibility = \"hidden\";\r\n\r\n }\r\n i = document.getElementById(\"left-icon\");\r\n if(i != null) {\r\n i.style.height = \"80px\";\r\n i.style.marginLeft = \"5px\";\r\n i.style.visibility = \"hidden\";\r\n }\r\n i = document.getElementById(\"bottom-icon\");\r\n if(i != null) {\r\n i.style.height = \"80px\";\r\n i.style.marginLeft = \"5px\";\r\n i.style.visibility = \"hidden\";\r\n }\r\n i = document.getElementById(\"right-icon\");\r\n if(i != null) {\r\n i.style.height = \"80px\";\r\n i.style.marginLeft = \"5px\";\r\n i.style.visibility = \"hidden\";\r\n }\r\n }\r\n else{\r\n var i = document.getElementById(\"sprite-icon\");\r\n if(i != null) {\r\n i.style.height = \"40px\";\r\n i.style.marginLeft = \"5px\"\r\n }\r\n i = document.getElementById(\"annot-icon\");\r\n if(i != null) {\r\n i.style.height = \"40px\";\r\n i.style.marginLeft = \"5px\"\r\n }\r\n i = document.getElementById(\"anim-icon\");\r\n if(i != null) {\r\n i.style.height = \"40px\";\r\n i.style.marginLeft = \"5px\"\r\n }\r\n i = document.getElementById(\"grid-icon\");\r\n if(i != null) {\r\n i.style.height = \"40px\";\r\n i.style.marginLeft = \"5px\"\r\n }\r\n i = document.getElementById(\"shadow-icon\");\r\n if(i != null) {\r\n i.style.height = \"40px\";\r\n i.style.marginLeft = \"5px\"\r\n }\r\n i = document.getElementById(\"group2\");\r\n if(i != null) {\r\n i.style.height = \"40px\";\r\n i.style.marginLeft = \"5px\";\r\n i.style.marginRight = \"-175px\";\r\n }\r\n i = document.getElementById(\"solid-icon\");\r\n if(i != null) {\r\n i.style.height = \"40px\";\r\n i.style.marginLeft = \"5px\"\r\n }\r\n i = document.getElementById(\"transparent-icon\");\r\n if(i != null) {\r\n i.style.height = \"40px\";\r\n i.style.marginLeft = \"5px\"\r\n }\r\n i = document.getElementById(\"top-icon\");\r\n if(i != null) {\r\n i.style.height = \"40px\";\r\n i.style.marginLeft = \"5px\";\r\n i.style.visibility = \"hidden\";\r\n }\r\n i = document.getElementById(\"left-icon\");\r\n if(i != null) {\r\n i.style.height = \"40px\";\r\n i.style.marginLeft = \"5px\";\r\n i.style.visibility = \"hidden\";\r\n }\r\n i = document.getElementById(\"bottom-icon\");\r\n if(i != null) {\r\n i.style.height = \"40px\";\r\n i.style.marginLeft = \"5px\";\r\n i.style.visibility = \"hidden\";\r\n }\r\n i = document.getElementById(\"right-icon\");\r\n if(i != null) {\r\n i.style.height = \"40px\";\r\n i.style.marginLeft = \"5px\";\r\n i.style.visibility = \"hidden\";\r\n }\r\n } \r\n \r\n }\r\n\r\n },\r\n\r\n /**\r\n * Traverses the whole model and gives callback for mesh and traversal completion\r\n * @param sceneObject : Object of which childrens are to be traversed\r\n * @param onObjectFound : Called for every object node within the object\r\n * @param onComplete : Called when the model traversal is completed\r\n */\r\n traverse: function (sceneObject, onObjectFound, onComplete) {\r\n var childCount = sceneObject.children.length;\r\n for (var i = 0; i < sceneObject.children.length; i++) {\r\n if (sceneObject.children[i].children[0] != undefined) {\r\n if (sceneObject.children[i].children[0].type == 'Group') {\r\n onObjectFound(sceneObject.children[i])\r\n cds.cadViewer.traverse(sceneObject.children[i], onObjectFound, function () {\r\n if (--childCount == 0) { onComplete() }\r\n })\r\n } else if (sceneObject.children[i].children[0].type == 'Object3D') {\r\n onObjectFound(sceneObject.children[i])\r\n cds.cadViewer.traverse(sceneObject.children[i], onObjectFound, function () {\r\n if (--childCount == 0) { onComplete() }\r\n })\r\n } else {\r\n onObjectFound(sceneObject.children[i])\r\n onObjectFound(sceneObject.children[i].children[0])\r\n if (--childCount == 0) { onComplete() }\r\n }\r\n } else {\r\n onObjectFound(sceneObject.children[i])\r\n if (--childCount == 0) { onComplete() }\r\n }\r\n\r\n }\r\n },\r\n\r\n /**\r\n * Sets hotspot pin url\r\n */\r\n setHotspotPin: function(pin){\r\n if(pin) cds.cadViewer.hotspotPin = pin; \r\n },\r\n\r\n /**\r\n * \r\n * @param {Message to be displayed at the left bottom of the screen} msg \r\n */\r\n displayAnimationMessage(msg) {\r\n let msgDiv = document.getElementsByClassName(\"animation-message\")[0];\r\n if (msgDiv) {\r\n msgDiv.parentNode.removeChild(msgDiv);\r\n clearInterval(this.animationMsgVar);\r\n }\r\n let div = document.createElement(\"div\");\r\n div.className = \"animation-message\";\r\n let p = document.createElement(\"p\");\r\n p.innerText = msg;\r\n p.style.margin = \"10px\";\r\n div.style.position = \"fixed;\";\r\n div.style.left = \"10px\";\r\n div.style.height = \"50px\";\r\n div.style.bottom = \"10px\";\r\n div.style.fontSize = \"25px\";\r\n div.style.zIndex = \"10\";\r\n div.style.backgroundColor = \"rgba(0, 0, 0, 0.2);\";\r\n div.style.borderRadius = \"2px;\";\r\n div.style.color = \"color: rgb(9 8 8);\";\r\n div.appendChild(p);\r\n document.body.appendChild(div);\r\n\r\n this.animationMsgVar = setTimeout(function () {\r\n let msgDiv = document.getElementsByClassName(\"animation-message\")[0];\r\n if (msgDiv) msgDiv.parentNode.removeChild(msgDiv);\r\n }, 3000);\r\n },\r\n\r\n /**\r\n * Gets the query parameter [Assembly id] if present in the URL\r\n * @returns assemblyId\r\n */\r\n getAssemblyId: function () {\r\n var asmUrl = /[\\\\&&]asm=([^&#]*)/.exec(window.location.search);\r\n if (asmUrl == null) {\r\n return undefined;\r\n } else {\r\n return asmUrl[1];\r\n }\r\n },\r\n\r\n showProgressBar: function (isAssembly) {\r\n cds.cadViewer.showPercentLoader = true;\r\n document.getElementById(\"circularProgress\").style.display = 'inline'\r\n cds.cadViewer.isAssembly = isAssembly\r\n },\r\n\r\n toggleInstancing: function () {\r\n cds.cadViewer.instancingEnabled = !cds.cadViewer.instancingEnabled;\r\n },\r\n\r\n setPartFileSize: function (partFileSize) {\r\n cds.cadViewer.partFileSize = partFileSize;\r\n },\r\n\r\n /*\r\n * Loads CAD model into viewer\r\n */\r\n loadScene: function (path) {\r\n var assemblyId = cds.cadViewer.getAssemblyId();\r\n if (assemblyId != undefined) {\r\n cds.cadViewer.subAssemblyLoaded = true;\r\n }\r\n\r\n \"use strict\";\r\n if (!path) {\r\n console.log(\"Could not initialize CDS CAD viewer: no CAD model to loadScene\");\r\n return;\r\n } else {\r\n cds.cadViewer.cadFilePath = path\r\n }\r\n\r\n // fix protocol\r\n if (path.indexOf(\"//\") === 0) {\r\n path = \"https:\" + path;\r\n }\r\n\r\n if (document.getElementById(\"explodeViewCheckbox\") != null) // PD's code on reload explode checkbox should be unchecked\r\n if (document.getElementById(\"explodeViewCheckbox\").checked == true)\r\n document.getElementById(\"explodeViewCheckbox\").checked = false;\r\n if (cds.cadViewer.facing == null)\r\n cds.cadViewer.facing = THREE.DoubleSide;\r\n\r\n if (document.getElementById(\"explosionSubscription\") != null) {\r\n document.getElementById(\"explosionSubscription\").checked = false;\r\n cds.cadViewer.explosionSubscribed = undefined;\r\n document.getElementById(\"explosionEverything\").style.visibility = \"hidden\";\r\n document.getElementById(\"explodeViewCheckbox\").style.visibility = \"hidden\";\r\n }\r\n if (document.getElementById(\"mouseSubscription\") != null) {\r\n document.getElementById(\"mouseSubscription\").checked = false;\r\n cds.cadViewer.mouseSubscribed = undefined;\r\n }\r\n if (document.getElementById(\"annotSubscription\") != null)\r\n document.getElementById(\"annotSubscription\").checked = false;\r\n\r\n if (document.getElementById(\"highlight\") != null)\r\n document.getElementById(\"highlight\").style.visibility = \"visible\";\r\n\r\n if (document.getElementById(\"gridRadio\") != null)\r\n document.getElementById(\"gridRadio\").checked = true;\r\n if (document.getElementById(\"logoRadio\") != null)\r\n document.getElementById(\"logoRadio\").checked = true;\r\n\r\n\r\n // this.removeWireframe();\r\n\r\n this.textureCube = new THREE.TextureLoader();\r\n\r\n var texture0 = this.textureCube.load(this.ENVIRONMENT_MAP_URLS[0]);\r\n var texture1 = this.textureCube.load(this.ENVIRONMENT_MAP_URLS[1]);\r\n var texture2 = this.textureCube.load(this.ENVIRONMENT_MAP_URLS[2]);\r\n var texture3 = this.textureCube.load(this.ENVIRONMENT_MAP_URLS[3]);\r\n var texture4 = this.textureCube.load(this.ENVIRONMENT_MAP_URLS[4]);\r\n var texture5 = this.textureCube.load(this.ENVIRONMENT_MAP_URLS[5]);\r\n\r\n // only allow changing models when one is fully loaded\r\n var vector = new THREE.Vector3(0, 0, 0);\r\n vector.unproject(this.camera);\r\n\r\n\r\n var raycaster = new THREE.Raycaster(this.camera.position, vector.sub(this.camera.position).normalize());\r\n var intersections = raycaster.intersectObjects(this.scene.children, true);\r\n\r\n\r\n if (this.isLoading === true) {\r\n console.log(\"Warning in CDS CAD viewer: Cannot load new model while loading still in progress\");\r\n return;\r\n }\r\n\r\n this.controls.enabled = false;\r\n this.isLoading = true;\r\n\r\n this.closeScene();\r\n\r\n if (!cds.cadViewer.hasOwnProperty('CADURL')) {\r\n cds.cadViewer.cadDirectory = path.substr(0, path.lastIndexOf('/') + 1);\r\n }\r\n switch (path.split('.').pop().toLowerCase()) {\r\n case \"js\":\r\n this.loadRemoteScript(path, this.onSceneLoad);\r\n break;\r\n case \"json\":\r\n this.readJSON(path, assemblyId);\r\n break;\r\n default:\r\n console.log('Invalid file type found...');\r\n }\r\n },\r\n\r\n loadJSON: function (filePath, json) {\r\n var loader = new THREE.ObjectLoader();\r\n loader.texturePath = cds.cadViewer.RemoveLastDirectoryPartOf(filePath) + '/'\r\n loader.setCrossOrigin('Anonymous');\r\n loader.parseGeometries = cds.cadViewer.threeExtension.parseGeometries;\r\n loader.parse(json, function (loadedScene) {\r\n cds.cadViewer.onSceneLoad(filePath, loadedScene);\r\n });\r\n },\r\n\r\n RemoveLastDirectoryPartOf: function (the_url) {\r\n var the_arr = the_url.split('/');\r\n the_arr.pop();\r\n return (the_arr.join('/'));\r\n },\r\n\r\n disposeDimensionDivElements: function() {\r\n if (cds.cadViewer.dimensionDivElements.length > 0) {\r\n\r\n cds.cadViewer.target = {};\r\n cds.cadViewer.scene.traverse(function (child) {\r\n if (child.name === \"dimension\") {\r\n if (child.children.length > 0) {\r\n child.visible = false;\r\n }\r\n }\r\n });\r\n for (var i = 0; i < cds.cadViewer.dimensionDivElements.length; i++) {\r\n var domElement = document.getElementById(cds.cadViewer.dimensionDivElements[i]);\r\n \r\n if (domElement) {\r\n domElement.parentNode.removeChild(domElement);\r\n }\r\n }\r\n \r\n cds.cadViewer.dimensionDivElements = [];\r\n\r\n }\r\n },\r\n\r\n\r\n\r\n /*\r\n * Clean up memory\r\n */\r\n dispose: function () {\r\n \"use strict\";\r\n\r\n if (this.hasOwnProperty('studioUtils')) {\r\n this.studioUtils.dispose();\r\n }\r\n this.isLoading = false;\r\n this.closeScene();\r\n this.composer = null;\r\n this.scene = null;\r\n this.overlayScene = null;\r\n this.controls = null;\r\n this.renderer = null;\r\n this.urlToSceneObjectMap = [];\r\n this.previousPartAdded = null;\r\n delete this.partReplacement;\r\n },\r\n\r\n /*\r\n * Removes current model from memory\r\n */\r\n closeScene: function () {\r\n \"use strict\";\r\n if (this.scene !== null) {\r\n if (this.sceneBoundingBoxIndicator !== null) {\r\n this.overlayScene.remove(this.sceneBoundingBoxIndicator);\r\n this.sceneBoundingBoxIndicator = null;\r\n }\r\n\r\n if (this.spinCenters !== null) {\r\n if (this.spinCenters instanceof THREE.Object3D) {\r\n this.spinCenters.traverse(function (mesh) {\r\n if (mesh instanceof THREE.Mesh) {\r\n mesh.geometry.dispose();\r\n mesh.geometry = null;\r\n if (mesh.material.length != undefined) {\r\n if (mesh.material.length > 0) {\r\n for (var i = 0; i < mesh.material.length; i++) {\r\n if (mesh.material[i].map) {\r\n mesh.material[i].map.dispose();\r\n }\r\n mesh.material[i].dispose();\r\n }\r\n }\r\n } else {\r\n if (mesh.material.map) {\r\n mesh.material.map.dispose();\r\n }\r\n mesh.material.dispose();\r\n }\r\n }\r\n });\r\n }\r\n\r\n this.overlayScene.remove(this.spinCenters);\r\n this.spinCenters = null;\r\n }\r\n\r\n if (this.sceneObject !== null) {\r\n var object = this.sceneObject;\r\n if (object instanceof THREE.Object3D) {\r\n object.traverse(function (mesh) {\r\n if (mesh instanceof THREE.Mesh) {\r\n mesh.geometry.dispose();\r\n mesh.geometry = null;\r\n if (mesh.material.length != undefined) {\r\n if (mesh.material.length > 0) {\r\n for (var i = 0; i < mesh.material.length; i++) {\r\n if (mesh.material[i].map) {\r\n mesh.material[i].map.dispose();\r\n }\r\n mesh.material[i].dispose();\r\n }\r\n }\r\n } else {\r\n if (mesh.material.map) {\r\n mesh.material.map.dispose();\r\n }\r\n mesh.material.dispose();\r\n\r\n }\r\n }\r\n });\r\n }\r\n\r\n this.scene.remove(this.sceneObject);\r\n this.sceneObject = null;\r\n }\r\n\r\n this.sceneBoundingBox = null;\r\n this.clearBaseGridFromScene();\r\n if (cds.cadViewer.hasOwnProperty('toggleShadow') && cds.cadViewer.hasOwnProperty('shadows')) {\r\n cds.cadViewer.shadows.removeShadows();\r\n }\r\n }\r\n },\r\n\r\n /*\r\n * Returns true if webGL is available in the user's browser\r\n */\r\n isWebGLAvailable: function () {\r\n \"use strict\";\r\n var i, e, canvas, context, names;\r\n\r\n if (this.cacheWebGLAvailability) {\r\n return this.cacheWebGLAvailability;\r\n }\r\n\r\n if (!window.WebGLRenderingContext) {\r\n this.cacheWebGLAvailability = false;\r\n return false;\r\n }\r\n canvas = document.createElement(\"canvas\");\r\n if (!canvas) {\r\n this.cacheWebGLAvailability = false;\r\n return false;\r\n }\r\n\r\n names = [\"webgl\", \"experimental-webgl\", \"webkit-3d\", \"moz-webgl\"];\r\n for (i = 0; i < names.length; ++i) {\r\n try {\r\n context = canvas.getContext(names[i]);\r\n } catch (e) { }\r\n if (context) {\r\n this.cacheWebGLAvailability = true;\r\n return true;\r\n }\r\n }\r\n\r\n this.cacheWebGLAvailability = false;\r\n return false;\r\n },\r\n\r\n /*\r\n * By -7 nov\r\n */\r\n setupGui: function () {\r\n effectController = {\r\n shininess: 40.0,\r\n ka: 0.17,\r\n kd: 0.51,\r\n ks: 0.2,\r\n metallic: true,\r\n hue: 0.121,\r\n saturation: 0.73,\r\n lightness: 0.66,\r\n lhue: 0.04,\r\n lsaturation: 0.01, // non-zero so that fractions will be shown\r\n llightness: 1.0,\r\n // bizarrely, if you initialize these with negative numbers, the sliders\r\n // will not show any decimal places.\r\n lx: 0.32,\r\n ly: 0.39,\r\n lz: 0.7,\r\n newTess: 15,\r\n bottom: true,\r\n lid: true,\r\n body: true,\r\n fitLid: false,\r\n nonblinn: false,\r\n newShading: \"glossy\"\r\n };\r\n var h;\r\n var gui = new dat.GUI();\r\n // material (attributes)\r\n h = gui.addFolder(\"Material control\");\r\n h.add(effectController, \"shininess\", 1.0, 400.0, 1.0).name(\"shininess\").onChange(render);\r\n h.add(effectController, \"kd\", 0.0, 1.0, 0.025).name(\"diffuse strength\").onChange(render);\r\n h.add(effectController, \"ks\", 0.0, 1.0, 0.025).name(\"specular strength\").onChange(render);\r\n h.add(effectController, \"metallic\").onChange(render);\r\n // material (color)\r\n h = gui.addFolder(\"Material color\");\r\n h.add(effectController, \"hue\", 0.0, 1.0, 0.025).name(\"hue\").onChange(render);\r\n h.add(effectController, \"saturation\", 0.0, 1.0, 0.025).name(\"saturation\").onChange(render);\r\n h.add(effectController, \"lightness\", 0.0, 1.0, 0.025).name(\"lightness\").onChange(render);\r\n // light (point)\r\n h = gui.addFolder(\"Lighting\");\r\n h.add(effectController, \"lhue\", 0.0, 1.0, 0.025).name(\"hue\").onChange(render);\r\n h.add(effectController, \"lsaturation\", 0.0, 1.0, 0.025).name(\"saturation\").onChange(render);\r\n h.add(effectController, \"llightness\", 0.0, 1.0, 0.025).name(\"lightness\").onChange(render);\r\n h.add(effectController, \"ka\", 0.0, 1.0, 0.025).name(\"ambient\").onChange(render);\r\n // light (directional)\r\n h = gui.addFolder(\"Light direction\");\r\n h.add(effectController, \"lx\", -1.0, 1.0, 0.025).name(\"x\").onChange(render);\r\n h.add(effectController, \"ly\", -1.0, 1.0, 0.025).name(\"y\").onChange(render);\r\n h.add(effectController, \"lz\", -1.0, 1.0, 0.025).name(\"z\").onChange(render);\r\n h = gui.addFolder(\"Tessellation control\");\r\n h.add(effectController, \"newTess\", [2, 3, 4, 5, 6, 8, 10, 15, 20, 30, 40, 50]).name(\"Tessellation Level\").onChange(render);\r\n h.add(effectController, \"lid\").name(\"display lid\").onChange(render);\r\n h.add(effectController, \"body\").name(\"display body\").onChange(render);\r\n h.add(effectController, \"bottom\").name(\"display bottom\").onChange(render);\r\n h.add(effectController, \"fitLid\").name(\"snug lid\").onChange(render);\r\n h.add(effectController, \"nonblinn\").name(\"original scale\").onChange(render);\r\n // shading\r\n h = gui.add(effectController, \"newShading\", [\"wireframe\", \"flat\", \"smooth\", \"glossy\", \"textured\", \"reflective\"]).name(\"Shading\").onChange(render);\r\n },\r\n\r\n\r\n /*\r\n * Sets the render mode to one of the mode constants, MODE_SHADES,\r\n * MODE_TRANSPARENT, MODE_WIREFRAME\r\n */\r\n setRenderMode: function (mode) {\r\n \"use strict\";\r\n if (mode === this.currentRenderMode) {\r\n return;\r\n }\r\n\r\n if (cds.cadViewer.studioUtils) cds.cadViewer.studioUtils.stopAnimation();\r\n\r\n\r\n switch (mode) {\r\n case this.MODE_SHADED:\r\n this.currentRenderMode = mode;\r\n this.setObjectMaterialDepthAndSide(this.sceneObject, true, true, THREE.FrontSide);\r\n this.setObjectOpacity(this.sceneObject, 1.0, false);\r\n this.removeWireframe();\r\n break;\r\n\r\n case this.MODE_TRANSPARENT:\r\n this.currentRenderMode = mode;\r\n this.setObjectMaterialDepthAndSide(this.sceneObject, false, false, THREE.FrontSide);\r\n this.setObjectOpacity(this.sceneObject, 0.5, true);\r\n this.removeWireframe();\r\n break;\r\n\r\n case this.MODE_WIREFRAME:\r\n this.currentRenderMode = mode;\r\n this.setObjectMaterialDepthAndSide(this.sceneObject, true, true, THREE.FrontSide);\r\n this.setObjectOpacity(this.sceneObject, 1.0, false);\r\n this.renderWireframe();\r\n break;\r\n\r\n default:\r\n console.log(\"Error in CDS CAD viewer: invalid render mode \" + mode);\r\n break;\r\n }\r\n },\r\n\r\n /*\r\n * common operation is to set depthtest / sides, outsourced to function\r\n */\r\n setObjectMaterialDepthAndSide: function (object, depthTest, depthWrite, side) {\r\n \"use strict\";\r\n if (object instanceof THREE.Object3D) {\r\n object.traverse(function (mesh) {\r\n if (mesh instanceof THREE.Mesh) {\r\n if (mesh.material.length != undefined) {\r\n for (var i = 0; i < mesh.material.length; i++) {\r\n if (mesh.material[i]) {\r\n\r\n if (mesh.parent.type != \"Group\") {\r\n mesh.material[i].side = THREE.FrontSide;\r\n }\r\n mesh.material[i].depthTest = depthTest;\r\n mesh.material[i].depthWrite = depthWrite;\r\n }\r\n }\r\n } else {\r\n if (mesh.material) {\r\n\r\n if (mesh.parent.type != \"Group\") {\r\n mesh.material.side = THREE.FrontSide;\r\n }\r\n mesh.material.depthTest = depthTest;\r\n mesh.material.depthWrite = depthWrite;\r\n }\r\n }\r\n\r\n }\r\n });\r\n }\r\n },\r\n\r\n setObjectOpacity: function (object, opacity, isTransparent) {\r\n \"use strict\";\r\n if (object instanceof THREE.Object3D) {\r\n object.traverse(function (mesh) {\r\n if (mesh instanceof THREE.Mesh) {\r\n \r\n if (Array.isArray(mesh.material)) {\r\n for (var i = 0; i < mesh.material.length; i++) {\r\n if (!mesh.material[i].userData.hasOwnProperty(\"initialOpacity\")) {\r\n mesh.material[i].userData.initialOpacity = mesh.material[i].opacity;\r\n }\r\n\r\n if (isTransparent === true) {\r\n mesh.material[i].opacity = opacity;\r\n mesh.material[i].transparent = isTransparent;\r\n } else if (isTransparent === false) {\r\n mesh.material[i].opacity = mesh.material[i].userData.initialOpacity;\r\n mesh.material[i].transparent = mesh.material[i].opacity !== 1;\r\n }\r\n }\r\n }\r\n else {\r\n if (!mesh.material.userData.hasOwnProperty(\"initialOpacity\")) {\r\n mesh.material.userData.initialOpacity = mesh.material.opacity;\r\n }\r\n\r\n if (isTransparent === true) {\r\n mesh.material.opacity = opacity;\r\n mesh.material.transparent = isTransparent;\r\n } else if (isTransparent === false) {\r\n mesh.material.opacity = mesh.material.userData.initialOpacity;\r\n mesh.material.transparent = mesh.material.opacity !== 1;\r\n }\r\n }\r\n } else {\r\n if (mesh.material) {\r\n mesh.material.transparent = isTransparent;\r\n mesh.material.opacity = opacity;\r\n }\r\n }\r\n });\r\n }\r\n },\r\n\r\n /*\r\n * Renders wire frame\r\n */\r\n renderWireframe: function () {\r\n \"use strict\";\r\n this.removeEdgesHelpers();\r\n\r\n var self = this;\r\n var geo, mat, wireframe;\r\n\r\n /*if (this.sceneObject instanceof THREE.Object3D)\r\n {\r\n this.sceneObject.traverse(function (mesh)\r\n {\r\n if (mesh instanceof THREE.Mesh)\r\n {\r\n if (mesh.material)\r\n {\r\n mesh.material.side = THREE.FrontSide;\r\n }\r\n var edgh = new THREE.EdgesHelper(mesh, 0x3D3D3D);\r\n self.scene.add(edgh);\r\n mesh.visible = false;\r\n self.edgesHelpers.push(edgh);\r\n }\r\n });\r\n */\r\n\r\n if (this.sceneObject instanceof THREE.Object3D) {\r\n this.sceneObject.traverse(function (mesh) {\r\n if (mesh instanceof THREE.Mesh) {\r\n if (mesh.material.length != undefined) {\r\n for (var i = 0; i < mesh.material.length; i++) {\r\n if (mesh.material[i]) {\r\n mesh.material[i].side = THREE.DoubleSide;\r\n }\r\n }\r\n } else {\r\n if (mesh.material) {\r\n mesh.material.side = THREE.DoubleSide;\r\n }\r\n }\r\n geo = new THREE.EdgesGeometry(mesh.geometry); // or WireframeGeometry\r\n mat = new THREE.LineBasicMaterial({ color: 0x3D3D3D, linewidth: 1 });\r\n wireframe = new THREE.LineSegments(geo, mat);\r\n if (cds.cadViewer.firstWireframe == 1)\r\n mesh.add(wireframe);\r\n for (var i = 0; i < mesh.children.length; i++) {\r\n mesh.children[i].visible = true;\r\n }\r\n mesh.visible = false;\r\n self.edgesHelpers.push(mesh.children[0]);\r\n }\r\n });\r\n\r\n this.edgeEffect.enabled = true;\r\n this.createEdgeOccluder();\r\n }\r\n },\r\n\r\n /*\r\n * Removes wire frame if it has been rendered\r\n */\r\n removeWireframe: function () {\r\n \"use strict\";\r\n this.removeEdgesHelpers();\r\n var i;\r\n\r\n /*if (this.sceneObject instanceof THREE.Object3D)\r\n {\r\n this.edgeEffect.enabled = false;\r\n this.sceneObject.traverse(function (mesh)\r\n {\r\n if (mesh instanceof THREE.Mesh)\r\n {\r\n mesh.visible = true;\r\n }\r\n });\r\n }*/\r\n if (this.sceneObject instanceof THREE.Object3D) {\r\n this.edgeEffect.enabled = false;\r\n this.sceneObject.traverse(function (mesh) {\r\n if (mesh instanceof THREE.Mesh) {\r\n mesh.visible = true;\r\n cds.cadViewer.firstWireframe = 2;\r\n for (i = 0; i < mesh.children.length; i++) {\r\n mesh.children[i].visible = false;\r\n }\r\n }\r\n });\r\n }\r\n\r\n if (this.showBoundingBox) {\r\n this.sceneBoundingBoxIndicator.traverse(function (obj) {\r\n if (obj instanceof THREE.Object3D) {\r\n obj.traverse(function (mesh) {\r\n if (mesh instanceof THREE.Mesh || mesh instanceof THREE.Line) {\r\n if (mesh.material.length != undefined) {\r\n for (var i = 0; i < mesh.material.length; i++) {\r\n if (mesh.material[i]) {\r\n mesh.material[i].depthTest = true;\r\n mesh.material[i].depthWrite = true;\r\n mesh.material[i].transparent = false;\r\n mesh.material[i].side = THREE.FrontSide;\r\n mesh.material[i].polygonOffset = true;\r\n mesh.material[i].polygonOffsetFactor = 0.2;\r\n mesh.material[i].polygonOffsetUnits = 1.0;\r\n }\r\n }\r\n } else {\r\n if (mesh.material) {\r\n mesh.material.depthTest = true;\r\n mesh.material.depthWrite = true;\r\n mesh.material.transparent = false;\r\n mesh.material.side = THREE.FrontSide;\r\n mesh.material.polygonOffset = true;\r\n mesh.material.polygonOffsetFactor = 0.2;\r\n mesh.material.polygonOffsetUnits = 1.0;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n },\r\n\r\n createEdgeOccluder: function () {\r\n \"use strict\";\r\n if (this.edgeOccluder) {\r\n this.scene.remove(this.edgeOccluder);\r\n }\r\n\r\n this.edgeOccluder = this.sceneObject.clone();\r\n this.edgeOccluder.traverse(function (mesh) {\r\n if (mesh instanceof THREE.Mesh) {\r\n mesh.visible = true;\r\n if (mesh.material) {\r\n mesh.material = new THREE.MeshBasicMaterial({ \"color\": 0xffffff });\r\n mesh.material.opacity = 0.05;\r\n mesh.material.polygonOffset = true;\r\n mesh.material.polygonOffsetFactor = 0.2;\r\n mesh.material.polygonOffsetUnits = 1.0;\r\n }\r\n }\r\n });\r\n //this.edgeOccluder.scale = this.edgeOccluder.scale.multiplyScalar(0.994);\r\n this.edgeOccluder.scale.set(this.edgeOccluder.scale.x * 0.994, this.edgeOccluder.scale.y * 0.994, this.edgeOccluder.scale.z * 0.994); //by me\r\n this.scene.add(this.edgeOccluder);\r\n if (this.showBoundingBox) {\r\n this.sceneBoundingBoxIndicator.traverse(function (obj) {\r\n if (obj instanceof THREE.Object3D) {\r\n obj.traverse(function (mesh) {\r\n if (mesh instanceof THREE.Mesh || mesh instanceof THREE.Line) {\r\n if (mesh.material.length != undefined) {\r\n for (var i = 0; i < mesh.material.length; i++) {\r\n if (mesh.material[i]) {\r\n mesh.material[i].depthTest = false;\r\n mesh.material[i].depthWrite = false;\r\n mesh.material[i].transparent = true;\r\n mesh.material[i].side = THREE.FrontSide;\r\n mesh.material[i].polygonOffset = true;\r\n mesh.material[i].polygonOffsetFactor = 0.2;\r\n mesh.material[i].polygonOffsetUnits = 1.0;\r\n }\r\n }\r\n } else {\r\n if (mesh.material) {\r\n mesh.material.depthTest = false;\r\n mesh.material.depthWrite = false;\r\n mesh.material.transparent = true;\r\n mesh.material.side = THREE.FrontSide;\r\n mesh.material.polygonOffset = true;\r\n mesh.material.polygonOffsetFactor = 0.2;\r\n mesh.material.polygonOffsetUnits = 1.0;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n },\r\n\r\n removeEdgesHelpers: function () {\r\n \"use strict\";\r\n if (this.edgeOccluder !== null) {\r\n this.scene.remove(this.edgeOccluder);\r\n this.edgeOccluder = null;\r\n }\r\n\r\n var self = this;\r\n this.edgesHelpers.forEach(function (eh) {\r\n if (eh instanceof THREE.Object3D) {\r\n eh.traverse(function (mesh) {\r\n if (mesh instanceof THREE.Mesh) {\r\n mesh.geometry.dispose();\r\n if (mesh.material.length != undefined) {\r\n for (var i = 0; i < mesh.material.length; i++) {\r\n if (mesh.material[i]) {\r\n if (mesh.material[i].map) {\r\n mesh.material[i].map.dispose();\r\n }\r\n mesh.material[i].dispose();\r\n }\r\n }\r\n } else {\r\n if (mesh.material) {\r\n if (mesh.material.map) {\r\n mesh.material.map.dispose();\r\n }\r\n mesh.material.dispose();\r\n }\r\n }\r\n }\r\n });\r\n self.scene.remove(eh);\r\n }\r\n });\r\n\r\n this.edgesHelpers.length = 0;\r\n },\r\n\r\n /*\r\n * Spins the model to the orientation of one of the VIEW constants\r\n */\r\n setOrientation: function (view) {\r\n \"use strict\";\r\n this.resetCamera();\r\n var center = cds.cadViewer.sceneObject.getBoundingBox().getCenter();\r\n \r\n switch (view) {\r\n case this.VIEW_ISOMETRIC:\r\n break;\r\n case this.VIEW_TOP:\r\n cds.cadViewer.studioUtils.animateParam(this.controls.target, this.sceneObject.getBoundingBox().getCenter(), function () { })\r\n cds.cadViewer.studioUtils.animateParam(this.camera.position, new THREE.Vector3(center.x,center.y + cds.cadViewer.distanceFromBoundingBox, center.z), function () { })\r\n cds.cadViewer.studioUtils.animateParam(this.camera.up, new THREE.Vector3(1, 0, 0), function () { })\r\n break;\r\n case this.VIEW_LEFT:\r\n cds.cadViewer.studioUtils.animateParam(this.controls.target, this.sceneObject.getBoundingBox().getCenter(), function () { })\r\n cds.cadViewer.studioUtils.animateParam(this.camera.position, new THREE.Vector3(center.x - cds.cadViewer.distanceFromBoundingBox, center.y, center.z), function () { })\r\n cds.cadViewer.studioUtils.animateParam(this.camera.up, new THREE.Vector3(0, 1, 0), function () { })\r\n break;\r\n case this.VIEW_BOTTOM:\r\n cds.cadViewer.studioUtils.animateParam(this.controls.target, this.sceneObject.getBoundingBox().getCenter(), function () { })\r\n cds.cadViewer.studioUtils.animateParam(this.camera.position, new THREE.Vector3(center.x, center.y - cds.cadViewer.distanceFromBoundingBox, center.z), function () { })\r\n cds.cadViewer.studioUtils.animateParam(this.camera.up, new THREE.Vector3(-1, 0, 0), function () { })\r\n break;\r\n case this.VIEW_RIGHT:\r\n cds.cadViewer.studioUtils.animateParam(this.controls.target, this.sceneObject.getBoundingBox().getCenter(), function () { })\r\n cds.cadViewer.studioUtils.animateParam(this.camera.position, new THREE.Vector3(center.x + cds.cadViewer.distanceFromBoundingBox, center.y, center.z), function () { })\r\n cds.cadViewer.studioUtils.animateParam(this.camera.up, new THREE.Vector3(0, 1, 0), function () { })\r\n break;\r\n default:\r\n console.log(\"Error in CDS CAD viewer: invalid view orientation \" + view);\r\n break;\r\n }\r\n this.render();\r\n cds.cadViewer.controls.noZoom = false\r\n cds.cadViewer.controls.noPan = false\r\n },\r\n resetCamera: function () {\r\n \"use strict\";\r\n if (!cds.cadViewer.scene.children[2].userData.hasOwnProperty(\"boundingBox\")) {\r\n //this.controls.reset();\r\n cds.cadViewer.studioUtils.animateParam(this.camera.position, new THREE.Vector3(this.cameraPosX, this.cameraPosY, this.cameraPosZ), function () { })\r\n cds.cadViewer.studioUtils.animateParam(this.camera.rotation, new THREE.Vector3(this.cameraRotX, this.cameraRotY, this.cameraRotZ), function () { })\r\n cds.cadViewer.studioUtils.animateParam(this.camera.up, new THREE.Vector3(0, 1, 0), function () { })\r\n\r\n this.camera.updateProjectionMatrix();\r\n }\r\n if (cds.cadViewer.scene.children[2].userData.hasOwnProperty(\"boundingBox\")) {\r\n //this.controls.reset();\r\n var bbox = cds.cadViewer.homeBoundingBox;\r\n var center = bbox.getCenter();\r\n // this.controls.target.set();\r\n this.controls.update();\r\n\r\n cds.cadViewer.studioUtils.animateParam(this.controls.target, new THREE.Vector3(center.x, center.y, center.z), function () { })\r\n cds.cadViewer.studioUtils.animateParam(this.camera.position, new THREE.Vector3(this.cameraPosX, this.cameraPosY, this.cameraPosZ), function () { })\r\n cds.cadViewer.studioUtils.animateParam(this.camera.up, new THREE.Vector3(0, 1, 0), function () { })\r\n this.camera.updateProjectionMatrix();\r\n }\r\n },\r\n\r\n getCameraPositionValueForView: function () {\r\n var dist = null;\r\n if (cds.cadViewer.scene.children[2].userData.hasOwnProperty(\"boundingBox\")) {\r\n dist = cds.cadViewer.camera.position.distanceTo(cds.cadViewer.sceneObject.position);\r\n } else if (!cds.cadViewer.scene.children[2].userData.hasOwnProperty(\"boundingBox\")) {\r\n\r\n dist = 100;\r\n }\r\n return dist;\r\n },\r\n /**\r\n * \r\n * @param {Takes boolean to hide annotations or not } state \r\n */\r\n displayAnnotations: function(annot2D,annot3D){\r\n if(annot2D){\r\n cds.cadViewer.studioUtils.toggleAnnotation();\r\n }\r\n if(annot3D){\r\n cds.cadViewer.studioUtils.toggleHotspot();\r\n } \r\n cds.cadViewer.animate();\r\n },\r\n /**\r\n * \r\n * @param {Takes children[0] of sceneObject } node \r\n */\r\n traverseAndImplodeAssembly:function(node){\r\n cds.cadViewer.explode = false;\r\n node.traverse(function(obj){\r\n if (obj.type == \"Group\" ||\r\n obj.type == \"Mesh\") {\r\n let {from, to} = cds.cadViewer.getFromToPosition(obj);\r\n from.copy(to.clone());\r\n } else {\r\n let {from, to} = cds.cadViewer.getFromToPosition(obj);\r\n from.copy(to.clone());\r\n if (cds.cadViewer.recursiveExplosion) {\r\n cds.cadViewer.traverseAndImplodeAssembly(obj);\r\n }\r\n }\r\n });\r\n },\r\n /**\r\n * \r\n * @returns 3D model screenshot in form of base64 string\r\n */\r\n get3DmodelScreenshot:function(){\r\n let annot2D = cds.cadViewer.studioUtils.annotationDisplayed;\r\n let annot3D = cds.cadViewer.studioUtils.hotspotEnabled;\r\n cds.cadViewer.displayAnnotations(annot2D, annot3D);\r\n let boxhelper = cds.cadViewer.getBoundingBoxOfObjects();\r\n let bbox = new THREE.Box3().setFromObject(boxhelper);\r\n let bboxCenter = bbox.getCenter();\r\n cds.cadViewer.controls.target.copy( new THREE.Vector3(bboxCenter.x,bboxCenter.y,bboxCenter.z).clone());\r\n cds.cadViewer.camera.position.copy( new THREE.Vector3(cds.cadViewer.cameraPosX, cds.cadViewer.cameraPosY,cds.cadViewer.cameraPosZ).clone());\r\n cds.cadViewer.camera.up.copy( new THREE.Vector3(0,1,0).clone());\r\n cds.cadViewer.camera.updateProjectionMatrix();\r\n cds.cadViewer.controls.update();\r\n if(cds.cadViewer.explode){\r\n this.traverseAndImplodeAssembly(cds.cadViewer.sceneObject.children[0]);\r\n }\r\n cds.cadViewer.animate();\r\n let canvas = document.getElementById('cds-cad-viewer-renderer');\r\n let dataURL = canvas.toDataURL();\r\n cds.cadViewer.displayAnnotations(annot2D,annot3D);\r\n return dataURL;\r\n },\r\n /*\r\n * Puts the viewer into full screen mode\r\n */\r\n setFullScreen: function () {\r\n \"use strict\";\r\n THREEx.FullScreen.init(this.renderer.domElement);\r\n THREEx.FullScreen.init(this.renderer2.domElement);\r\n if (!THREEx.FullScreen.available()) {\r\n console.log(\"FullScreen mode not available\");\r\n\r\n } else {\r\n\r\n if (!THREEx.FullScreen.activated()) {\r\n this.prevViewerWidth = this.viewerWidth;\r\n this.prevViewerHeight = this.viewerHeight;\r\n }\r\n\r\n this.renderer.setClearColor(0x000000, 0);\r\n this.renderer2.setClearColor(0x000000, 0);\r\n\r\n THREEx.FullScreen.request(this.container);\r\n\r\n }\r\n\r\n },\r\n\r\n\r\n displayDimensions: function () {\r\n \"use strict\";\r\n\r\n cds.cadViewer.dimensions = true;\r\n cds.cadViewer.target = [];\r\n var dimensionObject = new THREE.Object3D();\r\n cds.cadViewer.dimension = dimensionObject;\r\n var dimensionObject = null\r\n cds.cadViewer.scene.traverse(function (child) {\r\n if (child.name === \"dimension\") {\r\n dimensionObject = child;\r\n }\r\n })\r\n cds.cadViewer.scene.remove(dimensionObject)\r\n cds.cadViewer.dimension.name = \"dimension\"\r\n cds.cadViewer.scene.add(cds.cadViewer.dimension);\r\n\r\n // let { bbox, isAnotherEntity } = this.getBoundingBoxFrom(cds.cadViewer.sceneObject, true, isAnotherEntity = false);\r\n let bbox;\r\n\r\n cds.cadViewer.addDimensionHelpers(\"x\", bbox);\r\n\r\n cds.cadViewer.controls.addEventListener('end', cds.cadViewer.updateDimensionsWithCamera);\r\n cds.cadViewer.updateDimensionsWithCamera();\r\n cds.cadViewer.dimension.visible = false;\r\n let arr = JSON.parse(JSON.stringify(cds.cadViewer.target));//deep copy\r\n let targets = [];\r\n for (let i = 0; i < arr.length; ++i) {\r\n targets.push({\r\n target: new THREE.Vector3(arr[i].target.x, arr[i].target.y, arr[i].target.z),\r\n axis: arr[i].axis,\r\n length: String(arr[i].length)\r\n });\r\n }\r\n for (let i = 0; i < targets.length; i++) {\r\n let id = 'divDim' + targets[i].length + i;\r\n let domElement = document.getElementById(id);\r\n domElement.style.display = \"none\";\r\n }\r\n },\r\n\r\n drawLinearDimensionArrowsAndWitnessLine: function (arrowPoint1Vect, arrowPoint2Vect,\r\n newwitnessLinePoint1, newwitnessLinePoint2, dimensionCordinates) {\r\n\r\n var box = cds.cadViewer.homeBoundingBox;\r\n var centerBbox = box.getCenter();\r\n var midPointArrow = new THREE.Vector3((arrowPoint1Vect.x + arrowPoint2Vect.x) / 2,\r\n (arrowPoint1Vect.y + arrowPoint2Vect.y) / 2,\r\n (arrowPoint1Vect.z + arrowPoint2Vect.z) / 2);\r\n\r\n var centerMidPointArrowVector = new THREE.Vector3().subVectors(centerBbox, midPointArrow);\r\n centerMidPointArrowVector.x = Math.round(centerMidPointArrowVector.x);\r\n centerMidPointArrowVector.y = Math.round(centerMidPointArrowVector.y);\r\n centerMidPointArrowVector.z = Math.round(centerMidPointArrowVector.z);\r\n if (centerMidPointArrowVector.x == 0 && centerMidPointArrowVector.y == 0 && centerMidPointArrowVector.z < 0) {\r\n var distbBoxCenterToArrowMidPnt = centerBbox.distanceTo(midPointArrow);\r\n distbBoxCenterToArrowMidPnt = distbBoxCenterToArrowMidPnt * 2;\r\n arrowPoint1Vect.z = arrowPoint1Vect.z - distbBoxCenterToArrowMidPnt;\r\n arrowPoint2Vect.z = arrowPoint2Vect.z - distbBoxCenterToArrowMidPnt;\r\n\r\n var arrow1witness1Dir = new THREE.Vector3().subVectors(newwitnessLinePoint1, arrowPoint1Vect).normalize();\r\n var arrow2witness2Dir = new THREE.Vector3().subVectors(newwitnessLinePoint2, arrowPoint2Vect).normalize();\r\n\r\n var raycaster1 = new THREE.Raycaster(arrowPoint1Vect, arrow1witness1Dir.clone(), 0, Number.POSITIVE_INFINITY);\r\n var hits1 = raycaster1.intersectObject(cds.cadViewer.sceneObject, true);\r\n if (hits1.length > 0) {\r\n newwitnessLinePoint1 = hits1[0].point;\r\n }\r\n var raycaster2 = new THREE.Raycaster(arrowPoint2Vect, arrow2witness2Dir.clone(), 0, Number.POSITIVE_INFINITY);\r\n var hits2 = raycaster2.intersectObject(cds.cadViewer.sceneObject, true);\r\n if (hits2.length > 0) {\r\n newwitnessLinePoint2 = hits2[0].point;\r\n }\r\n }\r\n \r\n if(dimensionCordinates.name.includes(\"dd_bb\"))\r\n {\r\n let measure = new THREE.Vector3();\r\n cds.cadViewer.homeBoundingBox.getSize(measure);\r\n\r\n const geometry = new THREE.BoxGeometry(measure.x, measure.y, measure.z);\r\n const cube = new THREE.Mesh(geometry);\r\n let bbCenter = new THREE.Vector3();\r\n bbCenter = cds.cadViewer.homeBoundingBox.getCenter();\r\n cube.position.copy(bbCenter);\r\n cds.cadViewer.scene.add(cube);\r\n cds.cadViewer.animate();\r\n var arrow1witness1Dir = new THREE.Vector3().subVectors(newwitnessLinePoint1, arrowPoint1Vect).normalize();\r\n var arrow2witness2Dir = new THREE.Vector3().subVectors(newwitnessLinePoint2, arrowPoint2Vect).normalize();\r\n\r\n var raycaster1 = new THREE.Raycaster(arrowPoint1Vect, arrow1witness1Dir.clone(), 0, Number.POSITIVE_INFINITY);\r\n var hits1 = raycaster1.intersectObject(cube, true);\r\n if (hits1.length > 0) {\r\n newwitnessLinePoint1 = hits1[0].point;\r\n }\r\n var raycaster2 = new THREE.Raycaster(arrowPoint2Vect, arrow2witness2Dir.clone(), 0, Number.POSITIVE_INFINITY);\r\n var hits2 = raycaster2.intersectObject(cube, true);\r\n if (hits2.length > 0) {\r\n newwitnessLinePoint2 = hits2[0].point;\r\n }\r\n cds.cadViewer.scene.remove(cube);\r\n } \r\n cds.cadViewer.addLinearDimensionArrows(\r\n { x1: arrowPoint1Vect.x, y1: arrowPoint1Vect.y, z1: arrowPoint1Vect.z },\r\n { x2: arrowPoint2Vect.x, y2: arrowPoint2Vect.y, z2: arrowPoint2Vect.z },\r\n dimensionCordinates\r\n );\r\n cds.cadViewer.addLinearWitnessLine(\r\n { x1: newwitnessLinePoint1.x, y1: newwitnessLinePoint1.y, z1: newwitnessLinePoint1.z },\r\n { x2: arrowPoint1Vect.x, y2: arrowPoint1Vect.y, z2: arrowPoint1Vect.z }\r\n );\r\n\r\n cds.cadViewer.addLinearWitnessLine(\r\n { x1: newwitnessLinePoint2.x, y1: newwitnessLinePoint2.y, z1: newwitnessLinePoint2.z },\r\n { x2: arrowPoint2Vect.x, y2: arrowPoint2Vect.y, z2: arrowPoint2Vect.z }\r\n );\r\n },\r\n\r\n extendLinearDimensionWithTolerance: function (child, index) { \r\n var box = cds.cadViewer.homeBoundingBox;\r\n var length = box.max.distanceTo(box.min);\r\n var extendDimensionFactor = length / 6;\r\n var dimensionCordinates = child.userData.dimension[index];\r\n let arrowPoint1Vect = new THREE.Vector3(dimensionCordinates.arrowPoint1[0], dimensionCordinates.arrowPoint1[1], dimensionCordinates.arrowPoint1[2]);\r\n let witnessLinePoint1 = new THREE.Vector3(dimensionCordinates.witnessLinePoint1[0], dimensionCordinates.witnessLinePoint1[1], dimensionCordinates.witnessLinePoint1[2]);\r\n let arrowPoint2Vect = new THREE.Vector3(dimensionCordinates.arrowPoint2[0], dimensionCordinates.arrowPoint2[1], dimensionCordinates.arrowPoint2[2]);\r\n let witnessLinePoint2 = new THREE.Vector3(dimensionCordinates.witnessLinePoint2[0], dimensionCordinates.witnessLinePoint2[1], dimensionCordinates.witnessLinePoint2[2]);\r\n\r\n var arrow1arrow2Dir = new THREE.Vector3().subVectors(arrowPoint1Vect, arrowPoint2Vect).normalize();\r\n arrow1arrow2Dir.x = Math.round(arrow1arrow2Dir.x);\r\n arrow1arrow2Dir.y = Math.round(arrow1arrow2Dir.y);\r\n arrow1arrow2Dir.z = Math.round(arrow1arrow2Dir.z);\r\n var factor = dimensionCordinates.value / 100;\r\n {\r\n if (arrow1arrow2Dir.x == 1 || arrow1arrow2Dir.x == -1) {\r\n if (arrow1arrow2Dir.x == 1)\r\n {\r\n arrowPoint1Vect.x = arrowPoint1Vect.x - factor;\r\n witnessLinePoint1.x = witnessLinePoint1.x - factor;\r\n }\r\n else if (arrow1arrow2Dir.x == -1)\r\n {\r\n arrowPoint1Vect.x = arrowPoint1Vect.x + factor;\r\n witnessLinePoint1.x = witnessLinePoint1.x + factor;\r\n }\r\n }\r\n else if (arrow1arrow2Dir.y == 1 || arrow1arrow2Dir.y == -1) {\r\n if (arrow1arrow2Dir.y == 1)\r\n {\r\n arrowPoint1Vect.y = arrowPoint1Vect.y - factor;\r\n witnessLinePoint1.y = witnessLinePoint1.y - factor;\r\n }\r\n else if (arrow1arrow2Dir.y == -1)\r\n {\r\n arrowPoint1Vect.y = arrowPoint1Vect.y + factor;\r\n witnessLinePoint1.y = witnessLinePoint1.y + factor;\r\n } \r\n }\r\n else if (arrow1arrow2Dir.z == 1 || arrow1arrow2Dir.z == -1) {\r\n if (arrow1arrow2Dir.z == 1)\r\n { \r\n arrowPoint1Vect.z = arrowPoint1Vect.z - factor;\r\n witnessLinePoint1.z = witnessLinePoint1.z - factor;\r\n }\r\n else if (arrow1arrow2Dir.z == -1)\r\n { \r\n arrowPoint1Vect.z = arrowPoint1Vect.z + factor;\r\n witnessLinePoint1.z = witnessLinePoint1.z + factor;\r\n } \r\n }\r\n }\r\n \r\n {\r\n if (arrow1arrow2Dir.x == 1 || arrow1arrow2Dir.x == -1) {\r\n if (arrow1arrow2Dir.x == 1)\r\n {\r\n arrowPoint2Vect.x = arrowPoint2Vect.x + factor;\r\n witnessLinePoint2.x = witnessLinePoint2.x + factor\r\n }\r\n else if (arrow1arrow2Dir.x == -1)\r\n {\r\n arrowPoint2Vect.x = arrowPoint2Vect.x - factor;\r\n witnessLinePoint2.x = witnessLinePoint2.x - factor\r\n } \r\n }\r\n else if (arrow1arrow2Dir.y == 1 || arrow1arrow2Dir.y == -1) {\r\n if (arrow1arrow2Dir.y == 1)\r\n {\r\n arrowPoint2Vect.y = arrowPoint2Vect.y + factor;\r\n witnessLinePoint2.y = witnessLinePoint2.y + factor;\r\n }\r\n else if (arrow1arrow2Dir.y == -1)\r\n {\r\n arrowPoint2Vect.y = arrowPoint2Vect.y - factor;\r\n witnessLinePoint2.y = witnessLinePoint2.y - factor;\r\n }\r\n }\r\n else if (arrow1arrow2Dir.z == 1 || arrow1arrow2Dir.zDimension == -1) {\r\n if (arrow1arrow2Dir.z == 1)\r\n {\r\n arrowPoint2Vect.z = arrowPoint2Vect.z + factor;\r\n witnessLinePoint2.z = witnessLinePoint2.z + factor;\r\n }\r\n else if (arrow1arrow2Dir.z == -1)\r\n {\r\n arrowPoint2Vect.z = arrowPoint2Vect.z - factor;\r\n witnessLinePoint2.z = witnessLinePoint2.z - factor;\r\n } \r\n }\r\n }\r\n \r\n var arrow1witness1Dir = new THREE.Vector3().subVectors(witnessLinePoint1, arrowPoint1Vect).normalize();\r\n arrow1witness1Dir.x = Math.round(arrow1witness1Dir.x);\r\n arrow1witness1Dir.y = Math.round(arrow1witness1Dir.y);\r\n arrow1witness1Dir.z = Math.round(arrow1witness1Dir.z); \r\n var arrow2witness2Dir = new THREE.Vector3().subVectors(witnessLinePoint2, arrowPoint2Vect).normalize();\r\n arrow2witness2Dir.x = Math.round(arrow2witness2Dir.x);\r\n arrow2witness2Dir.y = Math.round(arrow2witness2Dir.y);\r\n arrow2witness2Dir.z = Math.round(arrow2witness2Dir.z);\r\n \r\n var raycaster1 = new THREE.Raycaster(arrowPoint1Vect, arrow1witness1Dir.clone(), 0, Number.POSITIVE_INFINITY);\r\n var hits1 = raycaster1.intersectObject(cds.cadViewer.sceneObject, true);\r\n \r\n var raycaster2 = new THREE.Raycaster(arrowPoint2Vect, arrow2witness2Dir.clone(), 0, Number.POSITIVE_INFINITY);\r\n var hits2 = raycaster2.intersectObject(cds.cadViewer.sceneObject, true);\r\n if (hits1.length > 0) {\r\n arrow1witness1Dir = arrow1witness1Dir.negate();\r\n var newPointOnBBox1 = hits1[0].point;\r\n \r\n if (arrow1witness1Dir.x == 1 || arrow1witness1Dir.x == -1) {\r\n if (arrow1witness1Dir.x == 1) {\r\n child.userData.dimension[index].arrowPoint1[0] = newPointOnBBox1.x + extendDimensionFactor;\r\n }\r\n else if (arrow1witness1Dir.x == -1) {\r\n child.userData.dimension[index].arrowPoint1[0] = newPointOnBBox1.x - extendDimensionFactor;\r\n }\r\n }\r\n else if (arrow1witness1Dir.y == 1 || arrow1witness1Dir.y == -1) {\r\n if (arrow1witness1Dir.y == 1) {\r\n child.userData.dimension[index].arrowPoint1[1] = newPointOnBBox1.y + extendDimensionFactor;\r\n }\r\n else if (arrow1witness1Dir.y == -1) {\r\n child.userData.dimension[index].arrowPoint1[1] = newPointOnBBox1.y - extendDimensionFactor;\r\n }\r\n }\r\n else if (arrow1witness1Dir.z == 1 || arrow1witness1Dir.z == -1) {\r\n if (arrow1witness1Dir.z == 1) {\r\n child.userData.dimension[index].arrowPoint1[2] = newPointOnBBox1.z + extendDimensionFactor;\r\n }\r\n else if (arrow1witness1Dir.z == -1) {\r\n child.userData.dimension[index].arrowPoint1[2] = newPointOnBBox1.z - extendDimensionFactor;\r\n }\r\n }\r\n let newArrowPoint1Vect = new THREE.Vector3(child.userData.dimension[index].arrowPoint1[0], child.userData.dimension[index].arrowPoint1[1], child.userData.dimension[index].arrowPoint1[2]);\r\n var arrow1arrow2Vect = new THREE.Vector3().subVectors(arrowPoint2Vect, arrowPoint1Vect).normalize();\r\n arrow1arrow2Vect.x = Math.round(arrow1arrow2Vect.x);\r\n arrow1arrow2Vect.y = Math.round(arrow1arrow2Vect.y);\r\n arrow1arrow2Vect.z = Math.round(arrow1arrow2Vect.z);\r\n child.userData.dimension[index].arrowPoint2[0] = newArrowPoint1Vect.x;\r\n child.userData.dimension[index].arrowPoint2[1] = newArrowPoint1Vect.y;\r\n child.userData.dimension[index].arrowPoint2[2] = newArrowPoint1Vect.z;\r\n if (arrow1arrow2Vect.x == 1 || arrow1arrow2Vect.x == -1) {\r\n if (arrow1arrow2Vect.x == 1) {\r\n child.userData.dimension[index].arrowPoint2[0] = newArrowPoint1Vect.x + child.userData.dimension[index].value;\r\n }\r\n else if (arrow1arrow2Vect.x == -1) {\r\n child.userData.dimension[index].arrowPoint2[0] = newArrowPoint1Vect.x - child.userData.dimension[index].value;\r\n }\r\n }\r\n else if (arrow1arrow2Vect.y == 1 || arrow1arrow2Vect.y == -1) {\r\n if (arrow1arrow2Vect.y == 1) {\r\n child.userData.dimension[index].arrowPoint2[1] = newArrowPoint1Vect.y + child.userData.dimension[index].value;\r\n }\r\n else if (arrow1arrow2Vect.y == -1) {\r\n child.userData.dimension[index].arrowPoint2[1] = newArrowPoint1Vect.y - child.userData.dimension[index].value;\r\n }\r\n }\r\n else if (arrow1arrow2Vect.z == 1 || arrow1arrow2Vect.z == -1) {\r\n if (arrow1arrow2Vect.z == 1) {\r\n child.userData.dimension[index].arrowPoint2[2] = newArrowPoint1Vect.z + child.userData.dimension[index].value;\r\n }\r\n else if (arrow1arrow2Vect.z == -1) {\r\n child.userData.dimension[index].arrowPoint2[2] = newArrowPoint1Vect.z - child.userData.dimension[index].value;\r\n }\r\n }\r\n }\r\n else if (hits2.length > 0) {\r\n arrow2witness2Dir = arrow2witness2Dir.negate();\r\n var newPointOnBBox2 = hits2[0].point;\r\n \r\n if (arrow2witness2Dir.x == 1 || arrow2witness2Dir.x == -1) {\r\n if (newPointOnBBox2.x == 1) {\r\n child.userData.dimension[index].arrowPoint2[0] = newPointOnBBox2.x + extendDimensionFactor;\r\n }\r\n else if (arrow2witness2Dir.x == -1) {\r\n child.userData.dimension[index].arrowPoint2[0] = newPointOnBBox2.x - extendDimensionFactor;\r\n }\r\n }\r\n else if (arrow2witness2Dir.y == 1 || arrow2witness2Dir.y == -1) {\r\n if (arrow2witness2Dir.y == 1) {\r\n child.userData.dimension[index].arrowPoint2[1] = newPointOnBBox2.y + extendDimensionFactor;\r\n }\r\n else if (arrow2witness2Dir.y == -1) {\r\n child.userData.dimension[index].arrowPoint2[1] = newPointOnBBox2.y - extendDimensionFactor;\r\n }\r\n }\r\n else if (arrow2witness2Dir.z == 1 || arrow2witness2Dir.z == -1) {\r\n if (arrow2witness2Dir.z == 1) {\r\n child.userData.dimension[index].arrowPoint2[2] = newPointOnBBox2.z + extendDimensionFactor;\r\n }\r\n else if (arrow2witness2Dir.z == -1) {\r\n child.userData.dimension[index].arrowPoint2[2] = newPointOnBBox2.z - extendDimensionFactor;\r\n }\r\n }\r\n let newArrowPoint2Vect = new THREE.Vector3(child.userData.dimension[index].arrowPoint2[0], child.userData.dimension[index].arrowPoint2[1], child.userData.dimension[index].arrowPoint2[2]);\r\n var arrow1arrow2Vect = new THREE.Vector3().subVectors(arrowPoint1Vect, arrowPoint2Vect).normalize();\r\n arrow1arrow2Vect.x = Math.round(arrow1arrow2Vect.x);\r\n arrow1arrow2Vect.y = Math.round(arrow1arrow2Vect.y);\r\n arrow1arrow2Vect.z = Math.round(arrow1arrow2Vect.z);\r\n child.userData.dimension[index].arrowPoint1[0] = newArrowPoint2Vect.x;\r\n child.userData.dimension[index].arrowPoint1[1] = newArrowPoint2Vect.y;\r\n child.userData.dimension[index].arrowPoint1[2] = newArrowPoint2Vect.z;\r\n if (arrow1arrow2Vect.x == 1 || arrow1arrow2Vect.x == -1) {\r\n if (arrow1arrow2Vect.x == 1) {\r\n child.userData.dimension[index].arrowPoint1[0] = newArrowPoint2Vect.x + child.userData.dimension[index].value;\r\n }\r\n else if (arrow1arrow2Vect.x == -1) {\r\n child.userData.dimension[index].arrowPoint1[0] = newArrowPoint2Vect.x - child.userData.dimension[index].value;\r\n }\r\n }\r\n else if (arrow1arrow2Vect.y == 1 || arrow1arrow2Vect.y == -1) {\r\n if (arrow1arrow2Vect.y == 1) {\r\n child.userData.dimension[index].arrowPoint1[1] = newArrowPoint2Vect.y + child.userData.dimension[index].value;\r\n }\r\n else if (arrow1arrow2Vect.y == -1) {\r\n child.userData.dimension[index].arrowPoint1[1] = newArrowPoint2Vect.y - child.userData.dimension[index].value;\r\n }\r\n }\r\n else if (arrow1arrow2Vect.z == 1 || arrow1arrow2Vect.z == -1) {\r\n if (arrow1arrow2Vect.z == 1) {\r\n child.userData.dimension[index].arrowPoint1[2] = newArrowPoint2Vect.z + child.userData.dimension[index].value;\r\n }\r\n else if (arrow1arrow2Vect.z == -1) {\r\n child.userData.dimension[index].arrowPoint1[2] = newArrowPoint2Vect.z - child.userData.dimension[index].value;\r\n }\r\n }\r\n }\r\n },\r\n\r\n extendLinearDimension: function (child) {\r\n var box = cds.cadViewer.homeBoundingBox;\r\n var length = box.max.distanceTo(box.min);\r\n var extendDimensionFactor = length / 6;\r\n let measure = new THREE.Vector3();\r\n\r\n cds.cadViewer.homeBoundingBox.getSize(measure);\r\n const geometry = new THREE.BoxGeometry(measure.x, measure.y, measure.z); \r\n const cube = new THREE.Mesh(geometry);\r\n let bbCenter = new THREE.Vector3();\r\n bbCenter = cds.cadViewer.homeBoundingBox.getCenter();\r\n cube.position.copy(bbCenter);\r\n \r\n cds.cadViewer.scene.add(cube); \r\n cds.cadViewer.animate();\r\n for (let i = 0; i < child.userData.dimension.length; i++) {\r\n var dimensionCordinates = child.userData.dimension[i];\r\n if (dimensionCordinates.type == \"Linear\") {\r\n let arrowPoint1Vect = new THREE.Vector3(dimensionCordinates.arrowPoint1[0], dimensionCordinates.arrowPoint1[1], dimensionCordinates.arrowPoint1[2]);\r\n let witnessLinePoint1 = new THREE.Vector3(dimensionCordinates.witnessLinePoint1[0], dimensionCordinates.witnessLinePoint1[1], dimensionCordinates.witnessLinePoint1[2]);\r\n let arrowPoint2Vect = new THREE.Vector3(dimensionCordinates.arrowPoint2[0], dimensionCordinates.arrowPoint2[1], dimensionCordinates.arrowPoint2[2]);\r\n let witnessLinePoint2 = new THREE.Vector3(dimensionCordinates.witnessLinePoint2[0], dimensionCordinates.witnessLinePoint2[1], dimensionCordinates.witnessLinePoint2[2]);\r\n\r\n var arrow1witness1Dir = new THREE.Vector3().subVectors(witnessLinePoint1, arrowPoint1Vect).normalize();\r\n arrow1witness1Dir.x = Math.round(arrow1witness1Dir.x);\r\n arrow1witness1Dir.y = Math.round(arrow1witness1Dir.y);\r\n arrow1witness1Dir.z = Math.round(arrow1witness1Dir.z);\r\n var arrow2witness2Dir = new THREE.Vector3().subVectors(witnessLinePoint2, arrowPoint2Vect).normalize();\r\n arrow2witness2Dir.x = Math.round(arrow2witness2Dir.x);\r\n arrow2witness2Dir.y = Math.round(arrow2witness2Dir.y);\r\n arrow2witness2Dir.z = Math.round(arrow2witness2Dir.z);\r\n\r\n\r\n var raycaster1 = new THREE.Raycaster(arrowPoint1Vect, arrow1witness1Dir.clone(), 0, Number.POSITIVE_INFINITY);\r\n var hits1 = raycaster1.intersectObject(cube, true);\r\n\r\n var raycaster2 = new THREE.Raycaster(arrowPoint2Vect, arrow2witness2Dir.clone(), 0, Number.POSITIVE_INFINITY);\r\n var hits2 = raycaster2.intersectObject(cube, true);\r\n if (hits1.length > 0 || hits2.length > 0)\r\n {\r\n if (hits1.length > 0) {\r\n arrow1witness1Dir = arrow1witness1Dir.negate();\r\n var newPointOnBBox1 = hits1[0].point;\r\n \r\n if (arrow1witness1Dir.x == 1 || arrow1witness1Dir.x == -1) {\r\n if (arrow1witness1Dir.x == 1) {\r\n child.userData.dimension[i].arrowPoint1[0] = newPointOnBBox1.x + extendDimensionFactor;\r\n }\r\n else if (arrow1witness1Dir.x == -1) {\r\n child.userData.dimension[i].arrowPoint1[0] = newPointOnBBox1.x - extendDimensionFactor;\r\n }\r\n }\r\n else if (arrow1witness1Dir.y == 1 || arrow1witness1Dir.y == -1) {\r\n if (arrow1witness1Dir.y == 1) {\r\n child.userData.dimension[i].arrowPoint1[1] = newPointOnBBox1.y + extendDimensionFactor;\r\n }\r\n else if (arrow1witness1Dir.y == -1) {\r\n child.userData.dimension[i].arrowPoint1[1] = newPointOnBBox1.y - extendDimensionFactor;\r\n }\r\n }\r\n else if (arrow1witness1Dir.z == 1 || arrow1witness1Dir.z == -1) {\r\n if (arrow1witness1Dir.z == 1) {\r\n child.userData.dimension[i].arrowPoint1[2] = newPointOnBBox1.z + extendDimensionFactor;\r\n }\r\n else if (arrow1witness1Dir.z == -1) {\r\n child.userData.dimension[i].arrowPoint1[2] = newPointOnBBox1.z - extendDimensionFactor;\r\n }\r\n }\r\n let newArrowPoint1Vect = new THREE.Vector3(child.userData.dimension[i].arrowPoint1[0], child.userData.dimension[i].arrowPoint1[1], child.userData.dimension[i].arrowPoint1[2]);\r\n var arrow1arrow2Vect = new THREE.Vector3().subVectors(arrowPoint2Vect, arrowPoint1Vect).normalize();\r\n arrow1arrow2Vect.x = Math.round(arrow1arrow2Vect.x);\r\n arrow1arrow2Vect.y = Math.round(arrow1arrow2Vect.y);\r\n arrow1arrow2Vect.z = Math.round(arrow1arrow2Vect.z);\r\n child.userData.dimension[i].arrowPoint2[0] = newArrowPoint1Vect.x;\r\n child.userData.dimension[i].arrowPoint2[1] = newArrowPoint1Vect.y;\r\n child.userData.dimension[i].arrowPoint2[2] = newArrowPoint1Vect.z;\r\n if (arrow1arrow2Vect.x == 1 || arrow1arrow2Vect.x == -1) {\r\n if (arrow1arrow2Vect.x == 1) {\r\n child.userData.dimension[i].arrowPoint2[0] = newArrowPoint1Vect.x + child.userData.dimension[i].value;\r\n }\r\n else if (arrow1arrow2Vect.x == -1) {\r\n child.userData.dimension[i].arrowPoint2[0] = newArrowPoint1Vect.x - child.userData.dimension[i].value;\r\n }\r\n }\r\n else if (arrow1arrow2Vect.y == 1 || arrow1arrow2Vect.y == -1) {\r\n if (arrow1arrow2Vect.y == 1) {\r\n child.userData.dimension[i].arrowPoint2[1] = newArrowPoint1Vect.y + child.userData.dimension[i].value;\r\n }\r\n else if (arrow1arrow2Vect.y == -1) {\r\n child.userData.dimension[i].arrowPoint2[1] = newArrowPoint1Vect.y - child.userData.dimension[i].value;\r\n }\r\n }\r\n else if (arrow1arrow2Vect.z == 1 || arrow1arrow2Vect.z == -1) {\r\n if (arrow1arrow2Vect.z == 1) {\r\n child.userData.dimension[i].arrowPoint2[2] = newArrowPoint1Vect.z + child.userData.dimension[i].value;\r\n }\r\n else if (arrow1arrow2Vect.z == -1) {\r\n child.userData.dimension[i].arrowPoint2[2] = newArrowPoint1Vect.z - child.userData.dimension[i].value;\r\n }\r\n }\r\n }\r\n else if (hits2.length > 0) {\r\n arrow2witness2Dir = arrow2witness2Dir.negate();\r\n var newPointOnBBox2 = hits2[0].point;\r\n \r\n if (arrow2witness2Dir.x == 1 || arrow2witness2Dir.x == -1) {\r\n if (newPointOnBBox2.x == 1) {\r\n child.userData.dimension[i].arrowPoint2[0] = newPointOnBBox2.x + extendDimensionFactor;\r\n }\r\n else if (arrow2witness2Dir.x == -1) {\r\n child.userData.dimension[i].arrowPoint2[0] = newPointOnBBox2.x - extendDimensionFactor;\r\n }\r\n }\r\n else if (arrow2witness2Dir.y == 1 || arrow2witness2Dir.y == -1) {\r\n if (arrow2witness2Dir.y == 1) {\r\n child.userData.dimension[i].arrowPoint2[1] = newPointOnBBox2.y + extendDimensionFactor;\r\n }\r\n else if (arrow2witness2Dir.y == -1) {\r\n child.userData.dimension[i].arrowPoint2[1] = newPointOnBBox2.y - extendDimensionFactor;\r\n }\r\n }\r\n else if (arrow2witness2Dir.z == 1 || arrow2witness2Dir.z == -1) {\r\n if (arrow2witness2Dir.z == 1) {\r\n child.userData.dimension[i].arrowPoint2[2] = newPointOnBBox2.z + extendDimensionFactor;\r\n }\r\n else if (arrow2witness2Dir.z == -1) {\r\n child.userData.dimension[i].arrowPoint2[2] = newPointOnBBox2.z - extendDimensionFactor;\r\n }\r\n }\r\n let newArrowPoint2Vect = new THREE.Vector3(child.userData.dimension[i].arrowPoint2[0], child.userData.dimension[i].arrowPoint2[1], child.userData.dimension[i].arrowPoint2[2]);\r\n var arrow1arrow2Vect = new THREE.Vector3().subVectors(arrowPoint1Vect, arrowPoint2Vect).normalize();\r\n arrow1arrow2Vect.x = Math.round(arrow1arrow2Vect.x);\r\n arrow1arrow2Vect.y = Math.round(arrow1arrow2Vect.y);\r\n arrow1arrow2Vect.z = Math.round(arrow1arrow2Vect.z);\r\n child.userData.dimension[i].arrowPoint1[0] = newArrowPoint2Vect.x;\r\n child.userData.dimension[i].arrowPoint1[1] = newArrowPoint2Vect.y;\r\n child.userData.dimension[i].arrowPoint1[2] = newArrowPoint2Vect.z;\r\n if (arrow1arrow2Vect.x == 1 || arrow1arrow2Vect.x == -1) {\r\n if (arrow1arrow2Vect.x == 1) {\r\n child.userData.dimension[i].arrowPoint1[0] = newArrowPoint2Vect.x + child.userData.dimension[i].value;\r\n }\r\n else if (arrow1arrow2Vect.x == -1) {\r\n child.userData.dimension[i].arrowPoint1[0] = newArrowPoint2Vect.x - child.userData.dimension[i].value;\r\n }\r\n }\r\n else if (arrow1arrow2Vect.y == 1 || arrow1arrow2Vect.y == -1) {\r\n if (arrow1arrow2Vect.y == 1) {\r\n child.userData.dimension[i].arrowPoint1[1] = newArrowPoint2Vect.y + child.userData.dimension[i].value;\r\n }\r\n else if (arrow1arrow2Vect.y == -1) {\r\n child.userData.dimension[i].arrowPoint1[1] = newArrowPoint2Vect.y - child.userData.dimension[i].value;\r\n }\r\n }\r\n else if (arrow1arrow2Vect.z == 1 || arrow1arrow2Vect.z == -1) {\r\n if (arrow1arrow2Vect.z == 1) {\r\n child.userData.dimension[i].arrowPoint1[2] = newArrowPoint2Vect.z + child.userData.dimension[i].value;\r\n }\r\n else if (arrow1arrow2Vect.z == -1) {\r\n child.userData.dimension[i].arrowPoint1[2] = newArrowPoint2Vect.z - child.userData.dimension[i].value;\r\n }\r\n }\r\n }\r\n }\r\n else\r\n {\r\n cds.cadViewer.extendLinearDimensionWithTolerance(child, i);\r\n }\r\n }\r\n }\r\n cds.cadViewer.scene.remove(cube);\r\n },\r\n\r\n preProcessLinearDimension: function () { \r\n cds.cadViewer.dimensions = true;\r\n var box = cds.cadViewer.homeBoundingBox;\r\n var length = box.max.distanceTo(box.min);\r\n var extendDimensionFactor = length / 6;\r\n cds.cadViewer.sceneObject.traverse((child) => {\r\n if (child.userData.dimension != null) {\r\n cds.cadViewer.extendLinearDimension(child);\r\n for (let i = 0; i < child.userData.dimension.length; i++) {\r\n var dimensionCordinates1 = child.userData.dimension[i];\r\n if (dimensionCordinates1.type == \"Linear\") {\r\n for (let j = i + 1; j < child.userData.dimension.length; j++) {\r\n var dimensionCordinates2 = child.userData.dimension[j];\r\n if (dimensionCordinates1.arrowPoint1[0] == dimensionCordinates2.arrowPoint1[0] &&\r\n dimensionCordinates1.arrowPoint1[1] == dimensionCordinates2.arrowPoint1[1] &&\r\n dimensionCordinates1.arrowPoint1[2] == dimensionCordinates2.arrowPoint1[2]) {\r\n if (dimensionCordinates1.value > dimensionCordinates2.value) {\r\n let arrowPoint1Vect = new THREE.Vector3(dimensionCordinates1.arrowPoint1[0], dimensionCordinates1.arrowPoint1[1], dimensionCordinates1.arrowPoint1[2]);\r\n let witnessLinePoint1 = new THREE.Vector3(dimensionCordinates1.witnessLinePoint1[0], dimensionCordinates1.witnessLinePoint1[1], dimensionCordinates1.witnessLinePoint1[2]);\r\n var arrow1witness1Dir = new THREE.Vector3().subVectors(arrowPoint1Vect, witnessLinePoint1).normalize();\r\n\r\n if (arrow1witness1Dir.x == 1 || arrow1witness1Dir.x == -1) {\r\n if (arrow1witness1Dir.x == 1) {\r\n child.userData.dimension[i].arrowPoint1[0] = child.userData.dimension[i].arrowPoint1[0] + extendDimensionFactor;\r\n child.userData.dimension[i].arrowPoint2[0] = child.userData.dimension[i].arrowPoint2[0] + extendDimensionFactor;\r\n }\r\n else if (arrow1witness1Dir.x == -1) {\r\n child.userData.dimension[i].arrowPoint1[0] = child.userData.dimension[i].arrowPoint1[0] - extendDimensionFactor;\r\n child.userData.dimension[i].arrowPoint2[0] = child.userData.dimension[i].arrowPoint2[0] - extendDimensionFactor;\r\n }\r\n }\r\n else if (arrow1witness1Dir.y == 1 || arrow1witness1Dir.y == -1) {\r\n if (arrow1witness1Dir.y == 1) {\r\n child.userData.dimension[i].arrowPoint1[1] = child.userData.dimension[i].arrowPoint1[1] + extendDimensionFactor;\r\n child.userData.dimension[i].arrowPoint2[1] = child.userData.dimension[i].arrowPoint2[1] + extendDimensionFactor;\r\n }\r\n else if (arrow1witness1Dir.y == -1) {\r\n child.userData.dimension[i].arrowPoint1[1] = child.userData.dimension[i].arrowPoint1[1] - extendDimensionFactor;\r\n child.userData.dimension[i].arrowPoint2[1] = child.userData.dimension[i].arrowPoint2[1] - extendDimensionFactor;\r\n }\r\n }\r\n else if (arrow1witness1Dir.z == 1 || arrow1witness1Dir.z == -1) {\r\n if (arrow1witness1Dir.z == 1) {\r\n child.userData.dimension[i].arrowPoint1[2] = child.userData.dimension[i].arrowPoint1[2] + extendDimensionFactor;\r\n child.userData.dimension[i].arrowPoint2[2] = child.userData.dimension[i].arrowPoint2[2] + extendDimensionFactor;\r\n }\r\n else if (arrow1witness1Dir.z == -1) {\r\n child.userData.dimension[i].arrowPoint1[2] = child.userData.dimension[i].arrowPoint1[2] - extendDimensionFactor;\r\n child.userData.dimension[i].arrowPoint2[2] = child.userData.dimension[i].arrowPoint2[2] - extendDimensionFactor;\r\n }\r\n }\r\n }\r\n else if (dimensionCordinates2.value > dimensionCordinates1.value ||\r\n dimensionCordinates1.value == dimensionCordinates2.value) {\r\n let arrowPoint1Vect = new THREE.Vector3(dimensionCordinates2.arrowPoint1[0], dimensionCordinates2.arrowPoint1[1], dimensionCordinates2.arrowPoint1[2]);\r\n let witnessLinePoint1 = new THREE.Vector3(dimensionCordinates2.witnessLinePoint1[0], dimensionCordinates2.witnessLinePoint1[1], dimensionCordinates2.witnessLinePoint1[2]);\r\n var arrow1witness1Dir = new THREE.Vector3().subVectors(arrowPoint1Vect, witnessLinePoint1).normalize();\r\n\r\n if (arrow1witness1Dir.x == 1 || arrow1witness1Dir.x == -1) {\r\n if (arrow1witness1Dir.x == 1) {\r\n child.userData.dimension[j].arrowPoint1[0] = child.userData.dimension[j].arrowPoint1[0] + extendDimensionFactor;\r\n child.userData.dimension[j].arrowPoint2[0] = child.userData.dimension[j].arrowPoint2[0] + extendDimensionFactor;\r\n }\r\n else if (arrow1witness1Dir.x == -1) {\r\n child.userData.dimension[j].arrowPoint1[0] = child.userData.dimension[j].arrowPoint1[0] - extendDimensionFactor;\r\n child.userData.dimension[j].arrowPoint2[0] = child.userData.dimension[j].arrowPoint2[0] - extendDimensionFactor;\r\n }\r\n }\r\n else if (arrow1witness1Dir.y == 1 || arrow1witness1Dir.y == -1) {\r\n if (arrow1witness1Dir.y == 1) {\r\n child.userData.dimension[j].arrowPoint1[1] = child.userData.dimension[j].arrowPoint1[1] + extendDimensionFactor;\r\n child.userData.dimension[j].arrowPoint2[1] = child.userData.dimension[j].arrowPoint2[1] + extendDimensionFactor;\r\n }\r\n else if (arrow1witness1Dir.y == -1) {\r\n child.userData.dimension[j].arrowPoint1[1] = child.userData.dimension[j].arrowPoint1[1] - extendDimensionFactor;\r\n child.userData.dimension[j].arrowPoint2[1] = child.userData.dimension[j].arrowPoint2[1] - extendDimensionFactor;\r\n }\r\n }\r\n else if (arrow1witness1Dir.z == 1 || arrow1witness1Dir.z == -1) {\r\n if (arrow1witness1Dir.x == 1) {\r\n child.userData.dimension[j].arrowPoint1[2] = child.userData.dimension[j].arrowPoint1[2] + extendDimensionFactor;\r\n child.userData.dimension[j].arrowPoint2[2] = child.userData.dimension[j].arrowPoint2[2] + extendDimensionFactor;\r\n }\r\n else if (arrow1witness1Dir.x == -1) {\r\n child.userData.dimension[j].arrowPoint1[2] = child.userData.dimension[j].arrowPoint1[2] - extendDimensionFactor;\r\n child.userData.dimension[j].arrowPoint2[2] = child.userData.dimension[j].arrowPoint2[2] - extendDimensionFactor;\r\n }\r\n }\r\n }\r\n }\r\n else if (dimensionCordinates1.arrowPoint2[0] == dimensionCordinates2.arrowPoint2[0] &&\r\n dimensionCordinates1.arrowPoint2[1] == dimensionCordinates2.arrowPoint2[1] &&\r\n dimensionCordinates1.arrowPoint2[2] == dimensionCordinates2.arrowPoint2[2]) {\r\n if (dimensionCordinates1.value > dimensionCordinates2.value) {\r\n let arrowPoint2Vect = new THREE.Vector3(dimensionCordinates1.arrowPoint2[0], dimensionCordinates1.arrowPoint2[1], dimensionCordinates1.arrowPoint2[2]);\r\n let witnessLinePoint2 = new THREE.Vector3(dimensionCordinates1.witnessLinePoint2[0], dimensionCordinates1.witnessLinePoint2[1], dimensionCordinates1.witnessLinePoint2[2]);\r\n var arrow2witness2Dir = new THREE.Vector3().subVectors(arrowPoint2Vect, witnessLinePoint2).normalize();\r\n\r\n if (arrow2witness2Dir.x == 1 || arrow2witness2Dir.x == -1) {\r\n if (arrow2witness2Dir.x == 1) {\r\n child.userData.dimension[i].arrowPoint1[0] = child.userData.dimension[i].arrowPoint1[0] + extendDimensionFactor;\r\n child.userData.dimension[i].arrowPoint2[0] = child.userData.dimension[i].arrowPoint2[0] + extendDimensionFactor;\r\n }\r\n else if (arrow2witness2Dir.x == -1) {\r\n child.userData.dimension[i].arrowPoint1[0] = child.userData.dimension[i].arrowPoint1[0] - extendDimensionFactor;\r\n child.userData.dimension[i].arrowPoint2[0] = child.userData.dimension[i].arrowPoint2[0] - extendDimensionFactor;\r\n }\r\n }\r\n else if (arrow2witness2Dir.y == 1 || arrow2witness2Dir.y == -1) {\r\n if (arrow2witness2Dir.y == 1) {\r\n child.userData.dimension[i].arrowPoint1[1] = child.userData.dimension[i].arrowPoint1[1] + extendDimensionFactor;\r\n child.userData.dimension[i].arrowPoint2[1] = child.userData.dimension[i].arrowPoint2[1] + extendDimensionFactor;\r\n }\r\n else if (arrow2witness2Dir.y == -1) {\r\n child.userData.dimension[i].arrowPoint1[1] = child.userData.dimension[i].arrowPoint1[1] - extendDimensionFactor;\r\n child.userData.dimension[i].arrowPoint2[1] = child.userData.dimension[i].arrowPoint2[1] - extendDimensionFactor;\r\n }\r\n }\r\n else if (arrow2witness2Dir.z == 1 || arrow2witness2Dir.z == -1) {\r\n if (arrow2witness2Dir.z == 1) {\r\n child.userData.dimension[i].arrowPoint1[2] = child.userData.dimension[i].arrowPoint1[2] + extendDimensionFactor;\r\n child.userData.dimension[i].arrowPoint2[2] = child.userData.dimension[i].arrowPoint2[2] + extendDimensionFactor;\r\n }\r\n else if (arrow2witness2Dir.z == -1) {\r\n child.userData.dimension[i].arrowPoint1[2] = child.userData.dimension[i].arrowPoint1[2] - extendDimensionFactor;\r\n child.userData.dimension[i].arrowPoint2[2] = child.userData.dimension[i].arrowPoint2[2] - extendDimensionFactor;\r\n }\r\n }\r\n }\r\n else if (dimensionCordinates2.value > dimensionCordinates1.value ||\r\n dimensionCordinates1.value == dimensionCordinates2.value) {\r\n let arrowPoint2Vect = new THREE.Vector3(dimensionCordinates2.arrowPoint2[0], dimensionCordinates2.arrowPoint2[1], dimensionCordinates2.arrowPoint2[2]);\r\n let witnessLinePoint2 = new THREE.Vector3(dimensionCordinates2.witnessLinePoint2[0], dimensionCordinates2.witnessLinePoint2[1], dimensionCordinates2.witnessLinePoint2[2]);\r\n var arrow2witness2Dir = new THREE.Vector3().subVectors(arrowPoint2Vect, witnessLinePoint2).normalize();\r\n\r\n if (arrow2witness2Dir.x == 1 || arrow2witness2Dir.x == -1) {\r\n if (arrow2witness2Dir.x == 1) {\r\n child.userData.dimension[j].arrowPoint1[0] = child.userData.dimension[j].arrowPoint1[0] + extendDimensionFactor;\r\n child.userData.dimension[j].arrowPoint2[0] = child.userData.dimension[j].arrowPoint2[0] + extendDimensionFactor;\r\n }\r\n else if (arrow2witness2Dir.x == -1) {\r\n child.userData.dimension[j].arrowPoint1[0] = child.userData.dimension[j].arrowPoint1[0] - extendDimensionFactor;\r\n child.userData.dimension[j].arrowPoint2[0] = child.userData.dimension[j].arrowPoint2[0] - extendDimensionFactor;\r\n }\r\n }\r\n else if (arrow2witness2Dir.y == 1 || arrow2witness2Dir.y == -1) {\r\n if (arrow2witness2Dir.y == 1) {\r\n child.userData.dimension[j].arrowPoint1[1] = child.userData.dimension[j].arrowPoint1[1] + extendDimensionFactor;\r\n child.userData.dimension[j].arrowPoint2[1] = child.userData.dimension[j].arrowPoint2[1] + extendDimensionFactor;\r\n }\r\n else if (arrow2witness2Dir.y == -1) {\r\n child.userData.dimension[j].arrowPoint1[1] = child.userData.dimension[j].arrowPoint1[1] - extendDimensionFactor;\r\n child.userData.dimension[j].arrowPoint2[1] = child.userData.dimension[j].arrowPoint2[1] - extendDimensionFactor;\r\n }\r\n }\r\n else if (arrow2witness2Dir.z == 1 || arrow2witness2Dir.z == -1) {\r\n if (arrow2witness2Dir.z == 1) {\r\n child.userData.dimension[j].arrowPoint1[2] = child.userData.dimension[j].arrowPoint1[2] + extendDimensionFactor;\r\n child.userData.dimension[j].arrowPoint2[2] = child.userData.dimension[j].arrowPoint2[2] + extendDimensionFactor;\r\n }\r\n else if (arrow2witness2Dir.z == -1) {\r\n child.userData.dimension[j].arrowPoint1[2] = child.userData.dimension[j].arrowPoint1[2] - extendDimensionFactor;\r\n child.userData.dimension[j].arrowPoint2[2] = child.userData.dimension[j].arrowPoint2[2] - extendDimensionFactor;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n })\r\n },\r\n\r\n isLinearDimensionOnModelWithTolerance: function (hits1, hits2, arrowPoint1Vect, arrowPoint2Vect,\r\n witnessLinePoint1, witnessLinePoint2, dimensionCordinates) {\r\n\r\n var arrow1arrow2Dir = new THREE.Vector3().subVectors(arrowPoint1Vect, arrowPoint2Vect).normalize();\r\n var factor = dimensionCordinates.value / 100;\r\n if (hits1.length == 0) {\r\n if (arrow1arrow2Dir.x == 1 || arrow1arrow2Dir.x == -1) {\r\n arrowPoint1Vect.x = arrowPoint1Vect.x + factor;\r\n witnessLinePoint1.x = witnessLinePoint1.x + factor;\r\n }\r\n else if (arrow1arrow2Dir.y == 1 || arrow1arrow2Dir.y == -1) {\r\n arrowPoint1Vect.y = arrowPoint1Vect.y + factor;\r\n witnessLinePoint1.y = witnessLinePoint1.y + factor;\r\n }\r\n else if (arrow1arrow2Dir.z == 1 || arrow1arrow2Dir.z == -1) {\r\n arrowPoint1Vect.z = arrowPoint1Vect.z + factor;\r\n witnessLinePoint1.z = witnessLinePoint1.z + factor;\r\n }\r\n }\r\n if (hits2.length == 0) {\r\n if (arrow1arrow2Dir.x == 1 || arrow1arrow2Dir.x == -1) {\r\n arrowPoint2Vect.x = arrowPoint2Vect.x - factor;\r\n witnessLinePoint2.x = witnessLinePoint2.x - factor\r\n }\r\n else if (arrow1arrow2Dir.y == 1 || arrow1arrow2Dir.y == -1) {\r\n arrowPoint2Vect.y = arrowPoint2Vect.y - factor;\r\n witnessLinePoint2.y = witnessLinePoint2.y - factor;\r\n }\r\n else if (arrow1arrow2Dir.z == 1 || arrow1arrow2Dir.zDimension == -1) {\r\n arrowPoint2Vect.z = arrowPoint2Vect.z - factor;\r\n witnessLinePoint2.z = witnessLinePoint2.z - factor;\r\n }\r\n }\r\n\r\n var arrow1witness1Dir = new THREE.Vector3().subVectors(witnessLinePoint1, arrowPoint1Vect).normalize();\r\n var arrow2witness2Dir = new THREE.Vector3().subVectors(witnessLinePoint2, arrowPoint2Vect).normalize();\r\n\r\n var raycaster1 = new THREE.Raycaster(arrowPoint1Vect, arrow1witness1Dir.clone(), 0, Number.POSITIVE_INFINITY);\r\n hits1 = raycaster1.intersectObject(cds.cadViewer.sceneObject, true);\r\n\r\n\r\n var raycaster2 = new THREE.Raycaster(arrowPoint2Vect, arrow2witness2Dir.clone(), 0, Number.POSITIVE_INFINITY);\r\n hits2 = raycaster2.intersectObject(cds.cadViewer.sceneObject, true);\r\n if (hits1.length > 0 || hits2.length > 0) {\r\n var newwitnessLinePoint1 = witnessLinePoint1;\r\n var newwitnessLinePoint2 = witnessLinePoint2;\r\n if (hits1.length > 0) {\r\n newwitnessLinePoint1 = hits1[0].point;\r\n }\r\n if (hits2.length > 0) {\r\n newwitnessLinePoint2 = hits2[0].point;\r\n }\r\n\r\n dimensionCordinates.arrowPoint1[0] = arrowPoint1Vect.x;\r\n dimensionCordinates.arrowPoint1[1] = arrowPoint1Vect.y;\r\n dimensionCordinates.arrowPoint1[2] = arrowPoint1Vect.z;\r\n\r\n dimensionCordinates.arrowPoint2[0] = arrowPoint2Vect.x;\r\n dimensionCordinates.arrowPoint2[1] = arrowPoint2Vect.y;\r\n dimensionCordinates.arrowPoint2[2] = arrowPoint2Vect.z;\r\n\r\n dimensionCordinates.witnessLinePoint1[0] = newwitnessLinePoint1.x;\r\n dimensionCordinates.witnessLinePoint1[1] = newwitnessLinePoint1.y;\r\n dimensionCordinates.witnessLinePoint1[2] = newwitnessLinePoint1.z;\r\n\r\n dimensionCordinates.witnessLinePoint2[0] = newwitnessLinePoint2.x;\r\n dimensionCordinates.witnessLinePoint2[1] = newwitnessLinePoint2.y;\r\n dimensionCordinates.witnessLinePoint2[2] = newwitnessLinePoint2.z;\r\n \r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n },\r\n \r\n isLinearDimensionOnModel: function (arrowPoint1Vect, arrowPoint2Vect,\r\n witnessLinePoint1, witnessLinePoint2, dimensionCordinates) {\r\n\r\n var arrow1witness1Dir = new THREE.Vector3().subVectors(witnessLinePoint1, arrowPoint1Vect).normalize();\r\n var arrow2witness2Dir = new THREE.Vector3().subVectors(witnessLinePoint2, arrowPoint2Vect).normalize();\r\n\r\n var raycaster1 = new THREE.Raycaster(arrowPoint1Vect, arrow1witness1Dir.clone(), 0, Number.POSITIVE_INFINITY);\r\n var hits1 = raycaster1.intersectObject(cds.cadViewer.sceneObject, true);\r\n\r\n var raycaster2 = new THREE.Raycaster(arrowPoint2Vect, arrow2witness2Dir.clone(), 0, Number.POSITIVE_INFINITY);\r\n var hits2 = raycaster2.intersectObject(cds.cadViewer.sceneObject, true);\r\n var factor = dimensionCordinates.value / 100;\r\n if (hits1.length > 0 || hits2.length > 0) {\r\n var newwitnessLinePoint1 = witnessLinePoint1;\r\n var newwitnessLinePoint2 = witnessLinePoint2;\r\n if (hits1.length > 0) {\r\n newwitnessLinePoint1 = hits1[0].point;\r\n }\r\n if (hits2.length > 0) {\r\n newwitnessLinePoint2 = hits2[0].point;\r\n }\r\n if(hits1.length <= 0)\r\n {\r\n var arrow1arrow2Dir = new THREE.Vector3().subVectors(arrowPoint1Vect, arrowPoint2Vect).normalize();\r\n\r\n if (arrow1arrow2Dir.x == 1 || arrow1arrow2Dir.x == -1) {\r\n arrowPoint1Vect.x = arrowPoint1Vect.x + factor;\r\n witnessLinePoint1.x = witnessLinePoint1.x + factor;\r\n }\r\n else if (arrow1arrow2Dir.y == 1 || arrow1arrow2Dir.y == -1) {\r\n arrowPoint1Vect.y = arrowPoint1Vect.y + factor;\r\n witnessLinePoint1.y = witnessLinePoint1.y + factor;\r\n }\r\n else if (arrow1arrow2Dir.z == 1 || arrow1arrow2Dir.z == -1) {\r\n arrowPoint1Vect.z = arrowPoint1Vect.z + factor;\r\n witnessLinePoint1.z = witnessLinePoint1.z + factor;\r\n }\r\n\r\n arrow1witness1Dir = new THREE.Vector3().subVectors(witnessLinePoint1, arrowPoint1Vect).normalize();\r\n\r\n raycaster1 = new THREE.Raycaster(arrowPoint1Vect, arrow1witness1Dir.clone(), 0, Number.POSITIVE_INFINITY);\r\n hits1 = raycaster1.intersectObject(cds.cadViewer.sceneObject, true);\r\n\r\n if (hits1.length > 0) {\r\n newwitnessLinePoint1 = hits1[0].point;\r\n if (arrow1arrow2Dir.x == 1 || arrow1arrow2Dir.x == -1) {\r\n arrowPoint1Vect.x = arrowPoint1Vect.x - factor;\r\n newwitnessLinePoint1.x = newwitnessLinePoint1.x - factor;\r\n }\r\n else if (arrow1arrow2Dir.y == 1 || arrow1arrow2Dir.y == -1) {\r\n arrowPoint1Vect.y = arrowPoint1Vect.y - factor;\r\n newwitnessLinePoint1.y = newwitnessLinePoint1.y - factor;\r\n }\r\n else if (arrow1arrow2Dir.z == 1 || arrow1arrow2Dir.z == -1) {\r\n arrowPoint1Vect.z = arrowPoint1Vect.z - factor;\r\n newwitnessLinePoint1.z = newwitnessLinePoint1.z - factor;\r\n }\r\n }\r\n }\r\n if(hits2.length <= 0)\r\n {\r\n var arrow1arrow2Dir = new THREE.Vector3().subVectors(arrowPoint1Vect, arrowPoint2Vect).normalize();\r\n\r\n if (arrow1arrow2Dir.x == 1 || arrow1arrow2Dir.x == -1) {\r\n arrowPoint2Vect.x = arrowPoint2Vect.x - factor;\r\n witnessLinePoint2.x = witnessLinePoint2.x - factor;\r\n }\r\n else if (arrow1arrow2Dir.y == 1 || arrow1arrow2Dir.y == -1) {\r\n arrowPoint2Vect.y = arrowPoint2Vect.y - factor;\r\n witnessLinePoint2.y = witnessLinePoint2.y - factor;\r\n }\r\n else if (arrow1arrow2Dir.z == 1 || arrow1arrow2Dir.z == -1) {\r\n arrowPoint2Vect.z = arrowPoint2Vect.z - factor;\r\n witnessLinePoint2.z = witnessLinePoint2.z - factor;\r\n }\r\n arrow2witness2Dir = new THREE.Vector3().subVectors(witnessLinePoint2, arrowPoint2Vect).normalize();\r\n\r\n raycaster2 = new THREE.Raycaster(arrowPoint2Vect, arrow2witness2Dir.clone(), 0, Number.POSITIVE_INFINITY);\r\n hits2 = raycaster2.intersectObject(cds.cadViewer.sceneObject, true);\r\n if (hits2.length > 0) {\r\n newwitnessLinePoint2 = hits2[0].point;\r\n\r\n var arrow1arrow2Dir = new THREE.Vector3().subVectors(arrowPoint1Vect, arrowPoint2Vect).normalize();\r\n\r\n if (arrow1arrow2Dir.x == 1 || arrow1arrow2Dir.x == -1) {\r\n arrowPoint2Vect.x = arrowPoint2Vect.x + factor;\r\n newwitnessLinePoint2.x = newwitnessLinePoint2.x + factor;\r\n }\r\n else if (arrow1arrow2Dir.y == 1 || arrow1arrow2Dir.y == -1) {\r\n arrowPoint2Vect.y = arrowPoint2Vect.y + factor;\r\n newwitnessLinePoint2.y = newwitnessLinePoint2.y + factor;\r\n }\r\n else if (arrow1arrow2Dir.z == 1 || arrow1arrow2Dir.z == -1) {\r\n arrowPoint2Vect.z = arrowPoint2Vect.z + factor;\r\n newwitnessLinePoint2.z = newwitnessLinePoint2.z + factor;\r\n }\r\n }\r\n }\r\n\r\n dimensionCordinates.arrowPoint1[0] = arrowPoint1Vect.x;\r\n dimensionCordinates.arrowPoint1[1] = arrowPoint1Vect.y;\r\n dimensionCordinates.arrowPoint1[2] = arrowPoint1Vect.z;\r\n\r\n dimensionCordinates.arrowPoint2[0] = arrowPoint2Vect.x;\r\n dimensionCordinates.arrowPoint2[1] = arrowPoint2Vect.y;\r\n dimensionCordinates.arrowPoint2[2] = arrowPoint2Vect.z;\r\n\r\n dimensionCordinates.witnessLinePoint1[0] = newwitnessLinePoint1.x;\r\n dimensionCordinates.witnessLinePoint1[1] = newwitnessLinePoint1.y;\r\n dimensionCordinates.witnessLinePoint1[2] = newwitnessLinePoint1.z;\r\n\r\n dimensionCordinates.witnessLinePoint2[0] = newwitnessLinePoint2.x;\r\n dimensionCordinates.witnessLinePoint2[1] = newwitnessLinePoint2.y;\r\n dimensionCordinates.witnessLinePoint2[2] = newwitnessLinePoint2.z;\r\n return true;\r\n }\r\n else {\r\n var isCreated = cds.cadViewer.isLinearDimensionOnModelWithTolerance(hits1, hits2, arrowPoint1Vect, arrowPoint2Vect,\r\n witnessLinePoint1, witnessLinePoint2, dimensionCordinates);\r\n return isCreated;\r\n }\r\n },\r\n\r\n moveLinearDimensionToCenterOfModel: function () {\r\n cds.cadViewer.sceneObject.traverse((child) => {\r\n if (child.userData.dimension != null) {\r\n for (let i = 0; i < child.userData.dimension.length; i++) {\r\n var dimensionCordinates = child.userData.dimension[i];\r\n if (dimensionCordinates.type == \"Linear\") {\r\n if (dimensionCordinates.arrowPoint1 && dimensionCordinates.arrowPoint2) {\r\n if (dimensionCordinates.witnessLinePoint1 && dimensionCordinates.witnessLinePoint2) {\r\n let checkarrowPoint1Vect = new THREE.Vector3(dimensionCordinates.arrowPoint1[0], dimensionCordinates.arrowPoint1[1], dimensionCordinates.arrowPoint1[2]);\r\n let checkarrowPoint2Vect = new THREE.Vector3(dimensionCordinates.arrowPoint2[0], dimensionCordinates.arrowPoint2[1], dimensionCordinates.arrowPoint2[2]);\r\n let checkwitnessLinePoint1 = new THREE.Vector3(dimensionCordinates.witnessLinePoint1[0], dimensionCordinates.witnessLinePoint1[1], dimensionCordinates.witnessLinePoint1[2]);\r\n let checkwitnessLinePoint2 = new THREE.Vector3(dimensionCordinates.witnessLinePoint2[0], dimensionCordinates.witnessLinePoint2[1], dimensionCordinates.witnessLinePoint2[2]);\r\n\r\n var isCreated = cds.cadViewer.isLinearDimensionOnModel(checkarrowPoint1Vect, checkarrowPoint2Vect,\r\n checkwitnessLinePoint1, checkwitnessLinePoint2, dimensionCordinates);\r\n\r\n if (isCreated == false) {\r\n let arrowPoint1VectX = new THREE.Vector3(0, dimensionCordinates.arrowPoint1[1], dimensionCordinates.arrowPoint1[2]);\r\n let arrowPoint2VectX = new THREE.Vector3(0, dimensionCordinates.arrowPoint2[1], dimensionCordinates.arrowPoint2[2]);\r\n let witnessLinePoint1X = new THREE.Vector3(0, dimensionCordinates.witnessLinePoint1[1], dimensionCordinates.witnessLinePoint1[2]);\r\n let witnessLinePoint2X = new THREE.Vector3(0, dimensionCordinates.witnessLinePoint2[1], dimensionCordinates.witnessLinePoint2[2]);\r\n isCreated = cds.cadViewer.isLinearDimensionOnModel(arrowPoint1VectX, arrowPoint2VectX, witnessLinePoint1X,\r\n witnessLinePoint2X, dimensionCordinates);\r\n if (isCreated == false) {\r\n let arrowPoint1VectY = new THREE.Vector3(dimensionCordinates.arrowPoint1[0], 0, dimensionCordinates.arrowPoint1[2]);\r\n let arrowPoint2VectY = new THREE.Vector3(dimensionCordinates.arrowPoint2[0], 0, dimensionCordinates.arrowPoint2[2]);\r\n let witnessLinePoint1Y = new THREE.Vector3(dimensionCordinates.witnessLinePoint1[0], 0, dimensionCordinates.witnessLinePoint1[2]);\r\n let witnessLinePoint2Y = new THREE.Vector3(dimensionCordinates.witnessLinePoint2[0], 0, dimensionCordinates.witnessLinePoint2[2]);\r\n isCreated = cds.cadViewer.isLinearDimensionOnModel(arrowPoint1VectY, arrowPoint2VectY,\r\n witnessLinePoint1Y, witnessLinePoint2Y, dimensionCordinates);\r\n if (isCreated == false) {\r\n let arrowPoint1VectZ = new THREE.Vector3(dimensionCordinates.arrowPoint1[0], dimensionCordinates.arrowPoint1[1], 0);\r\n let arrowPoint2VectZ = new THREE.Vector3(dimensionCordinates.arrowPoint2[0], dimensionCordinates.arrowPoint2[1], 0);\r\n let witnessLinePoint1Z = new THREE.Vector3(dimensionCordinates.witnessLinePoint1[0], dimensionCordinates.witnessLinePoint1[1], 0);\r\n let witnessLinePoint2Z = new THREE.Vector3(dimensionCordinates.witnessLinePoint2[0], dimensionCordinates.witnessLinePoint2[1], 0);\r\n isCreated = cds.cadViewer.isLinearDimensionOnModel(arrowPoint1VectZ, arrowPoint2VectZ, witnessLinePoint1Z, witnessLinePoint2Z, dimensionCordinates); \r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n })\r\n },\r\n\r\n addDimensionHelpers: function (axis, bbox) {\r\n cds.cadViewer.dimensions = true; \r\n cds.cadViewer.moveLinearDimensionToCenterOfModel();\r\n cds.cadViewer.preProcessLinearDimension();\r\n cds.cadViewer.sceneObject.traverse((child) => {\r\n if (child.userData.dimension != null) {\r\n for (let i = 0; i < child.userData.dimension.length; i++) {\r\n var dimensionCordinates = child.userData.dimension[i];\r\n if (dimensionCordinates.type == \"Linear\" && dimensionCordinates.value !== 0) {\r\n if (dimensionCordinates.arrowPoint1 && dimensionCordinates.arrowPoint2) {\r\n if (dimensionCordinates.witnessLinePoint1 && dimensionCordinates.witnessLinePoint2) {\r\n let arrowPoint1Vect = new THREE.Vector3(dimensionCordinates.arrowPoint1[0], dimensionCordinates.arrowPoint1[1], dimensionCordinates.arrowPoint1[2]);\r\n let arrowPoint2Vect = new THREE.Vector3(dimensionCordinates.arrowPoint2[0], dimensionCordinates.arrowPoint2[1], dimensionCordinates.arrowPoint2[2]);\r\n let witnessLinePoint1 = new THREE.Vector3(dimensionCordinates.witnessLinePoint1[0], dimensionCordinates.witnessLinePoint1[1], dimensionCordinates.witnessLinePoint1[2]);\r\n let witnessLinePoint2 = new THREE.Vector3(dimensionCordinates.witnessLinePoint2[0], dimensionCordinates.witnessLinePoint2[1], dimensionCordinates.witnessLinePoint2[2]);\r\n\r\n cds.cadViewer.drawLinearDimensionArrowsAndWitnessLine(arrowPoint1Vect, arrowPoint2Vect,\r\n witnessLinePoint1, witnessLinePoint2, dimensionCordinates);\r\n }\r\n else {\r\n cds.cadViewer.addLinearDimensionArrows(\r\n { x1: dimensionCordinates.arrowPoint1[0], y1: dimensionCordinates.arrowPoint1[1], z1: dimensionCordinates.arrowPoint1[2] },\r\n { x2: dimensionCordinates.arrowPoint2[0], y2: dimensionCordinates.arrowPoint2[1], z2: dimensionCordinates.arrowPoint2[2] },\r\n dimensionCordinates\r\n );\r\n }\r\n }\r\n }\r\n else if (dimensionCordinates.type == \"Diameter\") {\r\n if (dimensionCordinates.arrowPoint1 && dimensionCordinates.arrowPoint2) {\r\n if (dimensionCordinates.hasElbow) {\r\n cds.cadViewer.addDiameterDimensionArrows(dimensionCordinates);\r\n cds.cadViewer.addElbowLineForDiameter(dimensionCordinates);\r\n }\r\n else {\r\n cds.cadViewer.addLinearDimensionArrows(\r\n { x1: dimensionCordinates.arrowPoint1[0], y1: dimensionCordinates.arrowPoint1[1], z1: dimensionCordinates.arrowPoint1[2] },\r\n { x2: dimensionCordinates.arrowPoint2[0], y2: dimensionCordinates.arrowPoint2[1], z2: dimensionCordinates.arrowPoint2[2] },\r\n dimensionCordinates\r\n );\r\n }\r\n }\r\n }\r\n else if (dimensionCordinates.type == \"Radius\") \r\n {\r\n if (dimensionCordinates.hasElbow) {\r\n cds.cadViewer.addRadiusDimensionArrows(dimensionCordinates);\r\n cds.cadViewer.addElbowLineForRadius(dimensionCordinates);\r\n } \r\n }\r\n else if (dimensionCordinates.type == \"Angle\")\r\n {\r\n cds.cadViewer.addAngleDimension(dimensionCordinates);\r\n } \r\n } \r\n } \r\n })\r\n },\r\n\r\n addAngleDimension: function (dimensionCordinates) { \r\n let arrowPoint1Vect = new THREE.Vector3(dimensionCordinates.arrowPoint1[0], dimensionCordinates.arrowPoint1[1], dimensionCordinates.arrowPoint1[2]);\r\n let arrowPoint2Vect = new THREE.Vector3(dimensionCordinates.arrowPoint2[0], dimensionCordinates.arrowPoint2[1], dimensionCordinates.arrowPoint2[2]);\r\n let witnessLinePoint1 = new THREE.Vector3(dimensionCordinates.witnessLinePoint1[0], dimensionCordinates.witnessLinePoint1[1], dimensionCordinates.witnessLinePoint1[2]);\r\n let textLocation = new THREE.Vector3(dimensionCordinates.location[0], dimensionCordinates.location[1], dimensionCordinates.location[2]);\r\n \r\n cds.cadViewer.addLinearWitnessLine(\r\n { x1: arrowPoint1Vect.x, y1: arrowPoint1Vect.y, z1: arrowPoint1Vect.z },\r\n { x2: witnessLinePoint1.x, y2: witnessLinePoint1.y, z2: witnessLinePoint1.z }\r\n );\r\n\r\n cds.cadViewer.addLinearWitnessLine(\r\n { x1: arrowPoint2Vect.x, y1: arrowPoint2Vect.y, z1: arrowPoint2Vect.z },\r\n { x2: witnessLinePoint1.x, y2: witnessLinePoint1.y, z2: witnessLinePoint1.z }\r\n );\r\n \r\n cds.cadViewer.drawArcWithArrow(witnessLinePoint1, arrowPoint1Vect, arrowPoint2Vect); \r\n\r\n cds.cadViewer.target.push({ target: textLocation.clone(), axis: \"x\", length: dimensionCordinates.value.toFixed(2) }); \r\n },\r\n\r\n drawArcWithArrow: function (centerIn, start, end) {\r\n // Logic to create Arc using lines \r\n let vM = new THREE.Vector3().addVectors(start, end).multiplyScalar(0.5);\r\n let dir = new THREE.Vector3().subVectors(end, start).normalize();\r\n \r\n let center = new THREE.Vector3().subVectors(vM, centerIn);\r\n let dotProduct = center.dot(dir);\r\n center.copy(dir).multiplyScalar(dotProduct).add(centerIn); // get a center of an arc\r\n \r\n let vS = new THREE.Vector3().subVectors(start, center);\r\n let vE = new THREE.Vector3().subVectors(end, center);\r\n let angle = vS.angleTo(vE); // andgle between start and end, relatively to the new center\r\n \r\n let divisions = 100;\r\n let aStep = angle / divisions;\r\n let pts = [];\r\n let vecTemp = new THREE.Vector3();\r\n let tri = new THREE.Triangle(start, center, end);\r\n let axis = new THREE.Vector3();\r\n axis = tri.normal();\r\n for (let i = 0; i <= divisions; i++) {\r\n vecTemp.copy(vE);\r\n vecTemp.applyAxisAngle(axis, aStep * i);\r\n pts.push(vecTemp.clone()); \r\n }\r\n \r\n let g = new THREE.BufferGeometry().setFromPoints(pts);\r\n let m = new THREE.LineDashedMaterial({ color: 0x000000 });\r\n let l = new THREE.Line(g, m);\r\n l.position.copy(center);\r\n cds.cadViewer.dimension.add(l);\r\n\r\n // Create Arrow Head \r\n var box = cds.cadViewer.homeBoundingBox;\r\n var length = box.max.distanceTo(box.min);\r\n var arrowSizeFactor = length / 65;\r\n\r\n // Arrow 1\r\n let arrow1Vect1 = new THREE.Vector3(pts[0].x,pts[0].y, pts[0].z);\r\n let arrow1Vect2 = new THREE.Vector3(pts[10].x,pts[10].y, pts[10].z);\r\n let drctn = new THREE.Vector3().subVectors(arrow1Vect1, arrow1Vect2).normalize(); \r\n var coneGeometry = new THREE.CylinderGeometry(0, 0.5, 1, 5, 1);\r\n\t\tconeGeometry.translate(0, - 0.5, 0 );\r\n var cone = new THREE.Mesh( coneGeometry, new THREE.MeshBasicMaterial( { color: 0x000000 } ) );\r\n\t\tcone.matrixAutoUpdate = false;\r\n cone.position.copy(end);\r\n cone.scale.set( arrowSizeFactor/2, arrowSizeFactor, arrowSizeFactor/2 );\r\n cds.cadViewer.setConeDirection(cone, drctn);\r\n\t\tcone.updateMatrix();\r\n cds.cadViewer.dimension.add(cone);\r\n\r\n // Arrow 2\r\n arrow1Vect1 = new THREE.Vector3(pts[pts.length - 1].x,pts[pts.length - 1].y, pts[pts.length - 1].z);\r\n arrow1Vect2 = new THREE.Vector3(pts[pts.length - 10].x,pts[pts.length - 10].y, pts[pts.length - 10].z);\r\n drctn = new THREE.Vector3().subVectors(arrow1Vect1, arrow1Vect2).normalize(); \r\n coneGeometry = new THREE.CylinderGeometry(0, 0.5, 1, 5, 1);\r\n\t\tconeGeometry.translate(0, - 0.5, 0 );\r\n cone = new THREE.Mesh( coneGeometry, new THREE.MeshBasicMaterial( { color: 0x000000 } ) );\r\n\t\tcone.matrixAutoUpdate = false;\r\n cone.position.copy(start);\r\n cone.scale.set( arrowSizeFactor/2, arrowSizeFactor, arrowSizeFactor/2 );\r\n cds.cadViewer.setConeDirection(cone, drctn);\r\n\t\tcone.updateMatrix();\r\n cds.cadViewer.dimension.add(cone);\r\n },\r\n\r\n setConeDirection: function ( cone, dir ) {\r\n\t\t// dir is assumed to be normalized\r\n\t\tif ( dir.y > 0.99999 ) {\r\n\t\t\tcone.quaternion.set( 0, 0, 0, 1 );\r\n\t\t} else if ( dir.y < - 0.99999 ) {\r\n\t\t\tcone.quaternion.set( 1, 0, 0, 0 );\r\n\t\t} else {\r\n let axis = new THREE.Vector3();\r\n\t\t\taxis.set( dir.z, 0, - dir.x ).normalize();\r\n\t\t\tconst radians = Math.acos( dir.y );\r\n\t\t\tcone.quaternion.setFromAxisAngle( axis, radians );\r\n\t\t}\r\n\t},\r\n\r\n addLinearDimensionArrows: function ({ x1, y1, z1 }, { x2, y2, z2 }, dimensionCordinates) {\r\n var box = cds.cadViewer.homeBoundingBox;\r\n var length = box.max.distanceTo(box.min);\r\n var arrowSizeFactor = length / 65;\r\n let ori1 = new THREE.Vector3(x1, y1, z1);\r\n let ori2 = new THREE.Vector3(x2, y2, z2);\r\n let hx = 0x000000;\r\n let midPoint = new THREE.Vector3((ori1.x + ori2.x) / 2, (ori1.y + ori2.y) / 2, (ori1.z + ori2.z) / 2);\r\n let drctn = new THREE.Vector3().subVectors(ori2, ori1).normalize();\r\n let dimensionLength = dimensionCordinates.value;\r\n let arrowLength = dimensionLength / 2;\r\n let arrowHelper = new THREE.ArrowHelper(drctn, ori1, arrowLength, hx, arrowSizeFactor, arrowSizeFactor/2);\r\n arrowHelper.position.copy(midPoint);\r\n cds.cadViewer.dimension.add(arrowHelper);\r\n drctn.negate();\r\n let arrowHelperNeg = new THREE.ArrowHelper(drctn, ori2, arrowLength, hx, arrowSizeFactor, arrowSizeFactor/2);\r\n arrowHelperNeg.position.copy(midPoint);\r\n cds.cadViewer.dimension.add(arrowHelperNeg);\r\n if(dimensionCordinates.type == \"Linear\")\r\n {\r\n if(dimensionCordinates.hasElbow)\r\n {\r\n let arrowpoint2Vect = new THREE.Vector3(dimensionCordinates.arrowPoint2[0],\r\n dimensionCordinates.arrowPoint2[1], dimensionCordinates.arrowPoint2[2]);\r\n let locationVect = new THREE.Vector3(dimensionCordinates.location[0], \r\n dimensionCordinates.location[1], dimensionCordinates.location[2]);\r\n let drctnvect = new THREE.Vector3().subVectors(locationVect, arrowpoint2Vect);\r\n let dist = arrowpoint2Vect.distanceTo(locationVect);\r\n locationVect.x = ori2.x + drctnvect.x;\r\n locationVect.y = ori2.y + drctnvect.y;\r\n locationVect.z = ori2.z + drctnvect.z;\r\n cds.cadViewer.addLinearWitnessLine(\r\n { x1: locationVect.x, y1: locationVect.y, z1: locationVect.z },\r\n { x2: ori2.x, y2: ori2.y, z2: ori2.z }\r\n );\r\n let newlocation = new THREE.Vector3(locationVect.x, locationVect.y, locationVect.z);\r\n newlocation.z = newlocation.z + dist / 2;\r\n cds.cadViewer.addLinearWitnessLine(\r\n { x1: locationVect.x, y1: locationVect.y, z1: locationVect.z },\r\n { x2: newlocation.x, y2: newlocation.y, z2: newlocation.z }\r\n );\r\n cds.cadViewer.target.push({ target: newlocation.clone(), axis: \"x\", length: dimensionLength.toFixed(2) });\r\n }\r\n else\r\n {\r\n cds.cadViewer.target.push({ target: midPoint.clone(), axis: \"x\", length: dimensionLength.toFixed(2) });\r\n }\r\n }\r\n else if(dimensionCordinates.type == \"Diameter\")\r\n {\r\n cds.cadViewer.target.push({ target: target.clone(), axis: \"x\", length: \"Ø \" + dimensionLength.toFixed(2) });\r\n }\r\n },\r\n\r\n addLinearWitnessLine: function ({ x1, y1, z1 }, { x2, y2, z2 }) {\r\n\r\n let matPoints = new THREE.LineBasicMaterial({ color: 0x000000 });\r\n let pts = [];\r\n pts.push(new THREE.Vector3(x1, y1, z1));\r\n pts.push(new THREE.Vector3(x2, y2, z2));\r\n let geo = new THREE.BufferGeometry().setFromPoints(pts);\r\n let line = new THREE.Line(geo, matPoints);\r\n cds.cadViewer.dimension.add(line);\r\n },\r\n\r\n addDiameterDimensionArrows: function (dimensionCordinates) {\r\n var box = cds.cadViewer.homeBoundingBox;\r\n var length = box.max.distanceTo(box.min);\r\n var arrowSizeFactor = length / 65;\r\n let ori1 = new THREE.Vector3(dimensionCordinates.arrowPoint1[0],\r\n dimensionCordinates.arrowPoint1[1], dimensionCordinates.arrowPoint1[2]);\r\n let ori2 = new THREE.Vector3(dimensionCordinates.arrowPoint2[0],\r\n dimensionCordinates.arrowPoint2[1], dimensionCordinates.arrowPoint2[2]);\r\n let hx = 0x000000;\r\n let midPoint = new THREE.Vector3((ori1.x + ori2.x) / 2, (ori1.y + ori2.y) / 2, (ori1.z + ori2.z) / 2);\r\n let drctn = new THREE.Vector3().subVectors(ori2, ori1).normalize();\r\n let dimensionLength = dimensionCordinates.value;\r\n let arrowLength = dimensionLength / 2;\r\n let arrowHelper = new THREE.ArrowHelper(drctn, ori1, arrowLength, hx, arrowSizeFactor, arrowSizeFactor/2);\r\n arrowHelper.position.copy(midPoint);\r\n cds.cadViewer.dimension.add(arrowHelper);\r\n drctn.negate();\r\n let arrowHelperNeg = new THREE.ArrowHelper(drctn, ori2, arrowLength, hx, arrowSizeFactor, arrowSizeFactor/2);\r\n arrowHelperNeg.position.copy(midPoint);\r\n cds.cadViewer.dimension.add(arrowHelperNeg);\r\n },\r\n\r\n addRadiusDimensionArrows: function (dimensionCordinates) {\r\n if (dimensionCordinates.hasElbow && dimensionCordinates.arrowPoint1) {\r\n var box = cds.cadViewer.homeBoundingBox;\r\n var length = box.max.distanceTo(box.min);\r\n var arrowSizeFactor = length / 65;\r\n let ori1 = new THREE.Vector3(dimensionCordinates.arrowPoint1[0],\r\n dimensionCordinates.arrowPoint1[1], dimensionCordinates.arrowPoint1[2]);\r\n let ori2 = new THREE.Vector3(dimensionCordinates.location[0],\r\n dimensionCordinates.location[1], dimensionCordinates.location[2]);\r\n let hx = 0x000000;\r\n let drctn = new THREE.Vector3().subVectors(ori1, ori2).normalize();\r\n let dimensionLength = ori1.distanceTo(ori2);\r\n let arrowHelper = new THREE.ArrowHelper(drctn, ori1, dimensionLength, hx, arrowSizeFactor, arrowSizeFactor/2);\r\n arrowHelper.position.copy(ori2);\r\n cds.cadViewer.dimension.add(arrowHelper);\r\n }\r\n },\r\n\r\n addElbowLineForDiameter: function (dimensionCordinates, symbol) {\r\n\r\n let matPoints = new THREE.LineBasicMaterial({ color: 0x000000 });\r\n let pts = [];\r\n let locPnt = new THREE.Vector3(dimensionCordinates.location[0],\r\n dimensionCordinates.location[1], dimensionCordinates.location[2]);\r\n\r\n let arrowPnt;\r\n if (dimensionCordinates.arrowPoint2 == undefined) {\r\n arrowPnt = new THREE.Vector3(dimensionCordinates.arrowPoint1[0],\r\n dimensionCordinates.arrowPoint1[1], dimensionCordinates.arrowPoint1[2])\r\n }\r\n else {\r\n arrowPnt = new THREE.Vector3(dimensionCordinates.arrowPoint2[0],\r\n dimensionCordinates.arrowPoint2[1], dimensionCordinates.arrowPoint2[2])\r\n }\r\n pts.push(locPnt);\r\n pts.push(arrowPnt);\r\n let geo = new THREE.BufferGeometry().setFromPoints(pts);\r\n let line = new THREE.Line(geo, matPoints);\r\n cds.cadViewer.dimension.add(line);\r\n\r\n let target = new THREE.Vector3(locPnt.x, locPnt.y, locPnt.z);\r\n if (dimensionCordinates.elbowLength > 0) {\r\n target.z = target.z + dimensionCordinates.elbowLength;\r\n }\r\n else if (dimensionCordinates.elbowLength < 0) {\r\n target.z = target.z + dimensionCordinates.elbowLength;\r\n }\r\n pts.clear;\r\n pts.push(locPnt);\r\n pts.push(target);\r\n geo = new THREE.BufferGeometry().setFromPoints(pts);\r\n line = new THREE.Line(geo, matPoints);\r\n cds.cadViewer.dimension.add(line);\r\n cds.cadViewer.target.push({ target: target.clone(), axis: \"x\", length: \"Ø \" + dimensionCordinates.value.toFixed(2) });\r\n },\r\n\r\n addElbowLineForRadius: function (dimensionCordinates, symbol) {\r\n\r\n let matPoints = new THREE.LineBasicMaterial({ color: 0x000000 });\r\n let pts = [];\r\n let locPnt = new THREE.Vector3(dimensionCordinates.location[0],\r\n dimensionCordinates.location[1], dimensionCordinates.location[2]);\r\n\r\n let arrowPnt = new THREE.Vector3(dimensionCordinates.arrowPoint1[0],\r\n dimensionCordinates.arrowPoint1[1], dimensionCordinates.arrowPoint1[2]) \r\n pts.push(locPnt);\r\n pts.push(arrowPnt);\r\n let geo = new THREE.BufferGeometry().setFromPoints(pts);\r\n let line = new THREE.Line(geo, matPoints);\r\n cds.cadViewer.dimension.add(line);\r\n\r\n let target = new THREE.Vector3(locPnt.x, locPnt.y, locPnt.z);\r\n if (dimensionCordinates.elbowLength > 0) {\r\n target.z = target.z + dimensionCordinates.elbowLength;\r\n }\r\n else if (dimensionCordinates.elbowLength < 0) {\r\n target.z = target.z + dimensionCordinates.elbowLength;\r\n }\r\n pts.clear;\r\n pts.push(locPnt);\r\n pts.push(target);\r\n geo = new THREE.BufferGeometry().setFromPoints(pts);\r\n line = new THREE.Line(geo, matPoints);\r\n cds.cadViewer.dimension.add(line);\r\n cds.cadViewer.target.push({ target: target.clone(), axis: \"x\", length: \"R \" + dimensionCordinates.value.toFixed(2) });\r\n },\r\n\r\n updateDimensionsWithCamera: function () {\r\n let targets = [];\r\n let arr = JSON.parse(JSON.stringify(cds.cadViewer.target));//deep copy\r\n if(arr.length>0){\r\n for (let i = 0; i < arr.length; ++i) {\r\n targets.push({\r\n target: new THREE.Vector3(arr[i].target.x, arr[i].target.y, arr[i].target.z),\r\n axis: arr[i].axis,\r\n length: String(arr[i].length)\r\n });\r\n }\r\n let clientX, clientY, dimWidth, dimHeight, textPos;\r\n let headLength = 2;\r\n for (let i = 0; i < targets.length; i++) {\r\n let divDim = document.getElementById('divDim' + targets[i].length + i);\r\n textPos = targets[i].target.project(cds.cadViewer.camera);\r\n clientX = cds.cadViewer.renderer.domElement.offsetWidth * (textPos.x + 1) / 2 - headLength + cds.cadViewer.renderer.domElement.offsetLeft;\r\n clientY = -cds.cadViewer.renderer.domElement.offsetHeight * (textPos.y - 1) / 2 - headLength + cds.cadViewer.renderer.domElement.offsetTop;\r\n if (divDim == null) {\r\n let divDim = document.createElement('div');\r\n divDim.style = \"left: 100px; top: 100px; position: absolute; background-color: rgb(255, 255, 255); padding: 5px; border: 1px solid rgb(212, 212, 212);\";\r\n divDim.id = 'divDim' + targets[i].length + i;\r\n dimWidth = divDim.offsetWidth;\r\n dimHeight = divDim.offsetHeight;\r\n divDim.style.left = `${clientX - dimWidth / 2}px`;\r\n divDim.style.top = `${clientY - dimHeight / 2}px`;\r\n divDim.innerHTML = `${targets[i].length}`;\r\n divDim.style.display = \"block\"\r\n let dimDivParent = document.body;\t\r\n var v = document.getElementsByClassName(\"cds-cad-viewer-container\")[0];\t\r\n if (v) \r\n dimDivParent = v;\r\n dimDivParent.appendChild(divDim);\r\n cds.cadViewer.dimensionDivElements.push(divDim.id);\r\n }\r\n else {\r\n dimWidth = divDim.offsetWidth;\r\n dimHeight = divDim.offsetHeight;\r\n divDim.style.left = `${clientX - dimWidth / 2}px`;\r\n divDim.style.top = `${clientY - dimHeight / 2}px`;\r\n divDim.innerHTML = `${targets[i].length}`;\r\n }\r\n }\r\n }\r\n \r\n },\r\n\r\n toggleDimension: function () {\r\n if(cds.cadViewer.dimension.visible == true) {\r\n cds.cadViewer.dimension.visible = false;\r\n }\r\n else {\r\n cds.cadViewer.dimension.visible = true;\r\n }\r\n let arr = JSON.parse(JSON.stringify(cds.cadViewer.target));//deep copy\r\n let targets = [];\r\n for (let i = 0; i < arr.length; ++i) {\r\n targets.push({\r\n target: new THREE.Vector3(arr[i].target.x, arr[i].target.y, arr[i].target.z),\r\n axis: arr[i].axis,\r\n length: String(arr[i].length)\r\n });\r\n }\r\n for (let i = 0; i < targets.length; i++) {\r\n let id = 'divDim' + targets[i].length + i;\r\n let domElement = document.getElementById(id);\r\n if (domElement.style.display == \"block\") {\r\n domElement.style.display = \"none\";\r\n }\r\n else {\r\n domElement.style.display = \"block\";\r\n }\r\n }\r\n\r\n },\r\n\r\n /*\r\n * Toggles visual display of the model's bounding box\r\n */\r\n toggleBoundingBoxDisplay: function () {\r\n \"use strict\";\r\n this.showBoundingBox = !this.showBoundingBox;\r\n\r\n if (this.showBoundingBox) {\r\n if (this.sceneBoundingBoxIndicator === null) {\r\n this.sceneBoundingBoxIndicator = cds.cadViewer.getBoundingBoxOfObjects();\r\n this.overlayScene.add(this.sceneBoundingBoxIndicator);\r\n }\r\n } else {\r\n if (this.sceneBoundingBoxIndicator !== null) {\r\n this.overlayScene.remove(this.sceneBoundingBoxIndicator);\r\n this.sceneBoundingBoxIndicator = null;\r\n }\r\n }\r\n },\r\n\r\n /*\r\n Calculates the bounding box of non-hidden objects.\r\n */\r\n getBoundingBoxOfObjects: function () {\r\n\r\n let bbox = new THREE.Box3();\r\n let isAnotherEntity = false;\r\n\r\n this.sceneObject.traverse((mesh) => {\r\n if ((mesh.type === \"Mesh\" || mesh.type === \"Sprite\" || mesh.type === \"Line\") && mesh.visible === true) {\r\n\r\n if (mesh.type === \"Sprite\" || mesh.type === \"Line\") { // Checks Sprite Visibility\r\n isAnotherEntity = true;\r\n }\r\n\r\n let bboxOfPrt = new THREE.Box3().setFromObject(mesh);\r\n\r\n //Set the min value of bounding box\r\n bbox.min.x = (bboxOfPrt.min.x < bbox.min.x) ? bboxOfPrt.min.x : bbox.min.x;\r\n bbox.min.y = (bboxOfPrt.min.y < bbox.min.y) ? bboxOfPrt.min.y : bbox.min.y;\r\n bbox.min.z = (bboxOfPrt.min.z < bbox.min.z) ? bboxOfPrt.min.z : bbox.min.z;\r\n\r\n //Set the max value of bounding box\r\n bbox.max.x = (bboxOfPrt.max.x > bbox.max.x) ? bboxOfPrt.max.x : bbox.max.x;\r\n bbox.max.y = (bboxOfPrt.max.y > bbox.max.y) ? bboxOfPrt.max.y : bbox.max.y;\r\n bbox.max.z = (bboxOfPrt.max.z > bbox.max.z) ? bboxOfPrt.max.z : bbox.max.z;\r\n }\r\n });\r\n\r\n let box, target = new THREE.Vector3();\r\n if (isAnotherEntity) {\r\n box = new THREE.BoxHelper(cds.cadViewer.sceneObject, 0x00ff00);\r\n } else {\r\n // Creating a box with min max values of bounding box.\r\n let width = bbox.max.x - bbox.min.x;\r\n let height = bbox.max.y - bbox.min.y;\r\n let depth = bbox.max.z - bbox.min.z;\r\n\r\n let geometry = new THREE.BoxGeometry(width, height, depth);\r\n let material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });\r\n let cube = new THREE.Mesh(geometry, material);\r\n\r\n // Copy cubes position to bounding boxes center.\r\n bbox.getCenter(target);\r\n cube.position.copy(target);\r\n box = new THREE.BoxHelper(cube, 0x00ff00);\r\n\r\n }\r\n\r\n return box;\r\n },\r\n\r\n /*\r\n * Toggles visual display of the model's spin center\r\n */\r\n toggleSpinCenterDisplay: function () {\r\n \"use strict\";\r\n this.showSpinCenters = !this.showSpinCenters;\r\n\r\n if (this.showSpinCenters) {\r\n if (this.spinCenters === null) {\r\n this.spinCenters = new THREE.Object3D();\r\n\r\n // Object center\r\n var dir = new THREE.Vector3(1, 0, 0);\r\n var origin = this.sceneObject.position;\r\n var length = 30;\r\n\r\n // X\r\n this.spinCenters.add(new THREE.ArrowHelper(dir, origin, length, 0xff0000));\r\n // Y\r\n this.spinCenters.add(new THREE.ArrowHelper(new THREE.Vector3(0, 1, 0), origin, length, 0x00ff00));\r\n // Z\r\n this.spinCenters.add(new THREE.ArrowHelper(new THREE.Vector3(0, 0, 1), origin, length, 0x0000ff));\r\n\r\n this.spinCenters.add(new THREE.AxisHelper(22));\r\n this.spinCenters.traverse(function (obj) {\r\n if (obj instanceof THREE.Object3D) {\r\n obj.traverse(function (mesh) {\r\n if (mesh instanceof THREE.Mesh || mesh instanceof THREE.Line) {\r\n if (mesh.material) {\r\n mesh.material.depthTest = false;\r\n mesh.material.depthWrite = false;\r\n mesh.material.transparent = true;\r\n mesh.material.side = THREE.FrontSide;\r\n mesh.material.polygonOffset = true;\r\n mesh.material.polygonOffsetFactor = 0.2;\r\n mesh.material.polygonOffsetUnits = 1.0;\r\n }\r\n }\r\n });\r\n }\r\n });\r\n this.overlayScene.add(this.spinCenters);\r\n }\r\n\r\n } else {\r\n if (this.spinCenters !== null) {\r\n if (this.spinCenters instanceof THREE.Object3D) {\r\n this.spinCenters.traverse(function (mesh) {\r\n if (mesh instanceof THREE.Mesh) {\r\n mesh.geometry.dispose();\r\n if (mesh.material) {\r\n if (mesh.material.map) {\r\n mesh.material.map.dispose();\r\n }\r\n mesh.material.dispose();\r\n }\r\n }\r\n });\r\n }\r\n\r\n this.overlayScene.remove(this.spinCenters);\r\n this.spinCenters = null;\r\n }\r\n }\r\n },\r\n\r\n // Need to check all objects here before calling them as this sometimes\r\n // gets called before everything is initialized for some reason. This\r\n // seems to happen when the page is reloaded.\r\n render: function () {\r\n \"use strict\";\r\n\r\n //////////////////SWAPNIL//////////////////////////\r\n // if(cds.cadViewer.dimensions){\r\n // cds.cadViewer.updateDimensionsWithCamera();\r\n // }\r\n ///////////////////////////////////////////////////\r\n\r\n var l;\r\n\r\n if (cds.cadViewer.scene) {\r\n l = cds.cadViewer.scene.children.length;\r\n for (var i = 0; i < l; i++) {\r\n if (cds.cadViewer.scene.children[i].type == \"Object3D\") {\r\n var object = cds.cadViewer.scene.children[i];\r\n\r\n if (this.rotateSpeed == undefined)\r\n this.rotateSpeed = 0.0;\r\n object.rotation.y += this.rotateSpeed;\r\n }\r\n }\r\n\r\n this.spinModel(this.ModelSpinValue.x, this.ModelSpinValue.y, this.ModelSpinValue.z);\r\n }\r\n\r\n //Animation\r\n if (cds.cadViewer.hasOwnProperty('studioUtils')) {\r\n if (cds.cadViewer.studioUtils.mixer)\r\n cds.cadViewer.studioUtils.mixer.update(this.clock.getDelta());\r\n //annotation\r\n if (cds.cadViewer.studioUtils.annotationContainer.length > 0)\r\n cds.cadViewer.studioUtils.updateAnnotation();\r\n }\r\n\r\n if (this.controls && this.renderer && this.camera2 && this.camera2.position && this.scene2) {\r\n this.controls.update();\r\n this.renderer.clear(true, true, true);\r\n this.camera2.position.copy(this.camera.position);\r\n this.camera2.position.sub(this.controls.target); // added by @libe\r\n this.camera2.position.setLength(this.CAM_DISTANCE);\r\n this.camera2.lookAt(this.scene2.position);\r\n }\r\n\r\n if (this.composer && this.renderer2 && this.render) {\r\n if (this.edgeEffect.enabled) {\r\n this.composer.render();\r\n this.renderer2.render(this.scene2, this.camera2);\r\n } else {\r\n this.renderer.render(this.scene, this.camera);\r\n this.renderer2.render(this.scene2, this.camera2);\r\n //this.mouseHoverupdate();\r\n }\r\n if (this.showBoundingBox || this.showSpinCenters) {\r\n this.renderer.render(this.overlayScene, this.camera);\r\n this.renderer2.render(this.scene2, this.camera2);\r\n }\r\n }\r\n },\r\n\r\n /*\r\n * Sets the value of ambient light and spotlight\r\n * Color values should be in hex\r\n */\r\n setLightAttributes: function (ambientLightColor, spotLightColor, spotLightIntensity) {\r\n \"use strict\";\r\n this.ambientLight.color.setHex(ambientLightColor);\r\n this.spotLight.color.setHex(spotLightColor);\r\n this.spotLight.intensity = spotLightIntensity;\r\n },\r\n\r\n /*\r\n * Set current viewer width and height\r\n */\r\n getViewerSize: function () {\r\n \"use strict\";\r\n if (THREEx.FullScreen.available() && THREEx.FullScreen.activated()) {\r\n this.viewerWidth = window.innerWidth;\r\n this.viewerHeight = window.innerHeight;\r\n } else {\r\n if (document.defaultView && document.defaultView.getComputedStyle) {\r\n this.viewerWidth = parseFloat(document.defaultView.getComputedStyle(this.parentElement, null).getPropertyValue(\"width\"));\r\n this.viewerHeight = parseFloat(document.defaultView.getComputedStyle(this.parentElement, null).getPropertyValue(\"height\"));\r\n } else {\r\n this.viewerWidth = parseFloat(this.parentElement.currentStyle.width);\r\n this.viewerHeight = parseFloat(this.parentElement.currentStyle.height);\r\n }\r\n }\r\n },\r\n\r\n getPosition: function (el) {\r\n var xPos = 0;\r\n var yPos = 0;\r\n var Position = new THREE.Vector2();\r\n while (el) {\r\n if (el.tagName == \"BODY\") {\r\n // deal with browser quirks with body/window/document and page scroll\r\n var xScroll = el.scrollLeft || document.documentElement.scrollLeft;\r\n var yScroll = el.scrollTop || document.documentElement.scrollTop;\r\n\r\n xPos += (el.offsetLeft - xScroll + el.clientLeft);\r\n yPos += (el.offsetTop - yScroll + el.clientTop);\r\n } else {\r\n // for all other non-BODY elements\r\n xPos += (el.offsetLeft - el.scrollLeft + el.clientLeft);\r\n yPos += (el.offsetTop - el.scrollTop + el.clientTop);\r\n }\r\n\r\n el = el.offsetParent;\r\n }\r\n Position.x = xPos;\r\n Position.y = yPos;\r\n return Position;\r\n },\r\n\r\n getViewerCoordinateForMouseMove: function (event) {\r\n \"use strict\";\r\n var canvasPosition = new THREE.Vector2();\r\n if (THREEx.FullScreen.available() && THREEx.FullScreen.activated()) {\r\n this.viewerWidth = window.innerWidth;\r\n this.viewerHeight = window.innerHeight;\r\n this.mouse.x = (event.clientX / this.viewerWidth) * 2 - 1;\r\n this.mouse.y = -(event.clientY / this.viewerHeight) * 2 + 1;\r\n } else {\r\n if (document.defaultView && document.defaultView.getComputedStyle) {\r\n this.viewerWidth = parseFloat(document.defaultView.getComputedStyle(this.parentElement, null).getPropertyValue(\"width\"));\r\n this.viewerHeight = parseFloat(document.defaultView.getComputedStyle(this.parentElement, null).getPropertyValue(\"height\"));\r\n var myElement = document.querySelector(\"#cds-cad-viewer-renderer\");\r\n canvasPosition = this.getPosition(myElement);\r\n this.mouse.x = ((event.clientX - canvasPosition.x) / this.viewerWidth) * 2 - 1;\r\n this.mouse.y = -((event.clientY - canvasPosition.y) / this.viewerHeight) * 2 + 1;\r\n\r\n } else {\r\n this.viewerWidth = parseFloat(this.parentElement.currentStyle.width);\r\n this.viewerHeight = parseFloat(this.parentElement.currentStyle.height);\r\n }\r\n }\r\n },\r\n\r\n animate: function () {\r\n \"use strict\";\r\n cds.cadViewer.frameId = requestAnimationFrame(cds.cadViewer.animate);\r\n TWEEN.update();\r\n\r\n if (cds.cadViewer.isRenderingAllowed) {\r\n cds.cadViewer.render();\r\n }\r\n\r\n },\r\n\r\n // *********************************\r\n // EVENT HANDLERS\r\n // *********************************\r\n onMouseMove: function (event) {\r\n \"use strict\";\r\n cds.cadViewer.getViewerCoordinateForMouseMove(event);\r\n\r\n if (cds.cadViewer.mouseSubscribed != undefined) {\r\n if (cds.cadViewer.mouseSubscribed == true) {\r\n cds.cadViewer.modelSelection(event);\r\n\r\n }\r\n }\r\n var tooltipDiv = document.getElementById('tooltip');\r\n if (tooltipDiv != null) {\r\n //Set position of tooltip at mouse pointer\r\n var mousePos = cds.cadViewer.getMousePos(cds.cadViewer.renderer.domElement, event);\r\n tooltipDiv.style.left = mousePos.x + 'px';\r\n tooltipDiv.style.top = (mousePos.y + 20) + 'px';\r\n }\r\n if (cds.cadViewer.hasOwnProperty('tooltip')) {\r\n cds.cadViewer.tooltip.showTooltip(cds.cadViewer.tooltip.tooltipEnabled);\r\n }\r\n var bool = this.isMouseDown\r\n if (cds.cadViewer.isMouseDown) {\r\n cds.cadViewer.isRotated = true;\r\n }\r\n\r\n //////////////////SWAPNIL//////////////////////////\r\n if (cds.cadViewer.dimensions) {\r\n cds.cadViewer.updateDimensionsWithCamera();\r\n }\r\n\r\n if (cds.cadViewer.studioUtils?.annotationContainer.length > 0)\r\n cds.cadViewer.studioUtils.updateAnnotation();\r\n ///////////////////////////////////////////////////\r\n\r\n cds.cadViewer.mouseHoverCallback();\r\n\r\n },\r\n\r\n onMouseDown: function (event) {\r\n \"use strict\";\r\n if (event.button == 1) {\r\n cds.cadViewer.onMiddleMouseDown();\r\n }\r\n cds.cadViewer.isMouseDown = true;\r\n\r\n if (!cds.cadViewer.hasOwnProperty('dragCheckLocation')) {\r\n cds.cadViewer.dragCheckLocation = [];\r\n }\r\n cds.cadViewer.dragCheckLocation = [event.clientX, event.clientY];\r\n\r\n cds.cadViewer.enableModelSpin = false;\r\n },\r\n\r\n onMiddleMouseDown: function (event) {\r\n if (cds.cadViewer.openAssemblyInNewTab) {\r\n var intersects = cds.cadViewer.getIntersects(cds.cadViewer.sceneObject.children);\r\n\r\n if (intersects.length > 0) {\r\n\r\n var intersectedObject = intersects[0].object;\r\n var objectNode = cds.cadViewer.getImmediateAssemblyNode(intersectedObject);\r\n if (objectNode != undefined) {\r\n if (objectNode.children[0].type != \"Mesh\" && objectNode.children[0].type != \"Group\") {\r\n if (window.location.href.indexOf(\"asm\") !== -1) {\r\n window.open(cds.cadViewer.updateQueryStringParameter(window.location.href, \"asm\", objectNode.userData.compId), '_blank');\r\n } else {\r\n window.open(window.location.href + \"&asm=\" + objectNode.userData.compId, '_blank');\r\n\r\n }\r\n }\r\n }\r\n }\r\n }\r\n },\r\n\r\n updateQueryStringParameter: function (uri, key, value) {\r\n var re = new RegExp(\"([?&])\" + key + \"=.*?(&|$)\", \"i\");\r\n var separator = uri.indexOf('?') !== -1 ? \"&\" : \"?\";\r\n if (uri.match(re)) {\r\n return uri.replace(re, '$1' + key + \"=\" + value + '$2');\r\n } else {\r\n return uri + separator + key + \"=\" + value;\r\n }\r\n },\r\n\r\n onMouseUp: function (event) {\r\n \"use strict\";\r\n cds.cadViewer.isMouseDown = false;\r\n cds.cadViewer.isMouseUp = true;\r\n cds.cadViewer.isRotated = false;\r\n var performActionsOnClickEvent = true;\r\n\r\n if (event.button != 1) {\r\n if (cds.cadViewer.hasOwnProperty('dragCheckLocation')) {\r\n if (cds.cadViewer.dragCheckLocation.length > 0)\r\n if (!(event.pageX === cds.cadViewer.dragCheckLocation[0] && event.pageY === cds.cadViewer.dragCheckLocation[1])) {\r\n\r\n performActionsOnClickEvent = false;\r\n }\r\n }\r\n if (performActionsOnClickEvent) {\r\n\r\n if (THREEx.FullScreen.available() && THREEx.FullScreen.activated()) {\r\n //get mouse co-ordinate of renderer domelement in fullscreen\r\n var elem = cds.cadViewer.renderer.domElement;\r\n var boundingRect = elem.getBoundingClientRect(),\r\n x = (event.clientX - boundingRect.left) * (elem.width / boundingRect.width),\r\n y = (event.clientY - boundingRect.top) * (elem.height / boundingRect.height);\r\n\r\n var vector = new THREE.Vector3((x / window.innerWidth) * 2 - 1, -(y / window.innerHeight) * 2 + 1, 0.5);\r\n\r\n cds.cadViewer.mouse.x = vector.x;\r\n cds.cadViewer.mouse.y = vector.y;\r\n }\r\n\r\n\r\n if (!cds.cadViewer.hasOwnProperty('getFullPathOfPart')) {\r\n cds.cadViewer.getFullPathOfPart = new cds.cadViewer.GetFullPathOfPart();\r\n }\r\n\r\n var path = cds.cadViewer.getFullPathOfPart.getPathofPart();\r\n var immediateNodeName = cds.cadViewer.getFullPathOfPart.getPathOfTheImmediateChildNode();\r\n\r\n ////For kinematics on click\r\n cds.cadViewer.getPartUnderMouseForAnimation();\r\n\r\n //Mouse click callback\r\n cds.cadViewer.mouseClickCallback(path);\r\n cds.cadViewer.nodeSelectCallback(immediateNodeName);\r\n\r\n }\r\n\r\n delete cds.cadViewer.dragCheckLocation;\r\n }\r\n\r\n\r\n //////////////////SWAPNIL//////////////////////////\r\n if (cds.cadViewer.dimensions) {\r\n cds.cadViewer.updateDimensionsWithCamera();\r\n }\r\n\r\n /* if (cds.cadViewer.studioUtils.annotationContainer.length > 0)\r\n cds.cadViewer.studioUtils.updateAnnotation(); */\r\n ///////////////////////////////////////////////////\r\n\r\n\r\n },\r\n\r\n onMouseClick: function (event) {\r\n if (THREEx.FullScreen.available() && THREEx.FullScreen.activated()) {\r\n //get mouse co-ordinate of renderer domelement in fullscreen\r\n var elem = cds.cadViewer.renderer.domElement;\r\n var boundingRect = elem.getBoundingClientRect(),\r\n x = (event.clientX - boundingRect.left) * (elem.width / boundingRect.width),\r\n y = (event.clientY - boundingRect.top) * (elem.height / boundingRect.height);\r\n\r\n var vector = new THREE.Vector3((x / window.innerWidth) * 2 - 1, -(y / window.innerHeight) * 2 + 1, 0.5);\r\n\r\n cds.cadViewer.mouse.x = vector.x;\r\n cds.cadViewer.mouse.y = vector.y;\r\n }\r\n if (!cds.cadViewer.hasOwnProperty('getFullPathOfPart')) {\r\n cds.cadViewer.getFullPathOfPart = new cds.cadViewer.GetFullPathOfPart();\r\n }\r\n\r\n var path = cds.cadViewer.getFullPathOfPart.getPathofPart();\r\n\r\n ////For kinematics on click\r\n cds.cadViewer.getPartUnderMouseForAnimation();\r\n\r\n //Mouse click callback\r\n cds.cadViewer.mouseClickCallback(path);\r\n\r\n },\r\n\r\n onMouseDoubleClick: function (event) {\r\n cds.cadViewer.mouseDoubleClickCallback();\r\n cds.cadViewer.zoomOnSpecificPart(event);\r\n },\r\n\r\n onProgress: function (p) { },\r\n\r\n onSceneError: function (event) {\r\n \"use strict\";\r\n console.log(\"Error loading model in CDS CAD viewer: \" + event);\r\n cds.cadViewer.loadingIcon.style.display = \"none\";\r\n cds.cadViewer.isLoading = false;\r\n },\r\n\r\n onWindowResize: function () {\r\n \"use strict\";\r\n var prevWidth = cds.cadViewer.viewerWidth;\r\n var prevHeight = cds.cadViewer.viewerHeight;\r\n\r\n cds.cadViewer.getViewerSize();\r\n if (cds.cadViewer.renderer) {\r\n if (!THREEx.FullScreen.activated()) {\r\n\r\n var temp1 = document.getElementById(\"parentfieldset\");\r\n if (temp1)\r\n temp1.style = \"width: 450px; left: 511px; /* right: 58px; */ top: 64px; position: absolute; z-index: 2147483647;\";\r\n cds.cadViewer.renderer.setClearColor(0x000000, 0);\r\n cds.cadViewer.renderer.domElement.setAttribute(\"style\", \"\");\r\n //by me 3Nov\r\n cds.cadViewer.renderer2.setClearColor(0x000000, 0);\r\n cds.cadViewer.renderer2.setSize(this.viewerWidth / 10, this.viewerHeight / 10);\r\n //cds.cadViewer.renderer2.domElement.setAttribute(\"style\", \"\");\r\n }\r\n\r\n cds.cadViewer.camera.aspect = cds.cadViewer.viewerWidth / cds.cadViewer.viewerHeight;\r\n cds.cadViewer.camera.updateProjectionMatrix();\r\n\r\n //by me 3Nov\r\n cds.cadViewer.camera2.aspect = cds.cadViewer.viewerWidth / cds.cadViewer.viewerHeight;\r\n cds.cadViewer.camera2.updateProjectionMatrix();\r\n var logoradiotemp = document.getElementById(\"logoRadio\");\r\n if (logoradiotemp)\r\n if (document.getElementById(\"logoRadio\").checked == true) {\r\n var canvas = document.getElementById(\"cds-cad-viewer-renderer\");\r\n if (!THREEx.FullScreen.activated())\r\n canvas.style = \"background:white; background-image: url('/images/icons/logo-header.png');background-repeat: no-repeat;background-position: 296px 417px;\";\r\n else\r\n canvas.style = \"background:white; background-image: url('/images/icons/logo-header.png');background-repeat: no-repeat;\";\r\n } else {\r\n var canvas = document.getElementById(\"cds-cad-viewer-renderer\");\r\n canvas.style = ' background: white;'\r\n }\r\n\r\n\r\n cds.cadViewer.renderer.setSize(cds.cadViewer.viewerWidth, cds.cadViewer.viewerHeight);\r\n cds.cadViewer.renderer2.setSize(cds.cadViewer.viewerWidth / 10, cds.cadViewer.viewerHeight / 10);\r\n\r\n cds.cadViewer.edgeEffect.uniforms.aspect.value.x = cds.cadViewer.viewerWidth;\r\n cds.cadViewer.edgeEffect.uniforms.aspect.value.y = cds.cadViewer.viewerHeight;\r\n\r\n cds.cadViewer.composer.setSize(cds.cadViewer.viewerWidth, cds.cadViewer.viewerHeight);\r\n\r\n cds.cadViewer.controls.handleResize();\r\n\r\n if (cds.cadViewer.isRenderingAllowed) {\r\n cds.cadViewer.render();\r\n }\r\n }\r\n },\r\n\r\n onSceneLoad: function (fileName, tempScene) {\r\n try {\r\n \"use strict\";\r\n this.isLoading = false;\r\n var object = new THREE.Object3D();\r\n\r\n //If WebGL-JS file\r\n if (tempScene == undefined)\r\n tempScene = this.loadSceneData();\r\n\r\n while (tempScene.children.length > 0) {\r\n object.add(tempScene.children[0]);\r\n }\r\n\r\n if (tempScene instanceof THREE.Mesh) {\r\n object.add(tempScene);\r\n }\r\n\r\n if (this.controls) {\r\n this.controls.handleResize(); // added resolve rotation/orbiting issue with model on 'Winsmith' configurator\r\n this.controls.enabled = true;\r\n }\r\n this.currentFileName = fileName;\r\n this.sceneObject = object;\r\n this.sceneObject.userData = tempScene.userData;\r\n tempScene = null;\r\n\r\n if (this.sceneObject.userData.DLL_Version != undefined) {\r\n console.log(\"DLL Version: \" + this.sceneObject.userData.DLL_Version);\r\n console.log(\"Viewer version: \" + cds.cadViewer.viewerVersion);\r\n }\r\n\r\n this.scene.add(this.sceneObject);\r\n this.setCameraParams();\r\n this.originalSceneObjectMatertials.length = 0;\r\n this.edgeEffect.enabled = false;\r\n this.setRenderMode(this.currentRenderMode);\r\n cds.cadViewer.distanceFromBoundingBox = cds.cadViewer.getCameraPositionValueForView();\r\n cds.cadViewer.homeBoundingBox = cds.cadViewer.sceneObject.getBoundingBox();\r\n cds.cadViewer.applyStudioProperties();\r\n cds.cadViewer.sceneObject.traverse(function (child) {\r\n if(child.userData.dimension){\r\n cds.cadViewer.displayDimensions();\r\n }\r\n })\r\n this.animate();\r\n this.render();\r\n } catch (e) {\r\n console.log(\"Error loading model in CDS CAD viewer: \" + e);\r\n\r\n } finally {\r\n this.isLoading = false;\r\n\r\n if (!cds.cadViewer.showPercentLoader) this.loadingIcon.style.display = \"none\";\r\n\r\n this.controls.enabled = true;\r\n\r\n this.bbs.forEach(function (b) {\r\n this.scene.remove(b);\r\n });\r\n this.bbs.length = 0;\r\n this.originalWidth = Number.MAX_VALUE;\r\n this.originalHeight = Number.MAX_VALUE;\r\n this.alreadyBinned = false;\r\n\r\n if (this.alreadyBinned === false) {\r\n this.alreadyBinned = true;\r\n this.originalWidth = this.renderer.domElement.offsetWidth;\r\n this.originalHeight = this.renderer.domElement.offsetHeight;\r\n }\r\n this.partNameToObject3d = []\r\n if(cds.cadViewer.sceneObject && cds.cadViewer.sceneObject.children[0]){\r\n if (cds.cadViewer.sceneObject.children[0].userData.childType == 'Part'){\r\n var e = document.getElementById(\"explode-icon\");\r\n if (e) e.style.display = \"none\";\r\n }\r\n else {\r\n if (cds.cadViewer.sceneObject.userData.hasExplosion)\r\n var e = document.getElementById(\"explode-icon\");\r\n if (e) e.style.display = \"\";\r\n }\r\n }\r\n if (cds.cadViewer.sceneObject) {\r\n let isDimension = false;\r\n cds.cadViewer.sceneObject.traverse((child) => {\r\n\r\n if (child.userData.dimension != null) {\r\n var dimensionLength = child.userData.dimension.length;\r\n if (dimensionLength > 0) {\r\n isDimension = true;\r\n }\r\n }\r\n })\r\n if (isDimension) {\r\n var e = document.getElementById(\"dimension-icon\");\r\n if (e) e.style.display = \"\";\r\n }\r\n else {\r\n var e = document.getElementById(\"dimension-icon\");\r\n if (e) e.style.display = \"none\";\r\n }\r\n cds.cadViewer.isDimensionsData = isDimension;\r\n }\r\n this.postLoadSceneCallback();\r\n cds.cadViewer.animate();\r\n let camControls = new cds.cadViewer.CameraControls();\r\n camControls.storeCameraPosition();\r\n cds.cadViewer.addEnvMap(cds.cadViewer.ENVIRONMENT_MAP_LINK, 'jpg', cds.cadViewer.environment.map);\r\n // cds.cadViewer.applyEnvironmentMap(cds.cadViewer.environment.map, cds.cadViewer.environment.type);\r\n // cds.cadViewer.setEnvMap(cds.cadViewer.ENVIRONMENT_TYPE.REFLECTION, cds.cadViewer.environment.map);\r\n if(cds.cadViewer.boolIE){\r\n cds.cadViewer.displayAnimationMessage(\"Advanced features may not be supported in this browser!\")\r\n }\r\n }\r\n },\r\n\r\n setCameraParams: function () {\r\n var _this = cds.cadViewer;\r\n var box = this.sceneObject.userData.boundingBox;\r\n var cameraControls = new this.CameraControls();\r\n var isNotValidForCameraZoom = false;\r\n\r\n if (this.sceneObject.hasOwnProperty('userData')) {\r\n if (this.sceneObject.userData.DLL_Version != undefined) {\r\n if (cds.cadViewer.ifDllHasBumpScaled(this.sceneObject.userData.DLL_Version)) {\r\n if (box != undefined) {\r\n this.changeCameraTransform(this.sceneObject.getBoundingBox());\r\n this.sceneBoundingBox = this.sceneObject.getBoundingBox();\r\n this.centerCamera();\r\n isNotValidForCameraZoom = true;\r\n }\r\n }\r\n }\r\n\r\n }\r\n if (!isNotValidForCameraZoom) {\r\n this.sceneBoundingBox = this.sceneObject.getBoundingBox();\r\n var scale = cds.cadViewer.scaleObject(this.sceneBoundingBox);\r\n cds.cadViewer.sceneObject.scale.set(scale, scale, scale);\r\n cds.cadViewer.centerObject(cds.cadViewer.sceneObject);\r\n }\r\n cameraControls.storeCameraPosition();\r\n },\r\n\r\n /**\r\n * Converts Array of bounding box to three.js bounding box\r\n */\r\n convertBoundingBox: function (boundingBox) {\r\n var bbox = new THREE.Box3()\r\n bbox.min = new THREE.Vector3(boundingBox.min[0],\r\n boundingBox.min[1],\r\n boundingBox.min[2])\r\n\r\n bbox.max = new THREE.Vector3(boundingBox.max[0],\r\n boundingBox.max[1],\r\n boundingBox.max[2])\r\n\r\n return bbox;\r\n },\r\n\r\n\r\n changeCameraTransform: function (jsonBoundingBox) {\r\n var boundingBox = null;\r\n var oldBoundingBox = null;\r\n if (jsonBoundingBox.min instanceof THREE.Vector3) {\r\n boundingBox = jsonBoundingBox;\r\n oldBoundingBox = jsonBoundingBox;\r\n } else {\r\n boundingBox = cds.cadViewer.convertBoundingBox(jsonBoundingBox);\r\n oldBoundingBox = cds.cadViewer.convertBoundingBox(jsonBoundingBox);\r\n }\r\n var scaleFactor = cds.cadViewer.scaleObject(boundingBox);\r\n var scaledBoundingBox = cds.cadViewer.createScaledBoundingBox(scaleFactor, boundingBox);\r\n var adjacent = scaledBoundingBox.max.x - scaledBoundingBox.getCenter().x;\r\n var opposite = cds.cadViewer.camera.position.z;\r\n var angle = Math.atan(opposite / adjacent);\r\n\r\n var adjacent = oldBoundingBox.max.x - oldBoundingBox.getCenter().x;\r\n var cameraDistance = Math.tan(angle) * adjacent;\r\n cds.cadViewer.camera.position.set(cameraDistance, cameraDistance, cameraDistance);\r\n\r\n },\r\n\r\n /**\r\n * Multiplies the bounding box with a scale factor\r\n */\r\n createScaledBoundingBox: function (scaleFactor, boundingBox) {\r\n var newBox = new THREE.Box3();\r\n\r\n newBox.min.x = scaleFactor * boundingBox.min.x;\r\n newBox.min.y = scaleFactor * boundingBox.min.y;\r\n newBox.min.z = scaleFactor * boundingBox.min.z;\r\n\r\n newBox.max.x = scaleFactor * boundingBox.max.x;\r\n newBox.max.y = scaleFactor * boundingBox.max.y;\r\n newBox.max.z = scaleFactor * boundingBox.max.z;\r\n\r\n return newBox;\r\n },\r\n\r\n /*\r\n * David: Callback function executed after loadScene completes\r\n * This is needed to execute any code that needs the scene to be complete\r\n * before executing.\r\n */\r\n postLoadSceneCallback: function () {\r\n\r\n },\r\n\r\n postModelTreeLoadCallback: function () {\r\n\r\n },\r\n\r\n onPartHover: function (partName) {\r\n\r\n },\r\n\r\n onAnimationLoad: function (partName) {\r\n\r\n },\r\n\r\n postLoadMaterialCallback: function (partName) {\r\n\r\n },\r\n\r\n postLoadMaterialCallback1: function (partName) {\r\n\r\n },\r\n\r\n onAssemblyProgress: function (progress) {\r\n\r\n },\r\n\r\n toolTipTextCallback: function (name) {\r\n\r\n },\r\n /*\r\n //////////////////////////////////////////////////////////////////////////////////////////////////\r\n //FUNCTION:mouseHoverCallback()\r\n //PURPOSE: Callback function for mouse hover, it executes any code needed on mouse hover on scene\r\n ///////////////////////////////////////////////////////////////////////////////////////////////////\r\n */\r\n mouseHoverCallback: function () {\r\n\r\n },\r\n\r\n /*\r\n //////////////////////////////////////////////////////////////////////////////////////////////////////\r\n //FUNCTION:mouseClickCallback()\r\n //PURPOSE: Callback function for mouse click, it executes any code needed on mouse click on scene\r\n //////////////////////////////////////////////////////////////////////////////////////////////////////\r\n */\r\n mouseClickCallback: function (path) {\r\n\r\n },\r\n\r\n nodeSelectCallback: function (name) {\r\n\r\n },\r\n\r\n /*\r\n //////////////////////////////////////////////////////////////////////////////////////////////////////\r\n //FUNCTION:mouseDoubleClickCallback()\r\n //PURPOSE: Callback function for mouse double click, it executes any code needed on mouse double click on scene\r\n //////////////////////////////////////////////////////////////////////////////////////////////////////\r\n */\r\n mouseDoubleClickCallback: function () {\r\n\r\n },\r\n\r\n loadScript: function (url, callback) {\r\n var script = document.createElement(\"script\")\r\n script.type = \"text/javascript\";\r\n\r\n if (script.readyState) { //IE\r\n script.onreadystatechange = function () {\r\n if (script.readyState == \"loaded\" ||\r\n script.readyState == \"complete\") {\r\n script.onreadystatechange = null;\r\n callback();\r\n }\r\n };\r\n } else { //Others\r\n script.onload = function () {\r\n callback();\r\n };\r\n }\r\n\r\n script.src = url;\r\n document.getElementsByTagName(\"head\")[0].appendChild(script);\r\n },\r\n\r\n loadRemoteScript: function (source, callback) {\r\n \"use strict\";\r\n var script = document.createElement(\"script\"),\r\n parent = document.getElementsByTagName(\"script\")[0];\r\n\r\n script.src = source;\r\n script.type = \"application/javascript\";\r\n\r\n // can't use correct mime type with IE 5,7,8\r\n if (this.isIE()) {\r\n script.type = \"text/javascript\";\r\n }\r\n\r\n script.async = true;\r\n\r\n // deal with failure to load script\r\n script.onerror = function () {\r\n script.onload = script.onreadystatechange = null;\r\n script = undefined;\r\n };\r\n\r\n parent.parentNode.insertBefore(script, parent);\r\n\r\n script.onload = script.onreadystatechange = function (_, isAbort) {\r\n if (isAbort || !script.readyState || /loaded|complete/.test(script.readyState)) {\r\n script.onload = script.onreadystatechange = null;\r\n script = undefined;\r\n\r\n if (!isAbort) {\r\n if (callback) {\r\n // for IE 5,7,8 we need to add a delay before it will recognize the new script\r\n if (cds.cadViewer.isIE() && cds.cadViewer.isIE() < 9) {\r\n setTimeout(function () { callback(); }, 100);\r\n } else {\r\n callback();\r\n this.parentElement.removeChild(this);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n },\r\n\r\n isIE: function () {\r\n var myNav = navigator.userAgent.toLowerCase();\r\n return (myNav.indexOf('msie') != -1) ? parseInt(myNav.split('msie')[1]) : false;\r\n },\r\n\r\n\r\n computeBoundingBox: function (obj) {\r\n \"use strict\";\r\n\r\n if (obj instanceof THREE.Mesh) {\r\n var geometry = obj.geometry;\r\n geometry.computeBoundingBox();\r\n return geometry.boundingBox;\r\n }\r\n\r\n if (obj instanceof THREE.Object3D) {\r\n var bb = new THREE.Box3();\r\n for (var i = 0; i < obj.children.length; i++) {\r\n bb.union(cds.cadViewer.computeBoundingBox(obj.children[i]));\r\n }\r\n return bb;\r\n }\r\n },\r\n\r\n setPercentZoom: function (percentage) {\r\n cds.cadViewer.zoomPercentage = percentage\r\n },\r\n\r\n scaleObject: function (boundingBox) {\r\n \"use strict\";\r\n var xDimension = boundingBox.max.x - boundingBox.min.x;\r\n var yDimension = boundingBox.max.y - boundingBox.min.y;\r\n var zDimension = boundingBox.max.z - boundingBox.min.z;\r\n\r\n var maxOfXY = Math.max(xDimension, yDimension);\r\n var lengthOfLargestDimension = Math.max(maxOfXY, zDimension);\r\n var scaleFactor = 1 / lengthOfLargestDimension * (60 + ((cds.cadViewer.zoomPercentage / 100) * 60));\r\n return scaleFactor;\r\n },\r\n\r\n centerCamera: function () {\r\n var boxCenter = cds.cadViewer.sceneBoundingBox.getCenter();\r\n var centerX = boxCenter.x;\r\n var centerY = boxCenter.y;\r\n var centerZ = boxCenter.z;\r\n var matrix = new THREE.Matrix4();\r\n cds.cadViewer.camera.updateMatrix();\r\n matrix.makeTranslation(-centerX, -centerY, -centerZ);\r\n matrix.getInverse(matrix);\r\n cds.cadViewer.controls.target.copy(cds.cadViewer.sceneBoundingBox.getCenter())\r\n cds.cadViewer.camera.applyMatrix(matrix);\r\n },\r\n\r\n centerObject: function (object) {\r\n \"use strict\";\r\n var box = cds.cadViewer.sceneBoundingBox;\r\n var centerX = (box.max.x + box.min.x) / 2.0 *\r\n object.scale.x;\r\n var centerY = (box.max.y + box.min.y) / 2.0 *\r\n object.scale.y;\r\n var centerZ = (box.max.z + box.min.z) / 2.0 *\r\n object.scale.z;\r\n var to = new THREE.Vector3(-centerX, -centerY, -centerZ);\r\n new TWEEN.Tween(object.position).to({\r\n x: to.x,\r\n y: to.y,\r\n z: to.z\r\n }, 500).easing(TWEEN.Easing.Linear.None).start();\r\n object.position.set(-centerX, -centerY, -centerZ);\r\n },\r\n explodeDropdownChange: function () {\r\n var explodeEffect = [\r\n TWEEN.Easing.Linear.None,\r\n TWEEN.Easing.Quadratic.In, TWEEN.Easing.Quadratic.Out, TWEEN.Easing.Quadratic.InOut,\r\n TWEEN.Easing.Cubic.In, TWEEN.Easing.Cubic.Out, TWEEN.Easing.Cubic.InOut,\r\n TWEEN.Easing.Quartic.In, TWEEN.Easing.Quartic.Out, TWEEN.Easing.Quartic.InOut,\r\n TWEEN.Easing.Quintic.In, TWEEN.Easing.Quintic.Out, TWEEN.Easing.Quintic.InOut,\r\n TWEEN.Easing.Sinusoidal.In, TWEEN.Easing.Sinusoidal.Out, TWEEN.Easing.Sinusoidal.InOut,\r\n TWEEN.Easing.Exponential.In, TWEEN.Easing.Exponential.Out, TWEEN.Easing.Exponential.InOut,\r\n TWEEN.Easing.Circular.In, TWEEN.Easing.Circular.Out, TWEEN.Easing.Circular.InOut,\r\n TWEEN.Easing.Elastic.In, TWEEN.Easing.Elastic.Out, TWEEN.Easing.Elastic.InOut,\r\n TWEEN.Easing.Back.In, TWEEN.Easing.Back.Out, TWEEN.Easing.Back.InOut,\r\n TWEEN.Easing.Bounce.In, TWEEN.Easing.Bounce.Out, TWEEN.Easing.Bounce.InOut\r\n ];\r\n\r\n this.explodeEffect = explodeEffect[document.getElementById(\"explodeDropdown\").value];\r\n document.getElementById(\"explodeViewCheckbox\").checked = !document.getElementById(\"explodeViewCheckbox\").checked;\r\n this.toggleViews(document.getElementById(\"explodeViewCheckbox\").checked);\r\n },\r\n\r\n applyScaleHeight: function () {\r\n\r\n cds.cadViewer.bumpScale = document.getElementById('sclaleHeight').value;\r\n cds.cadViewer.loadScene(cadURL);\r\n },\r\n\r\n setHighlightColor: function (color) {\r\n if (color == undefined)\r\n color = '#00ff00';\r\n\r\n cds.cadViewer.hlColor = color;\r\n },\r\n swapColor: function (color) {\r\n if (color == undefined)\r\n color = '#00ff00';\r\n\r\n cds.cadViewer.color = color;\r\n cds.cadViewer.loadScene(cadURL);\r\n },\r\n updateSliderOpacityValue: function (value) {\r\n cds.cadViewer.opacity = value.value;\r\n var label = document.getElementById(\"range1\");\r\n label.textContent = value.value * 100 + \"%\";\r\n cds.cadViewer.loadScene(cadURL);\r\n },\r\n updateSliderRotateSpeed: function (value) {\r\n cds.cadViewer.rotateSpeed = Number(value.value);\r\n var label = document.getElementById(\"spinLabel\");\r\n label.textContent = Number(value.value);\r\n //cds.cadViewer.loadScene(cadURL);\r\n },\r\n\r\n explosionSubscribe: function () {\r\n var checkbox = document.getElementById(\"explosionSubscription\");\r\n\r\n if (checkbox.checked == true) {\r\n cds.cadViewer.explosionSubscribed = 1;\r\n document.getElementById(\"explosionEverything\").style.visibility = \"visible\";\r\n document.getElementById(\"explodeViewCheckbox\").style.visibility = \"visible\";\r\n\r\n } else {\r\n cds.cadViewer.explosionSubscribed = undefined;\r\n document.getElementById(\"explosionEverything\").style.visibility = \"hidden\";\r\n document.getElementById(\"explodeViewCheckbox\").style.visibility = \"hidden\";\r\n }\r\n\r\n },\r\n mouseSubscribe: function () {\r\n var checkbox = document.getElementById(\"mouseSubscription\");\r\n if (checkbox.checked == true) {\r\n cds.cadViewer.mouseSubscribed = 1;\r\n document.getElementById(\"highlight\").style.visibility = \"visible\";\r\n } else {\r\n cds.cadViewer.mouseSubscribed = undefined;\r\n document.getElementById(\"highlight\").style.visibility = \"hidden\";\r\n }\r\n },\r\n annotSubscribe: function () {\r\n var checkbox = document.getElementById(\"annotSubscription\");\r\n\r\n var v1 = cds.cadViewer.scene.children[2],\r\n l = v1.children.length;\r\n\r\n if (checkbox.checked == true) {\r\n if (this.annoTemp)\r\n if (this.annoTemp.userData.annotation == 1)\r\n v1.add(this.annoTemp);\r\n\r\n } else {\r\n this.annoTemp = v1.children[l - 1];\r\n if (this.annoTemp)\r\n if (this.annoTemp.userData.annotation == 1)\r\n v1.remove(v1.children[l - 1]);\r\n\r\n }\r\n },\r\n loadgun: function () {\r\n var checkbox = document.getElementById(\"multiSubassembly\");\r\n if (checkbox.checked == true)\r\n checkbox.checked = false;\r\n else\r\n checkbox.checked = true;\r\n\r\n var checkbox = document.getElementById(\"loadGun\");\r\n if (checkbox.checked == true) {\r\n cadURL = \"/samples/PROBA52.js\";\r\n cds.cadViewer.loadScene(cadURL);\r\n } else {\r\n cadURL = \"/samples/cube.js\";\r\n cds.cadViewer.loadScene(cadURL);\r\n }\r\n\r\n },\r\n multiSubassembly: function () {\r\n var checkbox = document.getElementById(\"loadGun\");\r\n if (checkbox.checked == true)\r\n checkbox.checked = false;\r\n else\r\n checkbox.checked = true;\r\n\r\n var checkbox = document.getElementById(\"multiSubassembly\");\r\n if (checkbox.checked == true) {\r\n cadURL = \"/samples/ZAMEK_2.js\";\r\n cds.cadViewer.loadScene(cadURL);\r\n } else {\r\n cadURL = \"/samples/cube.js\";\r\n cds.cadViewer.loadScene(cadURL);\r\n }\r\n\r\n },\r\n modelChange: function () {\r\n var value = document.getElementById(\"modelDropdown\").value;\r\n if (value == 0) {\r\n cadURL = \"/samples/cube.js\";\r\n cds.cadViewer.loadScene(cadURL);\r\n } else if (value == 1) {\r\n cadURL = \"/samples/PROBA52.js\";\r\n cds.cadViewer.loadScene(cadURL);\r\n } else if (value == 2) {\r\n cadURL = \"/samples/ASSEMBLY1.js\";\r\n cds.cadViewer.loadScene(cadURL);\r\n } else if (value == 3) {\r\n cadURL = \"/samples/ZAMEK_2.js\";\r\n cds.cadViewer.loadScene(cadURL);\r\n }\r\n },\r\n gridToggle: function (obj) {\r\n var length = cds.cadViewer.scene.children.length;\r\n for (var i = 0; i < length; i++) {\r\n if (cds.cadViewer.scene.children[i].type == \"LineSegments\") {\r\n if (document.getElementById(\"gridRadio\").checked == true)\r\n cds.cadViewer.scene.children[i].visible = true;\r\n else\r\n cds.cadViewer.scene.children[i].visible = false;\r\n }\r\n }\r\n },\r\n logoToggle: function (obj) {\r\n if (document.getElementById(\"logoRadio\").checked == true) {\r\n var canvas = document.getElementById(\"cds-cad-viewer-renderer\");\r\n canvas.style = \"background-image: url('/images/icons/logo-header.png'); background-repeat: no-repeat; background-position: 296px 417px;\"\r\n } else {\r\n var canvas = document.getElementById(\"cds-cad-viewer-renderer\");\r\n canvas.style = ' background:white;'\r\n }\r\n },\r\n\r\n\r\n\r\n colorSwapCheck: function () {\r\n var textureDropdown = document.getElementById(\"swapColor\");\r\n var opacitySlider = document.getElementById(\"opacitySlider\");\r\n var opacityValue = document.getElementById(\"range1\")\r\n var modeldropdown = document.getElementById(\"modelDropdown\");\r\n\r\n if (document.getElementById(\"colorSwapCheck\").checked == true) {\r\n textureDropdown.style.display = \"\";\r\n textureDropdown.disable = false;\r\n opacitySlider.style.display = \"\";\r\n opacitySlider.disable = false;\r\n opacityValue.style.display = \"\";\r\n opacityValue.disable = false;\r\n modeldropdown.disabled = true;\r\n cadURL = \"/samples/CubeColor.js\";\r\n cds.cadViewer.loadScene(cadURL);\r\n } else {\r\n textureDropdown.disabled = true;\r\n opacitySlider.disabled = true;\r\n opacityValue.disabled = true;\r\n modeldropdown.disabled = false;\r\n }\r\n },\r\n\r\n textureSwapCheck: function () {\r\n var textureDropdown = document.getElementById(\"leave\");\r\n var modeldropdown = document.getElementById(\"modelDropdown\");\r\n\r\n if (document.getElementById(\"textureSwapCheck\").checked == true) {\r\n textureDropdown.style.display = \"\";\r\n textureDropdown.disable = false;\r\n modeldropdown.disabled = true;\r\n cadURL = \"/samples/CubeTexture.js\";\r\n cds.cadViewer.loadScene(cadURL);\r\n } else {\r\n textureDropdown.disabled = true;\r\n modeldropdown.disabled = false;\r\n }\r\n },\r\n textureSwap: function () {\r\n cds.cadViewer.loadScene(cadURL);\r\n\r\n if (document.getElementById(\"leave\").value == \"1\") {\r\n cds.cadViewer.texturemap = \"/texture/bricks.jpg\";\r\n cds.cadViewer.loadScene(cadURL);\r\n }\r\n if (document.getElementById(\"leave\").value == \"2\") {\r\n cds.cadViewer.texturemap = \"/texture/Galvanized.jpg\";\r\n cds.cadViewer.loadScene(cadURL);\r\n }\r\n if (document.getElementById(\"leave\").value == \"3\") {\r\n cds.cadViewer.texturemap = \"/texture/Finger.jpg\";\r\n cds.cadViewer.loadScene(cadURL);\r\n }\r\n if (document.getElementById(\"leave\").value == \"4\") {\r\n cds.cadViewer.texturemap = \"/texture/wall2.jpg\";\r\n cds.cadViewer.loadScene(cadURL);\r\n }\r\n if (document.getElementById(\"leave\").value == \"5\") {\r\n cds.cadViewer.texturemap = \"/texture/gun.jpg\";\r\n cds.cadViewer.loadScene(cadURL);\r\n }\r\n },\r\n\r\n downloadImage: function (canvas, filename) {\r\n\r\n\r\n var lnk = document.createElement('a'),\r\n e;\r\n\r\n lnk.download = filename;\r\n\r\n lnk.href = canvas.toDataURL();\r\n\r\n if (document.createEvent) {\r\n\r\n e = document.createEvent(\"MouseEvents\");\r\n e.initMouseEvent(\"click\", true, true, window,\r\n 0, 0, 0, 0, 0, false, false, false,\r\n false, 0, null);\r\n\r\n lnk.dispatchEvent(e);\r\n\r\n } else if (lnk.fireEvent) {\r\n\r\n lnk.fireEvent(\"onclick\");\r\n }\r\n },\r\n\r\n exportImage: function (filename) {\r\n var f = filename,\r\n canvas = document.getElementById(\"cds-cad-viewer-renderer\");\r\n if (!f) {\r\n f = '3dcapture';\r\n }\r\n if (f.indexOf(\".png\") !== -1) {\r\n f = f.substring(0, f.indexOf(\".png\"));\r\n }\r\n cds.cadViewer.downloadImage(canvas, f + \".png\");\r\n },\r\n\r\n exportImageWithSize: function (filename, width, height) {\r\n var f = filename,\r\n canvas = document.getElementById(\"cds-cad-viewer-renderer\");\r\n if (!f) {\r\n f = '3dcapture';\r\n }\r\n if (f.indexOf(\".png\") !== -1) {\r\n f = f.substring(0, f.indexOf(\".png\"));\r\n }\r\n cds.cadViewer.downloadImageWithSize(canvas, f + \".png\", width, height);\r\n },\r\n\r\n downloadImageWithSize: function (canvas, filename, width, height) {\r\n var lnk = document.createElement('a'),\r\n e;\r\n\r\n lnk.download = filename;\r\n\r\n var resizedCanvas = document.createElement(\"canvas\");\r\n var resizedContext = resizedCanvas.getContext(\"2d\");\r\n\r\n resizedCanvas.height = height == undefined ? \"850\" : height;\r\n resizedCanvas.width = width == undefined ? \"1150\" : width;\r\n\r\n var context = canvas.getContext(\"2d\");\r\n\r\n resizedContext.drawImage(canvas, -((canvas.width / 2) - (resizedCanvas.width / 2)), -((canvas.height / 2) - (resizedCanvas.height / 2)), canvas.width, canvas.height);\r\n var myResizedData = resizedCanvas.toDataURL();\r\n lnk.href = myResizedData\r\n\r\n if (document.createEvent) {\r\n\r\n e = document.createEvent(\"MouseEvents\");\r\n e.initMouseEvent(\"click\", true, true, window,\r\n 0, 0, 0, 0, 0, false, false, false,\r\n false, 0, null);\r\n\r\n lnk.dispatchEvent(e);\r\n\r\n } else if (lnk.fireEvent) {\r\n\r\n lnk.fireEvent(\"onclick\");\r\n }\r\n },\r\n\r\n solidOutline: function (object) {\r\n \"use strict\";\r\n if (object instanceof THREE.Object3D) {\r\n object.traverse(function (mesh) {\r\n if (mesh instanceof THREE.Mesh) {\r\n if (mesh.material.length != undefined) {\r\n for (var i = 0; i < mesh.material.length; i++) {\r\n if (mesh.material[i]) {\r\n var geo = new THREE.EdgesGeometry(mesh.geometry); // or WireframeGeometry\r\n var mat = new THREE.LineBasicMaterial({ color: 0x000000, linewidth: 2 });\r\n var wireframe = new THREE.LineSegments(geo, mat);\r\n mesh.add(wireframe);\r\n\r\n }\r\n }\r\n } else {\r\n if (mesh.material) {\r\n var geo = new THREE.EdgesGeometry(mesh.geometry); // or WireframeGeometry\r\n var mat = new THREE.LineBasicMaterial({ color: 0x000000, linewidth: 2 });\r\n var wireframe = new THREE.LineSegments(geo, mat);\r\n mesh.add(wireframe);\r\n\r\n }\r\n }\r\n }\r\n });\r\n }\r\n },\r\n\r\n zoomfit: function (box) {\r\n var v1 = box.max;\r\n var v2 = box.min;\r\n var dx = v1.x - v2.x;\r\n var dy = v1.y - v2.y;\r\n var dz = v1.z - v2.z;\r\n\r\n var len = Math.sqrt(dx * dx + dy * dy + dz * dz);\r\n\r\n cds.cadViewer.camera.position.set(len, len, len);\r\n },\r\n\r\n changefacing: function (object) {\r\n if (object == \"1\") {\r\n cds.cadViewer.facing = THREE.FrontSide;\r\n cds.cadViewer.loadScene(cadURL);\r\n } else if (object == \"2\") {\r\n cds.cadViewer.facing = THREE.BackSide;\r\n cds.cadViewer.loadScene(cadURL);\r\n\r\n } else if (object == \"3\") {\r\n cds.cadViewer.facing = THREE.DoubleSide;\r\n cds.cadViewer.loadScene(cadURL);\r\n } else\r\n console.log(\"unknown Input\");\r\n },\r\n\r\n replceSubscribe: function (object) {\r\n //cadURL = \"/samples/REPLACE.js\";\r\n ///cds.cadViewer.loadScene(cadURL);\r\n\r\n var cylinder = cds.cadViewer.scene.children[2].children[0].children[2];\r\n for (var i = 0; i < cylinder.children.length; i++) {\r\n cylinder.children[i].layers.set(1);\r\n }\r\n cds.cadViewer.camera.layers.disable(1);\r\n\r\n\r\n var cube = cds.cadViewer.scene.children[2].children[0].children[1];\r\n\r\n for (var i = 0; i < cube.children.length; i++) {\r\n cube.children[i].layers.set(2);\r\n }\r\n cds.cadViewer.camera.layers.disable(2);\r\n },\r\n replaceDemo: function (object) {\r\n if (object == \"1\") {\r\n cds.cadViewer.camera.layers.disable(1);\r\n cds.cadViewer.camera.layers.enable(2);\r\n } else if (object == \"2\") {\r\n cds.cadViewer.camera.layers.enable(1);\r\n cds.cadViewer.camera.layers.disable(2);\r\n\r\n } else\r\n console.log(\"unknown Input\");\r\n },\r\n\r\n\r\n /*\r\n //////////////////////////////////////////////////////////\r\n //FUNCTION:zoomOnSpecificPart(event)\r\n //PURPOSE: Zoom to specific part on double click event\r\n //////////////////////////////////////////////////////////\r\n */\r\n zoomOnSpecificPart: function (event) {\r\n var camera = cds.cadViewer.camera;\r\n var controls = cds.cadViewer.controls;\r\n var mouse = cds.cadViewer.mouse;\r\n\r\n var middle = new THREE.Vector3();\r\n var bound = new THREE.Vector3();\r\n var dir = new THREE.Vector3();\r\n var raycaster = cds.cadViewer.raycaster;\r\n var scene = cds.cadViewer.scene;\r\n controls.update();\r\n event.preventDefault();\r\n\r\n var intersects = cds.cadViewer.getIntersects(cds.cadViewer.sceneObject.children);\r\n if (intersects.length > 0) {\r\n if (intersects[0].object.type == \"Sprite\" && intersects.length > 1) {\r\n var intersectedObject = intersects[1].object;\r\n\r\n } else if (intersects[0].object.type != \"Sprite\") {\r\n var intersectedObject = intersects[0].object;\r\n\r\n }\r\n if (intersectedObject != undefined) {\r\n var bbox = new THREE.Box3();\r\n var boxHelper1 = new THREE.BoxHelper(intersectedObject.parent, 0xff0000);\r\n //cds.cadViewer.scene.add(boxHelper1);\r\n bbox.setFromObject(boxHelper1);\r\n\r\n middle.x = (bbox.max.x + bbox.min.x) / 2;\r\n middle.y = (bbox.max.y + bbox.min.y) / 2;\r\n middle.z = (bbox.max.z + bbox.min.z) / 2;\r\n\r\n var dx = bbox.max.x - bbox.min.x;\r\n var dy = bbox.max.y - bbox.min.y;\r\n var dz = bbox.max.z - bbox.min.z;\r\n\r\n var dist = Math.sqrt(dx * dx + dy * dy + dz * dz);\r\n\r\n new TWEEN.Tween(controls.target).to({\r\n x: middle.x,\r\n y: middle.y,\r\n z: middle.z\r\n }, 2000)\r\n .easing(TWEEN.Easing.Linear.None).start()\r\n\r\n new TWEEN.Tween(camera.position).to({\r\n x: middle.x + (dist * 1),\r\n y: middle.y + (dist * 1),\r\n z: middle.z + (dist * 1)\r\n }, 2000)\r\n .easing(TWEEN.Easing.Linear.None).start()\r\n camera.lookAt(middle);\r\n\r\n }\r\n } else {\r\n var bbox = new THREE.Box3();\r\n var boxHelper1 = new THREE.BoxHelper(cds.cadViewer.scene, 0xff0000);\r\n //cds.cadViewer.scene.add(boxHelper1);\r\n bbox.setFromObject(boxHelper1);\r\n\r\n middle.x = (bbox.max.x + bbox.min.x) / 2;\r\n middle.y = (bbox.max.y + bbox.min.y) / 2;\r\n middle.z = (bbox.max.z + bbox.min.z) / 2;\r\n\r\n var dx = bbox.max.x - bbox.min.x;\r\n var dy = bbox.max.y - bbox.min.y;\r\n var dz = bbox.max.z - bbox.min.z;\r\n\r\n var dist = Math.sqrt(dx * dx + dy * dy + dz * dz);\r\n\r\n new TWEEN.Tween(controls.target).to({\r\n x: middle.x,\r\n y: middle.y,\r\n z: middle.z\r\n }, 2000)\r\n .easing(TWEEN.Easing.Linear.None).start()\r\n\r\n new TWEEN.Tween(camera.position).to({\r\n x: middle.x + (dist * 1),\r\n y: middle.y + (dist * 1),\r\n z: middle.z + (dist * 1)\r\n }, 2000)\r\n .easing(TWEEN.Easing.Linear.None).start()\r\n camera.lookAt(middle);\r\n\r\n }\r\n controls.update();\r\n },\r\n\r\n /*\r\n ////////////////////////////////////////////////////////////////////////////////////\r\n //FUNCTION:toggleTooltip()\r\n //PURPOSE: Toggles(Enables/Disables), tooltip feature from viewer on mouse hover\r\n /////////////////////////////////////////////////////////////////////////////////////\r\n */\r\n toggleTooltip: function () {\r\n if (!cds.cadViewer.hasOwnProperty('tooltip')) {\r\n cds.cadViewer.tooltip = new cds.cadViewer.Tooltip();\r\n }\r\n cds.cadViewer.tooltip.tooltipEnabled = !cds.cadViewer.tooltip.tooltipEnabled;\r\n\r\n },\r\n\r\n modelSelection: function (event) {\r\n\r\n var intersects = cds.cadViewer.getIntersects(cds.cadViewer.sceneObject.children);\r\n\r\n if (intersects.length > 0) {\r\n\r\n var intersectedObject = intersects[0].object;\r\n var intersectionPt = intersects[0].point;\r\n\r\n if (intersectedObject != undefined) {\r\n cds.cadViewer.removeNameSelectionMaterial();\r\n\r\n cds.cadViewer.removeSelectionMaterial();\r\n\r\n cds.cadViewer.INTERSECTED = intersectedObject;\r\n\r\n cds.cadViewer.applySelectionMaterial();\r\n\r\n\r\n //for part\r\n if (cds.cadViewer.INTERSECTED.parent.parent != null) {\r\n\r\n if (cds.cadViewer.INTERSECTED.parent.type == \"Group\") {\r\n if (cds.cadViewer.INTERSECTED.parent.parent.parent.name == cds.cadViewer.sceneObject.children[0].name) {\r\n cds.cadViewer.onPartHover(cds.cadViewer.INTERSECTED.parent.parent.name);\r\n }\r\n } else {\r\n if (cds.cadViewer.INTERSECTED.parent.parent.name == cds.cadViewer.sceneObject.children[0].name) {\r\n cds.cadViewer.onPartHover(cds.cadViewer.INTERSECTED.parent.name);\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n var x = event.clientX,\r\n y = event.clientY,\r\n elementMouseIsOver = document.elementFromPoint(x, y);\r\n\r\n if (elementMouseIsOver != null) {\r\n if (elementMouseIsOver.id == \"cds-cad-viewer-renderer\") {\r\n cds.cadViewer.removeNameSelectionMaterial();\r\n cds.cadViewer.removeSelectionMaterial();\r\n cds.cadViewer.INTERSECTED = null;\r\n cds.cadViewer.onPartHover();\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n },\r\n\r\n Tooltip: function () {\r\n this.tooltipEnabled = false;\r\n /*\r\n //////////////////////////////////////////////////////////////////////////////\r\n //FUNCTION:showTooltip()\r\n //PURPOSE: Highlight and shows name of part (i.e.tooltip) on mouse hover event\r\n ///////////////////////////////////////////////////////////////////////////////\r\n */\r\n this.showTooltip = function (event) {\r\n if (this.tooltipEnabled) {\r\n var tooltipDiv = document.getElementById('tooltip');\r\n if (tooltipDiv == null) {\r\n this.addCSSForTooltip();\r\n this.addTooltipDiv();\r\n tooltipDiv = document.getElementById('tooltip');\r\n }\r\n tooltipDiv.style.display = 'none';\r\n var intersects = cds.cadViewer.getIntersects(cds.cadViewer.sceneObject.children);\r\n\r\n if (intersects.length > 0) {\r\n var intersectedObject = intersects[0].object;\r\n var parent = cds.cadViewer.getImmediateAssemblyNode(intersectedObject);\r\n\r\n // Update text, if it has a \"name\" field.\r\n if (parent.name) {\r\n var message = \"\";\r\n if (cds.cadViewer.useCustomToolTipText == true) {\r\n message = cds.cadViewer.toolTipTextCallback(parent.name);\r\n } else {\r\n message = parent.name;\r\n }\r\n\r\n tooltipDiv = document.getElementById('tooltip');\r\n tooltipDiv.style.display = 'block';\r\n cds.cadViewer.tooltip_span.setAttribute('data-tooltip', message);\r\n }\r\n }\r\n }\r\n }\r\n /*\r\n//////////////////////////////////////////////////////////////////////////////\r\n//FUNCTION:addTooltipDiv()\r\n//PURPOSE: Creates and adds a HTML element required for tooltip\r\n///////////////////////////////////////////////////////////////////////////////\r\n*/\r\n this.addTooltipDiv = function () {\r\n tooltipDiv = document.createElement('div');\r\n tooltipDiv.id = 'tooltip';\r\n tooltipDiv.style.position = 'absolute';\r\n tooltipDiv.style.display = 'none';\r\n tooltipDiv.style.zIndex = '1';\r\n\r\n cds.cadViewer.tooltip_span = document.createElement('span');\r\n cds.cadViewer.tooltip_span.setAttribute('data-tooltip', 'TEST');\r\n\r\n tooltipDiv.appendChild(cds.cadViewer.tooltip_span);\r\n document.body.appendChild(tooltipDiv);\r\n }\r\n\r\n this.addCSSForTooltip = function () {\r\n var csstag = document.createElement('style');\r\n csstag.append(\"[data-tooltip]{position:relative;z-index:2;cursor:pointer}[data-tooltip]:before{position:absolute;top:150%;left:50%;margin-bottom:5px;margin-left:-80px;padding:7px;max-width:500px;min-width:160px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;background-color:#000;background-color:hsla(0,0%,20%,.9);color:#fff;content:attr(data-tooltip);text-align:center;font-size:14px;line-height:1.2}[data-tooltip]:after{position:absolute;top:50%;left:50%;margin-left:-5px;margin-top:-5px;width:0;border-bottom:5px solid #000;border-bottom:5px solid hsla(0,0%,20%,.9);border-right:5px solid transparent;border-left:5px solid transparent;content:'';font-size:0;line-height:0}\");\r\n var head = document.getElementsByTagName('head')[0];\r\n head.appendChild(csstag);\r\n }\r\n\r\n },\r\n\r\n\r\n /**\r\n Removes the selection material applied to the parts through the check boxes\r\n\r\n */\r\n removeNameSelectionMaterial: function () {\r\n if (cds.cadViewer.INTERSECTED == null) {\r\n if (cds.cadViewer.intersectedPart != undefined) {\r\n var objectName = cds.cadViewer.intersectedPart;\r\n var rootAssembly = cds.cadViewer.scene.children[2].children[0];\r\n cds.cadViewer.getObjectsByName(objectName, rootAssembly, function (object) {\r\n cds.cadViewer.getMeshFor(object, function (selectedMesh) {\r\n cds.cadViewer.removeSelectionMaterialOnMesh(selectedMesh);\r\n });\r\n });\r\n cds.cadViewer.intersectedPart = undefined;\r\n }\r\n }\r\n },\r\n\r\n /**\r\n Applies selection material on the Intersected object\r\n\r\n */\r\n applySelectionMaterial: function () {\r\n cds.cadViewer.getSelectedMesh(function (selectedMesh) {\r\n cds.cadViewer.applySelectionMaterialOnMesh(selectedMesh);\r\n });\r\n },\r\n\r\n /**\r\n Applies selection material on the given mesh\r\n\r\n - parameter: mesh\r\n\r\n */\r\n applySelectionMaterialOnMesh: function (mesh) {\r\n\r\n if (mesh.material.length != undefined) {\r\n for (var i = 0; i < mesh.material.length; i++) {\r\n if (mesh.userData.currentMat == undefined) {\r\n mesh.userData.currentMat = []; //pranali- As we have merged material, this.INTERSECTED.currentHex is not accessible. Hence created new array of current hex of mesh in userData field\r\n }\r\n\r\n mesh.userData.currentMat.push(mesh.material[i]);\r\n var tempMaterial = new THREE.MeshPhongMaterial();\r\n tempMaterial.emissive.setHex('0x999');\r\n mesh.material[i] = tempMaterial;\r\n }\r\n } else {\r\n if (cds.cadViewer.currenMaterial == undefined || cds.cadViewer.currenMaterial == null) {\r\n cds.cadViewer.currenMaterial = [];\r\n }\r\n if (mesh != null) {\r\n mesh.parent.traverse(function (mesh) {\r\n if (mesh instanceof THREE.Mesh) {\r\n cds.cadViewer.currenMaterial.push(mesh.material);\r\n\r\n var tempMaterial = new THREE.MeshPhongMaterial().copy(mesh.material.clone());\r\n tempMaterial.emissive.setHex('0x999');\r\n mesh.material = tempMaterial;\r\n }\r\n });\r\n }\r\n }\r\n },\r\n\r\n /**\r\n Filters the mesh based on part/assembly selection\r\n\r\n - parameter: callback funciton\r\n\r\n */\r\n getSelectedMesh: function (selection) {\r\n\r\n if (cds.cadViewer.INTERSECTED != null) {\r\n var selectedMesh = cds.cadViewer.INTERSECTED.parent;\r\n var objectNode = cds.cadViewer.getImmediateAssemblyNode(selectedMesh);\r\n if (objectNode != undefined) {\r\n objectNode.traverse(function (child) {\r\n if (child instanceof THREE.Mesh) {\r\n selection(child);\r\n }\r\n });\r\n }\r\n }\r\n },\r\n\r\n /**\r\n Retrives the selected child node of the root assembly\r\n */\r\n getImmediateAssemblyNode: function (selectedMesh) {\r\n if (selectedMesh != null) {\r\n if (selectedMesh.parent != null) {\r\n if (selectedMesh.parent.name == cds.cadViewer.sceneObject.children[0].name) {\r\n return selectedMesh;\r\n } else {\r\n return cds.cadViewer.getImmediateAssemblyNode(selectedMesh.parent);\r\n }\r\n } else {\r\n return undefined;\r\n }\r\n\r\n } else {\r\n return undefined;\r\n }\r\n },\r\n\r\n /**\r\n Traverses and returns all the mesh in an object recursively\r\n\r\n - parameter: object\r\n - parameter: callback function\r\n\r\n */\r\n getMeshFor: function (object, selected) {\r\n object.traverse(function (child) {\r\n if (child instanceof THREE.Mesh) {\r\n selected(child);\r\n }\r\n });\r\n },\r\n\r\n setControlLimit : function(){\r\n if(cds.cadViewer.sceneObject){\r\n var boundingBox = cds.cadViewer.sceneObject.getBoundingBox();\r\n var minDist = cds.cadViewer.camera.position.distanceTo(boundingBox.min);\r\n var minScaleFactor = minDist/2;\r\n cds.cadViewer.controls.minDistance = minScaleFactor;\r\n var maxDist = cds.cadViewer.camera.position.distanceTo(boundingBox.max);\r\n var maxScaleFactor = maxDist * 20;\r\n cds.cadViewer.controls.maxDistance = maxScaleFactor;\r\n }\r\n },\r\n\r\n /**\r\n Traverses and returns all the child objects of an object recursively\r\n\r\n - parameter: name\r\n - parameter: object\r\n - parameter: callback function\r\n\r\n */\r\n getObjectsByName: function (name, jsonObject, selectedObject) {\r\n for (var i = 0; i < jsonObject.children.length; i++) {\r\n var children = jsonObject.children;\r\n\r\n if (children[i].name == name) {\r\n selectedObject(children[i]);\r\n }\r\n if (children[i].children.length > 0) {\r\n cds.cadViewer.getObjectsByName(name, children[i], function (object) {\r\n selectedObject(object);\r\n });\r\n }\r\n }\r\n },\r\n\r\n highlightObject: function (object) {\r\n if (object.userData.childType == \"Part\") {\r\n\r\n object.children.forEach(function (element) {\r\n if (element.type == \"Group\") {\r\n cds.cadViewer.applySelectionMaterialOnMesh(element.children[0]);\r\n } else {\r\n cds.cadViewer.applySelectionMaterialOnMesh(element);\r\n }\r\n })\r\n\r\n } else {\r\n for (var i = 0; i < object.children.length; i++) {\r\n cds.cadViewer.highlightObject(object.children[i]);\r\n }\r\n }\r\n },\r\n\r\n /*\r\n //////////////////////////////////////////////////////////////////////////////\r\n //FUNCTION: highlightPartByName(partName)\r\n //PURPOSE: Highlights part by its name\r\n ///////////////////////////////////////////////////////////////////////////////\r\n */\r\n highlightPartByName: function (partName) {\r\n if (cds.cadViewer.mouseSubscribed == true) {\r\n cds.cadViewer.removeNameSelectionMaterial();\r\n cds.cadViewer.removeSelectionMaterial();\r\n cds.cadViewer.INTERSECTED = null;\r\n cds.cadViewer.intersectedPart = partName;\r\n cds.cadViewer.getObjectsByName(partName, cds.cadViewer.scene.children[2].children[0], function (object) {\r\n cds.cadViewer.highlightObject(object);\r\n });\r\n }\r\n },\r\n\r\n // Restores the original material for the part\r\n removeSelectionMaterial: function () {\r\n cds.cadViewer.getSelectedMesh(function (selectedMesh) {\r\n cds.cadViewer.removeSelectionMaterialOnMesh(selectedMesh);\r\n });\r\n },\r\n\r\n //Restores the original material of the mesh which resides inside the user data\r\n removeSelectionMaterialOnMesh: function (mesh) {\r\n if (mesh.material.length != undefined && mesh.userData.currentMat != undefined) {\r\n if (mesh.userData.currentMat.length > 0) {\r\n for (var i = 0; i < mesh.material.length; i++) {\r\n mesh.material[i] = mesh.userData.currentMat[i];\r\n }\r\n }\r\n mesh.userData.currentMat = [];\r\n } else {\r\n if (cds.cadViewer.INTERSECTED != null) {\r\n if (mesh.parent.name != cds.cadViewer.INTERSECTED.parent.name) {\r\n if (cds.cadViewer.currenMaterial != undefined) {\r\n mesh.parent.traverse(function (mesh) {\r\n if (mesh instanceof THREE.Mesh) {\r\n mesh.material = cds.cadViewer.currenMaterial[0];\r\n cds.cadViewer.currenMaterial.splice(0, 1);\r\n }\r\n\r\n });\r\n mesh.parent.userData.intersected = undefined;\r\n cds.cadViewer.currenMaterial = [];\r\n }\r\n }\r\n }\r\n }\r\n },\r\n\r\n getMousePos: function (canvas, evt) {\r\n var rect = canvas.getBoundingClientRect();\r\n return {\r\n x: evt.clientX - rect.left,\r\n y: evt.clientY - rect.top\r\n };\r\n },\r\n\r\n /*\r\n //////////////////////////////////////////////////////////////////////////////\r\n //FUNCTION:getIntersects(objects)\r\n //PURPOSE: Returns array of intersected objects with current mouse position\r\n // Takes array of objects to find intersection with as input parameter\r\n ///////////////////////////////////////////////////////////////////////////////\r\n */\r\n getIntersects: function (objects) {\r\n\r\n var mouse_vector = new THREE.Vector3(cds.cadViewer.mouse.x, cds.cadViewer.mouse.y, 1);\r\n cds.cadViewer.raycaster.setFromCamera(mouse_vector, cds.cadViewer.camera);\r\n\r\n return cds.cadViewer.raycaster.intersectObjects(objects, true);\r\n\r\n },\r\n\r\n /*\r\n /////////////////////////////////////////////////////////////////////////////////////////////////////\r\n //FUNCTION:toggleGetFullPath(objects)\r\n //PURPOSE: Toggles (i.e. Enable/disables) get full path of part feature from viewer on mouse click\r\n /////////////////////////////////////////////////////////////////////////////////////////////////////\r\n */\r\n toggleGetFullPath: function () {\r\n if (!cds.cadViewer.hasOwnProperty('getFullPathOfPart')) {\r\n cds.cadViewer.getFullPathOfPart = new cds.cadViewer.GetFullPathOfPart();\r\n }\r\n cds.cadViewer.getFullPathOfPart.isGetFullPathOfPartEnabled = !cds.cadViewer.getFullPathOfPart.isGetFullPathOfPartEnabled; //showTooltip;\r\n },\r\n\r\n GetFullPathOfPart: function () {\r\n\r\n this.isGetFullPathOfPartEnabled = true;\r\n this.fullPath = '';\r\n this.path = [];\r\n /*\r\n ///////////////////////////////////////////////////////////////////////\r\n //FUNCTION: getPathofPart()\r\n //PURPOSE: If get full path of part feature is enabled,\r\n // it will return a path of intersected part on click event\r\n //////////////////////////////////////////////////////////////////////\r\n */\r\n this.getPathofPart = function () {\r\n if (this.isGetFullPathOfPartEnabled) {\r\n var intersects = cds.cadViewer.getIntersects(cds.cadViewer.sceneObject.children);\r\n if (intersects.length > 0) {\r\n var intersectedObject = intersects[0].object;\r\n\r\n if (intersectedObject != undefined && intersectedObject != null) {\r\n\r\n this.getRootLevelPathOfPart(intersectedObject);\r\n return this.fullPath;\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.getPathOfTheImmediateChildNode = function () {\r\n var intersects = cds.cadViewer.getIntersects(cds.cadViewer.sceneObject.children);\r\n if (intersects.length > 0) {\r\n var intersectedObject = intersects[0].object;\r\n var immediateNode = cds.cadViewer.getImmediateAssemblyNode(intersectedObject)\r\n return immediateNode.name;\r\n }\r\n },\r\n\r\n /*\r\n /////////////////////////////////////////////////////////////////////\r\n //FUNCTION: getRootLevelParentOfPart()\r\n //PURPOSE: Returns root (i.e. at scne.children) level path of part\r\n //////////////////////////////////////////////////////////////////////\r\n */\r\n this.getRootLevelPathOfPart = function (object) {\r\n var parent = object.parent;\r\n if (parent.parent.type != \"Scene\") {\r\n if (parent.type == \"Object3D\") {\r\n this.path.push(parent.name);\r\n\r\n if (parent.parent != undefined && parent.parent != null)\r\n this.getRootLevelPathOfPart(parent, this.path);\r\n } else if (parent.type == \"Group\") {\r\n this.path.push(parent.parent.name);\r\n\r\n if (parent.parent != undefined && parent.parent != null)\r\n this.getRootLevelPathOfPart(parent.parent, this.path);\r\n }\r\n\r\n } else {\r\n this.fullPath = \"\";\r\n for (var i = this.path.length - 1; i >= 0; i--) {\r\n this.fullPath += '/' + this.path[i]; //+ '<' + cds.cadViewer.scene.getObjectByName(path[i]).userData.id + '>';\r\n }\r\n this.path = [];\r\n //console.log(fullPath);\r\n return this.fullPath;\r\n }\r\n }\r\n\r\n },\r\n\r\n //----------------------Changing decal and color---------------------//\r\n ////////////////////////////////////////////////\r\n //Changes decal texture on a surface of a part//\r\n ////////////////////////////////////////////////\r\n changePartDecal: function (partName, imageUrl) {\r\n cds.cadViewer.scene.getObjectByName(partName).traverse(function (mesh) {\r\n if (mesh instanceof THREE.Mesh) {\r\n if (mesh.material.length != undefined) {\r\n for (var i = 0; i < mesh.material.length; i++) {\r\n mesh.material[i].map = new THREE.TextureLoader().load(imageUrl);\r\n mesh.material[i].needsUpdate = true;\r\n }\r\n } else {\r\n mesh.material.map = new THREE.TextureLoader().load(imageUrl);\r\n mesh.material.needsUpdate = true;\r\n }\r\n }\r\n });\r\n },\r\n\r\n /////////////////////////////////////////////////\r\n //Changes material color on a surface of a part//\r\n /////////////////////////////////////////////////\r\n changePartColor: function (partName, color) {\r\n var c = color;\r\n if (c.indexOf(\"#\") === 0) {\r\n c = c.substring(1);\r\n }\r\n\r\n cds.cadViewer.scene.getObjectByName(partName).traverse(function (mesh) {\r\n if (mesh instanceof THREE.Mesh) {\r\n if (mesh.material.length != undefined) {\r\n for (var i = 0; i < mesh.material.length; i++) {\r\n mesh.material[i].color.setHex('0x' + c.toString());\r\n mesh.material[i].needsUpdate = true;\r\n }\r\n } else {\r\n mesh.material.color.setHex('0x' + c.toString());\r\n mesh.material.needsUpdate = true;\r\n }\r\n }\r\n\r\n });\r\n },\r\n ////////////////////////////////////////////////\r\n //Swaps texture on a surface of a part//\r\n ////////////////////////////////////////////////\r\n swapTexture: function (partName, textureFilePath, bumpEnabled) {\r\n cds.cadViewer.scene.getObjectByName(partName).traverse(function (mesh) {\r\n if (mesh instanceof THREE.Mesh) {\r\n if (mesh.material.length != undefined) {\r\n for (var i = 0; i < mesh.material.length; i++) {\r\n if (bumpEnabled) {\r\n mesh.material[i].bumpMap = new THREE.TextureLoader().load(textureFilePath);\r\n } else {\r\n mesh.material[i].bumpMap = undefined;\r\n }\r\n mesh.material[i].needsUpdate = true;\r\n }\r\n } else {\r\n if (bumpEnabled) {\r\n mesh.material.bumpMap = new THREE.TextureLoader().load(textureFilePath);\r\n } else {\r\n mesh.material.bumpMap = undefined;\r\n }\r\n mesh.material.needsUpdate = true;\r\n }\r\n }\r\n });\r\n },\r\n setBumpTexture: function (partName, textureFilePath) {\r\n cds.cadViewer.swapTexture(partName, textureFilePath, true);\r\n },\r\n\r\n /*\r\n /////////////////////////////////////////////////////////////////////////////////////////////\r\n //FUNCTION: hasExplosion(explode)\r\n //PURPOSE: If assembly (i.e sceneObject) contains explosion data returns 'true' else 'false'\r\n //////////////////////////////////////////////////////////////////////////////////////////////\r\n */\r\n hasExplosion: function () {\r\n if (cds.cadViewer.scene.children[2].userData.hasExplosion != undefined) {\r\n if (cds.cadViewer.scene.children[2].userData.hasExplosion) {\r\n return true;\r\n }\r\n\r\n }\r\n return false;\r\n },\r\n\r\n /*\r\n ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n //FUNCTION: explodeAssembly(explode)\r\n //PURPOSE: If explode = true, explodes the assembly present in scene,\r\n // If explode = false, unexplodes the same assembly\r\n /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n */\r\n\r\n explodeAssembly: function () {\r\n cds.cadViewer.explode = !cds.cadViewer.explode;\r\n\r\n if (cds.cadViewer.hasExplosion()) {\r\n\r\n if (cds.cadViewer.studioUtils) cds.cadViewer.studioUtils.stopAnimation();\r\n\r\n cds.cadViewer.traverseAssembly(cds.cadViewer.scene.children[2].children[0]);\r\n\r\n if (cds.cadViewer.hasOwnProperty(\"offsetLines\")) {\r\n for (var k = 0; k < cds.cadViewer.offsetLines.length; k++) {\r\n var line = cds.cadViewer.offsetLines[k];\r\n if (cds.cadViewer.explode) {\r\n // cds.cadViewer.sceneObject.add(cds.cadViewer.offsetLines[k])\r\n\r\n line.material.opacity = 0\r\n line.material.transparent = true\r\n line.visible = true\r\n\r\n var tweenon = new TWEEN.Tween(line.material).to({\r\n opacity: 1\r\n }, 1500).\r\n onComplete(function () {\r\n line.material.transparent = false;\r\n\r\n });\r\n tweenon.start();\r\n } else {\r\n //cds.cadViewer.sceneObject.remove(cds.cadViewer.offsetLines[k])\r\n\r\n line.material.transparent = true\r\n line.material.opacity = 1\r\n var tweenoff = new TWEEN.Tween(line.material).to({\r\n opacity: 0\r\n }, 1500).\r\n onComplete(function () {\r\n line.visible = false\r\n\r\n });\r\n tweenoff.start();\r\n }\r\n }\r\n }\r\n } else {\r\n console.log(\"Scene does not contain explosion data\");\r\n }\r\n },\r\n\r\n /**\r\n * Visits all the child nodes in an assembly and explodes them\r\n * @param node: Object3D (Assembly)\r\n */\r\n traverseAssembly: function (node) {\r\n for (var i = 0; i < node.children.length; i++) {\r\n var childNode = node.children[i];\r\n if (childNode.children.length > 0) {\r\n if (childNode.children[0].type == \"Group\" ||\r\n childNode.children[0].type == \"Mesh\") {\r\n cds.cadViewer.applyTweenExplosion(childNode);\r\n } else {\r\n cds.cadViewer.applyTweenExplosion(childNode);\r\n if (cds.cadViewer.recursiveExplosion) {\r\n cds.cadViewer.traverseAssembly(childNode)\r\n }\r\n }\r\n }\r\n }\r\n\r\n },\r\n\r\n getFromToPosition:function(node){\r\n let explode = cds.cadViewer.explode;\r\n let from, to;\r\n to = new THREE.Matrix4();\r\n\r\n let nodeExplosionMatrix = new THREE.Matrix4();\r\n\r\n if (node.userData.initialPos == undefined) {\r\n node.userData.initialPos = new THREE.Vector3(node.position.x, node.position.y, node.position.z);\r\n }\r\n\r\n if (explode && node.userData.ExplodedMatrix != undefined) {\r\n nodeExplosionMatrix.fromArray(node.userData.ExplodedMatrix);\r\n\r\n let explodedPosition = new THREE.Vector3();\r\n let quaternion = new THREE.Quaternion();\r\n let scale = new THREE.Vector3();\r\n\r\n nodeExplosionMatrix.decompose(explodedPosition, quaternion, scale);\r\n to = explodedPosition;\r\n } else {\r\n to = node.userData.initialPos;\r\n }\r\n from = node.position;\r\n return {from, to};\r\n\r\n },\r\n\r\n applyTweenFromTo:function(from, to){\r\n var twn = new TWEEN.Tween(from)\r\n .to({\r\n x: to.x,\r\n y: to.y,\r\n z: to.z\r\n }, 1500).easing(TWEEN.Easing.Linear.None)\r\n .start();\r\n },\r\n\r\n /**\r\n * Applies tween effect on specified node\r\n * @param node: Object3D (Assembly/ Part)\r\n */\r\n applyTweenExplosion: function (node) {\r\n if (node.userData.ExplodedMatrix != undefined) {\r\n let {from, to} = this.getFromToPosition(node);\r\n this.applyTweenFromTo(from, to);\r\n }\r\n },\r\n\r\n\r\n /*\r\n ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n //FUNCTION: getReplaceablePartInModel()\r\n //PURPOSE: returns key-value pair of replaceable parts (default part name as key and replaceable part names as value) for the input part\r\n ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n */\r\n getReplaceablePartInModel: function () {\r\n var replaceablePartKeyValuePair = {};\r\n cds.cadViewer.scene.children[2].traverse(function (child) {\r\n if (child.userData.Replaceable_count != undefined) {\r\n\r\n var partName = child.name;\r\n var Replaceable_count = child.userData.Replaceable_count;\r\n replaceablePartKeyValuePair[partName] = new Array();\r\n for (var i = 1; i <= Replaceable_count; i++) {\r\n var replaceablePartName = partName + \"_\" + i;\r\n replaceablePartKeyValuePair[partName].push(replaceablePartName); //value\r\n }\r\n }\r\n });\r\n return replaceablePartKeyValuePair;\r\n },\r\n\r\n /*\r\n //////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n //FUNCTION: replacePart(key,value)\r\n //PURPOSE: Creates object of 'PartReplacement' and calls 'replacePart' function, to perform part replacement.\r\n // Takes key i.e. default part name and the value i.e. part name to be replaced with as input parameters\r\n /////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n */\r\n replacePart: function (key, value, callback) {\r\n if (!cds.cadViewer.hasOwnProperty('partReplacement') || cds.cadViewer.partReplacement === null) {\r\n cds.cadViewer.partReplacement = new cds.cadViewer.PartReplacement();\r\n }\r\n\r\n cds.cadViewer.partReplacement.replacePart(key, value, callback);\r\n },\r\n\r\n PartReplacement: function () {\r\n\r\n this.obj = function () {\r\n let obj = new Object();\r\n this.add = function (key, value) {\r\n obj[\"\" + key + \"\"] = value;\r\n },\r\n this.isEmpty = function (obj) {\r\n for (var key in obj) {\r\n if (obj.hasOwnProperty(key))\r\n return false;\r\n }\r\n return true;\r\n },\r\n this.obj = obj;\r\n }\r\n this.previousPartAdded = new this.obj();\r\n cds.cadViewer.previousPartAdded = this.previousPartAdded;\r\n this.previouslyAddedSubAsm = [];\r\n\r\n this.addPartIntoParent = null;\r\n this.defaultSubAssemblies = {};\r\n\r\n this.replaceablesObjects = [];\r\n\r\n\r\n this.getDefaultPartAddedInModel = function () {\r\n cds.cadViewer.scene.children[2].traverse(function (child) {\r\n if (child.userData.Replaceable_count != undefined) {\r\n\r\n if (child.children.length > 0) {\r\n if (child.children[0].type === \"Object3D\") {\r\n cds.cadViewer.partReplacement.isSubassembly = true;\r\n cds.cadViewer.partReplacement.defaultSubAssemblies[child.name] = child.clone();\r\n cds.cadViewer.partReplacement.addPartIntoParent = child.parent;\r\n }\r\n }\r\n var partName = child.name;\r\n\r\n cds.cadViewer.partReplacement.previousPartAdded.add(partName, partName);\r\n }\r\n });\r\n\r\n if (cds.cadViewer.isloadReplacementObjectsEnabled) {\r\n for (let partName in cds.cadViewer.replaceableParts) {\r\n cds.cadViewer.partReplacement.previousPartAdded.add(partName, cds.cadViewer.replaceableParts[partName]);\r\n }\r\n }\r\n },\r\n\r\n /*\r\n ////////////////////////////////////////////////////////////////\r\n //FUNCTION: addPart()\r\n //PURPOSE: Loads requested replaceable part in viewer\r\n ///////////////////////////////////////////////////////////////\r\n */\r\n this.addPart = function (partName, parent, prevPartMatrix, prevPartExplodedMatrix, callback) {\r\n let _this = this;\r\n var partFilePath = cds.cadViewer.cadDirectory + partName; //cadURL[1].substr(0, cadURL[1].lastIndexOf('/') + 1) + partName;\r\n if (!(partFilePath.substr(partFilePath.lastIndexOf('.'), partFilePath.length) == \".json\")) {\r\n partFilePath += \".json\"\r\n }\r\n var loader = new THREE.ObjectLoader();\r\n loader.setCrossOrigin('Anonymous');\r\n loader.parseGeometries = cds.cadViewer.threeExtension.parseGeometries;\r\n loader.load(partFilePath, function (loadedScene) {\r\n if (partName.split('.').pop().toLowerCase() == \"json\") {\r\n partName = partName.substr(0, partName.lastIndexOf('.'));\r\n }\r\n loadedScene.children[0].name = partName;\r\n //console.log(loadedScene);\r\n if (loadedScene instanceof THREE.Scene) {\r\n if (cds.cadViewer.partReplacement.replaceablesObjects.length > 1) {\r\n loadedScene.children[0].position.set(0,0,0);\r\n loadedScene.children[0].applyMatrix(prevPartMatrix);\r\n loadedScene.children[0].updateMatrix();\r\n }\r\n //loadedScene.children[0].applyMatrix(prevPartMatrix);\r\n\r\n loadedScene.children[0].userData.ExplodedMatrix = prevPartExplodedMatrix\r\n parent.add(loadedScene.children[0]);\r\n\r\n } else {\r\n loadedScene.applyMatrix(prevPartMatrix);\r\n loadedScene.userData.ExplodedMatrix = prevPartExplodedMatrix\r\n parent.add(loadedScene);\r\n }\r\n\r\n\r\n parent = null;\r\n prevPartMatrix = null;\r\n _this.addPartIntoParent = null;\r\n\r\n if (callback != undefined) {\r\n callback();\r\n }\r\n\r\n });\r\n\r\n },\r\n\r\n /*\r\n ////////////////////////////////////////////////////////////////\r\n //FUNCTION: addSubAssembly()\r\n //PURPOSE: Loads requested replaceable subassembly in viewer\r\n ///////////////////////////////////////////////////////////////\r\n */\r\n this.addSubAssembly = function (partName, callback) {\r\n var replaceableSuassembly;\r\n var loadDefaultSubassembly = this.defaultSubAssemblies[partName];\r\n if (loadDefaultSubassembly) {\r\n replaceableSuassembly = this.defaultSubAssemblies[partName];\r\n if (replaceableSuassembly.parent == null) {\r\n replaceableSuassembly.parent = this.addPartIntoParent;\r\n }\r\n\r\n this.addPartIntoParent.add(replaceableSuassembly);\r\n\r\n } else {\r\n //cds.cadViewer.replaceableSubAsmNodeList contains only replaceable parts not default\r\n if (cds.cadViewer.hasOwnProperty(\"replaceableSubAssemblyMap\")) {\r\n replaceableSuassembly = cds.cadViewer.replaceableSubAssemblyMap[partName];\r\n if (replaceableSuassembly.parent == null) {\r\n replaceableSuassembly.parent = this.addPartIntoParent;\r\n }\r\n\r\n this.addPartIntoParent.add(replaceableSuassembly);\r\n\r\n }\r\n }\r\n this.traverseObjectToSetPreviouslySelectedReplaceables(replaceableSuassembly);\r\n\r\n console.log(cds.cadViewer.partReplacement.previousPartAdded.obj);\r\n\r\n this.addPartIntoParent = null;\r\n\r\n\r\n if (callback != undefined) {\r\n callback();\r\n }\r\n },\r\n\r\n this.traverseObjectToSetPreviouslySelectedReplaceables = function (asm) {\r\n if (asm) {\r\n var keys = Object.keys(cds.cadViewer.partReplacement.previousPartAdded.obj);\r\n for (var i = 0; i < keys.length; i++) {\r\n var key = keys[i];\r\n var partKey = asm.name;\r\n if (asm.name.lastIndexOf('_') > -1) {\r\n partKey = asm.name.slice(0, asm.name.lastIndexOf('_'));\r\n }\r\n if (partKey != key) {\r\n asm.traverse(function (child) {\r\n if (child.type === \"Object3D\") {\r\n var partKey = child.name;\r\n if (child.name.lastIndexOf('_') > -1) {\r\n partKey = child.name.slice(0, child.name.lastIndexOf('_'));\r\n }\r\n if (child.name != cds.cadViewer.partReplacement.previousPartAdded.obj[key] || partKey != cds.cadViewer.partReplacement.previousPartAdded.obj[key]) {\r\n if (partKey === key && asm.name != key) {\r\n var childSubasm = cds.cadViewer.replaceableSubAssemblyMap[cds.cadViewer.partReplacement.previousPartAdded.obj[key]];\r\n if (childSubasm) {\r\n var parent = child.parent;\r\n parent.remove(child);\r\n parent.add(childSubasm);\r\n\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n });\r\n }\r\n\r\n }\r\n\r\n } else {\r\n console.log(\"Object is null : inside traverseObjectToSetPreviouslySelectedReplaceables()\");\r\n }\r\n },\r\n\r\n this.getAllReplaceableObjects = function (partKey) {\r\n var replaceablesObjects = [];\r\n cds.cadViewer.getObjectsByName(partKey, cds.cadViewer.sceneObject, function (child) {\r\n console.log(child.parent.name);\r\n replaceablesObjects.push(child);\r\n\r\n });\r\n return replaceablesObjects;\r\n },\r\n\r\n /*\r\n /////////////////////////////////////////////////////////////////////////////////////\r\n //FUNCTION: replacePart()\r\n //PURPOSE: Removes the existing part and adds new part with input partName\r\n // Also maintains previously added part list before adding new part in scene\r\n /////////////////////////////////////////////////////////////////////////////////////\r\n */\r\n this.replacePart = function (PartKey, partNameToBeAdded, callback) {\r\n\r\n cds.cadViewer.partReplacement.replaceablesObjects = [];\r\n\r\n //Get all existing(or default added) part from scene, called only once\r\n if (this.previousPartAdded.isEmpty(this.previousPartAdded.obj)) {\r\n this.getDefaultPartAddedInModel();\r\n }\r\n\r\n cds.cadViewer.getObjectsByName(this.previousPartAdded.obj[PartKey], cds.cadViewer.scene.children[2], function (child) {\r\n\r\n cds.cadViewer.partReplacement.replaceablesObjects.push(child);\r\n\r\n });\r\n\r\n\r\n if (PartKey.split('.').pop().toLowerCase() == \"json\") {\r\n PartKey = PartKey.substr(0, PartKey.lastIndexOf('.'));\r\n }\r\n\r\n if (cds.cadViewer.partReplacement.replaceablesObjects.length > 0) {\r\n for (var i = 0; i < cds.cadViewer.partReplacement.replaceablesObjects.length; i++) {\r\n var rObject = cds.cadViewer.partReplacement.replaceablesObjects[i];\r\n if (rObject.name == this.previousPartAdded.obj[PartKey]) {\r\n var prevPartMatrix = rObject.matrix;\r\n var prevPartExplodedMatrix = rObject.userData.ExplodedMatrix\r\n\r\n //Removes the already existing part from scene\r\n var addPartIntoParent = rObject.parent;\r\n if (addPartIntoParent != null) {\r\n console.log(\"Removing from parent\");\r\n addPartIntoParent.remove(rObject);\r\n } else {\r\n console.log(\"parent NULL\");\r\n addPartIntoParent = cds.cadViewer.scene.children[2];\r\n addPartIntoParent.remove(rObject);\r\n }\r\n\r\n //Decides type of node to be replaced i.e. subassembly or part\r\n if (rObject.children.length > 0) {\r\n if (rObject.children[0].type === \"Object3D\") {\r\n\r\n this.addPartIntoParent = addPartIntoParent;\r\n var partName = cds.cadViewer.replacedAssemblyToPartName[PartKey]\r\n if (partName) {\r\n cds.cadViewer.partReplacement.replaceablesObjects.delete(partName)\r\n }\r\n\r\n this.addSubAssembly(partNameToBeAdded, callback);\r\n } else {\r\n this.addPart(partNameToBeAdded, addPartIntoParent, prevPartMatrix, prevPartExplodedMatrix, callback);\r\n }\r\n } else {\r\n //Not used generally, but sometimes need it\r\n this.addPart(partNameToBeAdded, addPartIntoParent, prevPartMatrix, prevPartExplodedMatrix, callback);\r\n }\r\n }\r\n }\r\n } else {\r\n console.log(\"Unable to find replaceable part for : \" + this.previousPartAdded.obj[PartKey]);\r\n }\r\n\r\n //Update a map of previously added part\r\n delete this.previousPartAdded.obj[PartKey];\r\n if (partNameToBeAdded.substr(partNameToBeAdded.lastIndexOf('.'), partNameToBeAdded.length) == \".json\") {\r\n this.previousPartAdded.add(PartKey, partNameToBeAdded.substr(0, partNameToBeAdded.lastIndexOf('.')));\r\n } else {\r\n this.previousPartAdded.add(PartKey, partNameToBeAdded);\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n },\r\n\r\n /*\r\n ///////////////////////////////////////////////////////////////////////////////////////\r\n //FUNCTION: OnCreatePartSwitchingPanel()\r\n //PURPOSE: Creates a drop down with replaceable parts at run time (For demo purpose)\r\n //////////////////////////////////////////////////////////////////////////////////////\r\n */\r\n OnCreatePartSwitchingPanel: function () {\r\n var parts = cds.cadViewer.getReplaceablePartInModel();\r\n if (parts != undefined) {\r\n var body = document.getElementsByTagName('body')[0];\r\n cds.cadViewer.addCSSPartReplace();\r\n var divReplacePart = document.createElement(\"div\");\r\n divReplacePart.style = \"z-index: 9999;position: absolute;max-width: 200px;\";\r\n divReplacePart.id = \"ReplaceParts\";\r\n for (var key in parts) {\r\n var selectTag = document.createElement(\"select\");\r\n selectTag.id = key;\r\n selectTag.className = \"soflow\";\r\n selectTag.addEventListener(\"change\", cds.cadViewer.getSelectedValue, false);\r\n selectTag.add(new Option(key, true, true), null);\r\n for (var i = 0; i < parts[key].length; i++) {\r\n selectTag.add(new Option(parts[key][i], false, false), null);\r\n }\r\n divReplacePart.appendChild(selectTag);\r\n\r\n }\r\n\r\n body.insertBefore(divReplacePart, body.children[0]);\r\n\r\n }\r\n },\r\n\r\n /*\r\n ///////////////////////////////////////////////////////////////////\r\n //FUNCTION: getSelectedValue()\r\n //PURPOSE: Returns selected value in dropdown for replaceable part\r\n ////////////////////////////////////////////////////////////////////\r\n */\r\n getSelectedValue: function (e) {\r\n //var selected = e.target.value;\r\n var id = e.target.id;\r\n var selectedPartName = e.target.selectedOptions[0].innerText;\r\n cds.cadViewer.replacePart(id, selectedPartName);\r\n },\r\n\r\n /*\r\n ////////////////////////////////////////////////////////////////\r\n //FUNCTION: addCSSPartReplace()\r\n //PURPOSE: Loads CSS for dropdowns for part replacement\r\n ///////////////////////////////////////////////////////////////\r\n */\r\n addCSSPartReplace: function () {\r\n var csstag = document.createElement('style');\r\n csstag.append(\"select.soflow,select.soflow-color{-webkit-appearance:button;-webkit-border-radius:2px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.1);-webkit-padding-end:20px;-webkit-padding-start:2px;-webkit-user-select:none;background-image:url(http://i62.tinypic.com/15xvbd5.png),-webkit-linear-gradient(#FAFAFA,#F4F4F4 40%,#E5E5E5);background-position:97% center;background-repeat:no-repeat;border:1px solid #AAA;color:#555;font-size:inherit;margin:5px;overflow:hidden;padding:5px 10px;text-overflow:ellipsis;white-space:nowrap;width:300px}select.soflow-color{color:#fff;background-image:url(http://i62.tinypic.com/15xvbd5.png),-webkit-linear-gradient(#779126,#779126 40%,#779126);background-color:#779126;-webkit-border-radius:20px;-moz-border-radius:20px;border-radius:20px;padding-left:15px}\")\r\n var head = document.getElementsByTagName('head')[0];\r\n head.appendChild(csstag);\r\n },\r\n\r\n loadReplaceableParts: function (partList) {\r\n cds.cadViewer.isloadReplacementObjectsEnabled = true;\r\n cds.cadViewer.replaceableParts = partList;\r\n },\r\n\r\n replaceByReplaceableParts: function (JSONFileObject) {\r\n\r\n if (this.replaceableParts[JSONFileObject.title] !== undefined) {\r\n JSONFileObject.title = this.replaceableParts[JSONFileObject.title];\r\n JSONFileObject.filename = JSONFileObject.title + \".json\";\r\n }\r\n\r\n for (let i = 0; i < JSONFileObject.children.length > 0; i++) {\r\n this.replaceByReplaceableParts(JSONFileObject.children[i]);\r\n }\r\n\r\n },\r\n\r\n /*\r\n //////////////////////////////////////////////////////////\r\n //Part Streaming : Load part JSON files using main.json\r\n //////////////////////////////////////////////////////////\r\n */\r\n readJSON: function (filePath, assemblyId) {\r\n if (!cds.cadViewer.hasOwnProperty('readJSONFile') || cds.cadViewer.readJSONFile === null) {\r\n cds.cadViewer.readJSONFile = new cds.cadViewer.ReadJSONFile(assemblyId);\r\n }\r\n cds.cadViewer.readJSONFile.readJSON(filePath, assemblyId);\r\n },\r\n\r\n ReadJSONFile: function (assemblyId) {\r\n\r\n var ispartLoading = false;\r\n var JSONFileObject = new THREE.Object3D();\r\n var rootobj = new THREE.Object3D(); // will later be filled with the data\r\n var partDir = null;\r\n var bounding;\r\n var superRoot = new THREE.Object3D();\r\n var partCount = 0;\r\n var countPart = 0;\r\n\r\n this.readJSON = function (filePath, assemblyId) {\r\n var cameraControls = new cds.cadViewer.CameraControls();\r\n cds.cadViewer.urlToSceneObjectMap[cds.cadViewer.cadFilePath] = undefined;\r\n if (cds.cadViewer.urlToSceneObjectMap[cds.cadViewer.cadFilePath] != undefined) {\r\n cds.cadViewer.scene.remove(cds.cadViewer.sceneObject)\r\n cds.cadViewer.sceneObject = cds.cadViewer.urlToSceneObjectMap[cds.cadViewer.cadFilePath]\r\n \r\n if (cds.cadViewer.sceneObject.userData.boundingBox != undefined || cds.cadViewer.sceneObject.userData.boundingBox != null) {\r\n cds.cadViewer.sceneBoundingBox = cds.cadViewer.convertBoundingBox(cds.cadViewer.sceneObject.userData.boundingBox);\r\n }\r\n cds.cadViewer.changeCameraTransform(cds.cadViewer.sceneBoundingBox);\r\n cds.cadViewer.centerCamera();\r\n cds.cadViewer.scene.add(cds.cadViewer.sceneObject)\r\n cds.cadViewer.resetCamera()\r\n cds.cadViewer.readJSONFile.onCompleteSceneLoad()\r\n return\r\n }\r\n partDir = filePath.substr(0, filePath.lastIndexOf('/') + 1);\r\n var request = new XMLHttpRequest();\r\n request.open('GET', filePath, true);\r\n request.overrideMimeType('text/xml; charset=ISO-8859-1');\r\n request.send(null);\r\n if (!cds.cadViewer.isAssembly) {\r\n if (cds.cadViewer.partFileSize) {\r\n request.onprogress = function (evt) {\r\n var progress = (evt.loaded / cds.cadViewer.partFileSize) * 100\r\n cds.cadViewer.onAssemblyProgress(progress)\r\n }\r\n }\r\n }\r\n request.onreadystatechange = function () {\r\n if (request.readyState == 4) {\r\n if (request.status == 200) {\r\n\r\n if (request.response !== \"\") {\r\n JSONFileObject = JSON.parse(request.response);\r\n\r\n if (cds.cadViewer.isloadReplacementObjectsEnabled) {\r\n cds.cadViewer.replaceByReplaceableParts(JSONFileObject);\r\n }\r\n }\r\n\r\n\r\n cameraControls.setCameraWith(JSONFileObject);\r\n\r\n if (!JSONFileObject.hasOwnProperty('filename')) {\r\n cds.cadViewer.loadJSON(filePath, JSONFileObject);\r\n } else {\r\n if (JSONFileObject.userData.hasOwnProperty('DLL_Version')) {\r\n console.log(\"DLL Version: \" + JSONFileObject.userData.DLL_Version);\r\n console.log(\"Viewer version: \" + cds.cadViewer.viewerVersion);\r\n }\r\n\r\n cds.cadViewer.readJSONFile.readMainJSON(JSONFileObject, assemblyId);\r\n }\r\n } else {\r\n console.log(\"Failed to load, status code: \" + request.status);\r\n }\r\n }\r\n }\r\n \r\n }\r\n\r\n this.readMainJSON = function (JSONFileObject, assemblyId) {\r\n cds.cadViewer.disposeDimensionDivElements();\r\n\r\n if (assemblyId == undefined) {\r\n rootobj.name = JSONFileObject.children[0].title;\r\n rootobj.type = \"Object3D\";\r\n rootobj.parent = superRoot;\r\n if (JSONFileObject.children[0].userData) {\r\n rootobj.userData = JSONFileObject.children[0].userData;\r\n }\r\n if (!cds.cadViewer.isloadReplacementObjectsEnabled) {\r\n cds.cadViewer.scene.add(superRoot);\r\n }\r\n cds.cadViewer.sceneObject = superRoot;\r\n cds.cadViewer.urlToSceneObjectMap[cds.cadViewer.cadFilePath.toString()] = cds.cadViewer.sceneObject\r\n cds.cadViewer.controls.reset();\r\n this.decideRootObject(JSONFileObject.children[0], rootobj);\r\n superRoot.children.push(rootobj);\r\n if (JSONFileObject.userData) {\r\n superRoot.userData = JSONFileObject.userData;\r\n }\r\n } else {\r\n rootobj.name = assemblyId;\r\n var assembly = this.getAssemblyByName(JSONFileObject, assemblyId);\r\n rootobj.type = \"Object3D\";\r\n rootobj.parent = superRoot;\r\n rootobj.userData.ExplodedMatrix = assembly.userData.ExplodedMatrix;\r\n this.decideRootObject(assembly, rootobj);\r\n superRoot.children.push(rootobj);\r\n if (JSONFileObject.userData) {\r\n superRoot.userData = JSONFileObject.userData;\r\n }\r\n cds.cadViewer.sceneObject = superRoot;\r\n if (!cds.cadViewer.isloadReplacementObjectsEnabled) {\r\n cds.cadViewer.scene.add(cds.cadViewer.sceneObject);\r\n }\r\n }\r\n if (cds.cadViewer.sceneBoundingBox != undefined || cds.cadViewer.sceneBoundingBox != null) {\r\n cds.cadViewer.changeCameraTransform(cds.cadViewer.sceneBoundingBox);\r\n cds.cadViewer.centerCamera();\r\n }\r\n if (JSONFileObject.hasOwnProperty('OffsetLines')) {\r\n\r\n this.loadOffsetLines(JSONFileObject.OffsetLines)\r\n } \r\n }\r\n\r\n this.loadOffsetLines = function (jOffsetLines) {\r\n //create a blue LineBasicMaterial\r\n // var material = new THREE.LineBasicMaterial({ color: 0x0000ff });\r\n var material = new THREE.LineDashedMaterial({\r\n color: 0x0000ff,\r\n linewidth: 1,\r\n scale: 1,\r\n dashSize: 4,\r\n gapSize: 6,\r\n });\r\n for (var j = 0; j < jOffsetLines[0].geometries.length; j++) {\r\n var geom = jOffsetLines[0].geometries[j]\r\n var geometry = new THREE.Geometry();\r\n if (geom.data.vertices.length % 3 == 0) {\r\n for (var i = 0; i <= geom.data.vertices.length - 3; i += 3) {\r\n var vec = new THREE.Vector3(geom.data.vertices[i], geom.data.vertices[i + 1], geom.data.vertices[i + 2])\r\n geometry.vertices.push(vec)\r\n }\r\n\r\n }\r\n geometry.computeLineDistances();\r\n var line = new THREE.Line(geometry, material);\r\n if (!cds.cadViewer.hasOwnProperty('offsetLines')) {\r\n cds.cadViewer.offsetLines = []\r\n }\r\n line.visible = false\r\n cds.cadViewer.offsetLines.push(line)\r\n cds.cadViewer.sceneObject.add(line);\r\n\r\n\r\n }\r\n\r\n }\r\n\r\n this.getAssemblyByName = function (json, assemblyId) {\r\n var assembly = this.getAssemblyJson(json.children[0], assemblyId);\r\n return assembly;\r\n }\r\n\r\n this.getAssemblyJson = function (jsonObject, assemblyId) {\r\n for (var i = 0; i < jsonObject.children.length; i++) {\r\n var children = jsonObject.children;\r\n if (children[i].children.length > 0) {\r\n if (children[i].userData.compId == assemblyId) {\r\n return children[i];\r\n }\r\n var assembly = this.getAssemblyJson(children[i], assemblyId);\r\n\r\n if (assembly !== undefined) {\r\n return assembly;\r\n }\r\n }\r\n }\r\n\r\n\r\n },\r\n\r\n\r\n this.decideRootObject = function (JSONRootObject, rootobject) {\r\n var childCount = JSONRootObject.children.length;\r\n switch (JSONRootObject.type) {\r\n case \"Assembly\":\r\n this.traverseMainJSON(JSONRootObject, rootobj, null, function (progress) {\r\n cds.cadViewer.onAssemblyProgress(progress)\r\n });\r\n break;\r\n case \"Part\":\r\n this.loadPartFile(JSONRootObject, rootobject, this.onPartLoad);\r\n partCount += 1;\r\n }\r\n }\r\n\r\n this.traverseMainJSON = function (JSONobj, rootobject, parentExplosionMatrix, onProgress) {\r\n var totalChildCount = JSONobj.children.length\r\n var childrenLoaded = 0\r\n for (var x = 0; x < JSONobj.children.length; x++) {\r\n\r\n var scopedMatrix = JSON.parse(JSON.stringify(parentExplosionMatrix));\r\n if (JSONobj.children[x].type == \"Assembly\") {\r\n var isReplaceableSubAsm = false;\r\n\r\n var _subasm = new THREE.Object3D();\r\n _subasm.name = JSONobj.children[x].title; //a subassembly node to keep record of parent assembly\r\n var _smatrix = new THREE.Matrix4();\r\n _smatrix.fromArray(JSONobj.children[x].matrix);\r\n _subasm.applyMatrix(_smatrix); //assigning matrix of assembly\r\n _subasm.updateMatrix();\r\n _subasm.parent = rootobject;\r\n _subasm.userData = JSON.parse(JSON.stringify(JSONobj.children[x].userData)); // Deep copy\r\n var childExploMatrix = new THREE.Matrix4()\r\n if (scopedMatrix) {\r\n var exploMatrix = new THREE.Matrix4();\r\n exploMatrix.fromArray(scopedMatrix);\r\n\r\n if (_subasm.userData.ExplodedMatrix) {\r\n var newExplosionMatrix = exploMatrix.clone()\r\n childExploMatrix.fromArray(_subasm.userData.ExplodedMatrix);\r\n var newMatrix = new THREE.Matrix4();\r\n newMatrix.multiplyMatrices(newExplosionMatrix, childExploMatrix);\r\n\r\n var invertedMatrix = exploMatrix.getInverse(exploMatrix);\r\n var matrix = new THREE.Matrix4()\r\n matrix.multiplyMatrices(invertedMatrix, childExploMatrix);\r\n\r\n _subasm.userData.ExplodedMatrix = matrix.toArray();\r\n scopedMatrix = newMatrix.toArray()\r\n } else {\r\n var matrix = new THREE.Matrix4()\r\n matrix.multiplyMatrices(exploMatrix, _subasm.matrix);\r\n scopedMatrix = matrix.toArray()\r\n }\r\n } else {\r\n if (_subasm.userData.ExplodedMatrix) {\r\n var exploMatrix = rootobject.matrix.clone();\r\n childExploMatrix.fromArray(_subasm.userData.ExplodedMatrix);\r\n var invertedMatrix = exploMatrix.getInverse(exploMatrix);\r\n var matrix = invertedMatrix.multiply(childExploMatrix);\r\n _subasm.userData.ExplodedMatrix = matrix.toArray();\r\n scopedMatrix = matrix.toArray()\r\n } else {\r\n scopedMatrix = _subasm.matrix.toArray();\r\n }\r\n }\r\n\r\n\r\n\r\n //Check if subassembly is having replaceable subassemblies\r\n this.checkReplaceableSubassemblies(_subasm);\r\n\r\n if (cds.cadViewer.hasOwnProperty('replaceableSubAsmNameList')) {\r\n var replaceableValuesArray = Object.values(cds.cadViewer.replaceableSubAsmNameList);\r\n\r\n for (var i = 0; i < replaceableValuesArray.length; i++) {\r\n var values = replaceableValuesArray[i];\r\n if (values.indexOf(_subasm.name) > -1) {\r\n isReplaceableSubAsm = true;\r\n if (!cds.cadViewer.hasOwnProperty('replaceableSubAssemblyMap')) {\r\n //cds.cadViewer.replaceableSubAsmNodeList = [];\r\n cds.cadViewer.replaceableSubAssemblyMap = {};\r\n }\r\n // cds.cadViewer.replaceableSubAsmNodeList.push(_subasm);\r\n cds.cadViewer.replaceableSubAssemblyMap[_subasm.name] = _subasm;\r\n }\r\n }\r\n }\r\n if (!isReplaceableSubAsm) {\r\n rootobject.children.push(_subasm);\r\n }\r\n\r\n this.traverseMainJSON(JSONobj.children[x], _subasm, JSON.parse(JSON.stringify(scopedMatrix)), function (progress) {\r\n if (progress == 100) {\r\n childrenLoaded += 1\r\n var progress = (childrenLoaded / totalChildCount) * 100\r\n onProgress(progress)\r\n }\r\n });\r\n\r\n } else if (JSONobj.children[x].type == \"Part\") {\r\n this.loadPartFile(JSONobj, JSONobj.children[x], rootobject, JSON.parse(JSON.stringify(scopedMatrix)), this.onPartLoad, function () {\r\n childrenLoaded += 1\r\n var progress = (childrenLoaded / totalChildCount) * 100\r\n onProgress(progress)\r\n });\r\n partCount += 1;\r\n }\r\n }\r\n }\r\n\r\n this.loadPartFile = function (subAsmJsonObj, JSONobj, rootobject, scopedMatrix, callback, partLoaded) {\r\n var cadURL = \"\";\r\n if (cds.cadViewer.previousPartAdded != null) {\r\n if (cds.cadViewer.previousPartAdded.obj != undefined) {\r\n if (JSONobj.title in cds.cadViewer.previousPartAdded.obj) {\r\n cadURL = partDir + cds.cadViewer.previousPartAdded.obj[JSONobj.title] + \".json\"\r\n } else {\r\n cadURL = partDir + JSONobj.filename;\r\n }\r\n }\r\n } else {\r\n cadURL = partDir + JSONobj.filename;\r\n }\r\n\r\n var loader = new THREE.ObjectLoader();\r\n loader.setCrossOrigin('Anonymous');\r\n loader.parseGeometries = cds.cadViewer.threeExtension.parseGeometries;\r\n loader.load(cadURL, function (loadedScene) {\r\n loadedScene.name = JSONobj.filename;\r\n if (JSONobj.hasOwnProperty('userData')) {\r\n if (JSONobj.userData.hasOwnProperty('compId')) {\r\n loadedScene.userData.compId = JSONobj.userData.compId;\r\n }\r\n }\r\n callback(loadedScene, subAsmJsonObj, JSONobj, rootobject, scopedMatrix, function () {\r\n partLoaded()\r\n }, cds.cadViewer.readJSONFile.onCompleteSceneLoad);\r\n });\r\n }\r\n\r\n this.onPartLoad = function (loadedScene, subAsmJsonObj, JSONobj, subAsmNode, parentExplosionMatrix, partLoaded, callback) {\r\n var partNode = loadedScene.children[0];\r\n\r\n if (cds.cadViewer.instancingEnabled) {\r\n if (cds.cadViewer.partNameToObject3d[JSONobj.filename] != undefined) {\r\n var partNode = cds.cadViewer.partNameToObject3d[JSONobj.filename].clone();\r\n } else {\r\n cds.cadViewer.partNameToObject3d[JSONobj.filename] = partNode.clone();\r\n }\r\n }\r\n partNode.uuid = THREE.Math.generateUUID();\r\n partNode.parent = subAsmNode;\r\n var matrix = new THREE.Matrix4();\r\n matrix.fromArray(JSONobj.matrix);\r\n partNode.applyMatrix(matrix); //apply part level transformation matrix\r\n partNode.updateMatrix();\r\n\r\n if (JSONobj.userData) {\r\n partNode.userData.ExplodedMatrix = JSONobj.userData.ExplodedMatrix;\r\n partNode.userData.compId = JSONobj.userData.compId;\r\n if (JSONobj.userData.ExplodedMatrix) {\r\n var exploMatrix = new THREE.Matrix4();\r\n if (parentExplosionMatrix != undefined) {\r\n exploMatrix.fromArray(parentExplosionMatrix);\r\n var childExploMatrix = new THREE.Matrix4();\r\n childExploMatrix.fromArray(partNode.userData.ExplodedMatrix);\r\n var invertedMatrix = exploMatrix.getInverse(exploMatrix);\r\n var matrix = invertedMatrix.multiply(childExploMatrix);\r\n partNode.userData.ExplodedMatrix = matrix.toArray();\r\n }\r\n }\r\n }\r\n subAsmNode.children.push(partNode);\r\n cds.cadViewer.storeOriginalMatrixOfPartInUserData(partNode);\r\n\r\n countPart += 1;\r\n\r\n if (countPart == partCount) {\r\n callback(cds.cadViewer.scene);\r\n }\r\n partLoaded()\r\n\r\n }\r\n\r\n\r\n //this.cloneMaterialForPart = function (original, destination )\r\n //{\r\n // for ( var i = 0; i < original.children.length; i++ )\r\n // {\r\n // if ( original.children[i].type == 'Group' )\r\n // {\r\n // for ( var j = 0; j < original.children[i].children[0].material.length; j++ )\r\n // {\r\n // destination.children[i].children[0].material[j] = new THREE.MeshPhysicalMaterial()\r\n // }\r\n // }\r\n // else\r\n // {\r\n // for ( var j = 0; j < original.children[i].material.length; j++ )\r\n // {\r\n // destination.children[i].material[j] = new THREE.MeshPhysicalMaterial()\r\n // }\r\n // }\r\n // }\r\n //}\r\n\r\n this.onCompleteSceneLoad = function () {\r\n \t \r\n var _this = cds.cadViewer;\r\n try {\r\n\r\n var cameraControls = new _this.CameraControls();\r\n \r\n if (cds.cadViewer.sceneBoundingBox == undefined || cds.cadViewer.sceneBoundingBox == null) {\r\n if(cds.cadViewer.sceneObject != null || cds.cadViewer.sceneObject != undefined){\r\n cds.cadViewer.sceneBoundingBox = cds.cadViewer.sceneObject.getBoundingBox();\r\n var scale = cds.cadViewer.scaleObject(cds.cadViewer.sceneObject.getBoundingBox());\r\n cds.cadViewer.sceneObject.scale.set(scale, scale, scale)\r\n cds.cadViewer.centerObject(cds.cadViewer.sceneObject);\r\n }\r\n \r\n }\r\n // cds.cadViewer.setControlLimit(); //yash\r\n if (cds.cadViewer.sceneObject != null || cds.cadViewer.sceneObject != undefined) {\r\n cameraControls.setCameraPosition(cds.cadViewer.sceneObject.userData.cameraPosition);\r\n cameraControls.storeCameraPosition();\r\n }\r\n\r\n _this.originalSceneObjectMatertials.length = 0;\r\n _this.edgeEffect.enabled = false;\r\n _this.setRenderMode(cds.cadViewer.currentRenderMode);\r\n if (cds.cadViewer.sceneObject != null || cds.cadViewer.sceneObject != undefined) {\r\n cds.cadViewer.homeBoundingBox = cds.cadViewer.sceneObject.getBoundingBox();\r\n cds.cadViewer.sceneObject.traverse(function (child) {\r\n if (child.userData.dimension) {\r\n cds.cadViewer.displayDimensions();\r\n }\r\n })\r\n }\r\n\r\n cds.cadViewer.applyStudioProperties();\r\n\r\n if (cds.cadViewer.isloadReplacementObjectsEnabled) {\r\n if(cds.cadViewer.scene && cds.cadViewer.sceneObject)\r\n cds.cadViewer.scene.add(cds.cadViewer.sceneObject);\r\n }\r\n\r\n cds.cadViewer.distanceFromBoundingBox = cds.cadViewer.getCameraPositionValueForView();\r\n _this.animate();\r\n _this.render();\r\n } catch (e) {\r\n console.log(\"Error loading model in CDS CAD viewer: \" + e);\r\n } finally {\r\n _this.isLoading = false;\r\n if (!cds.cadViewer.showPercentLoader)\r\n _this.loadingIcon.style.display = \"none\";\r\n delete _this.readJSONFile;\r\n\r\n if (_this.controls) {\r\n _this.controls.handleResize(); // added resolve rotation/orbiting issue with model on 'Winsmith' configurator\r\n _this.controls.enabled = true;\r\n }\r\n _this.bbs.forEach(function (b) {\r\n _this.scene.remove(b);\r\n });\r\n\r\n _this.bbs.length = 0;\r\n _this.originalWidth = Number.MAX_VALUE;\r\n _this.originalHeight = Number.MAX_VALUE;\r\n _this.alreadyBinned = false;\r\n if (_this.renderer) {\r\n if (_this.alreadyBinned === false) {\r\n _this.alreadyBinned = true;\r\n _this.originalWidth = _this.renderer.domElement.offsetWidth;\r\n _this.originalHeight = _this.renderer.domElement.offsetHeight;\r\n }\r\n //cds.cadViewer.OnCreatePartSwitchingPanel();\r\n _this.partNameToObject3d = []\r\n if (cds.cadViewer.sceneObject.children[0].userData.childType == 'Part'){\r\n var e = document.getElementById(\"explode-icon\");\r\n if (e) e.style.display = \"none\";\r\n }\r\n else {\r\n if (cds.cadViewer.sceneObject.userData.hasExplosion)\r\n var e = document.getElementById(\"explode-icon\");\r\n if (e) e.style.display = \"\";\r\n }\r\n if (cds.cadViewer.sceneObject) {\r\n let isDimension = false;\r\n cds.cadViewer.sceneObject.traverse((child) => {\r\n\r\n if (child.userData.dimension != null) {\r\n var dimensionLength = child.userData.dimension.length;\r\n if (dimensionLength > 0) {\r\n isDimension = true;\r\n }\r\n }\r\n })\r\n if (isDimension) {\r\n var e = document.getElementById(\"dimension-icon\");\r\n if (e) e.style.display = \"\";\r\n }\r\n else {\r\n var e = document.getElementById(\"dimension-icon\");\r\n if (e) e.style.display = \"none\";\r\n }\r\n cds.cadViewer.isDimensionsData = isDimension;\r\n }\r\n _this.postLoadSceneCallback();\r\n cds.cadViewer.animate();\r\n let camControls = new cds.cadViewer.CameraControls();\r\n camControls.storeCameraPosition();\r\n cds.cadViewer.addEnvMap(cds.cadViewer.ENVIRONMENT_MAP_LINK, 'jpg', cds.cadViewer.environment.map);\r\n // cds.cadViewer.applyEnvironmentMap(cds.cadViewer.environment.map, cds.cadViewer.environment.type);\r\n // cds.cadViewer.setEnvMap(cds.cadViewer.ENVIRONMENT_TYPE.REFLECTION, cds.cadViewer.environment.map); \r\n if(cds.cadViewer.boolIE){\r\n cds.cadViewer.displayAnimationMessage(\"Advanced features may not be supported in this browser!\");\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n //For replaceable sub-assemblies\r\n this.checkReplaceableSubassemblies = function (subassembly) {\r\n if (subassembly.userData.hasOwnProperty('Replaceable_count')) {\r\n if (!cds.cadViewer.hasOwnProperty('replaceableSubAsmNameList')) {\r\n cds.cadViewer.replaceableSubAsmNameList = {};\r\n }\r\n\r\n for (var i = 1; i <= subassembly.userData.Replaceable_count; i++) {\r\n if (!cds.cadViewer.replaceableSubAsmNameList[subassembly.name]) {\r\n cds.cadViewer.replaceableSubAsmNameList[subassembly.name] = new Array();\r\n }\r\n\r\n cds.cadViewer.replaceableSubAsmNameList[subassembly.name].push(subassembly.name + \"_\" + i);\r\n }\r\n }\r\n }\r\n },\r\n\r\n getMonthOrdinal: function (month) {\r\n switch (month) {\r\n case \"Jan\":\r\n return 1;\r\n break;\r\n\r\n case \"Feb\":\r\n return 2;\r\n break;\r\n\r\n case \"Mar\":\r\n return 3;\r\n break;\r\n\r\n case \"April\":\r\n return 4;\r\n break;\r\n\r\n case \"May\":\r\n return 5;\r\n break;\r\n\r\n case \"June\":\r\n return 6;\r\n break;\r\n\r\n case \"July\":\r\n return 7;\r\n break;\r\n\r\n case \"Aug\":\r\n return 8;\r\n break;\r\n\r\n case \"Sept\":\r\n return 9;\r\n break;\r\n\r\n case \"Oct\":\r\n return 10;\r\n break;\r\n\r\n case \"Nov\":\r\n return 11;\r\n break;\r\n\r\n default:\r\n return 12;\r\n }\r\n },\r\n\r\n\r\n ifDllHasBumpScaled: function (dllVersion) {\r\n var lstString = dllVersion.split('.');\r\n var date = new Date(lstString[0], cds.cadViewer.getMonthOrdinal(lstString[1]), lstString[2]);\r\n var dateForDllWithBumpScale = new Date(2018, 8, 21);\r\n return date >= dateForDllWithBumpScale || (dllVersion.indexOf(\"1.0.0\") !== -1);\r\n },\r\n\r\n\r\n CameraControls: function () {\r\n\r\n this.setCameraFrom = function (userData) {\r\n if (userData.DLL_Version != undefined) {\r\n if (cds.cadViewer.ifDllHasBumpScaled(userData.DLL_Version)) {\r\n if (userData.hasOwnProperty('boundingBox'))\r\n cds.cadViewer.sceneBoundingBox = cds.cadViewer.convertBoundingBox(userData.boundingBox);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Set camera position with respect to bounding box\r\n */\r\n this.setCameraWith = function (jsonFileObject) {\r\n if (jsonFileObject.hasOwnProperty('userData')) { //for assmebly\r\n this.setCameraFrom(jsonFileObject.userData)\r\n } else if (jsonFileObject.hasOwnProperty('object')) { //for part file\r\n if (jsonFileObject.object.hasOwnProperty('userData')) {\r\n this.setCameraFrom(jsonFileObject.object.userData)\r\n }\r\n }\r\n }\r\n /**\r\n * Stores the camera position for initial camera view\r\n */\r\n this.storeCameraPosition = function () {\r\n\r\n ////keep initial camera positions\r\n cds.cadViewer.cameraPosX = cds.cadViewer.camera.position.x;\r\n cds.cadViewer.cameraPosY = cds.cadViewer.camera.position.y;\r\n cds.cadViewer.cameraPosZ = cds.cadViewer.camera.position.z;\r\n\r\n cds.cadViewer.cameraRotX = cds.cadViewer.camera.rotation.x;\r\n cds.cadViewer.cameraRotY = cds.cadViewer.camera.rotation.y;\r\n cds.cadViewer.cameraRotZ = cds.cadViewer.camera.rotation.z;\r\n }\r\n\r\n /**\r\n * Sets the camera position from JSON file\r\n */\r\n this.setCameraPosition = function (cameraPosition) {\r\n if (cameraPosition != undefined) {\r\n var identity = new THREE.Matrix4().identity();\r\n var matrix = new THREE.Matrix4().fromArray(cameraPosition)\r\n if (!matrix.equals(identity)) {\r\n\r\n cds.cadViewer.camera.updateMatrix();\r\n var mat = new THREE.Matrix4().fromArray(cameraPosition);\r\n var inverse = new THREE.Matrix4();\r\n inverse.getInverse(mat);\r\n var quaternion = new THREE.Quaternion();\r\n var position = new THREE.Vector3();\r\n var scale = new THREE.Vector3();\r\n\r\n inverse.decompose(position, quaternion, scale);\r\n cds.cadViewer.camera.position.set(position.x, position.y, position.z);\r\n\r\n\r\n cds.cadViewer.camera.up.set(cameraPosition[1], cameraPosition[5], cameraPosition[9]);\r\n cds.cadViewer.camera.updateProjectionMatrix();\r\n }\r\n\r\n if (cds.cadViewer.isloadReplacementObjectsEnabled) {\r\n cds.cadViewer.camera.position.z = 60;\r\n cds.cadViewer.sceneBoundingBox = cds.cadViewer.sceneObject.getBoundingBox();\r\n cds.cadViewer.changeCameraTransform(cds.cadViewer.sceneBoundingBox);\r\n cds.cadViewer.centerCamera();\r\n }\r\n }\r\n }\r\n\r\n /*\r\n * Calculates the min and max camera distance from the center of the model\r\n * minDistanceMultiplier may be used to change the maximum zoom\r\n */\r\n this.setZoomLimits = function (minDistanceMultiplier) {\r\n var __this = cds.cadViewer;\r\n if (!cds.cadViewer.scene.children[2].userData.hasOwnProperty(\"boundingBox\")) {\r\n var radius = Math.max(__this.sceneBoundingBox.max.x - __this.sceneBoundingBox.min.x,\r\n __this.sceneBoundingBox.max.y - __this.sceneBoundingBox.min.y,\r\n __this.sceneBoundingBox.max.z - __this.sceneBoundingBox.min.z);\r\n var maxScale = Math.max(__this.sceneObject.scale.x, __this.sceneObject.scale.y, __this.sceneObject.scale.z);\r\n\r\n __this.controls.minDistance = radius * maxScale;\r\n __this.controls.maxDistance = __this.controls.minDistance * __this.ZOOM_MULTIPLIER;\r\n\r\n if (typeof minDistanceMultiplier !== \"undefined\" && minDistanceMultiplier !== null) {\r\n __this.controls.minDistance *= minDistanceMultiplier;\r\n }\r\n } else {\r\n var dist = cds.cadViewer.camera.position.distanceTo(cds.cadViewer.sceneObject.position)\r\n var scalefactor = dist / 2;\r\n\r\n __this.controls.minDistance = scalefactor;\r\n __this.controls.maxDistance = __this.controls.minDistance * __this.ZOOM_MULTIPLIER;\r\n\r\n if (typeof minDistanceMultiplier !== \"undefined\" && minDistanceMultiplier !== null) {\r\n __this.controls.minDistance *= minDistanceMultiplier;\r\n }\r\n }\r\n }\r\n },\r\n\r\n ///////////////Surface level material swap -start/////////////\r\n\r\n /*\r\n /////////////////////////////////////////////////////////////\r\n //Fetch material from scene with input UUID i.e. materialId\r\n ////////////////////////////////////////////////////////////\r\n */\r\n fetchMaterial: function (materialId) {\r\n var material = undefined;\r\n cds.cadViewer.scene.traverse(function (mesh) {\r\n if (mesh instanceof THREE.Mesh) {\r\n for (var i = 0; i < mesh.material.length; i++) {\r\n if (mesh.material[i]) {\r\n if (mesh.material[i].uuid == materialId) {\r\n\r\n material = mesh.material[i];\r\n break;\r\n }\r\n } else {\r\n console.log(\"Material undefined\");\r\n }\r\n }\r\n }\r\n });\r\n return material;\r\n },\r\n\r\n ///////////////////////////////////////////////////\r\n //Get all the configurable materials in the model//\r\n ///////////////////////////////////////////////////\r\n getConfigurableMaterials: function () {\r\n var configurableMaterials = new Object();\r\n cds.cadViewer.scene.traverse(function (object) {\r\n\r\n if (object instanceof THREE.Object3D || object instanceof THREE.Group) {\r\n var confMap = object.userData.configurableMaterials;\r\n if (confMap != undefined) {\r\n\r\n for (var i = 0; i < Object.keys(confMap).length; i++) {\r\n configurableMaterials[Object.keys(confMap)[i]] = confMap[Object.keys(confMap)[i]];\r\n }\r\n }\r\n }\r\n });\r\n\r\n return configurableMaterials;\r\n },\r\n /*\r\n /////////////////////////////////////////////////////////////\r\n //Fetch material applied on particular group of surface\r\n ////////////////////////////////////////////////////////////\r\n */\r\n getSurfaceMaterial: function (surfaceType) {\r\n var matId = \"\";\r\n var materialMap = cds.cadViewer.getConfigurableMaterials();\r\n for (var i = 0; i < Object.keys(materialMap).length; i++) {\r\n if (Object.keys(materialMap)[i] == surfaceType) {\r\n matId = materialMap[surfaceType];\r\n\r\n }\r\n }\r\n if (matId != \"\") {\r\n var material = cds.cadViewer.fetchMaterial(matId);\r\n return material;\r\n } else {\r\n console.log(\"Unable to find material for surface : \" + surfaceType);\r\n return undefined;\r\n }\r\n },\r\n /*\r\n /////////////////////////////////////////////////////////////\r\n //Swaps color of specified surface material\r\n ////////////////////////////////////////////////////////////\r\n */\r\n setSurfaceColor: function (surfaceType, color) {\r\n if (color.indexOf(\"#\") === 0) {\r\n color = color.substring(1);\r\n }\r\n var material = cds.cadViewer.getSurfaceMaterial(surfaceType);\r\n if (material != undefined) {\r\n if (material.map) {\r\n material.map = null;\r\n }\r\n material.color.setHex('0x' + color.toString());\r\n material.needsUpdate = true;\r\n\r\n }\r\n },\r\n\r\n /*\r\n ///////////////////////////////////////////////////////////////////////////////////////////////\r\n //FUNCTION:swapSurfaceTexture(surfaceType, textureImageUrl, isBumpEnabled)\r\n //PURPOSE: Swaps texture of specified surface\r\n //Input Parameters: surfaceType - Added parameter values for surface in Creo\r\n // textureImageUrl - Texture image path to be applied\r\n // isBumpEnabled = If true, applies bump texture, otherwise color texture\r\n /////////////////////////////////////////////////////////////////////////////////////////////\r\n */\r\n setSurfaceTexture: function (surfaceType, textureImageUrl, isBumpEnabled) {\r\n var material = cds.cadViewer.getSurfaceMaterial(surfaceType);\r\n\r\n if (material != undefined) {\r\n\r\n if (isBumpEnabled) {\r\n material.bumpMap = new THREE.TextureLoader().load(textureImageUrl);\r\n material.bumpScale = 1;\r\n\r\n } else {\r\n material.bumpMap = undefined;\r\n material.map = new THREE.TextureLoader().load(textureImageUrl);\r\n }\r\n\r\n material.needsUpdate = true;\r\n\r\n }\r\n },\r\n\r\n setSurfaceBumpTexture: function (surfaceType, textureImageUrl) {\r\n cds.cadViewer.swapSurfaceTexture(surfaceType, textureImageUrl, true);\r\n },\r\n\r\n ///////////////Surface level material swap -end/////////////\r\n\r\n\r\n /*\r\n ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n //FUNCTION:storeOriginalMatrixOfPartInUserData()\r\n //PURPOSE: Stores original transformation matrix of part in its userdata filed to use it further after animation,explosion etc\r\n ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n */\r\n storeOriginalMatrixOfPartInUserData: function (part) {\r\n if (!part.userData.hasOwnProperty('OriginalMatrix')) {\r\n part.userData.OriginalMatrix = null;\r\n }\r\n part.userData.OriginalMatrix = part.matrix.clone();\r\n },\r\n\r\n\r\n\r\n /*\r\n ///////////////////////////////////////////////////////////////////////////////////////\r\n //Kinematics/Animation : Depending upon the kinmatics matrix array present in part,\r\n // sets animation to part\r\n ///Note : Need improvement in animation code, this is just for 'CT Scanner' model demo\r\n ////////////////////////////////////////////////////////////////////////////////////////\r\n */\r\n toggleAnimation: function () {\r\n if (!cds.cadViewer.hasOwnProperty('animation')) {\r\n cds.cadViewer.animation = new cds.cadViewer.Animation();\r\n }\r\n cds.cadViewer.animation.isAnimationEnabled = !cds.cadViewer.animation.isAnimationEnabled;\r\n\r\n },\r\n\r\n hasKinematics: function (partName) {\r\n var part = cds.cadViewer.scene.getObjectByName(partName);\r\n if (part != undefined) {\r\n if (part.userData.hasOwnProperty('Kinematics')) {\r\n if (part.userData.Kinematics.length > 0) {\r\n return true;\r\n }\r\n }\r\n\r\n } else {\r\n console.log(\"Unable to get part with name \" + partName);\r\n }\r\n return false;\r\n },\r\n\r\n getPartUnderMouseForAnimation: function () {\r\n var intersects = cds.cadViewer.getIntersects(cds.cadViewer.sceneObject.children);\r\n if (intersects.length > 0) {\r\n var part = intersects[0].object;\r\n if (part instanceof THREE.Mesh) {\r\n part = intersects[0].object.parent;\r\n }\r\n if (part instanceof THREE.Object3D && part.name != \"\")\r\n cds.cadViewer.runAnimation(part.name);\r\n }\r\n },\r\n\r\n runAnimation: function (partName) {\r\n if (!cds.cadViewer.hasOwnProperty('animation')) {\r\n cds.cadViewer.animation = new cds.cadViewer.Animation();\r\n }\r\n cds.cadViewer.animation.SetKinematicsToPart(partName);\r\n },\r\n\r\n Animation: function () {\r\n var index = 0;\r\n this.obj = function () {\r\n obj = new Object();\r\n this.add = function (key, value) {\r\n obj[\"\" + key + \"\"] = value;\r\n },\r\n this.isEmpty = function (obj) {\r\n if (obj == undefined) {\r\n obj = this.obj;\r\n }\r\n for (var key in obj) {\r\n if (obj.hasOwnProperty(key))\r\n return false;\r\n }\r\n return true;\r\n },\r\n this.obj = obj;\r\n }\r\n this.isAnimationEnabled = false;\r\n\r\n this.lastAnimationAddedForPart = new Object(); //new this.obj();\r\n this.isTweening = false;\r\n this.isLastAnimation = false;\r\n this.partInQueue = [];\r\n var part;\r\n this.endTransformation;\r\n this.endTransformation;\r\n this.reset = new Object();\r\n\r\n this.SetKinematicsToPart = function (partName) {\r\n var part = cds.cadViewer.scene.getObjectByName(partName);\r\n if (part.userData.hasOwnProperty('Kinematics')) {\r\n if (part != undefined) {\r\n this.isTweening = true;\r\n if (index > 0) {\r\n index = 0;\r\n }\r\n this.pauseAnimationOnClick(partName);\r\n this.applyAnimation(part, index);\r\n\r\n }\r\n }\r\n }\r\n\r\n this.pauseAnimationOnClick = function (partName) {\r\n\r\n var part = cds.cadViewer.scene.getObjectByName(partName);\r\n if (this.reset[\"\" + partName + \"\"]) {\r\n index = part.userData.Kinematics.length;\r\n this.reset[\"\" + partName + \"\"] = false;\r\n } else if (this.lastAnimationAddedForPart) {\r\n //If lastAnimationAddedForPart is not empty\r\n if (this.lastAnimationAddedForPart[partName]) {\r\n\r\n index = this.lastAnimationAddedForPart[partName];\r\n this.reset[\"\" + partName + \"\"] = true;\r\n\r\n if (index === part.userData.Kinematics.length - 1) {\r\n delete this.lastAnimationAddedForPart[partName];\r\n } else if (index === part.userData.Kinematics.length) {\r\n //restart animation from 0th index\r\n index = 0;\r\n }\r\n } else {\r\n if (index === 0) {\r\n this.lastAnimationAddedForPart[\"\" + partName + \"\"] = index + 1;\r\n this.reset[\"\" + partName + \"\"] = true;\r\n }\r\n }\r\n } else {\r\n //If lastAnimationAddedForPart is empty\r\n if (index === 0) {\r\n this.lastAnimationAddedForPart[\"\" + partName + \"\"] = index + 1;\r\n this.reset[\"\" + partName + \"\"] = true;\r\n }\r\n }\r\n }\r\n\r\n this.addPartInQueueForAnimation = function (partName) {\r\n this.partInQueue.push(partName);\r\n }\r\n\r\n this.applyAnimation = function (part, index) {\r\n if (part.userData.hasOwnProperty('Kinematics')) {\r\n if (this.isTweening) {\r\n console.log(\"inside applyAnimation()\");\r\n if (index < part.userData.Kinematics.length) {\r\n var MATRIX_ARRAY = part.userData.Kinematics[index];\r\n var matrix = new THREE.Matrix4();\r\n matrix.fromArray(MATRIX_ARRAY);\r\n\r\n if (!part.userData.hasOwnProperty('OriginalMatrix') && index === 0) {\r\n part.userData.OriginalMatrix = part.matrix.clone();\r\n }\r\n\r\n var dummyObj = new THREE.Object3D();\r\n dummyObj.applyMatrix(matrix);\r\n dummyObj.updateMatrix();\r\n\r\n var endR = dummyObj.rotation;\r\n var startR = part.rotation;\r\n\r\n var startDegX = parseFloat(THREE.Math.radToDeg(startR.x).toFixed(3));\r\n var startDegY = parseFloat(THREE.Math.radToDeg(startR.y).toFixed(3));\r\n var startDegZ = parseFloat(THREE.Math.radToDeg(startR.z).toFixed(3));\r\n\r\n var endDegX = parseFloat(THREE.Math.radToDeg(endR.x).toFixed(3));\r\n var endDegY = parseFloat(THREE.Math.radToDeg(endR.y).toFixed(3));\r\n var endDegZ = parseFloat(THREE.Math.radToDeg(endR.z).toFixed(3));\r\n\r\n var endTransformation = {\r\n x: dummyObj.position.x,\r\n y: dummyObj.position.y,\r\n z: dummyObj.position.z,\r\n rx: dummyObj.quaternion.x,\r\n ry: dummyObj.quaternion.y,\r\n rz: dummyObj.quaternion.z,\r\n rw: dummyObj.quaternion.w,\r\n\r\n };\r\n\r\n } else if (index === part.userData.Kinematics.length) {\r\n if (part.userData.hasOwnProperty('OriginalMatrix')) {\r\n var position = part.position;\r\n var quaternion = part.quaternion;\r\n // console.log(\"At original posotion\");\r\n var dummyObj = new THREE.Object3D();\r\n dummyObj.applyMatrix(part.userData.OriginalMatrix);\r\n dummyObj.updateMatrix();\r\n var endTransformation = {\r\n x: dummyObj.position.x,\r\n y: dummyObj.position.y,\r\n z: dummyObj.position.z,\r\n rx: dummyObj.quaternion.x,\r\n ry: dummyObj.quaternion.y,\r\n rz: dummyObj.quaternion.z,\r\n rw: dummyObj.quaternion.w,\r\n\r\n };\r\n }\r\n this.isLastAnimation = true;\r\n\r\n }\r\n this.addAnimation(endTransformation, part);\r\n }\r\n\r\n } else {\r\n console.log(part.name + \" does not contains kinematics data\");\r\n }\r\n }\r\n\r\n\r\n this.addAnimation = function (endTransformation, part) {\r\n var position = part.position;\r\n var quaternion = part.quaternion;\r\n var startTransformation = {\r\n x: position.x,\r\n y: position.y,\r\n z: position.z,\r\n rx: quaternion.x,\r\n ry: quaternion.y,\r\n rz: quaternion.z,\r\n rw: quaternion.w,\r\n\r\n };\r\n\r\n if (startTransformation != undefined && endTransformation != undefined) {\r\n\r\n var twn = new TWEEN.Tween(startTransformation)\r\n .to(endTransformation, 1500)\r\n .easing(TWEEN.Easing.Linear.None)\r\n .onUpdate(function () {\r\n // console.log(\"on update>>\");\r\n // console.log(startTransformation.x, startTransformation.y, startTransformation.z);\r\n\r\n part.position.set(startTransformation.x, startTransformation.y, startTransformation.z);\r\n part.quaternion.set(startTransformation.rx, startTransformation.ry, startTransformation.rz, startTransformation.rw);\r\n\r\n })\r\n .onComplete(function () {\r\n twn.stop();\r\n cds.cadViewer.animation.isTweening = false;\r\n\r\n }).start();\r\n }\r\n\r\n }\r\n\r\n\r\n },\r\n\r\n\r\n /*\r\n * Adds grid in scene after all model is loaded\r\n *\r\n */\r\n addBaseGridInViewer: function () {\r\n if (!cds.cadViewer.hasOwnProperty('gridHelper')) {\r\n var bb = new THREE.Box3().setFromObject(cds.cadViewer.sceneObject);\r\n cds.cadViewer.gridHelper = new THREE.GridHelper(100, 100);\r\n cds.cadViewer.gridHelper.position.set(bb.getCenter().x, bb.min.y, bb.getCenter().z);\r\n var scaleFactor = cds.cadViewer.getScaleFactor(cds.cadViewer.sceneObject, cds.cadViewer.gridHelper);\r\n scaleFactor *= 3;\r\n cds.cadViewer.gridHelper.scale.set(scaleFactor, scaleFactor, scaleFactor);\r\n cds.cadViewer.gridHelper.name = \"baseGrid\";\r\n cds.cadViewer.scene.add(cds.cadViewer.gridHelper);\r\n\r\n if (!cds.cadViewer.hasOwnProperty('isBaseGridEnabled')) {\r\n cds.cadViewer.isBaseGridEnabled = false;\r\n }\r\n cds.cadViewer.isBaseGridEnabled = true;\r\n }\r\n },\r\n\r\n /**\r\n * Creates a mutable grid with size and number of divisions set to 100\r\n */\r\n createMutableGrid: function () {\r\n if (!cds.cadViewer.hasOwnProperty('mutableGrid')) {\r\n var size = 100;\r\n var dimension = 100;\r\n var bb = cds.cadViewer.sceneObject.getBoundingBox();\r\n cds.cadViewer.mutableGrid = new THREE.GridHelper(size, dimension);\r\n cds.cadViewer.mutableGrid.position.set(bb.getCenter().x, bb.min.y, bb.getCenter().z);\r\n cds.cadViewer.mutableGrid.name = \"mutableGrid\";\r\n cds.cadViewer.scene.add(cds.cadViewer.mutableGrid);\r\n }\r\n if (!cds.cadViewer.hasOwnProperty('isMutableGridEnabled')) {\r\n cds.cadViewer.isMutableGridEnabled = false;\r\n }\r\n cds.cadViewer.isMutableGridEnabled = true;\r\n },\r\n\r\n /**\r\n * Updates the mutable grid with given size and number of divisions\r\n */\r\n updateMutableGrid: function (size, divisions) {\r\n if (cds.cadViewer.hasOwnProperty('mutableGrid')) {\r\n cds.cadViewer.scene.remove(cds.cadViewer.mutableGrid);\r\n var bb = new THREE.Box3().setFromObject(cds.cadViewer.sceneObject);\r\n cds.cadViewer.mutableGrid = new THREE.GridHelper(size, divisions);\r\n cds.cadViewer.mutableGrid.position.set(bb.getCenter().x, bb.min.y, bb.getCenter().z);\r\n cds.cadViewer.mutableGrid.name = \"mutableGrid\";\r\n cds.cadViewer.scene.add(cds.cadViewer.mutableGrid);\r\n }\r\n },\r\n\r\n\r\n /*\r\n * Calculates the scale factor between two objects\r\n * @params(object1, object2)\r\n */\r\n getScaleFactor: function (object1, object2) {\r\n var length1 = cds.cadViewer.getBoundingBoxLength(object1.getBoundingBox());\r\n var length2 = cds.cadViewer.getBoundingBoxLength(object2.getBoundingBox());\r\n return length1 / length2;\r\n },\r\n\r\n /*\r\n * Calculates and returns the length of the boundingBox;\r\n * @param(boundingBox)\r\n */\r\n getBoundingBoxLength: function (boundingBox) {\r\n var v1 = boundingBox.max;\r\n var v2 = boundingBox.min;\r\n\r\n var dx = v1.x - v2.x;\r\n var dy = v1.y - v2.y;\r\n var dz = v1.z - v2.z;\r\n var length = Math.sqrt(dx * dx + dy * dy + dz * dz);\r\n return length;\r\n },\r\n\r\n /*\r\n ////////////////////////////////////////////////////////////////////////////////////////////////////\r\n //FUNCTION: toggleBaseGrid()\r\n //PURPOSE: Toggles base grid in scene, if already added in scene it toggles visibility of it and\r\n // if not, it will add it in scene\r\n ///////////////////////////////////////////////////////////////////////////////////////////////////\r\n */\r\n toggleBaseGrid: function () {\r\n cds.cadViewer.setBaseGrid(!cds.cadViewer.isBaseGridEnabled);\r\n },\r\n\r\n enableGrid: function (state) {\r\n cds.cadViewer.setBaseGrid(state);\r\n },\r\n\r\n\r\n /*\r\n /////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n //FUNCTION: setBaseGrid()\r\n //PURPOSE: Sets visibility of base grid in scene, if already added in scene it toggles visibility of it and\r\n // if not, it will add it in scene\r\n ////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n */\r\n setBaseGrid: function (state) {\r\n if (cds.cadViewer.hasOwnProperty(\"gridHelper\")) {\r\n cds.cadViewer.gridHelper.visible = state;\r\n cds.cadViewer.isBaseGridEnabled = cds.cadViewer.gridHelper.visible;\r\n } else if (state) {\r\n console.log(\"Grid is not added in scene\");\r\n cds.cadViewer.addBaseGridInViewer();\r\n\r\n }\r\n\r\n },\r\n\r\n toggleMutableGrid: function () {\r\n cds.cadViewer.setMutableGrid(!cds.cadViewer.isMutableGridEnabled);\r\n },\r\n\r\n setMutableGrid: function (state) {\r\n if (cds.cadViewer.hasOwnProperty(\"mutableGrid\")) {\r\n cds.cadViewer.mutableGrid.visible = state;\r\n cds.cadViewer.isMutableGridEnabled = cds.cadViewer.mutableGrid.visible;\r\n } else if (state) {\r\n cds.cadViewer.createMutableGrid();\r\n }\r\n },\r\n\r\n /*\r\n /////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n //FUNCTION: clearBaseGridFromScene()\r\n //PURPOSE: Removes base grid added in scene and clears variables regarding same.\r\n ////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n */\r\n clearBaseGridFromScene: function () {\r\n if (cds.cadViewer.hasOwnProperty('gridHelper') && cds.cadViewer.hasOwnProperty('isBaseGridEnabled')) {\r\n if (cds.cadViewer.isBaseGridEnabled) {\r\n cds.cadViewer.scene.remove(cds.cadViewer.gridHelper);\r\n delete cds.cadViewer.gridHelper;\r\n delete cds.cadViewer.isBaseGridEnabled;\r\n }\r\n }\r\n\r\n },\r\n\r\n //#regionEnd\r\n\r\n /*\r\n ////////////////////////////////////////////////////////////////////////////////////////////////////\r\n //FUNCTION: toggleShadowinViewer()\r\n //PURPOSE: Toggles the shadow effect in viewer\r\n ///////////////////////////////////////////////////////////////////////////////////////////////////\r\n */\r\n toggleShadowinViewer: function () {\r\n if (!cds.cadViewer.hasOwnProperty('toggleShadow')) {\r\n cds.cadViewer.toggleShadow = false;\r\n }\r\n\r\n cds.cadViewer.toggleShadow = !cds.cadViewer.toggleShadow;\r\n if (!cds.cadViewer.hasOwnProperty('shadows')) {\r\n cds.cadViewer.shadows = new cds.cadViewer.Shadows();\r\n }\r\n cds.cadViewer.shadows.setShadowInViewer(cds.cadViewer.toggleShadow);\r\n\r\n },\r\n\r\n enableShadow: function (state) {\r\n cds.cadViewer.toggleShadow = state;\r\n\r\n if (!cds.cadViewer.hasOwnProperty('shadows')) {\r\n cds.cadViewer.shadows = new cds.cadViewer.Shadows();\r\n }\r\n cds.cadViewer.shadows.setShadowInViewer(cds.cadViewer.toggleShadow);\r\n },\r\n\r\n /*\r\n ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n //FUNCTION: Shadows()\r\n //PURPOSE: Creates and adds Shadow light, shadow plane in scene and enable/disable object in scene to cast shadow\r\n /////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n */\r\n Shadows: function () {\r\n this.shadowLight = null;\r\n this.shadowPlane = null;\r\n this.lightTobeRestore = null;\r\n\r\n this.setShadowInViewer = function (isShadowEnabled) {\r\n if (!cds.cadViewer.isLoading) {\r\n if (isShadowEnabled) {\r\n this.addShadows();\r\n this.enableObjectsToCastShadows();\r\n } else {\r\n this.disableObjectsToCastShadow();\r\n this.removeShadows();\r\n }\r\n }\r\n\r\n }\r\n\r\n this.addShadows = function () {\r\n if (this.shadowLight == null || this.shadowPlane == null) {\r\n this.createShadowLightAndPlane();\r\n } else {\r\n cds.cadViewer.camera.children[0].intensity = 0;\r\n }\r\n cds.cadViewer.scene.add(this.shadowPlane);\r\n cds.cadViewer.scene.add(this.shadowLight);\r\n\r\n }\r\n\r\n this.createShadowLightAndPlane = function () {\r\n var bb = new THREE.Box3().setFromObject(cds.cadViewer.sceneObject);\r\n\r\n var geometry = new THREE.PlaneBufferGeometry(100, 100);\r\n var planeMaterial = new THREE.ShadowMaterial();\r\n planeMaterial.opacity = 0.5;\r\n\r\n this.shadowPlane = new THREE.Mesh(geometry, planeMaterial);\r\n this.shadowPlane.name = \"ShadowPlane\";\r\n\r\n if (cds.cadViewer.sceneObject.userData.boundingBox != undefined) {\r\n this.shadowPlane.position.set(bb.getCenter().x, bb.min.y, bb.getCenter().z);\r\n } else {\r\n this.shadowPlane.position.set(0, bb.min.y, 0);\r\n }\r\n var scaleFactor = cds.cadViewer.getScaleFactor(cds.cadViewer.sceneObject, this.shadowPlane);\r\n scaleFactor *= 5;\r\n this.shadowPlane.scale.set(scaleFactor, scaleFactor, scaleFactor);\r\n this.shadowPlane.rotation.x = -Math.PI / 2;\r\n\r\n this.shadowPlane.castShadow = false;\r\n this.shadowPlane.receiveShadow = true;\r\n\r\n this.shadowLight = cds.cadViewer.scene.children[0].children[0].clone();\r\n this.lightTobeRestore = cds.cadViewer.scene.children[0].children[0];\r\n\r\n var tempCam = cds.cadViewer.camera.clone();\r\n tempCam.remove(tempCam.children[0])\r\n this.shadowLight.shadow.camera = tempCam;\r\n this.shadowLight.lookAt(bb.getCenter());\r\n if (cds.cadViewer.sceneObject.userData.boundingBox != undefined) {\r\n var scaleFactor = cds.cadViewer.scaleObject(cds.cadViewer.sceneObject.getBoundingBox());\r\n var distance = (cds.cadViewer.sceneBoundingBox.max.y - cds.cadViewer.sceneBoundingBox.min.y) * 20;\r\n var lightPositionAlongYAxis = distance; // As 1000 was the position used when all the models where scaled to the same size\r\n this.shadowLight.position.set(0, lightPositionAlongYAxis, 0);\r\n } else {\r\n this.shadowLight.position.set(0, 1000, 0);\r\n\r\n }\r\n this.shadowLight.castShadow = true;\r\n this.shadowLight.shadow.mapSize.width = cds.cadViewer.renderer.domElement.width;\r\n this.shadowLight.shadow.mapSize.height = cds.cadViewer.renderer.domElement.height;\r\n this.shadowLight.shadow.bias = 0.0001;\r\n this.shadowLight.shadow.radius = 1;\r\n this.shadowLight.shadow.camera.near = 10;\r\n this.shadowLight.shadow.camera.updateProjectionMatrix();\r\n this.shadowLight.intensity = 0.1;\r\n\r\n //Enable shadowMap of renderer\r\n var renderer = cds.cadViewer.renderer;\r\n renderer.shadowMap.enabled = true;\r\n renderer.shadowMap.type = THREE.PCFSoftShadowMap; //THREE.BasicShadowMap\r\n\r\n }\r\n\r\n this.enableObjectsToCastShadows = function () {\r\n var objects = [];\r\n cds.cadViewer.sceneObject.traverse(function (mesh) {\r\n if (mesh instanceof THREE.Mesh) {\r\n mesh.castShadow = true;\r\n mesh.receiveShadow = true;\r\n }\r\n\r\n });\r\n\r\n\r\n }\r\n\r\n this.disableObjectsToCastShadow = function () {\r\n var objects = [];\r\n cds.cadViewer.sceneObject.traverse(function (mesh) {\r\n if (mesh instanceof THREE.Mesh) {\r\n mesh.castShadow = false;\r\n mesh.receiveShadow = false;\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n this.removeShadows = function () {\r\n if (this.lightTobeRestore !== null) {\r\n if (this.lightTobeRestore.intensity == 0) {\r\n this.lightTobeRestore.intensity = 0.5;\r\n }\r\n cds.cadViewer.scene.children[0].children[0] = this.lightTobeRestore;\r\n cds.cadViewer.scene.remove(this.shadowPlane);\r\n cds.cadViewer.scene.remove(this.shadowLight);\r\n delete cds.cadViewer.shadows;\r\n } else {\r\n console.log(\"Shadow is not added in scene\");\r\n }\r\n\r\n }\r\n\r\n },\r\n\r\n /*\r\n ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n //FUNCTION: setBrassTexture()\r\n //PURPOSE: Sets hex values of brass in material for a specified part\r\n /////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n */\r\n setBrassMaterial: function (partName) {\r\n if (!cds.cadViewer.hasOwnProperty('envMap')) {\r\n cds.cadViewer.envMap = new cds.cadViewer.EnvironmentMap();\r\n }\r\n var part = cds.cadViewer.scene.getObjectByName(partName);\r\n part.traverse(function (mesh) {\r\n if (mesh instanceof THREE.Mesh) {\r\n for (var i = 0; i < mesh.material.length; i++) {\r\n mesh.material[i].color.setHex('0xf2bd2b'); //ddc985\r\n }\r\n\r\n }\r\n });\r\n //Check if environment map is enabled, if yes apply it\r\n if (cds.cadViewer.hasOwnProperty('envMap')) {\r\n if (cds.cadViewer.envMap.enabled) {\r\n cds.cadViewer.envMap.setEnvironmentMap();\r\n }\r\n }\r\n },\r\n\r\n\r\n /*\r\n ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n //FUNCTION: setMetalTextureForPart(partName, metalTextureType,envImageDirectory)\r\n //PURPOSE: This is added to get a metalic (i.e. chrome/Brass) look of a part.\r\n // It sets texture and environment reflection on part\r\n //Input Parameters: partName = name of part on which texture has to be applied\r\n // metaTetureType = Type of tetxure to be applied i.e. Chrome or Brass\r\n // envImageDirectory = images required for reflection\r\n /////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n */\r\n setMetalTextureForPart: function (partName, metalTextureType, envImageDirectory) {\r\n if (!cds.cadViewer.hasOwnProperty('textureMap')) {\r\n cds.cadViewer.textureMap = new cds.cadViewer.ChromeBrassTexture();\r\n }\r\n if (cds.cadViewer.textureMap.envTextureCube == null && envImageDirectory == undefined) {\r\n console.log(\"Need to specify third input parameter i.e. environment mapping images directory\");\r\n }\r\n if (partName != undefined && metalTextureType != undefined) {\r\n cds.cadViewer.textureMap.setTexture(partName, metalTextureType, envImageDirectory);\r\n }\r\n },\r\n\r\n ChromeBrassTexture: function () {\r\n this.enabled = false;\r\n this.envTextureCube = null;\r\n this.metalType = \"\";\r\n\r\n this.setTexture = function (partName, metalTextureType, envImageDirectory) {\r\n \"use strict\";\r\n this.metalType = metalTextureType.toLowerCase();\r\n\r\n if (this.envTextureCube == null) {\r\n this.createReflectionCube(envImageDirectory);\r\n }\r\n\r\n if (this.metalType == \"chrome\") {\r\n this.setChromeTextureToPart(partName);\r\n } else if (this.metalType == \"brass\") {\r\n this.setBrassMaterial(partName);\r\n }\r\n\r\n }\r\n /*\r\n ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n //FUNCTION: setBrassTexture()\r\n //PURPOSE: Sets hex values of brass in material for a specified part\r\n /////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n */\r\n this.setBrassMaterial = function (partName) {\r\n var part = cds.cadViewer.scene.getObjectByName(partName);\r\n if (part != undefined) {\r\n part.traverse(function (mesh) {\r\n if (mesh instanceof THREE.Mesh) {\r\n if (mesh.material.length != undefined) {\r\n for (var i = 0; i < mesh.material.length; i++) {\r\n mesh.material[i].color.setHex('0xf2bd2b'); //ddc985\r\n mesh.material[i].envMap = cds.cadViewer.textureMap.envTextureCube;\r\n mesh.material[i].combine = THREE.MixOperation;\r\n mesh.material[i].reflectivity = 0.5;\r\n if (mesh.material[i].map) {\r\n mesh.material[i].map = null;\r\n }\r\n mesh.material[i].needsUpdate = true;\r\n }\r\n } else {\r\n //backward compatibility\r\n mesh.material.color.setHex('0xf2bd2b'); //ddc985\r\n mesh.material.envMap = cds.cadViewer.textureMap.envTextureCube;\r\n mesh.material.combine = THREE.MixOperation;\r\n mesh.material.reflectivity = 0.5;\r\n if (mesh.material.map) {\r\n mesh.material.map = null;\r\n }\r\n mesh.material.needsUpdate = true;\r\n }\r\n }\r\n });\r\n } else {\r\n console.log(\"Unable to find part : \" + partName)\r\n }\r\n }\r\n /*\r\n ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n //FUNCTION: setChromeToPart()\r\n //PURPOSE: Sets hex values of brass in material for a specified part\r\n /////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n */\r\n this.setChromeTextureToPart = function (partName) {\r\n var part = cds.cadViewer.scene.getObjectByName(partName);\r\n if (part != undefined) {\r\n part.traverse(function (mesh) {\r\n if (mesh instanceof THREE.Mesh) {\r\n if (mesh.material.length > 0) {\r\n if (mesh.material.length != undefined) {\r\n for (var i = 0; i < mesh.material.length; i++) {\r\n if (mesh.material[i].color.getHexString() == \"f2bd2b\") {\r\n mesh.material[i].color.setHex('0x96a0ab');\r\n }\r\n mesh.material[i].envMap = cds.cadViewer.textureMap.envTextureCube;\r\n mesh.material[i].combine = THREE.MixOperation;\r\n mesh.material[i].shininess = 30;\r\n mesh.material[i].reflectivity = 0.5;\r\n mesh.material[i].needsUpdate = true;\r\n }\r\n } else {\r\n //backward compatibility\r\n mesh.material.envMap = cds.cadViewer.textureMap.envTextureCube;\r\n mesh.material.combine = THREE.MixOperation;\r\n mesh.material.shininess = 30;\r\n mesh.material.reflectivity = 0.5;\r\n mesh.material.needsUpdate = true;\r\n }\r\n }\r\n }\r\n });\r\n } else {\r\n console.log(\"Unable to find part : \" + partName)\r\n }\r\n }\r\n\r\n this.createReflectionCube = function (envImageDirectory) {\r\n var path = envImageDirectory;\r\n var format = '.jpg';\r\n\r\n var urls = [\r\n path + 'top' + format, path + 'ny' + format,\r\n path + 'top' + format, path + 't1' + format,\r\n path + 'ny' + format, path + 'top' + format\r\n ];\r\n\r\n var reflectionCube = new THREE.CubeTextureLoader().load(urls);\r\n this.envTextureCube = reflectionCube;\r\n\r\n // cds.cadViewer.scene.background =null;// this.envTextureCube;\r\n }\r\n\r\n },\r\n\r\n\r\n\r\n /*\r\n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n//FUNCTION: applyStudioProperties()\r\n//PURPOSE: Apply Material properties exported from CDS CAD Visual Studio (//Prince)\r\n/////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n*/\r\n applyStudioProperties: function () {\r\n cds.cadViewer.studioUtils = new cds.cadViewer.StudioUtils();\r\n let studioFeatures = cds.cadViewer.sceneObject.userData.studioFeatures;\r\n\r\n if (!(studioFeatures && studioFeatures.material)) {\r\n let materialStorage = {};\r\n cds.cadViewer.sceneObject.traverse(function (child) {\r\n if (child.type === \"Mesh\") {\r\n for (let i = 0; child.material.length > i; i++) {\r\n if (!materialStorage[child.material[i].uuid]) {\r\n materialStorage[child.material[i].uuid] = child.material[i];\r\n child.material[i].userData.initialOpacity = child.material[i].opacity;\r\n // child.material[i].transparent = true;\r\n } else {\r\n child.material[i] = materialStorage[child.material[i].uuid];\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n if (studioFeatures) {\r\n\r\n if (studioFeatures.annotation)\r\n cds.cadViewer.studioUtils.loadStudioAnnotations();\r\n\r\n if (studioFeatures.materialMapping)\r\n cds.cadViewer.studioUtils.mapStudioMaterials();\r\n\r\n if (studioFeatures.material)\r\n cds.cadViewer.studioUtils.applyStudioMaterials();\r\n\r\n if (studioFeatures.animation && studioFeatures.material) {\r\n cds.cadViewer.postLoadMaterialCallback1 = cds.cadViewer.studioUtils.loadStudioAnimations;\r\n } else if (studioFeatures.animation && !studioFeatures.material) {\r\n cds.cadViewer.studioUtils.loadStudioAnimations();\r\n }\r\n\r\n if (studioFeatures.explosion)\r\n cds.cadViewer.studioUtils.loadStudioExplosions();\r\n\r\n if (studioFeatures.camera)\r\n cds.cadViewer.studioUtils.loadCameraViewPoints();\r\n\r\n } else if (this.forceStudioProperties) {\r\n cds.cadViewer.studioUtils.loadStudioAnnotations();\r\n cds.cadViewer.studioUtils.applyStudioMaterials();\r\n cds.cadViewer.studioUtils.loadStudioAnimations();\r\n cds.cadViewer.studioUtils.loadStudioExplosions();\r\n cds.cadViewer.studioUtils.loadCameraViewPoints();\r\n }\r\n\r\n },\r\n\r\n setSkyBox: function (box) {\r\n cds.cadViewer.skyBox = box\r\n cds.cadViewer.scene.background = cds.cadViewer.envMaterialMap(undefined, box);\r\n },\r\n\r\n toggleSkyBox: function () {\r\n cds.cadViewer.scene.background = cds.cadViewer.scene.background == null ? cds.cadViewer.envMaterialMap(undefined, cds.cadViewer.skyBox) : null\r\n },\r\n\r\n toggleAxesHelper: function () {\r\n let canvas2 = document.getElementById(\"inset\");\r\n if (canvas2) canvas2.style.display = canvas2.style.display === \"\" ? \"none\" : \"\";\r\n },\r\n\r\n setEnvMap: function (mode, env) {\r\n cds.cadViewer.environment.type = mode\r\n cds.cadViewer.environment.map = env\r\n cds.cadViewer.reflectiveMaterials.forEach(function (material) {\r\n material.envMap = cds.cadViewer.envMaterialMap(mode, env);\r\n material.needsUpdate = true;\r\n })\r\n cds.cadViewer.environmentMapEnabled = true\r\n },\r\n\r\n applyEnvironmentMap: function (mode, env) {\r\n cds.cadViewer.environment.type = mode\r\n cds.cadViewer.environment.map = env\r\n cds.cadViewer.scene.traverse((child) => {\r\n if (child instanceof THREE.Mesh) {\r\n for (var i = 0; i < child.material.length; i++) {\r\n let map = null;\r\n if (mode !== \"None\") {\r\n map = cds.cadViewer.studioEnvironmentMaps[mode];\r\n map.mapping = THREE[\"Cube\" + env + \"Mapping\"];\r\n }\r\n child.material[i].envMap = map;\r\n child.material[i].needsUpdate = true;\r\n }\r\n }\r\n });\r\n },\r\n\r\n addEnvMap: function (imagesDirPath, imageFormat, options) {\r\n this.imagesDirPath = imagesDirPath;\r\n this.imageFormat = imageFormat;\r\n for (let i = 0; i < options.length; i++) {\r\n cds.cadViewer.studioEnvironmentMaps[options] = this.getCubeTexture(options.toLowerCase());\r\n }\r\n },\r\n\r\n getCubeTexture: function (imagesDirName) {\r\n var path = this.imagesDirPath + imagesDirName;\r\n var format = '.' + this.imageFormat;\r\n var urls = [\r\n path + '/right' + format, path + '/left' + format,\r\n path + '/top' + format, path + '/bottom' + format,\r\n path + '/front' + format, path + '/back' + format\r\n ];\r\n\r\n var cubeTexture = new THREE.CubeTextureLoader().load(urls);\r\n cubeTexture.format = THREE.RGBFormat;\r\n return cubeTexture;\r\n },\r\n\r\n toggleEnvMap: function () {\r\n if (cds.cadViewer.environmentMapEnabled) {\r\n cds.cadViewer.reflectiveMaterials.forEach(function (material) {\r\n material.envMap = null;\r\n material.needsUpdate = true;\r\n })\r\n } else {\r\n cds.cadViewer.reflectiveMaterials.forEach(function (material) {\r\n material.envMap = cds.cadViewer.envMaterialMap(cds.cadViewer.environment.type, cds.cadViewer.environment.map);\r\n material.needsUpdate = true;\r\n })\r\n }\r\n cds.cadViewer.environmentMapEnabled = !cds.cadViewer.environmentMapEnabled\r\n },\r\n\r\n getAllMaterials: function (material) {\r\n cds.cadViewer.sceneObject.traverse(function (child) {\r\n if (child instanceof THREE.Mesh) {\r\n for (var i = 0; i < child.material.length; i++) {\r\n material(child.material[i]);\r\n }\r\n }\r\n });\r\n },\r\n\r\n envMaterialMap: function (mode, env) {\r\n var envCube = cds.cadViewer.studioEnvironmentMaps[env];\r\n if (mode === \"Refraction\") {\r\n envCube.mapping = THREE.CubeRefractionMapping;\r\n }\r\n envCube.format = THREE.RGBFormat;\r\n\r\n return envCube;\r\n\r\n },\r\n\r\n /*\r\n ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n // To set orbit control orientation disable trackball controls and enable orbit controls\r\n // As trackball controls doesnt' allow to limit axis orientation, used orbit controls\r\n /////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n */\r\n\r\n setOrbitControlsOrientation(minX = 0, maxX = Math.PI, minY = -Infinity, maxY = Infinity) {\r\n if (THREE.hasOwnProperty('OrbitControls')) {\r\n cds.cadViewer.controls.minPolarAngle = minX;\r\n cds.cadViewer.controls.maxPolarAngle = maxX;\r\n cds.cadViewer.controls.minAzimuthAngle = minY;\r\n cds.cadViewer.controls.maxAzimuthAngle = maxY;\r\n }\r\n },\r\n\r\n spinContinouslyAroundAxis(vX = 0, vY = 0, vZ = 0) {\r\n cds.cadViewer.ModelSpinValue = { x: vX, y: vY, z: vZ };\r\n cds.cadViewer.enableModelSpin = true;\r\n\r\n let cc = cds.cadViewer.sceneObject.getBoundingBox().getCenter();\r\n var tempVec = new THREE.Vector3();\r\n tempVec.subVectors(cds.cadViewer.sceneObject.children[0].position, cc);\r\n cds.cadViewer.sceneObject.children[0].position.copy(tempVec);\r\n cds.cadViewer.sceneObject.position.copy(cc);\r\n\r\n\r\n },\r\n\r\n spinModel(vX = 0, vY = 0, vZ = 0) {\r\n if (cds.cadViewer.enableModelSpin === true) {\r\n cds.cadViewer.sceneObject.rotation.x += vX;\r\n cds.cadViewer.sceneObject.rotation.y += vY;\r\n cds.cadViewer.sceneObject.rotation.z += vZ;\r\n }\r\n },\r\n\r\n StudioUtils: function () {\r\n this.mixer = null;\r\n this.animationActionsByPart = {};\r\n this.m_animationActionsByPart = {};\r\n this.lastAnimationAction = null;\r\n this.play = false;\r\n this.pause = false;\r\n this.inifinityAnimationExist = false;\r\n this.infinityAnimationDelay = {};\r\n this.materialsMapByName = {};\r\n this.annotationDisplayed = false;\r\n this.annotationON = false;\r\n this.annotationContainer = [];\r\n this.tweenArray = [];\r\n this.viewpoints = [];\r\n this.currentViewPoint = null;\r\n this.highlightedPartName = undefined;\r\n this.highlightedAnnotation = null;\r\n this.hotspotUpScaleTween = null;\r\n this.hotspotDownScaleTween = null;\r\n this.hotspotEnabled = false;\r\n\r\n this.hotspotList = {};\r\n let hotspotManager = null;\r\n\r\n this.applyAnimations = function (animations) {\r\n var scope = this;\r\n var maxTime = 0;\r\n this.mixer = new THREE.AnimationMixer();\r\n\r\n cds.cadViewer.traverse(cds.cadViewer.sceneObject, function (child) {\r\n let cId = child.userData.compId;\r\n let newAnimations = animations.animations[cId]\r\n if (newAnimations) {\r\n let time = 0;\r\n for (let i = 0; i < newAnimations.length; i++) {\r\n let animation = newAnimations[i];\r\n let animationAction = scope.mixer.clipAction(THREE.AnimationClip.parse(animation.clip), child);\r\n animationAction.repetitions = animation.infinity === false ? 0 : Infinity;\r\n animationAction.clampWhenFinished = true;\r\n\r\n if (!scope.animationActionsByPart[cId]) scope.animationActionsByPart[cId] = [];\r\n\r\n scope.animationActionsByPart[cId].push(animationAction);\r\n\r\n time += animation.clip.duration;\r\n\r\n if (maxTime < time && animationAction.repetitions !== Infinity) {\r\n maxTime = time;\r\n scope.lastAnimationAction = animationAction;\r\n }\r\n\r\n if (animationAction.repetitions === Infinity)\r\n scope.inifinityAnimationExist = true;\r\n\r\n if (animation.delay > 0) {\r\n scope.infinityAnimationDelay[animation.clip.name] = animation.delay;\r\n }\r\n\r\n let mClipName = cId + \".\" + i;\r\n if (animations.animations[mClipName]) {\r\n\r\n if (!scope.m_animationActionsByPart[mClipName]) scope.m_animationActionsByPart[mClipName] = [];\r\n let matMapped = {}\r\n\r\n child.traverse(function (mesh) {\r\n if (mesh.type === \"Mesh\") {\r\n animations.animations[mClipName].forEach(function (clipObj) {\r\n if (Array.isArray(mesh.material)) {\r\n for (let j = 0; j < mesh.material.length; j++) {\r\n if (mesh.material[j].uuid === clipObj.materialuuid && !matMapped[clipObj.materialuuid]) {\r\n\r\n let animation_action = scope.mixer.clipAction(THREE.AnimationClip.parse(clipObj.clip), mesh.material[j]);\r\n animation_action.repetitions = animationAction.repetitions;\r\n scope.m_animationActionsByPart[mClipName].push(animation_action);\r\n\r\n // mesh.material[j].transparent = true;\r\n matMapped[clipObj.materialuuid] = true;\r\n }\r\n }\r\n\r\n for (var j = 0; j < mesh.parent.children.length; ++j) {\r\n if (mesh.parent.children[j].type == \"Sprite\") {\r\n let animation_action = scope.mixer.clipAction(THREE.AnimationClip.parse(clipObj.clip), mesh.parent.children[j].material);\r\n animation_action.repetitions = animationAction.repetitions;\r\n scope.m_animationActionsByPart[mClipName].push(animation_action);\r\n mesh.parent.children[j].material.transparent = true;\r\n matMapped[mesh.parent.children[j].material.uuid] = true;\r\n }\r\n }\r\n } else {\r\n if (mesh.material.uuid === clipObj.materialuuid) {\r\n let animation_action = scope.mixer.clipAction(THREE.AnimationClip.parse(clipObj.clip), mesh.material);\r\n animation_action.repetitions = animationAction.repetitions;\r\n scope.m_animationActionsByPart[mClipName].push(animation_action);\r\n\r\n mesh.material.transparent = true;\r\n }\r\n }\r\n\r\n })\r\n }\r\n });\r\n }\r\n }\r\n\r\n child.userData.initialQuat = child.quaternion.clone();\r\n }\r\n }, function () {\r\n cds.cadViewer.onAnimationLoad()\r\n });\r\n\r\n this.mixer.addEventListener('finished', this.onFinishAnimation);\r\n cds.cadViewer.sceneObject.userData.hasAnimation = true;\r\n\r\n let e = document.getElementById(\"anim-icon\")\r\n if (e) { e.style.display = \"\" }\r\n }\r\n\r\n this.playAnimation = function () {\r\n\r\n if (this.annotationDisplayed) {\r\n this.annotationON = this.annotationDisplayed;\r\n this.showAnnotations(false);\r\n }\r\n\r\n //play first animation clip of all parts\r\n for (let cId in this.animationActionsByPart) {\r\n this.animationActionsByPart[cId][0].play();\r\n if (this.infinityAnimationDelay[this.animationActionsByPart[cId][0]._clip.name]) {\r\n this.animationActionsByPart[cId][0].startAt(this.mixer.time + this.infinityAnimationDelay[this.animationActionsByPart[cId][0]._clip.name]);\r\n }\r\n\r\n let name = cId + \".0\";\r\n if (this.m_animationActionsByPart[name]) {\r\n this.m_animationActionsByPart[name].forEach(function (animation) {\r\n animation._localRoot.transparent = true;\r\n animation.play();\r\n })\r\n }\r\n }\r\n\r\n this.tweenArray = [];\r\n\r\n for (let i = 0; i < this.annotationContainer.length; i++) {\r\n const annotation = this.annotationContainer[i];\r\n const timeFrames = annotation['animationTimeFrames'];\r\n for (let j = 0; j < timeFrames.length; j++) {\r\n\r\n let eTime = (timeFrames[j].endTime - timeFrames[j].startTime) * 1000;\r\n let completeFunc = function () {\r\n annotation.line.visible = false;\r\n annotation.domElement.style.display = \"none\";\r\n }\r\n\r\n if (timeFrames[j].endTime === Infinity) {\r\n eTime = 1000;\r\n completeFunc = function () { };\r\n }\r\n\r\n this.tweenArray.push(new TWEEN.Tween({ x: 0 })\r\n .to({ x: 100 }, eTime)\r\n .onStart(function () {\r\n annotation.line.visible = true;\r\n annotation.domElement.style.display = \"block\";\r\n })\r\n .onComplete(completeFunc)\r\n .start(TWEEN.now() + (timeFrames[j].startTime * 1000))) // .easing(TWEEN.Easing.Quadratic.Out)\r\n }\r\n }\r\n\r\n var e = document.getElementById(\"anim-icon\");\r\n if (e) e.src = \"https://www.product-config.net/cadviewer/images/icons/stop.svg\";\r\n\r\n this.play = true;\r\n }\r\n\r\n this.stopAnimation = function () {\r\n\r\n //stop\r\n for (let cId in this.animationActionsByPart) {\r\n this.animationActionsByPart[cId].forEach(function (animation) {\r\n animation.stop();\r\n });\r\n }\r\n\r\n for (let cId in this.m_animationActionsByPart) {\r\n this.m_animationActionsByPart[cId].forEach(function (animation) {\r\n animation.stop();\r\n });\r\n }\r\n\r\n //change to initial quaternion of every part\r\n for (let cId in this.animationClipsByPart) {\r\n this.animationClipsByPart[cId].part.quaternion.copy(this.animationClipsByPart[cId].part.userData.initialQuat);\r\n }\r\n\r\n for (let i = 0; i < this.tweenArray.length; i++) {\r\n this.tweenArray[i].stop();\r\n }\r\n\r\n\r\n if (Object.keys(this.m_animationActionsByPart).length > 0) {\r\n this.applyInitialOpacity(cds.cadViewer.sceneObject.children[0]);\r\n }\r\n\r\n this.showAnnotations(this.annotationON);\r\n\r\n this.annotationON = false;\r\n\r\n var e = document.getElementById(\"anim-icon\");\r\n if (e) e.src = \"https://www.product-config.net/cadviewer/images/icons/play.svg\";\r\n\r\n this.play = false;\r\n }\r\n\r\n this.applyInitialOpacity = function (part) {\r\n part.traverse(function (child) {\r\n if (child.type === \"Mesh\") {\r\n if (Array.isArray(child.material)) {\r\n child.material.forEach(function (mat) {\r\n if (mat.userData.hasOwnProperty(\"initialOpacity\")) {\r\n mat.opacity = mat.userData.initialOpacity;\r\n mat.transparent = mat.opacity !== 1;\r\n }\r\n })\r\n\r\n } else {\r\n if (child.material.userData.hasOwnProperty(\"initialOpacity\")) child.material.opacity = child.material.userData.initialOpacity;\r\n }\r\n } else if (child.type == \"Sprite\") {\r\n child.material.userData.initialOpacity = 1;\r\n child.material.opacity = child.material.userData.initialOpacity;\r\n }\r\n })\r\n }\r\n\r\n this.togglePauseState = function () {\r\n for (let cId in this.animationActionsByPart) {\r\n this.animationActionsByPart[cId].forEach(function (animation) {\r\n animation.paused = !animation.paused;\r\n });\r\n }\r\n }\r\n\r\n this.onFinishAnimation = function (event) {\r\n var scope = cds.cadViewer.studioUtils;\r\n var names = event.action._clip.name.split(\".\");\r\n var animationAction = scope.animationActionsByPart[names[0]]\r\n if (animationAction) {\r\n if (animationAction[Number(names[1]) + 1]) {\r\n let pAnimation = animationAction[Number(names[1])];\r\n animationAction[Number(names[1]) + 1].play();\r\n pAnimation.stop();\r\n\r\n let qtrack = pAnimation._clip.tracks[1];\r\n if (qtrack && qtrack.name === \".quaternion\") {\r\n let len = qtrack.values.length;\r\n pAnimation._localRoot.quaternion.set(qtrack.values[len - 4], qtrack.values[len - 3], qtrack.values[len - 2], qtrack.values[len - 1]);\r\n }\r\n }\r\n if (scope.m_animationActionsByPart[event.action._clip.name]) {\r\n scope.m_animationActionsByPart[event.action._clip.name].forEach(function (animation) {\r\n animation.stop();\r\n animation._localRoot.opacity = animation._clip.tracks[0].values[1];\r\n })\r\n }\r\n\r\n let name = names[0] + \".\" + (Number(names[1]) + 1);\r\n if (scope.m_animationActionsByPart[name]) {\r\n scope.m_animationActionsByPart[name].forEach(function (animation) {\r\n animation._localRoot.transparent = true;\r\n animation.play();\r\n })\r\n }\r\n\r\n }\r\n\r\n if (event.action === scope.lastAnimationAction && scope.inifinityAnimationExist === false) {\r\n // scope.play = false;\r\n }\r\n }\r\n\r\n this.lightsObject;\r\n this.saveMaterial;\r\n\r\n this.applyStudioMaterialByObjectName = function (name) {\r\n var sceneNode = cds.cadViewer.sceneObject.getObjectByName(name)\r\n this.applyMaterial(sceneNode);\r\n }\r\n\r\n this.applyMaterial = function (sceneNode) {\r\n var materialStorage = {};\r\n\r\n cds.cadViewer.traverse(sceneNode, function (child) {\r\n if (child.type == 'Mesh') {\r\n for (let i = 0; i < child.material.length; i++) {\r\n if (!materialStorage[child.material[i].uuid]) {\r\n if (cds.cadViewer.studioMaterialContainer.materials[child.material[i].name]) {\r\n let property = Object.assign({}, cds.cadViewer.studioMaterialContainer.materials[child.material[i].name]);\r\n let sMap = property.map;\r\n let sBump = property.bumpMap;\r\n property.name = child.material[i].name;\r\n property.uuid = child.material[i].uuid;\r\n delete property.map;\r\n delete property.bumpMap;\r\n property.envMap = child.material[i].envMap;\r\n property.metalness = child.material[i].metalness;\r\n property.reflectivity = child.material[i].reflectivity;\r\n property.roughness = child.material[i].roughness;\r\n\r\n child.material[i] = new THREE.MeshPhysicalMaterial(property);\r\n\r\n if (property.reflectivity > 0.0) {\r\n cds.cadViewer.reflectiveMaterials.push(child.material[i]);\r\n }\r\n\r\n if (sMap) {\r\n var uuid = sMap;\r\n if (cds.cadViewer.studioMaterialContainer.textures[uuid]) {\r\n let textureProperty = cds.cadViewer.studioMaterialContainer.textures[uuid];\r\n new THREE.TextureLoader().load(textureProperty.name, function (texture) {\r\n child.material[i].map = texture;\r\n child.material[i].map.name = textureProperty.name;\r\n child.material[i].map.wrapS = THREE.RepeatWrapping;\r\n child.material[i].map.wrapT = THREE.RepeatWrapping;\r\n child.material[i].map.offset.fromArray(textureProperty.offset);\r\n child.material[i].map.repeat.fromArray(textureProperty.repeat);\r\n child.material[i].map.center.fromArray(textureProperty.center);\r\n child.material[i].map.rotation = textureProperty.rotation;\r\n child.material[i].map.flipY = textureProperty.flipY;\r\n child.material[i].needsUpdate = true;\r\n }, undefined, function (event) {\r\n alert(\"Failed to load texture from URL \" + event.target.src);\r\n });\r\n }\r\n }\r\n\r\n if (sBump) {\r\n var uuid = sBump;\r\n if (cds.cadViewer.studioMaterialContainer.textures[uuid]) {\r\n let bumpTextureProperty = cds.cadViewer.studioMaterialContainer.textures[uuid];\r\n new THREE.TextureLoader().load(bumpTextureProperty.name, function (texture) {\r\n child.material[i].bumpMap = texture;\r\n child.material[i].bumpMap.name = bumpTextureProperty.name;\r\n child.material[i].bumpMap.wrapS = THREE.RepeatWrapping;\r\n child.material[i].bumpMap.wrapT = THREE.RepeatWrapping;\r\n child.material[i].bumpMap.offset.fromArray(bumpTextureProperty.offset);\r\n child.material[i].bumpMap.repeat.fromArray(bumpTextureProperty.repeat);\r\n child.material[i].bumpMap.center.fromArray(bumpTextureProperty.center);\r\n child.material[i].bumpMap.rotation = bumpTextureProperty.rotation;\r\n child.material[i].bumpMap.flipY = bumpTextureProperty.flipY;\r\n child.material[i].needsUpdate = true;\r\n }, undefined, function (event) {\r\n alert(\"Failed to load texture from URL \" + event.target.src);\r\n });\r\n }\r\n }\r\n\r\n materialStorage[child.material[i].uuid] = child.material[i];\r\n if (cds.cadViewer.studioUtils.materialsMapByName[child.material[i].name] !== undefined) {\r\n cds.cadViewer.studioUtils.materialsMapByName[child.material[i].name].push(child.material[i])\r\n } else {\r\n cds.cadViewer.studioUtils.materialsMapByName[child.material[i].name] = []\r\n cds.cadViewer.studioUtils.materialsMapByName[child.material[i].name].push(child.material[i])\r\n }\r\n\r\n } else {\r\n\r\n child.material[i] = new THREE.MeshPhysicalMaterial({\r\n name: child.material[i].name,\r\n uuid: child.material[i].uuid,\r\n color: child.material[i].color,\r\n emissive: child.material[i].emissive,\r\n map: child.material[i].map,\r\n bumpMap: child.material[i].bumpMap,\r\n bumpScale: child.material[i].bumpScale,\r\n envMap: child.material[i].envMap,\r\n reflectivity: child.material[i].reflectivity,\r\n transparent: child.material[i].transparent,\r\n opacity: child.material[i].opacity,\r\n side: child.material[i].side\r\n });\r\n materialStorage[child.material[i].uuid] = child.material[i];\r\n }\r\n\r\n child.material[i].userData.initialOpacity = child.material[i].opacity;\r\n // child.material[i].transparent = true;\r\n\r\n } else {\r\n child.material[i] = materialStorage[child.material[i].uuid];\r\n if (materialStorage[child.material[i].uuid].reflectivity > 0.0) {\r\n cds.cadViewer.reflectiveMaterials.push(child.material[i]);\r\n }\r\n }\r\n }\r\n }\r\n }, function () {\r\n cds.cadViewer.postLoadMaterialCallback();\r\n cds.cadViewer.postLoadMaterialCallback1();\r\n })\r\n }\r\n //apply studio material to model before rendering - Akash.B\r\n this.mapMaterials = function (jsonFile) {\r\n try {\r\n cds.cadViewer.sceneObject.traverse(function (child) {\r\n if (child.type === \"Mesh\") {\r\n for (var i = 0; i < jsonFile.compID.length; i++) {\r\n\r\n for (var j = 0; j < child.material.length; j++) {\r\n if (child.material[j].uuid == jsonFile.compID[i].materialID) {\r\n child.material[j].name = jsonFile.compID[i].materialName;\r\n }\r\n }\r\n\r\n }\r\n }\r\n });\r\n } catch (e) { }\r\n }\r\n\r\n this.applyExplosions = function (jsonFile) {\r\n\r\n cds.cadViewer.sceneObject.traverse(function (child) {\r\n if (jsonFile.explosions.hasOwnProperty(child.userData.compId)) {\r\n child.userData.ExplodedMatrix = jsonFile.explosions[child.userData.compId];\r\n } else if (child.type === \"Object3D\") {\r\n child.userData.ExplodedMatrix = undefined;\r\n }\r\n });\r\n\r\n cds.cadViewer.sceneObject.userData.hasExplosion = true;\r\n\r\n var e = document.getElementById(\"explode-icon\");\r\n if (e) e.style.display = \"\";\r\n }\r\n\r\n this.initEnvironmentMaps = function (onComplete) {\r\n\r\n var dirPaths = [\"cloud\", \"castle\", \"bridge\"]\r\n\r\n for (var i = 0; i < dirPaths.length; i++) {\r\n var path = 'https://www.product-config.net/cadviewer/images/envMap/' + dirPaths[i] + '/';\r\n var format = '.jpg';\r\n var urls = [\r\n path + 'right' + format, path + 'left' + format,\r\n path + 'top' + format, path + 'bottom' + format,\r\n path + 'front' + format, path + 'back' + format\r\n ];\r\n cds.cadViewer.studioEnvironmentMaps[dirPaths[i]] = urls\r\n }\r\n\r\n\r\n var loader = new THREE.CubeTextureLoader()\r\n loader.load(cds.cadViewer.studioEnvironmentMaps[dirPaths[0]], function (texture1) {\r\n cds.cadViewer.studioEnvironmentMaps[dirPaths[0]] = texture1\r\n loader.load(cds.cadViewer.studioEnvironmentMaps[dirPaths[1]], function (texture2) {\r\n cds.cadViewer.studioEnvironmentMaps[dirPaths[1]] = texture2\r\n loader.load(cds.cadViewer.studioEnvironmentMaps[dirPaths[2]], function (texture3) {\r\n cds.cadViewer.studioEnvironmentMaps[dirPaths[2]] = texture3\r\n onComplete()\r\n }, function (xhr) { }, function () {\r\n console.log(\"Failed to load environment maps, reflections won't work\");\r\n onComplete();\r\n })\r\n }, function (xhr) { }, function () {\r\n console.log(\"Failed to load environment maps, reflections won't work\");\r\n onComplete();\r\n })\r\n }, function (xhr) { }, function () {\r\n console.log(\"Failed to load environment maps, reflections won't work\");\r\n onComplete();\r\n })\r\n }\r\n\r\n this.applyStudioMaterials = function () {\r\n var arr = cds.cadViewer.cadFilePath.split('.');\r\n arr.pop();\r\n arr.push(\"cdsm\");\r\n var link = decodeURIComponent(arr.join('.'));\r\n this.readTextFile(link, function (text) {\r\n var jsonFile = JSON.parse(text);\r\n // cds.cadViewer.studioUtils.initEnvironmentMaps(function () {\r\n cds.cadViewer.studioMaterialContainer = jsonFile\r\n cds.cadViewer.studioUtils.applyMaterial(cds.cadViewer.sceneObject);\r\n // })\r\n });\r\n }\r\n\r\n this.getMaterialsByName = function (name) {\r\n\r\n if (this.materialsMapByName[name])\r\n return this.materialsMapByName[name]\r\n else\r\n console.log(\"materials by name \\\"\" + name + \"\\\" not found\")\r\n }\r\n\r\n this.applyAnnotations = function (jsonFile) {\r\n if (jsonFile.hasOwnProperty(\"annotations\") && Object.keys(jsonFile.annotations).length > 0) {\r\n var scope = this;\r\n\r\n for (let i = 0; i < cds.cadViewer.sceneObject.children[0].children.length; i++) {\r\n if (jsonFile.annotations.hasOwnProperty(cds.cadViewer.sceneObject.children[0].children[i].userData.compId)) {\r\n scope.createAnnotation(cds.cadViewer.sceneObject.children[0].children[i], jsonFile.annotations[cds.cadViewer.sceneObject.children[0].children[i].userData.compId]);\r\n }\r\n }\r\n\r\n cds.cadViewer.renderer.domElement.addEventListener(\"mousemove\", this.highlightAnnotationDiv, false);\r\n\r\n cds.cadViewer.postModelTreeLoadCallback();\r\n\r\n this.addCart();\r\n\r\n let e = document.getElementById(\"annot-icon\");\r\n if (e) { e.style.display = \"\" }\r\n }\r\n\r\n if (jsonFile.hasOwnProperty(\"cameraMatrix\") && jsonFile.cameraMatrix) {\r\n this.setCamera(jsonFile.cameraMatrix);\r\n }\r\n\r\n if (typeof jsonFile[\"cameraRotation\"] === \"boolean\") {\r\n cds.cadViewer.controls.noRotate = !jsonFile.cameraRotation;\r\n }\r\n\r\n if (jsonFile[\"hotspot\"]) {\r\n try {\r\n hotspotManager = new HotspotManager();\r\n\r\n\r\n this.addHotspot(jsonFile.hotspot.hotspots)\r\n\r\n let e = document.getElementById(\"sprite-icon\")\r\n if (e) { e.style.display = \"\" }\r\n } catch (e) {\r\n console.log(\"Error: \" + e);\r\n }\r\n }\r\n\r\n cds.cadViewer.sceneObject.userData.hasAnnotation = true;\r\n\r\n }\r\n\r\n this.addHotspot = function (hotspotData) {\r\n\r\n const urlParams = new URLSearchParams(location.search);\r\n let hotspotColor, map;\r\n for (const [key, value] of urlParams) {\r\n if(key === 'pin'){\r\n hotspotColor = value;\r\n break;\r\n }\r\n }\r\n if (cds.cadViewer.hotspotPin !== null) {\r\n map = new THREE.TextureLoader().load(cds.cadViewer.hotspotPin);\r\n }\r\n else if (hotspotColor != undefined && hotspotColor != '') {\r\n let path = \"https://cds-catalog-static.s3.amazonaws.com/domains/annotations3d/\" + hotspotColor + \".png\";\r\n map = new THREE.TextureLoader().load(path);\r\n } else {\r\n map = new THREE.TextureLoader().load('https://www.product-config.net/cadviewer/images/pin.png');\r\n }\r\n map.magFilter = THREE.NearestFilter;\r\n const material = new THREE.SpriteMaterial({ map: map });\r\n material.depthWrite = false; //To fix sprite reflection issue\r\n const sprite = new THREE.Sprite(material);\r\n\r\n cds.cadViewer.sceneObject.traverse(function (child) {\r\n if (hotspotData[child.userData.compId]) {\r\n let hotspots = hotspotData[child.userData.compId];\r\n for (let i = 0; i < hotspots.length; i++) {\r\n if (cds.cadViewer.studioUtils.hotspotList[child.userData.compId] == undefined) {\r\n cds.cadViewer.studioUtils.hotspotList[child.userData.compId] = [];\r\n }\r\n\r\n cds.cadViewer.studioUtils.hotspotList[child.userData.compId].push(hotspots[i]);\r\n sprite.userData.index = cds.cadViewer.studioUtils.hotspotList[child.userData.compId].indexOf(hotspots[i]);\r\n\r\n let hotspot = sprite.clone();\r\n sprite.material = sprite.material.clone();\r\n hotspot.scale.set(hotspots[i].scale, hotspots[i].scale, hotspots[i].scale);\r\n hotspot.position.set(hotspots[i].pos.x, hotspots[i].pos.y, hotspots[i].pos.z);\r\n hotspot.userData.imageW = hotspots[i].width;\r\n hotspot.userData.imageUrl = hotspots[i].content[0];\r\n child.add(hotspot);\r\n }\r\n }\r\n })\r\n\r\n this.hotspotEnabled = true;\r\n\r\n cds.cadViewer.renderer.domElement.addEventListener(\"mousemove\", this.animateHotspotOnHover.bind(this), false);\r\n cds.cadViewer.renderer.domElement.addEventListener(\"click\", this.displayImgOnClick.bind(this), false);\r\n\r\n cds.cadViewer.renderer.domElement.addEventListener(\"touchstart\", this.displayImgOnClickforPhone.bind(this), false);\r\n }\r\n\r\n this.displayImgOnClick = function (event) {\r\n if (this.hotspotEnabled === true) {\r\n const sprite = this.getIntersectedSprite(event, cds.cadViewer.sceneObject.children);\r\n if (sprite) {\r\n if (sprite.userData.hasOwnProperty(\"index\") && sprite.parent.userData.hasOwnProperty('compId')) {\r\n var hotspotObject = cds.cadViewer.studioUtils.hotspotList[sprite.parent.userData.compId][sprite.userData.index];\r\n hotspotManager.Display(hotspotObject);\r\n }\r\n\r\n let closeDiv = function (e) {\r\n if (e.keyCode === 27) {\r\n hotspotManager.Hide();\r\n window.removeEventListener(\"keydown\", closeDiv, false);\r\n }\r\n }\r\n\r\n window.addEventListener(\"keydown\", closeDiv, false);\r\n }\r\n }\r\n }\r\n\r\n this.displayImgOnClickforPhone = function (event) {\r\n if (this.hotspotEnabled === true) {\r\n const sprite = this.getIntersectedSpriteforPhone(event, cds.cadViewer.sceneObject.children);\r\n if (sprite) {\r\n if (sprite.userData.hasOwnProperty(\"index\") && sprite.parent.userData.hasOwnProperty('compId')) {\r\n var hotspotObject = cds.cadViewer.studioUtils.hotspotList[sprite.parent.userData.compId][sprite.userData.index];\r\n hotspotManager.Display(hotspotObject);\r\n }\r\n\r\n let closeDiv = function (e) {\r\n if (e.keyCode === 27) {\r\n hotspotManager.Hide();\r\n window.removeEventListener(\"keydown\", closeDiv, false);\r\n }\r\n }\r\n\r\n window.addEventListener(\"keydown\", closeDiv, false);\r\n }\r\n }\r\n }\r\n\r\n this.animateHotspotOnHover = function (event) {\r\n const sprite = this.getIntersectedSprite(event, cds.cadViewer.sceneObject.children);\r\n const animObjs = TWEEN.getAll();\r\n let objRunning = false;\r\n\r\n if (animObjs.length > 0 && sprite) {\r\n for (let i = 0; i < animObjs.length; i++) {\r\n if (animObjs[i].get() === sprite.scale) {\r\n objRunning = true;\r\n }\r\n }\r\n }\r\n\r\n if (sprite) {\r\n let _this = this;\r\n if (objRunning === false && (this.hotspotUpScaleTween === null || this.hotspotUpScaleTween.get() !== sprite.scale)) {\r\n this.hotspotUpScaleTween = this.animateParam(sprite.scale,\r\n new THREE.Vector3(sprite.scale.x * 1.1, sprite.scale.y * 1.1, sprite.scale.z * 1.1),\r\n function () {\r\n _this.hotspotDownScaleTween = _this.animateParam(sprite.scale,\r\n new THREE.Vector3(sprite.scale.x * (100 / 110), sprite.scale.y * (100 / 110), sprite.scale.z * (100 / 110)),\r\n function () {\r\n }, 100);\r\n }, 100);\r\n }\r\n } else {\r\n this.hotspotUpScaleTween = null;\r\n this.hotspotDownScaleTween = null;\r\n }\r\n }\r\n\r\n this.toggleHotspot = function () {\r\n this.hotspotEnabled = !this.hotspotEnabled;\r\n let enabled = this.hotspotEnabled;\r\n cds.cadViewer.sceneObject.traverse(function (child) {\r\n if (child.type === \"Sprite\") {\r\n child.visible = enabled;\r\n }\r\n })\r\n }\r\n\r\n this.setRayCaster = function (event) {\r\n const mouse = new THREE.Vector2()\r\n const rect = cds.cadViewer.renderer.domElement.getBoundingClientRect();\r\n\r\n mouse.x = ((event.clientX - rect.left) / rect.width) * 2 - 1;\r\n mouse.y = -((event.clientY - rect.top) / rect.height) * 2 + 1;\r\n\r\n cds.cadViewer.raycaster.setFromCamera(mouse, cds.cadViewer.camera);\r\n }\r\n\r\n this.getIntersectedSprite = function (event, object) {\r\n this.setRayCaster(event);\r\n var intersectedObj = cds.cadViewer.raycaster.intersectObjects(object, true);\r\n\r\n if (intersectedObj.length > 0) {\r\n if (intersectedObj[0].object.type === \"Sprite\") {\r\n return intersectedObj[0].object;\r\n }\r\n }\r\n\r\n }\r\n\r\n this.setRayCasterPhone = function (event) {\r\n const mouse = new THREE.Vector2()\r\n const rect = cds.cadViewer.renderer.domElement.getBoundingClientRect();\r\n\r\n mouse.x = ((event.targetTouches[0].clientX - rect.left) / rect.width) * 2 - 1;\r\n mouse.y = -((event.targetTouches[0].clientY - rect.top) / rect.height) * 2 + 1;\r\n\r\n cds.cadViewer.raycaster.setFromCamera(mouse, cds.cadViewer.camera);\r\n }\r\n\r\n this.getIntersectedSpriteforPhone = function (event, object) {\r\n this.setRayCasterPhone(event);\r\n var intersectedObj = cds.cadViewer.raycaster.intersectObjects(object, true);\r\n\r\n if (intersectedObj.length > 0 && intersectedObj[0].object.type === \"Sprite\") {\r\n return intersectedObj[0].object;\r\n }\r\n\r\n }\r\n\r\n this.setCamera = function (cameraMatrix) {\r\n cds.cadViewer.camera.position.set(cameraMatrix.elements[12], cameraMatrix.elements[13], cameraMatrix.elements[14]);\r\n cds.cadViewer.camera.up.set(cameraMatrix.elements[4], cameraMatrix.elements[5], cameraMatrix.elements[6]);\r\n }\r\n\r\n this.addCart = function () {\r\n var cartButton = document.createElement(\"input\");\r\n cartButton.type = \"button\";\r\n cartButton.value = \"ADD TO CART\";\r\n cartButton.setAttribute(\"style\", \"position: absolute; right: 25px; top: 20px\");\r\n document.body.appendChild(cartButton);\r\n }\r\n\r\n this.createAnnotation = function (part, annotations) {\r\n for (let i = 0; i < annotations.length; i++) {\r\n\r\n if (!part.userData.hasOwnProperty('annotationNo')) {\r\n part.userData.annotationNo = 1;\r\n } else {\r\n part.userData.annotationNo++;\r\n }\r\n\r\n var annotation = document.createElement(\"div\");\r\n annotation.id = part.userData.compId + \".\" + (part.userData.annotationNo - 1);\r\n var hyperlink = annotations[i].url;\r\n var imgURL = annotations[i].imageUrl;\r\n var aText = annotations[i].text;\r\n\r\n if (hyperlink !== '') {\r\n var anchor = document.createElement(\"a\");\r\n anchor.href = hyperlink;\r\n anchor.target = \"_blank\";\r\n anchor.style.color = \"rgb(255, 255, 255)\";\r\n }\r\n\r\n if (imgURL !== '') {\r\n var imgDiv = document.createElement(\"div\");\r\n var img = document.createElement(\"img\");\r\n img.src = imgURL;\r\n img.style.width = annotations[i].imageWidth + \"px\";\r\n img.style.height = annotations[i].imageHeight + \"px\";\r\n imgDiv.appendChild(img);\r\n }\r\n\r\n if (aText !== '') {\r\n var span = document.createElement(\"span\");\r\n if(!cds.cadViewer.boolIE){\r\n \tspan.style = \"-moz-user-select: none; -webkit-user-select: none; -ms-user-select:none; user-select:none;-o-user-select:none;\"\r\n }\r\n span.innerText = aText;\r\n }\r\n\r\n //case:1-6\r\n if (aText !== '' && imgURL === '' && hyperlink === '') {\r\n annotation.appendChild(span);\r\n } else if (aText !== '' && imgURL === '' && hyperlink !== '') {\r\n anchor.appendChild(span);\r\n annotation.appendChild(anchor);\r\n } else if (aText === '' && imgURL !== '' && hyperlink === '') {\r\n annotation.appendChild(imgDiv);\r\n } else if (aText === '' && imgURL !== '' && hyperlink !== '') {\r\n anchor.appendChild(imgDiv);\r\n annotation.appendChild(anchor);\r\n } else if (aText !== '' && imgURL !== '' && hyperlink === '') {\r\n\r\n annotation.appendChild(imgDiv);\r\n annotation.appendChild(span);\r\n\r\n } else if (aText !== '' && imgURL !== '' && hyperlink !== '') {\r\n anchor.appendChild(span);\r\n annotation.appendChild(imgDiv);\r\n annotation.appendChild(anchor);\r\n }\r\n\r\n annotation.onmouseover = function () {\r\n if (cds.cadViewer.hasOwnProperty('materialProperties'))\r\n cds.cadViewer.materialProperties.highlightPartUsingCompId(part.userData.compId);\r\n\r\n annotation.style.backgroundColor = \"rgb(0, 102, 255)\"\r\n\r\n var tr = document.getElementById(part.name)\r\n if (tr) {\r\n tr.style.background = \"#000\"\r\n tr.cells[0].style.color = 'white'\r\n tr.cells[1].style.color = 'white'\r\n tr.cells[2].style.color = 'white'\r\n }\r\n };\r\n\r\n annotation.ondblclick = function () {\r\n cds.cadViewer.setCameraZoomOn(part)\r\n }\r\n\r\n annotation.onmouseout = function () {\r\n if (cds.cadViewer.hasOwnProperty('materialProperties'))\r\n cds.cadViewer.materialProperties.removeHighlights();\r\n\r\n annotation.style.backgroundColor = \"rgb(255, 255, 255)\";\r\n\r\n\r\n var tr = document.getElementById(part.name)\r\n if (tr) {\r\n tr.style.background = \"#fff\"\r\n tr.cells[0].style.color = \"#000\"\r\n tr.cells[1].style.color = \"#000\"\r\n tr.cells[2].style.color = \"#000\"\r\n }\r\n };\r\n\r\n\r\n annotation.setAttribute(\"style\", \"text-align: center; position: absolute; background-color: rgb(255, 255, 255); padding: 7px; border: 1px solid rgb(212, 212, 212); overflow: hidden; border-radius: 20px; color: rgb(0, 0, 0); box-shadow: 0px 0px 5px 1px white; min-width: 10px; min-height: 10px; display: none\");\r\n var cdscadviewercontainer = document.getElementsByClassName(\"cds-cad-viewer-container\")[0];\r\n cdscadviewercontainer.appendChild(annotation);\r\n\r\n //create line\r\n var material = new THREE.LineBasicMaterial({ color: \"#000000\" });\r\n var geometry = new THREE.Geometry();\r\n\r\n var vertex0 = new THREE.Vector3(annotations[i].lineVertices[0].x, annotations[i].lineVertices[0].y, annotations[i].lineVertices[0].z);\r\n var vertex1 = new THREE.Vector3(annotations[i].lineVertices[1].x, annotations[i].lineVertices[1].y, annotations[i].lineVertices[1].z);\r\n\r\n geometry.vertices.push(vertex0);\r\n geometry.vertices.push(vertex1);\r\n\r\n var annotationLine = new THREE.Line(geometry, material);\r\n annotationLine.geometry.verticesNeedUpdate = true;\r\n annotationLine.visible = false;\r\n part.add(annotationLine);\r\n\r\n if (annotations[i].animationData.length > 0) {\r\n for (let j = 0; j < annotations[i].animationData.length; j++) {\r\n if (annotations[i].animationData[j].endTime === null) {\r\n annotations[i].animationData[j].endTime = Infinity;\r\n }\r\n }\r\n }\r\n\r\n this.annotationContainer.push({ part: part, line: annotationLine, domElement: annotation, vertex: [vertex0, vertex1], explosionEnd: annotations[i].explosionEndOnly, animationTimeFrames: annotations[i].animationData });\r\n }\r\n }\r\n\r\n this.getIntersectedPart = function (event, object) {\r\n\r\n var mouseX = (event.clientX / window.innerWidth) * 2 - 1;\r\n var mouseY = -(event.clientY / window.innerHeight) * 2 + 1;\r\n var vector = new THREE.Vector3(mouseX, mouseY, 1);\r\n var _this = this;\r\n vector.unproject(cds.cadViewer.camera);\r\n cds.cadViewer.raycaster.set(cds.cadViewer.camera.position, vector.sub(cds.cadViewer.camera.position).normalize());\r\n\r\n var intersectObj = cds.cadViewer.raycaster.intersectObjects(object, true);\r\n\r\n if (intersectObj.length > 0) {\r\n if (intersectObj[0].object instanceof THREE.Mesh) {\r\n if (intersectObj[0].object.parent.type === \"Group\") {\r\n var part = intersectObj[0].object.parent.parent;\r\n } else {\r\n var part = intersectObj[0].object.parent;\r\n }\r\n\r\n if (part.userData.childType === \"Part\") {\r\n return part\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.highlightAnnotationDiv = function () {\r\n\r\n var _this = cds.cadViewer.studioUtils\r\n var intersectedPart = _this.getIntersectedPart(event, cds.cadViewer.sceneObject.children)\r\n if (intersectedPart) {\r\n var id = intersectedPart.userData.compId + \".\" + (intersectedPart.userData.annotationNo - 1)\r\n\r\n if (_this.highlightedPartName && intersectedPart.name !== _this.highlightedPartName) {\r\n if (_this.highlightedAnnotation)\r\n _this.highlightedAnnotation.style.backgroundColor = \"rgb(255, 255, 255)\";\r\n _this.highlightedAnnotation = null;\r\n if (cds.cadViewer.hasOwnProperty('materialProperties'))\r\n cds.cadViewer.materialProperties.removeHighlights();\r\n\r\n _this.HighlightModetreeRow(_this.highlightedPartName, \"#fff\", \"#000\");\r\n\r\n _this.highlightedPartName = undefined;\r\n }\r\n\r\n if (!_this.highlightedPartName) {\r\n var annotationDOMElement = document.getElementById(id)\r\n if (annotationDOMElement) {\r\n annotationDOMElement.style.backgroundColor = \"rgb(0, 102, 255)\";\r\n _this.highlightedAnnotation = annotationDOMElement;\r\n _this.HighlightModetreeRow(intersectedPart.name, \"#000\", \"#fff\");\r\n }\r\n\r\n _this.highlightedPartName = intersectedPart.name;\r\n\r\n if (cds.cadViewer.hasOwnProperty('materialProperties'))\r\n cds.cadViewer.materialProperties.highlightPartUsingCompId(intersectedPart.userData.compId);\r\n }\r\n\r\n } else {\r\n\r\n if (_this.highlightedPartName) {\r\n if (_this.highlightedAnnotation)\r\n _this.highlightedAnnotation.style.backgroundColor = \"rgb(255, 255, 255)\";\r\n _this.highlightedAnnotation = null;\r\n _this.HighlightModetreeRow(_this.highlightedPartName, \"#fff\", \"#000\");\r\n\r\n\r\n if (cds.cadViewer.hasOwnProperty('materialProperties'))\r\n cds.cadViewer.materialProperties.removeHighlights();\r\n\r\n _this.highlightedPartName = undefined;\r\n }\r\n }\r\n }\r\n\r\n this.HighlightModetreeRow = function (id, backgroundColor, color) {\r\n\r\n var row = document.getElementById(id);\r\n if (row) {\r\n row.style.background = backgroundColor;\r\n row.cells[0].style.color = color;\r\n row.cells[1].style.color = color;\r\n row.cells[2].style.color = color;\r\n row.cells[3].style.color = color;\r\n row.cells[3].style.color = color;\r\n }\r\n }\r\n\r\n this.updateAnnotation = function () {\r\n\r\n for (var i = 0; i < this.annotationContainer.length; i++) {\r\n let vertex0 = this.annotationContainer[i].vertex[0].clone();\r\n let vertex1 = this.annotationContainer[i].vertex[1].clone();\r\n\r\n this.annotationContainer[i].part.localToWorld(vertex0);\r\n this.annotationContainer[i].part.localToWorld(vertex1);\r\n\r\n const vector = new THREE.Vector3(vertex1.x, vertex1.y, vertex1.z);\r\n const vector0 = new THREE.Vector3(vertex0.x, vertex0.y, vertex0.z);\r\n const canvas = cds.cadViewer.renderer.domElement;\r\n\r\n vector0.project(cds.cadViewer.camera);\r\n vector.project(cds.cadViewer.camera);\r\n\r\n let rightSide = false;\r\n if (vector0.x < vector.x) {\r\n rightSide = true;\r\n }\r\n\r\n vector.x = Math.round((0.5 + vector.x / 2) * (canvas.width)); // window.devicePixelRatio\r\n vector.y = Math.round((0.5 - vector.y / 2) * (canvas.height)); // window.devicePixelRatio\r\n\r\n let annotation = this.annotationContainer[i].domElement;\r\n annotation.style.top = vector.y - 14 + 'px';\r\n\r\n if (rightSide) {\r\n annotation.style.right = \"\";\r\n annotation.style.left = vector.x + 'px';\r\n } else {\r\n annotation.style.left = \"\";\r\n annotation.style.right = \"calc(100% - \" + vector.x + \"px)\";\r\n }\r\n }\r\n }\r\n\r\n this.dispose = function () {\r\n for (let i = 0; i < this.annotationContainer.length; i++) {\r\n this.annotationContainer[i].domElement.parentElement.removeChild(this.annotationContainer[i].domElement);\r\n this.annotationContainer[i].line.parent.remove(this.annotationContainer[i].line);\r\n }\r\n\r\n this.annotationContainer = [];\r\n }\r\n\r\n this.toggleAnnotation = function () {\r\n this.showAnnotations(!this.annotationDisplayed)\r\n }\r\n\r\n this.showAnnotations = function (state) {\r\n for (let i = 0; i < this.annotationContainer.length; i++) {\r\n this.annotationContainer[i].line.visible = state;\r\n this.annotationContainer[i].domElement.style.display = state === true ? \"block\" : \"none\";\r\n }\r\n\r\n this.annotationDisplayed = state;\r\n\r\n var e = document.getElementById(\"annot-icon\");\r\n if (e) e.src = state ? \"https://www.product-config.net/cadviewer/images/icons/ic_annot_disable.svg\" : \"https://www.product-config.net/cadviewer/images/icons/ic_annot.svg\";\r\n }\r\n\r\n this.getViewPointNames = function () {\r\n return cds.cadViewer.studioUtils.viewpoints.map(function (element, index, array) {\r\n return element.name\r\n })\r\n },\r\n\r\n this.setCameraWithName = function (name) {\r\n let _this = this\r\n var viewPoint = cds.cadViewer.studioUtils.viewpoints.find(function (element, index, array) { return element.name === name })\r\n let cameraViewPoint = _this.getVectorMap(viewPoint)\r\n let matrix = cameraViewPoint[\"matrix\"].elements;\r\n _this.animateCameraPosition(cds.cadViewer.camera, { x: matrix[12], y: matrix[13], z: matrix[14] }, function () { })\r\n _this.animateParam(cds.cadViewer.camera.up, { x: matrix[4], y: matrix[5], z: matrix[6] }, function () { })\r\n _this.animateParam(cds.cadViewer.controls.target, { x: cameraViewPoint[\"target\"].x, y: cameraViewPoint[\"target\"].y, z: cameraViewPoint[\"target\"].z }, function () { })\r\n }\r\n\r\n this.setCameraViewPoints = function (json) {\r\n this.viewpoints = json[\"viewpoints\"]\r\n }\r\n\r\n this.getVectorMap = function (viewpoint) {\r\n let cameraViewPoint = []\r\n\r\n let target = viewpoint[\"target\"]\r\n cameraViewPoint[\"target\"] = new THREE.Vector3(target.x, target.y, target.z)\r\n\r\n let matrixArray = viewpoint[\"matrix\"].elements\r\n cameraViewPoint[\"matrix\"] = new THREE.Matrix4().fromArray(matrixArray) //new THREE.Vector3(position.x, position.y, position.z)\r\n\r\n return cameraViewPoint\r\n }\r\n\r\n this.getViewPointsDiv = function (cameraViewPoint) {\r\n var _this = this\r\n var pointerDivCircle = document.createElement('div')\r\n pointerDivCircle.classList.add('pointer-circle')\r\n\r\n pointerDiv = document.createElement('div')\r\n pointerDiv.classList.add('pointer-background')\r\n pointerDiv.appendChild(pointerDivCircle)\r\n\r\n // Animation\r\n pointerDiv.onmouseenter = function () { pointerDivCircle.classList.add('pointer-circle-hover') }\r\n pointerDiv.onmouseleave = function () { pointerDivCircle.classList.remove('pointer-circle-hover') }\r\n\r\n // Set camera position\r\n pointerDiv.onclick = function () {\r\n _this.animateCameraPosition(cds.cadViewer.camera, cameraViewPoint[\"position\"], function () {\r\n cds.cadViewer.controls.target.copy(cameraViewPoint[\"target\"])\r\n })\r\n }\r\n\r\n document.body.appendChild(pointerDiv)\r\n\r\n return pointerDiv\r\n }\r\n\r\n this.updateAllViewPoints = function () {\r\n for (let index = 0; index < this.viewpoints.length; index++) {\r\n const element = this.viewpoints[index];\r\n this.updateViewPoint(element[\"position\"], element[\"domElement\"])\r\n }\r\n }\r\n\r\n this.updateViewPoint = function (pointerPosition, pointerDiv) {\r\n let camera = cds.cadViewer.camera\r\n let renderer = cds.cadViewer.renderer\r\n if (pointerPosition != null & pointerDiv != null) {\r\n var position = pointerPosition.clone()\r\n position.project(camera)\r\n var canvas = renderer.domElement\r\n position.x = Math.round((0.5 + position.x / 2) * (canvas.width)); // window.devicePixelRatio\r\n position.y = Math.round((0.5 - position.y / 2) * (canvas.height));\r\n\r\n pointerDiv.style.top = position.y + 'px'\r\n pointerDiv.style.left = position.x + 'px'\r\n }\r\n }\r\n\r\n this.animateCameraPosition = function (camera, to, onFinish) {\r\n new TWEEN.Tween(camera.position).to({\r\n x: to.x,\r\n y: to.y,\r\n z: to.z\r\n }, 2000)\r\n .easing(TWEEN.Easing.Linear.None)\r\n .onComplete(function () {\r\n camera.updateProjectionMatrix();\r\n onFinish()\r\n })\r\n .start()\r\n }\r\n\r\n this.animateParam = function (param, to, onFinish, time) {\r\n if (!time) time = 2000;\r\n\r\n return new TWEEN.Tween(param).to({\r\n x: to.x,\r\n y: to.y,\r\n z: to.z\r\n }, time)\r\n .easing(TWEEN.Easing.Linear.None)\r\n .onComplete(function () {\r\n cds.cadViewer.camera.updateProjectionMatrix();\r\n\r\n onFinish()\r\n })\r\n .start()\r\n }\r\n //*************************************Request studio feature files**********************************************//\r\n\r\n this.loadStudioAnimations = function () {\r\n var arr = cds.cadViewer.cadFilePath.split('.');\r\n arr.pop();\r\n arr.push(\"anim\");\r\n var link = decodeURIComponent(arr.join('.'));\r\n cds.cadViewer.studioUtils.readTextFile(link, function (response) {\r\n var jsonFile = JSON.parse(response);\r\n cds.cadViewer.studioUtils.applyAnimations(jsonFile);\r\n });\r\n }\r\n\r\n this.mapStudioMaterials = function () {\r\n var arr = cds.cadViewer.cadFilePath.split('.');\r\n arr.pop();\r\n arr.push(\"cdsmm\");\r\n var link = decodeURIComponent(arr.join('.'));\r\n this.readTextFile(link, function (response) {\r\n var jsonFile = JSON.parse(response);\r\n cds.cadViewer.studioUtils.mapMaterials(jsonFile);\r\n });\r\n }\r\n\r\n this.loadStudioExplosions = function () {\r\n var arr = cds.cadViewer.cadFilePath.split('.');\r\n arr.pop();\r\n arr.push(\"expl\");\r\n var link = decodeURIComponent(arr.join('.'));\r\n this.readTextFile(link, function (response) {\r\n var jsonFile = JSON.parse(response);\r\n cds.cadViewer.studioUtils.applyExplosions(jsonFile);\r\n });\r\n }\r\n\r\n this.loadStudioAnnotations = function () {\r\n var arr = cds.cadViewer.cadFilePath.split('.');\r\n arr.pop();\r\n arr.push(\"anot\");\r\n var link = decodeURIComponent(arr.join('.'));\r\n this.readTextFile(link, function (response) {\r\n var jsonFile = JSON.parse(response);\r\n cds.cadViewer.studioUtils.applyAnnotations(jsonFile);\r\n });\r\n }\r\n\r\n this.loadCameraViewPoints = function () {\r\n var arr = cds.cadViewer.cadFilePath.split('.');\r\n arr.pop();\r\n arr.push(\"cam\");\r\n var link = decodeURIComponent(arr.join('.'));\r\n this.readTextFile(link, function (response) {\r\n var jsonFile = JSON.parse(response);\r\n cds.cadViewer.studioUtils.setCameraViewPoints(jsonFile);\r\n });\r\n }\r\n\r\n this.readTextFile = function (link, callback) {\r\n var rawFile = new XMLHttpRequest();\r\n rawFile.open(\"GET\", link, true);\r\n rawFile.onreadystatechange = function () {\r\n if (rawFile.readyState === 4 && rawFile.status == \"200\") {\r\n callback(rawFile.responseText);\r\n } else if (rawFile.readyState === 4 && rawFile.status !== \"200\") {\r\n console.log(\"File doesn't exist on link: \" + link);\r\n }\r\n }\r\n rawFile.send();\r\n }\r\n }\r\n\r\n\r\n\r\n};\r\n\r\n\r\n\r\n//// =======================================================================================================\r\n//// =======================================================================================================\r\n//// =======================================================================================================\r\n//// =======================================================================================================\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n//by : for Mouse hover Effect- Highlights instance under Mouse with yellow color\r\n//ref : https://stemkoski.github.io/Three.js/Mouse-Over.html\r\nfunction MouseHoverUpdate() {\r\n var vector = new THREE.Vector3(cds.cadViewer.mouse.x, cds.cadViewer.mouse.y, 0.5);\r\n //cds.cadViewer.projector.unprojectVector(vector, cds.cadViewer.camera);\r\n //var ray = new THREE.Raycaster(cds.cadViewer.camera.position, vector.sub(cds.cadViewer.camera.position).normalize());\r\n //var intersects = ray.intersectObjects(cds.cadViewer.scene.children, true);\r\n //\r\n //if (intersects.length > 0)\r\n //{\r\n // if (intersects[0].object != cds.cadViewer.INTERSECTED)\r\n // {\r\n // if (cds.cadViewer.INTERSECTED)\r\n // cds.cadViewer.INTERSECTED.material.color.setHex(cds.cadViewer.INTERSECTED.currentHex);\r\n // cds.cadViewer.INTERSECTED = intersects[0].object;\r\n // cds.cadViewer.INTERSECTED.currentHex = cds.cadViewer.INTERSECTED.material.color.getHex();\r\n // cds.cadViewer.INTERSECTED.material.color.setHex(0xffff00);\r\n // }\r\n //}\r\n //else\r\n //{\r\n // if (cds.cadViewer.INTERSECTED)\r\n // cds.cadViewer.INTERSECTED.material.color.setHex(cds.cadViewer.INTERSECTED.currentHex);\r\n // cds.cadViewer.INTERSECTED = null;\r\n //\r\n //}\r\n}\r\n//------For Readable Text On zoom out/in: increases size on zoom out and decreses text sixe on zoom in\r\n//ref : https://jsfiddle.net/prisoner849/a2ogz9vx/\r\nfunction SetSpriteTextOnZoom() {\r\n var spritetext = [];\r\n var timestamp = new Date() * 0.0001;\r\n\r\n cds.cadViewer.scene.traverse(function (text) {\r\n if (text instanceof THREE.Sprite) {\r\n text.children[0].geometry.computeBoundingBox();\r\n\r\n var scaleVector = new THREE.Vector3();\r\n var scaleFactor = 4;\r\n var vec = new THREE.Vector3(text.children[0].geometry.boundingBox.centerX, text.children[0].geometry.boundingBox.centerY, text.children[0].geometry.boundingBox.centerZ);\r\n var scaleby = scaleVector.subVectors(vec, cds.cadViewer.camera.position).length() / scaleFactor;\r\n text.children[0].scale.set(scaleby, scaleby, 1);\r\n }\r\n });\r\n\r\n //if (cds.cadViewer.sceneObject instanceof THREE.Object3D) {\r\n // for (var i = 0; i < cds.cadViewer.sceneObject.children.length; i++) {\r\n // if (cds.cadViewer.sceneObject.children[i] instanceof THREE.Object3D) {\r\n // var text1 = cds.cadViewer.sceneObject.children[i];\r\n // if (text1.children != 0) {\r\n // if (text1.children[0].material instanceof THREE.SpriteMaterial) {\r\n // text1.children[0].geometry.computeBoundingBox();\r\n // //spritetext.push(text1.children[0]);\r\n // var scaleVector = new THREE.Vector3();\r\n // var scaleFactor = 4;\r\n // var vec = new THREE.Vector3(text1.children[0].geometry.boundingBox.centerX, text1.children[0].geometry.boundingBox.centerY, text1.children[0].geometry.boundingBox.centerZ);\r\n // var scaleby = scaleVector.subVectors(vec, cds.cadViewer.camera.position).length() / scaleFactor;\r\n // text1.children[0].scale.set(scaleby, scaleby, 1);\r\n // }\r\n // }\r\n // }\r\n // }\r\n //}\r\n}\r\n\r\n\r\n\r\nvar sprites = [];\r\n\r\nfunction ToggleDiamensionVisibility() {\r\n \"use strict\";\r\n cds.cadViewer.showDiamension = !cds.cadViewer.showDiamension;\r\n var dim;\r\n if (cds.cadViewer.showDiamension) {\r\n GetDiamensions(sprites);\r\n sprites.forEach(function (text) {\r\n text.visible = false;\r\n });\r\n } else {\r\n sprites.forEach(function (text) {\r\n text.visible = true;\r\n });\r\n }\r\n}\r\n\r\nfunction GetDiamensions(modeldiamension) {\r\n if (cds.cadViewer.sceneObject instanceof THREE.Object3D) {\r\n for (var i = 0; i < cds.cadViewer.sceneObject.children.length; i++) {\r\n if (cds.cadViewer.sceneObject.children[i] instanceof THREE.Object3D) {\r\n var text1 = cds.cadViewer.sceneObject.children[i];\r\n if (text1 instanceof THREE.Line && text1.userData.drawType === \"Dimension\") {\r\n sprites.push(text1);\r\n }\r\n if (text1.children != 0) {\r\n if (text1.children[0].material instanceof THREE.SpriteMaterial) {\r\n sprites.push(text1.children[0]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction setupTween(lastPos, CurrentPos, isAngular) {\r\n if (isAngular == undefined) {\r\n var tween = new TWEEN.Tween(lastPos).to(CurrentPos, 900);\r\n tween.easing(TWEEN.Easing.Cubic.In);\r\n tween.start();\r\n } else {\r\n var tween = new TWEEN.Tween(lastPos)\r\n .to({\r\n x: CurrentPos.x / Math.PI,\r\n y: CurrentPos.y / Math.PI,\r\n z: CurrentPos.z / Math.PI,\r\n }, 600);\r\n tween.easing(TWEEN.Easing.Cubic.In);\r\n tween.start();\r\n }\r\n}\r\n\r\nfunction rotate() {\r\n for (var i = 0, l = cds.cadViewer.scene.children.length; i < l; i++) {\r\n var object = cds.cadViewer.scene.children[i];\r\n object.rotation.y += 0.01;\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n// Based on code at: http://learningthreejs.com/data/THREEx/docs/THREEx.FullScreen.html\r\n/** @namespace */\r\nvar THREEx = THREEx || {};\r\nTHREEx.FullScreen = THREEx.FullScreen || {};\r\n\r\nTHREEx.FullScreen._hasWebkitFullScreen = false;\r\nTHREEx.FullScreen._hasMozFullScreen = false;\r\nTHREEx.FullScreen._hasMsFullScreen = false;\r\n\r\n/**\r\n * ADDED: Initialize availability in all browsers\r\n */\r\nTHREEx.FullScreen.init = function (element) {\r\n element = element || document.body;\r\n this._hasWebkitFullScreen = element.webkitRequestFullScreen ? true : false;\r\n this._hasMozFullScreen = element.mozRequestFullScreen ? true : false;\r\n this._hasMsFullScreen = element.msRequestFullscreen ? true : false;\r\n}\r\n\r\n/**\r\n * test if it is possible to have fullscreen\r\n *\r\n * @returns {Boolean} true if fullscreen API is available, false otherwise\r\n */\r\nTHREEx.FullScreen.available = function () {\r\n return this._hasWebkitFullScreen || this._hasMozFullScreen || this._hasMsFullScreen;\r\n}\r\n\r\n/**\r\n * test if fullscreen is currently activated\r\n *\r\n * @returns {Boolean} true if fullscreen is currently activated, false otherwise\r\n */\r\nTHREEx.FullScreen.activated = function () {\r\n if (this._hasWebkitFullScreen) {\r\n return document.webkitIsFullScreen;\r\n } else if (this._hasMozFullScreen) {\r\n return document.mozFullScreen;\r\n } else if (this._hasMsFullScreen) {\r\n return document.msFullscreenElement !== undefined && document.msFullscreenElement !== null;\r\n } else {\r\n console.assert(false);\r\n }\r\n}\r\n\r\n/**\r\n * Request fullscreen on a given element\r\n * @param {DomElement} element to make fullscreen. optional. default to document.body\r\n */\r\nTHREEx.FullScreen.request = function (element) {\r\n\r\n\r\n element = element || document.body;\r\n if (this._hasWebkitFullScreen) {\r\n element.webkitRequestFullScreen(element.ALLOW_KEYBOARD_INPUT);\r\n } else if (this._hasMozFullScreen) {\r\n element.mozRequestFullScreen();\r\n } else if (this._hasMsFullScreen) {\r\n element.msRequestFullscreen();\r\n } else {\r\n console.assert(false);\r\n }\r\n}\r\n\r\n/**\r\n * Cancel fullscreen\r\n */\r\nTHREEx.FullScreen.cancel = function () {\r\n if (this._hasWebkitFullScreen) {\r\n document.webkitCancelFullScreen();\r\n } else if (this._hasMozFullScreen) {\r\n document.mozCancelFullScreen();\r\n } else if (this._hasMsFullScreen) {\r\n document.msExitFullscreen();\r\n } else {\r\n console.assert(false);\r\n }\r\n}\r\n/**\r\n * Tween.js - Licensed under the MIT license\r\n * https://github.com/sole/tween.js\r\n * ----------------------------------------------\r\n *\r\n * See https://github.com/sole/tween.js/graphs/contributors for the full list of contributors.\r\n * Thank you all, you're awesome!\r\n */\r\n\r\n// Date.now shim for (ahem) Internet Explo(d|r)er\r\nif (Date.now === undefined) {\r\n\r\n Date.now = function () {\r\n\r\n return new Date().valueOf();\r\n\r\n };\r\n\r\n}\r\n\r\n/**\r\n * @author Eberhard Graether / http://egraether.com/\r\n * @author Mark Lundin \t/ http://mark-lundin.com\r\n * @author Simone Manini / http://daron1337.github.io\r\n * @author Luca Antiga \t/ http://lantiga.github.io\r\n */\r\n\r\nTHREE.TrackballControls = function (object, domElement) {\r\n\r\n var _this = this;\r\n var STATE = { NONE: -1, ROTATE: 0, ZOOM: 1, PAN: 2, TOUCH_ROTATE: 3, TOUCH_ZOOM_PAN: 4 };\r\n\r\n this.object = object;\r\n this.domElement = (domElement !== undefined) ? domElement : document;\r\n\r\n // API\r\n\r\n this.enabled = true;\r\n\r\n this.screen = { left: 0, top: 0, width: 0, height: 0 };\r\n\r\n this.rotateSpeed = 1.0;\r\n this.zoomSpeed = 1.2;\r\n this.panSpeed = 0.3;\r\n\r\n this.noRotate = false;\r\n this.noZoom = false;\r\n this.noPan = false;\r\n\r\n this.staticMoving = false;\r\n this.dynamicDampingFactor = 0.2;\r\n\r\n this.minDistance = 0;\r\n this.maxDistance = Infinity;\r\n\r\n this.keys = [65 /*A*/, 83 /*S*/, 68 /*D*/];\r\n\r\n // internals\r\n\r\n this.target = new THREE.Vector3();\r\n\r\n var EPS = 0.000001;\r\n\r\n var lastPosition = new THREE.Vector3();\r\n\r\n var _state = STATE.NONE,\r\n _prevState = STATE.NONE,\r\n\r\n _eye = new THREE.Vector3(),\r\n\r\n _movePrev = new THREE.Vector2(),\r\n _moveCurr = new THREE.Vector2(),\r\n\r\n _lastAxis = new THREE.Vector3(),\r\n _lastAngle = 0,\r\n\r\n _zoomStart = new THREE.Vector2(),\r\n _zoomEnd = new THREE.Vector2(),\r\n\r\n _touchZoomDistanceStart = 0,\r\n _touchZoomDistanceEnd = 0,\r\n\r\n _panStart = new THREE.Vector2(),\r\n _panEnd = new THREE.Vector2();\r\n\r\n // for reset\r\n\r\n this.target0 = this.target.clone();\r\n this.position0 = this.object.position.clone();\r\n this.up0 = this.object.up.clone();\r\n\r\n // events\r\n\r\n var changeEvent = { type: 'change' };\r\n var startEvent = { type: 'start' };\r\n var endEvent = { type: 'end' };\r\n\r\n\r\n // methods\r\n\r\n this.handleResize = function () {\r\n //////////////////Rushikesh//////////////////////////\r\n if (cds.cadViewer.dimensions) {\r\n cds.cadViewer.updateDimensionsWithCamera();\r\n }\r\n ///////////////////////////////////////////////////\r\n if (this.domElement === document) {\r\n\r\n this.screen.left = 0;\r\n this.screen.top = 0;\r\n this.screen.width = window.innerWidth;\r\n this.screen.height = window.innerHeight;\r\n\r\n } else {\r\n\r\n var box = this.domElement.getBoundingClientRect();\r\n // adjustments come from similar code in the jquery offset() function\r\n var d = this.domElement.ownerDocument.documentElement;\r\n this.screen.left = box.left + window.pageXOffset - d.clientLeft;\r\n this.screen.top = box.top + window.pageYOffset - d.clientTop;\r\n this.screen.width = box.width;\r\n this.screen.height = box.height;\r\n\r\n }\r\n\r\n };\r\n\r\n this.handleEvent = function (event) {\r\n\r\n if (typeof this[event.type] == 'function') {\r\n\r\n this[event.type](event);\r\n\r\n }\r\n\r\n };\r\n\r\n var getMouseOnScreen = (function () {\r\n //////////////////Rushikesh//////////////////////////\r\n if (cds.cadViewer.dimensions) {\r\n cds.cadViewer.updateDimensionsWithCamera();\r\n }\r\n ///////////////////////////////////////////////////\r\n var vector = new THREE.Vector2();\r\n\r\n return function getMouseOnScreen(pageX, pageY) {\r\n\r\n vector.set(\r\n (pageX - _this.screen.left) / _this.screen.width,\r\n (pageY - _this.screen.top) / _this.screen.height\r\n );\r\n\r\n return vector;\r\n\r\n };\r\n\r\n }());\r\n\r\n var getMouseOnCircle = (function () {\r\n\r\n var vector = new THREE.Vector2();\r\n\r\n return function getMouseOnCircle(pageX, pageY) {\r\n\r\n vector.set(\r\n ((pageX - _this.screen.width * 0.5 - _this.screen.left) / (_this.screen.width * 0.5)),\r\n ((_this.screen.height + 2 * (_this.screen.top - pageY)) / _this.screen.width) // screen.width intentional\r\n );\r\n\r\n return vector;\r\n\r\n };\r\n\r\n }());\r\n\r\n this.rotateCamera = (function () {\r\n\r\n var axis = new THREE.Vector3(),\r\n quaternion = new THREE.Quaternion(),\r\n eyeDirection = new THREE.Vector3(),\r\n objectUpDirection = new THREE.Vector3(),\r\n objectSidewaysDirection = new THREE.Vector3(),\r\n moveDirection = new THREE.Vector3(),\r\n angle;\r\n\r\n return function rotateCamera() {\r\n\r\n moveDirection.set(_moveCurr.x - _movePrev.x, _moveCurr.y - _movePrev.y, 0);\r\n angle = moveDirection.length();\r\n\r\n if (angle) {\r\n\r\n _eye.copy(_this.object.position).sub(_this.target);\r\n\r\n eyeDirection.copy(_eye).normalize();\r\n objectUpDirection.copy(_this.object.up).normalize();\r\n objectSidewaysDirection.crossVectors(objectUpDirection, eyeDirection).normalize();\r\n\r\n objectUpDirection.setLength(_moveCurr.y - _movePrev.y);\r\n objectSidewaysDirection.setLength(_moveCurr.x - _movePrev.x);\r\n\r\n moveDirection.copy(objectUpDirection.add(objectSidewaysDirection));\r\n\r\n axis.crossVectors(moveDirection, _eye).normalize();\r\n\r\n angle *= _this.rotateSpeed;\r\n quaternion.setFromAxisAngle(axis, angle);\r\n\r\n _eye.applyQuaternion(quaternion);\r\n _this.object.up.applyQuaternion(quaternion);\r\n\r\n _lastAxis.copy(axis);\r\n _lastAngle = angle;\r\n\r\n } else if (!_this.staticMoving && _lastAngle) {\r\n\r\n _lastAngle *= Math.sqrt(1.0 - _this.dynamicDampingFactor);\r\n _eye.copy(_this.object.position).sub(_this.target);\r\n quaternion.setFromAxisAngle(_lastAxis, _lastAngle);\r\n _eye.applyQuaternion(quaternion);\r\n _this.object.up.applyQuaternion(quaternion);\r\n\r\n }\r\n\r\n _movePrev.copy(_moveCurr);\r\n\r\n };\r\n\r\n }());\r\n\r\n\r\n this.zoomCamera = function () {\r\n\r\n var factor;\r\n\r\n if (_state === STATE.TOUCH_ZOOM_PAN) {\r\n\r\n factor = _touchZoomDistanceStart / _touchZoomDistanceEnd;\r\n _touchZoomDistanceStart = _touchZoomDistanceEnd;\r\n _eye.multiplyScalar(factor);\r\n\r\n } else {\r\n\r\n factor = 1.0 + (_zoomEnd.y - _zoomStart.y) * _this.zoomSpeed;\r\n\r\n if (factor !== 1.0 && factor > 0.0) {\r\n\r\n _eye.multiplyScalar(factor);\r\n\r\n }\r\n\r\n if (_this.staticMoving) {\r\n\r\n _zoomStart.copy(_zoomEnd);\r\n\r\n } else {\r\n\r\n _zoomStart.y += (_zoomEnd.y - _zoomStart.y) * this.dynamicDampingFactor;\r\n\r\n }\r\n\r\n }\r\n\r\n };\r\n\r\n this.panCamera = (function () {\r\n\r\n var mouseChange = new THREE.Vector2(),\r\n objectUp = new THREE.Vector3(),\r\n pan = new THREE.Vector3();\r\n\r\n return function panCamera() {\r\n\r\n mouseChange.copy(_panEnd).sub(_panStart);\r\n\r\n if (mouseChange.lengthSq()) {\r\n\r\n mouseChange.multiplyScalar(_eye.length() * _this.panSpeed);\r\n\r\n pan.copy(_eye).cross(_this.object.up).setLength(mouseChange.x);\r\n pan.add(objectUp.copy(_this.object.up).setLength(mouseChange.y));\r\n\r\n _this.object.position.add(pan);\r\n _this.target.add(pan);\r\n\r\n if (_this.staticMoving) {\r\n\r\n _panStart.copy(_panEnd);\r\n\r\n } else {\r\n\r\n _panStart.add(mouseChange.subVectors(_panEnd, _panStart).multiplyScalar(_this.dynamicDampingFactor));\r\n\r\n }\r\n\r\n }\r\n\r\n };\r\n\r\n }());\r\n\r\n this.checkDistances = function () {\r\n\r\n if (!_this.noZoom || !_this.noPan) {\r\n\r\n if (_eye.lengthSq() > _this.maxDistance * _this.maxDistance) {\r\n\r\n _this.object.position.addVectors(_this.target, _eye.setLength(_this.maxDistance));\r\n _zoomStart.copy(_zoomEnd);\r\n\r\n }\r\n\r\n if (_eye.lengthSq() < _this.minDistance * _this.minDistance) {\r\n\r\n _this.object.position.addVectors(_this.target, _eye.setLength(_this.minDistance));\r\n _zoomStart.copy(_zoomEnd);\r\n\r\n }\r\n\r\n }\r\n\r\n };\r\n\r\n this.update = function () {\r\n //////////////////Rushikesh//////////////////////////\r\n if (cds.cadViewer.dimensions) {\r\n cds.cadViewer.updateDimensionsWithCamera();\r\n }\r\n ///////////////////////////////////////////////////\r\n\r\n _eye.subVectors(_this.object.position, _this.target);\r\n\r\n if (!_this.noRotate) {\r\n\r\n _this.rotateCamera();\r\n\r\n }\r\n\r\n if (!_this.noZoom) {\r\n\r\n _this.zoomCamera();\r\n\r\n }\r\n\r\n if (!_this.noPan) {\r\n\r\n _this.panCamera();\r\n\r\n }\r\n\r\n _this.object.position.addVectors(_this.target, _eye);\r\n\r\n _this.checkDistances();\r\n\r\n _this.object.lookAt(_this.target);\r\n\r\n if (lastPosition.distanceToSquared(_this.object.position) > EPS) {\r\n\r\n _this.dispatchEvent(changeEvent);\r\n\r\n lastPosition.copy(_this.object.position);\r\n\r\n }\r\n\r\n };\r\n\r\n this.reset = function () {\r\n\r\n _state = STATE.NONE;\r\n _prevState = STATE.NONE;\r\n\r\n _this.target.copy(_this.target0);\r\n _this.object.position.copy(_this.position0);\r\n _this.object.up.copy(_this.up0);\r\n\r\n _eye.subVectors(_this.object.position, _this.target);\r\n\r\n _this.object.lookAt(_this.target);\r\n\r\n _this.dispatchEvent(changeEvent);\r\n\r\n lastPosition.copy(_this.object.position);\r\n\r\n };\r\n\r\n // listeners\r\n\r\n function keydown(event) {\r\n //////////////////Rushikesh//////////////////////////\r\n if (cds.cadViewer.dimensions) {\r\n cds.cadViewer.updateDimensionsWithCamera();\r\n }\r\n ///////////////////////////////////////////////////\r\n if (_this.enabled === false) return;\r\n\r\n window.removeEventListener('keydown', keydown);\r\n\r\n _prevState = _state;\r\n\r\n if (_state !== STATE.NONE) {\r\n\r\n return;\r\n\r\n } else if (event.keyCode === _this.keys[STATE.ROTATE] && !_this.noRotate) {\r\n\r\n _state = STATE.ROTATE;\r\n\r\n } else if (event.keyCode === _this.keys[STATE.ZOOM] && !_this.noZoom) {\r\n\r\n _state = STATE.ZOOM;\r\n\r\n } else if (event.keyCode === _this.keys[STATE.PAN] && !_this.noPan) {\r\n\r\n _state = STATE.PAN;\r\n\r\n } else if(event.ctrlKey && event.keyCode == 66){\r\n cds.cadViewer.toggleBoundingBoxDisplay();\r\n }\r\n\r\n }\r\n\r\n function keyup(event) {\r\n //////////////////Rushikesh//////////////////////////\r\n if (cds.cadViewer.dimensions) {\r\n cds.cadViewer.updateDimensionsWithCamera();\r\n }\r\n ///////////////////////////////////////////////////\r\n if (_this.enabled === false) return;\r\n\r\n _state = _prevState;\r\n\r\n window.addEventListener('keydown', keydown, false);\r\n\r\n }\r\n\r\n function mousedown(event) {\r\n //////////////////Rushikesh//////////////////////////\r\n if (cds.cadViewer.dimensions) {\r\n cds.cadViewer.updateDimensionsWithCamera();\r\n }\r\n ///////////////////////////////////////////////////\r\n if (_this.enabled === false) return;\r\n\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n if (_state === STATE.NONE) {\r\n\r\n _state = event.button;\r\n\r\n }\r\n\r\n if (_state === STATE.ROTATE && !_this.noRotate) {\r\n\r\n _moveCurr.copy(getMouseOnCircle(event.pageX, event.pageY));\r\n _movePrev.copy(_moveCurr);\r\n\r\n } else if (_state === STATE.ZOOM && !_this.noZoom) {\r\n\r\n _zoomStart.copy(getMouseOnScreen(event.pageX, event.pageY));\r\n _zoomEnd.copy(_zoomStart);\r\n\r\n } else if (_state === STATE.PAN && !_this.noPan) {\r\n\r\n _panStart.copy(getMouseOnScreen(event.pageX, event.pageY));\r\n _panEnd.copy(_panStart);\r\n\r\n }\r\n\r\n document.addEventListener('mousemove', mousemove, false);\r\n document.addEventListener('mouseup', mouseup, false);\r\n\r\n _this.dispatchEvent(startEvent);\r\n\r\n }\r\n\r\n function mousemove(event) {\r\n //////////////////SWAPNIL//////////////////////////\r\n if (cds.cadViewer.dimensions) {\r\n cds.cadViewer.updateDimensionsWithCamera();\r\n }\r\n ///////////////////////////////////////////////////\r\n if (_this.enabled === false) return;\r\n\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n\r\n if (_state === STATE.ROTATE && !_this.noRotate) {\r\n\r\n _movePrev.copy(_moveCurr);\r\n _moveCurr.copy(getMouseOnCircle(event.pageX, event.pageY));\r\n\r\n } else if (_state === STATE.ZOOM && !_this.noZoom) {\r\n\r\n _zoomEnd.copy(getMouseOnScreen(event.pageX, event.pageY));\r\n\r\n } else if (_state === STATE.PAN && !_this.noPan) {\r\n\r\n _panEnd.copy(getMouseOnScreen(event.pageX, event.pageY));\r\n\r\n }\r\n\r\n }\r\n\r\n function mouseup(event) {\r\n //////////////////Rushikesh//////////////////////////\r\n if (cds.cadViewer.dimensions) {\r\n cds.cadViewer.updateDimensionsWithCamera();\r\n }\r\n /////////////////////////////////////////////////\r\n if (_this.enabled === false) return;\r\n\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n _state = STATE.NONE;\r\n\r\n document.removeEventListener('mousemove', mousemove);\r\n document.removeEventListener('mouseup', mouseup);\r\n _this.dispatchEvent(endEvent);\r\n\r\n }\r\n\r\n function mousewheel(event) {\r\n //////////////////Rushikesh//////////////////////////\r\n if (cds.cadViewer.dimensions) {\r\n cds.cadViewer.updateDimensionsWithCamera();\r\n }\r\n /////////////////////////////////////////////////\r\n if (_this.enabled === false) return;\r\n\r\n if (_this.noZoom === true) return;\r\n\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n switch (event.deltaMode) {\r\n\r\n case 2:\r\n // Zoom in pages\r\n _zoomStart.y -= event.deltaY * 0.025;\r\n break;\r\n\r\n case 1:\r\n // Zoom in lines\r\n _zoomStart.y -= event.deltaY * 0.01;\r\n break;\r\n\r\n default:\r\n // undefined, 0, assume pixels\r\n _zoomStart.y -= event.deltaY * 0.00025;\r\n break;\r\n\r\n }\r\n\r\n _this.dispatchEvent(startEvent);\r\n _this.dispatchEvent(endEvent);\r\n\r\n }\r\n\r\n function touchstart(event) {\r\n\r\n cds.cadViewer.enableModelSpin = false\r\n\r\n\r\n if (_this.enabled === false) return;\r\n\r\n switch (event.touches.length) {\r\n\r\n case 1:\r\n _state = STATE.TOUCH_ROTATE;\r\n _moveCurr.copy(getMouseOnCircle(event.touches[0].pageX, event.touches[0].pageY));\r\n _movePrev.copy(_moveCurr);\r\n break;\r\n\r\n default: // 2 or more\r\n _state = STATE.TOUCH_ZOOM_PAN;\r\n var dx = event.touches[0].pageX - event.touches[1].pageX;\r\n var dy = event.touches[0].pageY - event.touches[1].pageY;\r\n _touchZoomDistanceEnd = _touchZoomDistanceStart = Math.sqrt(dx * dx + dy * dy);\r\n\r\n var x = (event.touches[0].pageX + event.touches[1].pageX) / 2;\r\n var y = (event.touches[0].pageY + event.touches[1].pageY) / 2;\r\n _panStart.copy(getMouseOnScreen(x, y));\r\n _panEnd.copy(_panStart);\r\n break;\r\n\r\n }\r\n\r\n _this.dispatchEvent(startEvent);\r\n\r\n }\r\n\r\n function touchmove(event) {\r\n\r\n if (_this.enabled === false) return;\r\n\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n switch (event.touches.length) {\r\n\r\n case 1:\r\n _movePrev.copy(_moveCurr);\r\n _moveCurr.copy(getMouseOnCircle(event.touches[0].pageX, event.touches[0].pageY));\r\n break;\r\n\r\n default: // 2 or more\r\n var dx = event.touches[0].pageX - event.touches[1].pageX;\r\n var dy = event.touches[0].pageY - event.touches[1].pageY;\r\n _touchZoomDistanceEnd = Math.sqrt(dx * dx + dy * dy);\r\n\r\n var x = (event.touches[0].pageX + event.touches[1].pageX) / 2;\r\n var y = (event.touches[0].pageY + event.touches[1].pageY) / 2;\r\n _panEnd.copy(getMouseOnScreen(x, y));\r\n break;\r\n\r\n }\r\n\r\n }\r\n\r\n function touchend(event) {\r\n\r\n if (_this.enabled === false) return;\r\n\r\n switch (event.touches.length) {\r\n\r\n case 0:\r\n _state = STATE.NONE;\r\n break;\r\n\r\n case 1:\r\n _state = STATE.TOUCH_ROTATE;\r\n _moveCurr.copy(getMouseOnCircle(event.touches[0].pageX, event.touches[0].pageY));\r\n _movePrev.copy(_moveCurr);\r\n break;\r\n\r\n }\r\n\r\n _this.dispatchEvent(endEvent);\r\n\r\n }\r\n\r\n function contextmenu(event) {\r\n\r\n if (_this.enabled === false) return;\r\n\r\n event.preventDefault();\r\n\r\n }\r\n\r\n this.dispose = function () {\r\n\r\n this.domElement.removeEventListener('contextmenu', contextmenu, false);\r\n this.domElement.removeEventListener('mousedown', mousedown, false);\r\n this.domElement.removeEventListener('wheel', mousewheel, false);\r\n\r\n this.domElement.removeEventListener('touchstart', touchstart, false);\r\n this.domElement.removeEventListener('touchend', touchend, false);\r\n this.domElement.removeEventListener('touchmove', touchmove, false);\r\n\r\n document.removeEventListener('mousemove', mousemove, false);\r\n document.removeEventListener('mouseup', mouseup, false);\r\n\r\n window.removeEventListener('keydown', keydown, false);\r\n window.removeEventListener('keyup', keyup, false);\r\n\r\n };\r\n\r\n this.domElement.addEventListener('contextmenu', contextmenu, false);\r\n this.domElement.addEventListener('mousedown', mousedown, false);\r\n this.domElement.addEventListener('wheel', mousewheel, false);\r\n\r\n this.domElement.addEventListener('touchstart', touchstart, false);\r\n this.domElement.addEventListener('touchend', touchend, false);\r\n this.domElement.addEventListener('touchmove', touchmove, false);\r\n\r\n window.addEventListener('keydown', keydown, false);\r\n window.addEventListener('keyup', keyup, false);\r\n\r\n this.handleResize();\r\n\r\n // force an update at start\r\n this.update();\r\n\r\n};\r\n\r\nTHREE.TrackballControls.prototype = Object.create(THREE.EventDispatcher.prototype);\r\nTHREE.TrackballControls.prototype.constructor = THREE.TrackballControls;\r\n/**\r\n * @author alteredq / http://alteredqualia.com/\r\n */\r\n\r\nTHREE.RenderPass = function (scene, camera, overrideMaterial, clearColor, clearAlpha) {\r\n\r\n this.scene = scene;\r\n this.camera = camera;\r\n\r\n this.overrideMaterial = overrideMaterial;\r\n\r\n this.clearColor = clearColor;\r\n this.clearAlpha = (clearAlpha !== undefined) ? clearAlpha : 1;\r\n\r\n this.oldClearColor = new THREE.Color();\r\n this.oldClearAlpha = 1;\r\n\r\n this.enabled = true;\r\n this.clear = true;\r\n this.needsSwap = false;\r\n\r\n};\r\n\r\nTHREE.RenderPass.prototype = {\r\n\r\n render: function (renderer, writeBuffer, readBuffer, delta) {\r\n\r\n this.scene.overrideMaterial = this.overrideMaterial;\r\n\r\n if (this.clearColor) {\r\n\r\n this.oldClearColor.copy(renderer.getClearColor());\r\n this.oldClearAlpha = renderer.getClearAlpha();\r\n\r\n renderer.setClearColor(this.clearColor, this.clearAlpha);\r\n\r\n }\r\n\r\n renderer.render(this.scene, this.camera, readBuffer, this.clear);\r\n\r\n if (this.clearColor) {\r\n\r\n renderer.setClearColor(this.oldClearColor, this.oldClearAlpha);\r\n\r\n }\r\n\r\n this.scene.overrideMaterial = null;\r\n\r\n }\r\n\r\n};\r\n/**\r\n * @author alteredq / http://alteredqualia.com/\r\n */\r\n\r\nTHREE.ShaderPass = function (shader, textureID) {\r\n\r\n this.textureID = (textureID !== undefined) ? textureID : \"tDiffuse\";\r\n\r\n this.uniforms = THREE.UniformsUtils.clone(shader.uniforms);\r\n\r\n this.material = new THREE.ShaderMaterial({\r\n\r\n uniforms: this.uniforms,\r\n vertexShader: shader.vertexShader,\r\n fragmentShader: shader.fragmentShader\r\n\r\n });\r\n\r\n this.renderToScreen = false;\r\n\r\n this.enabled = true;\r\n this.needsSwap = true;\r\n this.clear = false;\r\n\r\n\r\n this.camera = new THREE.OrthographicCamera(-1, 1, 1, -1, 0, 1);\r\n this.scene = new THREE.Scene();\r\n\r\n this.quad = new THREE.Mesh(new THREE.PlaneGeometry(2, 2), null);\r\n this.scene.add(this.quad);\r\n\r\n};\r\n\r\nTHREE.ShaderPass.prototype = {\r\n\r\n render: function (renderer, writeBuffer, readBuffer, delta) {\r\n\r\n if (this.uniforms[this.textureID]) {\r\n\r\n this.uniforms[this.textureID].value = readBuffer;\r\n\r\n }\r\n\r\n this.quad.material = this.material;\r\n\r\n if (this.renderToScreen) {\r\n\r\n renderer.render(this.scene, this.camera);\r\n\r\n } else {\r\n\r\n renderer.render(this.scene, this.camera, writeBuffer, this.clear);\r\n\r\n }\r\n\r\n }\r\n\r\n};\r\n/**\r\n * @author alteredq / http://alteredqualia.com/\r\n */\r\n\r\nTHREE.MaskPass = function (scene, camera) {\r\n\r\n this.scene = scene;\r\n this.camera = camera;\r\n\r\n this.enabled = true;\r\n this.clear = true;\r\n this.needsSwap = false;\r\n\r\n this.inverse = false;\r\n\r\n};\r\n\r\nTHREE.MaskPass.prototype = {\r\n\r\n render: function (renderer, writeBuffer, readBuffer, delta) {\r\n\r\n var context = renderer.context;\r\n\r\n // don't update color or depth\r\n\r\n context.colorMask(false, false, false, false);\r\n context.depthMask(false);\r\n\r\n // set up stencil\r\n\r\n var writeValue, clearValue;\r\n\r\n if (this.inverse) {\r\n\r\n writeValue = 0;\r\n clearValue = 1;\r\n\r\n } else {\r\n\r\n writeValue = 1;\r\n clearValue = 0;\r\n\r\n }\r\n\r\n context.enable(context.STENCIL_TEST);\r\n context.stencilOp(context.REPLACE, context.REPLACE, context.REPLACE);\r\n context.stencilFunc(context.ALWAYS, writeValue, 0xffffffff);\r\n context.clearStencil(clearValue);\r\n\r\n // draw into the stencil buffer\r\n\r\n renderer.render(this.scene, this.camera, readBuffer, this.clear);\r\n renderer.render(this.scene, this.camera, writeBuffer, this.clear);\r\n\r\n // re-enable update of color and depth\r\n\r\n context.colorMask(true, true, true, true);\r\n context.depthMask(true);\r\n\r\n // only render where stencil is set to 1\r\n\r\n context.stencilFunc(context.EQUAL, 1, 0xffffffff); // draw if == 1\r\n context.stencilOp(context.KEEP, context.KEEP, context.KEEP);\r\n\r\n }\r\n\r\n};\r\n\r\n\r\nTHREE.ClearMaskPass = function () {\r\n\r\n this.enabled = true;\r\n\r\n};\r\n\r\nTHREE.ClearMaskPass.prototype = {\r\n\r\n render: function (renderer, writeBuffer, readBuffer, delta) {\r\n\r\n var context = renderer.context;\r\n\r\n context.disable(context.STENCIL_TEST);\r\n\r\n }\r\n\r\n};\r\n/**\r\n * @author alteredq / http://alteredqualia.com/\r\n */\r\n\r\nTHREE.EffectComposer = function (renderer, renderTarget) {\r\n\r\n this.renderer = renderer;\r\n\r\n if (renderTarget === undefined) {\r\n\r\n var width = window.innerWidth || 1;\r\n var height = window.innerHeight || 1;\r\n var parameters = { minFilter: THREE.LinearFilter, magFilter: THREE.LinearFilter, format: THREE.RGBFormat, stencilBuffer: false };\r\n\r\n renderTarget = new THREE.WebGLRenderTarget(width, height, parameters);\r\n\r\n }\r\n\r\n this.renderTarget1 = renderTarget;\r\n this.renderTarget2 = renderTarget.clone();\r\n\r\n this.writeBuffer = this.renderTarget1;\r\n this.readBuffer = this.renderTarget2;\r\n\r\n this.passes = [];\r\n\r\n if (THREE.CopyShader === undefined)\r\n console.error(\"THREE.EffectComposer relies on THREE.CopyShader\");\r\n\r\n this.copyPass = new THREE.ShaderPass(THREE.CopyShader);\r\n\r\n};\r\n\r\nTHREE.EffectComposer.prototype = {\r\n\r\n swapBuffers: function () {\r\n\r\n var tmp = this.readBuffer;\r\n this.readBuffer = this.writeBuffer;\r\n this.writeBuffer = tmp;\r\n\r\n },\r\n\r\n addPass: function (pass) {\r\n\r\n this.passes.push(pass);\r\n\r\n },\r\n\r\n insertPass: function (pass, index) {\r\n\r\n this.passes.splice(index, 0, pass);\r\n\r\n },\r\n\r\n render: function (delta) {\r\n\r\n this.writeBuffer = this.renderTarget1;\r\n this.readBuffer = this.renderTarget2;\r\n\r\n var maskActive = false;\r\n\r\n var pass, i, il = this.passes.length;\r\n\r\n for (i = 0; i < il; i++) {\r\n\r\n pass = this.passes[i];\r\n\r\n if (!pass.enabled) continue;\r\n\r\n pass.render(this.renderer, this.writeBuffer, this.readBuffer, delta, maskActive);\r\n\r\n if (pass.needsSwap) {\r\n\r\n if (maskActive) {\r\n\r\n var context = this.renderer.context;\r\n\r\n context.stencilFunc(context.NOTEQUAL, 1, 0xffffffff);\r\n\r\n this.copyPass.render(this.renderer, this.writeBuffer, this.readBuffer, delta);\r\n\r\n context.stencilFunc(context.EQUAL, 1, 0xffffffff);\r\n\r\n }\r\n\r\n this.swapBuffers();\r\n\r\n }\r\n\r\n if (pass instanceof THREE.MaskPass) {\r\n\r\n maskActive = true;\r\n\r\n } else if (pass instanceof THREE.ClearMaskPass) {\r\n\r\n maskActive = false;\r\n\r\n }\r\n\r\n }\r\n\r\n },\r\n\r\n reset: function (renderTarget) {\r\n\r\n if (renderTarget === undefined) {\r\n\r\n renderTarget = this.renderTarget1.clone();\r\n\r\n renderTarget.width = window.innerWidth;\r\n renderTarget.height = window.innerHeight;\r\n\r\n }\r\n\r\n this.renderTarget1 = renderTarget;\r\n this.renderTarget2 = renderTarget.clone();\r\n\r\n this.writeBuffer = this.renderTarget1;\r\n this.readBuffer = this.renderTarget2;\r\n\r\n },\r\n\r\n setSize: function (width, height) {\r\n\r\n var renderTarget = this.renderTarget1.clone();\r\n\r\n renderTarget.width = width;\r\n renderTarget.height = height;\r\n\r\n this.reset(renderTarget);\r\n\r\n }\r\n\r\n};\r\n/**\r\n * @author alteredq / http://alteredqualia.com/\r\n *\r\n * Full-screen textured quad shader\r\n */\r\n\r\nTHREE.CopyShader = {\r\n\r\n uniforms: {\r\n\r\n \"tDiffuse\": { type: \"t\", value: null },\r\n \"opacity\": { type: \"f\", value: 1.0 }\r\n\r\n },\r\n\r\n vertexShader: [\r\n\r\n \"varying vec2 vUv;\",\r\n\r\n \"void main() {\",\r\n\r\n \"vUv = uv;\",\r\n \"gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\r\n\r\n \"}\"\r\n\r\n ].join(\"\\n\"),\r\n\r\n fragmentShader: [\r\n\r\n \"uniform float opacity;\",\r\n\r\n \"uniform sampler2D tDiffuse;\",\r\n\r\n \"varying vec2 vUv;\",\r\n\r\n \"void main() {\",\r\n\r\n \"vec4 texel = texture2D( tDiffuse, vUv );\",\r\n \"gl_FragColor = opacity * texel;\",\r\n\r\n \"}\"\r\n\r\n ].join(\"\\n\")\r\n\r\n};\r\n/*\r\n * @Author: zz85\r\n * @Date: 2014-05-05 12:51:36\r\n * @Last Modified by: Tamas 4D\r\n * @Last Modified time: 2014-05-07 12:53:40\r\n */\r\n\r\n/**\r\n * @author zz85 / https://github.com/zz85 | https://www.lab4games.net/zz85/blog\r\n *\r\n * Edge Detection Shader using Sobel filter\r\n * Based on http://rastergrid.com/blog/2011/01/frei-chen-edge-detector\r\n *\r\n * aspect: vec2 of (1/width, 1/height)\r\n *\r\n * hidden edges mode by tamas szucs\r\n */\r\n\r\nTHREE.EdgeShader = {\r\n\r\n uniforms: {\r\n\r\n \"tDiffuse\": { type: \"t\", value: null },\r\n \"aspect\": { type: \"v2\", value: new THREE.Vector2(512, 512) },\r\n },\r\n\r\n vertexShader: [\r\n\r\n \"varying vec2 vUv;\",\r\n\r\n \"void main() {\",\r\n\r\n \"vUv = uv;\",\r\n \"gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\",\r\n\r\n \"}\"\r\n\r\n ].join(\"\\n\"),\r\n\r\n fragmentShader: [\r\n\r\n \"uniform sampler2D tDiffuse;\",\r\n \"varying vec2 vUv;\",\r\n \"uniform vec2 aspect;\",\r\n\r\n\r\n \"vec2 texel = vec2(1.0 / aspect.x, 1.0 / aspect.y);\",\r\n\r\n \"mat3 G[2];\",\r\n\r\n \"const mat3 g0 = mat3( 1.0, 2.0, 1.0, 0.0, 0.0, 0.0, -1.0, -2.0, -1.0 );\",\r\n \"const mat3 g1 = mat3( 1.0, 0.0, -1.0, 2.0, 0.0, -2.0, 1.0, 0.0, -1.0 );\",\r\n\r\n\r\n \"void main(void)\",\r\n \"{\",\r\n \"mat3 I;\",\r\n \"float cnv[2];\",\r\n\r\n \"G[0] = g0;\",\r\n \"G[1] = g1;\",\r\n\r\n\r\n \"I[0][0] = length(texture2D(tDiffuse, vUv + texel * vec2(-1.0,-1.0) ).rgb);\",\r\n \"I[0][1] = length(texture2D(tDiffuse, vUv + texel * vec2(-1.0,0.0) ).rgb);\",\r\n \"I[0][2] = length(texture2D(tDiffuse, vUv + texel * vec2(-1.0,1.0) ).rgb);\",\r\n \"I[1][0] = length(texture2D(tDiffuse, vUv + texel * vec2(0.0,-1.0) ).rgb);\",\r\n \"I[1][1] = length(texture2D(tDiffuse, vUv + texel * vec2(0.0,0.0) ).rgb);\",\r\n \"I[1][2] = length(texture2D(tDiffuse, vUv + texel * vec2(0.0,1.0) ).rgb);\",\r\n \"I[2][0] = length(texture2D(tDiffuse, vUv + texel * vec2(1.0,-1.0) ).rgb);\",\r\n \"I[2][1] = length(texture2D(tDiffuse, vUv + texel * vec2(1.0,0.0) ).rgb);\",\r\n \"I[2][2] = length(texture2D(tDiffuse, vUv + texel * vec2(1.0,1.0) ).rgb);\",\r\n\r\n\r\n /* calculate the convolution values for all the masks */\r\n \"for (int i=0; i<2; i++) {\",\r\n \"float dp3 = dot(G[i][0], I[0]) + dot(G[i][1], I[1]) + dot(G[i][2], I[2]);\",\r\n \"cnv[i] = dp3 * dp3; \",\r\n \"}\",\r\n\r\n \"float val = sqrt(cnv[0]*cnv[0]+cnv[1]*cnv[1]);\",\r\n\r\n \"if (val < 0.1)\",\r\n \"{\",\r\n \"vec3 sample = texture2D(tDiffuse, vUv + vec2(0.0,0.0)).rgb;\",\r\n \"if (sample.r > 0.1 && sample.g < 1.0)\",\r\n \"{\",\r\n \"gl_FragColor = vec4(0.24, 0.24, 0.24, 1.0);\",\r\n \"}\",\r\n \"else\",\r\n \"{\",\r\n \"discard;\",\r\n \"}\",\r\n //\"gl_FragColor = texture2D(tDiffuse, vUv);\",\r\n \"}\",\r\n \"else\",\r\n \"{\",\r\n \"gl_FragColor = vec4(0.24, 0.24, 0.24, 1.0);\",\r\n \"}\",\r\n \"} \",\r\n\r\n ].join(\"\\n\")\r\n\r\n};\r\n\r\n\r\n/*projector.js*/\r\n\r\n/**\r\n * @author mrdoob / http://mrdoob.com/\r\n * @author supereggbert / http://www.paulbrunt.co.uk/\r\n * @author julianwa / https://github.com/julianwa\r\n */\r\n\r\nTHREE.RenderableObject = function () {\r\n\r\n this.id = 0;\r\n\r\n this.object = null;\r\n this.z = 0;\r\n this.renderOrder = 0;\r\n\r\n};\r\n\r\n//\r\n\r\nTHREE.RenderableFace = function () {\r\n\r\n this.id = 0;\r\n\r\n this.v1 = new THREE.RenderableVertex();\r\n this.v2 = new THREE.RenderableVertex();\r\n this.v3 = new THREE.RenderableVertex();\r\n\r\n this.normalModel = new THREE.Vector3();\r\n\r\n this.vertexNormalsModel = [new THREE.Vector3(), new THREE.Vector3(), new THREE.Vector3()];\r\n this.vertexNormalsLength = 0;\r\n\r\n this.color = new THREE.Color();\r\n this.material = null;\r\n this.uvs = [new THREE.Vector2(), new THREE.Vector2(), new THREE.Vector2()];\r\n\r\n this.z = 0;\r\n this.renderOrder = 0;\r\n\r\n};\r\n\r\n//\r\n\r\nTHREE.RenderableVertex = function () {\r\n\r\n this.position = new THREE.Vector3();\r\n this.positionWorld = new THREE.Vector3();\r\n this.positionScreen = new THREE.Vector4();\r\n\r\n this.visible = true;\r\n\r\n};\r\n\r\nTHREE.RenderableVertex.prototype.copy = function (vertex) {\r\n\r\n this.positionWorld.copy(vertex.positionWorld);\r\n this.positionScreen.copy(vertex.positionScreen);\r\n\r\n};\r\n\r\n//\r\n\r\nTHREE.RenderableLine = function () {\r\n\r\n this.id = 0;\r\n\r\n this.v1 = new THREE.RenderableVertex();\r\n this.v2 = new THREE.RenderableVertex();\r\n\r\n this.vertexColors = [new THREE.Color(), new THREE.Color()];\r\n this.material = null;\r\n\r\n this.z = 0;\r\n this.renderOrder = 0;\r\n\r\n};\r\n\r\n//\r\n\r\nTHREE.RenderableSprite = function () {\r\n\r\n this.id = 0;\r\n\r\n this.object = null;\r\n\r\n this.x = 0;\r\n this.y = 0;\r\n this.z = 0;\r\n\r\n this.rotation = 0;\r\n this.scale = new THREE.Vector2();\r\n\r\n this.material = null;\r\n this.renderOrder = 0;\r\n\r\n};\r\n\r\n//\r\n\r\nTHREE.Projector = function () {\r\n\r\n var _object, _objectCount, _objectPool = [],\r\n _objectPoolLength = 0,\r\n _vertex, _vertexCount, _vertexPool = [],\r\n _vertexPoolLength = 0,\r\n _face, _faceCount, _facePool = [],\r\n _facePoolLength = 0,\r\n _line, _lineCount, _linePool = [],\r\n _linePoolLength = 0,\r\n _sprite, _spriteCount, _spritePool = [],\r\n _spritePoolLength = 0,\r\n\r\n _renderData = { objects: [], lights: [], elements: [] },\r\n\r\n _vector3 = new THREE.Vector3(),\r\n _vector4 = new THREE.Vector4(),\r\n\r\n _clipBox = new THREE.Box3(new THREE.Vector3(-1, -1, -1), new THREE.Vector3(1, 1, 1)),\r\n _boundingBox = new THREE.Box3(),\r\n _points3 = new Array(3),\r\n _points4 = new Array(4),\r\n\r\n _viewMatrix = new THREE.Matrix4(),\r\n _viewProjectionMatrix = new THREE.Matrix4(),\r\n\r\n _modelMatrix,\r\n _modelViewProjectionMatrix = new THREE.Matrix4(),\r\n\r\n _normalMatrix = new THREE.Matrix3(),\r\n\r\n _frustum = new THREE.Frustum(),\r\n\r\n _clippedVertex1PositionScreen = new THREE.Vector4(),\r\n _clippedVertex2PositionScreen = new THREE.Vector4();\r\n\r\n //\r\n\r\n this.projectVector = function (vector, camera) {\r\n\r\n console.warn('THREE.Projector: .projectVector() is now vector.project().');\r\n vector.project(camera);\r\n\r\n };\r\n\r\n this.unprojectVector = function (vector, camera) {\r\n\r\n console.warn('THREE.Projector: .unprojectVector() is now vector.unproject().');\r\n vector.unproject(camera);\r\n\r\n };\r\n\r\n this.pickingRay = function (vector, camera) {\r\n\r\n console.error('THREE.Projector: .pickingRay() is now raycaster.setFromCamera().');\r\n\r\n };\r\n\r\n //\r\n\r\n var RenderList = function () {\r\n\r\n var normals = [];\r\n var uvs = [];\r\n\r\n var object = null;\r\n var material = null;\r\n\r\n var normalMatrix = new THREE.Matrix3();\r\n\r\n function setObject(value) {\r\n\r\n object = value;\r\n material = object.material;\r\n\r\n normalMatrix.getNormalMatrix(object.matrixWorld);\r\n\r\n normals.length = 0;\r\n uvs.length = 0;\r\n\r\n }\r\n\r\n function projectVertex(vertex) {\r\n\r\n var position = vertex.position;\r\n var positionWorld = vertex.positionWorld;\r\n var positionScreen = vertex.positionScreen;\r\n\r\n positionWorld.copy(position).applyMatrix4(_modelMatrix);\r\n positionScreen.copy(positionWorld).applyMatrix4(_viewProjectionMatrix);\r\n\r\n var invW = 1 / positionScreen.w;\r\n\r\n positionScreen.x *= invW;\r\n positionScreen.y *= invW;\r\n positionScreen.z *= invW;\r\n\r\n vertex.visible = positionScreen.x >= -1 && positionScreen.x <= 1 &&\r\n positionScreen.y >= -1 && positionScreen.y <= 1 &&\r\n positionScreen.z >= -1 && positionScreen.z <= 1;\r\n\r\n }\r\n\r\n function pushVertex(x, y, z) {\r\n\r\n _vertex = getNextVertexInPool();\r\n _vertex.position.set(x, y, z);\r\n\r\n projectVertex(_vertex);\r\n\r\n }\r\n\r\n function pushNormal(x, y, z) {\r\n\r\n normals.push(x, y, z);\r\n\r\n }\r\n\r\n function pushUv(x, y) {\r\n\r\n uvs.push(x, y);\r\n\r\n }\r\n\r\n function checkTriangleVisibility(v1, v2, v3) {\r\n\r\n if (v1.visible === true || v2.visible === true || v3.visible === true) return true;\r\n\r\n _points3[0] = v1.positionScreen;\r\n _points3[1] = v2.positionScreen;\r\n _points3[2] = v3.positionScreen;\r\n\r\n return _clipBox.intersectsBox(_boundingBox.setFromPoints(_points3));\r\n\r\n }\r\n\r\n function checkBackfaceCulling(v1, v2, v3) {\r\n\r\n return ((v3.positionScreen.x - v1.positionScreen.x) *\r\n (v2.positionScreen.y - v1.positionScreen.y) -\r\n (v3.positionScreen.y - v1.positionScreen.y) *\r\n (v2.positionScreen.x - v1.positionScreen.x)) < 0;\r\n\r\n }\r\n\r\n function pushLine(a, b) {\r\n\r\n var v1 = _vertexPool[a];\r\n var v2 = _vertexPool[b];\r\n\r\n _line = getNextLineInPool();\r\n\r\n _line.id = object.id;\r\n _line.v1.copy(v1);\r\n _line.v2.copy(v2);\r\n _line.z = (v1.positionScreen.z + v2.positionScreen.z) / 2;\r\n _line.renderOrder = object.renderOrder;\r\n\r\n _line.material = object.material;\r\n\r\n _renderData.elements.push(_line);\r\n\r\n }\r\n\r\n function pushTriangle(a, b, c) {\r\n\r\n var v1 = _vertexPool[a];\r\n var v2 = _vertexPool[b];\r\n var v3 = _vertexPool[c];\r\n\r\n if (checkTriangleVisibility(v1, v2, v3) === false) return;\r\n\r\n if (material.side === THREE.DoubleSide || checkBackfaceCulling(v1, v2, v3) === true) {\r\n\r\n _face = getNextFaceInPool();\r\n\r\n _face.id = object.id;\r\n _face.v1.copy(v1);\r\n _face.v2.copy(v2);\r\n _face.v3.copy(v3);\r\n _face.z = (v1.positionScreen.z + v2.positionScreen.z + v3.positionScreen.z) / 3;\r\n _face.renderOrder = object.renderOrder;\r\n\r\n // use first vertex normal as face normal\r\n\r\n _face.normalModel.fromArray(normals, a * 3);\r\n _face.normalModel.applyMatrix3(normalMatrix).normalize();\r\n\r\n for (var i = 0; i < 3; i++) {\r\n\r\n var normal = _face.vertexNormalsModel[i];\r\n normal.fromArray(normals, arguments[i] * 3);\r\n normal.applyMatrix3(normalMatrix).normalize();\r\n\r\n var uv = _face.uvs[i];\r\n uv.fromArray(uvs, arguments[i] * 2);\r\n\r\n }\r\n\r\n _face.vertexNormalsLength = 3;\r\n\r\n _face.material = object.material;\r\n\r\n _renderData.elements.push(_face);\r\n\r\n }\r\n\r\n }\r\n\r\n return {\r\n setObject: setObject,\r\n projectVertex: projectVertex,\r\n checkTriangleVisibility: checkTriangleVisibility,\r\n checkBackfaceCulling: checkBackfaceCulling,\r\n pushVertex: pushVertex,\r\n pushNormal: pushNormal,\r\n pushUv: pushUv,\r\n pushLine: pushLine,\r\n pushTriangle: pushTriangle\r\n }\r\n\r\n };\r\n\r\n var renderList = new RenderList();\r\n\r\n this.projectScene = function (scene, camera, sortObjects, sortElements) {\r\n\r\n _faceCount = 0;\r\n _lineCount = 0;\r\n _spriteCount = 0;\r\n\r\n _renderData.elements.length = 0;\r\n\r\n if (scene.autoUpdate === true) scene.updateMatrixWorld();\r\n if (camera.parent === null) camera.updateMatrixWorld();\r\n\r\n _viewMatrix.copy(camera.matrixWorldInverse.getInverse(camera.matrixWorld));\r\n _viewProjectionMatrix.multiplyMatrices(camera.projectionMatrix, _viewMatrix);\r\n\r\n _frustum.setFromMatrix(_viewProjectionMatrix);\r\n\r\n //\r\n\r\n _objectCount = 0;\r\n\r\n _renderData.objects.length = 0;\r\n _renderData.lights.length = 0;\r\n\r\n function addObject(object) {\r\n\r\n _object = getNextObjectInPool();\r\n _object.id = object.id;\r\n _object.object = object;\r\n\r\n _vector3.setFromMatrixPosition(object.matrixWorld);\r\n _vector3.applyProjection(_viewProjectionMatrix);\r\n _object.z = _vector3.z;\r\n _object.renderOrder = object.renderOrder;\r\n\r\n _renderData.objects.push(_object);\r\n\r\n }\r\n\r\n scene.traverseVisible(function (object) {\r\n\r\n if (object instanceof THREE.Light) {\r\n\r\n _renderData.lights.push(object);\r\n\r\n } else if (object instanceof THREE.Mesh || object instanceof THREE.Line) {\r\n\r\n if (object.material.visible === false) return;\r\n if (object.frustumCulled === true && _frustum.intersectsObject(object) === false) return;\r\n\r\n addObject(object);\r\n\r\n } else if (object instanceof THREE.Sprite) {\r\n\r\n if (object.material.visible === false) return;\r\n if (object.frustumCulled === true && _frustum.intersectsSprite(object) === false) return;\r\n\r\n addObject(object);\r\n\r\n }\r\n\r\n });\r\n\r\n if (sortObjects === true) {\r\n\r\n _renderData.objects.sort(painterSort);\r\n\r\n }\r\n\r\n //\r\n\r\n for (var o = 0, ol = _renderData.objects.length; o < ol; o++) {\r\n\r\n var object = _renderData.objects[o].object;\r\n var geometry = object.geometry;\r\n\r\n renderList.setObject(object);\r\n\r\n _modelMatrix = object.matrixWorld;\r\n\r\n _vertexCount = 0;\r\n\r\n if (object instanceof THREE.Mesh) {\r\n\r\n if (geometry instanceof THREE.BufferGeometry) {\r\n\r\n var attributes = geometry.attributes;\r\n var groups = geometry.groups;\r\n\r\n if (attributes.position === undefined) continue;\r\n\r\n var positions = attributes.position.array;\r\n\r\n for (var i = 0, l = positions.length; i < l; i += 3) {\r\n\r\n renderList.pushVertex(positions[i], positions[i + 1], positions[i + 2]);\r\n\r\n }\r\n\r\n if (attributes.normal !== undefined) {\r\n\r\n var normals = attributes.normal.array;\r\n\r\n for (var i = 0, l = normals.length; i < l; i += 3) {\r\n\r\n renderList.pushNormal(normals[i], normals[i + 1], normals[i + 2]);\r\n\r\n }\r\n\r\n }\r\n\r\n if (attributes.uv !== undefined) {\r\n\r\n var uvs = attributes.uv.array;\r\n\r\n for (var i = 0, l = uvs.length; i < l; i += 2) {\r\n\r\n renderList.pushUv(uvs[i], uvs[i + 1]);\r\n\r\n }\r\n\r\n }\r\n\r\n if (geometry.index !== null) {\r\n\r\n var indices = geometry.index.array;\r\n\r\n if (groups.length > 0) {\r\n\r\n for (var o = 0; o < groups.length; o++) {\r\n\r\n var group = groups[o];\r\n\r\n for (var i = group.start, l = group.start + group.count; i < l; i += 3) {\r\n\r\n renderList.pushTriangle(indices[i], indices[i + 1], indices[i + 2]);\r\n\r\n }\r\n\r\n }\r\n\r\n } else {\r\n\r\n for (var i = 0, l = indices.length; i < l; i += 3) {\r\n\r\n renderList.pushTriangle(indices[i], indices[i + 1], indices[i + 2]);\r\n\r\n }\r\n\r\n }\r\n\r\n } else {\r\n\r\n for (var i = 0, l = positions.length / 3; i < l; i += 3) {\r\n\r\n renderList.pushTriangle(i, i + 1, i + 2);\r\n\r\n }\r\n\r\n }\r\n\r\n } else if (geometry instanceof THREE.Geometry) {\r\n\r\n var vertices = geometry.vertices;\r\n var faces = geometry.faces;\r\n var faceVertexUvs = geometry.faceVertexUvs[0];\r\n\r\n _normalMatrix.getNormalMatrix(_modelMatrix);\r\n\r\n var material = object.material;\r\n\r\n var isFaceMaterial = material instanceof THREE.MultiMaterial;\r\n var objectMaterials = isFaceMaterial === true ? object.material : null;\r\n\r\n for (var v = 0, vl = vertices.length; v < vl; v++) {\r\n\r\n var vertex = vertices[v];\r\n\r\n _vector3.copy(vertex);\r\n\r\n if (material.morphTargets === true) {\r\n\r\n var morphTargets = geometry.morphTargets;\r\n var morphInfluences = object.morphTargetInfluences;\r\n\r\n for (var t = 0, tl = morphTargets.length; t < tl; t++) {\r\n\r\n var influence = morphInfluences[t];\r\n\r\n if (influence === 0) continue;\r\n\r\n var target = morphTargets[t];\r\n var targetVertex = target.vertices[v];\r\n\r\n _vector3.x += (targetVertex.x - vertex.x) * influence;\r\n _vector3.y += (targetVertex.y - vertex.y) * influence;\r\n _vector3.z += (targetVertex.z - vertex.z) * influence;\r\n\r\n }\r\n\r\n }\r\n\r\n renderList.pushVertex(_vector3.x, _vector3.y, _vector3.z);\r\n\r\n }\r\n\r\n for (var f = 0, fl = faces.length; f < fl; f++) {\r\n\r\n var face = faces[f];\r\n\r\n material = isFaceMaterial === true ?\r\n objectMaterials.materials[face.materialIndex] :\r\n object.material;\r\n\r\n if (material === undefined) continue;\r\n\r\n var side = material.side;\r\n\r\n var v1 = _vertexPool[face.a];\r\n var v2 = _vertexPool[face.b];\r\n var v3 = _vertexPool[face.c];\r\n\r\n if (renderList.checkTriangleVisibility(v1, v2, v3) === false) continue;\r\n\r\n var visible = renderList.checkBackfaceCulling(v1, v2, v3);\r\n\r\n if (side !== THREE.DoubleSide) {\r\n\r\n if (side === THREE.FrontSide && visible === false) continue;\r\n if (side === THREE.BackSide && visible === true) continue;\r\n\r\n }\r\n\r\n _face = getNextFaceInPool();\r\n\r\n _face.id = object.id;\r\n _face.v1.copy(v1);\r\n _face.v2.copy(v2);\r\n _face.v3.copy(v3);\r\n\r\n _face.normalModel.copy(face.normal);\r\n\r\n if (visible === false && (side === THREE.BackSide || side === THREE.DoubleSide)) {\r\n\r\n _face.normalModel.negate();\r\n\r\n }\r\n\r\n _face.normalModel.applyMatrix3(_normalMatrix).normalize();\r\n\r\n var faceVertexNormals = face.vertexNormals;\r\n\r\n for (var n = 0, nl = Math.min(faceVertexNormals.length, 3); n < nl; n++) {\r\n\r\n var normalModel = _face.vertexNormalsModel[n];\r\n normalModel.copy(faceVertexNormals[n]);\r\n\r\n if (visible === false && (side === THREE.BackSide || side === THREE.DoubleSide)) {\r\n\r\n normalModel.negate();\r\n\r\n }\r\n\r\n normalModel.applyMatrix3(_normalMatrix).normalize();\r\n\r\n }\r\n\r\n _face.vertexNormalsLength = faceVertexNormals.length;\r\n\r\n var vertexUvs = faceVertexUvs[f];\r\n\r\n if (vertexUvs !== undefined) {\r\n\r\n for (var u = 0; u < 3; u++) {\r\n\r\n _face.uvs[u].copy(vertexUvs[u]);\r\n\r\n }\r\n\r\n }\r\n\r\n _face.color = face.color;\r\n _face.material = material;\r\n\r\n _face.z = (v1.positionScreen.z + v2.positionScreen.z + v3.positionScreen.z) / 3;\r\n _face.renderOrder = object.renderOrder;\r\n\r\n _renderData.elements.push(_face);\r\n\r\n }\r\n\r\n }\r\n\r\n } else if (object instanceof THREE.Line) {\r\n\r\n if (geometry instanceof THREE.BufferGeometry) {\r\n\r\n var attributes = geometry.attributes;\r\n\r\n if (attributes.position !== undefined) {\r\n\r\n var positions = attributes.position.array;\r\n\r\n for (var i = 0, l = positions.length; i < l; i += 3) {\r\n\r\n renderList.pushVertex(positions[i], positions[i + 1], positions[i + 2]);\r\n\r\n }\r\n\r\n if (geometry.index !== null) {\r\n\r\n var indices = geometry.index.array;\r\n\r\n for (var i = 0, l = indices.length; i < l; i += 2) {\r\n\r\n renderList.pushLine(indices[i], indices[i + 1]);\r\n\r\n }\r\n\r\n } else {\r\n\r\n var step = object instanceof THREE.LineSegments ? 2 : 1;\r\n\r\n for (var i = 0, l = (positions.length / 3) - 1; i < l; i += step) {\r\n\r\n renderList.pushLine(i, i + 1);\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n } else if (geometry instanceof THREE.Geometry) {\r\n\r\n _modelViewProjectionMatrix.multiplyMatrices(_viewProjectionMatrix, _modelMatrix);\r\n\r\n var vertices = object.geometry.vertices;\r\n\r\n if (vertices.length === 0) continue;\r\n\r\n v1 = getNextVertexInPool();\r\n v1.positionScreen.copy(vertices[0]).applyMatrix4(_modelViewProjectionMatrix);\r\n\r\n var step = object instanceof THREE.LineSegments ? 2 : 1;\r\n\r\n for (var v = 1, vl = vertices.length; v < vl; v++) {\r\n\r\n v1 = getNextVertexInPool();\r\n v1.positionScreen.copy(vertices[v]).applyMatrix4(_modelViewProjectionMatrix);\r\n\r\n if ((v + 1) % step > 0) continue;\r\n\r\n v2 = _vertexPool[_vertexCount - 2];\r\n\r\n _clippedVertex1PositionScreen.copy(v1.positionScreen);\r\n _clippedVertex2PositionScreen.copy(v2.positionScreen);\r\n\r\n if (clipLine(_clippedVertex1PositionScreen, _clippedVertex2PositionScreen) === true) {\r\n\r\n // Perform the perspective divide\r\n _clippedVertex1PositionScreen.multiplyScalar(1 / _clippedVertex1PositionScreen.w);\r\n _clippedVertex2PositionScreen.multiplyScalar(1 / _clippedVertex2PositionScreen.w);\r\n\r\n _line = getNextLineInPool();\r\n\r\n _line.id = object.id;\r\n _line.v1.positionScreen.copy(_clippedVertex1PositionScreen);\r\n _line.v2.positionScreen.copy(_clippedVertex2PositionScreen);\r\n\r\n _line.z = Math.max(_clippedVertex1PositionScreen.z, _clippedVertex2PositionScreen.z);\r\n _line.renderOrder = object.renderOrder;\r\n\r\n _line.material = object.material;\r\n\r\n if (object.material.vertexColors === THREE.VertexColors) {\r\n\r\n _line.vertexColors[0].copy(object.geometry.colors[v]);\r\n _line.vertexColors[1].copy(object.geometry.colors[v - 1]);\r\n\r\n }\r\n\r\n _renderData.elements.push(_line);\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n } else if (object instanceof THREE.Sprite) {\r\n\r\n _vector4.set(_modelMatrix.elements[12], _modelMatrix.elements[13], _modelMatrix.elements[14], 1);\r\n _vector4.applyMatrix4(_viewProjectionMatrix);\r\n\r\n var invW = 1 / _vector4.w;\r\n\r\n _vector4.z *= invW;\r\n\r\n if (_vector4.z >= -1 && _vector4.z <= 1) {\r\n\r\n _sprite = getNextSpriteInPool();\r\n _sprite.id = object.id;\r\n _sprite.x = _vector4.x * invW;\r\n _sprite.y = _vector4.y * invW;\r\n _sprite.z = _vector4.z;\r\n _sprite.renderOrder = object.renderOrder;\r\n _sprite.object = object;\r\n\r\n _sprite.rotation = object.rotation;\r\n\r\n _sprite.scale.x = object.scale.x * Math.abs(_sprite.x - (_vector4.x + camera.projectionMatrix.elements[0]) / (_vector4.w + camera.projectionMatrix.elements[12]));\r\n _sprite.scale.y = object.scale.y * Math.abs(_sprite.y - (_vector4.y + camera.projectionMatrix.elements[5]) / (_vector4.w + camera.projectionMatrix.elements[13]));\r\n\r\n _sprite.material = object.material;\r\n\r\n _renderData.elements.push(_sprite);\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n if (sortElements === true) {\r\n\r\n _renderData.elements.sort(painterSort);\r\n\r\n }\r\n\r\n return _renderData;\r\n\r\n };\r\n\r\n // Pools\r\n\r\n function getNextObjectInPool() {\r\n\r\n if (_objectCount === _objectPoolLength) {\r\n\r\n var object = new THREE.RenderableObject();\r\n _objectPool.push(object);\r\n _objectPoolLength++;\r\n _objectCount++;\r\n return object;\r\n\r\n }\r\n\r\n return _objectPool[_objectCount++];\r\n\r\n }\r\n\r\n function getNextVertexInPool() {\r\n\r\n if (_vertexCount === _vertexPoolLength) {\r\n\r\n var vertex = new THREE.RenderableVertex();\r\n _vertexPool.push(vertex);\r\n _vertexPoolLength++;\r\n _vertexCount++;\r\n return vertex;\r\n\r\n }\r\n\r\n return _vertexPool[_vertexCount++];\r\n\r\n }\r\n\r\n function getNextFaceInPool() {\r\n\r\n if (_faceCount === _facePoolLength) {\r\n\r\n var face = new THREE.RenderableFace();\r\n _facePool.push(face);\r\n _facePoolLength++;\r\n _faceCount++;\r\n return face;\r\n\r\n }\r\n\r\n return _facePool[_faceCount++];\r\n\r\n\r\n }\r\n\r\n function getNextLineInPool() {\r\n\r\n if (_lineCount === _linePoolLength) {\r\n\r\n var line = new THREE.RenderableLine();\r\n _linePool.push(line);\r\n _linePoolLength++;\r\n _lineCount++;\r\n return line;\r\n\r\n }\r\n\r\n return _linePool[_lineCount++];\r\n\r\n }\r\n\r\n function getNextSpriteInPool() {\r\n\r\n if (_spriteCount === _spritePoolLength) {\r\n\r\n var sprite = new THREE.RenderableSprite();\r\n _spritePool.push(sprite);\r\n _spritePoolLength++;\r\n _spriteCount++;\r\n return sprite;\r\n\r\n }\r\n\r\n return _spritePool[_spriteCount++];\r\n\r\n }\r\n\r\n //\r\n\r\n function painterSort(a, b) {\r\n\r\n if (a.renderOrder !== b.renderOrder) {\r\n\r\n return a.renderOrder - b.renderOrder;\r\n\r\n } else if (a.z !== b.z) {\r\n\r\n return b.z - a.z;\r\n\r\n } else if (a.id !== b.id) {\r\n\r\n return a.id - b.id;\r\n\r\n } else {\r\n\r\n return 0;\r\n\r\n }\r\n\r\n }\r\n\r\n function clipLine(s1, s2) {\r\n\r\n var alpha1 = 0,\r\n alpha2 = 1,\r\n\r\n // Calculate the boundary coordinate of each vertex for the near and far clip planes,\r\n // Z = -1 and Z = +1, respectively.\r\n bc1near = s1.z + s1.w,\r\n bc2near = s2.z + s2.w,\r\n bc1far = -s1.z + s1.w,\r\n bc2far = -s2.z + s2.w;\r\n\r\n if (bc1near >= 0 && bc2near >= 0 && bc1far >= 0 && bc2far >= 0) {\r\n\r\n // Both vertices lie entirely within all clip planes.\r\n return true;\r\n\r\n } else if ((bc1near < 0 && bc2near < 0) || (bc1far < 0 && bc2far < 0)) {\r\n\r\n // Both vertices lie entirely outside one of the clip planes.\r\n return false;\r\n\r\n } else {\r\n\r\n // The line segment spans at least one clip plane.\r\n\r\n if (bc1near < 0) {\r\n\r\n // v1 lies outside the near plane, v2 inside\r\n alpha1 = Math.max(alpha1, bc1near / (bc1near - bc2near));\r\n\r\n } else if (bc2near < 0) {\r\n\r\n // v2 lies outside the near plane, v1 inside\r\n alpha2 = Math.min(alpha2, bc1near / (bc1near - bc2near));\r\n\r\n }\r\n\r\n if (bc1far < 0) {\r\n\r\n // v1 lies outside the far plane, v2 inside\r\n alpha1 = Math.max(alpha1, bc1far / (bc1far - bc2far));\r\n\r\n } else if (bc2far < 0) {\r\n\r\n // v2 lies outside the far plane, v2 inside\r\n alpha2 = Math.min(alpha2, bc1far / (bc1far - bc2far));\r\n\r\n }\r\n\r\n if (alpha2 < alpha1) {\r\n\r\n // The line segment spans two boundaries, but is outside both of them.\r\n // (This can't happen when we're only clipping against just near/far but good\r\n // to leave the check here for future usage if other clip planes are added.)\r\n return false;\r\n\r\n } else {\r\n\r\n // Update the s1 and s2 vertices to match the clipped line segment.\r\n s1.lerp(s2, alpha1);\r\n s2.lerp(s1, 1 - alpha2);\r\n\r\n return true;\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n};\r\n\r\nwindow.cds = cds;","/**\r\n * Tween.js - Licensed under the MIT license\r\n * https://github.com/tweenjs/tween.js\r\n * ----------------------------------------------\r\n *\r\n * See https://github.com/tweenjs/tween.js/graphs/contributors for the full list of contributors.\r\n * Thank you all, you're awesome!\r\n */\r\n\r\nvar TWEEN = TWEEN || (function () {\r\n\r\n\tvar _tweens = [];\r\n\r\n\treturn {\r\n\r\n\t\tgetAll: function () {\r\n\r\n\t\t\treturn _tweens;\r\n\r\n\t\t},\r\n\r\n\t\tremoveAll: function () {\r\n\r\n\t\t\t_tweens = [];\r\n\r\n\t\t},\r\n\r\n\t\tadd: function (tween) {\r\n\r\n\t\t\t_tweens.push(tween);\r\n\r\n\t\t},\r\n\r\n\t\tremove: function (tween) {\r\n\r\n\t\t\tvar i = _tweens.indexOf(tween);\r\n\r\n\t\t\tif (i !== -1) {\r\n\t\t\t\t_tweens.splice(i, 1);\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\r\n\t\tupdate: function (time, preserve) {\r\n\r\n\t\t\tif (_tweens.length === 0) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tvar i = 0;\r\n\r\n\t\t\ttime = time !== undefined ? time : TWEEN.now();\r\n\r\n\t\t\twhile (i < _tweens.length) {\r\n\r\n\t\t\t\tif (_tweens[i].update(time) || preserve) {\r\n\t\t\t\t\ti++;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t_tweens.splice(i, 1);\r\n\t\t\t\t\t//if (_tweens.length === 0) {\r\n\r\n\t\t\t\t\t//Prince for annotations...\r\n\t\t\t\t\t//if (cds.studio.hasOwnProperty('annotation') && cds.studio.annotation.display === true && cds.studio.annotation.hasOwnProperty('annotationCoordinateArray') && cds.studio.annotation.annotationCoordinateArray.length > 0)\r\n\t\t\t\t\t//{\r\n\t\t\t\t\t// if (cds.cadViewer.explode) {\r\n\t\t\t\t\t// cds.studio.annotation.showAllAnnotations();\r\n\t\t\t\t\t// } else {\r\n\t\t\t\t\t// cds.studio.annotation.showAllAnnotations();\r\n\t\t\t\t\t// }\r\n\t\t\t\t\t//}\r\n\t\t\t\t\t//}\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\r\n\t\t},\r\n\t};\r\n\r\n})();\r\n\r\n\r\n// Include a performance.now polyfill.\r\n// In node.js, use process.hrtime.\r\nif (typeof (window) === 'undefined' && typeof (process) !== 'undefined') {\r\n\tTWEEN.now = function () {\r\n\t\tvar time = process.hrtime();\r\n\r\n\t\t// Convert [seconds, nanoseconds] to milliseconds.\r\n\t\treturn time[0] * 1000 + time[1] / 1000000;\r\n\t};\r\n}\r\n// In a browser, use window.performance.now if it is available.\r\nelse if (typeof (window) !== 'undefined' &&\r\n\twindow.performance !== undefined &&\r\n\twindow.performance.now !== undefined) {\r\n\t// This must be bound, because directly assigning this function\r\n\t// leads to an invocation exception in Chrome.\r\n\tTWEEN.now = window.performance.now.bind(window.performance);\r\n}\r\n// Use Date.now if it is available.\r\nelse if (Date.now !== undefined) {\r\n\tTWEEN.now = Date.now;\r\n}\r\n// Otherwise, use 'new Date().getTime()'.\r\nelse {\r\n\tTWEEN.now = function () {\r\n\t\treturn new Date().getTime();\r\n\t};\r\n}\r\n\r\n\r\nTWEEN.Tween = function (object) {\r\n\r\n\tvar _object = object;\r\n\tvar _valuesStart = {};\r\n\tvar _valuesEnd = {};\r\n\tvar _valuesStartRepeat = {};\r\n\tvar _duration = 1000;\r\n\tvar _repeat = 0;\r\n\tvar _repeatDelayTime;\r\n\tvar _yoyo = false;\r\n\tvar _isPlaying = false;\r\n\tvar _reversed = false;\r\n\tvar _delayTime = 0;\r\n\tvar _startTime = null;\r\n\tvar _easingFunction = TWEEN.Easing.Linear.None;\r\n\tvar _interpolationFunction = TWEEN.Interpolation.Linear;\r\n\tvar _chainedTweens = [];\r\n\tvar _onStartCallback = null;\r\n\tvar _onStartCallbackFired = false;\r\n\tvar _onUpdateCallback = null;\r\n\tvar _onCompleteCallback = null;\r\n\tvar _onStopCallback = null;\r\n\t//var _name = \"\"; //prince added\r\n\tvar _paused = false;\r\n\tvar _pauseStart = null;\r\n\r\n\tthis.pause = function () {\r\n\t\tif (_paused)\r\n\t\t\treturn;\r\n\r\n\t\t_paused = true;\r\n\t\t_pauseStart = new Date().getTime();\r\n\r\n\t\tTWEEN.remove(this);\r\n\r\n\t};\r\n\r\n\tthis.play = function () {\r\n\t\tif (!_paused)\r\n\t\t\treturn;\r\n\r\n\t\t_paused = false;\r\n\r\n\t\tnow = new Date().getTime();\r\n\r\n\t\t_startTime += now - _pauseStart;\r\n\r\n\t\tTWEEN.add(this);\r\n\t};\r\n\r\n\tthis.to = function (properties, duration) {\r\n\r\n\t\t_valuesEnd = properties;\r\n\r\n\t\tif (duration !== undefined) {\r\n\t\t\t_duration = duration;\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t};\r\n\r\n\t//prince added\r\n\t//this.name = function (name) {\r\n\t// _name = name;\r\n\t// return this;\r\n\t//};\r\n\r\n\t//this.getName = function () {\r\n\t// return _name;\r\n\t//};\r\n\r\n\tthis.start = function (time) {\r\n\r\n\t\tTWEEN.add(this);\r\n\r\n\t\t_isPlaying = true;\r\n\r\n\t\t_onStartCallbackFired = false;\r\n\r\n\t\t_startTime = time !== undefined ? time : TWEEN.now();\r\n\t\t_startTime += _delayTime;\r\n\r\n\t\tfor (var property in _valuesEnd) {\r\n\r\n\t\t\t// Check if an Array was provided as property value\r\n\t\t\tif (_valuesEnd[property] instanceof Array) {\r\n\r\n\t\t\t\tif (_valuesEnd[property].length === 0) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Create a local copy of the Array with the start value at the front\r\n\t\t\t\t_valuesEnd[property] = [_object[property]].concat(_valuesEnd[property]);\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// If `to()` specifies a property that doesn't exist in the source object,\r\n\t\t\t// we should not set that property in the object\r\n\t\t\tif (_object[property] === undefined) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\t// Save the starting value.\r\n\t\t\t_valuesStart[property] = _object[property];\r\n\r\n\t\t\tif ((_valuesStart[property] instanceof Array) === false) {\r\n\t\t\t\t_valuesStart[property] *= 1.0; // Ensures we're using numbers, not strings\r\n\t\t\t}\r\n\r\n\t\t\t_valuesStartRepeat[property] = _valuesStart[property] || 0;\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t};\r\n\r\n\tthis.stop = function () {\r\n\r\n\t\tif (!_isPlaying) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tTWEEN.remove(this);\r\n\t\t_isPlaying = false;\r\n\r\n\t\tif (_onStopCallback !== null) {\r\n\t\t\t_onStopCallback.call(_object, _object);\r\n\t\t}\r\n\r\n\t\tthis.stopChainedTweens();\r\n\t\treturn this;\r\n\r\n\t};\r\n\r\n\tthis.end = function () {\r\n\r\n\t\tthis.update(_startTime + _duration);\r\n\t\treturn this;\r\n\r\n\t};\r\n\r\n\tthis.stopChainedTweens = function () {\r\n\r\n\t\tfor (var i = 0, numChainedTweens = _chainedTweens.length; i < numChainedTweens; i++) {\r\n\t\t\t_chainedTweens[i].stop();\r\n\t\t}\r\n\r\n\t};\r\n\r\n\tthis.delay = function (amount) {\r\n\r\n\t\t_delayTime = amount;\r\n\t\treturn this;\r\n\r\n\t};\r\n\r\n\tthis.repeat = function (times) {\r\n\r\n\t\t_repeat = times;\r\n\t\treturn this;\r\n\r\n\t};\r\n\r\n\tthis.repeatDelay = function (amount) {\r\n\r\n\t\t_repeatDelayTime = amount;\r\n\t\treturn this;\r\n\r\n\t};\r\n\r\n\tthis.yoyo = function (yoyo) {\r\n\r\n\t\t_yoyo = yoyo;\r\n\t\treturn this;\r\n\r\n\t};\r\n\r\n\r\n\tthis.easing = function (easing) {\r\n\r\n\t\t_easingFunction = easing;\r\n\t\treturn this;\r\n\r\n\t};\r\n\r\n\tthis.interpolation = function (interpolation) {\r\n\r\n\t\t_interpolationFunction = interpolation;\r\n\t\treturn this;\r\n\r\n\t};\r\n\r\n\tthis.chain = function () {\r\n\r\n\t\t_chainedTweens = arguments;\r\n\t\treturn this;\r\n\r\n\t};\r\n\r\n\tthis.onStart = function (callback) {\r\n\r\n\t\t_onStartCallback = callback;\r\n\t\treturn this;\r\n\r\n\t};\r\n\r\n\tthis.onUpdate = function (callback) {\r\n\r\n\t\t_onUpdateCallback = callback;\r\n\t\treturn this;\r\n\r\n\t};\r\n\r\n\tthis.onComplete = function (callback) {\r\n\r\n\t\t_onCompleteCallback = callback;\r\n\t\treturn this;\r\n\r\n\t};\r\n\r\n\tthis.onStop = function (callback) {\r\n\r\n\t\t_onStopCallback = callback;\r\n\t\treturn this;\r\n\r\n\t};\r\n\r\n\tthis.get = function () {\r\n\t\treturn _object;\r\n\t};\r\n\r\n\tthis.update = function (time) {\r\n\r\n\t\tvar property;\r\n\t\tvar elapsed;\r\n\t\tvar value;\r\n\r\n\t\tif (time < _startTime) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif (_onStartCallbackFired === false) {\r\n\r\n\t\t\tif (_onStartCallback !== null) {\r\n\t\t\t\t_onStartCallback.call(_object, _object);\r\n\t\t\t}\r\n\r\n\t\t\t_onStartCallbackFired = true;\r\n\t\t}\r\n\r\n\t\telapsed = (time - _startTime) / _duration;\r\n\t\telapsed = elapsed > 1 ? 1 : elapsed;\r\n\r\n\t\tvalue = _easingFunction(elapsed);\r\n\r\n\t\tfor (property in _valuesEnd) {\r\n\r\n\t\t\t// Don't update properties that do not exist in the source object\r\n\t\t\tif (_valuesStart[property] === undefined) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tvar start = _valuesStart[property] || 0;\r\n\t\t\tvar end = _valuesEnd[property];\r\n\r\n\t\t\tif (end instanceof Array) {\r\n\r\n\t\t\t\t_object[property] = _interpolationFunction(end, value);\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\t// Parses relative end values with start as base (e.g.: +10, -3)\r\n\t\t\t\tif (typeof (end) === 'string') {\r\n\r\n\t\t\t\t\tif (end.charAt(0) === '+' || end.charAt(0) === '-') {\r\n\t\t\t\t\t\tend = start + parseFloat(end);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tend = parseFloat(end);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Protect against non numeric properties.\r\n\t\t\t\tif (typeof (end) === 'number') {\r\n\t\t\t\t\t_object[property] = start + (end - start) * value;\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif (_onUpdateCallback !== null) {\r\n\t\t\t_onUpdateCallback.call(_object, value);\r\n\t\t}\r\n\r\n\t\tif (elapsed === 1) {\r\n\r\n\t\t\tif (_repeat > 0) {\r\n\r\n\t\t\t\tif (isFinite(_repeat)) {\r\n\t\t\t\t\t_repeat--;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Reassign starting values, restart by making startTime = now\r\n\t\t\t\tfor (property in _valuesStartRepeat) {\r\n\r\n\t\t\t\t\tif (typeof (_valuesEnd[property]) === 'string') {\r\n\t\t\t\t\t\t_valuesStartRepeat[property] = _valuesStartRepeat[property] + parseFloat(_valuesEnd[property]);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (_yoyo) {\r\n\t\t\t\t\t\tvar tmp = _valuesStartRepeat[property];\r\n\r\n\t\t\t\t\t\t_valuesStartRepeat[property] = _valuesEnd[property];\r\n\t\t\t\t\t\t_valuesEnd[property] = tmp;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t_valuesStart[property] = _valuesStartRepeat[property];\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (_yoyo) {\r\n\t\t\t\t\t_reversed = !_reversed;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (_repeatDelayTime !== undefined) {\r\n\t\t\t\t\t_startTime = time + _repeatDelayTime;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t_startTime = time + _delayTime;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn true;\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tif (_onCompleteCallback !== null) {\r\n\r\n\t\t\t\t\t_onCompleteCallback.call(_object, _object);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor (var i = 0, numChainedTweens = _chainedTweens.length; i < numChainedTweens; i++) {\r\n\t\t\t\t\t// Make the chained tweens start exactly at the time they should,\r\n\t\t\t\t\t// even if the `update()` method was called way past the duration of the tween\r\n\t\t\t\t\t_chainedTweens[i].start(_startTime + _duration);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn false;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\r\n\t};\r\n\r\n};\r\n\r\n\r\nTWEEN.Easing = {\r\n\r\n\tLinear: {\r\n\r\n\t\tNone: function (k) {\r\n\r\n\t\t\treturn k;\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tQuadratic: {\r\n\r\n\t\tIn: function (k) {\r\n\r\n\t\t\treturn k * k;\r\n\r\n\t\t},\r\n\r\n\t\tOut: function (k) {\r\n\r\n\t\t\treturn k * (2 - k);\r\n\r\n\t\t},\r\n\r\n\t\tInOut: function (k) {\r\n\r\n\t\t\tif ((k *= 2) < 1) {\r\n\t\t\t\treturn 0.5 * k * k;\r\n\t\t\t}\r\n\r\n\t\t\treturn - 0.5 * (--k * (k - 2) - 1);\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tCubic: {\r\n\r\n\t\tIn: function (k) {\r\n\r\n\t\t\treturn k * k * k;\r\n\r\n\t\t},\r\n\r\n\t\tOut: function (k) {\r\n\r\n\t\t\treturn --k * k * k + 1;\r\n\r\n\t\t},\r\n\r\n\t\tInOut: function (k) {\r\n\r\n\t\t\tif ((k *= 2) < 1) {\r\n\t\t\t\treturn 0.5 * k * k * k;\r\n\t\t\t}\r\n\r\n\t\t\treturn 0.5 * ((k -= 2) * k * k + 2);\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tQuartic: {\r\n\r\n\t\tIn: function (k) {\r\n\r\n\t\t\treturn k * k * k * k;\r\n\r\n\t\t},\r\n\r\n\t\tOut: function (k) {\r\n\r\n\t\t\treturn 1 - (--k * k * k * k);\r\n\r\n\t\t},\r\n\r\n\t\tInOut: function (k) {\r\n\r\n\t\t\tif ((k *= 2) < 1) {\r\n\t\t\t\treturn 0.5 * k * k * k * k;\r\n\t\t\t}\r\n\r\n\t\t\treturn - 0.5 * ((k -= 2) * k * k * k - 2);\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tQuintic: {\r\n\r\n\t\tIn: function (k) {\r\n\r\n\t\t\treturn k * k * k * k * k;\r\n\r\n\t\t},\r\n\r\n\t\tOut: function (k) {\r\n\r\n\t\t\treturn --k * k * k * k * k + 1;\r\n\r\n\t\t},\r\n\r\n\t\tInOut: function (k) {\r\n\r\n\t\t\tif ((k *= 2) < 1) {\r\n\t\t\t\treturn 0.5 * k * k * k * k * k;\r\n\t\t\t}\r\n\r\n\t\t\treturn 0.5 * ((k -= 2) * k * k * k * k + 2);\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tSinusoidal: {\r\n\r\n\t\tIn: function (k) {\r\n\r\n\t\t\treturn 1 - Math.cos(k * Math.PI / 2);\r\n\r\n\t\t},\r\n\r\n\t\tOut: function (k) {\r\n\r\n\t\t\treturn Math.sin(k * Math.PI / 2);\r\n\r\n\t\t},\r\n\r\n\t\tInOut: function (k) {\r\n\r\n\t\t\treturn 0.5 * (1 - Math.cos(Math.PI * k));\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tExponential: {\r\n\r\n\t\tIn: function (k) {\r\n\r\n\t\t\treturn k === 0 ? 0 : Math.pow(1024, k - 1);\r\n\r\n\t\t},\r\n\r\n\t\tOut: function (k) {\r\n\r\n\t\t\treturn k === 1 ? 1 : 1 - Math.pow(2, - 10 * k);\r\n\r\n\t\t},\r\n\r\n\t\tInOut: function (k) {\r\n\r\n\t\t\tif (k === 0) {\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\r\n\t\t\tif (k === 1) {\r\n\t\t\t\treturn 1;\r\n\t\t\t}\r\n\r\n\t\t\tif ((k *= 2) < 1) {\r\n\t\t\t\treturn 0.5 * Math.pow(1024, k - 1);\r\n\t\t\t}\r\n\r\n\t\t\treturn 0.5 * (- Math.pow(2, - 10 * (k - 1)) + 2);\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tCircular: {\r\n\r\n\t\tIn: function (k) {\r\n\r\n\t\t\treturn 1 - Math.sqrt(1 - k * k);\r\n\r\n\t\t},\r\n\r\n\t\tOut: function (k) {\r\n\r\n\t\t\treturn Math.sqrt(1 - (--k * k));\r\n\r\n\t\t},\r\n\r\n\t\tInOut: function (k) {\r\n\r\n\t\t\tif ((k *= 2) < 1) {\r\n\t\t\t\treturn - 0.5 * (Math.sqrt(1 - k * k) - 1);\r\n\t\t\t}\r\n\r\n\t\t\treturn 0.5 * (Math.sqrt(1 - (k -= 2) * k) + 1);\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tElastic: {\r\n\r\n\t\tIn: function (k) {\r\n\r\n\t\t\tif (k === 0) {\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\r\n\t\t\tif (k === 1) {\r\n\t\t\t\treturn 1;\r\n\t\t\t}\r\n\r\n\t\t\treturn -Math.pow(2, 10 * (k - 1)) * Math.sin((k - 1.1) * 5 * Math.PI);\r\n\r\n\t\t},\r\n\r\n\t\tOut: function (k) {\r\n\r\n\t\t\tif (k === 0) {\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\r\n\t\t\tif (k === 1) {\r\n\t\t\t\treturn 1;\r\n\t\t\t}\r\n\r\n\t\t\treturn Math.pow(2, -10 * k) * Math.sin((k - 0.1) * 5 * Math.PI) + 1;\r\n\r\n\t\t},\r\n\r\n\t\tInOut: function (k) {\r\n\r\n\t\t\tif (k === 0) {\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\r\n\t\t\tif (k === 1) {\r\n\t\t\t\treturn 1;\r\n\t\t\t}\r\n\r\n\t\t\tk *= 2;\r\n\r\n\t\t\tif (k < 1) {\r\n\t\t\t\treturn -0.5 * Math.pow(2, 10 * (k - 1)) * Math.sin((k - 1.1) * 5 * Math.PI);\r\n\t\t\t}\r\n\r\n\t\t\treturn 0.5 * Math.pow(2, -10 * (k - 1)) * Math.sin((k - 1.1) * 5 * Math.PI) + 1;\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tBack: {\r\n\r\n\t\tIn: function (k) {\r\n\r\n\t\t\tvar s = 1.70158;\r\n\r\n\t\t\treturn k * k * ((s + 1) * k - s);\r\n\r\n\t\t},\r\n\r\n\t\tOut: function (k) {\r\n\r\n\t\t\tvar s = 1.70158;\r\n\r\n\t\t\treturn --k * k * ((s + 1) * k + s) + 1;\r\n\r\n\t\t},\r\n\r\n\t\tInOut: function (k) {\r\n\r\n\t\t\tvar s = 1.70158 * 1.525;\r\n\r\n\t\t\tif ((k *= 2) < 1) {\r\n\t\t\t\treturn 0.5 * (k * k * ((s + 1) * k - s));\r\n\t\t\t}\r\n\r\n\t\t\treturn 0.5 * ((k -= 2) * k * ((s + 1) * k + s) + 2);\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tBounce: {\r\n\r\n\t\tIn: function (k) {\r\n\r\n\t\t\treturn 1 - TWEEN.Easing.Bounce.Out(1 - k);\r\n\r\n\t\t},\r\n\r\n\t\tOut: function (k) {\r\n\r\n\t\t\tif (k < (1 / 2.75)) {\r\n\t\t\t\treturn 7.5625 * k * k;\r\n\t\t\t} else if (k < (2 / 2.75)) {\r\n\t\t\t\treturn 7.5625 * (k -= (1.5 / 2.75)) * k + 0.75;\r\n\t\t\t} else if (k < (2.5 / 2.75)) {\r\n\t\t\t\treturn 7.5625 * (k -= (2.25 / 2.75)) * k + 0.9375;\r\n\t\t\t} else {\r\n\t\t\t\treturn 7.5625 * (k -= (2.625 / 2.75)) * k + 0.984375;\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\tInOut: function (k) {\r\n\r\n\t\t\tif (k < 0.5) {\r\n\t\t\t\treturn TWEEN.Easing.Bounce.In(k * 2) * 0.5;\r\n\t\t\t}\r\n\r\n\t\t\treturn TWEEN.Easing.Bounce.Out(k * 2 - 1) * 0.5 + 0.5;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n};\r\n\r\nTWEEN.Interpolation = {\r\n\r\n\tLinear: function (v, k) {\r\n\r\n\t\tvar m = v.length - 1;\r\n\t\tvar f = m * k;\r\n\t\tvar i = Math.floor(f);\r\n\t\tvar fn = TWEEN.Interpolation.Utils.Linear;\r\n\r\n\t\tif (k < 0) {\r\n\t\t\treturn fn(v[0], v[1], f);\r\n\t\t}\r\n\r\n\t\tif (k > 1) {\r\n\t\t\treturn fn(v[m], v[m - 1], m - f);\r\n\t\t}\r\n\r\n\t\treturn fn(v[i], v[i + 1 > m ? m : i + 1], f - i);\r\n\r\n\t},\r\n\r\n\tBezier: function (v, k) {\r\n\r\n\t\tvar b = 0;\r\n\t\tvar n = v.length - 1;\r\n\t\tvar pw = Math.pow;\r\n\t\tvar bn = TWEEN.Interpolation.Utils.Bernstein;\r\n\r\n\t\tfor (var i = 0; i <= n; i++) {\r\n\t\t\tb += pw(1 - k, n - i) * pw(k, i) * v[i] * bn(n, i);\r\n\t\t}\r\n\r\n\t\treturn b;\r\n\r\n\t},\r\n\r\n\tCatmullRom: function (v, k) {\r\n\r\n\t\tvar m = v.length - 1;\r\n\t\tvar f = m * k;\r\n\t\tvar i = Math.floor(f);\r\n\t\tvar fn = TWEEN.Interpolation.Utils.CatmullRom;\r\n\r\n\t\tif (v[0] === v[m]) {\r\n\r\n\t\t\tif (k < 0) {\r\n\t\t\t\ti = Math.floor(f = m * (1 + k));\r\n\t\t\t}\r\n\r\n\t\t\treturn fn(v[(i - 1 + m) % m], v[i], v[(i + 1) % m], v[(i + 2) % m], f - i);\r\n\r\n\t\t} else {\r\n\r\n\t\t\tif (k < 0) {\r\n\t\t\t\treturn v[0] - (fn(v[0], v[0], v[1], v[1], -f) - v[0]);\r\n\t\t\t}\r\n\r\n\t\t\tif (k > 1) {\r\n\t\t\t\treturn v[m] - (fn(v[m], v[m], v[m - 1], v[m - 1], f - m) - v[m]);\r\n\t\t\t}\r\n\r\n\t\t\treturn fn(v[i ? i - 1 : 0], v[i], v[m < i + 1 ? m : i + 1], v[m < i + 2 ? m : i + 2], f - i);\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tUtils: {\r\n\r\n\t\tLinear: function (p0, p1, t) {\r\n\r\n\t\t\treturn (p1 - p0) * t + p0;\r\n\r\n\t\t},\r\n\r\n\t\tBernstein: function (n, i) {\r\n\r\n\t\t\tvar fc = TWEEN.Interpolation.Utils.Factorial;\r\n\r\n\t\t\treturn fc(n) / fc(i) / fc(n - i);\r\n\r\n\t\t},\r\n\r\n\t\tFactorial: (function () {\r\n\r\n\t\t\tvar a = [1];\r\n\r\n\t\t\treturn function (n) {\r\n\r\n\t\t\t\tvar s = 1;\r\n\r\n\t\t\t\tif (a[n]) {\r\n\t\t\t\t\treturn a[n];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor (var i = n; i > 1; i--) {\r\n\t\t\t\t\ts *= i;\r\n\t\t\t\t}\r\n\r\n\t\t\t\ta[n] = s;\r\n\t\t\t\treturn s;\r\n\r\n\t\t\t};\r\n\r\n\t\t})(),\r\n\r\n\t\tCatmullRom: function (p0, p1, p2, p3, t) {\r\n\r\n\t\t\tvar v0 = (p2 - p0) * 0.5;\r\n\t\t\tvar v1 = (p3 - p1) * 0.5;\r\n\t\t\tvar t2 = t * t;\r\n\t\t\tvar t3 = t * t2;\r\n\r\n\t\t\treturn (2 * p1 - 2 * p2 + v0 + v1) * t3 + (- 3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 + v0 * t + p1;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n};\r\n\r\n// UMD (Universal Module Definition)\r\n(function (root) {\r\n\r\n\tif (typeof define === 'function' && define.amd) {\r\n\r\n\t\t// AMD\r\n\t\tdefine([], function () {\r\n\t\t\treturn TWEEN;\r\n\t\t});\r\n\r\n\t} else if (typeof module !== 'undefined' && typeof exports === 'object') {\r\n\r\n\t\t// Node.js\r\n\t\tmodule.exports = TWEEN;\r\n\r\n\t} else if (root !== undefined) {\r\n\r\n\t\t// Global variable\r\n\t\troot.TWEEN = TWEEN;\r\n\r\n\t}\r\n\r\n})(this);\r\n\r\nexport {TWEEN}","class Hotspot {\t\r\n constructor(id, name, pos, width, actionType, content, userData, scale) {\t\r\n this.id = id;\t\r\n this.name = name;\t\r\n this.width = width;\t\r\n this.pos = pos;\t\r\n this.actionType = actionType;\t\r\n this.content = content;\t\r\n this.userData = userData;\t\r\n this.scale = scale;\t\r\n }\t\r\n}\t\r\nclass HotspotManager {\t\r\n constructor() {\t\r\n this.OverLay = false;\t\r\n }\t\r\n Display(hotspotObject) {\t\r\n switch (hotspotObject.actionType) {\t\r\n case \"Image\":\t\r\n this.DisplayImage(hotspotObject);\t\r\n this.OverLay = true;\t\r\n break;\t\r\n case \"Video\":\t\r\n this.DisplayVideo(hotspotObject);\t\r\n this.OverLay = true;\t\r\n break;\t\r\n case \"URL\":\t\r\n this.DisplayURL(hotspotObject);\t\r\n break;\t\r\n case \"Animation\":\t\r\n this.DisplayAnimation(hotspotObject);\t\r\n break;\t\r\n }\t\r\n }\t\r\n Hide() {\t\r\n var annotationDiv = document.getElementById('annotation-div');\t\r\n if (annotationDiv) {\t\r\n document.body.removeChild(annotationDiv);\t\r\n }\t\r\n }\t\r\n ConstructAndDisplayOverlayElement(hotspotAction, hotspotObject) {\t\r\n var annotationDiv = document.createElement(\"div\");\t\r\n annotationDiv.id = \"annotation-div\";\t\r\n annotationDiv.setAttribute(\"style\", \"text-align: center; position: fixed; top: 0; left: 0; bottom: 0; right: 0; background-color: rgba(0, 0, 0, 0.4); z-index: 1000; box-shadow: 0px 0px 5px 1px white\");\t\r\n var div = document.createElement(\"div\");\t\r\n div.id = \"hotspotActionDiv\";\t\r\n div.setAttribute(\"style\", \"position: relative; text-align: center; top: 50%; transform: translateY(-50%)\");\t\r\n let annotationDivParent = document.body;\t\r\n if (cds.cadViewer.hotspotImgDisplayType === \"viewer\") {\t\r\n var v = document.getElementsByClassName(\"cds-cad-viewer-container\")[0];\t\r\n if (v) annotationDivParent = v;\t\r\n annotationDiv.style.position = \"absolute\";\t\r\n }\t\r\n if (hotspotObject.content.length > 1) {\t\r\n div.appendChild(hotspotAction);\t\r\n annotationDiv.appendChild(div);\t\r\n var newDiv = this.constructAndGetMediaChanger(hotspotAction, hotspotObject);\t\r\n annotationDiv.appendChild(newDiv);\t\r\n }\t\r\n else {\t\r\n div.appendChild(hotspotAction);\t\r\n annotationDiv.appendChild(div);\t\r\n }\t\r\n var isMobile = /Android/i.test(navigator.userAgent);\t\r\n if (isMobile) {\t\r\n console.log(\"Android device detected\")\t\r\n annotationDiv.ontouchstart = function (e) {\t\r\n \t\r\n if (hotspotAction == e.target) {\t\r\n \t\r\n hotspotAction.src = \"\";\t\r\n annotationDivParent.removeChild(annotationDiv);\t\r\n \t\r\n }\t\r\n e.preventDefault();\t\r\n }\t\r\n }else{\t\r\n annotationDiv.onclick = function (e) {\t\r\n \t\r\n if (hotspotAction == e.target) {\t\r\n \t\r\n hotspotAction.src = \"\";\t\r\n annotationDivParent.removeChild(annotationDiv);\t\r\n }\t\r\n e.preventDefault();\t\r\n }\t\r\n }\t\r\n \t\r\n \t\r\n annotationDivParent.appendChild(annotationDiv);\t\r\n }\t\r\n constructAndGetMediaChanger(hotspotAction, hotspotObject) {\t\r\n var countDiv = document.createElement(\"div\");\t\r\n var preImg = document.createElement(\"img\");\t\r\n preImg.src = \"https://www.product-config.net/cadviewer/images/icons/PreviousArrow.svg\";\t\r\n //preImg.width = \"100\";\t\r\n //preImg.height = \"80\";\t\r\n preImg.title = \"Previous\";\t\r\n var isMobile = /iPhone|Android/i.test(navigator.userAgent);\t\r\n if (isMobile) {\t\r\n if (window.matchMedia(\"(orientation: portrait)\").matches) { //Check Device is in Portrait or landscape mode\t\r\n preImg.setAttribute(\"style\", \"position:absolute;left:10px;top:10%;width:15%;\"); //top15%\t\r\n }\t\r\n else{\t\r\n //preImg.setAttribute(\"style\", \"position:absolute;left:10px;top:40%;width:95px;height:95px;\");\t\r\n preImg.setAttribute(\"style\", \"position:absolute;left:1%;top:40%; width:5%\");\t\r\n } \t\r\n \t\r\n }\t\r\n else{\t\r\n preImg.setAttribute(\"style\", \"position:absolute;left:1%;top:40%; width:5%\");\t\r\n }\t\r\n \t\r\n var para = document.createElement(\"p\");\t\r\n para.textContent = \"1/\" + `${hotspotObject.content.length}`;\t\r\n var nodeDiv = document.createElement(\"div\");\t\r\n nodeDiv.appendChild(para);\t\r\n countDiv.appendChild(nodeDiv);\t\r\n var isMobile = /iPhone|Android/i.test(navigator.userAgent);\t\r\n if (isMobile){\r\n preImg.ontouchstart = function() {\r\n for (var i = 0; i < hotspotObject.content.length; ++i) {\t\r\n if(cds.cadViewer.para && cds.cadViewer.boolIE){\r\n para = cds.cadViewer.para;\r\n }\r\n\r\n var newPara = para.textContent.split(\"/\");\t\r\n \r\n var paraToNum = parseInt(newPara[0]) - 1;\t\r\n if (hotspotAction.src == hotspotObject.content[paraToNum]) {\t\r\n var j = paraToNum - 1;\t\r\n if (j < 0) { paraToNum = hotspotObject.content.length; }\t\r\n if (hotspotObject.content[j] == undefined && hotspotAction.src == hotspotObject.content[hotspotObject.content.length - 1]) {\t\r\n hotspotAction.src = hotspotObject.content[hotspotObject.content.length - 1];\t\r\n para.textContent = `${hotspotObject.content.length}` + \"/\" + `${hotspotObject.content.length}`;\t\r\n }\t\r\n else {\t\r\n hotspotAction.src = hotspotObject.content[--paraToNum];\t\r\n para.textContent = `${paraToNum + 1}` + \"/\" + `${hotspotObject.content.length}`;\t\r\n }\t\r\n // To overcome the data loss of para var in IE\r\n cds.cadViewer.para = para.cloneNode(true);\r\n nodeDiv.appendChild(para);\t\r\n countDiv.innerHTML = \"\";\t\r\n countDiv.appendChild(nodeDiv);\t\r\n break;\t\r\n }\t\r\n }\r\n }\r\n }else{\r\n preImg.onclick = function () {\t\r\n for (var i = 0; i < hotspotObject.content.length; ++i) {\t\r\n if(cds.cadViewer.para && cds.cadViewer.boolIE){\r\n para = cds.cadViewer.para;\r\n }\r\n\r\n var newPara = para.textContent.split(\"/\");\t\r\n\r\n var paraToNum = parseInt(newPara[0]) - 1;\t\r\n if (hotspotAction.src == hotspotObject.content[paraToNum]) {\t\r\n var j = paraToNum - 1;\t\r\n if (j < 0) { paraToNum = hotspotObject.content.length; }\t\r\n if (hotspotObject.content[j] == undefined && hotspotAction.src == hotspotObject.content[hotspotObject.content.length - 1]) {\t\r\n hotspotAction.src = hotspotObject.content[hotspotObject.content.length - 1];\t\r\n para.textContent = `${hotspotObject.content.length}` + \"/\" + `${hotspotObject.content.length}`;\t\r\n }\t\r\n else {\t\r\n hotspotAction.src = hotspotObject.content[--paraToNum];\t\r\n para.textContent = `${paraToNum + 1}` + \"/\" + `${hotspotObject.content.length}`;\t\r\n }\t\r\n // To overcome the data loss of para var in IE\r\n cds.cadViewer.para = para.cloneNode(true);\r\n nodeDiv.appendChild(para);\t\r\n countDiv.innerHTML = \"\";\t\r\n countDiv.appendChild(nodeDiv);\t\r\n break;\t\r\n }\t\r\n }\t\r\n }\r\n }\r\n \r\n \r\n var nxtImg = document.createElement(\"img\");\t\r\n nxtImg.src = \"https://www.product-config.net/cadviewer/images/icons/NextArrow.svg\";\t\r\n //nxtImg.width = \"100\";\t\r\n //nxtImg.height = \"80\";\t\r\n nxtImg.title = \"Next\";\t\r\n var isMobile = /iPhone|Android/i.test(navigator.userAgent);\t\r\n if (isMobile) {\t\r\n if (window.matchMedia(\"(orientation: portrait)\").matches) { //Check Device is in Portrait or landscape mode\t\r\n nxtImg.setAttribute(\"style\", \"position:absolute;right:10px;top:10%;width:15%\"); //Changed by Prashant //top15%\t\r\n }else{\t\r\n //nxtImg.setAttribute(\"style\", \"position:absolute;right:10px;top:40%;width:95px;height:95px;\"); //Changed by Prashant\t\r\n nxtImg.setAttribute(\"style\", \"position:absolute;right:1%;top:40%;width:5%\");\t\r\n } \t\r\n }\t\r\n else{\t\r\n nxtImg.setAttribute(\"style\", \"position:absolute;right:1%;top:40%;width:5%\");\t\r\n }\t\r\n \r\n var isMobile = /iPhone|Android/i.test(navigator.userAgent);\t\r\n if (isMobile){\r\n nxtImg.ontouchstart = function(){\r\n for (var i = 0; i < hotspotObject.content.length; ++i) {\t\r\n if(cds.cadViewer.para && cds.cadViewer.boolIE){\r\n para = cds.cadViewer.para;\r\n }\r\n\r\n var newPara = para.textContent.split(\"/\");\t\r\n\t\r\n var paraToNum = parseInt(newPara[0]) - 1;\t\r\n if (hotspotAction.src == hotspotObject.content[paraToNum]) {\t\r\n var j = paraToNum + 1;\t\r\n if (hotspotObject.content[j] == undefined && hotspotAction.src == hotspotObject.content[hotspotObject.content.length - 1]) {\t\r\n hotspotAction.src = hotspotObject.content[0];\t\r\n para.textContent = 1 + \"/\" + `${hotspotObject.content.length}`;\t\r\n }\t\r\n else {\t\r\n hotspotAction.src = hotspotObject.content[++paraToNum];\t\r\n para.textContent = `${paraToNum + 1}` + \"/\" + `${hotspotObject.content.length}`;\t\r\n }\t\r\n // To overcome the data loss of para var in IE\r\n cds.cadViewer.para = para.cloneNode(true);\r\n nodeDiv.appendChild(para);\t\r\n countDiv.innerHTML = \"\";\t\r\n countDiv.appendChild(nodeDiv);\t\r\n break;\t\r\n }\t\r\n }\r\n }\r\n }else{\r\n nxtImg.onclick = function () {\t\r\n for (var i = 0; i < hotspotObject.content.length; ++i) {\t\r\n if(cds.cadViewer.para && cds.cadViewer.boolIE){\r\n para = cds.cadViewer.para;\r\n }\r\n\r\n var newPara = para.textContent.split(\"/\");\t\r\n\r\n var paraToNum = parseInt(newPara[0]) - 1;\t\r\n if (hotspotAction.src == hotspotObject.content[paraToNum]) {\t\r\n var j = paraToNum + 1;\t\r\n if (hotspotObject.content[j] == undefined && hotspotAction.src == hotspotObject.content[hotspotObject.content.length - 1]) {\t\r\n hotspotAction.src = hotspotObject.content[0];\t\r\n para.textContent = 1 + \"/\" + `${hotspotObject.content.length}`;\t\r\n }\t\r\n else {\t\r\n hotspotAction.src = hotspotObject.content[++paraToNum];\t\r\n para.textContent = `${paraToNum + 1}` + \"/\" + `${hotspotObject.content.length}`;\t\r\n }\t\r\n // To overcome the data loss of para var in IE\r\n cds.cadViewer.para = para.cloneNode(true);\r\n nodeDiv.appendChild(para);\t\r\n countDiv.innerHTML = \"\";\t\r\n countDiv.appendChild(nodeDiv);\t\r\n break;\t\r\n }\t\r\n }\t\r\n }\t\r\n }\r\n \r\n \r\n\r\n var playerDiv = document.createElement(\"div\");\t\r\n playerDiv.appendChild(preImg);\t\r\n playerDiv.appendChild(nxtImg);\t\r\n return playerDiv;\t\r\n }\t\r\n DisplayImage(hotspotObject) {\t\r\n var img = document.createElement(\"img\");\t\r\n img.src = hotspotObject.content[0];\t\r\n //This code is added by Prashant for checking device\t\r\n var isMobile = /iPhone|Android/i.test(navigator.userAgent);\t\r\n if (isMobile) {\t\r\n if (window.matchMedia(\"(orientation: portrait)\").matches) { //Check Device is in Portrait or landscape mode\t\r\n img.style.width = 100\t\r\n }else{\t\r\n img.style.width = `${hotspotObject.width}%`;\t\r\n }\t\r\n \t\r\n }else{\t\r\n img.style.width = `${hotspotObject.width}%`;\t\r\n }\t\r\n \t\r\n this.ConstructAndDisplayOverlayElement(img, hotspotObject);\t\r\n }\t\r\n DisplayVideo(hotspotObject) {\t\r\n var video = document.createElement(\"video\");\t\r\n video.src = hotspotObject.content[0];\t\r\n video.controls = true;\t\r\n video.type = \"video/mp4\";\t\r\n video.autoplay = true;\t\r\n video.onclick = function(){\t\r\n console.log(\"Video Close Click\")\t\r\n }\t\r\n \t\r\n \t\r\n var isFirefox = typeof InstallTrigger !== 'undefined'; //Checking if browser is firefox then remove control\t\r\n if (isFirefox) {\t\r\n var isMobile = /iPhone|Android/i.test(navigator.userAgent);\t\r\n if (isMobile) {\t\r\n var androidMobile = /Android/i.test(navigator.userAgent);\t\r\n if (androidMobile){\t\r\n function removeControls(video){\t\r\n video.removeAttribute('controls');\t\r\n }\t\r\n window.onload=removeControls(video);\t\r\n }\t\r\n }else{\t\r\n function removeControls(video){\t\r\n video.removeAttribute('controls');\t\r\n }\t\r\n window.onload=removeControls(video);\t\r\n }\t\r\n }\t\r\n \t\r\n \t\r\n //This code is added by Prashant for checking device\t\r\n var isMobile = /iPhone|Android/i.test(navigator.userAgent);\t\r\n if (isMobile) {\t\r\n if (window.matchMedia(\"(orientation: portrait)\").matches) { //Check Device is in Portrait or landscape mode\t\r\n video.style.width = \"90%\"\t\r\n }else{\t\r\n video.style.width = `${hotspotObject.width}%`;\t\r\n }\t\r\n }else{\t\r\n video.style.width = `${hotspotObject.width}%`;\t\r\n }\t\r\n video.controlsList = \"nodownload\";\t\r\n video.disablePictureInPicture = true;\t\r\n this.ConstructAndDisplayOverlayElement(video, hotspotObject);\t\r\n }\t\r\n DisplayURL(hotspotObject) {\t\r\n window.open(hotspotObject.content);\t\r\n }\t\r\n DisplayAnimation(hotspotObject) {\t\r\n cds.cadViewer.hasOwnProperty('studioUtils')\t\r\n ? cds.cadViewer.studioUtils.play\t\r\n ? cds.cadViewer.studioUtils.stopAnimation()\t\r\n : cds.cadViewer.studioUtils.playAnimation() : false\t\r\n }\t\r\n}\t\r\n\r\nexport { HotspotManager };","import { LegacyJSONLoader } from './LegacyJSONLoader.js';\r\n\r\nclass ThreejsExtension {\r\n constructor() {\r\n\r\n }\r\n\r\n parseGeometries(json, shapes) {\r\n var geometries = {};\r\n let geometryShapes;\r\n\r\n if (json !== undefined) {\r\n var bufferGeometryLoader = new THREE.BufferGeometryLoader();\r\n\r\n for (let i = 0, l = json.length; i < l; i++) {\r\n let geometry;\r\n var data = json[i];\r\n\r\n switch (data.type) {\r\n case 'PlaneGeometry':\r\n case 'PlaneBufferGeometry':\r\n geometry = new Geometries[data.type](data.width, data.height, data.widthSegments, data.heightSegments);\r\n break;\r\n\r\n case 'BoxGeometry':\r\n case 'BoxBufferGeometry':\r\n geometry = new Geometries[data.type](data.width, data.height, data.depth, data.widthSegments, data.heightSegments, data.depthSegments);\r\n break;\r\n\r\n case 'CircleGeometry':\r\n case 'CircleBufferGeometry':\r\n geometry = new Geometries[data.type](data.radius, data.segments, data.thetaStart, data.thetaLength);\r\n break;\r\n\r\n case 'CylinderGeometry':\r\n case 'CylinderBufferGeometry':\r\n geometry = new Geometries[data.type](data.radiusTop, data.radiusBottom, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength);\r\n break;\r\n\r\n case 'ConeGeometry':\r\n case 'ConeBufferGeometry':\r\n geometry = new Geometries[data.type](data.radius, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength);\r\n break;\r\n\r\n case 'SphereGeometry':\r\n case 'SphereBufferGeometry':\r\n geometry = new Geometries[data.type](data.radius, data.widthSegments, data.heightSegments, data.phiStart, data.phiLength, data.thetaStart, data.thetaLength);\r\n break;\r\n\r\n case 'DodecahedronGeometry':\r\n case 'DodecahedronBufferGeometry':\r\n case 'IcosahedronGeometry':\r\n case 'IcosahedronBufferGeometry':\r\n case 'OctahedronGeometry':\r\n case 'OctahedronBufferGeometry':\r\n case 'TetrahedronGeometry':\r\n case 'TetrahedronBufferGeometry':\r\n geometry = new Geometries[data.type](data.radius, data.detail);\r\n break;\r\n\r\n case 'RingGeometry':\r\n case 'RingBufferGeometry':\r\n geometry = new Geometries[data.type](data.innerRadius, data.outerRadius, data.thetaSegments, data.phiSegments, data.thetaStart, data.thetaLength);\r\n break;\r\n\r\n case 'TorusGeometry':\r\n case 'TorusBufferGeometry':\r\n geometry = new Geometries[data.type](data.radius, data.tube, data.radialSegments, data.tubularSegments, data.arc);\r\n break;\r\n\r\n case 'TorusKnotGeometry':\r\n case 'TorusKnotBufferGeometry':\r\n geometry = new Geometries[data.type](data.radius, data.tube, data.tubularSegments, data.radialSegments, data.p, data.q);\r\n break;\r\n\r\n case 'TubeGeometry':\r\n case 'TubeBufferGeometry':\r\n geometry = new Geometries[data.type](new Curves[data.path.type]().fromJSON(data.path), data.tubularSegments, data.radius, data.radialSegments, data.closed);\r\n break;\r\n\r\n case 'LatheGeometry':\r\n case 'LatheBufferGeometry':\r\n geometry = new Geometries[data.type](data.points, data.segments, data.phiStart, data.phiLength);\r\n break;\r\n\r\n case 'PolyhedronGeometry':\r\n case 'PolyhedronBufferGeometry':\r\n geometry = new Geometries[data.type](data.vertices, data.indices, data.radius, data.details);\r\n break;\r\n\r\n case 'ShapeGeometry':\r\n case 'ShapeBufferGeometry':\r\n geometryShapes = [];\r\n\r\n for (let j = 0, jl = data.shapes.length; j < jl; j++) {\r\n var shape = shapes[data.shapes[j]];\r\n geometryShapes.push(shape);\r\n }\r\n\r\n geometry = new Geometries[data.type](geometryShapes, data.curveSegments);\r\n break;\r\n\r\n case 'ExtrudeGeometry':\r\n case 'ExtrudeBufferGeometry':\r\n geometryShapes = [];\r\n\r\n for (let j = 0, jl = data.shapes.length; j < jl; j++) {\r\n var shape = shapes[data.shapes[j]];\r\n geometryShapes.push(shape);\r\n }\r\n\r\n var extrudePath = data.options.extrudePath;\r\n\r\n if (extrudePath !== undefined) {\r\n data.options.extrudePath = new Curves[extrudePath.type]().fromJSON(extrudePath);\r\n }\r\n\r\n geometry = new Geometries[data.type](geometryShapes, data.options);\r\n break;\r\n\r\n case 'BufferGeometry':\r\n case 'InstancedBufferGeometry':\r\n geometry = bufferGeometryLoader.parse(data);\r\n break;\r\n\r\n case 'Geometry':\r\n var geometryLoader = new LegacyJSONLoader();\r\n geometry = geometryLoader.parse(data, this.resourcePath).geometry;\r\n if(parseInt(THREE.REVISION) > 111){\r\n geometry = geometry.toBufferGeometry();\r\n }else{\r\n geometry = new THREE.BufferGeometry().fromGeometry(geometry);\r\n }\r\n \r\n break;\r\n\r\n default:\r\n console.warn('THREE.ObjectLoader: Unsupported geometry type \"' + data.type + '\"');\r\n continue;\r\n }\r\n\r\n geometry.uuid = data.uuid;\r\n if (data.name !== undefined) geometry.name = data.name;\r\n if (geometry.isBufferGeometry === true && data.userData !== undefined) geometry.userData = data.userData;\r\n geometries[data.uuid] = geometry;\r\n }\r\n }\r\n\r\n return geometries;\r\n }\r\n}\r\n\r\nexport { ThreejsExtension }","THREE.LegacyJSONLoader = (function () {\r\n\r\n function LegacyJSONLoader(manager) {\r\n\r\n if (typeof manager === 'boolean') {\r\n\r\n console.warn('THREE.JSONLoader: showStatus parameter has been removed from constructor.');\r\n manager = undefined;\r\n\r\n }\r\n\r\n this.manager = (manager !== undefined) ? manager : THREE.DefaultLoadingManager;\r\n\r\n this.withCredentials = false;\r\n\r\n }\r\n\r\n Object.assign(LegacyJSONLoader.prototype, {\r\n\r\n crossOrigin: 'anonymous',\r\n\r\n load: function (url, onLoad, onProgress, onError) {\r\n\r\n var scope = this;\r\n\r\n var path = (this.path === undefined) ? THREE.LoaderUtils.extractUrlBase(url) : this.path;\r\n\r\n var loader = new THREE.FileLoader(this.manager);\r\n loader.setPath(this.path);\r\n loader.setWithCredentials(this.withCredentials);\r\n loader.load(url, function (text) {\r\n\r\n var json = JSON.parse(text);\r\n var metadata = json.metadata;\r\n\r\n if (metadata !== undefined) {\r\n\r\n var type = metadata.type;\r\n\r\n if (type !== undefined) {\r\n\r\n if (type.toLowerCase() === 'object') {\r\n\r\n console.error('THREE.JSONLoader: ' + url + ' should be loaded with THREE.ObjectLoader instead.');\r\n return;\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n var object = scope.parse(json, path);\r\n onLoad(object.geometry, object.materials);\r\n\r\n }, onProgress, onError);\r\n\r\n },\r\n\r\n setPath: function (value) {\r\n\r\n this.path = value;\r\n return this;\r\n\r\n },\r\n\r\n setResourcePath: function (value) {\r\n\r\n this.resourcePath = value;\r\n return this;\r\n\r\n },\r\n\r\n setCrossOrigin: function (value) {\r\n\r\n this.crossOrigin = value;\r\n return this;\r\n\r\n },\r\n\r\n parse: (function () {\r\n\r\n function parseModel(json, geometry) {\r\n\r\n function isBitSet(value, position) {\r\n\r\n return value & (1 << position);\r\n\r\n }\r\n\r\n var i, j, fi,\r\n\r\n offset, zLength,\r\n\r\n colorIndex, normalIndex, uvIndex, materialIndex,\r\n\r\n type,\r\n isQuad,\r\n hasMaterial,\r\n hasFaceVertexUv,\r\n hasFaceNormal, hasFaceVertexNormal,\r\n hasFaceColor, hasFaceVertexColor,\r\n\r\n vertex, face, faceA, faceB, hex, normal,\r\n\r\n uvLayer, uv, u, v,\r\n\r\n faces = json.faces,\r\n vertices = json.vertices,\r\n normals = json.normals,\r\n colors = json.colors,\r\n\r\n scale = json.scale,\r\n\r\n nUvLayers = 0;\r\n\r\n\r\n if (json.uvs !== undefined) {\r\n\r\n // disregard empty arrays\r\n\r\n for (i = 0; i < json.uvs.length; i++) {\r\n\r\n if (json.uvs[i].length) nUvLayers++;\r\n\r\n }\r\n\r\n for (i = 0; i < nUvLayers; i++) {\r\n\r\n geometry.faceVertexUvs[i] = [];\r\n\r\n }\r\n\r\n }\r\n\r\n offset = 0;\r\n zLength = vertices.length;\r\n\r\n while (offset < zLength) {\r\n\r\n vertex = new THREE.Vector3();\r\n\r\n vertex.x = vertices[offset++] * scale;\r\n vertex.y = vertices[offset++] * scale;\r\n vertex.z = vertices[offset++] * scale;\r\n\r\n geometry.vertices.push(vertex);\r\n\r\n }\r\n\r\n offset = 0;\r\n zLength = faces.length;\r\n\r\n while (offset < zLength) {\r\n\r\n type = faces[offset++];\r\n\r\n isQuad = isBitSet(type, 0);\r\n hasMaterial = isBitSet(type, 1);\r\n hasFaceVertexUv = isBitSet(type, 3);\r\n hasFaceNormal = isBitSet(type, 4);\r\n hasFaceVertexNormal = isBitSet(type, 5);\r\n hasFaceColor = isBitSet(type, 6);\r\n hasFaceVertexColor = isBitSet(type, 7);\r\n\r\n // console.log(\"type\", type, \"bits\", isQuad, hasMaterial, hasFaceVertexUv, hasFaceNormal, hasFaceVertexNormal, hasFaceColor, hasFaceVertexColor);\r\n\r\n if (isQuad) {\r\n\r\n faceA = new THREE.Face3();\r\n faceA.a = faces[offset];\r\n faceA.b = faces[offset + 1];\r\n faceA.c = faces[offset + 3];\r\n\r\n faceB = new THREE.Face3();\r\n faceB.a = faces[offset + 1];\r\n faceB.b = faces[offset + 2];\r\n faceB.c = faces[offset + 3];\r\n\r\n offset += 4;\r\n\r\n if (hasMaterial) {\r\n\r\n materialIndex = faces[offset++];\r\n faceA.materialIndex = materialIndex;\r\n faceB.materialIndex = materialIndex;\r\n\r\n }\r\n\r\n // to get face <=> uv index correspondence\r\n\r\n fi = geometry.faces.length;\r\n\r\n if (hasFaceVertexUv) {\r\n\r\n for (i = 0; i < nUvLayers; i++) {\r\n\r\n uvLayer = json.uvs[i];\r\n\r\n geometry.faceVertexUvs[i][fi] = [];\r\n geometry.faceVertexUvs[i][fi + 1] = [];\r\n\r\n for (j = 0; j < 4; j++) {\r\n\r\n uvIndex = faces[offset++];\r\n\r\n u = uvLayer[uvIndex * 2];\r\n v = uvLayer[uvIndex * 2 + 1];\r\n\r\n uv = new THREE.Vector2(u, v);\r\n\r\n if (j !== 2) geometry.faceVertexUvs[i][fi].push(uv);\r\n if (j !== 0) geometry.faceVertexUvs[i][fi + 1].push(uv);\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n if (hasFaceNormal) {\r\n\r\n normalIndex = faces[offset++] * 3;\r\n\r\n faceA.normal.set(\r\n normals[normalIndex++],\r\n normals[normalIndex++],\r\n normals[normalIndex]\r\n );\r\n\r\n faceB.normal.copy(faceA.normal);\r\n\r\n }\r\n\r\n if (hasFaceVertexNormal) {\r\n\r\n for (i = 0; i < 4; i++) {\r\n\r\n normalIndex = faces[offset++] * 3;\r\n\r\n normal = new THREE.Vector3(\r\n normals[normalIndex++],\r\n normals[normalIndex++],\r\n normals[normalIndex]\r\n );\r\n\r\n\r\n if (i !== 2) faceA.vertexNormals.push(normal);\r\n if (i !== 0) faceB.vertexNormals.push(normal);\r\n\r\n }\r\n\r\n }\r\n\r\n\r\n if (hasFaceColor) {\r\n\r\n colorIndex = faces[offset++];\r\n hex = colors[colorIndex];\r\n\r\n faceA.color.setHex(hex);\r\n faceB.color.setHex(hex);\r\n\r\n }\r\n\r\n\r\n if (hasFaceVertexColor) {\r\n\r\n for (i = 0; i < 4; i++) {\r\n\r\n colorIndex = faces[offset++];\r\n hex = colors[colorIndex];\r\n\r\n if (i !== 2) faceA.vertexColors.push(new THREE.Color(hex));\r\n if (i !== 0) faceB.vertexColors.push(new THREE.Color(hex));\r\n\r\n }\r\n\r\n }\r\n\r\n geometry.faces.push(faceA);\r\n geometry.faces.push(faceB);\r\n\r\n } else {\r\n\r\n face = new THREE.Face3();\r\n face.a = faces[offset++];\r\n face.b = faces[offset++];\r\n face.c = faces[offset++];\r\n\r\n if (hasMaterial) {\r\n\r\n materialIndex = faces[offset++];\r\n face.materialIndex = materialIndex;\r\n\r\n }\r\n\r\n // to get face <=> uv index correspondence\r\n\r\n fi = geometry.faces.length;\r\n\r\n if (hasFaceVertexUv) {\r\n\r\n for (i = 0; i < nUvLayers; i++) {\r\n\r\n uvLayer = json.uvs[i];\r\n\r\n geometry.faceVertexUvs[i][fi] = [];\r\n\r\n for (j = 0; j < 3; j++) {\r\n\r\n uvIndex = faces[offset++];\r\n\r\n u = uvLayer[uvIndex * 2];\r\n v = uvLayer[uvIndex * 2 + 1];\r\n\r\n uv = new THREE.Vector2(u, v);\r\n\r\n geometry.faceVertexUvs[i][fi].push(uv);\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n if (hasFaceNormal) {\r\n\r\n normalIndex = faces[offset++] * 3;\r\n\r\n face.normal.set(\r\n normals[normalIndex++],\r\n normals[normalIndex++],\r\n normals[normalIndex]\r\n );\r\n\r\n }\r\n\r\n if (hasFaceVertexNormal) {\r\n\r\n for (i = 0; i < 3; i++) {\r\n\r\n normalIndex = faces[offset++] * 3;\r\n\r\n normal = new THREE.Vector3(\r\n normals[normalIndex++],\r\n normals[normalIndex++],\r\n normals[normalIndex]\r\n );\r\n\r\n face.vertexNormals.push(normal);\r\n\r\n }\r\n\r\n }\r\n\r\n\r\n if (hasFaceColor) {\r\n\r\n colorIndex = faces[offset++];\r\n face.color.setHex(colors[colorIndex]);\r\n\r\n }\r\n\r\n\r\n if (hasFaceVertexColor) {\r\n\r\n for (i = 0; i < 3; i++) {\r\n\r\n colorIndex = faces[offset++];\r\n face.vertexColors.push(new THREE.Color(colors[colorIndex]));\r\n\r\n }\r\n\r\n }\r\n\r\n geometry.faces.push(face);\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n function parseSkin(json, geometry) {\r\n\r\n var influencesPerVertex = (json.influencesPerVertex !== undefined) ? json.influencesPerVertex : 2;\r\n\r\n if (json.skinWeights) {\r\n\r\n for (var i = 0, l = json.skinWeights.length; i < l; i += influencesPerVertex) {\r\n\r\n var x = json.skinWeights[i];\r\n var y = (influencesPerVertex > 1) ? json.skinWeights[i + 1] : 0;\r\n var z = (influencesPerVertex > 2) ? json.skinWeights[i + 2] : 0;\r\n var w = (influencesPerVertex > 3) ? json.skinWeights[i + 3] : 0;\r\n\r\n geometry.skinWeights.push(new THREE.Vector4(x, y, z, w));\r\n\r\n }\r\n\r\n }\r\n\r\n if (json.skinIndices) {\r\n\r\n for (var i = 0, l = json.skinIndices.length; i < l; i += influencesPerVertex) {\r\n\r\n var a = json.skinIndices[i];\r\n var b = (influencesPerVertex > 1) ? json.skinIndices[i + 1] : 0;\r\n var c = (influencesPerVertex > 2) ? json.skinIndices[i + 2] : 0;\r\n var d = (influencesPerVertex > 3) ? json.skinIndices[i + 3] : 0;\r\n\r\n geometry.skinIndices.push(new THREE.Vector4(a, b, c, d));\r\n\r\n }\r\n\r\n }\r\n\r\n geometry.bones = json.bones;\r\n\r\n if (geometry.bones && geometry.bones.length > 0 && (geometry.skinWeights.length !== geometry.skinIndices.length || geometry.skinIndices.length !== geometry.vertices.length)) {\r\n\r\n console.warn('When skinning, number of vertices (' + geometry.vertices.length + '), skinIndices (' +\r\n geometry.skinIndices.length + '), and skinWeights (' + geometry.skinWeights.length + ') should match.');\r\n\r\n }\r\n\r\n }\r\n\r\n function parseMorphing(json, geometry) {\r\n\r\n var scale = json.scale;\r\n\r\n if (json.morphTargets !== undefined) {\r\n\r\n for (var i = 0, l = json.morphTargets.length; i < l; i++) {\r\n\r\n geometry.morphTargets[i] = {};\r\n geometry.morphTargets[i].name = json.morphTargets[i].name;\r\n geometry.morphTargets[i].vertices = [];\r\n\r\n var dstVertices = geometry.morphTargets[i].vertices;\r\n var srcVertices = json.morphTargets[i].vertices;\r\n\r\n for (var v = 0, vl = srcVertices.length; v < vl; v += 3) {\r\n\r\n var vertex = new THREE.Vector3();\r\n vertex.x = srcVertices[v] * scale;\r\n vertex.y = srcVertices[v + 1] * scale;\r\n vertex.z = srcVertices[v + 2] * scale;\r\n\r\n dstVertices.push(vertex);\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n if (json.morphColors !== undefined && json.morphColors.length > 0) {\r\n\r\n console.warn('THREE.JSONLoader: \"morphColors\" no longer supported. Using them as face colors.');\r\n\r\n var faces = geometry.faces;\r\n var morphColors = json.morphColors[0].colors;\r\n\r\n for (var i = 0, l = faces.length; i < l; i++) {\r\n\r\n faces[i].color.fromArray(morphColors, i * 3);\r\n\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n function parseAnimations(json, geometry) {\r\n\r\n var outputAnimations = [];\r\n\r\n // parse old style Bone/Hierarchy animations\r\n var animations = [];\r\n\r\n if (json.animation !== undefined) {\r\n\r\n animations.push(json.animation);\r\n\r\n }\r\n\r\n if (json.animations !== undefined) {\r\n\r\n if (json.animations.length) {\r\n\r\n animations = animations.concat(json.animations);\r\n\r\n } else {\r\n\r\n animations.push(json.animations);\r\n\r\n }\r\n\r\n }\r\n\r\n for (var i = 0; i < animations.length; i++) {\r\n\r\n var clip = THREE.AnimationClip.parseAnimation(animations[i], geometry.bones);\r\n if (clip) outputAnimations.push(clip);\r\n\r\n }\r\n\r\n // parse implicit morph animations\r\n if (geometry.morphTargets) {\r\n\r\n // TODO: Figure out what an appropraite FPS is for morph target animations -- defaulting to 10, but really it is completely arbitrary.\r\n var morphAnimationClips = THREE.AnimationClip.CreateClipsFromMorphTargetSequences(geometry.morphTargets, 10);\r\n outputAnimations = outputAnimations.concat(morphAnimationClips);\r\n\r\n }\r\n\r\n if (outputAnimations.length > 0) geometry.animations = outputAnimations;\r\n\r\n }\r\n\r\n return function parse(json, path) {\r\n\r\n if (json.data !== undefined) {\r\n\r\n // Geometry 4.0 spec\r\n json = json.data;\r\n\r\n }\r\n\r\n if (json.scale !== undefined) {\r\n\r\n json.scale = 1.0 / json.scale;\r\n\r\n } else {\r\n\r\n json.scale = 1.0;\r\n\r\n }\r\n\r\n var geometry = new THREE.Geometry();\r\n\r\n parseModel(json, geometry);\r\n parseSkin(json, geometry);\r\n parseMorphing(json, geometry);\r\n parseAnimations(json, geometry);\r\n\r\n geometry.computeFaceNormals();\r\n geometry.computeBoundingSphere();\r\n\r\n if (json.materials === undefined || json.materials.length === 0) {\r\n\r\n return { geometry: geometry };\r\n\r\n } else {\r\n\r\n var materials = THREE.Loader.prototype.initMaterials(json.materials, this.resourcePath || path, this.crossOrigin);\r\n\r\n return { geometry: geometry, materials: materials };\r\n\r\n }\r\n\r\n };\r\n\r\n })()\r\n\r\n });\r\n\r\n return LegacyJSONLoader;\r\n\r\n})();\r\n\r\nlet LegacyJSONLoader = THREE.LegacyJSONLoader;\r\nexport { LegacyJSONLoader }","/**\r\n * @author qiao / https://github.com/qiao\r\n * @author mrdoob / http://mrdoob.com\r\n * @author alteredq / http://alteredqualia.com/\r\n * @author WestLangley / http://github.com/WestLangley\r\n * @author erich666 / http://erichaines.com\r\n */\r\n\r\n// This set of controls performs orbiting, dollying (zooming), and panning.\r\n// Unlike TrackballControls, it maintains the \"up\" direction object.up (+Y by default).\r\n//\r\n// Orbit - left mouse / touch: one-finger move\r\n// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish\r\n// Pan - right mouse, or left mouse + ctrl/metaKey, or arrow keys / touch: two-finger move\r\n\r\nTHREE.OrbitControls = function (object, domElement) {\r\n\r\n\tthis.object = object;\r\n\r\n\tthis.domElement = (domElement !== undefined) ? domElement : document;\r\n\r\n\t// Set to false to disable this control\r\n\tthis.enabled = true;\r\n\r\n\t// \"target\" sets the location of focus, where the object orbits around\r\n\tthis.target = new THREE.Vector3();\r\n\r\n\t// How far you can dolly in and out ( PerspectiveCamera only )\r\n\tthis.minDistance = 0;\r\n\tthis.maxDistance = Infinity;\r\n\r\n\t// How far you can zoom in and out ( OrthographicCamera only )\r\n\tthis.minZoom = 0;\r\n\tthis.maxZoom = Infinity;\r\n\r\n\t// How far you can orbit vertically, upper and lower limits.\r\n\t// Range is 0 to Math.PI radians.\r\n\tthis.minPolarAngle = 0; // radians\r\n\tthis.maxPolarAngle = Math.PI; // radians\r\n\r\n\t// How far you can orbit horizontally, upper and lower limits.\r\n\t// If set, must be a sub-interval of the interval [ - Math.PI, Math.PI ].\r\n\tthis.minAzimuthAngle = - Infinity; // radians\r\n\tthis.maxAzimuthAngle = Infinity; // radians\r\n\r\n\t// Set to true to enable damping (inertia)\r\n\t// If damping is enabled, you must call controls.update() in your animation loop\r\n\tthis.enableDamping = false;\r\n\tthis.dampingFactor = 0.25;\r\n\r\n\t// This option actually enables dollying in and out; left as \"zoom\" for backwards compatibility.\r\n\t// Set to false to disable zooming\r\n\tthis.enableZoom = true;\r\n\tthis.zoomSpeed = 1.0;\r\n\r\n\t// Set to false to disable rotating\r\n\tthis.enableRotate = true;\r\n\tthis.rotateSpeed = 1.0;\r\n\r\n\t// Set to false to disable panning\r\n\tthis.enablePan = true;\r\n\tthis.panSpeed = 1.0;\r\n\tthis.screenSpacePanning = false; // if true, pan in screen-space\r\n\tthis.keyPanSpeed = 7.0;\t// pixels moved per arrow key push\r\n\r\n\t// Set to true to automatically rotate around the target\r\n\t// If auto-rotate is enabled, you must call controls.update() in your animation loop\r\n\tthis.autoRotate = false;\r\n\tthis.autoRotateSpeed = 2.0; // 30 seconds per round when fps is 60\r\n\r\n\t// Set to false to disable use of the keys\r\n\tthis.enableKeys = true;\r\n\r\n\t// The four arrow keys\r\n\tthis.keys = { LEFT: 37, UP: 38, RIGHT: 39, BOTTOM: 40 };\r\n\r\n\t// Mouse buttons\r\n\tthis.mouseButtons = { LEFT: THREE.MOUSE.LEFT, MIDDLE: THREE.MOUSE.MIDDLE, RIGHT: THREE.MOUSE.RIGHT };\r\n\r\n\t// for reset\r\n\tthis.target0 = this.target.clone();\r\n\tthis.position0 = this.object.position.clone();\r\n\tthis.zoom0 = this.object.zoom;\r\n\r\n\t//\r\n\t// public methods\r\n\t//\r\n\r\n\tthis.getPolarAngle = function () {\r\n\r\n\t\treturn spherical.phi;\r\n\r\n\t};\r\n\r\n\tthis.getAzimuthalAngle = function () {\r\n\r\n\t\treturn spherical.theta;\r\n\r\n\t};\r\n\r\n\tthis.saveState = function () {\r\n\r\n\t\tscope.target0.copy(scope.target);\r\n\t\tscope.position0.copy(scope.object.position);\r\n\t\tscope.zoom0 = scope.object.zoom;\r\n\r\n\t};\r\n\r\n\tthis.reset = function () {\r\n\r\n\t\tscope.target.copy(scope.target0);\r\n\t\tscope.object.position.copy(scope.position0);\r\n\t\tscope.object.zoom = scope.zoom0;\r\n\r\n\t\tscope.object.updateProjectionMatrix();\r\n\t\tscope.dispatchEvent(changeEvent);\r\n\r\n\t\tscope.update();\r\n\r\n\t\tstate = STATE.NONE;\r\n\r\n\t};\r\n\r\n\tthis.handleResize = function () {\r\n\r\n\t}\r\n\r\n\t// this method is exposed, but perhaps it would be better if we can make it private...\r\n\tthis.update = function () {\r\n\r\n\t\tvar offset = new THREE.Vector3();\r\n\r\n\t\t// so camera.up is the orbit axis\r\n\t\tvar quat = new THREE.Quaternion().setFromUnitVectors(object.up, new THREE.Vector3(0, 1, 0));\r\n\t\tvar quatInverse = quat.clone().inverse();\r\n\r\n\t\tvar lastPosition = new THREE.Vector3();\r\n\t\tvar lastQuaternion = new THREE.Quaternion();\r\n\r\n\t\treturn function update() {\r\n\r\n\t\t\tvar position = scope.object.position;\r\n\r\n\t\t\toffset.copy(position).sub(scope.target);\r\n\r\n\t\t\t// rotate offset to \"y-axis-is-up\" space\r\n\t\t\toffset.applyQuaternion(quat);\r\n\r\n\t\t\t// angle from z-axis around y-axis\r\n\t\t\tspherical.setFromVector3(offset);\r\n\r\n\t\t\tif (scope.autoRotate && state === STATE.NONE) {\r\n\r\n\t\t\t\trotateLeft(getAutoRotationAngle());\r\n\r\n\t\t\t}\r\n\r\n\t\t\tspherical.theta += sphericalDelta.theta;\r\n\t\t\tspherical.phi += sphericalDelta.phi;\r\n\r\n\t\t\t// restrict theta to be between desired limits\r\n\t\t\tspherical.theta = Math.max(scope.minAzimuthAngle, Math.min(scope.maxAzimuthAngle, spherical.theta));\r\n\r\n\t\t\t// restrict phi to be between desired limits\r\n\t\t\tspherical.phi = Math.max(scope.minPolarAngle, Math.min(scope.maxPolarAngle, spherical.phi));\r\n\r\n\t\t\tspherical.makeSafe();\r\n\r\n\r\n\t\t\tspherical.radius *= scale;\r\n\r\n\t\t\t// restrict radius to be between desired limits\r\n\t\t\tspherical.radius = Math.max(scope.minDistance, Math.min(scope.maxDistance, spherical.radius));\r\n\r\n\t\t\t// move target to panned location\r\n\t\t\tscope.target.add(panOffset);\r\n\r\n\t\t\toffset.setFromSpherical(spherical);\r\n\r\n\t\t\t// rotate offset back to \"camera-up-vector-is-up\" space\r\n\t\t\toffset.applyQuaternion(quatInverse);\r\n\r\n\t\t\tposition.copy(scope.target).add(offset);\r\n\r\n\t\t\tscope.object.lookAt(scope.target);\r\n\r\n\t\t\tif (scope.enableDamping === true) {\r\n\r\n\t\t\t\tsphericalDelta.theta *= (1 - scope.dampingFactor);\r\n\t\t\t\tsphericalDelta.phi *= (1 - scope.dampingFactor);\r\n\r\n\t\t\t\tpanOffset.multiplyScalar(1 - scope.dampingFactor);\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tsphericalDelta.set(0, 0, 0);\r\n\r\n\t\t\t\tpanOffset.set(0, 0, 0);\r\n\r\n\t\t\t}\r\n\r\n\t\t\tscale = 1;\r\n\r\n\t\t\t// update condition is:\r\n\t\t\t// min(camera displacement, camera rotation in radians)^2 > EPS\r\n\t\t\t// using small-angle approximation cos(x/2) = 1 - x^2 / 8\r\n\r\n\t\t\tif (zoomChanged ||\r\n\t\t\t\tlastPosition.distanceToSquared(scope.object.position) > EPS ||\r\n\t\t\t\t8 * (1 - lastQuaternion.dot(scope.object.quaternion)) > EPS) {\r\n\r\n\t\t\t\tscope.dispatchEvent(changeEvent);\r\n\r\n\t\t\t\tlastPosition.copy(scope.object.position);\r\n\t\t\t\tlastQuaternion.copy(scope.object.quaternion);\r\n\t\t\t\tzoomChanged = false;\r\n\r\n\t\t\t\treturn true;\r\n\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\r\n\t\t};\r\n\r\n\t}();\r\n\r\n\tthis.dispose = function () {\r\n\r\n\t\tscope.domElement.removeEventListener('contextmenu', onContextMenu, false);\r\n\t\tscope.domElement.removeEventListener('mousedown', onMouseDown, false);\r\n\t\tscope.domElement.removeEventListener('wheel', onMouseWheel, false);\r\n\r\n\t\tscope.domElement.removeEventListener('touchstart', onTouchStart, false);\r\n\t\tscope.domElement.removeEventListener('touchend', onTouchEnd, false);\r\n\t\tscope.domElement.removeEventListener('touchmove', onTouchMove, false);\r\n\r\n\t\tdocument.removeEventListener('mousemove', onMouseMove, false);\r\n\t\tdocument.removeEventListener('mouseup', onMouseUp, false);\r\n\r\n\t\twindow.removeEventListener('keydown', onKeyDown, false);\r\n\r\n\t\t//scope.dispatchEvent( { type: 'dispose' } ); // should this be added here?\r\n\r\n\t};\r\n\r\n\t//\r\n\t// internals\r\n\t//\r\n\r\n\tvar scope = this;\r\n\r\n\tvar changeEvent = { type: 'change' };\r\n\tvar startEvent = { type: 'start' };\r\n\tvar endEvent = { type: 'end' };\r\n\r\n\tvar STATE = { NONE: - 1, ROTATE: 0, DOLLY: 1, PAN: 2, TOUCH_ROTATE: 3, TOUCH_DOLLY_PAN: 4 };\r\n\r\n\tvar state = STATE.NONE;\r\n\r\n\tvar EPS = 0.000001;\r\n\r\n\t// current position in spherical coordinates\r\n\tvar spherical = new THREE.Spherical();\r\n\tvar sphericalDelta = new THREE.Spherical();\r\n\r\n\tvar scale = 1;\r\n\tvar panOffset = new THREE.Vector3();\r\n\tvar zoomChanged = false;\r\n\r\n\tvar rotateStart = new THREE.Vector2();\r\n\tvar rotateEnd = new THREE.Vector2();\r\n\tvar rotateDelta = new THREE.Vector2();\r\n\r\n\tvar panStart = new THREE.Vector2();\r\n\tvar panEnd = new THREE.Vector2();\r\n\tvar panDelta = new THREE.Vector2();\r\n\r\n\tvar dollyStart = new THREE.Vector2();\r\n\tvar dollyEnd = new THREE.Vector2();\r\n\tvar dollyDelta = new THREE.Vector2();\r\n\r\n\tfunction getAutoRotationAngle() {\r\n\r\n\t\treturn 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed;\r\n\r\n\t}\r\n\r\n\tfunction getZoomScale() {\r\n\r\n\t\treturn Math.pow(0.95, scope.zoomSpeed);\r\n\r\n\t}\r\n\r\n\tfunction rotateLeft(angle) {\r\n\r\n\t\tsphericalDelta.theta -= angle;\r\n\r\n\t}\r\n\r\n\tfunction rotateUp(angle) {\r\n\r\n\t\tsphericalDelta.phi -= angle;\r\n\r\n\t}\r\n\r\n\tvar panLeft = function () {\r\n\r\n\t\tvar v = new THREE.Vector3();\r\n\r\n\t\treturn function panLeft(distance, objectMatrix) {\r\n\r\n\t\t\tv.setFromMatrixColumn(objectMatrix, 0); // get X column of objectMatrix\r\n\t\t\tv.multiplyScalar(- distance);\r\n\r\n\t\t\tpanOffset.add(v);\r\n\r\n\t\t};\r\n\r\n\t}();\r\n\r\n\tvar panUp = function () {\r\n\r\n\t\tvar v = new THREE.Vector3();\r\n\r\n\t\treturn function panUp(distance, objectMatrix) {\r\n\r\n\t\t\tif (scope.screenSpacePanning === true) {\r\n\r\n\t\t\t\tv.setFromMatrixColumn(objectMatrix, 1);\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tv.setFromMatrixColumn(objectMatrix, 0);\r\n\t\t\t\tv.crossVectors(scope.object.up, v);\r\n\r\n\t\t\t}\r\n\r\n\t\t\tv.multiplyScalar(distance);\r\n\r\n\t\t\tpanOffset.add(v);\r\n\r\n\t\t};\r\n\r\n\t}();\r\n\r\n\t// deltaX and deltaY are in pixels; right and down are positive\r\n\tvar pan = function () {\r\n\r\n\t\tvar offset = new THREE.Vector3();\r\n\r\n\t\treturn function pan(deltaX, deltaY) {\r\n\r\n\t\t\tvar element = scope.domElement === document ? scope.domElement.body : scope.domElement;\r\n\r\n\t\t\tif (scope.object.isPerspectiveCamera) {\r\n\r\n\t\t\t\t// perspective\r\n\t\t\t\tvar position = scope.object.position;\r\n\t\t\t\toffset.copy(position).sub(scope.target);\r\n\t\t\t\tvar targetDistance = offset.length();\r\n\r\n\t\t\t\t// half of the fov is center to top of screen\r\n\t\t\t\ttargetDistance *= Math.tan((scope.object.fov / 2) * Math.PI / 180.0);\r\n\r\n\t\t\t\t// we use only clientHeight here so aspect ratio does not distort speed\r\n\t\t\t\tpanLeft(2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix);\r\n\t\t\t\tpanUp(2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix);\r\n\r\n\t\t\t} else if (scope.object.isOrthographicCamera) {\r\n\r\n\t\t\t\t// orthographic\r\n\t\t\t\tpanLeft(deltaX * (scope.object.right - scope.object.left) / scope.object.zoom / element.clientWidth, scope.object.matrix);\r\n\t\t\t\tpanUp(deltaY * (scope.object.top - scope.object.bottom) / scope.object.zoom / element.clientHeight, scope.object.matrix);\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\t// camera neither orthographic nor perspective\r\n\t\t\t\tconsole.warn('WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.');\r\n\t\t\t\tscope.enablePan = false;\r\n\r\n\t\t\t}\r\n\r\n\t\t};\r\n\r\n\t}();\r\n\r\n\tfunction dollyIn(dollyScale) {\r\n\r\n\t\tif (scope.object.isPerspectiveCamera) {\r\n\r\n\t\t\tscale /= dollyScale;\r\n\r\n\t\t} else if (scope.object.isOrthographicCamera) {\r\n\r\n\t\t\tscope.object.zoom = Math.max(scope.minZoom, Math.min(scope.maxZoom, scope.object.zoom * dollyScale));\r\n\t\t\tscope.object.updateProjectionMatrix();\r\n\t\t\tzoomChanged = true;\r\n\r\n\t\t} else {\r\n\r\n\t\t\tconsole.warn('WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.');\r\n\t\t\tscope.enableZoom = false;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction dollyOut(dollyScale) {\r\n\r\n\t\tif (scope.object.isPerspectiveCamera) {\r\n\r\n\t\t\tscale *= dollyScale;\r\n\r\n\t\t} else if (scope.object.isOrthographicCamera) {\r\n\r\n\t\t\tscope.object.zoom = Math.max(scope.minZoom, Math.min(scope.maxZoom, scope.object.zoom / dollyScale));\r\n\t\t\tscope.object.updateProjectionMatrix();\r\n\t\t\tzoomChanged = true;\r\n\r\n\t\t} else {\r\n\r\n\t\t\tconsole.warn('WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.');\r\n\t\t\tscope.enableZoom = false;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t//\r\n\t// event callbacks - update the object state\r\n\t//\r\n\r\n\tfunction handleMouseDownRotate(event) {\r\n\r\n\t\t//console.log( 'handleMouseDownRotate' );\r\n\r\n\t\trotateStart.set(event.clientX, event.clientY);\r\n\r\n\t}\r\n\r\n\tfunction handleMouseDownDolly(event) {\r\n\r\n\t\t//console.log( 'handleMouseDownDolly' );\r\n\r\n\t\tdollyStart.set(event.clientX, event.clientY);\r\n\r\n\t}\r\n\r\n\tfunction handleMouseDownPan(event) {\r\n\r\n\t\t//console.log( 'handleMouseDownPan' );\r\n\r\n\t\tpanStart.set(event.clientX, event.clientY);\r\n\r\n\t}\r\n\r\n\tfunction handleMouseMoveRotate(event) {\r\n\r\n\t\t//console.log( 'handleMouseMoveRotate' );\r\n\r\n\t\trotateEnd.set(event.clientX, event.clientY);\r\n\r\n\t\trotateDelta.subVectors(rotateEnd, rotateStart).multiplyScalar(scope.rotateSpeed);\r\n\r\n\t\tvar element = scope.domElement === document ? scope.domElement.body : scope.domElement;\r\n\r\n\t\trotateLeft(2 * Math.PI * rotateDelta.x / element.clientHeight); // yes, height\r\n\r\n\t\trotateUp(2 * Math.PI * rotateDelta.y / element.clientHeight);\r\n\r\n\t\trotateStart.copy(rotateEnd);\r\n\r\n\t\tscope.update();\r\n\r\n\t}\r\n\r\n\tfunction handleMouseMoveDolly(event) {\r\n\r\n\t\t//console.log( 'handleMouseMoveDolly' );\r\n\r\n\t\tdollyEnd.set(event.clientX, event.clientY);\r\n\r\n\t\tdollyDelta.subVectors(dollyEnd, dollyStart);\r\n\r\n\t\tif (dollyDelta.y > 0) {\r\n\r\n\t\t\tdollyIn(getZoomScale());\r\n\r\n\t\t} else if (dollyDelta.y < 0) {\r\n\r\n\t\t\tdollyOut(getZoomScale());\r\n\r\n\t\t}\r\n\r\n\t\tdollyStart.copy(dollyEnd);\r\n\r\n\t\tscope.update();\r\n\r\n\t}\r\n\r\n\tfunction handleMouseMovePan(event) {\r\n\r\n\t\t//console.log( 'handleMouseMovePan' );\r\n\r\n\t\tpanEnd.set(event.clientX, event.clientY);\r\n\r\n\t\tpanDelta.subVectors(panEnd, panStart).multiplyScalar(scope.panSpeed);\r\n\r\n\t\tpan(panDelta.x, panDelta.y);\r\n\r\n\t\tpanStart.copy(panEnd);\r\n\r\n\t\tscope.update();\r\n\r\n\t}\r\n\r\n\tfunction handleMouseUp(event) {\r\n\r\n\t\t// console.log( 'handleMouseUp' );\r\n\r\n\t}\r\n\r\n\tfunction handleMouseWheel(event) {\r\n\r\n\t\t// console.log( 'handleMouseWheel' );\r\n\r\n\t\tif (event.deltaY < 0) {\r\n\r\n\t\t\tdollyOut(getZoomScale());\r\n\r\n\t\t} else if (event.deltaY > 0) {\r\n\r\n\t\t\tdollyIn(getZoomScale());\r\n\r\n\t\t}\r\n\r\n\t\tscope.update();\r\n\r\n\t}\r\n\r\n\tfunction handleKeyDown(event) {\r\n\r\n\t\t//console.log( 'handleKeyDown' );\r\n\r\n\t\tswitch (event.keyCode) {\r\n\r\n\t\t\tcase scope.keys.UP:\r\n\t\t\t\tpan(0, scope.keyPanSpeed);\r\n\t\t\t\tscope.update();\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase scope.keys.BOTTOM:\r\n\t\t\t\tpan(0, - scope.keyPanSpeed);\r\n\t\t\t\tscope.update();\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase scope.keys.LEFT:\r\n\t\t\t\tpan(scope.keyPanSpeed, 0);\r\n\t\t\t\tscope.update();\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase scope.keys.RIGHT:\r\n\t\t\t\tpan(- scope.keyPanSpeed, 0);\r\n\t\t\t\tscope.update();\r\n\t\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction handleTouchStartRotate(event) {\r\n\r\n\t\t//console.log( 'handleTouchStartRotate' );\r\n\r\n\t\trotateStart.set(event.touches[0].pageX, event.touches[0].pageY);\r\n\r\n\t}\r\n\r\n\tfunction handleTouchStartDollyPan(event) {\r\n\r\n\t\t//console.log( 'handleTouchStartDollyPan' );\r\n\r\n\t\tif (scope.enableZoom) {\r\n\r\n\t\t\tvar dx = event.touches[0].pageX - event.touches[1].pageX;\r\n\t\t\tvar dy = event.touches[0].pageY - event.touches[1].pageY;\r\n\r\n\t\t\tvar distance = Math.sqrt(dx * dx + dy * dy);\r\n\r\n\t\t\tdollyStart.set(0, distance);\r\n\r\n\t\t}\r\n\r\n\t\tif (scope.enablePan) {\r\n\r\n\t\t\tvar x = 0.5 * (event.touches[0].pageX + event.touches[1].pageX);\r\n\t\t\tvar y = 0.5 * (event.touches[0].pageY + event.touches[1].pageY);\r\n\r\n\t\t\tpanStart.set(x, y);\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction handleTouchMoveRotate(event) {\r\n\r\n\t\t//console.log( 'handleTouchMoveRotate' );\r\n\r\n\t\trotateEnd.set(event.touches[0].pageX, event.touches[0].pageY);\r\n\r\n\t\trotateDelta.subVectors(rotateEnd, rotateStart).multiplyScalar(scope.rotateSpeed);\r\n\r\n\t\tvar element = scope.domElement === document ? scope.domElement.body : scope.domElement;\r\n\r\n\t\trotateLeft(2 * Math.PI * rotateDelta.x / element.clientHeight); // yes, height\r\n\r\n\t\trotateUp(2 * Math.PI * rotateDelta.y / element.clientHeight);\r\n\r\n\t\trotateStart.copy(rotateEnd);\r\n\r\n\t\tscope.update();\r\n\r\n\t}\r\n\r\n\tfunction handleTouchMoveDollyPan(event) {\r\n\r\n\t\t//console.log( 'handleTouchMoveDollyPan' );\r\n\r\n\t\tif (scope.enableZoom) {\r\n\r\n\t\t\tvar dx = event.touches[0].pageX - event.touches[1].pageX;\r\n\t\t\tvar dy = event.touches[0].pageY - event.touches[1].pageY;\r\n\r\n\t\t\tvar distance = Math.sqrt(dx * dx + dy * dy);\r\n\r\n\t\t\tdollyEnd.set(0, distance);\r\n\r\n\t\t\tdollyDelta.set(0, Math.pow(dollyEnd.y / dollyStart.y, scope.zoomSpeed));\r\n\r\n\t\t\tdollyIn(dollyDelta.y);\r\n\r\n\t\t\tdollyStart.copy(dollyEnd);\r\n\r\n\t\t}\r\n\r\n\t\tif (scope.enablePan) {\r\n\r\n\t\t\tvar x = 0.5 * (event.touches[0].pageX + event.touches[1].pageX);\r\n\t\t\tvar y = 0.5 * (event.touches[0].pageY + event.touches[1].pageY);\r\n\r\n\t\t\tpanEnd.set(x, y);\r\n\r\n\t\t\tpanDelta.subVectors(panEnd, panStart).multiplyScalar(scope.panSpeed);\r\n\r\n\t\t\tpan(panDelta.x, panDelta.y);\r\n\r\n\t\t\tpanStart.copy(panEnd);\r\n\r\n\t\t}\r\n\r\n\t\tscope.update();\r\n\r\n\t}\r\n\r\n\tfunction handleTouchEnd(event) {\r\n\r\n\t\t//console.log( 'handleTouchEnd' );\r\n\r\n\t}\r\n\r\n\t//\r\n\t// event handlers - FSM: listen for events and reset state\r\n\t//\r\n\r\n\tfunction onMouseDown(event) {\r\n\r\n\t\tif (scope.enabled === false) return;\r\n\r\n\t\tevent.preventDefault();\r\n\r\n\t\tswitch (event.button) {\r\n\r\n\t\t\tcase scope.mouseButtons.LEFT:\r\n\r\n\t\t\t\tif (event.ctrlKey || event.metaKey) {\r\n\r\n\t\t\t\t\tif (scope.enablePan === false) return;\r\n\r\n\t\t\t\t\thandleMouseDownPan(event);\r\n\r\n\t\t\t\t\tstate = STATE.PAN;\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tif (scope.enableRotate === false) return;\r\n\r\n\t\t\t\t\thandleMouseDownRotate(event);\r\n\r\n\t\t\t\t\tstate = STATE.ROTATE;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase scope.mouseButtons.MIDDLE:\r\n\r\n\t\t\t\tif (scope.enableZoom === false) return;\r\n\r\n\t\t\t\thandleMouseDownDolly(event);\r\n\r\n\t\t\t\tstate = STATE.DOLLY;\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase scope.mouseButtons.RIGHT:\r\n\r\n\t\t\t\tif (scope.enablePan === false) return;\r\n\r\n\t\t\t\thandleMouseDownPan(event);\r\n\r\n\t\t\t\tstate = STATE.PAN;\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t\tif (state !== STATE.NONE) {\r\n\r\n\t\t\tdocument.addEventListener('mousemove', onMouseMove, false);\r\n\t\t\tdocument.addEventListener('mouseup', onMouseUp, false);\r\n\r\n\t\t\tscope.dispatchEvent(startEvent);\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction onMouseMove(event) {\r\n\r\n\t\tif (scope.enabled === false) return;\r\n\r\n\t\tevent.preventDefault();\r\n\r\n\t\tswitch (state) {\r\n\r\n\t\t\tcase STATE.ROTATE:\r\n\r\n\t\t\t\tif (scope.enableRotate === false) return;\r\n\r\n\t\t\t\thandleMouseMoveRotate(event);\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase STATE.DOLLY:\r\n\r\n\t\t\t\tif (scope.enableZoom === false) return;\r\n\r\n\t\t\t\thandleMouseMoveDolly(event);\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase STATE.PAN:\r\n\r\n\t\t\t\tif (scope.enablePan === false) return;\r\n\r\n\t\t\t\thandleMouseMovePan(event);\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction onMouseUp(event) {\r\n\r\n\t\tif (scope.enabled === false) return;\r\n\r\n\t\thandleMouseUp(event);\r\n\r\n\t\tdocument.removeEventListener('mousemove', onMouseMove, false);\r\n\t\tdocument.removeEventListener('mouseup', onMouseUp, false);\r\n\r\n\t\tscope.dispatchEvent(endEvent);\r\n\r\n\t\tstate = STATE.NONE;\r\n\r\n\t}\r\n\r\n\tfunction onMouseWheel(event) {\r\n\r\n\t\tif (scope.enabled === false || scope.enableZoom === false || (state !== STATE.NONE && state !== STATE.ROTATE)) return;\r\n\r\n\t\tevent.preventDefault();\r\n\t\tevent.stopPropagation();\r\n\r\n\t\tscope.dispatchEvent(startEvent);\r\n\r\n\t\thandleMouseWheel(event);\r\n\r\n\t\tscope.dispatchEvent(endEvent);\r\n\r\n\t}\r\n\r\n\tfunction onKeyDown(event) {\r\n\r\n\t\tif (scope.enabled === false || scope.enableKeys === false || scope.enablePan === false) return;\r\n\r\n\t\thandleKeyDown(event);\r\n\r\n\t}\r\n\r\n\tfunction onTouchStart(event) {\r\n\r\n\t\tif (scope.enabled === false) return;\r\n\r\n\t\tevent.preventDefault();\r\n\r\n\t\tswitch (event.touches.length) {\r\n\r\n\t\t\tcase 1:\t// one-fingered touch: rotate\r\n\r\n\t\t\t\tif (scope.enableRotate === false) return;\r\n\r\n\t\t\t\thandleTouchStartRotate(event);\r\n\r\n\t\t\t\tstate = STATE.TOUCH_ROTATE;\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 2:\t// two-fingered touch: dolly-pan\r\n\r\n\t\t\t\tif (scope.enableZoom === false && scope.enablePan === false) return;\r\n\r\n\t\t\t\thandleTouchStartDollyPan(event);\r\n\r\n\t\t\t\tstate = STATE.TOUCH_DOLLY_PAN;\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\r\n\t\t\t\tstate = STATE.NONE;\r\n\r\n\t\t}\r\n\r\n\t\tif (state !== STATE.NONE) {\r\n\r\n\t\t\tscope.dispatchEvent(startEvent);\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction onTouchMove(event) {\r\n\r\n\t\tif (scope.enabled === false) return;\r\n\r\n\t\tevent.preventDefault();\r\n\t\tevent.stopPropagation();\r\n\r\n\t\tswitch (event.touches.length) {\r\n\r\n\t\t\tcase 1: // one-fingered touch: rotate\r\n\r\n\t\t\t\tif (scope.enableRotate === false) return;\r\n\t\t\t\tif (state !== STATE.TOUCH_ROTATE) return; // is this needed?\r\n\r\n\t\t\t\thandleTouchMoveRotate(event);\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 2: // two-fingered touch: dolly-pan\r\n\r\n\t\t\t\tif (scope.enableZoom === false && scope.enablePan === false) return;\r\n\t\t\t\tif (state !== STATE.TOUCH_DOLLY_PAN) return; // is this needed?\r\n\r\n\t\t\t\thandleTouchMoveDollyPan(event);\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\r\n\t\t\t\tstate = STATE.NONE;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction onTouchEnd(event) {\r\n\r\n\t\tif (scope.enabled === false) return;\r\n\r\n\t\thandleTouchEnd(event);\r\n\r\n\t\tscope.dispatchEvent(endEvent);\r\n\r\n\t\tstate = STATE.NONE;\r\n\r\n\t}\r\n\r\n\tfunction onContextMenu(event) {\r\n\r\n\t\tif (scope.enabled === false) return;\r\n\r\n\t\tevent.preventDefault();\r\n\r\n\t}\r\n\r\n\t//\r\n\r\n\tscope.domElement.addEventListener('contextmenu', onContextMenu, false);\r\n\r\n\tscope.domElement.addEventListener('mousedown', onMouseDown, false);\r\n\tscope.domElement.addEventListener('wheel', onMouseWheel, false);\r\n\r\n\tscope.domElement.addEventListener('touchstart', onTouchStart, false);\r\n\tscope.domElement.addEventListener('touchend', onTouchEnd, false);\r\n\tscope.domElement.addEventListener('touchmove', onTouchMove, false);\r\n\r\n\twindow.addEventListener('keydown', onKeyDown, false);\r\n\r\n\t// force an update at start\r\n\r\n\tthis.update();\r\n\r\n};\r\n\r\nTHREE.OrbitControls.prototype = Object.create(THREE.EventDispatcher.prototype);\r\nTHREE.OrbitControls.prototype.constructor = THREE.OrbitControls;\r\n\r\nObject.defineProperties(THREE.OrbitControls.prototype, {\r\n\r\n\tcenter: {\r\n\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn('THREE.OrbitControls: .center has been renamed to .target');\r\n\t\t\treturn this.target;\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t// backward compatibility\r\n\r\n\tnoZoom: {\r\n\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn('THREE.OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.');\r\n\t\t\treturn !this.enableZoom;\r\n\r\n\t\t},\r\n\r\n\t\tset: function (value) {\r\n\r\n\t\t\tconsole.warn('THREE.OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.');\r\n\t\t\tthis.enableZoom = !value;\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tnoRotate: {\r\n\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn('THREE.OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.');\r\n\t\t\treturn !this.enableRotate;\r\n\r\n\t\t},\r\n\r\n\t\tset: function (value) {\r\n\r\n\t\t\tconsole.warn('THREE.OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.');\r\n\t\t\tthis.enableRotate = !value;\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tnoPan: {\r\n\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn('THREE.OrbitControls: .noPan has been deprecated. Use .enablePan instead.');\r\n\t\t\treturn !this.enablePan;\r\n\r\n\t\t},\r\n\r\n\t\tset: function (value) {\r\n\r\n\t\t\tconsole.warn('THREE.OrbitControls: .noPan has been deprecated. Use .enablePan instead.');\r\n\t\t\tthis.enablePan = !value;\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tnoKeys: {\r\n\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn('THREE.OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.');\r\n\t\t\treturn !this.enableKeys;\r\n\r\n\t\t},\r\n\r\n\t\tset: function (value) {\r\n\r\n\t\t\tconsole.warn('THREE.OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.');\r\n\t\t\tthis.enableKeys = !value;\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tstaticMoving: {\r\n\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn('THREE.OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.');\r\n\t\t\treturn !this.enableDamping;\r\n\r\n\t\t},\r\n\r\n\t\tset: function (value) {\r\n\r\n\t\t\tconsole.warn('THREE.OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.');\r\n\t\t\tthis.enableDamping = !value;\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tdynamicDampingFactor: {\r\n\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn('THREE.OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.');\r\n\t\t\treturn this.dampingFactor;\r\n\r\n\t\t},\r\n\r\n\t\tset: function (value) {\r\n\r\n\t\t\tconsole.warn('THREE.OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.');\r\n\t\t\tthis.dampingFactor = value;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n});\r\n\r\nlet OrbitControls = THREE.OrbitControls;\r\nexport { OrbitControls }","/**\n *\n *\n * @author Jerry Bendy \n * @licence MIT\n *\n */\n\n(function(self) {\n 'use strict';\n\n var nativeURLSearchParams = (function() {\n // #41 Fix issue in RN\n try {\n if (self.URLSearchParams && (new self.URLSearchParams('foo=bar')).get('foo') === 'bar') {\n return self.URLSearchParams;\n }\n } catch (e) {}\n return null;\n })(),\n isSupportObjectConstructor = nativeURLSearchParams && (new nativeURLSearchParams({a: 1})).toString() === 'a=1',\n // There is a bug in safari 10.1 (and earlier) that incorrectly decodes `%2B` as an empty space and not a plus.\n decodesPlusesCorrectly = nativeURLSearchParams && (new nativeURLSearchParams('s=%2B').get('s') === '+'),\n __URLSearchParams__ = \"__URLSearchParams__\",\n // Fix bug in Edge which cannot encode ' &' correctly\n encodesAmpersandsCorrectly = nativeURLSearchParams ? (function() {\n var ampersandTest = new nativeURLSearchParams();\n ampersandTest.append('s', ' &');\n return ampersandTest.toString() === 's=+%26';\n })() : true,\n prototype = URLSearchParamsPolyfill.prototype,\n iterable = !!(self.Symbol && self.Symbol.iterator);\n\n if (nativeURLSearchParams && isSupportObjectConstructor && decodesPlusesCorrectly && encodesAmpersandsCorrectly) {\n return;\n }\n\n\n /**\n * Make a URLSearchParams instance\n *\n * @param {object|string|URLSearchParams} search\n * @constructor\n */\n function URLSearchParamsPolyfill(search) {\n search = search || \"\";\n\n // support construct object with another URLSearchParams instance\n if (search instanceof URLSearchParams || search instanceof URLSearchParamsPolyfill) {\n search = search.toString();\n }\n this [__URLSearchParams__] = parseToDict(search);\n }\n\n\n /**\n * Appends a specified key/value pair as a new search parameter.\n *\n * @param {string} name\n * @param {string} value\n */\n prototype.append = function(name, value) {\n appendTo(this [__URLSearchParams__], name, value);\n };\n\n /**\n * Deletes the given search parameter, and its associated value,\n * from the list of all search parameters.\n *\n * @param {string} name\n */\n prototype['delete'] = function(name) {\n delete this [__URLSearchParams__] [name];\n };\n\n /**\n * Returns the first value associated to the given search parameter.\n *\n * @param {string} name\n * @returns {string|null}\n */\n prototype.get = function(name) {\n var dict = this [__URLSearchParams__];\n return this.has(name) ? dict[name][0] : null;\n };\n\n /**\n * Returns all the values association with a given search parameter.\n *\n * @param {string} name\n * @returns {Array}\n */\n prototype.getAll = function(name) {\n var dict = this [__URLSearchParams__];\n return this.has(name) ? dict [name].slice(0) : [];\n };\n\n /**\n * Returns a Boolean indicating if such a search parameter exists.\n *\n * @param {string} name\n * @returns {boolean}\n */\n prototype.has = function(name) {\n return hasOwnProperty(this [__URLSearchParams__], name);\n };\n\n /**\n * Sets the value associated to a given search parameter to\n * the given value. If there were several values, delete the\n * others.\n *\n * @param {string} name\n * @param {string} value\n */\n prototype.set = function set(name, value) {\n this [__URLSearchParams__][name] = ['' + value];\n };\n\n /**\n * Returns a string containg a query string suitable for use in a URL.\n *\n * @returns {string}\n */\n prototype.toString = function() {\n var dict = this[__URLSearchParams__], query = [], i, key, name, value;\n for (key in dict) {\n name = encode(key);\n for (i = 0, value = dict[key]; i < value.length; i++) {\n query.push(name + '=' + encode(value[i]));\n }\n }\n return query.join('&');\n };\n\n // There is a bug in Safari 10.1 and `Proxy`ing it is not enough.\n var forSureUsePolyfill = !decodesPlusesCorrectly;\n var useProxy = (!forSureUsePolyfill && nativeURLSearchParams && !isSupportObjectConstructor && self.Proxy);\n var propValue; \n if (useProxy) {\n // Safari 10.0 doesn't support Proxy, so it won't extend URLSearchParams on safari 10.0\n propValue = new Proxy(nativeURLSearchParams, {\n construct: function (target, args) {\n return new target((new URLSearchParamsPolyfill(args[0]).toString()));\n }\n })\n // Chrome <=60 .toString() on a function proxy got error \"Function.prototype.toString is not generic\"\n propValue.toString = Function.prototype.toString.bind(URLSearchParamsPolyfill);\n } else {\n propValue = URLSearchParamsPolyfill;\n }\n /*\n * Apply polifill to global object and append other prototype into it\n */\n Object.defineProperty(self, 'URLSearchParams', {\n value: propValue\n });\n\n var USPProto = self.URLSearchParams.prototype;\n\n USPProto.polyfill = true;\n\n /**\n *\n * @param {function} callback\n * @param {object} thisArg\n */\n USPProto.forEach = USPProto.forEach || function(callback, thisArg) {\n var dict = parseToDict(this.toString());\n Object.getOwnPropertyNames(dict).forEach(function(name) {\n dict[name].forEach(function(value) {\n callback.call(thisArg, value, name, this);\n }, this);\n }, this);\n };\n\n /**\n * Sort all name-value pairs\n */\n USPProto.sort = USPProto.sort || function() {\n var dict = parseToDict(this.toString()), keys = [], k, i, j;\n for (k in dict) {\n keys.push(k);\n }\n keys.sort();\n\n for (i = 0; i < keys.length; i++) {\n this['delete'](keys[i]);\n }\n for (i = 0; i < keys.length; i++) {\n var key = keys[i], values = dict[key];\n for (j = 0; j < values.length; j++) {\n this.append(key, values[j]);\n }\n }\n };\n\n /**\n * Returns an iterator allowing to go through all keys of\n * the key/value pairs contained in this object.\n *\n * @returns {function}\n */\n USPProto.keys = USPProto.keys || function() {\n var items = [];\n this.forEach(function(item, name) {\n items.push(name);\n });\n return makeIterator(items);\n };\n\n /**\n * Returns an iterator allowing to go through all values of\n * the key/value pairs contained in this object.\n *\n * @returns {function}\n */\n USPProto.values = USPProto.values || function() {\n var items = [];\n this.forEach(function(item) {\n items.push(item);\n });\n return makeIterator(items);\n };\n\n /**\n * Returns an iterator allowing to go through all key/value\n * pairs contained in this object.\n *\n * @returns {function}\n */\n USPProto.entries = USPProto.entries || function() {\n var items = [];\n this.forEach(function(item, name) {\n items.push([name, item]);\n });\n return makeIterator(items);\n };\n\n\n if (iterable) {\n USPProto[self.Symbol.iterator] = USPProto[self.Symbol.iterator] || USPProto.entries;\n }\n\n\n function encode(str) {\n var replace = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'\\(\\)~]|%20|%00/g, function(match) {\n return replace[match];\n });\n }\n\n function decode(str) {\n return str\n .replace(/[ +]/g, '%20')\n .replace(/(%[a-f0-9]{2})+/ig, function(match) {\n return decodeURIComponent(match);\n });\n }\n\n function makeIterator(arr) {\n var iterator = {\n next: function() {\n var value = arr.shift();\n return {done: value === undefined, value: value};\n }\n };\n\n if (iterable) {\n iterator[self.Symbol.iterator] = function() {\n return iterator;\n };\n }\n\n return iterator;\n }\n\n function parseToDict(search) {\n var dict = {};\n\n if (typeof search === \"object\") {\n // if `search` is an array, treat it as a sequence\n if (isArray(search)) {\n for (var i = 0; i < search.length; i++) {\n var item = search[i];\n if (isArray(item) && item.length === 2) {\n appendTo(dict, item[0], item[1]);\n } else {\n throw new TypeError(\"Failed to construct 'URLSearchParams': Sequence initializer must only contain pair elements\");\n }\n }\n\n } else {\n for (var key in search) {\n if (search.hasOwnProperty(key)) {\n appendTo(dict, key, search[key]);\n }\n }\n }\n\n } else {\n // remove first '?'\n if (search.indexOf(\"?\") === 0) {\n search = search.slice(1);\n }\n\n var pairs = search.split(\"&\");\n for (var j = 0; j < pairs.length; j++) {\n var value = pairs [j],\n index = value.indexOf('=');\n\n if (-1 < index) {\n appendTo(dict, decode(value.slice(0, index)), decode(value.slice(index + 1)));\n\n } else {\n if (value) {\n appendTo(dict, decode(value), '');\n }\n }\n }\n }\n\n return dict;\n }\n\n function appendTo(dict, name, value) {\n var val = typeof value === 'string' ? value : (\n value !== null && value !== undefined && typeof value.toString === 'function' ? value.toString() : JSON.stringify(value)\n );\n\n // #47 Prevent using `hasOwnProperty` as a property name\n if (hasOwnProperty(dict, name)) {\n dict[name].push(val);\n } else {\n dict[name] = [val];\n }\n }\n\n function isArray(val) {\n return !!val && '[object Array]' === Object.prototype.toString.call(val);\n }\n\n function hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n }\n\n})(typeof global !== 'undefined' ? global : (typeof window !== 'undefined' ? window : this));\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = function(module) {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: function() {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","","// startup\n// Load entry module and return exports\n__webpack_require__(0);\n// This entry module is referenced by other modules so it can't be inlined\n__webpack_require__(288);\nvar __webpack_exports__ = __webpack_require__(307);\n",""],"names":["TWEEN","HotspotManager","ThreejsExtension","OrbitControls","cds","window","THREE","Object3D","prototype","getBoundingBox","Box3","setFromObject","getLength","v1","max","v2","min","dx","x","dy","y","dz","z","len","Math","sqrt","cadViewer","forceStudioProperties","MODE_SHADED","MODE_WIREFRAME","MODE_TRANSPARENT","VIEW_ISOMETRIC","VIEW_TOP","VIEW_LEFT","VIEW_BOTTOM","VIEW_RIGHT","ZOOM_MULTIPLIER","AMBIENT_COLOR","SPOTLIGHT_COLOR","SPOTLIGHT_INTENSITY","LOADING_ICON_URL","CANVAS_WIDTH","CANVAS_HEIGHT","CAM_DISTANCE","facing","ENVIRONMENT_MAP_URLS","ENVIRONMENT_MAP_LINK","targetList","parentElement","container","viewerHeight","viewerWidth","spotLight","ambientLight","camera","camera2","scene","scene2","overlayScene","renderer","renderer2","composer","controls","sceneObject","dimension","sceneBoundingBox","cameraPosX","cameraPosY","cameraPosZ","cameraRotX","cameraRotY","cameraRotZ","loadingIcon","isLoading","currentFileName","showBoundingBox","sceneBoundingBoxIndicator","INTERSECTED","raycaster","mouse","showSpinCenters","spinCenters","edgesHelpers","edgeOccluder","edgeEffect","originalSceneObjectMatertials","projector","isMouseDown","isRotated","translationSum","textureCube","previousPartAdded","bbs","clock","frameId","isMobile","prevViewerWidth","prevViewerHeight","isRenderingAllowed","cacheWebGLAvailability","cnt","hlColor","useCustomToolTipText","mouseSubscribed","openAssemblyInNewTab","annotationSubscribed","explosionSubscribed","firstWireframe","isMouseUp","originalVectors","undefined","explodedVectors","explodeEffect","Raycaster","Vector2","type","map","CLOUD","CASTLE","BRIDGE","CLOUDYDAY","DESERTHIGHWAY","AUTOSHOP","STUDIO6","STUDIO2","ROOM","ROCKY","FIELD","CITY","REFLECTION","REFRACTION","document","documentMode","parentElementId","currentRenderMode","isWebGLAvailable","console","log","ShaderChunk","map_fragment","replace","getElementById","createElement","setAttribute","appendChild","showPercentLoader","img","WebGLRenderer","antialias","preserveDrawingBuffer","clearColor","clearAlpha","alpha","stencil","logarithmicDepthBuffer","autoClear","self","domElement","addEventListener","e","preventDefault","cancelAnimationFrame","location","reload","THREEx","FullScreen","init","getViewerSize","setSize","setClearColor","gammaInput","gammaOutput","Scene","PerspectiveCamera","position","add","AmbientLight","SpotLight","set","target","TrackballControls","enableOrbitControl","hasOwnProperty","Clock","EffectComposer","addPass","RenderPass","ShaderPass","EdgeShader","uniforms","aspect","value","renderToScreen","enabled","setPixelRatio","devicePixelRatio","up","axes","AxesHelper","context","getProgramInfoLog","Projector","animate","onWindowResize","setTimeout","onMouseMove","onMouseDown","onMouseUp","onMouseDoubleClick","setHotspotPin","test","navigator","userAgent","matchMedia","matches","i","style","height","marginLeft","marginRight","visibility","onObjectFound","onComplete","childCount","children","length","traverse","pin","hotspotPin","msg","msgDiv","getElementsByClassName","parentNode","removeChild","clearInterval","animationMsgVar","div","className","p","innerText","margin","left","bottom","fontSize","zIndex","backgroundColor","borderRadius","color","body","asmUrl","exec","search","isAssembly","display","instancingEnabled","partFileSize","path","assemblyId","getAssemblyId","subAssemblyLoaded","cadFilePath","indexOf","checked","DoubleSide","TextureLoader","texture0","load","texture1","texture2","texture3","texture4","texture5","vector","Vector3","unproject","sub","normalize","intersections","intersectObjects","closeScene","cadDirectory","substr","lastIndexOf","split","pop","toLowerCase","loadRemoteScript","onSceneLoad","readJSON","filePath","json","loader","ObjectLoader","texturePath","RemoveLastDirectoryPartOf","setCrossOrigin","parseGeometries","threeExtension","parse","loadedScene","the_url","the_arr","join","dimensionDivElements","child","name","visible","studioUtils","dispose","urlToSceneObjectMap","partReplacement","remove","mesh","Mesh","geometry","material","object","clearBaseGridFromScene","shadows","removeShadows","canvas","names","WebGLRenderingContext","getContext","effectController","shininess","ka","kd","ks","metallic","hue","saturation","lightness","lhue","lsaturation","llightness","lx","ly","lz","newTess","lid","fitLid","nonblinn","newShading","h","gui","dat","GUI","addFolder","onChange","render","mode","stopAnimation","setObjectMaterialDepthAndSide","FrontSide","setObjectOpacity","removeWireframe","renderWireframe","depthTest","depthWrite","side","parent","opacity","isTransparent","Array","isArray","userData","initialOpacity","transparent","removeEdgesHelpers","geo","mat","wireframe","EdgesGeometry","LineBasicMaterial","linewidth","LineSegments","push","createEdgeOccluder","obj","Line","polygonOffset","polygonOffsetFactor","polygonOffsetUnits","clone","MeshBasicMaterial","scale","forEach","eh","view","resetCamera","center","getCenter","animateParam","distanceFromBoundingBox","noZoom","noPan","rotation","updateProjectionMatrix","bbox","homeBoundingBox","update","dist","distanceTo","annot2D","annot3D","toggleAnnotation","toggleHotspot","node","explode","getFromToPosition","from","to","copy","recursiveExplosion","traverseAndImplodeAssembly","annotationDisplayed","hotspotEnabled","displayAnnotations","boxhelper","getBoundingBoxOfObjects","bboxCenter","dataURL","toDataURL","available","activated","request","dimensions","dimensionObject","addDimensionHelpers","updateDimensionsWithCamera","arr","JSON","stringify","targets","axis","String","id","arrowPoint1Vect","arrowPoint2Vect","newwitnessLinePoint1","newwitnessLinePoint2","dimensionCordinates","box","centerBbox","midPointArrow","centerMidPointArrowVector","subVectors","round","distbBoxCenterToArrowMidPnt","arrow1witness1Dir","arrow2witness2Dir","raycaster1","Number","POSITIVE_INFINITY","hits1","intersectObject","point","raycaster2","hits2","includes","measure","getSize","BoxGeometry","cube","bbCenter","addLinearDimensionArrows","x1","y1","z1","x2","y2","z2","addLinearWitnessLine","index","extendDimensionFactor","arrowPoint1","witnessLinePoint1","arrowPoint2","witnessLinePoint2","arrow1arrow2Dir","factor","zDimension","negate","newPointOnBBox1","newArrowPoint1Vect","arrow1arrow2Vect","newPointOnBBox2","newArrowPoint2Vect","extendLinearDimensionWithTolerance","extendLinearDimension","dimensionCordinates1","j","dimensionCordinates2","isCreated","isLinearDimensionOnModelWithTolerance","checkarrowPoint1Vect","checkarrowPoint2Vect","checkwitnessLinePoint1","checkwitnessLinePoint2","isLinearDimensionOnModel","arrowPoint1VectX","arrowPoint2VectX","witnessLinePoint1X","witnessLinePoint2X","arrowPoint1VectY","arrowPoint2VectY","witnessLinePoint1Y","witnessLinePoint2Y","arrowPoint1VectZ","arrowPoint2VectZ","witnessLinePoint1Z","witnessLinePoint2Z","moveLinearDimensionToCenterOfModel","preProcessLinearDimension","drawLinearDimensionArrowsAndWitnessLine","hasElbow","addDiameterDimensionArrows","addElbowLineForDiameter","addRadiusDimensionArrows","addElbowLineForRadius","addAngleDimension","textLocation","drawArcWithArrow","toFixed","centerIn","start","end","vM","addVectors","multiplyScalar","dir","dotProduct","dot","vS","vE","angle","angleTo","divisions","aStep","pts","vecTemp","tri","Triangle","normal","applyAxisAngle","g","BufferGeometry","setFromPoints","m","LineDashedMaterial","l","arrowSizeFactor","arrow1Vect1","arrow1Vect2","drctn","coneGeometry","CylinderGeometry","translate","cone","matrixAutoUpdate","setConeDirection","updateMatrix","quaternion","radians","acos","setFromAxisAngle","ori1","ori2","hx","midPoint","dimensionLength","arrowLength","arrowHelper","ArrowHelper","arrowHelperNeg","arrowpoint2Vect","locationVect","drctnvect","newlocation","matPoints","line","symbol","locPnt","arrowPnt","elbowLength","clear","clientX","clientY","dimWidth","dimHeight","textPos","headLength","divDim","project","offsetWidth","offsetLeft","offsetHeight","offsetTop","top","innerHTML","dimDivParent","v","isAnotherEntity","bboxOfPrt","BoxHelper","width","depth","origin","AxisHelper","rotateSpeed","spinModel","ModelSpinValue","mixer","getDelta","annotationContainer","updateAnnotation","setLength","lookAt","ambientLightColor","spotLightColor","spotLightIntensity","setHex","intensity","innerWidth","innerHeight","defaultView","getComputedStyle","parseFloat","getPropertyValue","currentStyle","el","xPos","yPos","Position","tagName","xScroll","scrollLeft","documentElement","yScroll","scrollTop","clientLeft","clientTop","offsetParent","event","canvasPosition","myElement","querySelector","getPosition","requestAnimationFrame","getViewerCoordinateForMouseMove","modelSelection","tooltipDiv","mousePos","getMousePos","tooltip","showTooltip","tooltipEnabled","bool","mouseHoverCallback","button","onMiddleMouseDown","dragCheckLocation","enableModelSpin","intersects","getIntersects","intersectedObject","objectNode","getImmediateAssemblyNode","href","open","updateQueryStringParameter","compId","uri","key","re","RegExp","separator","match","performActionsOnClickEvent","pageX","pageY","elem","boundingRect","getBoundingClientRect","getFullPathOfPart","GetFullPathOfPart","getPathofPart","immediateNodeName","getPathOfTheImmediateChildNode","getPartUnderMouseForAnimation","mouseClickCallback","nodeSelectCallback","mouseDoubleClickCallback","zoomOnSpecificPart","prevWidth","prevHeight","temp1","logoradiotemp","handleResize","fileName","tempScene","loadSceneData","DLL_Version","viewerVersion","setCameraParams","setRenderMode","getCameraPositionValueForView","applyStudioProperties","displayDimensions","b","originalWidth","MAX_VALUE","originalHeight","alreadyBinned","partNameToObject3d","childType","hasExplosion","isDimension","isDimensionsData","postLoadSceneCallback","camControls","CameraControls","storeCameraPosition","addEnvMap","environment","boolIE","displayAnimationMessage","_this","boundingBox","cameraControls","isNotValidForCameraZoom","ifDllHasBumpScaled","changeCameraTransform","centerCamera","scaleObject","centerObject","jsonBoundingBox","oldBoundingBox","convertBoundingBox","scaleFactor","scaledBoundingBox","createScaledBoundingBox","adjacent","opposite","atan","cameraDistance","tan","newBox","partName","progress","url","callback","script","readyState","onreadystatechange","onload","src","getElementsByTagName","source","isIE","async","onerror","insertBefore","_","isAbort","myNav","parseInt","computeBoundingBox","bb","union","percentage","zoomPercentage","xDimension","yDimension","maxOfXY","lengthOfLargestDimension","boxCenter","centerX","centerY","centerZ","matrix","Matrix4","makeTranslation","getInverse","applyMatrix","Tween","easing","Easing","Linear","None","Quadratic","In","Out","InOut","Cubic","Quartic","Quintic","Sinusoidal","Exponential","Circular","Elastic","Back","Bounce","toggleViews","bumpScale","loadScene","cadURL","label","textContent","checkbox","annoTemp","annotation","textureDropdown","opacitySlider","opacityValue","modeldropdown","disable","disabled","texturemap","filename","lnk","download","createEvent","initMouseEvent","dispatchEvent","fireEvent","f","substring","downloadImage","downloadImageWithSize","resizedCanvas","resizedContext","drawImage","myResizedData","BackSide","cylinder","layers","enable","middle","bound","boxHelper1","Tooltip","intersectionPt","removeNameSelectionMaterial","removeSelectionMaterial","applySelectionMaterial","onPartHover","elementMouseIsOver","elementFromPoint","addCSSForTooltip","addTooltipDiv","message","toolTipTextCallback","tooltip_span","csstag","append","head","intersectedPart","objectName","rootAssembly","getObjectsByName","getMeshFor","selectedMesh","removeSelectionMaterialOnMesh","getSelectedMesh","applySelectionMaterialOnMesh","currentMat","tempMaterial","MeshPhongMaterial","emissive","currenMaterial","selection","selected","minDist","minScaleFactor","minDistance","maxDist","maxScaleFactor","maxDistance","jsonObject","selectedObject","element","highlightObject","splice","intersected","evt","rect","objects","mouse_vector","setFromCamera","isGetFullPathOfPartEnabled","fullPath","getRootLevelPathOfPart","immediateNode","imageUrl","getObjectByName","needsUpdate","c","toString","textureFilePath","bumpEnabled","bumpMap","swapTexture","traverseAssembly","k","offsetLines","tweenon","tweenoff","childNode","applyTweenExplosion","nodeExplosionMatrix","initialPos","ExplodedMatrix","fromArray","explodedPosition","Quaternion","decompose","twn","applyTweenFromTo","replaceablePartKeyValuePair","Replaceable_count","replaceablePartName","PartReplacement","replacePart","Object","isEmpty","previouslyAddedSubAsm","addPartIntoParent","defaultSubAssemblies","replaceablesObjects","getDefaultPartAddedInModel","isSubassembly","isloadReplacementObjectsEnabled","replaceableParts","addPart","prevPartMatrix","prevPartExplodedMatrix","partFilePath","addSubAssembly","replaceableSuassembly","loadDefaultSubassembly","replaceableSubAssemblyMap","traverseObjectToSetPreviouslySelectedReplaceables","asm","keys","partKey","slice","childSubasm","getAllReplaceableObjects","PartKey","partNameToBeAdded","rObject","replacedAssemblyToPartName","parts","getReplaceablePartInModel","addCSSPartReplace","divReplacePart","selectTag","getSelectedValue","Option","selectedPartName","selectedOptions","partList","JSONFileObject","title","replaceByReplaceableParts","readJSONFile","ReadJSONFile","ispartLoading","rootobj","partDir","bounding","superRoot","partCount","countPart","onCompleteSceneLoad","XMLHttpRequest","overrideMimeType","send","onprogress","loaded","onAssemblyProgress","status","response","setCameraWith","loadJSON","readMainJSON","disposeDimensionDivElements","reset","decideRootObject","assembly","getAssemblyByName","loadOffsetLines","OffsetLines","jOffsetLines","dashSize","gapSize","geometries","geom","Geometry","data","vertices","vec","computeLineDistances","getAssemblyJson","JSONRootObject","rootobject","traverseMainJSON","loadPartFile","onPartLoad","JSONobj","parentExplosionMatrix","onProgress","totalChildCount","childrenLoaded","scopedMatrix","isReplaceableSubAsm","_subasm","_smatrix","childExploMatrix","exploMatrix","newExplosionMatrix","newMatrix","multiplyMatrices","invertedMatrix","toArray","multiply","checkReplaceableSubassemblies","replaceableValuesArray","values","replaceableSubAsmNameList","subAsmJsonObj","partLoaded","subAsmNode","partNode","uuid","generateUUID","storeOriginalMatrixOfPartInUserData","setCameraPosition","cameraPosition","subassembly","month","dllVersion","lstString","date","Date","getMonthOrdinal","dateForDllWithBumpScale","setCameraFrom","jsonFileObject","identity","equals","inverse","setZoomLimits","minDistanceMultiplier","__this","radius","maxScale","scalefactor","materialId","configurableMaterials","Group","confMap","surfaceType","matId","materialMap","getConfigurableMaterials","fetchMaterial","getSurfaceMaterial","textureImageUrl","isBumpEnabled","swapSurfaceTexture","part","OriginalMatrix","animation","Animation","isAnimationEnabled","Kinematics","runAnimation","SetKinematicsToPart","lastAnimationAddedForPart","isTweening","isLastAnimation","partInQueue","endTransformation","pauseAnimationOnClick","applyAnimation","addPartInQueueForAnimation","MATRIX_ARRAY","dummyObj","endR","startR","startDegX","radToDeg","startDegY","startDegZ","endDegX","endDegY","endDegZ","rx","ry","rz","rw","w","addAnimation","startTransformation","onUpdate","stop","gridHelper","GridHelper","getScaleFactor","isBaseGridEnabled","size","mutableGrid","isMutableGridEnabled","object1","object2","length1","getBoundingBoxLength","length2","setBaseGrid","state","addBaseGridInViewer","setMutableGrid","createMutableGrid","toggleShadow","Shadows","setShadowInViewer","shadowLight","shadowPlane","lightTobeRestore","isShadowEnabled","addShadows","enableObjectsToCastShadows","disableObjectsToCastShadow","createShadowLightAndPlane","PlaneBufferGeometry","planeMaterial","ShadowMaterial","PI","castShadow","receiveShadow","tempCam","shadow","distance","lightPositionAlongYAxis","mapSize","bias","near","shadowMap","PCFSoftShadowMap","envMap","EnvironmentMap","setEnvironmentMap","metalTextureType","envImageDirectory","textureMap","ChromeBrassTexture","envTextureCube","setTexture","metalType","createReflectionCube","setChromeTextureToPart","setBrassMaterial","combine","MixOperation","reflectivity","getHexString","format","urls","reflectionCube","CubeTextureLoader","StudioUtils","studioFeatures","materialStorage","loadStudioAnnotations","materialMapping","mapStudioMaterials","applyStudioMaterials","postLoadMaterialCallback1","loadStudioAnimations","explosion","loadStudioExplosions","loadCameraViewPoints","skyBox","background","envMaterialMap","canvas2","env","reflectiveMaterials","environmentMapEnabled","studioEnvironmentMaps","mapping","imagesDirPath","imageFormat","options","getCubeTexture","imagesDirName","cubeTexture","RGBFormat","envCube","CubeRefractionMapping","minX","maxX","minY","Infinity","maxY","minPolarAngle","maxPolarAngle","minAzimuthAngle","maxAzimuthAngle","vX","vY","vZ","cc","tempVec","animationActionsByPart","m_animationActionsByPart","lastAnimationAction","play","pause","inifinityAnimationExist","infinityAnimationDelay","materialsMapByName","annotationON","tweenArray","viewpoints","currentViewPoint","highlightedPartName","highlightedAnnotation","hotspotUpScaleTween","hotspotDownScaleTween","hotspotList","hotspotManager","applyAnimations","animations","scope","maxTime","AnimationMixer","cId","newAnimations","time","animationAction","clipAction","AnimationClip","clip","repetitions","infinity","clampWhenFinished","duration","delay","mClipName","matMapped","clipObj","materialuuid","animation_action","initialQuat","onAnimationLoad","onFinishAnimation","hasAnimation","playAnimation","showAnnotations","_clip","startAt","_localRoot","timeFrames","eTime","endTime","startTime","completeFunc","onStart","now","animationClipsByPart","applyInitialOpacity","togglePauseState","paused","action","pAnimation","qtrack","tracks","lightsObject","saveMaterial","applyStudioMaterialByObjectName","sceneNode","applyMaterial","studioMaterialContainer","materials","property","assign","sMap","sBump","metalness","roughness","MeshPhysicalMaterial","textures","textureProperty","texture","wrapS","RepeatWrapping","wrapT","offset","repeat","flipY","alert","bumpTextureProperty","postLoadMaterialCallback","mapMaterials","jsonFile","compID","materialID","materialName","applyExplosions","explosions","initEnvironmentMaps","dirPaths","xhr","link","decodeURIComponent","readTextFile","text","getMaterialsByName","applyAnnotations","annotations","createAnnotation","highlightAnnotationDiv","postModelTreeLoadCallback","addCart","cameraMatrix","setCamera","noRotate","cameraRotation","addHotspot","hotspot","hotspots","hasAnnotation","hotspotData","urlParams","URLSearchParams","hotspotColor","magFilter","NearestFilter","SpriteMaterial","sprite","Sprite","pos","imageW","content","animateHotspotOnHover","bind","displayImgOnClick","displayImgOnClickforPhone","getIntersectedSprite","hotspotObject","Display","closeDiv","keyCode","Hide","removeEventListener","getIntersectedSpriteforPhone","animObjs","getAll","objRunning","get","setRayCaster","intersectedObj","setRayCasterPhone","targetTouches","elements","cartButton","annotationNo","hyperlink","imgURL","aText","anchor","imgDiv","imageWidth","imageHeight","span","onmouseover","materialProperties","highlightPartUsingCompId","tr","cells","ondblclick","setCameraZoomOn","onmouseout","removeHighlights","cdscadviewercontainer","vertex0","lineVertices","vertex1","annotationLine","verticesNeedUpdate","animationData","vertex","explosionEnd","explosionEndOnly","animationTimeFrames","getIntersectedPart","mouseX","mouseY","intersectObj","HighlightModetreeRow","annotationDOMElement","row","localToWorld","vector0","rightSide","right","getViewPointNames","array","setCameraWithName","viewPoint","find","cameraViewPoint","getVectorMap","animateCameraPosition","setCameraViewPoints","viewpoint","matrixArray","getViewPointsDiv","pointerDivCircle","classList","pointerDiv","onmouseenter","onmouseleave","onclick","updateAllViewPoints","updateViewPoint","pointerPosition","onFinish","param","rawFile","responseText","MouseHoverUpdate","SetSpriteTextOnZoom","spritetext","timestamp","scaleVector","scaleby","sprites","ToggleDiamensionVisibility","showDiamension","dim","GetDiamensions","modeldiamension","text1","drawType","setupTween","lastPos","CurrentPos","isAngular","tween","rotate","_hasWebkitFullScreen","_hasMozFullScreen","_hasMsFullScreen","webkitRequestFullScreen","mozRequestFullScreen","msRequestFullscreen","webkitIsFullScreen","mozFullScreen","msFullscreenElement","assert","ALLOW_KEYBOARD_INPUT","cancel","webkitCancelFullScreen","mozCancelFullScreen","msExitFullscreen","valueOf","STATE","NONE","ROTATE","ZOOM","PAN","TOUCH_ROTATE","TOUCH_ZOOM_PAN","screen","zoomSpeed","panSpeed","staticMoving","dynamicDampingFactor","EPS","lastPosition","_state","_prevState","_eye","_movePrev","_moveCurr","_lastAxis","_lastAngle","_zoomStart","_zoomEnd","_touchZoomDistanceStart","_touchZoomDistanceEnd","_panStart","_panEnd","target0","position0","up0","changeEvent","startEvent","endEvent","d","ownerDocument","pageXOffset","pageYOffset","handleEvent","getMouseOnScreen","getMouseOnCircle","rotateCamera","eyeDirection","objectUpDirection","objectSidewaysDirection","moveDirection","crossVectors","applyQuaternion","zoomCamera","panCamera","mouseChange","objectUp","pan","lengthSq","cross","checkDistances","distanceToSquared","keydown","ctrlKey","toggleBoundingBoxDisplay","keyup","mousedown","stopPropagation","mousemove","mouseup","mousewheel","deltaMode","deltaY","touchstart","touches","touchmove","touchend","contextmenu","create","EventDispatcher","constructor","overrideMaterial","oldClearColor","Color","oldClearAlpha","needsSwap","writeBuffer","readBuffer","delta","getClearColor","getClearAlpha","shader","textureID","UniformsUtils","ShaderMaterial","vertexShader","fragmentShader","OrthographicCamera","quad","PlaneGeometry","MaskPass","colorMask","depthMask","writeValue","clearValue","STENCIL_TEST","stencilOp","REPLACE","stencilFunc","ALWAYS","clearStencil","EQUAL","KEEP","ClearMaskPass","renderTarget","parameters","minFilter","LinearFilter","stencilBuffer","WebGLRenderTarget","renderTarget1","renderTarget2","passes","CopyShader","error","copyPass","swapBuffers","tmp","pass","insertPass","maskActive","il","NOTEQUAL","RenderableObject","renderOrder","RenderableFace","RenderableVertex","v3","normalModel","vertexNormalsModel","vertexNormalsLength","uvs","positionWorld","positionScreen","Vector4","RenderableLine","vertexColors","RenderableSprite","_object","_objectCount","_objectPool","_objectPoolLength","_vertex","_vertexCount","_vertexPool","_vertexPoolLength","_face","_faceCount","_facePool","_facePoolLength","_line","_lineCount","_linePool","_linePoolLength","_sprite","_spriteCount","_spritePool","_spritePoolLength","_renderData","lights","_vector3","_vector4","_clipBox","_boundingBox","_points3","_points4","_viewMatrix","_viewProjectionMatrix","_modelMatrix","_modelViewProjectionMatrix","_normalMatrix","Matrix3","_frustum","Frustum","_clippedVertex1PositionScreen","_clippedVertex2PositionScreen","projectVector","warn","unprojectVector","pickingRay","RenderList","normals","normalMatrix","setObject","getNormalMatrix","matrixWorld","projectVertex","applyMatrix4","invW","pushVertex","getNextVertexInPool","pushNormal","pushUv","checkTriangleVisibility","intersectsBox","checkBackfaceCulling","pushLine","a","getNextLineInPool","pushTriangle","getNextFaceInPool","applyMatrix3","arguments","uv","renderList","projectScene","sortObjects","sortElements","autoUpdate","updateMatrixWorld","matrixWorldInverse","projectionMatrix","setFromMatrix","addObject","getNextObjectInPool","setFromMatrixPosition","applyProjection","traverseVisible","Light","frustumCulled","intersectsObject","intersectsSprite","sort","painterSort","o","ol","attributes","groups","positions","indices","group","count","faces","faceVertexUvs","isFaceMaterial","MultiMaterial","objectMaterials","vl","morphTargets","morphInfluences","morphTargetInfluences","t","tl","influence","targetVertex","fl","face","materialIndex","faceVertexNormals","vertexNormals","n","nl","vertexUvs","u","step","clipLine","VertexColors","colors","getNextSpriteInPool","abs","s1","s2","alpha1","alpha2","bc1near","bc2near","bc1far","bc2far","lerp","_tweens","removeAll","preserve","process","hrtime","performance","getTime","_valuesStart","_valuesEnd","_valuesStartRepeat","_duration","_repeat","_repeatDelayTime","_yoyo","_isPlaying","_reversed","_delayTime","_startTime","_easingFunction","_interpolationFunction","Interpolation","_chainedTweens","_onStartCallback","_onStartCallbackFired","_onUpdateCallback","_onCompleteCallback","_onStopCallback","_paused","_pauseStart","properties","concat","call","stopChainedTweens","numChainedTweens","amount","times","repeatDelay","yoyo","interpolation","chain","onStop","elapsed","charAt","isFinite","cos","sin","pow","s","floor","fn","Utils","Bezier","pw","bn","Bernstein","CatmullRom","p0","p1","fc","Factorial","p2","p3","v0","t2","t3","root","define","amd","module","exports","Hotspot","actionType","OverLay","DisplayImage","DisplayVideo","DisplayURL","DisplayAnimation","annotationDiv","hotspotAction","annotationDivParent","hotspotImgDisplayType","newDiv","constructAndGetMediaChanger","ontouchstart","countDiv","preImg","para","nodeDiv","newPara","paraToNum","cloneNode","nxtImg","playerDiv","ConstructAndDisplayOverlayElement","video","autoplay","isFirefox","InstallTrigger","androidMobile","removeControls","removeAttribute","controlsList","disablePictureInPicture","LegacyJSONLoader","shapes","geometryShapes","bufferGeometryLoader","BufferGeometryLoader","Geometries","widthSegments","heightSegments","depthSegments","segments","thetaStart","thetaLength","radiusTop","radiusBottom","radialSegments","openEnded","phiStart","phiLength","detail","innerRadius","outerRadius","thetaSegments","phiSegments","tube","tubularSegments","arc","q","Curves","fromJSON","closed","points","details","jl","shape","curveSegments","extrudePath","geometryLoader","resourcePath","REVISION","toBufferGeometry","fromGeometry","isBufferGeometry","manager","DefaultLoadingManager","withCredentials","crossOrigin","onLoad","onError","LoaderUtils","extractUrlBase","FileLoader","setPath","setWithCredentials","metadata","setResourcePath","parseModel","isBitSet","fi","zLength","colorIndex","normalIndex","uvIndex","isQuad","hasMaterial","hasFaceVertexUv","hasFaceNormal","hasFaceVertexNormal","hasFaceColor","hasFaceVertexColor","faceA","faceB","hex","uvLayer","nUvLayers","Face3","parseSkin","influencesPerVertex","skinWeights","skinIndices","bones","parseMorphing","dstVertices","srcVertices","morphColors","parseAnimations","outputAnimations","parseAnimation","morphAnimationClips","CreateClipsFromMorphTargetSequences","computeFaceNormals","computeBoundingSphere","Loader","initMaterials","minZoom","maxZoom","enableDamping","dampingFactor","enableZoom","enableRotate","enablePan","screenSpacePanning","keyPanSpeed","autoRotate","autoRotateSpeed","enableKeys","LEFT","UP","RIGHT","BOTTOM","mouseButtons","MOUSE","MIDDLE","zoom0","zoom","getPolarAngle","spherical","phi","getAzimuthalAngle","theta","saveState","quat","setFromUnitVectors","quatInverse","lastQuaternion","setFromVector3","rotateLeft","getAutoRotationAngle","sphericalDelta","makeSafe","panOffset","setFromSpherical","zoomChanged","onContextMenu","onMouseWheel","onTouchStart","onTouchEnd","onTouchMove","onKeyDown","DOLLY","TOUCH_DOLLY_PAN","Spherical","rotateStart","rotateEnd","rotateDelta","panStart","panEnd","panDelta","dollyStart","dollyEnd","dollyDelta","getZoomScale","rotateUp","panLeft","objectMatrix","setFromMatrixColumn","panUp","deltaX","isPerspectiveCamera","targetDistance","fov","clientHeight","isOrthographicCamera","clientWidth","dollyIn","dollyScale","dollyOut","handleMouseDownRotate","handleMouseDownDolly","handleMouseDownPan","handleMouseMoveRotate","handleMouseMoveDolly","handleMouseMovePan","handleMouseUp","handleMouseWheel","handleKeyDown","handleTouchStartRotate","handleTouchStartDollyPan","handleTouchMoveRotate","handleTouchMoveDollyPan","handleTouchEnd","metaKey","defineProperties","noKeys"],"sourceRoot":""}