{"version":3,"file":"bundle.88013.89444b61107d85bcb40b.js","mappings":"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,MAAMC,EAAgB,IAAI,KAAoB,GAAqB,GAC7D,EAAa,IAAI,KAAoB,GAAqB,GAC1DR,EAAsB,CACxB9a,KAAM,0BACN7O,WAAY,MACZhC,UAAW,CACP,IAAK,CACDkB,cAAe,2BAEnBL,QAAS,CACLG,WAAY,eACZE,cAAe,qCAGvBgd,gBAAiB,CAAC,MAClBkO,cAAe,CAAC,MAChBC,iBAAkB,CACd,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEJhrB,OAAO,EACPI,WAAY0qB,GAEVN,EAA2B,CAC7Bhb,KAAM,0BACN7O,WAAY,MACZhC,UAAW,CACP,IAAK,CACDkB,cAAe,gCAEnBL,QAAS,CACLG,WAAY,eACZE,cAAe,0CAGvBorB,YAAa,KACbpO,gBAAiB,CAAC,KAA6B,MAC/CkO,cAAe,CAAC,MAChBC,iBAAkB,CACd,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,MAEJE,UAAW,SACX9qB,WAAU,GAERuqB,EAAkC,CACpCnb,KAAM,0BACN7O,WAAY,MACZhC,UAAW,CACP,IAAK,CACDkB,cAAe,uCAEnBL,QAAS,CACLG,WAAY,eACZE,cAAe,iDAGvBgd,gBAAiB,CAAC,KAA6B,MAC/CkO,cAAe,CAAC,MAChBC,iBAAkB,CACd,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,MAEJhrB,OAAO,EACPI,WAAY0qB,GAEVD,EAAoB,CACtBrb,KAAM,0BACN7O,WAAY,MACZhC,UAAW,CACP,IAAK,CACDkB,cAAe,yBAEnBL,QAAS,CACLG,WAAY,eACZE,cAAe,mCAGvBgd,gBAAiB,CAAC,KAA6B,MAC/CkO,cAAe,CAAC,MAChBC,iBAAkB,CACd,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEJhrB,OAAO,EACPI,WAAY0qB,GC/NT,MAAMK,EAKT,WAAA31B,CAAY6wB,GACR1wB,KAAK0wB,OAASA,CAClB,CAUA,MAAApI,CAAOyK,EAAepqB,EAAMrG,GACxB,MAAMmyB,EAAqB,CACvB1B,gBACApqB,OACArG,QAAS,IAA8CA,GAAW,CAAC,IAEvE,OAAOtC,KAAK0wB,OAAOgE,qBAAqBD,EAAoBgB,EAChE,CAcA,cAAAC,CAAe3C,EAAeM,EAAY/wB,GACtC,MAAMmyB,EAAqB,CACvB1B,gBACAM,aACA/wB,QAAS,IAA8CA,GAAW,CAAC,IAEvE,OAAOtC,KAAK0wB,OAAOgE,qBAAqBD,EAAoBkB,EAChE,CAUA,UAAAC,CAAWC,EAAS9C,EAAepqB,EAAMrG,GACrC,MAAMmyB,EAAqB,CACvBoB,UACA9C,gBACApqB,OACArG,QAAS,IAA8CA,GAAW,CAAC,IAEvE,OAAOtC,KAAK0wB,OAAOgE,qBAAqBD,EAAoBqB,EAChE,CAWA,iBAAAC,CAAkBF,EAAS9C,EAAegC,EAAWzyB,GACjD,MAAMmyB,EAAqB,CACvBoB,UACA9C,gBACAgC,YACAzyB,QAAS,IAA8CA,GAAW,CAAC,IAEvE,OAAOtC,KAAK0wB,OAAOgE,qBAAqBD,EAAoBuB,EAChE,CAYA,eAAAC,CAAgBC,EAAQ5zB,GACpB,MAAMmyB,EAAqB,CACvByB,SACA5zB,QAAS,IAA8CA,GAAW,CAAC,IAEvE,OAAOtC,KAAK0wB,OAAOgE,qBAAqBD,EAAoB0B,EAChE,CAQA,YAAAC,CAAaC,EAAU/zB,GACnB,MAAMmyB,EAAqB,CACvB4B,WACA/zB,QAAS,IAA8CA,GAAW,CAAC,IAEvE,OAAOtC,KAAK0wB,OAAOgE,qBAAqBD,EAAoB6B,EAChE,EAGJ,MAAM,EAAgB,IAAI,KAAoB,GAAqB,GAC7D,EAAa,IAAI,KAAoB,GAAqB,GAC1Db,EAAsB,CACxB5b,KAAM,0BACN7O,WAAY,MACZhC,UAAW,CACP,IAAK,CACDkB,cAAe,0BAEnBL,QAAS,CACLG,WAAY,eACZE,cAAe,oCAGvBorB,YAAa,KACbpO,gBAAiB,CAAC,MAClBkO,cAAe,CAAC,MAChBC,iBAAkB,CACd,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEJE,UAAW,SACX9qB,WAAU,GAERkrB,EAA8B,CAChC9b,KAAM,0BACN7O,WAAY,MACZhC,UAAW,CACP,IAAK,CACDkB,cAAe,kCAEnBL,QAAS,CACLG,WAAY,eACZE,cAAe,4CAGvBgd,gBAAiB,CAAC,MAClBkO,cAAe,CAAC,MAChBC,iBAAkB,CACd,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEJhrB,OAAO,EACPI,WAAY,GAEVqrB,EAA0B,CAC5Bjc,KAAM,0BACN7O,WAAY,MACZhC,UAAW,CACP,IAAK,CACDkB,cAAe,8BAEnBL,QAAS,CACLG,WAAY,eACZE,cAAe,wCAGvBorB,YAAa,KACbpO,gBAAiB,CACb,KACA,KACA,MAEJkO,cAAe,CAAC,MAChBC,iBAAkB,CACd,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,MAEJE,UAAW,SACX9qB,WAAU,GAERurB,EAAiC,CACnCnc,KAAM,0BACN7O,WAAY,MACZhC,UAAW,CACP,IAAK,CACDkB,cAAe,qCAEnBL,QAAS,CACLG,WAAY,eACZE,cAAe,+CAGvBgd,gBAAiB,CACb,KACA,KACA,MAEJkO,cAAe,CAAC,MAChBC,iBAAkB,CACd,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEJhrB,OAAO,EACPI,WAAY,GAEV0rB,EAA+B,CACjCtc,KAAM,0BACN7O,WAAY,MACZhC,UAAW,CACP,IAAK,CACDkB,cAAe,mCAEnBL,QAAS,CA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C,MAChBC,iBAAkB,CACd,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEJE,UAAW,SACX9qB,WAAU,GAERmsB,EAA0B,CAC5B/c,KAAM,0BACN7O,WAAY,MACZhC,UAAW,CACP,IAAK,CACDkB,cAAe,6BAEnBL,QAAS,CACLG,WAAY,eACZE,cAAe,uCAGvBgd,gBAAiB,CAAC,KAA6B,MAC/CkO,cAAe,CAAC,MAChBC,iBAAkB,CACd,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEJhrB,OAAO,EACPI,WAAY,GAEVusB,EAAkC,CACpCnd,KAAM,0BACN7O,WAAY,MACZhC,UAAW,CACP,IAAK,CACDkB,cAAe,qCAEnBL,QAAS,CACLG,WAAY,eACZE,cAAe,+CAGvBgd,gBAAiB,CAAC,KAA6B,MAC/CkO,cAAe,CAAC,MAChBC,iBAAkB,CACd,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KAEJhrB,OAAO,EACPI,WAAY,GAEVysB,EAA6B,CAC/Brd,KAAM,0BACN7O,WAAY,MACZhC,UAAW,CACP,IAAK,CACDgB,WAAY,WACZE,cAAe,gCAEnBL,QAAS,CACLG,WAAY,eACZE,cAAe,0CAGvBgd,gBAAiB,CACb,KACA,KACA,KACA,KACA,MAEJkO,cAAe,CAAC,MAChBC,iBAAkB,CACd,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEJhrB,OAAO,EACPI,WAAY,GAEV2sB,EAAiC,CACnCvd,KAAM,0BACN7O,WAAY,MACZhC,UAAW,CACP,IAAK,CACDgB,WAAY,WACZE,cAAe,oCAEnBL,QAAS,CACLG,WAAY,eACZE,cAAe,8CAGvBgd,gBAAiB,CACb,KACA,KACA,KACA,KACA,KACA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AkB,CACd,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEJhrB,OAAO,EACPI,WAAY0qB,GAEVqxB,EAA8B,CAChC3sC,KAAM,0BACN7O,WAAY,MACZhC,UAAW,CACP,IAAK,CACDkB,cAAe,6BAEnBL,QAAS,CACLG,WAAY,eACZE,cAAe,uCAGvBgd,gBAAiB,CAAC,KAA6B,MAC/CkO,cAAe,CAAC,MAChBC,iBAAkB,CACd,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,MAEJhrB,OAAO,EACPI,WAAY0qB,GAEVsxB,EAAgC,CAClC5sC,KAAM,0BACN7O,WAAY,MACZhC,UAAW,CACP,IAAK,CACDkB,cAAe,+BAEnBL,QAAS,CACLG,WAAY,eACZE,cAAe,yCAGvBgd,gBAAiB,CAAC,MAClBkO,cAAe,CAAC,MAChBC,iBAAkB,CACd,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEJhrB,OAAO,EACPI,WAAY0qB,GAEVuxB,EAA2B,CAC7B7sC,KAAM,0BACN7O,WAAY,MACZhC,UAAW,CACP,IAAK,CACDkB,cAAe,0BAEnBL,QAAS,CACLG,WAAY,eACZE,cAAe,oCAGvBgd,gBAAiB,CAAC,MAClBkO,cAAe,CAAC,MAChBC,iBAAkB,CACd,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEJhrB,OAAO,EACPI,WAAY0qB,GAEVwxB,EAAgC,CAClC9sC,KAAM,0BACN7O,WAAY,MACZhC,UAAW,CACP,IAAK,CACDkB,cAAe,+BAEnBL,QAAS,CACLG,WAAY,eACZE,cAAe,yCAGvBgd,gBAAiB,CACb,KACA,KACA,MAEJkO,cAAe,CAAC,MAChBC,iBAAkB,CACd,KACA,KACA,KACA,KACA,MAEJhrB,OAAO,EACPI,WAAY0qB,GAEVyxB,E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BAAoB,IACpBC,2BAA4B,KAEnB/wD,EAAkB,CAC3BC,cAAe,gBACf+Y,qBAAsB,SACtBg4C,iBAAkB,mBAClBC,WAAY,aACZC,iBAAkB,mBAClBtpB,eAAgB,iBAChBupB,YAAa,cACbC,0BAA2B,4BAC3BC,aAAc,eACd1pB,OAAQ,SACR2pB,KAAM,OACNC,SAAU,WACVC,kBAAmB,oBACnBC,cAAe,gBACfC,oBAAqB,sBACrBC,mBAAoB,QACpBC,MAAO,QACP14C,WAAY,aACZ24C,uBAAwB,yBACxBC,iBAAkB,mBAClBC,UAAW,YACXC,gBAAiB,kBACjBC,aAAc,gBAELC,EAAW,GACXC,EAAU,IAEVC,EAAoB,IAEpBC,EAAmB,OACnBC,EAAmB,WACnBC,EAA2B,SAC3BC,EAA8B,uNAC9BC,EAAuC,CAChD,8BACA,gBACA,iBACA,eACA,OACA,aACA,cACA,oBACA,aACA,yBACA,YACA,kBACA,kBACA,gCACA,eACA,gBACA,sBACA,mBACA,mBACA,cACA,gBACA,OACA,gBACA,SACA,OACA,qBACA,mBACA,4BACA,eACA,qBACA,mBACA,+BACA,sBACA,mBACA,oBACA,aACA,gCACA,wBACA,gBACA,oBACA,WACA,oBACA,gBACA,sBACA,mBACA,+BACA,4BACA,oBACA,sBACA,0BACA,0BACA,kCACA,gCACA,8BACA,gCACA,6BACA,6BACA,2BACA,wBACA,yBACA,0BACA,4BACA,iBACA,iCACA,qBACA,gCACA,wBACA,6BACA,sCACA,4BACA,6BACA,6BACA,6BACA,wBACA,oBACA,0BACA,sBACA,gBACA,kBACA,kBACA,yBACA,6BACA,0BACA,8BACA,gBACA,0BACA,uBACA,gCACA,4BACA,kCACA,iBACA,6BACA,eACA,uBAESC,EAA2C,CACpD,OACA,aACA,OACA,OACA,OACA,OACA,OACA,KACA,KACA,MACA,KACA,MACA,KACA,MACA,KACA,KACA,KACA,UACA,SACA,SACA,SACA,UACA,UACA,gBACA,YACA,eACA,MACA,QACA,MACA,MACA,QACA,MACA,YAESC,EAAyC,sCACzCC,EAA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EACX,UAAaK,EACb,UAAaN,EACb,YAAeO,EACf,OApBW,SAAUhyL,GAEzB,GAoDI8zL,EAAW90I,EAAO+0I,OAClBC,EAASh1I,EAAOi1I,KAChBC,EAAWl1I,EAAOm1I,OAClBC,EAAcp1I,EAAOq1I,UACzB,SAASC,IAER,IAAIC,EAAW,EACb,kBACA,mBACA,mBACA,kBACA,mBACA,mBACA,kBACA,mBACA,mBACA,kBACA,kBACA,kBACA,kBACA,mBACA,mBACA,kBACA,kBAAuB,mBAEvB,mBACA,mBACA,kBACA,iBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,iBACA,kBACA,mBACA,mBACA,mBACA,kBACA,kBAAuB,mBAEvB,mBACA,mBACA,mBACA,kBACA,kBACA,kBACA,mBACA,kBACA,kBACA,mBACA,kBACA,mBACA,mBACA,oBACA,oBACA,kBACA,kBAAuB,mBAEvB,mBACA,mBACA,mBACA,kBACA,mBACA,mBACA,kBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,oBACA,oBACA,kBACA,kBAAuB,mBAEvB,kBACA,kBACA,kBACA,kBACA,mBACA,mBACA,kBACA,mBACA,mBACA,kBACA,kBACA,mBACA,kBACA,oBACA,mBACA,mBACA,kBAAuB,mBAEvB,mBACA,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,kBACA,mBACA,kBACA,mBACA,mBACA,oBACA,oBACA,kBACA,kBAAuB,mBAEvB,mBACA,kBACA,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,kBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,iBACA,kBAAuB,mBAEvB,mBACA,mBACA,kBACA,mBACA,mBACA,kBACA,mBACA,mBACA,mBACA,mBACA,kBACA,oBACA,mBACA,oBACA,oBACA,mBACA,mBACA,mBAEA,mBACA,mBACA,oBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,kBACA,kBACA,mBACA,oBACA,mBACA,mBACA,mBACA,kBAAuB,mBAEvB,kBACA,iBACA,oBACA,kBACA,mBACA,mBACA,kBACA,mBACA,kBACA,kBACA,mBACA,oBACA,oBACA,oBACA,iBACA,mBACA,kBAAuB,kBAEvB,kBACA,kBACA,oBACA,kBACA,kBACA,mBACA,kBACA,mBACA,oBACA,iBACA,kBACA,mBACA,oBACA,oBACA,mBACA,kBACA,kBAAuB,kBAEvB,kBACA,kBACA,oBACA,kBACA,mBACA,mBACA,kBACA,mBACA,oBACA,mBACA,mBACA,oBACA,oBACA,oBACA,oBACA,kBACA,iBAAuB,mBAEvB,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBACA,mBACA,mBACA,oBACA,oBACA,mBACA,mBACA,kBACA,kBAAuB,mBAEvB,kBACA,iBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,oBACA,mBACA,mBACA,mBACA,oBACA,oBACA,mBACA,kBACA,mBAAuB,mBAEvB,iBACA,kBACA,oBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,oBACA,oBACA,oBACA,kBACA,mBAAuB,kBAEvB,WAAgBP,EAAOnB,MAAQ,GAAM,QACrC,WAAgBmB,EAAOnB,MAAQ,GAAM,QACrC,WAAemB,EAAOnB,MAAQ,GAAM,QACpC,WAAemB,EAAOnB,MAAQ,GAAM,QACpC,UAAcmB,EAAOnB,MAAQ,GAAM,QACnC,UAAcmB,EAAOnB,MAAQ,GAAM,QACnC,UAAcmB,EAAOnB,MAAQ,GAAM,QACnC,SAAamB,EAAOnB,MAAQ,GAAM,QAElC,mBAA2B,mBAC3B,kBAAyB,mBACzB,mBAA0B,mBAC1B,mBAGE2B,EAAK,GACLC,EAAK,GAELC,EAAM,CACN,CACC,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,oBACA,qBACA,qBAEA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,sBAEC,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBAEA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,qBACA,sBAEF,CACC,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBAEA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,sBAEC,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,qBACA,qBAED,EACA,EACA,EACA,EACA,EACA,GACC,sBACA,sBACA,sBAEF,CACC,kBACA,iBACA,kBAEA,kBACA,kBACA,iBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBAEA,iBACA,kBACA,kBACA,mBACC,mBACA,kBACD,kBACA,IAEC,mBACA,mBACA,mBACA,mBACA,oBACA,oBACA,oBACA,oBAED,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,iBACA,mBAED,CACC,EACA,EACA,EACA,EACA,EACA,EACA,qBACA,qBACA,qBAEA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,oBACA,sBAEC,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBAEA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,uBAIFC,EAAWD,EAAIE,EAAUC,YACzBh+F,EAAK69F,EAAIE,EAAUC,YACnBC,EAAKJ,EAAIE,EAAUC,YACnBE,EAAKL,EAAIE,EAAUC,YAanBG,EAAQ,CACR,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GACtD,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IAM5D,SAASC,EAAe38F,EAAI48F,EAAOl3K,GAKlC,IAJA,IAuEW4pD,EAAGr/E,EA8BT4sM,EArGDC,EAAK,GAELnjG,EAAKijG,EAAQ,IAAM,GAAK,IAEnBxgN,GAAK,GAAIA,EAAI,EAAGA,IAAK,CAC7B,IAAI8zF,EAAG5wE,EAAGyjD,EAEVmtB,EAAI+rH,EAASa,GAAM,IACnBx9L,EAAI0gG,EAAGrG,GAAM,KAAOzpB,EACpBntB,EAAIi9C,EAAG48F,EAAQ,KAAO1sH,EACtBA,EAAI+rH,EAA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AI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAGhEA,OAAkB,CACd,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxD,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxD,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACzD,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC1D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAGhEA,KAAgB,CACZ,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxD,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxD,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACzD,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC1D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAGhEA,KAAgB,CACZ,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACvD,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACvD,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EACvD,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EACxD,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GA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","sources":["webpack://goformz-web-app/./node_modules/@azure/abort-controller/dist-esm/src/AbortController.js","webpack://goformz-web-app/./node_modules/@azure/core-auth/dist-esm/src/tokenCredential.js","webpack://goformz-web-app/./node_modules/@azure/core-http/dist-esm/src/httpHeaders.js","webpack://goformz-web-app/./node_modules/@azure/core-http/dist-esm/src/log.js","webpack://goformz-web-app/./node_modules/@azure/core-http/dist-esm/src/operationOptions.js","webpack://goformz-web-app/./node_modules/@azure/core-http/dist-esm/src/policies/bearerTokenAuthenticationPolicy.js","webpack://goformz-web-app/./node_modules/@azure/core-http/dist-esm/src/policies/deserializationPolicy.js","webpack://goformz-web-app/./node_modules/@azure/core-http/dist-esm/src/policies/generateClientRequestIdPolicy.js","webpack://goformz-web-app/./node_modules/@azure/core-http/dist-esm/src/policies/logPolicy.js","webpack://goformz-web-app/./node_modules/@azure/core-http/dist-esm/src/policies/proxyPolicy.browser.js","webpack://goformz-web-app/./node_modules/@azure/core-http/dist-esm/src/httpPipelineLogLevel.js","webpack://goformz-web-app/./node_modules/@azure/core-http/dist-esm/src/policies/requestPolicy.js","webpack://goformz-web-app/./node_modules/@azure/core-http/dist-esm/src/queryCollectionFormat.js","webpack://goformz-web-app/./node_modules/@azure/core-http/dist-esm/src/util/inspect.browser.js","webpack://goformz-web-app/./node_modules/@azure/core-http/dist-esm/src/restError.js","webpack://goformz-web-app/./node_modules/@azure/core-http/dist-esm/src/util/base64.browser.js","webpack://goformz-web-app/./node_modules/@azure/core-http/dist-esm/src/serializer.js","webpack://goformz-web-app/./node_modules/@azure/core-http/dist-esm/src/url.js","webpack://goformz-web-app/./node_modules/@azure/core-http/dist-esm/src/util/constants.js","webpack://goformz-web-app/./node_modules/@azure/core-http/dist-esm/src/util/sanitizer.js","webpack://goformz-web-app/./node_modules/@azure/core-http/dist-esm/src/util/serializer.common.js","webpack://goformz-web-app/./node_modules/@azure/core-http/node_modules/uuid/dist/esm-browser/rng.js","webpack://goformz-web-app/./node_modules/@azure/core-http/node_modules/uuid/dist/esm-browser/regex.js","webpack://goformz-web-app/./node_modules/@azure/core-http/node_modules/uuid/dist/esm-browser/validate.js","webpack://goformz-web-app/./node_modules/@azure/core-http/node_modules/uuid/dist/esm-browser/stringify.js","webpack://goformz-web-app/./node_modules/@azure/core-http/node_modules/uuid/dist/esm-browser/v4.js","webpack://goformz-web-app/./node_modules/@azure/core-http/dist-esm/src/util/utils.js","webpack://goformz-web-app/./node_modules/@azure/core-http/dist-esm/src/util/xml.browser.js","webpack://goformz-web-app/./node_modules/@azure/core-http/dist-esm/src/webResource.js","webpack://goformz-web-app/./node_modules/@azure/core-http/dist-esm/src/xhrHttpClient.js","webpack://goformz-web-app/./node_modules/@azure/core-tracing/dist-esm/src/createSpan.js","webpack://goformz-web-app/./node_modules/@azure/core-tracing/dist-esm/src/interfaces.js","webpack://goformz-web-app/./node_modules/@opentelemetry/api/build/esm/context-api.js","webpack://goformz-web-app/./node_modules/@azure/core-util/dist-esm/src/checkEnvironment.js","webpack://goformz-web-app/./node_modules/@azure/core-util/dist-esm/src/delay.js","webpack://goformz-web-app/./node_modules/@azure/core-util/dist-esm/src/createAbortablePromise.js","webpack://goformz-web-app/./node_modules/@azure/logger/dist-esm/src/debug.js","webpack://goformz-web-app/./node_modules/@azure/logger/dist-esm/src/log.browser.js","webpack://goformz-web-app/./node_modules/@azure/logger/dist-esm/src/index.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/BlobLeaseClient.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/BlobQueryResponse.browser.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/generated/src/operations/appendBlob.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/generated/src/operations/blockBlob.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/generated/src/operations/pageBlob.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/PageBlobRangeResponse.js","webpack://goformz-web-app/./node_modules/@azure/core-lro/dist-esm/src/legacy/poller.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/pollers/BlobStartCopyFromUrlPoller.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/Range.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/utils/Batch.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-common/src/BufferScheduler.browser.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/Clients.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/BlobDownloadResponse.browser.js","webpack://goformz-web-app/./node_modules/@azure/core-http/dist-esm/src/policies/tracingPolicy.js","webpack://goformz-web-app/./node_modules/@azure/core-tracing/dist-esm/src/utils/traceParentHeader.js","webpack://goformz-web-app/./node_modules/@azure/core-http/dist-esm/src/policies/keepAlivePolicy.js","webpack://goformz-web-app/./node_modules/@azure/core-http/dist-esm/src/policies/disableResponseDecompressionPolicy.browser.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/policies/TelemetryPolicy.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/TelemetryPolicyFactory.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/utils/cache.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/policies/StorageBearerTokenChallengeAuthenticationPolicy.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/Pipeline.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/policies/StorageBrowserPolicy.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/StorageBrowserPolicyFactory.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/StorageClient.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/policies/StorageRetryPolicy.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/StorageRetryPolicyFactory.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/credentials/AnonymousCredential.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/credentials/Credential.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/credentials/StorageSharedKeyCredential.browser.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/generated/src/models/mappers.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/generated/src/models/parameters.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/generated/src/operations/blob.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/generated/src/operations/container.js","webpack://goformz-web-app/./node_modules/@azure/core-http/dist-esm/src/policies/redirectPolicy.js","webpack://goformz-web-app/./node_modules/@azure/core-http/dist-esm/src/util/exponentialBackoffStrategy.js","webpack://goformz-web-app/./node_modules/@azure/core-http/dist-esm/src/policies/exponentialRetryPolicy.js","webpack://goformz-web-app/./node_modules/@azure/core-http/dist-esm/src/operationParameter.js","webpack://goformz-web-app/./node_modules/@azure/core-http/dist-esm/src/policies/msRestUserAgentPolicy.browser.js","webpack://goformz-web-app/./node_modules/@azure/core-http/dist-esm/src/policies/userAgentPolicy.js","webpack://goformz-web-app/./node_modules/@azure/core-http/dist-esm/src/httpClientCache.js","webpack://goformz-web-app/./node_modules/@azure/core-http/dist-esm/src/policies/rpRegistrationPolicy.js","webpack://goformz-web-app/./node_modules/@azure/core-http/dist-esm/src/policies/signingPolicy.js","webpack://goformz-web-app/./node_modules/@azure/core-http/dist-esm/src/policies/systemErrorRetryPolicy.js","webpack://goformz-web-app/./node_modules/@azure/core-http/dist-esm/src/util/throttlingRetryStrategy.js","webpack://goformz-web-app/./node_modules/@azure/core-http/dist-esm/src/policies/throttlingRetryPolicy.js","webpack://goformz-web-app/./node_modules/@azure/core-http/dist-esm/src/serviceClient.js","webpack://goformz-web-app/./node_modules/@azure/core-http/dist-esm/src/operationSpec.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/generated/src/storageClientContext.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/log.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/models.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/policies/AnonymousCredentialPolicy.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/policies/CredentialPolicy.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/sas/BlobSASPermissions.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/sas/ContainerSASPermissions.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/credentials/UserDelegationKeyCredential.browser.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/sas/BlobSASSignatureValues.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/sas/SASQueryParameters.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/sas/SasIPRange.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/utils/constants.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/utils/tracing.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/utils/utils.browser.js","webpack://goformz-web-app/./node_modules/@azure/storage-blob/dist-esm/storage-blob/src/utils/utils.common.js","webpack://goformz-web-app/./node_modules/@fluentui/react-component-ref/dist/es/RefFindNode.js","webpack://goformz-web-app/./node_modules/@fluentui/react-component-ref/dist/es/RefForward.js","webpack://goformz-web-app/./node_modules/@fluentui/react-component-ref/dist/es/Ref.js","webpack://goformz-web-app/./node_modules/@fluentui/react-component-ref/dist/es/utils.js","webpack://goformz-web-app/./node_modules/@icons/material/CheckIcon.js","webpack://goformz-web-app/./node_modules/@icons/material/UnfoldMoreHorizontalIcon.js","webpack://goformz-web-app/./node_modules/@material-ui/core/esm/styles/colorManipulator.js","webpack://goformz-web-app/./node_modules/@material-ui/core/esm/styles/createBreakpoints.js","webpack://goformz-web-app/./node_modules/@material-ui/core/esm/styles/createMixins.js","webpack://goformz-web-app/./node_modules/@material-ui/core/esm/colors/common.js","webpack://goformz-web-app/./node_modules/@material-ui/core/esm/colors/grey.js","webpack://goformz-web-app/./node_modules/@material-ui/core/esm/colors/indigo.js","webpack://goformz-web-app/./node_modules/@material-ui/core/esm/colors/pink.js","webpack://goformz-web-app/./node_modules/@material-ui/core/esm/colors/red.js","webpack://goformz-web-app/./node_modules/@material-ui/core/esm/colors/orange.js","webpack://goformz-web-app/./node_modules/@material-ui/core/esm/colors/blue.js","webpack://goformz-web-app/./node_modules/@material-ui/core/esm/colors/green.js","webpack://goformz-web-app/./node_modules/@material-ui/core/esm/styles/createPalette.js","webpack://goformz-web-app/./node_modules/@material-ui/core/esm/styles/createTypography.js","webpack://goformz-web-app/./node_modules/@material-ui/core/esm/styles/shadows.js","webpack://goformz-web-app/./node_modules/@material-ui/core/esm/styles/shape.js","webpack://goformz-web-app/./node_modules/@material-ui/core/node_modules/@material-ui/system/esm/breakpoints.js","webpack://goformz-web-app/./node_modules/@material-ui/core/node_modules/@material-ui/system/esm/merge.js","webpack://goformz-web-app/./node_modules/@material-ui/core/node_modules/@material-ui/system/esm/spacing.js","webpack://goformz-web-app/./node_modules/@material-ui/core/node_modules/@material-ui/system/esm/memoize.js","webpack://goformz-web-app/./node_modules/@material-ui/core/esm/styles/createTheme.js","webpack://goformz-web-app/./node_modules/@material-ui/core/esm/styles/createSpacing.js","webpack://goformz-web-app/./node_modules/@material-ui/core/esm/styles/transitions.js","webpack://goformz-web-app/./node_modules/@material-ui/core/esm/styles/zIndex.js","webpack://goformz-web-app/./node_modules/@material-ui/core/node_modules/@material-ui/styles/esm/ThemeProvider/ThemeProvider.js","webpack://goformz-web-app/./node_modules/@material-ui/core/node_modules/@material-ui/styles/esm/ThemeProvider/nested.js","webpack://goformz-web-app/./node_modules/@material-ui/core/node_modules/@material-ui/styles/esm/useTheme/ThemeContext.js","webpack://goformz-web-app/./node_modules/@material-ui/core/node_modules/@material-ui/styles/esm/useTheme/useTheme.js","webpack://goformz-web-app/./node_modules/@material-ui/core/node_modules/@material-ui/utils/esm/deepmerge.js","webpack://goformz-web-app/./node_modules/@material-ui/core/node_modules/@material-ui/utils/esm/formatMuiErrorMessage.js","webpack://goformz-web-app/./node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js","webpack://goformz-web-app/./node_modules/@microsoft/signalr/dist/esm/HeaderNames.js","webpack://goformz-web-app/./node_modules/@microsoft/signalr/dist/esm/HttpClient.js","webpack://goformz-web-app/./node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js","webpack://goformz-web-app/./node_modules/@microsoft/signalr/dist/esm/Errors.js","webpack://goformz-web-app/./node_modules/@microsoft/signalr/dist/esm/Loggers.js","webpack://goformz-web-app/./node_modules/@microsoft/signalr/dist/esm/Utils.js","webpack://goformz-web-app/./node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js","webpack://goformz-web-app/./node_modules/@microsoft/signalr/dist/esm/DynamicImports.js","webpack://goformz-web-app/./node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js","webpack://goformz-web-app/./node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js","webpack://goformz-web-app/./node_modules/@microsoft/signalr/dist/esm/ITransport.js","webpack://goformz-web-app/./node_modules/@microsoft/signalr/dist/esm/AbortController.js","webpack://goformz-web-app/./node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js","webpack://goformz-web-app/./node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js","webpack://goformz-web-app/./node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js","webpack://goformz-web-app/./node_modules/@microsoft/signalr/dist/esm/HttpConnection.js","webpack://goformz-web-app/./node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js","webpack://goformz-web-app/./node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js","webpack://goformz-web-app/./node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js","webpack://goformz-web-app/./node_modules/@microsoft/signalr/dist/esm/Subject.js","webpack://goformz-web-app/./node_modules/@microsoft/signalr/dist/esm/MessageBuffer.js","webpack://goformz-web-app/./node_modules/@microsoft/signalr/dist/esm/HubConnection.js","webpack://goformz-web-app/./node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js","webpack://goformz-web-app/./node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js","webpack://goformz-web-app/./node_modules/@microsoft/signalr/dist/esm/ILogger.js","webpack://goformz-web-app/./node_modules/@opentelemetry/api/build/esm/context/NoopContextManager.js","webpack://goformz-web-app/./node_modules/@opentelemetry/api/build/esm/api/context.js","webpack://goformz-web-app/./node_modules/@opentelemetry/api/build/esm/diag/types.js","webpack://goformz-web-app/./node_modules/@opentelemetry/api/build/esm/diag/ComponentLogger.js","webpack://goformz-web-app/./node_modules/@opentelemetry/api/build/esm/api/diag.js","webpack://goformz-web-app/./node_modules/@opentelemetry/api/build/esm/diag/internal/logLevelLogger.js","webpack://goformz-web-app/./node_modules/@opentelemetry/api/build/esm/context/context.js","webpack://goformz-web-app/./node_modules/@opentelemetry/api/build/esm/platform/browser/globalThis.js","webpack://goformz-web-app/./node_modules/@opentelemetry/api/build/esm/version.js","webpack://goformz-web-app/./node_modules/@opentelemetry/api/build/esm/internal/semver.js","webpack://goformz-web-app/./node_modules/@opentelemetry/api/build/esm/internal/global-utils.js","webpack://goformz-web-app/./node_modules/@opentelemetry/api/build/esm/trace/NonRecordingSpan.js","webpack://goformz-web-app/./node_modules/@opentelemetry/api/build/esm/trace/context-utils.js","webpack://goformz-web-app/./node_modules/@opentelemetry/api/build/esm/trace/spancontext-utils.js","webpack://goformz-web-app/./node_modules/@opentelemetry/api/build/esm/trace/NoopTracer.js","webpack://goformz-web-app/./node_modules/@opentelemetry/api/build/esm/trace/ProxyTracer.js","webpack://goformz-web-app/./node_modules/@opentelemetry/api/build/esm/trace/ProxyTracerProvider.js","webpack://goformz-web-app/./node_modules/@opentelemetry/api/build/esm/trace/NoopTracerProvider.js","webpack://goformz-web-app/./node_modules/@opentelemetry/api/build/esm/api/trace.js","webpack://goformz-web-app/./node_modules/@opentelemetry/api/build/esm/trace-api.js","webpack://goformz-web-app/./node_modules/@opentelemetry/api/build/esm/trace/trace_flags.js","webpack://goformz-web-app/./node_modules/@opentelemetry/api/build/esm/trace/invalid-span-constants.js","webpack://goformz-web-app/./node_modules/@semantic-ui-react/event-stack/lib/cjs/event-stack.production.js","webpack://goformz-web-app/./node_modules/@semantic-ui-react/event-stack/lib/index.js","webpack://goformz-web-app/./node_modules/attr-accept/dist/index.js","webpack://goformz-web-app/./node_modules/base64-js/index.js","webpack://goformz-web-app/./node_modules/blueimp-md5/js/md5.js","webpack://goformz-web-app/./node_modules/buffer/index.js","webpack://goformz-web-app/./node_modules/call-bind/callBound.js","webpack://goformz-web-app/./node_modules/call-bind/index.js","webpack://goformz-web-app/./node_modules/classnames/index.js","webpack://goformz-web-app/./node_modules/clsx/dist/clsx.m.js","webpack://goformz-web-app/./node_modules/react-day-picker/lib/style.css","webpack://goformz-web-app/./node_modules/css-loader/dist/runtime/api.js","webpack://goformz-web-app/./node_modules/css-loader/dist/runtime/getUrl.js","webpack://goformz-web-app/./node_modules/define-data-property/index.js","webpack://goformz-web-app/./node_modules/events/events.js","webpack://goformz-web-app/./node_modules/exenv/index.js","webpack://goformz-web-app/./node_modules/extend/index.js","webpack://goformz-web-app/./node_modules/file-saver/dist/FileSaver.min.js","webpack://goformz-web-app/./node_modules/fontfaceobserver/fontfaceobserver.standalone.js","webpack://goformz-web-app/./node_modules/for-each/index.js","webpack://goformz-web-app/./node_modules/function-bind/implementation.js","webpack://goformz-web-app/./node_modules/function-bind/index.js","webpack://goformz-web-app/./node_modules/get-intrinsic/index.js","webpack://goformz-web-app/./node_modules/goformz-fabric/dist/fabric.js","webpack://goformz-web-app/./node_modules/gopd/index.js","webpack://goformz-web-app/./node_modules/gravatar/index.js","webpack://goformz-web-app/./node_modules/gravatar/lib/gravatar.js","webpack://goformz-web-app/./node_modules/has-property-descriptors/index.js","webpack://goformz-web-app/./node_modules/has-proto/index.js","webpack://goformz-web-app/./node_modules/has-symbols/index.js","webpack://goformz-web-app/./node_modules/has-symbols/shams.js","webpack://goformz-web-app/./node_modules/has-tostringtag/shams.js","webpack://goformz-web-app/./node_modules/hasown/index.js","webpack://goformz-web-app/./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack://goformz-web-app/./node_modules/ieee754/index.js","webpack://goformz-web-app/./node_modules/inherits/inherits_browser.js","webpack://goformz-web-app/./node_modules/inline-style-parser/index.js","webpack://goformz-web-app/./node_modules/is-arguments/index.js","webpack://goformz-web-app/./node_modules/is-callable/index.js","webpack://goformz-web-app/./node_modules/is-generator-function/index.js","webpack://goformz-web-app/./node_modules/is-typed-array/index.js","webpack://goformz-web-app/./node_modules/keyboard-key/src/keyboardKey.js","webpack://goformz-web-app/./node_modules/lodash.isequal/index.js","webpack://goformz-web-app/./node_modules/lodash/_DataView.js","webpack://goformz-web-app/./node_modules/lodash/_Hash.js","webpack://goformz-web-app/./node_modules/lodash/_ListCache.js","webpack://goformz-web-app/./node_modules/lodash/_Map.js","webpack://goformz-web-app/./node_modules/lodash/_MapCache.js","webpack://goformz-web-app/./node_modules/lodash/_Promise.js","webpack://goformz-web-app/./node_modules/lodash/_Set.js","webpack://goformz-web-app/./node_modules/lodash/_SetCache.js","webpack://goformz-web-app/./node_modules/lodash/_Stack.js","webpack://goformz-web-app/./node_modules/lodash/_Symbol.js","webpack://goformz-web-app/./node_modules/lodash/_Uint8Array.js","webpack://goformz-web-app/./node_modules/lodash/_WeakMap.js","webpack://goformz-web-app/./node_modules/lodash/_arrayEach.js","webpack://goformz-web-app/./node_modules/lodash/_arrayFilter.js","webpack://goformz-web-app/./node_modules/lodash/_arrayLikeKeys.js","webpack://goformz-web-app/./node_modules/lodash/_arrayMap.js","webpack://goformz-web-app/./node_modules/lodash/_arrayPush.js","webpack://goformz-web-app/./node_modules/lodash/_arraySome.js","webpack://goformz-web-app/./node_modules/lodash/_assignValue.js","webpack://goformz-web-app/./node_modules/lodash/_assocIndexOf.js","webpack://goformz-web-app/./node_modules/lodash/_baseAssign.js","webpack://goformz-web-app/./node_modules/lodash/_baseAssignIn.js","webpack://goformz-web-app/./node_modules/lodash/_baseAssignValue.js","webpack://goformz-web-app/./node_modules/lodash/_baseClone.js","webpack://goformz-web-app/./node_modules/lodash/_baseCreate.js","webpack://goformz-web-app/./node_modules/lodash/_baseEach.js","webpack://goformz-web-app/./node_modules/lodash/_baseFlatten.js","webpack://goformz-web-app/./node_modules/lodash/_baseFor.js","webpack://goformz-web-app/./node_modules/lodash/_baseForOwn.js","webpack://goformz-web-app/./node_modules/lodash/_baseGet.js","webpack://goformz-web-app/./node_modules/lodash/_baseGetAllKeys.js","webpack://goformz-web-app/./node_modules/lodash/_baseGetTag.js","webpack://goformz-web-app/./node_modules/lodash/_baseHasIn.js","webpack://goformz-web-app/./node_modules/lodash/_baseIsArguments.js","webpack://goformz-web-app/./node_modules/lodash/_baseIsEqual.js","webpack://goformz-web-app/./node_modules/lodash/_baseIsEqualDeep.js","webpack://goformz-web-app/./node_modules/lodash/_baseIsMap.js","webpack://goformz-web-app/./node_modules/lodash/_baseIsMatch.js","webpack://goformz-web-app/./node_modules/lodash/_baseIsNative.js","webpack://goformz-web-app/./node_modules/lodash/_baseIsRegExp.js","webpack://goformz-web-app/./node_modules/lodash/_baseIsSet.js","webpack://goformz-web-app/./node_modules/lodash/_baseIsTypedArray.js","webpack://goformz-web-app/./node_modules/lodash/_baseIteratee.js","webpack://goformz-web-app/./node_modules/lodash/_baseKeys.js","webpack://goformz-web-app/./node_modules/lodash/_baseKeysIn.js","webpack://goformz-web-app/./node_modules/lodash/_baseMap.js","webpack://goformz-web-app/./node_modules/lodash/_baseMatches.js","webpack://goformz-web-app/./node_modules/lodash/_baseMatchesProperty.js","webpack://goformz-web-app/./node_modules/lodash/_baseProperty.js","webpack://goformz-web-app/./node_modules/lodash/_basePropertyDeep.js","webpack://goformz-web-app/./node_modules/lodash/_baseTimes.js","webpack://goformz-web-app/./node_modules/lodash/_baseToString.js","webpack://goformz-web-app/./node_modules/lodash/_baseUnary.js","webpack://goformz-web-app/./node_modules/lodash/_cacheHas.js","webpack://goformz-web-app/./node_modules/lodash/_castFunction.js","webpack://goformz-web-app/./node_modules/lodash/_castPath.js","webpack://goformz-web-app/./node_modules/lodash/_cloneArrayBuffer.js","webpack://goformz-web-app/./node_modules/lodash/_cloneBuffer.js","webpack://goformz-web-app/./node_modules/lodash/_cloneDataView.js","webpack://goformz-web-app/./node_modules/lodash/_cloneRegExp.js","webpack://goformz-web-app/./node_modules/lodash/_cloneSymbol.js","webpack://goformz-web-app/./node_modules/lodash/_cloneTypedArray.js","webpack://goformz-web-app/./node_modules/lodash/_copyArray.js","webpack://goformz-web-app/./node_modules/lodash/_copyObject.js","webpack://goformz-web-app/./node_modules/lodash/_copySymbols.js","webpack://goformz-web-app/./node_modules/lodash/_copySymbolsIn.js","webpack://goformz-web-app/./node_modules/lodash/_coreJsData.js","webpack://goformz-web-app/./node_modules/lodash/_createBaseEach.js","webpack://goformz-web-app/./node_modules/lodash/_createBaseFor.js","webpack://goformz-web-app/./node_modules/lodash/_defineProperty.js","webpack://goformz-web-app/./node_modules/lodash/_equalArrays.js","webpack://goformz-web-app/./node_modules/lodash/_equalByTag.js","webpack://goformz-web-app/./node_modules/lodash/_equalObjects.js","webpack://goformz-web-app/./node_modules/lodash/_freeGlobal.js","webpack://goformz-web-app/./node_modules/lodash/_getAllKeys.js","webpack://goformz-web-app/./node_modules/lodash/_getAllKeysIn.js","webpack://goformz-web-app/./node_modules/lodash/_getMapData.js","webpack://goformz-web-app/./node_modules/lodash/_getMatchData.js","webpack://goformz-web-app/./node_modules/lodash/_getNative.js","webpack://goformz-web-app/./node_modules/lodash/_getPrototype.js","webpack://goformz-web-app/./node_modules/lodash/_getRawTag.js","webpack://goformz-web-app/./node_modules/lodash/_getSymbols.js","webpack://goformz-web-app/./node_modules/lodash/_getSymbolsIn.js","webpack://goformz-web-app/./node_modules/lodash/_getTag.js","webpack://goformz-web-app/./node_modules/lodash/_getValue.js","webpack://goformz-web-app/./node_modules/lodash/_hasPath.js","webpack://goformz-web-app/./node_modules/lodash/_hashClear.js","webpack://goformz-web-app/./node_modules/lodash/_hashDelete.js","webpack://goformz-web-app/./node_modules/lodash/_hashGet.js","webpack://goformz-web-app/./node_modules/lodash/_hashHas.js","webpack://goformz-web-app/./node_modules/lodash/_hashSet.js","webpack://goformz-web-app/./node_modules/lodash/_initCloneArray.js","webpack://goformz-web-app/./node_modules/lodash/_initCloneByTag.js","webpack://goformz-web-app/./node_modules/lodash/_initCloneObject.js","webpack://goformz-web-app/./node_modules/lodash/_isFlattenable.js","webpack://goformz-web-app/./node_modules/lodash/_isIndex.js","webpack://goformz-web-app/./node_modules/lodash/_isKey.js","webpack://goformz-web-app/./node_modules/lodash/_isKeyable.js","webpack://goformz-web-app/./node_modules/lodash/_isMasked.js","webpack://goformz-web-app/./node_modules/lodash/_isPrototype.js","webpack://goformz-web-app/./node_modules/lodash/_isStrictComparable.js","webpack://goformz-web-app/./node_modules/lodash/_listCacheClear.js","webpack://goformz-web-app/./node_modules/lodash/_listCacheDelete.js","webpack://goformz-web-app/./node_modules/lodash/_listCacheGet.js","webpack://goformz-web-app/./node_modules/lodash/_listCacheHas.js","webpack://goformz-web-app/./node_modules/lodash/_listCacheSet.js","webpack://goformz-web-app/./node_modules/lodash/_mapCacheClear.js","webpack://goformz-web-app/./node_modules/lodash/_mapCacheDelete.js","webpack://goformz-web-app/./node_modules/lodash/_mapCacheGet.js","webpack://goformz-web-app/./node_modules/lodash/_mapCacheHas.js","webpack://goformz-web-app/./node_modules/lodash/_mapCacheSet.js","webpack://goformz-web-app/./node_modules/lodash/_mapToArray.js","webpack://goformz-web-app/./node_modules/lodash/_matchesStrictComparable.js","webpack://goformz-web-app/./node_modules/lodash/_memoizeCapped.js","webpack://goformz-web-app/./node_modules/lodash/_nativeCreate.js","webpack://goformz-web-app/./node_modules/lodash/_nativeKeys.js","webpack://goformz-web-app/./node_modules/lodash/_nativeKeysIn.js","webpack://goformz-web-app/./node_modules/lodash/_nodeUtil.js","webpack://goformz-web-app/./node_modules/lodash/_objectToString.js","webpack://goformz-web-app/./node_modules/lodash/_overArg.js","webpack://goformz-web-app/./node_modules/lodash/_root.js","webpack://goformz-web-app/./node_modules/lodash/_setCacheAdd.js","webpack://goformz-web-app/./node_modules/lodash/_setCacheHas.js","webpack://goformz-web-app/./node_modules/lodash/_setToArray.js","webpack://goformz-web-app/./node_modules/lodash/_stackClear.js","webpack://goformz-web-app/./node_modules/lodash/_stackDelete.js","webpack://goformz-web-app/./node_modules/lodash/_stackGet.js","webpack://goformz-web-app/./node_modules/lodash/_stackHas.js","webpack://goformz-web-app/./node_modules/lodash/_stackSet.js","webpack://goformz-web-app/./node_modules/lodash/_stringToPath.js","webpack://goformz-web-app/./node_modules/lodash/_toKey.js","webpack://goformz-web-app/./node_modules/lodash/_toSource.js","webpack://goformz-web-app/./node_modules/lodash/cloneDeep.js","webpack://goformz-web-app/./node_modules/lodash/eq.js","webpack://goformz-web-app/./node_modules/lodash/escapeRegExp.js","webpack://goformz-web-app/./node_modules/lodash/flatten.js","webpack://goformz-web-app/./node_modules/lodash/forOwn.js","webpack://goformz-web-app/./node_modules/lodash/get.js","webpack://goformz-web-app/./node_modules/lodash/hasIn.js","webpack://goformz-web-app/./node_modules/lodash/identity.js","webpack://goformz-web-app/./node_modules/lodash/isArguments.js","webpack://goformz-web-app/./node_modules/lodash/isArray.js","webpack://goformz-web-app/./node_modules/lodash/isArrayLike.js","webpack://goformz-web-app/./node_modules/lodash/isBuffer.js","webpack://goformz-web-app/./node_modules/lodash/isFunction.js","webpack://goformz-web-app/./node_modules/lodash/isLength.js","webpack://goformz-web-app/./node_modules/lodash/isMap.js","webpack://goformz-web-app/./node_modules/lodash/isObject.js","webpack://goformz-web-app/./node_modules/lodash/isObjectLike.js","webpack://goformz-web-app/./node_modules/lodash/isPlainObject.js","webpack://goformz-web-app/./node_modules/lodash/isRegExp.js","webpack://goformz-web-app/./node_modules/lodash/isSet.js","webpack://goformz-web-app/./node_modules/lodash/isString.js","webpack://goformz-web-app/./node_modules/lodash/isSymbol.js","webpack://goformz-web-app/./node_modules/lodash/isTypedArray.js","webpack://goformz-web-app/./node_modules/lodash/keys.js","webpack://goformz-web-app/./node_modules/lodash/keysIn.js","webpack://goformz-web-app/./node_modules/lodash/map.js","webpack://goformz-web-app/./node_modules/lodash/memoize.js","webpack://goformz-web-app/./node_modules/lodash/property.js","webpack://goformz-web-app/./node_modules/lodash/stubArray.js","webpack://goformz-web-app/./node_modules/lodash/stubFalse.js","webpack://goformz-web-app/./node_modules/lodash/toString.js","webpack://goformz-web-app/./node_modules/mic-recorder-to-mp3/dist/index.js","webpack://goformz-web-app/./node_modules/object-assign/index.js","webpack://goformz-web-app/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://goformz-web-app/./node_modules/prop-types/index.js","webpack://goformz-web-app/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://goformz-web-app/./node_modules/querystring/decode.js","webpack://goformz-web-app/./node_modules/querystring/encode.js","webpack://goformz-web-app/./node_modules/querystring/index.js","webpack://goformz-web-app/./node_modules/react-addons-pure-render-mixin/index.js","webpack://goformz-web-app/./node_modules/react-color/es/helpers/checkboard.js","webpack://goformz-web-app/./node_modules/react-color/es/components/common/Checkboard.js","webpack://goformz-web-app/./node_modules/react-color/es/components/common/Alpha.js","webpack://goformz-web-app/./node_modules/react-color/es/helpers/alpha.js","webpack://goformz-web-app/./node_modules/react-color/es/components/common/EditableInput.js","webpack://goformz-web-app/./node_modules/react-color/es/helpers/hue.js","webpack://goformz-web-app/./node_modules/react-color/es/components/common/Hue.js","webpack://goformz-web-app/./node_modules/lodash-es/_assignMergeValue.js","webpack://goformz-web-app/./node_modules/lodash-es/_cloneBuffer.js","webpack://goformz-web-app/./node_modules/lodash-es/_cloneArrayBuffer.js","webpack://goformz-web-app/./node_modules/lodash-es/_cloneTypedArray.js","webpack://goformz-web-app/./node_modules/lodash-es/_copyArray.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseCreate.js","webpack://goformz-web-app/./node_modules/lodash-es/_initCloneObject.js","webpack://goformz-web-app/./node_modules/lodash-es/_safeGet.js","webpack://goformz-web-app/./node_modules/lodash-es/_copyObject.js","webpack://goformz-web-app/./node_modules/lodash-es/_nativeKeysIn.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseKeysIn.js","webpack://goformz-web-app/./node_modules/lodash-es/keysIn.js","webpack://goformz-web-app/./node_modules/lodash-es/toPlainObject.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseMergeDeep.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseMerge.js","webpack://goformz-web-app/./node_modules/lodash-es/merge.js","webpack://goformz-web-app/./node_modules/lodash-es/_createAssigner.js","webpack://goformz-web-app/./node_modules/react-color/es/components/common/Raised.js","webpack://goformz-web-app/./node_modules/lodash-es/now.js","webpack://goformz-web-app/./node_modules/lodash-es/debounce.js","webpack://goformz-web-app/./node_modules/lodash-es/throttle.js","webpack://goformz-web-app/./node_modules/react-color/es/helpers/saturation.js","webpack://goformz-web-app/./node_modules/react-color/es/components/common/Saturation.js","webpack://goformz-web-app/./node_modules/tinycolor2/esm/tinycolor.js","webpack://goformz-web-app/./node_modules/react-color/es/helpers/color.js","webpack://goformz-web-app/./node_modules/react-color/es/components/common/ColorWrap.js","webpack://goformz-web-app/./node_modules/react-color/es/helpers/interaction.js","webpack://goformz-web-app/./node_modules/react-color/es/components/common/Swatch.js","webpack://goformz-web-app/./node_modules/react-color/es/components/alpha/AlphaPointer.js","webpack://goformz-web-app/./node_modules/react-color/es/components/alpha/Alpha.js","webpack://goformz-web-app/./node_modules/react-color/es/components/block/BlockSwatches.js","webpack://goformz-web-app/./node_modules/react-color/es/components/block/Block.js","webpack://goformz-web-app/./node_modules/material-colors/dist/colors.es2015.js","webpack://goformz-web-app/./node_modules/react-color/es/components/circle/CircleSwatch.js","webpack://goformz-web-app/./node_modules/react-color/es/components/circle/Circle.js","webpack://goformz-web-app/./node_modules/react-color/es/components/chrome/ChromeFields.js","webpack://goformz-web-app/./node_modules/react-color/es/components/chrome/ChromePointer.js","webpack://goformz-web-app/./node_modules/react-color/es/components/chrome/ChromePointerCircle.js","webpack://goformz-web-app/./node_modules/react-color/es/components/chrome/Chrome.js","webpack://goformz-web-app/./node_modules/react-color/es/components/compact/CompactColor.js","webpack://goformz-web-app/./node_modules/react-color/es/components/compact/CompactFields.js","webpack://goformz-web-app/./node_modules/react-color/es/components/compact/Compact.js","webpack://goformz-web-app/./node_modules/react-color/es/components/github/GithubSwatch.js","webpack://goformz-web-app/./node_modules/react-color/es/components/github/Github.js","webpack://goformz-web-app/./node_modules/react-color/es/components/hue/HuePointer.js","webpack://goformz-web-app/./node_modules/react-color/es/components/hue/Hue.js","webpack://goformz-web-app/./node_modules/react-color/es/components/material/Material.js","webpack://goformz-web-app/./node_modules/react-color/es/components/photoshop/PhotoshopFields.js","webpack://goformz-web-app/./node_modules/react-color/es/components/photoshop/PhotoshopPointerCircle.js","webpack://goformz-web-app/./node_modules/react-color/es/components/photoshop/PhotoshopPointer.js","webpack://goformz-web-app/./node_modules/react-color/es/components/photoshop/PhotoshopButton.js","webpack://goformz-web-app/./node_modules/react-color/es/components/photoshop/PhotoshopPreviews.js","webpack://goformz-web-app/./node_modules/react-color/es/components/photoshop/Photoshop.js","webpack://goformz-web-app/./node_modules/react-color/es/components/sketch/SketchFields.js","webpack://goformz-web-app/./node_modules/react-color/es/components/sketch/SketchPresetColors.js","webpack://goformz-web-app/./node_modules/react-color/es/components/sketch/Sketch.js","webpack://goformz-web-app/./node_modules/react-color/es/components/slider/SliderSwatch.js","webpack://goformz-web-app/./node_modules/react-color/es/components/slider/SliderSwatches.js","webpack://goformz-web-app/./node_modules/react-color/es/components/slider/SliderPointer.js","webpack://goformz-web-app/./node_modules/react-color/es/components/slider/Slider.js","webpack://goformz-web-app/./node_modules/react-color/es/components/swatches/SwatchesColor.js","webpack://goformz-web-app/./node_modules/react-color/es/components/swatches/SwatchesGroup.js","webpack://goformz-web-app/./node_modules/react-color/es/components/swatches/Swatches.js","webpack://goformz-web-app/./node_modules/react-color/es/components/twitter/Twitter.js","webpack://goformz-web-app/./node_modules/react-color/es/components/google/GooglePointerCircle.js","webpack://goformz-web-app/./node_modules/react-color/es/components/google/GooglePointer.js","webpack://goformz-web-app/./node_modules/react-color/es/components/google/GoogleFields.js","webpack://goformz-web-app/./node_modules/react-color/es/components/google/Google.js","webpack://goformz-web-app/./node_modules/react-day-picker/lib/react-day-picker.min.js","webpack://goformz-web-app/./node_modules/react-dom/cjs/react-dom.production.min.js","webpack://goformz-web-app/./node_modules/react-dom/index.js","webpack://goformz-web-app/./node_modules/react-dropzone/dist/es/utils/index.js","webpack://goformz-web-app/./node_modules/react-dropzone/dist/es/utils/styles.js","webpack://goformz-web-app/./node_modules/react-dropzone/dist/es/index.js","webpack://goformz-web-app/./node_modules/react-fast-compare/index.js","webpack://goformz-web-app/./node_modules/react-helmet/es/Helmet.js","webpack://goformz-web-app/./node_modules/react-is/cjs/react-is.production.min.js","webpack://goformz-web-app/./node_modules/react-is/index.js","webpack://goformz-web-app/./node_modules/react-markdown/node_modules/react-is/cjs/react-is.production.min.js","webpack://goformz-web-app/./node_modules/react-markdown/node_modules/react-is/index.js","webpack://goformz-web-app/./node_modules/react-redux/es/components/Context.js","webpack://goformz-web-app/./node_modules/react-redux/es/utils/batch.js","webpack://goformz-web-app/./node_modules/react-redux/es/utils/Subscription.js","webpack://goformz-web-app/./node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","webpack://goformz-web-app/./node_modules/react-redux/es/components/Provider.js","webpack://goformz-web-app/./node_modules/react-redux/es/components/connectAdvanced.js","webpack://goformz-web-app/./node_modules/react-redux/es/utils/shallowEqual.js","webpack://goformz-web-app/./node_modules/react-redux/es/connect/wrapMapToProps.js","webpack://goformz-web-app/./node_modules/react-redux/es/connect/mapDispatchToProps.js","webpack://goformz-web-app/./node_modules/react-redux/es/utils/bindActionCreators.js","webpack://goformz-web-app/./node_modules/react-redux/es/connect/mapStateToProps.js","webpack://goformz-web-app/./node_modules/react-redux/es/connect/mergeProps.js","webpack://goformz-web-app/./node_modules/react-redux/es/connect/selectorFactory.js","webpack://goformz-web-app/./node_modules/react-redux/es/connect/connect.js","webpack://goformz-web-app/./node_modules/react-redux/es/hooks/useReduxContext.js","webpack://goformz-web-app/./node_modules/react-redux/es/hooks/useStore.js","webpack://goformz-web-app/./node_modules/react-redux/es/hooks/useDispatch.js","webpack://goformz-web-app/./node_modules/react-redux/es/hooks/useSelector.js","webpack://goformz-web-app/./node_modules/react-redux/es/index.js","webpack://goformz-web-app/./node_modules/react-redux/node_modules/react-is/cjs/react-is.production.min.js","webpack://goformz-web-app/./node_modules/react-redux/node_modules/react-is/index.js","webpack://goformz-web-app/./node_modules/react-router-dom/node_modules/@remix-run/router/dist/router.js","webpack://goformz-web-app/./node_modules/react-router-dom/dist/index.js","webpack://goformz-web-app/./node_modules/react-router/dist/index.js","webpack://goformz-web-app/./node_modules/react-router/node_modules/@remix-run/router/dist/router.js","webpack://goformz-web-app/./node_modules/react-side-effect/lib/index.js","webpack://goformz-web-app/./node_modules/react-string-replace/index.js","webpack://goformz-web-app/./node_modules/dom-helpers/esm/removeClass.js","webpack://goformz-web-app/./node_modules/react-transition-group/esm/CSSTransition.js","webpack://goformz-web-app/./node_modules/dom-helpers/esm/addClass.js","webpack://goformz-web-app/./node_modules/dom-helpers/esm/hasClass.js","webpack://goformz-web-app/./node_modules/react-transition-group/esm/config.js","webpack://goformz-web-app/./node_modules/react-transition-group/esm/Transition.js","webpack://goformz-web-app/./node_modules/react-transition-group/esm/utils/ChildMapping.js","webpack://goformz-web-app/./node_modules/react-transition-group/esm/TransitionGroup.js","webpack://goformz-web-app/./node_modules/react-transition-group/esm/TransitionGroupContext.js","webpack://goformz-web-app/./node_modules/react-transition-group/esm/utils/reflow.js","webpack://goformz-web-app/./node_modules/react/cjs/react.production.min.js","webpack://goformz-web-app/./node_modules/react/index.js","webpack://goformz-web-app/./node_modules/reactcss/lib/autoprefix.js","webpack://goformz-web-app/./node_modules/reactcss/lib/components/active.js","webpack://goformz-web-app/./node_modules/reactcss/lib/components/hover.js","webpack://goformz-web-app/./node_modules/reactcss/lib/flattenNames.js","webpack://goformz-web-app/./node_modules/reactcss/lib/index.js","webpack://goformz-web-app/./node_modules/reactcss/lib/loop.js","webpack://goformz-web-app/./node_modules/reactcss/lib/mergeClasses.js","webpack://goformz-web-app/./node_modules/readable-stream/errors-browser.js","webpack://goformz-web-app/./node_modules/readable-stream/lib/_stream_duplex.js","webpack://goformz-web-app/./node_modules/readable-stream/lib/_stream_passthrough.js","webpack://goformz-web-app/./node_modules/readable-stream/lib/_stream_readable.js","webpack://goformz-web-app/./node_modules/readable-stream/lib/_stream_transform.js","webpack://goformz-web-app/./node_modules/readable-stream/lib/_stream_writable.js","webpack://goformz-web-app/./node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack://goformz-web-app/./node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack://goformz-web-app/./node_modules/readable-stream/lib/internal/streams/destroy.js","webpack://goformz-web-app/./node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack://goformz-web-app/./node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack://goformz-web-app/./node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack://goformz-web-app/./node_modules/readable-stream/lib/internal/streams/state.js","webpack://goformz-web-app/./node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack://goformz-web-app/./node_modules/resize-sensor/ResizeSensor.min.js","webpack://goformz-web-app/./node_modules/safe-buffer/index.js","webpack://goformz-web-app/./node_modules/scheduler/cjs/scheduler.production.min.js","webpack://goformz-web-app/./node_modules/scheduler/index.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/addons/Portal/PortalInner.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/addons/Portal/Portal.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/addons/Radio/Radio.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/addons/Select/Select.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/addons/TextArea/TextArea.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/collections/Form/FormButton.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/collections/Form/FormCheckbox.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/collections/Form/FormDropdown.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/collections/Form/FormGroup.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/collections/Form/FormInput.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/collections/Form/FormRadio.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/collections/Form/FormSelect.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/collections/Form/FormTextArea.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/collections/Form/Form.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/collections/Form/FormField.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/collections/Grid/GridRow.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/collections/Grid/Grid.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/collections/Grid/GridColumn.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/collections/Menu/MenuHeader.js","webpack://goformz-web-app/./node_modules/lodash-es/_asciiWords.js","webpack://goformz-web-app/./node_modules/lodash-es/_hasUnicodeWord.js","webpack://goformz-web-app/./node_modules/lodash-es/_unicodeWords.js","webpack://goformz-web-app/./node_modules/lodash-es/words.js","webpack://goformz-web-app/./node_modules/lodash-es/_createCompounder.js","webpack://goformz-web-app/./node_modules/lodash-es/_castSlice.js","webpack://goformz-web-app/./node_modules/lodash-es/_asciiToArray.js","webpack://goformz-web-app/./node_modules/lodash-es/_unicodeToArray.js","webpack://goformz-web-app/./node_modules/lodash-es/_stringToArray.js","webpack://goformz-web-app/./node_modules/lodash-es/upperFirst.js","webpack://goformz-web-app/./node_modules/lodash-es/_createCaseFirst.js","webpack://goformz-web-app/./node_modules/lodash-es/startCase.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/collections/Menu/MenuItem.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/collections/Menu/MenuMenu.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/collections/Menu/Menu.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/elements/Button/ButtonContent.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/elements/Button/ButtonGroup.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/elements/Button/ButtonOr.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/elements/Button/Button.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/elements/Divider/Divider.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/elements/Flag/Flag.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/elements/Icon/IconGroup.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/elements/Icon/Icon.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/elements/Image/ImageGroup.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/elements/Image/Image.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/elements/Input/Input.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/elements/Label/LabelDetail.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/elements/Label/LabelGroup.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/elements/Label/Label.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/elements/Loader/Loader.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/elements/Segment/SegmentGroup.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/elements/Segment/SegmentInline.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/elements/Segment/Segment.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/lib/ModernAutoControlledComponent.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/lib/childrenUtils.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/lib/classNameBuilders.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/lib/doesNodeContainClick.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/lib/eventStack/index.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/lib/factories.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/lib/getElementType.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/lib/getUnhandledProps.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/lib/htmlPropsUtils.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/lib/isBrowser.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/lib/numberToWord.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/modules/Checkbox/Checkbox.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/modules/Dimmer/DimmerInner.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/modules/Dimmer/Dimmer.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/modules/Dimmer/DimmerDimmable.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/modules/Dropdown/DropdownDivider.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/modules/Dropdown/DropdownHeader.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/modules/Dropdown/DropdownMenu.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/modules/Dropdown/DropdownSearchInput.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/modules/Dropdown/DropdownText.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/modules/Dropdown/utils/getMenuOptions.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/modules/Dropdown/utils/getSelectedIndex.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/modules/Dropdown/Dropdown.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/modules/Dropdown/DropdownItem.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/modules/Modal/ModalActions.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/modules/Modal/ModalDescription.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/lib/hooks/useIsomorphicLayoutEffect.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/lib/hooks/useClassNamesOnNode.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/modules/Modal/ModalDimmer.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/modules/Modal/ModalHeader.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/modules/Modal/utils/index.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/modules/Modal/Modal.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/modules/Modal/ModalContent.js","webpack://goformz-web-app/./node_modules/lodash-es/isElement.js","webpack://goformz-web-app/./node_modules/react-popper/lib/esm/Manager.js","webpack://goformz-web-app/./node_modules/react-popper/lib/esm/utils.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/utils/math.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/utils/userAgent.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/enums.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/createPopper.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/utils/debounce.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/utils/getVariation.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/modifiers/offset.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/utils/within.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/modifiers/hide.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/popper.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/modifiers/flip.js","webpack://goformz-web-app/./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack://goformz-web-app/./node_modules/react-popper/lib/esm/usePopper.js","webpack://goformz-web-app/./node_modules/react-popper/lib/esm/Popper.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseInverter.js","webpack://goformz-web-app/./node_modules/lodash-es/_createInverter.js","webpack://goformz-web-app/./node_modules/lodash-es/invert.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/modules/Popup/lib/positions.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/modules/Popup/lib/createReferenceProxy.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/modules/Popup/PopupContent.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/modules/Popup/PopupHeader.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/modules/Popup/Popup.js","webpack://goformz-web-app/./node_modules/lodash-es/_createRound.js","webpack://goformz-web-app/./node_modules/lodash-es/round.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseClamp.js","webpack://goformz-web-app/./node_modules/lodash-es/clamp.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/modules/Progress/Progress.js","webpack://goformz-web-app/./node_modules/@fluentui/react-component-event-listener/dist/es/useEventListener.js","webpack://goformz-web-app/./node_modules/@fluentui/react-component-event-listener/dist/es/EventListener.js","webpack://goformz-web-app/./node_modules/@fluentui/react-component-event-listener/dist/es/index.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/modules/Sidebar/SidebarPushable.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/modules/Sidebar/SidebarPusher.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/modules/Sidebar/Sidebar.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/modules/Tab/TabPane.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/modules/Tab/Tab.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/views/Card/CardDescription.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/views/Card/CardHeader.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/views/Card/CardMeta.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/views/Card/CardContent.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/views/Card/CardGroup.js","webpack://goformz-web-app/./node_modules/semantic-ui-react/dist/es/views/Card/Card.js","webpack://goformz-web-app/./node_modules/set-function-length/index.js","webpack://goformz-web-app/./node_modules/shallowequal/index.js","webpack://goformz-web-app/./node_modules/signature_pad/dist/signature_pad.js","webpack://goformz-web-app/./node_modules/stream-browserify/index.js","webpack://goformz-web-app/./node_modules/string_decoder/lib/string_decoder.js","webpack://goformz-web-app/./node_modules/style-loader/addStyles.js","webpack://goformz-web-app/./node_modules/style-to-object/index.js","webpack://goformz-web-app/./node_modules/unified/node_modules/is-buffer/index.js","webpack://goformz-web-app/./node_modules/util-deprecate/browser.js","webpack://goformz-web-app/./node_modules/util/support/isBufferBrowser.js","webpack://goformz-web-app/./node_modules/util/support/types.js","webpack://goformz-web-app/./node_modules/util/util.js","webpack://goformz-web-app/./node_modules/vfile/node_modules/is-buffer/index.js","webpack://goformz-web-app/./node_modules/which-typed-array/index.js","webpack://goformz-web-app/./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://goformz-web-app/./node_modules/@babel/runtime/helpers/typeof.js","webpack://goformz-web-app/./node_modules/@babel/runtime/regenerator/index.js","webpack://goformz-web-app/./node_modules/available-typed-arrays/index.js","webpack://goformz-web-app/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://goformz-web-app/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://goformz-web-app/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://goformz-web-app/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://goformz-web-app/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://goformz-web-app/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://goformz-web-app/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://goformz-web-app/./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack://goformz-web-app/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://goformz-web-app/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://goformz-web-app/./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack://goformz-web-app/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://goformz-web-app/./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://goformz-web-app/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://goformz-web-app/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://goformz-web-app/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://goformz-web-app/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://goformz-web-app/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://goformz-web-app/./node_modules/@loadable/component/dist/loadable.esm.mjs","webpack://goformz-web-app/./node_modules/lodash-es/_listCacheClear.js","webpack://goformz-web-app/./node_modules/lodash-es/_assocIndexOf.js","webpack://goformz-web-app/./node_modules/lodash-es/_listCacheDelete.js","webpack://goformz-web-app/./node_modules/lodash-es/_listCacheGet.js","webpack://goformz-web-app/./node_modules/lodash-es/_listCacheHas.js","webpack://goformz-web-app/./node_modules/lodash-es/_listCacheSet.js","webpack://goformz-web-app/./node_modules/lodash-es/_ListCache.js","webpack://goformz-web-app/./node_modules/lodash-es/_Map.js","webpack://goformz-web-app/./node_modules/lodash-es/_nativeCreate.js","webpack://goformz-web-app/./node_modules/lodash-es/_hashClear.js","webpack://goformz-web-app/./node_modules/lodash-es/_hashDelete.js","webpack://goformz-web-app/./node_modules/lodash-es/_hashGet.js","webpack://goformz-web-app/./node_modules/lodash-es/_hashHas.js","webpack://goformz-web-app/./node_modules/lodash-es/_hashSet.js","webpack://goformz-web-app/./node_modules/lodash-es/_Hash.js","webpack://goformz-web-app/./node_modules/lodash-es/_mapCacheClear.js","webpack://goformz-web-app/./node_modules/lodash-es/_isKeyable.js","webpack://goformz-web-app/./node_modules/lodash-es/_getMapData.js","webpack://goformz-web-app/./node_modules/lodash-es/_mapCacheDelete.js","webpack://goformz-web-app/./node_modules/lodash-es/_mapCacheGet.js","webpack://goformz-web-app/./node_modules/lodash-es/_mapCacheHas.js","webpack://goformz-web-app/./node_modules/lodash-es/_mapCacheSet.js","webpack://goformz-web-app/./node_modules/lodash-es/_MapCache.js","webpack://goformz-web-app/./node_modules/lodash-es/_Set.js","webpack://goformz-web-app/./node_modules/lodash-es/_setCacheAdd.js","webpack://goformz-web-app/./node_modules/lodash-es/_setCacheHas.js","webpack://goformz-web-app/./node_modules/lodash-es/_SetCache.js","webpack://goformz-web-app/./node_modules/lodash-es/_stackClear.js","webpack://goformz-web-app/./node_modules/lodash-es/_stackDelete.js","webpack://goformz-web-app/./node_modules/lodash-es/_stackGet.js","webpack://goformz-web-app/./node_modules/lodash-es/_stackHas.js","webpack://goformz-web-app/./node_modules/lodash-es/_stackSet.js","webpack://goformz-web-app/./node_modules/lodash-es/_Stack.js","webpack://goformz-web-app/./node_modules/lodash-es/_Symbol.js","webpack://goformz-web-app/./node_modules/lodash-es/_Uint8Array.js","webpack://goformz-web-app/./node_modules/lodash-es/_apply.js","webpack://goformz-web-app/./node_modules/lodash-es/_arrayFilter.js","webpack://goformz-web-app/./node_modules/lodash-es/_arrayIncludes.js","webpack://goformz-web-app/./node_modules/lodash-es/_arrayIncludesWith.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseTimes.js","webpack://goformz-web-app/./node_modules/lodash-es/_arrayLikeKeys.js","webpack://goformz-web-app/./node_modules/lodash-es/_arrayMap.js","webpack://goformz-web-app/./node_modules/lodash-es/_arrayPush.js","webpack://goformz-web-app/./node_modules/lodash-es/_arrayReduce.js","webpack://goformz-web-app/./node_modules/lodash-es/_arraySome.js","webpack://goformz-web-app/./node_modules/lodash-es/_assignValue.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseAssignValue.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseDifference.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseEach.js","webpack://goformz-web-app/./node_modules/lodash-es/_createBaseEach.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseFindIndex.js","webpack://goformz-web-app/./node_modules/lodash-es/_isFlattenable.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseFlatten.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseFor.js","webpack://goformz-web-app/./node_modules/lodash-es/_createBaseFor.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseForOwn.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseGet.js","webpack://goformz-web-app/./node_modules/lodash-es/_getRawTag.js","webpack://goformz-web-app/./node_modules/lodash-es/_objectToString.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseGetTag.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseIsNaN.js","webpack://goformz-web-app/./node_modules/lodash-es/_strictIndexOf.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseIndexOf.js","webpack://goformz-web-app/./node_modules/lodash-es/_equalArrays.js","webpack://goformz-web-app/./node_modules/lodash-es/_mapToArray.js","webpack://goformz-web-app/./node_modules/lodash-es/_equalByTag.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseGetAllKeys.js","webpack://goformz-web-app/./node_modules/lodash-es/stubArray.js","webpack://goformz-web-app/./node_modules/lodash-es/_getSymbols.js","webpack://goformz-web-app/./node_modules/lodash-es/_getAllKeys.js","webpack://goformz-web-app/./node_modules/lodash-es/_equalObjects.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseIsEqualDeep.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseIsEqual.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseIsMatch.js","webpack://goformz-web-app/./node_modules/lodash-es/_isStrictComparable.js","webpack://goformz-web-app/./node_modules/lodash-es/_getMatchData.js","webpack://goformz-web-app/./node_modules/lodash-es/_matchesStrictComparable.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseMatches.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseMatchesProperty.js","webpack://goformz-web-app/./node_modules/lodash-es/_basePropertyDeep.js","webpack://goformz-web-app/./node_modules/lodash-es/property.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseIteratee.js","webpack://goformz-web-app/./node_modules/lodash-es/_nativeKeys.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseKeys.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseProperty.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseRest.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseSet.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseSlice.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseUnary.js","webpack://goformz-web-app/./node_modules/lodash-es/_createSet.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseUniq.js","webpack://goformz-web-app/./node_modules/lodash-es/_cacheHas.js","webpack://goformz-web-app/./node_modules/lodash-es/_stringToPath.js","webpack://goformz-web-app/./node_modules/lodash-es/_memoizeCapped.js","webpack://goformz-web-app/./node_modules/lodash-es/_castPath.js","webpack://goformz-web-app/./node_modules/lodash-es/_defineProperty.js","webpack://goformz-web-app/./node_modules/lodash-es/_freeGlobal.js","webpack://goformz-web-app/./node_modules/lodash-es/_coreJsData.js","webpack://goformz-web-app/./node_modules/lodash-es/_isMasked.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseIsNative.js","webpack://goformz-web-app/./node_modules/lodash-es/_getValue.js","webpack://goformz-web-app/./node_modules/lodash-es/_getNative.js","webpack://goformz-web-app/./node_modules/lodash-es/_getPrototype.js","webpack://goformz-web-app/./node_modules/lodash-es/_DataView.js","webpack://goformz-web-app/./node_modules/lodash-es/_Promise.js","webpack://goformz-web-app/./node_modules/lodash-es/_WeakMap.js","webpack://goformz-web-app/./node_modules/lodash-es/_getTag.js","webpack://goformz-web-app/./node_modules/lodash-es/_hasPath.js","webpack://goformz-web-app/./node_modules/lodash-es/_hasUnicode.js","webpack://goformz-web-app/./node_modules/lodash-es/_isIndex.js","webpack://goformz-web-app/./node_modules/lodash-es/_isIterateeCall.js","webpack://goformz-web-app/./node_modules/lodash-es/_isKey.js","webpack://goformz-web-app/./node_modules/lodash-es/_isPrototype.js","webpack://goformz-web-app/./node_modules/lodash-es/_overArg.js","webpack://goformz-web-app/./node_modules/lodash-es/_overRest.js","webpack://goformz-web-app/./node_modules/lodash-es/_root.js","webpack://goformz-web-app/./node_modules/lodash-es/_setToArray.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseSetToString.js","webpack://goformz-web-app/./node_modules/lodash-es/_shortOut.js","webpack://goformz-web-app/./node_modules/lodash-es/_setToString.js","webpack://goformz-web-app/./node_modules/lodash-es/_toKey.js","webpack://goformz-web-app/./node_modules/lodash-es/_toSource.js","webpack://goformz-web-app/./node_modules/lodash-es/compact.js","webpack://goformz-web-app/./node_modules/lodash-es/constant.js","webpack://goformz-web-app/./node_modules/lodash-es/_deburrLetter.js","webpack://goformz-web-app/./node_modules/lodash-es/_basePropertyOf.js","webpack://goformz-web-app/./node_modules/lodash-es/deburr.js","webpack://goformz-web-app/./node_modules/lodash-es/difference.js","webpack://goformz-web-app/./node_modules/lodash-es/dropRight.js","webpack://goformz-web-app/./node_modules/lodash-es/eq.js","webpack://goformz-web-app/./node_modules/lodash-es/escapeRegExp.js","webpack://goformz-web-app/./node_modules/lodash-es/_arrayEvery.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseEvery.js","webpack://goformz-web-app/./node_modules/lodash-es/every.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseFilter.js","webpack://goformz-web-app/./node_modules/lodash-es/filter.js","webpack://goformz-web-app/./node_modules/lodash-es/find.js","webpack://goformz-web-app/./node_modules/lodash-es/_createFind.js","webpack://goformz-web-app/./node_modules/lodash-es/findIndex.js","webpack://goformz-web-app/./node_modules/lodash-es/_arrayEach.js","webpack://goformz-web-app/./node_modules/lodash-es/_castFunction.js","webpack://goformz-web-app/./node_modules/lodash-es/forEach.js","webpack://goformz-web-app/./node_modules/lodash-es/get.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseHasIn.js","webpack://goformz-web-app/./node_modules/lodash-es/hasIn.js","webpack://goformz-web-app/./node_modules/lodash-es/head.js","webpack://goformz-web-app/./node_modules/lodash-es/identity.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseInRange.js","webpack://goformz-web-app/./node_modules/lodash-es/inRange.js","webpack://goformz-web-app/./node_modules/lodash-es/includes.js","webpack://goformz-web-app/./node_modules/lodash-es/last.js","webpack://goformz-web-app/./node_modules/lodash-es/_parent.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseInvoke.js","webpack://goformz-web-app/./node_modules/lodash-es/invoke.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseIsArguments.js","webpack://goformz-web-app/./node_modules/lodash-es/isArguments.js","webpack://goformz-web-app/./node_modules/lodash-es/isArray.js","webpack://goformz-web-app/./node_modules/lodash-es/isArrayLike.js","webpack://goformz-web-app/./node_modules/lodash-es/isArrayLikeObject.js","webpack://goformz-web-app/./node_modules/lodash-es/isBoolean.js","webpack://goformz-web-app/./node_modules/lodash-es/stubFalse.js","webpack://goformz-web-app/./node_modules/lodash-es/isBuffer.js","webpack://goformz-web-app/./node_modules/lodash-es/isEmpty.js","webpack://goformz-web-app/./node_modules/lodash-es/isEqual.js","webpack://goformz-web-app/./node_modules/lodash-es/isFunction.js","webpack://goformz-web-app/./node_modules/lodash-es/isLength.js","webpack://goformz-web-app/./node_modules/lodash-es/isNil.js","webpack://goformz-web-app/./node_modules/lodash-es/isNumber.js","webpack://goformz-web-app/./node_modules/lodash-es/isObject.js","webpack://goformz-web-app/./node_modules/lodash-es/isObjectLike.js","webpack://goformz-web-app/./node_modules/lodash-es/isPlainObject.js","webpack://goformz-web-app/./node_modules/lodash-es/isString.js","webpack://goformz-web-app/./node_modules/lodash-es/isSymbol.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseIsTypedArray.js","webpack://goformz-web-app/./node_modules/lodash-es/_nodeUtil.js","webpack://goformz-web-app/./node_modules/lodash-es/isTypedArray.js","webpack://goformz-web-app/./node_modules/lodash-es/isUndefined.js","webpack://goformz-web-app/./node_modules/lodash-es/keys.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseMap.js","webpack://goformz-web-app/./node_modules/lodash-es/map.js","webpack://goformz-web-app/./node_modules/lodash-es/memoize.js","webpack://goformz-web-app/./node_modules/lodash-es/noop.js","webpack://goformz-web-app/./node_modules/lodash-es/_basePickBy.js","webpack://goformz-web-app/./node_modules/lodash-es/_basePick.js","webpack://goformz-web-app/./node_modules/lodash-es/flatten.js","webpack://goformz-web-app/./node_modules/lodash-es/pick.js","webpack://goformz-web-app/./node_modules/lodash-es/_flatRest.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseReduce.js","webpack://goformz-web-app/./node_modules/lodash-es/reduce.js","webpack://goformz-web-app/./node_modules/lodash-es/set.js","webpack://goformz-web-app/./node_modules/lodash-es/_asciiSize.js","webpack://goformz-web-app/./node_modules/lodash-es/_unicodeSize.js","webpack://goformz-web-app/./node_modules/lodash-es/_stringSize.js","webpack://goformz-web-app/./node_modules/lodash-es/size.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseSome.js","webpack://goformz-web-app/./node_modules/lodash-es/some.js","webpack://goformz-web-app/./node_modules/lodash-es/toFinite.js","webpack://goformz-web-app/./node_modules/lodash-es/toInteger.js","webpack://goformz-web-app/./node_modules/lodash-es/_trimmedEndIndex.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseTrim.js","webpack://goformz-web-app/./node_modules/lodash-es/toNumber.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseToString.js","webpack://goformz-web-app/./node_modules/lodash-es/toString.js","webpack://goformz-web-app/./node_modules/lodash-es/union.js","webpack://goformz-web-app/./node_modules/lodash-es/uniq.js","webpack://goformz-web-app/./node_modules/lodash-es/_baseValues.js","webpack://goformz-web-app/./node_modules/lodash-es/values.js","webpack://goformz-web-app/./node_modules/lodash-es/without.js","webpack://goformz-web-app/./node_modules/unist-util-stringify-position/lib/index.js","webpack://goformz-web-app/./node_modules/vfile-message/lib/index.js","webpack://goformz-web-app/./node_modules/vfile/lib/minpath.browser.js","webpack://goformz-web-app/./node_modules/vfile/lib/minproc.browser.js","webpack://goformz-web-app/./node_modules/vfile/lib/minurl.shared.js","webpack://goformz-web-app/./node_modules/vfile/lib/minurl.browser.js","webpack://goformz-web-app/./node_modules/vfile/lib/index.js","webpack://goformz-web-app/./node_modules/bail/index.js","webpack://goformz-web-app/./node_modules/unified/node_modules/is-plain-obj/index.js","webpack://goformz-web-app/./node_modules/trough/lib/index.js","webpack://goformz-web-app/./node_modules/unified/lib/index.js","webpack://goformz-web-app/./node_modules/mdast-util-to-string/lib/index.js","webpack://goformz-web-app/./node_modules/micromark-util-chunked/index.js","webpack://goformz-web-app/./node_modules/micromark-util-combine-extensions/index.js","webpack://goformz-web-app/./node_modules/micromark-util-character/lib/unicode-punctuation-regex.js","webpack://goformz-web-app/./node_modules/micromark-util-character/index.js","webpack://goformz-web-app/./node_modules/micromark-factory-space/index.js","webpack://goformz-web-app/./node_modules/micromark/lib/initialize/content.js","webpack://goformz-web-app/./node_modules/micromark/lib/initialize/document.js","webpack://goformz-web-app/./node_modules/micromark-core-commonmark/lib/blank-line.js","webpack://goformz-web-app/./node_modules/micromark-util-subtokenize/index.js","webpack://goformz-web-app/./node_modules/micromark-core-commonmark/lib/content.js","webpack://goformz-web-app/./node_modules/micromark/lib/initialize/flow.js","webpack://goformz-web-app/./node_modules/micromark/lib/initialize/text.js","webpack://goformz-web-app/./node_modules/micromark-util-resolve-all/index.js","webpack://goformz-web-app/./node_modules/micromark/lib/create-tokenizer.js","webpack://goformz-web-app/./node_modules/micromark-core-commonmark/lib/thematic-break.js","webpack://goformz-web-app/./node_modules/micromark-core-commonmark/lib/list.js","webpack://goformz-web-app/./node_modules/micromark-core-commonmark/lib/block-quote.js","webpack://goformz-web-app/./node_modules/micromark-factory-destination/index.js","webpack://goformz-web-app/./node_modules/micromark-factory-label/index.js","webpack://goformz-web-app/./node_modules/micromark-factory-title/index.js","webpack://goformz-web-app/./node_modules/micromark-factory-whitespace/index.js","webpack://goformz-web-app/./node_modules/micromark-util-normalize-identifier/index.js","webpack://goformz-web-app/./node_modules/micromark-core-commonmark/lib/definition.js","webpack://goformz-web-app/./node_modules/micromark-core-commonmark/lib/code-indented.js","webpack://goformz-web-app/./node_modules/micromark-core-commonmark/lib/heading-atx.js","webpack://goformz-web-app/./node_modules/micromark-core-commonmark/lib/setext-underline.js","webpack://goformz-web-app/./node_modules/micromark-util-html-tag-name/index.js","webpack://goformz-web-app/./node_modules/micromark-core-commonmark/lib/html-flow.js","webpack://goformz-web-app/./node_modules/micromark-core-commonmark/lib/code-fenced.js","webpack://goformz-web-app/./node_modules/decode-named-character-reference/index.dom.js","webpack://goformz-web-app/./node_modules/micromark-core-commonmark/lib/character-reference.js","webpack://goformz-web-app/./node_modules/micromark-core-commonmark/lib/character-escape.js","webpack://goformz-web-app/./node_modules/micromark-core-commonmark/lib/line-ending.js","webpack://goformz-web-app/./node_modules/micromark-core-commonmark/lib/label-end.js","webpack://goformz-web-app/./node_modules/micromark-core-commonmark/lib/label-start-image.js","webpack://goformz-web-app/./node_modules/micromark-util-classify-character/index.js","webpack://goformz-web-app/./node_modules/micromark-core-commonmark/lib/attention.js","webpack://goformz-web-app/./node_modules/micromark-core-commonmark/lib/autolink.js","webpack://goformz-web-app/./node_modules/micromark-core-commonmark/lib/html-text.js","webpack://goformz-web-app/./node_modules/micromark-core-commonmark/lib/label-start-link.js","webpack://goformz-web-app/./node_modules/micromark-core-commonmark/lib/hard-break-escape.js","webpack://goformz-web-app/./node_modules/micromark-core-commonmark/lib/code-text.js","webpack://goformz-web-app/./node_modules/micromark/lib/constructs.js","webpack://goformz-web-app/./node_modules/micromark/lib/parse.js","webpack://goformz-web-app/./node_modules/micromark/lib/preprocess.js","webpack://goformz-web-app/./node_modules/micromark-util-decode-numeric-character-reference/index.js","webpack://goformz-web-app/./node_modules/micromark-util-decode-string/index.js","webpack://goformz-web-app/./node_modules/mdast-util-from-markdown/lib/index.js","webpack://goformz-web-app/./node_modules/micromark/lib/postprocess.js","webpack://goformz-web-app/./node_modules/remark-parse/lib/index.js","webpack://goformz-web-app/./node_modules/micromark-util-sanitize-uri/index.js","webpack://goformz-web-app/./node_modules/unist-util-is/lib/index.js","webpack://goformz-web-app/./node_modules/unist-util-visit-parents/lib/index.js","webpack://goformz-web-app/./node_modules/unist-util-visit/lib/index.js","webpack://goformz-web-app/./node_modules/unist-util-position/lib/index.js","webpack://goformz-web-app/./node_modules/mdast-util-definitions/lib/index.js","webpack://goformz-web-app/./node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js","webpack://goformz-web-app/./node_modules/mdast-util-to-hast/lib/revert.js","webpack://goformz-web-app/./node_modules/mdast-util-to-hast/lib/handlers/list-item.js","webpack://goformz-web-app/./node_modules/trim-lines/index.js","webpack://goformz-web-app/./node_modules/mdast-util-to-hast/lib/handlers/index.js","webpack://goformz-web-app/./node_modules/mdast-util-to-hast/lib/handlers/blockquote.js","webpack://goformz-web-app/./node_modules/mdast-util-to-hast/lib/handlers/break.js","webpack://goformz-web-app/./node_modules/mdast-util-to-hast/lib/handlers/code.js","webpack://goformz-web-app/./node_modules/mdast-util-to-hast/lib/handlers/delete.js","webpack://goformz-web-app/./node_modules/mdast-util-to-hast/lib/handlers/emphasis.js","webpack://goformz-web-app/./node_modules/mdast-util-to-hast/lib/handlers/footnote.js","webpack://goformz-web-app/./node_modules/mdast-util-to-hast/lib/handlers/heading.js","webpack://goformz-web-app/./node_modules/mdast-util-to-hast/lib/handlers/html.js","webpack://goformz-web-app/./node_modules/mdast-util-to-hast/lib/handlers/image-reference.js","webpack://goformz-web-app/./node_modules/mdast-util-to-hast/lib/handlers/image.js","webpack://goformz-web-app/./node_modules/mdast-util-to-hast/lib/handlers/inline-code.js","webpack://goformz-web-app/./node_modules/mdast-util-to-hast/lib/handlers/link-reference.js","webpack://goformz-web-app/./node_modules/mdast-util-to-hast/lib/handlers/link.js","webpack://goformz-web-app/./node_modules/mdast-util-to-hast/lib/handlers/list.js","webpack://goformz-web-app/./node_modules/mdast-util-to-hast/lib/handlers/paragraph.js","webpack://goformz-web-app/./node_modules/mdast-util-to-hast/lib/handlers/root.js","webpack://goformz-web-app/./node_modules/mdast-util-to-hast/lib/handlers/strong.js","webpack://goformz-web-app/./node_modules/mdast-util-to-hast/lib/handlers/table.js","webpack://goformz-web-app/./node_modules/mdast-util-to-hast/lib/handlers/table-cell.js","webpack://goformz-web-app/./node_modules/mdast-util-to-hast/lib/handlers/table-row.js","webpack://goformz-web-app/./node_modules/mdast-util-to-hast/lib/handlers/text.js","webpack://goformz-web-app/./node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js","webpack://goformz-web-app/./node_modules/mdast-util-to-hast/lib/state.js","webpack://goformz-web-app/./node_modules/unist-util-generated/lib/index.js","webpack://goformz-web-app/./node_modules/mdast-util-to-hast/lib/index.js","webpack://goformz-web-app/./node_modules/mdast-util-to-hast/lib/footer.js","webpack://goformz-web-app/./node_modules/remark-rehype/lib/index.js","webpack://goformz-web-app/./node_modules/property-information/lib/util/schema.js","webpack://goformz-web-app/./node_modules/property-information/lib/util/merge.js","webpack://goformz-web-app/./node_modules/property-information/lib/normalize.js","webpack://goformz-web-app/./node_modules/property-information/lib/util/info.js","webpack://goformz-web-app/./node_modules/property-information/lib/util/types.js","webpack://goformz-web-app/./node_modules/property-information/lib/util/defined-info.js","webpack://goformz-web-app/./node_modules/property-information/lib/util/create.js","webpack://goformz-web-app/./node_modules/property-information/lib/xlink.js","webpack://goformz-web-app/./node_modules/property-information/lib/xml.js","webpack://goformz-web-app/./node_modules/property-information/lib/util/case-sensitive-transform.js","webpack://goformz-web-app/./node_modules/property-information/lib/util/case-insensitive-transform.js","webpack://goformz-web-app/./node_modules/property-information/lib/xmlns.js","webpack://goformz-web-app/./node_modules/property-information/lib/aria.js","webpack://goformz-web-app/./node_modules/property-information/lib/html.js","webpack://goformz-web-app/./node_modules/property-information/lib/svg.js","webpack://goformz-web-app/./node_modules/property-information/index.js","webpack://goformz-web-app/./node_modules/react-markdown/lib/rehype-filter.js","webpack://goformz-web-app/./node_modules/hast-util-whitespace/index.js","webpack://goformz-web-app/./node_modules/property-information/lib/find.js","webpack://goformz-web-app/./node_modules/property-information/lib/hast-to-react.js","webpack://goformz-web-app/./node_modules/style-to-object/index.mjs","webpack://goformz-web-app/./node_modules/react-markdown/lib/uri-transformer.js","webpack://goformz-web-app/./node_modules/react-markdown/lib/ast-to-react.js","webpack://goformz-web-app/./node_modules/comma-separated-tokens/index.js","webpack://goformz-web-app/./node_modules/space-separated-tokens/index.js","webpack://goformz-web-app/./node_modules/react-markdown/lib/react-markdown.js","webpack://goformz-web-app/./node_modules/redux-thunk/dist/redux-thunk.mjs","webpack://goformz-web-app/./node_modules/redux-undo/dist/redux-undo.mjs","webpack://goformz-web-app/./node_modules/redux/dist/redux.mjs","webpack://goformz-web-app/./node_modules/tslib/tslib.es6.mjs"],"sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { AbortSignal, abortSignal } from \"./AbortSignal\";\n/**\n * This error is thrown when an asynchronous operation has been aborted.\n * Check for this error by testing the `name` that the name property of the\n * error matches `\"AbortError\"`.\n *\n * @example\n * ```ts\n * const controller = new AbortController();\n * controller.abort();\n * try {\n * doAsyncWork(controller.signal)\n * } catch (e) {\n * if (e.name === 'AbortError') {\n * // handle abort error here.\n * }\n * }\n * ```\n */\nexport class AbortError extends Error {\n constructor(message) {\n super(message);\n this.name = \"AbortError\";\n }\n}\n/**\n * An AbortController provides an AbortSignal and the associated controls to signal\n * that an asynchronous operation should be aborted.\n *\n * @example\n * Abort an operation when another event fires\n * ```ts\n * const controller = new AbortController();\n * const signal = controller.signal;\n * doAsyncWork(signal);\n * button.addEventListener('click', () => controller.abort());\n * ```\n *\n * @example\n * Share aborter cross multiple operations in 30s\n * ```ts\n * // Upload the same data to 2 different data centers at the same time,\n * // abort another when any of them is finished\n * const controller = AbortController.withTimeout(30 * 1000);\n * doAsyncWork(controller.signal).then(controller.abort);\n * doAsyncWork(controller.signal).then(controller.abort);\n *```\n *\n * @example\n * Cascaded aborting\n * ```ts\n * // All operations can't take more than 30 seconds\n * const aborter = Aborter.timeout(30 * 1000);\n *\n * // Following 2 operations can't take more than 25 seconds\n * await doAsyncWork(aborter.withTimeout(25 * 1000));\n * await doAsyncWork(aborter.withTimeout(25 * 1000));\n * ```\n */\nexport class AbortController {\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n constructor(parentSignals) {\n this._signal = new AbortSignal();\n if (!parentSignals) {\n return;\n }\n // coerce parentSignals into an array\n if (!Array.isArray(parentSignals)) {\n // eslint-disable-next-line prefer-rest-params\n parentSignals = arguments;\n }\n for (const parentSignal of parentSignals) {\n // if the parent signal has already had abort() called,\n // then call abort on this signal as well.\n if (parentSignal.aborted) {\n this.abort();\n }\n else {\n // when the parent signal aborts, this signal should as well.\n parentSignal.addEventListener(\"abort\", () => {\n this.abort();\n });\n }\n }\n }\n /**\n * The AbortSignal associated with this controller that will signal aborted\n * when the abort method is called on this controller.\n *\n * @readonly\n */\n get signal() {\n return this._signal;\n }\n /**\n * Signal that any operations passed this controller's associated abort signal\n * to cancel any remaining work and throw an `AbortError`.\n */\n abort() {\n abortSignal(this._signal);\n }\n /**\n * Creates a new AbortSignal instance that will abort after the provided ms.\n * @param ms - Elapsed time in milliseconds to trigger an abort.\n */\n static timeout(ms) {\n const signal = new AbortSignal();\n const timer = setTimeout(abortSignal, ms, signal);\n // Prevent the active Timer from keeping the Node.js event loop active.\n if (typeof timer.unref === \"function\") {\n timer.unref();\n }\n return signal;\n }\n}\n//# sourceMappingURL=AbortController.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Tests an object to determine whether it implements TokenCredential.\n *\n * @param credential - The assumed TokenCredential to be tested.\n */\nexport function isTokenCredential(credential) {\n // Check for an object with a 'getToken' function and possibly with\n // a 'signRequest' function. We do this check to make sure that\n // a ServiceClientCredentials implementor (like TokenClientCredentials\n // in ms-rest-nodeauth) doesn't get mistaken for a TokenCredential if\n // it doesn't actually implement TokenCredential also.\n const castCredential = credential;\n return (castCredential &&\n typeof castCredential.getToken === \"function\" &&\n (castCredential.signRequest === undefined || castCredential.getToken.length > 0));\n}\n//# sourceMappingURL=tokenCredential.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * A collection of HttpHeaders that can be sent with a HTTP request.\n */\nfunction getHeaderKey(headerName) {\n return headerName.toLowerCase();\n}\nexport function isHttpHeadersLike(object) {\n if (object && typeof object === \"object\") {\n const castObject = object;\n if (typeof castObject.rawHeaders === \"function\" &&\n typeof castObject.clone === \"function\" &&\n typeof castObject.get === \"function\" &&\n typeof castObject.set === \"function\" &&\n typeof castObject.contains === \"function\" &&\n typeof castObject.remove === \"function\" &&\n typeof castObject.headersArray === \"function\" &&\n typeof castObject.headerValues === \"function\" &&\n typeof castObject.headerNames === \"function\" &&\n typeof castObject.toJson === \"function\") {\n return true;\n }\n }\n return false;\n}\n/**\n * A collection of HTTP header key/value pairs.\n */\nexport class HttpHeaders {\n constructor(rawHeaders) {\n this._headersMap = {};\n if (rawHeaders) {\n for (const headerName in rawHeaders) {\n this.set(headerName, rawHeaders[headerName]);\n }\n }\n }\n /**\n * Set a header in this collection with the provided name and value. The name is\n * case-insensitive.\n * @param headerName - The name of the header to set. This value is case-insensitive.\n * @param headerValue - The value of the header to set.\n */\n set(headerName, headerValue) {\n this._headersMap[getHeaderKey(headerName)] = {\n name: headerName,\n value: headerValue.toString().trim(),\n };\n }\n /**\n * Get the header value for the provided header name, or undefined if no header exists in this\n * collection with the provided name.\n * @param headerName - The name of the header.\n */\n get(headerName) {\n const header = this._headersMap[getHeaderKey(headerName)];\n return !header ? undefined : header.value;\n }\n /**\n * Get whether or not this header collection contains a header entry for the provided header name.\n */\n contains(headerName) {\n return !!this._headersMap[getHeaderKey(headerName)];\n }\n /**\n * Remove the header with the provided headerName. Return whether or not the header existed and\n * was removed.\n * @param headerName - The name of the header to remove.\n */\n remove(headerName) {\n const result = this.contains(headerName);\n delete this._headersMap[getHeaderKey(headerName)];\n return result;\n }\n /**\n * Get the headers that are contained this collection as an object.\n */\n rawHeaders() {\n return this.toJson({ preserveCase: true });\n }\n /**\n * Get the headers that are contained in this collection as an array.\n */\n headersArray() {\n const headers = [];\n for (const headerKey in this._headersMap) {\n headers.push(this._headersMap[headerKey]);\n }\n return headers;\n }\n /**\n * Get the header names that are contained in this collection.\n */\n headerNames() {\n const headerNames = [];\n const headers = this.headersArray();\n for (let i = 0; i < headers.length; ++i) {\n headerNames.push(headers[i].name);\n }\n return headerNames;\n }\n /**\n * Get the header values that are contained in this collection.\n */\n headerValues() {\n const headerValues = [];\n const headers = this.headersArray();\n for (let i = 0; i < headers.length; ++i) {\n headerValues.push(headers[i].value);\n }\n return headerValues;\n }\n /**\n * Get the JSON object representation of this HTTP header collection.\n */\n toJson(options = {}) {\n const result = {};\n if (options.preserveCase) {\n for (const headerKey in this._headersMap) {\n const header = this._headersMap[headerKey];\n result[header.name] = header.value;\n }\n }\n else {\n for (const headerKey in this._headersMap) {\n const header = this._headersMap[headerKey];\n result[getHeaderKey(header.name)] = header.value;\n }\n }\n return result;\n }\n /**\n * Get the string representation of this HTTP header collection.\n */\n toString() {\n return JSON.stringify(this.toJson({ preserveCase: true }));\n }\n /**\n * Create a deep clone/copy of this HttpHeaders collection.\n */\n clone() {\n const resultPreservingCasing = {};\n for (const headerKey in this._headersMap) {\n const header = this._headersMap[headerKey];\n resultPreservingCasing[header.name] = header.value;\n }\n return new HttpHeaders(resultPreservingCasing);\n }\n}\n//# sourceMappingURL=httpHeaders.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createClientLogger } from \"@azure/logger\";\nexport const logger = createClientLogger(\"core-http\");\n//# sourceMappingURL=log.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { __rest } from \"tslib\";\n/**\n * Converts an OperationOptions to a RequestOptionsBase\n *\n * @param opts - OperationOptions object to convert to RequestOptionsBase\n */\nexport function operationOptionsToRequestOptionsBase(opts) {\n const { requestOptions, tracingOptions } = opts, additionalOptions = __rest(opts, [\"requestOptions\", \"tracingOptions\"]);\n let result = additionalOptions;\n if (requestOptions) {\n result = Object.assign(Object.assign({}, result), requestOptions);\n }\n if (tracingOptions) {\n result.tracingContext = tracingOptions.tracingContext;\n // By passing spanOptions if they exist at runtime, we're backwards compatible with @azure/core-tracing@preview.13 and earlier.\n result.spanOptions = tracingOptions === null || tracingOptions === void 0 ? void 0 : tracingOptions.spanOptions;\n }\n return result;\n}\n//# sourceMappingURL=operationOptions.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { BaseRequestPolicy, } from \"../policies/requestPolicy\";\nimport { Constants } from \"../util/constants\";\nimport { delay } from \"@azure/core-util\";\n// Default options for the cycler if none are provided\nexport const DEFAULT_CYCLER_OPTIONS = {\n forcedRefreshWindowInMs: 1000,\n retryIntervalInMs: 3000,\n refreshWindowInMs: 1000 * 60 * 2, // Start refreshing 2m before expiry\n};\n/**\n * Converts an an unreliable access token getter (which may resolve with null)\n * into an AccessTokenGetter by retrying the unreliable getter in a regular\n * interval.\n *\n * @param getAccessToken - a function that produces a promise of an access\n * token that may fail by returning null\n * @param retryIntervalInMs - the time (in milliseconds) to wait between retry\n * attempts\n * @param timeoutInMs - the timestamp after which the refresh attempt will fail,\n * throwing an exception\n * @returns - a promise that, if it resolves, will resolve with an access token\n */\nasync function beginRefresh(getAccessToken, retryIntervalInMs, timeoutInMs) {\n // This wrapper handles exceptions gracefully as long as we haven't exceeded\n // the timeout.\n async function tryGetAccessToken() {\n if (Date.now() < timeoutInMs) {\n try {\n return await getAccessToken();\n }\n catch (_a) {\n return null;\n }\n }\n else {\n const finalToken = await getAccessToken();\n // Timeout is up, so throw if it's still null\n if (finalToken === null) {\n throw new Error(\"Failed to refresh access token.\");\n }\n return finalToken;\n }\n }\n let token = await tryGetAccessToken();\n while (token === null) {\n await delay(retryIntervalInMs);\n token = await tryGetAccessToken();\n }\n return token;\n}\n/**\n * Creates a token cycler from a credential, scopes, and optional settings.\n *\n * A token cycler represents a way to reliably retrieve a valid access token\n * from a TokenCredential. It will handle initializing the token, refreshing it\n * when it nears expiration, and synchronizes refresh attempts to avoid\n * concurrency hazards.\n *\n * @param credential - the underlying TokenCredential that provides the access\n * token\n * @param scopes - the scopes to request authorization for\n * @param tokenCyclerOptions - optionally override default settings for the cycler\n *\n * @returns - a function that reliably produces a valid access token\n */\nfunction createTokenCycler(credential, scopes, tokenCyclerOptions) {\n let refreshWorker = null;\n let token = null;\n const options = Object.assign(Object.assign({}, DEFAULT_CYCLER_OPTIONS), tokenCyclerOptions);\n /**\n * This little holder defines several predicates that we use to construct\n * the rules of refreshing the token.\n */\n const cycler = {\n /**\n * Produces true if a refresh job is currently in progress.\n */\n get isRefreshing() {\n return refreshWorker !== null;\n },\n /**\n * Produces true if the cycler SHOULD refresh (we are within the refresh\n * window and not already refreshing)\n */\n get shouldRefresh() {\n var _a;\n return (!cycler.isRefreshing &&\n ((_a = token === null || token === void 0 ? void 0 : token.expiresOnTimestamp) !== null && _a !== void 0 ? _a : 0) - options.refreshWindowInMs < Date.now());\n },\n /**\n * Produces true if the cycler MUST refresh (null or nearly-expired\n * token).\n */\n get mustRefresh() {\n return (token === null || token.expiresOnTimestamp - options.forcedRefreshWindowInMs < Date.now());\n },\n };\n /**\n * Starts a refresh job or returns the existing job if one is already\n * running.\n */\n function refresh(getTokenOptions) {\n var _a;\n if (!cycler.isRefreshing) {\n // We bind `scopes` here to avoid passing it around a lot\n const tryGetAccessToken = () => credential.getToken(scopes, getTokenOptions);\n // Take advantage of promise chaining to insert an assignment to `token`\n // before the refresh can be considered done.\n refreshWorker = beginRefresh(tryGetAccessToken, options.retryIntervalInMs, \n // If we don't have a token, then we should timeout immediately\n (_a = token === null || token === void 0 ? void 0 : token.expiresOnTimestamp) !== null && _a !== void 0 ? _a : Date.now())\n .then((_token) => {\n refreshWorker = null;\n token = _token;\n return token;\n })\n .catch((reason) => {\n // We also should reset the refresher if we enter a failed state. All\n // existing awaiters will throw, but subsequent requests will start a\n // new retry chain.\n refreshWorker = null;\n token = null;\n throw reason;\n });\n }\n return refreshWorker;\n }\n return async (tokenOptions) => {\n //\n // Simple rules:\n // - If we MUST refresh, then return the refresh task, blocking\n // the pipeline until a token is available.\n // - If we SHOULD refresh, then run refresh but don't return it\n // (we can still use the cached token).\n // - Return the token, since it's fine if we didn't return in\n // step 1.\n //\n if (cycler.mustRefresh)\n return refresh(tokenOptions);\n if (cycler.shouldRefresh) {\n refresh(tokenOptions);\n }\n return token;\n };\n}\n// #endregion\n/**\n * Creates a new factory for a RequestPolicy that applies a bearer token to\n * the requests' `Authorization` headers.\n *\n * @param credential - The TokenCredential implementation that can supply the bearer token.\n * @param scopes - The scopes for which the bearer token applies.\n */\nexport function bearerTokenAuthenticationPolicy(credential, scopes) {\n // This simple function encapsulates the entire process of reliably retrieving the token\n const getToken = createTokenCycler(credential, scopes /* , options */);\n class BearerTokenAuthenticationPolicy extends BaseRequestPolicy {\n constructor(nextPolicy, options) {\n super(nextPolicy, options);\n }\n async sendRequest(webResource) {\n if (!webResource.url.toLowerCase().startsWith(\"https://\")) {\n throw new Error(\"Bearer token authentication is not permitted for non-TLS protected (non-https) URLs.\");\n }\n const { token } = await getToken({\n abortSignal: webResource.abortSignal,\n tracingOptions: {\n tracingContext: webResource.tracingContext,\n },\n });\n webResource.headers.set(Constants.HeaderConstants.AUTHORIZATION, `Bearer ${token}`);\n return this._nextPolicy.sendRequest(webResource);\n }\n }\n return {\n create: (nextPolicy, options) => {\n return new BearerTokenAuthenticationPolicy(nextPolicy, options);\n },\n };\n}\n//# sourceMappingURL=bearerTokenAuthenticationPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { BaseRequestPolicy, } from \"./requestPolicy\";\nimport { XML_CHARKEY } from \"../util/serializer.common\";\nimport { MapperType } from \"../serializer\";\nimport { RestError } from \"../restError\";\nimport { parseXML } from \"../util/xml\";\n/**\n * Create a new serialization RequestPolicyCreator that will serialized HTTP request bodies as they\n * pass through the HTTP pipeline.\n */\nexport function deserializationPolicy(deserializationContentTypes, parsingOptions) {\n return {\n create: (nextPolicy, options) => {\n return new DeserializationPolicy(nextPolicy, options, deserializationContentTypes, parsingOptions);\n },\n };\n}\nexport const defaultJsonContentTypes = [\"application/json\", \"text/json\"];\nexport const defaultXmlContentTypes = [\"application/xml\", \"application/atom+xml\"];\nexport const DefaultDeserializationOptions = {\n expectedContentTypes: {\n json: defaultJsonContentTypes,\n xml: defaultXmlContentTypes,\n },\n};\n/**\n * A RequestPolicy that will deserialize HTTP response bodies and headers as they pass through the\n * HTTP pipeline.\n */\nexport class DeserializationPolicy extends BaseRequestPolicy {\n constructor(nextPolicy, requestPolicyOptions, deserializationContentTypes, parsingOptions = {}) {\n var _a;\n super(nextPolicy, requestPolicyOptions);\n this.jsonContentTypes =\n (deserializationContentTypes && deserializationContentTypes.json) || defaultJsonContentTypes;\n this.xmlContentTypes =\n (deserializationContentTypes && deserializationContentTypes.xml) || defaultXmlContentTypes;\n this.xmlCharKey = (_a = parsingOptions.xmlCharKey) !== null && _a !== void 0 ? _a : XML_CHARKEY;\n }\n async sendRequest(request) {\n return this._nextPolicy.sendRequest(request).then((response) => deserializeResponseBody(this.jsonContentTypes, this.xmlContentTypes, response, {\n xmlCharKey: this.xmlCharKey,\n }));\n }\n}\nfunction getOperationResponse(parsedResponse) {\n let result;\n const request = parsedResponse.request;\n const operationSpec = request.operationSpec;\n if (operationSpec) {\n const operationResponseGetter = request.operationResponseGetter;\n if (!operationResponseGetter) {\n result = operationSpec.responses[parsedResponse.status];\n }\n else {\n result = operationResponseGetter(operationSpec, parsedResponse);\n }\n }\n return result;\n}\nfunction shouldDeserializeResponse(parsedResponse) {\n const shouldDeserialize = parsedResponse.request.shouldDeserialize;\n let result;\n if (shouldDeserialize === undefined) {\n result = true;\n }\n else if (typeof shouldDeserialize === \"boolean\") {\n result = shouldDeserialize;\n }\n else {\n result = shouldDeserialize(parsedResponse);\n }\n return result;\n}\n/**\n * Given a particular set of content types to parse as either JSON or XML, consumes the HTTP response to produce the result object defined by the request's {@link OperationSpec}.\n * @param jsonContentTypes - Response content types to parse the body as JSON.\n * @param xmlContentTypes - Response content types to parse the body as XML.\n * @param response - HTTP Response from the pipeline.\n * @param options - Options to the serializer, mostly for configuring the XML parser if needed.\n * @returns A parsed {@link HttpOperationResponse} object that can be returned by the {@link ServiceClient}.\n */\nexport function deserializeResponseBody(jsonContentTypes, xmlContentTypes, response, options = {}) {\n var _a, _b, _c;\n const updatedOptions = {\n rootName: (_a = options.rootName) !== null && _a !== void 0 ? _a : \"\",\n includeRoot: (_b = options.includeRoot) !== null && _b !== void 0 ? _b : false,\n xmlCharKey: (_c = options.xmlCharKey) !== null && _c !== void 0 ? _c : XML_CHARKEY,\n };\n return parse(jsonContentTypes, xmlContentTypes, response, updatedOptions).then((parsedResponse) => {\n if (!shouldDeserializeResponse(parsedResponse)) {\n return parsedResponse;\n }\n const operationSpec = parsedResponse.request.operationSpec;\n if (!operationSpec || !operationSpec.responses) {\n return parsedResponse;\n }\n const responseSpec = getOperationResponse(parsedResponse);\n const { error, shouldReturnResponse } = handleErrorResponse(parsedResponse, operationSpec, responseSpec);\n if (error) {\n throw error;\n }\n else if (shouldReturnResponse) {\n return parsedResponse;\n }\n // An operation response spec does exist for current status code, so\n // use it to deserialize the response.\n if (responseSpec) {\n if (responseSpec.bodyMapper) {\n let valueToDeserialize = parsedResponse.parsedBody;\n if (operationSpec.isXML && responseSpec.bodyMapper.type.name === MapperType.Sequence) {\n valueToDeserialize =\n typeof valueToDeserialize === \"object\"\n ? valueToDeserialize[responseSpec.bodyMapper.xmlElementName]\n : [];\n }\n try {\n parsedResponse.parsedBody = operationSpec.serializer.deserialize(responseSpec.bodyMapper, valueToDeserialize, \"operationRes.parsedBody\", options);\n }\n catch (innerError) {\n const restError = new RestError(`Error ${innerError} occurred in deserializing the responseBody - ${parsedResponse.bodyAsText}`, undefined, parsedResponse.status, parsedResponse.request, parsedResponse);\n throw restError;\n }\n }\n else if (operationSpec.httpMethod === \"HEAD\") {\n // head methods never have a body, but we return a boolean to indicate presence/absence of the resource\n parsedResponse.parsedBody = response.status >= 200 && response.status < 300;\n }\n if (responseSpec.headersMapper) {\n parsedResponse.parsedHeaders = operationSpec.serializer.deserialize(responseSpec.headersMapper, parsedResponse.headers.toJson(), \"operationRes.parsedHeaders\", options);\n }\n }\n return parsedResponse;\n });\n}\nfunction isOperationSpecEmpty(operationSpec) {\n const expectedStatusCodes = Object.keys(operationSpec.responses);\n return (expectedStatusCodes.length === 0 ||\n (expectedStatusCodes.length === 1 && expectedStatusCodes[0] === \"default\"));\n}\nfunction handleErrorResponse(parsedResponse, operationSpec, responseSpec) {\n var _a;\n const isSuccessByStatus = 200 <= parsedResponse.status && parsedResponse.status < 300;\n const isExpectedStatusCode = isOperationSpecEmpty(operationSpec)\n ? isSuccessByStatus\n : !!responseSpec;\n if (isExpectedStatusCode) {\n if (responseSpec) {\n if (!responseSpec.isError) {\n return { error: null, shouldReturnResponse: false };\n }\n }\n else {\n return { error: null, shouldReturnResponse: false };\n }\n }\n const errorResponseSpec = responseSpec !== null && responseSpec !== void 0 ? responseSpec : operationSpec.responses.default;\n const streaming = ((_a = parsedResponse.request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(parsedResponse.status)) ||\n parsedResponse.request.streamResponseBody;\n const initialErrorMessage = streaming\n ? `Unexpected status code: ${parsedResponse.status}`\n : parsedResponse.bodyAsText;\n const error = new RestError(initialErrorMessage, undefined, parsedResponse.status, parsedResponse.request, parsedResponse);\n // If the item failed but there's no error spec or default spec to deserialize the error,\n // we should fail so we just throw the parsed response\n if (!errorResponseSpec) {\n throw error;\n }\n const defaultBodyMapper = errorResponseSpec.bodyMapper;\n const defaultHeadersMapper = errorResponseSpec.headersMapper;\n try {\n // If error response has a body, try to deserialize it using default body mapper.\n // Then try to extract error code & message from it\n if (parsedResponse.parsedBody) {\n const parsedBody = parsedResponse.parsedBody;\n let parsedError;\n if (defaultBodyMapper) {\n let valueToDeserialize = parsedBody;\n if (operationSpec.isXML && defaultBodyMapper.type.name === MapperType.Sequence) {\n valueToDeserialize =\n typeof parsedBody === \"object\" ? parsedBody[defaultBodyMapper.xmlElementName] : [];\n }\n parsedError = operationSpec.serializer.deserialize(defaultBodyMapper, valueToDeserialize, \"error.response.parsedBody\");\n }\n const internalError = parsedBody.error || parsedError || parsedBody;\n error.code = internalError.code;\n if (internalError.message) {\n error.message = internalError.message;\n }\n if (defaultBodyMapper) {\n error.response.parsedBody = parsedError;\n }\n }\n // If error response has headers, try to deserialize it using default header mapper\n if (parsedResponse.headers && defaultHeadersMapper) {\n error.response.parsedHeaders = operationSpec.serializer.deserialize(defaultHeadersMapper, parsedResponse.headers.toJson(), \"operationRes.parsedHeaders\");\n }\n }\n catch (defaultError) {\n error.message = `Error \"${defaultError.message}\" occurred in deserializing the responseBody - \"${parsedResponse.bodyAsText}\" for the default response.`;\n }\n return { error, shouldReturnResponse: false };\n}\nfunction parse(jsonContentTypes, xmlContentTypes, operationResponse, opts) {\n var _a;\n const errorHandler = (err) => {\n const msg = `Error \"${err}\" occurred while parsing the response body - ${operationResponse.bodyAsText}.`;\n const errCode = err.code || RestError.PARSE_ERROR;\n const e = new RestError(msg, errCode, operationResponse.status, operationResponse.request, operationResponse);\n return Promise.reject(e);\n };\n const streaming = ((_a = operationResponse.request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(operationResponse.status)) ||\n operationResponse.request.streamResponseBody;\n if (!streaming && operationResponse.bodyAsText) {\n const text = operationResponse.bodyAsText;\n const contentType = operationResponse.headers.get(\"Content-Type\") || \"\";\n const contentComponents = !contentType\n ? []\n : contentType.split(\";\").map((component) => component.toLowerCase());\n if (contentComponents.length === 0 ||\n contentComponents.some((component) => jsonContentTypes.indexOf(component) !== -1)) {\n return new Promise((resolve) => {\n operationResponse.parsedBody = JSON.parse(text);\n resolve(operationResponse);\n }).catch(errorHandler);\n }\n else if (contentComponents.some((component) => xmlContentTypes.indexOf(component) !== -1)) {\n return parseXML(text, opts)\n .then((body) => {\n operationResponse.parsedBody = body;\n return operationResponse;\n })\n .catch(errorHandler);\n }\n }\n return Promise.resolve(operationResponse);\n}\n//# sourceMappingURL=deserializationPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { BaseRequestPolicy, } from \"./requestPolicy\";\n/**\n * Creates a policy that assigns a unique request id to outgoing requests.\n * @param requestIdHeaderName - The name of the header to use when assigning the unique id to the request.\n */\nexport function generateClientRequestIdPolicy(requestIdHeaderName = \"x-ms-client-request-id\") {\n return {\n create: (nextPolicy, options) => {\n return new GenerateClientRequestIdPolicy(nextPolicy, options, requestIdHeaderName);\n },\n };\n}\nexport class GenerateClientRequestIdPolicy extends BaseRequestPolicy {\n constructor(nextPolicy, options, _requestIdHeaderName) {\n super(nextPolicy, options);\n this._requestIdHeaderName = _requestIdHeaderName;\n }\n sendRequest(request) {\n if (!request.headers.contains(this._requestIdHeaderName)) {\n request.headers.set(this._requestIdHeaderName, request.requestId);\n }\n return this._nextPolicy.sendRequest(request);\n }\n}\n//# sourceMappingURL=generateClientRequestIdPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { BaseRequestPolicy, } from \"./requestPolicy\";\nimport { Sanitizer } from \"../util/sanitizer\";\nimport { logger as coreLogger } from \"../log\";\n/**\n * Creates a policy that logs information about the outgoing request and the incoming responses.\n * @param loggingOptions - Logging options.\n * @returns An instance of the {@link LogPolicy}\n */\nexport function logPolicy(loggingOptions = {}) {\n return {\n create: (nextPolicy, options) => {\n return new LogPolicy(nextPolicy, options, loggingOptions);\n },\n };\n}\n/**\n * A policy that logs information about the outgoing request and the incoming responses.\n */\nexport class LogPolicy extends BaseRequestPolicy {\n constructor(nextPolicy, options, { logger = coreLogger.info, allowedHeaderNames = [], allowedQueryParameters = [], } = {}) {\n super(nextPolicy, options);\n this.logger = logger;\n this.sanitizer = new Sanitizer({ allowedHeaderNames, allowedQueryParameters });\n }\n /**\n * Header names whose values will be logged when logging is enabled. Defaults to\n * Date, traceparent, x-ms-client-request-id, and x-ms-request id. Any headers\n * specified in this field will be added to that list. Any other values will\n * be written to logs as \"REDACTED\".\n * @deprecated Pass these into the constructor instead.\n */\n get allowedHeaderNames() {\n return this.sanitizer.allowedHeaderNames;\n }\n /**\n * Header names whose values will be logged when logging is enabled. Defaults to\n * Date, traceparent, x-ms-client-request-id, and x-ms-request id. Any headers\n * specified in this field will be added to that list. Any other values will\n * be written to logs as \"REDACTED\".\n * @deprecated Pass these into the constructor instead.\n */\n set allowedHeaderNames(allowedHeaderNames) {\n this.sanitizer.allowedHeaderNames = allowedHeaderNames;\n }\n /**\n * Query string names whose values will be logged when logging is enabled. By default no\n * query string values are logged.\n * @deprecated Pass these into the constructor instead.\n */\n get allowedQueryParameters() {\n return this.sanitizer.allowedQueryParameters;\n }\n /**\n * Query string names whose values will be logged when logging is enabled. By default no\n * query string values are logged.\n * @deprecated Pass these into the constructor instead.\n */\n set allowedQueryParameters(allowedQueryParameters) {\n this.sanitizer.allowedQueryParameters = allowedQueryParameters;\n }\n sendRequest(request) {\n if (!this.logger.enabled)\n return this._nextPolicy.sendRequest(request);\n this.logRequest(request);\n return this._nextPolicy.sendRequest(request).then((response) => this.logResponse(response));\n }\n logRequest(request) {\n this.logger(`Request: ${this.sanitizer.sanitize(request)}`);\n }\n logResponse(response) {\n this.logger(`Response status code: ${response.status}`);\n this.logger(`Headers: ${this.sanitizer.sanitize(response.headers)}`);\n return response;\n }\n}\n//# sourceMappingURL=logPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { BaseRequestPolicy, } from \"./requestPolicy\";\nconst errorMessage = \"ProxyPolicy is not supported in browser environment\";\nexport function getDefaultProxySettings(_proxyUrl) {\n return undefined;\n}\nexport function proxyPolicy(_proxySettings) {\n return {\n create: (_nextPolicy, _options) => {\n throw new Error(errorMessage);\n },\n };\n}\nexport class ProxyPolicy extends BaseRequestPolicy {\n constructor(nextPolicy, options) {\n super(nextPolicy, options);\n throw new Error(errorMessage);\n }\n sendRequest(_request) {\n throw new Error(errorMessage);\n }\n}\n//# sourceMappingURL=proxyPolicy.browser.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * The different levels of logs that can be used with the HttpPipelineLogger.\n */\nexport var HttpPipelineLogLevel;\n(function (HttpPipelineLogLevel) {\n /**\n * A log level that indicates that no logs will be logged.\n */\n HttpPipelineLogLevel[HttpPipelineLogLevel[\"OFF\"] = 0] = \"OFF\";\n /**\n * An error log.\n */\n HttpPipelineLogLevel[HttpPipelineLogLevel[\"ERROR\"] = 1] = \"ERROR\";\n /**\n * A warning log.\n */\n HttpPipelineLogLevel[HttpPipelineLogLevel[\"WARNING\"] = 2] = \"WARNING\";\n /**\n * An information log.\n */\n HttpPipelineLogLevel[HttpPipelineLogLevel[\"INFO\"] = 3] = \"INFO\";\n})(HttpPipelineLogLevel || (HttpPipelineLogLevel = {}));\n//# sourceMappingURL=httpPipelineLogLevel.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { HttpPipelineLogLevel } from \"../httpPipelineLogLevel\";\n/**\n * The base class from which all request policies derive.\n */\nexport class BaseRequestPolicy {\n /**\n * The main method to implement that manipulates a request/response.\n */\n constructor(\n /**\n * The next policy in the pipeline. Each policy is responsible for executing the next one if the request is to continue through the pipeline.\n */\n _nextPolicy, \n /**\n * The options that can be passed to a given request policy.\n */\n _options) {\n this._nextPolicy = _nextPolicy;\n this._options = _options;\n }\n /**\n * Get whether or not a log with the provided log level should be logged.\n * @param logLevel - The log level of the log that will be logged.\n * @returns Whether or not a log with the provided log level should be logged.\n */\n shouldLog(logLevel) {\n return this._options.shouldLog(logLevel);\n }\n /**\n * Attempt to log the provided message to the provided logger. If no logger was provided or if\n * the log level does not meat the logger's threshold, then nothing will be logged.\n * @param logLevel - The log level of this log.\n * @param message - The message of this log.\n */\n log(logLevel, message) {\n this._options.log(logLevel, message);\n }\n}\n/**\n * Optional properties that can be used when creating a RequestPolicy.\n */\nexport class RequestPolicyOptions {\n constructor(_logger) {\n this._logger = _logger;\n }\n /**\n * Get whether or not a log with the provided log level should be logged.\n * @param logLevel - The log level of the log that will be logged.\n * @returns Whether or not a log with the provided log level should be logged.\n */\n shouldLog(logLevel) {\n return (!!this._logger &&\n logLevel !== HttpPipelineLogLevel.OFF &&\n logLevel <= this._logger.minimumLogLevel);\n }\n /**\n * Attempt to log the provided message to the provided logger. If no logger was provided or if\n * the log level does not meet the logger's threshold, then nothing will be logged.\n * @param logLevel - The log level of this log.\n * @param message - The message of this log.\n */\n log(logLevel, message) {\n if (this._logger && this.shouldLog(logLevel)) {\n this._logger.log(logLevel, message);\n }\n }\n}\n//# sourceMappingURL=requestPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * The format that will be used to join an array of values together for a query parameter value.\n */\nexport var QueryCollectionFormat;\n(function (QueryCollectionFormat) {\n /**\n * CSV: Each pair of segments joined by a single comma.\n */\n QueryCollectionFormat[\"Csv\"] = \",\";\n /**\n * SSV: Each pair of segments joined by a single space character.\n */\n QueryCollectionFormat[\"Ssv\"] = \" \";\n /**\n * TSV: Each pair of segments joined by a single tab character.\n */\n QueryCollectionFormat[\"Tsv\"] = \"\\t\";\n /**\n * Pipes: Each pair of segments joined by a single pipe character.\n */\n QueryCollectionFormat[\"Pipes\"] = \"|\";\n /**\n * Denotes this is an array of values that should be passed to the server in multiple key/value pairs, e.g. `?queryParam=value1&queryParam=value2`\n */\n QueryCollectionFormat[\"Multi\"] = \"Multi\";\n})(QueryCollectionFormat || (QueryCollectionFormat = {}));\n//# sourceMappingURL=queryCollectionFormat.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nexport const custom = {};\n//# sourceMappingURL=inspect.browser.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { Sanitizer } from \"./util/sanitizer\";\nimport { custom } from \"./util/inspect\";\nconst errorSanitizer = new Sanitizer();\n/**\n * An error resulting from an HTTP request to a service endpoint.\n */\nexport class RestError extends Error {\n constructor(message, code, statusCode, request, response) {\n super(message);\n this.name = \"RestError\";\n this.code = code;\n this.statusCode = statusCode;\n this.request = request;\n this.response = response;\n Object.setPrototypeOf(this, RestError.prototype);\n }\n /**\n * Logging method for util.inspect in Node\n */\n [custom]() {\n return `RestError: ${this.message} \\n ${errorSanitizer.sanitize(this)}`;\n }\n}\n/**\n * A constant string to identify errors that may arise when making an HTTP request that indicates an issue with the transport layer (e.g. the hostname of the URL cannot be resolved via DNS.)\n */\nRestError.REQUEST_SEND_ERROR = \"REQUEST_SEND_ERROR\";\n/**\n * A constant string to identify errors that may arise from parsing an incoming HTTP response. Usually indicates a malformed HTTP body, such as an encoded JSON payload that is incomplete.\n */\nRestError.PARSE_ERROR = \"PARSE_ERROR\";\n//# sourceMappingURL=restError.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Encodes a string in base64 format.\n * @param value - The string to encode\n */\nexport function encodeString(value) {\n return btoa(value);\n}\n/**\n * Encodes a byte array in base64 format.\n * @param value - The Uint8Aray to encode\n */\nexport function encodeByteArray(value) {\n let str = \"\";\n for (let i = 0; i < value.length; i++) {\n str += String.fromCharCode(value[i]);\n }\n return btoa(str);\n}\n/**\n * Decodes a base64 string into a byte array.\n * @param value - The base64 string to decode\n */\nexport function decodeString(value) {\n const byteString = atob(value);\n const arr = new Uint8Array(byteString.length);\n for (let i = 0; i < byteString.length; i++) {\n arr[i] = byteString.charCodeAt(i);\n }\n return arr;\n}\n//# sourceMappingURL=base64.browser.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/* eslint-disable eqeqeq */\nimport * as base64 from \"./util/base64\";\nimport * as utils from \"./util/utils\";\nimport { XML_ATTRKEY, XML_CHARKEY } from \"./util/serializer.common\";\n// This file contains utility code to serialize and deserialize network operations according to `OperationSpec` objects generated by AutoRest.TypeScript from OpenAPI specifications.\n/**\n * Used to map raw response objects to final shapes.\n * Helps packing and unpacking Dates and other encoded types that are not intrinsic to JSON.\n * Also allows pulling values from headers, as well as inserting default values and constants.\n */\nexport class Serializer {\n constructor(\n /**\n * The provided model mapper.\n */\n modelMappers = {}, \n /**\n * Whether the contents are XML or not.\n */\n isXML) {\n this.modelMappers = modelMappers;\n this.isXML = isXML;\n }\n /**\n * Validates constraints, if any. This function will throw if the provided value does not respect those constraints.\n * @param mapper - The definition of data models.\n * @param value - The value.\n * @param objectName - Name of the object. Used in the error messages.\n * @deprecated Removing the constraints validation on client side.\n */\n validateConstraints(mapper, value, objectName) {\n const failValidation = (constraintName, constraintValue) => {\n throw new Error(`\"${objectName}\" with value \"${value}\" should satisfy the constraint \"${constraintName}\": ${constraintValue}.`);\n };\n if (mapper.constraints && value != undefined) {\n const valueAsNumber = value;\n const { ExclusiveMaximum, ExclusiveMinimum, InclusiveMaximum, InclusiveMinimum, MaxItems, MaxLength, MinItems, MinLength, MultipleOf, Pattern, UniqueItems, } = mapper.constraints;\n if (ExclusiveMaximum != undefined && valueAsNumber >= ExclusiveMaximum) {\n failValidation(\"ExclusiveMaximum\", ExclusiveMaximum);\n }\n if (ExclusiveMinimum != undefined && valueAsNumber <= ExclusiveMinimum) {\n failValidation(\"ExclusiveMinimum\", ExclusiveMinimum);\n }\n if (InclusiveMaximum != undefined && valueAsNumber > InclusiveMaximum) {\n failValidation(\"InclusiveMaximum\", InclusiveMaximum);\n }\n if (InclusiveMinimum != undefined && valueAsNumber < InclusiveMinimum) {\n failValidation(\"InclusiveMinimum\", InclusiveMinimum);\n }\n const valueAsArray = value;\n if (MaxItems != undefined && valueAsArray.length > MaxItems) {\n failValidation(\"MaxItems\", MaxItems);\n }\n if (MaxLength != undefined && valueAsArray.length > MaxLength) {\n failValidation(\"MaxLength\", MaxLength);\n }\n if (MinItems != undefined && valueAsArray.length < MinItems) {\n failValidation(\"MinItems\", MinItems);\n }\n if (MinLength != undefined && valueAsArray.length < MinLength) {\n failValidation(\"MinLength\", MinLength);\n }\n if (MultipleOf != undefined && valueAsNumber % MultipleOf !== 0) {\n failValidation(\"MultipleOf\", MultipleOf);\n }\n if (Pattern) {\n const pattern = typeof Pattern === \"string\" ? new RegExp(Pattern) : Pattern;\n if (typeof value !== \"string\" || value.match(pattern) === null) {\n failValidation(\"Pattern\", Pattern);\n }\n }\n if (UniqueItems &&\n valueAsArray.some((item, i, ar) => ar.indexOf(item) !== i)) {\n failValidation(\"UniqueItems\", UniqueItems);\n }\n }\n }\n /**\n * Serialize the given object based on its metadata defined in the mapper.\n *\n * @param mapper - The mapper which defines the metadata of the serializable object.\n * @param object - A valid Javascript object to be serialized.\n * @param objectName - Name of the serialized object.\n * @param options - additional options to deserialization.\n * @returns A valid serialized Javascript object.\n */\n serialize(mapper, object, objectName, options = {}) {\n var _a, _b, _c;\n const updatedOptions = {\n rootName: (_a = options.rootName) !== null && _a !== void 0 ? _a : \"\",\n includeRoot: (_b = options.includeRoot) !== null && _b !== void 0 ? _b : false,\n xmlCharKey: (_c = options.xmlCharKey) !== null && _c !== void 0 ? _c : XML_CHARKEY,\n };\n let payload = {};\n const mapperType = mapper.type.name;\n if (!objectName) {\n objectName = mapper.serializedName;\n }\n if (mapperType.match(/^Sequence$/i) !== null) {\n payload = [];\n }\n if (mapper.isConstant) {\n object = mapper.defaultValue;\n }\n // This table of allowed values should help explain\n // the mapper.required and mapper.nullable properties.\n // X means \"neither undefined or null are allowed\".\n // || required\n // || true | false\n // nullable || ==========================\n // true || null | undefined/null\n // false || X | undefined\n // undefined || X | undefined/null\n const { required, nullable } = mapper;\n if (required && nullable && object === undefined) {\n throw new Error(`${objectName} cannot be undefined.`);\n }\n if (required && !nullable && object == undefined) {\n throw new Error(`${objectName} cannot be null or undefined.`);\n }\n if (!required && nullable === false && object === null) {\n throw new Error(`${objectName} cannot be null.`);\n }\n if (object == undefined) {\n payload = object;\n }\n else {\n if (mapperType.match(/^any$/i) !== null) {\n payload = object;\n }\n else if (mapperType.match(/^(Number|String|Boolean|Object|Stream|Uuid)$/i) !== null) {\n payload = serializeBasicTypes(mapperType, objectName, object);\n }\n else if (mapperType.match(/^Enum$/i) !== null) {\n const enumMapper = mapper;\n payload = serializeEnumType(objectName, enumMapper.type.allowedValues, object);\n }\n else if (mapperType.match(/^(Date|DateTime|TimeSpan|DateTimeRfc1123|UnixTime)$/i) !== null) {\n payload = serializeDateTypes(mapperType, object, objectName);\n }\n else if (mapperType.match(/^ByteArray$/i) !== null) {\n payload = serializeByteArrayType(objectName, object);\n }\n else if (mapperType.match(/^Base64Url$/i) !== null) {\n payload = serializeBase64UrlType(objectName, object);\n }\n else if (mapperType.match(/^Sequence$/i) !== null) {\n payload = serializeSequenceType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions);\n }\n else if (mapperType.match(/^Dictionary$/i) !== null) {\n payload = serializeDictionaryType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions);\n }\n else if (mapperType.match(/^Composite$/i) !== null) {\n payload = serializeCompositeType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions);\n }\n }\n return payload;\n }\n /**\n * Deserialize the given object based on its metadata defined in the mapper.\n *\n * @param mapper - The mapper which defines the metadata of the serializable object.\n * @param responseBody - A valid Javascript entity to be deserialized.\n * @param objectName - Name of the deserialized object.\n * @param options - Controls behavior of XML parser and builder.\n * @returns A valid deserialized Javascript object.\n */\n deserialize(mapper, responseBody, objectName, options = {}) {\n var _a, _b, _c;\n const updatedOptions = {\n rootName: (_a = options.rootName) !== null && _a !== void 0 ? _a : \"\",\n includeRoot: (_b = options.includeRoot) !== null && _b !== void 0 ? _b : false,\n xmlCharKey: (_c = options.xmlCharKey) !== null && _c !== void 0 ? _c : XML_CHARKEY,\n };\n if (responseBody == undefined) {\n if (this.isXML && mapper.type.name === \"Sequence\" && !mapper.xmlIsWrapped) {\n // Edge case for empty XML non-wrapped lists. xml2js can't distinguish\n // between the list being empty versus being missing,\n // so let's do the more user-friendly thing and return an empty list.\n responseBody = [];\n }\n // specifically check for undefined as default value can be a falsey value `0, \"\", false, null`\n if (mapper.defaultValue !== undefined) {\n responseBody = mapper.defaultValue;\n }\n return responseBody;\n }\n let payload;\n const mapperType = mapper.type.name;\n if (!objectName) {\n objectName = mapper.serializedName;\n }\n if (mapperType.match(/^Composite$/i) !== null) {\n payload = deserializeCompositeType(this, mapper, responseBody, objectName, updatedOptions);\n }\n else {\n if (this.isXML) {\n const xmlCharKey = updatedOptions.xmlCharKey;\n const castResponseBody = responseBody;\n /**\n * If the mapper specifies this as a non-composite type value but the responseBody contains\n * both header (\"$\" i.e., XML_ATTRKEY) and body (\"#\" i.e., XML_CHARKEY) properties,\n * then just reduce the responseBody value to the body (\"#\" i.e., XML_CHARKEY) property.\n */\n if (castResponseBody[XML_ATTRKEY] != undefined &&\n castResponseBody[xmlCharKey] != undefined) {\n responseBody = castResponseBody[xmlCharKey];\n }\n }\n if (mapperType.match(/^Number$/i) !== null) {\n payload = parseFloat(responseBody);\n if (isNaN(payload)) {\n payload = responseBody;\n }\n }\n else if (mapperType.match(/^Boolean$/i) !== null) {\n if (responseBody === \"true\") {\n payload = true;\n }\n else if (responseBody === \"false\") {\n payload = false;\n }\n else {\n payload = responseBody;\n }\n }\n else if (mapperType.match(/^(String|Enum|Object|Stream|Uuid|TimeSpan|any)$/i) !== null) {\n payload = responseBody;\n }\n else if (mapperType.match(/^(Date|DateTime|DateTimeRfc1123)$/i) !== null) {\n payload = new Date(responseBody);\n }\n else if (mapperType.match(/^UnixTime$/i) !== null) {\n payload = unixTimeToDate(responseBody);\n }\n else if (mapperType.match(/^ByteArray$/i) !== null) {\n payload = base64.decodeString(responseBody);\n }\n else if (mapperType.match(/^Base64Url$/i) !== null) {\n payload = base64UrlToByteArray(responseBody);\n }\n else if (mapperType.match(/^Sequence$/i) !== null) {\n payload = deserializeSequenceType(this, mapper, responseBody, objectName, updatedOptions);\n }\n else if (mapperType.match(/^Dictionary$/i) !== null) {\n payload = deserializeDictionaryType(this, mapper, responseBody, objectName, updatedOptions);\n }\n }\n if (mapper.isConstant) {\n payload = mapper.defaultValue;\n }\n return payload;\n }\n}\nfunction trimEnd(str, ch) {\n let len = str.length;\n while (len - 1 >= 0 && str[len - 1] === ch) {\n --len;\n }\n return str.substr(0, len);\n}\nfunction bufferToBase64Url(buffer) {\n if (!buffer) {\n return undefined;\n }\n if (!(buffer instanceof Uint8Array)) {\n throw new Error(`Please provide an input of type Uint8Array for converting to Base64Url.`);\n }\n // Uint8Array to Base64.\n const str = base64.encodeByteArray(buffer);\n // Base64 to Base64Url.\n return trimEnd(str, \"=\").replace(/\\+/g, \"-\").replace(/\\//g, \"_\");\n}\nfunction base64UrlToByteArray(str) {\n if (!str) {\n return undefined;\n }\n if (str && typeof str.valueOf() !== \"string\") {\n throw new Error(\"Please provide an input of type string for converting to Uint8Array\");\n }\n // Base64Url to Base64.\n str = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n // Base64 to Uint8Array.\n return base64.decodeString(str);\n}\nfunction splitSerializeName(prop) {\n const classes = [];\n let partialclass = \"\";\n if (prop) {\n const subwords = prop.split(\".\");\n for (const item of subwords) {\n if (item.charAt(item.length - 1) === \"\\\\\") {\n partialclass += item.substr(0, item.length - 1) + \".\";\n }\n else {\n partialclass += item;\n classes.push(partialclass);\n partialclass = \"\";\n }\n }\n }\n return classes;\n}\nfunction dateToUnixTime(d) {\n if (!d) {\n return undefined;\n }\n if (typeof d.valueOf() === \"string\") {\n d = new Date(d);\n }\n return Math.floor(d.getTime() / 1000);\n}\nfunction unixTimeToDate(n) {\n if (!n) {\n return undefined;\n }\n return new Date(n * 1000);\n}\nfunction serializeBasicTypes(typeName, objectName, value) {\n if (value !== null && value !== undefined) {\n if (typeName.match(/^Number$/i) !== null) {\n if (typeof value !== \"number\") {\n throw new Error(`${objectName} with value ${value} must be of type number.`);\n }\n }\n else if (typeName.match(/^String$/i) !== null) {\n if (typeof value.valueOf() !== \"string\") {\n throw new Error(`${objectName} with value \"${value}\" must be of type string.`);\n }\n }\n else if (typeName.match(/^Uuid$/i) !== null) {\n if (!(typeof value.valueOf() === \"string\" && utils.isValidUuid(value))) {\n throw new Error(`${objectName} with value \"${value}\" must be of type string and a valid uuid.`);\n }\n }\n else if (typeName.match(/^Boolean$/i) !== null) {\n if (typeof value !== \"boolean\") {\n throw new Error(`${objectName} with value ${value} must be of type boolean.`);\n }\n }\n else if (typeName.match(/^Stream$/i) !== null) {\n const objectType = typeof value;\n if (objectType !== \"string\" &&\n objectType !== \"function\" &&\n !(value instanceof ArrayBuffer) &&\n !ArrayBuffer.isView(value) &&\n !((typeof Blob === \"function\" || typeof Blob === \"object\") && value instanceof Blob)) {\n throw new Error(`${objectName} must be a string, Blob, ArrayBuffer, ArrayBufferView, or a function returning NodeJS.ReadableStream.`);\n }\n }\n }\n return value;\n}\nfunction serializeEnumType(objectName, allowedValues, value) {\n if (!allowedValues) {\n throw new Error(`Please provide a set of allowedValues to validate ${objectName} as an Enum Type.`);\n }\n const isPresent = allowedValues.some((item) => {\n if (typeof item.valueOf() === \"string\") {\n return item.toLowerCase() === value.toLowerCase();\n }\n return item === value;\n });\n if (!isPresent) {\n throw new Error(`${value} is not a valid value for ${objectName}. The valid values are: ${JSON.stringify(allowedValues)}.`);\n }\n return value;\n}\nfunction serializeByteArrayType(objectName, value) {\n let returnValue = \"\";\n if (value != undefined) {\n if (!(value instanceof Uint8Array)) {\n throw new Error(`${objectName} must be of type Uint8Array.`);\n }\n returnValue = base64.encodeByteArray(value);\n }\n return returnValue;\n}\nfunction serializeBase64UrlType(objectName, value) {\n let returnValue = \"\";\n if (value != undefined) {\n if (!(value instanceof Uint8Array)) {\n throw new Error(`${objectName} must be of type Uint8Array.`);\n }\n returnValue = bufferToBase64Url(value) || \"\";\n }\n return returnValue;\n}\nfunction serializeDateTypes(typeName, value, objectName) {\n if (value != undefined) {\n if (typeName.match(/^Date$/i) !== null) {\n if (!(value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value))))) {\n throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`);\n }\n value =\n value instanceof Date\n ? value.toISOString().substring(0, 10)\n : new Date(value).toISOString().substring(0, 10);\n }\n else if (typeName.match(/^DateTime$/i) !== null) {\n if (!(value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value))))) {\n throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`);\n }\n value = value instanceof Date ? value.toISOString() : new Date(value).toISOString();\n }\n else if (typeName.match(/^DateTimeRfc1123$/i) !== null) {\n if (!(value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value))))) {\n throw new Error(`${objectName} must be an instanceof Date or a string in RFC-1123 format.`);\n }\n value = value instanceof Date ? value.toUTCString() : new Date(value).toUTCString();\n }\n else if (typeName.match(/^UnixTime$/i) !== null) {\n if (!(value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value))))) {\n throw new Error(`${objectName} must be an instanceof Date or a string in RFC-1123/ISO8601 format ` +\n `for it to be serialized in UnixTime/Epoch format.`);\n }\n value = dateToUnixTime(value);\n }\n else if (typeName.match(/^TimeSpan$/i) !== null) {\n if (!utils.isDuration(value)) {\n throw new Error(`${objectName} must be a string in ISO 8601 format. Instead was \"${value}\".`);\n }\n }\n }\n return value;\n}\nfunction serializeSequenceType(serializer, mapper, object, objectName, isXml, options) {\n if (!Array.isArray(object)) {\n throw new Error(`${objectName} must be of type Array.`);\n }\n const elementType = mapper.type.element;\n if (!elementType || typeof elementType !== \"object\") {\n throw new Error(`element\" metadata for an Array must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}.`);\n }\n const tempArray = [];\n for (let i = 0; i < object.length; i++) {\n const serializedValue = serializer.serialize(elementType, object[i], objectName, options);\n if (isXml && elementType.xmlNamespace) {\n const xmlnsKey = elementType.xmlNamespacePrefix\n ? `xmlns:${elementType.xmlNamespacePrefix}`\n : \"xmlns\";\n if (elementType.type.name === \"Composite\") {\n tempArray[i] = Object.assign({}, serializedValue);\n tempArray[i][XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace };\n }\n else {\n tempArray[i] = {};\n tempArray[i][options.xmlCharKey] = serializedValue;\n tempArray[i][XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace };\n }\n }\n else {\n tempArray[i] = serializedValue;\n }\n }\n return tempArray;\n}\nfunction serializeDictionaryType(serializer, mapper, object, objectName, isXml, options) {\n if (typeof object !== \"object\") {\n throw new Error(`${objectName} must be of type object.`);\n }\n const valueType = mapper.type.value;\n if (!valueType || typeof valueType !== \"object\") {\n throw new Error(`\"value\" metadata for a Dictionary must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}.`);\n }\n const tempDictionary = {};\n for (const key of Object.keys(object)) {\n const serializedValue = serializer.serialize(valueType, object[key], objectName, options);\n // If the element needs an XML namespace we need to add it within the $ property\n tempDictionary[key] = getXmlObjectValue(valueType, serializedValue, isXml, options);\n }\n // Add the namespace to the root element if needed\n if (isXml && mapper.xmlNamespace) {\n const xmlnsKey = mapper.xmlNamespacePrefix ? `xmlns:${mapper.xmlNamespacePrefix}` : \"xmlns\";\n const result = tempDictionary;\n result[XML_ATTRKEY] = { [xmlnsKey]: mapper.xmlNamespace };\n return result;\n }\n return tempDictionary;\n}\n/**\n * Resolves the additionalProperties property from a referenced mapper.\n * @param serializer - The serializer containing the entire set of mappers.\n * @param mapper - The composite mapper to resolve.\n * @param objectName - Name of the object being serialized.\n */\nfunction resolveAdditionalProperties(serializer, mapper, objectName) {\n const additionalProperties = mapper.type.additionalProperties;\n if (!additionalProperties && mapper.type.className) {\n const modelMapper = resolveReferencedMapper(serializer, mapper, objectName);\n return modelMapper === null || modelMapper === void 0 ? void 0 : modelMapper.type.additionalProperties;\n }\n return additionalProperties;\n}\n/**\n * Finds the mapper referenced by `className`.\n * @param serializer - The serializer containing the entire set of mappers\n * @param mapper - The composite mapper to resolve\n * @param objectName - Name of the object being serialized\n */\nfunction resolveReferencedMapper(serializer, mapper, objectName) {\n const className = mapper.type.className;\n if (!className) {\n throw new Error(`Class name for model \"${objectName}\" is not provided in the mapper \"${JSON.stringify(mapper, undefined, 2)}\".`);\n }\n return serializer.modelMappers[className];\n}\n/**\n * Resolves a composite mapper's modelProperties.\n * @param serializer - The serializer containing the entire set of mappers\n * @param mapper - The composite mapper to resolve\n */\nfunction resolveModelProperties(serializer, mapper, objectName) {\n let modelProps = mapper.type.modelProperties;\n if (!modelProps) {\n const modelMapper = resolveReferencedMapper(serializer, mapper, objectName);\n if (!modelMapper) {\n throw new Error(`mapper() cannot be null or undefined for model \"${mapper.type.className}\".`);\n }\n modelProps = modelMapper === null || modelMapper === void 0 ? void 0 : modelMapper.type.modelProperties;\n if (!modelProps) {\n throw new Error(`modelProperties cannot be null or undefined in the ` +\n `mapper \"${JSON.stringify(modelMapper)}\" of type \"${mapper.type.className}\" for object \"${objectName}\".`);\n }\n }\n return modelProps;\n}\nfunction serializeCompositeType(serializer, mapper, object, objectName, isXml, options) {\n if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) {\n mapper = getPolymorphicMapper(serializer, mapper, object, \"clientName\");\n }\n if (object != undefined) {\n const payload = {};\n const modelProps = resolveModelProperties(serializer, mapper, objectName);\n for (const key of Object.keys(modelProps)) {\n const propertyMapper = modelProps[key];\n if (propertyMapper.readOnly) {\n continue;\n }\n let propName;\n let parentObject = payload;\n if (serializer.isXML) {\n if (propertyMapper.xmlIsWrapped) {\n propName = propertyMapper.xmlName;\n }\n else {\n propName = propertyMapper.xmlElementName || propertyMapper.xmlName;\n }\n }\n else {\n const paths = splitSerializeName(propertyMapper.serializedName);\n propName = paths.pop();\n for (const pathName of paths) {\n const childObject = parentObject[pathName];\n if (childObject == undefined &&\n (object[key] != undefined || propertyMapper.defaultValue !== undefined)) {\n parentObject[pathName] = {};\n }\n parentObject = parentObject[pathName];\n }\n }\n if (parentObject != undefined) {\n if (isXml && mapper.xmlNamespace) {\n const xmlnsKey = mapper.xmlNamespacePrefix\n ? `xmlns:${mapper.xmlNamespacePrefix}`\n : \"xmlns\";\n parentObject[XML_ATTRKEY] = Object.assign(Object.assign({}, parentObject[XML_ATTRKEY]), { [xmlnsKey]: mapper.xmlNamespace });\n }\n const propertyObjectName = propertyMapper.serializedName !== \"\"\n ? objectName + \".\" + propertyMapper.serializedName\n : objectName;\n let toSerialize = object[key];\n const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);\n if (polymorphicDiscriminator &&\n polymorphicDiscriminator.clientName === key &&\n toSerialize == undefined) {\n toSerialize = mapper.serializedName;\n }\n const serializedValue = serializer.serialize(propertyMapper, toSerialize, propertyObjectName, options);\n if (serializedValue !== undefined && propName != undefined) {\n const value = getXmlObjectValue(propertyMapper, serializedValue, isXml, options);\n if (isXml && propertyMapper.xmlIsAttribute) {\n // XML_ATTRKEY, i.e., $ is the key attributes are kept under in xml2js.\n // This keeps things simple while preventing name collision\n // with names in user documents.\n parentObject[XML_ATTRKEY] = parentObject[XML_ATTRKEY] || {};\n parentObject[XML_ATTRKEY][propName] = serializedValue;\n }\n else if (isXml && propertyMapper.xmlIsWrapped) {\n parentObject[propName] = { [propertyMapper.xmlElementName]: value };\n }\n else {\n parentObject[propName] = value;\n }\n }\n }\n }\n const additionalPropertiesMapper = resolveAdditionalProperties(serializer, mapper, objectName);\n if (additionalPropertiesMapper) {\n const propNames = Object.keys(modelProps);\n for (const clientPropName in object) {\n const isAdditionalProperty = propNames.every((pn) => pn !== clientPropName);\n if (isAdditionalProperty) {\n payload[clientPropName] = serializer.serialize(additionalPropertiesMapper, object[clientPropName], objectName + '[\"' + clientPropName + '\"]', options);\n }\n }\n }\n return payload;\n }\n return object;\n}\nfunction getXmlObjectValue(propertyMapper, serializedValue, isXml, options) {\n if (!isXml || !propertyMapper.xmlNamespace) {\n return serializedValue;\n }\n const xmlnsKey = propertyMapper.xmlNamespacePrefix\n ? `xmlns:${propertyMapper.xmlNamespacePrefix}`\n : \"xmlns\";\n const xmlNamespace = { [xmlnsKey]: propertyMapper.xmlNamespace };\n if ([\"Composite\"].includes(propertyMapper.type.name)) {\n if (serializedValue[XML_ATTRKEY]) {\n return serializedValue;\n }\n else {\n const result = Object.assign({}, serializedValue);\n result[XML_ATTRKEY] = xmlNamespace;\n return result;\n }\n }\n const result = {};\n result[options.xmlCharKey] = serializedValue;\n result[XML_ATTRKEY] = xmlNamespace;\n return result;\n}\nfunction isSpecialXmlProperty(propertyName, options) {\n return [XML_ATTRKEY, options.xmlCharKey].includes(propertyName);\n}\nfunction deserializeCompositeType(serializer, mapper, responseBody, objectName, options) {\n var _a, _b;\n const xmlCharKey = (_a = options.xmlCharKey) !== null && _a !== void 0 ? _a : XML_CHARKEY;\n if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) {\n mapper = getPolymorphicMapper(serializer, mapper, responseBody, \"serializedName\");\n }\n const modelProps = resolveModelProperties(serializer, mapper, objectName);\n let instance = {};\n const handledPropertyNames = [];\n for (const key of Object.keys(modelProps)) {\n const propertyMapper = modelProps[key];\n const paths = splitSerializeName(modelProps[key].serializedName);\n handledPropertyNames.push(paths[0]);\n const { serializedName, xmlName, xmlElementName } = propertyMapper;\n let propertyObjectName = objectName;\n if (serializedName !== \"\" && serializedName !== undefined) {\n propertyObjectName = objectName + \".\" + serializedName;\n }\n const headerCollectionPrefix = propertyMapper.headerCollectionPrefix;\n if (headerCollectionPrefix) {\n const dictionary = {};\n for (const headerKey of Object.keys(responseBody)) {\n if (headerKey.startsWith(headerCollectionPrefix)) {\n dictionary[headerKey.substring(headerCollectionPrefix.length)] = serializer.deserialize(propertyMapper.type.value, responseBody[headerKey], propertyObjectName, options);\n }\n handledPropertyNames.push(headerKey);\n }\n instance[key] = dictionary;\n }\n else if (serializer.isXML) {\n if (propertyMapper.xmlIsAttribute && responseBody[XML_ATTRKEY]) {\n instance[key] = serializer.deserialize(propertyMapper, responseBody[XML_ATTRKEY][xmlName], propertyObjectName, options);\n }\n else if (propertyMapper.xmlIsMsText) {\n if (responseBody[xmlCharKey] !== undefined) {\n instance[key] = responseBody[xmlCharKey];\n }\n else if (typeof responseBody === \"string\") {\n // The special case where xml parser parses \"content\" into JSON of\n // `{ name: \"content\"}` instead of `{ name: { \"_\": \"content\" }}`\n instance[key] = responseBody;\n }\n }\n else {\n const propertyName = xmlElementName || xmlName || serializedName;\n if (propertyMapper.xmlIsWrapped) {\n /* a list of wrapped by \n For the xml example below\n \n ...\n ...\n \n the responseBody has\n {\n Cors: {\n CorsRule: [{...}, {...}]\n }\n }\n xmlName is \"Cors\" and xmlElementName is\"CorsRule\".\n */\n const wrapped = responseBody[xmlName];\n const elementList = (_b = wrapped === null || wrapped === void 0 ? void 0 : wrapped[xmlElementName]) !== null && _b !== void 0 ? _b : [];\n instance[key] = serializer.deserialize(propertyMapper, elementList, propertyObjectName, options);\n handledPropertyNames.push(xmlName);\n }\n else {\n const property = responseBody[propertyName];\n instance[key] = serializer.deserialize(propertyMapper, property, propertyObjectName, options);\n handledPropertyNames.push(propertyName);\n }\n }\n }\n else {\n // deserialize the property if it is present in the provided responseBody instance\n let propertyInstance;\n let res = responseBody;\n // traversing the object step by step.\n for (const item of paths) {\n if (!res)\n break;\n res = res[item];\n }\n propertyInstance = res;\n const polymorphicDiscriminator = mapper.type.polymorphicDiscriminator;\n // checking that the model property name (key)(ex: \"fishtype\") and the\n // clientName of the polymorphicDiscriminator {metadata} (ex: \"fishtype\")\n // instead of the serializedName of the polymorphicDiscriminator (ex: \"fish.type\")\n // is a better approach. The generator is not consistent with escaping '\\.' in the\n // serializedName of the property (ex: \"fish\\.type\") that is marked as polymorphic discriminator\n // and the serializedName of the metadata polymorphicDiscriminator (ex: \"fish.type\"). However,\n // the clientName transformation of the polymorphicDiscriminator (ex: \"fishtype\") and\n // the transformation of model property name (ex: \"fishtype\") is done consistently.\n // Hence, it is a safer bet to rely on the clientName of the polymorphicDiscriminator.\n if (polymorphicDiscriminator &&\n key === polymorphicDiscriminator.clientName &&\n propertyInstance == undefined) {\n propertyInstance = mapper.serializedName;\n }\n let serializedValue;\n // paging\n if (Array.isArray(responseBody[key]) && modelProps[key].serializedName === \"\") {\n propertyInstance = responseBody[key];\n const arrayInstance = serializer.deserialize(propertyMapper, propertyInstance, propertyObjectName, options);\n // Copy over any properties that have already been added into the instance, where they do\n // not exist on the newly de-serialized array\n for (const [k, v] of Object.entries(instance)) {\n if (!Object.prototype.hasOwnProperty.call(arrayInstance, k)) {\n arrayInstance[k] = v;\n }\n }\n instance = arrayInstance;\n }\n else if (propertyInstance !== undefined || propertyMapper.defaultValue !== undefined) {\n serializedValue = serializer.deserialize(propertyMapper, propertyInstance, propertyObjectName, options);\n instance[key] = serializedValue;\n }\n }\n }\n const additionalPropertiesMapper = mapper.type.additionalProperties;\n if (additionalPropertiesMapper) {\n const isAdditionalProperty = (responsePropName) => {\n for (const clientPropName in modelProps) {\n const paths = splitSerializeName(modelProps[clientPropName].serializedName);\n if (paths[0] === responsePropName) {\n return false;\n }\n }\n return true;\n };\n for (const responsePropName in responseBody) {\n if (isAdditionalProperty(responsePropName)) {\n instance[responsePropName] = serializer.deserialize(additionalPropertiesMapper, responseBody[responsePropName], objectName + '[\"' + responsePropName + '\"]', options);\n }\n }\n }\n else if (responseBody) {\n for (const key of Object.keys(responseBody)) {\n if (instance[key] === undefined &&\n !handledPropertyNames.includes(key) &&\n !isSpecialXmlProperty(key, options)) {\n instance[key] = responseBody[key];\n }\n }\n }\n return instance;\n}\nfunction deserializeDictionaryType(serializer, mapper, responseBody, objectName, options) {\n const value = mapper.type.value;\n if (!value || typeof value !== \"object\") {\n throw new Error(`\"value\" metadata for a Dictionary must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}`);\n }\n if (responseBody) {\n const tempDictionary = {};\n for (const key of Object.keys(responseBody)) {\n tempDictionary[key] = serializer.deserialize(value, responseBody[key], objectName, options);\n }\n return tempDictionary;\n }\n return responseBody;\n}\nfunction deserializeSequenceType(serializer, mapper, responseBody, objectName, options) {\n const element = mapper.type.element;\n if (!element || typeof element !== \"object\") {\n throw new Error(`element\" metadata for an Array must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}`);\n }\n if (responseBody) {\n if (!Array.isArray(responseBody)) {\n // xml2js will interpret a single element array as just the element, so force it to be an array\n responseBody = [responseBody];\n }\n const tempArray = [];\n for (let i = 0; i < responseBody.length; i++) {\n tempArray[i] = serializer.deserialize(element, responseBody[i], `${objectName}[${i}]`, options);\n }\n return tempArray;\n }\n return responseBody;\n}\nfunction getPolymorphicMapper(serializer, mapper, object, polymorphicPropertyName) {\n const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);\n if (polymorphicDiscriminator) {\n const discriminatorName = polymorphicDiscriminator[polymorphicPropertyName];\n if (discriminatorName != undefined) {\n const discriminatorValue = object[discriminatorName];\n if (discriminatorValue != undefined) {\n const typeName = mapper.type.uberParent || mapper.type.className;\n const indexDiscriminator = discriminatorValue === typeName\n ? discriminatorValue\n : typeName + \".\" + discriminatorValue;\n const polymorphicMapper = serializer.modelMappers.discriminators[indexDiscriminator];\n if (polymorphicMapper) {\n mapper = polymorphicMapper;\n }\n }\n }\n }\n return mapper;\n}\nfunction getPolymorphicDiscriminatorRecursively(serializer, mapper) {\n return (mapper.type.polymorphicDiscriminator ||\n getPolymorphicDiscriminatorSafely(serializer, mapper.type.uberParent) ||\n getPolymorphicDiscriminatorSafely(serializer, mapper.type.className));\n}\nfunction getPolymorphicDiscriminatorSafely(serializer, typeName) {\n return (typeName &&\n serializer.modelMappers[typeName] &&\n serializer.modelMappers[typeName].type.polymorphicDiscriminator);\n}\n/**\n * Utility function that serializes an object that might contain binary information into a plain object, array or a string.\n */\nexport function serializeObject(toSerialize) {\n const castToSerialize = toSerialize;\n if (toSerialize == undefined)\n return undefined;\n if (toSerialize instanceof Uint8Array) {\n toSerialize = base64.encodeByteArray(toSerialize);\n return toSerialize;\n }\n else if (toSerialize instanceof Date) {\n return toSerialize.toISOString();\n }\n else if (Array.isArray(toSerialize)) {\n const array = [];\n for (let i = 0; i < toSerialize.length; i++) {\n array.push(serializeObject(toSerialize[i]));\n }\n return array;\n }\n else if (typeof toSerialize === \"object\") {\n const dictionary = {};\n for (const property in toSerialize) {\n dictionary[property] = serializeObject(castToSerialize[property]);\n }\n return dictionary;\n }\n return toSerialize;\n}\n/**\n * Utility function to create a K:V from a list of strings\n */\nfunction strEnum(o) {\n const result = {};\n for (const key of o) {\n result[key] = key;\n }\n return result;\n}\n/**\n * String enum containing the string types of property mappers.\n */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const MapperType = strEnum([\n \"Base64Url\",\n \"Boolean\",\n \"ByteArray\",\n \"Composite\",\n \"Date\",\n \"DateTime\",\n \"DateTimeRfc1123\",\n \"Dictionary\",\n \"Enum\",\n \"Number\",\n \"Object\",\n \"Sequence\",\n \"String\",\n \"Stream\",\n \"TimeSpan\",\n \"UnixTime\",\n]);\n//# sourceMappingURL=serializer.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { replaceAll } from \"./util/utils\";\n/**\n * A class that handles the query portion of a URLBuilder.\n */\nexport class URLQuery {\n constructor() {\n this._rawQuery = {};\n }\n /**\n * Get whether or not there any query parameters in this URLQuery.\n */\n any() {\n return Object.keys(this._rawQuery).length > 0;\n }\n /**\n * Get the keys of the query string.\n */\n keys() {\n return Object.keys(this._rawQuery);\n }\n /**\n * Set a query parameter with the provided name and value. If the parameterValue is undefined or\n * empty, then this will attempt to remove an existing query parameter with the provided\n * parameterName.\n */\n set(parameterName, parameterValue) {\n const caseParameterValue = parameterValue;\n if (parameterName) {\n if (caseParameterValue !== undefined && caseParameterValue !== null) {\n const newValue = Array.isArray(caseParameterValue)\n ? caseParameterValue\n : caseParameterValue.toString();\n this._rawQuery[parameterName] = newValue;\n }\n else {\n delete this._rawQuery[parameterName];\n }\n }\n }\n /**\n * Get the value of the query parameter with the provided name. If no parameter exists with the\n * provided parameter name, then undefined will be returned.\n */\n get(parameterName) {\n return parameterName ? this._rawQuery[parameterName] : undefined;\n }\n /**\n * Get the string representation of this query. The return value will not start with a \"?\".\n */\n toString() {\n let result = \"\";\n for (const parameterName in this._rawQuery) {\n if (result) {\n result += \"&\";\n }\n const parameterValue = this._rawQuery[parameterName];\n if (Array.isArray(parameterValue)) {\n const parameterStrings = [];\n for (const parameterValueElement of parameterValue) {\n parameterStrings.push(`${parameterName}=${parameterValueElement}`);\n }\n result += parameterStrings.join(\"&\");\n }\n else {\n result += `${parameterName}=${parameterValue}`;\n }\n }\n return result;\n }\n /**\n * Parse a URLQuery from the provided text.\n */\n static parse(text) {\n const result = new URLQuery();\n if (text) {\n if (text.startsWith(\"?\")) {\n text = text.substring(1);\n }\n let currentState = \"ParameterName\";\n let parameterName = \"\";\n let parameterValue = \"\";\n for (let i = 0; i < text.length; ++i) {\n const currentCharacter = text[i];\n switch (currentState) {\n case \"ParameterName\":\n switch (currentCharacter) {\n case \"=\":\n currentState = \"ParameterValue\";\n break;\n case \"&\":\n parameterName = \"\";\n parameterValue = \"\";\n break;\n default:\n parameterName += currentCharacter;\n break;\n }\n break;\n case \"ParameterValue\":\n switch (currentCharacter) {\n case \"&\":\n result.set(parameterName, parameterValue);\n parameterName = \"\";\n parameterValue = \"\";\n currentState = \"ParameterName\";\n break;\n default:\n parameterValue += currentCharacter;\n break;\n }\n break;\n default:\n throw new Error(\"Unrecognized URLQuery parse state: \" + currentState);\n }\n }\n if (currentState === \"ParameterValue\") {\n result.set(parameterName, parameterValue);\n }\n }\n return result;\n }\n}\n/**\n * A class that handles creating, modifying, and parsing URLs.\n */\nexport class URLBuilder {\n /**\n * Set the scheme/protocol for this URL. If the provided scheme contains other parts of a URL\n * (such as a host, port, path, or query), those parts will be added to this URL as well.\n */\n setScheme(scheme) {\n if (!scheme) {\n this._scheme = undefined;\n }\n else {\n this.set(scheme, \"SCHEME\");\n }\n }\n /**\n * Get the scheme that has been set in this URL.\n */\n getScheme() {\n return this._scheme;\n }\n /**\n * Set the host for this URL. If the provided host contains other parts of a URL (such as a\n * port, path, or query), those parts will be added to this URL as well.\n */\n setHost(host) {\n if (!host) {\n this._host = undefined;\n }\n else {\n this.set(host, \"SCHEME_OR_HOST\");\n }\n }\n /**\n * Get the host that has been set in this URL.\n */\n getHost() {\n return this._host;\n }\n /**\n * Set the port for this URL. If the provided port contains other parts of a URL (such as a\n * path or query), those parts will be added to this URL as well.\n */\n setPort(port) {\n if (port === undefined || port === null || port === \"\") {\n this._port = undefined;\n }\n else {\n this.set(port.toString(), \"PORT\");\n }\n }\n /**\n * Get the port that has been set in this URL.\n */\n getPort() {\n return this._port;\n }\n /**\n * Set the path for this URL. If the provided path contains a query, then it will be added to\n * this URL as well.\n */\n setPath(path) {\n if (!path) {\n this._path = undefined;\n }\n else {\n const schemeIndex = path.indexOf(\"://\");\n if (schemeIndex !== -1) {\n const schemeStart = path.lastIndexOf(\"/\", schemeIndex);\n // Make sure to only grab the URL part of the path before setting the state back to SCHEME\n // this will handle cases such as \"/a/b/c/https://microsoft.com\" => \"https://microsoft.com\"\n this.set(schemeStart === -1 ? path : path.substr(schemeStart + 1), \"SCHEME\");\n }\n else {\n this.set(path, \"PATH\");\n }\n }\n }\n /**\n * Append the provided path to this URL's existing path. If the provided path contains a query,\n * then it will be added to this URL as well.\n */\n appendPath(path) {\n if (path) {\n let currentPath = this.getPath();\n if (currentPath) {\n if (!currentPath.endsWith(\"/\")) {\n currentPath += \"/\";\n }\n if (path.startsWith(\"/\")) {\n path = path.substring(1);\n }\n path = currentPath + path;\n }\n this.set(path, \"PATH\");\n }\n }\n /**\n * Get the path that has been set in this URL.\n */\n getPath() {\n return this._path;\n }\n /**\n * Set the query in this URL.\n */\n setQuery(query) {\n if (!query) {\n this._query = undefined;\n }\n else {\n this._query = URLQuery.parse(query);\n }\n }\n /**\n * Set a query parameter with the provided name and value in this URL's query. If the provided\n * query parameter value is undefined or empty, then the query parameter will be removed if it\n * existed.\n */\n setQueryParameter(queryParameterName, queryParameterValue) {\n if (queryParameterName) {\n if (!this._query) {\n this._query = new URLQuery();\n }\n this._query.set(queryParameterName, queryParameterValue);\n }\n }\n /**\n * Get the value of the query parameter with the provided query parameter name. If no query\n * parameter exists with the provided name, then undefined will be returned.\n */\n getQueryParameterValue(queryParameterName) {\n return this._query ? this._query.get(queryParameterName) : undefined;\n }\n /**\n * Get the query in this URL.\n */\n getQuery() {\n return this._query ? this._query.toString() : undefined;\n }\n /**\n * Set the parts of this URL by parsing the provided text using the provided startState.\n */\n set(text, startState) {\n const tokenizer = new URLTokenizer(text, startState);\n while (tokenizer.next()) {\n const token = tokenizer.current();\n let tokenPath;\n if (token) {\n switch (token.type) {\n case \"SCHEME\":\n this._scheme = token.text || undefined;\n break;\n case \"HOST\":\n this._host = token.text || undefined;\n break;\n case \"PORT\":\n this._port = token.text || undefined;\n break;\n case \"PATH\":\n tokenPath = token.text || undefined;\n if (!this._path || this._path === \"/\" || tokenPath !== \"/\") {\n this._path = tokenPath;\n }\n break;\n case \"QUERY\":\n this._query = URLQuery.parse(token.text);\n break;\n default:\n throw new Error(`Unrecognized URLTokenType: ${token.type}`);\n }\n }\n }\n }\n /**\n * Serializes the URL as a string.\n * @returns the URL as a string.\n */\n toString() {\n let result = \"\";\n if (this._scheme) {\n result += `${this._scheme}://`;\n }\n if (this._host) {\n result += this._host;\n }\n if (this._port) {\n result += `:${this._port}`;\n }\n if (this._path) {\n if (!this._path.startsWith(\"/\")) {\n result += \"/\";\n }\n result += this._path;\n }\n if (this._query && this._query.any()) {\n result += `?${this._query.toString()}`;\n }\n return result;\n }\n /**\n * If the provided searchValue is found in this URLBuilder, then replace it with the provided\n * replaceValue.\n */\n replaceAll(searchValue, replaceValue) {\n if (searchValue) {\n this.setScheme(replaceAll(this.getScheme(), searchValue, replaceValue));\n this.setHost(replaceAll(this.getHost(), searchValue, replaceValue));\n this.setPort(replaceAll(this.getPort(), searchValue, replaceValue));\n this.setPath(replaceAll(this.getPath(), searchValue, replaceValue));\n this.setQuery(replaceAll(this.getQuery(), searchValue, replaceValue));\n }\n }\n /**\n * Parses a given string URL into a new {@link URLBuilder}.\n */\n static parse(text) {\n const result = new URLBuilder();\n result.set(text, \"SCHEME_OR_HOST\");\n return result;\n }\n}\nexport class URLToken {\n constructor(text, type) {\n this.text = text;\n this.type = type;\n }\n static scheme(text) {\n return new URLToken(text, \"SCHEME\");\n }\n static host(text) {\n return new URLToken(text, \"HOST\");\n }\n static port(text) {\n return new URLToken(text, \"PORT\");\n }\n static path(text) {\n return new URLToken(text, \"PATH\");\n }\n static query(text) {\n return new URLToken(text, \"QUERY\");\n }\n}\n/**\n * Get whether or not the provided character (single character string) is an alphanumeric (letter or\n * digit) character.\n */\nexport function isAlphaNumericCharacter(character) {\n const characterCode = character.charCodeAt(0);\n return ((48 /* '0' */ <= characterCode && characterCode <= 57) /* '9' */ ||\n (65 /* 'A' */ <= characterCode && characterCode <= 90) /* 'Z' */ ||\n (97 /* 'a' */ <= characterCode && characterCode <= 122) /* 'z' */);\n}\n/**\n * A class that tokenizes URL strings.\n */\nexport class URLTokenizer {\n constructor(_text, state) {\n this._text = _text;\n this._textLength = _text ? _text.length : 0;\n this._currentState = state !== undefined && state !== null ? state : \"SCHEME_OR_HOST\";\n this._currentIndex = 0;\n }\n /**\n * Get the current URLToken this URLTokenizer is pointing at, or undefined if the URLTokenizer\n * hasn't started or has finished tokenizing.\n */\n current() {\n return this._currentToken;\n }\n /**\n * Advance to the next URLToken and return whether or not a URLToken was found.\n */\n next() {\n if (!hasCurrentCharacter(this)) {\n this._currentToken = undefined;\n }\n else {\n switch (this._currentState) {\n case \"SCHEME\":\n nextScheme(this);\n break;\n case \"SCHEME_OR_HOST\":\n nextSchemeOrHost(this);\n break;\n case \"HOST\":\n nextHost(this);\n break;\n case \"PORT\":\n nextPort(this);\n break;\n case \"PATH\":\n nextPath(this);\n break;\n case \"QUERY\":\n nextQuery(this);\n break;\n default:\n throw new Error(`Unrecognized URLTokenizerState: ${this._currentState}`);\n }\n }\n return !!this._currentToken;\n }\n}\n/**\n * Read the remaining characters from this Tokenizer's character stream.\n */\nfunction readRemaining(tokenizer) {\n let result = \"\";\n if (tokenizer._currentIndex < tokenizer._textLength) {\n result = tokenizer._text.substring(tokenizer._currentIndex);\n tokenizer._currentIndex = tokenizer._textLength;\n }\n return result;\n}\n/**\n * Whether or not this URLTokenizer has a current character.\n */\nfunction hasCurrentCharacter(tokenizer) {\n return tokenizer._currentIndex < tokenizer._textLength;\n}\n/**\n * Get the character in the text string at the current index.\n */\nfunction getCurrentCharacter(tokenizer) {\n return tokenizer._text[tokenizer._currentIndex];\n}\n/**\n * Advance to the character in text that is \"step\" characters ahead. If no step value is provided,\n * then step will default to 1.\n */\nfunction nextCharacter(tokenizer, step) {\n if (hasCurrentCharacter(tokenizer)) {\n if (!step) {\n step = 1;\n }\n tokenizer._currentIndex += step;\n }\n}\n/**\n * Starting with the current character, peek \"charactersToPeek\" number of characters ahead in this\n * Tokenizer's stream of characters.\n */\nfunction peekCharacters(tokenizer, charactersToPeek) {\n let endIndex = tokenizer._currentIndex + charactersToPeek;\n if (tokenizer._textLength < endIndex) {\n endIndex = tokenizer._textLength;\n }\n return tokenizer._text.substring(tokenizer._currentIndex, endIndex);\n}\n/**\n * Read characters from this Tokenizer until the end of the stream or until the provided condition\n * is false when provided the current character.\n */\nfunction readWhile(tokenizer, condition) {\n let result = \"\";\n while (hasCurrentCharacter(tokenizer)) {\n const currentCharacter = getCurrentCharacter(tokenizer);\n if (!condition(currentCharacter)) {\n break;\n }\n else {\n result += currentCharacter;\n nextCharacter(tokenizer);\n }\n }\n return result;\n}\n/**\n * Read characters from this Tokenizer until a non-alphanumeric character or the end of the\n * character stream is reached.\n */\nfunction readWhileLetterOrDigit(tokenizer) {\n return readWhile(tokenizer, (character) => isAlphaNumericCharacter(character));\n}\n/**\n * Read characters from this Tokenizer until one of the provided terminating characters is read or\n * the end of the character stream is reached.\n */\nfunction readUntilCharacter(tokenizer, ...terminatingCharacters) {\n return readWhile(tokenizer, (character) => terminatingCharacters.indexOf(character) === -1);\n}\nfunction nextScheme(tokenizer) {\n const scheme = readWhileLetterOrDigit(tokenizer);\n tokenizer._currentToken = URLToken.scheme(scheme);\n if (!hasCurrentCharacter(tokenizer)) {\n tokenizer._currentState = \"DONE\";\n }\n else {\n tokenizer._currentState = \"HOST\";\n }\n}\nfunction nextSchemeOrHost(tokenizer) {\n const schemeOrHost = readUntilCharacter(tokenizer, \":\", \"/\", \"?\");\n if (!hasCurrentCharacter(tokenizer)) {\n tokenizer._currentToken = URLToken.host(schemeOrHost);\n tokenizer._currentState = \"DONE\";\n }\n else if (getCurrentCharacter(tokenizer) === \":\") {\n if (peekCharacters(tokenizer, 3) === \"://\") {\n tokenizer._currentToken = URLToken.scheme(schemeOrHost);\n tokenizer._currentState = \"HOST\";\n }\n else {\n tokenizer._currentToken = URLToken.host(schemeOrHost);\n tokenizer._currentState = \"PORT\";\n }\n }\n else {\n tokenizer._currentToken = URLToken.host(schemeOrHost);\n if (getCurrentCharacter(tokenizer) === \"/\") {\n tokenizer._currentState = \"PATH\";\n }\n else {\n tokenizer._currentState = \"QUERY\";\n }\n }\n}\nfunction nextHost(tokenizer) {\n if (peekCharacters(tokenizer, 3) === \"://\") {\n nextCharacter(tokenizer, 3);\n }\n const host = readUntilCharacter(tokenizer, \":\", \"/\", \"?\");\n tokenizer._currentToken = URLToken.host(host);\n if (!hasCurrentCharacter(tokenizer)) {\n tokenizer._currentState = \"DONE\";\n }\n else if (getCurrentCharacter(tokenizer) === \":\") {\n tokenizer._currentState = \"PORT\";\n }\n else if (getCurrentCharacter(tokenizer) === \"/\") {\n tokenizer._currentState = \"PATH\";\n }\n else {\n tokenizer._currentState = \"QUERY\";\n }\n}\nfunction nextPort(tokenizer) {\n if (getCurrentCharacter(tokenizer) === \":\") {\n nextCharacter(tokenizer);\n }\n const port = readUntilCharacter(tokenizer, \"/\", \"?\");\n tokenizer._currentToken = URLToken.port(port);\n if (!hasCurrentCharacter(tokenizer)) {\n tokenizer._currentState = \"DONE\";\n }\n else if (getCurrentCharacter(tokenizer) === \"/\") {\n tokenizer._currentState = \"PATH\";\n }\n else {\n tokenizer._currentState = \"QUERY\";\n }\n}\nfunction nextPath(tokenizer) {\n const path = readUntilCharacter(tokenizer, \"?\");\n tokenizer._currentToken = URLToken.path(path);\n if (!hasCurrentCharacter(tokenizer)) {\n tokenizer._currentState = \"DONE\";\n }\n else {\n tokenizer._currentState = \"QUERY\";\n }\n}\nfunction nextQuery(tokenizer) {\n if (getCurrentCharacter(tokenizer) === \"?\") {\n nextCharacter(tokenizer);\n }\n const query = readRemaining(tokenizer);\n tokenizer._currentToken = URLToken.query(query);\n tokenizer._currentState = \"DONE\";\n}\n//# sourceMappingURL=url.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * A set of constants used internally when processing requests.\n */\nexport const Constants = {\n /**\n * The core-http version\n */\n coreHttpVersion: \"3.0.4\",\n /**\n * Specifies HTTP.\n */\n HTTP: \"http:\",\n /**\n * Specifies HTTPS.\n */\n HTTPS: \"https:\",\n /**\n * Specifies HTTP Proxy.\n */\n HTTP_PROXY: \"HTTP_PROXY\",\n /**\n * Specifies HTTPS Proxy.\n */\n HTTPS_PROXY: \"HTTPS_PROXY\",\n /**\n * Specifies NO Proxy.\n */\n NO_PROXY: \"NO_PROXY\",\n /**\n * Specifies ALL Proxy.\n */\n ALL_PROXY: \"ALL_PROXY\",\n HttpConstants: {\n /**\n * Http Verbs\n */\n HttpVerbs: {\n PUT: \"PUT\",\n GET: \"GET\",\n DELETE: \"DELETE\",\n POST: \"POST\",\n MERGE: \"MERGE\",\n HEAD: \"HEAD\",\n PATCH: \"PATCH\",\n },\n StatusCodes: {\n TooManyRequests: 429,\n ServiceUnavailable: 503,\n },\n },\n /**\n * Defines constants for use with HTTP headers.\n */\n HeaderConstants: {\n /**\n * The Authorization header.\n */\n AUTHORIZATION: \"authorization\",\n AUTHORIZATION_SCHEME: \"Bearer\",\n /**\n * The Retry-After response-header field can be used with a 503 (Service\n * Unavailable) or 349 (Too Many Requests) responses to indicate how long\n * the service is expected to be unavailable to the requesting client.\n */\n RETRY_AFTER: \"Retry-After\",\n /**\n * The UserAgent header.\n */\n USER_AGENT: \"User-Agent\",\n },\n};\n//# sourceMappingURL=constants.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { URLBuilder, URLQuery } from \"../url\";\nimport { isObject } from \"./utils\";\nconst RedactedString = \"REDACTED\";\nconst defaultAllowedHeaderNames = [\n \"x-ms-client-request-id\",\n \"x-ms-return-client-request-id\",\n \"x-ms-useragent\",\n \"x-ms-correlation-request-id\",\n \"x-ms-request-id\",\n \"client-request-id\",\n \"ms-cv\",\n \"return-client-request-id\",\n \"traceparent\",\n \"Access-Control-Allow-Credentials\",\n \"Access-Control-Allow-Headers\",\n \"Access-Control-Allow-Methods\",\n \"Access-Control-Allow-Origin\",\n \"Access-Control-Expose-Headers\",\n \"Access-Control-Max-Age\",\n \"Access-Control-Request-Headers\",\n \"Access-Control-Request-Method\",\n \"Origin\",\n \"Accept\",\n \"Accept-Encoding\",\n \"Cache-Control\",\n \"Connection\",\n \"Content-Length\",\n \"Content-Type\",\n \"Date\",\n \"ETag\",\n \"Expires\",\n \"If-Match\",\n \"If-Modified-Since\",\n \"If-None-Match\",\n \"If-Unmodified-Since\",\n \"Last-Modified\",\n \"Pragma\",\n \"Request-Id\",\n \"Retry-After\",\n \"Server\",\n \"Transfer-Encoding\",\n \"User-Agent\",\n \"WWW-Authenticate\",\n];\nconst defaultAllowedQueryParameters = [\"api-version\"];\nexport class Sanitizer {\n constructor({ allowedHeaderNames = [], allowedQueryParameters = [] } = {}) {\n allowedHeaderNames = Array.isArray(allowedHeaderNames)\n ? defaultAllowedHeaderNames.concat(allowedHeaderNames)\n : defaultAllowedHeaderNames;\n allowedQueryParameters = Array.isArray(allowedQueryParameters)\n ? defaultAllowedQueryParameters.concat(allowedQueryParameters)\n : defaultAllowedQueryParameters;\n this.allowedHeaderNames = new Set(allowedHeaderNames.map((n) => n.toLowerCase()));\n this.allowedQueryParameters = new Set(allowedQueryParameters.map((p) => p.toLowerCase()));\n }\n sanitize(obj) {\n const seen = new Set();\n return JSON.stringify(obj, (key, value) => {\n // Ensure Errors include their interesting non-enumerable members\n if (value instanceof Error) {\n return Object.assign(Object.assign({}, value), { name: value.name, message: value.message });\n }\n if (key === \"_headersMap\") {\n return this.sanitizeHeaders(value);\n }\n else if (key === \"url\") {\n return this.sanitizeUrl(value);\n }\n else if (key === \"query\") {\n return this.sanitizeQuery(value);\n }\n else if (key === \"body\") {\n // Don't log the request body\n return undefined;\n }\n else if (key === \"response\") {\n // Don't log response again\n return undefined;\n }\n else if (key === \"operationSpec\") {\n // When using sendOperationRequest, the request carries a massive\n // field with the autorest spec. No need to log it.\n return undefined;\n }\n else if (Array.isArray(value) || isObject(value)) {\n if (seen.has(value)) {\n return \"[Circular]\";\n }\n seen.add(value);\n }\n return value;\n }, 2);\n }\n sanitizeHeaders(value) {\n return this.sanitizeObject(value, this.allowedHeaderNames, (v, k) => v[k].value);\n }\n sanitizeQuery(value) {\n return this.sanitizeObject(value, this.allowedQueryParameters, (v, k) => v[k]);\n }\n sanitizeObject(value, allowedKeys, accessor) {\n if (typeof value !== \"object\" || value === null) {\n return value;\n }\n const sanitized = {};\n for (const k of Object.keys(value)) {\n if (allowedKeys.has(k.toLowerCase())) {\n sanitized[k] = accessor(value, k);\n }\n else {\n sanitized[k] = RedactedString;\n }\n }\n return sanitized;\n }\n sanitizeUrl(value) {\n if (typeof value !== \"string\" || value === null) {\n return value;\n }\n const urlBuilder = URLBuilder.parse(value);\n const queryString = urlBuilder.getQuery();\n if (!queryString) {\n return value;\n }\n const query = URLQuery.parse(queryString);\n for (const k of query.keys()) {\n if (!this.allowedQueryParameters.has(k.toLowerCase())) {\n query.set(k, RedactedString);\n }\n }\n urlBuilder.setQuery(query.toString());\n return urlBuilder.toString();\n }\n}\n//# sourceMappingURL=sanitizer.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Default key used to access the XML attributes.\n */\nexport const XML_ATTRKEY = \"$\";\n/**\n * Default key used to access the XML value content.\n */\nexport const XML_CHARKEY = \"_\";\n//# sourceMappingURL=serializer.common.js.map","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { Constants } from \"./constants\";\nimport { XML_ATTRKEY } from \"./serializer.common\";\nimport { v4 as uuidv4 } from \"uuid\";\nconst validUuidRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/i;\n/**\n * Checks if a parsed URL is HTTPS\n *\n * @param urlToCheck - The url to check\n * @returns True if the URL is HTTPS; false otherwise.\n */\nexport function urlIsHTTPS(urlToCheck) {\n return urlToCheck.protocol.toLowerCase() === Constants.HTTPS;\n}\n/**\n * Encodes an URI.\n *\n * @param uri - The URI to be encoded.\n * @returns The encoded URI.\n */\nexport function encodeUri(uri) {\n return encodeURIComponent(uri)\n .replace(/!/g, \"%21\")\n .replace(/\"/g, \"%27\")\n .replace(/\\(/g, \"%28\")\n .replace(/\\)/g, \"%29\")\n .replace(/\\*/g, \"%2A\");\n}\n/**\n * Returns a stripped version of the Http Response which only contains body,\n * headers and the status.\n *\n * @param response - The Http Response\n * @returns The stripped version of Http Response.\n */\nexport function stripResponse(response) {\n const strippedResponse = {};\n strippedResponse.body = response.bodyAsText;\n strippedResponse.headers = response.headers;\n strippedResponse.status = response.status;\n return strippedResponse;\n}\n/**\n * Returns a stripped version of the Http Request that does not contain the\n * Authorization header.\n *\n * @param request - The Http Request object\n * @returns The stripped version of Http Request.\n */\nexport function stripRequest(request) {\n const strippedRequest = request.clone();\n if (strippedRequest.headers) {\n strippedRequest.headers.remove(\"authorization\");\n }\n return strippedRequest;\n}\n/**\n * Validates the given uuid as a string\n *\n * @param uuid - The uuid as a string that needs to be validated\n * @returns True if the uuid is valid; false otherwise.\n */\nexport function isValidUuid(uuid) {\n return validUuidRegex.test(uuid);\n}\n/**\n * Generated UUID\n *\n * @returns RFC4122 v4 UUID.\n */\nexport function generateUuid() {\n return uuidv4();\n}\n/**\n * Executes an array of promises sequentially. Inspiration of this method is here:\n * https://pouchdb.com/2015/05/18/we-have-a-problem-with-promises.html. An awesome blog on promises!\n *\n * @param promiseFactories - An array of promise factories(A function that return a promise)\n * @param kickstart - Input to the first promise that is used to kickstart the promise chain.\n * If not provided then the promise chain starts with undefined.\n * @returns A chain of resolved or rejected promises\n */\nexport function executePromisesSequentially(promiseFactories, kickstart) {\n let result = Promise.resolve(kickstart);\n promiseFactories.forEach((promiseFactory) => {\n result = result.then(promiseFactory);\n });\n return result;\n}\n/**\n * Converts a Promise to a callback.\n * @param promise - The Promise to be converted to a callback\n * @returns A function that takes the callback `(cb: Function) => void`\n * @deprecated generated code should instead depend on responseToBody\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function promiseToCallback(promise) {\n if (typeof promise.then !== \"function\") {\n throw new Error(\"The provided input is not a Promise.\");\n }\n // eslint-disable-next-line @typescript-eslint/ban-types\n return (cb) => {\n promise\n .then((data) => {\n // eslint-disable-next-line promise/no-callback-in-promise\n return cb(undefined, data);\n })\n .catch((err) => {\n // eslint-disable-next-line promise/no-callback-in-promise\n cb(err);\n });\n };\n}\n/**\n * Converts a Promise to a service callback.\n * @param promise - The Promise of HttpOperationResponse to be converted to a service callback\n * @returns A function that takes the service callback (cb: ServiceCallback): void\n */\nexport function promiseToServiceCallback(promise) {\n if (typeof promise.then !== \"function\") {\n throw new Error(\"The provided input is not a Promise.\");\n }\n return (cb) => {\n promise\n .then((data) => {\n return process.nextTick(cb, undefined, data.parsedBody, data.request, data);\n })\n .catch((err) => {\n process.nextTick(cb, err);\n });\n };\n}\nexport function prepareXMLRootList(obj, elementName, xmlNamespaceKey, xmlNamespace) {\n if (!Array.isArray(obj)) {\n obj = [obj];\n }\n if (!xmlNamespaceKey || !xmlNamespace) {\n return { [elementName]: obj };\n }\n const result = { [elementName]: obj };\n result[XML_ATTRKEY] = { [xmlNamespaceKey]: xmlNamespace };\n return result;\n}\n/**\n * Applies the properties on the prototype of sourceCtors to the prototype of targetCtor\n * @param targetCtor - The target object on which the properties need to be applied.\n * @param sourceCtors - An array of source objects from which the properties need to be taken.\n */\nexport function applyMixins(targetCtorParam, sourceCtors) {\n const castTargetCtorParam = targetCtorParam;\n sourceCtors.forEach((sourceCtor) => {\n Object.getOwnPropertyNames(sourceCtor.prototype).forEach((name) => {\n castTargetCtorParam.prototype[name] = sourceCtor.prototype[name];\n });\n });\n}\nconst validateISODuration = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n/**\n * Indicates whether the given string is in ISO 8601 format.\n * @param value - The value to be validated for ISO 8601 duration format.\n * @returns `true` if valid, `false` otherwise.\n */\nexport function isDuration(value) {\n return validateISODuration.test(value);\n}\n/**\n * Replace all of the instances of searchValue in value with the provided replaceValue.\n * @param value - The value to search and replace in.\n * @param searchValue - The value to search for in the value argument.\n * @param replaceValue - The value to replace searchValue with in the value argument.\n * @returns The value where each instance of searchValue was replaced with replacedValue.\n */\nexport function replaceAll(value, searchValue, replaceValue) {\n return !value || !searchValue ? value : value.split(searchValue).join(replaceValue || \"\");\n}\n/**\n * Determines whether the given entity is a basic/primitive type\n * (string, number, boolean, null, undefined).\n * @param value - Any entity\n * @returns true is it is primitive type, false otherwise.\n */\nexport function isPrimitiveType(value) {\n return (typeof value !== \"object\" && typeof value !== \"function\") || value === null;\n}\nexport function getEnvironmentValue(name) {\n if (process.env[name]) {\n return process.env[name];\n }\n else if (process.env[name.toLowerCase()]) {\n return process.env[name.toLowerCase()];\n }\n return undefined;\n}\n/**\n * @internal\n * @returns true when input is an object type that is not null, Array, RegExp, or Date.\n */\nexport function isObject(input) {\n return (typeof input === \"object\" &&\n input !== null &&\n !Array.isArray(input) &&\n !(input instanceof RegExp) &&\n !(input instanceof Date));\n}\n//# sourceMappingURL=utils.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { XML_ATTRKEY, XML_CHARKEY } from \"./serializer.common\";\nif (!self.document || !self.DOMParser || !self.Node || !self.XMLSerializer) {\n throw new Error(`This library depends on the following DOM objects: [\"document\", \"DOMParser\", \"Node\", \"XMLSerializer\"] to parse XML, but some of these are undefined. You may provide a polyfill to make these globally available in order to support your environment. For more information, please refer to https://aka.ms/azsdk/js/web-workers. `);\n}\nlet cachedDoc;\nfunction getDoc() {\n if (!cachedDoc) {\n cachedDoc = document.implementation.createDocument(null, null, null);\n }\n return cachedDoc;\n}\nlet cachedParser;\nfunction getParser() {\n if (!cachedParser) {\n cachedParser = new DOMParser();\n }\n return cachedParser;\n}\nlet cachedSerializer;\nfunction getSerializer() {\n if (!cachedSerializer) {\n cachedSerializer = new XMLSerializer();\n }\n return cachedSerializer;\n}\n// Policy to make our code Trusted Types compliant.\n// https://github.com/w3c/webappsec-trusted-types\n// We are calling DOMParser.parseFromString() to parse XML payload from Azure services.\n// The parsed DOM object is not exposed to outside. Scripts are disabled when parsing\n// according to the spec. There are no HTML/XSS security concerns on the usage of\n// parseFromString() here.\nlet ttPolicy;\nif (typeof self.trustedTypes !== \"undefined\") {\n ttPolicy = self.trustedTypes.createPolicy(\"@azure/core-http#xml.browser\", {\n createHTML: (s) => s,\n });\n}\nexport function parseXML(str, opts = {}) {\n var _a, _b, _c, _d;\n try {\n const updatedOptions = {\n rootName: (_a = opts.rootName) !== null && _a !== void 0 ? _a : \"\",\n includeRoot: (_b = opts.includeRoot) !== null && _b !== void 0 ? _b : false,\n xmlCharKey: (_c = opts.xmlCharKey) !== null && _c !== void 0 ? _c : XML_CHARKEY,\n };\n const dom = getParser().parseFromString(((_d = ttPolicy === null || ttPolicy === void 0 ? void 0 : ttPolicy.createHTML(str)) !== null && _d !== void 0 ? _d : str), \"application/xml\");\n throwIfError(dom);\n let obj;\n if (updatedOptions.includeRoot) {\n obj = domToObject(dom, updatedOptions);\n }\n else {\n obj = domToObject(dom.childNodes[0], updatedOptions);\n }\n return Promise.resolve(obj);\n }\n catch (err) {\n return Promise.reject(err);\n }\n}\nlet errorNS;\nfunction getErrorNamespace() {\n var _a, _b;\n if (errorNS === undefined) {\n try {\n const invalidXML = ((_a = ttPolicy === null || ttPolicy === void 0 ? void 0 : ttPolicy.createHTML(\"INVALID\")) !== null && _a !== void 0 ? _a : \"INVALID\");\n errorNS =\n (_b = getParser().parseFromString(invalidXML, \"text/xml\").getElementsByTagName(\"parsererror\")[0]\n .namespaceURI) !== null && _b !== void 0 ? _b : \"\";\n }\n catch (ignored) {\n // Most browsers will return a document containing , but IE will throw.\n errorNS = \"\";\n }\n }\n return errorNS;\n}\nfunction throwIfError(dom) {\n const parserErrors = dom.getElementsByTagName(\"parsererror\");\n if (parserErrors.length > 0 && getErrorNamespace()) {\n for (let i = 0; i < parserErrors.length; i++) {\n if (parserErrors[i].namespaceURI === errorNS) {\n throw new Error(parserErrors[i].innerHTML);\n }\n }\n }\n}\nfunction isElement(node) {\n return !!node.attributes;\n}\n/**\n * Get the Element-typed version of the provided Node if the provided node is an element with\n * attributes. If it isn't, then undefined is returned.\n */\nfunction asElementWithAttributes(node) {\n return isElement(node) && node.hasAttributes() ? node : undefined;\n}\nfunction domToObject(node, options) {\n let result = {};\n const childNodeCount = node.childNodes.length;\n const firstChildNode = node.childNodes[0];\n const onlyChildTextValue = (firstChildNode &&\n childNodeCount === 1 &&\n firstChildNode.nodeType === Node.TEXT_NODE &&\n firstChildNode.nodeValue) ||\n undefined;\n const elementWithAttributes = asElementWithAttributes(node);\n if (elementWithAttributes) {\n result[XML_ATTRKEY] = {};\n for (let i = 0; i < elementWithAttributes.attributes.length; i++) {\n const attr = elementWithAttributes.attributes[i];\n result[XML_ATTRKEY][attr.nodeName] = attr.nodeValue;\n }\n if (onlyChildTextValue) {\n result[options.xmlCharKey] = onlyChildTextValue;\n }\n }\n else if (childNodeCount === 0) {\n result = \"\";\n }\n else if (onlyChildTextValue) {\n result = onlyChildTextValue;\n }\n if (!onlyChildTextValue) {\n for (let i = 0; i < childNodeCount; i++) {\n const child = node.childNodes[i];\n // Ignore leading/trailing whitespace nodes\n if (child.nodeType !== Node.TEXT_NODE) {\n const childObject = domToObject(child, options);\n if (!result[child.nodeName]) {\n result[child.nodeName] = childObject;\n }\n else if (Array.isArray(result[child.nodeName])) {\n result[child.nodeName].push(childObject);\n }\n else {\n result[child.nodeName] = [result[child.nodeName], childObject];\n }\n }\n }\n }\n return result;\n}\nexport function stringifyXML(content, opts = {}) {\n var _a, _b, _c;\n const updatedOptions = {\n rootName: (_a = opts.rootName) !== null && _a !== void 0 ? _a : \"root\",\n includeRoot: (_b = opts.includeRoot) !== null && _b !== void 0 ? _b : false,\n xmlCharKey: (_c = opts.xmlCharKey) !== null && _c !== void 0 ? _c : XML_CHARKEY,\n };\n const dom = buildNode(content, updatedOptions.rootName, updatedOptions)[0];\n return ('' +\n getSerializer().serializeToString(dom));\n}\nfunction buildAttributes(attrs) {\n const result = [];\n for (const key of Object.keys(attrs)) {\n const attr = getDoc().createAttribute(key);\n attr.value = attrs[key].toString();\n result.push(attr);\n }\n return result;\n}\nfunction buildNode(obj, elementName, options) {\n if (obj === undefined ||\n obj === null ||\n typeof obj === \"string\" ||\n typeof obj === \"number\" ||\n typeof obj === \"boolean\") {\n const elem = getDoc().createElement(elementName);\n elem.textContent = obj === undefined || obj === null ? \"\" : obj.toString();\n return [elem];\n }\n else if (Array.isArray(obj)) {\n const result = [];\n for (const arrayElem of obj) {\n for (const child of buildNode(arrayElem, elementName, options)) {\n result.push(child);\n }\n }\n return result;\n }\n else if (typeof obj === \"object\") {\n const elem = getDoc().createElement(elementName);\n for (const key of Object.keys(obj)) {\n if (key === XML_ATTRKEY) {\n for (const attr of buildAttributes(obj[key])) {\n elem.attributes.setNamedItem(attr);\n }\n }\n else if (key === options.xmlCharKey) {\n elem.textContent = obj[key].toString();\n }\n else {\n for (const child of buildNode(obj[key], key, options)) {\n elem.appendChild(child);\n }\n }\n }\n return [elem];\n }\n else {\n throw new Error(`Illegal value passed to buildObject: ${obj}`);\n }\n}\n//# sourceMappingURL=xml.browser.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { HttpHeaders, isHttpHeadersLike } from \"./httpHeaders\";\nimport { Serializer } from \"./serializer\";\nimport { generateUuid } from \"./util/utils\";\nexport function isWebResourceLike(object) {\n if (object && typeof object === \"object\") {\n const castObject = object;\n if (typeof castObject.url === \"string\" &&\n typeof castObject.method === \"string\" &&\n typeof castObject.headers === \"object\" &&\n isHttpHeadersLike(castObject.headers) &&\n typeof castObject.validateRequestProperties === \"function\" &&\n typeof castObject.prepare === \"function\" &&\n typeof castObject.clone === \"function\") {\n return true;\n }\n }\n return false;\n}\n/**\n * Creates a new WebResource object.\n *\n * This class provides an abstraction over a REST call by being library / implementation agnostic and wrapping the necessary\n * properties to initiate a request.\n */\nexport class WebResource {\n constructor(url, method, body, query, headers, streamResponseBody, withCredentials, abortSignal, timeout, onUploadProgress, onDownloadProgress, proxySettings, keepAlive, decompressResponse, streamResponseStatusCodes) {\n this.streamResponseBody = streamResponseBody;\n this.streamResponseStatusCodes = streamResponseStatusCodes;\n this.url = url || \"\";\n this.method = method || \"GET\";\n this.headers = isHttpHeadersLike(headers) ? headers : new HttpHeaders(headers);\n this.body = body;\n this.query = query;\n this.formData = undefined;\n this.withCredentials = withCredentials || false;\n this.abortSignal = abortSignal;\n this.timeout = timeout || 0;\n this.onUploadProgress = onUploadProgress;\n this.onDownloadProgress = onDownloadProgress;\n this.proxySettings = proxySettings;\n this.keepAlive = keepAlive;\n this.decompressResponse = decompressResponse;\n this.requestId = this.headers.get(\"x-ms-client-request-id\") || generateUuid();\n }\n /**\n * Validates that the required properties such as method, url, headers[\"Content-Type\"],\n * headers[\"accept-language\"] are defined. It will throw an error if one of the above\n * mentioned properties are not defined.\n */\n validateRequestProperties() {\n if (!this.method) {\n throw new Error(\"WebResource.method is required.\");\n }\n if (!this.url) {\n throw new Error(\"WebResource.url is required.\");\n }\n }\n /**\n * Prepares the request.\n * @param options - Options to provide for preparing the request.\n * @returns Returns the prepared WebResource (HTTP Request) object that needs to be given to the request pipeline.\n */\n prepare(options) {\n if (!options) {\n throw new Error(\"options object is required\");\n }\n if (options.method === undefined ||\n options.method === null ||\n typeof options.method.valueOf() !== \"string\") {\n throw new Error(\"options.method must be a string.\");\n }\n if (options.url && options.pathTemplate) {\n throw new Error(\"options.url and options.pathTemplate are mutually exclusive. Please provide exactly one of them.\");\n }\n if ((options.pathTemplate === undefined ||\n options.pathTemplate === null ||\n typeof options.pathTemplate.valueOf() !== \"string\") &&\n (options.url === undefined ||\n options.url === null ||\n typeof options.url.valueOf() !== \"string\")) {\n throw new Error(\"Please provide exactly one of options.pathTemplate or options.url.\");\n }\n // set the url if it is provided.\n if (options.url) {\n if (typeof options.url !== \"string\") {\n throw new Error('options.url must be of type \"string\".');\n }\n this.url = options.url;\n }\n // set the method\n if (options.method) {\n const validMethods = [\"GET\", \"PUT\", \"HEAD\", \"DELETE\", \"OPTIONS\", \"POST\", \"PATCH\", \"TRACE\"];\n if (validMethods.indexOf(options.method.toUpperCase()) === -1) {\n throw new Error('The provided method \"' +\n options.method +\n '\" is invalid. Supported HTTP methods are: ' +\n JSON.stringify(validMethods));\n }\n }\n this.method = options.method.toUpperCase();\n // construct the url if path template is provided\n if (options.pathTemplate) {\n const { pathTemplate, pathParameters } = options;\n if (typeof pathTemplate !== \"string\") {\n throw new Error('options.pathTemplate must be of type \"string\".');\n }\n if (!options.baseUrl) {\n options.baseUrl = \"https://management.azure.com\";\n }\n const baseUrl = options.baseUrl;\n let url = baseUrl +\n (baseUrl.endsWith(\"/\") ? \"\" : \"/\") +\n (pathTemplate.startsWith(\"/\") ? pathTemplate.slice(1) : pathTemplate);\n const segments = url.match(/({[\\w-]*\\s*[\\w-]*})/gi);\n if (segments && segments.length) {\n if (!pathParameters) {\n throw new Error(`pathTemplate: ${pathTemplate} has been provided. Hence, options.pathParameters must also be provided.`);\n }\n segments.forEach(function (item) {\n const pathParamName = item.slice(1, -1);\n const pathParam = pathParameters[pathParamName];\n if (pathParam === null ||\n pathParam === undefined ||\n !(typeof pathParam === \"string\" || typeof pathParam === \"object\")) {\n const stringifiedPathParameters = JSON.stringify(pathParameters, undefined, 2);\n throw new Error(`pathTemplate: ${pathTemplate} contains the path parameter ${pathParamName}` +\n ` however, it is not present in parameters: ${stringifiedPathParameters}.` +\n `The value of the path parameter can either be a \"string\" of the form { ${pathParamName}: \"some sample value\" } or ` +\n `it can be an \"object\" of the form { \"${pathParamName}\": { value: \"some sample value\", skipUrlEncoding: true } }.`);\n }\n if (typeof pathParam.valueOf() === \"string\") {\n url = url.replace(item, encodeURIComponent(pathParam));\n }\n if (typeof pathParam.valueOf() === \"object\") {\n if (!pathParam.value) {\n throw new Error(`options.pathParameters[${pathParamName}] is of type \"object\" but it does not contain a \"value\" property.`);\n }\n if (pathParam.skipUrlEncoding) {\n url = url.replace(item, pathParam.value);\n }\n else {\n url = url.replace(item, encodeURIComponent(pathParam.value));\n }\n }\n });\n }\n this.url = url;\n }\n // append query parameters to the url if they are provided. They can be provided with pathTemplate or url option.\n if (options.queryParameters) {\n const queryParameters = options.queryParameters;\n if (typeof queryParameters !== \"object\") {\n throw new Error(`options.queryParameters must be of type object. It should be a JSON object ` +\n `of \"query-parameter-name\" as the key and the \"query-parameter-value\" as the value. ` +\n `The \"query-parameter-value\" may be fo type \"string\" or an \"object\" of the form { value: \"query-parameter-value\", skipUrlEncoding: true }.`);\n }\n // append question mark if it is not present in the url\n if (this.url && this.url.indexOf(\"?\") === -1) {\n this.url += \"?\";\n }\n // construct queryString\n const queryParams = [];\n // We need to populate this.query as a dictionary if the request is being used for Sway's validateRequest().\n this.query = {};\n for (const queryParamName in queryParameters) {\n const queryParam = queryParameters[queryParamName];\n if (queryParam) {\n if (typeof queryParam === \"string\") {\n queryParams.push(queryParamName + \"=\" + encodeURIComponent(queryParam));\n this.query[queryParamName] = encodeURIComponent(queryParam);\n }\n else if (typeof queryParam === \"object\") {\n if (!queryParam.value) {\n throw new Error(`options.queryParameters[${queryParamName}] is of type \"object\" but it does not contain a \"value\" property.`);\n }\n if (queryParam.skipUrlEncoding) {\n queryParams.push(queryParamName + \"=\" + queryParam.value);\n this.query[queryParamName] = queryParam.value;\n }\n else {\n queryParams.push(queryParamName + \"=\" + encodeURIComponent(queryParam.value));\n this.query[queryParamName] = encodeURIComponent(queryParam.value);\n }\n }\n }\n } // end-of-for\n // append the queryString\n this.url += queryParams.join(\"&\");\n }\n // add headers to the request if they are provided\n if (options.headers) {\n const headers = options.headers;\n for (const headerName of Object.keys(options.headers)) {\n this.headers.set(headerName, headers[headerName]);\n }\n }\n // ensure accept-language is set correctly\n if (!this.headers.get(\"accept-language\")) {\n this.headers.set(\"accept-language\", \"en-US\");\n }\n // ensure the request-id is set correctly\n if (!this.headers.get(\"x-ms-client-request-id\") && !options.disableClientRequestId) {\n this.headers.set(\"x-ms-client-request-id\", this.requestId);\n }\n // default\n if (!this.headers.get(\"Content-Type\")) {\n this.headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n // set the request body. request.js automatically sets the Content-Length request header, so we need not set it explicitly\n this.body = options.body;\n if (options.body !== undefined && options.body !== null) {\n // body as a stream special case. set the body as-is and check for some special request headers specific to sending a stream.\n if (options.bodyIsStream) {\n if (!this.headers.get(\"Transfer-Encoding\")) {\n this.headers.set(\"Transfer-Encoding\", \"chunked\");\n }\n if (this.headers.get(\"Content-Type\") !== \"application/octet-stream\") {\n this.headers.set(\"Content-Type\", \"application/octet-stream\");\n }\n }\n else {\n if (options.serializationMapper) {\n this.body = new Serializer(options.mappers).serialize(options.serializationMapper, options.body, \"requestBody\");\n }\n if (!options.disableJsonStringifyOnBody) {\n this.body = JSON.stringify(options.body);\n }\n }\n }\n if (options.spanOptions) {\n this.spanOptions = options.spanOptions;\n }\n if (options.tracingContext) {\n this.tracingContext = options.tracingContext;\n }\n this.abortSignal = options.abortSignal;\n this.onDownloadProgress = options.onDownloadProgress;\n this.onUploadProgress = options.onUploadProgress;\n return this;\n }\n /**\n * Clone this WebResource HTTP request object.\n * @returns The clone of this WebResource HTTP request object.\n */\n clone() {\n const result = new WebResource(this.url, this.method, this.body, this.query, this.headers && this.headers.clone(), this.streamResponseBody, this.withCredentials, this.abortSignal, this.timeout, this.onUploadProgress, this.onDownloadProgress, this.proxySettings, this.keepAlive, this.decompressResponse, this.streamResponseStatusCodes);\n if (this.formData) {\n result.formData = this.formData;\n }\n if (this.operationSpec) {\n result.operationSpec = this.operationSpec;\n }\n if (this.shouldDeserialize) {\n result.shouldDeserialize = this.shouldDeserialize;\n }\n if (this.operationResponseGetter) {\n result.operationResponseGetter = this.operationResponseGetter;\n }\n return result;\n }\n}\n//# sourceMappingURL=webResource.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { HttpHeaders } from \"./httpHeaders\";\nimport { AbortError } from \"@azure/abort-controller\";\nimport { RestError } from \"./restError\";\n/**\n * A HttpClient implementation that uses XMLHttpRequest to send HTTP requests.\n */\nexport class XhrHttpClient {\n sendRequest(request) {\n var _a;\n const xhr = new XMLHttpRequest();\n if (request.proxySettings) {\n throw new Error(\"HTTP proxy is not supported in browser environment\");\n }\n const abortSignal = request.abortSignal;\n if (abortSignal) {\n if (abortSignal.aborted) {\n return Promise.reject(new AbortError(\"The operation was aborted.\"));\n }\n const listener = () => {\n xhr.abort();\n };\n abortSignal.addEventListener(\"abort\", listener);\n xhr.addEventListener(\"readystatechange\", () => {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n abortSignal.removeEventListener(\"abort\", listener);\n }\n });\n }\n addProgressListener(xhr.upload, request.onUploadProgress);\n addProgressListener(xhr, request.onDownloadProgress);\n if (request.formData) {\n const formData = request.formData;\n const requestForm = new FormData();\n const appendFormValue = (key, value) => {\n if (value &&\n Object.prototype.hasOwnProperty.call(value, \"value\") &&\n Object.prototype.hasOwnProperty.call(value, \"options\")) {\n requestForm.append(key, value.value, value.options);\n }\n else {\n requestForm.append(key, value);\n }\n };\n for (const formKey of Object.keys(formData)) {\n const formValue = formData[formKey];\n if (Array.isArray(formValue)) {\n for (let j = 0; j < formValue.length; j++) {\n appendFormValue(formKey, formValue[j]);\n }\n }\n else {\n appendFormValue(formKey, formValue);\n }\n }\n request.body = requestForm;\n request.formData = undefined;\n const contentType = request.headers.get(\"Content-Type\");\n if (contentType && contentType.indexOf(\"multipart/form-data\") !== -1) {\n // browser will automatically apply a suitable content-type header\n request.headers.remove(\"Content-Type\");\n }\n }\n xhr.open(request.method, request.url);\n xhr.timeout = request.timeout;\n xhr.withCredentials = request.withCredentials;\n for (const header of request.headers.headersArray()) {\n xhr.setRequestHeader(header.name, header.value);\n }\n xhr.responseType =\n ((_a = request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.size) || request.streamResponseBody ? \"blob\" : \"text\";\n // tslint:disable-next-line:no-null-keyword\n xhr.send(request.body === undefined ? null : request.body);\n if (xhr.responseType === \"blob\") {\n return new Promise((resolve, reject) => {\n handleBlobResponse(xhr, request, resolve, reject);\n rejectOnTerminalEvent(request, xhr, reject);\n });\n }\n else {\n return new Promise(function (resolve, reject) {\n xhr.addEventListener(\"load\", () => resolve({\n request,\n status: xhr.status,\n headers: parseHeaders(xhr),\n bodyAsText: xhr.responseText,\n }));\n rejectOnTerminalEvent(request, xhr, reject);\n });\n }\n }\n}\nfunction handleBlobResponse(xhr, request, res, rej) {\n xhr.addEventListener(\"readystatechange\", () => {\n var _a;\n // Resolve as soon as headers are loaded\n if (xhr.readyState === XMLHttpRequest.HEADERS_RECEIVED) {\n if (request.streamResponseBody || ((_a = request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(xhr.status))) {\n const blobBody = new Promise((resolve, reject) => {\n xhr.addEventListener(\"load\", () => {\n resolve(xhr.response);\n });\n rejectOnTerminalEvent(request, xhr, reject);\n });\n res({\n request,\n status: xhr.status,\n headers: parseHeaders(xhr),\n blobBody,\n });\n }\n else {\n xhr.addEventListener(\"load\", () => {\n // xhr.response is of Blob type if the request is sent with xhr.responseType === \"blob\"\n // but the status code is not one of the stream response status codes,\n // so treat it as text and convert from Blob to text\n if (xhr.response) {\n // Blob.text() is not supported in IE so using FileReader instead\n const reader = new FileReader();\n reader.onload = function (e) {\n var _a;\n const text = (_a = e.target) === null || _a === void 0 ? void 0 : _a.result;\n res({\n request,\n status: xhr.status,\n headers: parseHeaders(xhr),\n bodyAsText: text,\n });\n };\n reader.onerror = function (_e) {\n rej(reader.error);\n };\n reader.readAsText(xhr.response, \"UTF-8\");\n }\n else {\n res({\n request,\n status: xhr.status,\n headers: parseHeaders(xhr),\n });\n }\n });\n }\n }\n });\n}\nfunction addProgressListener(xhr, listener) {\n if (listener) {\n xhr.addEventListener(\"progress\", (rawEvent) => listener({\n loadedBytes: rawEvent.loaded,\n }));\n }\n}\n// exported locally for testing\nexport function parseHeaders(xhr) {\n const responseHeaders = new HttpHeaders();\n const headerLines = xhr\n .getAllResponseHeaders()\n .trim()\n .split(/[\\r\\n]+/);\n for (const line of headerLines) {\n const index = line.indexOf(\":\");\n const headerName = line.slice(0, index);\n const headerValue = line.slice(index + 2);\n responseHeaders.set(headerName, headerValue);\n }\n return responseHeaders;\n}\nfunction rejectOnTerminalEvent(request, xhr, reject) {\n xhr.addEventListener(\"error\", () => reject(new RestError(`Failed to send request to ${request.url}`, RestError.REQUEST_SEND_ERROR, undefined, request)));\n const abortError = new AbortError(\"The operation was aborted.\");\n xhr.addEventListener(\"abort\", () => reject(abortError));\n xhr.addEventListener(\"timeout\", () => reject(abortError));\n}\n//# sourceMappingURL=xhrHttpClient.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { SpanKind, setSpan, context as otContext, getTracer } from \"./interfaces\";\nimport { trace, INVALID_SPAN_CONTEXT } from \"@opentelemetry/api\";\nexport function isTracingDisabled() {\n var _a;\n if (typeof process === \"undefined\") {\n // not supported in browser for now without polyfills\n return false;\n }\n const azureTracingDisabledValue = (_a = process.env.AZURE_TRACING_DISABLED) === null || _a === void 0 ? void 0 : _a.toLowerCase();\n if (azureTracingDisabledValue === \"false\" || azureTracingDisabledValue === \"0\") {\n return false;\n }\n return Boolean(azureTracingDisabledValue);\n}\n/**\n * Creates a function that can be used to create spans using the global tracer.\n *\n * Usage:\n *\n * ```typescript\n * // once\n * const createSpan = createSpanFunction({ packagePrefix: \"Azure.Data.AppConfiguration\", namespace: \"Microsoft.AppConfiguration\" });\n *\n * // in each operation\n * const span = createSpan(\"deleteConfigurationSetting\", operationOptions);\n * // code...\n * span.end();\n * ```\n *\n * @hidden\n * @param args - allows configuration of the prefix for each span as well as the az.namespace field.\n */\nexport function createSpanFunction(args) {\n return function (operationName, operationOptions) {\n const tracer = getTracer();\n const tracingOptions = (operationOptions === null || operationOptions === void 0 ? void 0 : operationOptions.tracingOptions) || {};\n const spanOptions = Object.assign({ kind: SpanKind.INTERNAL }, tracingOptions.spanOptions);\n const spanName = args.packagePrefix ? `${args.packagePrefix}.${operationName}` : operationName;\n let span;\n if (isTracingDisabled()) {\n span = trace.wrapSpanContext(INVALID_SPAN_CONTEXT);\n }\n else {\n span = tracer.startSpan(spanName, spanOptions, tracingOptions.tracingContext);\n }\n if (args.namespace) {\n span.setAttribute(\"az.namespace\", args.namespace);\n }\n let newSpanOptions = tracingOptions.spanOptions || {};\n if (span.isRecording() && args.namespace) {\n newSpanOptions = Object.assign(Object.assign({}, tracingOptions.spanOptions), { attributes: Object.assign(Object.assign({}, spanOptions.attributes), { \"az.namespace\": args.namespace }) });\n }\n const newTracingOptions = Object.assign(Object.assign({}, tracingOptions), { spanOptions: newSpanOptions, tracingContext: setSpan(tracingOptions.tracingContext || otContext.active(), span) });\n const newOperationOptions = Object.assign(Object.assign({}, operationOptions), { tracingOptions: newTracingOptions });\n return {\n span,\n updatedOptions: newOperationOptions\n };\n };\n}\n//# sourceMappingURL=createSpan.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { context as otContext, trace as otTrace } from \"@opentelemetry/api\";\n/**\n * The kind of span.\n */\nexport var SpanKind;\n(function (SpanKind) {\n /** Default value. Indicates that the span is used internally. */\n SpanKind[SpanKind[\"INTERNAL\"] = 0] = \"INTERNAL\";\n /**\n * Indicates that the span covers server-side handling of an RPC or other\n * remote request.\n */\n SpanKind[SpanKind[\"SERVER\"] = 1] = \"SERVER\";\n /**\n * Indicates that the span covers the client-side wrapper around an RPC or\n * other remote request.\n */\n SpanKind[SpanKind[\"CLIENT\"] = 2] = \"CLIENT\";\n /**\n * Indicates that the span describes producer sending a message to a\n * broker. Unlike client and server, there is no direct critical path latency\n * relationship between producer and consumer spans.\n */\n SpanKind[SpanKind[\"PRODUCER\"] = 3] = \"PRODUCER\";\n /**\n * Indicates that the span describes consumer receiving a message from a\n * broker. Unlike client and server, there is no direct critical path latency\n * relationship between producer and consumer spans.\n */\n SpanKind[SpanKind[\"CONSUMER\"] = 4] = \"CONSUMER\";\n})(SpanKind || (SpanKind = {}));\n/**\n * Return the span if one exists\n *\n * @param context - context to get span from\n */\nexport function getSpan(context) {\n return otTrace.getSpan(context);\n}\n/**\n * Set the span on a context\n *\n * @param context - context to use as parent\n * @param span - span to set active\n */\nexport function setSpan(context, span) {\n return otTrace.setSpan(context, span);\n}\n/**\n * Wrap span context in a NoopSpan and set as span in a new\n * context\n *\n * @param context - context to set active span on\n * @param spanContext - span context to be wrapped\n */\nexport function setSpanContext(context, spanContext) {\n return otTrace.setSpanContext(context, spanContext);\n}\n/**\n * Get the span context of the span if it exists.\n *\n * @param context - context to get values from\n */\nexport function getSpanContext(context) {\n return otTrace.getSpanContext(context);\n}\n/**\n * Returns true of the given {@link SpanContext} is valid.\n * A valid {@link SpanContext} is one which has a valid trace ID and span ID as per the spec.\n *\n * @param context - the {@link SpanContext} to validate.\n *\n * @returns true if the {@link SpanContext} is valid, false otherwise.\n */\nexport function isSpanContextValid(context) {\n return otTrace.isSpanContextValid(context);\n}\nexport function getTracer(name, version) {\n return otTrace.getTracer(name || \"azure/core-tracing\", version);\n}\n/** Entrypoint for context API */\nexport const context = otContext;\n/** SpanStatusCode */\nexport var SpanStatusCode;\n(function (SpanStatusCode) {\n /**\n * The default status.\n */\n SpanStatusCode[SpanStatusCode[\"UNSET\"] = 0] = \"UNSET\";\n /**\n * The operation has been validated by an Application developer or\n * Operator to have completed successfully.\n */\n SpanStatusCode[SpanStatusCode[\"OK\"] = 1] = \"OK\";\n /**\n * The operation contains an error.\n */\n SpanStatusCode[SpanStatusCode[\"ERROR\"] = 2] = \"ERROR\";\n})(SpanStatusCode || (SpanStatusCode = {}));\n//# sourceMappingURL=interfaces.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { ContextAPI } from './api/context';\n/** Entrypoint for context API */\nexport var context = ContextAPI.getInstance();\n//# sourceMappingURL=context-api.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nvar _a, _b, _c, _d;\n/**\n * A constant that indicates whether the environment the code is running is a Web Browser.\n */\n// eslint-disable-next-line @azure/azure-sdk/ts-no-window\nexport const isBrowser = typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\n/**\n * A constant that indicates whether the environment the code is running is a Web Worker.\n */\nexport const isWebWorker = typeof self === \"object\" &&\n typeof (self === null || self === void 0 ? void 0 : self.importScripts) === \"function\" &&\n (((_a = self.constructor) === null || _a === void 0 ? void 0 : _a.name) === \"DedicatedWorkerGlobalScope\" ||\n ((_b = self.constructor) === null || _b === void 0 ? void 0 : _b.name) === \"ServiceWorkerGlobalScope\" ||\n ((_c = self.constructor) === null || _c === void 0 ? void 0 : _c.name) === \"SharedWorkerGlobalScope\");\n/**\n * A constant that indicates whether the environment the code is running is Deno.\n */\nexport const isDeno = typeof Deno !== \"undefined\" &&\n typeof Deno.version !== \"undefined\" &&\n typeof Deno.version.deno !== \"undefined\";\n/**\n * A constant that indicates whether the environment the code is running is Node.JS.\n */\nexport const isNode = typeof process !== \"undefined\" &&\n Boolean(process.version) &&\n Boolean((_d = process.versions) === null || _d === void 0 ? void 0 : _d.node) &&\n // Deno thought it was a good idea to spoof process.versions.node, see https://deno.land/std@0.177.0/node/process.ts?s=versions\n !isDeno;\n/**\n * A constant that indicates whether the environment the code is running is Bun.sh.\n */\nexport const isBun = typeof Bun !== \"undefined\" && typeof Bun.version !== \"undefined\";\n/**\n * A constant that indicates whether the environment the code is running is in React-Native.\n */\n// https://github.com/facebook/react-native/blob/main/packages/react-native/Libraries/Core/setUpNavigator.js\nexport const isReactNative = typeof navigator !== \"undefined\" && (navigator === null || navigator === void 0 ? void 0 : navigator.product) === \"ReactNative\";\n//# sourceMappingURL=checkEnvironment.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createAbortablePromise } from \"./createAbortablePromise\";\nconst StandardAbortMessage = \"The delay was aborted.\";\n/**\n * A wrapper for setTimeout that resolves a promise after timeInMs milliseconds.\n * @param timeInMs - The number of milliseconds to be delayed.\n * @param options - The options for delay - currently abort options\n * @returns Promise that is resolved after timeInMs\n */\nexport function delay(timeInMs, options) {\n let token;\n const { abortSignal, abortErrorMsg } = options !== null && options !== void 0 ? options : {};\n return createAbortablePromise((resolve) => {\n token = setTimeout(resolve, timeInMs);\n }, {\n cleanupBeforeAbort: () => clearTimeout(token),\n abortSignal,\n abortErrorMsg: abortErrorMsg !== null && abortErrorMsg !== void 0 ? abortErrorMsg : StandardAbortMessage,\n });\n}\n//# sourceMappingURL=delay.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { AbortError } from \"@azure/abort-controller\";\n/**\n * Creates an abortable promise.\n * @param buildPromise - A function that takes the resolve and reject functions as parameters.\n * @param options - The options for the abortable promise.\n * @returns A promise that can be aborted.\n */\nexport function createAbortablePromise(buildPromise, options) {\n const { cleanupBeforeAbort, abortSignal, abortErrorMsg } = options !== null && options !== void 0 ? options : {};\n return new Promise((resolve, reject) => {\n function rejectOnAbort() {\n reject(new AbortError(abortErrorMsg !== null && abortErrorMsg !== void 0 ? abortErrorMsg : \"The operation was aborted.\"));\n }\n function removeListeners() {\n abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.removeEventListener(\"abort\", onAbort);\n }\n function onAbort() {\n cleanupBeforeAbort === null || cleanupBeforeAbort === void 0 ? void 0 : cleanupBeforeAbort();\n removeListeners();\n rejectOnAbort();\n }\n if (abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.aborted) {\n return rejectOnAbort();\n }\n try {\n buildPromise((x) => {\n removeListeners();\n resolve(x);\n }, (x) => {\n removeListeners();\n reject(x);\n });\n }\n catch (err) {\n reject(err);\n }\n abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.addEventListener(\"abort\", onAbort);\n });\n}\n//# sourceMappingURL=createAbortablePromise.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { log } from \"./log\";\nconst debugEnvVariable = (typeof process !== \"undefined\" && process.env && process.env.DEBUG) || undefined;\nlet enabledString;\nlet enabledNamespaces = [];\nlet skippedNamespaces = [];\nconst debuggers = [];\nif (debugEnvVariable) {\n enable(debugEnvVariable);\n}\nconst debugObj = Object.assign((namespace) => {\n return createDebugger(namespace);\n}, {\n enable,\n enabled,\n disable,\n log,\n});\nfunction enable(namespaces) {\n enabledString = namespaces;\n enabledNamespaces = [];\n skippedNamespaces = [];\n const wildcard = /\\*/g;\n const namespaceList = namespaces.split(\",\").map((ns) => ns.trim().replace(wildcard, \".*?\"));\n for (const ns of namespaceList) {\n if (ns.startsWith(\"-\")) {\n skippedNamespaces.push(new RegExp(`^${ns.substr(1)}$`));\n }\n else {\n enabledNamespaces.push(new RegExp(`^${ns}$`));\n }\n }\n for (const instance of debuggers) {\n instance.enabled = enabled(instance.namespace);\n }\n}\nfunction enabled(namespace) {\n if (namespace.endsWith(\"*\")) {\n return true;\n }\n for (const skipped of skippedNamespaces) {\n if (skipped.test(namespace)) {\n return false;\n }\n }\n for (const enabledNamespace of enabledNamespaces) {\n if (enabledNamespace.test(namespace)) {\n return true;\n }\n }\n return false;\n}\nfunction disable() {\n const result = enabledString || \"\";\n enable(\"\");\n return result;\n}\nfunction createDebugger(namespace) {\n const newDebugger = Object.assign(debug, {\n enabled: enabled(namespace),\n destroy,\n log: debugObj.log,\n namespace,\n extend,\n });\n function debug(...args) {\n if (!newDebugger.enabled) {\n return;\n }\n if (args.length > 0) {\n args[0] = `${namespace} ${args[0]}`;\n }\n newDebugger.log(...args);\n }\n debuggers.push(newDebugger);\n return newDebugger;\n}\nfunction destroy() {\n const index = debuggers.indexOf(this);\n if (index >= 0) {\n debuggers.splice(index, 1);\n return true;\n }\n return false;\n}\nfunction extend(namespace) {\n const newDebugger = createDebugger(`${this.namespace}:${namespace}`);\n newDebugger.log = this.log;\n return newDebugger;\n}\nexport default debugObj;\n//# sourceMappingURL=debug.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nexport function log(...args) {\n if (args.length > 0) {\n const firstArg = String(args[0]);\n if (firstArg.includes(\":error\")) {\n console.error(...args);\n }\n else if (firstArg.includes(\":warning\")) {\n console.warn(...args);\n }\n else if (firstArg.includes(\":info\")) {\n console.info(...args);\n }\n else if (firstArg.includes(\":verbose\")) {\n console.debug(...args);\n }\n else {\n console.debug(...args);\n }\n }\n}\n//# sourceMappingURL=log.browser.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport debug from \"./debug\";\nconst registeredLoggers = new Set();\nconst logLevelFromEnv = (typeof process !== \"undefined\" && process.env && process.env.AZURE_LOG_LEVEL) || undefined;\nlet azureLogLevel;\n/**\n * The AzureLogger provides a mechanism for overriding where logs are output to.\n * By default, logs are sent to stderr.\n * Override the `log` method to redirect logs to another location.\n */\nexport const AzureLogger = debug(\"azure\");\nAzureLogger.log = (...args) => {\n debug.log(...args);\n};\nconst AZURE_LOG_LEVELS = [\"verbose\", \"info\", \"warning\", \"error\"];\nif (logLevelFromEnv) {\n // avoid calling setLogLevel because we don't want a mis-set environment variable to crash\n if (isAzureLogLevel(logLevelFromEnv)) {\n setLogLevel(logLevelFromEnv);\n }\n else {\n console.error(`AZURE_LOG_LEVEL set to unknown log level '${logLevelFromEnv}'; logging is not enabled. Acceptable values: ${AZURE_LOG_LEVELS.join(\", \")}.`);\n }\n}\n/**\n * Immediately enables logging at the specified log level. If no level is specified, logging is disabled.\n * @param level - The log level to enable for logging.\n * Options from most verbose to least verbose are:\n * - verbose\n * - info\n * - warning\n * - error\n */\nexport function setLogLevel(level) {\n if (level && !isAzureLogLevel(level)) {\n throw new Error(`Unknown log level '${level}'. Acceptable values: ${AZURE_LOG_LEVELS.join(\",\")}`);\n }\n azureLogLevel = level;\n const enabledNamespaces = [];\n for (const logger of registeredLoggers) {\n if (shouldEnable(logger)) {\n enabledNamespaces.push(logger.namespace);\n }\n }\n debug.enable(enabledNamespaces.join(\",\"));\n}\n/**\n * Retrieves the currently specified log level.\n */\nexport function getLogLevel() {\n return azureLogLevel;\n}\nconst levelMap = {\n verbose: 400,\n info: 300,\n warning: 200,\n error: 100,\n};\n/**\n * Creates a logger for use by the Azure SDKs that inherits from `AzureLogger`.\n * @param namespace - The name of the SDK package.\n * @hidden\n */\nexport function createClientLogger(namespace) {\n const clientRootLogger = AzureLogger.extend(namespace);\n patchLogMethod(AzureLogger, clientRootLogger);\n return {\n error: createLogger(clientRootLogger, \"error\"),\n warning: createLogger(clientRootLogger, \"warning\"),\n info: createLogger(clientRootLogger, \"info\"),\n verbose: createLogger(clientRootLogger, \"verbose\"),\n };\n}\nfunction patchLogMethod(parent, child) {\n child.log = (...args) => {\n parent.log(...args);\n };\n}\nfunction createLogger(parent, level) {\n const logger = Object.assign(parent.extend(level), {\n level,\n });\n patchLogMethod(parent, logger);\n if (shouldEnable(logger)) {\n const enabledNamespaces = debug.disable();\n debug.enable(enabledNamespaces + \",\" + logger.namespace);\n }\n registeredLoggers.add(logger);\n return logger;\n}\nfunction shouldEnable(logger) {\n return Boolean(azureLogLevel && levelMap[logger.level] <= levelMap[azureLogLevel]);\n}\nfunction isAzureLogLevel(logLevel) {\n return AZURE_LOG_LEVELS.includes(logLevel);\n}\n//# sourceMappingURL=index.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { generateUuid } from \"@azure/core-http\";\nimport { StorageClientContext } from \"./generated/src/index\";\nimport { SpanStatusCode } from \"@azure/core-tracing\";\nimport { Blob as StorageBlob, Container } from \"./generated/src/operations\";\nimport { ETagNone } from \"./utils/constants\";\nimport { convertTracingToRequestOptionsBase, createSpan } from \"./utils/tracing\";\n/**\n * A client that manages leases for a {@link ContainerClient} or a {@link BlobClient}.\n */\nexport class BlobLeaseClient {\n /**\n * Creates an instance of BlobLeaseClient.\n * @param client - The client to make the lease operation requests.\n * @param leaseId - Initial proposed lease id.\n */\n constructor(client, leaseId) {\n const clientContext = new StorageClientContext(client.url, client.pipeline.toServiceClientOptions());\n this._url = client.url;\n if (client.name === undefined) {\n this._isContainer = true;\n this._containerOrBlobOperation = new Container(clientContext);\n }\n else {\n this._isContainer = false;\n this._containerOrBlobOperation = new StorageBlob(clientContext);\n }\n if (!leaseId) {\n leaseId = generateUuid();\n }\n this._leaseId = leaseId;\n }\n /**\n * Gets the lease Id.\n *\n * @readonly\n */\n get leaseId() {\n return this._leaseId;\n }\n /**\n * Gets the url.\n *\n * @readonly\n */\n get url() {\n return this._url;\n }\n /**\n * Establishes and manages a lock on a container for delete operations, or on a blob\n * for write and delete operations.\n * The lock duration can be 15 to 60 seconds, or can be infinite.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container\n * and\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob\n *\n * @param duration - Must be between 15 to 60 seconds, or infinite (-1)\n * @param options - option to configure lease management operations.\n * @returns Response data for acquire lease operation.\n */\n async acquireLease(duration, options = {}) {\n var _a, _b, _c, _d, _e, _f;\n const { span, updatedOptions } = createSpan(\"BlobLeaseClient-acquireLease\", options);\n if (this._isContainer &&\n ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||\n (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||\n ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {\n throw new RangeError(\"The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.\");\n }\n try {\n return await this._containerOrBlobOperation.acquireLease(Object.assign({ abortSignal: options.abortSignal, duration, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }), proposedLeaseId: this._leaseId }, convertTracingToRequestOptionsBase(updatedOptions)));\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * To change the ID of the lease.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container\n * and\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob\n *\n * @param proposedLeaseId - the proposed new lease Id.\n * @param options - option to configure lease management operations.\n * @returns Response data for change lease operation.\n */\n async changeLease(proposedLeaseId, options = {}) {\n var _a, _b, _c, _d, _e, _f;\n const { span, updatedOptions } = createSpan(\"BlobLeaseClient-changeLease\", options);\n if (this._isContainer &&\n ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||\n (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||\n ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {\n throw new RangeError(\"The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.\");\n }\n try {\n const response = await this._containerOrBlobOperation.changeLease(this._leaseId, proposedLeaseId, Object.assign({ abortSignal: options.abortSignal, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));\n this._leaseId = proposedLeaseId;\n return response;\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * To free the lease if it is no longer needed so that another client may\n * immediately acquire a lease against the container or the blob.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container\n * and\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob\n *\n * @param options - option to configure lease management operations.\n * @returns Response data for release lease operation.\n */\n async releaseLease(options = {}) {\n var _a, _b, _c, _d, _e, _f;\n const { span, updatedOptions } = createSpan(\"BlobLeaseClient-releaseLease\", options);\n if (this._isContainer &&\n ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||\n (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||\n ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {\n throw new RangeError(\"The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.\");\n }\n try {\n return await this._containerOrBlobOperation.releaseLease(this._leaseId, Object.assign({ abortSignal: options.abortSignal, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * To renew the lease.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container\n * and\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob\n *\n * @param options - Optional option to configure lease management operations.\n * @returns Response data for renew lease operation.\n */\n async renewLease(options = {}) {\n var _a, _b, _c, _d, _e, _f;\n const { span, updatedOptions } = createSpan(\"BlobLeaseClient-renewLease\", options);\n if (this._isContainer &&\n ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||\n (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||\n ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {\n throw new RangeError(\"The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.\");\n }\n try {\n return await this._containerOrBlobOperation.renewLease(this._leaseId, Object.assign({ abortSignal: options.abortSignal, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * To end the lease but ensure that another client cannot acquire a new lease\n * until the current lease period has expired.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container\n * and\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-blob\n *\n * @param breakPeriod - Break period\n * @param options - Optional options to configure lease management operations.\n * @returns Response data for break lease operation.\n */\n async breakLease(breakPeriod, options = {}) {\n var _a, _b, _c, _d, _e, _f;\n const { span, updatedOptions } = createSpan(\"BlobLeaseClient-breakLease\", options);\n if (this._isContainer &&\n ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||\n (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||\n ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {\n throw new RangeError(\"The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.\");\n }\n try {\n const operationOptions = Object.assign({ abortSignal: options.abortSignal, breakPeriod, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions));\n return await this._containerOrBlobOperation.breakLease(operationOptions);\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n}\n//# sourceMappingURL=BlobLeaseClient.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * ONLY AVAILABLE IN BROWSER RUNTIME.\n *\n * BlobQueryResponse implements BlobDownloadResponseModel interface, and in browser runtime it will\n * parse avor data returned by blob query.\n */\nexport class BlobQueryResponse {\n /**\n * Creates an instance of BlobQueryResponse.\n *\n * @param originalResponse -\n * @param options -\n */\n constructor(originalResponse, _options = {}) {\n this.originalResponse = originalResponse;\n }\n /**\n * Indicates that the service supports\n * requests for partial file content.\n *\n * @readonly\n */\n get acceptRanges() {\n return this.originalResponse.acceptRanges;\n }\n /**\n * Returns if it was previously specified\n * for the file.\n *\n * @readonly\n */\n get cacheControl() {\n return this.originalResponse.cacheControl;\n }\n /**\n * Returns the value that was specified\n * for the 'x-ms-content-disposition' header and specifies how to process the\n * response.\n *\n * @readonly\n */\n get contentDisposition() {\n return this.originalResponse.contentDisposition;\n }\n /**\n * Returns the value that was specified\n * for the Content-Encoding request header.\n *\n * @readonly\n */\n get contentEncoding() {\n return this.originalResponse.contentEncoding;\n }\n /**\n * Returns the value that was specified\n * for the Content-Language request header.\n *\n * @readonly\n */\n get contentLanguage() {\n return this.originalResponse.contentLanguage;\n }\n /**\n * The current sequence number for a\n * page blob. This header is not returned for block blobs or append blobs.\n *\n * @readonly\n */\n get blobSequenceNumber() {\n return this.originalResponse.blobSequenceNumber;\n }\n /**\n * The blob's type. Possible values include:\n * 'BlockBlob', 'PageBlob', 'AppendBlob'.\n *\n * @readonly\n */\n get blobType() {\n return this.originalResponse.blobType;\n }\n /**\n * The number of bytes present in the\n * response body.\n *\n * @readonly\n */\n get contentLength() {\n return this.originalResponse.contentLength;\n }\n /**\n * If the file has an MD5 hash and the\n * request is to read the full file, this response header is returned so that\n * the client can check for message content integrity. If the request is to\n * read a specified range and the 'x-ms-range-get-content-md5' is set to\n * true, then the request returns an MD5 hash for the range, as long as the\n * range size is less than or equal to 4 MB. If neither of these sets of\n * conditions is true, then no value is returned for the 'Content-MD5'\n * header.\n *\n * @readonly\n */\n get contentMD5() {\n return this.originalResponse.contentMD5;\n }\n /**\n * Indicates the range of bytes returned if\n * the client requested a subset of the file by setting the Range request\n * header.\n *\n * @readonly\n */\n get contentRange() {\n return this.originalResponse.contentRange;\n }\n /**\n * The content type specified for the file.\n * The default content type is 'application/octet-stream'\n *\n * @readonly\n */\n get contentType() {\n return this.originalResponse.contentType;\n }\n /**\n * Conclusion time of the last attempted\n * Copy File operation where this file was the destination file. This value\n * can specify the time of a completed, aborted, or failed copy attempt.\n *\n * @readonly\n */\n get copyCompletedOn() {\n return undefined;\n }\n /**\n * String identifier for the last attempted Copy\n * File operation where this file was the destination file.\n *\n * @readonly\n */\n get copyId() {\n return this.originalResponse.copyId;\n }\n /**\n * Contains the number of bytes copied and\n * the total bytes in the source in the last attempted Copy File operation\n * where this file was the destination file. Can show between 0 and\n * Content-Length bytes copied.\n *\n * @readonly\n */\n get copyProgress() {\n return this.originalResponse.copyProgress;\n }\n /**\n * URL up to 2KB in length that specifies the\n * source file used in the last attempted Copy File operation where this file\n * was the destination file.\n *\n * @readonly\n */\n get copySource() {\n return this.originalResponse.copySource;\n }\n /**\n * State of the copy operation\n * identified by 'x-ms-copy-id'. Possible values include: 'pending',\n * 'success', 'aborted', 'failed'\n *\n * @readonly\n */\n get copyStatus() {\n return this.originalResponse.copyStatus;\n }\n /**\n * Only appears when\n * x-ms-copy-status is failed or pending. Describes cause of fatal or\n * non-fatal copy operation failure.\n *\n * @readonly\n */\n get copyStatusDescription() {\n return this.originalResponse.copyStatusDescription;\n }\n /**\n * When a blob is leased,\n * specifies whether the lease is of infinite or fixed duration. Possible\n * values include: 'infinite', 'fixed'.\n *\n * @readonly\n */\n get leaseDuration() {\n return this.originalResponse.leaseDuration;\n }\n /**\n * Lease state of the blob. Possible\n * values include: 'available', 'leased', 'expired', 'breaking', 'broken'.\n *\n * @readonly\n */\n get leaseState() {\n return this.originalResponse.leaseState;\n }\n /**\n * The current lease status of the\n * blob. Possible values include: 'locked', 'unlocked'.\n *\n * @readonly\n */\n get leaseStatus() {\n return this.originalResponse.leaseStatus;\n }\n /**\n * A UTC date/time value generated by the service that\n * indicates the time at which the response was initiated.\n *\n * @readonly\n */\n get date() {\n return this.originalResponse.date;\n }\n /**\n * The number of committed blocks\n * present in the blob. This header is returned only for append blobs.\n *\n * @readonly\n */\n get blobCommittedBlockCount() {\n return this.originalResponse.blobCommittedBlockCount;\n }\n /**\n * The ETag contains a value that you can use to\n * perform operations conditionally, in quotes.\n *\n * @readonly\n */\n get etag() {\n return this.originalResponse.etag;\n }\n /**\n * The error code.\n *\n * @readonly\n */\n get errorCode() {\n return this.originalResponse.errorCode;\n }\n /**\n * The value of this header is set to\n * true if the file data and application metadata are completely encrypted\n * using the specified algorithm. Otherwise, the value is set to false (when\n * the file is unencrypted, or if only parts of the file/application metadata\n * are encrypted).\n *\n * @readonly\n */\n get isServerEncrypted() {\n return this.originalResponse.isServerEncrypted;\n }\n /**\n * If the blob has a MD5 hash, and if\n * request contains range header (Range or x-ms-range), this response header\n * is returned with the value of the whole blob's MD5 value. This value may\n * or may not be equal to the value returned in Content-MD5 header, with the\n * latter calculated from the requested range.\n *\n * @readonly\n */\n get blobContentMD5() {\n return this.originalResponse.blobContentMD5;\n }\n /**\n * Returns the date and time the file was last\n * modified. Any operation that modifies the file or its properties updates\n * the last modified time.\n *\n * @readonly\n */\n get lastModified() {\n return this.originalResponse.lastModified;\n }\n /**\n * A name-value pair\n * to associate with a file storage object.\n *\n * @readonly\n */\n get metadata() {\n return this.originalResponse.metadata;\n }\n /**\n * This header uniquely identifies the request\n * that was made and can be used for troubleshooting the request.\n *\n * @readonly\n */\n get requestId() {\n return this.originalResponse.requestId;\n }\n /**\n * If a client request id header is sent in the request, this header will be present in the\n * response with the same value.\n *\n * @readonly\n */\n get clientRequestId() {\n return this.originalResponse.clientRequestId;\n }\n /**\n * Indicates the version of the File service used\n * to execute the request.\n *\n * @readonly\n */\n get version() {\n return this.originalResponse.version;\n }\n /**\n * The SHA-256 hash of the encryption key used to encrypt the blob. This value is only returned\n * when the blob was encrypted with a customer-provided key.\n *\n * @readonly\n */\n get encryptionKeySha256() {\n return this.originalResponse.encryptionKeySha256;\n }\n /**\n * If the request is to read a specified range and the x-ms-range-get-content-crc64 is set to\n * true, then the request returns a crc64 for the range, as long as the range size is less than\n * or equal to 4 MB. If both x-ms-range-get-content-crc64 & x-ms-range-get-content-md5 is\n * specified in the same request, it will fail with 400(Bad Request)\n */\n get contentCrc64() {\n return this.originalResponse.contentCrc64;\n }\n /**\n * The response body as a browser Blob.\n * Always undefined in node.js.\n *\n * @readonly\n */\n get blobBody() {\n throw Error(`Quick query in browser is not supported yet.`);\n }\n /**\n * The response body as a node.js Readable stream.\n * Always undefined in the browser.\n *\n * @readonly\n */\n get readableStreamBody() {\n return undefined;\n }\n /**\n * The HTTP response.\n */\n get _response() {\n return this.originalResponse._response;\n }\n}\n//# sourceMappingURL=BlobQueryResponse.browser.js.map","/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nimport * as coreHttp from \"@azure/core-http\";\nimport * as Mappers from \"../models/mappers\";\nimport * as Parameters from \"../models/parameters\";\n/** Class representing a AppendBlob. */\nexport class AppendBlob {\n /**\n * Initialize a new instance of the class AppendBlob class.\n * @param client Reference to the service client\n */\n constructor(client) {\n this.client = client;\n }\n /**\n * The Create Append Blob operation creates a new append blob.\n * @param contentLength The length of the request.\n * @param options The options parameters.\n */\n create(contentLength, options) {\n const operationArguments = {\n contentLength,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, createOperationSpec);\n }\n /**\n * The Append Block operation commits a new block of data to the end of an existing append blob. The\n * Append Block operation is permitted only if the blob was created with x-ms-blob-type set to\n * AppendBlob. Append Block is supported only on version 2015-02-21 version or later.\n * @param contentLength The length of the request.\n * @param body Initial data\n * @param options The options parameters.\n */\n appendBlock(contentLength, body, options) {\n const operationArguments = {\n contentLength,\n body,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, appendBlockOperationSpec);\n }\n /**\n * The Append Block operation commits a new block of data to the end of an existing append blob where\n * the contents are read from a source url. The Append Block operation is permitted only if the blob\n * was created with x-ms-blob-type set to AppendBlob. Append Block is supported only on version\n * 2015-02-21 version or later.\n * @param sourceUrl Specify a URL to the copy source.\n * @param contentLength The length of the request.\n * @param options The options parameters.\n */\n appendBlockFromUrl(sourceUrl, contentLength, options) {\n const operationArguments = {\n sourceUrl,\n contentLength,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, appendBlockFromUrlOperationSpec);\n }\n /**\n * The Seal operation seals the Append Blob to make it read-only. Seal is supported only on version\n * 2019-12-12 version or later.\n * @param options The options parameters.\n */\n seal(options) {\n const operationArguments = {\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, sealOperationSpec);\n }\n}\n// Operation Specifications\nconst xmlSerializer = new coreHttp.Serializer(Mappers, /* isXml */ true);\nconst serializer = new coreHttp.Serializer(Mappers, /* isXml */ false);\nconst createOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 201: {\n headersMapper: Mappers.AppendBlobCreateHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.AppendBlobCreateExceptionHeaders\n }\n },\n queryParameters: [Parameters.timeoutInSeconds],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.contentLength,\n Parameters.metadata,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.encryptionKey,\n Parameters.encryptionKeySha256,\n Parameters.encryptionAlgorithm,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n Parameters.blobCacheControl,\n Parameters.blobContentType,\n Parameters.blobContentMD5,\n Parameters.blobContentEncoding,\n Parameters.blobContentLanguage,\n Parameters.blobContentDisposition,\n Parameters.immutabilityPolicyExpiry,\n Parameters.immutabilityPolicyMode,\n Parameters.encryptionScope,\n Parameters.blobTagsString,\n Parameters.legalHold1,\n Parameters.blobType1\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst appendBlockOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 201: {\n headersMapper: Mappers.AppendBlobAppendBlockHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.AppendBlobAppendBlockExceptionHeaders\n }\n },\n requestBody: Parameters.body1,\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp22],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.contentLength,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.encryptionKey,\n Parameters.encryptionKeySha256,\n Parameters.encryptionAlgorithm,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n Parameters.encryptionScope,\n Parameters.transactionalContentMD5,\n Parameters.transactionalContentCrc64,\n Parameters.contentType1,\n Parameters.accept2,\n Parameters.maxSize,\n Parameters.appendPosition\n ],\n mediaType: \"binary\",\n serializer\n};\nconst appendBlockFromUrlOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 201: {\n headersMapper: Mappers.AppendBlobAppendBlockFromUrlHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.AppendBlobAppendBlockFromUrlExceptionHeaders\n }\n },\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp22],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.contentLength,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.encryptionKey,\n Parameters.encryptionKeySha256,\n Parameters.encryptionAlgorithm,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n Parameters.encryptionScope,\n Parameters.sourceIfModifiedSince,\n Parameters.sourceIfUnmodifiedSince,\n Parameters.sourceIfMatch,\n Parameters.sourceIfNoneMatch,\n Parameters.sourceContentMD5,\n Parameters.copySourceAuthorization,\n Parameters.transactionalContentMD5,\n Parameters.sourceUrl,\n Parameters.sourceContentCrc64,\n Parameters.maxSize,\n Parameters.appendPosition,\n Parameters.sourceRange1\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst sealOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n headersMapper: Mappers.AppendBlobSealHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.AppendBlobSealExceptionHeaders\n }\n },\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp23],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.appendPosition\n ],\n isXML: true,\n serializer: xmlSerializer\n};\n//# sourceMappingURL=appendBlob.js.map","/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nimport * as coreHttp from \"@azure/core-http\";\nimport * as Mappers from \"../models/mappers\";\nimport * as Parameters from \"../models/parameters\";\n/** Class representing a BlockBlob. */\nexport class BlockBlob {\n /**\n * Initialize a new instance of the class BlockBlob class.\n * @param client Reference to the service client\n */\n constructor(client) {\n this.client = client;\n }\n /**\n * The Upload Block Blob operation updates the content of an existing block blob. Updating an existing\n * block blob overwrites any existing metadata on the blob. Partial updates are not supported with Put\n * Blob; the content of the existing blob is overwritten with the content of the new blob. To perform a\n * partial update of the content of a block blob, use the Put Block List operation.\n * @param contentLength The length of the request.\n * @param body Initial data\n * @param options The options parameters.\n */\n upload(contentLength, body, options) {\n const operationArguments = {\n contentLength,\n body,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, uploadOperationSpec);\n }\n /**\n * The Put Blob from URL operation creates a new Block Blob where the contents of the blob are read\n * from a given URL. This API is supported beginning with the 2020-04-08 version. Partial updates are\n * not supported with Put Blob from URL; the content of an existing blob is overwritten with the\n * content of the new blob. To perform partial updates to a block blob’s contents using a source URL,\n * use the Put Block from URL API in conjunction with Put Block List.\n * @param contentLength The length of the request.\n * @param copySource Specifies the name of the source page blob snapshot. This value is a URL of up to\n * 2 KB in length that specifies a page blob snapshot. The value should be URL-encoded as it would\n * appear in a request URI. The source blob must either be public or must be authenticated via a shared\n * access signature.\n * @param options The options parameters.\n */\n putBlobFromUrl(contentLength, copySource, options) {\n const operationArguments = {\n contentLength,\n copySource,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, putBlobFromUrlOperationSpec);\n }\n /**\n * The Stage Block operation creates a new block to be committed as part of a blob\n * @param blockId A valid Base64 string value that identifies the block. Prior to encoding, the string\n * must be less than or equal to 64 bytes in size. For a given blob, the length of the value specified\n * for the blockid parameter must be the same size for each block.\n * @param contentLength The length of the request.\n * @param body Initial data\n * @param options The options parameters.\n */\n stageBlock(blockId, contentLength, body, options) {\n const operationArguments = {\n blockId,\n contentLength,\n body,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, stageBlockOperationSpec);\n }\n /**\n * The Stage Block operation creates a new block to be committed as part of a blob where the contents\n * are read from a URL.\n * @param blockId A valid Base64 string value that identifies the block. Prior to encoding, the string\n * must be less than or equal to 64 bytes in size. For a given blob, the length of the value specified\n * for the blockid parameter must be the same size for each block.\n * @param contentLength The length of the request.\n * @param sourceUrl Specify a URL to the copy source.\n * @param options The options parameters.\n */\n stageBlockFromURL(blockId, contentLength, sourceUrl, options) {\n const operationArguments = {\n blockId,\n contentLength,\n sourceUrl,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, stageBlockFromURLOperationSpec);\n }\n /**\n * The Commit Block List operation writes a blob by specifying the list of block IDs that make up the\n * blob. In order to be written as part of a blob, a block must have been successfully written to the\n * server in a prior Put Block operation. You can call Put Block List to update a blob by uploading\n * only those blocks that have changed, then committing the new and existing blocks together. You can\n * do this by specifying whether to commit a block from the committed block list or from the\n * uncommitted block list, or to commit the most recently uploaded version of the block, whichever list\n * it may belong to.\n * @param blocks Blob Blocks.\n * @param options The options parameters.\n */\n commitBlockList(blocks, options) {\n const operationArguments = {\n blocks,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, commitBlockListOperationSpec);\n }\n /**\n * The Get Block List operation retrieves the list of blocks that have been uploaded as part of a block\n * blob\n * @param listType Specifies whether to return the list of committed blocks, the list of uncommitted\n * blocks, or both lists together.\n * @param options The options parameters.\n */\n getBlockList(listType, options) {\n const operationArguments = {\n listType,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, getBlockListOperationSpec);\n }\n}\n// Operation Specifications\nconst xmlSerializer = new coreHttp.Serializer(Mappers, /* isXml */ true);\nconst serializer = new coreHttp.Serializer(Mappers, /* isXml */ false);\nconst uploadOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 201: {\n headersMapper: Mappers.BlockBlobUploadHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlockBlobUploadExceptionHeaders\n }\n },\n requestBody: Parameters.body1,\n queryParameters: [Parameters.timeoutInSeconds],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.contentLength,\n Parameters.metadata,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.encryptionKey,\n Parameters.encryptionKeySha256,\n Parameters.encryptionAlgorithm,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n Parameters.blobCacheControl,\n Parameters.blobContentType,\n Parameters.blobContentMD5,\n Parameters.blobContentEncoding,\n Parameters.blobContentLanguage,\n Parameters.blobContentDisposition,\n Parameters.immutabilityPolicyExpiry,\n Parameters.immutabilityPolicyMode,\n Parameters.encryptionScope,\n Parameters.tier,\n Parameters.blobTagsString,\n Parameters.legalHold1,\n Parameters.transactionalContentMD5,\n Parameters.transactionalContentCrc64,\n Parameters.contentType1,\n Parameters.accept2,\n Parameters.blobType2\n ],\n mediaType: \"binary\",\n serializer\n};\nconst putBlobFromUrlOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 201: {\n headersMapper: Mappers.BlockBlobPutBlobFromUrlHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlockBlobPutBlobFromUrlExceptionHeaders\n }\n },\n queryParameters: [Parameters.timeoutInSeconds],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.contentLength,\n Parameters.metadata,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.encryptionKey,\n Parameters.encryptionKeySha256,\n Parameters.encryptionAlgorithm,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n Parameters.blobCacheControl,\n Parameters.blobContentType,\n Parameters.blobContentMD5,\n Parameters.blobContentEncoding,\n Parameters.blobContentLanguage,\n Parameters.blobContentDisposition,\n Parameters.encryptionScope,\n Parameters.tier,\n Parameters.sourceIfModifiedSince,\n Parameters.sourceIfUnmodifiedSince,\n Parameters.sourceIfMatch,\n Parameters.sourceIfNoneMatch,\n Parameters.sourceIfTags,\n Parameters.copySource,\n Parameters.blobTagsString,\n Parameters.sourceContentMD5,\n Parameters.copySourceAuthorization,\n Parameters.copySourceTags,\n Parameters.transactionalContentMD5,\n Parameters.blobType2,\n Parameters.copySourceBlobProperties\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst stageBlockOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 201: {\n headersMapper: Mappers.BlockBlobStageBlockHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlockBlobStageBlockExceptionHeaders\n }\n },\n requestBody: Parameters.body1,\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.comp24,\n Parameters.blockId\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.contentLength,\n Parameters.leaseId,\n Parameters.encryptionKey,\n Parameters.encryptionKeySha256,\n Parameters.encryptionAlgorithm,\n Parameters.encryptionScope,\n Parameters.transactionalContentMD5,\n Parameters.transactionalContentCrc64,\n Parameters.contentType1,\n Parameters.accept2\n ],\n mediaType: \"binary\",\n serializer\n};\nconst stageBlockFromURLOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 201: {\n headersMapper: Mappers.BlockBlobStageBlockFromURLHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlockBlobStageBlockFromURLExceptionHeaders\n }\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.comp24,\n Parameters.blockId\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.contentLength,\n Parameters.leaseId,\n Parameters.encryptionKey,\n Parameters.encryptionKeySha256,\n Parameters.encryptionAlgorithm,\n Parameters.encryptionScope,\n Parameters.sourceIfModifiedSince,\n Parameters.sourceIfUnmodifiedSince,\n Parameters.sourceIfMatch,\n Parameters.sourceIfNoneMatch,\n Parameters.sourceContentMD5,\n Parameters.copySourceAuthorization,\n Parameters.sourceUrl,\n Parameters.sourceContentCrc64,\n Parameters.sourceRange1\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst commitBlockListOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 201: {\n headersMapper: Mappers.BlockBlobCommitBlockListHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlockBlobCommitBlockListExceptionHeaders\n }\n },\n requestBody: Parameters.blocks,\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp25],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.contentType,\n Parameters.accept,\n Parameters.version,\n Parameters.requestId,\n Parameters.metadata,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.encryptionKey,\n Parameters.encryptionKeySha256,\n Parameters.encryptionAlgorithm,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n Parameters.blobCacheControl,\n Parameters.blobContentType,\n Parameters.blobContentMD5,\n Parameters.blobContentEncoding,\n Parameters.blobContentLanguage,\n Parameters.blobContentDisposition,\n Parameters.immutabilityPolicyExpiry,\n Parameters.immutabilityPolicyMode,\n Parameters.encryptionScope,\n Parameters.tier,\n Parameters.blobTagsString,\n Parameters.legalHold1,\n Parameters.transactionalContentMD5,\n Parameters.transactionalContentCrc64\n ],\n isXML: true,\n contentType: \"application/xml; charset=utf-8\",\n mediaType: \"xml\",\n serializer: xmlSerializer\n};\nconst getBlockListOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.BlockList,\n headersMapper: Mappers.BlockBlobGetBlockListHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlockBlobGetBlockListExceptionHeaders\n }\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.snapshot,\n Parameters.comp25,\n Parameters.listType\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.leaseId,\n Parameters.ifTags\n ],\n isXML: true,\n serializer: xmlSerializer\n};\n//# sourceMappingURL=blockBlob.js.map","/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nimport * as coreHttp from \"@azure/core-http\";\nimport * as Mappers from \"../models/mappers\";\nimport * as Parameters from \"../models/parameters\";\n/** Class representing a PageBlob. */\nexport class PageBlob {\n /**\n * Initialize a new instance of the class PageBlob class.\n * @param client Reference to the service client\n */\n constructor(client) {\n this.client = client;\n }\n /**\n * The Create operation creates a new page blob.\n * @param contentLength The length of the request.\n * @param blobContentLength This header specifies the maximum size for the page blob, up to 1 TB. The\n * page blob size must be aligned to a 512-byte boundary.\n * @param options The options parameters.\n */\n create(contentLength, blobContentLength, options) {\n const operationArguments = {\n contentLength,\n blobContentLength,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, createOperationSpec);\n }\n /**\n * The Upload Pages operation writes a range of pages to a page blob\n * @param contentLength The length of the request.\n * @param body Initial data\n * @param options The options parameters.\n */\n uploadPages(contentLength, body, options) {\n const operationArguments = {\n contentLength,\n body,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, uploadPagesOperationSpec);\n }\n /**\n * The Clear Pages operation clears a set of pages from a page blob\n * @param contentLength The length of the request.\n * @param options The options parameters.\n */\n clearPages(contentLength, options) {\n const operationArguments = {\n contentLength,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, clearPagesOperationSpec);\n }\n /**\n * The Upload Pages operation writes a range of pages to a page blob where the contents are read from a\n * URL\n * @param sourceUrl Specify a URL to the copy source.\n * @param sourceRange Bytes of source data in the specified range. The length of this range should\n * match the ContentLength header and x-ms-range/Range destination range header.\n * @param contentLength The length of the request.\n * @param range The range of bytes to which the source range would be written. The range should be 512\n * aligned and range-end is required.\n * @param options The options parameters.\n */\n uploadPagesFromURL(sourceUrl, sourceRange, contentLength, range, options) {\n const operationArguments = {\n sourceUrl,\n sourceRange,\n contentLength,\n range,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, uploadPagesFromURLOperationSpec);\n }\n /**\n * The Get Page Ranges operation returns the list of valid page ranges for a page blob or snapshot of a\n * page blob\n * @param options The options parameters.\n */\n getPageRanges(options) {\n const operationArguments = {\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, getPageRangesOperationSpec);\n }\n /**\n * The Get Page Ranges Diff operation returns the list of valid page ranges for a page blob that were\n * changed between target blob and previous snapshot.\n * @param options The options parameters.\n */\n getPageRangesDiff(options) {\n const operationArguments = {\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, getPageRangesDiffOperationSpec);\n }\n /**\n * Resize the Blob\n * @param blobContentLength This header specifies the maximum size for the page blob, up to 1 TB. The\n * page blob size must be aligned to a 512-byte boundary.\n * @param options The options parameters.\n */\n resize(blobContentLength, options) {\n const operationArguments = {\n blobContentLength,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, resizeOperationSpec);\n }\n /**\n * Update the sequence number of the blob\n * @param sequenceNumberAction Required if the x-ms-blob-sequence-number header is set for the request.\n * This property applies to page blobs only. This property indicates how the service should modify the\n * blob's sequence number\n * @param options The options parameters.\n */\n updateSequenceNumber(sequenceNumberAction, options) {\n const operationArguments = {\n sequenceNumberAction,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, updateSequenceNumberOperationSpec);\n }\n /**\n * The Copy Incremental operation copies a snapshot of the source page blob to a destination page blob.\n * The snapshot is copied such that only the differential changes between the previously copied\n * snapshot are transferred to the destination. The copied snapshots are complete copies of the\n * original snapshot and can be read or copied from as usual. This API is supported since REST version\n * 2016-05-31.\n * @param copySource Specifies the name of the source page blob snapshot. This value is a URL of up to\n * 2 KB in length that specifies a page blob snapshot. The value should be URL-encoded as it would\n * appear in a request URI. The source blob must either be public or must be authenticated via a shared\n * access signature.\n * @param options The options parameters.\n */\n copyIncremental(copySource, options) {\n const operationArguments = {\n copySource,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, copyIncrementalOperationSpec);\n }\n}\n// Operation Specifications\nconst xmlSerializer = new coreHttp.Serializer(Mappers, /* isXml */ true);\nconst serializer = new coreHttp.Serializer(Mappers, /* isXml */ false);\nconst createOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 201: {\n headersMapper: Mappers.PageBlobCreateHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.PageBlobCreateExceptionHeaders\n }\n },\n queryParameters: [Parameters.timeoutInSeconds],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.contentLength,\n Parameters.metadata,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.encryptionKey,\n Parameters.encryptionKeySha256,\n Parameters.encryptionAlgorithm,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n Parameters.blobCacheControl,\n Parameters.blobContentType,\n Parameters.blobContentMD5,\n Parameters.blobContentEncoding,\n Parameters.blobContentLanguage,\n Parameters.blobContentDisposition,\n Parameters.immutabilityPolicyExpiry,\n Parameters.immutabilityPolicyMode,\n Parameters.encryptionScope,\n Parameters.tier,\n Parameters.blobTagsString,\n Parameters.legalHold1,\n Parameters.blobType,\n Parameters.blobContentLength,\n Parameters.blobSequenceNumber\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst uploadPagesOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 201: {\n headersMapper: Mappers.PageBlobUploadPagesHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.PageBlobUploadPagesExceptionHeaders\n }\n },\n requestBody: Parameters.body1,\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp19],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.contentLength,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.range,\n Parameters.encryptionKey,\n Parameters.encryptionKeySha256,\n Parameters.encryptionAlgorithm,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n Parameters.encryptionScope,\n Parameters.transactionalContentMD5,\n Parameters.transactionalContentCrc64,\n Parameters.contentType1,\n Parameters.accept2,\n Parameters.pageWrite,\n Parameters.ifSequenceNumberLessThanOrEqualTo,\n Parameters.ifSequenceNumberLessThan,\n Parameters.ifSequenceNumberEqualTo\n ],\n mediaType: \"binary\",\n serializer\n};\nconst clearPagesOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 201: {\n headersMapper: Mappers.PageBlobClearPagesHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.PageBlobClearPagesExceptionHeaders\n }\n },\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp19],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.contentLength,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.range,\n Parameters.encryptionKey,\n Parameters.encryptionKeySha256,\n Parameters.encryptionAlgorithm,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n Parameters.encryptionScope,\n Parameters.ifSequenceNumberLessThanOrEqualTo,\n Parameters.ifSequenceNumberLessThan,\n Parameters.ifSequenceNumberEqualTo,\n Parameters.pageWrite1\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst uploadPagesFromURLOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 201: {\n headersMapper: Mappers.PageBlobUploadPagesFromURLHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.PageBlobUploadPagesFromURLExceptionHeaders\n }\n },\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp19],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.contentLength,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.encryptionKey,\n Parameters.encryptionKeySha256,\n Parameters.encryptionAlgorithm,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n Parameters.encryptionScope,\n Parameters.sourceIfModifiedSince,\n Parameters.sourceIfUnmodifiedSince,\n Parameters.sourceIfMatch,\n Parameters.sourceIfNoneMatch,\n Parameters.sourceContentMD5,\n Parameters.copySourceAuthorization,\n Parameters.pageWrite,\n Parameters.ifSequenceNumberLessThanOrEqualTo,\n Parameters.ifSequenceNumberLessThan,\n Parameters.ifSequenceNumberEqualTo,\n Parameters.sourceUrl,\n Parameters.sourceRange,\n Parameters.sourceContentCrc64,\n Parameters.range1\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst getPageRangesOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.PageList,\n headersMapper: Mappers.PageBlobGetPageRangesHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.PageBlobGetPageRangesExceptionHeaders\n }\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.marker,\n Parameters.maxPageSize,\n Parameters.snapshot,\n Parameters.comp20\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.range,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst getPageRangesDiffOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.PageList,\n headersMapper: Mappers.PageBlobGetPageRangesDiffHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.PageBlobGetPageRangesDiffExceptionHeaders\n }\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.marker,\n Parameters.maxPageSize,\n Parameters.snapshot,\n Parameters.comp20,\n Parameters.prevsnapshot\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.range,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n Parameters.prevSnapshotUrl\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst resizeOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n headersMapper: Mappers.PageBlobResizeHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.PageBlobResizeExceptionHeaders\n }\n },\n queryParameters: [Parameters.comp, Parameters.timeoutInSeconds],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.encryptionKey,\n Parameters.encryptionKeySha256,\n Parameters.encryptionAlgorithm,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n Parameters.encryptionScope,\n Parameters.blobContentLength\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst updateSequenceNumberOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n headersMapper: Mappers.PageBlobUpdateSequenceNumberHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.PageBlobUpdateSequenceNumberExceptionHeaders\n }\n },\n queryParameters: [Parameters.comp, Parameters.timeoutInSeconds],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n Parameters.blobSequenceNumber,\n Parameters.sequenceNumberAction\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst copyIncrementalOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 202: {\n headersMapper: Mappers.PageBlobCopyIncrementalHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.PageBlobCopyIncrementalExceptionHeaders\n }\n },\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp21],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n Parameters.copySource\n ],\n isXML: true,\n serializer: xmlSerializer\n};\n//# sourceMappingURL=pageBlob.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Function that converts PageRange and ClearRange to a common Range object.\n * PageRange and ClearRange have start and end while Range offset and count\n * this function normalizes to Range.\n * @param response - Model PageBlob Range response\n */\nexport function rangeResponseFromModel(response) {\n const pageRange = (response._response.parsedBody.pageRange || []).map((x) => ({\n offset: x.start,\n count: x.end - x.start,\n }));\n const clearRange = (response._response.parsedBody.clearRange || []).map((x) => ({\n offset: x.start,\n count: x.end - x.start,\n }));\n return Object.assign(Object.assign({}, response), { pageRange,\n clearRange, _response: Object.assign(Object.assign({}, response._response), { parsedBody: {\n pageRange,\n clearRange,\n } }) });\n}\n//# sourceMappingURL=PageBlobRangeResponse.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * When a poller is manually stopped through the `stopPolling` method,\n * the poller will be rejected with an instance of the PollerStoppedError.\n */\nexport class PollerStoppedError extends Error {\n constructor(message) {\n super(message);\n this.name = \"PollerStoppedError\";\n Object.setPrototypeOf(this, PollerStoppedError.prototype);\n }\n}\n/**\n * When the operation is cancelled, the poller will be rejected with an instance\n * of the PollerCancelledError.\n */\nexport class PollerCancelledError extends Error {\n constructor(message) {\n super(message);\n this.name = \"PollerCancelledError\";\n Object.setPrototypeOf(this, PollerCancelledError.prototype);\n }\n}\n/**\n * A class that represents the definition of a program that polls through consecutive requests\n * until it reaches a state of completion.\n *\n * A poller can be executed manually, by polling request by request by calling to the `poll()` method repeatedly, until its operation is completed.\n * It also provides a way to wait until the operation completes, by calling `pollUntilDone()` and waiting until the operation finishes.\n * Pollers can also request the cancellation of the ongoing process to whom is providing the underlying long running operation.\n *\n * ```ts\n * const poller = new MyPoller();\n *\n * // Polling just once:\n * await poller.poll();\n *\n * // We can try to cancel the request here, by calling:\n * //\n * // await poller.cancelOperation();\n * //\n *\n * // Getting the final result:\n * const result = await poller.pollUntilDone();\n * ```\n *\n * The Poller is defined by two types, a type representing the state of the poller, which\n * must include a basic set of properties from `PollOperationState`,\n * and a return type defined by `TResult`, which can be anything.\n *\n * The Poller class implements the `PollerLike` interface, which allows poller implementations to avoid having\n * to export the Poller's class directly, and instead only export the already instantiated poller with the PollerLike type.\n *\n * ```ts\n * class Client {\n * public async makePoller: PollerLike {\n * const poller = new MyPoller({});\n * // It might be preferred to return the poller after the first request is made,\n * // so that some information can be obtained right away.\n * await poller.poll();\n * return poller;\n * }\n * }\n *\n * const poller: PollerLike = myClient.makePoller();\n * ```\n *\n * A poller can be created through its constructor, then it can be polled until it's completed.\n * At any point in time, the state of the poller can be obtained without delay through the getOperationState method.\n * At any point in time, the intermediate forms of the result type can be requested without delay.\n * Once the underlying operation is marked as completed, the poller will stop and the final value will be returned.\n *\n * ```ts\n * const poller = myClient.makePoller();\n * const state: MyOperationState = poller.getOperationState();\n *\n * // The intermediate result can be obtained at any time.\n * const result: MyResult | undefined = poller.getResult();\n *\n * // The final result can only be obtained after the poller finishes.\n * const result: MyResult = await poller.pollUntilDone();\n * ```\n *\n */\n// eslint-disable-next-line no-use-before-define\nexport class Poller {\n /**\n * A poller needs to be initialized by passing in at least the basic properties of the `PollOperation`.\n *\n * When writing an implementation of a Poller, this implementation needs to deal with the initialization\n * of any custom state beyond the basic definition of the poller. The basic poller assumes that the poller's\n * operation has already been defined, at least its basic properties. The code below shows how to approach\n * the definition of the constructor of a new custom poller.\n *\n * ```ts\n * export class MyPoller extends Poller {\n * constructor({\n * // Anything you might need outside of the basics\n * }) {\n * let state: MyOperationState = {\n * privateProperty: private,\n * publicProperty: public,\n * };\n *\n * const operation = {\n * state,\n * update,\n * cancel,\n * toString\n * }\n *\n * // Sending the operation to the parent's constructor.\n * super(operation);\n *\n * // You can assign more local properties here.\n * }\n * }\n * ```\n *\n * Inside of this constructor, a new promise is created. This will be used to\n * tell the user when the poller finishes (see `pollUntilDone()`). The promise's\n * resolve and reject methods are also used internally to control when to resolve\n * or reject anyone waiting for the poller to finish.\n *\n * The constructor of a custom implementation of a poller is where any serialized version of\n * a previous poller's operation should be deserialized into the operation sent to the\n * base constructor. For example:\n *\n * ```ts\n * export class MyPoller extends Poller {\n * constructor(\n * baseOperation: string | undefined\n * ) {\n * let state: MyOperationState = {};\n * if (baseOperation) {\n * state = {\n * ...JSON.parse(baseOperation).state,\n * ...state\n * };\n * }\n * const operation = {\n * state,\n * // ...\n * }\n * super(operation);\n * }\n * }\n * ```\n *\n * @param operation - Must contain the basic properties of `PollOperation`.\n */\n constructor(operation) {\n /** controls whether to throw an error if the operation failed or was canceled. */\n this.resolveOnUnsuccessful = false;\n this.stopped = true;\n this.pollProgressCallbacks = [];\n this.operation = operation;\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n // This prevents the UnhandledPromiseRejectionWarning in node.js from being thrown.\n // The above warning would get thrown if `poller.poll` is called, it returns an error,\n // and pullUntilDone did not have a .catch or await try/catch on it's return value.\n this.promise.catch(() => {\n /* intentionally blank */\n });\n }\n /**\n * Starts a loop that will break only if the poller is done\n * or if the poller is stopped.\n */\n async startPolling(pollOptions = {}) {\n if (this.stopped) {\n this.stopped = false;\n }\n while (!this.isStopped() && !this.isDone()) {\n await this.poll(pollOptions);\n await this.delay();\n }\n }\n /**\n * pollOnce does one polling, by calling to the update method of the underlying\n * poll operation to make any relevant change effective.\n *\n * It only optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n *\n * @param options - Optional properties passed to the operation's update method.\n */\n async pollOnce(options = {}) {\n if (!this.isDone()) {\n this.operation = await this.operation.update({\n abortSignal: options.abortSignal,\n fireProgress: this.fireProgress.bind(this),\n });\n }\n this.processUpdatedState();\n }\n /**\n * fireProgress calls the functions passed in via onProgress the method of the poller.\n *\n * It loops over all of the callbacks received from onProgress, and executes them, sending them\n * the current operation state.\n *\n * @param state - The current operation state.\n */\n fireProgress(state) {\n for (const callback of this.pollProgressCallbacks) {\n callback(state);\n }\n }\n /**\n * Invokes the underlying operation's cancel method.\n */\n async cancelOnce(options = {}) {\n this.operation = await this.operation.cancel(options);\n }\n /**\n * Returns a promise that will resolve once a single polling request finishes.\n * It does this by calling the update method of the Poller's operation.\n *\n * It only optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n *\n * @param options - Optional properties passed to the operation's update method.\n */\n poll(options = {}) {\n if (!this.pollOncePromise) {\n this.pollOncePromise = this.pollOnce(options);\n const clearPollOncePromise = () => {\n this.pollOncePromise = undefined;\n };\n this.pollOncePromise.then(clearPollOncePromise, clearPollOncePromise).catch(this.reject);\n }\n return this.pollOncePromise;\n }\n processUpdatedState() {\n if (this.operation.state.error) {\n this.stopped = true;\n if (!this.resolveOnUnsuccessful) {\n this.reject(this.operation.state.error);\n throw this.operation.state.error;\n }\n }\n if (this.operation.state.isCancelled) {\n this.stopped = true;\n if (!this.resolveOnUnsuccessful) {\n const error = new PollerCancelledError(\"Operation was canceled\");\n this.reject(error);\n throw error;\n }\n }\n if (this.isDone() && this.resolve) {\n // If the poller has finished polling, this means we now have a result.\n // However, it can be the case that TResult is instantiated to void, so\n // we are not expecting a result anyway. To assert that we might not\n // have a result eventually after finishing polling, we cast the result\n // to TResult.\n this.resolve(this.getResult());\n }\n }\n /**\n * Returns a promise that will resolve once the underlying operation is completed.\n */\n async pollUntilDone(pollOptions = {}) {\n if (this.stopped) {\n this.startPolling(pollOptions).catch(this.reject);\n }\n // This is needed because the state could have been updated by\n // `cancelOperation`, e.g. the operation is canceled or an error occurred.\n this.processUpdatedState();\n return this.promise;\n }\n /**\n * Invokes the provided callback after each polling is completed,\n * sending the current state of the poller's operation.\n *\n * It returns a method that can be used to stop receiving updates on the given callback function.\n */\n onProgress(callback) {\n this.pollProgressCallbacks.push(callback);\n return () => {\n this.pollProgressCallbacks = this.pollProgressCallbacks.filter((c) => c !== callback);\n };\n }\n /**\n * Returns true if the poller has finished polling.\n */\n isDone() {\n const state = this.operation.state;\n return Boolean(state.isCompleted || state.isCancelled || state.error);\n }\n /**\n * Stops the poller from continuing to poll.\n */\n stopPolling() {\n if (!this.stopped) {\n this.stopped = true;\n if (this.reject) {\n this.reject(new PollerStoppedError(\"This poller is already stopped\"));\n }\n }\n }\n /**\n * Returns true if the poller is stopped.\n */\n isStopped() {\n return this.stopped;\n }\n /**\n * Attempts to cancel the underlying operation.\n *\n * It only optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n *\n * If it's called again before it finishes, it will throw an error.\n *\n * @param options - Optional properties passed to the operation's update method.\n */\n cancelOperation(options = {}) {\n if (!this.cancelPromise) {\n this.cancelPromise = this.cancelOnce(options);\n }\n else if (options.abortSignal) {\n throw new Error(\"A cancel request is currently pending\");\n }\n return this.cancelPromise;\n }\n /**\n * Returns the state of the operation.\n *\n * Even though TState will be the same type inside any of the methods of any extension of the Poller class,\n * implementations of the pollers can customize what's shared with the public by writing their own\n * version of the `getOperationState` method, and by defining two types, one representing the internal state of the poller\n * and a public type representing a safe to share subset of the properties of the internal state.\n * Their definition of getOperationState can then return their public type.\n *\n * Example:\n *\n * ```ts\n * // Let's say we have our poller's operation state defined as:\n * interface MyOperationState extends PollOperationState {\n * privateProperty?: string;\n * publicProperty?: string;\n * }\n *\n * // To allow us to have a true separation of public and private state, we have to define another interface:\n * interface PublicState extends PollOperationState {\n * publicProperty?: string;\n * }\n *\n * // Then, we define our Poller as follows:\n * export class MyPoller extends Poller {\n * // ... More content is needed here ...\n *\n * public getOperationState(): PublicState {\n * const state: PublicState = this.operation.state;\n * return {\n * // Properties from PollOperationState\n * isStarted: state.isStarted,\n * isCompleted: state.isCompleted,\n * isCancelled: state.isCancelled,\n * error: state.error,\n * result: state.result,\n *\n * // The only other property needed by PublicState.\n * publicProperty: state.publicProperty\n * }\n * }\n * }\n * ```\n *\n * You can see this in the tests of this repository, go to the file:\n * `../test/utils/testPoller.ts`\n * and look for the getOperationState implementation.\n */\n getOperationState() {\n return this.operation.state;\n }\n /**\n * Returns the result value of the operation,\n * regardless of the state of the poller.\n * It can return undefined or an incomplete form of the final TResult value\n * depending on the implementation.\n */\n getResult() {\n const state = this.operation.state;\n return state.result;\n }\n /**\n * Returns a serialized version of the poller's operation\n * by invoking the operation's toString method.\n */\n toString() {\n return this.operation.toString();\n }\n}\n//# sourceMappingURL=poller.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { delay } from \"@azure/core-http\";\nimport { Poller } from \"@azure/core-lro\";\n/**\n * This is the poller returned by {@link BlobClient.beginCopyFromURL}.\n * This can not be instantiated directly outside of this package.\n *\n * @hidden\n */\nexport class BlobBeginCopyFromUrlPoller extends Poller {\n constructor(options) {\n const { blobClient, copySource, intervalInMs = 15000, onProgress, resumeFrom, startCopyFromURLOptions, } = options;\n let state;\n if (resumeFrom) {\n state = JSON.parse(resumeFrom).state;\n }\n const operation = makeBlobBeginCopyFromURLPollOperation(Object.assign(Object.assign({}, state), { blobClient,\n copySource,\n startCopyFromURLOptions }));\n super(operation);\n if (typeof onProgress === \"function\") {\n this.onProgress(onProgress);\n }\n this.intervalInMs = intervalInMs;\n }\n delay() {\n return delay(this.intervalInMs);\n }\n}\n/**\n * Note: Intentionally using function expression over arrow function expression\n * so that the function can be invoked with a different context.\n * This affects what `this` refers to.\n * @hidden\n */\nconst cancel = async function cancel(options = {}) {\n const state = this.state;\n const { copyId } = state;\n if (state.isCompleted) {\n return makeBlobBeginCopyFromURLPollOperation(state);\n }\n if (!copyId) {\n state.isCancelled = true;\n return makeBlobBeginCopyFromURLPollOperation(state);\n }\n // if abortCopyFromURL throws, it will bubble up to user's poller.cancelOperation call\n await state.blobClient.abortCopyFromURL(copyId, {\n abortSignal: options.abortSignal,\n });\n state.isCancelled = true;\n return makeBlobBeginCopyFromURLPollOperation(state);\n};\n/**\n * Note: Intentionally using function expression over arrow function expression\n * so that the function can be invoked with a different context.\n * This affects what `this` refers to.\n * @hidden\n */\nconst update = async function update(options = {}) {\n const state = this.state;\n const { blobClient, copySource, startCopyFromURLOptions } = state;\n if (!state.isStarted) {\n state.isStarted = true;\n const result = await blobClient.startCopyFromURL(copySource, startCopyFromURLOptions);\n // copyId is needed to abort\n state.copyId = result.copyId;\n if (result.copyStatus === \"success\") {\n state.result = result;\n state.isCompleted = true;\n }\n }\n else if (!state.isCompleted) {\n try {\n const result = await state.blobClient.getProperties({ abortSignal: options.abortSignal });\n const { copyStatus, copyProgress } = result;\n const prevCopyProgress = state.copyProgress;\n if (copyProgress) {\n state.copyProgress = copyProgress;\n }\n if (copyStatus === \"pending\" &&\n copyProgress !== prevCopyProgress &&\n typeof options.fireProgress === \"function\") {\n // trigger in setTimeout, or swallow error?\n options.fireProgress(state);\n }\n else if (copyStatus === \"success\") {\n state.result = result;\n state.isCompleted = true;\n }\n else if (copyStatus === \"failed\") {\n state.error = new Error(`Blob copy failed with reason: \"${result.copyStatusDescription || \"unknown\"}\"`);\n state.isCompleted = true;\n }\n }\n catch (err) {\n state.error = err;\n state.isCompleted = true;\n }\n }\n return makeBlobBeginCopyFromURLPollOperation(state);\n};\n/**\n * Note: Intentionally using function expression over arrow function expression\n * so that the function can be invoked with a different context.\n * This affects what `this` refers to.\n * @hidden\n */\nconst toString = function toString() {\n return JSON.stringify({ state: this.state }, (key, value) => {\n // remove blobClient from serialized state since a client can't be hydrated from this info.\n if (key === \"blobClient\") {\n return undefined;\n }\n return value;\n });\n};\n/**\n * Creates a poll operation given the provided state.\n * @hidden\n */\nfunction makeBlobBeginCopyFromURLPollOperation(state) {\n return {\n state: Object.assign({}, state),\n cancel,\n toString,\n update,\n };\n}\n//# sourceMappingURL=BlobStartCopyFromUrlPoller.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Generate a range string. For example:\n *\n * \"bytes=255-\" or \"bytes=0-511\"\n *\n * @param iRange -\n */\nexport function rangeToString(iRange) {\n if (iRange.offset < 0) {\n throw new RangeError(`Range.offset cannot be smaller than 0.`);\n }\n if (iRange.count && iRange.count <= 0) {\n throw new RangeError(`Range.count must be larger than 0. Leave it undefined if you want a range from offset to the end.`);\n }\n return iRange.count\n ? `bytes=${iRange.offset}-${iRange.offset + iRange.count - 1}`\n : `bytes=${iRange.offset}-`;\n}\n//# sourceMappingURL=Range.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n// In browser, during webpack or browserify bundling, this module will be replaced by 'events'\n// https://github.com/Gozala/events\nimport { EventEmitter } from \"events\";\n/**\n * States for Batch.\n */\nvar BatchStates;\n(function (BatchStates) {\n BatchStates[BatchStates[\"Good\"] = 0] = \"Good\";\n BatchStates[BatchStates[\"Error\"] = 1] = \"Error\";\n})(BatchStates || (BatchStates = {}));\n/**\n * Batch provides basic parallel execution with concurrency limits.\n * Will stop execute left operations when one of the executed operation throws an error.\n * But Batch cannot cancel ongoing operations, you need to cancel them by yourself.\n */\nexport class Batch {\n /**\n * Creates an instance of Batch.\n * @param concurrency -\n */\n constructor(concurrency = 5) {\n /**\n * Number of active operations under execution.\n */\n this.actives = 0;\n /**\n * Number of completed operations under execution.\n */\n this.completed = 0;\n /**\n * Offset of next operation to be executed.\n */\n this.offset = 0;\n /**\n * Operation array to be executed.\n */\n this.operations = [];\n /**\n * States of Batch. When an error happens, state will turn into error.\n * Batch will stop execute left operations.\n */\n this.state = BatchStates.Good;\n if (concurrency < 1) {\n throw new RangeError(\"concurrency must be larger than 0\");\n }\n this.concurrency = concurrency;\n this.emitter = new EventEmitter();\n }\n /**\n * Add a operation into queue.\n *\n * @param operation -\n */\n addOperation(operation) {\n this.operations.push(async () => {\n try {\n this.actives++;\n await operation();\n this.actives--;\n this.completed++;\n this.parallelExecute();\n }\n catch (error) {\n this.emitter.emit(\"error\", error);\n }\n });\n }\n /**\n * Start execute operations in the queue.\n *\n */\n async do() {\n if (this.operations.length === 0) {\n return Promise.resolve();\n }\n this.parallelExecute();\n return new Promise((resolve, reject) => {\n this.emitter.on(\"finish\", resolve);\n this.emitter.on(\"error\", (error) => {\n this.state = BatchStates.Error;\n reject(error);\n });\n });\n }\n /**\n * Get next operation to be executed. Return null when reaching ends.\n *\n */\n nextOperation() {\n if (this.offset < this.operations.length) {\n return this.operations[this.offset++];\n }\n return null;\n }\n /**\n * Start execute operations. One one the most important difference between\n * this method with do() is that do() wraps as an sync method.\n *\n */\n parallelExecute() {\n if (this.state === BatchStates.Error) {\n return;\n }\n if (this.completed >= this.operations.length) {\n this.emitter.emit(\"finish\");\n return;\n }\n while (this.actives < this.concurrency) {\n const operation = this.nextOperation();\n if (operation) {\n operation();\n }\n else {\n return;\n }\n }\n }\n}\n//# sourceMappingURL=Batch.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n// This file is used as a shim of \"BufferScheduler\" for some browser bundlers\n// when trying to bundle \"BufferScheduler\"\n// \"BufferScheduler\" class is only available in Node.js runtime\nexport class BufferScheduler {\n}\n//# sourceMappingURL=BufferScheduler.browser.js.map","import { __asyncDelegator, __asyncGenerator, __asyncValues, __await } from \"tslib\";\nimport { generateUuid, getDefaultProxySettings, isNode, isTokenCredential, URLBuilder, } from \"@azure/core-http\";\nimport { SpanStatusCode } from \"@azure/core-tracing\";\nimport { BlobDownloadResponse } from \"./BlobDownloadResponse\";\nimport { BlobQueryResponse } from \"./BlobQueryResponse\";\nimport { AnonymousCredential } from \"./credentials/AnonymousCredential\";\nimport { StorageSharedKeyCredential } from \"./credentials/StorageSharedKeyCredential\";\nimport { AppendBlob, Blob as StorageBlob, BlockBlob, PageBlob } from \"./generated/src/operations\";\nimport { ensureCpkIfSpecified, toAccessTier, } from \"./models\";\nimport { rangeResponseFromModel, } from \"./PageBlobRangeResponse\";\nimport { newPipeline, isPipelineLike } from \"./Pipeline\";\nimport { BlobBeginCopyFromUrlPoller, } from \"./pollers/BlobStartCopyFromUrlPoller\";\nimport { rangeToString } from \"./Range\";\nimport { StorageClient } from \"./StorageClient\";\nimport { Batch } from \"./utils/Batch\";\nimport { BufferScheduler } from \"../../storage-common/src\";\nimport { BlobDoesNotUseCustomerSpecifiedEncryption, BlobUsesCustomerSpecifiedEncryptionMsg, BLOCK_BLOB_MAX_BLOCKS, BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES, BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES, DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES, DEFAULT_BLOCK_BUFFER_SIZE_BYTES, DEFAULT_MAX_DOWNLOAD_RETRY_REQUESTS, ETagAny, URLConstants, } from \"./utils/constants\";\nimport { createSpan, convertTracingToRequestOptionsBase } from \"./utils/tracing\";\nimport { appendToURLPath, appendToURLQuery, extractConnectionStringParts, ExtractPageRangeInfoItems, generateBlockID, getURLParameter, httpAuthorizationToString, isIpEndpointStyle, parseObjectReplicationRecord, setURLParameter, toBlobTags, toBlobTagsString, toQuerySerialization, toTags, } from \"./utils/utils.common\";\nimport { fsCreateReadStream, fsStat, readStreamToLocalFile, streamToBuffer, } from \"./utils/utils.node\";\nimport { generateBlobSASQueryParameters } from \"./sas/BlobSASSignatureValues\";\nimport { BlobLeaseClient } from \"./BlobLeaseClient\";\n/**\n * A BlobClient represents a URL to an Azure Storage blob; the blob may be a block blob,\n * append blob, or page blob.\n */\nexport class BlobClient extends StorageClient {\n constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, \n // Legacy, no fix for eslint error without breaking. Disable it for this interface.\n /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/\n options) {\n options = options || {};\n let pipeline;\n let url;\n if (isPipelineLike(credentialOrPipelineOrContainerName)) {\n // (url: string, pipeline: Pipeline)\n url = urlOrConnectionString;\n pipeline = credentialOrPipelineOrContainerName;\n }\n else if ((isNode && credentialOrPipelineOrContainerName instanceof StorageSharedKeyCredential) ||\n credentialOrPipelineOrContainerName instanceof AnonymousCredential ||\n isTokenCredential(credentialOrPipelineOrContainerName)) {\n // (url: string, credential?: StorageSharedKeyCredential | AnonymousCredential | TokenCredential, options?: StoragePipelineOptions)\n url = urlOrConnectionString;\n options = blobNameOrOptions;\n pipeline = newPipeline(credentialOrPipelineOrContainerName, options);\n }\n else if (!credentialOrPipelineOrContainerName &&\n typeof credentialOrPipelineOrContainerName !== \"string\") {\n // (url: string, credential?: StorageSharedKeyCredential | AnonymousCredential | TokenCredential, options?: StoragePipelineOptions)\n // The second parameter is undefined. Use anonymous credential.\n url = urlOrConnectionString;\n if (blobNameOrOptions && typeof blobNameOrOptions !== \"string\") {\n options = blobNameOrOptions;\n }\n pipeline = newPipeline(new AnonymousCredential(), options);\n }\n else if (credentialOrPipelineOrContainerName &&\n typeof credentialOrPipelineOrContainerName === \"string\" &&\n blobNameOrOptions &&\n typeof blobNameOrOptions === \"string\") {\n // (connectionString: string, containerName: string, blobName: string, options?: StoragePipelineOptions)\n const containerName = credentialOrPipelineOrContainerName;\n const blobName = blobNameOrOptions;\n const extractedCreds = extractConnectionStringParts(urlOrConnectionString);\n if (extractedCreds.kind === \"AccountConnString\") {\n if (isNode) {\n const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);\n url = appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName));\n if (!options.proxyOptions) {\n options.proxyOptions = getDefaultProxySettings(extractedCreds.proxyUri);\n }\n pipeline = newPipeline(sharedKeyCredential, options);\n }\n else {\n throw new Error(\"Account connection string is only supported in Node.js environment\");\n }\n }\n else if (extractedCreds.kind === \"SASConnString\") {\n url =\n appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName)) +\n \"?\" +\n extractedCreds.accountSas;\n pipeline = newPipeline(new AnonymousCredential(), options);\n }\n else {\n throw new Error(\"Connection string must be either an Account connection string or a SAS connection string\");\n }\n }\n else {\n throw new Error(\"Expecting non-empty strings for containerName and blobName parameters\");\n }\n super(url, pipeline);\n ({ blobName: this._name, containerName: this._containerName } =\n this.getBlobAndContainerNamesFromUrl());\n this.blobContext = new StorageBlob(this.storageClientContext);\n this._snapshot = getURLParameter(this.url, URLConstants.Parameters.SNAPSHOT);\n this._versionId = getURLParameter(this.url, URLConstants.Parameters.VERSIONID);\n }\n /**\n * The name of the blob.\n */\n get name() {\n return this._name;\n }\n /**\n * The name of the storage container the blob is associated with.\n */\n get containerName() {\n return this._containerName;\n }\n /**\n * Creates a new BlobClient object identical to the source but with the specified snapshot timestamp.\n * Provide \"\" will remove the snapshot and return a Client to the base blob.\n *\n * @param snapshot - The snapshot timestamp.\n * @returns A new BlobClient object identical to the source but with the specified snapshot timestamp\n */\n withSnapshot(snapshot) {\n return new BlobClient(setURLParameter(this.url, URLConstants.Parameters.SNAPSHOT, snapshot.length === 0 ? undefined : snapshot), this.pipeline);\n }\n /**\n * Creates a new BlobClient object pointing to a version of this blob.\n * Provide \"\" will remove the versionId and return a Client to the base blob.\n *\n * @param versionId - The versionId.\n * @returns A new BlobClient object pointing to the version of this blob.\n */\n withVersion(versionId) {\n return new BlobClient(setURLParameter(this.url, URLConstants.Parameters.VERSIONID, versionId.length === 0 ? undefined : versionId), this.pipeline);\n }\n /**\n * Creates a AppendBlobClient object.\n *\n */\n getAppendBlobClient() {\n return new AppendBlobClient(this.url, this.pipeline);\n }\n /**\n * Creates a BlockBlobClient object.\n *\n */\n getBlockBlobClient() {\n return new BlockBlobClient(this.url, this.pipeline);\n }\n /**\n * Creates a PageBlobClient object.\n *\n */\n getPageBlobClient() {\n return new PageBlobClient(this.url, this.pipeline);\n }\n /**\n * Reads or downloads a blob from the system, including its metadata and properties.\n * You can also call Get Blob to read a snapshot.\n *\n * * In Node.js, data returns in a Readable stream readableStreamBody\n * * In browsers, data returns in a promise blobBody\n *\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-blob\n *\n * @param offset - From which position of the blob to download, greater than or equal to 0\n * @param count - How much data to be downloaded, greater than 0. Will download to the end when undefined\n * @param options - Optional options to Blob Download operation.\n *\n *\n * Example usage (Node.js):\n *\n * ```js\n * // Download and convert a blob to a string\n * const downloadBlockBlobResponse = await blobClient.download();\n * const downloaded = await streamToBuffer(downloadBlockBlobResponse.readableStreamBody);\n * console.log(\"Downloaded blob content:\", downloaded.toString());\n *\n * async function streamToBuffer(readableStream) {\n * return new Promise((resolve, reject) => {\n * const chunks = [];\n * readableStream.on(\"data\", (data) => {\n * chunks.push(data instanceof Buffer ? data : Buffer.from(data));\n * });\n * readableStream.on(\"end\", () => {\n * resolve(Buffer.concat(chunks));\n * });\n * readableStream.on(\"error\", reject);\n * });\n * }\n * ```\n *\n * Example usage (browser):\n *\n * ```js\n * // Download and convert a blob to a string\n * const downloadBlockBlobResponse = await blobClient.download();\n * const downloaded = await blobToString(await downloadBlockBlobResponse.blobBody);\n * console.log(\n * \"Downloaded blob content\",\n * downloaded\n * );\n *\n * async function blobToString(blob: Blob): Promise {\n * const fileReader = new FileReader();\n * return new Promise((resolve, reject) => {\n * fileReader.onloadend = (ev: any) => {\n * resolve(ev.target!.result);\n * };\n * fileReader.onerror = reject;\n * fileReader.readAsText(blob);\n * });\n * }\n * ```\n */\n async download(offset = 0, count, options = {}) {\n var _a;\n options.conditions = options.conditions || {};\n options.conditions = options.conditions || {};\n ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n const { span, updatedOptions } = createSpan(\"BlobClient-download\", options);\n try {\n const res = await this.blobContext.download(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), requestOptions: {\n onDownloadProgress: isNode ? undefined : options.onProgress, // for Node.js, progress is reported by RetriableReadableStream\n }, range: offset === 0 && !count ? undefined : rangeToString({ offset, count }), rangeGetContentMD5: options.rangeGetContentMD5, rangeGetContentCRC64: options.rangeGetContentCrc64, snapshot: options.snapshot, cpkInfo: options.customerProvidedKey }, convertTracingToRequestOptionsBase(updatedOptions)));\n const wrappedRes = Object.assign(Object.assign({}, res), { _response: res._response, objectReplicationDestinationPolicyId: res.objectReplicationPolicyId, objectReplicationSourceProperties: parseObjectReplicationRecord(res.objectReplicationRules) });\n // Return browser response immediately\n if (!isNode) {\n return wrappedRes;\n }\n // We support retrying when download stream unexpected ends in Node.js runtime\n // Following code shouldn't be bundled into browser build, however some\n // bundlers may try to bundle following code and \"FileReadResponse.ts\".\n // In this case, \"FileDownloadResponse.browser.ts\" will be used as a shim of \"FileDownloadResponse.ts\"\n // The config is in package.json \"browser\" field\n if (options.maxRetryRequests === undefined || options.maxRetryRequests < 0) {\n // TODO: Default value or make it a required parameter?\n options.maxRetryRequests = DEFAULT_MAX_DOWNLOAD_RETRY_REQUESTS;\n }\n if (res.contentLength === undefined) {\n throw new RangeError(`File download response doesn't contain valid content length header`);\n }\n if (!res.etag) {\n throw new RangeError(`File download response doesn't contain valid etag header`);\n }\n return new BlobDownloadResponse(wrappedRes, async (start) => {\n var _a;\n const updatedDownloadOptions = {\n leaseAccessConditions: options.conditions,\n modifiedAccessConditions: {\n ifMatch: options.conditions.ifMatch || res.etag,\n ifModifiedSince: options.conditions.ifModifiedSince,\n ifNoneMatch: options.conditions.ifNoneMatch,\n ifUnmodifiedSince: options.conditions.ifUnmodifiedSince,\n ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions,\n },\n range: rangeToString({\n count: offset + res.contentLength - start,\n offset: start,\n }),\n rangeGetContentMD5: options.rangeGetContentMD5,\n rangeGetContentCRC64: options.rangeGetContentCrc64,\n snapshot: options.snapshot,\n cpkInfo: options.customerProvidedKey,\n };\n // Debug purpose only\n // console.log(\n // `Read from internal stream, range: ${\n // updatedOptions.range\n // }, options: ${JSON.stringify(updatedOptions)}`\n // );\n return (await this.blobContext.download(Object.assign({ abortSignal: options.abortSignal }, updatedDownloadOptions))).readableStreamBody;\n }, offset, res.contentLength, {\n maxRetryRequests: options.maxRetryRequests,\n onProgress: options.onProgress,\n });\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * Returns true if the Azure blob resource represented by this client exists; false otherwise.\n *\n * NOTE: use this function with care since an existing blob might be deleted by other clients or\n * applications. Vice versa new blobs might be added by other clients or applications after this\n * function completes.\n *\n * @param options - options to Exists operation.\n */\n async exists(options = {}) {\n const { span, updatedOptions } = createSpan(\"BlobClient-exists\", options);\n try {\n ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n await this.getProperties({\n abortSignal: options.abortSignal,\n customerProvidedKey: options.customerProvidedKey,\n conditions: options.conditions,\n tracingOptions: updatedOptions.tracingOptions,\n });\n return true;\n }\n catch (e) {\n if (e.statusCode === 404) {\n // Expected exception when checking blob existence\n return false;\n }\n else if (e.statusCode === 409 &&\n (e.details.errorCode === BlobUsesCustomerSpecifiedEncryptionMsg ||\n e.details.errorCode === BlobDoesNotUseCustomerSpecifiedEncryption)) {\n // Expected exception when checking blob existence\n return true;\n }\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * Returns all user-defined metadata, standard HTTP properties, and system properties\n * for the blob. It does not return the content of the blob.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/get-blob-properties\n *\n * WARNING: The `metadata` object returned in the response will have its keys in lowercase, even if\n * they originally contained uppercase characters. This differs from the metadata keys returned by\n * the methods of {@link ContainerClient} that list blobs using the `includeMetadata` option, which\n * will retain their original casing.\n *\n * @param options - Optional options to Get Properties operation.\n */\n async getProperties(options = {}) {\n var _a;\n const { span, updatedOptions } = createSpan(\"BlobClient-getProperties\", options);\n try {\n options.conditions = options.conditions || {};\n ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n const res = await this.blobContext.getProperties(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey }, convertTracingToRequestOptionsBase(updatedOptions)));\n return Object.assign(Object.assign({}, res), { _response: res._response, objectReplicationDestinationPolicyId: res.objectReplicationPolicyId, objectReplicationSourceProperties: parseObjectReplicationRecord(res.objectReplicationRules) });\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * Marks the specified blob or snapshot for deletion. The blob is later deleted\n * during garbage collection. Note that in order to delete a blob, you must delete\n * all of its snapshots. You can delete both at the same time with the Delete\n * Blob operation.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/delete-blob\n *\n * @param options - Optional options to Blob Delete operation.\n */\n async delete(options = {}) {\n var _a;\n const { span, updatedOptions } = createSpan(\"BlobClient-delete\", options);\n options.conditions = options.conditions || {};\n try {\n return await this.blobContext.delete(Object.assign({ abortSignal: options.abortSignal, deleteSnapshots: options.deleteSnapshots, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * Marks the specified blob or snapshot for deletion if it exists. The blob is later deleted\n * during garbage collection. Note that in order to delete a blob, you must delete\n * all of its snapshots. You can delete both at the same time with the Delete\n * Blob operation.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/delete-blob\n *\n * @param options - Optional options to Blob Delete operation.\n */\n async deleteIfExists(options = {}) {\n var _a, _b;\n const { span, updatedOptions } = createSpan(\"BlobClient-deleteIfExists\", options);\n try {\n const res = await this.delete(updatedOptions);\n return Object.assign(Object.assign({ succeeded: true }, res), { _response: res._response });\n }\n catch (e) {\n if (((_a = e.details) === null || _a === void 0 ? void 0 : _a.errorCode) === \"BlobNotFound\") {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: \"Expected exception when deleting a blob or snapshot only if it exists.\",\n });\n return Object.assign(Object.assign({ succeeded: false }, (_b = e.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e.response });\n }\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * Restores the contents and metadata of soft deleted blob and any associated\n * soft deleted snapshots. Undelete Blob is supported only on version 2017-07-29\n * or later.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/undelete-blob\n *\n * @param options - Optional options to Blob Undelete operation.\n */\n async undelete(options = {}) {\n const { span, updatedOptions } = createSpan(\"BlobClient-undelete\", options);\n try {\n return await this.blobContext.undelete(Object.assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)));\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * Sets system properties on the blob.\n *\n * If no value provided, or no value provided for the specified blob HTTP headers,\n * these blob HTTP headers without a value will be cleared.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-blob-properties\n *\n * @param blobHTTPHeaders - If no value provided, or no value provided for\n * the specified blob HTTP headers, these blob HTTP\n * headers without a value will be cleared.\n * A common header to set is `blobContentType`\n * enabling the browser to provide functionality\n * based on file type.\n * @param options - Optional options to Blob Set HTTP Headers operation.\n */\n async setHTTPHeaders(blobHTTPHeaders, options = {}) {\n var _a;\n const { span, updatedOptions } = createSpan(\"BlobClient-setHTTPHeaders\", options);\n options.conditions = options.conditions || {};\n try {\n ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n return await this.blobContext.setHttpHeaders(Object.assign({ abortSignal: options.abortSignal, blobHttpHeaders: blobHTTPHeaders, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * Sets user-defined metadata for the specified blob as one or more name-value pairs.\n *\n * If no option provided, or no metadata defined in the parameter, the blob\n * metadata will be removed.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-blob-metadata\n *\n * @param metadata - Replace existing metadata with this value.\n * If no value provided the existing metadata will be removed.\n * @param options - Optional options to Set Metadata operation.\n */\n async setMetadata(metadata, options = {}) {\n var _a;\n const { span, updatedOptions } = createSpan(\"BlobClient-setMetadata\", options);\n options.conditions = options.conditions || {};\n try {\n ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n return await this.blobContext.setMetadata(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, metadata, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * Sets tags on the underlying blob.\n * A blob can have up to 10 tags. Tag keys must be between 1 and 128 characters. Tag values must be between 0 and 256 characters.\n * Valid tag key and value characters include lower and upper case letters, digits (0-9),\n * space (' '), plus ('+'), minus ('-'), period ('.'), foward slash ('/'), colon (':'), equals ('='), and underscore ('_').\n *\n * @param tags -\n * @param options -\n */\n async setTags(tags, options = {}) {\n var _a;\n const { span, updatedOptions } = createSpan(\"BlobClient-setTags\", options);\n try {\n return await this.blobContext.setTags(Object.assign(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)), { tags: toBlobTags(tags) }));\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * Gets the tags associated with the underlying blob.\n *\n * @param options -\n */\n async getTags(options = {}) {\n var _a;\n const { span, updatedOptions } = createSpan(\"BlobClient-getTags\", options);\n try {\n const response = await this.blobContext.getTags(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));\n const wrappedResponse = Object.assign(Object.assign({}, response), { _response: response._response, tags: toTags({ blobTagSet: response.blobTagSet }) || {} });\n return wrappedResponse;\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * Get a {@link BlobLeaseClient} that manages leases on the blob.\n *\n * @param proposeLeaseId - Initial proposed lease Id.\n * @returns A new BlobLeaseClient object for managing leases on the blob.\n */\n getBlobLeaseClient(proposeLeaseId) {\n return new BlobLeaseClient(this, proposeLeaseId);\n }\n /**\n * Creates a read-only snapshot of a blob.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/snapshot-blob\n *\n * @param options - Optional options to the Blob Create Snapshot operation.\n */\n async createSnapshot(options = {}) {\n var _a;\n const { span, updatedOptions } = createSpan(\"BlobClient-createSnapshot\", options);\n options.conditions = options.conditions || {};\n try {\n ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n return await this.blobContext.createSnapshot(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * Asynchronously copies a blob to a destination within the storage account.\n * This method returns a long running operation poller that allows you to wait\n * indefinitely until the copy is completed.\n * You can also cancel a copy before it is completed by calling `cancelOperation` on the poller.\n * Note that the onProgress callback will not be invoked if the operation completes in the first\n * request, and attempting to cancel a completed copy will result in an error being thrown.\n *\n * In version 2012-02-12 and later, the source for a Copy Blob operation can be\n * a committed blob in any Azure storage account.\n * Beginning with version 2015-02-21, the source for a Copy Blob operation can be\n * an Azure file in any Azure storage account.\n * Only storage accounts created on or after June 7th, 2012 allow the Copy Blob\n * operation to copy from another storage account.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/copy-blob\n *\n * Example using automatic polling:\n *\n * ```js\n * const copyPoller = await blobClient.beginCopyFromURL('url');\n * const result = await copyPoller.pollUntilDone();\n * ```\n *\n * Example using manual polling:\n *\n * ```js\n * const copyPoller = await blobClient.beginCopyFromURL('url');\n * while (!poller.isDone()) {\n * await poller.poll();\n * }\n * const result = copyPoller.getResult();\n * ```\n *\n * Example using progress updates:\n *\n * ```js\n * const copyPoller = await blobClient.beginCopyFromURL('url', {\n * onProgress(state) {\n * console.log(`Progress: ${state.copyProgress}`);\n * }\n * });\n * const result = await copyPoller.pollUntilDone();\n * ```\n *\n * Example using a changing polling interval (default 15 seconds):\n *\n * ```js\n * const copyPoller = await blobClient.beginCopyFromURL('url', {\n * intervalInMs: 1000 // poll blob every 1 second for copy progress\n * });\n * const result = await copyPoller.pollUntilDone();\n * ```\n *\n * Example using copy cancellation:\n *\n * ```js\n * const copyPoller = await blobClient.beginCopyFromURL('url');\n * // cancel operation after starting it.\n * try {\n * await copyPoller.cancelOperation();\n * // calls to get the result now throw PollerCancelledError\n * await copyPoller.getResult();\n * } catch (err) {\n * if (err.name === 'PollerCancelledError') {\n * console.log('The copy was cancelled.');\n * }\n * }\n * ```\n *\n * @param copySource - url to the source Azure Blob/File.\n * @param options - Optional options to the Blob Start Copy From URL operation.\n */\n async beginCopyFromURL(copySource, options = {}) {\n const client = {\n abortCopyFromURL: (...args) => this.abortCopyFromURL(...args),\n getProperties: (...args) => this.getProperties(...args),\n startCopyFromURL: (...args) => this.startCopyFromURL(...args),\n };\n const poller = new BlobBeginCopyFromUrlPoller({\n blobClient: client,\n copySource,\n intervalInMs: options.intervalInMs,\n onProgress: options.onProgress,\n resumeFrom: options.resumeFrom,\n startCopyFromURLOptions: options,\n });\n // Trigger the startCopyFromURL call by calling poll.\n // Any errors from this method should be surfaced to the user.\n await poller.poll();\n return poller;\n }\n /**\n * Aborts a pending asynchronous Copy Blob operation, and leaves a destination blob with zero\n * length and full metadata. Version 2012-02-12 and newer.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/abort-copy-blob\n *\n * @param copyId - Id of the Copy From URL operation.\n * @param options - Optional options to the Blob Abort Copy From URL operation.\n */\n async abortCopyFromURL(copyId, options = {}) {\n const { span, updatedOptions } = createSpan(\"BlobClient-abortCopyFromURL\", options);\n try {\n return await this.blobContext.abortCopyFromURL(copyId, Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions }, convertTracingToRequestOptionsBase(updatedOptions)));\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * The synchronous Copy From URL operation copies a blob or an internet resource to a new blob. It will not\n * return a response until the copy is complete.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/copy-blob-from-url\n *\n * @param copySource - The source URL to copy from, Shared Access Signature(SAS) maybe needed for authentication\n * @param options -\n */\n async syncCopyFromURL(copySource, options = {}) {\n var _a, _b, _c;\n const { span, updatedOptions } = createSpan(\"BlobClient-syncCopyFromURL\", options);\n options.conditions = options.conditions || {};\n options.sourceConditions = options.sourceConditions || {};\n try {\n return await this.blobContext.copyFromURL(copySource, Object.assign({ abortSignal: options.abortSignal, metadata: options.metadata, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), sourceModifiedAccessConditions: {\n sourceIfMatch: options.sourceConditions.ifMatch,\n sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,\n sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,\n sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince,\n }, sourceContentMD5: options.sourceContentMD5, copySourceAuthorization: httpAuthorizationToString(options.sourceAuthorization), tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags), immutabilityPolicyExpiry: (_b = options.immutabilityPolicy) === null || _b === void 0 ? void 0 : _b.expiriesOn, immutabilityPolicyMode: (_c = options.immutabilityPolicy) === null || _c === void 0 ? void 0 : _c.policyMode, legalHold: options.legalHold, encryptionScope: options.encryptionScope, copySourceTags: options.copySourceTags }, convertTracingToRequestOptionsBase(updatedOptions)));\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * Sets the tier on a blob. The operation is allowed on a page blob in a premium\n * storage account and on a block blob in a blob storage account (locally redundant\n * storage only). A premium page blob's tier determines the allowed size, IOPS,\n * and bandwidth of the blob. A block blob's tier determines Hot/Cool/Archive\n * storage type. This operation does not update the blob's ETag.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-blob-tier\n *\n * @param tier - The tier to be set on the blob. Valid values are Hot, Cool, or Archive.\n * @param options - Optional options to the Blob Set Tier operation.\n */\n async setAccessTier(tier, options = {}) {\n var _a;\n const { span, updatedOptions } = createSpan(\"BlobClient-setAccessTier\", options);\n try {\n return await this.blobContext.setTier(toAccessTier(tier), Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), rehydratePriority: options.rehydratePriority }, convertTracingToRequestOptionsBase(updatedOptions)));\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n async downloadToBuffer(param1, param2, param3, param4 = {}) {\n let buffer;\n let offset = 0;\n let count = 0;\n let options = param4;\n if (param1 instanceof Buffer) {\n buffer = param1;\n offset = param2 || 0;\n count = typeof param3 === \"number\" ? param3 : 0;\n }\n else {\n offset = typeof param1 === \"number\" ? param1 : 0;\n count = typeof param2 === \"number\" ? param2 : 0;\n options = param3 || {};\n }\n const { span, updatedOptions } = createSpan(\"BlobClient-downloadToBuffer\", options);\n try {\n if (!options.blockSize) {\n options.blockSize = 0;\n }\n if (options.blockSize < 0) {\n throw new RangeError(\"blockSize option must be >= 0\");\n }\n if (options.blockSize === 0) {\n options.blockSize = DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES;\n }\n if (offset < 0) {\n throw new RangeError(\"offset option must be >= 0\");\n }\n if (count && count <= 0) {\n throw new RangeError(\"count option must be greater than 0\");\n }\n if (!options.conditions) {\n options.conditions = {};\n }\n // Customer doesn't specify length, get it\n if (!count) {\n const response = await this.getProperties(Object.assign(Object.assign({}, options), { tracingOptions: Object.assign(Object.assign({}, options.tracingOptions), convertTracingToRequestOptionsBase(updatedOptions)) }));\n count = response.contentLength - offset;\n if (count < 0) {\n throw new RangeError(`offset ${offset} shouldn't be larger than blob size ${response.contentLength}`);\n }\n }\n // Allocate the buffer of size = count if the buffer is not provided\n if (!buffer) {\n try {\n buffer = Buffer.alloc(count);\n }\n catch (error) {\n throw new Error(`Unable to allocate the buffer of size: ${count}(in bytes). Please try passing your own buffer to the \"downloadToBuffer\" method or try using other methods like \"download\" or \"downloadToFile\".\\t ${error.message}`);\n }\n }\n if (buffer.length < count) {\n throw new RangeError(`The buffer's size should be equal to or larger than the request count of bytes: ${count}`);\n }\n let transferProgress = 0;\n const batch = new Batch(options.concurrency);\n for (let off = offset; off < offset + count; off = off + options.blockSize) {\n batch.addOperation(async () => {\n // Exclusive chunk end position\n let chunkEnd = offset + count;\n if (off + options.blockSize < chunkEnd) {\n chunkEnd = off + options.blockSize;\n }\n const response = await this.download(off, chunkEnd - off, {\n abortSignal: options.abortSignal,\n conditions: options.conditions,\n maxRetryRequests: options.maxRetryRequestsPerBlock,\n customerProvidedKey: options.customerProvidedKey,\n tracingOptions: Object.assign(Object.assign({}, options.tracingOptions), convertTracingToRequestOptionsBase(updatedOptions)),\n });\n const stream = response.readableStreamBody;\n await streamToBuffer(stream, buffer, off - offset, chunkEnd - offset);\n // Update progress after block is downloaded, in case of block trying\n // Could provide finer grained progress updating inside HTTP requests,\n // only if convenience layer download try is enabled\n transferProgress += chunkEnd - off;\n if (options.onProgress) {\n options.onProgress({ loadedBytes: transferProgress });\n }\n });\n }\n await batch.do();\n return buffer;\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * Downloads an Azure Blob to a local file.\n * Fails if the the given file path already exits.\n * Offset and count are optional, pass 0 and undefined respectively to download the entire blob.\n *\n * @param filePath -\n * @param offset - From which position of the block blob to download.\n * @param count - How much data to be downloaded. Will download to the end when passing undefined.\n * @param options - Options to Blob download options.\n * @returns The response data for blob download operation,\n * but with readableStreamBody set to undefined since its\n * content is already read and written into a local file\n * at the specified path.\n */\n async downloadToFile(filePath, offset = 0, count, options = {}) {\n const { span, updatedOptions } = createSpan(\"BlobClient-downloadToFile\", options);\n try {\n const response = await this.download(offset, count, Object.assign(Object.assign({}, options), { tracingOptions: Object.assign(Object.assign({}, options.tracingOptions), convertTracingToRequestOptionsBase(updatedOptions)) }));\n if (response.readableStreamBody) {\n await readStreamToLocalFile(response.readableStreamBody, filePath);\n }\n // The stream is no longer accessible so setting it to undefined.\n response.blobDownloadStream = undefined;\n return response;\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n getBlobAndContainerNamesFromUrl() {\n let containerName;\n let blobName;\n try {\n // URL may look like the following\n // \"https://myaccount.blob.core.windows.net/mycontainer/blob?sasString\";\n // \"https://myaccount.blob.core.windows.net/mycontainer/blob\";\n // \"https://myaccount.blob.core.windows.net/mycontainer/blob/a.txt?sasString\";\n // \"https://myaccount.blob.core.windows.net/mycontainer/blob/a.txt\";\n // IPv4/IPv6 address hosts, Endpoints - `http://127.0.0.1:10000/devstoreaccount1/containername/blob`\n // http://localhost:10001/devstoreaccount1/containername/blob\n const parsedUrl = URLBuilder.parse(this.url);\n if (parsedUrl.getHost().split(\".\")[1] === \"blob\") {\n // \"https://myaccount.blob.core.windows.net/containername/blob\".\n // .getPath() -> /containername/blob\n const pathComponents = parsedUrl.getPath().match(\"/([^/]*)(/(.*))?\");\n containerName = pathComponents[1];\n blobName = pathComponents[3];\n }\n else if (isIpEndpointStyle(parsedUrl)) {\n // IPv4/IPv6 address hosts... Example - http://192.0.0.10:10001/devstoreaccount1/containername/blob\n // Single word domain without a [dot] in the endpoint... Example - http://localhost:10001/devstoreaccount1/containername/blob\n // .getPath() -> /devstoreaccount1/containername/blob\n const pathComponents = parsedUrl.getPath().match(\"/([^/]*)/([^/]*)(/(.*))?\");\n containerName = pathComponents[2];\n blobName = pathComponents[4];\n }\n else {\n // \"https://customdomain.com/containername/blob\".\n // .getPath() -> /containername/blob\n const pathComponents = parsedUrl.getPath().match(\"/([^/]*)(/(.*))?\");\n containerName = pathComponents[1];\n blobName = pathComponents[3];\n }\n // decode the encoded blobName, containerName - to get all the special characters that might be present in them\n containerName = decodeURIComponent(containerName);\n blobName = decodeURIComponent(blobName);\n // Azure Storage Server will replace \"\\\" with \"/\" in the blob names\n // doing the same in the SDK side so that the user doesn't have to replace \"\\\" instances in the blobName\n blobName = blobName.replace(/\\\\/g, \"/\");\n if (!containerName) {\n throw new Error(\"Provided containerName is invalid.\");\n }\n return { blobName, containerName };\n }\n catch (error) {\n throw new Error(\"Unable to extract blobName and containerName with provided information.\");\n }\n }\n /**\n * Asynchronously copies a blob to a destination within the storage account.\n * In version 2012-02-12 and later, the source for a Copy Blob operation can be\n * a committed blob in any Azure storage account.\n * Beginning with version 2015-02-21, the source for a Copy Blob operation can be\n * an Azure file in any Azure storage account.\n * Only storage accounts created on or after June 7th, 2012 allow the Copy Blob\n * operation to copy from another storage account.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/copy-blob\n *\n * @param copySource - url to the source Azure Blob/File.\n * @param options - Optional options to the Blob Start Copy From URL operation.\n */\n async startCopyFromURL(copySource, options = {}) {\n var _a, _b, _c;\n const { span, updatedOptions } = createSpan(\"BlobClient-startCopyFromURL\", options);\n options.conditions = options.conditions || {};\n options.sourceConditions = options.sourceConditions || {};\n try {\n return await this.blobContext.startCopyFromURL(copySource, Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), sourceModifiedAccessConditions: {\n sourceIfMatch: options.sourceConditions.ifMatch,\n sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,\n sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,\n sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince,\n sourceIfTags: options.sourceConditions.tagConditions,\n }, immutabilityPolicyExpiry: (_b = options.immutabilityPolicy) === null || _b === void 0 ? void 0 : _b.expiriesOn, immutabilityPolicyMode: (_c = options.immutabilityPolicy) === null || _c === void 0 ? void 0 : _c.policyMode, legalHold: options.legalHold, rehydratePriority: options.rehydratePriority, tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags), sealBlob: options.sealBlob }, convertTracingToRequestOptionsBase(updatedOptions)));\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * Only available for BlobClient constructed with a shared key credential.\n *\n * Generates a Blob Service Shared Access Signature (SAS) URI based on the client properties\n * and parameters passed in. The SAS is signed by the shared key credential of the client.\n *\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas\n *\n * @param options - Optional parameters.\n * @returns The SAS URI consisting of the URI to the resource represented by this client, followed by the generated SAS token.\n */\n generateSasUrl(options) {\n return new Promise((resolve) => {\n if (!(this.credential instanceof StorageSharedKeyCredential)) {\n throw new RangeError(\"Can only generate the SAS when the client is initialized with a shared key credential\");\n }\n const sas = generateBlobSASQueryParameters(Object.assign({ containerName: this._containerName, blobName: this._name, snapshotTime: this._snapshot, versionId: this._versionId }, options), this.credential).toString();\n resolve(appendToURLQuery(this.url, sas));\n });\n }\n /**\n * Delete the immutablility policy on the blob.\n *\n * @param options - Optional options to delete immutability policy on the blob.\n */\n async deleteImmutabilityPolicy(options) {\n const { span, updatedOptions } = createSpan(\"BlobClient-deleteImmutabilityPolicy\", options);\n try {\n return await this.blobContext.deleteImmutabilityPolicy(Object.assign({ abortSignal: options === null || options === void 0 ? void 0 : options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)));\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * Set immutablility policy on the blob.\n *\n * @param options - Optional options to set immutability policy on the blob.\n */\n async setImmutabilityPolicy(immutabilityPolicy, options) {\n const { span, updatedOptions } = createSpan(\"BlobClient-setImmutabilityPolicy\", options);\n try {\n return await this.blobContext.setImmutabilityPolicy(Object.assign({ abortSignal: options === null || options === void 0 ? void 0 : options.abortSignal, immutabilityPolicyExpiry: immutabilityPolicy.expiriesOn, immutabilityPolicyMode: immutabilityPolicy.policyMode, modifiedAccessConditions: options === null || options === void 0 ? void 0 : options.modifiedAccessCondition }, convertTracingToRequestOptionsBase(updatedOptions)));\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * Set legal hold on the blob.\n *\n * @param options - Optional options to set legal hold on the blob.\n */\n async setLegalHold(legalHoldEnabled, options) {\n const { span, updatedOptions } = createSpan(\"BlobClient-setLegalHold\", options);\n try {\n return await this.blobContext.setLegalHold(legalHoldEnabled, Object.assign({ abortSignal: options === null || options === void 0 ? void 0 : options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)));\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n}\n/**\n * AppendBlobClient defines a set of operations applicable to append blobs.\n */\nexport class AppendBlobClient extends BlobClient {\n constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, \n // Legacy, no fix for eslint error without breaking. Disable it for this interface.\n /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/\n options) {\n // In TypeScript we cannot simply pass all parameters to super() like below so have to duplicate the code instead.\n // super(s, credentialOrPipelineOrContainerNameOrOptions, blobNameOrOptions, options);\n let pipeline;\n let url;\n options = options || {};\n if (isPipelineLike(credentialOrPipelineOrContainerName)) {\n // (url: string, pipeline: Pipeline)\n url = urlOrConnectionString;\n pipeline = credentialOrPipelineOrContainerName;\n }\n else if ((isNode && credentialOrPipelineOrContainerName instanceof StorageSharedKeyCredential) ||\n credentialOrPipelineOrContainerName instanceof AnonymousCredential ||\n isTokenCredential(credentialOrPipelineOrContainerName)) {\n // (url: string, credential?: StorageSharedKeyCredential | AnonymousCredential | TokenCredential, options?: StoragePipelineOptions) url = urlOrConnectionString;\n url = urlOrConnectionString;\n options = blobNameOrOptions;\n pipeline = newPipeline(credentialOrPipelineOrContainerName, options);\n }\n else if (!credentialOrPipelineOrContainerName &&\n typeof credentialOrPipelineOrContainerName !== \"string\") {\n // (url: string, credential?: StorageSharedKeyCredential | AnonymousCredential | TokenCredential, options?: StoragePipelineOptions)\n url = urlOrConnectionString;\n // The second parameter is undefined. Use anonymous credential.\n pipeline = newPipeline(new AnonymousCredential(), options);\n }\n else if (credentialOrPipelineOrContainerName &&\n typeof credentialOrPipelineOrContainerName === \"string\" &&\n blobNameOrOptions &&\n typeof blobNameOrOptions === \"string\") {\n // (connectionString: string, containerName: string, blobName: string, options?: StoragePipelineOptions)\n const containerName = credentialOrPipelineOrContainerName;\n const blobName = blobNameOrOptions;\n const extractedCreds = extractConnectionStringParts(urlOrConnectionString);\n if (extractedCreds.kind === \"AccountConnString\") {\n if (isNode) {\n const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);\n url = appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName));\n if (!options.proxyOptions) {\n options.proxyOptions = getDefaultProxySettings(extractedCreds.proxyUri);\n }\n pipeline = newPipeline(sharedKeyCredential, options);\n }\n else {\n throw new Error(\"Account connection string is only supported in Node.js environment\");\n }\n }\n else if (extractedCreds.kind === \"SASConnString\") {\n url =\n appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName)) +\n \"?\" +\n extractedCreds.accountSas;\n pipeline = newPipeline(new AnonymousCredential(), options);\n }\n else {\n throw new Error(\"Connection string must be either an Account connection string or a SAS connection string\");\n }\n }\n else {\n throw new Error(\"Expecting non-empty strings for containerName and blobName parameters\");\n }\n super(url, pipeline);\n this.appendBlobContext = new AppendBlob(this.storageClientContext);\n }\n /**\n * Creates a new AppendBlobClient object identical to the source but with the\n * specified snapshot timestamp.\n * Provide \"\" will remove the snapshot and return a Client to the base blob.\n *\n * @param snapshot - The snapshot timestamp.\n * @returns A new AppendBlobClient object identical to the source but with the specified snapshot timestamp.\n */\n withSnapshot(snapshot) {\n return new AppendBlobClient(setURLParameter(this.url, URLConstants.Parameters.SNAPSHOT, snapshot.length === 0 ? undefined : snapshot), this.pipeline);\n }\n /**\n * Creates a 0-length append blob. Call AppendBlock to append data to an append blob.\n * @see https://docs.microsoft.com/rest/api/storageservices/put-blob\n *\n * @param options - Options to the Append Block Create operation.\n *\n *\n * Example usage:\n *\n * ```js\n * const appendBlobClient = containerClient.getAppendBlobClient(\"\");\n * await appendBlobClient.create();\n * ```\n */\n async create(options = {}) {\n var _a, _b, _c;\n const { span, updatedOptions } = createSpan(\"AppendBlobClient-create\", options);\n options.conditions = options.conditions || {};\n try {\n ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n return await this.appendBlobContext.create(0, Object.assign({ abortSignal: options.abortSignal, blobHttpHeaders: options.blobHTTPHeaders, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope, immutabilityPolicyExpiry: (_b = options.immutabilityPolicy) === null || _b === void 0 ? void 0 : _b.expiriesOn, immutabilityPolicyMode: (_c = options.immutabilityPolicy) === null || _c === void 0 ? void 0 : _c.policyMode, legalHold: options.legalHold, blobTagsString: toBlobTagsString(options.tags) }, convertTracingToRequestOptionsBase(updatedOptions)));\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * Creates a 0-length append blob. Call AppendBlock to append data to an append blob.\n * If the blob with the same name already exists, the content of the existing blob will remain unchanged.\n * @see https://docs.microsoft.com/rest/api/storageservices/put-blob\n *\n * @param options -\n */\n async createIfNotExists(options = {}) {\n var _a, _b;\n const { span, updatedOptions } = createSpan(\"AppendBlobClient-createIfNotExists\", options);\n const conditions = { ifNoneMatch: ETagAny };\n try {\n const res = await this.create(Object.assign(Object.assign({}, updatedOptions), { conditions }));\n return Object.assign(Object.assign({ succeeded: true }, res), { _response: res._response });\n }\n catch (e) {\n if (((_a = e.details) === null || _a === void 0 ? void 0 : _a.errorCode) === \"BlobAlreadyExists\") {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: \"Expected exception when creating a blob only if it does not already exist.\",\n });\n return Object.assign(Object.assign({ succeeded: false }, (_b = e.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e.response });\n }\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * Seals the append blob, making it read only.\n *\n * @param options -\n */\n async seal(options = {}) {\n var _a;\n const { span, updatedOptions } = createSpan(\"AppendBlobClient-seal\", options);\n options.conditions = options.conditions || {};\n try {\n return await this.appendBlobContext.seal(Object.assign({ abortSignal: options.abortSignal, appendPositionAccessConditions: options.conditions, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * Commits a new block of data to the end of the existing append blob.\n * @see https://docs.microsoft.com/rest/api/storageservices/append-block\n *\n * @param body - Data to be appended.\n * @param contentLength - Length of the body in bytes.\n * @param options - Options to the Append Block operation.\n *\n *\n * Example usage:\n *\n * ```js\n * const content = \"Hello World!\";\n *\n * // Create a new append blob and append data to the blob.\n * const newAppendBlobClient = containerClient.getAppendBlobClient(\"\");\n * await newAppendBlobClient.create();\n * await newAppendBlobClient.appendBlock(content, content.length);\n *\n * // Append data to an existing append blob.\n * const existingAppendBlobClient = containerClient.getAppendBlobClient(\"\");\n * await existingAppendBlobClient.appendBlock(content, content.length);\n * ```\n */\n async appendBlock(body, contentLength, options = {}) {\n var _a;\n const { span, updatedOptions } = createSpan(\"AppendBlobClient-appendBlock\", options);\n options.conditions = options.conditions || {};\n try {\n ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n return await this.appendBlobContext.appendBlock(contentLength, body, Object.assign({ abortSignal: options.abortSignal, appendPositionAccessConditions: options.conditions, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), requestOptions: {\n onUploadProgress: options.onProgress,\n }, transactionalContentMD5: options.transactionalContentMD5, transactionalContentCrc64: options.transactionalContentCrc64, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * The Append Block operation commits a new block of data to the end of an existing append blob\n * where the contents are read from a source url.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/append-block-from-url\n *\n * @param sourceURL -\n * The url to the blob that will be the source of the copy. A source blob in the same storage account can\n * be authenticated via Shared Key. However, if the source is a blob in another account, the source blob\n * must either be public or must be authenticated via a shared access signature. If the source blob is\n * public, no authentication is required to perform the operation.\n * @param sourceOffset - Offset in source to be appended\n * @param count - Number of bytes to be appended as a block\n * @param options -\n */\n async appendBlockFromURL(sourceURL, sourceOffset, count, options = {}) {\n var _a;\n const { span, updatedOptions } = createSpan(\"AppendBlobClient-appendBlockFromURL\", options);\n options.conditions = options.conditions || {};\n options.sourceConditions = options.sourceConditions || {};\n try {\n ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n return await this.appendBlobContext.appendBlockFromUrl(sourceURL, 0, Object.assign({ abortSignal: options.abortSignal, sourceRange: rangeToString({ offset: sourceOffset, count }), sourceContentMD5: options.sourceContentMD5, sourceContentCrc64: options.sourceContentCrc64, leaseAccessConditions: options.conditions, appendPositionAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), sourceModifiedAccessConditions: {\n sourceIfMatch: options.sourceConditions.ifMatch,\n sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,\n sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,\n sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince,\n }, copySourceAuthorization: httpAuthorizationToString(options.sourceAuthorization), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n}\n/**\n * BlockBlobClient defines a set of operations applicable to block blobs.\n */\nexport class BlockBlobClient extends BlobClient {\n constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, \n // Legacy, no fix for eslint error without breaking. Disable it for this interface.\n /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/\n options) {\n // In TypeScript we cannot simply pass all parameters to super() like below so have to duplicate the code instead.\n // super(s, credentialOrPipelineOrContainerNameOrOptions, blobNameOrOptions, options);\n let pipeline;\n let url;\n options = options || {};\n if (isPipelineLike(credentialOrPipelineOrContainerName)) {\n // (url: string, pipeline: Pipeline)\n url = urlOrConnectionString;\n pipeline = credentialOrPipelineOrContainerName;\n }\n else if ((isNode && credentialOrPipelineOrContainerName instanceof StorageSharedKeyCredential) ||\n credentialOrPipelineOrContainerName instanceof AnonymousCredential ||\n isTokenCredential(credentialOrPipelineOrContainerName)) {\n // (url: string, credential?: StorageSharedKeyCredential | AnonymousCredential | TokenCredential, options?: StoragePipelineOptions)\n url = urlOrConnectionString;\n options = blobNameOrOptions;\n pipeline = newPipeline(credentialOrPipelineOrContainerName, options);\n }\n else if (!credentialOrPipelineOrContainerName &&\n typeof credentialOrPipelineOrContainerName !== \"string\") {\n // (url: string, credential?: StorageSharedKeyCredential | AnonymousCredential | TokenCredential, options?: StoragePipelineOptions)\n // The second parameter is undefined. Use anonymous credential.\n url = urlOrConnectionString;\n if (blobNameOrOptions && typeof blobNameOrOptions !== \"string\") {\n options = blobNameOrOptions;\n }\n pipeline = newPipeline(new AnonymousCredential(), options);\n }\n else if (credentialOrPipelineOrContainerName &&\n typeof credentialOrPipelineOrContainerName === \"string\" &&\n blobNameOrOptions &&\n typeof blobNameOrOptions === \"string\") {\n // (connectionString: string, containerName: string, blobName: string, options?: StoragePipelineOptions)\n const containerName = credentialOrPipelineOrContainerName;\n const blobName = blobNameOrOptions;\n const extractedCreds = extractConnectionStringParts(urlOrConnectionString);\n if (extractedCreds.kind === \"AccountConnString\") {\n if (isNode) {\n const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);\n url = appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName));\n if (!options.proxyOptions) {\n options.proxyOptions = getDefaultProxySettings(extractedCreds.proxyUri);\n }\n pipeline = newPipeline(sharedKeyCredential, options);\n }\n else {\n throw new Error(\"Account connection string is only supported in Node.js environment\");\n }\n }\n else if (extractedCreds.kind === \"SASConnString\") {\n url =\n appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName)) +\n \"?\" +\n extractedCreds.accountSas;\n pipeline = newPipeline(new AnonymousCredential(), options);\n }\n else {\n throw new Error(\"Connection string must be either an Account connection string or a SAS connection string\");\n }\n }\n else {\n throw new Error(\"Expecting non-empty strings for containerName and blobName parameters\");\n }\n super(url, pipeline);\n this.blockBlobContext = new BlockBlob(this.storageClientContext);\n this._blobContext = new StorageBlob(this.storageClientContext);\n }\n /**\n * Creates a new BlockBlobClient object identical to the source but with the\n * specified snapshot timestamp.\n * Provide \"\" will remove the snapshot and return a URL to the base blob.\n *\n * @param snapshot - The snapshot timestamp.\n * @returns A new BlockBlobClient object identical to the source but with the specified snapshot timestamp.\n */\n withSnapshot(snapshot) {\n return new BlockBlobClient(setURLParameter(this.url, URLConstants.Parameters.SNAPSHOT, snapshot.length === 0 ? undefined : snapshot), this.pipeline);\n }\n /**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * Quick query for a JSON or CSV formatted blob.\n *\n * Example usage (Node.js):\n *\n * ```js\n * // Query and convert a blob to a string\n * const queryBlockBlobResponse = await blockBlobClient.query(\"select * from BlobStorage\");\n * const downloaded = (await streamToBuffer(queryBlockBlobResponse.readableStreamBody)).toString();\n * console.log(\"Query blob content:\", downloaded);\n *\n * async function streamToBuffer(readableStream) {\n * return new Promise((resolve, reject) => {\n * const chunks = [];\n * readableStream.on(\"data\", (data) => {\n * chunks.push(data instanceof Buffer ? data : Buffer.from(data));\n * });\n * readableStream.on(\"end\", () => {\n * resolve(Buffer.concat(chunks));\n * });\n * readableStream.on(\"error\", reject);\n * });\n * }\n * ```\n *\n * @param query -\n * @param options -\n */\n async query(query, options = {}) {\n var _a;\n ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n const { span, updatedOptions } = createSpan(\"BlockBlobClient-query\", options);\n try {\n if (!isNode) {\n throw new Error(\"This operation currently is only supported in Node.js.\");\n }\n ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n const response = await this._blobContext.query(Object.assign({ abortSignal: options.abortSignal, queryRequest: {\n queryType: \"SQL\",\n expression: query,\n inputSerialization: toQuerySerialization(options.inputTextConfiguration),\n outputSerialization: toQuerySerialization(options.outputTextConfiguration),\n }, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey }, convertTracingToRequestOptionsBase(updatedOptions)));\n return new BlobQueryResponse(response, {\n abortSignal: options.abortSignal,\n onProgress: options.onProgress,\n onError: options.onError,\n });\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * Creates a new block blob, or updates the content of an existing block blob.\n * Updating an existing block blob overwrites any existing metadata on the blob.\n * Partial updates are not supported; the content of the existing blob is\n * overwritten with the new content. To perform a partial update of a block blob's,\n * use {@link stageBlock} and {@link commitBlockList}.\n *\n * This is a non-parallel uploading method, please use {@link uploadFile},\n * {@link uploadStream} or {@link uploadBrowserData} for better performance\n * with concurrency uploading.\n *\n * @see https://docs.microsoft.com/rest/api/storageservices/put-blob\n *\n * @param body - Blob, string, ArrayBuffer, ArrayBufferView or a function\n * which returns a new Readable stream whose offset is from data source beginning.\n * @param contentLength - Length of body in bytes. Use Buffer.byteLength() to calculate body length for a\n * string including non non-Base64/Hex-encoded characters.\n * @param options - Options to the Block Blob Upload operation.\n * @returns Response data for the Block Blob Upload operation.\n *\n * Example usage:\n *\n * ```js\n * const content = \"Hello world!\";\n * const uploadBlobResponse = await blockBlobClient.upload(content, content.length);\n * ```\n */\n async upload(body, contentLength, options = {}) {\n var _a, _b, _c;\n options.conditions = options.conditions || {};\n const { span, updatedOptions } = createSpan(\"BlockBlobClient-upload\", options);\n try {\n ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n return await this.blockBlobContext.upload(contentLength, body, Object.assign({ abortSignal: options.abortSignal, blobHttpHeaders: options.blobHTTPHeaders, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), requestOptions: {\n onUploadProgress: options.onProgress,\n }, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope, immutabilityPolicyExpiry: (_b = options.immutabilityPolicy) === null || _b === void 0 ? void 0 : _b.expiriesOn, immutabilityPolicyMode: (_c = options.immutabilityPolicy) === null || _c === void 0 ? void 0 : _c.policyMode, legalHold: options.legalHold, tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags) }, convertTracingToRequestOptionsBase(updatedOptions)));\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * Creates a new Block Blob where the contents of the blob are read from a given URL.\n * This API is supported beginning with the 2020-04-08 version. Partial updates\n * are not supported with Put Blob from URL; the content of an existing blob is overwritten with\n * the content of the new blob. To perform partial updates to a block blob’s contents using a\n * source URL, use {@link stageBlockFromURL} and {@link commitBlockList}.\n *\n * @param sourceURL - Specifies the URL of the blob. The value\n * may be a URL of up to 2 KB in length that specifies a blob.\n * The value should be URL-encoded as it would appear\n * in a request URI. The source blob must either be public\n * or must be authenticated via a shared access signature.\n * If the source blob is public, no authentication is required\n * to perform the operation. Here are some examples of source object URLs:\n * - https://myaccount.blob.core.windows.net/mycontainer/myblob\n * - https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=\n * @param options - Optional parameters.\n */\n async syncUploadFromURL(sourceURL, options = {}) {\n var _a, _b, _c, _d, _e;\n options.conditions = options.conditions || {};\n const { span, updatedOptions } = createSpan(\"BlockBlobClient-syncUploadFromURL\", options);\n try {\n ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n return await this.blockBlobContext.putBlobFromUrl(0, sourceURL, Object.assign(Object.assign(Object.assign({}, options), { blobHttpHeaders: options.blobHTTPHeaders, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: options.conditions.tagConditions }), sourceModifiedAccessConditions: {\n sourceIfMatch: (_a = options.sourceConditions) === null || _a === void 0 ? void 0 : _a.ifMatch,\n sourceIfModifiedSince: (_b = options.sourceConditions) === null || _b === void 0 ? void 0 : _b.ifModifiedSince,\n sourceIfNoneMatch: (_c = options.sourceConditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch,\n sourceIfUnmodifiedSince: (_d = options.sourceConditions) === null || _d === void 0 ? void 0 : _d.ifUnmodifiedSince,\n sourceIfTags: (_e = options.sourceConditions) === null || _e === void 0 ? void 0 : _e.tagConditions,\n }, cpkInfo: options.customerProvidedKey, copySourceAuthorization: httpAuthorizationToString(options.sourceAuthorization), tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags), copySourceTags: options.copySourceTags }), convertTracingToRequestOptionsBase(updatedOptions)));\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * Uploads the specified block to the block blob's \"staging area\" to be later\n * committed by a call to commitBlockList.\n * @see https://docs.microsoft.com/rest/api/storageservices/put-block\n *\n * @param blockId - A 64-byte value that is base64-encoded\n * @param body - Data to upload to the staging area.\n * @param contentLength - Number of bytes to upload.\n * @param options - Options to the Block Blob Stage Block operation.\n * @returns Response data for the Block Blob Stage Block operation.\n */\n async stageBlock(blockId, body, contentLength, options = {}) {\n const { span, updatedOptions } = createSpan(\"BlockBlobClient-stageBlock\", options);\n try {\n ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n return await this.blockBlobContext.stageBlock(blockId, contentLength, body, Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, requestOptions: {\n onUploadProgress: options.onProgress,\n }, transactionalContentMD5: options.transactionalContentMD5, transactionalContentCrc64: options.transactionalContentCrc64, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * The Stage Block From URL operation creates a new block to be committed as part\n * of a blob where the contents are read from a URL.\n * This API is available starting in version 2018-03-28.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/put-block-from-url\n *\n * @param blockId - A 64-byte value that is base64-encoded\n * @param sourceURL - Specifies the URL of the blob. The value\n * may be a URL of up to 2 KB in length that specifies a blob.\n * The value should be URL-encoded as it would appear\n * in a request URI. The source blob must either be public\n * or must be authenticated via a shared access signature.\n * If the source blob is public, no authentication is required\n * to perform the operation. Here are some examples of source object URLs:\n * - https://myaccount.blob.core.windows.net/mycontainer/myblob\n * - https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=\n * @param offset - From which position of the blob to download, greater than or equal to 0\n * @param count - How much data to be downloaded, greater than 0. Will download to the end when undefined\n * @param options - Options to the Block Blob Stage Block From URL operation.\n * @returns Response data for the Block Blob Stage Block From URL operation.\n */\n async stageBlockFromURL(blockId, sourceURL, offset = 0, count, options = {}) {\n const { span, updatedOptions } = createSpan(\"BlockBlobClient-stageBlockFromURL\", options);\n try {\n ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n return await this.blockBlobContext.stageBlockFromURL(blockId, 0, sourceURL, Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, sourceContentMD5: options.sourceContentMD5, sourceContentCrc64: options.sourceContentCrc64, sourceRange: offset === 0 && !count ? undefined : rangeToString({ offset, count }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope, copySourceAuthorization: httpAuthorizationToString(options.sourceAuthorization) }, convertTracingToRequestOptionsBase(updatedOptions)));\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * Writes a blob by specifying the list of block IDs that make up the blob.\n * In order to be written as part of a blob, a block must have been successfully written\n * to the server in a prior {@link stageBlock} operation. You can call {@link commitBlockList} to\n * update a blob by uploading only those blocks that have changed, then committing the new and existing\n * blocks together. Any blocks not specified in the block list and permanently deleted.\n * @see https://docs.microsoft.com/rest/api/storageservices/put-block-list\n *\n * @param blocks - Array of 64-byte value that is base64-encoded\n * @param options - Options to the Block Blob Commit Block List operation.\n * @returns Response data for the Block Blob Commit Block List operation.\n */\n async commitBlockList(blocks, options = {}) {\n var _a, _b, _c;\n options.conditions = options.conditions || {};\n const { span, updatedOptions } = createSpan(\"BlockBlobClient-commitBlockList\", options);\n try {\n ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n return await this.blockBlobContext.commitBlockList({ latest: blocks }, Object.assign({ abortSignal: options.abortSignal, blobHttpHeaders: options.blobHTTPHeaders, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope, immutabilityPolicyExpiry: (_b = options.immutabilityPolicy) === null || _b === void 0 ? void 0 : _b.expiriesOn, immutabilityPolicyMode: (_c = options.immutabilityPolicy) === null || _c === void 0 ? void 0 : _c.policyMode, legalHold: options.legalHold, tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags) }, convertTracingToRequestOptionsBase(updatedOptions)));\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * Returns the list of blocks that have been uploaded as part of a block blob\n * using the specified block list filter.\n * @see https://docs.microsoft.com/rest/api/storageservices/get-block-list\n *\n * @param listType - Specifies whether to return the list of committed blocks,\n * the list of uncommitted blocks, or both lists together.\n * @param options - Options to the Block Blob Get Block List operation.\n * @returns Response data for the Block Blob Get Block List operation.\n */\n async getBlockList(listType, options = {}) {\n var _a;\n const { span, updatedOptions } = createSpan(\"BlockBlobClient-getBlockList\", options);\n try {\n const res = await this.blockBlobContext.getBlockList(listType, Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));\n if (!res.committedBlocks) {\n res.committedBlocks = [];\n }\n if (!res.uncommittedBlocks) {\n res.uncommittedBlocks = [];\n }\n return res;\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n // High level functions\n /**\n * Uploads a Buffer(Node.js)/Blob(browsers)/ArrayBuffer/ArrayBufferView object to a BlockBlob.\n *\n * When data length is no more than the specifiled {@link BlockBlobParallelUploadOptions.maxSingleShotSize} (default is\n * {@link BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES}), this method will use 1 {@link upload} call to finish the upload.\n * Otherwise, this method will call {@link stageBlock} to upload blocks, and finally call {@link commitBlockList}\n * to commit the block list.\n *\n * A common {@link BlockBlobParallelUploadOptions.blobHTTPHeaders} option to set is\n * `blobContentType`, enabling the browser to provide\n * functionality based on file type.\n *\n * @param data - Buffer(Node.js), Blob, ArrayBuffer or ArrayBufferView\n * @param options -\n */\n async uploadData(data, options = {}) {\n const { span, updatedOptions } = createSpan(\"BlockBlobClient-uploadData\", options);\n try {\n if (isNode) {\n let buffer;\n if (data instanceof Buffer) {\n buffer = data;\n }\n else if (data instanceof ArrayBuffer) {\n buffer = Buffer.from(data);\n }\n else {\n data = data;\n buffer = Buffer.from(data.buffer, data.byteOffset, data.byteLength);\n }\n return this.uploadSeekableInternal((offset, size) => buffer.slice(offset, offset + size), buffer.byteLength, updatedOptions);\n }\n else {\n const browserBlob = new Blob([data]);\n return this.uploadSeekableInternal((offset, size) => browserBlob.slice(offset, offset + size), browserBlob.size, updatedOptions);\n }\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * ONLY AVAILABLE IN BROWSERS.\n *\n * Uploads a browser Blob/File/ArrayBuffer/ArrayBufferView object to block blob.\n *\n * When buffer length lesser than or equal to 256MB, this method will use 1 upload call to finish the upload.\n * Otherwise, this method will call {@link stageBlock} to upload blocks, and finally call\n * {@link commitBlockList} to commit the block list.\n *\n * A common {@link BlockBlobParallelUploadOptions.blobHTTPHeaders} option to set is\n * `blobContentType`, enabling the browser to provide\n * functionality based on file type.\n *\n * @deprecated Use {@link uploadData} instead.\n *\n * @param browserData - Blob, File, ArrayBuffer or ArrayBufferView\n * @param options - Options to upload browser data.\n * @returns Response data for the Blob Upload operation.\n */\n async uploadBrowserData(browserData, options = {}) {\n const { span, updatedOptions } = createSpan(\"BlockBlobClient-uploadBrowserData\", options);\n try {\n const browserBlob = new Blob([browserData]);\n return await this.uploadSeekableInternal((offset, size) => browserBlob.slice(offset, offset + size), browserBlob.size, updatedOptions);\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n *\n * Uploads data to block blob. Requires a bodyFactory as the data source,\n * which need to return a {@link HttpRequestBody} object with the offset and size provided.\n *\n * When data length is no more than the specified {@link BlockBlobParallelUploadOptions.maxSingleShotSize} (default is\n * {@link BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES}), this method will use 1 {@link upload} call to finish the upload.\n * Otherwise, this method will call {@link stageBlock} to upload blocks, and finally call {@link commitBlockList}\n * to commit the block list.\n *\n * @param bodyFactory -\n * @param size - size of the data to upload.\n * @param options - Options to Upload to Block Blob operation.\n * @returns Response data for the Blob Upload operation.\n */\n async uploadSeekableInternal(bodyFactory, size, options = {}) {\n if (!options.blockSize) {\n options.blockSize = 0;\n }\n if (options.blockSize < 0 || options.blockSize > BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES) {\n throw new RangeError(`blockSize option must be >= 0 and <= ${BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES}`);\n }\n if (options.maxSingleShotSize !== 0 && !options.maxSingleShotSize) {\n options.maxSingleShotSize = BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES;\n }\n if (options.maxSingleShotSize < 0 ||\n options.maxSingleShotSize > BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES) {\n throw new RangeError(`maxSingleShotSize option must be >= 0 and <= ${BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES}`);\n }\n if (options.blockSize === 0) {\n if (size > BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES * BLOCK_BLOB_MAX_BLOCKS) {\n throw new RangeError(`${size} is too larger to upload to a block blob.`);\n }\n if (size > options.maxSingleShotSize) {\n options.blockSize = Math.ceil(size / BLOCK_BLOB_MAX_BLOCKS);\n if (options.blockSize < DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES) {\n options.blockSize = DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES;\n }\n }\n }\n if (!options.blobHTTPHeaders) {\n options.blobHTTPHeaders = {};\n }\n if (!options.conditions) {\n options.conditions = {};\n }\n const { span, updatedOptions } = createSpan(\"BlockBlobClient-uploadSeekableInternal\", options);\n try {\n if (size <= options.maxSingleShotSize) {\n return await this.upload(bodyFactory(0, size), size, updatedOptions);\n }\n const numBlocks = Math.floor((size - 1) / options.blockSize) + 1;\n if (numBlocks > BLOCK_BLOB_MAX_BLOCKS) {\n throw new RangeError(`The buffer's size is too big or the BlockSize is too small;` +\n `the number of blocks must be <= ${BLOCK_BLOB_MAX_BLOCKS}`);\n }\n const blockList = [];\n const blockIDPrefix = generateUuid();\n let transferProgress = 0;\n const batch = new Batch(options.concurrency);\n for (let i = 0; i < numBlocks; i++) {\n batch.addOperation(async () => {\n const blockID = generateBlockID(blockIDPrefix, i);\n const start = options.blockSize * i;\n const end = i === numBlocks - 1 ? size : start + options.blockSize;\n const contentLength = end - start;\n blockList.push(blockID);\n await this.stageBlock(blockID, bodyFactory(start, contentLength), contentLength, {\n abortSignal: options.abortSignal,\n conditions: options.conditions,\n encryptionScope: options.encryptionScope,\n tracingOptions: updatedOptions.tracingOptions,\n });\n // Update progress after block is successfully uploaded to server, in case of block trying\n // TODO: Hook with convenience layer progress event in finer level\n transferProgress += contentLength;\n if (options.onProgress) {\n options.onProgress({\n loadedBytes: transferProgress,\n });\n }\n });\n }\n await batch.do();\n return this.commitBlockList(blockList, updatedOptions);\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * Uploads a local file in blocks to a block blob.\n *\n * When file size lesser than or equal to 256MB, this method will use 1 upload call to finish the upload.\n * Otherwise, this method will call stageBlock to upload blocks, and finally call commitBlockList\n * to commit the block list.\n *\n * @param filePath - Full path of local file\n * @param options - Options to Upload to Block Blob operation.\n * @returns Response data for the Blob Upload operation.\n */\n async uploadFile(filePath, options = {}) {\n const { span, updatedOptions } = createSpan(\"BlockBlobClient-uploadFile\", options);\n try {\n const size = (await fsStat(filePath)).size;\n return await this.uploadSeekableInternal((offset, count) => {\n return () => fsCreateReadStream(filePath, {\n autoClose: true,\n end: count ? offset + count - 1 : Infinity,\n start: offset,\n });\n }, size, Object.assign(Object.assign({}, options), { tracingOptions: Object.assign(Object.assign({}, options.tracingOptions), convertTracingToRequestOptionsBase(updatedOptions)) }));\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * Uploads a Node.js Readable stream into block blob.\n *\n * PERFORMANCE IMPROVEMENT TIPS:\n * * Input stream highWaterMark is better to set a same value with bufferSize\n * parameter, which will avoid Buffer.concat() operations.\n *\n * @param stream - Node.js Readable stream\n * @param bufferSize - Size of every buffer allocated, also the block size in the uploaded block blob. Default value is 8MB\n * @param maxConcurrency - Max concurrency indicates the max number of buffers that can be allocated,\n * positive correlation with max uploading concurrency. Default value is 5\n * @param options - Options to Upload Stream to Block Blob operation.\n * @returns Response data for the Blob Upload operation.\n */\n async uploadStream(stream, bufferSize = DEFAULT_BLOCK_BUFFER_SIZE_BYTES, maxConcurrency = 5, options = {}) {\n if (!options.blobHTTPHeaders) {\n options.blobHTTPHeaders = {};\n }\n if (!options.conditions) {\n options.conditions = {};\n }\n const { span, updatedOptions } = createSpan(\"BlockBlobClient-uploadStream\", options);\n try {\n let blockNum = 0;\n const blockIDPrefix = generateUuid();\n let transferProgress = 0;\n const blockList = [];\n const scheduler = new BufferScheduler(stream, bufferSize, maxConcurrency, async (body, length) => {\n const blockID = generateBlockID(blockIDPrefix, blockNum);\n blockList.push(blockID);\n blockNum++;\n await this.stageBlock(blockID, body, length, {\n conditions: options.conditions,\n encryptionScope: options.encryptionScope,\n tracingOptions: updatedOptions.tracingOptions,\n });\n // Update progress after block is successfully uploaded to server, in case of block trying\n transferProgress += length;\n if (options.onProgress) {\n options.onProgress({ loadedBytes: transferProgress });\n }\n }, \n // concurrency should set a smaller value than maxConcurrency, which is helpful to\n // reduce the possibility when a outgoing handler waits for stream data, in\n // this situation, outgoing handlers are blocked.\n // Outgoing queue shouldn't be empty.\n Math.ceil((maxConcurrency / 4) * 3));\n await scheduler.do();\n return await this.commitBlockList(blockList, Object.assign(Object.assign({}, options), { tracingOptions: Object.assign(Object.assign({}, options.tracingOptions), convertTracingToRequestOptionsBase(updatedOptions)) }));\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n}\n/**\n * PageBlobClient defines a set of operations applicable to page blobs.\n */\nexport class PageBlobClient extends BlobClient {\n constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, \n // Legacy, no fix for eslint error without breaking. Disable it for this interface.\n /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options*/\n options) {\n // In TypeScript we cannot simply pass all parameters to super() like below so have to duplicate the code instead.\n // super(s, credentialOrPipelineOrContainerNameOrOptions, blobNameOrOptions, options);\n let pipeline;\n let url;\n options = options || {};\n if (isPipelineLike(credentialOrPipelineOrContainerName)) {\n // (url: string, pipeline: Pipeline)\n url = urlOrConnectionString;\n pipeline = credentialOrPipelineOrContainerName;\n }\n else if ((isNode && credentialOrPipelineOrContainerName instanceof StorageSharedKeyCredential) ||\n credentialOrPipelineOrContainerName instanceof AnonymousCredential ||\n isTokenCredential(credentialOrPipelineOrContainerName)) {\n // (url: string, credential?: StorageSharedKeyCredential | AnonymousCredential | TokenCredential, options?: StoragePipelineOptions)\n url = urlOrConnectionString;\n options = blobNameOrOptions;\n pipeline = newPipeline(credentialOrPipelineOrContainerName, options);\n }\n else if (!credentialOrPipelineOrContainerName &&\n typeof credentialOrPipelineOrContainerName !== \"string\") {\n // (url: string, credential?: StorageSharedKeyCredential | AnonymousCredential | TokenCredential, options?: StoragePipelineOptions)\n // The second parameter is undefined. Use anonymous credential.\n url = urlOrConnectionString;\n pipeline = newPipeline(new AnonymousCredential(), options);\n }\n else if (credentialOrPipelineOrContainerName &&\n typeof credentialOrPipelineOrContainerName === \"string\" &&\n blobNameOrOptions &&\n typeof blobNameOrOptions === \"string\") {\n // (connectionString: string, containerName: string, blobName: string, options?: StoragePipelineOptions)\n const containerName = credentialOrPipelineOrContainerName;\n const blobName = blobNameOrOptions;\n const extractedCreds = extractConnectionStringParts(urlOrConnectionString);\n if (extractedCreds.kind === \"AccountConnString\") {\n if (isNode) {\n const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);\n url = appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName));\n if (!options.proxyOptions) {\n options.proxyOptions = getDefaultProxySettings(extractedCreds.proxyUri);\n }\n pipeline = newPipeline(sharedKeyCredential, options);\n }\n else {\n throw new Error(\"Account connection string is only supported in Node.js environment\");\n }\n }\n else if (extractedCreds.kind === \"SASConnString\") {\n url =\n appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName)) +\n \"?\" +\n extractedCreds.accountSas;\n pipeline = newPipeline(new AnonymousCredential(), options);\n }\n else {\n throw new Error(\"Connection string must be either an Account connection string or a SAS connection string\");\n }\n }\n else {\n throw new Error(\"Expecting non-empty strings for containerName and blobName parameters\");\n }\n super(url, pipeline);\n this.pageBlobContext = new PageBlob(this.storageClientContext);\n }\n /**\n * Creates a new PageBlobClient object identical to the source but with the\n * specified snapshot timestamp.\n * Provide \"\" will remove the snapshot and return a Client to the base blob.\n *\n * @param snapshot - The snapshot timestamp.\n * @returns A new PageBlobClient object identical to the source but with the specified snapshot timestamp.\n */\n withSnapshot(snapshot) {\n return new PageBlobClient(setURLParameter(this.url, URLConstants.Parameters.SNAPSHOT, snapshot.length === 0 ? undefined : snapshot), this.pipeline);\n }\n /**\n * Creates a page blob of the specified length. Call uploadPages to upload data\n * data to a page blob.\n * @see https://docs.microsoft.com/rest/api/storageservices/put-blob\n *\n * @param size - size of the page blob.\n * @param options - Options to the Page Blob Create operation.\n * @returns Response data for the Page Blob Create operation.\n */\n async create(size, options = {}) {\n var _a, _b, _c;\n options.conditions = options.conditions || {};\n const { span, updatedOptions } = createSpan(\"PageBlobClient-create\", options);\n try {\n ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n return await this.pageBlobContext.create(0, size, Object.assign({ abortSignal: options.abortSignal, blobHttpHeaders: options.blobHTTPHeaders, blobSequenceNumber: options.blobSequenceNumber, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope, immutabilityPolicyExpiry: (_b = options.immutabilityPolicy) === null || _b === void 0 ? void 0 : _b.expiriesOn, immutabilityPolicyMode: (_c = options.immutabilityPolicy) === null || _c === void 0 ? void 0 : _c.policyMode, legalHold: options.legalHold, tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags) }, convertTracingToRequestOptionsBase(updatedOptions)));\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * Creates a page blob of the specified length. Call uploadPages to upload data\n * data to a page blob. If the blob with the same name already exists, the content\n * of the existing blob will remain unchanged.\n * @see https://docs.microsoft.com/rest/api/storageservices/put-blob\n *\n * @param size - size of the page blob.\n * @param options -\n */\n async createIfNotExists(size, options = {}) {\n var _a, _b;\n const { span, updatedOptions } = createSpan(\"PageBlobClient-createIfNotExists\", options);\n try {\n const conditions = { ifNoneMatch: ETagAny };\n const res = await this.create(size, Object.assign(Object.assign({}, options), { conditions, tracingOptions: updatedOptions.tracingOptions }));\n return Object.assign(Object.assign({ succeeded: true }, res), { _response: res._response });\n }\n catch (e) {\n if (((_a = e.details) === null || _a === void 0 ? void 0 : _a.errorCode) === \"BlobAlreadyExists\") {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: \"Expected exception when creating a blob only if it does not already exist.\",\n });\n return Object.assign(Object.assign({ succeeded: false }, (_b = e.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e.response });\n }\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * Writes 1 or more pages to the page blob. The start and end offsets must be a multiple of 512.\n * @see https://docs.microsoft.com/rest/api/storageservices/put-page\n *\n * @param body - Data to upload\n * @param offset - Offset of destination page blob\n * @param count - Content length of the body, also number of bytes to be uploaded\n * @param options - Options to the Page Blob Upload Pages operation.\n * @returns Response data for the Page Blob Upload Pages operation.\n */\n async uploadPages(body, offset, count, options = {}) {\n var _a;\n options.conditions = options.conditions || {};\n const { span, updatedOptions } = createSpan(\"PageBlobClient-uploadPages\", options);\n try {\n ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n return await this.pageBlobContext.uploadPages(count, body, Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), requestOptions: {\n onUploadProgress: options.onProgress,\n }, range: rangeToString({ offset, count }), sequenceNumberAccessConditions: options.conditions, transactionalContentMD5: options.transactionalContentMD5, transactionalContentCrc64: options.transactionalContentCrc64, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * The Upload Pages operation writes a range of pages to a page blob where the\n * contents are read from a URL.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/put-page-from-url\n *\n * @param sourceURL - Specify a URL to the copy source, Shared Access Signature(SAS) maybe needed for authentication\n * @param sourceOffset - The source offset to copy from. Pass 0 to copy from the beginning of source page blob\n * @param destOffset - Offset of destination page blob\n * @param count - Number of bytes to be uploaded from source page blob\n * @param options -\n */\n async uploadPagesFromURL(sourceURL, sourceOffset, destOffset, count, options = {}) {\n var _a;\n options.conditions = options.conditions || {};\n options.sourceConditions = options.sourceConditions || {};\n const { span, updatedOptions } = createSpan(\"PageBlobClient-uploadPagesFromURL\", options);\n try {\n ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);\n return await this.pageBlobContext.uploadPagesFromURL(sourceURL, rangeToString({ offset: sourceOffset, count }), 0, rangeToString({ offset: destOffset, count }), Object.assign({ abortSignal: options.abortSignal, sourceContentMD5: options.sourceContentMD5, sourceContentCrc64: options.sourceContentCrc64, leaseAccessConditions: options.conditions, sequenceNumberAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), sourceModifiedAccessConditions: {\n sourceIfMatch: options.sourceConditions.ifMatch,\n sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,\n sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,\n sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince,\n }, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope, copySourceAuthorization: httpAuthorizationToString(options.sourceAuthorization) }, convertTracingToRequestOptionsBase(updatedOptions)));\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * Frees the specified pages from the page blob.\n * @see https://docs.microsoft.com/rest/api/storageservices/put-page\n *\n * @param offset - Starting byte position of the pages to clear.\n * @param count - Number of bytes to clear.\n * @param options - Options to the Page Blob Clear Pages operation.\n * @returns Response data for the Page Blob Clear Pages operation.\n */\n async clearPages(offset = 0, count, options = {}) {\n var _a;\n options.conditions = options.conditions || {};\n const { span, updatedOptions } = createSpan(\"PageBlobClient-clearPages\", options);\n try {\n return await this.pageBlobContext.clearPages(0, Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), range: rangeToString({ offset, count }), sequenceNumberAccessConditions: options.conditions, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * Returns the list of valid page ranges for a page blob or snapshot of a page blob.\n * @see https://docs.microsoft.com/rest/api/storageservices/get-page-ranges\n *\n * @param offset - Starting byte position of the page ranges.\n * @param count - Number of bytes to get.\n * @param options - Options to the Page Blob Get Ranges operation.\n * @returns Response data for the Page Blob Get Ranges operation.\n */\n async getPageRanges(offset = 0, count, options = {}) {\n var _a;\n options.conditions = options.conditions || {};\n const { span, updatedOptions } = createSpan(\"PageBlobClient-getPageRanges\", options);\n try {\n return await this.pageBlobContext\n .getPageRanges(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), range: rangeToString({ offset, count }) }, convertTracingToRequestOptionsBase(updatedOptions)))\n .then(rangeResponseFromModel);\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * getPageRangesSegment returns a single segment of page ranges starting from the\n * specified Marker. Use an empty Marker to start enumeration from the beginning.\n * After getting a segment, process it, and then call getPageRangesSegment again\n * (passing the the previously-returned Marker) to get the next segment.\n * @see https://docs.microsoft.com/rest/api/storageservices/get-page-ranges\n *\n * @param offset - Starting byte position of the page ranges.\n * @param count - Number of bytes to get.\n * @param marker - A string value that identifies the portion of the list to be returned with the next list operation.\n * @param options - Options to PageBlob Get Page Ranges Segment operation.\n */\n async listPageRangesSegment(offset = 0, count, marker, options = {}) {\n var _a;\n const { span, updatedOptions } = createSpan(\"PageBlobClient-getPageRangesSegment\", options);\n try {\n return await this.pageBlobContext.getPageRanges(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), range: rangeToString({ offset, count }), marker: marker, maxPageSize: options.maxPageSize }, convertTracingToRequestOptionsBase(updatedOptions)));\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * Returns an AsyncIterableIterator for {@link PageBlobGetPageRangesResponseModel}\n *\n * @param offset - Starting byte position of the page ranges.\n * @param count - Number of bytes to get.\n * @param marker - A string value that identifies the portion of\n * the get of page ranges to be returned with the next getting operation. The\n * operation returns the ContinuationToken value within the response body if the\n * getting operation did not return all page ranges remaining within the current page.\n * The ContinuationToken value can be used as the value for\n * the marker parameter in a subsequent call to request the next page of get\n * items. The marker value is opaque to the client.\n * @param options - Options to List Page Ranges operation.\n */\n listPageRangeItemSegments(offset = 0, count, marker, options = {}) {\n return __asyncGenerator(this, arguments, function* listPageRangeItemSegments_1() {\n let getPageRangeItemSegmentsResponse;\n if (!!marker || marker === undefined) {\n do {\n getPageRangeItemSegmentsResponse = yield __await(this.listPageRangesSegment(offset, count, marker, options));\n marker = getPageRangeItemSegmentsResponse.continuationToken;\n yield yield __await(yield __await(getPageRangeItemSegmentsResponse));\n } while (marker);\n }\n });\n }\n /**\n * Returns an AsyncIterableIterator of {@link PageRangeInfo} objects\n *\n * @param offset - Starting byte position of the page ranges.\n * @param count - Number of bytes to get.\n * @param options - Options to List Page Ranges operation.\n */\n listPageRangeItems(offset = 0, count, options = {}) {\n return __asyncGenerator(this, arguments, function* listPageRangeItems_1() {\n var e_1, _a;\n let marker;\n try {\n for (var _b = __asyncValues(this.listPageRangeItemSegments(offset, count, marker, options)), _c; _c = yield __await(_b.next()), !_c.done;) {\n const getPageRangesSegment = _c.value;\n yield __await(yield* __asyncDelegator(__asyncValues(ExtractPageRangeInfoItems(getPageRangesSegment))));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) yield __await(_a.call(_b));\n }\n finally { if (e_1) throw e_1.error; }\n }\n });\n }\n /**\n * Returns an async iterable iterator to list of page ranges for a page blob.\n * @see https://docs.microsoft.com/rest/api/storageservices/get-page-ranges\n *\n * .byPage() returns an async iterable iterator to list of page ranges for a page blob.\n *\n * Example using `for await` syntax:\n *\n * ```js\n * // Get the pageBlobClient before you run these snippets,\n * // Can be obtained from `blobServiceClient.getContainerClient(\"\").getPageBlobClient(\"\");`\n * let i = 1;\n * for await (const pageRange of pageBlobClient.listPageRanges()) {\n * console.log(`Page range ${i++}: ${pageRange.start} - ${pageRange.end}`);\n * }\n * ```\n *\n * Example using `iter.next()`:\n *\n * ```js\n * let i = 1;\n * let iter = pageBlobClient.listPageRanges();\n * let pageRangeItem = await iter.next();\n * while (!pageRangeItem.done) {\n * console.log(`Page range ${i++}: ${pageRangeItem.value.start} - ${pageRangeItem.value.end}, IsClear: ${pageRangeItem.value.isClear}`);\n * pageRangeItem = await iter.next();\n * }\n * ```\n *\n * Example using `byPage()`:\n *\n * ```js\n * // passing optional maxPageSize in the page settings\n * let i = 1;\n * for await (const response of pageBlobClient.listPageRanges().byPage({ maxPageSize: 20 })) {\n * for (const pageRange of response) {\n * console.log(`Page range ${i++}: ${pageRange.start} - ${pageRange.end}`);\n * }\n * }\n * ```\n *\n * Example using paging with a marker:\n *\n * ```js\n * let i = 1;\n * let iterator = pageBlobClient.listPageRanges().byPage({ maxPageSize: 2 });\n * let response = (await iterator.next()).value;\n *\n * // Prints 2 page ranges\n * for (const pageRange of response) {\n * console.log(`Page range ${i++}: ${pageRange.start} - ${pageRange.end}`);\n * }\n *\n * // Gets next marker\n * let marker = response.continuationToken;\n *\n * // Passing next marker as continuationToken\n *\n * iterator = pageBlobClient.listPageRanges().byPage({ continuationToken: marker, maxPageSize: 10 });\n * response = (await iterator.next()).value;\n *\n * // Prints 10 page ranges\n * for (const blob of response) {\n * console.log(`Page range ${i++}: ${pageRange.start} - ${pageRange.end}`);\n * }\n * ```\n * @param offset - Starting byte position of the page ranges.\n * @param count - Number of bytes to get.\n * @param options - Options to the Page Blob Get Ranges operation.\n * @returns An asyncIterableIterator that supports paging.\n */\n listPageRanges(offset = 0, count, options = {}) {\n options.conditions = options.conditions || {};\n // AsyncIterableIterator to iterate over blobs\n const iter = this.listPageRangeItems(offset, count, options);\n return {\n /**\n * The next method, part of the iteration protocol\n */\n next() {\n return iter.next();\n },\n /**\n * The connection to the async iterator, part of the iteration protocol\n */\n [Symbol.asyncIterator]() {\n return this;\n },\n /**\n * Return an AsyncIterableIterator that works a page at a time\n */\n byPage: (settings = {}) => {\n return this.listPageRangeItemSegments(offset, count, settings.continuationToken, Object.assign({ maxPageSize: settings.maxPageSize }, options));\n },\n };\n }\n /**\n * Gets the collection of page ranges that differ between a specified snapshot and this page blob.\n * @see https://docs.microsoft.com/rest/api/storageservices/get-page-ranges\n *\n * @param offset - Starting byte position of the page blob\n * @param count - Number of bytes to get ranges diff.\n * @param prevSnapshot - Timestamp of snapshot to retrieve the difference.\n * @param options - Options to the Page Blob Get Page Ranges Diff operation.\n * @returns Response data for the Page Blob Get Page Range Diff operation.\n */\n async getPageRangesDiff(offset, count, prevSnapshot, options = {}) {\n var _a;\n options.conditions = options.conditions || {};\n const { span, updatedOptions } = createSpan(\"PageBlobClient-getPageRangesDiff\", options);\n try {\n return await this.pageBlobContext\n .getPageRangesDiff(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), prevsnapshot: prevSnapshot, range: rangeToString({ offset, count }) }, convertTracingToRequestOptionsBase(updatedOptions)))\n .then(rangeResponseFromModel);\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * getPageRangesDiffSegment returns a single segment of page ranges starting from the\n * specified Marker for difference between previous snapshot and the target page blob.\n * Use an empty Marker to start enumeration from the beginning.\n * After getting a segment, process it, and then call getPageRangesDiffSegment again\n * (passing the the previously-returned Marker) to get the next segment.\n * @see https://docs.microsoft.com/rest/api/storageservices/get-page-ranges\n *\n * @param offset - Starting byte position of the page ranges.\n * @param count - Number of bytes to get.\n * @param prevSnapshotOrUrl - Timestamp of snapshot to retrieve the difference or URL of snapshot to retrieve the difference.\n * @param marker - A string value that identifies the portion of the get to be returned with the next get operation.\n * @param options - Options to the Page Blob Get Page Ranges Diff operation.\n */\n async listPageRangesDiffSegment(offset, count, prevSnapshotOrUrl, marker, options) {\n var _a;\n const { span, updatedOptions } = createSpan(\"PageBlobClient-getPageRangesDiffSegment\", options);\n try {\n return await this.pageBlobContext.getPageRangesDiff(Object.assign({ abortSignal: options === null || options === void 0 ? void 0 : options.abortSignal, leaseAccessConditions: options === null || options === void 0 ? void 0 : options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.conditions), { ifTags: (_a = options === null || options === void 0 ? void 0 : options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), prevsnapshot: prevSnapshotOrUrl, range: rangeToString({\n offset: offset,\n count: count,\n }), marker: marker, maxPageSize: options === null || options === void 0 ? void 0 : options.maxPageSize }, convertTracingToRequestOptionsBase(updatedOptions)));\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * Returns an AsyncIterableIterator for {@link PageBlobGetPageRangesDiffResponseModel}\n *\n *\n * @param offset - Starting byte position of the page ranges.\n * @param count - Number of bytes to get.\n * @param prevSnapshotOrUrl - Timestamp of snapshot to retrieve the difference or URL of snapshot to retrieve the difference.\n * @param marker - A string value that identifies the portion of\n * the get of page ranges to be returned with the next getting operation. The\n * operation returns the ContinuationToken value within the response body if the\n * getting operation did not return all page ranges remaining within the current page.\n * The ContinuationToken value can be used as the value for\n * the marker parameter in a subsequent call to request the next page of get\n * items. The marker value is opaque to the client.\n * @param options - Options to the Page Blob Get Page Ranges Diff operation.\n */\n listPageRangeDiffItemSegments(offset, count, prevSnapshotOrUrl, marker, options) {\n return __asyncGenerator(this, arguments, function* listPageRangeDiffItemSegments_1() {\n let getPageRangeItemSegmentsResponse;\n if (!!marker || marker === undefined) {\n do {\n getPageRangeItemSegmentsResponse = yield __await(this.listPageRangesDiffSegment(offset, count, prevSnapshotOrUrl, marker, options));\n marker = getPageRangeItemSegmentsResponse.continuationToken;\n yield yield __await(yield __await(getPageRangeItemSegmentsResponse));\n } while (marker);\n }\n });\n }\n /**\n * Returns an AsyncIterableIterator of {@link PageRangeInfo} objects\n *\n * @param offset - Starting byte position of the page ranges.\n * @param count - Number of bytes to get.\n * @param prevSnapshotOrUrl - Timestamp of snapshot to retrieve the difference or URL of snapshot to retrieve the difference.\n * @param options - Options to the Page Blob Get Page Ranges Diff operation.\n */\n listPageRangeDiffItems(offset, count, prevSnapshotOrUrl, options) {\n return __asyncGenerator(this, arguments, function* listPageRangeDiffItems_1() {\n var e_2, _a;\n let marker;\n try {\n for (var _b = __asyncValues(this.listPageRangeDiffItemSegments(offset, count, prevSnapshotOrUrl, marker, options)), _c; _c = yield __await(_b.next()), !_c.done;) {\n const getPageRangesSegment = _c.value;\n yield __await(yield* __asyncDelegator(__asyncValues(ExtractPageRangeInfoItems(getPageRangesSegment))));\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) yield __await(_a.call(_b));\n }\n finally { if (e_2) throw e_2.error; }\n }\n });\n }\n /**\n * Returns an async iterable iterator to list of page ranges that differ between a specified snapshot and this page blob.\n * @see https://docs.microsoft.com/rest/api/storageservices/get-page-ranges\n *\n * .byPage() returns an async iterable iterator to list of page ranges that differ between a specified snapshot and this page blob.\n *\n * Example using `for await` syntax:\n *\n * ```js\n * // Get the pageBlobClient before you run these snippets,\n * // Can be obtained from `blobServiceClient.getContainerClient(\"\").getPageBlobClient(\"\");`\n * let i = 1;\n * for await (const pageRange of pageBlobClient.listPageRangesDiff()) {\n * console.log(`Page range ${i++}: ${pageRange.start} - ${pageRange.end}`);\n * }\n * ```\n *\n * Example using `iter.next()`:\n *\n * ```js\n * let i = 1;\n * let iter = pageBlobClient.listPageRangesDiff();\n * let pageRangeItem = await iter.next();\n * while (!pageRangeItem.done) {\n * console.log(`Page range ${i++}: ${pageRangeItem.value.start} - ${pageRangeItem.value.end}, IsClear: ${pageRangeItem.value.isClear}`);\n * pageRangeItem = await iter.next();\n * }\n * ```\n *\n * Example using `byPage()`:\n *\n * ```js\n * // passing optional maxPageSize in the page settings\n * let i = 1;\n * for await (const response of pageBlobClient.listPageRangesDiff().byPage({ maxPageSize: 20 })) {\n * for (const pageRange of response) {\n * console.log(`Page range ${i++}: ${pageRange.start} - ${pageRange.end}`);\n * }\n * }\n * ```\n *\n * Example using paging with a marker:\n *\n * ```js\n * let i = 1;\n * let iterator = pageBlobClient.listPageRangesDiff().byPage({ maxPageSize: 2 });\n * let response = (await iterator.next()).value;\n *\n * // Prints 2 page ranges\n * for (const pageRange of response) {\n * console.log(`Page range ${i++}: ${pageRange.start} - ${pageRange.end}`);\n * }\n *\n * // Gets next marker\n * let marker = response.continuationToken;\n *\n * // Passing next marker as continuationToken\n *\n * iterator = pageBlobClient.listPageRangesDiff().byPage({ continuationToken: marker, maxPageSize: 10 });\n * response = (await iterator.next()).value;\n *\n * // Prints 10 page ranges\n * for (const blob of response) {\n * console.log(`Page range ${i++}: ${pageRange.start} - ${pageRange.end}`);\n * }\n * ```\n * @param offset - Starting byte position of the page ranges.\n * @param count - Number of bytes to get.\n * @param prevSnapshot - Timestamp of snapshot to retrieve the difference.\n * @param options - Options to the Page Blob Get Ranges operation.\n * @returns An asyncIterableIterator that supports paging.\n */\n listPageRangesDiff(offset, count, prevSnapshot, options = {}) {\n options.conditions = options.conditions || {};\n // AsyncIterableIterator to iterate over blobs\n const iter = this.listPageRangeDiffItems(offset, count, prevSnapshot, Object.assign({}, options));\n return {\n /**\n * The next method, part of the iteration protocol\n */\n next() {\n return iter.next();\n },\n /**\n * The connection to the async iterator, part of the iteration protocol\n */\n [Symbol.asyncIterator]() {\n return this;\n },\n /**\n * Return an AsyncIterableIterator that works a page at a time\n */\n byPage: (settings = {}) => {\n return this.listPageRangeDiffItemSegments(offset, count, prevSnapshot, settings.continuationToken, Object.assign({ maxPageSize: settings.maxPageSize }, options));\n },\n };\n }\n /**\n * Gets the collection of page ranges that differ between a specified snapshot and this page blob for managed disks.\n * @see https://docs.microsoft.com/rest/api/storageservices/get-page-ranges\n *\n * @param offset - Starting byte position of the page blob\n * @param count - Number of bytes to get ranges diff.\n * @param prevSnapshotUrl - URL of snapshot to retrieve the difference.\n * @param options - Options to the Page Blob Get Page Ranges Diff operation.\n * @returns Response data for the Page Blob Get Page Range Diff operation.\n */\n async getPageRangesDiffForManagedDisks(offset, count, prevSnapshotUrl, options = {}) {\n var _a;\n options.conditions = options.conditions || {};\n const { span, updatedOptions } = createSpan(\"PageBlobClient-GetPageRangesDiffForManagedDisks\", options);\n try {\n return await this.pageBlobContext\n .getPageRangesDiff(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), prevSnapshotUrl, range: rangeToString({ offset, count }) }, convertTracingToRequestOptionsBase(updatedOptions)))\n .then(rangeResponseFromModel);\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * Resizes the page blob to the specified size (which must be a multiple of 512).\n * @see https://docs.microsoft.com/rest/api/storageservices/set-blob-properties\n *\n * @param size - Target size\n * @param options - Options to the Page Blob Resize operation.\n * @returns Response data for the Page Blob Resize operation.\n */\n async resize(size, options = {}) {\n var _a;\n options.conditions = options.conditions || {};\n const { span, updatedOptions } = createSpan(\"PageBlobClient-resize\", options);\n try {\n return await this.pageBlobContext.resize(size, Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * Sets a page blob's sequence number.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-blob-properties\n *\n * @param sequenceNumberAction - Indicates how the service should modify the blob's sequence number.\n * @param sequenceNumber - Required if sequenceNumberAction is max or update\n * @param options - Options to the Page Blob Update Sequence Number operation.\n * @returns Response data for the Page Blob Update Sequence Number operation.\n */\n async updateSequenceNumber(sequenceNumberAction, sequenceNumber, options = {}) {\n var _a;\n options.conditions = options.conditions || {};\n const { span, updatedOptions } = createSpan(\"PageBlobClient-updateSequenceNumber\", options);\n try {\n return await this.pageBlobContext.updateSequenceNumber(sequenceNumberAction, Object.assign({ abortSignal: options.abortSignal, blobSequenceNumber: sequenceNumber, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * Begins an operation to start an incremental copy from one page blob's snapshot to this page blob.\n * The snapshot is copied such that only the differential changes between the previously\n * copied snapshot are transferred to the destination.\n * The copied snapshots are complete copies of the original snapshot and can be read or copied from as usual.\n * @see https://docs.microsoft.com/rest/api/storageservices/incremental-copy-blob\n * @see https://docs.microsoft.com/en-us/azure/virtual-machines/windows/incremental-snapshots\n *\n * @param copySource - Specifies the name of the source page blob snapshot. For example,\n * https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=\n * @param options - Options to the Page Blob Copy Incremental operation.\n * @returns Response data for the Page Blob Copy Incremental operation.\n */\n async startCopyIncremental(copySource, options = {}) {\n var _a;\n const { span, updatedOptions } = createSpan(\"PageBlobClient-startCopyIncremental\", options);\n try {\n return await this.pageBlobContext.copyIncremental(copySource, Object.assign({ abortSignal: options.abortSignal, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));\n }\n catch (e) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n}\n//# sourceMappingURL=Clients.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n// This file is used as a shim of \"BlobDownloadResponse\" for some browser bundlers\n// when trying to bundle \"BlobDownloadResponse\"\n// \"BlobDownloadResponse\" class is only available in Node.js runtime\nexport const BlobDownloadResponse = 1;\n//# sourceMappingURL=BlobDownloadResponse.browser.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { BaseRequestPolicy, } from \"./requestPolicy\";\nimport { SpanKind, SpanStatusCode, createSpanFunction, getTraceParentHeader, isSpanContextValid, } from \"@azure/core-tracing\";\nimport { logger } from \"../log\";\nconst createSpan = createSpanFunction({\n packagePrefix: \"\",\n namespace: \"\",\n});\n/**\n * Creates a policy that wraps outgoing requests with a tracing span.\n * @param tracingOptions - Tracing options.\n * @returns An instance of the {@link TracingPolicy} class.\n */\nexport function tracingPolicy(tracingOptions = {}) {\n return {\n create(nextPolicy, options) {\n return new TracingPolicy(nextPolicy, options, tracingOptions);\n },\n };\n}\n/**\n * A policy that wraps outgoing requests with a tracing span.\n */\nexport class TracingPolicy extends BaseRequestPolicy {\n constructor(nextPolicy, options, tracingOptions) {\n super(nextPolicy, options);\n this.userAgent = tracingOptions.userAgent;\n }\n async sendRequest(request) {\n if (!request.tracingContext) {\n return this._nextPolicy.sendRequest(request);\n }\n const span = this.tryCreateSpan(request);\n if (!span) {\n return this._nextPolicy.sendRequest(request);\n }\n try {\n const response = await this._nextPolicy.sendRequest(request);\n this.tryProcessResponse(span, response);\n return response;\n }\n catch (err) {\n this.tryProcessError(span, err);\n throw err;\n }\n }\n tryCreateSpan(request) {\n var _a;\n try {\n // Passing spanOptions as part of tracingOptions to maintain compatibility @azure/core-tracing@preview.13 and earlier.\n // We can pass this as a separate parameter once we upgrade to the latest core-tracing.\n const { span } = createSpan(`HTTP ${request.method}`, {\n tracingOptions: {\n spanOptions: Object.assign(Object.assign({}, request.spanOptions), { kind: SpanKind.CLIENT }),\n tracingContext: request.tracingContext,\n },\n });\n // If the span is not recording, don't do any more work.\n if (!span.isRecording()) {\n span.end();\n return undefined;\n }\n const namespaceFromContext = (_a = request.tracingContext) === null || _a === void 0 ? void 0 : _a.getValue(Symbol.for(\"az.namespace\"));\n if (typeof namespaceFromContext === \"string\") {\n span.setAttribute(\"az.namespace\", namespaceFromContext);\n }\n span.setAttributes({\n \"http.method\": request.method,\n \"http.url\": request.url,\n requestId: request.requestId,\n });\n if (this.userAgent) {\n span.setAttribute(\"http.user_agent\", this.userAgent);\n }\n // set headers\n const spanContext = span.spanContext();\n const traceParentHeader = getTraceParentHeader(spanContext);\n if (traceParentHeader && isSpanContextValid(spanContext)) {\n request.headers.set(\"traceparent\", traceParentHeader);\n const traceState = spanContext.traceState && spanContext.traceState.serialize();\n // if tracestate is set, traceparent MUST be set, so only set tracestate after traceparent\n if (traceState) {\n request.headers.set(\"tracestate\", traceState);\n }\n }\n return span;\n }\n catch (error) {\n logger.warning(`Skipping creating a tracing span due to an error: ${error.message}`);\n return undefined;\n }\n }\n tryProcessError(span, err) {\n try {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: err.message,\n });\n if (err.statusCode) {\n span.setAttribute(\"http.status_code\", err.statusCode);\n }\n span.end();\n }\n catch (error) {\n logger.warning(`Skipping tracing span processing due to an error: ${error.message}`);\n }\n }\n tryProcessResponse(span, response) {\n try {\n span.setAttribute(\"http.status_code\", response.status);\n const serviceRequestId = response.headers.get(\"x-ms-request-id\");\n if (serviceRequestId) {\n span.setAttribute(\"serviceRequestId\", serviceRequestId);\n }\n span.setStatus({\n code: SpanStatusCode.OK,\n });\n span.end();\n }\n catch (error) {\n logger.warning(`Skipping tracing span processing due to an error: ${error.message}`);\n }\n }\n}\n//# sourceMappingURL=tracingPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nconst VERSION = \"00\";\n/**\n * Generates a `SpanContext` given a `traceparent` header value.\n * @param traceParent - Serialized span context data as a `traceparent` header value.\n * @returns The `SpanContext` generated from the `traceparent` value.\n */\nexport function extractSpanContextFromTraceParentHeader(traceParentHeader) {\n const parts = traceParentHeader.split(\"-\");\n if (parts.length !== 4) {\n return;\n }\n const [version, traceId, spanId, traceOptions] = parts;\n if (version !== VERSION) {\n return;\n }\n const traceFlags = parseInt(traceOptions, 16);\n const spanContext = {\n spanId,\n traceId,\n traceFlags\n };\n return spanContext;\n}\n/**\n * Generates a `traceparent` value given a span context.\n * @param spanContext - Contains context for a specific span.\n * @returns The `spanContext` represented as a `traceparent` value.\n */\nexport function getTraceParentHeader(spanContext) {\n const missingFields = [];\n if (!spanContext.traceId) {\n missingFields.push(\"traceId\");\n }\n if (!spanContext.spanId) {\n missingFields.push(\"spanId\");\n }\n if (missingFields.length) {\n return;\n }\n const flags = spanContext.traceFlags || 0 /* NONE */;\n const hexFlags = flags.toString(16);\n const traceFlags = hexFlags.length === 1 ? `0${hexFlags}` : hexFlags;\n // https://www.w3.org/TR/trace-context/#traceparent-header-field-values\n return `${VERSION}-${spanContext.traceId}-${spanContext.spanId}-${traceFlags}`;\n}\n//# sourceMappingURL=traceParentHeader.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { BaseRequestPolicy, } from \"./requestPolicy\";\n/**\n * By default, HTTP connections are maintained for future requests.\n */\nexport const DefaultKeepAliveOptions = {\n enable: true,\n};\n/**\n * Creates a policy that controls whether HTTP connections are maintained on future requests.\n * @param keepAliveOptions - Keep alive options. By default, HTTP connections are maintained for future requests.\n * @returns An instance of the {@link KeepAlivePolicy}\n */\nexport function keepAlivePolicy(keepAliveOptions) {\n return {\n create: (nextPolicy, options) => {\n return new KeepAlivePolicy(nextPolicy, options, keepAliveOptions || DefaultKeepAliveOptions);\n },\n };\n}\n/**\n * KeepAlivePolicy is a policy used to control keep alive settings for every request.\n */\nexport class KeepAlivePolicy extends BaseRequestPolicy {\n /**\n * Creates an instance of KeepAlivePolicy.\n *\n * @param nextPolicy -\n * @param options -\n * @param keepAliveOptions -\n */\n constructor(nextPolicy, options, keepAliveOptions) {\n super(nextPolicy, options);\n this.keepAliveOptions = keepAliveOptions;\n }\n /**\n * Sends out request.\n *\n * @param request -\n * @returns\n */\n async sendRequest(request) {\n request.keepAlive = this.keepAliveOptions.enable;\n return this._nextPolicy.sendRequest(request);\n }\n}\n//# sourceMappingURL=keepAlivePolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/*\n * NOTE: When moving this file, please update \"browser\" section in package.json\n */\nimport { BaseRequestPolicy, } from \"./requestPolicy\";\nconst errorMessage = \"DisableResponseDecompressionPolicy is not supported in browser environment\";\n/**\n * {@link DisableResponseDecompressionPolicy} is not supported in browser and attempting\n * to use it will results in error being thrown.\n */\nexport function disableResponseDecompressionPolicy() {\n return {\n create: (_nextPolicy, _options) => {\n throw new Error(errorMessage);\n },\n };\n}\nexport class DisableResponseDecompressionPolicy extends BaseRequestPolicy {\n constructor(nextPolicy, options) {\n super(nextPolicy, options);\n throw new Error(errorMessage);\n }\n async sendRequest(_request) {\n throw new Error(errorMessage);\n }\n}\n//# sourceMappingURL=disableResponseDecompressionPolicy.browser.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { BaseRequestPolicy, HttpHeaders, isNode, } from \"@azure/core-http\";\nimport { HeaderConstants } from \"../utils/constants\";\n/**\n * TelemetryPolicy is a policy used to tag user-agent header for every requests.\n */\nexport class TelemetryPolicy extends BaseRequestPolicy {\n /**\n * Creates an instance of TelemetryPolicy.\n * @param nextPolicy -\n * @param options -\n * @param telemetry -\n */\n constructor(nextPolicy, options, telemetry) {\n super(nextPolicy, options);\n this.telemetry = telemetry;\n }\n /**\n * Sends out request.\n *\n * @param request -\n */\n async sendRequest(request) {\n if (isNode) {\n if (!request.headers) {\n request.headers = new HttpHeaders();\n }\n if (!request.headers.get(HeaderConstants.USER_AGENT)) {\n request.headers.set(HeaderConstants.USER_AGENT, this.telemetry);\n }\n }\n return this._nextPolicy.sendRequest(request);\n }\n}\n//# sourceMappingURL=TelemetryPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { isNode, } from \"@azure/core-http\";\nimport * as os from \"os\";\nimport { TelemetryPolicy } from \"./policies/TelemetryPolicy\";\nimport { SDK_VERSION } from \"./utils/constants\";\n/**\n * TelemetryPolicyFactory is a factory class helping generating {@link TelemetryPolicy} objects.\n */\nexport class TelemetryPolicyFactory {\n /**\n * Creates an instance of TelemetryPolicyFactory.\n * @param telemetry -\n */\n constructor(telemetry) {\n const userAgentInfo = [];\n if (isNode) {\n if (telemetry) {\n const telemetryString = telemetry.userAgentPrefix || \"\";\n if (telemetryString.length > 0 && userAgentInfo.indexOf(telemetryString) === -1) {\n userAgentInfo.push(telemetryString);\n }\n }\n // e.g. azsdk-js-storageblob/10.0.0\n const libInfo = `azsdk-js-storageblob/${SDK_VERSION}`;\n if (userAgentInfo.indexOf(libInfo) === -1) {\n userAgentInfo.push(libInfo);\n }\n // e.g. (NODE-VERSION 4.9.1; Windows_NT 10.0.16299)\n let runtimeInfo = `(NODE-VERSION ${process.version})`;\n if (os) {\n runtimeInfo = `(NODE-VERSION ${process.version}; ${os.type()} ${os.release()})`;\n }\n if (userAgentInfo.indexOf(runtimeInfo) === -1) {\n userAgentInfo.push(runtimeInfo);\n }\n }\n this.telemetryString = userAgentInfo.join(\" \");\n }\n /**\n * Creates a TelemetryPolicy object.\n *\n * @param nextPolicy -\n * @param options -\n */\n create(nextPolicy, options) {\n return new TelemetryPolicy(nextPolicy, options, this.telemetryString);\n }\n}\n//# sourceMappingURL=TelemetryPolicyFactory.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { DefaultHttpClient } from \"@azure/core-http\";\nconst _defaultHttpClient = new DefaultHttpClient();\nexport function getCachedDefaultHttpClient() {\n return _defaultHttpClient;\n}\n//# sourceMappingURL=cache.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { URLBuilder } from \"@azure/core-http\";\nimport { BaseRequestPolicy, } from \"@azure/core-http\";\nimport { delay } from \"@azure/core-http\";\n/**\n * A set of constants used internally when processing requests.\n */\nconst Constants = {\n DefaultScope: \"/.default\",\n /**\n * Defines constants for use with HTTP headers.\n */\n HeaderConstants: {\n /**\n * The Authorization header.\n */\n AUTHORIZATION: \"authorization\",\n },\n};\n// Default options for the cycler if none are provided\nconst DEFAULT_CYCLER_OPTIONS = {\n forcedRefreshWindowInMs: 1000,\n retryIntervalInMs: 3000,\n refreshWindowInMs: 1000 * 60 * 2, // Start refreshing 2m before expiry\n};\n/**\n * Converts an an unreliable access token getter (which may resolve with null)\n * into an AccessTokenGetter by retrying the unreliable getter in a regular\n * interval.\n *\n * @param getAccessToken - a function that produces a promise of an access\n * token that may fail by returning null\n * @param retryIntervalInMs - the time (in milliseconds) to wait between retry\n * attempts\n * @param timeoutInMs - the timestamp after which the refresh attempt will fail,\n * throwing an exception\n * @returns - a promise that, if it resolves, will resolve with an access token\n */\nasync function beginRefresh(getAccessToken, retryIntervalInMs, timeoutInMs) {\n // This wrapper handles exceptions gracefully as long as we haven't exceeded\n // the timeout.\n async function tryGetAccessToken() {\n if (Date.now() < timeoutInMs) {\n try {\n return await getAccessToken();\n }\n catch (_a) {\n return null;\n }\n }\n else {\n const finalToken = await getAccessToken();\n // Timeout is up, so throw if it's still null\n if (finalToken === null) {\n throw new Error(\"Failed to refresh access token.\");\n }\n return finalToken;\n }\n }\n let token = await tryGetAccessToken();\n while (token === null) {\n await delay(retryIntervalInMs);\n token = await tryGetAccessToken();\n }\n return token;\n}\n/**\n * Creates a token cycler from a credential, scopes, and optional settings.\n *\n * A token cycler represents a way to reliably retrieve a valid access token\n * from a TokenCredential. It will handle initializing the token, refreshing it\n * when it nears expiration, and synchronizes refresh attempts to avoid\n * concurrency hazards.\n *\n * @param credential - the underlying TokenCredential that provides the access\n * token\n * @param scopes - the scopes to request authorization for\n * @param tokenCyclerOptions - optionally override default settings for the cycler\n *\n * @returns - a function that reliably produces a valid access token\n */\nfunction createTokenCycler(credential, scopes, tokenCyclerOptions) {\n let refreshWorker = null;\n let token = null;\n const options = Object.assign(Object.assign({}, DEFAULT_CYCLER_OPTIONS), tokenCyclerOptions);\n /**\n * This little holder defines several predicates that we use to construct\n * the rules of refreshing the token.\n */\n const cycler = {\n /**\n * Produces true if a refresh job is currently in progress.\n */\n get isRefreshing() {\n return refreshWorker !== null;\n },\n /**\n * Produces true if the cycler SHOULD refresh (we are within the refresh\n * window and not already refreshing)\n */\n get shouldRefresh() {\n var _a;\n return (!cycler.isRefreshing &&\n ((_a = token === null || token === void 0 ? void 0 : token.expiresOnTimestamp) !== null && _a !== void 0 ? _a : 0) - options.refreshWindowInMs < Date.now());\n },\n /**\n * Produces true if the cycler MUST refresh (null or nearly-expired\n * token).\n */\n get mustRefresh() {\n return (token === null || token.expiresOnTimestamp - options.forcedRefreshWindowInMs < Date.now());\n },\n };\n /**\n * Starts a refresh job or returns the existing job if one is already\n * running.\n */\n function refresh(getTokenOptions) {\n var _a;\n if (!cycler.isRefreshing) {\n // We bind `scopes` here to avoid passing it around a lot\n const tryGetAccessToken = () => credential.getToken(scopes, getTokenOptions);\n // Take advantage of promise chaining to insert an assignment to `token`\n // before the refresh can be considered done.\n refreshWorker = beginRefresh(tryGetAccessToken, options.retryIntervalInMs, \n // If we don't have a token, then we should timeout immediately\n (_a = token === null || token === void 0 ? void 0 : token.expiresOnTimestamp) !== null && _a !== void 0 ? _a : Date.now())\n .then((_token) => {\n refreshWorker = null;\n token = _token;\n return token;\n })\n .catch((reason) => {\n // We also should reset the refresher if we enter a failed state. All\n // existing awaiters will throw, but subsequent requests will start a\n // new retry chain.\n refreshWorker = null;\n token = null;\n throw reason;\n });\n }\n return refreshWorker;\n }\n return async (tokenOptions) => {\n //\n // Simple rules:\n // - If we MUST refresh, then return the refresh task, blocking\n // the pipeline until a token is available.\n // - If we SHOULD refresh, then run refresh but don't return it\n // (we can still use the cached token).\n // - Return the token, since it's fine if we didn't return in\n // step 1.\n //\n if (cycler.mustRefresh)\n return refresh(tokenOptions);\n if (cycler.shouldRefresh) {\n refresh(tokenOptions);\n }\n return token;\n };\n}\n/**\n * We will retrieve the challenge only if the response status code was 401,\n * and if the response contained the header \"WWW-Authenticate\" with a non-empty value.\n */\nfunction getChallenge(response) {\n const challenge = response.headers.get(\"WWW-Authenticate\");\n if (response.status === 401 && challenge) {\n return challenge;\n }\n return;\n}\n/**\n * Converts: `Bearer a=\"b\" c=\"d\"`.\n * Into: `[ { a: 'b', c: 'd' }]`.\n *\n * @internal\n */\nfunction parseChallenge(challenge) {\n const bearerChallenge = challenge.slice(\"Bearer \".length);\n const challengeParts = `${bearerChallenge.trim()} `.split(\" \").filter((x) => x);\n const keyValuePairs = challengeParts.map((keyValue) => (([key, value]) => ({ [key]: value }))(keyValue.trim().split(\"=\")));\n // Key-value pairs to plain object:\n return keyValuePairs.reduce((a, b) => (Object.assign(Object.assign({}, a), b)), {});\n}\n// #endregion\n/**\n * Creates a new factory for a RequestPolicy that applies a bearer token to\n * the requests' `Authorization` headers.\n *\n * @param credential - The TokenCredential implementation that can supply the bearer token.\n * @param scopes - The scopes for which the bearer token applies.\n */\nexport function storageBearerTokenChallengeAuthenticationPolicy(credential, scopes) {\n // This simple function encapsulates the entire process of reliably retrieving the token\n let getToken = createTokenCycler(credential, scopes);\n class StorageBearerTokenChallengeAuthenticationPolicy extends BaseRequestPolicy {\n constructor(nextPolicy, options) {\n super(nextPolicy, options);\n }\n async sendRequest(webResource) {\n if (!webResource.url.toLowerCase().startsWith(\"https://\")) {\n throw new Error(\"Bearer token authentication is not permitted for non-TLS protected (non-https) URLs.\");\n }\n const getTokenInternal = getToken;\n const token = (await getTokenInternal({\n abortSignal: webResource.abortSignal,\n tracingOptions: {\n tracingContext: webResource.tracingContext,\n },\n })).token;\n webResource.headers.set(Constants.HeaderConstants.AUTHORIZATION, `Bearer ${token}`);\n const response = await this._nextPolicy.sendRequest(webResource);\n if ((response === null || response === void 0 ? void 0 : response.status) === 401) {\n const challenge = getChallenge(response);\n if (challenge) {\n const challengeInfo = parseChallenge(challenge);\n const challengeScopes = challengeInfo.resource_id + Constants.DefaultScope;\n const parsedAuthUri = URLBuilder.parse(challengeInfo.authorization_uri);\n const pathSegments = parsedAuthUri.getPath().split(\"/\");\n const tenantId = pathSegments[1];\n const getTokenForChallenge = createTokenCycler(credential, challengeScopes);\n const tokenForChallenge = (await getTokenForChallenge({\n abortSignal: webResource.abortSignal,\n tracingOptions: {\n tracingContext: webResource.tracingContext,\n },\n tenantId: tenantId,\n })).token;\n getToken = getTokenForChallenge;\n webResource.headers.set(Constants.HeaderConstants.AUTHORIZATION, `Bearer ${tokenForChallenge}`);\n return this._nextPolicy.sendRequest(webResource);\n }\n }\n return response;\n }\n }\n return {\n create: (nextPolicy, options) => {\n return new StorageBearerTokenChallengeAuthenticationPolicy(nextPolicy, options);\n },\n };\n}\n//# sourceMappingURL=StorageBearerTokenChallengeAuthenticationPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { BaseRequestPolicy, deserializationPolicy, disableResponseDecompressionPolicy, HttpHeaders, RequestPolicyOptions, WebResource, proxyPolicy, isNode, isTokenCredential, tracingPolicy, logPolicy, keepAlivePolicy, generateClientRequestIdPolicy, } from \"@azure/core-http\";\nimport { logger } from \"./log\";\nimport { StorageBrowserPolicyFactory } from \"./StorageBrowserPolicyFactory\";\nimport { StorageRetryPolicyFactory } from \"./StorageRetryPolicyFactory\";\nimport { AnonymousCredential } from \"./credentials/AnonymousCredential\";\nimport { StorageOAuthScopes, StorageBlobLoggingAllowedHeaderNames, StorageBlobLoggingAllowedQueryParameters, } from \"./utils/constants\";\nimport { TelemetryPolicyFactory } from \"./TelemetryPolicyFactory\";\nimport { getCachedDefaultHttpClient } from \"./utils/cache\";\nimport { attachCredential } from \"./utils/utils.common\";\nimport { storageBearerTokenChallengeAuthenticationPolicy } from \"./policies/StorageBearerTokenChallengeAuthenticationPolicy\";\n// Export following interfaces and types for customers who want to implement their\n// own RequestPolicy or HTTPClient\nexport { BaseRequestPolicy, StorageOAuthScopes, deserializationPolicy, HttpHeaders, WebResource, RequestPolicyOptions, };\n/**\n * A helper to decide if a given argument satisfies the Pipeline contract\n * @param pipeline - An argument that may be a Pipeline\n * @returns true when the argument satisfies the Pipeline contract\n */\nexport function isPipelineLike(pipeline) {\n if (!pipeline || typeof pipeline !== \"object\") {\n return false;\n }\n const castPipeline = pipeline;\n return (Array.isArray(castPipeline.factories) &&\n typeof castPipeline.options === \"object\" &&\n typeof castPipeline.toServiceClientOptions === \"function\");\n}\n/**\n * A Pipeline class containing HTTP request policies.\n * You can create a default Pipeline by calling {@link newPipeline}.\n * Or you can create a Pipeline with your own policies by the constructor of Pipeline.\n *\n * Refer to {@link newPipeline} and provided policies before implementing your\n * customized Pipeline.\n */\nexport class Pipeline {\n /**\n * Creates an instance of Pipeline. Customize HTTPClient by implementing IHttpClient interface.\n *\n * @param factories -\n * @param options -\n */\n constructor(factories, options = {}) {\n this.factories = factories;\n // when options.httpClient is not specified, passing in a DefaultHttpClient instance to\n // avoid each client creating its own http client.\n this.options = Object.assign(Object.assign({}, options), { httpClient: options.httpClient || getCachedDefaultHttpClient() });\n }\n /**\n * Transfer Pipeline object to ServiceClientOptions object which is required by\n * ServiceClient constructor.\n *\n * @returns The ServiceClientOptions object from this Pipeline.\n */\n toServiceClientOptions() {\n return {\n httpClient: this.options.httpClient,\n requestPolicyFactories: this.factories,\n };\n }\n}\n/**\n * Creates a new Pipeline object with Credential provided.\n *\n * @param credential - Such as AnonymousCredential, StorageSharedKeyCredential or any credential from the `@azure/identity` package to authenticate requests to the service. You can also provide an object that implements the TokenCredential interface. If not specified, AnonymousCredential is used.\n * @param pipelineOptions - Optional. Options.\n * @returns A new Pipeline object.\n */\nexport function newPipeline(credential, pipelineOptions = {}) {\n var _a;\n if (credential === undefined) {\n credential = new AnonymousCredential();\n }\n // Order is important. Closer to the API at the top & closer to the network at the bottom.\n // The credential's policy factory must appear close to the wire so it can sign any\n // changes made by other factories (like UniqueRequestIDPolicyFactory)\n const telemetryPolicy = new TelemetryPolicyFactory(pipelineOptions.userAgentOptions);\n const factories = [\n tracingPolicy({ userAgent: telemetryPolicy.telemetryString }),\n keepAlivePolicy(pipelineOptions.keepAliveOptions),\n telemetryPolicy,\n generateClientRequestIdPolicy(),\n new StorageBrowserPolicyFactory(),\n new StorageRetryPolicyFactory(pipelineOptions.retryOptions),\n // Default deserializationPolicy is provided by protocol layer\n // Use customized XML char key of \"#\" so we could deserialize metadata\n // with \"_\" key\n deserializationPolicy(undefined, { xmlCharKey: \"#\" }),\n logPolicy({\n logger: logger.info,\n allowedHeaderNames: StorageBlobLoggingAllowedHeaderNames,\n allowedQueryParameters: StorageBlobLoggingAllowedQueryParameters,\n }),\n ];\n if (isNode) {\n // policies only available in Node.js runtime, not in browsers\n factories.push(proxyPolicy(pipelineOptions.proxyOptions));\n factories.push(disableResponseDecompressionPolicy());\n }\n factories.push(isTokenCredential(credential)\n ? attachCredential(storageBearerTokenChallengeAuthenticationPolicy(credential, (_a = pipelineOptions.audience) !== null && _a !== void 0 ? _a : StorageOAuthScopes), credential)\n : credential);\n return new Pipeline(factories, pipelineOptions);\n}\n//# sourceMappingURL=Pipeline.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { BaseRequestPolicy, isNode, } from \"@azure/core-http\";\nimport { HeaderConstants, URLConstants } from \"../utils/constants\";\nimport { setURLParameter } from \"../utils/utils.common\";\n/**\n * StorageBrowserPolicy will handle differences between Node.js and browser runtime, including:\n *\n * 1. Browsers cache GET/HEAD requests by adding conditional headers such as 'IF_MODIFIED_SINCE'.\n * StorageBrowserPolicy is a policy used to add a timestamp query to GET/HEAD request URL\n * thus avoid the browser cache.\n *\n * 2. Remove cookie header for security\n *\n * 3. Remove content-length header to avoid browsers warning\n */\nexport class StorageBrowserPolicy extends BaseRequestPolicy {\n /**\n * Creates an instance of StorageBrowserPolicy.\n * @param nextPolicy -\n * @param options -\n */\n // The base class has a protected constructor. Adding a public one to enable constructing of this class.\n /* eslint-disable-next-line @typescript-eslint/no-useless-constructor*/\n constructor(nextPolicy, options) {\n super(nextPolicy, options);\n }\n /**\n * Sends out request.\n *\n * @param request -\n */\n async sendRequest(request) {\n if (isNode) {\n return this._nextPolicy.sendRequest(request);\n }\n if (request.method.toUpperCase() === \"GET\" || request.method.toUpperCase() === \"HEAD\") {\n request.url = setURLParameter(request.url, URLConstants.Parameters.FORCE_BROWSER_NO_CACHE, new Date().getTime().toString());\n }\n request.headers.remove(HeaderConstants.COOKIE);\n // According to XHR standards, content-length should be fully controlled by browsers\n request.headers.remove(HeaderConstants.CONTENT_LENGTH);\n return this._nextPolicy.sendRequest(request);\n }\n}\n//# sourceMappingURL=StorageBrowserPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { StorageBrowserPolicy } from \"./policies/StorageBrowserPolicy\";\nexport { StorageBrowserPolicy };\n/**\n * StorageBrowserPolicyFactory is a factory class helping generating StorageBrowserPolicy objects.\n */\nexport class StorageBrowserPolicyFactory {\n /**\n * Creates a StorageBrowserPolicyFactory object.\n *\n * @param nextPolicy -\n * @param options -\n */\n create(nextPolicy, options) {\n return new StorageBrowserPolicy(nextPolicy, options);\n }\n}\n//# sourceMappingURL=StorageBrowserPolicyFactory.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { StorageClientContext } from \"./generated/src/storageClientContext\";\nimport { escapeURLPath, getURLScheme, iEqual, getAccountNameFromUrl } from \"./utils/utils.common\";\nimport { AnonymousCredential } from \"./credentials/AnonymousCredential\";\nimport { StorageSharedKeyCredential } from \"./credentials/StorageSharedKeyCredential\";\nimport { isTokenCredential, isNode } from \"@azure/core-http\";\n/**\n * A StorageClient represents a based URL class for {@link BlobServiceClient}, {@link ContainerClient}\n * and etc.\n */\nexport class StorageClient {\n /**\n * Creates an instance of StorageClient.\n * @param url - url to resource\n * @param pipeline - request policy pipeline.\n */\n constructor(url, pipeline) {\n // URL should be encoded and only once, protocol layer shouldn't encode URL again\n this.url = escapeURLPath(url);\n this.accountName = getAccountNameFromUrl(url);\n this.pipeline = pipeline;\n this.storageClientContext = new StorageClientContext(this.url, pipeline.toServiceClientOptions());\n this.isHttps = iEqual(getURLScheme(this.url) || \"\", \"https\");\n this.credential = new AnonymousCredential();\n for (const factory of this.pipeline.factories) {\n if ((isNode && factory instanceof StorageSharedKeyCredential) ||\n factory instanceof AnonymousCredential) {\n this.credential = factory;\n }\n else if (isTokenCredential(factory.credential)) {\n // Only works if the factory has been attached a \"credential\" property.\n // We do that in newPipeline() when using TokenCredential.\n this.credential = factory.credential;\n }\n }\n // Override protocol layer's default content-type\n const storageClientContext = this.storageClientContext;\n storageClientContext.requestContentType = undefined;\n }\n}\n//# sourceMappingURL=StorageClient.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { AbortError } from \"@azure/abort-controller\";\nimport { BaseRequestPolicy, } from \"@azure/core-http\";\nimport { URLConstants } from \"../utils/constants\";\nimport { delay, setURLHost, setURLParameter } from \"../utils/utils.common\";\nimport { logger } from \"../log\";\n/**\n * A factory method used to generated a RetryPolicy factory.\n *\n * @param retryOptions -\n */\nexport function NewRetryPolicyFactory(retryOptions) {\n return {\n create: (nextPolicy, options) => {\n return new StorageRetryPolicy(nextPolicy, options, retryOptions);\n },\n };\n}\n/**\n * RetryPolicy types.\n */\nexport var StorageRetryPolicyType;\n(function (StorageRetryPolicyType) {\n /**\n * Exponential retry. Retry time delay grows exponentially.\n */\n StorageRetryPolicyType[StorageRetryPolicyType[\"EXPONENTIAL\"] = 0] = \"EXPONENTIAL\";\n /**\n * Linear retry. Retry time delay grows linearly.\n */\n StorageRetryPolicyType[StorageRetryPolicyType[\"FIXED\"] = 1] = \"FIXED\";\n})(StorageRetryPolicyType || (StorageRetryPolicyType = {}));\n// Default values of StorageRetryOptions\nconst DEFAULT_RETRY_OPTIONS = {\n maxRetryDelayInMs: 120 * 1000,\n maxTries: 4,\n retryDelayInMs: 4 * 1000,\n retryPolicyType: StorageRetryPolicyType.EXPONENTIAL,\n secondaryHost: \"\",\n tryTimeoutInMs: undefined, // Use server side default timeout strategy\n};\nconst RETRY_ABORT_ERROR = new AbortError(\"The operation was aborted.\");\n/**\n * Retry policy with exponential retry and linear retry implemented.\n */\nexport class StorageRetryPolicy extends BaseRequestPolicy {\n /**\n * Creates an instance of RetryPolicy.\n *\n * @param nextPolicy -\n * @param options -\n * @param retryOptions -\n */\n constructor(nextPolicy, options, retryOptions = DEFAULT_RETRY_OPTIONS) {\n super(nextPolicy, options);\n // Initialize retry options\n this.retryOptions = {\n retryPolicyType: retryOptions.retryPolicyType\n ? retryOptions.retryPolicyType\n : DEFAULT_RETRY_OPTIONS.retryPolicyType,\n maxTries: retryOptions.maxTries && retryOptions.maxTries >= 1\n ? Math.floor(retryOptions.maxTries)\n : DEFAULT_RETRY_OPTIONS.maxTries,\n tryTimeoutInMs: retryOptions.tryTimeoutInMs && retryOptions.tryTimeoutInMs >= 0\n ? retryOptions.tryTimeoutInMs\n : DEFAULT_RETRY_OPTIONS.tryTimeoutInMs,\n retryDelayInMs: retryOptions.retryDelayInMs && retryOptions.retryDelayInMs >= 0\n ? Math.min(retryOptions.retryDelayInMs, retryOptions.maxRetryDelayInMs\n ? retryOptions.maxRetryDelayInMs\n : DEFAULT_RETRY_OPTIONS.maxRetryDelayInMs)\n : DEFAULT_RETRY_OPTIONS.retryDelayInMs,\n maxRetryDelayInMs: retryOptions.maxRetryDelayInMs && retryOptions.maxRetryDelayInMs >= 0\n ? retryOptions.maxRetryDelayInMs\n : DEFAULT_RETRY_OPTIONS.maxRetryDelayInMs,\n secondaryHost: retryOptions.secondaryHost\n ? retryOptions.secondaryHost\n : DEFAULT_RETRY_OPTIONS.secondaryHost,\n };\n }\n /**\n * Sends request.\n *\n * @param request -\n */\n async sendRequest(request) {\n return this.attemptSendRequest(request, false, 1);\n }\n /**\n * Decide and perform next retry. Won't mutate request parameter.\n *\n * @param request -\n * @param secondaryHas404 - If attempt was against the secondary & it returned a StatusNotFound (404), then\n * the resource was not found. This may be due to replication delay. So, in this\n * case, we'll never try the secondary again for this operation.\n * @param attempt - How many retries has been attempted to performed, starting from 1, which includes\n * the attempt will be performed by this method call.\n */\n async attemptSendRequest(request, secondaryHas404, attempt) {\n const newRequest = request.clone();\n const isPrimaryRetry = secondaryHas404 ||\n !this.retryOptions.secondaryHost ||\n !(request.method === \"GET\" || request.method === \"HEAD\" || request.method === \"OPTIONS\") ||\n attempt % 2 === 1;\n if (!isPrimaryRetry) {\n newRequest.url = setURLHost(newRequest.url, this.retryOptions.secondaryHost);\n }\n // Set the server-side timeout query parameter \"timeout=[seconds]\"\n if (this.retryOptions.tryTimeoutInMs) {\n newRequest.url = setURLParameter(newRequest.url, URLConstants.Parameters.TIMEOUT, Math.floor(this.retryOptions.tryTimeoutInMs / 1000).toString());\n }\n let response;\n try {\n logger.info(`RetryPolicy: =====> Try=${attempt} ${isPrimaryRetry ? \"Primary\" : \"Secondary\"}`);\n response = await this._nextPolicy.sendRequest(newRequest);\n if (!this.shouldRetry(isPrimaryRetry, attempt, response)) {\n return response;\n }\n secondaryHas404 = secondaryHas404 || (!isPrimaryRetry && response.status === 404);\n }\n catch (err) {\n logger.error(`RetryPolicy: Caught error, message: ${err.message}, code: ${err.code}`);\n if (!this.shouldRetry(isPrimaryRetry, attempt, response, err)) {\n throw err;\n }\n }\n await this.delay(isPrimaryRetry, attempt, request.abortSignal);\n return this.attemptSendRequest(request, secondaryHas404, ++attempt);\n }\n /**\n * Decide whether to retry according to last HTTP response and retry counters.\n *\n * @param isPrimaryRetry -\n * @param attempt -\n * @param response -\n * @param err -\n */\n shouldRetry(isPrimaryRetry, attempt, response, err) {\n if (attempt >= this.retryOptions.maxTries) {\n logger.info(`RetryPolicy: Attempt(s) ${attempt} >= maxTries ${this.retryOptions\n .maxTries}, no further try.`);\n return false;\n }\n // Handle network failures, you may need to customize the list when you implement\n // your own http client\n const retriableErrors = [\n \"ETIMEDOUT\",\n \"ESOCKETTIMEDOUT\",\n \"ECONNREFUSED\",\n \"ECONNRESET\",\n \"ENOENT\",\n \"ENOTFOUND\",\n \"TIMEOUT\",\n \"EPIPE\",\n \"REQUEST_SEND_ERROR\", // For default xhr based http client provided in ms-rest-js\n ];\n if (err) {\n for (const retriableError of retriableErrors) {\n if (err.name.toUpperCase().includes(retriableError) ||\n err.message.toUpperCase().includes(retriableError) ||\n (err.code && err.code.toString().toUpperCase() === retriableError)) {\n logger.info(`RetryPolicy: Network error ${retriableError} found, will retry.`);\n return true;\n }\n }\n }\n // If attempt was against the secondary & it returned a StatusNotFound (404), then\n // the resource was not found. This may be due to replication delay. So, in this\n // case, we'll never try the secondary again for this operation.\n if (response || err) {\n const statusCode = response ? response.status : err ? err.statusCode : 0;\n if (!isPrimaryRetry && statusCode === 404) {\n logger.info(`RetryPolicy: Secondary access with 404, will retry.`);\n return true;\n }\n // Server internal error or server timeout\n if (statusCode === 503 || statusCode === 500) {\n logger.info(`RetryPolicy: Will retry for status code ${statusCode}.`);\n return true;\n }\n }\n if ((err === null || err === void 0 ? void 0 : err.code) === \"PARSE_ERROR\" && (err === null || err === void 0 ? void 0 : err.message.startsWith(`Error \"Error: Unclosed root tag`))) {\n logger.info(\"RetryPolicy: Incomplete XML response likely due to service timeout, will retry.\");\n return true;\n }\n return false;\n }\n /**\n * Delay a calculated time between retries.\n *\n * @param isPrimaryRetry -\n * @param attempt -\n * @param abortSignal -\n */\n async delay(isPrimaryRetry, attempt, abortSignal) {\n let delayTimeInMs = 0;\n if (isPrimaryRetry) {\n switch (this.retryOptions.retryPolicyType) {\n case StorageRetryPolicyType.EXPONENTIAL:\n delayTimeInMs = Math.min((Math.pow(2, attempt - 1) - 1) * this.retryOptions.retryDelayInMs, this.retryOptions.maxRetryDelayInMs);\n break;\n case StorageRetryPolicyType.FIXED:\n delayTimeInMs = this.retryOptions.retryDelayInMs;\n break;\n }\n }\n else {\n delayTimeInMs = Math.random() * 1000;\n }\n logger.info(`RetryPolicy: Delay for ${delayTimeInMs}ms`);\n return delay(delayTimeInMs, abortSignal, RETRY_ABORT_ERROR);\n }\n}\n//# sourceMappingURL=StorageRetryPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { StorageRetryPolicy, StorageRetryPolicyType } from \"./policies/StorageRetryPolicy\";\nexport { StorageRetryPolicyType, StorageRetryPolicy };\n/**\n * StorageRetryPolicyFactory is a factory class helping generating {@link StorageRetryPolicy} objects.\n */\nexport class StorageRetryPolicyFactory {\n /**\n * Creates an instance of StorageRetryPolicyFactory.\n * @param retryOptions -\n */\n constructor(retryOptions) {\n this.retryOptions = retryOptions;\n }\n /**\n * Creates a StorageRetryPolicy object.\n *\n * @param nextPolicy -\n * @param options -\n */\n create(nextPolicy, options) {\n return new StorageRetryPolicy(nextPolicy, options, this.retryOptions);\n }\n}\n//# sourceMappingURL=StorageRetryPolicyFactory.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { AnonymousCredentialPolicy } from \"../policies/AnonymousCredentialPolicy\";\nimport { Credential } from \"./Credential\";\n/**\n * AnonymousCredential provides a credentialPolicyCreator member used to create\n * AnonymousCredentialPolicy objects. AnonymousCredentialPolicy is used with\n * HTTP(S) requests that read public resources or for use with Shared Access\n * Signatures (SAS).\n */\nexport class AnonymousCredential extends Credential {\n /**\n * Creates an {@link AnonymousCredentialPolicy} object.\n *\n * @param nextPolicy -\n * @param options -\n */\n create(nextPolicy, options) {\n return new AnonymousCredentialPolicy(nextPolicy, options);\n }\n}\n//# sourceMappingURL=AnonymousCredential.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Credential is an abstract class for Azure Storage HTTP requests signing. This\n * class will host an credentialPolicyCreator factory which generates CredentialPolicy.\n */\nexport class Credential {\n /**\n * Creates a RequestPolicy object.\n *\n * @param _nextPolicy -\n * @param _options -\n */\n create(_nextPolicy, _options) {\n throw new Error(\"Method should be implemented in children classes.\");\n }\n}\n//# sourceMappingURL=Credential.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nexport class StorageSharedKeyCredential {\n}\n//# sourceMappingURL=StorageSharedKeyCredential.browser.js.map","/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nexport const BlobServiceProperties = {\n serializedName: \"BlobServiceProperties\",\n xmlName: \"StorageServiceProperties\",\n type: {\n name: \"Composite\",\n className: \"BlobServiceProperties\",\n modelProperties: {\n blobAnalyticsLogging: {\n serializedName: \"Logging\",\n xmlName: \"Logging\",\n type: {\n name: \"Composite\",\n className: \"Logging\"\n }\n },\n hourMetrics: {\n serializedName: \"HourMetrics\",\n xmlName: \"HourMetrics\",\n type: {\n name: \"Composite\",\n className: \"Metrics\"\n }\n },\n minuteMetrics: {\n serializedName: \"MinuteMetrics\",\n xmlName: \"MinuteMetrics\",\n type: {\n name: \"Composite\",\n className: \"Metrics\"\n }\n },\n cors: {\n serializedName: \"Cors\",\n xmlName: \"Cors\",\n xmlIsWrapped: true,\n xmlElementName: \"CorsRule\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"CorsRule\"\n }\n }\n }\n },\n defaultServiceVersion: {\n serializedName: \"DefaultServiceVersion\",\n xmlName: \"DefaultServiceVersion\",\n type: {\n name: \"String\"\n }\n },\n deleteRetentionPolicy: {\n serializedName: \"DeleteRetentionPolicy\",\n xmlName: \"DeleteRetentionPolicy\",\n type: {\n name: \"Composite\",\n className: \"RetentionPolicy\"\n }\n },\n staticWebsite: {\n serializedName: \"StaticWebsite\",\n xmlName: \"StaticWebsite\",\n type: {\n name: \"Composite\",\n className: \"StaticWebsite\"\n }\n }\n }\n }\n};\nexport const Logging = {\n serializedName: \"Logging\",\n type: {\n name: \"Composite\",\n className: \"Logging\",\n modelProperties: {\n version: {\n serializedName: \"Version\",\n required: true,\n xmlName: \"Version\",\n type: {\n name: \"String\"\n }\n },\n deleteProperty: {\n serializedName: \"Delete\",\n required: true,\n xmlName: \"Delete\",\n type: {\n name: \"Boolean\"\n }\n },\n read: {\n serializedName: \"Read\",\n required: true,\n xmlName: \"Read\",\n type: {\n name: \"Boolean\"\n }\n },\n write: {\n serializedName: \"Write\",\n required: true,\n xmlName: \"Write\",\n type: {\n name: \"Boolean\"\n }\n },\n retentionPolicy: {\n serializedName: \"RetentionPolicy\",\n xmlName: \"RetentionPolicy\",\n type: {\n name: \"Composite\",\n className: \"RetentionPolicy\"\n }\n }\n }\n }\n};\nexport const RetentionPolicy = {\n serializedName: \"RetentionPolicy\",\n type: {\n name: \"Composite\",\n className: \"RetentionPolicy\",\n modelProperties: {\n enabled: {\n serializedName: \"Enabled\",\n required: true,\n xmlName: \"Enabled\",\n type: {\n name: \"Boolean\"\n }\n },\n days: {\n constraints: {\n InclusiveMinimum: 1\n },\n serializedName: \"Days\",\n xmlName: \"Days\",\n type: {\n name: \"Number\"\n }\n }\n }\n }\n};\nexport const Metrics = {\n serializedName: \"Metrics\",\n type: {\n name: \"Composite\",\n className: \"Metrics\",\n modelProperties: {\n version: {\n serializedName: \"Version\",\n xmlName: \"Version\",\n type: {\n name: \"String\"\n }\n },\n enabled: {\n serializedName: \"Enabled\",\n required: true,\n xmlName: \"Enabled\",\n type: {\n name: \"Boolean\"\n }\n },\n includeAPIs: {\n serializedName: \"IncludeAPIs\",\n xmlName: \"IncludeAPIs\",\n type: {\n name: \"Boolean\"\n }\n },\n retentionPolicy: {\n serializedName: \"RetentionPolicy\",\n xmlName: \"RetentionPolicy\",\n type: {\n name: \"Composite\",\n className: \"RetentionPolicy\"\n }\n }\n }\n }\n};\nexport const CorsRule = {\n serializedName: \"CorsRule\",\n type: {\n name: \"Composite\",\n className: \"CorsRule\",\n modelProperties: {\n allowedOrigins: {\n serializedName: \"AllowedOrigins\",\n required: true,\n xmlName: \"AllowedOrigins\",\n type: {\n name: \"String\"\n }\n },\n allowedMethods: {\n serializedName: \"AllowedMethods\",\n required: true,\n xmlName: \"AllowedMethods\",\n type: {\n name: \"String\"\n }\n },\n allowedHeaders: {\n serializedName: \"AllowedHeaders\",\n required: true,\n xmlName: \"AllowedHeaders\",\n type: {\n name: \"String\"\n }\n },\n exposedHeaders: {\n serializedName: \"ExposedHeaders\",\n required: true,\n xmlName: \"ExposedHeaders\",\n type: {\n name: \"String\"\n }\n },\n maxAgeInSeconds: {\n constraints: {\n InclusiveMinimum: 0\n },\n serializedName: \"MaxAgeInSeconds\",\n required: true,\n xmlName: \"MaxAgeInSeconds\",\n type: {\n name: \"Number\"\n }\n }\n }\n }\n};\nexport const StaticWebsite = {\n serializedName: \"StaticWebsite\",\n type: {\n name: \"Composite\",\n className: \"StaticWebsite\",\n modelProperties: {\n enabled: {\n serializedName: \"Enabled\",\n required: true,\n xmlName: \"Enabled\",\n type: {\n name: \"Boolean\"\n }\n },\n indexDocument: {\n serializedName: \"IndexDocument\",\n xmlName: \"IndexDocument\",\n type: {\n name: \"String\"\n }\n },\n errorDocument404Path: {\n serializedName: \"ErrorDocument404Path\",\n xmlName: \"ErrorDocument404Path\",\n type: {\n name: \"String\"\n }\n },\n defaultIndexDocumentPath: {\n serializedName: \"DefaultIndexDocumentPath\",\n xmlName: \"DefaultIndexDocumentPath\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const StorageError = {\n serializedName: \"StorageError\",\n type: {\n name: \"Composite\",\n className: \"StorageError\",\n modelProperties: {\n message: {\n serializedName: \"Message\",\n xmlName: \"Message\",\n type: {\n name: \"String\"\n }\n },\n code: {\n serializedName: \"Code\",\n xmlName: \"Code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlobServiceStatistics = {\n serializedName: \"BlobServiceStatistics\",\n xmlName: \"StorageServiceStats\",\n type: {\n name: \"Composite\",\n className: \"BlobServiceStatistics\",\n modelProperties: {\n geoReplication: {\n serializedName: \"GeoReplication\",\n xmlName: \"GeoReplication\",\n type: {\n name: \"Composite\",\n className: \"GeoReplication\"\n }\n }\n }\n }\n};\nexport const GeoReplication = {\n serializedName: \"GeoReplication\",\n type: {\n name: \"Composite\",\n className: \"GeoReplication\",\n modelProperties: {\n status: {\n serializedName: \"Status\",\n required: true,\n xmlName: \"Status\",\n type: {\n name: \"Enum\",\n allowedValues: [\"live\", \"bootstrap\", \"unavailable\"]\n }\n },\n lastSyncOn: {\n serializedName: \"LastSyncTime\",\n required: true,\n xmlName: \"LastSyncTime\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n }\n }\n }\n};\nexport const ListContainersSegmentResponse = {\n serializedName: \"ListContainersSegmentResponse\",\n xmlName: \"EnumerationResults\",\n type: {\n name: \"Composite\",\n className: \"ListContainersSegmentResponse\",\n modelProperties: {\n serviceEndpoint: {\n serializedName: \"ServiceEndpoint\",\n required: true,\n xmlName: \"ServiceEndpoint\",\n xmlIsAttribute: true,\n type: {\n name: \"String\"\n }\n },\n prefix: {\n serializedName: \"Prefix\",\n xmlName: \"Prefix\",\n type: {\n name: \"String\"\n }\n },\n marker: {\n serializedName: \"Marker\",\n xmlName: \"Marker\",\n type: {\n name: \"String\"\n }\n },\n maxPageSize: {\n serializedName: \"MaxResults\",\n xmlName: \"MaxResults\",\n type: {\n name: \"Number\"\n }\n },\n containerItems: {\n serializedName: \"ContainerItems\",\n required: true,\n xmlName: \"Containers\",\n xmlIsWrapped: true,\n xmlElementName: \"Container\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ContainerItem\"\n }\n }\n }\n },\n continuationToken: {\n serializedName: \"NextMarker\",\n xmlName: \"NextMarker\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ContainerItem = {\n serializedName: \"ContainerItem\",\n xmlName: \"Container\",\n type: {\n name: \"Composite\",\n className: \"ContainerItem\",\n modelProperties: {\n name: {\n serializedName: \"Name\",\n required: true,\n xmlName: \"Name\",\n type: {\n name: \"String\"\n }\n },\n deleted: {\n serializedName: \"Deleted\",\n xmlName: \"Deleted\",\n type: {\n name: \"Boolean\"\n }\n },\n version: {\n serializedName: \"Version\",\n xmlName: \"Version\",\n type: {\n name: \"String\"\n }\n },\n properties: {\n serializedName: \"Properties\",\n xmlName: \"Properties\",\n type: {\n name: \"Composite\",\n className: \"ContainerProperties\"\n }\n },\n metadata: {\n serializedName: \"Metadata\",\n xmlName: \"Metadata\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n }\n }\n }\n }\n};\nexport const ContainerProperties = {\n serializedName: \"ContainerProperties\",\n type: {\n name: \"Composite\",\n className: \"ContainerProperties\",\n modelProperties: {\n lastModified: {\n serializedName: \"Last-Modified\",\n required: true,\n xmlName: \"Last-Modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n etag: {\n serializedName: \"Etag\",\n required: true,\n xmlName: \"Etag\",\n type: {\n name: \"String\"\n }\n },\n leaseStatus: {\n serializedName: \"LeaseStatus\",\n xmlName: \"LeaseStatus\",\n type: {\n name: \"Enum\",\n allowedValues: [\"locked\", \"unlocked\"]\n }\n },\n leaseState: {\n serializedName: \"LeaseState\",\n xmlName: \"LeaseState\",\n type: {\n name: \"Enum\",\n allowedValues: [\n \"available\",\n \"leased\",\n \"expired\",\n \"breaking\",\n \"broken\"\n ]\n }\n },\n leaseDuration: {\n serializedName: \"LeaseDuration\",\n xmlName: \"LeaseDuration\",\n type: {\n name: \"Enum\",\n allowedValues: [\"infinite\", \"fixed\"]\n }\n },\n publicAccess: {\n serializedName: \"PublicAccess\",\n xmlName: \"PublicAccess\",\n type: {\n name: \"Enum\",\n allowedValues: [\"container\", \"blob\"]\n }\n },\n hasImmutabilityPolicy: {\n serializedName: \"HasImmutabilityPolicy\",\n xmlName: \"HasImmutabilityPolicy\",\n type: {\n name: \"Boolean\"\n }\n },\n hasLegalHold: {\n serializedName: \"HasLegalHold\",\n xmlName: \"HasLegalHold\",\n type: {\n name: \"Boolean\"\n }\n },\n defaultEncryptionScope: {\n serializedName: \"DefaultEncryptionScope\",\n xmlName: \"DefaultEncryptionScope\",\n type: {\n name: \"String\"\n }\n },\n preventEncryptionScopeOverride: {\n serializedName: \"DenyEncryptionScopeOverride\",\n xmlName: \"DenyEncryptionScopeOverride\",\n type: {\n name: \"Boolean\"\n }\n },\n deletedOn: {\n serializedName: \"DeletedTime\",\n xmlName: \"DeletedTime\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n remainingRetentionDays: {\n serializedName: \"RemainingRetentionDays\",\n xmlName: \"RemainingRetentionDays\",\n type: {\n name: \"Number\"\n }\n },\n isImmutableStorageWithVersioningEnabled: {\n serializedName: \"ImmutableStorageWithVersioningEnabled\",\n xmlName: \"ImmutableStorageWithVersioningEnabled\",\n type: {\n name: \"Boolean\"\n }\n }\n }\n }\n};\nexport const KeyInfo = {\n serializedName: \"KeyInfo\",\n type: {\n name: \"Composite\",\n className: \"KeyInfo\",\n modelProperties: {\n startsOn: {\n serializedName: \"Start\",\n required: true,\n xmlName: \"Start\",\n type: {\n name: \"String\"\n }\n },\n expiresOn: {\n serializedName: \"Expiry\",\n required: true,\n xmlName: \"Expiry\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const UserDelegationKey = {\n serializedName: \"UserDelegationKey\",\n type: {\n name: \"Composite\",\n className: \"UserDelegationKey\",\n modelProperties: {\n signedObjectId: {\n serializedName: \"SignedOid\",\n required: true,\n xmlName: \"SignedOid\",\n type: {\n name: \"String\"\n }\n },\n signedTenantId: {\n serializedName: \"SignedTid\",\n required: true,\n xmlName: \"SignedTid\",\n type: {\n name: \"String\"\n }\n },\n signedStartsOn: {\n serializedName: \"SignedStart\",\n required: true,\n xmlName: \"SignedStart\",\n type: {\n name: \"String\"\n }\n },\n signedExpiresOn: {\n serializedName: \"SignedExpiry\",\n required: true,\n xmlName: \"SignedExpiry\",\n type: {\n name: \"String\"\n }\n },\n signedService: {\n serializedName: \"SignedService\",\n required: true,\n xmlName: \"SignedService\",\n type: {\n name: \"String\"\n }\n },\n signedVersion: {\n serializedName: \"SignedVersion\",\n required: true,\n xmlName: \"SignedVersion\",\n type: {\n name: \"String\"\n }\n },\n value: {\n serializedName: \"Value\",\n required: true,\n xmlName: \"Value\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const FilterBlobSegment = {\n serializedName: \"FilterBlobSegment\",\n xmlName: \"EnumerationResults\",\n type: {\n name: \"Composite\",\n className: \"FilterBlobSegment\",\n modelProperties: {\n serviceEndpoint: {\n serializedName: \"ServiceEndpoint\",\n required: true,\n xmlName: \"ServiceEndpoint\",\n xmlIsAttribute: true,\n type: {\n name: \"String\"\n }\n },\n where: {\n serializedName: \"Where\",\n required: true,\n xmlName: \"Where\",\n type: {\n name: \"String\"\n }\n },\n blobs: {\n serializedName: \"Blobs\",\n required: true,\n xmlName: \"Blobs\",\n xmlIsWrapped: true,\n xmlElementName: \"Blob\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"FilterBlobItem\"\n }\n }\n }\n },\n continuationToken: {\n serializedName: \"NextMarker\",\n xmlName: \"NextMarker\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const FilterBlobItem = {\n serializedName: \"FilterBlobItem\",\n xmlName: \"Blob\",\n type: {\n name: \"Composite\",\n className: \"FilterBlobItem\",\n modelProperties: {\n name: {\n serializedName: \"Name\",\n required: true,\n xmlName: \"Name\",\n type: {\n name: \"String\"\n }\n },\n containerName: {\n serializedName: \"ContainerName\",\n required: true,\n xmlName: \"ContainerName\",\n type: {\n name: \"String\"\n }\n },\n tags: {\n serializedName: \"Tags\",\n xmlName: \"Tags\",\n type: {\n name: \"Composite\",\n className: \"BlobTags\"\n }\n }\n }\n }\n};\nexport const BlobTags = {\n serializedName: \"BlobTags\",\n xmlName: \"Tags\",\n type: {\n name: \"Composite\",\n className: \"BlobTags\",\n modelProperties: {\n blobTagSet: {\n serializedName: \"BlobTagSet\",\n required: true,\n xmlName: \"TagSet\",\n xmlIsWrapped: true,\n xmlElementName: \"Tag\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"BlobTag\"\n }\n }\n }\n }\n }\n }\n};\nexport const BlobTag = {\n serializedName: \"BlobTag\",\n xmlName: \"Tag\",\n type: {\n name: \"Composite\",\n className: \"BlobTag\",\n modelProperties: {\n key: {\n serializedName: \"Key\",\n required: true,\n xmlName: \"Key\",\n type: {\n name: \"String\"\n }\n },\n value: {\n serializedName: \"Value\",\n required: true,\n xmlName: \"Value\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const SignedIdentifier = {\n serializedName: \"SignedIdentifier\",\n xmlName: \"SignedIdentifier\",\n type: {\n name: \"Composite\",\n className: \"SignedIdentifier\",\n modelProperties: {\n id: {\n serializedName: \"Id\",\n required: true,\n xmlName: \"Id\",\n type: {\n name: \"String\"\n }\n },\n accessPolicy: {\n serializedName: \"AccessPolicy\",\n xmlName: \"AccessPolicy\",\n type: {\n name: \"Composite\",\n className: \"AccessPolicy\"\n }\n }\n }\n }\n};\nexport const AccessPolicy = {\n serializedName: \"AccessPolicy\",\n type: {\n name: \"Composite\",\n className: \"AccessPolicy\",\n modelProperties: {\n startsOn: {\n serializedName: \"Start\",\n xmlName: \"Start\",\n type: {\n name: \"String\"\n }\n },\n expiresOn: {\n serializedName: \"Expiry\",\n xmlName: \"Expiry\",\n type: {\n name: \"String\"\n }\n },\n permissions: {\n serializedName: \"Permission\",\n xmlName: \"Permission\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ListBlobsFlatSegmentResponse = {\n serializedName: \"ListBlobsFlatSegmentResponse\",\n xmlName: \"EnumerationResults\",\n type: {\n name: \"Composite\",\n className: \"ListBlobsFlatSegmentResponse\",\n modelProperties: {\n serviceEndpoint: {\n serializedName: \"ServiceEndpoint\",\n required: true,\n xmlName: \"ServiceEndpoint\",\n xmlIsAttribute: true,\n type: {\n name: \"String\"\n }\n },\n containerName: {\n serializedName: \"ContainerName\",\n required: true,\n xmlName: \"ContainerName\",\n xmlIsAttribute: true,\n type: {\n name: \"String\"\n }\n },\n prefix: {\n serializedName: \"Prefix\",\n xmlName: \"Prefix\",\n type: {\n name: \"String\"\n }\n },\n marker: {\n serializedName: \"Marker\",\n xmlName: \"Marker\",\n type: {\n name: \"String\"\n }\n },\n maxPageSize: {\n serializedName: \"MaxResults\",\n xmlName: \"MaxResults\",\n type: {\n name: \"Number\"\n }\n },\n segment: {\n serializedName: \"Segment\",\n xmlName: \"Blobs\",\n type: {\n name: \"Composite\",\n className: \"BlobFlatListSegment\"\n }\n },\n continuationToken: {\n serializedName: \"NextMarker\",\n xmlName: \"NextMarker\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlobFlatListSegment = {\n serializedName: \"BlobFlatListSegment\",\n xmlName: \"Blobs\",\n type: {\n name: \"Composite\",\n className: \"BlobFlatListSegment\",\n modelProperties: {\n blobItems: {\n serializedName: \"BlobItems\",\n required: true,\n xmlName: \"BlobItems\",\n xmlElementName: \"Blob\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"BlobItemInternal\"\n }\n }\n }\n }\n }\n }\n};\nexport const BlobItemInternal = {\n serializedName: \"BlobItemInternal\",\n xmlName: \"Blob\",\n type: {\n name: \"Composite\",\n className: \"BlobItemInternal\",\n modelProperties: {\n name: {\n serializedName: \"Name\",\n xmlName: \"Name\",\n type: {\n name: \"Composite\",\n className: \"BlobName\"\n }\n },\n deleted: {\n serializedName: \"Deleted\",\n required: true,\n xmlName: \"Deleted\",\n type: {\n name: \"Boolean\"\n }\n },\n snapshot: {\n serializedName: \"Snapshot\",\n required: true,\n xmlName: \"Snapshot\",\n type: {\n name: \"String\"\n }\n },\n versionId: {\n serializedName: \"VersionId\",\n xmlName: \"VersionId\",\n type: {\n name: \"String\"\n }\n },\n isCurrentVersion: {\n serializedName: \"IsCurrentVersion\",\n xmlName: \"IsCurrentVersion\",\n type: {\n name: \"Boolean\"\n }\n },\n properties: {\n serializedName: \"Properties\",\n xmlName: \"Properties\",\n type: {\n name: \"Composite\",\n className: \"BlobPropertiesInternal\"\n }\n },\n metadata: {\n serializedName: \"Metadata\",\n xmlName: \"Metadata\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n }\n },\n blobTags: {\n serializedName: \"BlobTags\",\n xmlName: \"Tags\",\n type: {\n name: \"Composite\",\n className: \"BlobTags\"\n }\n },\n objectReplicationMetadata: {\n serializedName: \"ObjectReplicationMetadata\",\n xmlName: \"OrMetadata\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n }\n },\n hasVersionsOnly: {\n serializedName: \"HasVersionsOnly\",\n xmlName: \"HasVersionsOnly\",\n type: {\n name: \"Boolean\"\n }\n }\n }\n }\n};\nexport const BlobName = {\n serializedName: \"BlobName\",\n type: {\n name: \"Composite\",\n className: \"BlobName\",\n modelProperties: {\n encoded: {\n serializedName: \"Encoded\",\n xmlName: \"Encoded\",\n xmlIsAttribute: true,\n type: {\n name: \"Boolean\"\n }\n },\n content: {\n serializedName: \"content\",\n xmlName: \"content\",\n xmlIsMsText: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlobPropertiesInternal = {\n serializedName: \"BlobPropertiesInternal\",\n xmlName: \"Properties\",\n type: {\n name: \"Composite\",\n className: \"BlobPropertiesInternal\",\n modelProperties: {\n createdOn: {\n serializedName: \"Creation-Time\",\n xmlName: \"Creation-Time\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n lastModified: {\n serializedName: \"Last-Modified\",\n required: true,\n xmlName: \"Last-Modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n etag: {\n serializedName: \"Etag\",\n required: true,\n xmlName: \"Etag\",\n type: {\n name: \"String\"\n }\n },\n contentLength: {\n serializedName: \"Content-Length\",\n xmlName: \"Content-Length\",\n type: {\n name: \"Number\"\n }\n },\n contentType: {\n serializedName: \"Content-Type\",\n xmlName: \"Content-Type\",\n type: {\n name: \"String\"\n }\n },\n contentEncoding: {\n serializedName: \"Content-Encoding\",\n xmlName: \"Content-Encoding\",\n type: {\n name: \"String\"\n }\n },\n contentLanguage: {\n serializedName: \"Content-Language\",\n xmlName: \"Content-Language\",\n type: {\n name: \"String\"\n }\n },\n contentMD5: {\n serializedName: \"Content-MD5\",\n xmlName: \"Content-MD5\",\n type: {\n name: \"ByteArray\"\n }\n },\n contentDisposition: {\n serializedName: \"Content-Disposition\",\n xmlName: \"Content-Disposition\",\n type: {\n name: \"String\"\n }\n },\n cacheControl: {\n serializedName: \"Cache-Control\",\n xmlName: \"Cache-Control\",\n type: {\n name: \"String\"\n }\n },\n blobSequenceNumber: {\n serializedName: \"x-ms-blob-sequence-number\",\n xmlName: \"x-ms-blob-sequence-number\",\n type: {\n name: \"Number\"\n }\n },\n blobType: {\n serializedName: \"BlobType\",\n xmlName: \"BlobType\",\n type: {\n name: \"Enum\",\n allowedValues: [\"BlockBlob\", \"PageBlob\", \"AppendBlob\"]\n }\n },\n leaseStatus: {\n serializedName: \"LeaseStatus\",\n xmlName: \"LeaseStatus\",\n type: {\n name: \"Enum\",\n allowedValues: [\"locked\", \"unlocked\"]\n }\n },\n leaseState: {\n serializedName: \"LeaseState\",\n xmlName: \"LeaseState\",\n type: {\n name: \"Enum\",\n allowedValues: [\n \"available\",\n \"leased\",\n \"expired\",\n \"breaking\",\n \"broken\"\n ]\n }\n },\n leaseDuration: {\n serializedName: \"LeaseDuration\",\n xmlName: \"LeaseDuration\",\n type: {\n name: \"Enum\",\n allowedValues: [\"infinite\", \"fixed\"]\n }\n },\n copyId: {\n serializedName: \"CopyId\",\n xmlName: \"CopyId\",\n type: {\n name: \"String\"\n }\n },\n copyStatus: {\n serializedName: \"CopyStatus\",\n xmlName: \"CopyStatus\",\n type: {\n name: \"Enum\",\n allowedValues: [\"pending\", \"success\", \"aborted\", \"failed\"]\n }\n },\n copySource: {\n serializedName: \"CopySource\",\n xmlName: \"CopySource\",\n type: {\n name: \"String\"\n }\n },\n copyProgress: {\n serializedName: \"CopyProgress\",\n xmlName: \"CopyProgress\",\n type: {\n name: \"String\"\n }\n },\n copyCompletedOn: {\n serializedName: \"CopyCompletionTime\",\n xmlName: \"CopyCompletionTime\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n copyStatusDescription: {\n serializedName: \"CopyStatusDescription\",\n xmlName: \"CopyStatusDescription\",\n type: {\n name: \"String\"\n }\n },\n serverEncrypted: {\n serializedName: \"ServerEncrypted\",\n xmlName: \"ServerEncrypted\",\n type: {\n name: \"Boolean\"\n }\n },\n incrementalCopy: {\n serializedName: \"IncrementalCopy\",\n xmlName: \"IncrementalCopy\",\n type: {\n name: \"Boolean\"\n }\n },\n destinationSnapshot: {\n serializedName: \"DestinationSnapshot\",\n xmlName: \"DestinationSnapshot\",\n type: {\n name: \"String\"\n }\n },\n deletedOn: {\n serializedName: \"DeletedTime\",\n xmlName: \"DeletedTime\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n remainingRetentionDays: {\n serializedName: \"RemainingRetentionDays\",\n xmlName: \"RemainingRetentionDays\",\n type: {\n name: \"Number\"\n }\n },\n accessTier: {\n serializedName: \"AccessTier\",\n xmlName: \"AccessTier\",\n type: {\n name: \"Enum\",\n allowedValues: [\n \"P4\",\n \"P6\",\n \"P10\",\n \"P15\",\n \"P20\",\n \"P30\",\n \"P40\",\n \"P50\",\n \"P60\",\n \"P70\",\n \"P80\",\n \"Hot\",\n \"Cool\",\n \"Archive\",\n \"Cold\"\n ]\n }\n },\n accessTierInferred: {\n serializedName: \"AccessTierInferred\",\n xmlName: \"AccessTierInferred\",\n type: {\n name: \"Boolean\"\n }\n },\n archiveStatus: {\n serializedName: \"ArchiveStatus\",\n xmlName: \"ArchiveStatus\",\n type: {\n name: \"Enum\",\n allowedValues: [\n \"rehydrate-pending-to-hot\",\n \"rehydrate-pending-to-cool\",\n \"rehydrate-pending-to-cold\"\n ]\n }\n },\n customerProvidedKeySha256: {\n serializedName: \"CustomerProvidedKeySha256\",\n xmlName: \"CustomerProvidedKeySha256\",\n type: {\n name: \"String\"\n }\n },\n encryptionScope: {\n serializedName: \"EncryptionScope\",\n xmlName: \"EncryptionScope\",\n type: {\n name: \"String\"\n }\n },\n accessTierChangedOn: {\n serializedName: \"AccessTierChangeTime\",\n xmlName: \"AccessTierChangeTime\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n tagCount: {\n serializedName: \"TagCount\",\n xmlName: \"TagCount\",\n type: {\n name: \"Number\"\n }\n },\n expiresOn: {\n serializedName: \"Expiry-Time\",\n xmlName: \"Expiry-Time\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n isSealed: {\n serializedName: \"Sealed\",\n xmlName: \"Sealed\",\n type: {\n name: \"Boolean\"\n }\n },\n rehydratePriority: {\n serializedName: \"RehydratePriority\",\n xmlName: \"RehydratePriority\",\n type: {\n name: \"Enum\",\n allowedValues: [\"High\", \"Standard\"]\n }\n },\n lastAccessedOn: {\n serializedName: \"LastAccessTime\",\n xmlName: \"LastAccessTime\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n immutabilityPolicyExpiresOn: {\n serializedName: \"ImmutabilityPolicyUntilDate\",\n xmlName: \"ImmutabilityPolicyUntilDate\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n immutabilityPolicyMode: {\n serializedName: \"ImmutabilityPolicyMode\",\n xmlName: \"ImmutabilityPolicyMode\",\n type: {\n name: \"Enum\",\n allowedValues: [\"Mutable\", \"Unlocked\", \"Locked\"]\n }\n },\n legalHold: {\n serializedName: \"LegalHold\",\n xmlName: \"LegalHold\",\n type: {\n name: \"Boolean\"\n }\n }\n }\n }\n};\nexport const ListBlobsHierarchySegmentResponse = {\n serializedName: \"ListBlobsHierarchySegmentResponse\",\n xmlName: \"EnumerationResults\",\n type: {\n name: \"Composite\",\n className: \"ListBlobsHierarchySegmentResponse\",\n modelProperties: {\n serviceEndpoint: {\n serializedName: \"ServiceEndpoint\",\n required: true,\n xmlName: \"ServiceEndpoint\",\n xmlIsAttribute: true,\n type: {\n name: \"String\"\n }\n },\n containerName: {\n serializedName: \"ContainerName\",\n required: true,\n xmlName: \"ContainerName\",\n xmlIsAttribute: true,\n type: {\n name: \"String\"\n }\n },\n prefix: {\n serializedName: \"Prefix\",\n xmlName: \"Prefix\",\n type: {\n name: \"String\"\n }\n },\n marker: {\n serializedName: \"Marker\",\n xmlName: \"Marker\",\n type: {\n name: \"String\"\n }\n },\n maxPageSize: {\n serializedName: \"MaxResults\",\n xmlName: \"MaxResults\",\n type: {\n name: \"Number\"\n }\n },\n delimiter: {\n serializedName: \"Delimiter\",\n xmlName: \"Delimiter\",\n type: {\n name: \"String\"\n }\n },\n segment: {\n serializedName: \"Segment\",\n xmlName: \"Blobs\",\n type: {\n name: \"Composite\",\n className: \"BlobHierarchyListSegment\"\n }\n },\n continuationToken: {\n serializedName: \"NextMarker\",\n xmlName: \"NextMarker\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlobHierarchyListSegment = {\n serializedName: \"BlobHierarchyListSegment\",\n xmlName: \"Blobs\",\n type: {\n name: \"Composite\",\n className: \"BlobHierarchyListSegment\",\n modelProperties: {\n blobPrefixes: {\n serializedName: \"BlobPrefixes\",\n xmlName: \"BlobPrefixes\",\n xmlElementName: \"BlobPrefix\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"BlobPrefix\"\n }\n }\n }\n },\n blobItems: {\n serializedName: \"BlobItems\",\n required: true,\n xmlName: \"BlobItems\",\n xmlElementName: \"Blob\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"BlobItemInternal\"\n }\n }\n }\n }\n }\n }\n};\nexport const BlobPrefix = {\n serializedName: \"BlobPrefix\",\n type: {\n name: \"Composite\",\n className: \"BlobPrefix\",\n modelProperties: {\n name: {\n serializedName: \"Name\",\n xmlName: \"Name\",\n type: {\n name: \"Composite\",\n className: \"BlobName\"\n }\n }\n }\n }\n};\nexport const BlockLookupList = {\n serializedName: \"BlockLookupList\",\n xmlName: \"BlockList\",\n type: {\n name: \"Composite\",\n className: \"BlockLookupList\",\n modelProperties: {\n committed: {\n serializedName: \"Committed\",\n xmlName: \"Committed\",\n xmlElementName: \"Committed\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\"\n }\n }\n }\n },\n uncommitted: {\n serializedName: \"Uncommitted\",\n xmlName: \"Uncommitted\",\n xmlElementName: \"Uncommitted\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\"\n }\n }\n }\n },\n latest: {\n serializedName: \"Latest\",\n xmlName: \"Latest\",\n xmlElementName: \"Latest\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\"\n }\n }\n }\n }\n }\n }\n};\nexport const BlockList = {\n serializedName: \"BlockList\",\n type: {\n name: \"Composite\",\n className: \"BlockList\",\n modelProperties: {\n committedBlocks: {\n serializedName: \"CommittedBlocks\",\n xmlName: \"CommittedBlocks\",\n xmlIsWrapped: true,\n xmlElementName: \"Block\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"Block\"\n }\n }\n }\n },\n uncommittedBlocks: {\n serializedName: \"UncommittedBlocks\",\n xmlName: \"UncommittedBlocks\",\n xmlIsWrapped: true,\n xmlElementName: \"Block\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"Block\"\n }\n }\n }\n }\n }\n }\n};\nexport const Block = {\n serializedName: \"Block\",\n type: {\n name: \"Composite\",\n className: \"Block\",\n modelProperties: {\n name: {\n serializedName: \"Name\",\n required: true,\n xmlName: \"Name\",\n type: {\n name: \"String\"\n }\n },\n size: {\n serializedName: \"Size\",\n required: true,\n xmlName: \"Size\",\n type: {\n name: \"Number\"\n }\n }\n }\n }\n};\nexport const PageList = {\n serializedName: \"PageList\",\n type: {\n name: \"Composite\",\n className: \"PageList\",\n modelProperties: {\n pageRange: {\n serializedName: \"PageRange\",\n xmlName: \"PageRange\",\n xmlElementName: \"PageRange\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"PageRange\"\n }\n }\n }\n },\n clearRange: {\n serializedName: \"ClearRange\",\n xmlName: \"ClearRange\",\n xmlElementName: \"ClearRange\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ClearRange\"\n }\n }\n }\n },\n continuationToken: {\n serializedName: \"NextMarker\",\n xmlName: \"NextMarker\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const PageRange = {\n serializedName: \"PageRange\",\n xmlName: \"PageRange\",\n type: {\n name: \"Composite\",\n className: \"PageRange\",\n modelProperties: {\n start: {\n serializedName: \"Start\",\n required: true,\n xmlName: \"Start\",\n type: {\n name: \"Number\"\n }\n },\n end: {\n serializedName: \"End\",\n required: true,\n xmlName: \"End\",\n type: {\n name: \"Number\"\n }\n }\n }\n }\n};\nexport const ClearRange = {\n serializedName: \"ClearRange\",\n xmlName: \"ClearRange\",\n type: {\n name: \"Composite\",\n className: \"ClearRange\",\n modelProperties: {\n start: {\n serializedName: \"Start\",\n required: true,\n xmlName: \"Start\",\n type: {\n name: \"Number\"\n }\n },\n end: {\n serializedName: \"End\",\n required: true,\n xmlName: \"End\",\n type: {\n name: \"Number\"\n }\n }\n }\n }\n};\nexport const QueryRequest = {\n serializedName: \"QueryRequest\",\n xmlName: \"QueryRequest\",\n type: {\n name: \"Composite\",\n className: \"QueryRequest\",\n modelProperties: {\n queryType: {\n serializedName: \"QueryType\",\n required: true,\n xmlName: \"QueryType\",\n type: {\n name: \"String\"\n }\n },\n expression: {\n serializedName: \"Expression\",\n required: true,\n xmlName: \"Expression\",\n type: {\n name: \"String\"\n }\n },\n inputSerialization: {\n serializedName: \"InputSerialization\",\n xmlName: \"InputSerialization\",\n type: {\n name: \"Composite\",\n className: \"QuerySerialization\"\n }\n },\n outputSerialization: {\n serializedName: \"OutputSerialization\",\n xmlName: \"OutputSerialization\",\n type: {\n name: \"Composite\",\n className: \"QuerySerialization\"\n }\n }\n }\n }\n};\nexport const QuerySerialization = {\n serializedName: \"QuerySerialization\",\n type: {\n name: \"Composite\",\n className: \"QuerySerialization\",\n modelProperties: {\n format: {\n serializedName: \"Format\",\n xmlName: \"Format\",\n type: {\n name: \"Composite\",\n className: \"QueryFormat\"\n }\n }\n }\n }\n};\nexport const QueryFormat = {\n serializedName: \"QueryFormat\",\n type: {\n name: \"Composite\",\n className: \"QueryFormat\",\n modelProperties: {\n type: {\n serializedName: \"Type\",\n required: true,\n xmlName: \"Type\",\n type: {\n name: \"Enum\",\n allowedValues: [\"delimited\", \"json\", \"arrow\", \"parquet\"]\n }\n },\n delimitedTextConfiguration: {\n serializedName: \"DelimitedTextConfiguration\",\n xmlName: \"DelimitedTextConfiguration\",\n type: {\n name: \"Composite\",\n className: \"DelimitedTextConfiguration\"\n }\n },\n jsonTextConfiguration: {\n serializedName: \"JsonTextConfiguration\",\n xmlName: \"JsonTextConfiguration\",\n type: {\n name: \"Composite\",\n className: \"JsonTextConfiguration\"\n }\n },\n arrowConfiguration: {\n serializedName: \"ArrowConfiguration\",\n xmlName: \"ArrowConfiguration\",\n type: {\n name: \"Composite\",\n className: \"ArrowConfiguration\"\n }\n },\n parquetTextConfiguration: {\n serializedName: \"ParquetTextConfiguration\",\n xmlName: \"ParquetTextConfiguration\",\n type: {\n name: \"any\"\n }\n }\n }\n }\n};\nexport const DelimitedTextConfiguration = {\n serializedName: \"DelimitedTextConfiguration\",\n xmlName: \"DelimitedTextConfiguration\",\n type: {\n name: \"Composite\",\n className: \"DelimitedTextConfiguration\",\n modelProperties: {\n columnSeparator: {\n serializedName: \"ColumnSeparator\",\n xmlName: \"ColumnSeparator\",\n type: {\n name: \"String\"\n }\n },\n fieldQuote: {\n serializedName: \"FieldQuote\",\n xmlName: \"FieldQuote\",\n type: {\n name: \"String\"\n }\n },\n recordSeparator: {\n serializedName: \"RecordSeparator\",\n xmlName: \"RecordSeparator\",\n type: {\n name: \"String\"\n }\n },\n escapeChar: {\n serializedName: \"EscapeChar\",\n xmlName: \"EscapeChar\",\n type: {\n name: \"String\"\n }\n },\n headersPresent: {\n serializedName: \"HeadersPresent\",\n xmlName: \"HasHeaders\",\n type: {\n name: \"Boolean\"\n }\n }\n }\n }\n};\nexport const JsonTextConfiguration = {\n serializedName: \"JsonTextConfiguration\",\n xmlName: \"JsonTextConfiguration\",\n type: {\n name: \"Composite\",\n className: \"JsonTextConfiguration\",\n modelProperties: {\n recordSeparator: {\n serializedName: \"RecordSeparator\",\n xmlName: \"RecordSeparator\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ArrowConfiguration = {\n serializedName: \"ArrowConfiguration\",\n xmlName: \"ArrowConfiguration\",\n type: {\n name: \"Composite\",\n className: \"ArrowConfiguration\",\n modelProperties: {\n schema: {\n serializedName: \"Schema\",\n required: true,\n xmlName: \"Schema\",\n xmlIsWrapped: true,\n xmlElementName: \"Field\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ArrowField\"\n }\n }\n }\n }\n }\n }\n};\nexport const ArrowField = {\n serializedName: \"ArrowField\",\n xmlName: \"Field\",\n type: {\n name: \"Composite\",\n className: \"ArrowField\",\n modelProperties: {\n type: {\n serializedName: \"Type\",\n required: true,\n xmlName: \"Type\",\n type: {\n name: \"String\"\n }\n },\n name: {\n serializedName: \"Name\",\n xmlName: \"Name\",\n type: {\n name: \"String\"\n }\n },\n precision: {\n serializedName: \"Precision\",\n xmlName: \"Precision\",\n type: {\n name: \"Number\"\n }\n },\n scale: {\n serializedName: \"Scale\",\n xmlName: \"Scale\",\n type: {\n name: \"Number\"\n }\n }\n }\n }\n};\nexport const ServiceSetPropertiesHeaders = {\n serializedName: \"Service_setPropertiesHeaders\",\n type: {\n name: \"Composite\",\n className: \"ServiceSetPropertiesHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ServiceSetPropertiesExceptionHeaders = {\n serializedName: \"Service_setPropertiesExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ServiceSetPropertiesExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ServiceGetPropertiesHeaders = {\n serializedName: \"Service_getPropertiesHeaders\",\n type: {\n name: \"Composite\",\n className: \"ServiceGetPropertiesHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ServiceGetPropertiesExceptionHeaders = {\n serializedName: \"Service_getPropertiesExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ServiceGetPropertiesExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ServiceGetStatisticsHeaders = {\n serializedName: \"Service_getStatisticsHeaders\",\n type: {\n name: \"Composite\",\n className: \"ServiceGetStatisticsHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ServiceGetStatisticsExceptionHeaders = {\n serializedName: \"Service_getStatisticsExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ServiceGetStatisticsExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ServiceListContainersSegmentHeaders = {\n serializedName: \"Service_listContainersSegmentHeaders\",\n type: {\n name: \"Composite\",\n className: \"ServiceListContainersSegmentHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ServiceListContainersSegmentExceptionHeaders = {\n serializedName: \"Service_listContainersSegmentExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ServiceListContainersSegmentExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ServiceGetUserDelegationKeyHeaders = {\n serializedName: \"Service_getUserDelegationKeyHeaders\",\n type: {\n name: \"Composite\",\n className: \"ServiceGetUserDelegationKeyHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ServiceGetUserDelegationKeyExceptionHeaders = {\n serializedName: \"Service_getUserDelegationKeyExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ServiceGetUserDelegationKeyExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ServiceGetAccountInfoHeaders = {\n serializedName: \"Service_getAccountInfoHeaders\",\n type: {\n name: \"Composite\",\n className: \"ServiceGetAccountInfoHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n skuName: {\n serializedName: \"x-ms-sku-name\",\n xmlName: \"x-ms-sku-name\",\n type: {\n name: \"Enum\",\n allowedValues: [\n \"Standard_LRS\",\n \"Standard_GRS\",\n \"Standard_RAGRS\",\n \"Standard_ZRS\",\n \"Premium_LRS\"\n ]\n }\n },\n accountKind: {\n serializedName: \"x-ms-account-kind\",\n xmlName: \"x-ms-account-kind\",\n type: {\n name: \"Enum\",\n allowedValues: [\n \"Storage\",\n \"BlobStorage\",\n \"StorageV2\",\n \"FileStorage\",\n \"BlockBlobStorage\"\n ]\n }\n },\n isHierarchicalNamespaceEnabled: {\n serializedName: \"x-ms-is-hns-enabled\",\n xmlName: \"x-ms-is-hns-enabled\",\n type: {\n name: \"Boolean\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ServiceGetAccountInfoExceptionHeaders = {\n serializedName: \"Service_getAccountInfoExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ServiceGetAccountInfoExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ServiceSubmitBatchHeaders = {\n serializedName: \"Service_submitBatchHeaders\",\n type: {\n name: \"Composite\",\n className: \"ServiceSubmitBatchHeaders\",\n modelProperties: {\n contentType: {\n serializedName: \"content-type\",\n xmlName: \"content-type\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ServiceSubmitBatchExceptionHeaders = {\n serializedName: \"Service_submitBatchExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ServiceSubmitBatchExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ServiceFilterBlobsHeaders = {\n serializedName: \"Service_filterBlobsHeaders\",\n type: {\n name: \"Composite\",\n className: \"ServiceFilterBlobsHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ServiceFilterBlobsExceptionHeaders = {\n serializedName: \"Service_filterBlobsExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ServiceFilterBlobsExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ContainerCreateHeaders = {\n serializedName: \"Container_createHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerCreateHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ContainerCreateExceptionHeaders = {\n serializedName: \"Container_createExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerCreateExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ContainerGetPropertiesHeaders = {\n serializedName: \"Container_getPropertiesHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerGetPropertiesHeaders\",\n modelProperties: {\n metadata: {\n serializedName: \"x-ms-meta\",\n xmlName: \"x-ms-meta\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n },\n headerCollectionPrefix: \"x-ms-meta-\"\n },\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n leaseDuration: {\n serializedName: \"x-ms-lease-duration\",\n xmlName: \"x-ms-lease-duration\",\n type: {\n name: \"Enum\",\n allowedValues: [\"infinite\", \"fixed\"]\n }\n },\n leaseState: {\n serializedName: \"x-ms-lease-state\",\n xmlName: \"x-ms-lease-state\",\n type: {\n name: \"Enum\",\n allowedValues: [\n \"available\",\n \"leased\",\n \"expired\",\n \"breaking\",\n \"broken\"\n ]\n }\n },\n leaseStatus: {\n serializedName: \"x-ms-lease-status\",\n xmlName: \"x-ms-lease-status\",\n type: {\n name: \"Enum\",\n allowedValues: [\"locked\", \"unlocked\"]\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n blobPublicAccess: {\n serializedName: \"x-ms-blob-public-access\",\n xmlName: \"x-ms-blob-public-access\",\n type: {\n name: \"Enum\",\n allowedValues: [\"container\", \"blob\"]\n }\n },\n hasImmutabilityPolicy: {\n serializedName: \"x-ms-has-immutability-policy\",\n xmlName: \"x-ms-has-immutability-policy\",\n type: {\n name: \"Boolean\"\n }\n },\n hasLegalHold: {\n serializedName: \"x-ms-has-legal-hold\",\n xmlName: \"x-ms-has-legal-hold\",\n type: {\n name: \"Boolean\"\n }\n },\n defaultEncryptionScope: {\n serializedName: \"x-ms-default-encryption-scope\",\n xmlName: \"x-ms-default-encryption-scope\",\n type: {\n name: \"String\"\n }\n },\n denyEncryptionScopeOverride: {\n serializedName: \"x-ms-deny-encryption-scope-override\",\n xmlName: \"x-ms-deny-encryption-scope-override\",\n type: {\n name: \"Boolean\"\n }\n },\n isImmutableStorageWithVersioningEnabled: {\n serializedName: \"x-ms-immutable-storage-with-versioning-enabled\",\n xmlName: \"x-ms-immutable-storage-with-versioning-enabled\",\n type: {\n name: \"Boolean\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ContainerGetPropertiesExceptionHeaders = {\n serializedName: \"Container_getPropertiesExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerGetPropertiesExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ContainerDeleteHeaders = {\n serializedName: \"Container_deleteHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerDeleteHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ContainerDeleteExceptionHeaders = {\n serializedName: \"Container_deleteExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerDeleteExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ContainerSetMetadataHeaders = {\n serializedName: \"Container_setMetadataHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerSetMetadataHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ContainerSetMetadataExceptionHeaders = {\n serializedName: \"Container_setMetadataExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerSetMetadataExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ContainerGetAccessPolicyHeaders = {\n serializedName: \"Container_getAccessPolicyHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerGetAccessPolicyHeaders\",\n modelProperties: {\n blobPublicAccess: {\n serializedName: \"x-ms-blob-public-access\",\n xmlName: \"x-ms-blob-public-access\",\n type: {\n name: \"Enum\",\n allowedValues: [\"container\", \"blob\"]\n }\n },\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ContainerGetAccessPolicyExceptionHeaders = {\n serializedName: \"Container_getAccessPolicyExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerGetAccessPolicyExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ContainerSetAccessPolicyHeaders = {\n serializedName: \"Container_setAccessPolicyHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerSetAccessPolicyHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ContainerSetAccessPolicyExceptionHeaders = {\n serializedName: \"Container_setAccessPolicyExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerSetAccessPolicyExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ContainerRestoreHeaders = {\n serializedName: \"Container_restoreHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerRestoreHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ContainerRestoreExceptionHeaders = {\n serializedName: \"Container_restoreExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerRestoreExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ContainerRenameHeaders = {\n serializedName: \"Container_renameHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerRenameHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ContainerRenameExceptionHeaders = {\n serializedName: \"Container_renameExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerRenameExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ContainerSubmitBatchHeaders = {\n serializedName: \"Container_submitBatchHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerSubmitBatchHeaders\",\n modelProperties: {\n contentType: {\n serializedName: \"content-type\",\n xmlName: \"content-type\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ContainerSubmitBatchExceptionHeaders = {\n serializedName: \"Container_submitBatchExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerSubmitBatchExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ContainerFilterBlobsHeaders = {\n serializedName: \"Container_filterBlobsHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerFilterBlobsHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n }\n }\n }\n};\nexport const ContainerFilterBlobsExceptionHeaders = {\n serializedName: \"Container_filterBlobsExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerFilterBlobsExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ContainerAcquireLeaseHeaders = {\n serializedName: \"Container_acquireLeaseHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerAcquireLeaseHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n leaseId: {\n serializedName: \"x-ms-lease-id\",\n xmlName: \"x-ms-lease-id\",\n type: {\n name: \"String\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n }\n }\n }\n};\nexport const ContainerAcquireLeaseExceptionHeaders = {\n serializedName: \"Container_acquireLeaseExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerAcquireLeaseExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ContainerReleaseLeaseHeaders = {\n serializedName: \"Container_releaseLeaseHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerReleaseLeaseHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n }\n }\n }\n};\nexport const ContainerReleaseLeaseExceptionHeaders = {\n serializedName: \"Container_releaseLeaseExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerReleaseLeaseExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ContainerRenewLeaseHeaders = {\n serializedName: \"Container_renewLeaseHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerRenewLeaseHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n leaseId: {\n serializedName: \"x-ms-lease-id\",\n xmlName: \"x-ms-lease-id\",\n type: {\n name: \"String\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n }\n }\n }\n};\nexport const ContainerRenewLeaseExceptionHeaders = {\n serializedName: \"Container_renewLeaseExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerRenewLeaseExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ContainerBreakLeaseHeaders = {\n serializedName: \"Container_breakLeaseHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerBreakLeaseHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n leaseTime: {\n serializedName: \"x-ms-lease-time\",\n xmlName: \"x-ms-lease-time\",\n type: {\n name: \"Number\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n }\n }\n }\n};\nexport const ContainerBreakLeaseExceptionHeaders = {\n serializedName: \"Container_breakLeaseExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerBreakLeaseExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ContainerChangeLeaseHeaders = {\n serializedName: \"Container_changeLeaseHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerChangeLeaseHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n leaseId: {\n serializedName: \"x-ms-lease-id\",\n xmlName: \"x-ms-lease-id\",\n type: {\n name: \"String\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n }\n }\n }\n};\nexport const ContainerChangeLeaseExceptionHeaders = {\n serializedName: \"Container_changeLeaseExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerChangeLeaseExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ContainerListBlobFlatSegmentHeaders = {\n serializedName: \"Container_listBlobFlatSegmentHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerListBlobFlatSegmentHeaders\",\n modelProperties: {\n contentType: {\n serializedName: \"content-type\",\n xmlName: \"content-type\",\n type: {\n name: \"String\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ContainerListBlobFlatSegmentExceptionHeaders = {\n serializedName: \"Container_listBlobFlatSegmentExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerListBlobFlatSegmentExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ContainerListBlobHierarchySegmentHeaders = {\n serializedName: \"Container_listBlobHierarchySegmentHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerListBlobHierarchySegmentHeaders\",\n modelProperties: {\n contentType: {\n serializedName: \"content-type\",\n xmlName: \"content-type\",\n type: {\n name: \"String\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ContainerListBlobHierarchySegmentExceptionHeaders = {\n serializedName: \"Container_listBlobHierarchySegmentExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerListBlobHierarchySegmentExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const ContainerGetAccountInfoHeaders = {\n serializedName: \"Container_getAccountInfoHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerGetAccountInfoHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n skuName: {\n serializedName: \"x-ms-sku-name\",\n xmlName: \"x-ms-sku-name\",\n type: {\n name: \"Enum\",\n allowedValues: [\n \"Standard_LRS\",\n \"Standard_GRS\",\n \"Standard_RAGRS\",\n \"Standard_ZRS\",\n \"Premium_LRS\"\n ]\n }\n },\n accountKind: {\n serializedName: \"x-ms-account-kind\",\n xmlName: \"x-ms-account-kind\",\n type: {\n name: \"Enum\",\n allowedValues: [\n \"Storage\",\n \"BlobStorage\",\n \"StorageV2\",\n \"FileStorage\",\n \"BlockBlobStorage\"\n ]\n }\n }\n }\n }\n};\nexport const ContainerGetAccountInfoExceptionHeaders = {\n serializedName: \"Container_getAccountInfoExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"ContainerGetAccountInfoExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlobDownloadHeaders = {\n serializedName: \"Blob_downloadHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobDownloadHeaders\",\n modelProperties: {\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n createdOn: {\n serializedName: \"x-ms-creation-time\",\n xmlName: \"x-ms-creation-time\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n metadata: {\n serializedName: \"x-ms-meta\",\n xmlName: \"x-ms-meta\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n },\n headerCollectionPrefix: \"x-ms-meta-\"\n },\n objectReplicationPolicyId: {\n serializedName: \"x-ms-or-policy-id\",\n xmlName: \"x-ms-or-policy-id\",\n type: {\n name: \"String\"\n }\n },\n objectReplicationRules: {\n serializedName: \"x-ms-or\",\n xmlName: \"x-ms-or\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n },\n headerCollectionPrefix: \"x-ms-or-\"\n },\n contentLength: {\n serializedName: \"content-length\",\n xmlName: \"content-length\",\n type: {\n name: \"Number\"\n }\n },\n contentType: {\n serializedName: \"content-type\",\n xmlName: \"content-type\",\n type: {\n name: \"String\"\n }\n },\n contentRange: {\n serializedName: \"content-range\",\n xmlName: \"content-range\",\n type: {\n name: \"String\"\n }\n },\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n contentMD5: {\n serializedName: \"content-md5\",\n xmlName: \"content-md5\",\n type: {\n name: \"ByteArray\"\n }\n },\n contentEncoding: {\n serializedName: \"content-encoding\",\n xmlName: \"content-encoding\",\n type: {\n name: \"String\"\n }\n },\n cacheControl: {\n serializedName: \"cache-control\",\n xmlName: \"cache-control\",\n type: {\n name: \"String\"\n }\n },\n contentDisposition: {\n serializedName: \"content-disposition\",\n xmlName: \"content-disposition\",\n type: {\n name: \"String\"\n }\n },\n contentLanguage: {\n serializedName: \"content-language\",\n xmlName: \"content-language\",\n type: {\n name: \"String\"\n }\n },\n blobSequenceNumber: {\n serializedName: \"x-ms-blob-sequence-number\",\n xmlName: \"x-ms-blob-sequence-number\",\n type: {\n name: \"Number\"\n }\n },\n blobType: {\n serializedName: \"x-ms-blob-type\",\n xmlName: \"x-ms-blob-type\",\n type: {\n name: \"Enum\",\n allowedValues: [\"BlockBlob\", \"PageBlob\", \"AppendBlob\"]\n }\n },\n copyCompletedOn: {\n serializedName: \"x-ms-copy-completion-time\",\n xmlName: \"x-ms-copy-completion-time\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n copyStatusDescription: {\n serializedName: \"x-ms-copy-status-description\",\n xmlName: \"x-ms-copy-status-description\",\n type: {\n name: \"String\"\n }\n },\n copyId: {\n serializedName: \"x-ms-copy-id\",\n xmlName: \"x-ms-copy-id\",\n type: {\n name: \"String\"\n }\n },\n copyProgress: {\n serializedName: \"x-ms-copy-progress\",\n xmlName: \"x-ms-copy-progress\",\n type: {\n name: \"String\"\n }\n },\n copySource: {\n serializedName: \"x-ms-copy-source\",\n xmlName: \"x-ms-copy-source\",\n type: {\n name: \"String\"\n }\n },\n copyStatus: {\n serializedName: \"x-ms-copy-status\",\n xmlName: \"x-ms-copy-status\",\n type: {\n name: \"Enum\",\n allowedValues: [\"pending\", \"success\", \"aborted\", \"failed\"]\n }\n },\n leaseDuration: {\n serializedName: \"x-ms-lease-duration\",\n xmlName: \"x-ms-lease-duration\",\n type: {\n name: \"Enum\",\n allowedValues: [\"infinite\", \"fixed\"]\n }\n },\n leaseState: {\n serializedName: \"x-ms-lease-state\",\n xmlName: \"x-ms-lease-state\",\n type: {\n name: \"Enum\",\n allowedValues: [\n \"available\",\n \"leased\",\n \"expired\",\n \"breaking\",\n \"broken\"\n ]\n }\n },\n leaseStatus: {\n serializedName: \"x-ms-lease-status\",\n xmlName: \"x-ms-lease-status\",\n type: {\n name: \"Enum\",\n allowedValues: [\"locked\", \"unlocked\"]\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n versionId: {\n serializedName: \"x-ms-version-id\",\n xmlName: \"x-ms-version-id\",\n type: {\n name: \"String\"\n }\n },\n isCurrentVersion: {\n serializedName: \"x-ms-is-current-version\",\n xmlName: \"x-ms-is-current-version\",\n type: {\n name: \"Boolean\"\n }\n },\n acceptRanges: {\n serializedName: \"accept-ranges\",\n xmlName: \"accept-ranges\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n blobCommittedBlockCount: {\n serializedName: \"x-ms-blob-committed-block-count\",\n xmlName: \"x-ms-blob-committed-block-count\",\n type: {\n name: \"Number\"\n }\n },\n isServerEncrypted: {\n serializedName: \"x-ms-server-encrypted\",\n xmlName: \"x-ms-server-encrypted\",\n type: {\n name: \"Boolean\"\n }\n },\n encryptionKeySha256: {\n serializedName: \"x-ms-encryption-key-sha256\",\n xmlName: \"x-ms-encryption-key-sha256\",\n type: {\n name: \"String\"\n }\n },\n encryptionScope: {\n serializedName: \"x-ms-encryption-scope\",\n xmlName: \"x-ms-encryption-scope\",\n type: {\n name: \"String\"\n }\n },\n blobContentMD5: {\n serializedName: \"x-ms-blob-content-md5\",\n xmlName: \"x-ms-blob-content-md5\",\n type: {\n name: \"ByteArray\"\n }\n },\n tagCount: {\n serializedName: \"x-ms-tag-count\",\n xmlName: \"x-ms-tag-count\",\n type: {\n name: \"Number\"\n }\n },\n isSealed: {\n serializedName: \"x-ms-blob-sealed\",\n xmlName: \"x-ms-blob-sealed\",\n type: {\n name: \"Boolean\"\n }\n },\n lastAccessed: {\n serializedName: \"x-ms-last-access-time\",\n xmlName: \"x-ms-last-access-time\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n immutabilityPolicyExpiresOn: {\n serializedName: \"x-ms-immutability-policy-until-date\",\n xmlName: \"x-ms-immutability-policy-until-date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n immutabilityPolicyMode: {\n serializedName: \"x-ms-immutability-policy-mode\",\n xmlName: \"x-ms-immutability-policy-mode\",\n type: {\n name: \"Enum\",\n allowedValues: [\"Mutable\", \"Unlocked\", \"Locked\"]\n }\n },\n legalHold: {\n serializedName: \"x-ms-legal-hold\",\n xmlName: \"x-ms-legal-hold\",\n type: {\n name: \"Boolean\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n },\n contentCrc64: {\n serializedName: \"x-ms-content-crc64\",\n xmlName: \"x-ms-content-crc64\",\n type: {\n name: \"ByteArray\"\n }\n }\n }\n }\n};\nexport const BlobDownloadExceptionHeaders = {\n serializedName: \"Blob_downloadExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobDownloadExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlobGetPropertiesHeaders = {\n serializedName: \"Blob_getPropertiesHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobGetPropertiesHeaders\",\n modelProperties: {\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n createdOn: {\n serializedName: \"x-ms-creation-time\",\n xmlName: \"x-ms-creation-time\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n metadata: {\n serializedName: \"x-ms-meta\",\n xmlName: \"x-ms-meta\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n },\n headerCollectionPrefix: \"x-ms-meta-\"\n },\n objectReplicationPolicyId: {\n serializedName: \"x-ms-or-policy-id\",\n xmlName: \"x-ms-or-policy-id\",\n type: {\n name: \"String\"\n }\n },\n objectReplicationRules: {\n serializedName: \"x-ms-or\",\n xmlName: \"x-ms-or\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n },\n headerCollectionPrefix: \"x-ms-or-\"\n },\n blobType: {\n serializedName: \"x-ms-blob-type\",\n xmlName: \"x-ms-blob-type\",\n type: {\n name: \"Enum\",\n allowedValues: [\"BlockBlob\", \"PageBlob\", \"AppendBlob\"]\n }\n },\n copyCompletedOn: {\n serializedName: \"x-ms-copy-completion-time\",\n xmlName: \"x-ms-copy-completion-time\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n copyStatusDescription: {\n serializedName: \"x-ms-copy-status-description\",\n xmlName: \"x-ms-copy-status-description\",\n type: {\n name: \"String\"\n }\n },\n copyId: {\n serializedName: \"x-ms-copy-id\",\n xmlName: \"x-ms-copy-id\",\n type: {\n name: \"String\"\n }\n },\n copyProgress: {\n serializedName: \"x-ms-copy-progress\",\n xmlName: \"x-ms-copy-progress\",\n type: {\n name: \"String\"\n }\n },\n copySource: {\n serializedName: \"x-ms-copy-source\",\n xmlName: \"x-ms-copy-source\",\n type: {\n name: \"String\"\n }\n },\n copyStatus: {\n serializedName: \"x-ms-copy-status\",\n xmlName: \"x-ms-copy-status\",\n type: {\n name: \"Enum\",\n allowedValues: [\"pending\", \"success\", \"aborted\", \"failed\"]\n }\n },\n isIncrementalCopy: {\n serializedName: \"x-ms-incremental-copy\",\n xmlName: \"x-ms-incremental-copy\",\n type: {\n name: \"Boolean\"\n }\n },\n destinationSnapshot: {\n serializedName: \"x-ms-copy-destination-snapshot\",\n xmlName: \"x-ms-copy-destination-snapshot\",\n type: {\n name: \"String\"\n }\n },\n leaseDuration: {\n serializedName: \"x-ms-lease-duration\",\n xmlName: \"x-ms-lease-duration\",\n type: {\n name: \"Enum\",\n allowedValues: [\"infinite\", \"fixed\"]\n }\n },\n leaseState: {\n serializedName: \"x-ms-lease-state\",\n xmlName: \"x-ms-lease-state\",\n type: {\n name: \"Enum\",\n allowedValues: [\n \"available\",\n \"leased\",\n \"expired\",\n \"breaking\",\n \"broken\"\n ]\n }\n },\n leaseStatus: {\n serializedName: \"x-ms-lease-status\",\n xmlName: \"x-ms-lease-status\",\n type: {\n name: \"Enum\",\n allowedValues: [\"locked\", \"unlocked\"]\n }\n },\n contentLength: {\n serializedName: \"content-length\",\n xmlName: \"content-length\",\n type: {\n name: \"Number\"\n }\n },\n contentType: {\n serializedName: \"content-type\",\n xmlName: \"content-type\",\n type: {\n name: \"String\"\n }\n },\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n contentMD5: {\n serializedName: \"content-md5\",\n xmlName: \"content-md5\",\n type: {\n name: \"ByteArray\"\n }\n },\n contentEncoding: {\n serializedName: \"content-encoding\",\n xmlName: \"content-encoding\",\n type: {\n name: \"String\"\n }\n },\n contentDisposition: {\n serializedName: \"content-disposition\",\n xmlName: \"content-disposition\",\n type: {\n name: \"String\"\n }\n },\n contentLanguage: {\n serializedName: \"content-language\",\n xmlName: \"content-language\",\n type: {\n name: \"String\"\n }\n },\n cacheControl: {\n serializedName: \"cache-control\",\n xmlName: \"cache-control\",\n type: {\n name: \"String\"\n }\n },\n blobSequenceNumber: {\n serializedName: \"x-ms-blob-sequence-number\",\n xmlName: \"x-ms-blob-sequence-number\",\n type: {\n name: \"Number\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n acceptRanges: {\n serializedName: \"accept-ranges\",\n xmlName: \"accept-ranges\",\n type: {\n name: \"String\"\n }\n },\n blobCommittedBlockCount: {\n serializedName: \"x-ms-blob-committed-block-count\",\n xmlName: \"x-ms-blob-committed-block-count\",\n type: {\n name: \"Number\"\n }\n },\n isServerEncrypted: {\n serializedName: \"x-ms-server-encrypted\",\n xmlName: \"x-ms-server-encrypted\",\n type: {\n name: \"Boolean\"\n }\n },\n encryptionKeySha256: {\n serializedName: \"x-ms-encryption-key-sha256\",\n xmlName: \"x-ms-encryption-key-sha256\",\n type: {\n name: \"String\"\n }\n },\n encryptionScope: {\n serializedName: \"x-ms-encryption-scope\",\n xmlName: \"x-ms-encryption-scope\",\n type: {\n name: \"String\"\n }\n },\n accessTier: {\n serializedName: \"x-ms-access-tier\",\n xmlName: \"x-ms-access-tier\",\n type: {\n name: \"String\"\n }\n },\n accessTierInferred: {\n serializedName: \"x-ms-access-tier-inferred\",\n xmlName: \"x-ms-access-tier-inferred\",\n type: {\n name: \"Boolean\"\n }\n },\n archiveStatus: {\n serializedName: \"x-ms-archive-status\",\n xmlName: \"x-ms-archive-status\",\n type: {\n name: \"String\"\n }\n },\n accessTierChangedOn: {\n serializedName: \"x-ms-access-tier-change-time\",\n xmlName: \"x-ms-access-tier-change-time\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n versionId: {\n serializedName: \"x-ms-version-id\",\n xmlName: \"x-ms-version-id\",\n type: {\n name: \"String\"\n }\n },\n isCurrentVersion: {\n serializedName: \"x-ms-is-current-version\",\n xmlName: \"x-ms-is-current-version\",\n type: {\n name: \"Boolean\"\n }\n },\n tagCount: {\n serializedName: \"x-ms-tag-count\",\n xmlName: \"x-ms-tag-count\",\n type: {\n name: \"Number\"\n }\n },\n expiresOn: {\n serializedName: \"x-ms-expiry-time\",\n xmlName: \"x-ms-expiry-time\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n isSealed: {\n serializedName: \"x-ms-blob-sealed\",\n xmlName: \"x-ms-blob-sealed\",\n type: {\n name: \"Boolean\"\n }\n },\n rehydratePriority: {\n serializedName: \"x-ms-rehydrate-priority\",\n xmlName: \"x-ms-rehydrate-priority\",\n type: {\n name: \"Enum\",\n allowedValues: [\"High\", \"Standard\"]\n }\n },\n lastAccessed: {\n serializedName: \"x-ms-last-access-time\",\n xmlName: \"x-ms-last-access-time\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n immutabilityPolicyExpiresOn: {\n serializedName: \"x-ms-immutability-policy-until-date\",\n xmlName: \"x-ms-immutability-policy-until-date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n immutabilityPolicyMode: {\n serializedName: \"x-ms-immutability-policy-mode\",\n xmlName: \"x-ms-immutability-policy-mode\",\n type: {\n name: \"Enum\",\n allowedValues: [\"Mutable\", \"Unlocked\", \"Locked\"]\n }\n },\n legalHold: {\n serializedName: \"x-ms-legal-hold\",\n xmlName: \"x-ms-legal-hold\",\n type: {\n name: \"Boolean\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlobGetPropertiesExceptionHeaders = {\n serializedName: \"Blob_getPropertiesExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobGetPropertiesExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlobDeleteHeaders = {\n serializedName: \"Blob_deleteHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobDeleteHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlobDeleteExceptionHeaders = {\n serializedName: \"Blob_deleteExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobDeleteExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlobUndeleteHeaders = {\n serializedName: \"Blob_undeleteHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobUndeleteHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlobUndeleteExceptionHeaders = {\n serializedName: \"Blob_undeleteExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobUndeleteExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlobSetExpiryHeaders = {\n serializedName: \"Blob_setExpiryHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobSetExpiryHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n }\n }\n }\n};\nexport const BlobSetExpiryExceptionHeaders = {\n serializedName: \"Blob_setExpiryExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobSetExpiryExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlobSetHttpHeadersHeaders = {\n serializedName: \"Blob_setHttpHeadersHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobSetHttpHeadersHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n blobSequenceNumber: {\n serializedName: \"x-ms-blob-sequence-number\",\n xmlName: \"x-ms-blob-sequence-number\",\n type: {\n name: \"Number\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlobSetHttpHeadersExceptionHeaders = {\n serializedName: \"Blob_setHttpHeadersExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobSetHttpHeadersExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlobSetImmutabilityPolicyHeaders = {\n serializedName: \"Blob_setImmutabilityPolicyHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobSetImmutabilityPolicyHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n immutabilityPolicyExpiry: {\n serializedName: \"x-ms-immutability-policy-until-date\",\n xmlName: \"x-ms-immutability-policy-until-date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n immutabilityPolicyMode: {\n serializedName: \"x-ms-immutability-policy-mode\",\n xmlName: \"x-ms-immutability-policy-mode\",\n type: {\n name: \"Enum\",\n allowedValues: [\"Mutable\", \"Unlocked\", \"Locked\"]\n }\n }\n }\n }\n};\nexport const BlobSetImmutabilityPolicyExceptionHeaders = {\n serializedName: \"Blob_setImmutabilityPolicyExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobSetImmutabilityPolicyExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlobDeleteImmutabilityPolicyHeaders = {\n serializedName: \"Blob_deleteImmutabilityPolicyHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobDeleteImmutabilityPolicyHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n }\n }\n }\n};\nexport const BlobDeleteImmutabilityPolicyExceptionHeaders = {\n serializedName: \"Blob_deleteImmutabilityPolicyExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobDeleteImmutabilityPolicyExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlobSetLegalHoldHeaders = {\n serializedName: \"Blob_setLegalHoldHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobSetLegalHoldHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n legalHold: {\n serializedName: \"x-ms-legal-hold\",\n xmlName: \"x-ms-legal-hold\",\n type: {\n name: \"Boolean\"\n }\n }\n }\n }\n};\nexport const BlobSetLegalHoldExceptionHeaders = {\n serializedName: \"Blob_setLegalHoldExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobSetLegalHoldExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlobSetMetadataHeaders = {\n serializedName: \"Blob_setMetadataHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobSetMetadataHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n versionId: {\n serializedName: \"x-ms-version-id\",\n xmlName: \"x-ms-version-id\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n isServerEncrypted: {\n serializedName: \"x-ms-request-server-encrypted\",\n xmlName: \"x-ms-request-server-encrypted\",\n type: {\n name: \"Boolean\"\n }\n },\n encryptionKeySha256: {\n serializedName: \"x-ms-encryption-key-sha256\",\n xmlName: \"x-ms-encryption-key-sha256\",\n type: {\n name: \"String\"\n }\n },\n encryptionScope: {\n serializedName: \"x-ms-encryption-scope\",\n xmlName: \"x-ms-encryption-scope\",\n type: {\n name: \"String\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlobSetMetadataExceptionHeaders = {\n serializedName: \"Blob_setMetadataExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobSetMetadataExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlobAcquireLeaseHeaders = {\n serializedName: \"Blob_acquireLeaseHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobAcquireLeaseHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n leaseId: {\n serializedName: \"x-ms-lease-id\",\n xmlName: \"x-ms-lease-id\",\n type: {\n name: \"String\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n }\n }\n }\n};\nexport const BlobAcquireLeaseExceptionHeaders = {\n serializedName: \"Blob_acquireLeaseExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobAcquireLeaseExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlobReleaseLeaseHeaders = {\n serializedName: \"Blob_releaseLeaseHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobReleaseLeaseHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n }\n }\n }\n};\nexport const BlobReleaseLeaseExceptionHeaders = {\n serializedName: \"Blob_releaseLeaseExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobReleaseLeaseExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlobRenewLeaseHeaders = {\n serializedName: \"Blob_renewLeaseHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobRenewLeaseHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n leaseId: {\n serializedName: \"x-ms-lease-id\",\n xmlName: \"x-ms-lease-id\",\n type: {\n name: \"String\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n }\n }\n }\n};\nexport const BlobRenewLeaseExceptionHeaders = {\n serializedName: \"Blob_renewLeaseExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobRenewLeaseExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlobChangeLeaseHeaders = {\n serializedName: \"Blob_changeLeaseHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobChangeLeaseHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n leaseId: {\n serializedName: \"x-ms-lease-id\",\n xmlName: \"x-ms-lease-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n }\n }\n }\n};\nexport const BlobChangeLeaseExceptionHeaders = {\n serializedName: \"Blob_changeLeaseExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobChangeLeaseExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlobBreakLeaseHeaders = {\n serializedName: \"Blob_breakLeaseHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobBreakLeaseHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n leaseTime: {\n serializedName: \"x-ms-lease-time\",\n xmlName: \"x-ms-lease-time\",\n type: {\n name: \"Number\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n }\n }\n }\n};\nexport const BlobBreakLeaseExceptionHeaders = {\n serializedName: \"Blob_breakLeaseExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobBreakLeaseExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlobCreateSnapshotHeaders = {\n serializedName: \"Blob_createSnapshotHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobCreateSnapshotHeaders\",\n modelProperties: {\n snapshot: {\n serializedName: \"x-ms-snapshot\",\n xmlName: \"x-ms-snapshot\",\n type: {\n name: \"String\"\n }\n },\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n versionId: {\n serializedName: \"x-ms-version-id\",\n xmlName: \"x-ms-version-id\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n isServerEncrypted: {\n serializedName: \"x-ms-request-server-encrypted\",\n xmlName: \"x-ms-request-server-encrypted\",\n type: {\n name: \"Boolean\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlobCreateSnapshotExceptionHeaders = {\n serializedName: \"Blob_createSnapshotExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobCreateSnapshotExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlobStartCopyFromURLHeaders = {\n serializedName: \"Blob_startCopyFromURLHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobStartCopyFromURLHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n versionId: {\n serializedName: \"x-ms-version-id\",\n xmlName: \"x-ms-version-id\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n copyId: {\n serializedName: \"x-ms-copy-id\",\n xmlName: \"x-ms-copy-id\",\n type: {\n name: \"String\"\n }\n },\n copyStatus: {\n serializedName: \"x-ms-copy-status\",\n xmlName: \"x-ms-copy-status\",\n type: {\n name: \"Enum\",\n allowedValues: [\"pending\", \"success\", \"aborted\", \"failed\"]\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlobStartCopyFromURLExceptionHeaders = {\n serializedName: \"Blob_startCopyFromURLExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobStartCopyFromURLExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlobCopyFromURLHeaders = {\n serializedName: \"Blob_copyFromURLHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobCopyFromURLHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n versionId: {\n serializedName: \"x-ms-version-id\",\n xmlName: \"x-ms-version-id\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n copyId: {\n serializedName: \"x-ms-copy-id\",\n xmlName: \"x-ms-copy-id\",\n type: {\n name: \"String\"\n }\n },\n copyStatus: {\n defaultValue: \"success\",\n isConstant: true,\n serializedName: \"x-ms-copy-status\",\n type: {\n name: \"String\"\n }\n },\n contentMD5: {\n serializedName: \"content-md5\",\n xmlName: \"content-md5\",\n type: {\n name: \"ByteArray\"\n }\n },\n xMsContentCrc64: {\n serializedName: \"x-ms-content-crc64\",\n xmlName: \"x-ms-content-crc64\",\n type: {\n name: \"ByteArray\"\n }\n },\n encryptionScope: {\n serializedName: \"x-ms-encryption-scope\",\n xmlName: \"x-ms-encryption-scope\",\n type: {\n name: \"String\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlobCopyFromURLExceptionHeaders = {\n serializedName: \"Blob_copyFromURLExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobCopyFromURLExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlobAbortCopyFromURLHeaders = {\n serializedName: \"Blob_abortCopyFromURLHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobAbortCopyFromURLHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlobAbortCopyFromURLExceptionHeaders = {\n serializedName: \"Blob_abortCopyFromURLExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobAbortCopyFromURLExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlobSetTierHeaders = {\n serializedName: \"Blob_setTierHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobSetTierHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlobSetTierExceptionHeaders = {\n serializedName: \"Blob_setTierExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobSetTierExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlobGetAccountInfoHeaders = {\n serializedName: \"Blob_getAccountInfoHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobGetAccountInfoHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n skuName: {\n serializedName: \"x-ms-sku-name\",\n xmlName: \"x-ms-sku-name\",\n type: {\n name: \"Enum\",\n allowedValues: [\n \"Standard_LRS\",\n \"Standard_GRS\",\n \"Standard_RAGRS\",\n \"Standard_ZRS\",\n \"Premium_LRS\"\n ]\n }\n },\n accountKind: {\n serializedName: \"x-ms-account-kind\",\n xmlName: \"x-ms-account-kind\",\n type: {\n name: \"Enum\",\n allowedValues: [\n \"Storage\",\n \"BlobStorage\",\n \"StorageV2\",\n \"FileStorage\",\n \"BlockBlobStorage\"\n ]\n }\n }\n }\n }\n};\nexport const BlobGetAccountInfoExceptionHeaders = {\n serializedName: \"Blob_getAccountInfoExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobGetAccountInfoExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlobQueryHeaders = {\n serializedName: \"Blob_queryHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobQueryHeaders\",\n modelProperties: {\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n metadata: {\n serializedName: \"x-ms-meta\",\n xmlName: \"x-ms-meta\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n }\n },\n contentLength: {\n serializedName: \"content-length\",\n xmlName: \"content-length\",\n type: {\n name: \"Number\"\n }\n },\n contentType: {\n serializedName: \"content-type\",\n xmlName: \"content-type\",\n type: {\n name: \"String\"\n }\n },\n contentRange: {\n serializedName: \"content-range\",\n xmlName: \"content-range\",\n type: {\n name: \"String\"\n }\n },\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n contentMD5: {\n serializedName: \"content-md5\",\n xmlName: \"content-md5\",\n type: {\n name: \"ByteArray\"\n }\n },\n contentEncoding: {\n serializedName: \"content-encoding\",\n xmlName: \"content-encoding\",\n type: {\n name: \"String\"\n }\n },\n cacheControl: {\n serializedName: \"cache-control\",\n xmlName: \"cache-control\",\n type: {\n name: \"String\"\n }\n },\n contentDisposition: {\n serializedName: \"content-disposition\",\n xmlName: \"content-disposition\",\n type: {\n name: \"String\"\n }\n },\n contentLanguage: {\n serializedName: \"content-language\",\n xmlName: \"content-language\",\n type: {\n name: \"String\"\n }\n },\n blobSequenceNumber: {\n serializedName: \"x-ms-blob-sequence-number\",\n xmlName: \"x-ms-blob-sequence-number\",\n type: {\n name: \"Number\"\n }\n },\n blobType: {\n serializedName: \"x-ms-blob-type\",\n xmlName: \"x-ms-blob-type\",\n type: {\n name: \"Enum\",\n allowedValues: [\"BlockBlob\", \"PageBlob\", \"AppendBlob\"]\n }\n },\n copyCompletionTime: {\n serializedName: \"x-ms-copy-completion-time\",\n xmlName: \"x-ms-copy-completion-time\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n copyStatusDescription: {\n serializedName: \"x-ms-copy-status-description\",\n xmlName: \"x-ms-copy-status-description\",\n type: {\n name: \"String\"\n }\n },\n copyId: {\n serializedName: \"x-ms-copy-id\",\n xmlName: \"x-ms-copy-id\",\n type: {\n name: \"String\"\n }\n },\n copyProgress: {\n serializedName: \"x-ms-copy-progress\",\n xmlName: \"x-ms-copy-progress\",\n type: {\n name: \"String\"\n }\n },\n copySource: {\n serializedName: \"x-ms-copy-source\",\n xmlName: \"x-ms-copy-source\",\n type: {\n name: \"String\"\n }\n },\n copyStatus: {\n serializedName: \"x-ms-copy-status\",\n xmlName: \"x-ms-copy-status\",\n type: {\n name: \"Enum\",\n allowedValues: [\"pending\", \"success\", \"aborted\", \"failed\"]\n }\n },\n leaseDuration: {\n serializedName: \"x-ms-lease-duration\",\n xmlName: \"x-ms-lease-duration\",\n type: {\n name: \"Enum\",\n allowedValues: [\"infinite\", \"fixed\"]\n }\n },\n leaseState: {\n serializedName: \"x-ms-lease-state\",\n xmlName: \"x-ms-lease-state\",\n type: {\n name: \"Enum\",\n allowedValues: [\n \"available\",\n \"leased\",\n \"expired\",\n \"breaking\",\n \"broken\"\n ]\n }\n },\n leaseStatus: {\n serializedName: \"x-ms-lease-status\",\n xmlName: \"x-ms-lease-status\",\n type: {\n name: \"Enum\",\n allowedValues: [\"locked\", \"unlocked\"]\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n acceptRanges: {\n serializedName: \"accept-ranges\",\n xmlName: \"accept-ranges\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n blobCommittedBlockCount: {\n serializedName: \"x-ms-blob-committed-block-count\",\n xmlName: \"x-ms-blob-committed-block-count\",\n type: {\n name: \"Number\"\n }\n },\n isServerEncrypted: {\n serializedName: \"x-ms-server-encrypted\",\n xmlName: \"x-ms-server-encrypted\",\n type: {\n name: \"Boolean\"\n }\n },\n encryptionKeySha256: {\n serializedName: \"x-ms-encryption-key-sha256\",\n xmlName: \"x-ms-encryption-key-sha256\",\n type: {\n name: \"String\"\n }\n },\n encryptionScope: {\n serializedName: \"x-ms-encryption-scope\",\n xmlName: \"x-ms-encryption-scope\",\n type: {\n name: \"String\"\n }\n },\n blobContentMD5: {\n serializedName: \"x-ms-blob-content-md5\",\n xmlName: \"x-ms-blob-content-md5\",\n type: {\n name: \"ByteArray\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n },\n contentCrc64: {\n serializedName: \"x-ms-content-crc64\",\n xmlName: \"x-ms-content-crc64\",\n type: {\n name: \"ByteArray\"\n }\n }\n }\n }\n};\nexport const BlobQueryExceptionHeaders = {\n serializedName: \"Blob_queryExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobQueryExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlobGetTagsHeaders = {\n serializedName: \"Blob_getTagsHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobGetTagsHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlobGetTagsExceptionHeaders = {\n serializedName: \"Blob_getTagsExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobGetTagsExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlobSetTagsHeaders = {\n serializedName: \"Blob_setTagsHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobSetTagsHeaders\",\n modelProperties: {\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlobSetTagsExceptionHeaders = {\n serializedName: \"Blob_setTagsExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlobSetTagsExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const PageBlobCreateHeaders = {\n serializedName: \"PageBlob_createHeaders\",\n type: {\n name: \"Composite\",\n className: \"PageBlobCreateHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n contentMD5: {\n serializedName: \"content-md5\",\n xmlName: \"content-md5\",\n type: {\n name: \"ByteArray\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n versionId: {\n serializedName: \"x-ms-version-id\",\n xmlName: \"x-ms-version-id\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n isServerEncrypted: {\n serializedName: \"x-ms-request-server-encrypted\",\n xmlName: \"x-ms-request-server-encrypted\",\n type: {\n name: \"Boolean\"\n }\n },\n encryptionKeySha256: {\n serializedName: \"x-ms-encryption-key-sha256\",\n xmlName: \"x-ms-encryption-key-sha256\",\n type: {\n name: \"String\"\n }\n },\n encryptionScope: {\n serializedName: \"x-ms-encryption-scope\",\n xmlName: \"x-ms-encryption-scope\",\n type: {\n name: \"String\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const PageBlobCreateExceptionHeaders = {\n serializedName: \"PageBlob_createExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"PageBlobCreateExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const PageBlobUploadPagesHeaders = {\n serializedName: \"PageBlob_uploadPagesHeaders\",\n type: {\n name: \"Composite\",\n className: \"PageBlobUploadPagesHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n contentMD5: {\n serializedName: \"content-md5\",\n xmlName: \"content-md5\",\n type: {\n name: \"ByteArray\"\n }\n },\n xMsContentCrc64: {\n serializedName: \"x-ms-content-crc64\",\n xmlName: \"x-ms-content-crc64\",\n type: {\n name: \"ByteArray\"\n }\n },\n blobSequenceNumber: {\n serializedName: \"x-ms-blob-sequence-number\",\n xmlName: \"x-ms-blob-sequence-number\",\n type: {\n name: \"Number\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n isServerEncrypted: {\n serializedName: \"x-ms-request-server-encrypted\",\n xmlName: \"x-ms-request-server-encrypted\",\n type: {\n name: \"Boolean\"\n }\n },\n encryptionKeySha256: {\n serializedName: \"x-ms-encryption-key-sha256\",\n xmlName: \"x-ms-encryption-key-sha256\",\n type: {\n name: \"String\"\n }\n },\n encryptionScope: {\n serializedName: \"x-ms-encryption-scope\",\n xmlName: \"x-ms-encryption-scope\",\n type: {\n name: \"String\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const PageBlobUploadPagesExceptionHeaders = {\n serializedName: \"PageBlob_uploadPagesExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"PageBlobUploadPagesExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const PageBlobClearPagesHeaders = {\n serializedName: \"PageBlob_clearPagesHeaders\",\n type: {\n name: \"Composite\",\n className: \"PageBlobClearPagesHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n contentMD5: {\n serializedName: \"content-md5\",\n xmlName: \"content-md5\",\n type: {\n name: \"ByteArray\"\n }\n },\n xMsContentCrc64: {\n serializedName: \"x-ms-content-crc64\",\n xmlName: \"x-ms-content-crc64\",\n type: {\n name: \"ByteArray\"\n }\n },\n blobSequenceNumber: {\n serializedName: \"x-ms-blob-sequence-number\",\n xmlName: \"x-ms-blob-sequence-number\",\n type: {\n name: \"Number\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const PageBlobClearPagesExceptionHeaders = {\n serializedName: \"PageBlob_clearPagesExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"PageBlobClearPagesExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const PageBlobUploadPagesFromURLHeaders = {\n serializedName: \"PageBlob_uploadPagesFromURLHeaders\",\n type: {\n name: \"Composite\",\n className: \"PageBlobUploadPagesFromURLHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n contentMD5: {\n serializedName: \"content-md5\",\n xmlName: \"content-md5\",\n type: {\n name: \"ByteArray\"\n }\n },\n xMsContentCrc64: {\n serializedName: \"x-ms-content-crc64\",\n xmlName: \"x-ms-content-crc64\",\n type: {\n name: \"ByteArray\"\n }\n },\n blobSequenceNumber: {\n serializedName: \"x-ms-blob-sequence-number\",\n xmlName: \"x-ms-blob-sequence-number\",\n type: {\n name: \"Number\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n isServerEncrypted: {\n serializedName: \"x-ms-request-server-encrypted\",\n xmlName: \"x-ms-request-server-encrypted\",\n type: {\n name: \"Boolean\"\n }\n },\n encryptionKeySha256: {\n serializedName: \"x-ms-encryption-key-sha256\",\n xmlName: \"x-ms-encryption-key-sha256\",\n type: {\n name: \"String\"\n }\n },\n encryptionScope: {\n serializedName: \"x-ms-encryption-scope\",\n xmlName: \"x-ms-encryption-scope\",\n type: {\n name: \"String\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const PageBlobUploadPagesFromURLExceptionHeaders = {\n serializedName: \"PageBlob_uploadPagesFromURLExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"PageBlobUploadPagesFromURLExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const PageBlobGetPageRangesHeaders = {\n serializedName: \"PageBlob_getPageRangesHeaders\",\n type: {\n name: \"Composite\",\n className: \"PageBlobGetPageRangesHeaders\",\n modelProperties: {\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n blobContentLength: {\n serializedName: \"x-ms-blob-content-length\",\n xmlName: \"x-ms-blob-content-length\",\n type: {\n name: \"Number\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const PageBlobGetPageRangesExceptionHeaders = {\n serializedName: \"PageBlob_getPageRangesExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"PageBlobGetPageRangesExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const PageBlobGetPageRangesDiffHeaders = {\n serializedName: \"PageBlob_getPageRangesDiffHeaders\",\n type: {\n name: \"Composite\",\n className: \"PageBlobGetPageRangesDiffHeaders\",\n modelProperties: {\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n blobContentLength: {\n serializedName: \"x-ms-blob-content-length\",\n xmlName: \"x-ms-blob-content-length\",\n type: {\n name: \"Number\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const PageBlobGetPageRangesDiffExceptionHeaders = {\n serializedName: \"PageBlob_getPageRangesDiffExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"PageBlobGetPageRangesDiffExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const PageBlobResizeHeaders = {\n serializedName: \"PageBlob_resizeHeaders\",\n type: {\n name: \"Composite\",\n className: \"PageBlobResizeHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n blobSequenceNumber: {\n serializedName: \"x-ms-blob-sequence-number\",\n xmlName: \"x-ms-blob-sequence-number\",\n type: {\n name: \"Number\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const PageBlobResizeExceptionHeaders = {\n serializedName: \"PageBlob_resizeExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"PageBlobResizeExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const PageBlobUpdateSequenceNumberHeaders = {\n serializedName: \"PageBlob_updateSequenceNumberHeaders\",\n type: {\n name: \"Composite\",\n className: \"PageBlobUpdateSequenceNumberHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n blobSequenceNumber: {\n serializedName: \"x-ms-blob-sequence-number\",\n xmlName: \"x-ms-blob-sequence-number\",\n type: {\n name: \"Number\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const PageBlobUpdateSequenceNumberExceptionHeaders = {\n serializedName: \"PageBlob_updateSequenceNumberExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"PageBlobUpdateSequenceNumberExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const PageBlobCopyIncrementalHeaders = {\n serializedName: \"PageBlob_copyIncrementalHeaders\",\n type: {\n name: \"Composite\",\n className: \"PageBlobCopyIncrementalHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n copyId: {\n serializedName: \"x-ms-copy-id\",\n xmlName: \"x-ms-copy-id\",\n type: {\n name: \"String\"\n }\n },\n copyStatus: {\n serializedName: \"x-ms-copy-status\",\n xmlName: \"x-ms-copy-status\",\n type: {\n name: \"Enum\",\n allowedValues: [\"pending\", \"success\", \"aborted\", \"failed\"]\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const PageBlobCopyIncrementalExceptionHeaders = {\n serializedName: \"PageBlob_copyIncrementalExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"PageBlobCopyIncrementalExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const AppendBlobCreateHeaders = {\n serializedName: \"AppendBlob_createHeaders\",\n type: {\n name: \"Composite\",\n className: \"AppendBlobCreateHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n contentMD5: {\n serializedName: \"content-md5\",\n xmlName: \"content-md5\",\n type: {\n name: \"ByteArray\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n versionId: {\n serializedName: \"x-ms-version-id\",\n xmlName: \"x-ms-version-id\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n isServerEncrypted: {\n serializedName: \"x-ms-request-server-encrypted\",\n xmlName: \"x-ms-request-server-encrypted\",\n type: {\n name: \"Boolean\"\n }\n },\n encryptionKeySha256: {\n serializedName: \"x-ms-encryption-key-sha256\",\n xmlName: \"x-ms-encryption-key-sha256\",\n type: {\n name: \"String\"\n }\n },\n encryptionScope: {\n serializedName: \"x-ms-encryption-scope\",\n xmlName: \"x-ms-encryption-scope\",\n type: {\n name: \"String\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const AppendBlobCreateExceptionHeaders = {\n serializedName: \"AppendBlob_createExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"AppendBlobCreateExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const AppendBlobAppendBlockHeaders = {\n serializedName: \"AppendBlob_appendBlockHeaders\",\n type: {\n name: \"Composite\",\n className: \"AppendBlobAppendBlockHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n contentMD5: {\n serializedName: \"content-md5\",\n xmlName: \"content-md5\",\n type: {\n name: \"ByteArray\"\n }\n },\n xMsContentCrc64: {\n serializedName: \"x-ms-content-crc64\",\n xmlName: \"x-ms-content-crc64\",\n type: {\n name: \"ByteArray\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n blobAppendOffset: {\n serializedName: \"x-ms-blob-append-offset\",\n xmlName: \"x-ms-blob-append-offset\",\n type: {\n name: \"String\"\n }\n },\n blobCommittedBlockCount: {\n serializedName: \"x-ms-blob-committed-block-count\",\n xmlName: \"x-ms-blob-committed-block-count\",\n type: {\n name: \"Number\"\n }\n },\n isServerEncrypted: {\n serializedName: \"x-ms-request-server-encrypted\",\n xmlName: \"x-ms-request-server-encrypted\",\n type: {\n name: \"Boolean\"\n }\n },\n encryptionKeySha256: {\n serializedName: \"x-ms-encryption-key-sha256\",\n xmlName: \"x-ms-encryption-key-sha256\",\n type: {\n name: \"String\"\n }\n },\n encryptionScope: {\n serializedName: \"x-ms-encryption-scope\",\n xmlName: \"x-ms-encryption-scope\",\n type: {\n name: \"String\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const AppendBlobAppendBlockExceptionHeaders = {\n serializedName: \"AppendBlob_appendBlockExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"AppendBlobAppendBlockExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const AppendBlobAppendBlockFromUrlHeaders = {\n serializedName: \"AppendBlob_appendBlockFromUrlHeaders\",\n type: {\n name: \"Composite\",\n className: \"AppendBlobAppendBlockFromUrlHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n contentMD5: {\n serializedName: \"content-md5\",\n xmlName: \"content-md5\",\n type: {\n name: \"ByteArray\"\n }\n },\n xMsContentCrc64: {\n serializedName: \"x-ms-content-crc64\",\n xmlName: \"x-ms-content-crc64\",\n type: {\n name: \"ByteArray\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n blobAppendOffset: {\n serializedName: \"x-ms-blob-append-offset\",\n xmlName: \"x-ms-blob-append-offset\",\n type: {\n name: \"String\"\n }\n },\n blobCommittedBlockCount: {\n serializedName: \"x-ms-blob-committed-block-count\",\n xmlName: \"x-ms-blob-committed-block-count\",\n type: {\n name: \"Number\"\n }\n },\n encryptionKeySha256: {\n serializedName: \"x-ms-encryption-key-sha256\",\n xmlName: \"x-ms-encryption-key-sha256\",\n type: {\n name: \"String\"\n }\n },\n encryptionScope: {\n serializedName: \"x-ms-encryption-scope\",\n xmlName: \"x-ms-encryption-scope\",\n type: {\n name: \"String\"\n }\n },\n isServerEncrypted: {\n serializedName: \"x-ms-request-server-encrypted\",\n xmlName: \"x-ms-request-server-encrypted\",\n type: {\n name: \"Boolean\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const AppendBlobAppendBlockFromUrlExceptionHeaders = {\n serializedName: \"AppendBlob_appendBlockFromUrlExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"AppendBlobAppendBlockFromUrlExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const AppendBlobSealHeaders = {\n serializedName: \"AppendBlob_sealHeaders\",\n type: {\n name: \"Composite\",\n className: \"AppendBlobSealHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n isSealed: {\n serializedName: \"x-ms-blob-sealed\",\n xmlName: \"x-ms-blob-sealed\",\n type: {\n name: \"Boolean\"\n }\n }\n }\n }\n};\nexport const AppendBlobSealExceptionHeaders = {\n serializedName: \"AppendBlob_sealExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"AppendBlobSealExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlockBlobUploadHeaders = {\n serializedName: \"BlockBlob_uploadHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlockBlobUploadHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n contentMD5: {\n serializedName: \"content-md5\",\n xmlName: \"content-md5\",\n type: {\n name: \"ByteArray\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n versionId: {\n serializedName: \"x-ms-version-id\",\n xmlName: \"x-ms-version-id\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n isServerEncrypted: {\n serializedName: \"x-ms-request-server-encrypted\",\n xmlName: \"x-ms-request-server-encrypted\",\n type: {\n name: \"Boolean\"\n }\n },\n encryptionKeySha256: {\n serializedName: \"x-ms-encryption-key-sha256\",\n xmlName: \"x-ms-encryption-key-sha256\",\n type: {\n name: \"String\"\n }\n },\n encryptionScope: {\n serializedName: \"x-ms-encryption-scope\",\n xmlName: \"x-ms-encryption-scope\",\n type: {\n name: \"String\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlockBlobUploadExceptionHeaders = {\n serializedName: \"BlockBlob_uploadExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlockBlobUploadExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlockBlobPutBlobFromUrlHeaders = {\n serializedName: \"BlockBlob_putBlobFromUrlHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlockBlobPutBlobFromUrlHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n contentMD5: {\n serializedName: \"content-md5\",\n xmlName: \"content-md5\",\n type: {\n name: \"ByteArray\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n versionId: {\n serializedName: \"x-ms-version-id\",\n xmlName: \"x-ms-version-id\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n isServerEncrypted: {\n serializedName: \"x-ms-request-server-encrypted\",\n xmlName: \"x-ms-request-server-encrypted\",\n type: {\n name: \"Boolean\"\n }\n },\n encryptionKeySha256: {\n serializedName: \"x-ms-encryption-key-sha256\",\n xmlName: \"x-ms-encryption-key-sha256\",\n type: {\n name: \"String\"\n }\n },\n encryptionScope: {\n serializedName: \"x-ms-encryption-scope\",\n xmlName: \"x-ms-encryption-scope\",\n type: {\n name: \"String\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlockBlobPutBlobFromUrlExceptionHeaders = {\n serializedName: \"BlockBlob_putBlobFromUrlExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlockBlobPutBlobFromUrlExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlockBlobStageBlockHeaders = {\n serializedName: \"BlockBlob_stageBlockHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlockBlobStageBlockHeaders\",\n modelProperties: {\n contentMD5: {\n serializedName: \"content-md5\",\n xmlName: \"content-md5\",\n type: {\n name: \"ByteArray\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n xMsContentCrc64: {\n serializedName: \"x-ms-content-crc64\",\n xmlName: \"x-ms-content-crc64\",\n type: {\n name: \"ByteArray\"\n }\n },\n isServerEncrypted: {\n serializedName: \"x-ms-request-server-encrypted\",\n xmlName: \"x-ms-request-server-encrypted\",\n type: {\n name: \"Boolean\"\n }\n },\n encryptionKeySha256: {\n serializedName: \"x-ms-encryption-key-sha256\",\n xmlName: \"x-ms-encryption-key-sha256\",\n type: {\n name: \"String\"\n }\n },\n encryptionScope: {\n serializedName: \"x-ms-encryption-scope\",\n xmlName: \"x-ms-encryption-scope\",\n type: {\n name: \"String\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlockBlobStageBlockExceptionHeaders = {\n serializedName: \"BlockBlob_stageBlockExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlockBlobStageBlockExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlockBlobStageBlockFromURLHeaders = {\n serializedName: \"BlockBlob_stageBlockFromURLHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlockBlobStageBlockFromURLHeaders\",\n modelProperties: {\n contentMD5: {\n serializedName: \"content-md5\",\n xmlName: \"content-md5\",\n type: {\n name: \"ByteArray\"\n }\n },\n xMsContentCrc64: {\n serializedName: \"x-ms-content-crc64\",\n xmlName: \"x-ms-content-crc64\",\n type: {\n name: \"ByteArray\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n isServerEncrypted: {\n serializedName: \"x-ms-request-server-encrypted\",\n xmlName: \"x-ms-request-server-encrypted\",\n type: {\n name: \"Boolean\"\n }\n },\n encryptionKeySha256: {\n serializedName: \"x-ms-encryption-key-sha256\",\n xmlName: \"x-ms-encryption-key-sha256\",\n type: {\n name: \"String\"\n }\n },\n encryptionScope: {\n serializedName: \"x-ms-encryption-scope\",\n xmlName: \"x-ms-encryption-scope\",\n type: {\n name: \"String\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlockBlobStageBlockFromURLExceptionHeaders = {\n serializedName: \"BlockBlob_stageBlockFromURLExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlockBlobStageBlockFromURLExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlockBlobCommitBlockListHeaders = {\n serializedName: \"BlockBlob_commitBlockListHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlockBlobCommitBlockListHeaders\",\n modelProperties: {\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n contentMD5: {\n serializedName: \"content-md5\",\n xmlName: \"content-md5\",\n type: {\n name: \"ByteArray\"\n }\n },\n xMsContentCrc64: {\n serializedName: \"x-ms-content-crc64\",\n xmlName: \"x-ms-content-crc64\",\n type: {\n name: \"ByteArray\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n versionId: {\n serializedName: \"x-ms-version-id\",\n xmlName: \"x-ms-version-id\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n isServerEncrypted: {\n serializedName: \"x-ms-request-server-encrypted\",\n xmlName: \"x-ms-request-server-encrypted\",\n type: {\n name: \"Boolean\"\n }\n },\n encryptionKeySha256: {\n serializedName: \"x-ms-encryption-key-sha256\",\n xmlName: \"x-ms-encryption-key-sha256\",\n type: {\n name: \"String\"\n }\n },\n encryptionScope: {\n serializedName: \"x-ms-encryption-scope\",\n xmlName: \"x-ms-encryption-scope\",\n type: {\n name: \"String\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlockBlobCommitBlockListExceptionHeaders = {\n serializedName: \"BlockBlob_commitBlockListExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlockBlobCommitBlockListExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlockBlobGetBlockListHeaders = {\n serializedName: \"BlockBlob_getBlockListHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlockBlobGetBlockListHeaders\",\n modelProperties: {\n lastModified: {\n serializedName: \"last-modified\",\n xmlName: \"last-modified\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n etag: {\n serializedName: \"etag\",\n xmlName: \"etag\",\n type: {\n name: \"String\"\n }\n },\n contentType: {\n serializedName: \"content-type\",\n xmlName: \"content-type\",\n type: {\n name: \"String\"\n }\n },\n blobContentLength: {\n serializedName: \"x-ms-blob-content-length\",\n xmlName: \"x-ms-blob-content-length\",\n type: {\n name: \"Number\"\n }\n },\n clientRequestId: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n },\n requestId: {\n serializedName: \"x-ms-request-id\",\n xmlName: \"x-ms-request-id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"x-ms-version\",\n xmlName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n },\n date: {\n serializedName: \"date\",\n xmlName: \"date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n },\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\nexport const BlockBlobGetBlockListExceptionHeaders = {\n serializedName: \"BlockBlob_getBlockListExceptionHeaders\",\n type: {\n name: \"Composite\",\n className: \"BlockBlobGetBlockListExceptionHeaders\",\n modelProperties: {\n errorCode: {\n serializedName: \"x-ms-error-code\",\n xmlName: \"x-ms-error-code\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n//# sourceMappingURL=mappers.js.map","/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nimport { QueryCollectionFormat } from \"@azure/core-http\";\nimport { BlobServiceProperties as BlobServicePropertiesMapper, KeyInfo as KeyInfoMapper, QueryRequest as QueryRequestMapper, BlobTags as BlobTagsMapper, BlockLookupList as BlockLookupListMapper } from \"../models/mappers\";\nexport const contentType = {\n parameterPath: [\"options\", \"contentType\"],\n mapper: {\n defaultValue: \"application/xml\",\n isConstant: true,\n serializedName: \"Content-Type\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const blobServiceProperties = {\n parameterPath: \"blobServiceProperties\",\n mapper: BlobServicePropertiesMapper\n};\nexport const accept = {\n parameterPath: \"accept\",\n mapper: {\n defaultValue: \"application/xml\",\n isConstant: true,\n serializedName: \"Accept\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const url = {\n parameterPath: \"url\",\n mapper: {\n serializedName: \"url\",\n required: true,\n xmlName: \"url\",\n type: {\n name: \"String\"\n }\n },\n skipEncoding: true\n};\nexport const restype = {\n parameterPath: \"restype\",\n mapper: {\n defaultValue: \"service\",\n isConstant: true,\n serializedName: \"restype\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const comp = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"properties\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const timeoutInSeconds = {\n parameterPath: [\"options\", \"timeoutInSeconds\"],\n mapper: {\n constraints: {\n InclusiveMinimum: 0\n },\n serializedName: \"timeout\",\n xmlName: \"timeout\",\n type: {\n name: \"Number\"\n }\n }\n};\nexport const version = {\n parameterPath: \"version\",\n mapper: {\n defaultValue: \"2023-11-03\",\n isConstant: true,\n serializedName: \"x-ms-version\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const requestId = {\n parameterPath: [\"options\", \"requestId\"],\n mapper: {\n serializedName: \"x-ms-client-request-id\",\n xmlName: \"x-ms-client-request-id\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const accept1 = {\n parameterPath: \"accept\",\n mapper: {\n defaultValue: \"application/xml\",\n isConstant: true,\n serializedName: \"Accept\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const comp1 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"stats\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const comp2 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"list\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const prefix = {\n parameterPath: [\"options\", \"prefix\"],\n mapper: {\n serializedName: \"prefix\",\n xmlName: \"prefix\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const marker = {\n parameterPath: [\"options\", \"marker\"],\n mapper: {\n serializedName: \"marker\",\n xmlName: \"marker\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const maxPageSize = {\n parameterPath: [\"options\", \"maxPageSize\"],\n mapper: {\n constraints: {\n InclusiveMinimum: 1\n },\n serializedName: \"maxresults\",\n xmlName: \"maxresults\",\n type: {\n name: \"Number\"\n }\n }\n};\nexport const include = {\n parameterPath: [\"options\", \"include\"],\n mapper: {\n serializedName: \"include\",\n xmlName: \"include\",\n xmlElementName: \"ListContainersIncludeType\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Enum\",\n allowedValues: [\"metadata\", \"deleted\", \"system\"]\n }\n }\n }\n },\n collectionFormat: QueryCollectionFormat.Csv\n};\nexport const keyInfo = {\n parameterPath: \"keyInfo\",\n mapper: KeyInfoMapper\n};\nexport const comp3 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"userdelegationkey\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const restype1 = {\n parameterPath: \"restype\",\n mapper: {\n defaultValue: \"account\",\n isConstant: true,\n serializedName: \"restype\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const body = {\n parameterPath: \"body\",\n mapper: {\n serializedName: \"body\",\n required: true,\n xmlName: \"body\",\n type: {\n name: \"Stream\"\n }\n }\n};\nexport const comp4 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"batch\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const contentLength = {\n parameterPath: \"contentLength\",\n mapper: {\n serializedName: \"Content-Length\",\n required: true,\n xmlName: \"Content-Length\",\n type: {\n name: \"Number\"\n }\n }\n};\nexport const multipartContentType = {\n parameterPath: \"multipartContentType\",\n mapper: {\n serializedName: \"Content-Type\",\n required: true,\n xmlName: \"Content-Type\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const comp5 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"blobs\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const where = {\n parameterPath: [\"options\", \"where\"],\n mapper: {\n serializedName: \"where\",\n xmlName: \"where\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const restype2 = {\n parameterPath: \"restype\",\n mapper: {\n defaultValue: \"container\",\n isConstant: true,\n serializedName: \"restype\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const metadata = {\n parameterPath: [\"options\", \"metadata\"],\n mapper: {\n serializedName: \"x-ms-meta\",\n xmlName: \"x-ms-meta\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"String\" } }\n },\n headerCollectionPrefix: \"x-ms-meta-\"\n }\n};\nexport const access = {\n parameterPath: [\"options\", \"access\"],\n mapper: {\n serializedName: \"x-ms-blob-public-access\",\n xmlName: \"x-ms-blob-public-access\",\n type: {\n name: \"Enum\",\n allowedValues: [\"container\", \"blob\"]\n }\n }\n};\nexport const defaultEncryptionScope = {\n parameterPath: [\n \"options\",\n \"containerEncryptionScope\",\n \"defaultEncryptionScope\"\n ],\n mapper: {\n serializedName: \"x-ms-default-encryption-scope\",\n xmlName: \"x-ms-default-encryption-scope\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const preventEncryptionScopeOverride = {\n parameterPath: [\n \"options\",\n \"containerEncryptionScope\",\n \"preventEncryptionScopeOverride\"\n ],\n mapper: {\n serializedName: \"x-ms-deny-encryption-scope-override\",\n xmlName: \"x-ms-deny-encryption-scope-override\",\n type: {\n name: \"Boolean\"\n }\n }\n};\nexport const leaseId = {\n parameterPath: [\"options\", \"leaseAccessConditions\", \"leaseId\"],\n mapper: {\n serializedName: \"x-ms-lease-id\",\n xmlName: \"x-ms-lease-id\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const ifModifiedSince = {\n parameterPath: [\"options\", \"modifiedAccessConditions\", \"ifModifiedSince\"],\n mapper: {\n serializedName: \"If-Modified-Since\",\n xmlName: \"If-Modified-Since\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n }\n};\nexport const ifUnmodifiedSince = {\n parameterPath: [\"options\", \"modifiedAccessConditions\", \"ifUnmodifiedSince\"],\n mapper: {\n serializedName: \"If-Unmodified-Since\",\n xmlName: \"If-Unmodified-Since\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n }\n};\nexport const comp6 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"metadata\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const comp7 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"acl\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const containerAcl = {\n parameterPath: [\"options\", \"containerAcl\"],\n mapper: {\n serializedName: \"containerAcl\",\n xmlName: \"SignedIdentifiers\",\n xmlIsWrapped: true,\n xmlElementName: \"SignedIdentifier\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"SignedIdentifier\"\n }\n }\n }\n }\n};\nexport const comp8 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"undelete\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const deletedContainerName = {\n parameterPath: [\"options\", \"deletedContainerName\"],\n mapper: {\n serializedName: \"x-ms-deleted-container-name\",\n xmlName: \"x-ms-deleted-container-name\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const deletedContainerVersion = {\n parameterPath: [\"options\", \"deletedContainerVersion\"],\n mapper: {\n serializedName: \"x-ms-deleted-container-version\",\n xmlName: \"x-ms-deleted-container-version\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const comp9 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"rename\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const sourceContainerName = {\n parameterPath: \"sourceContainerName\",\n mapper: {\n serializedName: \"x-ms-source-container-name\",\n required: true,\n xmlName: \"x-ms-source-container-name\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const sourceLeaseId = {\n parameterPath: [\"options\", \"sourceLeaseId\"],\n mapper: {\n serializedName: \"x-ms-source-lease-id\",\n xmlName: \"x-ms-source-lease-id\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const comp10 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"lease\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const action = {\n parameterPath: \"action\",\n mapper: {\n defaultValue: \"acquire\",\n isConstant: true,\n serializedName: \"x-ms-lease-action\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const duration = {\n parameterPath: [\"options\", \"duration\"],\n mapper: {\n serializedName: \"x-ms-lease-duration\",\n xmlName: \"x-ms-lease-duration\",\n type: {\n name: \"Number\"\n }\n }\n};\nexport const proposedLeaseId = {\n parameterPath: [\"options\", \"proposedLeaseId\"],\n mapper: {\n serializedName: \"x-ms-proposed-lease-id\",\n xmlName: \"x-ms-proposed-lease-id\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const action1 = {\n parameterPath: \"action\",\n mapper: {\n defaultValue: \"release\",\n isConstant: true,\n serializedName: \"x-ms-lease-action\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const leaseId1 = {\n parameterPath: \"leaseId\",\n mapper: {\n serializedName: \"x-ms-lease-id\",\n required: true,\n xmlName: \"x-ms-lease-id\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const action2 = {\n parameterPath: \"action\",\n mapper: {\n defaultValue: \"renew\",\n isConstant: true,\n serializedName: \"x-ms-lease-action\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const action3 = {\n parameterPath: \"action\",\n mapper: {\n defaultValue: \"break\",\n isConstant: true,\n serializedName: \"x-ms-lease-action\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const breakPeriod = {\n parameterPath: [\"options\", \"breakPeriod\"],\n mapper: {\n serializedName: \"x-ms-lease-break-period\",\n xmlName: \"x-ms-lease-break-period\",\n type: {\n name: \"Number\"\n }\n }\n};\nexport const action4 = {\n parameterPath: \"action\",\n mapper: {\n defaultValue: \"change\",\n isConstant: true,\n serializedName: \"x-ms-lease-action\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const proposedLeaseId1 = {\n parameterPath: \"proposedLeaseId\",\n mapper: {\n serializedName: \"x-ms-proposed-lease-id\",\n required: true,\n xmlName: \"x-ms-proposed-lease-id\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const include1 = {\n parameterPath: [\"options\", \"include\"],\n mapper: {\n serializedName: \"include\",\n xmlName: \"include\",\n xmlElementName: \"ListBlobsIncludeItem\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Enum\",\n allowedValues: [\n \"copy\",\n \"deleted\",\n \"metadata\",\n \"snapshots\",\n \"uncommittedblobs\",\n \"versions\",\n \"tags\",\n \"immutabilitypolicy\",\n \"legalhold\",\n \"deletedwithversions\"\n ]\n }\n }\n }\n },\n collectionFormat: QueryCollectionFormat.Csv\n};\nexport const delimiter = {\n parameterPath: \"delimiter\",\n mapper: {\n serializedName: \"delimiter\",\n required: true,\n xmlName: \"delimiter\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const snapshot = {\n parameterPath: [\"options\", \"snapshot\"],\n mapper: {\n serializedName: \"snapshot\",\n xmlName: \"snapshot\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const versionId = {\n parameterPath: [\"options\", \"versionId\"],\n mapper: {\n serializedName: \"versionid\",\n xmlName: \"versionid\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const range = {\n parameterPath: [\"options\", \"range\"],\n mapper: {\n serializedName: \"x-ms-range\",\n xmlName: \"x-ms-range\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const rangeGetContentMD5 = {\n parameterPath: [\"options\", \"rangeGetContentMD5\"],\n mapper: {\n serializedName: \"x-ms-range-get-content-md5\",\n xmlName: \"x-ms-range-get-content-md5\",\n type: {\n name: \"Boolean\"\n }\n }\n};\nexport const rangeGetContentCRC64 = {\n parameterPath: [\"options\", \"rangeGetContentCRC64\"],\n mapper: {\n serializedName: \"x-ms-range-get-content-crc64\",\n xmlName: \"x-ms-range-get-content-crc64\",\n type: {\n name: \"Boolean\"\n }\n }\n};\nexport const encryptionKey = {\n parameterPath: [\"options\", \"cpkInfo\", \"encryptionKey\"],\n mapper: {\n serializedName: \"x-ms-encryption-key\",\n xmlName: \"x-ms-encryption-key\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const encryptionKeySha256 = {\n parameterPath: [\"options\", \"cpkInfo\", \"encryptionKeySha256\"],\n mapper: {\n serializedName: \"x-ms-encryption-key-sha256\",\n xmlName: \"x-ms-encryption-key-sha256\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const encryptionAlgorithm = {\n parameterPath: [\"options\", \"cpkInfo\", \"encryptionAlgorithm\"],\n mapper: {\n serializedName: \"x-ms-encryption-algorithm\",\n xmlName: \"x-ms-encryption-algorithm\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const ifMatch = {\n parameterPath: [\"options\", \"modifiedAccessConditions\", \"ifMatch\"],\n mapper: {\n serializedName: \"If-Match\",\n xmlName: \"If-Match\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const ifNoneMatch = {\n parameterPath: [\"options\", \"modifiedAccessConditions\", \"ifNoneMatch\"],\n mapper: {\n serializedName: \"If-None-Match\",\n xmlName: \"If-None-Match\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const ifTags = {\n parameterPath: [\"options\", \"modifiedAccessConditions\", \"ifTags\"],\n mapper: {\n serializedName: \"x-ms-if-tags\",\n xmlName: \"x-ms-if-tags\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const deleteSnapshots = {\n parameterPath: [\"options\", \"deleteSnapshots\"],\n mapper: {\n serializedName: \"x-ms-delete-snapshots\",\n xmlName: \"x-ms-delete-snapshots\",\n type: {\n name: \"Enum\",\n allowedValues: [\"include\", \"only\"]\n }\n }\n};\nexport const blobDeleteType = {\n parameterPath: [\"options\", \"blobDeleteType\"],\n mapper: {\n serializedName: \"deletetype\",\n xmlName: \"deletetype\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const comp11 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"expiry\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const expiryOptions = {\n parameterPath: \"expiryOptions\",\n mapper: {\n serializedName: \"x-ms-expiry-option\",\n required: true,\n xmlName: \"x-ms-expiry-option\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const expiresOn = {\n parameterPath: [\"options\", \"expiresOn\"],\n mapper: {\n serializedName: \"x-ms-expiry-time\",\n xmlName: \"x-ms-expiry-time\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const blobCacheControl = {\n parameterPath: [\"options\", \"blobHttpHeaders\", \"blobCacheControl\"],\n mapper: {\n serializedName: \"x-ms-blob-cache-control\",\n xmlName: \"x-ms-blob-cache-control\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const blobContentType = {\n parameterPath: [\"options\", \"blobHttpHeaders\", \"blobContentType\"],\n mapper: {\n serializedName: \"x-ms-blob-content-type\",\n xmlName: \"x-ms-blob-content-type\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const blobContentMD5 = {\n parameterPath: [\"options\", \"blobHttpHeaders\", \"blobContentMD5\"],\n mapper: {\n serializedName: \"x-ms-blob-content-md5\",\n xmlName: \"x-ms-blob-content-md5\",\n type: {\n name: \"ByteArray\"\n }\n }\n};\nexport const blobContentEncoding = {\n parameterPath: [\"options\", \"blobHttpHeaders\", \"blobContentEncoding\"],\n mapper: {\n serializedName: \"x-ms-blob-content-encoding\",\n xmlName: \"x-ms-blob-content-encoding\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const blobContentLanguage = {\n parameterPath: [\"options\", \"blobHttpHeaders\", \"blobContentLanguage\"],\n mapper: {\n serializedName: \"x-ms-blob-content-language\",\n xmlName: \"x-ms-blob-content-language\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const blobContentDisposition = {\n parameterPath: [\"options\", \"blobHttpHeaders\", \"blobContentDisposition\"],\n mapper: {\n serializedName: \"x-ms-blob-content-disposition\",\n xmlName: \"x-ms-blob-content-disposition\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const comp12 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"immutabilityPolicies\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const immutabilityPolicyExpiry = {\n parameterPath: [\"options\", \"immutabilityPolicyExpiry\"],\n mapper: {\n serializedName: \"x-ms-immutability-policy-until-date\",\n xmlName: \"x-ms-immutability-policy-until-date\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n }\n};\nexport const immutabilityPolicyMode = {\n parameterPath: [\"options\", \"immutabilityPolicyMode\"],\n mapper: {\n serializedName: \"x-ms-immutability-policy-mode\",\n xmlName: \"x-ms-immutability-policy-mode\",\n type: {\n name: \"Enum\",\n allowedValues: [\"Mutable\", \"Unlocked\", \"Locked\"]\n }\n }\n};\nexport const comp13 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"legalhold\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const legalHold = {\n parameterPath: \"legalHold\",\n mapper: {\n serializedName: \"x-ms-legal-hold\",\n required: true,\n xmlName: \"x-ms-legal-hold\",\n type: {\n name: \"Boolean\"\n }\n }\n};\nexport const encryptionScope = {\n parameterPath: [\"options\", \"encryptionScope\"],\n mapper: {\n serializedName: \"x-ms-encryption-scope\",\n xmlName: \"x-ms-encryption-scope\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const comp14 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"snapshot\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const tier = {\n parameterPath: [\"options\", \"tier\"],\n mapper: {\n serializedName: \"x-ms-access-tier\",\n xmlName: \"x-ms-access-tier\",\n type: {\n name: \"Enum\",\n allowedValues: [\n \"P4\",\n \"P6\",\n \"P10\",\n \"P15\",\n \"P20\",\n \"P30\",\n \"P40\",\n \"P50\",\n \"P60\",\n \"P70\",\n \"P80\",\n \"Hot\",\n \"Cool\",\n \"Archive\",\n \"Cold\"\n ]\n }\n }\n};\nexport const rehydratePriority = {\n parameterPath: [\"options\", \"rehydratePriority\"],\n mapper: {\n serializedName: \"x-ms-rehydrate-priority\",\n xmlName: \"x-ms-rehydrate-priority\",\n type: {\n name: \"Enum\",\n allowedValues: [\"High\", \"Standard\"]\n }\n }\n};\nexport const sourceIfModifiedSince = {\n parameterPath: [\n \"options\",\n \"sourceModifiedAccessConditions\",\n \"sourceIfModifiedSince\"\n ],\n mapper: {\n serializedName: \"x-ms-source-if-modified-since\",\n xmlName: \"x-ms-source-if-modified-since\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n }\n};\nexport const sourceIfUnmodifiedSince = {\n parameterPath: [\n \"options\",\n \"sourceModifiedAccessConditions\",\n \"sourceIfUnmodifiedSince\"\n ],\n mapper: {\n serializedName: \"x-ms-source-if-unmodified-since\",\n xmlName: \"x-ms-source-if-unmodified-since\",\n type: {\n name: \"DateTimeRfc1123\"\n }\n }\n};\nexport const sourceIfMatch = {\n parameterPath: [\"options\", \"sourceModifiedAccessConditions\", \"sourceIfMatch\"],\n mapper: {\n serializedName: \"x-ms-source-if-match\",\n xmlName: \"x-ms-source-if-match\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const sourceIfNoneMatch = {\n parameterPath: [\n \"options\",\n \"sourceModifiedAccessConditions\",\n \"sourceIfNoneMatch\"\n ],\n mapper: {\n serializedName: \"x-ms-source-if-none-match\",\n xmlName: \"x-ms-source-if-none-match\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const sourceIfTags = {\n parameterPath: [\"options\", \"sourceModifiedAccessConditions\", \"sourceIfTags\"],\n mapper: {\n serializedName: \"x-ms-source-if-tags\",\n xmlName: \"x-ms-source-if-tags\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const copySource = {\n parameterPath: \"copySource\",\n mapper: {\n serializedName: \"x-ms-copy-source\",\n required: true,\n xmlName: \"x-ms-copy-source\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const blobTagsString = {\n parameterPath: [\"options\", \"blobTagsString\"],\n mapper: {\n serializedName: \"x-ms-tags\",\n xmlName: \"x-ms-tags\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const sealBlob = {\n parameterPath: [\"options\", \"sealBlob\"],\n mapper: {\n serializedName: \"x-ms-seal-blob\",\n xmlName: \"x-ms-seal-blob\",\n type: {\n name: \"Boolean\"\n }\n }\n};\nexport const legalHold1 = {\n parameterPath: [\"options\", \"legalHold\"],\n mapper: {\n serializedName: \"x-ms-legal-hold\",\n xmlName: \"x-ms-legal-hold\",\n type: {\n name: \"Boolean\"\n }\n }\n};\nexport const xMsRequiresSync = {\n parameterPath: \"xMsRequiresSync\",\n mapper: {\n defaultValue: \"true\",\n isConstant: true,\n serializedName: \"x-ms-requires-sync\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const sourceContentMD5 = {\n parameterPath: [\"options\", \"sourceContentMD5\"],\n mapper: {\n serializedName: \"x-ms-source-content-md5\",\n xmlName: \"x-ms-source-content-md5\",\n type: {\n name: \"ByteArray\"\n }\n }\n};\nexport const copySourceAuthorization = {\n parameterPath: [\"options\", \"copySourceAuthorization\"],\n mapper: {\n serializedName: \"x-ms-copy-source-authorization\",\n xmlName: \"x-ms-copy-source-authorization\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const copySourceTags = {\n parameterPath: [\"options\", \"copySourceTags\"],\n mapper: {\n serializedName: \"x-ms-copy-source-tag-option\",\n xmlName: \"x-ms-copy-source-tag-option\",\n type: {\n name: \"Enum\",\n allowedValues: [\"REPLACE\", \"COPY\"]\n }\n }\n};\nexport const comp15 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"copy\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const copyActionAbortConstant = {\n parameterPath: \"copyActionAbortConstant\",\n mapper: {\n defaultValue: \"abort\",\n isConstant: true,\n serializedName: \"x-ms-copy-action\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const copyId = {\n parameterPath: \"copyId\",\n mapper: {\n serializedName: \"copyid\",\n required: true,\n xmlName: \"copyid\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const comp16 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"tier\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const tier1 = {\n parameterPath: \"tier\",\n mapper: {\n serializedName: \"x-ms-access-tier\",\n required: true,\n xmlName: \"x-ms-access-tier\",\n type: {\n name: \"Enum\",\n allowedValues: [\n \"P4\",\n \"P6\",\n \"P10\",\n \"P15\",\n \"P20\",\n \"P30\",\n \"P40\",\n \"P50\",\n \"P60\",\n \"P70\",\n \"P80\",\n \"Hot\",\n \"Cool\",\n \"Archive\",\n \"Cold\"\n ]\n }\n }\n};\nexport const queryRequest = {\n parameterPath: [\"options\", \"queryRequest\"],\n mapper: QueryRequestMapper\n};\nexport const comp17 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"query\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const comp18 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"tags\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const tags = {\n parameterPath: [\"options\", \"tags\"],\n mapper: BlobTagsMapper\n};\nexport const transactionalContentMD5 = {\n parameterPath: [\"options\", \"transactionalContentMD5\"],\n mapper: {\n serializedName: \"Content-MD5\",\n xmlName: \"Content-MD5\",\n type: {\n name: \"ByteArray\"\n }\n }\n};\nexport const transactionalContentCrc64 = {\n parameterPath: [\"options\", \"transactionalContentCrc64\"],\n mapper: {\n serializedName: \"x-ms-content-crc64\",\n xmlName: \"x-ms-content-crc64\",\n type: {\n name: \"ByteArray\"\n }\n }\n};\nexport const blobType = {\n parameterPath: \"blobType\",\n mapper: {\n defaultValue: \"PageBlob\",\n isConstant: true,\n serializedName: \"x-ms-blob-type\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const blobContentLength = {\n parameterPath: \"blobContentLength\",\n mapper: {\n serializedName: \"x-ms-blob-content-length\",\n required: true,\n xmlName: \"x-ms-blob-content-length\",\n type: {\n name: \"Number\"\n }\n }\n};\nexport const blobSequenceNumber = {\n parameterPath: [\"options\", \"blobSequenceNumber\"],\n mapper: {\n serializedName: \"x-ms-blob-sequence-number\",\n xmlName: \"x-ms-blob-sequence-number\",\n type: {\n name: \"Number\"\n }\n }\n};\nexport const contentType1 = {\n parameterPath: [\"options\", \"contentType\"],\n mapper: {\n defaultValue: \"application/octet-stream\",\n isConstant: true,\n serializedName: \"Content-Type\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const body1 = {\n parameterPath: \"body\",\n mapper: {\n serializedName: \"body\",\n required: true,\n xmlName: \"body\",\n type: {\n name: \"Stream\"\n }\n }\n};\nexport const accept2 = {\n parameterPath: \"accept\",\n mapper: {\n defaultValue: \"application/xml\",\n isConstant: true,\n serializedName: \"Accept\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const comp19 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"page\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const pageWrite = {\n parameterPath: \"pageWrite\",\n mapper: {\n defaultValue: \"update\",\n isConstant: true,\n serializedName: \"x-ms-page-write\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const ifSequenceNumberLessThanOrEqualTo = {\n parameterPath: [\n \"options\",\n \"sequenceNumberAccessConditions\",\n \"ifSequenceNumberLessThanOrEqualTo\"\n ],\n mapper: {\n serializedName: \"x-ms-if-sequence-number-le\",\n xmlName: \"x-ms-if-sequence-number-le\",\n type: {\n name: \"Number\"\n }\n }\n};\nexport const ifSequenceNumberLessThan = {\n parameterPath: [\n \"options\",\n \"sequenceNumberAccessConditions\",\n \"ifSequenceNumberLessThan\"\n ],\n mapper: {\n serializedName: \"x-ms-if-sequence-number-lt\",\n xmlName: \"x-ms-if-sequence-number-lt\",\n type: {\n name: \"Number\"\n }\n }\n};\nexport const ifSequenceNumberEqualTo = {\n parameterPath: [\n \"options\",\n \"sequenceNumberAccessConditions\",\n \"ifSequenceNumberEqualTo\"\n ],\n mapper: {\n serializedName: \"x-ms-if-sequence-number-eq\",\n xmlName: \"x-ms-if-sequence-number-eq\",\n type: {\n name: \"Number\"\n }\n }\n};\nexport const pageWrite1 = {\n parameterPath: \"pageWrite\",\n mapper: {\n defaultValue: \"clear\",\n isConstant: true,\n serializedName: \"x-ms-page-write\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const sourceUrl = {\n parameterPath: \"sourceUrl\",\n mapper: {\n serializedName: \"x-ms-copy-source\",\n required: true,\n xmlName: \"x-ms-copy-source\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const sourceRange = {\n parameterPath: \"sourceRange\",\n mapper: {\n serializedName: \"x-ms-source-range\",\n required: true,\n xmlName: \"x-ms-source-range\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const sourceContentCrc64 = {\n parameterPath: [\"options\", \"sourceContentCrc64\"],\n mapper: {\n serializedName: \"x-ms-source-content-crc64\",\n xmlName: \"x-ms-source-content-crc64\",\n type: {\n name: \"ByteArray\"\n }\n }\n};\nexport const range1 = {\n parameterPath: \"range\",\n mapper: {\n serializedName: \"x-ms-range\",\n required: true,\n xmlName: \"x-ms-range\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const comp20 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"pagelist\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const prevsnapshot = {\n parameterPath: [\"options\", \"prevsnapshot\"],\n mapper: {\n serializedName: \"prevsnapshot\",\n xmlName: \"prevsnapshot\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const prevSnapshotUrl = {\n parameterPath: [\"options\", \"prevSnapshotUrl\"],\n mapper: {\n serializedName: \"x-ms-previous-snapshot-url\",\n xmlName: \"x-ms-previous-snapshot-url\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const sequenceNumberAction = {\n parameterPath: \"sequenceNumberAction\",\n mapper: {\n serializedName: \"x-ms-sequence-number-action\",\n required: true,\n xmlName: \"x-ms-sequence-number-action\",\n type: {\n name: \"Enum\",\n allowedValues: [\"max\", \"update\", \"increment\"]\n }\n }\n};\nexport const comp21 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"incrementalcopy\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const blobType1 = {\n parameterPath: \"blobType\",\n mapper: {\n defaultValue: \"AppendBlob\",\n isConstant: true,\n serializedName: \"x-ms-blob-type\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const comp22 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"appendblock\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const maxSize = {\n parameterPath: [\"options\", \"appendPositionAccessConditions\", \"maxSize\"],\n mapper: {\n serializedName: \"x-ms-blob-condition-maxsize\",\n xmlName: \"x-ms-blob-condition-maxsize\",\n type: {\n name: \"Number\"\n }\n }\n};\nexport const appendPosition = {\n parameterPath: [\n \"options\",\n \"appendPositionAccessConditions\",\n \"appendPosition\"\n ],\n mapper: {\n serializedName: \"x-ms-blob-condition-appendpos\",\n xmlName: \"x-ms-blob-condition-appendpos\",\n type: {\n name: \"Number\"\n }\n }\n};\nexport const sourceRange1 = {\n parameterPath: [\"options\", \"sourceRange\"],\n mapper: {\n serializedName: \"x-ms-source-range\",\n xmlName: \"x-ms-source-range\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const comp23 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"seal\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const blobType2 = {\n parameterPath: \"blobType\",\n mapper: {\n defaultValue: \"BlockBlob\",\n isConstant: true,\n serializedName: \"x-ms-blob-type\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const copySourceBlobProperties = {\n parameterPath: [\"options\", \"copySourceBlobProperties\"],\n mapper: {\n serializedName: \"x-ms-copy-source-blob-properties\",\n xmlName: \"x-ms-copy-source-blob-properties\",\n type: {\n name: \"Boolean\"\n }\n }\n};\nexport const comp24 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"block\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const blockId = {\n parameterPath: \"blockId\",\n mapper: {\n serializedName: \"blockid\",\n required: true,\n xmlName: \"blockid\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const blocks = {\n parameterPath: \"blocks\",\n mapper: BlockLookupListMapper\n};\nexport const comp25 = {\n parameterPath: \"comp\",\n mapper: {\n defaultValue: \"blocklist\",\n isConstant: true,\n serializedName: \"comp\",\n type: {\n name: \"String\"\n }\n }\n};\nexport const listType = {\n parameterPath: \"listType\",\n mapper: {\n defaultValue: \"committed\",\n serializedName: \"blocklisttype\",\n required: true,\n xmlName: \"blocklisttype\",\n type: {\n name: \"Enum\",\n allowedValues: [\"committed\", \"uncommitted\", \"all\"]\n }\n }\n};\n//# sourceMappingURL=parameters.js.map","/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nimport * as coreHttp from \"@azure/core-http\";\nimport * as Mappers from \"../models/mappers\";\nimport * as Parameters from \"../models/parameters\";\n/** Class representing a Blob. */\nexport class Blob {\n /**\n * Initialize a new instance of the class Blob class.\n * @param client Reference to the service client\n */\n constructor(client) {\n this.client = client;\n }\n /**\n * The Download operation reads or downloads a blob from the system, including its metadata and\n * properties. You can also call Download to read a snapshot.\n * @param options The options parameters.\n */\n download(options) {\n const operationArguments = {\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, downloadOperationSpec);\n }\n /**\n * The Get Properties operation returns all user-defined metadata, standard HTTP properties, and system\n * properties for the blob. It does not return the content of the blob.\n * @param options The options parameters.\n */\n getProperties(options) {\n const operationArguments = {\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, getPropertiesOperationSpec);\n }\n /**\n * If the storage account's soft delete feature is disabled then, when a blob is deleted, it is\n * permanently removed from the storage account. If the storage account's soft delete feature is\n * enabled, then, when a blob is deleted, it is marked for deletion and becomes inaccessible\n * immediately. However, the blob service retains the blob or snapshot for the number of days specified\n * by the DeleteRetentionPolicy section of [Storage service properties]\n * (Set-Blob-Service-Properties.md). After the specified number of days has passed, the blob's data is\n * permanently removed from the storage account. Note that you continue to be charged for the\n * soft-deleted blob's storage until it is permanently removed. Use the List Blobs API and specify the\n * \"include=deleted\" query parameter to discover which blobs and snapshots have been soft deleted. You\n * can then use the Undelete Blob API to restore a soft-deleted blob. All other operations on a\n * soft-deleted blob or snapshot causes the service to return an HTTP status code of 404\n * (ResourceNotFound).\n * @param options The options parameters.\n */\n delete(options) {\n const operationArguments = {\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, deleteOperationSpec);\n }\n /**\n * Undelete a blob that was previously soft deleted\n * @param options The options parameters.\n */\n undelete(options) {\n const operationArguments = {\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, undeleteOperationSpec);\n }\n /**\n * Sets the time a blob will expire and be deleted.\n * @param expiryOptions Required. Indicates mode of the expiry time\n * @param options The options parameters.\n */\n setExpiry(expiryOptions, options) {\n const operationArguments = {\n expiryOptions,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, setExpiryOperationSpec);\n }\n /**\n * The Set HTTP Headers operation sets system properties on the blob\n * @param options The options parameters.\n */\n setHttpHeaders(options) {\n const operationArguments = {\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, setHttpHeadersOperationSpec);\n }\n /**\n * The Set Immutability Policy operation sets the immutability policy on the blob\n * @param options The options parameters.\n */\n setImmutabilityPolicy(options) {\n const operationArguments = {\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, setImmutabilityPolicyOperationSpec);\n }\n /**\n * The Delete Immutability Policy operation deletes the immutability policy on the blob\n * @param options The options parameters.\n */\n deleteImmutabilityPolicy(options) {\n const operationArguments = {\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, deleteImmutabilityPolicyOperationSpec);\n }\n /**\n * The Set Legal Hold operation sets a legal hold on the blob.\n * @param legalHold Specified if a legal hold should be set on the blob.\n * @param options The options parameters.\n */\n setLegalHold(legalHold, options) {\n const operationArguments = {\n legalHold,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, setLegalHoldOperationSpec);\n }\n /**\n * The Set Blob Metadata operation sets user-defined metadata for the specified blob as one or more\n * name-value pairs\n * @param options The options parameters.\n */\n setMetadata(options) {\n const operationArguments = {\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, setMetadataOperationSpec);\n }\n /**\n * [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete\n * operations\n * @param options The options parameters.\n */\n acquireLease(options) {\n const operationArguments = {\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, acquireLeaseOperationSpec);\n }\n /**\n * [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete\n * operations\n * @param leaseId Specifies the current lease ID on the resource.\n * @param options The options parameters.\n */\n releaseLease(leaseId, options) {\n const operationArguments = {\n leaseId,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, releaseLeaseOperationSpec);\n }\n /**\n * [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete\n * operations\n * @param leaseId Specifies the current lease ID on the resource.\n * @param options The options parameters.\n */\n renewLease(leaseId, options) {\n const operationArguments = {\n leaseId,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, renewLeaseOperationSpec);\n }\n /**\n * [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete\n * operations\n * @param leaseId Specifies the current lease ID on the resource.\n * @param proposedLeaseId Proposed lease ID, in a GUID string format. The Blob service returns 400\n * (Invalid request) if the proposed lease ID is not in the correct format. See Guid Constructor\n * (String) for a list of valid GUID string formats.\n * @param options The options parameters.\n */\n changeLease(leaseId, proposedLeaseId, options) {\n const operationArguments = {\n leaseId,\n proposedLeaseId,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, changeLeaseOperationSpec);\n }\n /**\n * [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete\n * operations\n * @param options The options parameters.\n */\n breakLease(options) {\n const operationArguments = {\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, breakLeaseOperationSpec);\n }\n /**\n * The Create Snapshot operation creates a read-only snapshot of a blob\n * @param options The options parameters.\n */\n createSnapshot(options) {\n const operationArguments = {\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, createSnapshotOperationSpec);\n }\n /**\n * The Start Copy From URL operation copies a blob or an internet resource to a new blob.\n * @param copySource Specifies the name of the source page blob snapshot. This value is a URL of up to\n * 2 KB in length that specifies a page blob snapshot. The value should be URL-encoded as it would\n * appear in a request URI. The source blob must either be public or must be authenticated via a shared\n * access signature.\n * @param options The options parameters.\n */\n startCopyFromURL(copySource, options) {\n const operationArguments = {\n copySource,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, startCopyFromURLOperationSpec);\n }\n /**\n * The Copy From URL operation copies a blob or an internet resource to a new blob. It will not return\n * a response until the copy is complete.\n * @param copySource Specifies the name of the source page blob snapshot. This value is a URL of up to\n * 2 KB in length that specifies a page blob snapshot. The value should be URL-encoded as it would\n * appear in a request URI. The source blob must either be public or must be authenticated via a shared\n * access signature.\n * @param options The options parameters.\n */\n copyFromURL(copySource, options) {\n const operationArguments = {\n copySource,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, copyFromURLOperationSpec);\n }\n /**\n * The Abort Copy From URL operation aborts a pending Copy From URL operation, and leaves a destination\n * blob with zero length and full metadata.\n * @param copyId The copy identifier provided in the x-ms-copy-id header of the original Copy Blob\n * operation.\n * @param options The options parameters.\n */\n abortCopyFromURL(copyId, options) {\n const operationArguments = {\n copyId,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, abortCopyFromURLOperationSpec);\n }\n /**\n * The Set Tier operation sets the tier on a blob. The operation is allowed on a page blob in a premium\n * storage account and on a block blob in a blob storage account (locally redundant storage only). A\n * premium page blob's tier determines the allowed size, IOPS, and bandwidth of the blob. A block\n * blob's tier determines Hot/Cool/Archive storage type. This operation does not update the blob's\n * ETag.\n * @param tier Indicates the tier to be set on the blob.\n * @param options The options parameters.\n */\n setTier(tier, options) {\n const operationArguments = {\n tier,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, setTierOperationSpec);\n }\n /**\n * Returns the sku name and account kind\n * @param options The options parameters.\n */\n getAccountInfo(options) {\n const operationArguments = {\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, getAccountInfoOperationSpec);\n }\n /**\n * The Query operation enables users to select/project on blob data by providing simple query\n * expressions.\n * @param options The options parameters.\n */\n query(options) {\n const operationArguments = {\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, queryOperationSpec);\n }\n /**\n * The Get Tags operation enables users to get the tags associated with a blob.\n * @param options The options parameters.\n */\n getTags(options) {\n const operationArguments = {\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, getTagsOperationSpec);\n }\n /**\n * The Set Tags operation enables users to set tags on a blob.\n * @param options The options parameters.\n */\n setTags(options) {\n const operationArguments = {\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, setTagsOperationSpec);\n }\n}\n// Operation Specifications\nconst xmlSerializer = new coreHttp.Serializer(Mappers, /* isXml */ true);\nconst downloadOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: {\n type: { name: \"Stream\" },\n serializedName: \"parsedResponse\"\n },\n headersMapper: Mappers.BlobDownloadHeaders\n },\n 206: {\n bodyMapper: {\n type: { name: \"Stream\" },\n serializedName: \"parsedResponse\"\n },\n headersMapper: Mappers.BlobDownloadHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobDownloadExceptionHeaders\n }\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.snapshot,\n Parameters.versionId\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.range,\n Parameters.rangeGetContentMD5,\n Parameters.rangeGetContentCRC64,\n Parameters.encryptionKey,\n Parameters.encryptionKeySha256,\n Parameters.encryptionAlgorithm,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst getPropertiesOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"HEAD\",\n responses: {\n 200: {\n headersMapper: Mappers.BlobGetPropertiesHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobGetPropertiesExceptionHeaders\n }\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.snapshot,\n Parameters.versionId\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.encryptionKey,\n Parameters.encryptionKeySha256,\n Parameters.encryptionAlgorithm,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst deleteOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"DELETE\",\n responses: {\n 202: {\n headersMapper: Mappers.BlobDeleteHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobDeleteExceptionHeaders\n }\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.snapshot,\n Parameters.versionId,\n Parameters.blobDeleteType\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n Parameters.deleteSnapshots\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst undeleteOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n headersMapper: Mappers.BlobUndeleteHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobUndeleteExceptionHeaders\n }\n },\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp8],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst setExpiryOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n headersMapper: Mappers.BlobSetExpiryHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobSetExpiryExceptionHeaders\n }\n },\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp11],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.expiryOptions,\n Parameters.expiresOn\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst setHttpHeadersOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n headersMapper: Mappers.BlobSetHttpHeadersHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobSetHttpHeadersExceptionHeaders\n }\n },\n queryParameters: [Parameters.comp, Parameters.timeoutInSeconds],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n Parameters.blobCacheControl,\n Parameters.blobContentType,\n Parameters.blobContentMD5,\n Parameters.blobContentEncoding,\n Parameters.blobContentLanguage,\n Parameters.blobContentDisposition\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst setImmutabilityPolicyOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n headersMapper: Mappers.BlobSetImmutabilityPolicyHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobSetImmutabilityPolicyExceptionHeaders\n }\n },\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp12],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.ifUnmodifiedSince,\n Parameters.immutabilityPolicyExpiry,\n Parameters.immutabilityPolicyMode\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst deleteImmutabilityPolicyOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"DELETE\",\n responses: {\n 200: {\n headersMapper: Mappers.BlobDeleteImmutabilityPolicyHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobDeleteImmutabilityPolicyExceptionHeaders\n }\n },\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp12],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst setLegalHoldOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n headersMapper: Mappers.BlobSetLegalHoldHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobSetLegalHoldExceptionHeaders\n }\n },\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp13],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.legalHold\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst setMetadataOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n headersMapper: Mappers.BlobSetMetadataHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobSetMetadataExceptionHeaders\n }\n },\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp6],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.metadata,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.encryptionKey,\n Parameters.encryptionKeySha256,\n Parameters.encryptionAlgorithm,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n Parameters.encryptionScope\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst acquireLeaseOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 201: {\n headersMapper: Mappers.BlobAcquireLeaseHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobAcquireLeaseExceptionHeaders\n }\n },\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp10],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.action,\n Parameters.duration,\n Parameters.proposedLeaseId,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst releaseLeaseOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n headersMapper: Mappers.BlobReleaseLeaseHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobReleaseLeaseExceptionHeaders\n }\n },\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp10],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.action1,\n Parameters.leaseId1,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst renewLeaseOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n headersMapper: Mappers.BlobRenewLeaseHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobRenewLeaseExceptionHeaders\n }\n },\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp10],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.leaseId1,\n Parameters.action2,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst changeLeaseOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n headersMapper: Mappers.BlobChangeLeaseHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobChangeLeaseExceptionHeaders\n }\n },\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp10],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.leaseId1,\n Parameters.action4,\n Parameters.proposedLeaseId1,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst breakLeaseOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 202: {\n headersMapper: Mappers.BlobBreakLeaseHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobBreakLeaseExceptionHeaders\n }\n },\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp10],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.action3,\n Parameters.breakPeriod,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst createSnapshotOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 201: {\n headersMapper: Mappers.BlobCreateSnapshotHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobCreateSnapshotExceptionHeaders\n }\n },\n queryParameters: [Parameters.timeoutInSeconds, Parameters.comp14],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.metadata,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.encryptionKey,\n Parameters.encryptionKeySha256,\n Parameters.encryptionAlgorithm,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n Parameters.encryptionScope\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst startCopyFromURLOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 202: {\n headersMapper: Mappers.BlobStartCopyFromURLHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobStartCopyFromURLExceptionHeaders\n }\n },\n queryParameters: [Parameters.timeoutInSeconds],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.metadata,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n Parameters.immutabilityPolicyExpiry,\n Parameters.immutabilityPolicyMode,\n Parameters.tier,\n Parameters.rehydratePriority,\n Parameters.sourceIfModifiedSince,\n Parameters.sourceIfUnmodifiedSince,\n Parameters.sourceIfMatch,\n Parameters.sourceIfNoneMatch,\n Parameters.sourceIfTags,\n Parameters.copySource,\n Parameters.blobTagsString,\n Parameters.sealBlob,\n Parameters.legalHold1\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst copyFromURLOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 202: {\n headersMapper: Mappers.BlobCopyFromURLHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobCopyFromURLExceptionHeaders\n }\n },\n queryParameters: [Parameters.timeoutInSeconds],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.metadata,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags,\n Parameters.immutabilityPolicyExpiry,\n Parameters.immutabilityPolicyMode,\n Parameters.encryptionScope,\n Parameters.tier,\n Parameters.sourceIfModifiedSince,\n Parameters.sourceIfUnmodifiedSince,\n Parameters.sourceIfMatch,\n Parameters.sourceIfNoneMatch,\n Parameters.copySource,\n Parameters.blobTagsString,\n Parameters.legalHold1,\n Parameters.xMsRequiresSync,\n Parameters.sourceContentMD5,\n Parameters.copySourceAuthorization,\n Parameters.copySourceTags\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst abortCopyFromURLOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 204: {\n headersMapper: Mappers.BlobAbortCopyFromURLHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobAbortCopyFromURLExceptionHeaders\n }\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.comp15,\n Parameters.copyId\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.leaseId,\n Parameters.copyActionAbortConstant\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst setTierOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n headersMapper: Mappers.BlobSetTierHeaders\n },\n 202: {\n headersMapper: Mappers.BlobSetTierHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobSetTierExceptionHeaders\n }\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.snapshot,\n Parameters.versionId,\n Parameters.comp16\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.leaseId,\n Parameters.ifTags,\n Parameters.rehydratePriority,\n Parameters.tier1\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst getAccountInfoOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n headersMapper: Mappers.BlobGetAccountInfoHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobGetAccountInfoExceptionHeaders\n }\n },\n queryParameters: [Parameters.comp, Parameters.restype1],\n urlParameters: [Parameters.url],\n headerParameters: [Parameters.version, Parameters.accept1],\n isXML: true,\n serializer: xmlSerializer\n};\nconst queryOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: {\n type: { name: \"Stream\" },\n serializedName: \"parsedResponse\"\n },\n headersMapper: Mappers.BlobQueryHeaders\n },\n 206: {\n bodyMapper: {\n type: { name: \"Stream\" },\n serializedName: \"parsedResponse\"\n },\n headersMapper: Mappers.BlobQueryHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobQueryExceptionHeaders\n }\n },\n requestBody: Parameters.queryRequest,\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.snapshot,\n Parameters.comp17\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.contentType,\n Parameters.accept,\n Parameters.version,\n Parameters.requestId,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.encryptionKey,\n Parameters.encryptionKeySha256,\n Parameters.encryptionAlgorithm,\n Parameters.ifMatch,\n Parameters.ifNoneMatch,\n Parameters.ifTags\n ],\n isXML: true,\n contentType: \"application/xml; charset=utf-8\",\n mediaType: \"xml\",\n serializer: xmlSerializer\n};\nconst getTagsOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.BlobTags,\n headersMapper: Mappers.BlobGetTagsHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobGetTagsExceptionHeaders\n }\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.snapshot,\n Parameters.versionId,\n Parameters.comp18\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.leaseId,\n Parameters.ifTags\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst setTagsOperationSpec = {\n path: \"/{containerName}/{blob}\",\n httpMethod: \"PUT\",\n responses: {\n 204: {\n headersMapper: Mappers.BlobSetTagsHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.BlobSetTagsExceptionHeaders\n }\n },\n requestBody: Parameters.tags,\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.versionId,\n Parameters.comp18\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.contentType,\n Parameters.accept,\n Parameters.version,\n Parameters.requestId,\n Parameters.leaseId,\n Parameters.ifTags,\n Parameters.transactionalContentMD5,\n Parameters.transactionalContentCrc64\n ],\n isXML: true,\n contentType: \"application/xml; charset=utf-8\",\n mediaType: \"xml\",\n serializer: xmlSerializer\n};\n//# sourceMappingURL=blob.js.map","/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nimport * as coreHttp from \"@azure/core-http\";\nimport * as Mappers from \"../models/mappers\";\nimport * as Parameters from \"../models/parameters\";\n/** Class representing a Container. */\nexport class Container {\n /**\n * Initialize a new instance of the class Container class.\n * @param client Reference to the service client\n */\n constructor(client) {\n this.client = client;\n }\n /**\n * creates a new container under the specified account. If the container with the same name already\n * exists, the operation fails\n * @param options The options parameters.\n */\n create(options) {\n const operationArguments = {\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, createOperationSpec);\n }\n /**\n * returns all user-defined metadata and system properties for the specified container. The data\n * returned does not include the container's list of blobs\n * @param options The options parameters.\n */\n getProperties(options) {\n const operationArguments = {\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, getPropertiesOperationSpec);\n }\n /**\n * operation marks the specified container for deletion. The container and any blobs contained within\n * it are later deleted during garbage collection\n * @param options The options parameters.\n */\n delete(options) {\n const operationArguments = {\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, deleteOperationSpec);\n }\n /**\n * operation sets one or more user-defined name-value pairs for the specified container.\n * @param options The options parameters.\n */\n setMetadata(options) {\n const operationArguments = {\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, setMetadataOperationSpec);\n }\n /**\n * gets the permissions for the specified container. The permissions indicate whether container data\n * may be accessed publicly.\n * @param options The options parameters.\n */\n getAccessPolicy(options) {\n const operationArguments = {\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, getAccessPolicyOperationSpec);\n }\n /**\n * sets the permissions for the specified container. The permissions indicate whether blobs in a\n * container may be accessed publicly.\n * @param options The options parameters.\n */\n setAccessPolicy(options) {\n const operationArguments = {\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, setAccessPolicyOperationSpec);\n }\n /**\n * Restores a previously-deleted container.\n * @param options The options parameters.\n */\n restore(options) {\n const operationArguments = {\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, restoreOperationSpec);\n }\n /**\n * Renames an existing container.\n * @param sourceContainerName Required. Specifies the name of the container to rename.\n * @param options The options parameters.\n */\n rename(sourceContainerName, options) {\n const operationArguments = {\n sourceContainerName,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, renameOperationSpec);\n }\n /**\n * The Batch operation allows multiple API calls to be embedded into a single HTTP request.\n * @param contentLength The length of the request.\n * @param multipartContentType Required. The value of this header must be multipart/mixed with a batch\n * boundary. Example header value: multipart/mixed; boundary=batch_\n * @param body Initial data\n * @param options The options parameters.\n */\n submitBatch(contentLength, multipartContentType, body, options) {\n const operationArguments = {\n contentLength,\n multipartContentType,\n body,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, submitBatchOperationSpec);\n }\n /**\n * The Filter Blobs operation enables callers to list blobs in a container whose tags match a given\n * search expression. Filter blobs searches within the given container.\n * @param options The options parameters.\n */\n filterBlobs(options) {\n const operationArguments = {\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, filterBlobsOperationSpec);\n }\n /**\n * [Update] establishes and manages a lock on a container for delete operations. The lock duration can\n * be 15 to 60 seconds, or can be infinite\n * @param options The options parameters.\n */\n acquireLease(options) {\n const operationArguments = {\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, acquireLeaseOperationSpec);\n }\n /**\n * [Update] establishes and manages a lock on a container for delete operations. The lock duration can\n * be 15 to 60 seconds, or can be infinite\n * @param leaseId Specifies the current lease ID on the resource.\n * @param options The options parameters.\n */\n releaseLease(leaseId, options) {\n const operationArguments = {\n leaseId,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, releaseLeaseOperationSpec);\n }\n /**\n * [Update] establishes and manages a lock on a container for delete operations. The lock duration can\n * be 15 to 60 seconds, or can be infinite\n * @param leaseId Specifies the current lease ID on the resource.\n * @param options The options parameters.\n */\n renewLease(leaseId, options) {\n const operationArguments = {\n leaseId,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, renewLeaseOperationSpec);\n }\n /**\n * [Update] establishes and manages a lock on a container for delete operations. The lock duration can\n * be 15 to 60 seconds, or can be infinite\n * @param options The options parameters.\n */\n breakLease(options) {\n const operationArguments = {\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, breakLeaseOperationSpec);\n }\n /**\n * [Update] establishes and manages a lock on a container for delete operations. The lock duration can\n * be 15 to 60 seconds, or can be infinite\n * @param leaseId Specifies the current lease ID on the resource.\n * @param proposedLeaseId Proposed lease ID, in a GUID string format. The Blob service returns 400\n * (Invalid request) if the proposed lease ID is not in the correct format. See Guid Constructor\n * (String) for a list of valid GUID string formats.\n * @param options The options parameters.\n */\n changeLease(leaseId, proposedLeaseId, options) {\n const operationArguments = {\n leaseId,\n proposedLeaseId,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, changeLeaseOperationSpec);\n }\n /**\n * [Update] The List Blobs operation returns a list of the blobs under the specified container\n * @param options The options parameters.\n */\n listBlobFlatSegment(options) {\n const operationArguments = {\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, listBlobFlatSegmentOperationSpec);\n }\n /**\n * [Update] The List Blobs operation returns a list of the blobs under the specified container\n * @param delimiter When the request includes this parameter, the operation returns a BlobPrefix\n * element in the response body that acts as a placeholder for all blobs whose names begin with the\n * same substring up to the appearance of the delimiter character. The delimiter may be a single\n * character or a string.\n * @param options The options parameters.\n */\n listBlobHierarchySegment(delimiter, options) {\n const operationArguments = {\n delimiter,\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, listBlobHierarchySegmentOperationSpec);\n }\n /**\n * Returns the sku name and account kind\n * @param options The options parameters.\n */\n getAccountInfo(options) {\n const operationArguments = {\n options: coreHttp.operationOptionsToRequestOptionsBase(options || {})\n };\n return this.client.sendOperationRequest(operationArguments, getAccountInfoOperationSpec);\n }\n}\n// Operation Specifications\nconst xmlSerializer = new coreHttp.Serializer(Mappers, /* isXml */ true);\nconst createOperationSpec = {\n path: \"/{containerName}\",\n httpMethod: \"PUT\",\n responses: {\n 201: {\n headersMapper: Mappers.ContainerCreateHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ContainerCreateExceptionHeaders\n }\n },\n queryParameters: [Parameters.timeoutInSeconds, Parameters.restype2],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.metadata,\n Parameters.access,\n Parameters.defaultEncryptionScope,\n Parameters.preventEncryptionScopeOverride\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst getPropertiesOperationSpec = {\n path: \"/{containerName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n headersMapper: Mappers.ContainerGetPropertiesHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ContainerGetPropertiesExceptionHeaders\n }\n },\n queryParameters: [Parameters.timeoutInSeconds, Parameters.restype2],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.leaseId\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst deleteOperationSpec = {\n path: \"/{containerName}\",\n httpMethod: \"DELETE\",\n responses: {\n 202: {\n headersMapper: Mappers.ContainerDeleteHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ContainerDeleteExceptionHeaders\n }\n },\n queryParameters: [Parameters.timeoutInSeconds, Parameters.restype2],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst setMetadataOperationSpec = {\n path: \"/{containerName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n headersMapper: Mappers.ContainerSetMetadataHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ContainerSetMetadataExceptionHeaders\n }\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.restype2,\n Parameters.comp6\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.metadata,\n Parameters.leaseId,\n Parameters.ifModifiedSince\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst getAccessPolicyOperationSpec = {\n path: \"/{containerName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: {\n type: {\n name: \"Sequence\",\n element: {\n type: { name: \"Composite\", className: \"SignedIdentifier\" }\n }\n },\n serializedName: \"SignedIdentifiers\",\n xmlName: \"SignedIdentifiers\",\n xmlIsWrapped: true,\n xmlElementName: \"SignedIdentifier\"\n },\n headersMapper: Mappers.ContainerGetAccessPolicyHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ContainerGetAccessPolicyExceptionHeaders\n }\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.restype2,\n Parameters.comp7\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.leaseId\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst setAccessPolicyOperationSpec = {\n path: \"/{containerName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n headersMapper: Mappers.ContainerSetAccessPolicyHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ContainerSetAccessPolicyExceptionHeaders\n }\n },\n requestBody: Parameters.containerAcl,\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.restype2,\n Parameters.comp7\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.contentType,\n Parameters.accept,\n Parameters.version,\n Parameters.requestId,\n Parameters.access,\n Parameters.leaseId,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince\n ],\n isXML: true,\n contentType: \"application/xml; charset=utf-8\",\n mediaType: \"xml\",\n serializer: xmlSerializer\n};\nconst restoreOperationSpec = {\n path: \"/{containerName}\",\n httpMethod: \"PUT\",\n responses: {\n 201: {\n headersMapper: Mappers.ContainerRestoreHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ContainerRestoreExceptionHeaders\n }\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.restype2,\n Parameters.comp8\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.deletedContainerName,\n Parameters.deletedContainerVersion\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst renameOperationSpec = {\n path: \"/{containerName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n headersMapper: Mappers.ContainerRenameHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ContainerRenameExceptionHeaders\n }\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.restype2,\n Parameters.comp9\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.sourceContainerName,\n Parameters.sourceLeaseId\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst submitBatchOperationSpec = {\n path: \"/{containerName}\",\n httpMethod: \"POST\",\n responses: {\n 202: {\n bodyMapper: {\n type: { name: \"Stream\" },\n serializedName: \"parsedResponse\"\n },\n headersMapper: Mappers.ContainerSubmitBatchHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ContainerSubmitBatchExceptionHeaders\n }\n },\n requestBody: Parameters.body,\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.comp4,\n Parameters.restype2\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.contentType,\n Parameters.accept,\n Parameters.version,\n Parameters.requestId,\n Parameters.contentLength,\n Parameters.multipartContentType\n ],\n isXML: true,\n contentType: \"application/xml; charset=utf-8\",\n mediaType: \"xml\",\n serializer: xmlSerializer\n};\nconst filterBlobsOperationSpec = {\n path: \"/{containerName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.FilterBlobSegment,\n headersMapper: Mappers.ContainerFilterBlobsHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ContainerFilterBlobsExceptionHeaders\n }\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.marker,\n Parameters.maxPageSize,\n Parameters.comp5,\n Parameters.where,\n Parameters.restype2\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst acquireLeaseOperationSpec = {\n path: \"/{containerName}\",\n httpMethod: \"PUT\",\n responses: {\n 201: {\n headersMapper: Mappers.ContainerAcquireLeaseHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ContainerAcquireLeaseExceptionHeaders\n }\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.restype2,\n Parameters.comp10\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.action,\n Parameters.duration,\n Parameters.proposedLeaseId\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst releaseLeaseOperationSpec = {\n path: \"/{containerName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n headersMapper: Mappers.ContainerReleaseLeaseHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ContainerReleaseLeaseExceptionHeaders\n }\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.restype2,\n Parameters.comp10\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.action1,\n Parameters.leaseId1\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst renewLeaseOperationSpec = {\n path: \"/{containerName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n headersMapper: Mappers.ContainerRenewLeaseHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ContainerRenewLeaseExceptionHeaders\n }\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.restype2,\n Parameters.comp10\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.leaseId1,\n Parameters.action2\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst breakLeaseOperationSpec = {\n path: \"/{containerName}\",\n httpMethod: \"PUT\",\n responses: {\n 202: {\n headersMapper: Mappers.ContainerBreakLeaseHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ContainerBreakLeaseExceptionHeaders\n }\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.restype2,\n Parameters.comp10\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.action3,\n Parameters.breakPeriod\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst changeLeaseOperationSpec = {\n path: \"/{containerName}\",\n httpMethod: \"PUT\",\n responses: {\n 200: {\n headersMapper: Mappers.ContainerChangeLeaseHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ContainerChangeLeaseExceptionHeaders\n }\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.restype2,\n Parameters.comp10\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1,\n Parameters.ifModifiedSince,\n Parameters.ifUnmodifiedSince,\n Parameters.leaseId1,\n Parameters.action4,\n Parameters.proposedLeaseId1\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst listBlobFlatSegmentOperationSpec = {\n path: \"/{containerName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ListBlobsFlatSegmentResponse,\n headersMapper: Mappers.ContainerListBlobFlatSegmentHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ContainerListBlobFlatSegmentExceptionHeaders\n }\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.comp2,\n Parameters.prefix,\n Parameters.marker,\n Parameters.maxPageSize,\n Parameters.restype2,\n Parameters.include1\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst listBlobHierarchySegmentOperationSpec = {\n path: \"/{containerName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ListBlobsHierarchySegmentResponse,\n headersMapper: Mappers.ContainerListBlobHierarchySegmentHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ContainerListBlobHierarchySegmentExceptionHeaders\n }\n },\n queryParameters: [\n Parameters.timeoutInSeconds,\n Parameters.comp2,\n Parameters.prefix,\n Parameters.marker,\n Parameters.maxPageSize,\n Parameters.restype2,\n Parameters.include1,\n Parameters.delimiter\n ],\n urlParameters: [Parameters.url],\n headerParameters: [\n Parameters.version,\n Parameters.requestId,\n Parameters.accept1\n ],\n isXML: true,\n serializer: xmlSerializer\n};\nconst getAccountInfoOperationSpec = {\n path: \"/{containerName}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n headersMapper: Mappers.ContainerGetAccountInfoHeaders\n },\n default: {\n bodyMapper: Mappers.StorageError,\n headersMapper: Mappers.ContainerGetAccountInfoExceptionHeaders\n }\n },\n queryParameters: [Parameters.comp, Parameters.restype1],\n urlParameters: [Parameters.url],\n headerParameters: [Parameters.version, Parameters.accept1],\n isXML: true,\n serializer: xmlSerializer\n};\n//# sourceMappingURL=container.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { BaseRequestPolicy, } from \"./requestPolicy\";\nimport { URLBuilder } from \"../url\";\n/**\n * Methods that are allowed to follow redirects 301 and 302\n */\nconst allowedRedirect = [\"GET\", \"HEAD\"];\nexport const DefaultRedirectOptions = {\n handleRedirects: true,\n maxRetries: 20,\n};\n/**\n * Creates a redirect policy, which sends a repeats the request to a new destination if a response arrives with a \"location\" header, and a status code between 300 and 307.\n * @param maximumRetries - Maximum number of redirects to follow.\n * @returns An instance of the {@link RedirectPolicy}\n */\nexport function redirectPolicy(maximumRetries = 20) {\n return {\n create: (nextPolicy, options) => {\n return new RedirectPolicy(nextPolicy, options, maximumRetries);\n },\n };\n}\n/**\n * Resends the request to a new destination if a response arrives with a \"location\" header, and a status code between 300 and 307.\n */\nexport class RedirectPolicy extends BaseRequestPolicy {\n constructor(nextPolicy, options, maxRetries = 20) {\n super(nextPolicy, options);\n this.maxRetries = maxRetries;\n }\n sendRequest(request) {\n return this._nextPolicy\n .sendRequest(request)\n .then((response) => handleRedirect(this, response, 0));\n }\n}\nfunction handleRedirect(policy, response, currentRetries) {\n const { request, status } = response;\n const locationHeader = response.headers.get(\"location\");\n if (locationHeader &&\n (status === 300 ||\n (status === 301 && allowedRedirect.includes(request.method)) ||\n (status === 302 && allowedRedirect.includes(request.method)) ||\n (status === 303 && request.method === \"POST\") ||\n status === 307) &&\n (!policy.maxRetries || currentRetries < policy.maxRetries)) {\n const builder = URLBuilder.parse(request.url);\n builder.setPath(locationHeader);\n request.url = builder.toString();\n // POST request with Status code 303 should be converted into a\n // redirected GET request if the redirect url is present in the location header\n if (status === 303) {\n request.method = \"GET\";\n delete request.body;\n }\n return policy._nextPolicy\n .sendRequest(request)\n .then((res) => handleRedirect(policy, res, currentRetries + 1));\n }\n return Promise.resolve(response);\n}\n//# sourceMappingURL=redirectPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nexport const DEFAULT_CLIENT_RETRY_COUNT = 3;\n// intervals are in ms\nexport const DEFAULT_CLIENT_RETRY_INTERVAL = 1000 * 30;\nexport const DEFAULT_CLIENT_MAX_RETRY_INTERVAL = 1000 * 90;\nexport const DEFAULT_CLIENT_MIN_RETRY_INTERVAL = 1000 * 3;\nexport function isNumber(n) {\n return typeof n === \"number\";\n}\n/**\n * @internal\n * Determines if the operation should be retried.\n *\n * @param retryLimit - Specifies the max number of retries.\n * @param predicate - Initial chekck on whether to retry based on given responses or errors\n * @param retryData - The retry data.\n * @returns True if the operation qualifies for a retry; false otherwise.\n */\nexport function shouldRetry(retryLimit, predicate, retryData, response, error) {\n if (!predicate(response, error)) {\n return false;\n }\n return retryData.retryCount < retryLimit;\n}\n/**\n * @internal\n * Updates the retry data for the next attempt.\n *\n * @param retryOptions - specifies retry interval, and its lower bound and upper bound.\n * @param retryData - The retry data.\n * @param err - The operation\"s error, if any.\n */\nexport function updateRetryData(retryOptions, retryData = { retryCount: 0, retryInterval: 0 }, err) {\n if (err) {\n if (retryData.error) {\n err.innerError = retryData.error;\n }\n retryData.error = err;\n }\n // Adjust retry count\n retryData.retryCount++;\n // Adjust retry interval\n let incrementDelta = Math.pow(2, retryData.retryCount - 1) - 1;\n const boundedRandDelta = retryOptions.retryInterval * 0.8 +\n Math.floor(Math.random() * (retryOptions.retryInterval * 0.4));\n incrementDelta *= boundedRandDelta;\n retryData.retryInterval = Math.min(retryOptions.minRetryInterval + incrementDelta, retryOptions.maxRetryInterval);\n return retryData;\n}\n//# sourceMappingURL=exponentialBackoffStrategy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { BaseRequestPolicy, } from \"./requestPolicy\";\nimport { DEFAULT_CLIENT_MAX_RETRY_INTERVAL, DEFAULT_CLIENT_RETRY_COUNT, DEFAULT_CLIENT_RETRY_INTERVAL, isNumber, shouldRetry, updateRetryData, } from \"../util/exponentialBackoffStrategy\";\nimport { Constants } from \"../util/constants\";\nimport { RestError } from \"../restError\";\nimport { delay } from \"@azure/core-util\";\nimport { logger } from \"../log\";\n/**\n * Policy that retries the request as many times as configured for as long as the max retry time interval specified, each retry waiting longer to begin than the last time.\n * @param retryCount - Maximum number of retries.\n * @param retryInterval - Base time between retries.\n * @param maxRetryInterval - Maximum time to wait between retries.\n */\nexport function exponentialRetryPolicy(retryCount, retryInterval, maxRetryInterval) {\n return {\n create: (nextPolicy, options) => {\n return new ExponentialRetryPolicy(nextPolicy, options, retryCount, retryInterval, maxRetryInterval);\n },\n };\n}\n/**\n * Describes the Retry Mode type. Currently supporting only Exponential.\n */\nexport var RetryMode;\n(function (RetryMode) {\n /**\n * Currently supported retry mode.\n * Each time a retry happens, it will take exponentially more time than the last time.\n */\n RetryMode[RetryMode[\"Exponential\"] = 0] = \"Exponential\";\n})(RetryMode || (RetryMode = {}));\nexport const DefaultRetryOptions = {\n maxRetries: DEFAULT_CLIENT_RETRY_COUNT,\n retryDelayInMs: DEFAULT_CLIENT_RETRY_INTERVAL,\n maxRetryDelayInMs: DEFAULT_CLIENT_MAX_RETRY_INTERVAL,\n};\n/**\n * Instantiates a new \"ExponentialRetryPolicyFilter\" instance.\n */\nexport class ExponentialRetryPolicy extends BaseRequestPolicy {\n /**\n * @param nextPolicy - The next RequestPolicy in the pipeline chain.\n * @param options - The options for this RequestPolicy.\n * @param retryCount - The client retry count.\n * @param retryInterval - The client retry interval, in milliseconds.\n * @param minRetryInterval - The minimum retry interval, in milliseconds.\n * @param maxRetryInterval - The maximum retry interval, in milliseconds.\n */\n constructor(nextPolicy, options, retryCount, retryInterval, maxRetryInterval) {\n super(nextPolicy, options);\n this.retryCount = isNumber(retryCount) ? retryCount : DEFAULT_CLIENT_RETRY_COUNT;\n this.retryInterval = isNumber(retryInterval) ? retryInterval : DEFAULT_CLIENT_RETRY_INTERVAL;\n this.maxRetryInterval = isNumber(maxRetryInterval)\n ? maxRetryInterval\n : DEFAULT_CLIENT_MAX_RETRY_INTERVAL;\n }\n sendRequest(request) {\n return this._nextPolicy\n .sendRequest(request.clone())\n .then((response) => retry(this, request, response))\n .catch((error) => retry(this, request, error.response, undefined, error));\n }\n}\nasync function retry(policy, request, response, retryData, requestError) {\n function shouldPolicyRetry(responseParam) {\n const statusCode = responseParam === null || responseParam === void 0 ? void 0 : responseParam.status;\n if (statusCode === 503 && (response === null || response === void 0 ? void 0 : response.headers.get(Constants.HeaderConstants.RETRY_AFTER))) {\n return false;\n }\n if (statusCode === undefined ||\n (statusCode < 500 && statusCode !== 408) ||\n statusCode === 501 ||\n statusCode === 505) {\n return false;\n }\n return true;\n }\n retryData = updateRetryData({\n retryInterval: policy.retryInterval,\n minRetryInterval: 0,\n maxRetryInterval: policy.maxRetryInterval,\n }, retryData, requestError);\n const isAborted = request.abortSignal && request.abortSignal.aborted;\n if (!isAborted && shouldRetry(policy.retryCount, shouldPolicyRetry, retryData, response)) {\n logger.info(`Retrying request in ${retryData.retryInterval}`);\n try {\n await delay(retryData.retryInterval);\n const res = await policy._nextPolicy.sendRequest(request.clone());\n return retry(policy, request, res, retryData);\n }\n catch (err) {\n return retry(policy, request, response, retryData, err);\n }\n }\n else if (isAborted || requestError || !response) {\n // If the operation failed in the end, return all errors instead of just the last one\n const err = retryData.error ||\n new RestError(\"Failed to send the request.\", RestError.REQUEST_SEND_ERROR, response && response.status, response && response.request, response);\n throw err;\n }\n else {\n return response;\n }\n}\n//# sourceMappingURL=exponentialRetryPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Get the path to this parameter's value as a dotted string (a.b.c).\n * @param parameter - The parameter to get the path string for.\n * @returns The path to this parameter's value as a dotted string.\n */\nexport function getPathStringFromParameter(parameter) {\n return getPathStringFromParameterPath(parameter.parameterPath, parameter.mapper);\n}\nexport function getPathStringFromParameterPath(parameterPath, mapper) {\n let result;\n if (typeof parameterPath === \"string\") {\n result = parameterPath;\n }\n else if (Array.isArray(parameterPath)) {\n result = parameterPath.join(\".\");\n }\n else {\n result = mapper.serializedName;\n }\n return result;\n}\n//# sourceMappingURL=operationParameter.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nexport function getDefaultUserAgentKey() {\n return \"x-ms-useragent\";\n}\nexport function getPlatformSpecificData() {\n const navigator = self.navigator;\n const osInfo = {\n key: \"OS\",\n value: (navigator.oscpu || navigator.platform).replace(\" \", \"\"),\n };\n return [osInfo];\n}\n//# sourceMappingURL=msRestUserAgentPolicy.browser.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { BaseRequestPolicy, } from \"./requestPolicy\";\nimport { getDefaultUserAgentKey, getPlatformSpecificData } from \"./msRestUserAgentPolicy\";\nimport { Constants } from \"../util/constants\";\nimport { HttpHeaders } from \"../httpHeaders\";\nfunction getRuntimeInfo() {\n const msRestRuntime = {\n key: \"core-http\",\n value: Constants.coreHttpVersion,\n };\n return [msRestRuntime];\n}\nfunction getUserAgentString(telemetryInfo, keySeparator = \" \", valueSeparator = \"/\") {\n return telemetryInfo\n .map((info) => {\n const value = info.value ? `${valueSeparator}${info.value}` : \"\";\n return `${info.key}${value}`;\n })\n .join(keySeparator);\n}\nexport const getDefaultUserAgentHeaderName = getDefaultUserAgentKey;\n/**\n * The default approach to generate user agents.\n * Uses static information from this package, plus system information available from the runtime.\n */\nexport function getDefaultUserAgentValue() {\n const runtimeInfo = getRuntimeInfo();\n const platformSpecificData = getPlatformSpecificData();\n const userAgent = getUserAgentString(runtimeInfo.concat(platformSpecificData));\n return userAgent;\n}\n/**\n * Returns a policy that adds the user agent header to outgoing requests based on the given {@link TelemetryInfo}.\n * @param userAgentData - Telemetry information.\n * @returns A new {@link UserAgentPolicy}.\n */\nexport function userAgentPolicy(userAgentData) {\n const key = !userAgentData || userAgentData.key === undefined || userAgentData.key === null\n ? getDefaultUserAgentKey()\n : userAgentData.key;\n const value = !userAgentData || userAgentData.value === undefined || userAgentData.value === null\n ? getDefaultUserAgentValue()\n : userAgentData.value;\n return {\n create: (nextPolicy, options) => {\n return new UserAgentPolicy(nextPolicy, options, key, value);\n },\n };\n}\n/**\n * A policy that adds the user agent header to outgoing requests based on the given {@link TelemetryInfo}.\n */\nexport class UserAgentPolicy extends BaseRequestPolicy {\n constructor(_nextPolicy, _options, headerKey, headerValue) {\n super(_nextPolicy, _options);\n this._nextPolicy = _nextPolicy;\n this._options = _options;\n this.headerKey = headerKey;\n this.headerValue = headerValue;\n }\n sendRequest(request) {\n this.addUserAgentHeader(request);\n return this._nextPolicy.sendRequest(request);\n }\n /**\n * Adds the user agent header to the outgoing request.\n */\n addUserAgentHeader(request) {\n if (!request.headers) {\n request.headers = new HttpHeaders();\n }\n if (!request.headers.get(this.headerKey) && this.headerValue) {\n request.headers.set(this.headerKey, this.headerValue);\n }\n }\n}\n//# sourceMappingURL=userAgentPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { DefaultHttpClient } from \"./defaultHttpClient\";\nlet cachedHttpClient;\nexport function getCachedDefaultHttpClient() {\n if (!cachedHttpClient) {\n cachedHttpClient = new DefaultHttpClient();\n }\n return cachedHttpClient;\n}\n//# sourceMappingURL=httpClientCache.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport * as utils from \"../util/utils\";\nimport { BaseRequestPolicy, } from \"./requestPolicy\";\nimport { delay } from \"@azure/core-util\";\nexport function rpRegistrationPolicy(retryTimeout = 30) {\n return {\n create: (nextPolicy, options) => {\n return new RPRegistrationPolicy(nextPolicy, options, retryTimeout);\n },\n };\n}\nexport class RPRegistrationPolicy extends BaseRequestPolicy {\n constructor(nextPolicy, options, _retryTimeout = 30) {\n super(nextPolicy, options);\n this._retryTimeout = _retryTimeout;\n }\n sendRequest(request) {\n return this._nextPolicy\n .sendRequest(request.clone())\n .then((response) => registerIfNeeded(this, request, response));\n }\n}\nfunction registerIfNeeded(policy, request, response) {\n if (response.status === 409) {\n const rpName = checkRPNotRegisteredError(response.bodyAsText);\n if (rpName) {\n const urlPrefix = extractSubscriptionUrl(request.url);\n return (registerRP(policy, urlPrefix, rpName, request)\n // Autoregistration of ${provider} failed for some reason. We will not return this error\n // instead will return the initial response with 409 status code back to the user.\n // do nothing here as we are returning the original response at the end of this method.\n .catch(() => false)\n .then((registrationStatus) => {\n if (registrationStatus) {\n // Retry the original request. We have to change the x-ms-client-request-id\n // otherwise Azure endpoint will return the initial 409 (cached) response.\n request.headers.set(\"x-ms-client-request-id\", utils.generateUuid());\n return policy._nextPolicy.sendRequest(request.clone());\n }\n return response;\n }));\n }\n }\n return Promise.resolve(response);\n}\n/**\n * Reuses the headers of the original request and url (if specified).\n * @param originalRequest - The original request\n * @param reuseUrlToo - Should the url from the original request be reused as well. Default false.\n * @returns A new request object with desired headers.\n */\nfunction getRequestEssentials(originalRequest, reuseUrlToo = false) {\n const reqOptions = originalRequest.clone();\n if (reuseUrlToo) {\n reqOptions.url = originalRequest.url;\n }\n // We have to change the x-ms-client-request-id otherwise Azure endpoint\n // will return the initial 409 (cached) response.\n reqOptions.headers.set(\"x-ms-client-request-id\", utils.generateUuid());\n // Set content-type to application/json\n reqOptions.headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n return reqOptions;\n}\n/**\n * Validates the error code and message associated with 409 response status code. If it matches to that of\n * RP not registered then it returns the name of the RP else returns undefined.\n * @param body - The response body received after making the original request.\n * @returns The name of the RP if condition is satisfied else undefined.\n */\nfunction checkRPNotRegisteredError(body) {\n let result, responseBody;\n if (body) {\n try {\n responseBody = JSON.parse(body);\n }\n catch (err) {\n // do nothing;\n }\n if (responseBody &&\n responseBody.error &&\n responseBody.error.message &&\n responseBody.error.code &&\n responseBody.error.code === \"MissingSubscriptionRegistration\") {\n const matchRes = responseBody.error.message.match(/.*'(.*)'/i);\n if (matchRes) {\n result = matchRes.pop();\n }\n }\n }\n return result;\n}\n/**\n * Extracts the first part of the URL, just after subscription:\n * https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/\n * @param url - The original request url\n * @returns The url prefix as explained above.\n */\nfunction extractSubscriptionUrl(url) {\n let result;\n const matchRes = url.match(/.*\\/subscriptions\\/[a-f0-9-]+\\//gi);\n if (matchRes && matchRes[0]) {\n result = matchRes[0];\n }\n else {\n throw new Error(`Unable to extract subscriptionId from the given url - ${url}.`);\n }\n return result;\n}\n/**\n * Registers the given provider.\n * @param policy - The RPRegistrationPolicy this function is being called against.\n * @param urlPrefix - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/\n * @param provider - The provider name to be registered.\n * @param originalRequest - The original request sent by the user that returned a 409 response\n * with a message that the provider is not registered.\n */\nasync function registerRP(policy, urlPrefix, provider, originalRequest) {\n const postUrl = `${urlPrefix}providers/${provider}/register?api-version=2016-02-01`;\n const getUrl = `${urlPrefix}providers/${provider}?api-version=2016-02-01`;\n const reqOptions = getRequestEssentials(originalRequest);\n reqOptions.method = \"POST\";\n reqOptions.url = postUrl;\n const response = await policy._nextPolicy.sendRequest(reqOptions);\n if (response.status !== 200) {\n throw new Error(`Autoregistration of ${provider} failed. Please try registering manually.`);\n }\n return getRegistrationStatus(policy, getUrl, originalRequest);\n}\n/**\n * Polls the registration status of the provider that was registered. Polling happens at an interval of 30 seconds.\n * Polling will happen till the registrationState property of the response body is \"Registered\".\n * @param policy - The RPRegistrationPolicy this function is being called against.\n * @param url - The request url for polling\n * @param originalRequest - The original request sent by the user that returned a 409 response\n * with a message that the provider is not registered.\n * @returns True if RP Registration is successful.\n */\nasync function getRegistrationStatus(policy, url, originalRequest) {\n const reqOptions = getRequestEssentials(originalRequest);\n reqOptions.url = url;\n reqOptions.method = \"GET\";\n const res = await policy._nextPolicy.sendRequest(reqOptions);\n const obj = res.parsedBody;\n if (res.parsedBody && obj.registrationState && obj.registrationState === \"Registered\") {\n return true;\n }\n else {\n await delay(policy._retryTimeout * 1000);\n return getRegistrationStatus(policy, url, originalRequest);\n }\n}\n//# sourceMappingURL=rpRegistrationPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { BaseRequestPolicy, } from \"./requestPolicy\";\n/**\n * Creates a policy that signs outgoing requests by calling to the provided `authenticationProvider`'s `signRequest` method.\n * @param authenticationProvider - The authentication provider.\n * @returns An instance of the {@link SigningPolicy}.\n */\nexport function signingPolicy(authenticationProvider) {\n return {\n create: (nextPolicy, options) => {\n return new SigningPolicy(nextPolicy, options, authenticationProvider);\n },\n };\n}\n/**\n * A policy that signs outgoing requests by calling to the provided `authenticationProvider`'s `signRequest` method.\n */\nexport class SigningPolicy extends BaseRequestPolicy {\n constructor(nextPolicy, options, authenticationProvider) {\n super(nextPolicy, options);\n this.authenticationProvider = authenticationProvider;\n }\n signRequest(request) {\n return this.authenticationProvider.signRequest(request);\n }\n sendRequest(request) {\n return this.signRequest(request).then((nextRequest) => this._nextPolicy.sendRequest(nextRequest));\n }\n}\n//# sourceMappingURL=signingPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { BaseRequestPolicy, } from \"./requestPolicy\";\nimport { DEFAULT_CLIENT_MAX_RETRY_INTERVAL, DEFAULT_CLIENT_MIN_RETRY_INTERVAL, DEFAULT_CLIENT_RETRY_COUNT, DEFAULT_CLIENT_RETRY_INTERVAL, isNumber, shouldRetry, updateRetryData, } from \"../util/exponentialBackoffStrategy\";\nimport { delay } from \"@azure/core-util\";\n/**\n * A policy that retries when there's a system error, identified by the codes \"ETIMEDOUT\", \"ESOCKETTIMEDOUT\", \"ECONNREFUSED\", \"ECONNRESET\" or \"ENOENT\".\n * @param retryCount - Maximum number of retries.\n * @param retryInterval - The client retry interval, in milliseconds.\n * @param minRetryInterval - The minimum retry interval, in milliseconds.\n * @param maxRetryInterval - The maximum retry interval, in milliseconds.\n * @returns An instance of the {@link SystemErrorRetryPolicy}\n */\nexport function systemErrorRetryPolicy(retryCount, retryInterval, minRetryInterval, maxRetryInterval) {\n return {\n create: (nextPolicy, options) => {\n return new SystemErrorRetryPolicy(nextPolicy, options, retryCount, retryInterval, minRetryInterval, maxRetryInterval);\n },\n };\n}\n/**\n * A policy that retries when there's a system error, identified by the codes \"ETIMEDOUT\", \"ESOCKETTIMEDOUT\", \"ECONNREFUSED\", \"ECONNRESET\" or \"ENOENT\".\n * @param retryCount - The client retry count.\n * @param retryInterval - The client retry interval, in milliseconds.\n * @param minRetryInterval - The minimum retry interval, in milliseconds.\n * @param maxRetryInterval - The maximum retry interval, in milliseconds.\n */\nexport class SystemErrorRetryPolicy extends BaseRequestPolicy {\n constructor(nextPolicy, options, retryCount, retryInterval, minRetryInterval, maxRetryInterval) {\n super(nextPolicy, options);\n this.retryCount = isNumber(retryCount) ? retryCount : DEFAULT_CLIENT_RETRY_COUNT;\n this.retryInterval = isNumber(retryInterval) ? retryInterval : DEFAULT_CLIENT_RETRY_INTERVAL;\n this.minRetryInterval = isNumber(minRetryInterval)\n ? minRetryInterval\n : DEFAULT_CLIENT_MIN_RETRY_INTERVAL;\n this.maxRetryInterval = isNumber(maxRetryInterval)\n ? maxRetryInterval\n : DEFAULT_CLIENT_MAX_RETRY_INTERVAL;\n }\n sendRequest(request) {\n return this._nextPolicy\n .sendRequest(request.clone())\n .catch((error) => retry(this, request, error.response, error));\n }\n}\nasync function retry(policy, request, operationResponse, err, retryData) {\n retryData = updateRetryData(policy, retryData, err);\n function shouldPolicyRetry(_response, error) {\n if (error &&\n error.code &&\n (error.code === \"ETIMEDOUT\" ||\n error.code === \"ESOCKETTIMEDOUT\" ||\n error.code === \"ECONNREFUSED\" ||\n error.code === \"ECONNRESET\" ||\n error.code === \"ENOENT\")) {\n return true;\n }\n return false;\n }\n if (shouldRetry(policy.retryCount, shouldPolicyRetry, retryData, operationResponse, err)) {\n // If previous operation ended with an error and the policy allows a retry, do that\n try {\n await delay(retryData.retryInterval);\n return policy._nextPolicy.sendRequest(request.clone());\n }\n catch (nestedErr) {\n return retry(policy, request, operationResponse, nestedErr, retryData);\n }\n }\n else {\n if (err) {\n // If the operation failed in the end, return all errors instead of just the last one\n return Promise.reject(retryData.error);\n }\n return operationResponse;\n }\n}\n//# sourceMappingURL=systemErrorRetryPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Maximum number of retries for the throttling retry policy\n */\nexport const DEFAULT_CLIENT_MAX_RETRY_COUNT = 3;\n//# sourceMappingURL=throttlingRetryStrategy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { BaseRequestPolicy, } from \"./requestPolicy\";\nimport { AbortError } from \"@azure/abort-controller\";\nimport { Constants } from \"../util/constants\";\nimport { DEFAULT_CLIENT_MAX_RETRY_COUNT } from \"../util/throttlingRetryStrategy\";\nimport { delay } from \"@azure/core-util\";\nconst StatusCodes = Constants.HttpConstants.StatusCodes;\n/**\n * Creates a policy that re-sends the request if the response indicates the request failed because of throttling reasons.\n * For example, if the response contains a `Retry-After` header, it will retry sending the request based on the value of that header.\n *\n * To learn more, please refer to\n * https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-request-limits,\n * https://docs.microsoft.com/en-us/azure/azure-subscription-service-limits and\n * https://docs.microsoft.com/en-us/azure/virtual-machines/troubleshooting/troubleshooting-throttling-errors\n * @returns\n */\nexport function throttlingRetryPolicy() {\n return {\n create: (nextPolicy, options) => {\n return new ThrottlingRetryPolicy(nextPolicy, options);\n },\n };\n}\nconst StandardAbortMessage = \"The operation was aborted.\";\n/**\n * Creates a policy that re-sends the request if the response indicates the request failed because of throttling reasons.\n * For example, if the response contains a `Retry-After` header, it will retry sending the request based on the value of that header.\n *\n * To learn more, please refer to\n * https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-request-limits,\n * https://docs.microsoft.com/en-us/azure/azure-subscription-service-limits and\n * https://docs.microsoft.com/en-us/azure/virtual-machines/troubleshooting/troubleshooting-throttling-errors\n */\nexport class ThrottlingRetryPolicy extends BaseRequestPolicy {\n constructor(nextPolicy, options, _handleResponse) {\n super(nextPolicy, options);\n this.numberOfRetries = 0;\n this._handleResponse = _handleResponse || this._defaultResponseHandler;\n }\n async sendRequest(httpRequest) {\n const response = await this._nextPolicy.sendRequest(httpRequest.clone());\n if (response.status !== StatusCodes.TooManyRequests &&\n response.status !== StatusCodes.ServiceUnavailable) {\n return response;\n }\n else {\n return this._handleResponse(httpRequest, response);\n }\n }\n async _defaultResponseHandler(httpRequest, httpResponse) {\n var _a;\n const retryAfterHeader = httpResponse.headers.get(Constants.HeaderConstants.RETRY_AFTER);\n if (retryAfterHeader) {\n const delayInMs = ThrottlingRetryPolicy.parseRetryAfterHeader(retryAfterHeader);\n if (delayInMs) {\n this.numberOfRetries += 1;\n await delay(delayInMs, {\n abortSignal: httpRequest.abortSignal,\n abortErrorMsg: StandardAbortMessage,\n });\n if ((_a = httpRequest.abortSignal) === null || _a === void 0 ? void 0 : _a.aborted) {\n throw new AbortError(StandardAbortMessage);\n }\n if (this.numberOfRetries < DEFAULT_CLIENT_MAX_RETRY_COUNT) {\n return this.sendRequest(httpRequest);\n }\n else {\n return this._nextPolicy.sendRequest(httpRequest);\n }\n }\n }\n return httpResponse;\n }\n static parseRetryAfterHeader(headerValue) {\n const retryAfterInSeconds = Number(headerValue);\n if (Number.isNaN(retryAfterInSeconds)) {\n return ThrottlingRetryPolicy.parseDateRetryAfterHeader(headerValue);\n }\n else {\n return retryAfterInSeconds * 1000;\n }\n }\n static parseDateRetryAfterHeader(headerValue) {\n try {\n const now = Date.now();\n const date = Date.parse(headerValue);\n const diff = date - now;\n return Number.isNaN(diff) ? undefined : diff;\n }\n catch (error) {\n return undefined;\n }\n }\n}\n//# sourceMappingURL=throttlingRetryPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport * as utils from \"./util/utils\";\nimport { MapperType } from \"./serializer\";\nimport { DefaultDeserializationOptions, deserializationPolicy, } from \"./policies/deserializationPolicy\";\nimport { DefaultKeepAliveOptions, keepAlivePolicy } from \"./policies/keepAlivePolicy\";\nimport { DefaultRedirectOptions, redirectPolicy } from \"./policies/redirectPolicy\";\nimport { DefaultRetryOptions, exponentialRetryPolicy } from \"./policies/exponentialRetryPolicy\";\nimport { logPolicy } from \"./policies/logPolicy\";\nimport { getPathStringFromParameter, getPathStringFromParameterPath, } from \"./operationParameter\";\nimport { getStreamResponseStatusCodes } from \"./operationSpec\";\nimport { WebResource, isWebResourceLike, } from \"./webResource\";\nimport { RequestPolicyOptions, } from \"./policies/requestPolicy\";\nimport { XML_ATTRKEY, XML_CHARKEY } from \"./util/serializer.common\";\nimport { isNode } from \"@azure/core-util\";\nimport { isTokenCredential } from \"@azure/core-auth\";\nimport { getDefaultUserAgentHeaderName, getDefaultUserAgentValue, userAgentPolicy, } from \"./policies/userAgentPolicy\";\nimport { QueryCollectionFormat } from \"./queryCollectionFormat\";\nimport { URLBuilder } from \"./url\";\nimport { bearerTokenAuthenticationPolicy } from \"./policies/bearerTokenAuthenticationPolicy\";\nimport { disableResponseDecompressionPolicy } from \"./policies/disableResponseDecompressionPolicy\";\nimport { generateClientRequestIdPolicy } from \"./policies/generateClientRequestIdPolicy\";\nimport { getCachedDefaultHttpClient } from \"./httpClientCache\";\nimport { logger } from \"./log\";\nimport { ndJsonPolicy } from \"./policies/ndJsonPolicy\";\nimport { proxyPolicy } from \"./policies/proxyPolicy\";\nimport { rpRegistrationPolicy } from \"./policies/rpRegistrationPolicy\";\nimport { signingPolicy } from \"./policies/signingPolicy\";\nimport { stringifyXML } from \"./util/xml\";\nimport { systemErrorRetryPolicy } from \"./policies/systemErrorRetryPolicy\";\nimport { throttlingRetryPolicy } from \"./policies/throttlingRetryPolicy\";\nimport { tracingPolicy } from \"./policies/tracingPolicy\";\n/**\n * ServiceClient sends service requests and receives responses.\n */\nexport class ServiceClient {\n /**\n * The ServiceClient constructor\n * @param credentials - The credentials used for authentication with the service.\n * @param options - The service client options that govern the behavior of the client.\n */\n constructor(credentials, \n /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options */\n options) {\n if (!options) {\n options = {};\n }\n this._withCredentials = options.withCredentials || false;\n this._httpClient = options.httpClient || getCachedDefaultHttpClient();\n this._requestPolicyOptions = new RequestPolicyOptions(options.httpPipelineLogger);\n let requestPolicyFactories;\n if (Array.isArray(options.requestPolicyFactories)) {\n logger.info(\"ServiceClient: using custom request policies\");\n requestPolicyFactories = options.requestPolicyFactories;\n }\n else {\n let authPolicyFactory = undefined;\n if (isTokenCredential(credentials)) {\n logger.info(\"ServiceClient: creating bearer token authentication policy from provided credentials\");\n // Create a wrapped RequestPolicyFactory here so that we can provide the\n // correct scope to the BearerTokenAuthenticationPolicy at the first time\n // one is requested. This is needed because generated ServiceClient\n // implementations do not set baseUri until after ServiceClient's constructor\n // is finished, leaving baseUri empty at the time when it is needed to\n // build the correct scope name.\n const wrappedPolicyFactory = () => {\n let bearerTokenPolicyFactory = undefined;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const serviceClient = this;\n const serviceClientOptions = options;\n return {\n create(nextPolicy, createOptions) {\n const credentialScopes = getCredentialScopes(serviceClientOptions, serviceClient.baseUri);\n if (!credentialScopes) {\n throw new Error(`When using credential, the ServiceClient must contain a baseUri or a credentialScopes in ServiceClientOptions. Unable to create a bearerTokenAuthenticationPolicy`);\n }\n if (bearerTokenPolicyFactory === undefined || bearerTokenPolicyFactory === null) {\n bearerTokenPolicyFactory = bearerTokenAuthenticationPolicy(credentials, credentialScopes);\n }\n return bearerTokenPolicyFactory.create(nextPolicy, createOptions);\n },\n };\n };\n authPolicyFactory = wrappedPolicyFactory();\n }\n else if (credentials && typeof credentials.signRequest === \"function\") {\n logger.info(\"ServiceClient: creating signing policy from provided credentials\");\n authPolicyFactory = signingPolicy(credentials);\n }\n else if (credentials !== undefined && credentials !== null) {\n throw new Error(\"The credentials argument must implement the TokenCredential interface\");\n }\n logger.info(\"ServiceClient: using default request policies\");\n requestPolicyFactories = createDefaultRequestPolicyFactories(authPolicyFactory, options);\n if (options.requestPolicyFactories) {\n // options.requestPolicyFactories can also be a function that manipulates\n // the default requestPolicyFactories array\n const newRequestPolicyFactories = options.requestPolicyFactories(requestPolicyFactories);\n if (newRequestPolicyFactories) {\n requestPolicyFactories = newRequestPolicyFactories;\n }\n }\n }\n this._requestPolicyFactories = requestPolicyFactories;\n }\n /**\n * Send the provided httpRequest.\n */\n sendRequest(options) {\n if (options === null || options === undefined || typeof options !== \"object\") {\n throw new Error(\"options cannot be null or undefined and it must be of type object.\");\n }\n let httpRequest;\n try {\n if (isWebResourceLike(options)) {\n options.validateRequestProperties();\n httpRequest = options;\n }\n else {\n httpRequest = new WebResource();\n httpRequest = httpRequest.prepare(options);\n }\n }\n catch (error) {\n return Promise.reject(error);\n }\n let httpPipeline = this._httpClient;\n if (this._requestPolicyFactories && this._requestPolicyFactories.length > 0) {\n for (let i = this._requestPolicyFactories.length - 1; i >= 0; --i) {\n httpPipeline = this._requestPolicyFactories[i].create(httpPipeline, this._requestPolicyOptions);\n }\n }\n return httpPipeline.sendRequest(httpRequest);\n }\n /**\n * Send an HTTP request that is populated using the provided OperationSpec.\n * @param operationArguments - The arguments that the HTTP request's templated values will be populated from.\n * @param operationSpec - The OperationSpec to use to populate the httpRequest.\n * @param callback - The callback to call when the response is received.\n */\n async sendOperationRequest(operationArguments, operationSpec, callback) {\n var _a;\n if (typeof operationArguments.options === \"function\") {\n callback = operationArguments.options;\n operationArguments.options = undefined;\n }\n const serializerOptions = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.serializerOptions;\n const httpRequest = new WebResource();\n let result;\n try {\n const baseUri = operationSpec.baseUrl || this.baseUri;\n if (!baseUri) {\n throw new Error(\"If operationSpec.baseUrl is not specified, then the ServiceClient must have a baseUri string property that contains the base URL to use.\");\n }\n httpRequest.method = operationSpec.httpMethod;\n httpRequest.operationSpec = operationSpec;\n const requestUrl = URLBuilder.parse(baseUri);\n if (operationSpec.path) {\n requestUrl.appendPath(operationSpec.path);\n }\n if (operationSpec.urlParameters && operationSpec.urlParameters.length > 0) {\n for (const urlParameter of operationSpec.urlParameters) {\n let urlParameterValue = getOperationArgumentValueFromParameter(this, operationArguments, urlParameter, operationSpec.serializer);\n urlParameterValue = operationSpec.serializer.serialize(urlParameter.mapper, urlParameterValue, getPathStringFromParameter(urlParameter), serializerOptions);\n if (!urlParameter.skipEncoding) {\n urlParameterValue = encodeURIComponent(urlParameterValue);\n }\n requestUrl.replaceAll(`{${urlParameter.mapper.serializedName || getPathStringFromParameter(urlParameter)}}`, urlParameterValue);\n }\n }\n if (operationSpec.queryParameters && operationSpec.queryParameters.length > 0) {\n for (const queryParameter of operationSpec.queryParameters) {\n let queryParameterValue = getOperationArgumentValueFromParameter(this, operationArguments, queryParameter, operationSpec.serializer);\n if (queryParameterValue !== undefined && queryParameterValue !== null) {\n queryParameterValue = operationSpec.serializer.serialize(queryParameter.mapper, queryParameterValue, getPathStringFromParameter(queryParameter), serializerOptions);\n if (queryParameter.collectionFormat !== undefined &&\n queryParameter.collectionFormat !== null) {\n if (queryParameter.collectionFormat === QueryCollectionFormat.Multi) {\n if (queryParameterValue.length === 0) {\n // The collection is empty, no need to try serializing the current queryParam\n continue;\n }\n else {\n for (const index in queryParameterValue) {\n const item = queryParameterValue[index];\n queryParameterValue[index] =\n item === undefined || item === null ? \"\" : item.toString();\n }\n }\n }\n else if (queryParameter.collectionFormat === QueryCollectionFormat.Ssv ||\n queryParameter.collectionFormat === QueryCollectionFormat.Tsv) {\n queryParameterValue = queryParameterValue.join(queryParameter.collectionFormat);\n }\n }\n if (!queryParameter.skipEncoding) {\n if (Array.isArray(queryParameterValue)) {\n for (const index in queryParameterValue) {\n if (queryParameterValue[index] !== undefined &&\n queryParameterValue[index] !== null) {\n queryParameterValue[index] = encodeURIComponent(queryParameterValue[index]);\n }\n }\n }\n else {\n queryParameterValue = encodeURIComponent(queryParameterValue);\n }\n }\n if (queryParameter.collectionFormat !== undefined &&\n queryParameter.collectionFormat !== null &&\n queryParameter.collectionFormat !== QueryCollectionFormat.Multi &&\n queryParameter.collectionFormat !== QueryCollectionFormat.Ssv &&\n queryParameter.collectionFormat !== QueryCollectionFormat.Tsv) {\n queryParameterValue = queryParameterValue.join(queryParameter.collectionFormat);\n }\n requestUrl.setQueryParameter(queryParameter.mapper.serializedName || getPathStringFromParameter(queryParameter), queryParameterValue);\n }\n }\n }\n httpRequest.url = requestUrl.toString();\n const contentType = operationSpec.contentType || this.requestContentType;\n if (contentType && operationSpec.requestBody) {\n httpRequest.headers.set(\"Content-Type\", contentType);\n }\n if (operationSpec.headerParameters) {\n for (const headerParameter of operationSpec.headerParameters) {\n let headerValue = getOperationArgumentValueFromParameter(this, operationArguments, headerParameter, operationSpec.serializer);\n if (headerValue !== undefined && headerValue !== null) {\n headerValue = operationSpec.serializer.serialize(headerParameter.mapper, headerValue, getPathStringFromParameter(headerParameter), serializerOptions);\n const headerCollectionPrefix = headerParameter.mapper\n .headerCollectionPrefix;\n if (headerCollectionPrefix) {\n for (const key of Object.keys(headerValue)) {\n httpRequest.headers.set(headerCollectionPrefix + key, headerValue[key]);\n }\n }\n else {\n httpRequest.headers.set(headerParameter.mapper.serializedName ||\n getPathStringFromParameter(headerParameter), headerValue);\n }\n }\n }\n }\n const options = operationArguments.options;\n if (options) {\n if (options.customHeaders) {\n for (const customHeaderName in options.customHeaders) {\n httpRequest.headers.set(customHeaderName, options.customHeaders[customHeaderName]);\n }\n }\n if (options.abortSignal) {\n httpRequest.abortSignal = options.abortSignal;\n }\n if (options.timeout) {\n httpRequest.timeout = options.timeout;\n }\n if (options.onUploadProgress) {\n httpRequest.onUploadProgress = options.onUploadProgress;\n }\n if (options.onDownloadProgress) {\n httpRequest.onDownloadProgress = options.onDownloadProgress;\n }\n if (options.spanOptions) {\n // By passing spanOptions if they exist at runtime, we're backwards compatible with @azure/core-tracing@preview.13 and earlier.\n httpRequest.spanOptions = options.spanOptions;\n }\n if (options.tracingContext) {\n httpRequest.tracingContext = options.tracingContext;\n }\n if (options.shouldDeserialize !== undefined && options.shouldDeserialize !== null) {\n httpRequest.shouldDeserialize = options.shouldDeserialize;\n }\n }\n httpRequest.withCredentials = this._withCredentials;\n serializeRequestBody(this, httpRequest, operationArguments, operationSpec);\n if (httpRequest.streamResponseStatusCodes === undefined) {\n httpRequest.streamResponseStatusCodes = getStreamResponseStatusCodes(operationSpec);\n }\n let rawResponse;\n let sendRequestError;\n try {\n rawResponse = await this.sendRequest(httpRequest);\n }\n catch (error) {\n sendRequestError = error;\n }\n if (sendRequestError) {\n if (sendRequestError.response) {\n sendRequestError.details = flattenResponse(sendRequestError.response, operationSpec.responses[sendRequestError.statusCode] ||\n operationSpec.responses[\"default\"]);\n }\n result = Promise.reject(sendRequestError);\n }\n else {\n result = Promise.resolve(flattenResponse(rawResponse, operationSpec.responses[rawResponse.status]));\n }\n }\n catch (error) {\n result = Promise.reject(error);\n }\n const cb = callback;\n if (cb) {\n result\n .then((res) => cb(null, res._response.parsedBody, res._response.request, res._response))\n .catch((err) => cb(err));\n }\n return result;\n }\n}\nexport function serializeRequestBody(serviceClient, httpRequest, operationArguments, operationSpec) {\n var _a, _b, _c, _d, _e, _f;\n const serializerOptions = (_b = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.serializerOptions) !== null && _b !== void 0 ? _b : {};\n const updatedOptions = {\n rootName: (_c = serializerOptions.rootName) !== null && _c !== void 0 ? _c : \"\",\n includeRoot: (_d = serializerOptions.includeRoot) !== null && _d !== void 0 ? _d : false,\n xmlCharKey: (_e = serializerOptions.xmlCharKey) !== null && _e !== void 0 ? _e : XML_CHARKEY,\n };\n const xmlCharKey = serializerOptions.xmlCharKey;\n if (operationSpec.requestBody && operationSpec.requestBody.mapper) {\n httpRequest.body = getOperationArgumentValueFromParameter(serviceClient, operationArguments, operationSpec.requestBody, operationSpec.serializer);\n const bodyMapper = operationSpec.requestBody.mapper;\n const { required, xmlName, xmlElementName, serializedName, xmlNamespace, xmlNamespacePrefix } = bodyMapper;\n const typeName = bodyMapper.type.name;\n try {\n if ((httpRequest.body !== undefined && httpRequest.body !== null) || required) {\n const requestBodyParameterPathString = getPathStringFromParameter(operationSpec.requestBody);\n httpRequest.body = operationSpec.serializer.serialize(bodyMapper, httpRequest.body, requestBodyParameterPathString, updatedOptions);\n const isStream = typeName === MapperType.Stream;\n if (operationSpec.isXML) {\n const xmlnsKey = xmlNamespacePrefix ? `xmlns:${xmlNamespacePrefix}` : \"xmlns\";\n const value = getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, httpRequest.body, updatedOptions);\n if (typeName === MapperType.Sequence) {\n httpRequest.body = stringifyXML(utils.prepareXMLRootList(value, xmlElementName || xmlName || serializedName, xmlnsKey, xmlNamespace), {\n rootName: xmlName || serializedName,\n xmlCharKey,\n });\n }\n else if (!isStream) {\n httpRequest.body = stringifyXML(value, {\n rootName: xmlName || serializedName,\n xmlCharKey,\n });\n }\n }\n else if (typeName === MapperType.String &&\n (((_f = operationSpec.contentType) === null || _f === void 0 ? void 0 : _f.match(\"text/plain\")) || operationSpec.mediaType === \"text\")) {\n // the String serializer has validated that request body is a string\n // so just send the string.\n return;\n }\n else if (!isStream) {\n httpRequest.body = JSON.stringify(httpRequest.body);\n }\n }\n }\n catch (error) {\n throw new Error(`Error \"${error.message}\" occurred in serializing the payload - ${JSON.stringify(serializedName, undefined, \" \")}.`);\n }\n }\n else if (operationSpec.formDataParameters && operationSpec.formDataParameters.length > 0) {\n httpRequest.formData = {};\n for (const formDataParameter of operationSpec.formDataParameters) {\n const formDataParameterValue = getOperationArgumentValueFromParameter(serviceClient, operationArguments, formDataParameter, operationSpec.serializer);\n if (formDataParameterValue !== undefined && formDataParameterValue !== null) {\n const formDataParameterPropertyName = formDataParameter.mapper.serializedName || getPathStringFromParameter(formDataParameter);\n httpRequest.formData[formDataParameterPropertyName] = operationSpec.serializer.serialize(formDataParameter.mapper, formDataParameterValue, getPathStringFromParameter(formDataParameter), updatedOptions);\n }\n }\n }\n}\n/**\n * Adds an xml namespace to the xml serialized object if needed, otherwise it just returns the value itself\n */\nfunction getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, serializedValue, options) {\n // Composite and Sequence schemas already got their root namespace set during serialization\n // We just need to add xmlns to the other schema types\n if (xmlNamespace && ![\"Composite\", \"Sequence\", \"Dictionary\"].includes(typeName)) {\n const result = {};\n result[options.xmlCharKey] = serializedValue;\n result[XML_ATTRKEY] = { [xmlnsKey]: xmlNamespace };\n return result;\n }\n return serializedValue;\n}\nfunction getValueOrFunctionResult(value, defaultValueCreator) {\n let result;\n if (typeof value === \"string\") {\n result = value;\n }\n else {\n result = defaultValueCreator();\n if (typeof value === \"function\") {\n result = value(result);\n }\n }\n return result;\n}\nfunction createDefaultRequestPolicyFactories(authPolicyFactory, options) {\n const factories = [];\n if (options.generateClientRequestIdHeader) {\n factories.push(generateClientRequestIdPolicy(options.clientRequestIdHeaderName));\n }\n if (authPolicyFactory) {\n factories.push(authPolicyFactory);\n }\n const userAgentHeaderName = getValueOrFunctionResult(options.userAgentHeaderName, getDefaultUserAgentHeaderName);\n const userAgentHeaderValue = getValueOrFunctionResult(options.userAgent, getDefaultUserAgentValue);\n if (userAgentHeaderName && userAgentHeaderValue) {\n factories.push(userAgentPolicy({ key: userAgentHeaderName, value: userAgentHeaderValue }));\n }\n factories.push(redirectPolicy());\n factories.push(rpRegistrationPolicy(options.rpRegistrationRetryTimeout));\n if (!options.noRetryPolicy) {\n factories.push(exponentialRetryPolicy());\n factories.push(systemErrorRetryPolicy());\n factories.push(throttlingRetryPolicy());\n }\n factories.push(deserializationPolicy(options.deserializationContentTypes));\n if (isNode) {\n factories.push(proxyPolicy(options.proxySettings));\n }\n factories.push(logPolicy({ logger: logger.info }));\n return factories;\n}\n/**\n * Creates an HTTP pipeline based on the given options.\n * @param pipelineOptions - Defines options that are used to configure policies in the HTTP pipeline for an SDK client.\n * @param authPolicyFactory - An optional authentication policy factory to use for signing requests.\n * @returns A set of options that can be passed to create a new {@link ServiceClient}.\n */\nexport function createPipelineFromOptions(pipelineOptions, authPolicyFactory) {\n const requestPolicyFactories = [];\n if (pipelineOptions.sendStreamingJson) {\n requestPolicyFactories.push(ndJsonPolicy());\n }\n let userAgentValue = undefined;\n if (pipelineOptions.userAgentOptions && pipelineOptions.userAgentOptions.userAgentPrefix) {\n const userAgentInfo = [];\n userAgentInfo.push(pipelineOptions.userAgentOptions.userAgentPrefix);\n // Add the default user agent value if it isn't already specified\n // by the userAgentPrefix option.\n const defaultUserAgentInfo = getDefaultUserAgentValue();\n if (userAgentInfo.indexOf(defaultUserAgentInfo) === -1) {\n userAgentInfo.push(defaultUserAgentInfo);\n }\n userAgentValue = userAgentInfo.join(\" \");\n }\n const keepAliveOptions = Object.assign(Object.assign({}, DefaultKeepAliveOptions), pipelineOptions.keepAliveOptions);\n const retryOptions = Object.assign(Object.assign({}, DefaultRetryOptions), pipelineOptions.retryOptions);\n const redirectOptions = Object.assign(Object.assign({}, DefaultRedirectOptions), pipelineOptions.redirectOptions);\n if (isNode) {\n requestPolicyFactories.push(proxyPolicy(pipelineOptions.proxyOptions));\n }\n const deserializationOptions = Object.assign(Object.assign({}, DefaultDeserializationOptions), pipelineOptions.deserializationOptions);\n const loggingOptions = Object.assign({}, pipelineOptions.loggingOptions);\n requestPolicyFactories.push(tracingPolicy({ userAgent: userAgentValue }), keepAlivePolicy(keepAliveOptions), userAgentPolicy({ value: userAgentValue }), generateClientRequestIdPolicy(), deserializationPolicy(deserializationOptions.expectedContentTypes), throttlingRetryPolicy(), systemErrorRetryPolicy(), exponentialRetryPolicy(retryOptions.maxRetries, retryOptions.retryDelayInMs, retryOptions.maxRetryDelayInMs));\n if (redirectOptions.handleRedirects) {\n requestPolicyFactories.push(redirectPolicy(redirectOptions.maxRetries));\n }\n if (authPolicyFactory) {\n requestPolicyFactories.push(authPolicyFactory);\n }\n requestPolicyFactories.push(logPolicy(loggingOptions));\n if (isNode && pipelineOptions.decompressResponse === false) {\n requestPolicyFactories.push(disableResponseDecompressionPolicy());\n }\n return {\n httpClient: pipelineOptions.httpClient,\n requestPolicyFactories,\n };\n}\n/**\n * Get the property parent for the property at the provided path when starting with the provided\n * parent object.\n */\nexport function getPropertyParent(parent, propertyPath) {\n if (parent && propertyPath) {\n const propertyPathLength = propertyPath.length;\n for (let i = 0; i < propertyPathLength - 1; ++i) {\n const propertyName = propertyPath[i];\n if (!parent[propertyName]) {\n parent[propertyName] = {};\n }\n parent = parent[propertyName];\n }\n }\n return parent;\n}\nfunction getOperationArgumentValueFromParameter(serviceClient, operationArguments, parameter, serializer) {\n return getOperationArgumentValueFromParameterPath(serviceClient, operationArguments, parameter.parameterPath, parameter.mapper, serializer);\n}\nexport function getOperationArgumentValueFromParameterPath(serviceClient, operationArguments, parameterPath, parameterMapper, serializer) {\n var _a;\n let value;\n if (typeof parameterPath === \"string\") {\n parameterPath = [parameterPath];\n }\n const serializerOptions = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.serializerOptions;\n if (Array.isArray(parameterPath)) {\n if (parameterPath.length > 0) {\n if (parameterMapper.isConstant) {\n value = parameterMapper.defaultValue;\n }\n else {\n let propertySearchResult = getPropertyFromParameterPath(operationArguments, parameterPath);\n if (!propertySearchResult.propertyFound) {\n propertySearchResult = getPropertyFromParameterPath(serviceClient, parameterPath);\n }\n let useDefaultValue = false;\n if (!propertySearchResult.propertyFound) {\n useDefaultValue =\n parameterMapper.required ||\n (parameterPath[0] === \"options\" && parameterPath.length === 2);\n }\n value = useDefaultValue ? parameterMapper.defaultValue : propertySearchResult.propertyValue;\n }\n // Serialize just for validation purposes.\n const parameterPathString = getPathStringFromParameterPath(parameterPath, parameterMapper);\n serializer.serialize(parameterMapper, value, parameterPathString, serializerOptions);\n }\n }\n else {\n if (parameterMapper.required) {\n value = {};\n }\n for (const propertyName in parameterPath) {\n const propertyMapper = parameterMapper.type.modelProperties[propertyName];\n const propertyPath = parameterPath[propertyName];\n const propertyValue = getOperationArgumentValueFromParameterPath(serviceClient, operationArguments, propertyPath, propertyMapper, serializer);\n // Serialize just for validation purposes.\n const propertyPathString = getPathStringFromParameterPath(propertyPath, propertyMapper);\n serializer.serialize(propertyMapper, propertyValue, propertyPathString, serializerOptions);\n if (propertyValue !== undefined && propertyValue !== null) {\n if (!value) {\n value = {};\n }\n value[propertyName] = propertyValue;\n }\n }\n }\n return value;\n}\nfunction getPropertyFromParameterPath(parent, parameterPath) {\n const result = { propertyFound: false };\n let i = 0;\n for (; i < parameterPath.length; ++i) {\n const parameterPathPart = parameterPath[i];\n // Make sure to check inherited properties too, so don't use hasOwnProperty().\n if (parent !== undefined && parent !== null && parameterPathPart in parent) {\n parent = parent[parameterPathPart];\n }\n else {\n break;\n }\n }\n if (i === parameterPath.length) {\n result.propertyValue = parent;\n result.propertyFound = true;\n }\n return result;\n}\n/**\n * Parses an {@link HttpOperationResponse} into a normalized HTTP response object ({@link RestResponse}).\n * @param _response - Wrapper object for http response.\n * @param responseSpec - Mappers for how to parse the response properties.\n * @returns - A normalized response object.\n */\nexport function flattenResponse(_response, responseSpec) {\n const parsedHeaders = _response.parsedHeaders;\n const bodyMapper = responseSpec && responseSpec.bodyMapper;\n const addOperationResponse = (obj) => {\n return Object.defineProperty(obj, \"_response\", {\n value: _response,\n });\n };\n if (bodyMapper) {\n const typeName = bodyMapper.type.name;\n if (typeName === \"Stream\") {\n return addOperationResponse(Object.assign(Object.assign({}, parsedHeaders), { blobBody: _response.blobBody, readableStreamBody: _response.readableStreamBody }));\n }\n const modelProperties = (typeName === \"Composite\" && bodyMapper.type.modelProperties) || {};\n const isPageableResponse = Object.keys(modelProperties).some((k) => modelProperties[k].serializedName === \"\");\n if (typeName === \"Sequence\" || isPageableResponse) {\n const arrayResponse = [...(_response.parsedBody || [])];\n for (const key of Object.keys(modelProperties)) {\n if (modelProperties[key].serializedName) {\n arrayResponse[key] = _response.parsedBody[key];\n }\n }\n if (parsedHeaders) {\n for (const key of Object.keys(parsedHeaders)) {\n arrayResponse[key] = parsedHeaders[key];\n }\n }\n addOperationResponse(arrayResponse);\n return arrayResponse;\n }\n if (typeName === \"Composite\" || typeName === \"Dictionary\") {\n return addOperationResponse(Object.assign(Object.assign({}, parsedHeaders), _response.parsedBody));\n }\n }\n if (bodyMapper ||\n _response.request.method === \"HEAD\" ||\n utils.isPrimitiveType(_response.parsedBody)) {\n // primitive body types and HEAD booleans\n return addOperationResponse(Object.assign(Object.assign({}, parsedHeaders), { body: _response.parsedBody }));\n }\n return addOperationResponse(Object.assign(Object.assign({}, parsedHeaders), _response.parsedBody));\n}\nfunction getCredentialScopes(options, baseUri) {\n if (options === null || options === void 0 ? void 0 : options.credentialScopes) {\n return options.credentialScopes;\n }\n if (baseUri) {\n return `${baseUri}/.default`;\n }\n return undefined;\n}\n//# sourceMappingURL=serviceClient.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { MapperType } from \"./serializer\";\n/**\n * Gets the list of status codes for streaming responses.\n * @internal\n */\nexport function getStreamResponseStatusCodes(operationSpec) {\n const result = new Set();\n for (const statusCode in operationSpec.responses) {\n const operationResponse = operationSpec.responses[statusCode];\n if (operationResponse.bodyMapper &&\n operationResponse.bodyMapper.type.name === MapperType.Stream) {\n result.add(Number(statusCode));\n }\n }\n return result;\n}\n//# sourceMappingURL=operationSpec.js.map","/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nimport * as coreHttp from \"@azure/core-http\";\nconst packageName = \"azure-storage-blob\";\nconst packageVersion = \"12.17.0\";\nexport class StorageClientContext extends coreHttp.ServiceClient {\n /**\n * Initializes a new instance of the StorageClientContext class.\n * @param url The URL of the service account, container, or blob that is the target of the desired\n * operation.\n * @param options The parameter options\n */\n constructor(url, options) {\n if (url === undefined) {\n throw new Error(\"'url' cannot be null\");\n }\n // Initializing default values for options\n if (!options) {\n options = {};\n }\n if (!options.userAgent) {\n const defaultUserAgent = coreHttp.getDefaultUserAgentValue();\n options.userAgent = `${packageName}/${packageVersion} ${defaultUserAgent}`;\n }\n super(undefined, options);\n this.requestContentType = \"application/json; charset=utf-8\";\n this.baseUri = options.endpoint || \"{url}\";\n // Parameter assignments\n this.url = url;\n // Assigning values to Constant parameters\n this.version = options.version || \"2023-11-03\";\n }\n}\n//# sourceMappingURL=storageClientContext.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createClientLogger } from \"@azure/logger\";\n/**\n * The `@azure/logger` configuration for this package.\n */\nexport const logger = createClientLogger(\"storage-blob\");\n//# sourceMappingURL=log.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { EncryptionAlgorithmAES25 } from \"./utils/constants\";\n/**\n * Represents the access tier on a blob.\n * For detailed information about block blob level tiering see {@link https://docs.microsoft.com/azure/storage/blobs/storage-blob-storage-tiers|Hot, cool and archive storage tiers.}\n */\nexport var BlockBlobTier;\n(function (BlockBlobTier) {\n /**\n * Optimized for storing data that is accessed frequently.\n */\n BlockBlobTier[\"Hot\"] = \"Hot\";\n /**\n * Optimized for storing data that is infrequently accessed and stored for at least 30 days.\n */\n BlockBlobTier[\"Cool\"] = \"Cool\";\n /**\n * Optimized for storing data that is rarely accessed.\n */\n BlockBlobTier[\"Cold\"] = \"Cold\";\n /**\n * Optimized for storing data that is rarely accessed and stored for at least 180 days\n * with flexible latency requirements (on the order of hours).\n */\n BlockBlobTier[\"Archive\"] = \"Archive\";\n})(BlockBlobTier || (BlockBlobTier = {}));\n/**\n * Specifies the page blob tier to set the blob to. This is only applicable to page blobs on premium storage accounts.\n * Please see {@link https://docs.microsoft.com/azure/storage/storage-premium-storage#scalability-and-performance-targets|here}\n * for detailed information on the corresponding IOPS and throughput per PageBlobTier.\n */\nexport var PremiumPageBlobTier;\n(function (PremiumPageBlobTier) {\n /**\n * P4 Tier.\n */\n PremiumPageBlobTier[\"P4\"] = \"P4\";\n /**\n * P6 Tier.\n */\n PremiumPageBlobTier[\"P6\"] = \"P6\";\n /**\n * P10 Tier.\n */\n PremiumPageBlobTier[\"P10\"] = \"P10\";\n /**\n * P15 Tier.\n */\n PremiumPageBlobTier[\"P15\"] = \"P15\";\n /**\n * P20 Tier.\n */\n PremiumPageBlobTier[\"P20\"] = \"P20\";\n /**\n * P30 Tier.\n */\n PremiumPageBlobTier[\"P30\"] = \"P30\";\n /**\n * P40 Tier.\n */\n PremiumPageBlobTier[\"P40\"] = \"P40\";\n /**\n * P50 Tier.\n */\n PremiumPageBlobTier[\"P50\"] = \"P50\";\n /**\n * P60 Tier.\n */\n PremiumPageBlobTier[\"P60\"] = \"P60\";\n /**\n * P70 Tier.\n */\n PremiumPageBlobTier[\"P70\"] = \"P70\";\n /**\n * P80 Tier.\n */\n PremiumPageBlobTier[\"P80\"] = \"P80\";\n})(PremiumPageBlobTier || (PremiumPageBlobTier = {}));\nexport function toAccessTier(tier) {\n if (tier === undefined) {\n return undefined;\n }\n return tier; // No more check if string is a valid AccessTier, and left this to underlay logic to decide(service).\n}\nexport function ensureCpkIfSpecified(cpk, isHttps) {\n if (cpk && !isHttps) {\n throw new RangeError(\"Customer-provided encryption key must be used over HTTPS.\");\n }\n if (cpk && !cpk.encryptionAlgorithm) {\n cpk.encryptionAlgorithm = EncryptionAlgorithmAES25;\n }\n}\n/**\n * Defines the known cloud audiences for Storage.\n */\nexport var StorageBlobAudience;\n(function (StorageBlobAudience) {\n /**\n * The OAuth scope to use to retrieve an AAD token for Azure Storage.\n */\n StorageBlobAudience[\"StorageOAuthScopes\"] = \"https://storage.azure.com/.default\";\n /**\n * The OAuth scope to use to retrieve an AAD token for Azure Disk.\n */\n StorageBlobAudience[\"DiskComputeOAuthScopes\"] = \"https://disk.compute.azure.com/.default\";\n})(StorageBlobAudience || (StorageBlobAudience = {}));\nexport function getBlobServiceAccountAudience(storageAccountName) {\n return `https://${storageAccountName}.blob.core.windows.net/.default`;\n}\n//# sourceMappingURL=models.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { CredentialPolicy } from \"./CredentialPolicy\";\n/**\n * AnonymousCredentialPolicy is used with HTTP(S) requests that read public resources\n * or for use with Shared Access Signatures (SAS).\n */\nexport class AnonymousCredentialPolicy extends CredentialPolicy {\n /**\n * Creates an instance of AnonymousCredentialPolicy.\n * @param nextPolicy -\n * @param options -\n */\n // The base class has a protected constructor. Adding a public one to enable constructing of this class.\n /* eslint-disable-next-line @typescript-eslint/no-useless-constructor*/\n constructor(nextPolicy, options) {\n super(nextPolicy, options);\n }\n}\n//# sourceMappingURL=AnonymousCredentialPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { BaseRequestPolicy } from \"@azure/core-http\";\n/**\n * Credential policy used to sign HTTP(S) requests before sending. This is an\n * abstract class.\n */\nexport class CredentialPolicy extends BaseRequestPolicy {\n /**\n * Sends out request.\n *\n * @param request -\n */\n sendRequest(request) {\n return this._nextPolicy.sendRequest(this.signRequest(request));\n }\n /**\n * Child classes must implement this method with request signing. This method\n * will be executed in {@link sendRequest}.\n *\n * @param request -\n */\n signRequest(request) {\n // Child classes must override this method with request signing. This method\n // will be executed in sendRequest().\n return request;\n }\n}\n//# sourceMappingURL=CredentialPolicy.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n *\n * This is a helper class to construct a string representing the permissions granted by a ServiceSAS to a blob. Setting\n * a value to true means that any SAS which uses these permissions will grant permissions for that operation. Once all\n * the values are set, this should be serialized with toString and set as the permissions field on a\n * {@link BlobSASSignatureValues} object. It is possible to construct the permissions string without this class, but\n * the order of the permissions is particular and this class guarantees correctness.\n */\nexport class BlobSASPermissions {\n constructor() {\n /**\n * Specifies Read access granted.\n */\n this.read = false;\n /**\n * Specifies Add access granted.\n */\n this.add = false;\n /**\n * Specifies Create access granted.\n */\n this.create = false;\n /**\n * Specifies Write access granted.\n */\n this.write = false;\n /**\n * Specifies Delete access granted.\n */\n this.delete = false;\n /**\n * Specifies Delete version access granted.\n */\n this.deleteVersion = false;\n /**\n * Specfies Tag access granted.\n */\n this.tag = false;\n /**\n * Specifies Move access granted.\n */\n this.move = false;\n /**\n * Specifies Execute access granted.\n */\n this.execute = false;\n /**\n * Specifies SetImmutabilityPolicy access granted.\n */\n this.setImmutabilityPolicy = false;\n /**\n * Specifies that Permanent Delete is permitted.\n */\n this.permanentDelete = false;\n }\n /**\n * Creates a {@link BlobSASPermissions} from the specified permissions string. This method will throw an\n * Error if it encounters a character that does not correspond to a valid permission.\n *\n * @param permissions -\n */\n static parse(permissions) {\n const blobSASPermissions = new BlobSASPermissions();\n for (const char of permissions) {\n switch (char) {\n case \"r\":\n blobSASPermissions.read = true;\n break;\n case \"a\":\n blobSASPermissions.add = true;\n break;\n case \"c\":\n blobSASPermissions.create = true;\n break;\n case \"w\":\n blobSASPermissions.write = true;\n break;\n case \"d\":\n blobSASPermissions.delete = true;\n break;\n case \"x\":\n blobSASPermissions.deleteVersion = true;\n break;\n case \"t\":\n blobSASPermissions.tag = true;\n break;\n case \"m\":\n blobSASPermissions.move = true;\n break;\n case \"e\":\n blobSASPermissions.execute = true;\n break;\n case \"i\":\n blobSASPermissions.setImmutabilityPolicy = true;\n break;\n case \"y\":\n blobSASPermissions.permanentDelete = true;\n break;\n default:\n throw new RangeError(`Invalid permission: ${char}`);\n }\n }\n return blobSASPermissions;\n }\n /**\n * Creates a {@link BlobSASPermissions} from a raw object which contains same keys as it\n * and boolean values for them.\n *\n * @param permissionLike -\n */\n static from(permissionLike) {\n const blobSASPermissions = new BlobSASPermissions();\n if (permissionLike.read) {\n blobSASPermissions.read = true;\n }\n if (permissionLike.add) {\n blobSASPermissions.add = true;\n }\n if (permissionLike.create) {\n blobSASPermissions.create = true;\n }\n if (permissionLike.write) {\n blobSASPermissions.write = true;\n }\n if (permissionLike.delete) {\n blobSASPermissions.delete = true;\n }\n if (permissionLike.deleteVersion) {\n blobSASPermissions.deleteVersion = true;\n }\n if (permissionLike.tag) {\n blobSASPermissions.tag = true;\n }\n if (permissionLike.move) {\n blobSASPermissions.move = true;\n }\n if (permissionLike.execute) {\n blobSASPermissions.execute = true;\n }\n if (permissionLike.setImmutabilityPolicy) {\n blobSASPermissions.setImmutabilityPolicy = true;\n }\n if (permissionLike.permanentDelete) {\n blobSASPermissions.permanentDelete = true;\n }\n return blobSASPermissions;\n }\n /**\n * Converts the given permissions to a string. Using this method will guarantee the permissions are in an\n * order accepted by the service.\n *\n * @returns A string which represents the BlobSASPermissions\n */\n toString() {\n const permissions = [];\n if (this.read) {\n permissions.push(\"r\");\n }\n if (this.add) {\n permissions.push(\"a\");\n }\n if (this.create) {\n permissions.push(\"c\");\n }\n if (this.write) {\n permissions.push(\"w\");\n }\n if (this.delete) {\n permissions.push(\"d\");\n }\n if (this.deleteVersion) {\n permissions.push(\"x\");\n }\n if (this.tag) {\n permissions.push(\"t\");\n }\n if (this.move) {\n permissions.push(\"m\");\n }\n if (this.execute) {\n permissions.push(\"e\");\n }\n if (this.setImmutabilityPolicy) {\n permissions.push(\"i\");\n }\n if (this.permanentDelete) {\n permissions.push(\"y\");\n }\n return permissions.join(\"\");\n }\n}\n//# sourceMappingURL=BlobSASPermissions.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * This is a helper class to construct a string representing the permissions granted by a ServiceSAS to a container.\n * Setting a value to true means that any SAS which uses these permissions will grant permissions for that operation.\n * Once all the values are set, this should be serialized with toString and set as the permissions field on a\n * {@link BlobSASSignatureValues} object. It is possible to construct the permissions string without this class, but\n * the order of the permissions is particular and this class guarantees correctness.\n */\nexport class ContainerSASPermissions {\n constructor() {\n /**\n * Specifies Read access granted.\n */\n this.read = false;\n /**\n * Specifies Add access granted.\n */\n this.add = false;\n /**\n * Specifies Create access granted.\n */\n this.create = false;\n /**\n * Specifies Write access granted.\n */\n this.write = false;\n /**\n * Specifies Delete access granted.\n */\n this.delete = false;\n /**\n * Specifies Delete version access granted.\n */\n this.deleteVersion = false;\n /**\n * Specifies List access granted.\n */\n this.list = false;\n /**\n * Specfies Tag access granted.\n */\n this.tag = false;\n /**\n * Specifies Move access granted.\n */\n this.move = false;\n /**\n * Specifies Execute access granted.\n */\n this.execute = false;\n /**\n * Specifies SetImmutabilityPolicy access granted.\n */\n this.setImmutabilityPolicy = false;\n /**\n * Specifies that Permanent Delete is permitted.\n */\n this.permanentDelete = false;\n /**\n * Specifies that Filter Blobs by Tags is permitted.\n */\n this.filterByTags = false;\n }\n /**\n * Creates an {@link ContainerSASPermissions} from the specified permissions string. This method will throw an\n * Error if it encounters a character that does not correspond to a valid permission.\n *\n * @param permissions -\n */\n static parse(permissions) {\n const containerSASPermissions = new ContainerSASPermissions();\n for (const char of permissions) {\n switch (char) {\n case \"r\":\n containerSASPermissions.read = true;\n break;\n case \"a\":\n containerSASPermissions.add = true;\n break;\n case \"c\":\n containerSASPermissions.create = true;\n break;\n case \"w\":\n containerSASPermissions.write = true;\n break;\n case \"d\":\n containerSASPermissions.delete = true;\n break;\n case \"l\":\n containerSASPermissions.list = true;\n break;\n case \"t\":\n containerSASPermissions.tag = true;\n break;\n case \"x\":\n containerSASPermissions.deleteVersion = true;\n break;\n case \"m\":\n containerSASPermissions.move = true;\n break;\n case \"e\":\n containerSASPermissions.execute = true;\n break;\n case \"i\":\n containerSASPermissions.setImmutabilityPolicy = true;\n break;\n case \"y\":\n containerSASPermissions.permanentDelete = true;\n break;\n case \"f\":\n containerSASPermissions.filterByTags = true;\n break;\n default:\n throw new RangeError(`Invalid permission ${char}`);\n }\n }\n return containerSASPermissions;\n }\n /**\n * Creates a {@link ContainerSASPermissions} from a raw object which contains same keys as it\n * and boolean values for them.\n *\n * @param permissionLike -\n */\n static from(permissionLike) {\n const containerSASPermissions = new ContainerSASPermissions();\n if (permissionLike.read) {\n containerSASPermissions.read = true;\n }\n if (permissionLike.add) {\n containerSASPermissions.add = true;\n }\n if (permissionLike.create) {\n containerSASPermissions.create = true;\n }\n if (permissionLike.write) {\n containerSASPermissions.write = true;\n }\n if (permissionLike.delete) {\n containerSASPermissions.delete = true;\n }\n if (permissionLike.list) {\n containerSASPermissions.list = true;\n }\n if (permissionLike.deleteVersion) {\n containerSASPermissions.deleteVersion = true;\n }\n if (permissionLike.tag) {\n containerSASPermissions.tag = true;\n }\n if (permissionLike.move) {\n containerSASPermissions.move = true;\n }\n if (permissionLike.execute) {\n containerSASPermissions.execute = true;\n }\n if (permissionLike.setImmutabilityPolicy) {\n containerSASPermissions.setImmutabilityPolicy = true;\n }\n if (permissionLike.permanentDelete) {\n containerSASPermissions.permanentDelete = true;\n }\n if (permissionLike.filterByTags) {\n containerSASPermissions.filterByTags = true;\n }\n return containerSASPermissions;\n }\n /**\n * Converts the given permissions to a string. Using this method will guarantee the permissions are in an\n * order accepted by the service.\n *\n * The order of the characters should be as specified here to ensure correctness.\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas\n *\n */\n toString() {\n const permissions = [];\n if (this.read) {\n permissions.push(\"r\");\n }\n if (this.add) {\n permissions.push(\"a\");\n }\n if (this.create) {\n permissions.push(\"c\");\n }\n if (this.write) {\n permissions.push(\"w\");\n }\n if (this.delete) {\n permissions.push(\"d\");\n }\n if (this.deleteVersion) {\n permissions.push(\"x\");\n }\n if (this.list) {\n permissions.push(\"l\");\n }\n if (this.tag) {\n permissions.push(\"t\");\n }\n if (this.move) {\n permissions.push(\"m\");\n }\n if (this.execute) {\n permissions.push(\"e\");\n }\n if (this.setImmutabilityPolicy) {\n permissions.push(\"i\");\n }\n if (this.permanentDelete) {\n permissions.push(\"y\");\n }\n if (this.filterByTags) {\n permissions.push(\"f\");\n }\n return permissions.join(\"\");\n }\n}\n//# sourceMappingURL=ContainerSASPermissions.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nexport class UserDelegationKeyCredential {\n}\n//# sourceMappingURL=UserDelegationKeyCredential.browser.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { BlobSASPermissions } from \"./BlobSASPermissions\";\nimport { ContainerSASPermissions } from \"./ContainerSASPermissions\";\nimport { StorageSharedKeyCredential } from \"../credentials/StorageSharedKeyCredential\";\nimport { UserDelegationKeyCredential } from \"../credentials/UserDelegationKeyCredential\";\nimport { ipRangeToString } from \"./SasIPRange\";\nimport { SASQueryParameters } from \"./SASQueryParameters\";\nimport { SERVICE_VERSION } from \"../utils/constants\";\nimport { truncatedISO8061Date } from \"../utils/utils.common\";\nexport function generateBlobSASQueryParameters(blobSASSignatureValues, sharedKeyCredentialOrUserDelegationKey, accountName) {\n const version = blobSASSignatureValues.version ? blobSASSignatureValues.version : SERVICE_VERSION;\n const sharedKeyCredential = sharedKeyCredentialOrUserDelegationKey instanceof StorageSharedKeyCredential\n ? sharedKeyCredentialOrUserDelegationKey\n : undefined;\n let userDelegationKeyCredential;\n if (sharedKeyCredential === undefined && accountName !== undefined) {\n userDelegationKeyCredential = new UserDelegationKeyCredential(accountName, sharedKeyCredentialOrUserDelegationKey);\n }\n if (sharedKeyCredential === undefined && userDelegationKeyCredential === undefined) {\n throw TypeError(\"Invalid sharedKeyCredential, userDelegationKey or accountName.\");\n }\n // Version 2020-12-06 adds support for encryptionscope in SAS.\n if (version >= \"2020-12-06\") {\n if (sharedKeyCredential !== undefined) {\n return generateBlobSASQueryParameters20201206(blobSASSignatureValues, sharedKeyCredential);\n }\n else {\n return generateBlobSASQueryParametersUDK20201206(blobSASSignatureValues, userDelegationKeyCredential);\n }\n }\n // Version 2019-12-12 adds support for the blob tags permission.\n // Version 2018-11-09 adds support for the signed resource and signed blob snapshot time fields.\n // https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas#constructing-the-signature-string\n if (version >= \"2018-11-09\") {\n if (sharedKeyCredential !== undefined) {\n return generateBlobSASQueryParameters20181109(blobSASSignatureValues, sharedKeyCredential);\n }\n else {\n // Version 2020-02-10 delegation SAS signature construction includes preauthorizedAgentObjectId, agentObjectId, correlationId.\n if (version >= \"2020-02-10\") {\n return generateBlobSASQueryParametersUDK20200210(blobSASSignatureValues, userDelegationKeyCredential);\n }\n else {\n return generateBlobSASQueryParametersUDK20181109(blobSASSignatureValues, userDelegationKeyCredential);\n }\n }\n }\n if (version >= \"2015-04-05\") {\n if (sharedKeyCredential !== undefined) {\n return generateBlobSASQueryParameters20150405(blobSASSignatureValues, sharedKeyCredential);\n }\n else {\n throw new RangeError(\"'version' must be >= '2018-11-09' when generating user delegation SAS using user delegation key.\");\n }\n }\n throw new RangeError(\"'version' must be >= '2015-04-05'.\");\n}\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2015-04-05 AND BEFORE 2018-11-09.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn and identifier.\n *\n * WARNING: When identifier is not provided, permissions and expiresOn are required.\n * You MUST assign value to identifier or expiresOn & permissions manually if you initial with\n * this constructor.\n *\n * @param blobSASSignatureValues -\n * @param sharedKeyCredential -\n */\nfunction generateBlobSASQueryParameters20150405(blobSASSignatureValues, sharedKeyCredential) {\n blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n if (!blobSASSignatureValues.identifier &&\n !(blobSASSignatureValues.permissions && blobSASSignatureValues.expiresOn)) {\n throw new RangeError(\"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.\");\n }\n let resource = \"c\";\n if (blobSASSignatureValues.blobName) {\n resource = \"b\";\n }\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions;\n if (blobSASSignatureValues.permissions) {\n if (blobSASSignatureValues.blobName) {\n verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n }\n else {\n verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n }\n }\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n blobSASSignatureValues.startsOn\n ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n : \"\",\n blobSASSignatureValues.expiresOn\n ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(sharedKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),\n blobSASSignatureValues.identifier,\n blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n blobSASSignatureValues.version,\n blobSASSignatureValues.cacheControl ? blobSASSignatureValues.cacheControl : \"\",\n blobSASSignatureValues.contentDisposition ? blobSASSignatureValues.contentDisposition : \"\",\n blobSASSignatureValues.contentEncoding ? blobSASSignatureValues.contentEncoding : \"\",\n blobSASSignatureValues.contentLanguage ? blobSASSignatureValues.contentLanguage : \"\",\n blobSASSignatureValues.contentType ? blobSASSignatureValues.contentType : \"\",\n ].join(\"\\n\");\n const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);\n return new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType);\n}\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2018-11-09.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn and identifier.\n *\n * WARNING: When identifier is not provided, permissions and expiresOn are required.\n * You MUST assign value to identifier or expiresOn & permissions manually if you initial with\n * this constructor.\n *\n * @param blobSASSignatureValues -\n * @param sharedKeyCredential -\n */\nfunction generateBlobSASQueryParameters20181109(blobSASSignatureValues, sharedKeyCredential) {\n blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n if (!blobSASSignatureValues.identifier &&\n !(blobSASSignatureValues.permissions && blobSASSignatureValues.expiresOn)) {\n throw new RangeError(\"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.\");\n }\n let resource = \"c\";\n let timestamp = blobSASSignatureValues.snapshotTime;\n if (blobSASSignatureValues.blobName) {\n resource = \"b\";\n if (blobSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n }\n else if (blobSASSignatureValues.versionId) {\n resource = \"bv\";\n timestamp = blobSASSignatureValues.versionId;\n }\n }\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions;\n if (blobSASSignatureValues.permissions) {\n if (blobSASSignatureValues.blobName) {\n verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n }\n else {\n verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n }\n }\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n blobSASSignatureValues.startsOn\n ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n : \"\",\n blobSASSignatureValues.expiresOn\n ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(sharedKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),\n blobSASSignatureValues.identifier,\n blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n blobSASSignatureValues.version,\n resource,\n timestamp,\n blobSASSignatureValues.cacheControl ? blobSASSignatureValues.cacheControl : \"\",\n blobSASSignatureValues.contentDisposition ? blobSASSignatureValues.contentDisposition : \"\",\n blobSASSignatureValues.contentEncoding ? blobSASSignatureValues.contentEncoding : \"\",\n blobSASSignatureValues.contentLanguage ? blobSASSignatureValues.contentLanguage : \"\",\n blobSASSignatureValues.contentType ? blobSASSignatureValues.contentType : \"\",\n ].join(\"\\n\");\n const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);\n return new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType);\n}\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2020-12-06.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn and identifier.\n *\n * WARNING: When identifier is not provided, permissions and expiresOn are required.\n * You MUST assign value to identifier or expiresOn & permissions manually if you initial with\n * this constructor.\n *\n * @param blobSASSignatureValues -\n * @param sharedKeyCredential -\n */\nfunction generateBlobSASQueryParameters20201206(blobSASSignatureValues, sharedKeyCredential) {\n blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n if (!blobSASSignatureValues.identifier &&\n !(blobSASSignatureValues.permissions && blobSASSignatureValues.expiresOn)) {\n throw new RangeError(\"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.\");\n }\n let resource = \"c\";\n let timestamp = blobSASSignatureValues.snapshotTime;\n if (blobSASSignatureValues.blobName) {\n resource = \"b\";\n if (blobSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n }\n else if (blobSASSignatureValues.versionId) {\n resource = \"bv\";\n timestamp = blobSASSignatureValues.versionId;\n }\n }\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions;\n if (blobSASSignatureValues.permissions) {\n if (blobSASSignatureValues.blobName) {\n verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n }\n else {\n verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n }\n }\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n blobSASSignatureValues.startsOn\n ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n : \"\",\n blobSASSignatureValues.expiresOn\n ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(sharedKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),\n blobSASSignatureValues.identifier,\n blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n blobSASSignatureValues.version,\n resource,\n timestamp,\n blobSASSignatureValues.encryptionScope,\n blobSASSignatureValues.cacheControl ? blobSASSignatureValues.cacheControl : \"\",\n blobSASSignatureValues.contentDisposition ? blobSASSignatureValues.contentDisposition : \"\",\n blobSASSignatureValues.contentEncoding ? blobSASSignatureValues.contentEncoding : \"\",\n blobSASSignatureValues.contentLanguage ? blobSASSignatureValues.contentLanguage : \"\",\n blobSASSignatureValues.contentType ? blobSASSignatureValues.contentType : \"\",\n ].join(\"\\n\");\n const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);\n return new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType, undefined, undefined, undefined, blobSASSignatureValues.encryptionScope);\n}\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2018-11-09.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn.\n *\n * WARNING: identifier will be ignored, permissions and expiresOn are required.\n *\n * @param blobSASSignatureValues -\n * @param userDelegationKeyCredential -\n */\nfunction generateBlobSASQueryParametersUDK20181109(blobSASSignatureValues, userDelegationKeyCredential) {\n blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n // Stored access policies are not supported for a user delegation SAS.\n if (!blobSASSignatureValues.permissions || !blobSASSignatureValues.expiresOn) {\n throw new RangeError(\"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.\");\n }\n let resource = \"c\";\n let timestamp = blobSASSignatureValues.snapshotTime;\n if (blobSASSignatureValues.blobName) {\n resource = \"b\";\n if (blobSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n }\n else if (blobSASSignatureValues.versionId) {\n resource = \"bv\";\n timestamp = blobSASSignatureValues.versionId;\n }\n }\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions;\n if (blobSASSignatureValues.permissions) {\n if (blobSASSignatureValues.blobName) {\n verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n }\n else {\n verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n }\n }\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n blobSASSignatureValues.startsOn\n ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n : \"\",\n blobSASSignatureValues.expiresOn\n ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(userDelegationKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),\n userDelegationKeyCredential.userDelegationKey.signedObjectId,\n userDelegationKeyCredential.userDelegationKey.signedTenantId,\n userDelegationKeyCredential.userDelegationKey.signedStartsOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedStartsOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedExpiresOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedExpiresOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedService,\n userDelegationKeyCredential.userDelegationKey.signedVersion,\n blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n blobSASSignatureValues.version,\n resource,\n timestamp,\n blobSASSignatureValues.cacheControl,\n blobSASSignatureValues.contentDisposition,\n blobSASSignatureValues.contentEncoding,\n blobSASSignatureValues.contentLanguage,\n blobSASSignatureValues.contentType,\n ].join(\"\\n\");\n const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);\n return new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType, userDelegationKeyCredential.userDelegationKey);\n}\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2020-02-10.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn.\n *\n * WARNING: identifier will be ignored, permissions and expiresOn are required.\n *\n * @param blobSASSignatureValues -\n * @param userDelegationKeyCredential -\n */\nfunction generateBlobSASQueryParametersUDK20200210(blobSASSignatureValues, userDelegationKeyCredential) {\n blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n // Stored access policies are not supported for a user delegation SAS.\n if (!blobSASSignatureValues.permissions || !blobSASSignatureValues.expiresOn) {\n throw new RangeError(\"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.\");\n }\n let resource = \"c\";\n let timestamp = blobSASSignatureValues.snapshotTime;\n if (blobSASSignatureValues.blobName) {\n resource = \"b\";\n if (blobSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n }\n else if (blobSASSignatureValues.versionId) {\n resource = \"bv\";\n timestamp = blobSASSignatureValues.versionId;\n }\n }\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions;\n if (blobSASSignatureValues.permissions) {\n if (blobSASSignatureValues.blobName) {\n verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n }\n else {\n verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n }\n }\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n blobSASSignatureValues.startsOn\n ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n : \"\",\n blobSASSignatureValues.expiresOn\n ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(userDelegationKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),\n userDelegationKeyCredential.userDelegationKey.signedObjectId,\n userDelegationKeyCredential.userDelegationKey.signedTenantId,\n userDelegationKeyCredential.userDelegationKey.signedStartsOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedStartsOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedExpiresOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedExpiresOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedService,\n userDelegationKeyCredential.userDelegationKey.signedVersion,\n blobSASSignatureValues.preauthorizedAgentObjectId,\n undefined,\n blobSASSignatureValues.correlationId,\n blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n blobSASSignatureValues.version,\n resource,\n timestamp,\n blobSASSignatureValues.cacheControl,\n blobSASSignatureValues.contentDisposition,\n blobSASSignatureValues.contentEncoding,\n blobSASSignatureValues.contentLanguage,\n blobSASSignatureValues.contentType,\n ].join(\"\\n\");\n const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);\n return new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType, userDelegationKeyCredential.userDelegationKey, blobSASSignatureValues.preauthorizedAgentObjectId, blobSASSignatureValues.correlationId);\n}\n/**\n * ONLY AVAILABLE IN NODE.JS RUNTIME.\n * IMPLEMENTATION FOR API VERSION FROM 2020-12-06.\n *\n * Creates an instance of SASQueryParameters.\n *\n * Only accepts required settings needed to create a SAS. For optional settings please\n * set corresponding properties directly, such as permissions, startsOn.\n *\n * WARNING: identifier will be ignored, permissions and expiresOn are required.\n *\n * @param blobSASSignatureValues -\n * @param userDelegationKeyCredential -\n */\nfunction generateBlobSASQueryParametersUDK20201206(blobSASSignatureValues, userDelegationKeyCredential) {\n blobSASSignatureValues = SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues);\n // Stored access policies are not supported for a user delegation SAS.\n if (!blobSASSignatureValues.permissions || !blobSASSignatureValues.expiresOn) {\n throw new RangeError(\"Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.\");\n }\n let resource = \"c\";\n let timestamp = blobSASSignatureValues.snapshotTime;\n if (blobSASSignatureValues.blobName) {\n resource = \"b\";\n if (blobSASSignatureValues.snapshotTime) {\n resource = \"bs\";\n }\n else if (blobSASSignatureValues.versionId) {\n resource = \"bv\";\n timestamp = blobSASSignatureValues.versionId;\n }\n }\n // Calling parse and toString guarantees the proper ordering and throws on invalid characters.\n let verifiedPermissions;\n if (blobSASSignatureValues.permissions) {\n if (blobSASSignatureValues.blobName) {\n verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n }\n else {\n verifiedPermissions = ContainerSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();\n }\n }\n // Signature is generated on the un-url-encoded values.\n const stringToSign = [\n verifiedPermissions ? verifiedPermissions : \"\",\n blobSASSignatureValues.startsOn\n ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)\n : \"\",\n blobSASSignatureValues.expiresOn\n ? truncatedISO8061Date(blobSASSignatureValues.expiresOn, false)\n : \"\",\n getCanonicalName(userDelegationKeyCredential.accountName, blobSASSignatureValues.containerName, blobSASSignatureValues.blobName),\n userDelegationKeyCredential.userDelegationKey.signedObjectId,\n userDelegationKeyCredential.userDelegationKey.signedTenantId,\n userDelegationKeyCredential.userDelegationKey.signedStartsOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedStartsOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedExpiresOn\n ? truncatedISO8061Date(userDelegationKeyCredential.userDelegationKey.signedExpiresOn, false)\n : \"\",\n userDelegationKeyCredential.userDelegationKey.signedService,\n userDelegationKeyCredential.userDelegationKey.signedVersion,\n blobSASSignatureValues.preauthorizedAgentObjectId,\n undefined,\n blobSASSignatureValues.correlationId,\n blobSASSignatureValues.ipRange ? ipRangeToString(blobSASSignatureValues.ipRange) : \"\",\n blobSASSignatureValues.protocol ? blobSASSignatureValues.protocol : \"\",\n blobSASSignatureValues.version,\n resource,\n timestamp,\n blobSASSignatureValues.encryptionScope,\n blobSASSignatureValues.cacheControl,\n blobSASSignatureValues.contentDisposition,\n blobSASSignatureValues.contentEncoding,\n blobSASSignatureValues.contentLanguage,\n blobSASSignatureValues.contentType,\n ].join(\"\\n\");\n const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);\n return new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType, userDelegationKeyCredential.userDelegationKey, blobSASSignatureValues.preauthorizedAgentObjectId, blobSASSignatureValues.correlationId, blobSASSignatureValues.encryptionScope);\n}\nfunction getCanonicalName(accountName, containerName, blobName) {\n // Container: \"/blob/account/containerName\"\n // Blob: \"/blob/account/containerName/blobName\"\n const elements = [`/blob/${accountName}/${containerName}`];\n if (blobName) {\n elements.push(`/${blobName}`);\n }\n return elements.join(\"\");\n}\nfunction SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues) {\n const version = blobSASSignatureValues.version ? blobSASSignatureValues.version : SERVICE_VERSION;\n if (blobSASSignatureValues.snapshotTime && version < \"2018-11-09\") {\n throw RangeError(\"'version' must be >= '2018-11-09' when providing 'snapshotTime'.\");\n }\n if (blobSASSignatureValues.blobName === undefined && blobSASSignatureValues.snapshotTime) {\n throw RangeError(\"Must provide 'blobName' when providing 'snapshotTime'.\");\n }\n if (blobSASSignatureValues.versionId && version < \"2019-10-10\") {\n throw RangeError(\"'version' must be >= '2019-10-10' when providing 'versionId'.\");\n }\n if (blobSASSignatureValues.blobName === undefined && blobSASSignatureValues.versionId) {\n throw RangeError(\"Must provide 'blobName' when providing 'versionId'.\");\n }\n if (blobSASSignatureValues.permissions &&\n blobSASSignatureValues.permissions.setImmutabilityPolicy &&\n version < \"2020-08-04\") {\n throw RangeError(\"'version' must be >= '2020-08-04' when provided 'i' permission.\");\n }\n if (blobSASSignatureValues.permissions &&\n blobSASSignatureValues.permissions.deleteVersion &&\n version < \"2019-10-10\") {\n throw RangeError(\"'version' must be >= '2019-10-10' when providing 'x' permission.\");\n }\n if (blobSASSignatureValues.permissions &&\n blobSASSignatureValues.permissions.permanentDelete &&\n version < \"2019-10-10\") {\n throw RangeError(\"'version' must be >= '2019-10-10' when providing 'y' permission.\");\n }\n if (blobSASSignatureValues.permissions &&\n blobSASSignatureValues.permissions.tag &&\n version < \"2019-12-12\") {\n throw RangeError(\"'version' must be >= '2019-12-12' when providing 't' permission.\");\n }\n if (version < \"2020-02-10\" &&\n blobSASSignatureValues.permissions &&\n (blobSASSignatureValues.permissions.move || blobSASSignatureValues.permissions.execute)) {\n throw RangeError(\"'version' must be >= '2020-02-10' when providing the 'm' or 'e' permission.\");\n }\n if (version < \"2021-04-10\" &&\n blobSASSignatureValues.permissions &&\n blobSASSignatureValues.permissions.filterByTags) {\n throw RangeError(\"'version' must be >= '2021-04-10' when providing the 'f' permission.\");\n }\n if (version < \"2020-02-10\" &&\n (blobSASSignatureValues.preauthorizedAgentObjectId || blobSASSignatureValues.correlationId)) {\n throw RangeError(\"'version' must be >= '2020-02-10' when providing 'preauthorizedAgentObjectId' or 'correlationId'.\");\n }\n if (blobSASSignatureValues.encryptionScope && version < \"2020-12-06\") {\n throw RangeError(\"'version' must be >= '2020-12-06' when provided 'encryptionScope' in SAS.\");\n }\n blobSASSignatureValues.version = version;\n return blobSASSignatureValues;\n}\n//# sourceMappingURL=BlobSASSignatureValues.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { ipRangeToString } from \"./SasIPRange\";\nimport { truncatedISO8061Date } from \"../utils/utils.common\";\n/**\n * Protocols for generated SAS.\n */\nexport var SASProtocol;\n(function (SASProtocol) {\n /**\n * Protocol that allows HTTPS only\n */\n SASProtocol[\"Https\"] = \"https\";\n /**\n * Protocol that allows both HTTPS and HTTP\n */\n SASProtocol[\"HttpsAndHttp\"] = \"https,http\";\n})(SASProtocol || (SASProtocol = {}));\n/**\n * Represents the components that make up an Azure Storage SAS' query parameters. This type is not constructed directly\n * by the user; it is only generated by the {@link AccountSASSignatureValues} and {@link BlobSASSignatureValues}\n * types. Once generated, it can be encoded into a {@link String} and appended to a URL directly (though caution should\n * be taken here in case there are existing query parameters, which might affect the appropriate means of appending\n * these query parameters).\n *\n * NOTE: Instances of this class are immutable.\n */\nexport class SASQueryParameters {\n constructor(version, signature, permissionsOrOptions, services, resourceTypes, protocol, startsOn, expiresOn, ipRange, identifier, resource, cacheControl, contentDisposition, contentEncoding, contentLanguage, contentType, userDelegationKey, preauthorizedAgentObjectId, correlationId, encryptionScope) {\n this.version = version;\n this.signature = signature;\n if (permissionsOrOptions !== undefined && typeof permissionsOrOptions !== \"string\") {\n // SASQueryParametersOptions\n this.permissions = permissionsOrOptions.permissions;\n this.services = permissionsOrOptions.services;\n this.resourceTypes = permissionsOrOptions.resourceTypes;\n this.protocol = permissionsOrOptions.protocol;\n this.startsOn = permissionsOrOptions.startsOn;\n this.expiresOn = permissionsOrOptions.expiresOn;\n this.ipRangeInner = permissionsOrOptions.ipRange;\n this.identifier = permissionsOrOptions.identifier;\n this.encryptionScope = permissionsOrOptions.encryptionScope;\n this.resource = permissionsOrOptions.resource;\n this.cacheControl = permissionsOrOptions.cacheControl;\n this.contentDisposition = permissionsOrOptions.contentDisposition;\n this.contentEncoding = permissionsOrOptions.contentEncoding;\n this.contentLanguage = permissionsOrOptions.contentLanguage;\n this.contentType = permissionsOrOptions.contentType;\n if (permissionsOrOptions.userDelegationKey) {\n this.signedOid = permissionsOrOptions.userDelegationKey.signedObjectId;\n this.signedTenantId = permissionsOrOptions.userDelegationKey.signedTenantId;\n this.signedStartsOn = permissionsOrOptions.userDelegationKey.signedStartsOn;\n this.signedExpiresOn = permissionsOrOptions.userDelegationKey.signedExpiresOn;\n this.signedService = permissionsOrOptions.userDelegationKey.signedService;\n this.signedVersion = permissionsOrOptions.userDelegationKey.signedVersion;\n this.preauthorizedAgentObjectId = permissionsOrOptions.preauthorizedAgentObjectId;\n this.correlationId = permissionsOrOptions.correlationId;\n }\n }\n else {\n this.services = services;\n this.resourceTypes = resourceTypes;\n this.expiresOn = expiresOn;\n this.permissions = permissionsOrOptions;\n this.protocol = protocol;\n this.startsOn = startsOn;\n this.ipRangeInner = ipRange;\n this.encryptionScope = encryptionScope;\n this.identifier = identifier;\n this.resource = resource;\n this.cacheControl = cacheControl;\n this.contentDisposition = contentDisposition;\n this.contentEncoding = contentEncoding;\n this.contentLanguage = contentLanguage;\n this.contentType = contentType;\n if (userDelegationKey) {\n this.signedOid = userDelegationKey.signedObjectId;\n this.signedTenantId = userDelegationKey.signedTenantId;\n this.signedStartsOn = userDelegationKey.signedStartsOn;\n this.signedExpiresOn = userDelegationKey.signedExpiresOn;\n this.signedService = userDelegationKey.signedService;\n this.signedVersion = userDelegationKey.signedVersion;\n this.preauthorizedAgentObjectId = preauthorizedAgentObjectId;\n this.correlationId = correlationId;\n }\n }\n }\n /**\n * Optional. IP range allowed for this SAS.\n *\n * @readonly\n */\n get ipRange() {\n if (this.ipRangeInner) {\n return {\n end: this.ipRangeInner.end,\n start: this.ipRangeInner.start,\n };\n }\n return undefined;\n }\n /**\n * Encodes all SAS query parameters into a string that can be appended to a URL.\n *\n */\n toString() {\n const params = [\n \"sv\",\n \"ss\",\n \"srt\",\n \"spr\",\n \"st\",\n \"se\",\n \"sip\",\n \"si\",\n \"ses\",\n \"skoid\",\n \"sktid\",\n \"skt\",\n \"ske\",\n \"sks\",\n \"skv\",\n \"sr\",\n \"sp\",\n \"sig\",\n \"rscc\",\n \"rscd\",\n \"rsce\",\n \"rscl\",\n \"rsct\",\n \"saoid\",\n \"scid\",\n ];\n const queries = [];\n for (const param of params) {\n switch (param) {\n case \"sv\":\n this.tryAppendQueryParameter(queries, param, this.version);\n break;\n case \"ss\":\n this.tryAppendQueryParameter(queries, param, this.services);\n break;\n case \"srt\":\n this.tryAppendQueryParameter(queries, param, this.resourceTypes);\n break;\n case \"spr\":\n this.tryAppendQueryParameter(queries, param, this.protocol);\n break;\n case \"st\":\n this.tryAppendQueryParameter(queries, param, this.startsOn ? truncatedISO8061Date(this.startsOn, false) : undefined);\n break;\n case \"se\":\n this.tryAppendQueryParameter(queries, param, this.expiresOn ? truncatedISO8061Date(this.expiresOn, false) : undefined);\n break;\n case \"sip\":\n this.tryAppendQueryParameter(queries, param, this.ipRange ? ipRangeToString(this.ipRange) : undefined);\n break;\n case \"si\":\n this.tryAppendQueryParameter(queries, param, this.identifier);\n break;\n case \"ses\":\n this.tryAppendQueryParameter(queries, param, this.encryptionScope);\n break;\n case \"skoid\": // Signed object ID\n this.tryAppendQueryParameter(queries, param, this.signedOid);\n break;\n case \"sktid\": // Signed tenant ID\n this.tryAppendQueryParameter(queries, param, this.signedTenantId);\n break;\n case \"skt\": // Signed key start time\n this.tryAppendQueryParameter(queries, param, this.signedStartsOn ? truncatedISO8061Date(this.signedStartsOn, false) : undefined);\n break;\n case \"ske\": // Signed key expiry time\n this.tryAppendQueryParameter(queries, param, this.signedExpiresOn ? truncatedISO8061Date(this.signedExpiresOn, false) : undefined);\n break;\n case \"sks\": // Signed key service\n this.tryAppendQueryParameter(queries, param, this.signedService);\n break;\n case \"skv\": // Signed key version\n this.tryAppendQueryParameter(queries, param, this.signedVersion);\n break;\n case \"sr\":\n this.tryAppendQueryParameter(queries, param, this.resource);\n break;\n case \"sp\":\n this.tryAppendQueryParameter(queries, param, this.permissions);\n break;\n case \"sig\":\n this.tryAppendQueryParameter(queries, param, this.signature);\n break;\n case \"rscc\":\n this.tryAppendQueryParameter(queries, param, this.cacheControl);\n break;\n case \"rscd\":\n this.tryAppendQueryParameter(queries, param, this.contentDisposition);\n break;\n case \"rsce\":\n this.tryAppendQueryParameter(queries, param, this.contentEncoding);\n break;\n case \"rscl\":\n this.tryAppendQueryParameter(queries, param, this.contentLanguage);\n break;\n case \"rsct\":\n this.tryAppendQueryParameter(queries, param, this.contentType);\n break;\n case \"saoid\":\n this.tryAppendQueryParameter(queries, param, this.preauthorizedAgentObjectId);\n break;\n case \"scid\":\n this.tryAppendQueryParameter(queries, param, this.correlationId);\n break;\n }\n }\n return queries.join(\"&\");\n }\n /**\n * A private helper method used to filter and append query key/value pairs into an array.\n *\n * @param queries -\n * @param key -\n * @param value -\n */\n tryAppendQueryParameter(queries, key, value) {\n if (!value) {\n return;\n }\n key = encodeURIComponent(key);\n value = encodeURIComponent(value);\n if (key.length > 0 && value.length > 0) {\n queries.push(`${key}=${value}`);\n }\n }\n}\n//# sourceMappingURL=SASQueryParameters.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Generate SasIPRange format string. For example:\n *\n * \"8.8.8.8\" or \"1.1.1.1-255.255.255.255\"\n *\n * @param ipRange -\n */\nexport function ipRangeToString(ipRange) {\n return ipRange.end ? `${ipRange.start}-${ipRange.end}` : ipRange.start;\n}\n//# sourceMappingURL=SasIPRange.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nexport const SDK_VERSION = \"12.17.0\";\nexport const SERVICE_VERSION = \"2023-11-03\";\nexport const BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES = 256 * 1024 * 1024; // 256MB\nexport const BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES = 4000 * 1024 * 1024; // 4000MB\nexport const BLOCK_BLOB_MAX_BLOCKS = 50000;\nexport const DEFAULT_BLOCK_BUFFER_SIZE_BYTES = 8 * 1024 * 1024; // 8MB\nexport const DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES = 4 * 1024 * 1024; // 4MB\nexport const DEFAULT_MAX_DOWNLOAD_RETRY_REQUESTS = 5;\nexport const REQUEST_TIMEOUT = 100 * 1000; // In ms\n/**\n * The OAuth scope to use with Azure Storage.\n */\nexport const StorageOAuthScopes = \"https://storage.azure.com/.default\";\nexport const URLConstants = {\n Parameters: {\n FORCE_BROWSER_NO_CACHE: \"_\",\n SIGNATURE: \"sig\",\n SNAPSHOT: \"snapshot\",\n VERSIONID: \"versionid\",\n TIMEOUT: \"timeout\",\n },\n};\nexport const HTTPURLConnection = {\n HTTP_ACCEPTED: 202,\n HTTP_CONFLICT: 409,\n HTTP_NOT_FOUND: 404,\n HTTP_PRECON_FAILED: 412,\n HTTP_RANGE_NOT_SATISFIABLE: 416,\n};\nexport const HeaderConstants = {\n AUTHORIZATION: \"Authorization\",\n AUTHORIZATION_SCHEME: \"Bearer\",\n CONTENT_ENCODING: \"Content-Encoding\",\n CONTENT_ID: \"Content-ID\",\n CONTENT_LANGUAGE: \"Content-Language\",\n CONTENT_LENGTH: \"Content-Length\",\n CONTENT_MD5: \"Content-Md5\",\n CONTENT_TRANSFER_ENCODING: \"Content-Transfer-Encoding\",\n CONTENT_TYPE: \"Content-Type\",\n COOKIE: \"Cookie\",\n DATE: \"date\",\n IF_MATCH: \"if-match\",\n IF_MODIFIED_SINCE: \"if-modified-since\",\n IF_NONE_MATCH: \"if-none-match\",\n IF_UNMODIFIED_SINCE: \"if-unmodified-since\",\n PREFIX_FOR_STORAGE: \"x-ms-\",\n RANGE: \"Range\",\n USER_AGENT: \"User-Agent\",\n X_MS_CLIENT_REQUEST_ID: \"x-ms-client-request-id\",\n X_MS_COPY_SOURCE: \"x-ms-copy-source\",\n X_MS_DATE: \"x-ms-date\",\n X_MS_ERROR_CODE: \"x-ms-error-code\",\n X_MS_VERSION: \"x-ms-version\",\n};\nexport const ETagNone = \"\";\nexport const ETagAny = \"*\";\nexport const SIZE_1_MB = 1 * 1024 * 1024;\nexport const BATCH_MAX_REQUEST = 256;\nexport const BATCH_MAX_PAYLOAD_IN_BYTES = 4 * SIZE_1_MB;\nexport const HTTP_LINE_ENDING = \"\\r\\n\";\nexport const HTTP_VERSION_1_1 = \"HTTP/1.1\";\nexport const EncryptionAlgorithmAES25 = \"AES256\";\nexport const DevelopmentConnectionString = `DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;`;\nexport const StorageBlobLoggingAllowedHeaderNames = [\n \"Access-Control-Allow-Origin\",\n \"Cache-Control\",\n \"Content-Length\",\n \"Content-Type\",\n \"Date\",\n \"Request-Id\",\n \"traceparent\",\n \"Transfer-Encoding\",\n \"User-Agent\",\n \"x-ms-client-request-id\",\n \"x-ms-date\",\n \"x-ms-error-code\",\n \"x-ms-request-id\",\n \"x-ms-return-client-request-id\",\n \"x-ms-version\",\n \"Accept-Ranges\",\n \"Content-Disposition\",\n \"Content-Encoding\",\n \"Content-Language\",\n \"Content-MD5\",\n \"Content-Range\",\n \"ETag\",\n \"Last-Modified\",\n \"Server\",\n \"Vary\",\n \"x-ms-content-crc64\",\n \"x-ms-copy-action\",\n \"x-ms-copy-completion-time\",\n \"x-ms-copy-id\",\n \"x-ms-copy-progress\",\n \"x-ms-copy-status\",\n \"x-ms-has-immutability-policy\",\n \"x-ms-has-legal-hold\",\n \"x-ms-lease-state\",\n \"x-ms-lease-status\",\n \"x-ms-range\",\n \"x-ms-request-server-encrypted\",\n \"x-ms-server-encrypted\",\n \"x-ms-snapshot\",\n \"x-ms-source-range\",\n \"If-Match\",\n \"If-Modified-Since\",\n \"If-None-Match\",\n \"If-Unmodified-Since\",\n \"x-ms-access-tier\",\n \"x-ms-access-tier-change-time\",\n \"x-ms-access-tier-inferred\",\n \"x-ms-account-kind\",\n \"x-ms-archive-status\",\n \"x-ms-blob-append-offset\",\n \"x-ms-blob-cache-control\",\n \"x-ms-blob-committed-block-count\",\n \"x-ms-blob-condition-appendpos\",\n \"x-ms-blob-condition-maxsize\",\n \"x-ms-blob-content-disposition\",\n \"x-ms-blob-content-encoding\",\n \"x-ms-blob-content-language\",\n \"x-ms-blob-content-length\",\n \"x-ms-blob-content-md5\",\n \"x-ms-blob-content-type\",\n \"x-ms-blob-public-access\",\n \"x-ms-blob-sequence-number\",\n \"x-ms-blob-type\",\n \"x-ms-copy-destination-snapshot\",\n \"x-ms-creation-time\",\n \"x-ms-default-encryption-scope\",\n \"x-ms-delete-snapshots\",\n \"x-ms-delete-type-permanent\",\n \"x-ms-deny-encryption-scope-override\",\n \"x-ms-encryption-algorithm\",\n \"x-ms-if-sequence-number-eq\",\n \"x-ms-if-sequence-number-le\",\n \"x-ms-if-sequence-number-lt\",\n \"x-ms-incremental-copy\",\n \"x-ms-lease-action\",\n \"x-ms-lease-break-period\",\n \"x-ms-lease-duration\",\n \"x-ms-lease-id\",\n \"x-ms-lease-time\",\n \"x-ms-page-write\",\n \"x-ms-proposed-lease-id\",\n \"x-ms-range-get-content-md5\",\n \"x-ms-rehydrate-priority\",\n \"x-ms-sequence-number-action\",\n \"x-ms-sku-name\",\n \"x-ms-source-content-md5\",\n \"x-ms-source-if-match\",\n \"x-ms-source-if-modified-since\",\n \"x-ms-source-if-none-match\",\n \"x-ms-source-if-unmodified-since\",\n \"x-ms-tag-count\",\n \"x-ms-encryption-key-sha256\",\n \"x-ms-if-tags\",\n \"x-ms-source-if-tags\",\n];\nexport const StorageBlobLoggingAllowedQueryParameters = [\n \"comp\",\n \"maxresults\",\n \"rscc\",\n \"rscd\",\n \"rsce\",\n \"rscl\",\n \"rsct\",\n \"se\",\n \"si\",\n \"sip\",\n \"sp\",\n \"spr\",\n \"sr\",\n \"srt\",\n \"ss\",\n \"st\",\n \"sv\",\n \"include\",\n \"marker\",\n \"prefix\",\n \"copyid\",\n \"restype\",\n \"blockid\",\n \"blocklisttype\",\n \"delimiter\",\n \"prevsnapshot\",\n \"ske\",\n \"skoid\",\n \"sks\",\n \"skt\",\n \"sktid\",\n \"skv\",\n \"snapshot\",\n];\nexport const BlobUsesCustomerSpecifiedEncryptionMsg = \"BlobUsesCustomerSpecifiedEncryption\";\nexport const BlobDoesNotUseCustomerSpecifiedEncryption = \"BlobDoesNotUseCustomerSpecifiedEncryption\";\n/// List of ports used for path style addressing.\n/// Path style addressing means that storage account is put in URI's Path segment in instead of in host.\nexport const PathStylePorts = [\n \"10000\",\n \"10001\",\n \"10002\",\n \"10003\",\n \"10004\",\n \"10100\",\n \"10101\",\n \"10102\",\n \"10103\",\n \"10104\",\n \"11000\",\n \"11001\",\n \"11002\",\n \"11003\",\n \"11004\",\n \"11100\",\n \"11101\",\n \"11102\",\n \"11103\",\n \"11104\",\n];\n//# sourceMappingURL=constants.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { createSpanFunction } from \"@azure/core-tracing\";\n/**\n * Creates a span using the global tracer.\n * @internal\n */\nexport const createSpan = createSpanFunction({\n packagePrefix: \"Azure.Storage.Blob\",\n namespace: \"Microsoft.Storage\",\n});\n/**\n * @internal\n *\n * Adapt the tracing options from OperationOptions to what they need to be for\n * RequestOptionsBase (when we update to later OpenTelemetry versions this is now\n * two separate fields, not just one).\n */\nexport function convertTracingToRequestOptionsBase(options) {\n var _a, _b;\n return {\n // By passing spanOptions if they exist at runtime, we're backwards compatible with @azure/core-tracing@preview.13 and earlier.\n spanOptions: (_a = options === null || options === void 0 ? void 0 : options.tracingOptions) === null || _a === void 0 ? void 0 : _a.spanOptions,\n tracingContext: (_b = options === null || options === void 0 ? void 0 : options.tracingOptions) === null || _b === void 0 ? void 0 : _b.tracingContext,\n };\n}\n//# sourceMappingURL=tracing.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Convert a Browser Blob object into ArrayBuffer.\n *\n * @param blob -\n */\nexport async function blobToArrayBuffer(blob) {\n const fileReader = new FileReader();\n return new Promise((resolve, reject) => {\n fileReader.onloadend = (ev) => {\n resolve(ev.target.result);\n };\n fileReader.onerror = reject;\n fileReader.readAsArrayBuffer(blob);\n });\n}\n/**\n * Convert a Browser Blob object into string.\n *\n * @param blob -\n */\nexport async function blobToString(blob) {\n const fileReader = new FileReader();\n return new Promise((resolve, reject) => {\n fileReader.onloadend = (ev) => {\n resolve(ev.target.result);\n };\n fileReader.onerror = reject;\n fileReader.readAsText(blob);\n });\n}\nexport function streamToBuffer() {\n /* empty */\n}\nexport function streamToBuffer2() {\n /* empty */\n}\nexport function readStreamToLocalFile() {\n /* empty */\n}\nexport const fsStat = function stat() {\n /* empty */\n};\nexport const fsCreateReadStream = function createReadStream() {\n /* empty */\n};\n//# sourceMappingURL=utils.browser.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nimport { HttpHeaders, isNode, URLBuilder } from \"@azure/core-http\";\nimport { DevelopmentConnectionString, HeaderConstants, PathStylePorts, URLConstants, } from \"./constants\";\n/**\n * Reserved URL characters must be properly escaped for Storage services like Blob or File.\n *\n * ## URL encode and escape strategy for JS SDKs\n *\n * When customers pass a URL string into XxxClient classes constructor, the URL string may already be URL encoded or not.\n * But before sending to Azure Storage server, the URL must be encoded. However, it's hard for a SDK to guess whether the URL\n * string has been encoded or not. We have 2 potential strategies, and chose strategy two for the XxxClient constructors.\n *\n * ### Strategy One: Assume the customer URL string is not encoded, and always encode URL string in SDK.\n *\n * This is what legacy V2 SDK does, simple and works for most of the cases.\n * - When customer URL string is \"http://account.blob.core.windows.net/con/b:\",\n * SDK will encode it to \"http://account.blob.core.windows.net/con/b%3A\" and send to server. A blob named \"b:\" will be created.\n * - When customer URL string is \"http://account.blob.core.windows.net/con/b%3A\",\n * SDK will encode it to \"http://account.blob.core.windows.net/con/b%253A\" and send to server. A blob named \"b%3A\" will be created.\n *\n * But this strategy will make it not possible to create a blob with \"?\" in it's name. Because when customer URL string is\n * \"http://account.blob.core.windows.net/con/blob?name\", the \"?name\" will be treated as URL paramter instead of blob name.\n * If customer URL string is \"http://account.blob.core.windows.net/con/blob%3Fname\", a blob named \"blob%3Fname\" will be created.\n * V2 SDK doesn't have this issue because it doesn't allow customer pass in a full URL, it accepts a separate blob name and encodeURIComponent for it.\n * We cannot accept a SDK cannot create a blob name with \"?\". So we implement strategy two:\n *\n * ### Strategy Two: SDK doesn't assume the URL has been encoded or not. It will just escape the special characters.\n *\n * This is what V10 Blob Go SDK does. It accepts a URL type in Go, and call url.EscapedPath() to escape the special chars unescaped.\n * - When customer URL string is \"http://account.blob.core.windows.net/con/b:\",\n * SDK will escape \":\" like \"http://account.blob.core.windows.net/con/b%3A\" and send to server. A blob named \"b:\" will be created.\n * - When customer URL string is \"http://account.blob.core.windows.net/con/b%3A\",\n * There is no special characters, so send \"http://account.blob.core.windows.net/con/b%3A\" to server. A blob named \"b:\" will be created.\n * - When customer URL string is \"http://account.blob.core.windows.net/con/b%253A\",\n * There is no special characters, so send \"http://account.blob.core.windows.net/con/b%253A\" to server. A blob named \"b%3A\" will be created.\n *\n * This strategy gives us flexibility to create with any special characters. But \"%\" will be treated as a special characters, if the URL string\n * is not encoded, there shouldn't a \"%\" in the URL string, otherwise the URL is not a valid URL.\n * If customer needs to create a blob with \"%\" in it's blob name, use \"%25\" instead of \"%\". Just like above 3rd sample.\n * And following URL strings are invalid:\n * - \"http://account.blob.core.windows.net/con/b%\"\n * - \"http://account.blob.core.windows.net/con/b%2\"\n * - \"http://account.blob.core.windows.net/con/b%G\"\n *\n * Another special character is \"?\", use \"%2F\" to represent a blob name with \"?\" in a URL string.\n *\n * ### Strategy for containerName, blobName or other specific XXXName parameters in methods such as `containerClient.getBlobClient(blobName)`\n *\n * We will apply strategy one, and call encodeURIComponent for these parameters like blobName. Because what customers passes in is a plain name instead of a URL.\n *\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/naming-and-referencing-containers--blobs--and-metadata\n * @see https://docs.microsoft.com/en-us/rest/api/storageservices/naming-and-referencing-shares--directories--files--and-metadata\n *\n * @param url -\n */\nexport function escapeURLPath(url) {\n const urlParsed = URLBuilder.parse(url);\n let path = urlParsed.getPath();\n path = path || \"/\";\n path = escape(path);\n urlParsed.setPath(path);\n return urlParsed.toString();\n}\nfunction getProxyUriFromDevConnString(connectionString) {\n // Development Connection String\n // https://docs.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string#connect-to-the-emulator-account-using-the-well-known-account-name-and-key\n let proxyUri = \"\";\n if (connectionString.search(\"DevelopmentStorageProxyUri=\") !== -1) {\n // CONNECTION_STRING=UseDevelopmentStorage=true;DevelopmentStorageProxyUri=http://myProxyUri\n const matchCredentials = connectionString.split(\";\");\n for (const element of matchCredentials) {\n if (element.trim().startsWith(\"DevelopmentStorageProxyUri=\")) {\n proxyUri = element.trim().match(\"DevelopmentStorageProxyUri=(.*)\")[1];\n }\n }\n }\n return proxyUri;\n}\nexport function getValueInConnString(connectionString, argument) {\n const elements = connectionString.split(\";\");\n for (const element of elements) {\n if (element.trim().startsWith(argument)) {\n return element.trim().match(argument + \"=(.*)\")[1];\n }\n }\n return \"\";\n}\n/**\n * Extracts the parts of an Azure Storage account connection string.\n *\n * @param connectionString - Connection string.\n * @returns String key value pairs of the storage account's url and credentials.\n */\nexport function extractConnectionStringParts(connectionString) {\n let proxyUri = \"\";\n if (connectionString.startsWith(\"UseDevelopmentStorage=true\")) {\n // Development connection string\n proxyUri = getProxyUriFromDevConnString(connectionString);\n connectionString = DevelopmentConnectionString;\n }\n // Matching BlobEndpoint in the Account connection string\n let blobEndpoint = getValueInConnString(connectionString, \"BlobEndpoint\");\n // Slicing off '/' at the end if exists\n // (The methods that use `extractConnectionStringParts` expect the url to not have `/` at the end)\n blobEndpoint = blobEndpoint.endsWith(\"/\") ? blobEndpoint.slice(0, -1) : blobEndpoint;\n if (connectionString.search(\"DefaultEndpointsProtocol=\") !== -1 &&\n connectionString.search(\"AccountKey=\") !== -1) {\n // Account connection string\n let defaultEndpointsProtocol = \"\";\n let accountName = \"\";\n let accountKey = Buffer.from(\"accountKey\", \"base64\");\n let endpointSuffix = \"\";\n // Get account name and key\n accountName = getValueInConnString(connectionString, \"AccountName\");\n accountKey = Buffer.from(getValueInConnString(connectionString, \"AccountKey\"), \"base64\");\n if (!blobEndpoint) {\n // BlobEndpoint is not present in the Account connection string\n // Can be obtained from `${defaultEndpointsProtocol}://${accountName}.blob.${endpointSuffix}`\n defaultEndpointsProtocol = getValueInConnString(connectionString, \"DefaultEndpointsProtocol\");\n const protocol = defaultEndpointsProtocol.toLowerCase();\n if (protocol !== \"https\" && protocol !== \"http\") {\n throw new Error(\"Invalid DefaultEndpointsProtocol in the provided Connection String. Expecting 'https' or 'http'\");\n }\n endpointSuffix = getValueInConnString(connectionString, \"EndpointSuffix\");\n if (!endpointSuffix) {\n throw new Error(\"Invalid EndpointSuffix in the provided Connection String\");\n }\n blobEndpoint = `${defaultEndpointsProtocol}://${accountName}.blob.${endpointSuffix}`;\n }\n if (!accountName) {\n throw new Error(\"Invalid AccountName in the provided Connection String\");\n }\n else if (accountKey.length === 0) {\n throw new Error(\"Invalid AccountKey in the provided Connection String\");\n }\n return {\n kind: \"AccountConnString\",\n url: blobEndpoint,\n accountName,\n accountKey,\n proxyUri,\n };\n }\n else {\n // SAS connection string\n const accountSas = getValueInConnString(connectionString, \"SharedAccessSignature\");\n let accountName = getValueInConnString(connectionString, \"AccountName\");\n // if accountName is empty, try to read it from BlobEndpoint\n if (!accountName) {\n accountName = getAccountNameFromUrl(blobEndpoint);\n }\n if (!blobEndpoint) {\n throw new Error(\"Invalid BlobEndpoint in the provided SAS Connection String\");\n }\n else if (!accountSas) {\n throw new Error(\"Invalid SharedAccessSignature in the provided SAS Connection String\");\n }\n return { kind: \"SASConnString\", url: blobEndpoint, accountName, accountSas };\n }\n}\n/**\n * Internal escape method implemented Strategy Two mentioned in escapeURL() description.\n *\n * @param text -\n */\nfunction escape(text) {\n return encodeURIComponent(text)\n .replace(/%2F/g, \"/\") // Don't escape for \"/\"\n .replace(/'/g, \"%27\") // Escape for \"'\"\n .replace(/\\+/g, \"%20\")\n .replace(/%25/g, \"%\"); // Revert encoded \"%\"\n}\n/**\n * Append a string to URL path. Will remove duplicated \"/\" in front of the string\n * when URL path ends with a \"/\".\n *\n * @param url - Source URL string\n * @param name - String to be appended to URL\n * @returns An updated URL string\n */\nexport function appendToURLPath(url, name) {\n const urlParsed = URLBuilder.parse(url);\n let path = urlParsed.getPath();\n path = path ? (path.endsWith(\"/\") ? `${path}${name}` : `${path}/${name}`) : name;\n urlParsed.setPath(path);\n const normalizedUrl = new URL(urlParsed.toString());\n return normalizedUrl.toString();\n}\n/**\n * Set URL parameter name and value. If name exists in URL parameters, old value\n * will be replaced by name key. If not provide value, the parameter will be deleted.\n *\n * @param url - Source URL string\n * @param name - Parameter name\n * @param value - Parameter value\n * @returns An updated URL string\n */\nexport function setURLParameter(url, name, value) {\n const urlParsed = URLBuilder.parse(url);\n urlParsed.setQueryParameter(name, value);\n return urlParsed.toString();\n}\n/**\n * Get URL parameter by name.\n *\n * @param url -\n * @param name -\n */\nexport function getURLParameter(url, name) {\n const urlParsed = URLBuilder.parse(url);\n return urlParsed.getQueryParameterValue(name);\n}\n/**\n * Set URL host.\n *\n * @param url - Source URL string\n * @param host - New host string\n * @returns An updated URL string\n */\nexport function setURLHost(url, host) {\n const urlParsed = URLBuilder.parse(url);\n urlParsed.setHost(host);\n return urlParsed.toString();\n}\n/**\n * Get URL path from an URL string.\n *\n * @param url - Source URL string\n */\nexport function getURLPath(url) {\n const urlParsed = URLBuilder.parse(url);\n return urlParsed.getPath();\n}\n/**\n * Get URL scheme from an URL string.\n *\n * @param url - Source URL string\n */\nexport function getURLScheme(url) {\n const urlParsed = URLBuilder.parse(url);\n return urlParsed.getScheme();\n}\n/**\n * Get URL path and query from an URL string.\n *\n * @param url - Source URL string\n */\nexport function getURLPathAndQuery(url) {\n const urlParsed = URLBuilder.parse(url);\n const pathString = urlParsed.getPath();\n if (!pathString) {\n throw new RangeError(\"Invalid url without valid path.\");\n }\n let queryString = urlParsed.getQuery() || \"\";\n queryString = queryString.trim();\n if (queryString !== \"\") {\n queryString = queryString.startsWith(\"?\") ? queryString : `?${queryString}`; // Ensure query string start with '?'\n }\n return `${pathString}${queryString}`;\n}\n/**\n * Get URL query key value pairs from an URL string.\n *\n * @param url -\n */\nexport function getURLQueries(url) {\n let queryString = URLBuilder.parse(url).getQuery();\n if (!queryString) {\n return {};\n }\n queryString = queryString.trim();\n queryString = queryString.startsWith(\"?\") ? queryString.substr(1) : queryString;\n let querySubStrings = queryString.split(\"&\");\n querySubStrings = querySubStrings.filter((value) => {\n const indexOfEqual = value.indexOf(\"=\");\n const lastIndexOfEqual = value.lastIndexOf(\"=\");\n return (indexOfEqual > 0 && indexOfEqual === lastIndexOfEqual && lastIndexOfEqual < value.length - 1);\n });\n const queries = {};\n for (const querySubString of querySubStrings) {\n const splitResults = querySubString.split(\"=\");\n const key = splitResults[0];\n const value = splitResults[1];\n queries[key] = value;\n }\n return queries;\n}\n/**\n * Append a string to URL query.\n *\n * @param url - Source URL string.\n * @param queryParts - String to be appended to the URL query.\n * @returns An updated URL string.\n */\nexport function appendToURLQuery(url, queryParts) {\n const urlParsed = URLBuilder.parse(url);\n let query = urlParsed.getQuery();\n if (query) {\n query += \"&\" + queryParts;\n }\n else {\n query = queryParts;\n }\n urlParsed.setQuery(query);\n return urlParsed.toString();\n}\n/**\n * Rounds a date off to seconds.\n *\n * @param date -\n * @param withMilliseconds - If true, YYYY-MM-DDThh:mm:ss.fffffffZ will be returned;\n * If false, YYYY-MM-DDThh:mm:ssZ will be returned.\n * @returns Date string in ISO8061 format, with or without 7 milliseconds component\n */\nexport function truncatedISO8061Date(date, withMilliseconds = true) {\n // Date.toISOString() will return like \"2018-10-29T06:34:36.139Z\"\n const dateString = date.toISOString();\n return withMilliseconds\n ? dateString.substring(0, dateString.length - 1) + \"0000\" + \"Z\"\n : dateString.substring(0, dateString.length - 5) + \"Z\";\n}\n/**\n * Base64 encode.\n *\n * @param content -\n */\nexport function base64encode(content) {\n return !isNode ? btoa(content) : Buffer.from(content).toString(\"base64\");\n}\n/**\n * Base64 decode.\n *\n * @param encodedString -\n */\nexport function base64decode(encodedString) {\n return !isNode ? atob(encodedString) : Buffer.from(encodedString, \"base64\").toString();\n}\n/**\n * Generate a 64 bytes base64 block ID string.\n *\n * @param blockIndex -\n */\nexport function generateBlockID(blockIDPrefix, blockIndex) {\n // To generate a 64 bytes base64 string, source string should be 48\n const maxSourceStringLength = 48;\n // A blob can have a maximum of 100,000 uncommitted blocks at any given time\n const maxBlockIndexLength = 6;\n const maxAllowedBlockIDPrefixLength = maxSourceStringLength - maxBlockIndexLength;\n if (blockIDPrefix.length > maxAllowedBlockIDPrefixLength) {\n blockIDPrefix = blockIDPrefix.slice(0, maxAllowedBlockIDPrefixLength);\n }\n const res = blockIDPrefix +\n padStart(blockIndex.toString(), maxSourceStringLength - blockIDPrefix.length, \"0\");\n return base64encode(res);\n}\n/**\n * Delay specified time interval.\n *\n * @param timeInMs -\n * @param aborter -\n * @param abortError -\n */\nexport async function delay(timeInMs, aborter, abortError) {\n return new Promise((resolve, reject) => {\n /* eslint-disable-next-line prefer-const */\n let timeout;\n const abortHandler = () => {\n if (timeout !== undefined) {\n clearTimeout(timeout);\n }\n reject(abortError);\n };\n const resolveHandler = () => {\n if (aborter !== undefined) {\n aborter.removeEventListener(\"abort\", abortHandler);\n }\n resolve();\n };\n timeout = setTimeout(resolveHandler, timeInMs);\n if (aborter !== undefined) {\n aborter.addEventListener(\"abort\", abortHandler);\n }\n });\n}\n/**\n * String.prototype.padStart()\n *\n * @param currentString -\n * @param targetLength -\n * @param padString -\n */\nexport function padStart(currentString, targetLength, padString = \" \") {\n // @ts-expect-error: TS doesn't know this code needs to run downlevel sometimes\n if (String.prototype.padStart) {\n return currentString.padStart(targetLength, padString);\n }\n padString = padString || \" \";\n if (currentString.length > targetLength) {\n return currentString;\n }\n else {\n targetLength = targetLength - currentString.length;\n if (targetLength > padString.length) {\n padString += padString.repeat(targetLength / padString.length);\n }\n return padString.slice(0, targetLength) + currentString;\n }\n}\nexport function sanitizeURL(url) {\n let safeURL = url;\n if (getURLParameter(safeURL, URLConstants.Parameters.SIGNATURE)) {\n safeURL = setURLParameter(safeURL, URLConstants.Parameters.SIGNATURE, \"*****\");\n }\n return safeURL;\n}\nexport function sanitizeHeaders(originalHeader) {\n const headers = new HttpHeaders();\n for (const header of originalHeader.headersArray()) {\n if (header.name.toLowerCase() === HeaderConstants.AUTHORIZATION.toLowerCase()) {\n headers.set(header.name, \"*****\");\n }\n else if (header.name.toLowerCase() === HeaderConstants.X_MS_COPY_SOURCE) {\n headers.set(header.name, sanitizeURL(header.value));\n }\n else {\n headers.set(header.name, header.value);\n }\n }\n return headers;\n}\n/**\n * If two strings are equal when compared case insensitive.\n *\n * @param str1 -\n * @param str2 -\n */\nexport function iEqual(str1, str2) {\n return str1.toLocaleLowerCase() === str2.toLocaleLowerCase();\n}\n/**\n * Extracts account name from the url\n * @param url - url to extract the account name from\n * @returns with the account name\n */\nexport function getAccountNameFromUrl(url) {\n const parsedUrl = URLBuilder.parse(url);\n let accountName;\n try {\n if (parsedUrl.getHost().split(\".\")[1] === \"blob\") {\n // `${defaultEndpointsProtocol}://${accountName}.blob.${endpointSuffix}`;\n accountName = parsedUrl.getHost().split(\".\")[0];\n }\n else if (isIpEndpointStyle(parsedUrl)) {\n // IPv4/IPv6 address hosts... Example - http://192.0.0.10:10001/devstoreaccount1/\n // Single word domain without a [dot] in the endpoint... Example - http://localhost:10001/devstoreaccount1/\n // .getPath() -> /devstoreaccount1/\n accountName = parsedUrl.getPath().split(\"/\")[1];\n }\n else {\n // Custom domain case: \"https://customdomain.com/containername/blob\".\n accountName = \"\";\n }\n return accountName;\n }\n catch (error) {\n throw new Error(\"Unable to extract accountName with provided information.\");\n }\n}\nexport function isIpEndpointStyle(parsedUrl) {\n if (parsedUrl.getHost() === undefined) {\n return false;\n }\n const host = parsedUrl.getHost() + (parsedUrl.getPort() === undefined ? \"\" : \":\" + parsedUrl.getPort());\n // Case 1: Ipv6, use a broad regex to find out candidates whose host contains two ':'.\n // Case 2: localhost(:port) or host.docker.internal, use broad regex to match port part.\n // Case 3: Ipv4, use broad regex which just check if host contains Ipv4.\n // For valid host please refer to https://man7.org/linux/man-pages/man7/hostname.7.html.\n return (/^.*:.*:.*$|^(localhost|host.docker.internal)(:[0-9]+)?$|^(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])){3}(:[0-9]+)?$/.test(host) ||\n (parsedUrl.getPort() !== undefined && PathStylePorts.includes(parsedUrl.getPort())));\n}\n/**\n * Convert Tags to encoded string.\n *\n * @param tags -\n */\nexport function toBlobTagsString(tags) {\n if (tags === undefined) {\n return undefined;\n }\n const tagPairs = [];\n for (const key in tags) {\n if (Object.prototype.hasOwnProperty.call(tags, key)) {\n const value = tags[key];\n tagPairs.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`);\n }\n }\n return tagPairs.join(\"&\");\n}\n/**\n * Convert Tags type to BlobTags.\n *\n * @param tags -\n */\nexport function toBlobTags(tags) {\n if (tags === undefined) {\n return undefined;\n }\n const res = {\n blobTagSet: [],\n };\n for (const key in tags) {\n if (Object.prototype.hasOwnProperty.call(tags, key)) {\n const value = tags[key];\n res.blobTagSet.push({\n key,\n value,\n });\n }\n }\n return res;\n}\n/**\n * Covert BlobTags to Tags type.\n *\n * @param tags -\n */\nexport function toTags(tags) {\n if (tags === undefined) {\n return undefined;\n }\n const res = {};\n for (const blobTag of tags.blobTagSet) {\n res[blobTag.key] = blobTag.value;\n }\n return res;\n}\n/**\n * Convert BlobQueryTextConfiguration to QuerySerialization type.\n *\n * @param textConfiguration -\n */\nexport function toQuerySerialization(textConfiguration) {\n if (textConfiguration === undefined) {\n return undefined;\n }\n switch (textConfiguration.kind) {\n case \"csv\":\n return {\n format: {\n type: \"delimited\",\n delimitedTextConfiguration: {\n columnSeparator: textConfiguration.columnSeparator || \",\",\n fieldQuote: textConfiguration.fieldQuote || \"\",\n recordSeparator: textConfiguration.recordSeparator,\n escapeChar: textConfiguration.escapeCharacter || \"\",\n headersPresent: textConfiguration.hasHeaders || false,\n },\n },\n };\n case \"json\":\n return {\n format: {\n type: \"json\",\n jsonTextConfiguration: {\n recordSeparator: textConfiguration.recordSeparator,\n },\n },\n };\n case \"arrow\":\n return {\n format: {\n type: \"arrow\",\n arrowConfiguration: {\n schema: textConfiguration.schema,\n },\n },\n };\n case \"parquet\":\n return {\n format: {\n type: \"parquet\",\n },\n };\n default:\n throw Error(\"Invalid BlobQueryTextConfiguration.\");\n }\n}\nexport function parseObjectReplicationRecord(objectReplicationRecord) {\n if (!objectReplicationRecord) {\n return undefined;\n }\n if (\"policy-id\" in objectReplicationRecord) {\n // If the dictionary contains a key with policy id, we are not required to do any parsing since\n // the policy id should already be stored in the ObjectReplicationDestinationPolicyId.\n return undefined;\n }\n const orProperties = [];\n for (const key in objectReplicationRecord) {\n const ids = key.split(\"_\");\n const policyPrefix = \"or-\";\n if (ids[0].startsWith(policyPrefix)) {\n ids[0] = ids[0].substring(policyPrefix.length);\n }\n const rule = {\n ruleId: ids[1],\n replicationStatus: objectReplicationRecord[key],\n };\n const policyIndex = orProperties.findIndex((policy) => policy.policyId === ids[0]);\n if (policyIndex > -1) {\n orProperties[policyIndex].rules.push(rule);\n }\n else {\n orProperties.push({\n policyId: ids[0],\n rules: [rule],\n });\n }\n }\n return orProperties;\n}\n/**\n * Attach a TokenCredential to an object.\n *\n * @param thing -\n * @param credential -\n */\nexport function attachCredential(thing, credential) {\n thing.credential = credential;\n return thing;\n}\nexport function httpAuthorizationToString(httpAuthorization) {\n return httpAuthorization ? httpAuthorization.scheme + \" \" + httpAuthorization.value : undefined;\n}\nexport function BlobNameToString(name) {\n if (name.encoded) {\n return decodeURIComponent(name.content);\n }\n else {\n return name.content;\n }\n}\nexport function ConvertInternalResponseOfListBlobFlat(internalResponse) {\n return Object.assign(Object.assign({}, internalResponse), { segment: {\n blobItems: internalResponse.segment.blobItems.map((blobItemInteral) => {\n const blobItem = Object.assign(Object.assign({}, blobItemInteral), { name: BlobNameToString(blobItemInteral.name) });\n return blobItem;\n }),\n } });\n}\nexport function ConvertInternalResponseOfListBlobHierarchy(internalResponse) {\n var _a;\n return Object.assign(Object.assign({}, internalResponse), { segment: {\n blobPrefixes: (_a = internalResponse.segment.blobPrefixes) === null || _a === void 0 ? void 0 : _a.map((blobPrefixInternal) => {\n const blobPrefix = Object.assign(Object.assign({}, blobPrefixInternal), { name: BlobNameToString(blobPrefixInternal.name) });\n return blobPrefix;\n }),\n blobItems: internalResponse.segment.blobItems.map((blobItemInteral) => {\n const blobItem = Object.assign(Object.assign({}, blobItemInteral), { name: BlobNameToString(blobItemInteral.name) });\n return blobItem;\n }),\n } });\n}\nexport function* ExtractPageRangeInfoItems(getPageRangesSegment) {\n let pageRange = [];\n let clearRange = [];\n if (getPageRangesSegment.pageRange)\n pageRange = getPageRangesSegment.pageRange;\n if (getPageRangesSegment.clearRange)\n clearRange = getPageRangesSegment.clearRange;\n let pageRangeIndex = 0;\n let clearRangeIndex = 0;\n while (pageRangeIndex < pageRange.length && clearRangeIndex < clearRange.length) {\n if (pageRange[pageRangeIndex].start < clearRange[clearRangeIndex].start) {\n yield {\n start: pageRange[pageRangeIndex].start,\n end: pageRange[pageRangeIndex].end,\n isClear: false,\n };\n ++pageRangeIndex;\n }\n else {\n yield {\n start: clearRange[clearRangeIndex].start,\n end: clearRange[clearRangeIndex].end,\n isClear: true,\n };\n ++clearRangeIndex;\n }\n }\n for (; pageRangeIndex < pageRange.length; ++pageRangeIndex) {\n yield {\n start: pageRange[pageRangeIndex].start,\n end: pageRange[pageRangeIndex].end,\n isClear: false,\n };\n }\n for (; clearRangeIndex < clearRange.length; ++clearRangeIndex) {\n yield {\n start: clearRange[clearRangeIndex].start,\n end: clearRange[clearRangeIndex].end,\n isClear: true,\n };\n }\n}\n/**\n * Escape the blobName but keep path separator ('/').\n */\nexport function EscapePath(blobName) {\n const split = blobName.split(\"/\");\n for (let i = 0; i < split.length; i++) {\n split[i] = encodeURIComponent(split[i]);\n }\n return split.join(\"/\");\n}\n//# sourceMappingURL=utils.common.js.map","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { handleRef } from './utils'; // ========================================================\n// react/packages/react-reconciler/src/ReactFiber.js\n// ========================================================\n\n/**\n * Detects if a passed element is a Fiber object instead of an element. Is needed as `ReactDOM.findDOMNode()` returns\n * a Fiber in `react-test-renderer` that can cause issues with tests. Is used only in non-production env.\n *\n * @see https://github.com/facebook/react/issues/7371#issuecomment-317396864\n * @see https://github.com/Semantic-Org/Semantic-UI-React/issues/4061#issuecomment-694895617\n */\nfunction isFiberRef(node) {\n if (node === null) {\n return false;\n }\n\n if (node instanceof Element || node instanceof Text) {\n return false;\n }\n\n return !!(node.type && node.tag);\n}\n\nexport var RefFindNode = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(RefFindNode, _React$Component);\n\n function RefFindNode() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.prevNode = void 0;\n return _this;\n }\n\n var _proto = RefFindNode.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n var currentNode = ReactDOM.findDOMNode(this);\n\n if (process.env.NODE_ENV !== 'production') {\n if (isFiberRef(currentNode)) {\n currentNode = null;\n }\n }\n\n this.prevNode = currentNode;\n handleRef(this.props.innerRef, currentNode);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var currentNode = ReactDOM.findDOMNode(this);\n\n if (process.env.NODE_ENV !== 'production') {\n if (isFiberRef(currentNode)) {\n currentNode = null;\n }\n }\n\n if (this.prevNode !== currentNode) {\n this.prevNode = currentNode;\n handleRef(this.props.innerRef, currentNode);\n }\n\n if (prevProps.innerRef !== this.props.innerRef) {\n handleRef(this.props.innerRef, currentNode);\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n handleRef(this.props.innerRef, null);\n delete this.prevNode;\n };\n\n _proto.render = function render() {\n var children = this.props.children;\n return children;\n };\n\n return RefFindNode;\n}(React.Component);\n//# sourceMappingURL=RefFindNode.js.map\n","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport * as React from 'react';\nimport { handleRef } from './utils';\nexport var RefForward = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(RefForward, _React$Component);\n\n function RefForward() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.currentNode = void 0;\n\n _this.handleRefOverride = function (node) {\n var _this$props = _this.props,\n children = _this$props.children,\n innerRef = _this$props.innerRef;\n handleRef(children.ref, node);\n handleRef(innerRef, node);\n _this.currentNode = node;\n };\n\n return _this;\n }\n\n var _proto = RefForward.prototype;\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (prevProps.innerRef !== this.props.innerRef) {\n handleRef(this.props.innerRef, this.currentNode);\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n delete this.currentNode;\n };\n\n _proto.render = function render() {\n var children = this.props.children;\n return /*#__PURE__*/React.cloneElement(children, {\n ref: this.handleRefOverride\n });\n };\n\n return RefForward;\n}(React.Component);\n//# sourceMappingURL=RefForward.js.map\n","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"children\", \"innerRef\"];\nimport * as React from 'react';\nimport * as ReactIs from 'react-is';\nimport { RefFindNode } from './RefFindNode';\nimport { RefForward } from './RefForward';\nexport var Ref = function Ref(props) {\n var children = props.children,\n innerRef = props.innerRef,\n rest = _objectWithoutPropertiesLoose(props, _excluded);\n\n var child = React.Children.only(children);\n var ElementType = ReactIs.isForwardRef(child) ? RefForward : RefFindNode;\n var childWithProps = child && rest && Object.keys(rest).length > 0 ? /*#__PURE__*/React.cloneElement(child, rest) : child;\n return /*#__PURE__*/React.createElement(ElementType, {\n innerRef: innerRef\n }, childWithProps);\n};\n//# sourceMappingURL=Ref.js.map\n","/**\n * The function that correctly handles passing refs.\n *\n * @param ref - An ref object or function\n * @param node - A node that should be passed by ref\n */\nexport var handleRef = function handleRef(ref, node) {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof ref === 'string') {\n throw new Error('We do not support refs as string, this is a legacy API and will be likely to be removed in one of the future releases of React.');\n }\n }\n\n if (typeof ref === 'function') {\n ref(node);\n return;\n }\n\n if (ref !== null && typeof ref === 'object') {\n // The `current` property is defined as readonly, however it's a valid way because\n // `ref` is a mutable object\n ref.current = node;\n }\n};\n/** Checks that the passed object is a valid React ref object. */\n\nexport var isRefObject = function isRefObject(ref) {\n return (// https://github.com/facebook/react/blob/v16.8.2/packages/react-reconciler/src/ReactFiberCommitWork.js#L665\n ref !== null && typeof ref === 'object' && ref.hasOwnProperty('current')\n );\n};\n//# sourceMappingURL=utils.js.map\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar DEFAULT_SIZE = 24;\n\nexports.default = function (_ref) {\n var _ref$fill = _ref.fill,\n fill = _ref$fill === undefined ? 'currentColor' : _ref$fill,\n _ref$width = _ref.width,\n width = _ref$width === undefined ? DEFAULT_SIZE : _ref$width,\n _ref$height = _ref.height,\n height = _ref$height === undefined ? DEFAULT_SIZE : _ref$height,\n _ref$style = _ref.style,\n style = _ref$style === undefined ? {} : _ref$style,\n props = _objectWithoutProperties(_ref, ['fill', 'width', 'height', 'style']);\n\n return _react2.default.createElement(\n 'svg',\n _extends({\n viewBox: '0 0 ' + DEFAULT_SIZE + ' ' + DEFAULT_SIZE,\n style: _extends({ fill: fill, width: width, height: height }, style)\n }, props),\n _react2.default.createElement('path', { d: 'M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z' })\n );\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar DEFAULT_SIZE = 24;\n\nexports.default = function (_ref) {\n var _ref$fill = _ref.fill,\n fill = _ref$fill === undefined ? 'currentColor' : _ref$fill,\n _ref$width = _ref.width,\n width = _ref$width === undefined ? DEFAULT_SIZE : _ref$width,\n _ref$height = _ref.height,\n height = _ref$height === undefined ? DEFAULT_SIZE : _ref$height,\n _ref$style = _ref.style,\n style = _ref$style === undefined ? {} : _ref$style,\n props = _objectWithoutProperties(_ref, ['fill', 'width', 'height', 'style']);\n\n return _react2.default.createElement(\n 'svg',\n _extends({\n viewBox: '0 0 ' + DEFAULT_SIZE + ' ' + DEFAULT_SIZE,\n style: _extends({ fill: fill, width: width, height: height }, style)\n }, props),\n _react2.default.createElement('path', { d: 'M12,18.17L8.83,15L7.42,16.41L12,21L16.59,16.41L15.17,15M12,5.83L15.17,9L16.58,7.59L12,3L7.41,7.59L8.83,9L12,5.83Z' })\n );\n};","import { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@material-ui/utils\";\n\n/* eslint-disable no-use-before-define */\n\n/**\n * Returns a number whose value is limited to the given range.\n *\n * @param {number} value The value to be clamped\n * @param {number} min The lower boundary of the output range\n * @param {number} max The upper boundary of the output range\n * @returns {number} A number in the range [min, max]\n */\nfunction clamp(value) {\n var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n\n if (process.env.NODE_ENV !== 'production') {\n if (value < min || value > max) {\n console.error(\"Material-UI: The value provided \".concat(value, \" is out of range [\").concat(min, \", \").concat(max, \"].\"));\n }\n }\n\n return Math.min(Math.max(min, value), max);\n}\n/**\n * Converts a color from CSS hex format to CSS rgb format.\n *\n * @param {string} color - Hex color, i.e. #nnn or #nnnnnn\n * @returns {string} A CSS rgb color string\n */\n\n\nexport function hexToRgb(color) {\n color = color.substr(1);\n var re = new RegExp(\".{1,\".concat(color.length >= 6 ? 2 : 1, \"}\"), 'g');\n var colors = color.match(re);\n\n if (colors && colors[0].length === 1) {\n colors = colors.map(function (n) {\n return n + n;\n });\n }\n\n return colors ? \"rgb\".concat(colors.length === 4 ? 'a' : '', \"(\").concat(colors.map(function (n, index) {\n return index < 3 ? parseInt(n, 16) : Math.round(parseInt(n, 16) / 255 * 1000) / 1000;\n }).join(', '), \")\") : '';\n}\n\nfunction intToHex(int) {\n var hex = int.toString(16);\n return hex.length === 1 ? \"0\".concat(hex) : hex;\n}\n/**\n * Converts a color from CSS rgb format to CSS hex format.\n *\n * @param {string} color - RGB color, i.e. rgb(n, n, n)\n * @returns {string} A CSS rgb color string, i.e. #nnnnnn\n */\n\n\nexport function rgbToHex(color) {\n // Idempotent\n if (color.indexOf('#') === 0) {\n return color;\n }\n\n var _decomposeColor = decomposeColor(color),\n values = _decomposeColor.values;\n\n return \"#\".concat(values.map(function (n) {\n return intToHex(n);\n }).join(''));\n}\n/**\n * Converts a color from hsl format to rgb format.\n *\n * @param {string} color - HSL color values\n * @returns {string} rgb color values\n */\n\nexport function hslToRgb(color) {\n color = decomposeColor(color);\n var _color = color,\n values = _color.values;\n var h = values[0];\n var s = values[1] / 100;\n var l = values[2] / 100;\n var a = s * Math.min(l, 1 - l);\n\n var f = function f(n) {\n var k = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (n + h / 30) % 12;\n return l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n };\n\n var type = 'rgb';\n var rgb = [Math.round(f(0) * 255), Math.round(f(8) * 255), Math.round(f(4) * 255)];\n\n if (color.type === 'hsla') {\n type += 'a';\n rgb.push(values[3]);\n }\n\n return recomposeColor({\n type: type,\n values: rgb\n });\n}\n/**\n * Returns an object with the type and values of a color.\n *\n * Note: Does not support rgb % values.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {object} - A MUI color object: {type: string, values: number[]}\n */\n\nexport function decomposeColor(color) {\n // Idempotent\n if (color.type) {\n return color;\n }\n\n if (color.charAt(0) === '#') {\n return decomposeColor(hexToRgb(color));\n }\n\n var marker = color.indexOf('(');\n var type = color.substring(0, marker);\n\n if (['rgb', 'rgba', 'hsl', 'hsla'].indexOf(type) === -1) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: Unsupported `\".concat(color, \"` color.\\nWe support the following formats: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla().\") : _formatMuiErrorMessage(3, color));\n }\n\n var values = color.substring(marker + 1, color.length - 1).split(',');\n values = values.map(function (value) {\n return parseFloat(value);\n });\n return {\n type: type,\n values: values\n };\n}\n/**\n * Converts a color object with type and values to a string.\n *\n * @param {object} color - Decomposed color\n * @param {string} color.type - One of: 'rgb', 'rgba', 'hsl', 'hsla'\n * @param {array} color.values - [n,n,n] or [n,n,n,n]\n * @returns {string} A CSS color string\n */\n\nexport function recomposeColor(color) {\n var type = color.type;\n var values = color.values;\n\n if (type.indexOf('rgb') !== -1) {\n // Only convert the first 3 values to int (i.e. not alpha)\n values = values.map(function (n, i) {\n return i < 3 ? parseInt(n, 10) : n;\n });\n } else if (type.indexOf('hsl') !== -1) {\n values[1] = \"\".concat(values[1], \"%\");\n values[2] = \"\".concat(values[2], \"%\");\n }\n\n return \"\".concat(type, \"(\").concat(values.join(', '), \")\");\n}\n/**\n * Calculates the contrast ratio between two colors.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n *\n * @param {string} foreground - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {string} background - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} A contrast ratio value in the range 0 - 21.\n */\n\nexport function getContrastRatio(foreground, background) {\n var lumA = getLuminance(foreground);\n var lumB = getLuminance(background);\n return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);\n}\n/**\n * The relative brightness of any point in a color space,\n * normalized to 0 for darkest black and 1 for lightest white.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} The relative brightness of the color in the range 0 - 1\n */\n\nexport function getLuminance(color) {\n color = decomposeColor(color);\n var rgb = color.type === 'hsl' ? decomposeColor(hslToRgb(color)).values : color.values;\n rgb = rgb.map(function (val) {\n val /= 255; // normalized\n\n return val <= 0.03928 ? val / 12.92 : Math.pow((val + 0.055) / 1.055, 2.4);\n }); // Truncate at 3 digits\n\n return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));\n}\n/**\n * Darken or lighten a color, depending on its luminance.\n * Light colors are darkened, dark colors are lightened.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} coefficient=0.15 - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\nexport function emphasize(color) {\n var coefficient = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0.15;\n return getLuminance(color) > 0.5 ? darken(color, coefficient) : lighten(color, coefficient);\n}\nvar warnedOnce = false;\n/**\n * Set the absolute transparency of a color.\n * Any existing alpha values are overwritten.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} value - value to set the alpha channel to in the range 0 -1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n *\n * @deprecated\n * Use `import { alpha } from '@material-ui/core/styles'` instead.\n */\n\nexport function fade(color, value) {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce) {\n warnedOnce = true;\n console.error(['Material-UI: The `fade` color utility was renamed to `alpha` to better describe its functionality.', '', \"You should use `import { alpha } from '@material-ui/core/styles'`\"].join('\\n'));\n }\n }\n\n return alpha(color, value);\n}\n/**\n * Set the absolute transparency of a color.\n * Any existing alpha value is overwritten.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} value - value to set the alpha channel to in the range 0-1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\nexport function alpha(color, value) {\n color = decomposeColor(color);\n value = clamp(value);\n\n if (color.type === 'rgb' || color.type === 'hsl') {\n color.type += 'a';\n }\n\n color.values[3] = value;\n return recomposeColor(color);\n}\n/**\n * Darkens a color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\nexport function darken(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clamp(coefficient);\n\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] *= 1 - coefficient;\n } else if (color.type.indexOf('rgb') !== -1) {\n for (var i = 0; i < 3; i += 1) {\n color.values[i] *= 1 - coefficient;\n }\n }\n\n return recomposeColor(color);\n}\n/**\n * Lightens a color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\nexport function lighten(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clamp(coefficient);\n\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] += (100 - color.values[2]) * coefficient;\n } else if (color.type.indexOf('rgb') !== -1) {\n for (var i = 0; i < 3; i += 1) {\n color.values[i] += (255 - color.values[i]) * coefficient;\n }\n }\n\n return recomposeColor(color);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\n// Sorted ASC by size. That's important.\n// It can't be configured as it's used statically for propTypes.\nexport var keys = ['xs', 'sm', 'md', 'lg', 'xl']; // Keep in mind that @media is inclusive by the CSS specification.\n\nexport default function createBreakpoints(breakpoints) {\n var _breakpoints$values = breakpoints.values,\n values = _breakpoints$values === void 0 ? {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920\n } : _breakpoints$values,\n _breakpoints$unit = breakpoints.unit,\n unit = _breakpoints$unit === void 0 ? 'px' : _breakpoints$unit,\n _breakpoints$step = breakpoints.step,\n step = _breakpoints$step === void 0 ? 5 : _breakpoints$step,\n other = _objectWithoutProperties(breakpoints, [\"values\", \"unit\", \"step\"]);\n\n function up(key) {\n var value = typeof values[key] === 'number' ? values[key] : key;\n return \"@media (min-width:\".concat(value).concat(unit, \")\");\n }\n\n function down(key) {\n var endIndex = keys.indexOf(key) + 1;\n var upperbound = values[keys[endIndex]];\n\n if (endIndex === keys.length) {\n // xl down applies to all sizes\n return up('xs');\n }\n\n var value = typeof upperbound === 'number' && endIndex > 0 ? upperbound : key;\n return \"@media (max-width:\".concat(value - step / 100).concat(unit, \")\");\n }\n\n function between(start, end) {\n var endIndex = keys.indexOf(end);\n\n if (endIndex === keys.length - 1) {\n return up(start);\n }\n\n return \"@media (min-width:\".concat(typeof values[start] === 'number' ? values[start] : start).concat(unit, \") and \") + \"(max-width:\".concat((endIndex !== -1 && typeof values[keys[endIndex + 1]] === 'number' ? values[keys[endIndex + 1]] : end) - step / 100).concat(unit, \")\");\n }\n\n function only(key) {\n return between(key, key);\n }\n\n var warnedOnce = false;\n\n function width(key) {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce) {\n warnedOnce = true;\n console.warn([\"Material-UI: The `theme.breakpoints.width` utility is deprecated because it's redundant.\", 'Use the `theme.breakpoints.values` instead.'].join('\\n'));\n }\n }\n\n return values[key];\n }\n\n return _extends({\n keys: keys,\n values: values,\n up: up,\n down: down,\n between: between,\n only: only,\n width: width\n }, other);\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function createMixins(breakpoints, spacing, mixins) {\n var _toolbar;\n\n return _extends({\n gutters: function gutters() {\n var styles = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n console.warn(['Material-UI: theme.mixins.gutters() is deprecated.', 'You can use the source of the mixin directly:', \"\\n paddingLeft: theme.spacing(2),\\n paddingRight: theme.spacing(2),\\n [theme.breakpoints.up('sm')]: {\\n paddingLeft: theme.spacing(3),\\n paddingRight: theme.spacing(3),\\n },\\n \"].join('\\n'));\n return _extends({\n paddingLeft: spacing(2),\n paddingRight: spacing(2)\n }, styles, _defineProperty({}, breakpoints.up('sm'), _extends({\n paddingLeft: spacing(3),\n paddingRight: spacing(3)\n }, styles[breakpoints.up('sm')])));\n },\n toolbar: (_toolbar = {\n minHeight: 56\n }, _defineProperty(_toolbar, \"\".concat(breakpoints.up('xs'), \" and (orientation: landscape)\"), {\n minHeight: 48\n }), _defineProperty(_toolbar, breakpoints.up('sm'), {\n minHeight: 64\n }), _toolbar)\n }, mixins);\n}","var common = {\n black: '#000',\n white: '#fff'\n};\nexport default common;","var grey = {\n 50: '#fafafa',\n 100: '#f5f5f5',\n 200: '#eeeeee',\n 300: '#e0e0e0',\n 400: '#bdbdbd',\n 500: '#9e9e9e',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n A100: '#d5d5d5',\n A200: '#aaaaaa',\n A400: '#303030',\n A700: '#616161'\n};\nexport default grey;","var indigo = {\n 50: '#e8eaf6',\n 100: '#c5cae9',\n 200: '#9fa8da',\n 300: '#7986cb',\n 400: '#5c6bc0',\n 500: '#3f51b5',\n 600: '#3949ab',\n 700: '#303f9f',\n 800: '#283593',\n 900: '#1a237e',\n A100: '#8c9eff',\n A200: '#536dfe',\n A400: '#3d5afe',\n A700: '#304ffe'\n};\nexport default indigo;","var pink = {\n 50: '#fce4ec',\n 100: '#f8bbd0',\n 200: '#f48fb1',\n 300: '#f06292',\n 400: '#ec407a',\n 500: '#e91e63',\n 600: '#d81b60',\n 700: '#c2185b',\n 800: '#ad1457',\n 900: '#880e4f',\n A100: '#ff80ab',\n A200: '#ff4081',\n A400: '#f50057',\n A700: '#c51162'\n};\nexport default pink;","var red = {\n 50: '#ffebee',\n 100: '#ffcdd2',\n 200: '#ef9a9a',\n 300: '#e57373',\n 400: '#ef5350',\n 500: '#f44336',\n 600: '#e53935',\n 700: '#d32f2f',\n 800: '#c62828',\n 900: '#b71c1c',\n A100: '#ff8a80',\n A200: '#ff5252',\n A400: '#ff1744',\n A700: '#d50000'\n};\nexport default red;","var orange = {\n 50: '#fff3e0',\n 100: '#ffe0b2',\n 200: '#ffcc80',\n 300: '#ffb74d',\n 400: '#ffa726',\n 500: '#ff9800',\n 600: '#fb8c00',\n 700: '#f57c00',\n 800: '#ef6c00',\n 900: '#e65100',\n A100: '#ffd180',\n A200: '#ffab40',\n A400: '#ff9100',\n A700: '#ff6d00'\n};\nexport default orange;","var blue = {\n 50: '#e3f2fd',\n 100: '#bbdefb',\n 200: '#90caf9',\n 300: '#64b5f6',\n 400: '#42a5f5',\n 500: '#2196f3',\n 600: '#1e88e5',\n 700: '#1976d2',\n 800: '#1565c0',\n 900: '#0d47a1',\n A100: '#82b1ff',\n A200: '#448aff',\n A400: '#2979ff',\n A700: '#2962ff'\n};\nexport default blue;","var green = {\n 50: '#e8f5e9',\n 100: '#c8e6c9',\n 200: '#a5d6a7',\n 300: '#81c784',\n 400: '#66bb6a',\n 500: '#4caf50',\n 600: '#43a047',\n 700: '#388e3c',\n 800: '#2e7d32',\n 900: '#1b5e20',\n A100: '#b9f6ca',\n A200: '#69f0ae',\n A400: '#00e676',\n A700: '#00c853'\n};\nexport default green;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@material-ui/utils\";\nimport { deepmerge } from '@material-ui/utils';\nimport common from '../colors/common';\nimport grey from '../colors/grey';\nimport indigo from '../colors/indigo';\nimport pink from '../colors/pink';\nimport red from '../colors/red';\nimport orange from '../colors/orange';\nimport blue from '../colors/blue';\nimport green from '../colors/green';\nimport { darken, getContrastRatio, lighten } from './colorManipulator';\nexport var light = {\n // The colors used to style the text.\n text: {\n // The most important text.\n primary: 'rgba(0, 0, 0, 0.87)',\n // Secondary text.\n secondary: 'rgba(0, 0, 0, 0.54)',\n // Disabled text have even lower visual prominence.\n disabled: 'rgba(0, 0, 0, 0.38)',\n // Text hints.\n hint: 'rgba(0, 0, 0, 0.38)'\n },\n // The color used to divide different elements.\n divider: 'rgba(0, 0, 0, 0.12)',\n // The background colors used to style the surfaces.\n // Consistency between these values is important.\n background: {\n paper: common.white,\n default: grey[50]\n },\n // The colors used to style the action elements.\n action: {\n // The color of an active action like an icon button.\n active: 'rgba(0, 0, 0, 0.54)',\n // The color of an hovered action.\n hover: 'rgba(0, 0, 0, 0.04)',\n hoverOpacity: 0.04,\n // The color of a selected action.\n selected: 'rgba(0, 0, 0, 0.08)',\n selectedOpacity: 0.08,\n // The color of a disabled action.\n disabled: 'rgba(0, 0, 0, 0.26)',\n // The background color of a disabled action.\n disabledBackground: 'rgba(0, 0, 0, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(0, 0, 0, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.12\n }\n};\nexport var dark = {\n text: {\n primary: common.white,\n secondary: 'rgba(255, 255, 255, 0.7)',\n disabled: 'rgba(255, 255, 255, 0.5)',\n hint: 'rgba(255, 255, 255, 0.5)',\n icon: 'rgba(255, 255, 255, 0.5)'\n },\n divider: 'rgba(255, 255, 255, 0.12)',\n background: {\n paper: grey[800],\n default: '#303030'\n },\n action: {\n active: common.white,\n hover: 'rgba(255, 255, 255, 0.08)',\n hoverOpacity: 0.08,\n selected: 'rgba(255, 255, 255, 0.16)',\n selectedOpacity: 0.16,\n disabled: 'rgba(255, 255, 255, 0.3)',\n disabledBackground: 'rgba(255, 255, 255, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(255, 255, 255, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.24\n }\n};\n\nfunction addLightOrDark(intent, direction, shade, tonalOffset) {\n var tonalOffsetLight = tonalOffset.light || tonalOffset;\n var tonalOffsetDark = tonalOffset.dark || tonalOffset * 1.5;\n\n if (!intent[direction]) {\n if (intent.hasOwnProperty(shade)) {\n intent[direction] = intent[shade];\n } else if (direction === 'light') {\n intent.light = lighten(intent.main, tonalOffsetLight);\n } else if (direction === 'dark') {\n intent.dark = darken(intent.main, tonalOffsetDark);\n }\n }\n}\n\nexport default function createPalette(palette) {\n var _palette$primary = palette.primary,\n primary = _palette$primary === void 0 ? {\n light: indigo[300],\n main: indigo[500],\n dark: indigo[700]\n } : _palette$primary,\n _palette$secondary = palette.secondary,\n secondary = _palette$secondary === void 0 ? {\n light: pink.A200,\n main: pink.A400,\n dark: pink.A700\n } : _palette$secondary,\n _palette$error = palette.error,\n error = _palette$error === void 0 ? {\n light: red[300],\n main: red[500],\n dark: red[700]\n } : _palette$error,\n _palette$warning = palette.warning,\n warning = _palette$warning === void 0 ? {\n light: orange[300],\n main: orange[500],\n dark: orange[700]\n } : _palette$warning,\n _palette$info = palette.info,\n info = _palette$info === void 0 ? {\n light: blue[300],\n main: blue[500],\n dark: blue[700]\n } : _palette$info,\n _palette$success = palette.success,\n success = _palette$success === void 0 ? {\n light: green[300],\n main: green[500],\n dark: green[700]\n } : _palette$success,\n _palette$type = palette.type,\n type = _palette$type === void 0 ? 'light' : _palette$type,\n _palette$contrastThre = palette.contrastThreshold,\n contrastThreshold = _palette$contrastThre === void 0 ? 3 : _palette$contrastThre,\n _palette$tonalOffset = palette.tonalOffset,\n tonalOffset = _palette$tonalOffset === void 0 ? 0.2 : _palette$tonalOffset,\n other = _objectWithoutProperties(palette, [\"primary\", \"secondary\", \"error\", \"warning\", \"info\", \"success\", \"type\", \"contrastThreshold\", \"tonalOffset\"]); // Use the same logic as\n // Bootstrap: https://github.com/twbs/bootstrap/blob/1d6e3710dd447de1a200f29e8fa521f8a0908f70/scss/_functions.scss#L59\n // and material-components-web https://github.com/material-components/material-components-web/blob/ac46b8863c4dab9fc22c4c662dc6bd1b65dd652f/packages/mdc-theme/_functions.scss#L54\n\n\n function getContrastText(background) {\n var contrastText = getContrastRatio(background, dark.text.primary) >= contrastThreshold ? dark.text.primary : light.text.primary;\n\n if (process.env.NODE_ENV !== 'production') {\n var contrast = getContrastRatio(background, contrastText);\n\n if (contrast < 3) {\n console.error([\"Material-UI: The contrast ratio of \".concat(contrast, \":1 for \").concat(contrastText, \" on \").concat(background), 'falls below the WCAG recommended absolute minimum contrast ratio of 3:1.', 'https://www.w3.org/TR/2008/REC-WCAG20-20081211/#visual-audio-contrast-contrast'].join('\\n'));\n }\n }\n\n return contrastText;\n }\n\n var augmentColor = function augmentColor(color) {\n var mainShade = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 500;\n var lightShade = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 300;\n var darkShade = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 700;\n color = _extends({}, color);\n\n if (!color.main && color[mainShade]) {\n color.main = color[mainShade];\n }\n\n if (!color.main) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: The color provided to augmentColor(color) is invalid.\\nThe color object needs to have a `main` property or a `\".concat(mainShade, \"` property.\") : _formatMuiErrorMessage(4, mainShade));\n }\n\n if (typeof color.main !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: The color provided to augmentColor(color) is invalid.\\n`color.main` should be a string, but `\".concat(JSON.stringify(color.main), \"` was provided instead.\\n\\nDid you intend to use one of the following approaches?\\n\\nimport {\\xA0green } from \\\"@material-ui/core/colors\\\";\\n\\nconst theme1 = createTheme({ palette: {\\n primary: green,\\n} });\\n\\nconst theme2 = createTheme({ palette: {\\n primary: { main: green[500] },\\n} });\") : _formatMuiErrorMessage(5, JSON.stringify(color.main)));\n }\n\n addLightOrDark(color, 'light', lightShade, tonalOffset);\n addLightOrDark(color, 'dark', darkShade, tonalOffset);\n\n if (!color.contrastText) {\n color.contrastText = getContrastText(color.main);\n }\n\n return color;\n };\n\n var types = {\n dark: dark,\n light: light\n };\n\n if (process.env.NODE_ENV !== 'production') {\n if (!types[type]) {\n console.error(\"Material-UI: The palette type `\".concat(type, \"` is not supported.\"));\n }\n }\n\n var paletteOutput = deepmerge(_extends({\n // A collection of common colors.\n common: common,\n // The palette type, can be light or dark.\n type: type,\n // The colors used to represent primary interface elements for a user.\n primary: augmentColor(primary),\n // The colors used to represent secondary interface elements for a user.\n secondary: augmentColor(secondary, 'A400', 'A200', 'A700'),\n // The colors used to represent interface elements that the user should be made aware of.\n error: augmentColor(error),\n // The colors used to represent potentially dangerous actions or important messages.\n warning: augmentColor(warning),\n // The colors used to present information to the user that is neutral and not necessarily important.\n info: augmentColor(info),\n // The colors used to indicate the successful completion of an action that user triggered.\n success: augmentColor(success),\n // The grey colors.\n grey: grey,\n // Used by `getContrastText()` to maximize the contrast between\n // the background and the text.\n contrastThreshold: contrastThreshold,\n // Takes a background color and returns the text color that maximizes the contrast.\n getContrastText: getContrastText,\n // Generate a rich color object.\n augmentColor: augmentColor,\n // Used by the functions below to shift a color's luminance by approximately\n // two indexes within its tonal palette.\n // E.g., shift from Red 500 to Red 300 or Red 700.\n tonalOffset: tonalOffset\n }, types[type]), other);\n return paletteOutput;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport { deepmerge } from '@material-ui/utils';\n\nfunction round(value) {\n return Math.round(value * 1e5) / 1e5;\n}\n\nvar warnedOnce = false;\n\nfunction roundWithDeprecationWarning(value) {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce) {\n console.warn(['Material-UI: The `theme.typography.round` helper is deprecated.', 'Head to https://mui.com/r/migration-v4/#theme for a migration path.'].join('\\n'));\n warnedOnce = true;\n }\n }\n\n return round(value);\n}\n\nvar caseAllCaps = {\n textTransform: 'uppercase'\n};\nvar defaultFontFamily = '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif';\n/**\n * @see @link{https://material.io/design/typography/the-type-system.html}\n * @see @link{https://material.io/design/typography/understanding-typography.html}\n */\n\nexport default function createTypography(palette, typography) {\n var _ref = typeof typography === 'function' ? typography(palette) : typography,\n _ref$fontFamily = _ref.fontFamily,\n fontFamily = _ref$fontFamily === void 0 ? defaultFontFamily : _ref$fontFamily,\n _ref$fontSize = _ref.fontSize,\n fontSize = _ref$fontSize === void 0 ? 14 : _ref$fontSize,\n _ref$fontWeightLight = _ref.fontWeightLight,\n fontWeightLight = _ref$fontWeightLight === void 0 ? 300 : _ref$fontWeightLight,\n _ref$fontWeightRegula = _ref.fontWeightRegular,\n fontWeightRegular = _ref$fontWeightRegula === void 0 ? 400 : _ref$fontWeightRegula,\n _ref$fontWeightMedium = _ref.fontWeightMedium,\n fontWeightMedium = _ref$fontWeightMedium === void 0 ? 500 : _ref$fontWeightMedium,\n _ref$fontWeightBold = _ref.fontWeightBold,\n fontWeightBold = _ref$fontWeightBold === void 0 ? 700 : _ref$fontWeightBold,\n _ref$htmlFontSize = _ref.htmlFontSize,\n htmlFontSize = _ref$htmlFontSize === void 0 ? 16 : _ref$htmlFontSize,\n allVariants = _ref.allVariants,\n pxToRem2 = _ref.pxToRem,\n other = _objectWithoutProperties(_ref, [\"fontFamily\", \"fontSize\", \"fontWeightLight\", \"fontWeightRegular\", \"fontWeightMedium\", \"fontWeightBold\", \"htmlFontSize\", \"allVariants\", \"pxToRem\"]);\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof fontSize !== 'number') {\n console.error('Material-UI: `fontSize` is required to be a number.');\n }\n\n if (typeof htmlFontSize !== 'number') {\n console.error('Material-UI: `htmlFontSize` is required to be a number.');\n }\n }\n\n var coef = fontSize / 14;\n\n var pxToRem = pxToRem2 || function (size) {\n return \"\".concat(size / htmlFontSize * coef, \"rem\");\n };\n\n var buildVariant = function buildVariant(fontWeight, size, lineHeight, letterSpacing, casing) {\n return _extends({\n fontFamily: fontFamily,\n fontWeight: fontWeight,\n fontSize: pxToRem(size),\n // Unitless following https://meyerweb.com/eric/thoughts/2006/02/08/unitless-line-heights/\n lineHeight: lineHeight\n }, fontFamily === defaultFontFamily ? {\n letterSpacing: \"\".concat(round(letterSpacing / size), \"em\")\n } : {}, casing, allVariants);\n };\n\n var variants = {\n h1: buildVariant(fontWeightLight, 96, 1.167, -1.5),\n h2: buildVariant(fontWeightLight, 60, 1.2, -0.5),\n h3: buildVariant(fontWeightRegular, 48, 1.167, 0),\n h4: buildVariant(fontWeightRegular, 34, 1.235, 0.25),\n h5: buildVariant(fontWeightRegular, 24, 1.334, 0),\n h6: buildVariant(fontWeightMedium, 20, 1.6, 0.15),\n subtitle1: buildVariant(fontWeightRegular, 16, 1.75, 0.15),\n subtitle2: buildVariant(fontWeightMedium, 14, 1.57, 0.1),\n body1: buildVariant(fontWeightRegular, 16, 1.5, 0.15),\n body2: buildVariant(fontWeightRegular, 14, 1.43, 0.15),\n button: buildVariant(fontWeightMedium, 14, 1.75, 0.4, caseAllCaps),\n caption: buildVariant(fontWeightRegular, 12, 1.66, 0.4),\n overline: buildVariant(fontWeightRegular, 12, 2.66, 1, caseAllCaps)\n };\n return deepmerge(_extends({\n htmlFontSize: htmlFontSize,\n pxToRem: pxToRem,\n round: roundWithDeprecationWarning,\n // TODO v5: remove\n fontFamily: fontFamily,\n fontSize: fontSize,\n fontWeightLight: fontWeightLight,\n fontWeightRegular: fontWeightRegular,\n fontWeightMedium: fontWeightMedium,\n fontWeightBold: fontWeightBold\n }, variants), other, {\n clone: false // No need to clone deep\n\n });\n}","var shadowKeyUmbraOpacity = 0.2;\nvar shadowKeyPenumbraOpacity = 0.14;\nvar shadowAmbientShadowOpacity = 0.12;\n\nfunction createShadow() {\n return [\"\".concat(arguments.length <= 0 ? undefined : arguments[0], \"px \").concat(arguments.length <= 1 ? undefined : arguments[1], \"px \").concat(arguments.length <= 2 ? undefined : arguments[2], \"px \").concat(arguments.length <= 3 ? undefined : arguments[3], \"px rgba(0,0,0,\").concat(shadowKeyUmbraOpacity, \")\"), \"\".concat(arguments.length <= 4 ? undefined : arguments[4], \"px \").concat(arguments.length <= 5 ? undefined : arguments[5], \"px \").concat(arguments.length <= 6 ? undefined : arguments[6], \"px \").concat(arguments.length <= 7 ? undefined : arguments[7], \"px rgba(0,0,0,\").concat(shadowKeyPenumbraOpacity, \")\"), \"\".concat(arguments.length <= 8 ? undefined : arguments[8], \"px \").concat(arguments.length <= 9 ? undefined : arguments[9], \"px \").concat(arguments.length <= 10 ? undefined : arguments[10], \"px \").concat(arguments.length <= 11 ? undefined : arguments[11], \"px rgba(0,0,0,\").concat(shadowAmbientShadowOpacity, \")\")].join(',');\n} // Values from https://github.com/material-components/material-components-web/blob/be8747f94574669cb5e7add1a7c54fa41a89cec7/packages/mdc-elevation/_variables.scss\n\n\nvar shadows = ['none', createShadow(0, 2, 1, -1, 0, 1, 1, 0, 0, 1, 3, 0), createShadow(0, 3, 1, -2, 0, 2, 2, 0, 0, 1, 5, 0), createShadow(0, 3, 3, -2, 0, 3, 4, 0, 0, 1, 8, 0), createShadow(0, 2, 4, -1, 0, 4, 5, 0, 0, 1, 10, 0), createShadow(0, 3, 5, -1, 0, 5, 8, 0, 0, 1, 14, 0), createShadow(0, 3, 5, -1, 0, 6, 10, 0, 0, 1, 18, 0), createShadow(0, 4, 5, -2, 0, 7, 10, 1, 0, 2, 16, 1), createShadow(0, 5, 5, -3, 0, 8, 10, 1, 0, 3, 14, 2), createShadow(0, 5, 6, -3, 0, 9, 12, 1, 0, 3, 16, 2), createShadow(0, 6, 6, -3, 0, 10, 14, 1, 0, 4, 18, 3), createShadow(0, 6, 7, -4, 0, 11, 15, 1, 0, 4, 20, 3), createShadow(0, 7, 8, -4, 0, 12, 17, 2, 0, 5, 22, 4), createShadow(0, 7, 8, -4, 0, 13, 19, 2, 0, 5, 24, 4), createShadow(0, 7, 9, -4, 0, 14, 21, 2, 0, 5, 26, 4), createShadow(0, 8, 9, -5, 0, 15, 22, 2, 0, 6, 28, 5), createShadow(0, 8, 10, -5, 0, 16, 24, 2, 0, 6, 30, 5), createShadow(0, 8, 11, -5, 0, 17, 26, 2, 0, 6, 32, 5), createShadow(0, 9, 11, -5, 0, 18, 28, 2, 0, 7, 34, 6), createShadow(0, 9, 12, -6, 0, 19, 29, 2, 0, 7, 36, 6), createShadow(0, 10, 13, -6, 0, 20, 31, 3, 0, 8, 38, 7), createShadow(0, 10, 13, -6, 0, 21, 33, 3, 0, 8, 40, 7), createShadow(0, 10, 14, -6, 0, 22, 35, 3, 0, 8, 42, 7), createShadow(0, 11, 14, -7, 0, 23, 36, 3, 0, 9, 44, 8), createShadow(0, 11, 15, -7, 0, 24, 38, 3, 0, 9, 46, 8)];\nexport default shadows;","var shape = {\n borderRadius: 4\n};\nexport default shape;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport PropTypes from 'prop-types';\nimport merge from './merge'; // The breakpoint **start** at this value.\n// For instance with the first breakpoint xs: [xs, sm[.\n\nvar values = {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920\n};\nvar defaultBreakpoints = {\n // Sorted ASC by size. That's important.\n // It can't be configured as it's used statically for propTypes.\n keys: ['xs', 'sm', 'md', 'lg', 'xl'],\n up: function up(key) {\n return \"@media (min-width:\".concat(values[key], \"px)\");\n }\n};\nexport function handleBreakpoints(props, propValue, styleFromPropValue) {\n if (process.env.NODE_ENV !== 'production') {\n if (!props.theme) {\n console.error('Material-UI: You are calling a style function without a theme value.');\n }\n }\n\n if (Array.isArray(propValue)) {\n var themeBreakpoints = props.theme.breakpoints || defaultBreakpoints;\n return propValue.reduce(function (acc, item, index) {\n acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]);\n return acc;\n }, {});\n }\n\n if (_typeof(propValue) === 'object') {\n var _themeBreakpoints = props.theme.breakpoints || defaultBreakpoints;\n\n return Object.keys(propValue).reduce(function (acc, breakpoint) {\n acc[_themeBreakpoints.up(breakpoint)] = styleFromPropValue(propValue[breakpoint]);\n return acc;\n }, {});\n }\n\n var output = styleFromPropValue(propValue);\n return output;\n}\n\nfunction breakpoints(styleFunction) {\n var newStyleFunction = function newStyleFunction(props) {\n var base = styleFunction(props);\n var themeBreakpoints = props.theme.breakpoints || defaultBreakpoints;\n var extended = themeBreakpoints.keys.reduce(function (acc, key) {\n if (props[key]) {\n acc = acc || {};\n acc[themeBreakpoints.up(key)] = styleFunction(_extends({\n theme: props.theme\n }, props[key]));\n }\n\n return acc;\n }, null);\n return merge(base, extended);\n };\n\n newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? _extends({}, styleFunction.propTypes, {\n xs: PropTypes.object,\n sm: PropTypes.object,\n md: PropTypes.object,\n lg: PropTypes.object,\n xl: PropTypes.object\n }) : {};\n newStyleFunction.filterProps = ['xs', 'sm', 'md', 'lg', 'xl'].concat(_toConsumableArray(styleFunction.filterProps));\n return newStyleFunction;\n}\n\nexport default breakpoints;","import { deepmerge } from '@material-ui/utils';\n\nfunction merge(acc, item) {\n if (!item) {\n return acc;\n }\n\n return deepmerge(acc, item, {\n clone: false // No need to clone deep, it's way faster.\n\n });\n}\n\nexport default merge;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nimport merge from './merge';\nimport memoize from './memoize';\nvar properties = {\n m: 'margin',\n p: 'padding'\n};\nvar directions = {\n t: 'Top',\n r: 'Right',\n b: 'Bottom',\n l: 'Left',\n x: ['Left', 'Right'],\n y: ['Top', 'Bottom']\n};\nvar aliases = {\n marginX: 'mx',\n marginY: 'my',\n paddingX: 'px',\n paddingY: 'py'\n}; // memoize() impact:\n// From 300,000 ops/sec\n// To 350,000 ops/sec\n\nvar getCssProperties = memoize(function (prop) {\n // It's not a shorthand notation.\n if (prop.length > 2) {\n if (aliases[prop]) {\n prop = aliases[prop];\n } else {\n return [prop];\n }\n }\n\n var _prop$split = prop.split(''),\n _prop$split2 = _slicedToArray(_prop$split, 2),\n a = _prop$split2[0],\n b = _prop$split2[1];\n\n var property = properties[a];\n var direction = directions[b] || '';\n return Array.isArray(direction) ? direction.map(function (dir) {\n return property + dir;\n }) : [property + direction];\n});\nvar spacingKeys = ['m', 'mt', 'mr', 'mb', 'ml', 'mx', 'my', 'p', 'pt', 'pr', 'pb', 'pl', 'px', 'py', 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'paddingX', 'paddingY'];\nexport function createUnarySpacing(theme) {\n var themeSpacing = theme.spacing || 8;\n\n if (typeof themeSpacing === 'number') {\n return function (abs) {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof abs !== 'number') {\n console.error(\"Material-UI: Expected spacing argument to be a number, got \".concat(abs, \".\"));\n }\n }\n\n return themeSpacing * abs;\n };\n }\n\n if (Array.isArray(themeSpacing)) {\n return function (abs) {\n if (process.env.NODE_ENV !== 'production') {\n if (abs > themeSpacing.length - 1) {\n console.error([\"Material-UI: The value provided (\".concat(abs, \") overflows.\"), \"The supported values are: \".concat(JSON.stringify(themeSpacing), \".\"), \"\".concat(abs, \" > \").concat(themeSpacing.length - 1, \", you need to add the missing values.\")].join('\\n'));\n }\n }\n\n return themeSpacing[abs];\n };\n }\n\n if (typeof themeSpacing === 'function') {\n return themeSpacing;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n console.error([\"Material-UI: The `theme.spacing` value (\".concat(themeSpacing, \") is invalid.\"), 'It should be a number, an array or a function.'].join('\\n'));\n }\n\n return function () {\n return undefined;\n };\n}\n\nfunction getValue(transformer, propValue) {\n if (typeof propValue === 'string' || propValue == null) {\n return propValue;\n }\n\n var abs = Math.abs(propValue);\n var transformed = transformer(abs);\n\n if (propValue >= 0) {\n return transformed;\n }\n\n if (typeof transformed === 'number') {\n return -transformed;\n }\n\n return \"-\".concat(transformed);\n}\n\nfunction getStyleFromPropValue(cssProperties, transformer) {\n return function (propValue) {\n return cssProperties.reduce(function (acc, cssProperty) {\n acc[cssProperty] = getValue(transformer, propValue);\n return acc;\n }, {});\n };\n}\n\nfunction spacing(props) {\n var theme = props.theme;\n var transformer = createUnarySpacing(theme);\n return Object.keys(props).map(function (prop) {\n // Using a hash computation over an array iteration could be faster, but with only 28 items,\n // it's doesn't worth the bundle size.\n if (spacingKeys.indexOf(prop) === -1) {\n return null;\n }\n\n var cssProperties = getCssProperties(prop);\n var styleFromPropValue = getStyleFromPropValue(cssProperties, transformer);\n var propValue = props[prop];\n return handleBreakpoints(props, propValue, styleFromPropValue);\n }).reduce(merge, {});\n}\n\nspacing.propTypes = process.env.NODE_ENV !== 'production' ? spacingKeys.reduce(function (obj, key) {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nspacing.filterProps = spacingKeys;\nexport default spacing;","export default function memoize(fn) {\n var cache = {};\n return function (arg) {\n if (cache[arg] === undefined) {\n cache[arg] = fn(arg);\n }\n\n return cache[arg];\n };\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport { deepmerge } from '@material-ui/utils';\nimport createBreakpoints from './createBreakpoints';\nimport createMixins from './createMixins';\nimport createPalette from './createPalette';\nimport createTypography from './createTypography';\nimport shadows from './shadows';\nimport shape from './shape';\nimport createSpacing from './createSpacing';\nimport transitions from './transitions';\nimport zIndex from './zIndex';\n\nfunction createTheme() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var _options$breakpoints = options.breakpoints,\n breakpointsInput = _options$breakpoints === void 0 ? {} : _options$breakpoints,\n _options$mixins = options.mixins,\n mixinsInput = _options$mixins === void 0 ? {} : _options$mixins,\n _options$palette = options.palette,\n paletteInput = _options$palette === void 0 ? {} : _options$palette,\n spacingInput = options.spacing,\n _options$typography = options.typography,\n typographyInput = _options$typography === void 0 ? {} : _options$typography,\n other = _objectWithoutProperties(options, [\"breakpoints\", \"mixins\", \"palette\", \"spacing\", \"typography\"]);\n\n var palette = createPalette(paletteInput);\n var breakpoints = createBreakpoints(breakpointsInput);\n var spacing = createSpacing(spacingInput);\n var muiTheme = deepmerge({\n breakpoints: breakpoints,\n direction: 'ltr',\n mixins: createMixins(breakpoints, spacing, mixinsInput),\n overrides: {},\n // Inject custom styles\n palette: palette,\n props: {},\n // Provide default props\n shadows: shadows,\n typography: createTypography(palette, typographyInput),\n spacing: spacing,\n shape: shape,\n transitions: transitions,\n zIndex: zIndex\n }, other);\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n muiTheme = args.reduce(function (acc, argument) {\n return deepmerge(acc, argument);\n }, muiTheme);\n\n if (process.env.NODE_ENV !== 'production') {\n var pseudoClasses = ['checked', 'disabled', 'error', 'focused', 'focusVisible', 'required', 'expanded', 'selected'];\n\n var traverse = function traverse(node, parentKey) {\n var depth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var key; // eslint-disable-next-line guard-for-in, no-restricted-syntax\n\n for (key in node) {\n var child = node[key];\n\n if (depth === 1) {\n if (key.indexOf('Mui') === 0 && child) {\n traverse(child, key, depth + 1);\n }\n } else if (pseudoClasses.indexOf(key) !== -1 && Object.keys(child).length > 0) {\n if (process.env.NODE_ENV !== 'production') {\n console.error([\"Material-UI: The `\".concat(parentKey, \"` component increases \") + \"the CSS specificity of the `\".concat(key, \"` internal state.\"), 'You can not override it like this: ', JSON.stringify(node, null, 2), '', 'Instead, you need to use the $ruleName syntax:', JSON.stringify({\n root: _defineProperty({}, \"&$\".concat(key), child)\n }, null, 2), '', 'https://mui.com/r/pseudo-classes-guide'].join('\\n'));\n } // Remove the style to prevent global conflicts.\n\n\n node[key] = {};\n }\n }\n };\n\n traverse(muiTheme.overrides);\n }\n\n return muiTheme;\n}\n\nvar warnedOnce = false;\nexport function createMuiTheme() {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce) {\n warnedOnce = true;\n console.error(['Material-UI: the createMuiTheme function was renamed to createTheme.', '', \"You should use `import { createTheme } from '@material-ui/core/styles'`\"].join('\\n'));\n }\n }\n\n return createTheme.apply(void 0, arguments);\n}\nexport default createTheme;","import { createUnarySpacing } from '@material-ui/system';\nvar warnOnce;\nexport default function createSpacing() {\n var spacingInput = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 8;\n\n // Already transformed.\n if (spacingInput.mui) {\n return spacingInput;\n } // Material Design layouts are visually balanced. Most measurements align to an 8dp grid applied, which aligns both spacing and the overall layout.\n // Smaller components, such as icons and type, can align to a 4dp grid.\n // https://material.io/design/layout/understanding-layout.html#usage\n\n\n var transform = createUnarySpacing({\n spacing: spacingInput\n });\n\n var spacing = function spacing() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (!(args.length <= 4)) {\n console.error(\"Material-UI: Too many arguments provided, expected between 0 and 4, got \".concat(args.length));\n }\n }\n\n if (args.length === 0) {\n return transform(1);\n }\n\n if (args.length === 1) {\n return transform(args[0]);\n }\n\n return args.map(function (argument) {\n if (typeof argument === 'string') {\n return argument;\n }\n\n var output = transform(argument);\n return typeof output === 'number' ? \"\".concat(output, \"px\") : output;\n }).join(' ');\n }; // Backward compatibility, to remove in v5.\n\n\n Object.defineProperty(spacing, 'unit', {\n get: function get() {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnOnce || process.env.NODE_ENV === 'test') {\n console.error(['Material-UI: theme.spacing.unit usage has been deprecated.', 'It will be removed in v5.', 'You can replace `theme.spacing.unit * y` with `theme.spacing(y)`.', '', 'You can use the `https://github.com/mui-org/material-ui/tree/master/packages/material-ui-codemod/README.md#theme-spacing-api` migration helper to make the process smoother.'].join('\\n'));\n }\n\n warnOnce = true;\n }\n\n return spacingInput;\n }\n });\n spacing.mui = true;\n return spacing;\n}","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\n// Follow https://material.google.com/motion/duration-easing.html#duration-easing-natural-easing-curves\n// to learn the context in which each easing should be used.\nexport var easing = {\n // This is the most common easing curve.\n easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n // Objects enter the screen at full velocity from off-screen and\n // slowly decelerate to a resting point.\n easeOut: 'cubic-bezier(0.0, 0, 0.2, 1)',\n // Objects leave the screen at full velocity. They do not decelerate when off-screen.\n easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n // The sharp curve is used by objects that may return to the screen at any time.\n sharp: 'cubic-bezier(0.4, 0, 0.6, 1)'\n}; // Follow https://material.io/guidelines/motion/duration-easing.html#duration-easing-common-durations\n// to learn when use what timing\n\nexport var duration = {\n shortest: 150,\n shorter: 200,\n short: 250,\n // most basic recommended timing\n standard: 300,\n // this is to be used in complex animations\n complex: 375,\n // recommended when something is entering screen\n enteringScreen: 225,\n // recommended when something is leaving screen\n leavingScreen: 195\n};\n\nfunction formatMs(milliseconds) {\n return \"\".concat(Math.round(milliseconds), \"ms\");\n}\n/**\n * @param {string|Array} props\n * @param {object} param\n * @param {string} param.prop\n * @param {number} param.duration\n * @param {string} param.easing\n * @param {number} param.delay\n */\n\n\nexport default {\n easing: easing,\n duration: duration,\n create: function create() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['all'];\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var _options$duration = options.duration,\n durationOption = _options$duration === void 0 ? duration.standard : _options$duration,\n _options$easing = options.easing,\n easingOption = _options$easing === void 0 ? easing.easeInOut : _options$easing,\n _options$delay = options.delay,\n delay = _options$delay === void 0 ? 0 : _options$delay,\n other = _objectWithoutProperties(options, [\"duration\", \"easing\", \"delay\"]);\n\n if (process.env.NODE_ENV !== 'production') {\n var isString = function isString(value) {\n return typeof value === 'string';\n };\n\n var isNumber = function isNumber(value) {\n return !isNaN(parseFloat(value));\n };\n\n if (!isString(props) && !Array.isArray(props)) {\n console.error('Material-UI: Argument \"props\" must be a string or Array.');\n }\n\n if (!isNumber(durationOption) && !isString(durationOption)) {\n console.error(\"Material-UI: Argument \\\"duration\\\" must be a number or a string but found \".concat(durationOption, \".\"));\n }\n\n if (!isString(easingOption)) {\n console.error('Material-UI: Argument \"easing\" must be a string.');\n }\n\n if (!isNumber(delay) && !isString(delay)) {\n console.error('Material-UI: Argument \"delay\" must be a number or a string.');\n }\n\n if (Object.keys(other).length !== 0) {\n console.error(\"Material-UI: Unrecognized argument(s) [\".concat(Object.keys(other).join(','), \"].\"));\n }\n }\n\n return (Array.isArray(props) ? props : [props]).map(function (animatedProp) {\n return \"\".concat(animatedProp, \" \").concat(typeof durationOption === 'string' ? durationOption : formatMs(durationOption), \" \").concat(easingOption, \" \").concat(typeof delay === 'string' ? delay : formatMs(delay));\n }).join(',');\n },\n getAutoHeightDuration: function getAutoHeightDuration(height) {\n if (!height) {\n return 0;\n }\n\n var constant = height / 36; // https://www.wolframalpha.com/input/?i=(4+%2B+15+*+(x+%2F+36+)+**+0.25+%2B+(x+%2F+36)+%2F+5)+*+10\n\n return Math.round((4 + 15 * Math.pow(constant, 0.25) + constant / 5) * 10);\n }\n};","// We need to centralize the zIndex definitions as they work\n// like global values in the browser.\nvar zIndex = {\n mobileStepper: 1000,\n speedDial: 1050,\n appBar: 1100,\n drawer: 1200,\n modal: 1300,\n snackbar: 1400,\n tooltip: 1500\n};\nexport default zIndex;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { exactProp } from '@material-ui/utils';\nimport ThemeContext from '../useTheme/ThemeContext';\nimport useTheme from '../useTheme';\nimport nested from './nested'; // To support composition of theme.\n\nfunction mergeOuterLocalTheme(outerTheme, localTheme) {\n if (typeof localTheme === 'function') {\n var mergedTheme = localTheme(outerTheme);\n\n if (process.env.NODE_ENV !== 'production') {\n if (!mergedTheme) {\n console.error(['Material-UI: You should return an object from your theme function, i.e.', ' ({})} />'].join('\\n'));\n }\n }\n\n return mergedTheme;\n }\n\n return _extends({}, outerTheme, localTheme);\n}\n/**\n * This component takes a `theme` prop.\n * It makes the `theme` available down the React tree thanks to React context.\n * This component should preferably be used at **the root of your component tree**.\n */\n\n\nfunction ThemeProvider(props) {\n var children = props.children,\n localTheme = props.theme;\n var outerTheme = useTheme();\n\n if (process.env.NODE_ENV !== 'production') {\n if (outerTheme === null && typeof localTheme === 'function') {\n console.error(['Material-UI: You are providing a theme function prop to the ThemeProvider component:', ' outerTheme} />', '', 'However, no outer theme is present.', 'Make sure a theme is already injected higher in the React tree ' + 'or provide a theme object.'].join('\\n'));\n }\n }\n\n var theme = React.useMemo(function () {\n var output = outerTheme === null ? localTheme : mergeOuterLocalTheme(outerTheme, localTheme);\n\n if (output != null) {\n output[nested] = outerTheme !== null;\n }\n\n return output;\n }, [localTheme, outerTheme]);\n return /*#__PURE__*/React.createElement(ThemeContext.Provider, {\n value: theme\n }, children);\n}\n\nprocess.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = {\n /**\n * Your component tree.\n */\n children: PropTypes.node.isRequired,\n\n /**\n * A theme object. You can provide a function to extend the outer theme.\n */\n theme: PropTypes.oneOfType([PropTypes.object, PropTypes.func]).isRequired\n} : void 0;\n\nif (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = exactProp(ThemeProvider.propTypes) : void 0;\n}\n\nexport default ThemeProvider;","var hasSymbol = typeof Symbol === 'function' && Symbol.for;\nexport default hasSymbol ? Symbol.for('mui.nested') : '__THEME_NESTED__';","import React from 'react';\nvar ThemeContext = React.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n ThemeContext.displayName = 'ThemeContext';\n}\n\nexport default ThemeContext;","import React from 'react';\nimport ThemeContext from './ThemeContext';\nexport default function useTheme() {\n var theme = React.useContext(ThemeContext);\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(theme);\n }\n\n return theme;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nexport function isPlainObject(item) {\n return item && _typeof(item) === 'object' && item.constructor === Object;\n}\nexport default function deepmerge(target, source) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n clone: true\n };\n var output = options.clone ? _extends({}, target) : target;\n\n if (isPlainObject(target) && isPlainObject(source)) {\n Object.keys(source).forEach(function (key) {\n // Avoid prototype pollution\n if (key === '__proto__') {\n return;\n }\n\n if (isPlainObject(source[key]) && key in target) {\n output[key] = deepmerge(target[key], source[key], options);\n } else {\n output[key] = source[key];\n }\n });\n }\n\n return output;\n}","/**\n * WARNING: Don't import this directly.\n * Use `MuiError` from `@material-ui/utils/macros/MuiError.macro` instead.\n * @param {number} code\n */\nexport default function formatMuiErrorMessage(code) {\n // Apply babel-plugin-transform-template-literals in loose mode\n // loose mode is safe iff we're concatenating primitives\n // see https://babeljs.io/docs/en/babel-plugin-transform-template-literals#loose\n\n /* eslint-disable prefer-template */\n var url = 'https://mui.com/production-error/?code=' + code;\n\n for (var i = 1; i < arguments.length; i += 1) {\n // rest params over-transpile for this case\n // eslint-disable-next-line prefer-rest-params\n url += '&args[]=' + encodeURIComponent(arguments[i]);\n }\n\n return 'Minified Material-UI error #' + code + '; visit ' + url + ' for the full message.';\n /* eslint-enable prefer-template */\n}","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n// 0, 2, 10, 30 second delays before reconnect attempts.\r\nconst DEFAULT_RETRY_DELAYS_IN_MILLISECONDS = [0, 2000, 10000, 30000, null];\r\n/** @private */\r\nexport class DefaultReconnectPolicy {\r\n constructor(retryDelays) {\r\n this._retryDelays = retryDelays !== undefined ? [...retryDelays, null] : DEFAULT_RETRY_DELAYS_IN_MILLISECONDS;\r\n }\r\n nextRetryDelayInMilliseconds(retryContext) {\r\n return this._retryDelays[retryContext.previousRetryCount];\r\n }\r\n}\r\n//# sourceMappingURL=DefaultReconnectPolicy.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nexport class HeaderNames {\r\n}\r\nHeaderNames.Authorization = \"Authorization\";\r\nHeaderNames.Cookie = \"Cookie\";\r\n//# sourceMappingURL=HeaderNames.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n/** Represents an HTTP response. */\r\nexport class HttpResponse {\r\n constructor(statusCode, statusText, content) {\r\n this.statusCode = statusCode;\r\n this.statusText = statusText;\r\n this.content = content;\r\n }\r\n}\r\n/** Abstraction over an HTTP client.\r\n *\r\n * This class provides an abstraction over an HTTP client so that a different implementation can be provided on different platforms.\r\n */\r\nexport class HttpClient {\r\n get(url, options) {\r\n return this.send({\r\n ...options,\r\n method: \"GET\",\r\n url,\r\n });\r\n }\r\n post(url, options) {\r\n return this.send({\r\n ...options,\r\n method: \"POST\",\r\n url,\r\n });\r\n }\r\n delete(url, options) {\r\n return this.send({\r\n ...options,\r\n method: \"DELETE\",\r\n url,\r\n });\r\n }\r\n /** Gets all cookies that apply to the specified URL.\r\n *\r\n * @param url The URL that the cookies are valid for.\r\n * @returns {string} A string containing all the key-value cookie pairs for the specified URL.\r\n */\r\n // @ts-ignore\r\n getCookieString(url) {\r\n return \"\";\r\n }\r\n}\r\n//# sourceMappingURL=HttpClient.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { HeaderNames } from \"./HeaderNames\";\r\nimport { HttpClient } from \"./HttpClient\";\r\n/** @private */\r\nexport class AccessTokenHttpClient extends HttpClient {\r\n constructor(innerClient, accessTokenFactory) {\r\n super();\r\n this._innerClient = innerClient;\r\n this._accessTokenFactory = accessTokenFactory;\r\n }\r\n async send(request) {\r\n let allowRetry = true;\r\n if (this._accessTokenFactory && (!this._accessToken || (request.url && request.url.indexOf(\"/negotiate?\") > 0))) {\r\n // don't retry if the request is a negotiate or if we just got a potentially new token from the access token factory\r\n allowRetry = false;\r\n this._accessToken = await this._accessTokenFactory();\r\n }\r\n this._setAuthorizationHeader(request);\r\n const response = await this._innerClient.send(request);\r\n if (allowRetry && response.statusCode === 401 && this._accessTokenFactory) {\r\n this._accessToken = await this._accessTokenFactory();\r\n this._setAuthorizationHeader(request);\r\n return await this._innerClient.send(request);\r\n }\r\n return response;\r\n }\r\n _setAuthorizationHeader(request) {\r\n if (!request.headers) {\r\n request.headers = {};\r\n }\r\n if (this._accessToken) {\r\n request.headers[HeaderNames.Authorization] = `Bearer ${this._accessToken}`;\r\n }\r\n // don't remove the header if there isn't an access token factory, the user manually added the header in this case\r\n else if (this._accessTokenFactory) {\r\n if (request.headers[HeaderNames.Authorization]) {\r\n delete request.headers[HeaderNames.Authorization];\r\n }\r\n }\r\n }\r\n getCookieString(url) {\r\n return this._innerClient.getCookieString(url);\r\n }\r\n}\r\n//# sourceMappingURL=AccessTokenHttpClient.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n/** Error thrown when an HTTP request fails. */\r\nexport class HttpError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.HttpError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n * @param {number} statusCode The HTTP status code represented by this error.\r\n */\r\n constructor(errorMessage, statusCode) {\r\n const trueProto = new.target.prototype;\r\n super(`${errorMessage}: Status code '${statusCode}'`);\r\n this.statusCode = statusCode;\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when a timeout elapses. */\r\nexport class TimeoutError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.TimeoutError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n */\r\n constructor(errorMessage = \"A timeout occurred.\") {\r\n const trueProto = new.target.prototype;\r\n super(errorMessage);\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when an action is aborted. */\r\nexport class AbortError extends Error {\r\n /** Constructs a new instance of {@link AbortError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n */\r\n constructor(errorMessage = \"An abort occurred.\") {\r\n const trueProto = new.target.prototype;\r\n super(errorMessage);\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when the selected transport is unsupported by the browser. */\r\n/** @private */\r\nexport class UnsupportedTransportError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.UnsupportedTransportError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {HttpTransportType} transport The {@link @microsoft/signalr.HttpTransportType} this error occurred on.\r\n */\r\n constructor(message, transport) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.transport = transport;\r\n this.errorType = 'UnsupportedTransportError';\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when the selected transport is disabled by the browser. */\r\n/** @private */\r\nexport class DisabledTransportError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.DisabledTransportError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {HttpTransportType} transport The {@link @microsoft/signalr.HttpTransportType} this error occurred on.\r\n */\r\n constructor(message, transport) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.transport = transport;\r\n this.errorType = 'DisabledTransportError';\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when the selected transport cannot be started. */\r\n/** @private */\r\nexport class FailedToStartTransportError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.FailedToStartTransportError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {HttpTransportType} transport The {@link @microsoft/signalr.HttpTransportType} this error occurred on.\r\n */\r\n constructor(message, transport) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.transport = transport;\r\n this.errorType = 'FailedToStartTransportError';\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when the negotiation with the server failed to complete. */\r\n/** @private */\r\nexport class FailedToNegotiateWithServerError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.FailedToNegotiateWithServerError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n */\r\n constructor(message) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.errorType = 'FailedToNegotiateWithServerError';\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when multiple errors have occurred. */\r\n/** @private */\r\nexport class AggregateErrors extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.AggregateErrors}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {Error[]} innerErrors The collection of errors this error is aggregating.\r\n */\r\n constructor(message, innerErrors) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.innerErrors = innerErrors;\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n//# sourceMappingURL=Errors.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n/** A logger that does nothing when log messages are sent to it. */\r\nexport class NullLogger {\r\n constructor() { }\r\n /** @inheritDoc */\r\n // eslint-disable-next-line\r\n log(_logLevel, _message) {\r\n }\r\n}\r\n/** The singleton instance of the {@link @microsoft/signalr.NullLogger}. */\r\nNullLogger.instance = new NullLogger();\r\n//# sourceMappingURL=Loggers.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { NullLogger } from \"./Loggers\";\r\n// Version token that will be replaced by the prepack command\r\n/** The version of the SignalR client. */\r\nexport const VERSION = \"8.0.0\";\r\n/** @private */\r\nexport class Arg {\r\n static isRequired(val, name) {\r\n if (val === null || val === undefined) {\r\n throw new Error(`The '${name}' argument is required.`);\r\n }\r\n }\r\n static isNotEmpty(val, name) {\r\n if (!val || val.match(/^\\s*$/)) {\r\n throw new Error(`The '${name}' argument should not be empty.`);\r\n }\r\n }\r\n static isIn(val, values, name) {\r\n // TypeScript enums have keys for **both** the name and the value of each enum member on the type itself.\r\n if (!(val in values)) {\r\n throw new Error(`Unknown ${name} value: ${val}.`);\r\n }\r\n }\r\n}\r\n/** @private */\r\nexport class Platform {\r\n // react-native has a window but no document so we should check both\r\n static get isBrowser() {\r\n return !Platform.isNode && typeof window === \"object\" && typeof window.document === \"object\";\r\n }\r\n // WebWorkers don't have a window object so the isBrowser check would fail\r\n static get isWebWorker() {\r\n return !Platform.isNode && typeof self === \"object\" && \"importScripts\" in self;\r\n }\r\n // react-native has a window but no document\r\n static get isReactNative() {\r\n return !Platform.isNode && typeof window === \"object\" && typeof window.document === \"undefined\";\r\n }\r\n // Node apps shouldn't have a window object, but WebWorkers don't either\r\n // so we need to check for both WebWorker and window\r\n static get isNode() {\r\n return typeof process !== \"undefined\" && process.release && process.release.name === \"node\";\r\n }\r\n}\r\n/** @private */\r\nexport function getDataDetail(data, includeContent) {\r\n let detail = \"\";\r\n if (isArrayBuffer(data)) {\r\n detail = `Binary data of length ${data.byteLength}`;\r\n if (includeContent) {\r\n detail += `. Content: '${formatArrayBuffer(data)}'`;\r\n }\r\n }\r\n else if (typeof data === \"string\") {\r\n detail = `String data of length ${data.length}`;\r\n if (includeContent) {\r\n detail += `. Content: '${data}'`;\r\n }\r\n }\r\n return detail;\r\n}\r\n/** @private */\r\nexport function formatArrayBuffer(data) {\r\n const view = new Uint8Array(data);\r\n // Uint8Array.map only supports returning another Uint8Array?\r\n let str = \"\";\r\n view.forEach((num) => {\r\n const pad = num < 16 ? \"0\" : \"\";\r\n str += `0x${pad}${num.toString(16)} `;\r\n });\r\n // Trim of trailing space.\r\n return str.substr(0, str.length - 1);\r\n}\r\n// Also in signalr-protocol-msgpack/Utils.ts\r\n/** @private */\r\nexport function isArrayBuffer(val) {\r\n return val && typeof ArrayBuffer !== \"undefined\" &&\r\n (val instanceof ArrayBuffer ||\r\n // Sometimes we get an ArrayBuffer that doesn't satisfy instanceof\r\n (val.constructor && val.constructor.name === \"ArrayBuffer\"));\r\n}\r\n/** @private */\r\nexport async function sendMessage(logger, transportName, httpClient, url, content, options) {\r\n const headers = {};\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n logger.log(LogLevel.Trace, `(${transportName} transport) sending data. ${getDataDetail(content, options.logMessageContent)}.`);\r\n const responseType = isArrayBuffer(content) ? \"arraybuffer\" : \"text\";\r\n const response = await httpClient.post(url, {\r\n content,\r\n headers: { ...headers, ...options.headers },\r\n responseType,\r\n timeout: options.timeout,\r\n withCredentials: options.withCredentials,\r\n });\r\n logger.log(LogLevel.Trace, `(${transportName} transport) request complete. Response status: ${response.statusCode}.`);\r\n}\r\n/** @private */\r\nexport function createLogger(logger) {\r\n if (logger === undefined) {\r\n return new ConsoleLogger(LogLevel.Information);\r\n }\r\n if (logger === null) {\r\n return NullLogger.instance;\r\n }\r\n if (logger.log !== undefined) {\r\n return logger;\r\n }\r\n return new ConsoleLogger(logger);\r\n}\r\n/** @private */\r\nexport class SubjectSubscription {\r\n constructor(subject, observer) {\r\n this._subject = subject;\r\n this._observer = observer;\r\n }\r\n dispose() {\r\n const index = this._subject.observers.indexOf(this._observer);\r\n if (index > -1) {\r\n this._subject.observers.splice(index, 1);\r\n }\r\n if (this._subject.observers.length === 0 && this._subject.cancelCallback) {\r\n this._subject.cancelCallback().catch((_) => { });\r\n }\r\n }\r\n}\r\n/** @private */\r\nexport class ConsoleLogger {\r\n constructor(minimumLogLevel) {\r\n this._minLevel = minimumLogLevel;\r\n this.out = console;\r\n }\r\n log(logLevel, message) {\r\n if (logLevel >= this._minLevel) {\r\n const msg = `[${new Date().toISOString()}] ${LogLevel[logLevel]}: ${message}`;\r\n switch (logLevel) {\r\n case LogLevel.Critical:\r\n case LogLevel.Error:\r\n this.out.error(msg);\r\n break;\r\n case LogLevel.Warning:\r\n this.out.warn(msg);\r\n break;\r\n case LogLevel.Information:\r\n this.out.info(msg);\r\n break;\r\n default:\r\n // console.debug only goes to attached debuggers in Node, so we use console.log for Trace and Debug\r\n this.out.log(msg);\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n/** @private */\r\nexport function getUserAgentHeader() {\r\n let userAgentHeaderName = \"X-SignalR-User-Agent\";\r\n if (Platform.isNode) {\r\n userAgentHeaderName = \"User-Agent\";\r\n }\r\n return [userAgentHeaderName, constructUserAgent(VERSION, getOsName(), getRuntime(), getRuntimeVersion())];\r\n}\r\n/** @private */\r\nexport function constructUserAgent(version, os, runtime, runtimeVersion) {\r\n // Microsoft SignalR/[Version] ([Detailed Version]; [Operating System]; [Runtime]; [Runtime Version])\r\n let userAgent = \"Microsoft SignalR/\";\r\n const majorAndMinor = version.split(\".\");\r\n userAgent += `${majorAndMinor[0]}.${majorAndMinor[1]}`;\r\n userAgent += ` (${version}; `;\r\n if (os && os !== \"\") {\r\n userAgent += `${os}; `;\r\n }\r\n else {\r\n userAgent += \"Unknown OS; \";\r\n }\r\n userAgent += `${runtime}`;\r\n if (runtimeVersion) {\r\n userAgent += `; ${runtimeVersion}`;\r\n }\r\n else {\r\n userAgent += \"; Unknown Runtime Version\";\r\n }\r\n userAgent += \")\";\r\n return userAgent;\r\n}\r\n// eslint-disable-next-line spaced-comment\r\n/*#__PURE__*/ function getOsName() {\r\n if (Platform.isNode) {\r\n switch (process.platform) {\r\n case \"win32\":\r\n return \"Windows NT\";\r\n case \"darwin\":\r\n return \"macOS\";\r\n case \"linux\":\r\n return \"Linux\";\r\n default:\r\n return process.platform;\r\n }\r\n }\r\n else {\r\n return \"\";\r\n }\r\n}\r\n// eslint-disable-next-line spaced-comment\r\n/*#__PURE__*/ function getRuntimeVersion() {\r\n if (Platform.isNode) {\r\n return process.versions.node;\r\n }\r\n return undefined;\r\n}\r\nfunction getRuntime() {\r\n if (Platform.isNode) {\r\n return \"NodeJS\";\r\n }\r\n else {\r\n return \"Browser\";\r\n }\r\n}\r\n/** @private */\r\nexport function getErrorString(e) {\r\n if (e.stack) {\r\n return e.stack;\r\n }\r\n else if (e.message) {\r\n return e.message;\r\n }\r\n return `${e}`;\r\n}\r\n/** @private */\r\nexport function getGlobalThis() {\r\n // globalThis is semi-new and not available in Node until v12\r\n if (typeof globalThis !== \"undefined\") {\r\n return globalThis;\r\n }\r\n if (typeof self !== \"undefined\") {\r\n return self;\r\n }\r\n if (typeof window !== \"undefined\") {\r\n return window;\r\n }\r\n if (typeof global !== \"undefined\") {\r\n return global;\r\n }\r\n throw new Error(\"could not find global\");\r\n}\r\n//# sourceMappingURL=Utils.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { AbortError, HttpError, TimeoutError } from \"./Errors\";\r\nimport { HttpClient, HttpResponse } from \"./HttpClient\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { Platform, getGlobalThis, isArrayBuffer } from \"./Utils\";\r\nimport { configureAbortController, configureFetch } from \"./DynamicImports\";\r\nexport class FetchHttpClient extends HttpClient {\r\n constructor(logger) {\r\n super();\r\n this._logger = logger;\r\n // This is how you do \"reference\" arguments\r\n const fetchObj = { _fetchType: undefined, _jar: undefined };\r\n if (configureFetch(fetchObj)) {\r\n this._fetchType = fetchObj._fetchType;\r\n this._jar = fetchObj._jar;\r\n }\r\n else {\r\n this._fetchType = fetch.bind(getGlobalThis());\r\n }\r\n this._abortControllerType = AbortController;\r\n const abortObj = { _abortControllerType: this._abortControllerType };\r\n if (configureAbortController(abortObj)) {\r\n this._abortControllerType = abortObj._abortControllerType;\r\n }\r\n }\r\n /** @inheritDoc */\r\n async send(request) {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n throw new AbortError();\r\n }\r\n if (!request.method) {\r\n throw new Error(\"No method defined.\");\r\n }\r\n if (!request.url) {\r\n throw new Error(\"No url defined.\");\r\n }\r\n const abortController = new this._abortControllerType();\r\n let error;\r\n // Hook our abortSignal into the abort controller\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = () => {\r\n abortController.abort();\r\n error = new AbortError();\r\n };\r\n }\r\n // If a timeout has been passed in, setup a timeout to call abort\r\n // Type needs to be any to fit window.setTimeout and NodeJS.setTimeout\r\n let timeoutId = null;\r\n if (request.timeout) {\r\n const msTimeout = request.timeout;\r\n timeoutId = setTimeout(() => {\r\n abortController.abort();\r\n this._logger.log(LogLevel.Warning, `Timeout from HTTP request.`);\r\n error = new TimeoutError();\r\n }, msTimeout);\r\n }\r\n if (request.content === \"\") {\r\n request.content = undefined;\r\n }\r\n if (request.content) {\r\n // Explicitly setting the Content-Type header for React Native on Android platform.\r\n request.headers = request.headers || {};\r\n if (isArrayBuffer(request.content)) {\r\n request.headers[\"Content-Type\"] = \"application/octet-stream\";\r\n }\r\n else {\r\n request.headers[\"Content-Type\"] = \"text/plain;charset=UTF-8\";\r\n }\r\n }\r\n let response;\r\n try {\r\n response = await this._fetchType(request.url, {\r\n body: request.content,\r\n cache: \"no-cache\",\r\n credentials: request.withCredentials === true ? \"include\" : \"same-origin\",\r\n headers: {\r\n \"X-Requested-With\": \"XMLHttpRequest\",\r\n ...request.headers,\r\n },\r\n method: request.method,\r\n mode: \"cors\",\r\n redirect: \"follow\",\r\n signal: abortController.signal,\r\n });\r\n }\r\n catch (e) {\r\n if (error) {\r\n throw error;\r\n }\r\n this._logger.log(LogLevel.Warning, `Error from HTTP request. ${e}.`);\r\n throw e;\r\n }\r\n finally {\r\n if (timeoutId) {\r\n clearTimeout(timeoutId);\r\n }\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = null;\r\n }\r\n }\r\n if (!response.ok) {\r\n const errorMessage = await deserializeContent(response, \"text\");\r\n throw new HttpError(errorMessage || response.statusText, response.status);\r\n }\r\n const content = deserializeContent(response, request.responseType);\r\n const payload = await content;\r\n return new HttpResponse(response.status, response.statusText, payload);\r\n }\r\n getCookieString(url) {\r\n let cookies = \"\";\r\n if (Platform.isNode && this._jar) {\r\n // @ts-ignore: unused variable\r\n this._jar.getCookies(url, (e, c) => cookies = c.join(\"; \"));\r\n }\r\n return cookies;\r\n }\r\n}\r\nfunction deserializeContent(response, responseType) {\r\n let content;\r\n switch (responseType) {\r\n case \"arraybuffer\":\r\n content = response.arrayBuffer();\r\n break;\r\n case \"text\":\r\n content = response.text();\r\n break;\r\n case \"blob\":\r\n case \"document\":\r\n case \"json\":\r\n throw new Error(`${responseType} is not supported.`);\r\n default:\r\n content = response.text();\r\n break;\r\n }\r\n return content;\r\n}\r\n//# sourceMappingURL=FetchHttpClient.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { Platform } from \"./Utils\";\r\n/** @private */\r\nexport function configureFetch(obj) {\r\n // Node added a fetch implementation to the global scope starting in v18.\r\n // We need to add a cookie jar in node to be able to share cookies with WebSocket\r\n if (typeof fetch === \"undefined\" || Platform.isNode) {\r\n // Cookies aren't automatically handled in Node so we need to add a CookieJar to preserve cookies across requests\r\n // eslint-disable-next-line @typescript-eslint/no-var-requires\r\n obj._jar = new (require(\"tough-cookie\")).CookieJar();\r\n if (typeof fetch === \"undefined\") {\r\n // eslint-disable-next-line @typescript-eslint/no-var-requires\r\n obj._fetchType = require(\"node-fetch\");\r\n }\r\n else {\r\n // Use fetch from Node if available\r\n obj._fetchType = fetch;\r\n }\r\n // node-fetch doesn't have a nice API for getting and setting cookies\r\n // fetch-cookie will wrap a fetch implementation with a default CookieJar or a provided one\r\n // eslint-disable-next-line @typescript-eslint/no-var-requires\r\n obj._fetchType = require(\"fetch-cookie\")(obj._fetchType, obj._jar);\r\n return true;\r\n }\r\n return false;\r\n}\r\n/** @private */\r\nexport function configureAbortController(obj) {\r\n if (typeof AbortController === \"undefined\") {\r\n // Node needs EventListener methods on AbortController which our custom polyfill doesn't provide\r\n obj._abortControllerType = require(\"abort-controller\");\r\n return true;\r\n }\r\n return false;\r\n}\r\n/** @private */\r\nexport function getWS() {\r\n return require(\"ws\");\r\n}\r\n/** @private */\r\nexport function getEventSource() {\r\n return require(\"eventsource\");\r\n}\r\n//# sourceMappingURL=DynamicImports.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { AbortError, HttpError, TimeoutError } from \"./Errors\";\r\nimport { HttpClient, HttpResponse } from \"./HttpClient\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { isArrayBuffer } from \"./Utils\";\r\nexport class XhrHttpClient extends HttpClient {\r\n constructor(logger) {\r\n super();\r\n this._logger = logger;\r\n }\r\n /** @inheritDoc */\r\n send(request) {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n return Promise.reject(new AbortError());\r\n }\r\n if (!request.method) {\r\n return Promise.reject(new Error(\"No method defined.\"));\r\n }\r\n if (!request.url) {\r\n return Promise.reject(new Error(\"No url defined.\"));\r\n }\r\n return new Promise((resolve, reject) => {\r\n const xhr = new XMLHttpRequest();\r\n xhr.open(request.method, request.url, true);\r\n xhr.withCredentials = request.withCredentials === undefined ? true : request.withCredentials;\r\n xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n if (request.content === \"\") {\r\n request.content = undefined;\r\n }\r\n if (request.content) {\r\n // Explicitly setting the Content-Type header for React Native on Android platform.\r\n if (isArrayBuffer(request.content)) {\r\n xhr.setRequestHeader(\"Content-Type\", \"application/octet-stream\");\r\n }\r\n else {\r\n xhr.setRequestHeader(\"Content-Type\", \"text/plain;charset=UTF-8\");\r\n }\r\n }\r\n const headers = request.headers;\r\n if (headers) {\r\n Object.keys(headers)\r\n .forEach((header) => {\r\n xhr.setRequestHeader(header, headers[header]);\r\n });\r\n }\r\n if (request.responseType) {\r\n xhr.responseType = request.responseType;\r\n }\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = () => {\r\n xhr.abort();\r\n reject(new AbortError());\r\n };\r\n }\r\n if (request.timeout) {\r\n xhr.timeout = request.timeout;\r\n }\r\n xhr.onload = () => {\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = null;\r\n }\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n resolve(new HttpResponse(xhr.status, xhr.statusText, xhr.response || xhr.responseText));\r\n }\r\n else {\r\n reject(new HttpError(xhr.response || xhr.responseText || xhr.statusText, xhr.status));\r\n }\r\n };\r\n xhr.onerror = () => {\r\n this._logger.log(LogLevel.Warning, `Error from HTTP request. ${xhr.status}: ${xhr.statusText}.`);\r\n reject(new HttpError(xhr.statusText, xhr.status));\r\n };\r\n xhr.ontimeout = () => {\r\n this._logger.log(LogLevel.Warning, `Timeout from HTTP request.`);\r\n reject(new TimeoutError());\r\n };\r\n xhr.send(request.content);\r\n });\r\n }\r\n}\r\n//# sourceMappingURL=XhrHttpClient.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { AbortError } from \"./Errors\";\r\nimport { FetchHttpClient } from \"./FetchHttpClient\";\r\nimport { HttpClient } from \"./HttpClient\";\r\nimport { Platform } from \"./Utils\";\r\nimport { XhrHttpClient } from \"./XhrHttpClient\";\r\n/** Default implementation of {@link @microsoft/signalr.HttpClient}. */\r\nexport class DefaultHttpClient extends HttpClient {\r\n /** Creates a new instance of the {@link @microsoft/signalr.DefaultHttpClient}, using the provided {@link @microsoft/signalr.ILogger} to log messages. */\r\n constructor(logger) {\r\n super();\r\n if (typeof fetch !== \"undefined\" || Platform.isNode) {\r\n this._httpClient = new FetchHttpClient(logger);\r\n }\r\n else if (typeof XMLHttpRequest !== \"undefined\") {\r\n this._httpClient = new XhrHttpClient(logger);\r\n }\r\n else {\r\n throw new Error(\"No usable HttpClient found.\");\r\n }\r\n }\r\n /** @inheritDoc */\r\n send(request) {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n return Promise.reject(new AbortError());\r\n }\r\n if (!request.method) {\r\n return Promise.reject(new Error(\"No method defined.\"));\r\n }\r\n if (!request.url) {\r\n return Promise.reject(new Error(\"No url defined.\"));\r\n }\r\n return this._httpClient.send(request);\r\n }\r\n getCookieString(url) {\r\n return this._httpClient.getCookieString(url);\r\n }\r\n}\r\n//# sourceMappingURL=DefaultHttpClient.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n// This will be treated as a bit flag in the future, so we keep it using power-of-two values.\r\n/** Specifies a specific HTTP transport type. */\r\nexport var HttpTransportType;\r\n(function (HttpTransportType) {\r\n /** Specifies no transport preference. */\r\n HttpTransportType[HttpTransportType[\"None\"] = 0] = \"None\";\r\n /** Specifies the WebSockets transport. */\r\n HttpTransportType[HttpTransportType[\"WebSockets\"] = 1] = \"WebSockets\";\r\n /** Specifies the Server-Sent Events transport. */\r\n HttpTransportType[HttpTransportType[\"ServerSentEvents\"] = 2] = \"ServerSentEvents\";\r\n /** Specifies the Long Polling transport. */\r\n HttpTransportType[HttpTransportType[\"LongPolling\"] = 4] = \"LongPolling\";\r\n})(HttpTransportType || (HttpTransportType = {}));\r\n/** Specifies the transfer format for a connection. */\r\nexport var TransferFormat;\r\n(function (TransferFormat) {\r\n /** Specifies that only text data will be transmitted over the connection. */\r\n TransferFormat[TransferFormat[\"Text\"] = 1] = \"Text\";\r\n /** Specifies that binary data will be transmitted over the connection. */\r\n TransferFormat[TransferFormat[\"Binary\"] = 2] = \"Binary\";\r\n})(TransferFormat || (TransferFormat = {}));\r\n//# sourceMappingURL=ITransport.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n// Rough polyfill of https://developer.mozilla.org/en-US/docs/Web/API/AbortController\r\n// We don't actually ever use the API being polyfilled, we always use the polyfill because\r\n// it's a very new API right now.\r\n// Not exported from index.\r\n/** @private */\r\nexport class AbortController {\r\n constructor() {\r\n this._isAborted = false;\r\n this.onabort = null;\r\n }\r\n abort() {\r\n if (!this._isAborted) {\r\n this._isAborted = true;\r\n if (this.onabort) {\r\n this.onabort();\r\n }\r\n }\r\n }\r\n get signal() {\r\n return this;\r\n }\r\n get aborted() {\r\n return this._isAborted;\r\n }\r\n}\r\n//# sourceMappingURL=AbortController.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { AbortController } from \"./AbortController\";\r\nimport { HttpError, TimeoutError } from \"./Errors\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, getUserAgentHeader, sendMessage } from \"./Utils\";\r\n// Not exported from 'index', this type is internal.\r\n/** @private */\r\nexport class LongPollingTransport {\r\n // This is an internal type, not exported from 'index' so this is really just internal.\r\n get pollAborted() {\r\n return this._pollAbort.aborted;\r\n }\r\n constructor(httpClient, logger, options) {\r\n this._httpClient = httpClient;\r\n this._logger = logger;\r\n this._pollAbort = new AbortController();\r\n this._options = options;\r\n this._running = false;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n async connect(url, transferFormat) {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this._url = url;\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Connecting.\");\r\n // Allow binary format on Node and Browsers that support binary content (indicated by the presence of responseType property)\r\n if (transferFormat === TransferFormat.Binary &&\r\n (typeof XMLHttpRequest !== \"undefined\" && typeof new XMLHttpRequest().responseType !== \"string\")) {\r\n throw new Error(\"Binary protocols over XmlHttpRequest not implementing advanced features are not supported.\");\r\n }\r\n const [name, value] = getUserAgentHeader();\r\n const headers = { [name]: value, ...this._options.headers };\r\n const pollOptions = {\r\n abortSignal: this._pollAbort.signal,\r\n headers,\r\n timeout: 100000,\r\n withCredentials: this._options.withCredentials,\r\n };\r\n if (transferFormat === TransferFormat.Binary) {\r\n pollOptions.responseType = \"arraybuffer\";\r\n }\r\n // Make initial long polling request\r\n // Server uses first long polling request to finish initializing connection and it returns without data\r\n const pollUrl = `${url}&_=${Date.now()}`;\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) polling: ${pollUrl}.`);\r\n const response = await this._httpClient.get(pollUrl, pollOptions);\r\n if (response.statusCode !== 200) {\r\n this._logger.log(LogLevel.Error, `(LongPolling transport) Unexpected response code: ${response.statusCode}.`);\r\n // Mark running as false so that the poll immediately ends and runs the close logic\r\n this._closeError = new HttpError(response.statusText || \"\", response.statusCode);\r\n this._running = false;\r\n }\r\n else {\r\n this._running = true;\r\n }\r\n this._receiving = this._poll(this._url, pollOptions);\r\n }\r\n async _poll(url, pollOptions) {\r\n try {\r\n while (this._running) {\r\n try {\r\n const pollUrl = `${url}&_=${Date.now()}`;\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) polling: ${pollUrl}.`);\r\n const response = await this._httpClient.get(pollUrl, pollOptions);\r\n if (response.statusCode === 204) {\r\n this._logger.log(LogLevel.Information, \"(LongPolling transport) Poll terminated by server.\");\r\n this._running = false;\r\n }\r\n else if (response.statusCode !== 200) {\r\n this._logger.log(LogLevel.Error, `(LongPolling transport) Unexpected response code: ${response.statusCode}.`);\r\n // Unexpected status code\r\n this._closeError = new HttpError(response.statusText || \"\", response.statusCode);\r\n this._running = false;\r\n }\r\n else {\r\n // Process the response\r\n if (response.content) {\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) data received. ${getDataDetail(response.content, this._options.logMessageContent)}.`);\r\n if (this.onreceive) {\r\n this.onreceive(response.content);\r\n }\r\n }\r\n else {\r\n // This is another way timeout manifest.\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Poll timed out, reissuing.\");\r\n }\r\n }\r\n }\r\n catch (e) {\r\n if (!this._running) {\r\n // Log but disregard errors that occur after stopping\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) Poll errored after shutdown: ${e.message}`);\r\n }\r\n else {\r\n if (e instanceof TimeoutError) {\r\n // Ignore timeouts and reissue the poll.\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Poll timed out, reissuing.\");\r\n }\r\n else {\r\n // Close the connection with the error as the result.\r\n this._closeError = e;\r\n this._running = false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n finally {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Polling complete.\");\r\n // We will reach here with pollAborted==false when the server returned a response causing the transport to stop.\r\n // If pollAborted==true then client initiated the stop and the stop method will raise the close event after DELETE is sent.\r\n if (!this.pollAborted) {\r\n this._raiseOnClose();\r\n }\r\n }\r\n }\r\n async send(data) {\r\n if (!this._running) {\r\n return Promise.reject(new Error(\"Cannot send until the transport is connected\"));\r\n }\r\n return sendMessage(this._logger, \"LongPolling\", this._httpClient, this._url, data, this._options);\r\n }\r\n async stop() {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Stopping polling.\");\r\n // Tell receiving loop to stop, abort any current request, and then wait for it to finish\r\n this._running = false;\r\n this._pollAbort.abort();\r\n try {\r\n await this._receiving;\r\n // Send DELETE to clean up long polling on the server\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) sending DELETE request to ${this._url}.`);\r\n const headers = {};\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n const deleteOptions = {\r\n headers: { ...headers, ...this._options.headers },\r\n timeout: this._options.timeout,\r\n withCredentials: this._options.withCredentials,\r\n };\r\n let error;\r\n try {\r\n await this._httpClient.delete(this._url, deleteOptions);\r\n }\r\n catch (err) {\r\n error = err;\r\n }\r\n if (error) {\r\n if (error instanceof HttpError) {\r\n if (error.statusCode === 404) {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) A 404 response was returned from sending a DELETE request.\");\r\n }\r\n else {\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) Error sending a DELETE request: ${error}`);\r\n }\r\n }\r\n }\r\n else {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) DELETE request accepted.\");\r\n }\r\n }\r\n finally {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Stop finished.\");\r\n // Raise close event here instead of in polling\r\n // It needs to happen after the DELETE request is sent\r\n this._raiseOnClose();\r\n }\r\n }\r\n _raiseOnClose() {\r\n if (this.onclose) {\r\n let logMessage = \"(LongPolling transport) Firing onclose event.\";\r\n if (this._closeError) {\r\n logMessage += \" Error: \" + this._closeError;\r\n }\r\n this._logger.log(LogLevel.Trace, logMessage);\r\n this.onclose(this._closeError);\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=LongPollingTransport.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, getUserAgentHeader, Platform, sendMessage } from \"./Utils\";\r\n/** @private */\r\nexport class ServerSentEventsTransport {\r\n constructor(httpClient, accessToken, logger, options) {\r\n this._httpClient = httpClient;\r\n this._accessToken = accessToken;\r\n this._logger = logger;\r\n this._options = options;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n async connect(url, transferFormat) {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this._logger.log(LogLevel.Trace, \"(SSE transport) Connecting.\");\r\n // set url before accessTokenFactory because this._url is only for send and we set the auth header instead of the query string for send\r\n this._url = url;\r\n if (this._accessToken) {\r\n url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + `access_token=${encodeURIComponent(this._accessToken)}`;\r\n }\r\n return new Promise((resolve, reject) => {\r\n let opened = false;\r\n if (transferFormat !== TransferFormat.Text) {\r\n reject(new Error(\"The Server-Sent Events transport only supports the 'Text' transfer format\"));\r\n return;\r\n }\r\n let eventSource;\r\n if (Platform.isBrowser || Platform.isWebWorker) {\r\n eventSource = new this._options.EventSource(url, { withCredentials: this._options.withCredentials });\r\n }\r\n else {\r\n // Non-browser passes cookies via the dictionary\r\n const cookies = this._httpClient.getCookieString(url);\r\n const headers = {};\r\n headers.Cookie = cookies;\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n eventSource = new this._options.EventSource(url, { withCredentials: this._options.withCredentials, headers: { ...headers, ...this._options.headers } });\r\n }\r\n try {\r\n eventSource.onmessage = (e) => {\r\n if (this.onreceive) {\r\n try {\r\n this._logger.log(LogLevel.Trace, `(SSE transport) data received. ${getDataDetail(e.data, this._options.logMessageContent)}.`);\r\n this.onreceive(e.data);\r\n }\r\n catch (error) {\r\n this._close(error);\r\n return;\r\n }\r\n }\r\n };\r\n // @ts-ignore: not using event on purpose\r\n eventSource.onerror = (e) => {\r\n // EventSource doesn't give any useful information about server side closes.\r\n if (opened) {\r\n this._close();\r\n }\r\n else {\r\n reject(new Error(\"EventSource failed to connect. The connection could not be found on the server,\"\r\n + \" either the connection ID is not present on the server, or a proxy is refusing/buffering the connection.\"\r\n + \" If you have multiple servers check that sticky sessions are enabled.\"));\r\n }\r\n };\r\n eventSource.onopen = () => {\r\n this._logger.log(LogLevel.Information, `SSE connected to ${this._url}`);\r\n this._eventSource = eventSource;\r\n opened = true;\r\n resolve();\r\n };\r\n }\r\n catch (e) {\r\n reject(e);\r\n return;\r\n }\r\n });\r\n }\r\n async send(data) {\r\n if (!this._eventSource) {\r\n return Promise.reject(new Error(\"Cannot send until the transport is connected\"));\r\n }\r\n return sendMessage(this._logger, \"SSE\", this._httpClient, this._url, data, this._options);\r\n }\r\n stop() {\r\n this._close();\r\n return Promise.resolve();\r\n }\r\n _close(e) {\r\n if (this._eventSource) {\r\n this._eventSource.close();\r\n this._eventSource = undefined;\r\n if (this.onclose) {\r\n this.onclose(e);\r\n }\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=ServerSentEventsTransport.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { HeaderNames } from \"./HeaderNames\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, getUserAgentHeader, Platform } from \"./Utils\";\r\n/** @private */\r\nexport class WebSocketTransport {\r\n constructor(httpClient, accessTokenFactory, logger, logMessageContent, webSocketConstructor, headers) {\r\n this._logger = logger;\r\n this._accessTokenFactory = accessTokenFactory;\r\n this._logMessageContent = logMessageContent;\r\n this._webSocketConstructor = webSocketConstructor;\r\n this._httpClient = httpClient;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n this._headers = headers;\r\n }\r\n async connect(url, transferFormat) {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this._logger.log(LogLevel.Trace, \"(WebSockets transport) Connecting.\");\r\n let token;\r\n if (this._accessTokenFactory) {\r\n token = await this._accessTokenFactory();\r\n }\r\n return new Promise((resolve, reject) => {\r\n url = url.replace(/^http/, \"ws\");\r\n let webSocket;\r\n const cookies = this._httpClient.getCookieString(url);\r\n let opened = false;\r\n if (Platform.isNode || Platform.isReactNative) {\r\n const headers = {};\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n if (token) {\r\n headers[HeaderNames.Authorization] = `Bearer ${token}`;\r\n }\r\n if (cookies) {\r\n headers[HeaderNames.Cookie] = cookies;\r\n }\r\n // Only pass headers when in non-browser environments\r\n webSocket = new this._webSocketConstructor(url, undefined, {\r\n headers: { ...headers, ...this._headers },\r\n });\r\n }\r\n else {\r\n if (token) {\r\n url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + `access_token=${encodeURIComponent(token)}`;\r\n }\r\n }\r\n if (!webSocket) {\r\n // Chrome is not happy with passing 'undefined' as protocol\r\n webSocket = new this._webSocketConstructor(url);\r\n }\r\n if (transferFormat === TransferFormat.Binary) {\r\n webSocket.binaryType = \"arraybuffer\";\r\n }\r\n webSocket.onopen = (_event) => {\r\n this._logger.log(LogLevel.Information, `WebSocket connected to ${url}.`);\r\n this._webSocket = webSocket;\r\n opened = true;\r\n resolve();\r\n };\r\n webSocket.onerror = (event) => {\r\n let error = null;\r\n // ErrorEvent is a browser only type we need to check if the type exists before using it\r\n if (typeof ErrorEvent !== \"undefined\" && event instanceof ErrorEvent) {\r\n error = event.error;\r\n }\r\n else {\r\n error = \"There was an error with the transport\";\r\n }\r\n this._logger.log(LogLevel.Information, `(WebSockets transport) ${error}.`);\r\n };\r\n webSocket.onmessage = (message) => {\r\n this._logger.log(LogLevel.Trace, `(WebSockets transport) data received. ${getDataDetail(message.data, this._logMessageContent)}.`);\r\n if (this.onreceive) {\r\n try {\r\n this.onreceive(message.data);\r\n }\r\n catch (error) {\r\n this._close(error);\r\n return;\r\n }\r\n }\r\n };\r\n webSocket.onclose = (event) => {\r\n // Don't call close handler if connection was never established\r\n // We'll reject the connect call instead\r\n if (opened) {\r\n this._close(event);\r\n }\r\n else {\r\n let error = null;\r\n // ErrorEvent is a browser only type we need to check if the type exists before using it\r\n if (typeof ErrorEvent !== \"undefined\" && event instanceof ErrorEvent) {\r\n error = event.error;\r\n }\r\n else {\r\n error = \"WebSocket failed to connect. The connection could not be found on the server,\"\r\n + \" either the endpoint may not be a SignalR endpoint,\"\r\n + \" the connection ID is not present on the server, or there is a proxy blocking WebSockets.\"\r\n + \" If you have multiple servers check that sticky sessions are enabled.\";\r\n }\r\n reject(new Error(error));\r\n }\r\n };\r\n });\r\n }\r\n send(data) {\r\n if (this._webSocket && this._webSocket.readyState === this._webSocketConstructor.OPEN) {\r\n this._logger.log(LogLevel.Trace, `(WebSockets transport) sending data. ${getDataDetail(data, this._logMessageContent)}.`);\r\n this._webSocket.send(data);\r\n return Promise.resolve();\r\n }\r\n return Promise.reject(\"WebSocket is not in the OPEN state\");\r\n }\r\n stop() {\r\n if (this._webSocket) {\r\n // Manually invoke onclose callback inline so we know the HttpConnection was closed properly before returning\r\n // This also solves an issue where websocket.onclose could take 18+ seconds to trigger during network disconnects\r\n this._close(undefined);\r\n }\r\n return Promise.resolve();\r\n }\r\n _close(event) {\r\n // webSocket will be null if the transport did not start successfully\r\n if (this._webSocket) {\r\n // Clear websocket handlers because we are considering the socket closed now\r\n this._webSocket.onclose = () => { };\r\n this._webSocket.onmessage = () => { };\r\n this._webSocket.onerror = () => { };\r\n this._webSocket.close();\r\n this._webSocket = undefined;\r\n }\r\n this._logger.log(LogLevel.Trace, \"(WebSockets transport) socket closed.\");\r\n if (this.onclose) {\r\n if (this._isCloseEvent(event) && (event.wasClean === false || event.code !== 1000)) {\r\n this.onclose(new Error(`WebSocket closed with status code: ${event.code} (${event.reason || \"no reason given\"}).`));\r\n }\r\n else if (event instanceof Error) {\r\n this.onclose(event);\r\n }\r\n else {\r\n this.onclose();\r\n }\r\n }\r\n }\r\n _isCloseEvent(event) {\r\n return event && typeof event.wasClean === \"boolean\" && typeof event.code === \"number\";\r\n }\r\n}\r\n//# sourceMappingURL=WebSocketTransport.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { AccessTokenHttpClient } from \"./AccessTokenHttpClient\";\r\nimport { DefaultHttpClient } from \"./DefaultHttpClient\";\r\nimport { getEventSource, getWS } from \"./DynamicImports\";\r\nimport { AggregateErrors, DisabledTransportError, FailedToNegotiateWithServerError, FailedToStartTransportError, HttpError, UnsupportedTransportError, AbortError } from \"./Errors\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { HttpTransportType, TransferFormat } from \"./ITransport\";\r\nimport { LongPollingTransport } from \"./LongPollingTransport\";\r\nimport { ServerSentEventsTransport } from \"./ServerSentEventsTransport\";\r\nimport { Arg, createLogger, getUserAgentHeader, Platform } from \"./Utils\";\r\nimport { WebSocketTransport } from \"./WebSocketTransport\";\r\nconst MAX_REDIRECTS = 100;\r\n/** @private */\r\nexport class HttpConnection {\r\n constructor(url, options = {}) {\r\n this._stopPromiseResolver = () => { };\r\n this.features = {};\r\n this._negotiateVersion = 1;\r\n Arg.isRequired(url, \"url\");\r\n this._logger = createLogger(options.logger);\r\n this.baseUrl = this._resolveUrl(url);\r\n options = options || {};\r\n options.logMessageContent = options.logMessageContent === undefined ? false : options.logMessageContent;\r\n if (typeof options.withCredentials === \"boolean\" || options.withCredentials === undefined) {\r\n options.withCredentials = options.withCredentials === undefined ? true : options.withCredentials;\r\n }\r\n else {\r\n throw new Error(\"withCredentials option was not a 'boolean' or 'undefined' value\");\r\n }\r\n options.timeout = options.timeout === undefined ? 100 * 1000 : options.timeout;\r\n let webSocketModule = null;\r\n let eventSourceModule = null;\r\n if (Platform.isNode && typeof require !== \"undefined\") {\r\n webSocketModule = getWS();\r\n eventSourceModule = getEventSource();\r\n }\r\n if (!Platform.isNode && typeof WebSocket !== \"undefined\" && !options.WebSocket) {\r\n options.WebSocket = WebSocket;\r\n }\r\n else if (Platform.isNode && !options.WebSocket) {\r\n if (webSocketModule) {\r\n options.WebSocket = webSocketModule;\r\n }\r\n }\r\n if (!Platform.isNode && typeof EventSource !== \"undefined\" && !options.EventSource) {\r\n options.EventSource = EventSource;\r\n }\r\n else if (Platform.isNode && !options.EventSource) {\r\n if (typeof eventSourceModule !== \"undefined\") {\r\n options.EventSource = eventSourceModule;\r\n }\r\n }\r\n this._httpClient = new AccessTokenHttpClient(options.httpClient || new DefaultHttpClient(this._logger), options.accessTokenFactory);\r\n this._connectionState = \"Disconnected\" /* ConnectionState.Disconnected */;\r\n this._connectionStarted = false;\r\n this._options = options;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n async start(transferFormat) {\r\n transferFormat = transferFormat || TransferFormat.Binary;\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this._logger.log(LogLevel.Debug, `Starting connection with transfer format '${TransferFormat[transferFormat]}'.`);\r\n if (this._connectionState !== \"Disconnected\" /* ConnectionState.Disconnected */) {\r\n return Promise.reject(new Error(\"Cannot start an HttpConnection that is not in the 'Disconnected' state.\"));\r\n }\r\n this._connectionState = \"Connecting\" /* ConnectionState.Connecting */;\r\n this._startInternalPromise = this._startInternal(transferFormat);\r\n await this._startInternalPromise;\r\n // The TypeScript compiler thinks that connectionState must be Connecting here. The TypeScript compiler is wrong.\r\n if (this._connectionState === \"Disconnecting\" /* ConnectionState.Disconnecting */) {\r\n // stop() was called and transitioned the client into the Disconnecting state.\r\n const message = \"Failed to start the HttpConnection before stop() was called.\";\r\n this._logger.log(LogLevel.Error, message);\r\n // We cannot await stopPromise inside startInternal since stopInternal awaits the startInternalPromise.\r\n await this._stopPromise;\r\n return Promise.reject(new AbortError(message));\r\n }\r\n else if (this._connectionState !== \"Connected\" /* ConnectionState.Connected */) {\r\n // stop() was called and transitioned the client into the Disconnecting state.\r\n const message = \"HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!\";\r\n this._logger.log(LogLevel.Error, message);\r\n return Promise.reject(new AbortError(message));\r\n }\r\n this._connectionStarted = true;\r\n }\r\n send(data) {\r\n if (this._connectionState !== \"Connected\" /* ConnectionState.Connected */) {\r\n return Promise.reject(new Error(\"Cannot send data if the connection is not in the 'Connected' State.\"));\r\n }\r\n if (!this._sendQueue) {\r\n this._sendQueue = new TransportSendQueue(this.transport);\r\n }\r\n // Transport will not be null if state is connected\r\n return this._sendQueue.send(data);\r\n }\r\n async stop(error) {\r\n if (this._connectionState === \"Disconnected\" /* ConnectionState.Disconnected */) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stop(${error}) ignored because the connection is already in the disconnected state.`);\r\n return Promise.resolve();\r\n }\r\n if (this._connectionState === \"Disconnecting\" /* ConnectionState.Disconnecting */) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stop(${error}) ignored because the connection is already in the disconnecting state.`);\r\n return this._stopPromise;\r\n }\r\n this._connectionState = \"Disconnecting\" /* ConnectionState.Disconnecting */;\r\n this._stopPromise = new Promise((resolve) => {\r\n // Don't complete stop() until stopConnection() completes.\r\n this._stopPromiseResolver = resolve;\r\n });\r\n // stopInternal should never throw so just observe it.\r\n await this._stopInternal(error);\r\n await this._stopPromise;\r\n }\r\n async _stopInternal(error) {\r\n // Set error as soon as possible otherwise there is a race between\r\n // the transport closing and providing an error and the error from a close message\r\n // We would prefer the close message error.\r\n this._stopError = error;\r\n try {\r\n await this._startInternalPromise;\r\n }\r\n catch (e) {\r\n // This exception is returned to the user as a rejected Promise from the start method.\r\n }\r\n // The transport's onclose will trigger stopConnection which will run our onclose event.\r\n // The transport should always be set if currently connected. If it wasn't set, it's likely because\r\n // stop was called during start() and start() failed.\r\n if (this.transport) {\r\n try {\r\n await this.transport.stop();\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `HttpConnection.transport.stop() threw error '${e}'.`);\r\n this._stopConnection();\r\n }\r\n this.transport = undefined;\r\n }\r\n else {\r\n this._logger.log(LogLevel.Debug, \"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.\");\r\n }\r\n }\r\n async _startInternal(transferFormat) {\r\n // Store the original base url and the access token factory since they may change\r\n // as part of negotiating\r\n let url = this.baseUrl;\r\n this._accessTokenFactory = this._options.accessTokenFactory;\r\n this._httpClient._accessTokenFactory = this._accessTokenFactory;\r\n try {\r\n if (this._options.skipNegotiation) {\r\n if (this._options.transport === HttpTransportType.WebSockets) {\r\n // No need to add a connection ID in this case\r\n this.transport = this._constructTransport(HttpTransportType.WebSockets);\r\n // We should just call connect directly in this case.\r\n // No fallback or negotiate in this case.\r\n await this._startTransport(url, transferFormat);\r\n }\r\n else {\r\n throw new Error(\"Negotiation can only be skipped when using the WebSocket transport directly.\");\r\n }\r\n }\r\n else {\r\n let negotiateResponse = null;\r\n let redirects = 0;\r\n do {\r\n negotiateResponse = await this._getNegotiationResponse(url);\r\n // the user tries to stop the connection when it is being started\r\n if (this._connectionState === \"Disconnecting\" /* ConnectionState.Disconnecting */ || this._connectionState === \"Disconnected\" /* ConnectionState.Disconnected */) {\r\n throw new AbortError(\"The connection was stopped during negotiation.\");\r\n }\r\n if (negotiateResponse.error) {\r\n throw new Error(negotiateResponse.error);\r\n }\r\n if (negotiateResponse.ProtocolVersion) {\r\n throw new Error(\"Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.\");\r\n }\r\n if (negotiateResponse.url) {\r\n url = negotiateResponse.url;\r\n }\r\n if (negotiateResponse.accessToken) {\r\n // Replace the current access token factory with one that uses\r\n // the returned access token\r\n const accessToken = negotiateResponse.accessToken;\r\n this._accessTokenFactory = () => accessToken;\r\n // set the factory to undefined so the AccessTokenHttpClient won't retry with the same token, since we know it won't change until a connection restart\r\n this._httpClient._accessToken = accessToken;\r\n this._httpClient._accessTokenFactory = undefined;\r\n }\r\n redirects++;\r\n } while (negotiateResponse.url && redirects < MAX_REDIRECTS);\r\n if (redirects === MAX_REDIRECTS && negotiateResponse.url) {\r\n throw new Error(\"Negotiate redirection limit exceeded.\");\r\n }\r\n await this._createTransport(url, this._options.transport, negotiateResponse, transferFormat);\r\n }\r\n if (this.transport instanceof LongPollingTransport) {\r\n this.features.inherentKeepAlive = true;\r\n }\r\n if (this._connectionState === \"Connecting\" /* ConnectionState.Connecting */) {\r\n // Ensure the connection transitions to the connected state prior to completing this.startInternalPromise.\r\n // start() will handle the case when stop was called and startInternal exits still in the disconnecting state.\r\n this._logger.log(LogLevel.Debug, \"The HttpConnection connected successfully.\");\r\n this._connectionState = \"Connected\" /* ConnectionState.Connected */;\r\n }\r\n // stop() is waiting on us via this.startInternalPromise so keep this.transport around so it can clean up.\r\n // This is the only case startInternal can exit in neither the connected nor disconnected state because stopConnection()\r\n // will transition to the disconnected state. start() will wait for the transition using the stopPromise.\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, \"Failed to start the connection: \" + e);\r\n this._connectionState = \"Disconnected\" /* ConnectionState.Disconnected */;\r\n this.transport = undefined;\r\n // if start fails, any active calls to stop assume that start will complete the stop promise\r\n this._stopPromiseResolver();\r\n return Promise.reject(e);\r\n }\r\n }\r\n async _getNegotiationResponse(url) {\r\n const headers = {};\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n const negotiateUrl = this._resolveNegotiateUrl(url);\r\n this._logger.log(LogLevel.Debug, `Sending negotiation request: ${negotiateUrl}.`);\r\n try {\r\n const response = await this._httpClient.post(negotiateUrl, {\r\n content: \"\",\r\n headers: { ...headers, ...this._options.headers },\r\n timeout: this._options.timeout,\r\n withCredentials: this._options.withCredentials,\r\n });\r\n if (response.statusCode !== 200) {\r\n return Promise.reject(new Error(`Unexpected status code returned from negotiate '${response.statusCode}'`));\r\n }\r\n const negotiateResponse = JSON.parse(response.content);\r\n if (!negotiateResponse.negotiateVersion || negotiateResponse.negotiateVersion < 1) {\r\n // Negotiate version 0 doesn't use connectionToken\r\n // So we set it equal to connectionId so all our logic can use connectionToken without being aware of the negotiate version\r\n negotiateResponse.connectionToken = negotiateResponse.connectionId;\r\n }\r\n if (negotiateResponse.useStatefulReconnect && this._options._useStatefulReconnect !== true) {\r\n return Promise.reject(new FailedToNegotiateWithServerError(\"Client didn't negotiate Stateful Reconnect but the server did.\"));\r\n }\r\n return negotiateResponse;\r\n }\r\n catch (e) {\r\n let errorMessage = \"Failed to complete negotiation with the server: \" + e;\r\n if (e instanceof HttpError) {\r\n if (e.statusCode === 404) {\r\n errorMessage = errorMessage + \" Either this is not a SignalR endpoint or there is a proxy blocking the connection.\";\r\n }\r\n }\r\n this._logger.log(LogLevel.Error, errorMessage);\r\n return Promise.reject(new FailedToNegotiateWithServerError(errorMessage));\r\n }\r\n }\r\n _createConnectUrl(url, connectionToken) {\r\n if (!connectionToken) {\r\n return url;\r\n }\r\n return url + (url.indexOf(\"?\") === -1 ? \"?\" : \"&\") + `id=${connectionToken}`;\r\n }\r\n async _createTransport(url, requestedTransport, negotiateResponse, requestedTransferFormat) {\r\n let connectUrl = this._createConnectUrl(url, negotiateResponse.connectionToken);\r\n if (this._isITransport(requestedTransport)) {\r\n this._logger.log(LogLevel.Debug, \"Connection was provided an instance of ITransport, using that directly.\");\r\n this.transport = requestedTransport;\r\n await this._startTransport(connectUrl, requestedTransferFormat);\r\n this.connectionId = negotiateResponse.connectionId;\r\n return;\r\n }\r\n const transportExceptions = [];\r\n const transports = negotiateResponse.availableTransports || [];\r\n let negotiate = negotiateResponse;\r\n for (const endpoint of transports) {\r\n const transportOrError = this._resolveTransportOrError(endpoint, requestedTransport, requestedTransferFormat, (negotiate === null || negotiate === void 0 ? void 0 : negotiate.useStatefulReconnect) === true);\r\n if (transportOrError instanceof Error) {\r\n // Store the error and continue, we don't want to cause a re-negotiate in these cases\r\n transportExceptions.push(`${endpoint.transport} failed:`);\r\n transportExceptions.push(transportOrError);\r\n }\r\n else if (this._isITransport(transportOrError)) {\r\n this.transport = transportOrError;\r\n if (!negotiate) {\r\n try {\r\n negotiate = await this._getNegotiationResponse(url);\r\n }\r\n catch (ex) {\r\n return Promise.reject(ex);\r\n }\r\n connectUrl = this._createConnectUrl(url, negotiate.connectionToken);\r\n }\r\n try {\r\n await this._startTransport(connectUrl, requestedTransferFormat);\r\n this.connectionId = negotiate.connectionId;\r\n return;\r\n }\r\n catch (ex) {\r\n this._logger.log(LogLevel.Error, `Failed to start the transport '${endpoint.transport}': ${ex}`);\r\n negotiate = undefined;\r\n transportExceptions.push(new FailedToStartTransportError(`${endpoint.transport} failed: ${ex}`, HttpTransportType[endpoint.transport]));\r\n if (this._connectionState !== \"Connecting\" /* ConnectionState.Connecting */) {\r\n const message = \"Failed to select transport before stop() was called.\";\r\n this._logger.log(LogLevel.Debug, message);\r\n return Promise.reject(new AbortError(message));\r\n }\r\n }\r\n }\r\n }\r\n if (transportExceptions.length > 0) {\r\n return Promise.reject(new AggregateErrors(`Unable to connect to the server with any of the available transports. ${transportExceptions.join(\" \")}`, transportExceptions));\r\n }\r\n return Promise.reject(new Error(\"None of the transports supported by the client are supported by the server.\"));\r\n }\r\n _constructTransport(transport) {\r\n switch (transport) {\r\n case HttpTransportType.WebSockets:\r\n if (!this._options.WebSocket) {\r\n throw new Error(\"'WebSocket' is not supported in your environment.\");\r\n }\r\n return new WebSocketTransport(this._httpClient, this._accessTokenFactory, this._logger, this._options.logMessageContent, this._options.WebSocket, this._options.headers || {});\r\n case HttpTransportType.ServerSentEvents:\r\n if (!this._options.EventSource) {\r\n throw new Error(\"'EventSource' is not supported in your environment.\");\r\n }\r\n return new ServerSentEventsTransport(this._httpClient, this._httpClient._accessToken, this._logger, this._options);\r\n case HttpTransportType.LongPolling:\r\n return new LongPollingTransport(this._httpClient, this._logger, this._options);\r\n default:\r\n throw new Error(`Unknown transport: ${transport}.`);\r\n }\r\n }\r\n _startTransport(url, transferFormat) {\r\n this.transport.onreceive = this.onreceive;\r\n if (this.features.reconnect) {\r\n this.transport.onclose = async (e) => {\r\n let callStop = false;\r\n if (this.features.reconnect) {\r\n try {\r\n this.features.disconnected();\r\n await this.transport.connect(url, transferFormat);\r\n await this.features.resend();\r\n }\r\n catch {\r\n callStop = true;\r\n }\r\n }\r\n else {\r\n this._stopConnection(e);\r\n return;\r\n }\r\n if (callStop) {\r\n this._stopConnection(e);\r\n }\r\n };\r\n }\r\n else {\r\n this.transport.onclose = (e) => this._stopConnection(e);\r\n }\r\n return this.transport.connect(url, transferFormat);\r\n }\r\n _resolveTransportOrError(endpoint, requestedTransport, requestedTransferFormat, useStatefulReconnect) {\r\n const transport = HttpTransportType[endpoint.transport];\r\n if (transport === null || transport === undefined) {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${endpoint.transport}' because it is not supported by this client.`);\r\n return new Error(`Skipping transport '${endpoint.transport}' because it is not supported by this client.`);\r\n }\r\n else {\r\n if (transportMatches(requestedTransport, transport)) {\r\n const transferFormats = endpoint.transferFormats.map((s) => TransferFormat[s]);\r\n if (transferFormats.indexOf(requestedTransferFormat) >= 0) {\r\n if ((transport === HttpTransportType.WebSockets && !this._options.WebSocket) ||\r\n (transport === HttpTransportType.ServerSentEvents && !this._options.EventSource)) {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${HttpTransportType[transport]}' because it is not supported in your environment.'`);\r\n return new UnsupportedTransportError(`'${HttpTransportType[transport]}' is not supported in your environment.`, transport);\r\n }\r\n else {\r\n this._logger.log(LogLevel.Debug, `Selecting transport '${HttpTransportType[transport]}'.`);\r\n try {\r\n this.features.reconnect = transport === HttpTransportType.WebSockets ? useStatefulReconnect : undefined;\r\n return this._constructTransport(transport);\r\n }\r\n catch (ex) {\r\n return ex;\r\n }\r\n }\r\n }\r\n else {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${HttpTransportType[transport]}' because it does not support the requested transfer format '${TransferFormat[requestedTransferFormat]}'.`);\r\n return new Error(`'${HttpTransportType[transport]}' does not support ${TransferFormat[requestedTransferFormat]}.`);\r\n }\r\n }\r\n else {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${HttpTransportType[transport]}' because it was disabled by the client.`);\r\n return new DisabledTransportError(`'${HttpTransportType[transport]}' is disabled by the client.`, transport);\r\n }\r\n }\r\n }\r\n _isITransport(transport) {\r\n return transport && typeof (transport) === \"object\" && \"connect\" in transport;\r\n }\r\n _stopConnection(error) {\r\n this._logger.log(LogLevel.Debug, `HttpConnection.stopConnection(${error}) called while in state ${this._connectionState}.`);\r\n this.transport = undefined;\r\n // If we have a stopError, it takes precedence over the error from the transport\r\n error = this._stopError || error;\r\n this._stopError = undefined;\r\n if (this._connectionState === \"Disconnected\" /* ConnectionState.Disconnected */) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stopConnection(${error}) was ignored because the connection is already in the disconnected state.`);\r\n return;\r\n }\r\n if (this._connectionState === \"Connecting\" /* ConnectionState.Connecting */) {\r\n this._logger.log(LogLevel.Warning, `Call to HttpConnection.stopConnection(${error}) was ignored because the connection is still in the connecting state.`);\r\n throw new Error(`HttpConnection.stopConnection(${error}) was called while the connection is still in the connecting state.`);\r\n }\r\n if (this._connectionState === \"Disconnecting\" /* ConnectionState.Disconnecting */) {\r\n // A call to stop() induced this call to stopConnection and needs to be completed.\r\n // Any stop() awaiters will be scheduled to continue after the onclose callback fires.\r\n this._stopPromiseResolver();\r\n }\r\n if (error) {\r\n this._logger.log(LogLevel.Error, `Connection disconnected with error '${error}'.`);\r\n }\r\n else {\r\n this._logger.log(LogLevel.Information, \"Connection disconnected.\");\r\n }\r\n if (this._sendQueue) {\r\n this._sendQueue.stop().catch((e) => {\r\n this._logger.log(LogLevel.Error, `TransportSendQueue.stop() threw error '${e}'.`);\r\n });\r\n this._sendQueue = undefined;\r\n }\r\n this.connectionId = undefined;\r\n this._connectionState = \"Disconnected\" /* ConnectionState.Disconnected */;\r\n if (this._connectionStarted) {\r\n this._connectionStarted = false;\r\n try {\r\n if (this.onclose) {\r\n this.onclose(error);\r\n }\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `HttpConnection.onclose(${error}) threw error '${e}'.`);\r\n }\r\n }\r\n }\r\n _resolveUrl(url) {\r\n // startsWith is not supported in IE\r\n if (url.lastIndexOf(\"https://\", 0) === 0 || url.lastIndexOf(\"http://\", 0) === 0) {\r\n return url;\r\n }\r\n if (!Platform.isBrowser) {\r\n throw new Error(`Cannot resolve '${url}'.`);\r\n }\r\n // Setting the url to the href propery of an anchor tag handles normalization\r\n // for us. There are 3 main cases.\r\n // 1. Relative path normalization e.g \"b\" -> \"http://localhost:5000/a/b\"\r\n // 2. Absolute path normalization e.g \"/a/b\" -> \"http://localhost:5000/a/b\"\r\n // 3. Networkpath reference normalization e.g \"//localhost:5000/a/b\" -> \"http://localhost:5000/a/b\"\r\n const aTag = window.document.createElement(\"a\");\r\n aTag.href = url;\r\n this._logger.log(LogLevel.Information, `Normalizing '${url}' to '${aTag.href}'.`);\r\n return aTag.href;\r\n }\r\n _resolveNegotiateUrl(url) {\r\n const negotiateUrl = new URL(url);\r\n if (negotiateUrl.pathname.endsWith('/')) {\r\n negotiateUrl.pathname += \"negotiate\";\r\n }\r\n else {\r\n negotiateUrl.pathname += \"/negotiate\";\r\n }\r\n const searchParams = new URLSearchParams(negotiateUrl.searchParams);\r\n if (!searchParams.has(\"negotiateVersion\")) {\r\n searchParams.append(\"negotiateVersion\", this._negotiateVersion.toString());\r\n }\r\n if (searchParams.has(\"useStatefulReconnect\")) {\r\n if (searchParams.get(\"useStatefulReconnect\") === \"true\") {\r\n this._options._useStatefulReconnect = true;\r\n }\r\n }\r\n else if (this._options._useStatefulReconnect === true) {\r\n searchParams.append(\"useStatefulReconnect\", \"true\");\r\n }\r\n negotiateUrl.search = searchParams.toString();\r\n return negotiateUrl.toString();\r\n }\r\n}\r\nfunction transportMatches(requestedTransport, actualTransport) {\r\n return !requestedTransport || ((actualTransport & requestedTransport) !== 0);\r\n}\r\n/** @private */\r\nexport class TransportSendQueue {\r\n constructor(_transport) {\r\n this._transport = _transport;\r\n this._buffer = [];\r\n this._executing = true;\r\n this._sendBufferedData = new PromiseSource();\r\n this._transportResult = new PromiseSource();\r\n this._sendLoopPromise = this._sendLoop();\r\n }\r\n send(data) {\r\n this._bufferData(data);\r\n if (!this._transportResult) {\r\n this._transportResult = new PromiseSource();\r\n }\r\n return this._transportResult.promise;\r\n }\r\n stop() {\r\n this._executing = false;\r\n this._sendBufferedData.resolve();\r\n return this._sendLoopPromise;\r\n }\r\n _bufferData(data) {\r\n if (this._buffer.length && typeof (this._buffer[0]) !== typeof (data)) {\r\n throw new Error(`Expected data to be of type ${typeof (this._buffer)} but was of type ${typeof (data)}`);\r\n }\r\n this._buffer.push(data);\r\n this._sendBufferedData.resolve();\r\n }\r\n async _sendLoop() {\r\n while (true) {\r\n await this._sendBufferedData.promise;\r\n if (!this._executing) {\r\n if (this._transportResult) {\r\n this._transportResult.reject(\"Connection stopped.\");\r\n }\r\n break;\r\n }\r\n this._sendBufferedData = new PromiseSource();\r\n const transportResult = this._transportResult;\r\n this._transportResult = undefined;\r\n const data = typeof (this._buffer[0]) === \"string\" ?\r\n this._buffer.join(\"\") :\r\n TransportSendQueue._concatBuffers(this._buffer);\r\n this._buffer.length = 0;\r\n try {\r\n await this._transport.send(data);\r\n transportResult.resolve();\r\n }\r\n catch (error) {\r\n transportResult.reject(error);\r\n }\r\n }\r\n }\r\n static _concatBuffers(arrayBuffers) {\r\n const totalLength = arrayBuffers.map((b) => b.byteLength).reduce((a, b) => a + b);\r\n const result = new Uint8Array(totalLength);\r\n let offset = 0;\r\n for (const item of arrayBuffers) {\r\n result.set(new Uint8Array(item), offset);\r\n offset += item.byteLength;\r\n }\r\n return result.buffer;\r\n }\r\n}\r\nclass PromiseSource {\r\n constructor() {\r\n this.promise = new Promise((resolve, reject) => [this._resolver, this._rejecter] = [resolve, reject]);\r\n }\r\n resolve() {\r\n this._resolver();\r\n }\r\n reject(reason) {\r\n this._rejecter(reason);\r\n }\r\n}\r\n//# sourceMappingURL=HttpConnection.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n// Not exported from index\r\n/** @private */\r\nexport class TextMessageFormat {\r\n static write(output) {\r\n return `${output}${TextMessageFormat.RecordSeparator}`;\r\n }\r\n static parse(input) {\r\n if (input[input.length - 1] !== TextMessageFormat.RecordSeparator) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n const messages = input.split(TextMessageFormat.RecordSeparator);\r\n messages.pop();\r\n return messages;\r\n }\r\n}\r\nTextMessageFormat.RecordSeparatorCode = 0x1e;\r\nTextMessageFormat.RecordSeparator = String.fromCharCode(TextMessageFormat.RecordSeparatorCode);\r\n//# sourceMappingURL=TextMessageFormat.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { TextMessageFormat } from \"./TextMessageFormat\";\r\nimport { isArrayBuffer } from \"./Utils\";\r\n/** @private */\r\nexport class HandshakeProtocol {\r\n // Handshake request is always JSON\r\n writeHandshakeRequest(handshakeRequest) {\r\n return TextMessageFormat.write(JSON.stringify(handshakeRequest));\r\n }\r\n parseHandshakeResponse(data) {\r\n let messageData;\r\n let remainingData;\r\n if (isArrayBuffer(data)) {\r\n // Format is binary but still need to read JSON text from handshake response\r\n const binaryData = new Uint8Array(data);\r\n const separatorIndex = binaryData.indexOf(TextMessageFormat.RecordSeparatorCode);\r\n if (separatorIndex === -1) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n // content before separator is handshake response\r\n // optional content after is additional messages\r\n const responseLength = separatorIndex + 1;\r\n messageData = String.fromCharCode.apply(null, Array.prototype.slice.call(binaryData.slice(0, responseLength)));\r\n remainingData = (binaryData.byteLength > responseLength) ? binaryData.slice(responseLength).buffer : null;\r\n }\r\n else {\r\n const textData = data;\r\n const separatorIndex = textData.indexOf(TextMessageFormat.RecordSeparator);\r\n if (separatorIndex === -1) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n // content before separator is handshake response\r\n // optional content after is additional messages\r\n const responseLength = separatorIndex + 1;\r\n messageData = textData.substring(0, responseLength);\r\n remainingData = (textData.length > responseLength) ? textData.substring(responseLength) : null;\r\n }\r\n // At this point we should have just the single handshake message\r\n const messages = TextMessageFormat.parse(messageData);\r\n const response = JSON.parse(messages[0]);\r\n if (response.type) {\r\n throw new Error(\"Expected a handshake response from the server.\");\r\n }\r\n const responseMessage = response;\r\n // multiple messages could have arrived with handshake\r\n // return additional data to be parsed as usual, or null if all parsed\r\n return [remainingData, responseMessage];\r\n }\r\n}\r\n//# sourceMappingURL=HandshakeProtocol.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n/** Defines the type of a Hub Message. */\r\nexport var MessageType;\r\n(function (MessageType) {\r\n /** Indicates the message is an Invocation message and implements the {@link @microsoft/signalr.InvocationMessage} interface. */\r\n MessageType[MessageType[\"Invocation\"] = 1] = \"Invocation\";\r\n /** Indicates the message is a StreamItem message and implements the {@link @microsoft/signalr.StreamItemMessage} interface. */\r\n MessageType[MessageType[\"StreamItem\"] = 2] = \"StreamItem\";\r\n /** Indicates the message is a Completion message and implements the {@link @microsoft/signalr.CompletionMessage} interface. */\r\n MessageType[MessageType[\"Completion\"] = 3] = \"Completion\";\r\n /** Indicates the message is a Stream Invocation message and implements the {@link @microsoft/signalr.StreamInvocationMessage} interface. */\r\n MessageType[MessageType[\"StreamInvocation\"] = 4] = \"StreamInvocation\";\r\n /** Indicates the message is a Cancel Invocation message and implements the {@link @microsoft/signalr.CancelInvocationMessage} interface. */\r\n MessageType[MessageType[\"CancelInvocation\"] = 5] = \"CancelInvocation\";\r\n /** Indicates the message is a Ping message and implements the {@link @microsoft/signalr.PingMessage} interface. */\r\n MessageType[MessageType[\"Ping\"] = 6] = \"Ping\";\r\n /** Indicates the message is a Close message and implements the {@link @microsoft/signalr.CloseMessage} interface. */\r\n MessageType[MessageType[\"Close\"] = 7] = \"Close\";\r\n MessageType[MessageType[\"Ack\"] = 8] = \"Ack\";\r\n MessageType[MessageType[\"Sequence\"] = 9] = \"Sequence\";\r\n})(MessageType || (MessageType = {}));\r\n//# sourceMappingURL=IHubProtocol.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { SubjectSubscription } from \"./Utils\";\r\n/** Stream implementation to stream items to the server. */\r\nexport class Subject {\r\n constructor() {\r\n this.observers = [];\r\n }\r\n next(item) {\r\n for (const observer of this.observers) {\r\n observer.next(item);\r\n }\r\n }\r\n error(err) {\r\n for (const observer of this.observers) {\r\n if (observer.error) {\r\n observer.error(err);\r\n }\r\n }\r\n }\r\n complete() {\r\n for (const observer of this.observers) {\r\n if (observer.complete) {\r\n observer.complete();\r\n }\r\n }\r\n }\r\n subscribe(observer) {\r\n this.observers.push(observer);\r\n return new SubjectSubscription(this, observer);\r\n }\r\n}\r\n//# sourceMappingURL=Subject.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { MessageType } from \"./IHubProtocol\";\r\nimport { isArrayBuffer } from \"./Utils\";\r\n/** @private */\r\nexport class MessageBuffer {\r\n constructor(protocol, connection, bufferSize) {\r\n this._bufferSize = 100000;\r\n this._messages = [];\r\n this._totalMessageCount = 0;\r\n this._waitForSequenceMessage = false;\r\n // Message IDs start at 1 and always increment by 1\r\n this._nextReceivingSequenceId = 1;\r\n this._latestReceivedSequenceId = 0;\r\n this._bufferedByteCount = 0;\r\n this._reconnectInProgress = false;\r\n this._protocol = protocol;\r\n this._connection = connection;\r\n this._bufferSize = bufferSize;\r\n }\r\n async _send(message) {\r\n const serializedMessage = this._protocol.writeMessage(message);\r\n let backpressurePromise = Promise.resolve();\r\n // Only count invocation messages. Acks, pings, etc. don't need to be resent on reconnect\r\n if (this._isInvocationMessage(message)) {\r\n this._totalMessageCount++;\r\n let backpressurePromiseResolver = () => { };\r\n let backpressurePromiseRejector = () => { };\r\n if (isArrayBuffer(serializedMessage)) {\r\n this._bufferedByteCount += serializedMessage.byteLength;\r\n }\r\n else {\r\n this._bufferedByteCount += serializedMessage.length;\r\n }\r\n if (this._bufferedByteCount >= this._bufferSize) {\r\n backpressurePromise = new Promise((resolve, reject) => {\r\n backpressurePromiseResolver = resolve;\r\n backpressurePromiseRejector = reject;\r\n });\r\n }\r\n this._messages.push(new BufferedItem(serializedMessage, this._totalMessageCount, backpressurePromiseResolver, backpressurePromiseRejector));\r\n }\r\n try {\r\n // If this is set it means we are reconnecting or resending\r\n // We don't want to send on a disconnected connection\r\n // And we don't want to send if resend is running since that would mean sending\r\n // this message twice\r\n if (!this._reconnectInProgress) {\r\n await this._connection.send(serializedMessage);\r\n }\r\n }\r\n catch {\r\n this._disconnected();\r\n }\r\n await backpressurePromise;\r\n }\r\n _ack(ackMessage) {\r\n let newestAckedMessage = -1;\r\n // Find index of newest message being acked\r\n for (let index = 0; index < this._messages.length; index++) {\r\n const element = this._messages[index];\r\n if (element._id <= ackMessage.sequenceId) {\r\n newestAckedMessage = index;\r\n if (isArrayBuffer(element._message)) {\r\n this._bufferedByteCount -= element._message.byteLength;\r\n }\r\n else {\r\n this._bufferedByteCount -= element._message.length;\r\n }\r\n // resolve items that have already been sent and acked\r\n element._resolver();\r\n }\r\n else if (this._bufferedByteCount < this._bufferSize) {\r\n // resolve items that now fall under the buffer limit but haven't been acked\r\n element._resolver();\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n if (newestAckedMessage !== -1) {\r\n // We're removing everything including the message pointed to, so add 1\r\n this._messages = this._messages.slice(newestAckedMessage + 1);\r\n }\r\n }\r\n _shouldProcessMessage(message) {\r\n if (this._waitForSequenceMessage) {\r\n if (message.type !== MessageType.Sequence) {\r\n return false;\r\n }\r\n else {\r\n this._waitForSequenceMessage = false;\r\n return true;\r\n }\r\n }\r\n // No special processing for acks, pings, etc.\r\n if (!this._isInvocationMessage(message)) {\r\n return true;\r\n }\r\n const currentId = this._nextReceivingSequenceId;\r\n this._nextReceivingSequenceId++;\r\n if (currentId <= this._latestReceivedSequenceId) {\r\n if (currentId === this._latestReceivedSequenceId) {\r\n // Should only hit this if we just reconnected and the server is sending\r\n // Messages it has buffered, which would mean it hasn't seen an Ack for these messages\r\n this._ackTimer();\r\n }\r\n // Ignore, this is a duplicate message\r\n return false;\r\n }\r\n this._latestReceivedSequenceId = currentId;\r\n // Only start the timer for sending an Ack message when we have a message to ack. This also conveniently solves\r\n // timer throttling by not having a recursive timer, and by starting the timer via a network call (recv)\r\n this._ackTimer();\r\n return true;\r\n }\r\n _resetSequence(message) {\r\n if (message.sequenceId > this._nextReceivingSequenceId) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this._connection.stop(new Error(\"Sequence ID greater than amount of messages we've received.\"));\r\n return;\r\n }\r\n this._nextReceivingSequenceId = message.sequenceId;\r\n }\r\n _disconnected() {\r\n this._reconnectInProgress = true;\r\n this._waitForSequenceMessage = true;\r\n }\r\n async _resend() {\r\n const sequenceId = this._messages.length !== 0\r\n ? this._messages[0]._id\r\n : this._totalMessageCount + 1;\r\n await this._connection.send(this._protocol.writeMessage({ type: MessageType.Sequence, sequenceId }));\r\n // Get a local variable to the _messages, just in case messages are acked while resending\r\n // Which would slice the _messages array (which creates a new copy)\r\n const messages = this._messages;\r\n for (const element of messages) {\r\n await this._connection.send(element._message);\r\n }\r\n this._reconnectInProgress = false;\r\n }\r\n _dispose(error) {\r\n error !== null && error !== void 0 ? error : (error = new Error(\"Unable to reconnect to server.\"));\r\n // Unblock backpressure if any\r\n for (const element of this._messages) {\r\n element._rejector(error);\r\n }\r\n }\r\n _isInvocationMessage(message) {\r\n // There is no way to check if something implements an interface.\r\n // So we individually check the messages in a switch statement.\r\n // To make sure we don't miss any message types we rely on the compiler\r\n // seeing the function returns a value and it will do the\r\n // exhaustive check for us on the switch statement, since we don't use 'case default'\r\n switch (message.type) {\r\n case MessageType.Invocation:\r\n case MessageType.StreamItem:\r\n case MessageType.Completion:\r\n case MessageType.StreamInvocation:\r\n case MessageType.CancelInvocation:\r\n return true;\r\n case MessageType.Close:\r\n case MessageType.Sequence:\r\n case MessageType.Ping:\r\n case MessageType.Ack:\r\n return false;\r\n }\r\n }\r\n _ackTimer() {\r\n if (this._ackTimerHandle === undefined) {\r\n this._ackTimerHandle = setTimeout(async () => {\r\n try {\r\n if (!this._reconnectInProgress) {\r\n await this._connection.send(this._protocol.writeMessage({ type: MessageType.Ack, sequenceId: this._latestReceivedSequenceId }));\r\n }\r\n // Ignore errors, that means the connection is closed and we don't care about the Ack message anymore.\r\n }\r\n catch { }\r\n clearTimeout(this._ackTimerHandle);\r\n this._ackTimerHandle = undefined;\r\n // 1 second delay so we don't spam Ack messages if there are many messages being received at once.\r\n }, 1000);\r\n }\r\n }\r\n}\r\nclass BufferedItem {\r\n constructor(message, id, resolver, rejector) {\r\n this._message = message;\r\n this._id = id;\r\n this._resolver = resolver;\r\n this._rejector = rejector;\r\n }\r\n}\r\n//# sourceMappingURL=MessageBuffer.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { HandshakeProtocol } from \"./HandshakeProtocol\";\r\nimport { AbortError } from \"./Errors\";\r\nimport { MessageType } from \"./IHubProtocol\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { Subject } from \"./Subject\";\r\nimport { Arg, getErrorString, Platform } from \"./Utils\";\r\nimport { MessageBuffer } from \"./MessageBuffer\";\r\nconst DEFAULT_TIMEOUT_IN_MS = 30 * 1000;\r\nconst DEFAULT_PING_INTERVAL_IN_MS = 15 * 1000;\r\nconst DEFAULT_STATEFUL_RECONNECT_BUFFER_SIZE = 100000;\r\n/** Describes the current state of the {@link HubConnection} to the server. */\r\nexport var HubConnectionState;\r\n(function (HubConnectionState) {\r\n /** The hub connection is disconnected. */\r\n HubConnectionState[\"Disconnected\"] = \"Disconnected\";\r\n /** The hub connection is connecting. */\r\n HubConnectionState[\"Connecting\"] = \"Connecting\";\r\n /** The hub connection is connected. */\r\n HubConnectionState[\"Connected\"] = \"Connected\";\r\n /** The hub connection is disconnecting. */\r\n HubConnectionState[\"Disconnecting\"] = \"Disconnecting\";\r\n /** The hub connection is reconnecting. */\r\n HubConnectionState[\"Reconnecting\"] = \"Reconnecting\";\r\n})(HubConnectionState || (HubConnectionState = {}));\r\n/** Represents a connection to a SignalR Hub. */\r\nexport class HubConnection {\r\n /** @internal */\r\n // Using a public static factory method means we can have a private constructor and an _internal_\r\n // create method that can be used by HubConnectionBuilder. An \"internal\" constructor would just\r\n // be stripped away and the '.d.ts' file would have no constructor, which is interpreted as a\r\n // public parameter-less constructor.\r\n static create(connection, logger, protocol, reconnectPolicy, serverTimeoutInMilliseconds, keepAliveIntervalInMilliseconds, statefulReconnectBufferSize) {\r\n return new HubConnection(connection, logger, protocol, reconnectPolicy, serverTimeoutInMilliseconds, keepAliveIntervalInMilliseconds, statefulReconnectBufferSize);\r\n }\r\n constructor(connection, logger, protocol, reconnectPolicy, serverTimeoutInMilliseconds, keepAliveIntervalInMilliseconds, statefulReconnectBufferSize) {\r\n this._nextKeepAlive = 0;\r\n this._freezeEventListener = () => {\r\n this._logger.log(LogLevel.Warning, \"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://learn.microsoft.com/aspnet/core/signalr/javascript-client#bsleep\");\r\n };\r\n Arg.isRequired(connection, \"connection\");\r\n Arg.isRequired(logger, \"logger\");\r\n Arg.isRequired(protocol, \"protocol\");\r\n this.serverTimeoutInMilliseconds = serverTimeoutInMilliseconds !== null && serverTimeoutInMilliseconds !== void 0 ? serverTimeoutInMilliseconds : DEFAULT_TIMEOUT_IN_MS;\r\n this.keepAliveIntervalInMilliseconds = keepAliveIntervalInMilliseconds !== null && keepAliveIntervalInMilliseconds !== void 0 ? keepAliveIntervalInMilliseconds : DEFAULT_PING_INTERVAL_IN_MS;\r\n this._statefulReconnectBufferSize = statefulReconnectBufferSize !== null && statefulReconnectBufferSize !== void 0 ? statefulReconnectBufferSize : DEFAULT_STATEFUL_RECONNECT_BUFFER_SIZE;\r\n this._logger = logger;\r\n this._protocol = protocol;\r\n this.connection = connection;\r\n this._reconnectPolicy = reconnectPolicy;\r\n this._handshakeProtocol = new HandshakeProtocol();\r\n this.connection.onreceive = (data) => this._processIncomingData(data);\r\n this.connection.onclose = (error) => this._connectionClosed(error);\r\n this._callbacks = {};\r\n this._methods = {};\r\n this._closedCallbacks = [];\r\n this._reconnectingCallbacks = [];\r\n this._reconnectedCallbacks = [];\r\n this._invocationId = 0;\r\n this._receivedHandshakeResponse = false;\r\n this._connectionState = HubConnectionState.Disconnected;\r\n this._connectionStarted = false;\r\n this._cachedPingMessage = this._protocol.writeMessage({ type: MessageType.Ping });\r\n }\r\n /** Indicates the state of the {@link HubConnection} to the server. */\r\n get state() {\r\n return this._connectionState;\r\n }\r\n /** Represents the connection id of the {@link HubConnection} on the server. The connection id will be null when the connection is either\r\n * in the disconnected state or if the negotiation step was skipped.\r\n */\r\n get connectionId() {\r\n return this.connection ? (this.connection.connectionId || null) : null;\r\n }\r\n /** Indicates the url of the {@link HubConnection} to the server. */\r\n get baseUrl() {\r\n return this.connection.baseUrl || \"\";\r\n }\r\n /**\r\n * Sets a new url for the HubConnection. Note that the url can only be changed when the connection is in either the Disconnected or\r\n * Reconnecting states.\r\n * @param {string} url The url to connect to.\r\n */\r\n set baseUrl(url) {\r\n if (this._connectionState !== HubConnectionState.Disconnected && this._connectionState !== HubConnectionState.Reconnecting) {\r\n throw new Error(\"The HubConnection must be in the Disconnected or Reconnecting state to change the url.\");\r\n }\r\n if (!url) {\r\n throw new Error(\"The HubConnection url must be a valid url.\");\r\n }\r\n this.connection.baseUrl = url;\r\n }\r\n /** Starts the connection.\r\n *\r\n * @returns {Promise} A Promise that resolves when the connection has been successfully established, or rejects with an error.\r\n */\r\n start() {\r\n this._startPromise = this._startWithStateTransitions();\r\n return this._startPromise;\r\n }\r\n async _startWithStateTransitions() {\r\n if (this._connectionState !== HubConnectionState.Disconnected) {\r\n return Promise.reject(new Error(\"Cannot start a HubConnection that is not in the 'Disconnected' state.\"));\r\n }\r\n this._connectionState = HubConnectionState.Connecting;\r\n this._logger.log(LogLevel.Debug, \"Starting HubConnection.\");\r\n try {\r\n await this._startInternal();\r\n if (Platform.isBrowser) {\r\n // Log when the browser freezes the tab so users know why their connection unexpectedly stopped working\r\n window.document.addEventListener(\"freeze\", this._freezeEventListener);\r\n }\r\n this._connectionState = HubConnectionState.Connected;\r\n this._connectionStarted = true;\r\n this._logger.log(LogLevel.Debug, \"HubConnection connected successfully.\");\r\n }\r\n catch (e) {\r\n this._connectionState = HubConnectionState.Disconnected;\r\n this._logger.log(LogLevel.Debug, `HubConnection failed to start successfully because of error '${e}'.`);\r\n return Promise.reject(e);\r\n }\r\n }\r\n async _startInternal() {\r\n this._stopDuringStartError = undefined;\r\n this._receivedHandshakeResponse = false;\r\n // Set up the promise before any connection is (re)started otherwise it could race with received messages\r\n const handshakePromise = new Promise((resolve, reject) => {\r\n this._handshakeResolver = resolve;\r\n this._handshakeRejecter = reject;\r\n });\r\n await this.connection.start(this._protocol.transferFormat);\r\n try {\r\n let version = this._protocol.version;\r\n if (!this.connection.features.reconnect) {\r\n // Stateful Reconnect starts with HubProtocol version 2, newer clients connecting to older servers will fail to connect due to\r\n // the handshake only supporting version 1, so we will try to send version 1 during the handshake to keep old servers working.\r\n version = 1;\r\n }\r\n const handshakeRequest = {\r\n protocol: this._protocol.name,\r\n version,\r\n };\r\n this._logger.log(LogLevel.Debug, \"Sending handshake request.\");\r\n await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(handshakeRequest));\r\n this._logger.log(LogLevel.Information, `Using HubProtocol '${this._protocol.name}'.`);\r\n // defensively cleanup timeout in case we receive a message from the server before we finish start\r\n this._cleanupTimeout();\r\n this._resetTimeoutPeriod();\r\n this._resetKeepAliveInterval();\r\n await handshakePromise;\r\n // It's important to check the stopDuringStartError instead of just relying on the handshakePromise\r\n // being rejected on close, because this continuation can run after both the handshake completed successfully\r\n // and the connection was closed.\r\n if (this._stopDuringStartError) {\r\n // It's important to throw instead of returning a rejected promise, because we don't want to allow any state\r\n // transitions to occur between now and the calling code observing the exceptions. Returning a rejected promise\r\n // will cause the calling continuation to get scheduled to run later.\r\n // eslint-disable-next-line @typescript-eslint/no-throw-literal\r\n throw this._stopDuringStartError;\r\n }\r\n const useStatefulReconnect = this.connection.features.reconnect || false;\r\n if (useStatefulReconnect) {\r\n this._messageBuffer = new MessageBuffer(this._protocol, this.connection, this._statefulReconnectBufferSize);\r\n this.connection.features.disconnected = this._messageBuffer._disconnected.bind(this._messageBuffer);\r\n this.connection.features.resend = () => {\r\n if (this._messageBuffer) {\r\n return this._messageBuffer._resend();\r\n }\r\n };\r\n }\r\n if (!this.connection.features.inherentKeepAlive) {\r\n await this._sendMessage(this._cachedPingMessage);\r\n }\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Debug, `Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`);\r\n this._cleanupTimeout();\r\n this._cleanupPingTimer();\r\n // HttpConnection.stop() should not complete until after the onclose callback is invoked.\r\n // This will transition the HubConnection to the disconnected state before HttpConnection.stop() completes.\r\n await this.connection.stop(e);\r\n throw e;\r\n }\r\n }\r\n /** Stops the connection.\r\n *\r\n * @returns {Promise} A Promise that resolves when the connection has been successfully terminated, or rejects with an error.\r\n */\r\n async stop() {\r\n // Capture the start promise before the connection might be restarted in an onclose callback.\r\n const startPromise = this._startPromise;\r\n this.connection.features.reconnect = false;\r\n this._stopPromise = this._stopInternal();\r\n await this._stopPromise;\r\n try {\r\n // Awaiting undefined continues immediately\r\n await startPromise;\r\n }\r\n catch (e) {\r\n // This exception is returned to the user as a rejected Promise from the start method.\r\n }\r\n }\r\n _stopInternal(error) {\r\n if (this._connectionState === HubConnectionState.Disconnected) {\r\n this._logger.log(LogLevel.Debug, `Call to HubConnection.stop(${error}) ignored because it is already in the disconnected state.`);\r\n return Promise.resolve();\r\n }\r\n if (this._connectionState === HubConnectionState.Disconnecting) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stop(${error}) ignored because the connection is already in the disconnecting state.`);\r\n return this._stopPromise;\r\n }\r\n const state = this._connectionState;\r\n this._connectionState = HubConnectionState.Disconnecting;\r\n this._logger.log(LogLevel.Debug, \"Stopping HubConnection.\");\r\n if (this._reconnectDelayHandle) {\r\n // We're in a reconnect delay which means the underlying connection is currently already stopped.\r\n // Just clear the handle to stop the reconnect loop (which no one is waiting on thankfully) and\r\n // fire the onclose callbacks.\r\n this._logger.log(LogLevel.Debug, \"Connection stopped during reconnect delay. Done reconnecting.\");\r\n clearTimeout(this._reconnectDelayHandle);\r\n this._reconnectDelayHandle = undefined;\r\n this._completeClose();\r\n return Promise.resolve();\r\n }\r\n if (state === HubConnectionState.Connected) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this._sendCloseMessage();\r\n }\r\n this._cleanupTimeout();\r\n this._cleanupPingTimer();\r\n this._stopDuringStartError = error || new AbortError(\"The connection was stopped before the hub handshake could complete.\");\r\n // HttpConnection.stop() should not complete until after either HttpConnection.start() fails\r\n // or the onclose callback is invoked. The onclose callback will transition the HubConnection\r\n // to the disconnected state if need be before HttpConnection.stop() completes.\r\n return this.connection.stop(error);\r\n }\r\n async _sendCloseMessage() {\r\n try {\r\n await this._sendWithProtocol(this._createCloseMessage());\r\n }\r\n catch {\r\n // Ignore, this is a best effort attempt to let the server know the client closed gracefully.\r\n }\r\n }\r\n /** Invokes a streaming hub method on the server using the specified name and arguments.\r\n *\r\n * @typeparam T The type of the items returned by the server.\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {IStreamResult} An object that yields results from the server as they are received.\r\n */\r\n stream(methodName, ...args) {\r\n const [streams, streamIds] = this._replaceStreamingParams(args);\r\n const invocationDescriptor = this._createStreamInvocation(methodName, args, streamIds);\r\n // eslint-disable-next-line prefer-const\r\n let promiseQueue;\r\n const subject = new Subject();\r\n subject.cancelCallback = () => {\r\n const cancelInvocation = this._createCancelInvocation(invocationDescriptor.invocationId);\r\n delete this._callbacks[invocationDescriptor.invocationId];\r\n return promiseQueue.then(() => {\r\n return this._sendWithProtocol(cancelInvocation);\r\n });\r\n };\r\n this._callbacks[invocationDescriptor.invocationId] = (invocationEvent, error) => {\r\n if (error) {\r\n subject.error(error);\r\n return;\r\n }\r\n else if (invocationEvent) {\r\n // invocationEvent will not be null when an error is not passed to the callback\r\n if (invocationEvent.type === MessageType.Completion) {\r\n if (invocationEvent.error) {\r\n subject.error(new Error(invocationEvent.error));\r\n }\r\n else {\r\n subject.complete();\r\n }\r\n }\r\n else {\r\n subject.next((invocationEvent.item));\r\n }\r\n }\r\n };\r\n promiseQueue = this._sendWithProtocol(invocationDescriptor)\r\n .catch((e) => {\r\n subject.error(e);\r\n delete this._callbacks[invocationDescriptor.invocationId];\r\n });\r\n this._launchStreams(streams, promiseQueue);\r\n return subject;\r\n }\r\n _sendMessage(message) {\r\n this._resetKeepAliveInterval();\r\n return this.connection.send(message);\r\n }\r\n /**\r\n * Sends a js object to the server.\r\n * @param message The js object to serialize and send.\r\n */\r\n _sendWithProtocol(message) {\r\n if (this._messageBuffer) {\r\n return this._messageBuffer._send(message);\r\n }\r\n else {\r\n return this._sendMessage(this._protocol.writeMessage(message));\r\n }\r\n }\r\n /** Invokes a hub method on the server using the specified name and arguments. Does not wait for a response from the receiver.\r\n *\r\n * The Promise returned by this method resolves when the client has sent the invocation to the server. The server may still\r\n * be processing the invocation.\r\n *\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {Promise} A Promise that resolves when the invocation has been successfully sent, or rejects with an error.\r\n */\r\n send(methodName, ...args) {\r\n const [streams, streamIds] = this._replaceStreamingParams(args);\r\n const sendPromise = this._sendWithProtocol(this._createInvocation(methodName, args, true, streamIds));\r\n this._launchStreams(streams, sendPromise);\r\n return sendPromise;\r\n }\r\n /** Invokes a hub method on the server using the specified name and arguments.\r\n *\r\n * The Promise returned by this method resolves when the server indicates it has finished invoking the method. When the promise\r\n * resolves, the server has finished invoking the method. If the server method returns a result, it is produced as the result of\r\n * resolving the Promise.\r\n *\r\n * @typeparam T The expected return type.\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {Promise} A Promise that resolves with the result of the server method (if any), or rejects with an error.\r\n */\r\n invoke(methodName, ...args) {\r\n const [streams, streamIds] = this._replaceStreamingParams(args);\r\n const invocationDescriptor = this._createInvocation(methodName, args, false, streamIds);\r\n const p = new Promise((resolve, reject) => {\r\n // invocationId will always have a value for a non-blocking invocation\r\n this._callbacks[invocationDescriptor.invocationId] = (invocationEvent, error) => {\r\n if (error) {\r\n reject(error);\r\n return;\r\n }\r\n else if (invocationEvent) {\r\n // invocationEvent will not be null when an error is not passed to the callback\r\n if (invocationEvent.type === MessageType.Completion) {\r\n if (invocationEvent.error) {\r\n reject(new Error(invocationEvent.error));\r\n }\r\n else {\r\n resolve(invocationEvent.result);\r\n }\r\n }\r\n else {\r\n reject(new Error(`Unexpected message type: ${invocationEvent.type}`));\r\n }\r\n }\r\n };\r\n const promiseQueue = this._sendWithProtocol(invocationDescriptor)\r\n .catch((e) => {\r\n reject(e);\r\n // invocationId will always have a value for a non-blocking invocation\r\n delete this._callbacks[invocationDescriptor.invocationId];\r\n });\r\n this._launchStreams(streams, promiseQueue);\r\n });\r\n return p;\r\n }\r\n on(methodName, newMethod) {\r\n if (!methodName || !newMethod) {\r\n return;\r\n }\r\n methodName = methodName.toLowerCase();\r\n if (!this._methods[methodName]) {\r\n this._methods[methodName] = [];\r\n }\r\n // Preventing adding the same handler multiple times.\r\n if (this._methods[methodName].indexOf(newMethod) !== -1) {\r\n return;\r\n }\r\n this._methods[methodName].push(newMethod);\r\n }\r\n off(methodName, method) {\r\n if (!methodName) {\r\n return;\r\n }\r\n methodName = methodName.toLowerCase();\r\n const handlers = this._methods[methodName];\r\n if (!handlers) {\r\n return;\r\n }\r\n if (method) {\r\n const removeIdx = handlers.indexOf(method);\r\n if (removeIdx !== -1) {\r\n handlers.splice(removeIdx, 1);\r\n if (handlers.length === 0) {\r\n delete this._methods[methodName];\r\n }\r\n }\r\n }\r\n else {\r\n delete this._methods[methodName];\r\n }\r\n }\r\n /** Registers a handler that will be invoked when the connection is closed.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection is closed. Optionally receives a single argument containing the error that caused the connection to close (if any).\r\n */\r\n onclose(callback) {\r\n if (callback) {\r\n this._closedCallbacks.push(callback);\r\n }\r\n }\r\n /** Registers a handler that will be invoked when the connection starts reconnecting.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection starts reconnecting. Optionally receives a single argument containing the error that caused the connection to start reconnecting (if any).\r\n */\r\n onreconnecting(callback) {\r\n if (callback) {\r\n this._reconnectingCallbacks.push(callback);\r\n }\r\n }\r\n /** Registers a handler that will be invoked when the connection successfully reconnects.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection successfully reconnects.\r\n */\r\n onreconnected(callback) {\r\n if (callback) {\r\n this._reconnectedCallbacks.push(callback);\r\n }\r\n }\r\n _processIncomingData(data) {\r\n this._cleanupTimeout();\r\n if (!this._receivedHandshakeResponse) {\r\n data = this._processHandshakeResponse(data);\r\n this._receivedHandshakeResponse = true;\r\n }\r\n // Data may have all been read when processing handshake response\r\n if (data) {\r\n // Parse the messages\r\n const messages = this._protocol.parseMessages(data, this._logger);\r\n for (const message of messages) {\r\n if (this._messageBuffer && !this._messageBuffer._shouldProcessMessage(message)) {\r\n // Don't process the message, we are either waiting for a SequenceMessage or received a duplicate message\r\n continue;\r\n }\r\n switch (message.type) {\r\n case MessageType.Invocation:\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this._invokeClientMethod(message);\r\n break;\r\n case MessageType.StreamItem:\r\n case MessageType.Completion: {\r\n const callback = this._callbacks[message.invocationId];\r\n if (callback) {\r\n if (message.type === MessageType.Completion) {\r\n delete this._callbacks[message.invocationId];\r\n }\r\n try {\r\n callback(message);\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `Stream callback threw error: ${getErrorString(e)}`);\r\n }\r\n }\r\n break;\r\n }\r\n case MessageType.Ping:\r\n // Don't care about pings\r\n break;\r\n case MessageType.Close: {\r\n this._logger.log(LogLevel.Information, \"Close message received from server.\");\r\n const error = message.error ? new Error(\"Server returned an error on close: \" + message.error) : undefined;\r\n if (message.allowReconnect === true) {\r\n // It feels wrong not to await connection.stop() here, but processIncomingData is called as part of an onreceive callback which is not async,\r\n // this is already the behavior for serverTimeout(), and HttpConnection.Stop() should catch and log all possible exceptions.\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.connection.stop(error);\r\n }\r\n else {\r\n // We cannot await stopInternal() here, but subsequent calls to stop() will await this if stopInternal() is still ongoing.\r\n this._stopPromise = this._stopInternal(error);\r\n }\r\n break;\r\n }\r\n case MessageType.Ack:\r\n if (this._messageBuffer) {\r\n this._messageBuffer._ack(message);\r\n }\r\n break;\r\n case MessageType.Sequence:\r\n if (this._messageBuffer) {\r\n this._messageBuffer._resetSequence(message);\r\n }\r\n break;\r\n default:\r\n this._logger.log(LogLevel.Warning, `Invalid message type: ${message.type}.`);\r\n break;\r\n }\r\n }\r\n }\r\n this._resetTimeoutPeriod();\r\n }\r\n _processHandshakeResponse(data) {\r\n let responseMessage;\r\n let remainingData;\r\n try {\r\n [remainingData, responseMessage] = this._handshakeProtocol.parseHandshakeResponse(data);\r\n }\r\n catch (e) {\r\n const message = \"Error parsing handshake response: \" + e;\r\n this._logger.log(LogLevel.Error, message);\r\n const error = new Error(message);\r\n this._handshakeRejecter(error);\r\n throw error;\r\n }\r\n if (responseMessage.error) {\r\n const message = \"Server returned handshake error: \" + responseMessage.error;\r\n this._logger.log(LogLevel.Error, message);\r\n const error = new Error(message);\r\n this._handshakeRejecter(error);\r\n throw error;\r\n }\r\n else {\r\n this._logger.log(LogLevel.Debug, \"Server handshake complete.\");\r\n }\r\n this._handshakeResolver();\r\n return remainingData;\r\n }\r\n _resetKeepAliveInterval() {\r\n if (this.connection.features.inherentKeepAlive) {\r\n return;\r\n }\r\n // Set the time we want the next keep alive to be sent\r\n // Timer will be setup on next message receive\r\n this._nextKeepAlive = new Date().getTime() + this.keepAliveIntervalInMilliseconds;\r\n this._cleanupPingTimer();\r\n }\r\n _resetTimeoutPeriod() {\r\n if (!this.connection.features || !this.connection.features.inherentKeepAlive) {\r\n // Set the timeout timer\r\n this._timeoutHandle = setTimeout(() => this.serverTimeout(), this.serverTimeoutInMilliseconds);\r\n // Set keepAlive timer if there isn't one\r\n if (this._pingServerHandle === undefined) {\r\n let nextPing = this._nextKeepAlive - new Date().getTime();\r\n if (nextPing < 0) {\r\n nextPing = 0;\r\n }\r\n // The timer needs to be set from a networking callback to avoid Chrome timer throttling from causing timers to run once a minute\r\n this._pingServerHandle = setTimeout(async () => {\r\n if (this._connectionState === HubConnectionState.Connected) {\r\n try {\r\n await this._sendMessage(this._cachedPingMessage);\r\n }\r\n catch {\r\n // We don't care about the error. It should be seen elsewhere in the client.\r\n // The connection is probably in a bad or closed state now, cleanup the timer so it stops triggering\r\n this._cleanupPingTimer();\r\n }\r\n }\r\n }, nextPing);\r\n }\r\n }\r\n }\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n serverTimeout() {\r\n // The server hasn't talked to us in a while. It doesn't like us anymore ... :(\r\n // Terminate the connection, but we don't need to wait on the promise. This could trigger reconnecting.\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.connection.stop(new Error(\"Server timeout elapsed without receiving a message from the server.\"));\r\n }\r\n async _invokeClientMethod(invocationMessage) {\r\n const methodName = invocationMessage.target.toLowerCase();\r\n const methods = this._methods[methodName];\r\n if (!methods) {\r\n this._logger.log(LogLevel.Warning, `No client method with the name '${methodName}' found.`);\r\n // No handlers provided by client but the server is expecting a response still, so we send an error\r\n if (invocationMessage.invocationId) {\r\n this._logger.log(LogLevel.Warning, `No result given for '${methodName}' method and invocation ID '${invocationMessage.invocationId}'.`);\r\n await this._sendWithProtocol(this._createCompletionMessage(invocationMessage.invocationId, \"Client didn't provide a result.\", null));\r\n }\r\n return;\r\n }\r\n // Avoid issues with handlers removing themselves thus modifying the list while iterating through it\r\n const methodsCopy = methods.slice();\r\n // Server expects a response\r\n const expectsResponse = invocationMessage.invocationId ? true : false;\r\n // We preserve the last result or exception but still call all handlers\r\n let res;\r\n let exception;\r\n let completionMessage;\r\n for (const m of methodsCopy) {\r\n try {\r\n const prevRes = res;\r\n res = await m.apply(this, invocationMessage.arguments);\r\n if (expectsResponse && res && prevRes) {\r\n this._logger.log(LogLevel.Error, `Multiple results provided for '${methodName}'. Sending error to server.`);\r\n completionMessage = this._createCompletionMessage(invocationMessage.invocationId, `Client provided multiple results.`, null);\r\n }\r\n // Ignore exception if we got a result after, the exception will be logged\r\n exception = undefined;\r\n }\r\n catch (e) {\r\n exception = e;\r\n this._logger.log(LogLevel.Error, `A callback for the method '${methodName}' threw error '${e}'.`);\r\n }\r\n }\r\n if (completionMessage) {\r\n await this._sendWithProtocol(completionMessage);\r\n }\r\n else if (expectsResponse) {\r\n // If there is an exception that means either no result was given or a handler after a result threw\r\n if (exception) {\r\n completionMessage = this._createCompletionMessage(invocationMessage.invocationId, `${exception}`, null);\r\n }\r\n else if (res !== undefined) {\r\n completionMessage = this._createCompletionMessage(invocationMessage.invocationId, null, res);\r\n }\r\n else {\r\n this._logger.log(LogLevel.Warning, `No result given for '${methodName}' method and invocation ID '${invocationMessage.invocationId}'.`);\r\n // Client didn't provide a result or throw from a handler, server expects a response so we send an error\r\n completionMessage = this._createCompletionMessage(invocationMessage.invocationId, \"Client didn't provide a result.\", null);\r\n }\r\n await this._sendWithProtocol(completionMessage);\r\n }\r\n else {\r\n if (res) {\r\n this._logger.log(LogLevel.Error, `Result given for '${methodName}' method but server is not expecting a result.`);\r\n }\r\n }\r\n }\r\n _connectionClosed(error) {\r\n this._logger.log(LogLevel.Debug, `HubConnection.connectionClosed(${error}) called while in state ${this._connectionState}.`);\r\n // Triggering this.handshakeRejecter is insufficient because it could already be resolved without the continuation having run yet.\r\n this._stopDuringStartError = this._stopDuringStartError || error || new AbortError(\"The underlying connection was closed before the hub handshake could complete.\");\r\n // If the handshake is in progress, start will be waiting for the handshake promise, so we complete it.\r\n // If it has already completed, this should just noop.\r\n if (this._handshakeResolver) {\r\n this._handshakeResolver();\r\n }\r\n this._cancelCallbacksWithError(error || new Error(\"Invocation canceled due to the underlying connection being closed.\"));\r\n this._cleanupTimeout();\r\n this._cleanupPingTimer();\r\n if (this._connectionState === HubConnectionState.Disconnecting) {\r\n this._completeClose(error);\r\n }\r\n else if (this._connectionState === HubConnectionState.Connected && this._reconnectPolicy) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this._reconnect(error);\r\n }\r\n else if (this._connectionState === HubConnectionState.Connected) {\r\n this._completeClose(error);\r\n }\r\n // If none of the above if conditions were true were called the HubConnection must be in either:\r\n // 1. The Connecting state in which case the handshakeResolver will complete it and stopDuringStartError will fail it.\r\n // 2. The Reconnecting state in which case the handshakeResolver will complete it and stopDuringStartError will fail the current reconnect attempt\r\n // and potentially continue the reconnect() loop.\r\n // 3. The Disconnected state in which case we're already done.\r\n }\r\n _completeClose(error) {\r\n if (this._connectionStarted) {\r\n this._connectionState = HubConnectionState.Disconnected;\r\n this._connectionStarted = false;\r\n if (this._messageBuffer) {\r\n this._messageBuffer._dispose(error !== null && error !== void 0 ? error : new Error(\"Connection closed.\"));\r\n this._messageBuffer = undefined;\r\n }\r\n if (Platform.isBrowser) {\r\n window.document.removeEventListener(\"freeze\", this._freezeEventListener);\r\n }\r\n try {\r\n this._closedCallbacks.forEach((c) => c.apply(this, [error]));\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `An onclose callback called with error '${error}' threw error '${e}'.`);\r\n }\r\n }\r\n }\r\n async _reconnect(error) {\r\n const reconnectStartTime = Date.now();\r\n let previousReconnectAttempts = 0;\r\n let retryError = error !== undefined ? error : new Error(\"Attempting to reconnect due to a unknown error.\");\r\n let nextRetryDelay = this._getNextRetryDelay(previousReconnectAttempts++, 0, retryError);\r\n if (nextRetryDelay === null) {\r\n this._logger.log(LogLevel.Debug, \"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt.\");\r\n this._completeClose(error);\r\n return;\r\n }\r\n this._connectionState = HubConnectionState.Reconnecting;\r\n if (error) {\r\n this._logger.log(LogLevel.Information, `Connection reconnecting because of error '${error}'.`);\r\n }\r\n else {\r\n this._logger.log(LogLevel.Information, \"Connection reconnecting.\");\r\n }\r\n if (this._reconnectingCallbacks.length !== 0) {\r\n try {\r\n this._reconnectingCallbacks.forEach((c) => c.apply(this, [error]));\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `An onreconnecting callback called with error '${error}' threw error '${e}'.`);\r\n }\r\n // Exit early if an onreconnecting callback called connection.stop().\r\n if (this._connectionState !== HubConnectionState.Reconnecting) {\r\n this._logger.log(LogLevel.Debug, \"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.\");\r\n return;\r\n }\r\n }\r\n while (nextRetryDelay !== null) {\r\n this._logger.log(LogLevel.Information, `Reconnect attempt number ${previousReconnectAttempts} will start in ${nextRetryDelay} ms.`);\r\n await new Promise((resolve) => {\r\n this._reconnectDelayHandle = setTimeout(resolve, nextRetryDelay);\r\n });\r\n this._reconnectDelayHandle = undefined;\r\n if (this._connectionState !== HubConnectionState.Reconnecting) {\r\n this._logger.log(LogLevel.Debug, \"Connection left the reconnecting state during reconnect delay. Done reconnecting.\");\r\n return;\r\n }\r\n try {\r\n await this._startInternal();\r\n this._connectionState = HubConnectionState.Connected;\r\n this._logger.log(LogLevel.Information, \"HubConnection reconnected successfully.\");\r\n if (this._reconnectedCallbacks.length !== 0) {\r\n try {\r\n this._reconnectedCallbacks.forEach((c) => c.apply(this, [this.connection.connectionId]));\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`);\r\n }\r\n }\r\n return;\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Information, `Reconnect attempt failed because of error '${e}'.`);\r\n if (this._connectionState !== HubConnectionState.Reconnecting) {\r\n this._logger.log(LogLevel.Debug, `Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`);\r\n // The TypeScript compiler thinks that connectionState must be Connected here. The TypeScript compiler is wrong.\r\n if (this._connectionState === HubConnectionState.Disconnecting) {\r\n this._completeClose();\r\n }\r\n return;\r\n }\r\n retryError = e instanceof Error ? e : new Error(e.toString());\r\n nextRetryDelay = this._getNextRetryDelay(previousReconnectAttempts++, Date.now() - reconnectStartTime, retryError);\r\n }\r\n }\r\n this._logger.log(LogLevel.Information, `Reconnect retries have been exhausted after ${Date.now() - reconnectStartTime} ms and ${previousReconnectAttempts} failed attempts. Connection disconnecting.`);\r\n this._completeClose();\r\n }\r\n _getNextRetryDelay(previousRetryCount, elapsedMilliseconds, retryReason) {\r\n try {\r\n return this._reconnectPolicy.nextRetryDelayInMilliseconds({\r\n elapsedMilliseconds,\r\n previousRetryCount,\r\n retryReason,\r\n });\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `IRetryPolicy.nextRetryDelayInMilliseconds(${previousRetryCount}, ${elapsedMilliseconds}) threw error '${e}'.`);\r\n return null;\r\n }\r\n }\r\n _cancelCallbacksWithError(error) {\r\n const callbacks = this._callbacks;\r\n this._callbacks = {};\r\n Object.keys(callbacks)\r\n .forEach((key) => {\r\n const callback = callbacks[key];\r\n try {\r\n callback(null, error);\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `Stream 'error' callback called with '${error}' threw error: ${getErrorString(e)}`);\r\n }\r\n });\r\n }\r\n _cleanupPingTimer() {\r\n if (this._pingServerHandle) {\r\n clearTimeout(this._pingServerHandle);\r\n this._pingServerHandle = undefined;\r\n }\r\n }\r\n _cleanupTimeout() {\r\n if (this._timeoutHandle) {\r\n clearTimeout(this._timeoutHandle);\r\n }\r\n }\r\n _createInvocation(methodName, args, nonblocking, streamIds) {\r\n if (nonblocking) {\r\n if (streamIds.length !== 0) {\r\n return {\r\n arguments: args,\r\n streamIds,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n else {\r\n return {\r\n arguments: args,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n }\r\n else {\r\n const invocationId = this._invocationId;\r\n this._invocationId++;\r\n if (streamIds.length !== 0) {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n streamIds,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n else {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n }\r\n }\r\n _launchStreams(streams, promiseQueue) {\r\n if (streams.length === 0) {\r\n return;\r\n }\r\n // Synchronize stream data so they arrive in-order on the server\r\n if (!promiseQueue) {\r\n promiseQueue = Promise.resolve();\r\n }\r\n // We want to iterate over the keys, since the keys are the stream ids\r\n // eslint-disable-next-line guard-for-in\r\n for (const streamId in streams) {\r\n streams[streamId].subscribe({\r\n complete: () => {\r\n promiseQueue = promiseQueue.then(() => this._sendWithProtocol(this._createCompletionMessage(streamId)));\r\n },\r\n error: (err) => {\r\n let message;\r\n if (err instanceof Error) {\r\n message = err.message;\r\n }\r\n else if (err && err.toString) {\r\n message = err.toString();\r\n }\r\n else {\r\n message = \"Unknown error\";\r\n }\r\n promiseQueue = promiseQueue.then(() => this._sendWithProtocol(this._createCompletionMessage(streamId, message)));\r\n },\r\n next: (item) => {\r\n promiseQueue = promiseQueue.then(() => this._sendWithProtocol(this._createStreamItemMessage(streamId, item)));\r\n },\r\n });\r\n }\r\n }\r\n _replaceStreamingParams(args) {\r\n const streams = [];\r\n const streamIds = [];\r\n for (let i = 0; i < args.length; i++) {\r\n const argument = args[i];\r\n if (this._isObservable(argument)) {\r\n const streamId = this._invocationId;\r\n this._invocationId++;\r\n // Store the stream for later use\r\n streams[streamId] = argument;\r\n streamIds.push(streamId.toString());\r\n // remove stream from args\r\n args.splice(i, 1);\r\n }\r\n }\r\n return [streams, streamIds];\r\n }\r\n _isObservable(arg) {\r\n // This allows other stream implementations to just work (like rxjs)\r\n return arg && arg.subscribe && typeof arg.subscribe === \"function\";\r\n }\r\n _createStreamInvocation(methodName, args, streamIds) {\r\n const invocationId = this._invocationId;\r\n this._invocationId++;\r\n if (streamIds.length !== 0) {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n streamIds,\r\n target: methodName,\r\n type: MessageType.StreamInvocation,\r\n };\r\n }\r\n else {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n target: methodName,\r\n type: MessageType.StreamInvocation,\r\n };\r\n }\r\n }\r\n _createCancelInvocation(id) {\r\n return {\r\n invocationId: id,\r\n type: MessageType.CancelInvocation,\r\n };\r\n }\r\n _createStreamItemMessage(id, item) {\r\n return {\r\n invocationId: id,\r\n item,\r\n type: MessageType.StreamItem,\r\n };\r\n }\r\n _createCompletionMessage(id, error, result) {\r\n if (error) {\r\n return {\r\n error,\r\n invocationId: id,\r\n type: MessageType.Completion,\r\n };\r\n }\r\n return {\r\n invocationId: id,\r\n result,\r\n type: MessageType.Completion,\r\n };\r\n }\r\n _createCloseMessage() {\r\n return { type: MessageType.Close };\r\n }\r\n}\r\n//# sourceMappingURL=HubConnection.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { MessageType } from \"./IHubProtocol\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { NullLogger } from \"./Loggers\";\r\nimport { TextMessageFormat } from \"./TextMessageFormat\";\r\nconst JSON_HUB_PROTOCOL_NAME = \"json\";\r\n/** Implements the JSON Hub Protocol. */\r\nexport class JsonHubProtocol {\r\n constructor() {\r\n /** @inheritDoc */\r\n this.name = JSON_HUB_PROTOCOL_NAME;\r\n /** @inheritDoc */\r\n this.version = 2;\r\n /** @inheritDoc */\r\n this.transferFormat = TransferFormat.Text;\r\n }\r\n /** Creates an array of {@link @microsoft/signalr.HubMessage} objects from the specified serialized representation.\r\n *\r\n * @param {string} input A string containing the serialized representation.\r\n * @param {ILogger} logger A logger that will be used to log messages that occur during parsing.\r\n */\r\n parseMessages(input, logger) {\r\n // The interface does allow \"ArrayBuffer\" to be passed in, but this implementation does not. So let's throw a useful error.\r\n if (typeof input !== \"string\") {\r\n throw new Error(\"Invalid input for JSON hub protocol. Expected a string.\");\r\n }\r\n if (!input) {\r\n return [];\r\n }\r\n if (logger === null) {\r\n logger = NullLogger.instance;\r\n }\r\n // Parse the messages\r\n const messages = TextMessageFormat.parse(input);\r\n const hubMessages = [];\r\n for (const message of messages) {\r\n const parsedMessage = JSON.parse(message);\r\n if (typeof parsedMessage.type !== \"number\") {\r\n throw new Error(\"Invalid payload.\");\r\n }\r\n switch (parsedMessage.type) {\r\n case MessageType.Invocation:\r\n this._isInvocationMessage(parsedMessage);\r\n break;\r\n case MessageType.StreamItem:\r\n this._isStreamItemMessage(parsedMessage);\r\n break;\r\n case MessageType.Completion:\r\n this._isCompletionMessage(parsedMessage);\r\n break;\r\n case MessageType.Ping:\r\n // Single value, no need to validate\r\n break;\r\n case MessageType.Close:\r\n // All optional values, no need to validate\r\n break;\r\n case MessageType.Ack:\r\n this._isAckMessage(parsedMessage);\r\n break;\r\n case MessageType.Sequence:\r\n this._isSequenceMessage(parsedMessage);\r\n break;\r\n default:\r\n // Future protocol changes can add message types, old clients can ignore them\r\n logger.log(LogLevel.Information, \"Unknown message type '\" + parsedMessage.type + \"' ignored.\");\r\n continue;\r\n }\r\n hubMessages.push(parsedMessage);\r\n }\r\n return hubMessages;\r\n }\r\n /** Writes the specified {@link @microsoft/signalr.HubMessage} to a string and returns it.\r\n *\r\n * @param {HubMessage} message The message to write.\r\n * @returns {string} A string containing the serialized representation of the message.\r\n */\r\n writeMessage(message) {\r\n return TextMessageFormat.write(JSON.stringify(message));\r\n }\r\n _isInvocationMessage(message) {\r\n this._assertNotEmptyString(message.target, \"Invalid payload for Invocation message.\");\r\n if (message.invocationId !== undefined) {\r\n this._assertNotEmptyString(message.invocationId, \"Invalid payload for Invocation message.\");\r\n }\r\n }\r\n _isStreamItemMessage(message) {\r\n this._assertNotEmptyString(message.invocationId, \"Invalid payload for StreamItem message.\");\r\n if (message.item === undefined) {\r\n throw new Error(\"Invalid payload for StreamItem message.\");\r\n }\r\n }\r\n _isCompletionMessage(message) {\r\n if (message.result && message.error) {\r\n throw new Error(\"Invalid payload for Completion message.\");\r\n }\r\n if (!message.result && message.error) {\r\n this._assertNotEmptyString(message.error, \"Invalid payload for Completion message.\");\r\n }\r\n this._assertNotEmptyString(message.invocationId, \"Invalid payload for Completion message.\");\r\n }\r\n _isAckMessage(message) {\r\n if (typeof message.sequenceId !== 'number') {\r\n throw new Error(\"Invalid SequenceId for Ack message.\");\r\n }\r\n }\r\n _isSequenceMessage(message) {\r\n if (typeof message.sequenceId !== 'number') {\r\n throw new Error(\"Invalid SequenceId for Sequence message.\");\r\n }\r\n }\r\n _assertNotEmptyString(value, errorMessage) {\r\n if (typeof value !== \"string\" || value === \"\") {\r\n throw new Error(errorMessage);\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=JsonHubProtocol.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { DefaultReconnectPolicy } from \"./DefaultReconnectPolicy\";\r\nimport { HttpConnection } from \"./HttpConnection\";\r\nimport { HubConnection } from \"./HubConnection\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { JsonHubProtocol } from \"./JsonHubProtocol\";\r\nimport { NullLogger } from \"./Loggers\";\r\nimport { Arg, ConsoleLogger } from \"./Utils\";\r\nconst LogLevelNameMapping = {\r\n trace: LogLevel.Trace,\r\n debug: LogLevel.Debug,\r\n info: LogLevel.Information,\r\n information: LogLevel.Information,\r\n warn: LogLevel.Warning,\r\n warning: LogLevel.Warning,\r\n error: LogLevel.Error,\r\n critical: LogLevel.Critical,\r\n none: LogLevel.None,\r\n};\r\nfunction parseLogLevel(name) {\r\n // Case-insensitive matching via lower-casing\r\n // Yes, I know case-folding is a complicated problem in Unicode, but we only support\r\n // the ASCII strings defined in LogLevelNameMapping anyway, so it's fine -anurse.\r\n const mapping = LogLevelNameMapping[name.toLowerCase()];\r\n if (typeof mapping !== \"undefined\") {\r\n return mapping;\r\n }\r\n else {\r\n throw new Error(`Unknown log level: ${name}`);\r\n }\r\n}\r\n/** A builder for configuring {@link @microsoft/signalr.HubConnection} instances. */\r\nexport class HubConnectionBuilder {\r\n configureLogging(logging) {\r\n Arg.isRequired(logging, \"logging\");\r\n if (isLogger(logging)) {\r\n this.logger = logging;\r\n }\r\n else if (typeof logging === \"string\") {\r\n const logLevel = parseLogLevel(logging);\r\n this.logger = new ConsoleLogger(logLevel);\r\n }\r\n else {\r\n this.logger = new ConsoleLogger(logging);\r\n }\r\n return this;\r\n }\r\n withUrl(url, transportTypeOrOptions) {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isNotEmpty(url, \"url\");\r\n this.url = url;\r\n // Flow-typing knows where it's at. Since HttpTransportType is a number and IHttpConnectionOptions is guaranteed\r\n // to be an object, we know (as does TypeScript) this comparison is all we need to figure out which overload was called.\r\n if (typeof transportTypeOrOptions === \"object\") {\r\n this.httpConnectionOptions = { ...this.httpConnectionOptions, ...transportTypeOrOptions };\r\n }\r\n else {\r\n this.httpConnectionOptions = {\r\n ...this.httpConnectionOptions,\r\n transport: transportTypeOrOptions,\r\n };\r\n }\r\n return this;\r\n }\r\n /** Configures the {@link @microsoft/signalr.HubConnection} to use the specified Hub Protocol.\r\n *\r\n * @param {IHubProtocol} protocol The {@link @microsoft/signalr.IHubProtocol} implementation to use.\r\n */\r\n withHubProtocol(protocol) {\r\n Arg.isRequired(protocol, \"protocol\");\r\n this.protocol = protocol;\r\n return this;\r\n }\r\n withAutomaticReconnect(retryDelaysOrReconnectPolicy) {\r\n if (this.reconnectPolicy) {\r\n throw new Error(\"A reconnectPolicy has already been set.\");\r\n }\r\n if (!retryDelaysOrReconnectPolicy) {\r\n this.reconnectPolicy = new DefaultReconnectPolicy();\r\n }\r\n else if (Array.isArray(retryDelaysOrReconnectPolicy)) {\r\n this.reconnectPolicy = new DefaultReconnectPolicy(retryDelaysOrReconnectPolicy);\r\n }\r\n else {\r\n this.reconnectPolicy = retryDelaysOrReconnectPolicy;\r\n }\r\n return this;\r\n }\r\n /** Configures {@link @microsoft/signalr.HubConnection.serverTimeoutInMilliseconds} for the {@link @microsoft/signalr.HubConnection}.\r\n *\r\n * @returns The {@link @microsoft/signalr.HubConnectionBuilder} instance, for chaining.\r\n */\r\n withServerTimeout(milliseconds) {\r\n Arg.isRequired(milliseconds, \"milliseconds\");\r\n this._serverTimeoutInMilliseconds = milliseconds;\r\n return this;\r\n }\r\n /** Configures {@link @microsoft/signalr.HubConnection.keepAliveIntervalInMilliseconds} for the {@link @microsoft/signalr.HubConnection}.\r\n *\r\n * @returns The {@link @microsoft/signalr.HubConnectionBuilder} instance, for chaining.\r\n */\r\n withKeepAliveInterval(milliseconds) {\r\n Arg.isRequired(milliseconds, \"milliseconds\");\r\n this._keepAliveIntervalInMilliseconds = milliseconds;\r\n return this;\r\n }\r\n /** Enables and configures options for the Stateful Reconnect feature.\r\n *\r\n * @returns The {@link @microsoft/signalr.HubConnectionBuilder} instance, for chaining.\r\n */\r\n withStatefulReconnect(options) {\r\n if (this.httpConnectionOptions === undefined) {\r\n this.httpConnectionOptions = {};\r\n }\r\n this.httpConnectionOptions._useStatefulReconnect = true;\r\n this._statefulReconnectBufferSize = options === null || options === void 0 ? void 0 : options.bufferSize;\r\n return this;\r\n }\r\n /** Creates a {@link @microsoft/signalr.HubConnection} from the configuration options specified in this builder.\r\n *\r\n * @returns {HubConnection} The configured {@link @microsoft/signalr.HubConnection}.\r\n */\r\n build() {\r\n // If httpConnectionOptions has a logger, use it. Otherwise, override it with the one\r\n // provided to configureLogger\r\n const httpConnectionOptions = this.httpConnectionOptions || {};\r\n // If it's 'null', the user **explicitly** asked for null, don't mess with it.\r\n if (httpConnectionOptions.logger === undefined) {\r\n // If our logger is undefined or null, that's OK, the HttpConnection constructor will handle it.\r\n httpConnectionOptions.logger = this.logger;\r\n }\r\n // Now create the connection\r\n if (!this.url) {\r\n throw new Error(\"The 'HubConnectionBuilder.withUrl' method must be called before building the connection.\");\r\n }\r\n const connection = new HttpConnection(this.url, httpConnectionOptions);\r\n return HubConnection.create(connection, this.logger || NullLogger.instance, this.protocol || new JsonHubProtocol(), this.reconnectPolicy, this._serverTimeoutInMilliseconds, this._keepAliveIntervalInMilliseconds, this._statefulReconnectBufferSize);\r\n }\r\n}\r\nfunction isLogger(logger) {\r\n return logger.log !== undefined;\r\n}\r\n//# sourceMappingURL=HubConnectionBuilder.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n// These values are designed to match the ASP.NET Log Levels since that's the pattern we're emulating here.\r\n/** Indicates the severity of a log message.\r\n *\r\n * Log Levels are ordered in increasing severity. So `Debug` is more severe than `Trace`, etc.\r\n */\r\nexport var LogLevel;\r\n(function (LogLevel) {\r\n /** Log level for very low severity diagnostic messages. */\r\n LogLevel[LogLevel[\"Trace\"] = 0] = \"Trace\";\r\n /** Log level for low severity diagnostic messages. */\r\n LogLevel[LogLevel[\"Debug\"] = 1] = \"Debug\";\r\n /** Log level for informational diagnostic messages. */\r\n LogLevel[LogLevel[\"Information\"] = 2] = \"Information\";\r\n /** Log level for diagnostic messages that indicate a non-fatal problem. */\r\n LogLevel[LogLevel[\"Warning\"] = 3] = \"Warning\";\r\n /** Log level for diagnostic messages that indicate a failure in the current operation. */\r\n LogLevel[LogLevel[\"Error\"] = 4] = \"Error\";\r\n /** Log level for diagnostic messages that indicate a failure that will terminate the entire application. */\r\n LogLevel[LogLevel[\"Critical\"] = 5] = \"Critical\";\r\n /** The highest possible log level. Used when configuring logging to indicate that no log messages should be emitted. */\r\n LogLevel[LogLevel[\"None\"] = 6] = \"None\";\r\n})(LogLevel || (LogLevel = {}));\r\n//# sourceMappingURL=ILogger.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { ROOT_CONTEXT } from './context';\nvar NoopContextManager = /** @class */ (function () {\n function NoopContextManager() {\n }\n NoopContextManager.prototype.active = function () {\n return ROOT_CONTEXT;\n };\n NoopContextManager.prototype.with = function (_context, fn, thisArg) {\n var args = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n args[_i - 3] = arguments[_i];\n }\n return fn.call.apply(fn, __spreadArray([thisArg], __read(args), false));\n };\n NoopContextManager.prototype.bind = function (_context, target) {\n return target;\n };\n NoopContextManager.prototype.enable = function () {\n return this;\n };\n NoopContextManager.prototype.disable = function () {\n return this;\n };\n return NoopContextManager;\n}());\nexport { NoopContextManager };\n//# sourceMappingURL=NoopContextManager.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { NoopContextManager } from '../context/NoopContextManager';\nimport { getGlobal, registerGlobal, unregisterGlobal, } from '../internal/global-utils';\nimport { DiagAPI } from './diag';\nvar API_NAME = 'context';\nvar NOOP_CONTEXT_MANAGER = new NoopContextManager();\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Context API\n */\nvar ContextAPI = /** @class */ (function () {\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n function ContextAPI() {\n }\n /** Get the singleton instance of the Context API */\n ContextAPI.getInstance = function () {\n if (!this._instance) {\n this._instance = new ContextAPI();\n }\n return this._instance;\n };\n /**\n * Set the current context manager.\n *\n * @returns true if the context manager was successfully registered, else false\n */\n ContextAPI.prototype.setGlobalContextManager = function (contextManager) {\n return registerGlobal(API_NAME, contextManager, DiagAPI.instance());\n };\n /**\n * Get the currently active context\n */\n ContextAPI.prototype.active = function () {\n return this._getContextManager().active();\n };\n /**\n * Execute a function with an active context\n *\n * @param context context to be active during function execution\n * @param fn function to execute in a context\n * @param thisArg optional receiver to be used for calling fn\n * @param args optional arguments forwarded to fn\n */\n ContextAPI.prototype.with = function (context, fn, thisArg) {\n var _a;\n var args = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n args[_i - 3] = arguments[_i];\n }\n return (_a = this._getContextManager()).with.apply(_a, __spreadArray([context, fn, thisArg], __read(args), false));\n };\n /**\n * Bind a context to a target function or event emitter\n *\n * @param context context to bind to the event emitter or function. Defaults to the currently active context\n * @param target function or event emitter to bind\n */\n ContextAPI.prototype.bind = function (context, target) {\n return this._getContextManager().bind(context, target);\n };\n ContextAPI.prototype._getContextManager = function () {\n return getGlobal(API_NAME) || NOOP_CONTEXT_MANAGER;\n };\n /** Disable and remove the global context manager */\n ContextAPI.prototype.disable = function () {\n this._getContextManager().disable();\n unregisterGlobal(API_NAME, DiagAPI.instance());\n };\n return ContextAPI;\n}());\nexport { ContextAPI };\n//# sourceMappingURL=context.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Defines the available internal logging levels for the diagnostic logger, the numeric values\n * of the levels are defined to match the original values from the initial LogLevel to avoid\n * compatibility/migration issues for any implementation that assume the numeric ordering.\n */\nexport var DiagLogLevel;\n(function (DiagLogLevel) {\n /** Diagnostic Logging level setting to disable all logging (except and forced logs) */\n DiagLogLevel[DiagLogLevel[\"NONE\"] = 0] = \"NONE\";\n /** Identifies an error scenario */\n DiagLogLevel[DiagLogLevel[\"ERROR\"] = 30] = \"ERROR\";\n /** Identifies a warning scenario */\n DiagLogLevel[DiagLogLevel[\"WARN\"] = 50] = \"WARN\";\n /** General informational log message */\n DiagLogLevel[DiagLogLevel[\"INFO\"] = 60] = \"INFO\";\n /** General debug log message */\n DiagLogLevel[DiagLogLevel[\"DEBUG\"] = 70] = \"DEBUG\";\n /**\n * Detailed trace level logging should only be used for development, should only be set\n * in a development environment.\n */\n DiagLogLevel[DiagLogLevel[\"VERBOSE\"] = 80] = \"VERBOSE\";\n /** Used to set the logging level to include all logging */\n DiagLogLevel[DiagLogLevel[\"ALL\"] = 9999] = \"ALL\";\n})(DiagLogLevel || (DiagLogLevel = {}));\n//# sourceMappingURL=types.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { getGlobal } from '../internal/global-utils';\n/**\n * Component Logger which is meant to be used as part of any component which\n * will add automatically additional namespace in front of the log message.\n * It will then forward all message to global diag logger\n * @example\n * const cLogger = diag.createComponentLogger({ namespace: '@opentelemetry/instrumentation-http' });\n * cLogger.debug('test');\n * // @opentelemetry/instrumentation-http test\n */\nvar DiagComponentLogger = /** @class */ (function () {\n function DiagComponentLogger(props) {\n this._namespace = props.namespace || 'DiagComponentLogger';\n }\n DiagComponentLogger.prototype.debug = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return logProxy('debug', this._namespace, args);\n };\n DiagComponentLogger.prototype.error = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return logProxy('error', this._namespace, args);\n };\n DiagComponentLogger.prototype.info = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return logProxy('info', this._namespace, args);\n };\n DiagComponentLogger.prototype.warn = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return logProxy('warn', this._namespace, args);\n };\n DiagComponentLogger.prototype.verbose = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return logProxy('verbose', this._namespace, args);\n };\n return DiagComponentLogger;\n}());\nexport { DiagComponentLogger };\nfunction logProxy(funcName, namespace, args) {\n var logger = getGlobal('diag');\n // shortcut if logger not set\n if (!logger) {\n return;\n }\n args.unshift(namespace);\n return logger[funcName].apply(logger, __spreadArray([], __read(args), false));\n}\n//# sourceMappingURL=ComponentLogger.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { DiagComponentLogger } from '../diag/ComponentLogger';\nimport { createLogLevelDiagLogger } from '../diag/internal/logLevelLogger';\nimport { DiagLogLevel, } from '../diag/types';\nimport { getGlobal, registerGlobal, unregisterGlobal, } from '../internal/global-utils';\nvar API_NAME = 'diag';\n/**\n * Singleton object which represents the entry point to the OpenTelemetry internal\n * diagnostic API\n */\nvar DiagAPI = /** @class */ (function () {\n /**\n * Private internal constructor\n * @private\n */\n function DiagAPI() {\n function _logProxy(funcName) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var logger = getGlobal('diag');\n // shortcut if logger not set\n if (!logger)\n return;\n return logger[funcName].apply(logger, __spreadArray([], __read(args), false));\n };\n }\n // Using self local variable for minification purposes as 'this' cannot be minified\n var self = this;\n // DiagAPI specific functions\n var setLogger = function (logger, optionsOrLogLevel) {\n var _a, _b, _c;\n if (optionsOrLogLevel === void 0) { optionsOrLogLevel = { logLevel: DiagLogLevel.INFO }; }\n if (logger === self) {\n // There isn't much we can do here.\n // Logging to the console might break the user application.\n // Try to log to self. If a logger was previously registered it will receive the log.\n var err = new Error('Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation');\n self.error((_a = err.stack) !== null && _a !== void 0 ? _a : err.message);\n return false;\n }\n if (typeof optionsOrLogLevel === 'number') {\n optionsOrLogLevel = {\n logLevel: optionsOrLogLevel,\n };\n }\n var oldLogger = getGlobal('diag');\n var newLogger = createLogLevelDiagLogger((_b = optionsOrLogLevel.logLevel) !== null && _b !== void 0 ? _b : DiagLogLevel.INFO, logger);\n // There already is an logger registered. We'll let it know before overwriting it.\n if (oldLogger && !optionsOrLogLevel.suppressOverrideMessage) {\n var stack = (_c = new Error().stack) !== null && _c !== void 0 ? _c : '';\n oldLogger.warn(\"Current logger will be overwritten from \" + stack);\n newLogger.warn(\"Current logger will overwrite one already registered from \" + stack);\n }\n return registerGlobal('diag', newLogger, self, true);\n };\n self.setLogger = setLogger;\n self.disable = function () {\n unregisterGlobal(API_NAME, self);\n };\n self.createComponentLogger = function (options) {\n return new DiagComponentLogger(options);\n };\n self.verbose = _logProxy('verbose');\n self.debug = _logProxy('debug');\n self.info = _logProxy('info');\n self.warn = _logProxy('warn');\n self.error = _logProxy('error');\n }\n /** Get the singleton instance of the DiagAPI API */\n DiagAPI.instance = function () {\n if (!this._instance) {\n this._instance = new DiagAPI();\n }\n return this._instance;\n };\n return DiagAPI;\n}());\nexport { DiagAPI };\n//# sourceMappingURL=diag.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { DiagLogLevel } from '../types';\nexport function createLogLevelDiagLogger(maxLevel, logger) {\n if (maxLevel < DiagLogLevel.NONE) {\n maxLevel = DiagLogLevel.NONE;\n }\n else if (maxLevel > DiagLogLevel.ALL) {\n maxLevel = DiagLogLevel.ALL;\n }\n // In case the logger is null or undefined\n logger = logger || {};\n function _filterFunc(funcName, theLevel) {\n var theFunc = logger[funcName];\n if (typeof theFunc === 'function' && maxLevel >= theLevel) {\n return theFunc.bind(logger);\n }\n return function () { };\n }\n return {\n error: _filterFunc('error', DiagLogLevel.ERROR),\n warn: _filterFunc('warn', DiagLogLevel.WARN),\n info: _filterFunc('info', DiagLogLevel.INFO),\n debug: _filterFunc('debug', DiagLogLevel.DEBUG),\n verbose: _filterFunc('verbose', DiagLogLevel.VERBOSE),\n };\n}\n//# sourceMappingURL=logLevelLogger.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/** Get a key to uniquely identify a context value */\nexport function createContextKey(description) {\n // The specification states that for the same input, multiple calls should\n // return different keys. Due to the nature of the JS dependency management\n // system, this creates problems where multiple versions of some package\n // could hold different keys for the same property.\n //\n // Therefore, we use Symbol.for which returns the same key for the same input.\n return Symbol.for(description);\n}\nvar BaseContext = /** @class */ (function () {\n /**\n * Construct a new context which inherits values from an optional parent context.\n *\n * @param parentContext a context from which to inherit values\n */\n function BaseContext(parentContext) {\n // for minification\n var self = this;\n self._currentContext = parentContext ? new Map(parentContext) : new Map();\n self.getValue = function (key) { return self._currentContext.get(key); };\n self.setValue = function (key, value) {\n var context = new BaseContext(self._currentContext);\n context._currentContext.set(key, value);\n return context;\n };\n self.deleteValue = function (key) {\n var context = new BaseContext(self._currentContext);\n context._currentContext.delete(key);\n return context;\n };\n }\n return BaseContext;\n}());\n/** The root context is used as the default parent context when there is no active context */\nexport var ROOT_CONTEXT = new BaseContext();\n//# sourceMappingURL=context.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// Updates to this file should also be replicated to @opentelemetry/core too.\n/**\n * - globalThis (New standard)\n * - self (Will return the current window instance for supported browsers)\n * - window (fallback for older browser implementations)\n * - global (NodeJS implementation)\n * - (When all else fails)\n */\n/** only globals that common to node and browsers are allowed */\n// eslint-disable-next-line node/no-unsupported-features/es-builtins, no-undef\nexport var _globalThis = typeof globalThis === 'object'\n ? globalThis\n : typeof self === 'object'\n ? self\n : typeof window === 'object'\n ? window\n : typeof global === 'object'\n ? global\n : {};\n//# sourceMappingURL=globalThis.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// this is autogenerated file, see scripts/version-update.js\nexport var VERSION = '1.7.0';\n//# sourceMappingURL=version.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { VERSION } from '../version';\nvar re = /^(\\d+)\\.(\\d+)\\.(\\d+)(-(.+))?$/;\n/**\n * Create a function to test an API version to see if it is compatible with the provided ownVersion.\n *\n * The returned function has the following semantics:\n * - Exact match is always compatible\n * - Major versions must match exactly\n * - 1.x package cannot use global 2.x package\n * - 2.x package cannot use global 1.x package\n * - The minor version of the API module requesting access to the global API must be less than or equal to the minor version of this API\n * - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects\n * - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3\n * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor\n * - Patch and build tag differences are not considered at this time\n *\n * @param ownVersion version which should be checked against\n */\nexport function _makeCompatibilityCheck(ownVersion) {\n var acceptedVersions = new Set([ownVersion]);\n var rejectedVersions = new Set();\n var myVersionMatch = ownVersion.match(re);\n if (!myVersionMatch) {\n // we cannot guarantee compatibility so we always return noop\n return function () { return false; };\n }\n var ownVersionParsed = {\n major: +myVersionMatch[1],\n minor: +myVersionMatch[2],\n patch: +myVersionMatch[3],\n prerelease: myVersionMatch[4],\n };\n // if ownVersion has a prerelease tag, versions must match exactly\n if (ownVersionParsed.prerelease != null) {\n return function isExactmatch(globalVersion) {\n return globalVersion === ownVersion;\n };\n }\n function _reject(v) {\n rejectedVersions.add(v);\n return false;\n }\n function _accept(v) {\n acceptedVersions.add(v);\n return true;\n }\n return function isCompatible(globalVersion) {\n if (acceptedVersions.has(globalVersion)) {\n return true;\n }\n if (rejectedVersions.has(globalVersion)) {\n return false;\n }\n var globalVersionMatch = globalVersion.match(re);\n if (!globalVersionMatch) {\n // cannot parse other version\n // we cannot guarantee compatibility so we always noop\n return _reject(globalVersion);\n }\n var globalVersionParsed = {\n major: +globalVersionMatch[1],\n minor: +globalVersionMatch[2],\n patch: +globalVersionMatch[3],\n prerelease: globalVersionMatch[4],\n };\n // if globalVersion has a prerelease tag, versions must match exactly\n if (globalVersionParsed.prerelease != null) {\n return _reject(globalVersion);\n }\n // major versions must match\n if (ownVersionParsed.major !== globalVersionParsed.major) {\n return _reject(globalVersion);\n }\n if (ownVersionParsed.major === 0) {\n if (ownVersionParsed.minor === globalVersionParsed.minor &&\n ownVersionParsed.patch <= globalVersionParsed.patch) {\n return _accept(globalVersion);\n }\n return _reject(globalVersion);\n }\n if (ownVersionParsed.minor <= globalVersionParsed.minor) {\n return _accept(globalVersion);\n }\n return _reject(globalVersion);\n };\n}\n/**\n * Test an API version to see if it is compatible with this API.\n *\n * - Exact match is always compatible\n * - Major versions must match exactly\n * - 1.x package cannot use global 2.x package\n * - 2.x package cannot use global 1.x package\n * - The minor version of the API module requesting access to the global API must be less than or equal to the minor version of this API\n * - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects\n * - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3\n * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor\n * - Patch and build tag differences are not considered at this time\n *\n * @param version version of the API requesting an instance of the global API\n */\nexport var isCompatible = _makeCompatibilityCheck(VERSION);\n//# sourceMappingURL=semver.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { _globalThis } from '../platform';\nimport { VERSION } from '../version';\nimport { isCompatible } from './semver';\nvar major = VERSION.split('.')[0];\nvar GLOBAL_OPENTELEMETRY_API_KEY = Symbol.for(\"opentelemetry.js.api.\" + major);\nvar _global = _globalThis;\nexport function registerGlobal(type, instance, diag, allowOverride) {\n var _a;\n if (allowOverride === void 0) { allowOverride = false; }\n var api = (_global[GLOBAL_OPENTELEMETRY_API_KEY] = (_a = _global[GLOBAL_OPENTELEMETRY_API_KEY]) !== null && _a !== void 0 ? _a : {\n version: VERSION,\n });\n if (!allowOverride && api[type]) {\n // already registered an API of this type\n var err = new Error(\"@opentelemetry/api: Attempted duplicate registration of API: \" + type);\n diag.error(err.stack || err.message);\n return false;\n }\n if (api.version !== VERSION) {\n // All registered APIs must be of the same version exactly\n var err = new Error(\"@opentelemetry/api: Registration of version v\" + api.version + \" for \" + type + \" does not match previously registered API v\" + VERSION);\n diag.error(err.stack || err.message);\n return false;\n }\n api[type] = instance;\n diag.debug(\"@opentelemetry/api: Registered a global for \" + type + \" v\" + VERSION + \".\");\n return true;\n}\nexport function getGlobal(type) {\n var _a, _b;\n var globalVersion = (_a = _global[GLOBAL_OPENTELEMETRY_API_KEY]) === null || _a === void 0 ? void 0 : _a.version;\n if (!globalVersion || !isCompatible(globalVersion)) {\n return;\n }\n return (_b = _global[GLOBAL_OPENTELEMETRY_API_KEY]) === null || _b === void 0 ? void 0 : _b[type];\n}\nexport function unregisterGlobal(type, diag) {\n diag.debug(\"@opentelemetry/api: Unregistering a global for \" + type + \" v\" + VERSION + \".\");\n var api = _global[GLOBAL_OPENTELEMETRY_API_KEY];\n if (api) {\n delete api[type];\n }\n}\n//# sourceMappingURL=global-utils.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { INVALID_SPAN_CONTEXT } from './invalid-span-constants';\n/**\n * The NonRecordingSpan is the default {@link Span} that is used when no Span\n * implementation is available. All operations are no-op including context\n * propagation.\n */\nvar NonRecordingSpan = /** @class */ (function () {\n function NonRecordingSpan(_spanContext) {\n if (_spanContext === void 0) { _spanContext = INVALID_SPAN_CONTEXT; }\n this._spanContext = _spanContext;\n }\n // Returns a SpanContext.\n NonRecordingSpan.prototype.spanContext = function () {\n return this._spanContext;\n };\n // By default does nothing\n NonRecordingSpan.prototype.setAttribute = function (_key, _value) {\n return this;\n };\n // By default does nothing\n NonRecordingSpan.prototype.setAttributes = function (_attributes) {\n return this;\n };\n // By default does nothing\n NonRecordingSpan.prototype.addEvent = function (_name, _attributes) {\n return this;\n };\n // By default does nothing\n NonRecordingSpan.prototype.setStatus = function (_status) {\n return this;\n };\n // By default does nothing\n NonRecordingSpan.prototype.updateName = function (_name) {\n return this;\n };\n // By default does nothing\n NonRecordingSpan.prototype.end = function (_endTime) { };\n // isRecording always returns false for NonRecordingSpan.\n NonRecordingSpan.prototype.isRecording = function () {\n return false;\n };\n // By default does nothing\n NonRecordingSpan.prototype.recordException = function (_exception, _time) { };\n return NonRecordingSpan;\n}());\nexport { NonRecordingSpan };\n//# sourceMappingURL=NonRecordingSpan.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { createContextKey } from '../context/context';\nimport { NonRecordingSpan } from './NonRecordingSpan';\nimport { ContextAPI } from '../api/context';\n/**\n * span key\n */\nvar SPAN_KEY = createContextKey('OpenTelemetry Context Key SPAN');\n/**\n * Return the span if one exists\n *\n * @param context context to get span from\n */\nexport function getSpan(context) {\n return context.getValue(SPAN_KEY) || undefined;\n}\n/**\n * Gets the span from the current context, if one exists.\n */\nexport function getActiveSpan() {\n return getSpan(ContextAPI.getInstance().active());\n}\n/**\n * Set the span on a context\n *\n * @param context context to use as parent\n * @param span span to set active\n */\nexport function setSpan(context, span) {\n return context.setValue(SPAN_KEY, span);\n}\n/**\n * Remove current span stored in the context\n *\n * @param context context to delete span from\n */\nexport function deleteSpan(context) {\n return context.deleteValue(SPAN_KEY);\n}\n/**\n * Wrap span context in a NoopSpan and set as span in a new\n * context\n *\n * @param context context to set active span on\n * @param spanContext span context to be wrapped\n */\nexport function setSpanContext(context, spanContext) {\n return setSpan(context, new NonRecordingSpan(spanContext));\n}\n/**\n * Get the span context of the span if it exists.\n *\n * @param context context to get values from\n */\nexport function getSpanContext(context) {\n var _a;\n return (_a = getSpan(context)) === null || _a === void 0 ? void 0 : _a.spanContext();\n}\n//# sourceMappingURL=context-utils.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { INVALID_SPANID, INVALID_TRACEID } from './invalid-span-constants';\nimport { NonRecordingSpan } from './NonRecordingSpan';\nvar VALID_TRACEID_REGEX = /^([0-9a-f]{32})$/i;\nvar VALID_SPANID_REGEX = /^[0-9a-f]{16}$/i;\nexport function isValidTraceId(traceId) {\n return VALID_TRACEID_REGEX.test(traceId) && traceId !== INVALID_TRACEID;\n}\nexport function isValidSpanId(spanId) {\n return VALID_SPANID_REGEX.test(spanId) && spanId !== INVALID_SPANID;\n}\n/**\n * Returns true if this {@link SpanContext} is valid.\n * @return true if this {@link SpanContext} is valid.\n */\nexport function isSpanContextValid(spanContext) {\n return (isValidTraceId(spanContext.traceId) && isValidSpanId(spanContext.spanId));\n}\n/**\n * Wrap the given {@link SpanContext} in a new non-recording {@link Span}\n *\n * @param spanContext span context to be wrapped\n * @returns a new non-recording {@link Span} with the provided context\n */\nexport function wrapSpanContext(spanContext) {\n return new NonRecordingSpan(spanContext);\n}\n//# sourceMappingURL=spancontext-utils.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ContextAPI } from '../api/context';\nimport { getSpanContext, setSpan } from '../trace/context-utils';\nimport { NonRecordingSpan } from './NonRecordingSpan';\nimport { isSpanContextValid } from './spancontext-utils';\nvar contextApi = ContextAPI.getInstance();\n/**\n * No-op implementations of {@link Tracer}.\n */\nvar NoopTracer = /** @class */ (function () {\n function NoopTracer() {\n }\n // startSpan starts a noop span.\n NoopTracer.prototype.startSpan = function (name, options, context) {\n if (context === void 0) { context = contextApi.active(); }\n var root = Boolean(options === null || options === void 0 ? void 0 : options.root);\n if (root) {\n return new NonRecordingSpan();\n }\n var parentFromContext = context && getSpanContext(context);\n if (isSpanContext(parentFromContext) &&\n isSpanContextValid(parentFromContext)) {\n return new NonRecordingSpan(parentFromContext);\n }\n else {\n return new NonRecordingSpan();\n }\n };\n NoopTracer.prototype.startActiveSpan = function (name, arg2, arg3, arg4) {\n var opts;\n var ctx;\n var fn;\n if (arguments.length < 2) {\n return;\n }\n else if (arguments.length === 2) {\n fn = arg2;\n }\n else if (arguments.length === 3) {\n opts = arg2;\n fn = arg3;\n }\n else {\n opts = arg2;\n ctx = arg3;\n fn = arg4;\n }\n var parentContext = ctx !== null && ctx !== void 0 ? ctx : contextApi.active();\n var span = this.startSpan(name, opts, parentContext);\n var contextWithSpanSet = setSpan(parentContext, span);\n return contextApi.with(contextWithSpanSet, fn, undefined, span);\n };\n return NoopTracer;\n}());\nexport { NoopTracer };\nfunction isSpanContext(spanContext) {\n return (typeof spanContext === 'object' &&\n typeof spanContext['spanId'] === 'string' &&\n typeof spanContext['traceId'] === 'string' &&\n typeof spanContext['traceFlags'] === 'number');\n}\n//# sourceMappingURL=NoopTracer.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { NoopTracer } from './NoopTracer';\nvar NOOP_TRACER = new NoopTracer();\n/**\n * Proxy tracer provided by the proxy tracer provider\n */\nvar ProxyTracer = /** @class */ (function () {\n function ProxyTracer(_provider, name, version, options) {\n this._provider = _provider;\n this.name = name;\n this.version = version;\n this.options = options;\n }\n ProxyTracer.prototype.startSpan = function (name, options, context) {\n return this._getTracer().startSpan(name, options, context);\n };\n ProxyTracer.prototype.startActiveSpan = function (_name, _options, _context, _fn) {\n var tracer = this._getTracer();\n return Reflect.apply(tracer.startActiveSpan, tracer, arguments);\n };\n /**\n * Try to get a tracer from the proxy tracer provider.\n * If the proxy tracer provider has no delegate, return a noop tracer.\n */\n ProxyTracer.prototype._getTracer = function () {\n if (this._delegate) {\n return this._delegate;\n }\n var tracer = this._provider.getDelegateTracer(this.name, this.version, this.options);\n if (!tracer) {\n return NOOP_TRACER;\n }\n this._delegate = tracer;\n return this._delegate;\n };\n return ProxyTracer;\n}());\nexport { ProxyTracer };\n//# sourceMappingURL=ProxyTracer.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { ProxyTracer } from './ProxyTracer';\nimport { NoopTracerProvider } from './NoopTracerProvider';\nvar NOOP_TRACER_PROVIDER = new NoopTracerProvider();\n/**\n * Tracer provider which provides {@link ProxyTracer}s.\n *\n * Before a delegate is set, tracers provided are NoOp.\n * When a delegate is set, traces are provided from the delegate.\n * When a delegate is set after tracers have already been provided,\n * all tracers already provided will use the provided delegate implementation.\n */\nvar ProxyTracerProvider = /** @class */ (function () {\n function ProxyTracerProvider() {\n }\n /**\n * Get a {@link ProxyTracer}\n */\n ProxyTracerProvider.prototype.getTracer = function (name, version, options) {\n var _a;\n return ((_a = this.getDelegateTracer(name, version, options)) !== null && _a !== void 0 ? _a : new ProxyTracer(this, name, version, options));\n };\n ProxyTracerProvider.prototype.getDelegate = function () {\n var _a;\n return (_a = this._delegate) !== null && _a !== void 0 ? _a : NOOP_TRACER_PROVIDER;\n };\n /**\n * Set the delegate tracer provider\n */\n ProxyTracerProvider.prototype.setDelegate = function (delegate) {\n this._delegate = delegate;\n };\n ProxyTracerProvider.prototype.getDelegateTracer = function (name, version, options) {\n var _a;\n return (_a = this._delegate) === null || _a === void 0 ? void 0 : _a.getTracer(name, version, options);\n };\n return ProxyTracerProvider;\n}());\nexport { ProxyTracerProvider };\n//# sourceMappingURL=ProxyTracerProvider.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { NoopTracer } from './NoopTracer';\n/**\n * An implementation of the {@link TracerProvider} which returns an impotent\n * Tracer for all calls to `getTracer`.\n *\n * All operations are no-op.\n */\nvar NoopTracerProvider = /** @class */ (function () {\n function NoopTracerProvider() {\n }\n NoopTracerProvider.prototype.getTracer = function (_name, _version, _options) {\n return new NoopTracer();\n };\n return NoopTracerProvider;\n}());\nexport { NoopTracerProvider };\n//# sourceMappingURL=NoopTracerProvider.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { getGlobal, registerGlobal, unregisterGlobal, } from '../internal/global-utils';\nimport { ProxyTracerProvider } from '../trace/ProxyTracerProvider';\nimport { isSpanContextValid, wrapSpanContext, } from '../trace/spancontext-utils';\nimport { deleteSpan, getActiveSpan, getSpan, getSpanContext, setSpan, setSpanContext, } from '../trace/context-utils';\nimport { DiagAPI } from './diag';\nvar API_NAME = 'trace';\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Tracing API\n */\nvar TraceAPI = /** @class */ (function () {\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n function TraceAPI() {\n this._proxyTracerProvider = new ProxyTracerProvider();\n this.wrapSpanContext = wrapSpanContext;\n this.isSpanContextValid = isSpanContextValid;\n this.deleteSpan = deleteSpan;\n this.getSpan = getSpan;\n this.getActiveSpan = getActiveSpan;\n this.getSpanContext = getSpanContext;\n this.setSpan = setSpan;\n this.setSpanContext = setSpanContext;\n }\n /** Get the singleton instance of the Trace API */\n TraceAPI.getInstance = function () {\n if (!this._instance) {\n this._instance = new TraceAPI();\n }\n return this._instance;\n };\n /**\n * Set the current global tracer.\n *\n * @returns true if the tracer provider was successfully registered, else false\n */\n TraceAPI.prototype.setGlobalTracerProvider = function (provider) {\n var success = registerGlobal(API_NAME, this._proxyTracerProvider, DiagAPI.instance());\n if (success) {\n this._proxyTracerProvider.setDelegate(provider);\n }\n return success;\n };\n /**\n * Returns the global tracer provider.\n */\n TraceAPI.prototype.getTracerProvider = function () {\n return getGlobal(API_NAME) || this._proxyTracerProvider;\n };\n /**\n * Returns a tracer from the global tracer provider.\n */\n TraceAPI.prototype.getTracer = function (name, version) {\n return this.getTracerProvider().getTracer(name, version);\n };\n /** Remove the global tracer provider */\n TraceAPI.prototype.disable = function () {\n unregisterGlobal(API_NAME, DiagAPI.instance());\n this._proxyTracerProvider = new ProxyTracerProvider();\n };\n return TraceAPI;\n}());\nexport { TraceAPI };\n//# sourceMappingURL=trace.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { TraceAPI } from './api/trace';\n/** Entrypoint for trace API */\nexport var trace = TraceAPI.getInstance();\n//# sourceMappingURL=trace-api.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport var TraceFlags;\n(function (TraceFlags) {\n /** Represents no flag set. */\n TraceFlags[TraceFlags[\"NONE\"] = 0] = \"NONE\";\n /** Bit to represent whether trace is sampled in trace flags. */\n TraceFlags[TraceFlags[\"SAMPLED\"] = 1] = \"SAMPLED\";\n})(TraceFlags || (TraceFlags = {}));\n//# sourceMappingURL=trace_flags.js.map","/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { TraceFlags } from './trace_flags';\nexport var INVALID_SPANID = '0000000000000000';\nexport var INVALID_TRACEID = '00000000000000000000000000000000';\nexport var INVALID_SPAN_CONTEXT = {\n traceId: INVALID_TRACEID,\n spanId: INVALID_SPANID,\n traceFlags: TraceFlags.NONE,\n};\n//# sourceMappingURL=invalid-span-constants.js.map","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:!0});var env=require(\"exenv\");require(\"prop-types\");var React=require(\"react\");function _typeof(e){return(_typeof=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function _defineProperties(e,t){for(var n=0;n=0;r-=1)this.handlers[r].called||(this.handlers[r].called=!0,this.handlers[r](e));for(var o=n;o>=0;o-=1)this.handlers[o].called=!1}else{(0,this.handlers[n])(e)}}},{key:\"hasHandlers\",value:function(){return this.handlers.length>0}},{key:\"removeHandlers\",value:function(t){for(var n=[],r=this.handlers.length,o=0;o0;var t=this.handlerSets.get(e);return!!t&&t.hasHandlers()}},{key:\"removeHandlers\",value:function(t,n){var r=cloneMap(this.handlerSets);if(!r.has(t))return new e(this.poolName,r);var o=r.get(t).removeHandlers(n);return o.hasHandlers()?r.set(t,o):r.delete(t),new e(this.poolName,r)}}]),e}();_defineProperty(EventPool,\"createByType\",function(e,t,n){var r=new Map;return r.set(t,new EventSet(n)),new EventPool(e,r)});var EventTarget=function(){function e(t){var n=this;_classCallCheck(this,e),_defineProperty(this,\"handlers\",new Map),_defineProperty(this,\"pools\",new Map),_defineProperty(this,\"target\",void 0),_defineProperty(this,\"createEmitter\",function(e){return function(t){n.pools.forEach(function(n){n.dispatchEvent(e,t)})}}),this.target=t}return _createClass(e,[{key:\"addHandlers\",value:function(e,t,n){if(this.pools.has(e)){var r=this.pools.get(e);this.pools.set(e,r.addHandlers(t,n))}else this.pools.set(e,EventPool.createByType(e,t,n));this.handlers.has(t)||this.addTargetHandler(t)}},{key:\"hasHandlers\",value:function(){return this.handlers.size>0}},{key:\"removeHandlers\",value:function(e,t,n){if(this.pools.has(e)){var r=this.pools.get(e).removeHandlers(t,n);r.hasHandlers()?this.pools.set(e,r):this.pools.delete(e);var o=!1;this.pools.forEach(function(e){return o=o||e.hasHandlers(t)}),o||this.removeTargetHandler(t)}}},{key:\"addTargetHandler\",value:function(e){var t=this.createEmitter(e);this.handlers.set(e,t),this.target.addEventListener(e,t,!0)}},{key:\"removeTargetHandler\",value:function(e){this.handlers.has(e)&&(this.target.removeEventListener(e,this.handlers.get(e),!0),this.handlers.delete(e))}}]),e}(),EventStack=function(){function e(){var t=this;_classCallCheck(this,e),_defineProperty(this,\"targets\",new Map),_defineProperty(this,\"getTarget\",function(e){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=normalizeTarget(e);if(t.targets.has(r))return t.targets.get(r);if(!n)return null;var o=new EventTarget(r);return t.targets.set(r,o),o}),_defineProperty(this,\"removeTarget\",function(e){t.targets.delete(normalizeTarget(e))})}return _createClass(e,[{key:\"sub\",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(env.canUseDOM){var r=n.target,o=void 0===r?document:r,a=n.pool,s=void 0===a?\"default\":a;this.getTarget(o).addHandlers(s,e,normalizeHandlers(t))}}},{key:\"unsub\",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(env.canUseDOM){var r=n.target,o=void 0===r?document:r,a=n.pool,s=void 0===a?\"default\":a,i=this.getTarget(o,!1);i&&(i.removeHandlers(s,e,normalizeHandlers(t)),i.hasHandlers()||this.removeTarget(o))}}}]),e}(),instance=new EventStack,EventStack$1=function(e){function t(){return _classCallCheck(this,t),_possibleConstructorReturn(this,_getPrototypeOf(t).apply(this,arguments))}return _inherits(t,React.PureComponent),_createClass(t,[{key:\"componentDidMount\",value:function(){this.subscribe(this.props)}},{key:\"componentDidUpdate\",value:function(e){this.unsubscribe(e),this.subscribe(this.props)}},{key:\"componentWillUnmount\",value:function(){this.unsubscribe(this.props)}},{key:\"subscribe\",value:function(e){var t=e.name,n=e.on,r=e.pool,o=e.target;instance.sub(t,n,{pool:r,target:o})}},{key:\"unsubscribe\",value:function(e){var t=e.name,n=e.on,r=e.pool,o=e.target;instance.unsub(t,n,{pool:r,target:o})}},{key:\"render\",value:function(){return null}}]),t}();_defineProperty(EventStack$1,\"defaultProps\",{pool:\"default\",target:\"document\"}),EventStack$1.propTypes={},exports.instance=instance,exports.default=EventStack$1;\n","\n'use strict';\n\nvar stack;\n\nif (process.env.NODE_ENV === 'production') {\n stack = require('./cjs/event-stack.production.js');\n} else {\n stack = require('./cjs/event-stack.development.js');\n}\n\nmodule.exports = stack.default;\nmodule.exports.instance = stack.instance;\n","module.exports=function(t){function n(e){if(r[e])return r[e].exports;var o=r[e]={i:e,l:!1,exports:{}};return t[e].call(o.exports,o,o.exports,n),o.l=!0,o.exports}var r={};return n.m=t,n.c=r,n.d=function(t,r,e){n.o(t,r)||Object.defineProperty(t,r,{configurable:!1,enumerable:!0,get:e})},n.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(r,\"a\",r),r},n.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},n.p=\"\",n(n.s=13)}([function(t,n){var r=t.exports=\"undefined\"!=typeof window&&window.Math==Math?window:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")();\"number\"==typeof __g&&(__g=r)},function(t,n){t.exports=function(t){return\"object\"==typeof t?null!==t:\"function\"==typeof t}},function(t,n){var r=t.exports={version:\"2.5.0\"};\"number\"==typeof __e&&(__e=r)},function(t,n,r){t.exports=!r(4)(function(){return 7!=Object.defineProperty({},\"a\",{get:function(){return 7}}).a})},function(t,n){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,n){var r={}.toString;t.exports=function(t){return r.call(t).slice(8,-1)}},function(t,n,r){var e=r(32)(\"wks\"),o=r(9),i=r(0).Symbol,u=\"function\"==typeof i;(t.exports=function(t){return e[t]||(e[t]=u&&i[t]||(u?i:o)(\"Symbol.\"+t))}).store=e},function(t,n,r){var e=r(0),o=r(2),i=r(8),u=r(22),c=r(10),f=function(t,n,r){var a,s,p,l,v=t&f.F,y=t&f.G,h=t&f.S,d=t&f.P,x=t&f.B,g=y?e:h?e[n]||(e[n]={}):(e[n]||{}).prototype,m=y?o:o[n]||(o[n]={}),b=m.prototype||(m.prototype={});y&&(r=n);for(a in r)s=!v&&g&&void 0!==g[a],p=(s?g:r)[a],l=x&&s?c(p,e):d&&\"function\"==typeof p?c(Function.call,p):p,g&&u(g,a,p,t&f.U),m[a]!=p&&i(m,a,l),d&&b[a]!=p&&(b[a]=p)};e.core=o,f.F=1,f.G=2,f.S=4,f.P=8,f.B=16,f.W=32,f.U=64,f.R=128,t.exports=f},function(t,n,r){var e=r(16),o=r(21);t.exports=r(3)?function(t,n,r){return e.f(t,n,o(1,r))}:function(t,n,r){return t[n]=r,t}},function(t,n){var r=0,e=Math.random();t.exports=function(t){return\"Symbol(\".concat(void 0===t?\"\":t,\")_\",(++r+e).toString(36))}},function(t,n,r){var e=r(24);t.exports=function(t,n,r){if(e(t),void 0===n)return t;switch(r){case 1:return function(r){return t.call(n,r)};case 2:return function(r,e){return t.call(n,r,e)};case 3:return function(r,e,o){return t.call(n,r,e,o)}}return function(){return t.apply(n,arguments)}}},function(t,n){t.exports=function(t){if(void 0==t)throw TypeError(\"Can't call method on \"+t);return t}},function(t,n,r){var e=r(28),o=Math.min;t.exports=function(t){return t>0?o(e(t),9007199254740991):0}},function(t,n,r){\"use strict\";n.__esModule=!0,n.default=function(t,n){if(t&&n){var r=Array.isArray(n)?n:n.split(\",\"),e=t.name||\"\",o=t.type||\"\",i=o.replace(/\\/.*$/,\"\");return r.some(function(t){var n=t.trim();return\".\"===n.charAt(0)?e.toLowerCase().endsWith(n.toLowerCase()):n.endsWith(\"/*\")?i===n.replace(/\\/.*$/,\"\"):o===n})}return!0},r(14),r(34)},function(t,n,r){r(15),t.exports=r(2).Array.some},function(t,n,r){\"use strict\";var e=r(7),o=r(25)(3);e(e.P+e.F*!r(33)([].some,!0),\"Array\",{some:function(t){return o(this,t,arguments[1])}})},function(t,n,r){var e=r(17),o=r(18),i=r(20),u=Object.defineProperty;n.f=r(3)?Object.defineProperty:function(t,n,r){if(e(t),n=i(n,!0),e(r),o)try{return u(t,n,r)}catch(t){}if(\"get\"in r||\"set\"in r)throw TypeError(\"Accessors not supported!\");return\"value\"in r&&(t[n]=r.value),t}},function(t,n,r){var e=r(1);t.exports=function(t){if(!e(t))throw TypeError(t+\" is not an object!\");return t}},function(t,n,r){t.exports=!r(3)&&!r(4)(function(){return 7!=Object.defineProperty(r(19)(\"div\"),\"a\",{get:function(){return 7}}).a})},function(t,n,r){var e=r(1),o=r(0).document,i=e(o)&&e(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},function(t,n,r){var e=r(1);t.exports=function(t,n){if(!e(t))return t;var r,o;if(n&&\"function\"==typeof(r=t.toString)&&!e(o=r.call(t)))return o;if(\"function\"==typeof(r=t.valueOf)&&!e(o=r.call(t)))return o;if(!n&&\"function\"==typeof(r=t.toString)&&!e(o=r.call(t)))return o;throw TypeError(\"Can't convert object to primitive value\")}},function(t,n){t.exports=function(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}}},function(t,n,r){var e=r(0),o=r(8),i=r(23),u=r(9)(\"src\"),c=Function.toString,f=(\"\"+c).split(\"toString\");r(2).inspectSource=function(t){return c.call(t)},(t.exports=function(t,n,r,c){var a=\"function\"==typeof r;a&&(i(r,\"name\")||o(r,\"name\",n)),t[n]!==r&&(a&&(i(r,u)||o(r,u,t[n]?\"\"+t[n]:f.join(String(n)))),t===e?t[n]=r:c?t[n]?t[n]=r:o(t,n,r):(delete t[n],o(t,n,r)))})(Function.prototype,\"toString\",function(){return\"function\"==typeof this&&this[u]||c.call(this)})},function(t,n){var r={}.hasOwnProperty;t.exports=function(t,n){return r.call(t,n)}},function(t,n){t.exports=function(t){if(\"function\"!=typeof t)throw TypeError(t+\" is not a function!\");return t}},function(t,n,r){var e=r(10),o=r(26),i=r(27),u=r(12),c=r(29);t.exports=function(t,n){var r=1==t,f=2==t,a=3==t,s=4==t,p=6==t,l=5==t||p,v=n||c;return function(n,c,y){for(var h,d,x=i(n),g=o(x),m=e(c,y,3),b=u(g.length),_=0,w=r?v(n,b):f?v(n,0):void 0;b>_;_++)if((l||_ in g)&&(h=g[_],d=m(h,_,x),t))if(r)w[_]=d;else if(d)switch(t){case 3:return!0;case 5:return h;case 6:return _;case 2:w.push(h)}else if(s)return!1;return p?-1:a||s?s:w}}},function(t,n,r){var e=r(5);t.exports=Object(\"z\").propertyIsEnumerable(0)?Object:function(t){return\"String\"==e(t)?t.split(\"\"):Object(t)}},function(t,n,r){var e=r(11);t.exports=function(t){return Object(e(t))}},function(t,n){var r=Math.ceil,e=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?e:r)(t)}},function(t,n,r){var e=r(30);t.exports=function(t,n){return new(e(t))(n)}},function(t,n,r){var e=r(1),o=r(31),i=r(6)(\"species\");t.exports=function(t){var n;return o(t)&&(n=t.constructor,\"function\"!=typeof n||n!==Array&&!o(n.prototype)||(n=void 0),e(n)&&null===(n=n[i])&&(n=void 0)),void 0===n?Array:n}},function(t,n,r){var e=r(5);t.exports=Array.isArray||function(t){return\"Array\"==e(t)}},function(t,n,r){var e=r(0),o=e[\"__core-js_shared__\"]||(e[\"__core-js_shared__\"]={});t.exports=function(t){return o[t]||(o[t]={})}},function(t,n,r){\"use strict\";var e=r(4);t.exports=function(t,n){return!!t&&e(function(){n?t.call(null,function(){},1):t.call(null)})}},function(t,n,r){r(35),t.exports=r(2).String.endsWith},function(t,n,r){\"use strict\";var e=r(7),o=r(12),i=r(36),u=\"\".endsWith;e(e.P+e.F*r(38)(\"endsWith\"),\"String\",{endsWith:function(t){var n=i(this,t,\"endsWith\"),r=arguments.length>1?arguments[1]:void 0,e=o(n.length),c=void 0===r?e:Math.min(o(r),e),f=String(t);return u?u.call(n,f,c):n.slice(c-f.length,c)===f}})},function(t,n,r){var e=r(37),o=r(11);t.exports=function(t,n,r){if(e(n))throw TypeError(\"String#\"+r+\" doesn't accept regex!\");return String(o(t))}},function(t,n,r){var e=r(1),o=r(5),i=r(6)(\"match\");t.exports=function(t){var n;return e(t)&&(void 0!==(n=t[i])?!!n:\"RegExp\"==o(t))}},function(t,n,r){var e=r(6)(\"match\");t.exports=function(t){var n=/./;try{\"/./\"[t](n)}catch(r){try{return n[e]=!1,!\"/./\"[t](n)}catch(t){}}return!0}}]);","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*\n * JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\n\n/* global define */\n\n/* eslint-disable strict */\n\n;(function ($) {\n 'use strict'\n\n /**\n * Add integers, wrapping at 2^32.\n * This uses 16-bit operations internally to work around bugs in interpreters.\n *\n * @param {number} x First integer\n * @param {number} y Second integer\n * @returns {number} Sum\n */\n function safeAdd(x, y) {\n var lsw = (x & 0xffff) + (y & 0xffff)\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16)\n return (msw << 16) | (lsw & 0xffff)\n }\n\n /**\n * Bitwise rotate a 32-bit number to the left.\n *\n * @param {number} num 32-bit number\n * @param {number} cnt Rotation count\n * @returns {number} Rotated number\n */\n function bitRotateLeft(num, cnt) {\n return (num << cnt) | (num >>> (32 - cnt))\n }\n\n /**\n * Basic operation the algorithm uses.\n *\n * @param {number} q q\n * @param {number} a a\n * @param {number} b b\n * @param {number} x x\n * @param {number} s s\n * @param {number} t t\n * @returns {number} Result\n */\n function md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b)\n }\n /**\n * Basic operation the algorithm uses.\n *\n * @param {number} a a\n * @param {number} b b\n * @param {number} c c\n * @param {number} d d\n * @param {number} x x\n * @param {number} s s\n * @param {number} t t\n * @returns {number} Result\n */\n function md5ff(a, b, c, d, x, s, t) {\n return md5cmn((b & c) | (~b & d), a, b, x, s, t)\n }\n /**\n * Basic operation the algorithm uses.\n *\n * @param {number} a a\n * @param {number} b b\n * @param {number} c c\n * @param {number} d d\n * @param {number} x x\n * @param {number} s s\n * @param {number} t t\n * @returns {number} Result\n */\n function md5gg(a, b, c, d, x, s, t) {\n return md5cmn((b & d) | (c & ~d), a, b, x, s, t)\n }\n /**\n * Basic operation the algorithm uses.\n *\n * @param {number} a a\n * @param {number} b b\n * @param {number} c c\n * @param {number} d d\n * @param {number} x x\n * @param {number} s s\n * @param {number} t t\n * @returns {number} Result\n */\n function md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t)\n }\n /**\n * Basic operation the algorithm uses.\n *\n * @param {number} a a\n * @param {number} b b\n * @param {number} c c\n * @param {number} d d\n * @param {number} x x\n * @param {number} s s\n * @param {number} t t\n * @returns {number} Result\n */\n function md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t)\n }\n\n /**\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n *\n * @param {Array} x Array of little-endian words\n * @param {number} len Bit length\n * @returns {Array} MD5 Array\n */\n function binlMD5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32\n x[(((len + 64) >>> 9) << 4) + 14] = len\n\n var i\n var olda\n var oldb\n var oldc\n var oldd\n var a = 1732584193\n var b = -271733879\n var c = -1732584194\n var d = 271733878\n\n for (i = 0; i < x.length; i += 16) {\n olda = a\n oldb = b\n oldc = c\n oldd = d\n\n a = md5ff(a, b, c, d, x[i], 7, -680876936)\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586)\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819)\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330)\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897)\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426)\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341)\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983)\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416)\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417)\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063)\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162)\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682)\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101)\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290)\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329)\n\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510)\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632)\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713)\n b = md5gg(b, c, d, a, x[i], 20, -373897302)\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691)\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083)\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335)\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848)\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438)\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690)\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961)\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501)\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467)\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784)\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473)\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734)\n\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558)\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463)\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562)\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556)\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060)\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353)\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632)\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640)\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174)\n d = md5hh(d, a, b, c, x[i], 11, -358537222)\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979)\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189)\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487)\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835)\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520)\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651)\n\n a = md5ii(a, b, c, d, x[i], 6, -198630844)\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415)\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905)\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055)\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571)\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606)\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523)\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799)\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359)\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744)\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380)\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649)\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070)\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379)\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259)\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551)\n\n a = safeAdd(a, olda)\n b = safeAdd(b, oldb)\n c = safeAdd(c, oldc)\n d = safeAdd(d, oldd)\n }\n return [a, b, c, d]\n }\n\n /**\n * Convert an array of little-endian words to a string\n *\n * @param {Array} input MD5 Array\n * @returns {string} MD5 string\n */\n function binl2rstr(input) {\n var i\n var output = ''\n var length32 = input.length * 32\n for (i = 0; i < length32; i += 8) {\n output += String.fromCharCode((input[i >> 5] >>> i % 32) & 0xff)\n }\n return output\n }\n\n /**\n * Convert a raw string to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n *\n * @param {string} input Raw input string\n * @returns {Array} Array of little-endian words\n */\n function rstr2binl(input) {\n var i\n var output = []\n output[(input.length >> 2) - 1] = undefined\n for (i = 0; i < output.length; i += 1) {\n output[i] = 0\n }\n var length8 = input.length * 8\n for (i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << i % 32\n }\n return output\n }\n\n /**\n * Calculate the MD5 of a raw string\n *\n * @param {string} s Input string\n * @returns {string} Raw MD5 string\n */\n function rstrMD5(s) {\n return binl2rstr(binlMD5(rstr2binl(s), s.length * 8))\n }\n\n /**\n * Calculates the HMAC-MD5 of a key and some data (raw strings)\n *\n * @param {string} key HMAC key\n * @param {string} data Raw input string\n * @returns {string} Raw MD5 string\n */\n function rstrHMACMD5(key, data) {\n var i\n var bkey = rstr2binl(key)\n var ipad = []\n var opad = []\n var hash\n ipad[15] = opad[15] = undefined\n if (bkey.length > 16) {\n bkey = binlMD5(bkey, key.length * 8)\n }\n for (i = 0; i < 16; i += 1) {\n ipad[i] = bkey[i] ^ 0x36363636\n opad[i] = bkey[i] ^ 0x5c5c5c5c\n }\n hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8)\n return binl2rstr(binlMD5(opad.concat(hash), 512 + 128))\n }\n\n /**\n * Convert a raw string to a hex string\n *\n * @param {string} input Raw input string\n * @returns {string} Hex encoded string\n */\n function rstr2hex(input) {\n var hexTab = '0123456789abcdef'\n var output = ''\n var x\n var i\n for (i = 0; i < input.length; i += 1) {\n x = input.charCodeAt(i)\n output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f)\n }\n return output\n }\n\n /**\n * Encode a string as UTF-8\n *\n * @param {string} input Input string\n * @returns {string} UTF8 string\n */\n function str2rstrUTF8(input) {\n return unescape(encodeURIComponent(input))\n }\n\n /**\n * Encodes input string as raw MD5 string\n *\n * @param {string} s Input string\n * @returns {string} Raw MD5 string\n */\n function rawMD5(s) {\n return rstrMD5(str2rstrUTF8(s))\n }\n /**\n * Encodes input string as Hex encoded string\n *\n * @param {string} s Input string\n * @returns {string} Hex encoded string\n */\n function hexMD5(s) {\n return rstr2hex(rawMD5(s))\n }\n /**\n * Calculates the raw HMAC-MD5 for the given key and data\n *\n * @param {string} k HMAC key\n * @param {string} d Input string\n * @returns {string} Raw MD5 string\n */\n function rawHMACMD5(k, d) {\n return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d))\n }\n /**\n * Calculates the Hex encoded HMAC-MD5 for the given key and data\n *\n * @param {string} k HMAC key\n * @param {string} d Input string\n * @returns {string} Raw MD5 string\n */\n function hexHMACMD5(k, d) {\n return rstr2hex(rawHMACMD5(k, d))\n }\n\n /**\n * Calculates MD5 value for a given string.\n * If a key is provided, calculates the HMAC-MD5 value.\n * Returns a Hex encoded string unless the raw argument is given.\n *\n * @param {string} string Input string\n * @param {string} [key] HMAC key\n * @param {boolean} [raw] Raw output switch\n * @returns {string} MD5 output\n */\n function md5(string, key, raw) {\n if (!key) {\n if (!raw) {\n return hexMD5(string)\n }\n return rawMD5(string)\n }\n if (!raw) {\n return hexHMACMD5(key, string)\n }\n return rawHMACMD5(key, string)\n }\n\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return md5\n })\n } else if (typeof module === 'object' && module.exports) {\n module.exports = md5\n } else {\n $.md5 = md5\n }\n})(this)\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\nvar setFunctionLength = require('set-function-length');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tif (typeof originalFunction !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\tvar func = $reflectApply(bind, $call, arguments);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + $max(0, originalFunction.length - (arguments.length - 1)),\n\t\ttrue\n\t);\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t div {\\n font-weight: 500;\\n font-size: 1.15em;\\n}\\n\\n.DayPicker-Weekdays {\\n display: table-header-group;\\n margin-top: 1em;\\n}\\n\\n.DayPicker-WeekdaysRow {\\n display: table-row;\\n}\\n\\n.DayPicker-Weekday {\\n display: table-cell;\\n padding: 0.5em;\\n color: #8B9898;\\n text-align: center;\\n font-size: 0.875em;\\n}\\n\\n.DayPicker-Weekday abbr[title] {\\n border-bottom: none;\\n text-decoration: none;\\n}\\n\\n.DayPicker-Body {\\n display: table-row-group;\\n}\\n\\n.DayPicker-Week {\\n display: table-row;\\n}\\n\\n.DayPicker-Day {\\n display: table-cell;\\n padding: 0.5em;\\n border-radius: 50%;\\n vertical-align: middle;\\n text-align: center;\\n cursor: pointer;\\n}\\n\\n.DayPicker-WeekNumber {\\n display: table-cell;\\n padding: 0.5em;\\n min-width: 1em;\\n border-right: 1px solid #EAECEC;\\n color: #8B9898;\\n vertical-align: middle;\\n text-align: right;\\n font-size: 0.75em;\\n cursor: pointer;\\n}\\n\\n.DayPicker--interactionDisabled .DayPicker-Day {\\n cursor: default;\\n}\\n\\n.DayPicker-Footer {\\n padding-top: 0.5em;\\n}\\n\\n.DayPicker-TodayButton {\\n border: none;\\n background-color: transparent;\\n background-image: none;\\n box-shadow: none;\\n color: #4A90E2;\\n font-size: 0.875em;\\n cursor: pointer;\\n}\\n\\n/* Default modifiers */\\n\\n.DayPicker-Day--today {\\n color: #D0021B;\\n font-weight: 700;\\n}\\n\\n.DayPicker-Day--outside {\\n color: #8B9898;\\n cursor: default;\\n}\\n\\n.DayPicker-Day--disabled {\\n color: #DCE0E0;\\n cursor: default;\\n /* background-color: #eff1f1; */\\n}\\n\\n/* Example modifiers */\\n\\n.DayPicker-Day--sunday {\\n background-color: #F7F8F8;\\n}\\n\\n.DayPicker-Day--sunday:not(.DayPicker-Day--today) {\\n color: #DCE0E0;\\n}\\n\\n.DayPicker-Day--selected:not(.DayPicker-Day--disabled):not(.DayPicker-Day--outside) {\\n position: relative;\\n\\n background-color: #4A90E2;\\n color: #F0F8FF;\\n}\\n\\n.DayPicker-Day--selected:not(.DayPicker-Day--disabled):not(.DayPicker-Day--outside):hover {\\n background-color: #51A0FA;\\n}\\n\\n.DayPicker:not(.DayPicker--interactionDisabled)\\n .DayPicker-Day:not(.DayPicker-Day--disabled):not(.DayPicker-Day--selected):not(.DayPicker-Day--outside):hover {\\n background-color: #F0F8FF;\\n}\\n\\n/* DayPickerInput */\\n\\n.DayPickerInput {\\n display: inline-block;\\n}\\n\\n.DayPickerInput-OverlayWrapper {\\n position: relative;\\n}\\n\\n.DayPickerInput-Overlay {\\n position: absolute;\\n left: 0;\\n z-index: 1;\\n\\n background: white;\\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.15);\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (useSourceMap) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item, useSourceMap);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join('');\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === 'string') {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, '']];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (useSourceMap && typeof btoa === 'function') {\n var sourceMapping = toComment(cssMapping);\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || '').concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n }\n\n return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n return \"/*# \".concat(data, \" */\");\n}","\"use strict\";\n\nmodule.exports = function (url, options) {\n if (!options) {\n // eslint-disable-next-line no-param-reassign\n options = {};\n } // eslint-disable-next-line no-underscore-dangle, no-param-reassign\n\n\n url = url && url.__esModule ? url.default : url;\n\n if (typeof url !== 'string') {\n return url;\n } // If url is already wrapped in quotes, remove them\n\n\n if (/^['\"].*['\"]$/.test(url)) {\n // eslint-disable-next-line no-param-reassign\n url = url.slice(1, -1);\n }\n\n if (options.hash) {\n // eslint-disable-next-line no-param-reassign\n url += options.hash;\n } // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n\n\n if (/[\"'() \\t\\n]/.test(url) || options.needQuotes) {\n return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, '\\\\n'), \"\\\"\");\n }\n\n return url;\n};","'use strict';\n\nvar hasPropertyDescriptors = require('has-property-descriptors')();\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = hasPropertyDescriptors && GetIntrinsic('%Object.defineProperty%', true);\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nvar $SyntaxError = GetIntrinsic('%SyntaxError%');\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar gopd = require('gopd');\n\n/** @type {(obj: Record, property: PropertyKey, value: unknown, nonEnumerable?: boolean | null, nonWritable?: boolean | null, nonConfigurable?: boolean | null, loose?: boolean) => void} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","/*!\n Copyright (c) 2015 Jed Watson.\n Based on code that is Copyright 2013-2015, Facebook, Inc.\n All rights reserved.\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar canUseDOM = !!(\n\t\ttypeof window !== 'undefined' &&\n\t\twindow.document &&\n\t\twindow.document.createElement\n\t);\n\n\tvar ExecutionEnvironment = {\n\n\t\tcanUseDOM: canUseDOM,\n\n\t\tcanUseWorkers: typeof Worker !== 'undefined',\n\n\t\tcanUseEventListeners:\n\t\t\tcanUseDOM && !!(window.addEventListener || window.attachEvent),\n\n\t\tcanUseViewport: canUseDOM && !!window.screen\n\n\t};\n\n\tif (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\tdefine(function () {\n\t\t\treturn ExecutionEnvironment;\n\t\t});\n\t} else if (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = ExecutionEnvironment;\n\t} else {\n\t\twindow.ExecutionEnvironment = ExecutionEnvironment;\n\t}\n\n}());\n","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n","(function(a,b){if(\"function\"==typeof define&&define.amd)define([],b);else if(\"undefined\"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(a,b,c){var d=new XMLHttpRequest;d.open(\"GET\",a),d.responseType=\"blob\",d.onload=function(){g(d.response,b,c)},d.onerror=function(){console.error(\"could not download file\")},d.send()}function d(a){var b=new XMLHttpRequest;b.open(\"HEAD\",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof global&&global.global===global?global:void 0,a=f.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),g=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:\"download\"in HTMLAnchorElement.prototype&&!a?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(b,d,e,g){if(g=g||open(\"\",\"_blank\"),g&&(g.document.title=g.document.body.innerText=\"downloading...\"),\"string\"==typeof b)return c(b,d,e);var h=\"application/octet-stream\"===b.type,i=/constructor/i.test(f.HTMLElement)||f.safari,j=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((j||h&&i||a)&&\"undefined\"!=typeof FileReader){var k=new FileReader;k.onloadend=function(){var a=k.result;a=j?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),g?g.location.href=a:location=a,g=null},k.readAsDataURL(b)}else{var l=f.URL||f.webkitURL,m=l.createObjectURL(b);g?g.location=m:location.href=m,g=null,setTimeout(function(){l.revokeObjectURL(m)},4E4)}});f.saveAs=g.saveAs=g,\"undefined\"!=typeof module&&(module.exports=g)});\n\n//# sourceMappingURL=FileSaver.min.js.map","/* Font Face Observer v2.3.0 - © Bram Stein. License: BSD-3-Clause */(function(){function p(a,c){document.addEventListener?a.addEventListener(\"scroll\",c,!1):a.attachEvent(\"scroll\",c)}function u(a){document.body?a():document.addEventListener?document.addEventListener(\"DOMContentLoaded\",function b(){document.removeEventListener(\"DOMContentLoaded\",b);a()}):document.attachEvent(\"onreadystatechange\",function g(){if(\"interactive\"==document.readyState||\"complete\"==document.readyState)document.detachEvent(\"onreadystatechange\",g),a()})};function w(a){this.g=document.createElement(\"div\");this.g.setAttribute(\"aria-hidden\",\"true\");this.g.appendChild(document.createTextNode(a));this.h=document.createElement(\"span\");this.i=document.createElement(\"span\");this.m=document.createElement(\"span\");this.j=document.createElement(\"span\");this.l=-1;this.h.style.cssText=\"max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;\";this.i.style.cssText=\"max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;\";\nthis.j.style.cssText=\"max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;\";this.m.style.cssText=\"display:inline-block;width:200%;height:200%;font-size:16px;max-width:none;\";this.h.appendChild(this.m);this.i.appendChild(this.j);this.g.appendChild(this.h);this.g.appendChild(this.i)}\nfunction x(a,c){a.g.style.cssText=\"max-width:none;min-width:20px;min-height:20px;display:inline-block;overflow:hidden;position:absolute;width:auto;margin:0;padding:0;top:-999px;white-space:nowrap;font-synthesis:none;font:\"+c+\";\"}function B(a){var c=a.g.offsetWidth,b=c+100;a.j.style.width=b+\"px\";a.i.scrollLeft=b;a.h.scrollLeft=a.h.scrollWidth+100;return a.l!==c?(a.l=c,!0):!1}function C(a,c){function b(){var e=g;B(e)&&null!==e.g.parentNode&&c(e.l)}var g=a;p(a.h,b);p(a.i,b);B(a)};function D(a,c,b){c=c||{};b=b||window;this.family=a;this.style=c.style||\"normal\";this.weight=c.weight||\"normal\";this.stretch=c.stretch||\"normal\";this.context=b}var E=null,F=null,G=null,H=null;function I(a){null===F&&(M(a)&&/Apple/.test(window.navigator.vendor)?(a=/AppleWebKit\\/([0-9]+)(?:\\.([0-9]+))(?:\\.([0-9]+))/.exec(window.navigator.userAgent),F=!!a&&603>parseInt(a[1],10)):F=!1);return F}function M(a){null===H&&(H=!!a.document.fonts);return H}\nfunction N(a,c){var b=a.style,g=a.weight;if(null===G){var e=document.createElement(\"div\");try{e.style.font=\"condensed 100px sans-serif\"}catch(q){}G=\"\"!==e.style.font}return[b,g,G?a.stretch:\"\",\"100px\",c].join(\" \")}\nD.prototype.load=function(a,c){var b=this,g=a||\"BESbswy\",e=0,q=c||3E3,J=(new Date).getTime();return new Promise(function(K,L){if(M(b.context)&&!I(b.context)){var O=new Promise(function(r,t){function h(){(new Date).getTime()-J>=q?t(Error(\"\"+q+\"ms timeout exceeded\")):b.context.document.fonts.load(N(b,'\"'+b.family+'\"'),g).then(function(n){1<=n.length?r():setTimeout(h,25)},t)}h()}),P=new Promise(function(r,t){e=setTimeout(function(){t(Error(\"\"+q+\"ms timeout exceeded\"))},q)});Promise.race([P,O]).then(function(){clearTimeout(e);\nK(b)},L)}else u(function(){function r(){var d;if(d=-1!=k&&-1!=l||-1!=k&&-1!=m||-1!=l&&-1!=m)(d=k!=l&&k!=m&&l!=m)||(null===E&&(d=/AppleWebKit\\/([0-9]+)(?:\\.([0-9]+))/.exec(window.navigator.userAgent),E=!!d&&(536>parseInt(d[1],10)||536===parseInt(d[1],10)&&11>=parseInt(d[2],10))),d=E&&(k==y&&l==y&&m==y||k==z&&l==z&&m==z||k==A&&l==A&&m==A)),d=!d;d&&(null!==f.parentNode&&f.parentNode.removeChild(f),clearTimeout(e),K(b))}function t(){if((new Date).getTime()-J>=q)null!==f.parentNode&&f.parentNode.removeChild(f),\nL(Error(\"\"+q+\"ms timeout exceeded\"));else{var d=b.context.document.hidden;if(!0===d||void 0===d)k=h.g.offsetWidth,l=n.g.offsetWidth,m=v.g.offsetWidth,r();e=setTimeout(t,50)}}var h=new w(g),n=new w(g),v=new w(g),k=-1,l=-1,m=-1,y=-1,z=-1,A=-1,f=document.createElement(\"div\");f.dir=\"ltr\";x(h,N(b,\"sans-serif\"));x(n,N(b,\"serif\"));x(v,N(b,\"monospace\"));f.appendChild(h.g);f.appendChild(n.g);f.appendChild(v.g);b.context.document.body.appendChild(f);y=h.g.offsetWidth;z=n.g.offsetWidth;A=v.g.offsetWidth;t();\nC(h,function(d){k=d;r()});x(h,N(b,'\"'+b.family+'\",sans-serif'));C(n,function(d){l=d;r()});x(n,N(b,'\"'+b.family+'\",serif'));C(v,function(d){m=d;r()});x(v,N(b,'\"'+b.family+'\",monospace'))})})};\"object\"===typeof module?module.exports=D:(window.FontFaceObserver=D,window.FontFaceObserver.prototype.load=D.prototype.load);}());\n","'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n if (receiver == null) {\n iterator(array[i], i, array);\n } else {\n iterator.call(receiver, array[i], i, array);\n }\n }\n }\n};\n\nvar forEachString = function forEachString(string, iterator, receiver) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n if (receiver == null) {\n iterator(string.charAt(i), i, string);\n } else {\n iterator.call(receiver, string.charAt(i), i, string);\n }\n }\n};\n\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n if (receiver == null) {\n iterator(object[k], k, object);\n } else {\n iterator.call(receiver, object[k], k, object);\n }\n }\n }\n};\n\nvar forEach = function forEach(list, iterator, thisArg) {\n if (!isCallable(iterator)) {\n throw new TypeError('iterator must be a function');\n }\n\n var receiver;\n if (arguments.length >= 3) {\n receiver = thisArg;\n }\n\n if (toStr.call(list) === '[object Array]') {\n forEachArray(list, iterator, receiver);\n } else if (typeof list === 'string') {\n forEachString(list, iterator, receiver);\n } else {\n forEachObject(list, iterator, receiver);\n }\n};\n\nmodule.exports = forEach;\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\nvar hasProto = require('has-proto')();\n\nvar getProto = Object.getPrototypeOf || (\n\thasProto\n\t\t? function (x) { return x.__proto__; } // eslint-disable-line no-proto\n\t\t: null\n);\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","/* build: `node build.js modules=ALL exclude=gestures,accessors requirejs minifier=uglifyjs` */\n/*! Fabric.js Copyright 2008-2015, Printio (Juriy Zaytsev, Maxim Chernyak) */\n\nvar fabric = fabric || { version: '2.3.6' };\nif (typeof exports !== 'undefined') {\n exports.fabric = fabric;\n}\n/* _AMD_START_ */\nelse if (typeof define === 'function' && define.amd) {\n define([], function() { return fabric; });\n}\n/* _AMD_END_ */\nif (typeof document !== 'undefined' && typeof window !== 'undefined') {\n fabric.document = document;\n fabric.window = window;\n}\nelse {\n // assume we're running under node.js when document/window are not present\n fabric.document = require('jsdom')\n .jsdom(\n decodeURIComponent('%3C!DOCTYPE%20html%3E%3Chtml%3E%3Chead%3E%3C%2Fhead%3E%3Cbody%3E%3C%2Fbody%3E%3C%2Fhtml%3E'),\n { features: {\n FetchExternalResources: ['img']\n }\n });\n fabric.jsdomImplForWrapper = require('jsdom/lib/jsdom/living/generated/utils').implForWrapper;\n fabric.nodeCanvas = require('jsdom/lib/jsdom/utils').Canvas;\n fabric.window = fabric.document.defaultView;\n DOMParser = require('xmldom').DOMParser;\n}\n\n/**\n * True when in environment that supports touch events\n * @type boolean\n */\nfabric.isTouchSupported = 'ontouchstart' in fabric.window;\n\n/**\n * True when in environment that's probably Node.js\n * @type boolean\n */\nfabric.isLikelyNode = typeof Buffer !== 'undefined' &&\n typeof window === 'undefined';\n\n/* _FROM_SVG_START_ */\n/**\n * Attributes parsed from all SVG elements\n * @type array\n */\nfabric.SHARED_ATTRIBUTES = [\n \"display\",\n \"transform\",\n \"fill\", \"fill-opacity\", \"fill-rule\",\n \"opacity\",\n \"stroke\", \"stroke-dasharray\", \"stroke-linecap\",\n \"stroke-linejoin\", \"stroke-miterlimit\",\n \"stroke-opacity\", \"stroke-width\",\n \"id\", \"paint-order\",\n \"instantiated_by_use\"\n];\n/* _FROM_SVG_END_ */\n\n/**\n * Pixel per Inch as a default value set to 96. Can be changed for more realistic conversion.\n */\nfabric.DPI = 96;\nfabric.reNum = '(?:[-+]?(?:\\\\d+|\\\\d*\\\\.\\\\d+)(?:e[-+]?\\\\d+)?)';\nfabric.fontPaths = { };\nfabric.iMatrix = [1, 0, 0, 1, 0, 0];\nfabric.canvasModule = 'canvas';\n\n/**\n * Pixel limit for cache canvases. 1Mpx , 4Mpx should be fine.\n * @since 1.7.14\n * @type Number\n * @default\n */\nfabric.perfLimitSizeTotal = 2097152;\n\n/**\n * Pixel limit for cache canvases width or height. IE fixes the maximum at 5000\n * @since 1.7.14\n * @type Number\n * @default\n */\nfabric.maxCacheSideLimit = 4096;\n\n/**\n * Lowest pixel limit for cache canvases, set at 256PX\n * @since 1.7.14\n * @type Number\n * @default\n */\nfabric.minCacheSideLimit = 256;\n\n/**\n * Cache Object for widths of chars in text rendering.\n */\nfabric.charWidthsCache = { };\n\n/**\n * if webgl is enabled and available, textureSize will determine the size\n * of the canvas backend\n * @since 2.0.0\n * @type Number\n * @default\n */\nfabric.textureSize = 2048;\n\n/**\n * Enable webgl for filtering picture is available\n * A filtering backend will be initialized, this will both take memory and\n * time since a default 2048x2048 canvas will be created for the gl context\n * @since 2.0.0\n * @type Boolean\n * @default\n */\nfabric.enableGLFiltering = true;\n\n/**\n * Device Pixel Ratio\n * @see https://developer.apple.com/library/safari/documentation/AudioVideo/Conceptual/HTML-canvas-guide/SettingUptheCanvas/SettingUptheCanvas.html\n */\nfabric.devicePixelRatio = fabric.window.devicePixelRatio ||\n fabric.window.webkitDevicePixelRatio ||\n fabric.window.mozDevicePixelRatio ||\n 1;\n/**\n * Browser-specific constant to adjust CanvasRenderingContext2D.shadowBlur value,\n * which is unitless and not rendered equally across browsers.\n *\n * Values that work quite well (as of October 2017) are:\n * - Chrome: 1.5\n * - Edge: 1.75\n * - Firefox: 0.9\n * - Safari: 0.95\n *\n * @since 2.0.0\n * @type Number\n * @default 1\n */\nfabric.browserShadowBlurConstant = 1;\n\n/**\n * This object contains the result of arc to beizer conversion for faster retrieving if the same arc needs to be converted again.\n * It was an internal variable, is accessible since version 2.3.4\n */\nfabric.arcToSegmentsCache = { };\n\n/**\n * This object keeps the results of the boundsOfCurve calculation mapped by the joined arguments necessary to calculate it.\n * It does speed up calculation, if you parse and add always the same paths, but in case of heavy usage of freedrawing\n * you do not get any speed benefit and you get a big object in memory.\n * The object was a private variable before, while now is appended to the lib so that you have access to it and you\n * can eventually clear it.\n * It was an internal variable, is accessible since version 2.3.4\n */\nfabric.boundsOfCurveCache = { };\n\n/**\n * If disabled boundsOfCurveCache is not used. For apps that make heavy usage of pencil drawing probably disabling it is better\n * @default true\n */\nfabric.cachesBoundsOfCurve = true;\n\nfabric.initFilterBackend = function() {\n if (fabric.enableGLFiltering && fabric.isWebglSupported && fabric.isWebglSupported(fabric.textureSize)) {\n console.log('max texture size: ' + fabric.maxTextureSize);\n return (new fabric.WebglFilterBackend({ tileSize: fabric.textureSize }));\n }\n else if (fabric.Canvas2dFilterBackend) {\n return (new fabric.Canvas2dFilterBackend());\n }\n};\n\n\nif (typeof document !== 'undefined' && typeof window !== 'undefined') {\n // ensure globality even if entire library were function wrapped (as in Meteor.js packaging system)\n window.fabric = fabric;\n}\n\n\n(function() {\n\n /**\n * @private\n * @param {String} eventName\n * @param {Function} handler\n */\n function _removeEventListener(eventName, handler) {\n if (!this.__eventListeners[eventName]) {\n return;\n }\n var eventListener = this.__eventListeners[eventName];\n if (handler) {\n eventListener[eventListener.indexOf(handler)] = false;\n }\n else {\n fabric.util.array.fill(eventListener, false);\n }\n }\n\n /**\n * Observes specified event\n * @deprecated `observe` deprecated since 0.8.34 (use `on` instead)\n * @memberOf fabric.Observable\n * @alias on\n * @param {String|Object} eventName Event name (eg. 'after:render') or object with key/value pairs (eg. {'after:render': handler, 'selection:cleared': handler})\n * @param {Function} handler Function that receives a notification when an event of the specified type occurs\n * @return {Self} thisArg\n * @chainable\n */\n function observe(eventName, handler) {\n if (!this.__eventListeners) {\n this.__eventListeners = { };\n }\n // one object with key/value pairs was passed\n if (arguments.length === 1) {\n for (var prop in eventName) {\n this.on(prop, eventName[prop]);\n }\n }\n else {\n if (!this.__eventListeners[eventName]) {\n this.__eventListeners[eventName] = [];\n }\n this.__eventListeners[eventName].push(handler);\n }\n return this;\n }\n\n /**\n * Stops event observing for a particular event handler. Calling this method\n * without arguments removes all handlers for all events\n * @deprecated `stopObserving` deprecated since 0.8.34 (use `off` instead)\n * @memberOf fabric.Observable\n * @alias off\n * @param {String|Object} eventName Event name (eg. 'after:render') or object with key/value pairs (eg. {'after:render': handler, 'selection:cleared': handler})\n * @param {Function} handler Function to be deleted from EventListeners\n * @return {Self} thisArg\n * @chainable\n */\n function stopObserving(eventName, handler) {\n if (!this.__eventListeners) {\n return;\n }\n\n // remove all key/value pairs (event name -> event handler)\n if (arguments.length === 0) {\n for (eventName in this.__eventListeners) {\n _removeEventListener.call(this, eventName);\n }\n }\n // one object with key/value pairs was passed\n else if (arguments.length === 1 && typeof arguments[0] === 'object') {\n for (var prop in eventName) {\n _removeEventListener.call(this, prop, eventName[prop]);\n }\n }\n else {\n _removeEventListener.call(this, eventName, handler);\n }\n return this;\n }\n\n /**\n * Fires event with an optional options object\n * @deprecated `fire` deprecated since 1.0.7 (use `trigger` instead)\n * @memberOf fabric.Observable\n * @alias trigger\n * @param {String} eventName Event name to fire\n * @param {Object} [options] Options object\n * @return {Self} thisArg\n * @chainable\n */\n function fire(eventName, options) {\n if (!this.__eventListeners) {\n return;\n }\n\n var listenersForEvent = this.__eventListeners[eventName];\n if (!listenersForEvent) {\n return;\n }\n\n for (var i = 0, len = listenersForEvent.length; i < len; i++) {\n listenersForEvent[i] && listenersForEvent[i].call(this, options || { });\n }\n this.__eventListeners[eventName] = listenersForEvent.filter(function(value) {\n return value !== false;\n });\n return this;\n }\n\n /**\n * @namespace fabric.Observable\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#events}\n * @see {@link http://fabricjs.com/events|Events demo}\n */\n fabric.Observable = {\n observe: observe,\n stopObserving: stopObserving,\n fire: fire,\n\n on: observe,\n off: stopObserving,\n trigger: fire\n };\n})();\n\n\n/**\n * @namespace fabric.Collection\n */\nfabric.Collection = {\n\n _objects: [],\n\n /**\n * Adds objects to collection, Canvas or Group, then renders canvas\n * (if `renderOnAddRemove` is not `false`).\n * in case of Group no changes to bounding box are made.\n * Objects should be instances of (or inherit from) fabric.Object\n * Use of this function is highly discouraged for groups.\n * you can add a bunch of objects with the add method but then you NEED\n * to run a addWithUpdate call for the Group class or position/bbox will be wrong.\n * @param {...fabric.Object} object Zero or more fabric instances\n * @return {Self} thisArg\n * @chainable\n */\n add: function () {\n this._objects.push.apply(this._objects, arguments);\n if (this._onObjectAdded) {\n for (var i = 0, length = arguments.length; i < length; i++) {\n this._onObjectAdded(arguments[i]);\n }\n }\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * Inserts an object into collection at specified index, then renders canvas (if `renderOnAddRemove` is not `false`)\n * An object should be an instance of (or inherit from) fabric.Object\n * Use of this function is highly discouraged for groups.\n * you can add a bunch of objects with the insertAt method but then you NEED\n * to run a addWithUpdate call for the Group class or position/bbox will be wrong.\n * @param {Object} object Object to insert\n * @param {Number} index Index to insert object at\n * @param {Boolean} nonSplicing When `true`, no splicing (shifting) of objects occurs\n * @return {Self} thisArg\n * @chainable\n */\n insertAt: function (object, index, nonSplicing) {\n var objects = this._objects;\n if (nonSplicing) {\n objects[index] = object;\n }\n else {\n objects.splice(index, 0, object);\n }\n this._onObjectAdded && this._onObjectAdded(object);\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * Removes objects from a collection, then renders canvas (if `renderOnAddRemove` is not `false`)\n * @param {...fabric.Object} object Zero or more fabric instances\n * @return {Self} thisArg\n * @chainable\n */\n remove: function() {\n var objects = this._objects,\n index, somethingRemoved = false;\n\n for (var i = 0, length = arguments.length; i < length; i++) {\n index = objects.indexOf(arguments[i]);\n\n // only call onObjectRemoved if an object was actually removed\n if (index !== -1) {\n somethingRemoved = true;\n objects.splice(index, 1);\n this._onObjectRemoved && this._onObjectRemoved(arguments[i]);\n }\n }\n\n this.renderOnAddRemove && somethingRemoved && this.requestRenderAll();\n return this;\n },\n\n /**\n * Executes given function for each object in this group\n * @param {Function} callback\n * Callback invoked with current object as first argument,\n * index - as second and an array of all objects - as third.\n * Callback is invoked in a context of Global Object (e.g. `window`)\n * when no `context` argument is given\n *\n * @param {Object} context Context (aka thisObject)\n * @return {Self} thisArg\n * @chainable\n */\n forEachObject: function(callback, context) {\n var objects = this.getObjects();\n for (var i = 0, len = objects.length; i < len; i++) {\n callback.call(context, objects[i], i, objects);\n }\n return this;\n },\n\n /**\n * Returns an array of children objects of this instance\n * Type parameter introduced in 1.3.10\n * since 2.3.5 this method return always a COPY of the array;\n * @param {String} [type] When specified, only objects of this type are returned\n * @return {Array}\n */\n getObjects: function(type) {\n if (typeof type === 'undefined') {\n return this._objects.concat();\n }\n return this._objects.filter(function(o) {\n return o.type === type;\n });\n },\n\n /**\n * Returns object at specified index\n * @param {Number} index\n * @return {Self} thisArg\n */\n item: function (index) {\n return this._objects[index];\n },\n\n /**\n * Returns true if collection contains no objects\n * @return {Boolean} true if collection is empty\n */\n isEmpty: function () {\n return this._objects.length === 0;\n },\n\n /**\n * Returns a size of a collection (i.e: length of an array containing its objects)\n * @return {Number} Collection size\n */\n size: function() {\n return this._objects.length;\n },\n\n /**\n * Returns true if collection contains an object\n * @param {Object} object Object to check against\n * @return {Boolean} `true` if collection contains an object\n */\n contains: function(object) {\n return this._objects.indexOf(object) > -1;\n },\n\n /**\n * Returns number representation of a collection complexity\n * @return {Number} complexity\n */\n complexity: function () {\n return this._objects.reduce(function (memo, current) {\n memo += current.complexity ? current.complexity() : 0;\n return memo;\n }, 0);\n }\n};\n\n\n/**\n * @namespace fabric.CommonMethods\n */\nfabric.CommonMethods = {\n\n /**\n * Sets object's properties from options\n * @param {Object} [options] Options object\n */\n _setOptions: function(options) {\n for (var prop in options) {\n this.set(prop, options[prop]);\n }\n },\n\n /**\n * @private\n * @param {Object} [filler] Options object\n * @param {String} [property] property to set the Gradient to\n */\n _initGradient: function(filler, property) {\n if (filler && filler.colorStops && !(filler instanceof fabric.Gradient)) {\n this.set(property, new fabric.Gradient(filler));\n }\n },\n\n /**\n * @private\n * @param {Object} [filler] Options object\n * @param {String} [property] property to set the Pattern to\n * @param {Function} [callback] callback to invoke after pattern load\n */\n _initPattern: function(filler, property, callback) {\n if (filler && filler.source && !(filler instanceof fabric.Pattern)) {\n this.set(property, new fabric.Pattern(filler, callback));\n }\n else {\n callback && callback();\n }\n },\n\n /**\n * @private\n * @param {Object} [options] Options object\n */\n _initClipping: function(options) {\n if (!options.clipTo || typeof options.clipTo !== 'string') {\n return;\n }\n\n var functionBody = fabric.util.getFunctionBody(options.clipTo);\n if (typeof functionBody !== 'undefined') {\n this.clipTo = new Function('ctx', functionBody);\n }\n },\n\n /**\n * @private\n */\n _setObject: function(obj) {\n for (var prop in obj) {\n this._set(prop, obj[prop]);\n }\n },\n\n /**\n * Sets property to a given value. When changing position/dimension -related properties (left, top, scale, angle, etc.) `set` does not update position of object's borders/controls. If you need to update those, call `setCoords()`.\n * @param {String|Object} key Property name or object (if object, iterate over the object properties)\n * @param {Object|Function} value Property value (if function, the value is passed into it and its return value is used as a new one)\n * @return {fabric.Object} thisArg\n * @chainable\n */\n set: function(key, value) {\n if (typeof key === 'object') {\n this._setObject(key);\n }\n else {\n if (typeof value === 'function' && key !== 'clipTo') {\n this._set(key, value(this.get(key)));\n }\n else {\n this._set(key, value);\n }\n }\n return this;\n },\n\n _set: function(key, value) {\n this[key] = value;\n },\n\n /**\n * Toggles specified property from `true` to `false` or from `false` to `true`\n * @param {String} property Property to toggle\n * @return {fabric.Object} thisArg\n * @chainable\n */\n toggle: function(property) {\n var value = this.get(property);\n if (typeof value === 'boolean') {\n this.set(property, !value);\n }\n return this;\n },\n\n /**\n * Basic getter\n * @param {String} property Property name\n * @return {*} value of a property\n */\n get: function(property) {\n return this[property];\n }\n};\n\n\n(function(global) {\n\n var sqrt = Math.sqrt,\n atan2 = Math.atan2,\n pow = Math.pow,\n abs = Math.abs,\n PiBy180 = Math.PI / 180,\n PiBy2 = Math.PI / 2;\n\n /**\n * @namespace fabric.util\n */\n fabric.util = {\n\n /**\n * Calculate the cos of an angle, avoiding returning floats for known results\n * @static\n * @memberOf fabric.util\n * @param {Number} angle the angle in radians or in degree\n * @return {Number}\n */\n cos: function(angle) {\n if (angle === 0) { return 1; }\n if (angle < 0) {\n // cos(a) = cos(-a)\n angle = -angle;\n }\n var angleSlice = angle / PiBy2;\n switch (angleSlice) {\n case 1: case 3: return 0;\n case 2: return -1;\n }\n return Math.cos(angle);\n },\n\n /**\n * Calculate the sin of an angle, avoiding returning floats for known results\n * @static\n * @memberOf fabric.util\n * @param {Number} angle the angle in radians or in degree\n * @return {Number}\n */\n sin: function(angle) {\n if (angle === 0) { return 0; }\n var angleSlice = angle / PiBy2, sign = 1;\n if (angle < 0) {\n // sin(-a) = -sin(a)\n sign = -1;\n }\n switch (angleSlice) {\n case 1: return sign;\n case 2: return 0;\n case 3: return -sign;\n }\n return Math.sin(angle);\n },\n\n /**\n * Removes value from an array.\n * Presence of value (and its position in an array) is determined via `Array.prototype.indexOf`\n * @static\n * @memberOf fabric.util\n * @param {Array} array\n * @param {*} value\n * @return {Array} original array\n */\n removeFromArray: function(array, value) {\n var idx = array.indexOf(value);\n if (idx !== -1) {\n array.splice(idx, 1);\n }\n return array;\n },\n\n /**\n * Returns random number between 2 specified ones.\n * @static\n * @memberOf fabric.util\n * @param {Number} min lower limit\n * @param {Number} max upper limit\n * @return {Number} random value (between min and max)\n */\n getRandomInt: function(min, max) {\n return Math.floor(Math.random() * (max - min + 1)) + min;\n },\n\n /**\n * Transforms degrees to radians.\n * @static\n * @memberOf fabric.util\n * @param {Number} degrees value in degrees\n * @return {Number} value in radians\n */\n degreesToRadians: function(degrees) {\n return degrees * PiBy180;\n },\n\n /**\n * Transforms radians to degrees.\n * @static\n * @memberOf fabric.util\n * @param {Number} radians value in radians\n * @return {Number} value in degrees\n */\n radiansToDegrees: function(radians) {\n return radians / PiBy180;\n },\n\n /**\n * Rotates `point` around `origin` with `radians`\n * @static\n * @memberOf fabric.util\n * @param {fabric.Point} point The point to rotate\n * @param {fabric.Point} origin The origin of the rotation\n * @param {Number} radians The radians of the angle for the rotation\n * @return {fabric.Point} The new rotated point\n */\n rotatePoint: function(point, origin, radians) {\n point.subtractEquals(origin);\n var v = fabric.util.rotateVector(point, radians);\n return new fabric.Point(v.x, v.y).addEquals(origin);\n },\n\n /**\n * Rotates `vector` with `radians`\n * @static\n * @memberOf fabric.util\n * @param {Object} vector The vector to rotate (x and y)\n * @param {Number} radians The radians of the angle for the rotation\n * @return {Object} The new rotated point\n */\n rotateVector: function(vector, radians) {\n var sin = fabric.util.sin(radians),\n cos = fabric.util.cos(radians),\n rx = vector.x * cos - vector.y * sin,\n ry = vector.x * sin + vector.y * cos;\n return {\n x: rx,\n y: ry\n };\n },\n\n /**\n * Apply transform t to point p\n * @static\n * @memberOf fabric.util\n * @param {fabric.Point} p The point to transform\n * @param {Array} t The transform\n * @param {Boolean} [ignoreOffset] Indicates that the offset should not be applied\n * @return {fabric.Point} The transformed point\n */\n transformPoint: function(p, t, ignoreOffset) {\n if (ignoreOffset) {\n return new fabric.Point(\n t[0] * p.x + t[2] * p.y,\n t[1] * p.x + t[3] * p.y\n );\n }\n return new fabric.Point(\n t[0] * p.x + t[2] * p.y + t[4],\n t[1] * p.x + t[3] * p.y + t[5]\n );\n },\n\n /**\n * Returns coordinates of points's bounding rectangle (left, top, width, height)\n * @param {Array} points 4 points array\n * @return {Object} Object with left, top, width, height properties\n */\n makeBoundingBoxFromPoints: function(points) {\n var xPoints = [points[0].x, points[1].x, points[2].x, points[3].x],\n minX = fabric.util.array.min(xPoints),\n maxX = fabric.util.array.max(xPoints),\n width = maxX - minX,\n yPoints = [points[0].y, points[1].y, points[2].y, points[3].y],\n minY = fabric.util.array.min(yPoints),\n maxY = fabric.util.array.max(yPoints),\n height = maxY - minY;\n\n return {\n left: minX,\n top: minY,\n width: width,\n height: height\n };\n },\n\n /**\n * Invert transformation t\n * @static\n * @memberOf fabric.util\n * @param {Array} t The transform\n * @return {Array} The inverted transform\n */\n invertTransform: function(t) {\n var a = 1 / (t[0] * t[3] - t[1] * t[2]),\n r = [a * t[3], -a * t[1], -a * t[2], a * t[0]],\n o = fabric.util.transformPoint({ x: t[4], y: t[5] }, r, true);\n r[4] = -o.x;\n r[5] = -o.y;\n return r;\n },\n\n /**\n * A wrapper around Number#toFixed, which contrary to native method returns number, not string.\n * @static\n * @memberOf fabric.util\n * @param {Number|String} number number to operate on\n * @param {Number} fractionDigits number of fraction digits to \"leave\"\n * @return {Number}\n */\n toFixed: function(number, fractionDigits) {\n return parseFloat(Number(number).toFixed(fractionDigits));\n },\n\n /**\n * Converts from attribute value to pixel value if applicable.\n * Returns converted pixels or original value not converted.\n * @param {Number|String} value number to operate on\n * @param {Number} fontSize\n * @return {Number|String}\n */\n parseUnit: function(value, fontSize) {\n var unit = /\\D{0,2}$/.exec(value),\n number = parseFloat(value);\n if (!fontSize) {\n fontSize = fabric.Text.DEFAULT_SVG_FONT_SIZE;\n }\n switch (unit[0]) {\n case 'mm':\n return number * fabric.DPI / 25.4;\n\n case 'cm':\n return number * fabric.DPI / 2.54;\n\n case 'in':\n return number * fabric.DPI;\n\n case 'pt':\n return number * fabric.DPI / 72; // or * 4 / 3\n\n case 'pc':\n return number * fabric.DPI / 72 * 12; // or * 16\n\n case 'em':\n return number * fontSize;\n\n default:\n return number;\n }\n },\n\n /**\n * Function which always returns `false`.\n * @static\n * @memberOf fabric.util\n * @return {Boolean}\n */\n falseFunction: function() {\n return false;\n },\n\n /**\n * Returns klass \"Class\" object of given namespace\n * @memberOf fabric.util\n * @param {String} type Type of object (eg. 'circle')\n * @param {String} namespace Namespace to get klass \"Class\" object from\n * @return {Object} klass \"Class\"\n */\n getKlass: function(type, namespace) {\n // capitalize first letter only\n type = fabric.util.string.camelize(type.charAt(0).toUpperCase() + type.slice(1));\n return fabric.util.resolveNamespace(namespace)[type];\n },\n\n /**\n * Returns array of attributes for given svg that fabric parses\n * @memberOf fabric.util\n * @param {String} type Type of svg element (eg. 'circle')\n * @return {Array} string names of supported attributes\n */\n getSvgAttributes: function(type) {\n var attributes = [\n 'instantiated_by_use',\n 'style',\n 'id',\n 'class'\n ];\n switch (type) {\n case 'linearGradient':\n attributes = attributes.concat(['x1', 'y1', 'x2', 'y2', 'gradientUnits', 'gradientTransform']);\n break;\n case 'radialGradient':\n attributes = attributes.concat(['gradientUnits', 'gradientTransform', 'cx', 'cy', 'r', 'fx', 'fy', 'fr']);\n break;\n case 'stop':\n attributes = attributes.concat(['offset', 'stop-color', 'stop-opacity']);\n break;\n }\n return attributes;\n },\n\n /**\n * Returns object of given namespace\n * @memberOf fabric.util\n * @param {String} namespace Namespace string e.g. 'fabric.Image.filter' or 'fabric'\n * @return {Object} Object for given namespace (default fabric)\n */\n resolveNamespace: function(namespace) {\n if (!namespace) {\n return fabric;\n }\n\n var parts = namespace.split('.'),\n len = parts.length, i,\n obj = global || fabric.window;\n\n for (i = 0; i < len; ++i) {\n obj = obj[parts[i]];\n }\n\n return obj;\n },\n\n /**\n * Loads image element from given url and passes it to a callback\n * @memberOf fabric.util\n * @param {String} url URL representing an image\n * @param {Function} callback Callback; invoked with loaded image\n * @param {*} [context] Context to invoke callback in\n * @param {Object} [crossOrigin] crossOrigin value to set image element to\n */\n loadImage: function(url, callback, context, crossOrigin) {\n if (!url) {\n callback && callback.call(context, url);\n return;\n }\n\n var img = fabric.util.createImage();\n\n /** @ignore */\n var onLoadCallback = function () {\n callback && callback.call(context, img);\n img = img.onload = img.onerror = null;\n };\n\n img.onload = onLoadCallback;\n /** @ignore */\n img.onerror = function() {\n fabric.log('Error loading ' + img.src);\n callback && callback.call(context, null, true);\n img = img.onload = img.onerror = null;\n };\n\n // data-urls appear to be buggy with crossOrigin\n // https://github.com/kangax/fabric.js/commit/d0abb90f1cd5c5ef9d2a94d3fb21a22330da3e0a#commitcomment-4513767\n // see https://code.google.com/p/chromium/issues/detail?id=315152\n // https://bugzilla.mozilla.org/show_bug.cgi?id=935069\n if (url.indexOf('data') !== 0 && crossOrigin) {\n img.crossOrigin = crossOrigin;\n }\n\n // IE10 / IE11-Fix: SVG contents from data: URI\n // will only be available if the IMG is present\n // in the DOM (and visible)\n if (url.substring(0,14) === 'data:image/svg') {\n img.onload = null;\n fabric.util.loadImageInDom(img, onLoadCallback);\n }\n\n img.src = url;\n },\n\n /**\n * Attaches SVG image with data: URL to the dom\n * @memberOf fabric.util\n * @param {Object} img Image object with data:image/svg src\n * @param {Function} callback Callback; invoked with loaded image\n * @return {Object} DOM element (div containing the SVG image)\n */\n loadImageInDom: function(img, onLoadCallback) {\n var div = fabric.document.createElement('div');\n div.style.width = div.style.height = '1px';\n div.style.left = div.style.top = '-100%';\n div.style.position = 'absolute';\n div.appendChild(img);\n fabric.document.querySelector('body').appendChild(div);\n /**\n * Wrap in function to:\n * 1. Call existing callback\n * 2. Cleanup DOM\n */\n img.onload = function () {\n onLoadCallback();\n div.parentNode.removeChild(div);\n div = null;\n };\n },\n\n /**\n * Creates corresponding fabric instances from their object representations\n * @static\n * @memberOf fabric.util\n * @param {Array} objects Objects to enliven\n * @param {Function} callback Callback to invoke when all objects are created\n * @param {String} namespace Namespace to get klass \"Class\" object from\n * @param {Function} reviver Method for further parsing of object elements,\n * called after each fabric object created.\n */\n enlivenObjects: function(objects, callback, namespace, reviver) {\n objects = objects || [];\n\n function onLoaded() {\n if (++numLoadedObjects === numTotalObjects) {\n callback && callback(enlivenedObjects);\n }\n }\n\n var enlivenedObjects = [],\n numLoadedObjects = 0,\n numTotalObjects = objects.length;\n\n if (!numTotalObjects) {\n callback && callback(enlivenedObjects);\n return;\n }\n\n objects.forEach(function (o, index) {\n // if sparse array\n if (!o || !o.type) {\n onLoaded();\n return;\n }\n var klass = fabric.util.getKlass(o.type, namespace);\n klass.fromObject(o, function (obj, error) {\n error || (enlivenedObjects[index] = obj);\n reviver && reviver(o, obj, error);\n onLoaded();\n });\n });\n },\n\n /**\n * Create and wait for loading of patterns\n * @static\n * @memberOf fabric.util\n * @param {Array} patterns Objects to enliven\n * @param {Function} callback Callback to invoke when all objects are created\n * called after each fabric object created.\n */\n enlivenPatterns: function(patterns, callback) {\n patterns = patterns || [];\n\n function onLoaded() {\n if (++numLoadedPatterns === numPatterns) {\n callback && callback(enlivenedPatterns);\n }\n }\n\n var enlivenedPatterns = [],\n numLoadedPatterns = 0,\n numPatterns = patterns.length;\n\n if (!numPatterns) {\n callback && callback(enlivenedPatterns);\n return;\n }\n\n patterns.forEach(function (p, index) {\n if (p && p.source) {\n new fabric.Pattern(p, function(pattern) {\n enlivenedPatterns[index] = pattern;\n onLoaded();\n });\n }\n else {\n enlivenedPatterns[index] = p;\n onLoaded();\n }\n });\n },\n\n /**\n * Groups SVG elements (usually those retrieved from SVG document)\n * @static\n * @memberOf fabric.util\n * @param {Array} elements SVG elements to group\n * @param {Object} [options] Options object\n * @param {String} path Value to set sourcePath to\n * @return {fabric.Object|fabric.Group}\n */\n groupSVGElements: function(elements, options, path) {\n var object;\n if (elements.length === 1) {\n return elements[0];\n }\n if (options) {\n if (options.width && options.height) {\n options.centerPoint = {\n x: options.width / 2,\n y: options.height / 2\n };\n }\n else {\n delete options.width;\n delete options.height;\n }\n }\n object = new fabric.Group(elements, options);\n if (typeof path !== 'undefined') {\n object.sourcePath = path;\n }\n return object;\n },\n\n /**\n * Populates an object with properties of another object\n * @static\n * @memberOf fabric.util\n * @param {Object} source Source object\n * @param {Object} destination Destination object\n * @return {Array} properties Properties names to include\n */\n populateWithProperties: function(source, destination, properties) {\n if (properties && Object.prototype.toString.call(properties) === '[object Array]') {\n for (var i = 0, len = properties.length; i < len; i++) {\n if (properties[i] in source) {\n destination[properties[i]] = source[properties[i]];\n }\n }\n }\n },\n\n /**\n * Draws a dashed line between two points\n *\n * This method is used to draw dashed line around selection area.\n * See dotted stroke in canvas\n *\n * @param {CanvasRenderingContext2D} ctx context\n * @param {Number} x start x coordinate\n * @param {Number} y start y coordinate\n * @param {Number} x2 end x coordinate\n * @param {Number} y2 end y coordinate\n * @param {Array} da dash array pattern\n */\n drawDashedLine: function(ctx, x, y, x2, y2, da) {\n var dx = x2 - x,\n dy = y2 - y,\n len = sqrt(dx * dx + dy * dy),\n rot = atan2(dy, dx),\n dc = da.length,\n di = 0,\n draw = true;\n\n ctx.save();\n ctx.translate(x, y);\n ctx.moveTo(0, 0);\n ctx.rotate(rot);\n\n x = 0;\n while (len > x) {\n x += da[di++ % dc];\n if (x > len) {\n x = len;\n }\n ctx[draw ? 'lineTo' : 'moveTo'](x, 0);\n draw = !draw;\n }\n\n ctx.restore();\n },\n\n /**\n * Creates canvas element\n * @static\n * @memberOf fabric.util\n * @return {CanvasElement} initialized canvas element\n */\n createCanvasElement: function() {\n return fabric.document.createElement('canvas');\n },\n\n /**\n * Creates image element (works on client and node)\n * @static\n * @memberOf fabric.util\n * @return {HTMLImageElement} HTML image element\n */\n createImage: function() {\n return fabric.document.createElement('img');\n },\n\n /**\n * @static\n * @memberOf fabric.util\n * @deprecated since 2.0.0\n * @param {fabric.Object} receiver Object implementing `clipTo` method\n * @param {CanvasRenderingContext2D} ctx Context to clip\n */\n clipContext: function(receiver, ctx) {\n ctx.save();\n ctx.beginPath();\n receiver.clipTo(ctx);\n ctx.clip();\n },\n\n /**\n * Multiply matrix A by matrix B to nest transformations\n * @static\n * @memberOf fabric.util\n * @param {Array} a First transformMatrix\n * @param {Array} b Second transformMatrix\n * @param {Boolean} is2x2 flag to multiply matrices as 2x2 matrices\n * @return {Array} The product of the two transform matrices\n */\n multiplyTransformMatrices: function(a, b, is2x2) {\n // Matrix multiply a * b\n return [\n a[0] * b[0] + a[2] * b[1],\n a[1] * b[0] + a[3] * b[1],\n a[0] * b[2] + a[2] * b[3],\n a[1] * b[2] + a[3] * b[3],\n is2x2 ? 0 : a[0] * b[4] + a[2] * b[5] + a[4],\n is2x2 ? 0 : a[1] * b[4] + a[3] * b[5] + a[5]\n ];\n },\n\n /**\n * Decomposes standard 2x2 matrix into transform componentes\n * @static\n * @memberOf fabric.util\n * @param {Array} a transformMatrix\n * @return {Object} Components of transform\n */\n qrDecompose: function(a) {\n var angle = atan2(a[1], a[0]),\n denom = pow(a[0], 2) + pow(a[1], 2),\n scaleX = sqrt(denom),\n scaleY = (a[0] * a[3] - a[2] * a [1]) / scaleX,\n skewX = atan2(a[0] * a[2] + a[1] * a [3], denom);\n return {\n angle: angle / PiBy180,\n scaleX: scaleX,\n scaleY: scaleY,\n skewX: skewX / PiBy180,\n skewY: 0,\n translateX: a[4],\n translateY: a[5]\n };\n },\n\n customTransformMatrix: function(scaleX, scaleY, skewX) {\n var skewMatrixX = [1, 0, abs(Math.tan(skewX * PiBy180)), 1],\n scaleMatrix = [abs(scaleX), 0, 0, abs(scaleY)];\n return fabric.util.multiplyTransformMatrices(scaleMatrix, skewMatrixX, true);\n },\n\n /**\n * reset an object transform state to neutral. Top and left are not accounted for\n * @static\n * @memberOf fabric.util\n * @param {fabric.Object} target object to transform\n */\n resetObjectTransform: function (target) {\n target.scaleX = 1;\n target.scaleY = 1;\n target.skewX = 0;\n target.skewY = 0;\n target.flipX = false;\n target.flipY = false;\n target.rotate(0);\n },\n\n /**\n * Extract Object transform values\n * @static\n * @memberOf fabric.util\n * @param {fabric.Object} target object to read from\n * @return {Object} Components of transform\n */\n saveObjectTransform: function (target) {\n return {\n scaleX: target.scaleX,\n scaleY: target.scaleY,\n skewX: target.skewX,\n skewY: target.skewY,\n angle: target.angle,\n left: target.left,\n flipX: target.flipX,\n flipY: target.flipY,\n top: target.top\n };\n },\n\n /**\n * Returns string representation of function body\n * @param {Function} fn Function to get body of\n * @return {String} Function body\n */\n getFunctionBody: function(fn) {\n return (String(fn).match(/function[^{]*\\{([\\s\\S]*)\\}/) || {})[1];\n },\n\n /**\n * Returns true if context has transparent pixel\n * at specified location (taking tolerance into account)\n * @param {CanvasRenderingContext2D} ctx context\n * @param {Number} x x coordinate\n * @param {Number} y y coordinate\n * @param {Number} tolerance Tolerance\n */\n isTransparent: function(ctx, x, y, tolerance) {\n\n // If tolerance is > 0 adjust start coords to take into account.\n // If moves off Canvas fix to 0\n if (tolerance > 0) {\n if (x > tolerance) {\n x -= tolerance;\n }\n else {\n x = 0;\n }\n if (y > tolerance) {\n y -= tolerance;\n }\n else {\n y = 0;\n }\n }\n\n var _isTransparent = true, i, temp,\n imageData = ctx.getImageData(x, y, (tolerance * 2) || 1, (tolerance * 2) || 1),\n l = imageData.data.length;\n\n // Split image data - for tolerance > 1, pixelDataSize = 4;\n for (i = 3; i < l; i += 4) {\n temp = imageData.data[i];\n _isTransparent = temp <= 0;\n if (_isTransparent === false) {\n break; // Stop if colour found\n }\n }\n\n imageData = null;\n\n return _isTransparent;\n },\n\n /**\n * Parse preserveAspectRatio attribute from element\n * @param {string} attribute to be parsed\n * @return {Object} an object containing align and meetOrSlice attribute\n */\n parsePreserveAspectRatioAttribute: function(attribute) {\n var meetOrSlice = 'meet', alignX = 'Mid', alignY = 'Mid',\n aspectRatioAttrs = attribute.split(' '), align;\n\n if (aspectRatioAttrs && aspectRatioAttrs.length) {\n meetOrSlice = aspectRatioAttrs.pop();\n if (meetOrSlice !== 'meet' && meetOrSlice !== 'slice') {\n align = meetOrSlice;\n meetOrSlice = 'meet';\n }\n else if (aspectRatioAttrs.length) {\n align = aspectRatioAttrs.pop();\n }\n }\n //divide align in alignX and alignY\n alignX = align !== 'none' ? align.slice(1, 4) : 'none';\n alignY = align !== 'none' ? align.slice(5, 8) : 'none';\n return {\n meetOrSlice: meetOrSlice,\n alignX: alignX,\n alignY: alignY\n };\n },\n\n /**\n * Clear char widths cache for the given font family or all the cache if no\n * fontFamily is specified.\n * Use it if you know you are loading fonts in a lazy way and you are not waiting\n * for custom fonts to load properly when adding text objects to the canvas.\n * If a text object is added when its own font is not loaded yet, you will get wrong\n * measurement and so wrong bounding boxes.\n * After the font cache is cleared, either change the textObject text content or call\n * initDimensions() to trigger a recalculation\n * @memberOf fabric.util\n * @param {String} [fontFamily] font family to clear\n */\n clearFabricFontCache: function(fontFamily) {\n fontFamily = (fontFamily || '').toLowerCase();\n if (!fontFamily) {\n fabric.charWidthsCache = { };\n }\n else if (fabric.charWidthsCache[fontFamily]) {\n delete fabric.charWidthsCache[fontFamily];\n }\n },\n\n /**\n * Given current aspect ratio, determines the max width and height that can\n * respect the total allowed area for the cache.\n * @memberOf fabric.util\n * @param {Number} ar aspect ratio\n * @param {Number} maximumArea Maximum area you want to achieve\n * @return {Object.x} Limited dimensions by X\n * @return {Object.y} Limited dimensions by Y\n */\n limitDimsByArea: function(ar, maximumArea) {\n var roughWidth = Math.sqrt(maximumArea * ar),\n perfLimitSizeY = Math.floor(maximumArea / roughWidth);\n return { x: Math.floor(roughWidth), y: perfLimitSizeY };\n },\n\n capValue: function(min, value, max) {\n return Math.max(min, Math.min(value, max));\n },\n\n findScaleToFit: function(source, destination) {\n return Math.min(destination.width / source.width, destination.height / source.height);\n },\n\n findScaleToCover: function(source, destination) {\n return Math.max(destination.width / source.width, destination.height / source.height);\n }\n };\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function() {\n\n var _join = Array.prototype.join;\n\n /* Adapted from http://dxr.mozilla.org/mozilla-central/source/content/svg/content/src/nsSVGPathDataParser.cpp\n * by Andrea Bogazzi code is under MPL. if you don't have a copy of the license you can take it here\n * http://mozilla.org/MPL/2.0/\n */\n function arcToSegments(toX, toY, rx, ry, large, sweep, rotateX) {\n var argsString = _join.call(arguments);\n if (fabric.arcToSegmentsCache[argsString]) {\n return fabric.arcToSegmentsCache[argsString];\n }\n\n var PI = Math.PI, th = rotateX * PI / 180,\n sinTh = fabric.util.sin(th),\n cosTh = fabric.util.cos(th),\n fromX = 0, fromY = 0;\n\n rx = Math.abs(rx);\n ry = Math.abs(ry);\n\n var px = -cosTh * toX * 0.5 - sinTh * toY * 0.5,\n py = -cosTh * toY * 0.5 + sinTh * toX * 0.5,\n rx2 = rx * rx, ry2 = ry * ry, py2 = py * py, px2 = px * px,\n pl = rx2 * ry2 - rx2 * py2 - ry2 * px2,\n root = 0;\n\n if (pl < 0) {\n var s = Math.sqrt(1 - pl / (rx2 * ry2));\n rx *= s;\n ry *= s;\n }\n else {\n root = (large === sweep ? -1.0 : 1.0) *\n Math.sqrt( pl / (rx2 * py2 + ry2 * px2));\n }\n\n var cx = root * rx * py / ry,\n cy = -root * ry * px / rx,\n cx1 = cosTh * cx - sinTh * cy + toX * 0.5,\n cy1 = sinTh * cx + cosTh * cy + toY * 0.5,\n mTheta = calcVectorAngle(1, 0, (px - cx) / rx, (py - cy) / ry),\n dtheta = calcVectorAngle((px - cx) / rx, (py - cy) / ry, (-px - cx) / rx, (-py - cy) / ry);\n\n if (sweep === 0 && dtheta > 0) {\n dtheta -= 2 * PI;\n }\n else if (sweep === 1 && dtheta < 0) {\n dtheta += 2 * PI;\n }\n\n // Convert into cubic bezier segments <= 90deg\n var segments = Math.ceil(Math.abs(dtheta / PI * 2)),\n result = [], mDelta = dtheta / segments,\n mT = 8 / 3 * Math.sin(mDelta / 4) * Math.sin(mDelta / 4) / Math.sin(mDelta / 2),\n th3 = mTheta + mDelta;\n\n for (var i = 0; i < segments; i++) {\n result[i] = segmentToBezier(mTheta, th3, cosTh, sinTh, rx, ry, cx1, cy1, mT, fromX, fromY);\n fromX = result[i][4];\n fromY = result[i][5];\n mTheta = th3;\n th3 += mDelta;\n }\n fabric.arcToSegmentsCache[argsString] = result;\n return result;\n }\n\n function segmentToBezier(th2, th3, cosTh, sinTh, rx, ry, cx1, cy1, mT, fromX, fromY) {\n var costh2 = fabric.util.cos(th2),\n sinth2 = fabric.util.sin(th2),\n costh3 = fabric.util.cos(th3),\n sinth3 = fabric.util.sin(th3),\n toX = cosTh * rx * costh3 - sinTh * ry * sinth3 + cx1,\n toY = sinTh * rx * costh3 + cosTh * ry * sinth3 + cy1,\n cp1X = fromX + mT * ( -cosTh * rx * sinth2 - sinTh * ry * costh2),\n cp1Y = fromY + mT * ( -sinTh * rx * sinth2 + cosTh * ry * costh2),\n cp2X = toX + mT * ( cosTh * rx * sinth3 + sinTh * ry * costh3),\n cp2Y = toY + mT * ( sinTh * rx * sinth3 - cosTh * ry * costh3);\n\n return [\n cp1X, cp1Y,\n cp2X, cp2Y,\n toX, toY\n ];\n }\n\n /*\n * Private\n */\n function calcVectorAngle(ux, uy, vx, vy) {\n var ta = Math.atan2(uy, ux),\n tb = Math.atan2(vy, vx);\n if (tb >= ta) {\n return tb - ta;\n }\n else {\n return 2 * Math.PI - (ta - tb);\n }\n }\n\n /**\n * Draws arc\n * @param {CanvasRenderingContext2D} ctx\n * @param {Number} fx\n * @param {Number} fy\n * @param {Array} coords\n */\n fabric.util.drawArc = function(ctx, fx, fy, coords) {\n var rx = coords[0],\n ry = coords[1],\n rot = coords[2],\n large = coords[3],\n sweep = coords[4],\n tx = coords[5],\n ty = coords[6],\n segs = [[], [], [], []],\n segsNorm = arcToSegments(tx - fx, ty - fy, rx, ry, large, sweep, rot);\n\n for (var i = 0, len = segsNorm.length; i < len; i++) {\n segs[i][0] = segsNorm[i][0] + fx;\n segs[i][1] = segsNorm[i][1] + fy;\n segs[i][2] = segsNorm[i][2] + fx;\n segs[i][3] = segsNorm[i][3] + fy;\n segs[i][4] = segsNorm[i][4] + fx;\n segs[i][5] = segsNorm[i][5] + fy;\n ctx.bezierCurveTo.apply(ctx, segs[i]);\n }\n };\n\n /**\n * Calculate bounding box of a elliptic-arc\n * @param {Number} fx start point of arc\n * @param {Number} fy\n * @param {Number} rx horizontal radius\n * @param {Number} ry vertical radius\n * @param {Number} rot angle of horizontal axe\n * @param {Number} large 1 or 0, whatever the arc is the big or the small on the 2 points\n * @param {Number} sweep 1 or 0, 1 clockwise or counterclockwise direction\n * @param {Number} tx end point of arc\n * @param {Number} ty\n */\n fabric.util.getBoundsOfArc = function(fx, fy, rx, ry, rot, large, sweep, tx, ty) {\n\n var fromX = 0, fromY = 0, bound, bounds = [],\n segs = arcToSegments(tx - fx, ty - fy, rx, ry, large, sweep, rot);\n\n for (var i = 0, len = segs.length; i < len; i++) {\n bound = getBoundsOfCurve(fromX, fromY, segs[i][0], segs[i][1], segs[i][2], segs[i][3], segs[i][4], segs[i][5]);\n bounds.push({ x: bound[0].x + fx, y: bound[0].y + fy });\n bounds.push({ x: bound[1].x + fx, y: bound[1].y + fy });\n fromX = segs[i][4];\n fromY = segs[i][5];\n }\n return bounds;\n };\n\n /**\n * Calculate bounding box of a beziercurve\n * @param {Number} x0 starting point\n * @param {Number} y0\n * @param {Number} x1 first control point\n * @param {Number} y1\n * @param {Number} x2 secondo control point\n * @param {Number} y2\n * @param {Number} x3 end of beizer\n * @param {Number} y3\n */\n // taken from http://jsbin.com/ivomiq/56/edit no credits available for that.\n function getBoundsOfCurve(x0, y0, x1, y1, x2, y2, x3, y3) {\n var argsString;\n if (fabric.cachesBoundsOfCurve) {\n argsString = _join.call(arguments);\n if (fabric.boundsOfCurveCache[argsString]) {\n return fabric.boundsOfCurveCache[argsString];\n }\n }\n\n var sqrt = Math.sqrt,\n min = Math.min, max = Math.max,\n abs = Math.abs, tvalues = [],\n bounds = [[], []],\n a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n\n for (var i = 0; i < 2; ++i) {\n if (i > 0) {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n\n if (abs(a) < 1e-12) {\n if (abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (0 < t && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n b2ac = b * b - 4 * c * a;\n if (b2ac < 0) {\n continue;\n }\n sqrtb2ac = sqrt(b2ac);\n t1 = (-b + sqrtb2ac) / (2 * a);\n if (0 < t1 && t1 < 1) {\n tvalues.push(t1);\n }\n t2 = (-b - sqrtb2ac) / (2 * a);\n if (0 < t2 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n\n var x, y, j = tvalues.length, jlen = j, mt;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n x = (mt * mt * mt * x0) + (3 * mt * mt * t * x1) + (3 * mt * t * t * x2) + (t * t * t * x3);\n bounds[0][j] = x;\n\n y = (mt * mt * mt * y0) + (3 * mt * mt * t * y1) + (3 * mt * t * t * y2) + (t * t * t * y3);\n bounds[1][j] = y;\n }\n\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n var result = [\n {\n x: min.apply(null, bounds[0]),\n y: min.apply(null, bounds[1])\n },\n {\n x: max.apply(null, bounds[0]),\n y: max.apply(null, bounds[1])\n }\n ];\n if (fabric.cachesBoundsOfCurve) {\n fabric.boundsOfCurveCache[argsString] = result;\n }\n return result;\n }\n\n fabric.util.getBoundsOfCurve = getBoundsOfCurve;\n\n})();\n\n\n(function() {\n\n var slice = Array.prototype.slice;\n\n /**\n * Invokes method on all items in a given array\n * @memberOf fabric.util.array\n * @param {Array} array Array to iterate over\n * @param {String} method Name of a method to invoke\n * @return {Array}\n */\n function invoke(array, method) {\n var args = slice.call(arguments, 2), result = [];\n for (var i = 0, len = array.length; i < len; i++) {\n result[i] = args.length ? array[i][method].apply(array[i], args) : array[i][method].call(array[i]);\n }\n return result;\n }\n\n /**\n * Finds maximum value in array (not necessarily \"first\" one)\n * @memberOf fabric.util.array\n * @param {Array} array Array to iterate over\n * @param {String} byProperty\n * @return {*}\n */\n function max(array, byProperty) {\n return find(array, byProperty, function(value1, value2) {\n return value1 >= value2;\n });\n }\n\n /**\n * Finds minimum value in array (not necessarily \"first\" one)\n * @memberOf fabric.util.array\n * @param {Array} array Array to iterate over\n * @param {String} byProperty\n * @return {*}\n */\n function min(array, byProperty) {\n return find(array, byProperty, function(value1, value2) {\n return value1 < value2;\n });\n }\n\n /**\n * @private\n */\n function fill(array, value) {\n var k = array.length;\n while (k--) {\n array[k] = value;\n }\n return array;\n }\n\n /**\n * @private\n */\n function find(array, byProperty, condition) {\n if (!array || array.length === 0) {\n return;\n }\n\n var i = array.length - 1,\n result = byProperty ? array[i][byProperty] : array[i];\n if (byProperty) {\n while (i--) {\n if (condition(array[i][byProperty], result)) {\n result = array[i][byProperty];\n }\n }\n }\n else {\n while (i--) {\n if (condition(array[i], result)) {\n result = array[i];\n }\n }\n }\n return result;\n }\n\n /**\n * @namespace fabric.util.array\n */\n fabric.util.array = {\n fill: fill,\n invoke: invoke,\n min: min,\n max: max\n };\n\n})();\n\n\n(function() {\n /**\n * Copies all enumerable properties of one js object to another\n * Does not clone or extend fabric.Object subclasses.\n * @memberOf fabric.util.object\n * @param {Object} destination Where to copy to\n * @param {Object} source Where to copy from\n * @return {Object}\n */\n\n function extend(destination, source, deep) {\n // JScript DontEnum bug is not taken care of\n // the deep clone is for internal use, is not meant to avoid\n // javascript traps or cloning html element or self referenced objects.\n if (deep) {\n if (!fabric.isLikelyNode && source instanceof Element) {\n // avoid cloning deep images, canvases,\n destination = source;\n }\n else if (source instanceof Array) {\n destination = [];\n for (var i = 0, len = source.length; i < len; i++) {\n destination[i] = extend({ }, source[i], deep);\n }\n }\n else if (source && typeof source === 'object') {\n for (var property in source) {\n if (source.hasOwnProperty(property)) {\n destination[property] = extend({ }, source[property], deep);\n }\n }\n }\n else {\n // this sounds odd for an extend but is ok for recursive use\n destination = source;\n }\n }\n else {\n for (var property in source) {\n destination[property] = source[property];\n }\n }\n return destination;\n }\n\n /**\n * Creates an empty object and copies all enumerable properties of another object to it\n * @memberOf fabric.util.object\n * TODO: this function return an empty object if you try to clone null\n * @param {Object} object Object to clone\n * @return {Object}\n */\n function clone(object, deep) {\n return extend({ }, object, deep);\n }\n\n /** @namespace fabric.util.object */\n fabric.util.object = {\n extend: extend,\n clone: clone\n };\n fabric.util.object.extend(fabric.util, fabric.Observable);\n})();\n\n\n(function() {\n\n /**\n * Camelizes a string\n * @memberOf fabric.util.string\n * @param {String} string String to camelize\n * @return {String} Camelized version of a string\n */\n function camelize(string) {\n return string.replace(/-+(.)?/g, function(match, character) {\n return character ? character.toUpperCase() : '';\n });\n }\n\n /**\n * Capitalizes a string\n * @memberOf fabric.util.string\n * @param {String} string String to capitalize\n * @param {Boolean} [firstLetterOnly] If true only first letter is capitalized\n * and other letters stay untouched, if false first letter is capitalized\n * and other letters are converted to lowercase.\n * @return {String} Capitalized version of a string\n */\n function capitalize(string, firstLetterOnly) {\n return string.charAt(0).toUpperCase() +\n (firstLetterOnly ? string.slice(1) : string.slice(1).toLowerCase());\n }\n\n /**\n * Escapes XML in a string\n * @memberOf fabric.util.string\n * @param {String} string String to escape\n * @return {String} Escaped version of a string\n */\n function escapeXml(string) {\n return string.replace(/&/g, '&')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(//g, '>');\n }\n\n /**\n * Divide a string in the user perceived single units\n * @memberOf fabric.util.string\n * @param {String} textstring String to escape\n * @return {Array} array containing the graphemes\n */\n function graphemeSplit(textstring) {\n var i = 0, chr, graphemes = [];\n for (i = 0, chr; i < textstring.length; i++) {\n if ((chr = getWholeChar(textstring, i)) === false) {\n continue;\n }\n graphemes.push(chr);\n }\n return graphemes;\n }\n\n // taken from mdn in the charAt doc page.\n function getWholeChar(str, i) {\n var code = str.charCodeAt(i);\n\n if (isNaN(code)) {\n return ''; // Position not found\n }\n if (code < 0xD800 || code > 0xDFFF) {\n return str.charAt(i);\n }\n\n // High surrogate (could change last hex to 0xDB7F to treat high private\n // surrogates as single characters)\n if (0xD800 <= code && code <= 0xDBFF) {\n if (str.length <= (i + 1)) {\n throw 'High surrogate without following low surrogate';\n }\n var next = str.charCodeAt(i + 1);\n if (0xDC00 > next || next > 0xDFFF) {\n throw 'High surrogate without following low surrogate';\n }\n return str.charAt(i) + str.charAt(i + 1);\n }\n // Low surrogate (0xDC00 <= code && code <= 0xDFFF)\n if (i === 0) {\n throw 'Low surrogate without preceding high surrogate';\n }\n var prev = str.charCodeAt(i - 1);\n\n // (could change last hex to 0xDB7F to treat high private\n // surrogates as single characters)\n if (0xD800 > prev || prev > 0xDBFF) {\n throw 'Low surrogate without preceding high surrogate';\n }\n // We can pass over low surrogates now as the second component\n // in a pair which we have already processed\n return false;\n }\n\n\n /**\n * String utilities\n * @namespace fabric.util.string\n */\n fabric.util.string = {\n camelize: camelize,\n capitalize: capitalize,\n escapeXml: escapeXml,\n graphemeSplit: graphemeSplit\n };\n})();\n\n\n(function() {\n\n var slice = Array.prototype.slice, emptyFunction = function() { },\n\n IS_DONTENUM_BUGGY = (function() {\n for (var p in { toString: 1 }) {\n if (p === 'toString') {\n return false;\n }\n }\n return true;\n })(),\n\n /** @ignore */\n addMethods = function(klass, source, parent) {\n for (var property in source) {\n\n if (property in klass.prototype &&\n typeof klass.prototype[property] === 'function' &&\n (source[property] + '').indexOf('callSuper') > -1) {\n\n klass.prototype[property] = (function(property) {\n return function() {\n\n var superclass = this.constructor.superclass;\n this.constructor.superclass = parent;\n var returnValue = source[property].apply(this, arguments);\n this.constructor.superclass = superclass;\n\n if (property !== 'initialize') {\n return returnValue;\n }\n };\n })(property);\n }\n else {\n klass.prototype[property] = source[property];\n }\n\n if (IS_DONTENUM_BUGGY) {\n if (source.toString !== Object.prototype.toString) {\n klass.prototype.toString = source.toString;\n }\n if (source.valueOf !== Object.prototype.valueOf) {\n klass.prototype.valueOf = source.valueOf;\n }\n }\n }\n };\n\n function Subclass() { }\n\n function callSuper(methodName) {\n var parentMethod = null,\n _this = this;\n\n // climb prototype chain to find method not equal to callee's method\n while (_this.constructor.superclass) {\n var superClassMethod = _this.constructor.superclass.prototype[methodName];\n if (_this[methodName] !== superClassMethod) {\n parentMethod = superClassMethod;\n break;\n }\n // eslint-disable-next-line\n _this = _this.constructor.superclass.prototype;\n }\n\n if (!parentMethod) {\n return console.log('tried to callSuper ' + methodName + ', method not found in prototype chain', this);\n }\n\n return (arguments.length > 1)\n ? parentMethod.apply(this, slice.call(arguments, 1))\n : parentMethod.call(this);\n }\n\n /**\n * Helper for creation of \"classes\".\n * @memberOf fabric.util\n * @param {Function} [parent] optional \"Class\" to inherit from\n * @param {Object} [properties] Properties shared by all instances of this class\n * (be careful modifying objects defined here as this would affect all instances)\n */\n function createClass() {\n var parent = null,\n properties = slice.call(arguments, 0);\n\n if (typeof properties[0] === 'function') {\n parent = properties.shift();\n }\n function klass() {\n this.initialize.apply(this, arguments);\n }\n\n klass.superclass = parent;\n klass.subclasses = [];\n\n if (parent) {\n Subclass.prototype = parent.prototype;\n klass.prototype = new Subclass();\n parent.subclasses.push(klass);\n }\n for (var i = 0, length = properties.length; i < length; i++) {\n addMethods(klass, properties[i], parent);\n }\n if (!klass.prototype.initialize) {\n klass.prototype.initialize = emptyFunction;\n }\n klass.prototype.constructor = klass;\n klass.prototype.callSuper = callSuper;\n return klass;\n }\n\n fabric.util.createClass = createClass;\n})();\n\n\n(function () {\n\n var unknown = 'unknown';\n\n /* EVENT HANDLING */\n\n function areHostMethods(object) {\n var methodNames = Array.prototype.slice.call(arguments, 1),\n t, i, len = methodNames.length;\n for (i = 0; i < len; i++) {\n t = typeof object[methodNames[i]];\n if (!(/^(?:function|object|unknown)$/).test(t)) {\n return false;\n }\n }\n return true;\n }\n\n /** @ignore */\n var getElement,\n setElement,\n getUniqueId = (function () {\n var uid = 0;\n return function (element) {\n return element.__uniqueID || (element.__uniqueID = 'uniqueID__' + uid++);\n };\n })();\n\n (function () {\n var elements = { };\n /** @ignore */\n getElement = function (uid) {\n return elements[uid];\n };\n /** @ignore */\n setElement = function (uid, element) {\n elements[uid] = element;\n };\n })();\n\n function createListener(uid, handler) {\n return {\n handler: handler,\n wrappedHandler: createWrappedHandler(uid, handler)\n };\n }\n\n function createWrappedHandler(uid, handler) {\n return function (e) {\n handler.call(getElement(uid), e || fabric.window.event);\n };\n }\n\n function createDispatcher(uid, eventName) {\n return function (e) {\n if (handlers[uid] && handlers[uid][eventName]) {\n var handlersForEvent = handlers[uid][eventName];\n for (var i = 0, len = handlersForEvent.length; i < len; i++) {\n handlersForEvent[i].call(this, e || fabric.window.event);\n }\n }\n };\n }\n\n var shouldUseAddListenerRemoveListener = (\n areHostMethods(fabric.document.documentElement, 'addEventListener', 'removeEventListener') &&\n areHostMethods(fabric.window, 'addEventListener', 'removeEventListener')),\n\n shouldUseAttachEventDetachEvent = (\n areHostMethods(fabric.document.documentElement, 'attachEvent', 'detachEvent') &&\n areHostMethods(fabric.window, 'attachEvent', 'detachEvent')),\n\n // IE branch\n listeners = { },\n\n // DOM L0 branch\n handlers = { },\n\n addListener, removeListener;\n\n if (shouldUseAddListenerRemoveListener) {\n /** @ignore */\n addListener = function (element, eventName, handler, options) {\n // since ie10 or ie9 can use addEventListener but they do not support options, i need to check\n element && element.addEventListener(eventName, handler, shouldUseAttachEventDetachEvent ? false : options);\n };\n /** @ignore */\n removeListener = function (element, eventName, handler, options) {\n element && element.removeEventListener(eventName, handler, shouldUseAttachEventDetachEvent ? false : options);\n };\n }\n\n else if (shouldUseAttachEventDetachEvent) {\n /** @ignore */\n addListener = function (element, eventName, handler) {\n if (!element) {\n return;\n }\n var uid = getUniqueId(element);\n setElement(uid, element);\n if (!listeners[uid]) {\n listeners[uid] = { };\n }\n if (!listeners[uid][eventName]) {\n listeners[uid][eventName] = [];\n\n }\n var listener = createListener(uid, handler);\n listeners[uid][eventName].push(listener);\n element.attachEvent('on' + eventName, listener.wrappedHandler);\n };\n /** @ignore */\n removeListener = function (element, eventName, handler) {\n if (!element) {\n return;\n }\n var uid = getUniqueId(element), listener;\n if (listeners[uid] && listeners[uid][eventName]) {\n for (var i = 0, len = listeners[uid][eventName].length; i < len; i++) {\n listener = listeners[uid][eventName][i];\n if (listener && listener.handler === handler) {\n element.detachEvent('on' + eventName, listener.wrappedHandler);\n listeners[uid][eventName][i] = null;\n }\n }\n }\n };\n }\n else {\n /** @ignore */\n addListener = function (element, eventName, handler) {\n if (!element) {\n return;\n }\n var uid = getUniqueId(element);\n if (!handlers[uid]) {\n handlers[uid] = { };\n }\n if (!handlers[uid][eventName]) {\n handlers[uid][eventName] = [];\n var existingHandler = element['on' + eventName];\n if (existingHandler) {\n handlers[uid][eventName].push(existingHandler);\n }\n element['on' + eventName] = createDispatcher(uid, eventName);\n }\n handlers[uid][eventName].push(handler);\n };\n /** @ignore */\n removeListener = function (element, eventName, handler) {\n if (!element) {\n return;\n }\n var uid = getUniqueId(element);\n if (handlers[uid] && handlers[uid][eventName]) {\n var handlersForEvent = handlers[uid][eventName];\n for (var i = 0, len = handlersForEvent.length; i < len; i++) {\n if (handlersForEvent[i] === handler) {\n handlersForEvent.splice(i, 1);\n }\n }\n }\n };\n }\n\n /**\n * Adds an event listener to an element\n * @function\n * @memberOf fabric.util\n * @param {HTMLElement} element\n * @param {String} eventName\n * @param {Function} handler\n */\n fabric.util.addListener = addListener;\n\n /**\n * Removes an event listener from an element\n * @function\n * @memberOf fabric.util\n * @param {HTMLElement} element\n * @param {String} eventName\n * @param {Function} handler\n */\n fabric.util.removeListener = removeListener;\n\n /**\n * Cross-browser wrapper for getting event's coordinates\n * @memberOf fabric.util\n * @param {Event} event Event object\n */\n function getPointer(event) {\n event || (event = fabric.window.event);\n\n var element = event.target ||\n (typeof event.srcElement !== unknown ? event.srcElement : null),\n\n scroll = fabric.util.getScrollLeftTop(element);\n return {\n x: pointerX(event) + scroll.left,\n y: pointerY(event) + scroll.top\n };\n }\n\n var pointerX = function(event) {\n return event.clientX;\n },\n\n pointerY = function(event) {\n return event.clientY;\n };\n\n function _getPointer(event, pageProp, clientProp) {\n var touchProp = event.type === 'touchend' ? 'changedTouches' : 'touches';\n var pointer, eventTouchProp = event[touchProp];\n\n if (eventTouchProp && eventTouchProp[0]) {\n pointer = eventTouchProp[0][clientProp];\n }\n\n if (typeof pointer === 'undefined') {\n pointer = event[clientProp];\n }\n\n return pointer;\n }\n\n if (fabric.isTouchSupported) {\n pointerX = function(event) {\n return _getPointer(event, 'pageX', 'clientX');\n };\n pointerY = function(event) {\n return _getPointer(event, 'pageY', 'clientY');\n };\n }\n\n fabric.util.getPointer = getPointer;\n\n})();\n\n\n(function () {\n\n /**\n * Cross-browser wrapper for setting element's style\n * @memberOf fabric.util\n * @param {HTMLElement} element\n * @param {Object} styles\n * @return {HTMLElement} Element that was passed as a first argument\n */\n function setStyle(element, styles) {\n var elementStyle = element.style;\n if (!elementStyle) {\n return element;\n }\n if (typeof styles === 'string') {\n element.style.cssText += ';' + styles;\n return styles.indexOf('opacity') > -1\n ? setOpacity(element, styles.match(/opacity:\\s*(\\d?\\.?\\d*)/)[1])\n : element;\n }\n for (var property in styles) {\n if (property === 'opacity') {\n setOpacity(element, styles[property]);\n }\n else {\n var normalizedProperty = (property === 'float' || property === 'cssFloat')\n ? (typeof elementStyle.styleFloat === 'undefined' ? 'cssFloat' : 'styleFloat')\n : property;\n elementStyle[normalizedProperty] = styles[property];\n }\n }\n return element;\n }\n\n var parseEl = fabric.document.createElement('div'),\n supportsOpacity = typeof parseEl.style.opacity === 'string',\n supportsFilters = typeof parseEl.style.filter === 'string',\n reOpacity = /alpha\\s*\\(\\s*opacity\\s*=\\s*([^\\)]+)\\)/,\n\n /** @ignore */\n setOpacity = function (element) { return element; };\n\n if (supportsOpacity) {\n /** @ignore */\n setOpacity = function(element, value) {\n element.style.opacity = value;\n return element;\n };\n }\n else if (supportsFilters) {\n /** @ignore */\n setOpacity = function(element, value) {\n var es = element.style;\n if (element.currentStyle && !element.currentStyle.hasLayout) {\n es.zoom = 1;\n }\n if (reOpacity.test(es.filter)) {\n value = value >= 0.9999 ? '' : ('alpha(opacity=' + (value * 100) + ')');\n es.filter = es.filter.replace(reOpacity, value);\n }\n else {\n es.filter += ' alpha(opacity=' + (value * 100) + ')';\n }\n return element;\n };\n }\n\n fabric.util.setStyle = setStyle;\n\n})();\n\n\n(function() {\n\n var _slice = Array.prototype.slice;\n\n /**\n * Takes id and returns an element with that id (if one exists in a document)\n * @memberOf fabric.util\n * @param {String|HTMLElement} id\n * @return {HTMLElement|null}\n */\n function getById(id) {\n return typeof id === 'string' ? fabric.document.getElementById(id) : id;\n }\n\n var sliceCanConvertNodelists,\n /**\n * Converts an array-like object (e.g. arguments or NodeList) to an array\n * @memberOf fabric.util\n * @param {Object} arrayLike\n * @return {Array}\n */\n toArray = function(arrayLike) {\n return _slice.call(arrayLike, 0);\n };\n\n try {\n sliceCanConvertNodelists = toArray(fabric.document.childNodes) instanceof Array;\n }\n catch (err) { }\n\n if (!sliceCanConvertNodelists) {\n toArray = function(arrayLike) {\n var arr = new Array(arrayLike.length), i = arrayLike.length;\n while (i--) {\n arr[i] = arrayLike[i];\n }\n return arr;\n };\n }\n\n /**\n * Creates specified element with specified attributes\n * @memberOf fabric.util\n * @param {String} tagName Type of an element to create\n * @param {Object} [attributes] Attributes to set on an element\n * @return {HTMLElement} Newly created element\n */\n function makeElement(tagName, attributes) {\n var el = fabric.document.createElement(tagName);\n for (var prop in attributes) {\n if (prop === 'class') {\n el.className = attributes[prop];\n }\n else if (prop === 'for') {\n el.htmlFor = attributes[prop];\n }\n else {\n el.setAttribute(prop, attributes[prop]);\n }\n }\n return el;\n }\n\n /**\n * Adds class to an element\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to add class to\n * @param {String} className Class to add to an element\n */\n function addClass(element, className) {\n if (element && (' ' + element.className + ' ').indexOf(' ' + className + ' ') === -1) {\n element.className += (element.className ? ' ' : '') + className;\n }\n }\n\n /**\n * Wraps element with another element\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to wrap\n * @param {HTMLElement|String} wrapper Element to wrap with\n * @param {Object} [attributes] Attributes to set on a wrapper\n * @return {HTMLElement} wrapper\n */\n function wrapElement(element, wrapper, attributes) {\n if (typeof wrapper === 'string') {\n wrapper = makeElement(wrapper, attributes);\n }\n if (element.parentNode) {\n element.parentNode.replaceChild(wrapper, element);\n }\n wrapper.appendChild(element);\n return wrapper;\n }\n\n /**\n * Returns element scroll offsets\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to operate on\n * @return {Object} Object with left/top values\n */\n function getScrollLeftTop(element) {\n\n var left = 0,\n top = 0,\n docElement = fabric.document.documentElement,\n body = fabric.document.body || {\n scrollLeft: 0, scrollTop: 0\n };\n\n // While loop checks (and then sets element to) .parentNode OR .host\n // to account for ShadowDOM. We still want to traverse up out of ShadowDOM,\n // but the .parentNode of a root ShadowDOM node will always be null, instead\n // it should be accessed through .host. See http://stackoverflow.com/a/24765528/4383938\n while (element && (element.parentNode || element.host)) {\n\n // Set element to element parent, or 'host' in case of ShadowDOM\n element = element.parentNode || element.host;\n\n if (element === fabric.document) {\n left = body.scrollLeft || docElement.scrollLeft || 0;\n top = body.scrollTop || docElement.scrollTop || 0;\n }\n else {\n left += element.scrollLeft || 0;\n top += element.scrollTop || 0;\n }\n\n if (element.nodeType === 1 && element.style.position === 'fixed') {\n break;\n }\n }\n\n return { left: left, top: top };\n }\n\n /**\n * Returns offset for a given element\n * @function\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to get offset for\n * @return {Object} Object with \"left\" and \"top\" properties\n */\n function getElementOffset(element) {\n var docElem,\n doc = element && element.ownerDocument,\n box = { left: 0, top: 0 },\n offset = { left: 0, top: 0 },\n scrollLeftTop,\n offsetAttributes = {\n borderLeftWidth: 'left',\n borderTopWidth: 'top',\n paddingLeft: 'left',\n paddingTop: 'top'\n };\n\n if (!doc) {\n return offset;\n }\n\n for (var attr in offsetAttributes) {\n offset[offsetAttributes[attr]] += parseInt(getElementStyle(element, attr), 10) || 0;\n }\n\n docElem = doc.documentElement;\n if ( typeof element.getBoundingClientRect !== 'undefined' ) {\n box = element.getBoundingClientRect();\n }\n\n scrollLeftTop = getScrollLeftTop(element);\n\n return {\n left: box.left + scrollLeftTop.left - (docElem.clientLeft || 0) + offset.left,\n top: box.top + scrollLeftTop.top - (docElem.clientTop || 0) + offset.top\n };\n }\n\n /**\n * Returns style attribute value of a given element\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to get style attribute for\n * @param {String} attr Style attribute to get for element\n * @return {String} Style attribute value of the given element.\n */\n var getElementStyle;\n if (fabric.document.defaultView && fabric.document.defaultView.getComputedStyle) {\n getElementStyle = function(element, attr) {\n var style = fabric.document.defaultView.getComputedStyle(element, null);\n return style ? style[attr] : undefined;\n };\n }\n else {\n getElementStyle = function(element, attr) {\n var value = element.style[attr];\n if (!value && element.currentStyle) {\n value = element.currentStyle[attr];\n }\n return value;\n };\n }\n\n (function () {\n var style = fabric.document.documentElement.style,\n selectProp = 'userSelect' in style\n ? 'userSelect'\n : 'MozUserSelect' in style\n ? 'MozUserSelect'\n : 'WebkitUserSelect' in style\n ? 'WebkitUserSelect'\n : 'KhtmlUserSelect' in style\n ? 'KhtmlUserSelect'\n : '';\n\n /**\n * Makes element unselectable\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to make unselectable\n * @return {HTMLElement} Element that was passed in\n */\n function makeElementUnselectable(element) {\n if (typeof element.onselectstart !== 'undefined') {\n element.onselectstart = fabric.util.falseFunction;\n }\n if (selectProp) {\n element.style[selectProp] = 'none';\n }\n else if (typeof element.unselectable === 'string') {\n element.unselectable = 'on';\n }\n return element;\n }\n\n /**\n * Makes element selectable\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to make selectable\n * @return {HTMLElement} Element that was passed in\n */\n function makeElementSelectable(element) {\n if (typeof element.onselectstart !== 'undefined') {\n element.onselectstart = null;\n }\n if (selectProp) {\n element.style[selectProp] = '';\n }\n else if (typeof element.unselectable === 'string') {\n element.unselectable = '';\n }\n return element;\n }\n\n fabric.util.makeElementUnselectable = makeElementUnselectable;\n fabric.util.makeElementSelectable = makeElementSelectable;\n })();\n\n (function() {\n\n /**\n * Inserts a script element with a given url into a document; invokes callback, when that script is finished loading\n * @memberOf fabric.util\n * @param {String} url URL of a script to load\n * @param {Function} callback Callback to execute when script is finished loading\n */\n function getScript(url, callback) {\n var headEl = fabric.document.getElementsByTagName('head')[0],\n scriptEl = fabric.document.createElement('script'),\n loading = true;\n\n /** @ignore */\n scriptEl.onload = /** @ignore */ scriptEl.onreadystatechange = function(e) {\n if (loading) {\n if (typeof this.readyState === 'string' &&\n this.readyState !== 'loaded' &&\n this.readyState !== 'complete') {\n return;\n }\n loading = false;\n callback(e || fabric.window.event);\n scriptEl = scriptEl.onload = scriptEl.onreadystatechange = null;\n }\n };\n scriptEl.src = url;\n headEl.appendChild(scriptEl);\n // causes issue in Opera\n // headEl.removeChild(scriptEl);\n }\n\n fabric.util.getScript = getScript;\n })();\n\n function getNodeCanvas(element) {\n var impl = fabric.jsdomImplForWrapper(element);\n return impl._canvas || impl._image;\n };\n\n function cleanUpJsdomNode(element) {\n if (!fabric.isLikelyNode) {\n return;\n }\n var impl = fabric.jsdomImplForWrapper(element);\n if (impl) {\n impl._image = null;\n impl._canvas = null;\n // unsure if necessary\n impl._currentSrc = null;\n impl._attributes = null;\n impl._classList = null;\n }\n }\n\n fabric.util.getById = getById;\n fabric.util.toArray = toArray;\n fabric.util.makeElement = makeElement;\n fabric.util.addClass = addClass;\n fabric.util.wrapElement = wrapElement;\n fabric.util.getScrollLeftTop = getScrollLeftTop;\n fabric.util.getElementOffset = getElementOffset;\n fabric.util.getElementStyle = getElementStyle;\n fabric.util.getNodeCanvas = getNodeCanvas;\n fabric.util.cleanUpJsdomNode = cleanUpJsdomNode;\n\n})();\n\n\n(function() {\n\n function addParamToUrl(url, param) {\n return url + (/\\?/.test(url) ? '&' : '?') + param;\n }\n\n var makeXHR = (function() {\n var factories = [\n function() { return new fabric.window.XMLHttpRequest(); },\n function() { return new ActiveXObject('Microsoft.XMLHTTP'); },\n function() { return new ActiveXObject('Msxml2.XMLHTTP'); },\n function() { return new ActiveXObject('Msxml2.XMLHTTP.3.0'); }\n ];\n for (var i = factories.length; i--; ) {\n try {\n var req = factories[i]();\n if (req) {\n return factories[i];\n }\n }\n catch (err) { }\n }\n })();\n\n function emptyFn() { }\n\n /**\n * Cross-browser abstraction for sending XMLHttpRequest\n * @memberOf fabric.util\n * @param {String} url URL to send XMLHttpRequest to\n * @param {Object} [options] Options object\n * @param {String} [options.method=\"GET\"]\n * @param {String} [options.parameters] parameters to append to url in GET or in body\n * @param {String} [options.body] body to send with POST or PUT request\n * @param {Function} options.onComplete Callback to invoke when request is completed\n * @return {XMLHttpRequest} request\n */\n function request(url, options) {\n options || (options = { });\n\n var method = options.method ? options.method.toUpperCase() : 'GET',\n onComplete = options.onComplete || function() { },\n xhr = makeXHR(),\n body = options.body || options.parameters;\n\n /** @ignore */\n xhr.onreadystatechange = function() {\n if (xhr.readyState === 4) {\n onComplete(xhr);\n xhr.onreadystatechange = emptyFn;\n }\n };\n\n if (method === 'GET') {\n body = null;\n if (typeof options.parameters === 'string') {\n url = addParamToUrl(url, options.parameters);\n }\n }\n\n xhr.open(method, url, true);\n\n if (method === 'POST' || method === 'PUT') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n }\n\n xhr.send(body);\n return xhr;\n }\n\n fabric.util.request = request;\n})();\n\n\n/**\n * Wrapper around `console.log` (when available)\n * @param {*} [values] Values to log\n */\nfabric.log = function() { };\n\n/**\n * Wrapper around `console.warn` (when available)\n * @param {*} [values] Values to log as a warning\n */\nfabric.warn = function() { };\n\n/* eslint-disable */\nif (typeof console !== 'undefined') {\n\n ['log', 'warn'].forEach(function(methodName) {\n\n if (typeof console[methodName] !== 'undefined' &&\n typeof console[methodName].apply === 'function') {\n\n fabric[methodName] = function() {\n return console[methodName].apply(console, arguments);\n };\n }\n });\n}\n/* eslint-enable */\n\n\n(function() {\n\n function noop() {\n return false;\n }\n\n /**\n * Changes value from one to another within certain period of time, invoking callbacks as value is being changed.\n * @memberOf fabric.util\n * @param {Object} [options] Animation options\n * @param {Function} [options.onChange] Callback; invoked on every value change\n * @param {Function} [options.onComplete] Callback; invoked when value change is completed\n * @param {Number} [options.startValue=0] Starting value\n * @param {Number} [options.endValue=100] Ending value\n * @param {Number} [options.byValue=100] Value to modify the property by\n * @param {Function} [options.easing] Easing function\n * @param {Number} [options.duration=500] Duration of change (in ms)\n */\n function animate(options) {\n\n requestAnimFrame(function(timestamp) {\n options || (options = { });\n\n var start = timestamp || +new Date(),\n duration = options.duration || 500,\n finish = start + duration, time,\n onChange = options.onChange || noop,\n abort = options.abort || noop,\n onComplete = options.onComplete || noop,\n easing = options.easing || function(t, b, c, d) {return -c * Math.cos(t / d * (Math.PI / 2)) + c + b;},\n startValue = 'startValue' in options ? options.startValue : 0,\n endValue = 'endValue' in options ? options.endValue : 100,\n byValue = options.byValue || endValue - startValue;\n\n options.onStart && options.onStart();\n\n (function tick(ticktime) {\n if (abort()) {\n onComplete(endValue, 1, 1);\n return;\n }\n time = ticktime || +new Date();\n var currentTime = time > finish ? duration : (time - start),\n timePerc = currentTime / duration,\n current = easing(currentTime, startValue, byValue, duration),\n valuePerc = Math.abs((current - startValue) / byValue);\n onChange(current, valuePerc, timePerc);\n if (time > finish) {\n options.onComplete && options.onComplete();\n return;\n }\n requestAnimFrame(tick);\n })(start);\n });\n\n }\n\n var _requestAnimFrame = fabric.window.requestAnimationFrame ||\n fabric.window.webkitRequestAnimationFrame ||\n fabric.window.mozRequestAnimationFrame ||\n fabric.window.oRequestAnimationFrame ||\n fabric.window.msRequestAnimationFrame ||\n function(callback) {\n return fabric.window.setTimeout(callback, 1000 / 60);\n };\n\n var _cancelAnimFrame = fabric.window.cancelAnimationFrame || fabric.window.clearTimeout;\n\n /**\n * requestAnimationFrame polyfill based on http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n * In order to get a precise start time, `requestAnimFrame` should be called as an entry into the method\n * @memberOf fabric.util\n * @param {Function} callback Callback to invoke\n * @param {DOMElement} element optional Element to associate with animation\n */\n function requestAnimFrame() {\n return _requestAnimFrame.apply(fabric.window, arguments);\n }\n\n function cancelAnimFrame() {\n return _cancelAnimFrame.apply(fabric.window, arguments);\n }\n\n fabric.util.animate = animate;\n fabric.util.requestAnimFrame = requestAnimFrame;\n fabric.util.cancelAnimFrame = cancelAnimFrame;\n})();\n\n\n(function() {\n // Calculate an in-between color. Returns a \"rgba()\" string.\n // Credit: Edwin Martin \n // http://www.bitstorm.org/jquery/color-animation/jquery.animate-colors.js\n function calculateColor(begin, end, pos) {\n var color = 'rgba('\n + parseInt((begin[0] + pos * (end[0] - begin[0])), 10) + ','\n + parseInt((begin[1] + pos * (end[1] - begin[1])), 10) + ','\n + parseInt((begin[2] + pos * (end[2] - begin[2])), 10);\n\n color += ',' + (begin && end ? parseFloat(begin[3] + pos * (end[3] - begin[3])) : 1);\n color += ')';\n return color;\n }\n\n /**\n * Changes the color from one to another within certain period of time, invoking callbacks as value is being changed.\n * @memberOf fabric.util\n * @param {String} fromColor The starting color in hex or rgb(a) format.\n * @param {String} toColor The starting color in hex or rgb(a) format.\n * @param {Number} [duration] Duration of change (in ms).\n * @param {Object} [options] Animation options\n * @param {Function} [options.onChange] Callback; invoked on every value change\n * @param {Function} [options.onComplete] Callback; invoked when value change is completed\n * @param {Function} [options.colorEasing] Easing function. Note that this function only take two arguments (currentTime, duration). Thus the regular animation easing functions cannot be used.\n */\n function animateColor(fromColor, toColor, duration, options) {\n var startColor = new fabric.Color(fromColor).getSource(),\n endColor = new fabric.Color(toColor).getSource();\n\n options = options || {};\n\n fabric.util.animate(fabric.util.object.extend(options, {\n duration: duration || 500,\n startValue: startColor,\n endValue: endColor,\n byValue: endColor,\n easing: function (currentTime, startValue, byValue, duration) {\n var posValue = options.colorEasing\n ? options.colorEasing(currentTime, duration)\n : 1 - Math.cos(currentTime / duration * (Math.PI / 2));\n return calculateColor(startValue, byValue, posValue);\n }\n }));\n }\n\n fabric.util.animateColor = animateColor;\n\n})();\n\n\n(function() {\n\n function normalize(a, c, p, s) {\n if (a < Math.abs(c)) {\n a = c;\n s = p / 4;\n }\n else {\n //handle the 0/0 case:\n if (c === 0 && a === 0) {\n s = p / (2 * Math.PI) * Math.asin(1);\n }\n else {\n s = p / (2 * Math.PI) * Math.asin(c / a);\n }\n }\n return { a: a, c: c, p: p, s: s };\n }\n\n function elastic(opts, t, d) {\n return opts.a *\n Math.pow(2, 10 * (t -= 1)) *\n Math.sin( (t * d - opts.s) * (2 * Math.PI) / opts.p );\n }\n\n /**\n * Cubic easing out\n * @memberOf fabric.util.ease\n */\n function easeOutCubic(t, b, c, d) {\n return c * ((t = t / d - 1) * t * t + 1) + b;\n }\n\n /**\n * Cubic easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutCubic(t, b, c, d) {\n t /= d / 2;\n if (t < 1) {\n return c / 2 * t * t * t + b;\n }\n return c / 2 * ((t -= 2) * t * t + 2) + b;\n }\n\n /**\n * Quartic easing in\n * @memberOf fabric.util.ease\n */\n function easeInQuart(t, b, c, d) {\n return c * (t /= d) * t * t * t + b;\n }\n\n /**\n * Quartic easing out\n * @memberOf fabric.util.ease\n */\n function easeOutQuart(t, b, c, d) {\n return -c * ((t = t / d - 1) * t * t * t - 1) + b;\n }\n\n /**\n * Quartic easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutQuart(t, b, c, d) {\n t /= d / 2;\n if (t < 1) {\n return c / 2 * t * t * t * t + b;\n }\n return -c / 2 * ((t -= 2) * t * t * t - 2) + b;\n }\n\n /**\n * Quintic easing in\n * @memberOf fabric.util.ease\n */\n function easeInQuint(t, b, c, d) {\n return c * (t /= d) * t * t * t * t + b;\n }\n\n /**\n * Quintic easing out\n * @memberOf fabric.util.ease\n */\n function easeOutQuint(t, b, c, d) {\n return c * ((t = t / d - 1) * t * t * t * t + 1) + b;\n }\n\n /**\n * Quintic easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutQuint(t, b, c, d) {\n t /= d / 2;\n if (t < 1) {\n return c / 2 * t * t * t * t * t + b;\n }\n return c / 2 * ((t -= 2) * t * t * t * t + 2) + b;\n }\n\n /**\n * Sinusoidal easing in\n * @memberOf fabric.util.ease\n */\n function easeInSine(t, b, c, d) {\n return -c * Math.cos(t / d * (Math.PI / 2)) + c + b;\n }\n\n /**\n * Sinusoidal easing out\n * @memberOf fabric.util.ease\n */\n function easeOutSine(t, b, c, d) {\n return c * Math.sin(t / d * (Math.PI / 2)) + b;\n }\n\n /**\n * Sinusoidal easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutSine(t, b, c, d) {\n return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b;\n }\n\n /**\n * Exponential easing in\n * @memberOf fabric.util.ease\n */\n function easeInExpo(t, b, c, d) {\n return (t === 0) ? b : c * Math.pow(2, 10 * (t / d - 1)) + b;\n }\n\n /**\n * Exponential easing out\n * @memberOf fabric.util.ease\n */\n function easeOutExpo(t, b, c, d) {\n return (t === d) ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b;\n }\n\n /**\n * Exponential easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutExpo(t, b, c, d) {\n if (t === 0) {\n return b;\n }\n if (t === d) {\n return b + c;\n }\n t /= d / 2;\n if (t < 1) {\n return c / 2 * Math.pow(2, 10 * (t - 1)) + b;\n }\n return c / 2 * (-Math.pow(2, -10 * --t) + 2) + b;\n }\n\n /**\n * Circular easing in\n * @memberOf fabric.util.ease\n */\n function easeInCirc(t, b, c, d) {\n return -c * (Math.sqrt(1 - (t /= d) * t) - 1) + b;\n }\n\n /**\n * Circular easing out\n * @memberOf fabric.util.ease\n */\n function easeOutCirc(t, b, c, d) {\n return c * Math.sqrt(1 - (t = t / d - 1) * t) + b;\n }\n\n /**\n * Circular easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutCirc(t, b, c, d) {\n t /= d / 2;\n if (t < 1) {\n return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b;\n }\n return c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b;\n }\n\n /**\n * Elastic easing in\n * @memberOf fabric.util.ease\n */\n function easeInElastic(t, b, c, d) {\n var s = 1.70158, p = 0, a = c;\n if (t === 0) {\n return b;\n }\n t /= d;\n if (t === 1) {\n return b + c;\n }\n if (!p) {\n p = d * 0.3;\n }\n var opts = normalize(a, c, p, s);\n return -elastic(opts, t, d) + b;\n }\n\n /**\n * Elastic easing out\n * @memberOf fabric.util.ease\n */\n function easeOutElastic(t, b, c, d) {\n var s = 1.70158, p = 0, a = c;\n if (t === 0) {\n return b;\n }\n t /= d;\n if (t === 1) {\n return b + c;\n }\n if (!p) {\n p = d * 0.3;\n }\n var opts = normalize(a, c, p, s);\n return opts.a * Math.pow(2, -10 * t) * Math.sin((t * d - opts.s) * (2 * Math.PI) / opts.p ) + opts.c + b;\n }\n\n /**\n * Elastic easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutElastic(t, b, c, d) {\n var s = 1.70158, p = 0, a = c;\n if (t === 0) {\n return b;\n }\n t /= d / 2;\n if (t === 2) {\n return b + c;\n }\n if (!p) {\n p = d * (0.3 * 1.5);\n }\n var opts = normalize(a, c, p, s);\n if (t < 1) {\n return -0.5 * elastic(opts, t, d) + b;\n }\n return opts.a * Math.pow(2, -10 * (t -= 1)) *\n Math.sin((t * d - opts.s) * (2 * Math.PI) / opts.p ) * 0.5 + opts.c + b;\n }\n\n /**\n * Backwards easing in\n * @memberOf fabric.util.ease\n */\n function easeInBack(t, b, c, d, s) {\n if (s === undefined) {\n s = 1.70158;\n }\n return c * (t /= d) * t * ((s + 1) * t - s) + b;\n }\n\n /**\n * Backwards easing out\n * @memberOf fabric.util.ease\n */\n function easeOutBack(t, b, c, d, s) {\n if (s === undefined) {\n s = 1.70158;\n }\n return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;\n }\n\n /**\n * Backwards easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutBack(t, b, c, d, s) {\n if (s === undefined) {\n s = 1.70158;\n }\n t /= d / 2;\n if (t < 1) {\n return c / 2 * (t * t * (((s *= (1.525)) + 1) * t - s)) + b;\n }\n return c / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2) + b;\n }\n\n /**\n * Bouncing easing in\n * @memberOf fabric.util.ease\n */\n function easeInBounce(t, b, c, d) {\n return c - easeOutBounce (d - t, 0, c, d) + b;\n }\n\n /**\n * Bouncing easing out\n * @memberOf fabric.util.ease\n */\n function easeOutBounce(t, b, c, d) {\n if ((t /= d) < (1 / 2.75)) {\n return c * (7.5625 * t * t) + b;\n }\n else if (t < (2 / 2.75)) {\n return c * (7.5625 * (t -= (1.5 / 2.75)) * t + 0.75) + b;\n }\n else if (t < (2.5 / 2.75)) {\n return c * (7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375) + b;\n }\n else {\n return c * (7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375) + b;\n }\n }\n\n /**\n * Bouncing easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutBounce(t, b, c, d) {\n if (t < d / 2) {\n return easeInBounce (t * 2, 0, c, d) * 0.5 + b;\n }\n return easeOutBounce(t * 2 - d, 0, c, d) * 0.5 + c * 0.5 + b;\n }\n\n /**\n * Easing functions\n * See Easing Equations by Robert Penner\n * @namespace fabric.util.ease\n */\n fabric.util.ease = {\n\n /**\n * Quadratic easing in\n * @memberOf fabric.util.ease\n */\n easeInQuad: function(t, b, c, d) {\n return c * (t /= d) * t + b;\n },\n\n /**\n * Quadratic easing out\n * @memberOf fabric.util.ease\n */\n easeOutQuad: function(t, b, c, d) {\n return -c * (t /= d) * (t - 2) + b;\n },\n\n /**\n * Quadratic easing in and out\n * @memberOf fabric.util.ease\n */\n easeInOutQuad: function(t, b, c, d) {\n t /= (d / 2);\n if (t < 1) {\n return c / 2 * t * t + b;\n }\n return -c / 2 * ((--t) * (t - 2) - 1) + b;\n },\n\n /**\n * Cubic easing in\n * @memberOf fabric.util.ease\n */\n easeInCubic: function(t, b, c, d) {\n return c * (t /= d) * t * t + b;\n },\n\n easeOutCubic: easeOutCubic,\n easeInOutCubic: easeInOutCubic,\n easeInQuart: easeInQuart,\n easeOutQuart: easeOutQuart,\n easeInOutQuart: easeInOutQuart,\n easeInQuint: easeInQuint,\n easeOutQuint: easeOutQuint,\n easeInOutQuint: easeInOutQuint,\n easeInSine: easeInSine,\n easeOutSine: easeOutSine,\n easeInOutSine: easeInOutSine,\n easeInExpo: easeInExpo,\n easeOutExpo: easeOutExpo,\n easeInOutExpo: easeInOutExpo,\n easeInCirc: easeInCirc,\n easeOutCirc: easeOutCirc,\n easeInOutCirc: easeInOutCirc,\n easeInElastic: easeInElastic,\n easeOutElastic: easeOutElastic,\n easeInOutElastic: easeInOutElastic,\n easeInBack: easeInBack,\n easeOutBack: easeOutBack,\n easeInOutBack: easeInOutBack,\n easeInBounce: easeInBounce,\n easeOutBounce: easeOutBounce,\n easeInOutBounce: easeInOutBounce\n };\n\n})();\n\n\n(function(global) {\n\n 'use strict';\n\n /**\n * @name fabric\n * @namespace\n */\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend,\n clone = fabric.util.object.clone,\n toFixed = fabric.util.toFixed,\n parseUnit = fabric.util.parseUnit,\n multiplyTransformMatrices = fabric.util.multiplyTransformMatrices,\n\n svgValidTagNames = ['path', 'circle', 'polygon', 'polyline', 'ellipse', 'rect', 'line',\n 'image', 'text', 'linearGradient', 'radialGradient', 'stop'],\n svgViewBoxElements = ['symbol', 'image', 'marker', 'pattern', 'view', 'svg'],\n svgInvalidAncestors = ['pattern', 'defs', 'symbol', 'metadata', 'clipPath', 'mask', 'desc'],\n svgValidParents = ['symbol', 'g', 'a', 'svg'],\n\n attributesMap = {\n cx: 'left',\n x: 'left',\n r: 'radius',\n cy: 'top',\n y: 'top',\n display: 'visible',\n visibility: 'visible',\n transform: 'transformMatrix',\n 'fill-opacity': 'fillOpacity',\n 'fill-rule': 'fillRule',\n 'font-family': 'fontFamily',\n 'font-size': 'fontSize',\n 'font-style': 'fontStyle',\n 'font-weight': 'fontWeight',\n 'letter-spacing': 'charSpacing',\n 'paint-order': 'paintFirst',\n 'stroke-dasharray': 'strokeDashArray',\n 'stroke-linecap': 'strokeLineCap',\n 'stroke-linejoin': 'strokeLineJoin',\n 'stroke-miterlimit': 'strokeMiterLimit',\n 'stroke-opacity': 'strokeOpacity',\n 'stroke-width': 'strokeWidth',\n 'text-decoration': 'textDecoration',\n 'text-anchor': 'textAnchor',\n opacity: 'opacity'\n },\n\n colorAttributes = {\n stroke: 'strokeOpacity',\n fill: 'fillOpacity'\n };\n\n fabric.svgValidTagNamesRegEx = getSvgRegex(svgValidTagNames);\n fabric.svgViewBoxElementsRegEx = getSvgRegex(svgViewBoxElements);\n fabric.svgInvalidAncestorsRegEx = getSvgRegex(svgInvalidAncestors);\n fabric.svgValidParentsRegEx = getSvgRegex(svgValidParents);\n\n fabric.cssRules = { };\n fabric.gradientDefs = { };\n\n function normalizeAttr(attr) {\n // transform attribute names\n if (attr in attributesMap) {\n return attributesMap[attr];\n }\n return attr;\n }\n\n function normalizeValue(attr, value, parentAttributes, fontSize) {\n var isArray = Object.prototype.toString.call(value) === '[object Array]',\n parsed;\n\n if ((attr === 'fill' || attr === 'stroke') && value === 'none') {\n value = '';\n }\n else if (attr === 'strokeDashArray') {\n if (value === 'none') {\n value = null;\n }\n else {\n value = value.replace(/,/g, ' ').split(/\\s+/).map(function(n) {\n return parseFloat(n);\n });\n }\n }\n else if (attr === 'transformMatrix') {\n if (parentAttributes && parentAttributes.transformMatrix) {\n value = multiplyTransformMatrices(\n parentAttributes.transformMatrix, fabric.parseTransformAttribute(value));\n }\n else {\n value = fabric.parseTransformAttribute(value);\n }\n }\n else if (attr === 'visible') {\n value = value !== 'none' && value !== 'hidden';\n // display=none on parent element always takes precedence over child element\n if (parentAttributes && parentAttributes.visible === false) {\n value = false;\n }\n }\n else if (attr === 'opacity') {\n value = parseFloat(value);\n if (parentAttributes && typeof parentAttributes.opacity !== 'undefined') {\n value *= parentAttributes.opacity;\n }\n }\n else if (attr === 'textAnchor' /* text-anchor */) {\n value = value === 'start' ? 'left' : value === 'end' ? 'right' : 'center';\n }\n else if (attr === 'charSpacing') {\n // parseUnit returns px and we convert it to em\n parsed = parseUnit(value, fontSize) / fontSize * 1000;\n }\n else if (attr === 'paintFirst') {\n var fillIndex = value.indexOf('fill');\n var strokeIndex = value.indexOf('stroke');\n var value = 'fill';\n if (fillIndex > -1 && strokeIndex > -1 && strokeIndex < fillIndex) {\n value = 'stroke';\n }\n else if (fillIndex === -1 && strokeIndex > -1) {\n value = 'stroke';\n }\n }\n else {\n parsed = isArray ? value.map(parseUnit) : parseUnit(value, fontSize);\n }\n\n return (!isArray && isNaN(parsed) ? value : parsed);\n }\n\n /**\n * @private\n */\n function getSvgRegex(arr) {\n return new RegExp('^(' + arr.join('|') + ')\\\\b', 'i');\n }\n\n /**\n * @private\n * @param {Object} attributes Array of attributes to parse\n */\n function _setStrokeFillOpacity(attributes) {\n for (var attr in colorAttributes) {\n\n if (typeof attributes[colorAttributes[attr]] === 'undefined' || attributes[attr] === '') {\n continue;\n }\n\n if (typeof attributes[attr] === 'undefined') {\n if (!fabric.Object.prototype[attr]) {\n continue;\n }\n attributes[attr] = fabric.Object.prototype[attr];\n }\n\n if (attributes[attr].indexOf('url(') === 0) {\n continue;\n }\n\n var color = new fabric.Color(attributes[attr]);\n attributes[attr] = color.setAlpha(toFixed(color.getAlpha() * attributes[colorAttributes[attr]], 2)).toRgba();\n }\n return attributes;\n }\n\n /**\n * @private\n */\n function _getMultipleNodes(doc, nodeNames) {\n var nodeName, nodeArray = [], nodeList, i, len;\n for (i = 0, len = nodeNames.length; i < len; i++) {\n nodeName = nodeNames[i];\n nodeList = doc.getElementsByTagName(nodeName);\n nodeArray = nodeArray.concat(Array.prototype.slice.call(nodeList));\n }\n return nodeArray;\n }\n\n /**\n * Parses \"transform\" attribute, returning an array of values\n * @static\n * @function\n * @memberOf fabric\n * @param {String} attributeValue String containing attribute value\n * @return {Array} Array of 6 elements representing transformation matrix\n */\n fabric.parseTransformAttribute = (function() {\n function rotateMatrix(matrix, args) {\n var cos = fabric.util.cos(args[0]), sin = fabric.util.sin(args[0]),\n x = 0, y = 0;\n if (args.length === 3) {\n x = args[1];\n y = args[2];\n }\n\n matrix[0] = cos;\n matrix[1] = sin;\n matrix[2] = -sin;\n matrix[3] = cos;\n matrix[4] = x - (cos * x - sin * y);\n matrix[5] = y - (sin * x + cos * y);\n }\n\n function scaleMatrix(matrix, args) {\n var multiplierX = args[0],\n multiplierY = (args.length === 2) ? args[1] : args[0];\n\n matrix[0] = multiplierX;\n matrix[3] = multiplierY;\n }\n\n function skewMatrix(matrix, args, pos) {\n matrix[pos] = Math.tan(fabric.util.degreesToRadians(args[0]));\n }\n\n function translateMatrix(matrix, args) {\n matrix[4] = args[0];\n if (args.length === 2) {\n matrix[5] = args[1];\n }\n }\n\n // identity matrix\n var iMatrix = [\n 1, // a\n 0, // b\n 0, // c\n 1, // d\n 0, // e\n 0 // f\n ],\n\n // == begin transform regexp\n number = fabric.reNum,\n\n commaWsp = '(?:\\\\s+,?\\\\s*|,\\\\s*)',\n\n skewX = '(?:(skewX)\\\\s*\\\\(\\\\s*(' + number + ')\\\\s*\\\\))',\n\n skewY = '(?:(skewY)\\\\s*\\\\(\\\\s*(' + number + ')\\\\s*\\\\))',\n\n rotate = '(?:(rotate)\\\\s*\\\\(\\\\s*(' + number + ')(?:' +\n commaWsp + '(' + number + ')' +\n commaWsp + '(' + number + '))?\\\\s*\\\\))',\n\n scale = '(?:(scale)\\\\s*\\\\(\\\\s*(' + number + ')(?:' +\n commaWsp + '(' + number + '))?\\\\s*\\\\))',\n\n translate = '(?:(translate)\\\\s*\\\\(\\\\s*(' + number + ')(?:' +\n commaWsp + '(' + number + '))?\\\\s*\\\\))',\n\n matrix = '(?:(matrix)\\\\s*\\\\(\\\\s*' +\n '(' + number + ')' + commaWsp +\n '(' + number + ')' + commaWsp +\n '(' + number + ')' + commaWsp +\n '(' + number + ')' + commaWsp +\n '(' + number + ')' + commaWsp +\n '(' + number + ')' +\n '\\\\s*\\\\))',\n\n transform = '(?:' +\n matrix + '|' +\n translate + '|' +\n scale + '|' +\n rotate + '|' +\n skewX + '|' +\n skewY +\n ')',\n\n transforms = '(?:' + transform + '(?:' + commaWsp + '*' + transform + ')*' + ')',\n\n transformList = '^\\\\s*(?:' + transforms + '?)\\\\s*$',\n\n // http://www.w3.org/TR/SVG/coords.html#TransformAttribute\n reTransformList = new RegExp(transformList),\n // == end transform regexp\n\n reTransform = new RegExp(transform, 'g');\n\n return function(attributeValue) {\n\n // start with identity matrix\n var matrix = iMatrix.concat(),\n matrices = [];\n\n // return if no argument was given or\n // an argument does not match transform attribute regexp\n if (!attributeValue || (attributeValue && !reTransformList.test(attributeValue))) {\n return matrix;\n }\n\n attributeValue.replace(reTransform, function(match) {\n\n var m = new RegExp(transform).exec(match).filter(function (match) {\n // match !== '' && match != null\n return (!!match);\n }),\n operation = m[1],\n args = m.slice(2).map(parseFloat);\n\n switch (operation) {\n case 'translate':\n translateMatrix(matrix, args);\n break;\n case 'rotate':\n args[0] = fabric.util.degreesToRadians(args[0]);\n rotateMatrix(matrix, args);\n break;\n case 'scale':\n scaleMatrix(matrix, args);\n break;\n case 'skewX':\n skewMatrix(matrix, args, 2);\n break;\n case 'skewY':\n skewMatrix(matrix, args, 1);\n break;\n case 'matrix':\n matrix = args;\n break;\n }\n\n // snapshot current matrix into matrices array\n matrices.push(matrix.concat());\n // reset\n matrix = iMatrix.concat();\n });\n\n var combinedMatrix = matrices[0];\n while (matrices.length > 1) {\n matrices.shift();\n combinedMatrix = fabric.util.multiplyTransformMatrices(combinedMatrix, matrices[0]);\n }\n return combinedMatrix;\n };\n })();\n\n /**\n * @private\n */\n function parseStyleString(style, oStyle) {\n var attr, value;\n style.replace(/;\\s*$/, '').split(';').forEach(function (chunk) {\n var pair = chunk.split(':');\n\n attr = pair[0].trim().toLowerCase();\n value = pair[1].trim();\n\n oStyle[attr] = value;\n });\n }\n\n /**\n * @private\n */\n function parseStyleObject(style, oStyle) {\n var attr, value;\n for (var prop in style) {\n if (typeof style[prop] === 'undefined') {\n continue;\n }\n\n attr = prop.toLowerCase();\n value = style[prop];\n\n oStyle[attr] = value;\n }\n }\n\n /**\n * @private\n */\n function getGlobalStylesForElement(element, svgUid) {\n var styles = { };\n for (var rule in fabric.cssRules[svgUid]) {\n if (elementMatchesRule(element, rule.split(' '))) {\n for (var property in fabric.cssRules[svgUid][rule]) {\n styles[property] = fabric.cssRules[svgUid][rule][property];\n }\n }\n }\n return styles;\n }\n\n /**\n * @private\n */\n function elementMatchesRule(element, selectors) {\n var firstMatching, parentMatching = true;\n //start from rightmost selector.\n firstMatching = selectorMatches(element, selectors.pop());\n if (firstMatching && selectors.length) {\n parentMatching = doesSomeParentMatch(element, selectors);\n }\n return firstMatching && parentMatching && (selectors.length === 0);\n }\n\n function doesSomeParentMatch(element, selectors) {\n var selector, parentMatching = true;\n while (element.parentNode && element.parentNode.nodeType === 1 && selectors.length) {\n if (parentMatching) {\n selector = selectors.pop();\n }\n element = element.parentNode;\n parentMatching = selectorMatches(element, selector);\n }\n return selectors.length === 0;\n }\n\n /**\n * @private\n */\n function selectorMatches(element, selector) {\n var nodeName = element.nodeName,\n classNames = element.getAttribute('class'),\n id = element.getAttribute('id'), matcher, i;\n // i check if a selector matches slicing away part from it.\n // if i get empty string i should match\n matcher = new RegExp('^' + nodeName, 'i');\n selector = selector.replace(matcher, '');\n if (id && selector.length) {\n matcher = new RegExp('#' + id + '(?![a-zA-Z\\\\-]+)', 'i');\n selector = selector.replace(matcher, '');\n }\n if (classNames && selector.length) {\n classNames = classNames.split(' ');\n for (i = classNames.length; i--;) {\n matcher = new RegExp('\\\\.' + classNames[i] + '(?![a-zA-Z\\\\-]+)', 'i');\n selector = selector.replace(matcher, '');\n }\n }\n return selector.length === 0;\n }\n\n /**\n * @private\n * to support IE8 missing getElementById on SVGdocument\n */\n function elementById(doc, id) {\n var el;\n doc.getElementById && (el = doc.getElementById(id));\n if (el) {\n return el;\n }\n var node, i, len, nodelist = doc.getElementsByTagName('*');\n for (i = 0, len = nodelist.length; i < len; i++) {\n node = nodelist[i];\n if (id === node.getAttribute('id')) {\n return node;\n }\n }\n }\n\n /**\n * @private\n */\n function parseUseDirectives(doc) {\n var nodelist = _getMultipleNodes(doc, ['use', 'svg:use']), i = 0;\n\n while (nodelist.length && i < nodelist.length) {\n var el = nodelist[i],\n xlink = (el.getAttribute('xlink:href') || el.getAttribute('href')).substr(1),\n x = el.getAttribute('x') || 0,\n y = el.getAttribute('y') || 0,\n el2 = elementById(doc, xlink).cloneNode(true),\n currentTrans = (el2.getAttribute('transform') || '') + ' translate(' + x + ', ' + y + ')',\n parentNode, oldLength = nodelist.length, attr, j, attrs, len;\n\n applyViewboxTransform(el2);\n if (/^svg$/i.test(el2.nodeName)) {\n var el3 = el2.ownerDocument.createElement('g');\n for (j = 0, attrs = el2.attributes, len = attrs.length; j < len; j++) {\n attr = attrs.item(j);\n el3.setAttribute(attr.nodeName, attr.nodeValue);\n }\n // el2.firstChild != null\n while (el2.firstChild) {\n el3.appendChild(el2.firstChild);\n }\n el2 = el3;\n }\n\n for (j = 0, attrs = el.attributes, len = attrs.length; j < len; j++) {\n attr = attrs.item(j);\n if (attr.nodeName === 'x' || attr.nodeName === 'y' ||\n attr.nodeName === 'xlink:href' || attr.nodeName === 'href') {\n continue;\n }\n\n if (attr.nodeName === 'transform') {\n currentTrans = attr.nodeValue + ' ' + currentTrans;\n }\n else {\n el2.setAttribute(attr.nodeName, attr.nodeValue);\n }\n }\n\n el2.setAttribute('transform', currentTrans);\n el2.setAttribute('instantiated_by_use', '1');\n el2.removeAttribute('id');\n parentNode = el.parentNode;\n parentNode.replaceChild(el2, el);\n // some browsers do not shorten nodelist after replaceChild (IE8)\n if (nodelist.length === oldLength) {\n i++;\n }\n }\n }\n\n // http://www.w3.org/TR/SVG/coords.html#ViewBoxAttribute\n // matches, e.g.: +14.56e-12, etc.\n var reViewBoxAttrValue = new RegExp(\n '^' +\n '\\\\s*(' + fabric.reNum + '+)\\\\s*,?' +\n '\\\\s*(' + fabric.reNum + '+)\\\\s*,?' +\n '\\\\s*(' + fabric.reNum + '+)\\\\s*,?' +\n '\\\\s*(' + fabric.reNum + '+)\\\\s*' +\n '$'\n );\n\n /**\n * Add a element that envelop all child elements and makes the viewbox transformMatrix descend on all elements\n */\n function applyViewboxTransform(element) {\n\n var viewBoxAttr = element.getAttribute('viewBox'),\n scaleX = 1,\n scaleY = 1,\n minX = 0,\n minY = 0,\n viewBoxWidth, viewBoxHeight, matrix, el,\n widthAttr = element.getAttribute('width'),\n heightAttr = element.getAttribute('height'),\n x = element.getAttribute('x') || 0,\n y = element.getAttribute('y') || 0,\n preserveAspectRatio = element.getAttribute('preserveAspectRatio') || '',\n missingViewBox = (!viewBoxAttr || !fabric.svgViewBoxElementsRegEx.test(element.nodeName)\n || !(viewBoxAttr = viewBoxAttr.match(reViewBoxAttrValue))),\n missingDimAttr = (!widthAttr || !heightAttr || widthAttr === '100%' || heightAttr === '100%'),\n toBeParsed = missingViewBox && missingDimAttr,\n parsedDim = { }, translateMatrix = '', widthDiff = 0, heightDiff = 0;\n\n parsedDim.width = 0;\n parsedDim.height = 0;\n parsedDim.toBeParsed = toBeParsed;\n\n if (toBeParsed) {\n return parsedDim;\n }\n\n if (missingViewBox) {\n parsedDim.width = parseUnit(widthAttr);\n parsedDim.height = parseUnit(heightAttr);\n return parsedDim;\n }\n\n minX = -parseFloat(viewBoxAttr[1]);\n minY = -parseFloat(viewBoxAttr[2]);\n viewBoxWidth = parseFloat(viewBoxAttr[3]);\n viewBoxHeight = parseFloat(viewBoxAttr[4]);\n\n if (!missingDimAttr) {\n parsedDim.width = parseUnit(widthAttr);\n parsedDim.height = parseUnit(heightAttr);\n scaleX = parsedDim.width / viewBoxWidth;\n scaleY = parsedDim.height / viewBoxHeight;\n }\n else {\n parsedDim.width = viewBoxWidth;\n parsedDim.height = viewBoxHeight;\n }\n\n // default is to preserve aspect ratio\n preserveAspectRatio = fabric.util.parsePreserveAspectRatioAttribute(preserveAspectRatio);\n if (preserveAspectRatio.alignX !== 'none') {\n //translate all container for the effect of Mid, Min, Max\n if (preserveAspectRatio.meetOrSlice === 'meet') {\n scaleY = scaleX = (scaleX > scaleY ? scaleY : scaleX);\n // calculate additional translation to move the viewbox\n }\n if (preserveAspectRatio.meetOrSlice === 'slice') {\n scaleY = scaleX = (scaleX > scaleY ? scaleX : scaleY);\n // calculate additional translation to move the viewbox\n }\n widthDiff = parsedDim.width - viewBoxWidth * scaleX;\n heightDiff = parsedDim.height - viewBoxHeight * scaleX;\n if (preserveAspectRatio.alignX === 'Mid') {\n widthDiff /= 2;\n }\n if (preserveAspectRatio.alignY === 'Mid') {\n heightDiff /= 2;\n }\n if (preserveAspectRatio.alignX === 'Min') {\n widthDiff = 0;\n }\n if (preserveAspectRatio.alignY === 'Min') {\n heightDiff = 0;\n }\n }\n\n if (scaleX === 1 && scaleY === 1 && minX === 0 && minY === 0 && x === 0 && y === 0) {\n return parsedDim;\n }\n\n if (x || y) {\n translateMatrix = ' translate(' + parseUnit(x) + ' ' + parseUnit(y) + ') ';\n }\n\n matrix = translateMatrix + ' matrix(' + scaleX +\n ' 0' +\n ' 0 ' +\n scaleY + ' ' +\n (minX * scaleX + widthDiff) + ' ' +\n (minY * scaleY + heightDiff) + ') ';\n\n if (element.nodeName === 'svg') {\n el = element.ownerDocument.createElement('g');\n // element.firstChild != null\n while (element.firstChild) {\n el.appendChild(element.firstChild);\n }\n element.appendChild(el);\n }\n else {\n el = element;\n matrix = el.getAttribute('transform') + matrix;\n }\n\n el.setAttribute('transform', matrix);\n return parsedDim;\n }\n\n function hasAncestorWithNodeName(element, nodeName) {\n while (element && (element = element.parentNode)) {\n if (element.nodeName && nodeName.test(element.nodeName.replace('svg:', ''))\n && !element.getAttribute('instantiated_by_use')) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Parses an SVG document, converts it to an array of corresponding fabric.* instances and passes them to a callback\n * @static\n * @function\n * @memberOf fabric\n * @param {SVGDocument} doc SVG document to parse\n * @param {Function} callback Callback to call when parsing is finished;\n * It's being passed an array of elements (parsed from a document).\n * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created.\n * @param {Object} [parsingOptions] options for parsing document\n * @param {String} [parsingOptions.crossOrigin] crossOrigin settings\n */\n fabric.parseSVGDocument = function(doc, callback, reviver, parsingOptions) {\n if (!doc) {\n return;\n }\n\n parseUseDirectives(doc);\n\n var svgUid = fabric.Object.__uid++, i, len,\n options = applyViewboxTransform(doc),\n descendants = fabric.util.toArray(doc.getElementsByTagName('*'));\n options.crossOrigin = parsingOptions && parsingOptions.crossOrigin;\n options.svgUid = svgUid;\n\n if (descendants.length === 0 && fabric.isLikelyNode) {\n // we're likely in node, where \"o3-xml\" library fails to gEBTN(\"*\")\n // https://github.com/ajaxorg/node-o3-xml/issues/21\n descendants = doc.selectNodes('//*[name(.)!=\"svg\"]');\n var arr = [];\n for (i = 0, len = descendants.length; i < len; i++) {\n arr[i] = descendants[i];\n }\n descendants = arr;\n }\n\n var elements = descendants.filter(function(el) {\n applyViewboxTransform(el);\n return fabric.svgValidTagNamesRegEx.test(el.nodeName.replace('svg:', '')) &&\n !hasAncestorWithNodeName(el, fabric.svgInvalidAncestorsRegEx); // http://www.w3.org/TR/SVG/struct.html#DefsElement\n });\n\n if (!elements || (elements && !elements.length)) {\n callback && callback([], {});\n return;\n }\n\n fabric.gradientDefs[svgUid] = fabric.getGradientDefs(doc);\n fabric.cssRules[svgUid] = fabric.getCSSRules(doc);\n // Precedence of rules: style > class > attribute\n fabric.parseElements(elements, function(instances, elements) {\n if (callback) {\n callback(instances, options, elements, descendants);\n }\n }, clone(options), reviver, parsingOptions);\n };\n\n var reFontDeclaration = new RegExp(\n '(normal|italic)?\\\\s*(normal|small-caps)?\\\\s*' +\n '(normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900)?\\\\s*(' +\n fabric.reNum +\n '(?:px|cm|mm|em|pt|pc|in)*)(?:\\\\/(normal|' + fabric.reNum + '))?\\\\s+(.*)');\n\n extend(fabric, {\n /**\n * Parses a short font declaration, building adding its properties to a style object\n * @static\n * @function\n * @memberOf fabric\n * @param {String} value font declaration\n * @param {Object} oStyle definition\n */\n parseFontDeclaration: function(value, oStyle) {\n var match = value.match(reFontDeclaration);\n\n if (!match) {\n return;\n }\n var fontStyle = match[1],\n // font variant is not used\n // fontVariant = match[2],\n fontWeight = match[3],\n fontSize = match[4],\n lineHeight = match[5],\n fontFamily = match[6];\n\n if (fontStyle) {\n oStyle.fontStyle = fontStyle;\n }\n if (fontWeight) {\n oStyle.fontWeight = isNaN(parseFloat(fontWeight)) ? fontWeight : parseFloat(fontWeight);\n }\n if (fontSize) {\n oStyle.fontSize = parseUnit(fontSize);\n }\n if (fontFamily) {\n oStyle.fontFamily = fontFamily;\n }\n if (lineHeight) {\n oStyle.lineHeight = lineHeight === 'normal' ? 1 : lineHeight;\n }\n },\n\n /**\n * Parses an SVG document, returning all of the gradient declarations found in it\n * @static\n * @function\n * @memberOf fabric\n * @param {SVGDocument} doc SVG document to parse\n * @return {Object} Gradient definitions; key corresponds to element id, value -- to gradient definition element\n */\n getGradientDefs: function(doc) {\n var tagArray = [\n 'linearGradient',\n 'radialGradient',\n 'svg:linearGradient',\n 'svg:radialGradient'],\n elList = _getMultipleNodes(doc, tagArray),\n el, j = 0, id, xlink,\n gradientDefs = { }, idsToXlinkMap = { };\n j = elList.length;\n\n while (j--) {\n el = elList[j];\n xlink = el.getAttribute('xlink:href');\n id = el.getAttribute('id');\n if (xlink) {\n idsToXlinkMap[id] = xlink.substr(1);\n }\n gradientDefs[id] = el;\n }\n\n for (id in idsToXlinkMap) {\n var el2 = gradientDefs[idsToXlinkMap[id]].cloneNode(true);\n el = gradientDefs[id];\n while (el2.firstChild) {\n el.appendChild(el2.firstChild);\n }\n }\n return gradientDefs;\n },\n\n /**\n * Returns an object of attributes' name/value, given element and an array of attribute names;\n * Parses parent \"g\" nodes recursively upwards.\n * @static\n * @memberOf fabric\n * @param {DOMElement} element Element to parse\n * @param {Array} attributes Array of attributes to parse\n * @return {Object} object containing parsed attributes' names/values\n */\n parseAttributes: function(element, attributes, svgUid) {\n\n if (!element) {\n return;\n }\n\n var value,\n parentAttributes = { },\n fontSize;\n\n if (typeof svgUid === 'undefined') {\n svgUid = element.getAttribute('svgUid');\n }\n // if there's a parent container (`g` or `a` or `symbol` node), parse its attributes recursively upwards\n if (element.parentNode && fabric.svgValidParentsRegEx.test(element.parentNode.nodeName)) {\n parentAttributes = fabric.parseAttributes(element.parentNode, attributes, svgUid);\n }\n fontSize = (parentAttributes && parentAttributes.fontSize ) ||\n element.getAttribute('font-size') || fabric.Text.DEFAULT_SVG_FONT_SIZE;\n\n var ownAttributes = attributes.reduce(function(memo, attr) {\n value = element.getAttribute(attr);\n if (value) { // eslint-disable-line\n memo[attr] = value;\n }\n return memo;\n }, { });\n // add values parsed from style, which take precedence over attributes\n // (see: http://www.w3.org/TR/SVG/styling.html#UsingPresentationAttributes)\n ownAttributes = extend(ownAttributes,\n extend(getGlobalStylesForElement(element, svgUid), fabric.parseStyleAttribute(element)));\n\n var normalizedAttr, normalizedValue, normalizedStyle = {};\n for (var attr in ownAttributes) {\n normalizedAttr = normalizeAttr(attr);\n normalizedValue = normalizeValue(normalizedAttr, ownAttributes[attr], parentAttributes, fontSize);\n normalizedStyle[normalizedAttr] = normalizedValue;\n }\n if (normalizedStyle && normalizedStyle.font) {\n fabric.parseFontDeclaration(normalizedStyle.font, normalizedStyle);\n }\n var mergedAttrs = extend(parentAttributes, normalizedStyle);\n return fabric.svgValidParentsRegEx.test(element.nodeName) ? mergedAttrs : _setStrokeFillOpacity(mergedAttrs);\n },\n\n /**\n * Transforms an array of svg elements to corresponding fabric.* instances\n * @static\n * @memberOf fabric\n * @param {Array} elements Array of elements to parse\n * @param {Function} callback Being passed an array of fabric instances (transformed from SVG elements)\n * @param {Object} [options] Options object\n * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created.\n */\n parseElements: function(elements, callback, options, reviver, parsingOptions) {\n new fabric.ElementsParser(elements, callback, options, reviver, parsingOptions).parse();\n },\n\n /**\n * Parses \"style\" attribute, retuning an object with values\n * @static\n * @memberOf fabric\n * @param {SVGElement} element Element to parse\n * @return {Object} Objects with values parsed from style attribute of an element\n */\n parseStyleAttribute: function(element) {\n var oStyle = { },\n style = element.getAttribute('style');\n\n if (!style) {\n return oStyle;\n }\n\n if (typeof style === 'string') {\n parseStyleString(style, oStyle);\n }\n else {\n parseStyleObject(style, oStyle);\n }\n\n return oStyle;\n },\n\n /**\n * Parses \"points\" attribute, returning an array of values\n * @static\n * @memberOf fabric\n * @param {String} points points attribute string\n * @return {Array} array of points\n */\n parsePointsAttribute: function(points) {\n\n // points attribute is required and must not be empty\n if (!points) {\n return null;\n }\n\n // replace commas with whitespace and remove bookending whitespace\n points = points.replace(/,/g, ' ').trim();\n\n points = points.split(/\\s+/);\n var parsedPoints = [], i, len;\n\n for (i = 0, len = points.length; i < len; i += 2) {\n parsedPoints.push({\n x: parseFloat(points[i]),\n y: parseFloat(points[i + 1])\n });\n }\n\n // odd number of points is an error\n // if (parsedPoints.length % 2 !== 0) {\n // return null;\n // }\n\n return parsedPoints;\n },\n\n /**\n * Returns CSS rules for a given SVG document\n * @static\n * @function\n * @memberOf fabric\n * @param {SVGDocument} doc SVG document to parse\n * @return {Object} CSS rules of this document\n */\n getCSSRules: function(doc) {\n var styles = doc.getElementsByTagName('style'), i, len,\n allRules = { }, rules;\n\n // very crude parsing of style contents\n for (i = 0, len = styles.length; i < len; i++) {\n // IE9 doesn't support textContent, but provides text instead.\n var styleContents = styles[i].textContent || styles[i].text;\n\n // remove comments\n styleContents = styleContents.replace(/\\/\\*[\\s\\S]*?\\*\\//g, '');\n if (styleContents.trim() === '') {\n continue;\n }\n rules = styleContents.match(/[^{]*\\{[\\s\\S]*?\\}/g);\n rules = rules.map(function(rule) { return rule.trim(); });\n // eslint-disable-next-line no-loop-func\n rules.forEach(function(rule) {\n\n var match = rule.match(/([\\s\\S]*?)\\s*\\{([^}]*)\\}/),\n ruleObj = { }, declaration = match[2].trim(),\n propertyValuePairs = declaration.replace(/;$/, '').split(/\\s*;\\s*/);\n\n for (i = 0, len = propertyValuePairs.length; i < len; i++) {\n var pair = propertyValuePairs[i].split(/\\s*:\\s*/),\n property = pair[0],\n value = pair[1];\n ruleObj[property] = value;\n }\n rule = match[1];\n rule.split(',').forEach(function(_rule) {\n _rule = _rule.replace(/^svg/i, '').trim();\n if (_rule === '') {\n return;\n }\n if (allRules[_rule]) {\n fabric.util.object.extend(allRules[_rule], ruleObj);\n }\n else {\n allRules[_rule] = fabric.util.object.clone(ruleObj);\n }\n });\n });\n }\n return allRules;\n },\n\n /**\n * Takes url corresponding to an SVG document, and parses it into a set of fabric objects.\n * Note that SVG is fetched via XMLHttpRequest, so it needs to conform to SOP (Same Origin Policy)\n * @memberOf fabric\n * @param {String} url\n * @param {Function} callback\n * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created.\n * @param {Object} [options] Object containing options for parsing\n * @param {String} [options.crossOrigin] crossOrigin crossOrigin setting to use for external resources\n */\n loadSVGFromURL: function(url, callback, reviver, options) {\n\n url = url.replace(/^\\n\\s*/, '').trim();\n new fabric.util.request(url, {\n method: 'get',\n onComplete: onComplete\n });\n\n function onComplete(r) {\n\n var xml = r.responseXML;\n if (xml && !xml.documentElement && fabric.window.ActiveXObject && r.responseText) {\n xml = new ActiveXObject('Microsoft.XMLDOM');\n xml.async = 'false';\n //IE chokes on DOCTYPE\n xml.loadXML(r.responseText.replace(//i, ''));\n }\n if (!xml || !xml.documentElement) {\n callback && callback(null);\n }\n\n fabric.parseSVGDocument(xml.documentElement, function (results, _options, elements, allElements) {\n callback && callback(results, _options, elements, allElements);\n }, reviver, options);\n }\n },\n\n /**\n * Takes string corresponding to an SVG document, and parses it into a set of fabric objects\n * @memberOf fabric\n * @param {String} string\n * @param {Function} callback\n * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created.\n * @param {Object} [options] Object containing options for parsing\n * @param {String} [options.crossOrigin] crossOrigin crossOrigin setting to use for external resources\n */\n loadSVGFromString: function(string, callback, reviver, options) {\n string = string.trim();\n var doc;\n if (typeof DOMParser !== 'undefined') {\n var parser = new DOMParser();\n if (parser && parser.parseFromString) {\n doc = parser.parseFromString(string, 'text/xml');\n }\n }\n else if (fabric.window.ActiveXObject) {\n doc = new ActiveXObject('Microsoft.XMLDOM');\n doc.async = 'false';\n // IE chokes on DOCTYPE\n doc.loadXML(string.replace(//i, ''));\n }\n\n fabric.parseSVGDocument(doc.documentElement, function (results, _options, elements, allElements) {\n callback(results, _options, elements, allElements);\n }, reviver, options);\n }\n });\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\nfabric.ElementsParser = function(elements, callback, options, reviver, parsingOptions) {\n this.elements = elements;\n this.callback = callback;\n this.options = options;\n this.reviver = reviver;\n this.svgUid = (options && options.svgUid) || 0;\n this.parsingOptions = parsingOptions;\n this.regexUrl = /^url\\(['\"]?#([^'\"]+)['\"]?\\)/g;\n};\n\nfabric.ElementsParser.prototype.parse = function() {\n this.instances = new Array(this.elements.length);\n this.numElements = this.elements.length;\n\n this.createObjects();\n};\n\nfabric.ElementsParser.prototype.createObjects = function() {\n for (var i = 0, len = this.elements.length; i < len; i++) {\n this.elements[i].setAttribute('svgUid', this.svgUid);\n (function(_obj, i) {\n setTimeout(function() {\n _obj.createObject(_obj.elements[i], i);\n }, 0);\n })(this, i);\n }\n};\n\nfabric.ElementsParser.prototype.createObject = function(el, index) {\n var klass = fabric[fabric.util.string.capitalize(el.tagName.replace('svg:', ''))];\n if (klass && klass.fromElement) {\n try {\n this._createObject(klass, el, index);\n }\n catch (err) {\n fabric.log(err);\n }\n }\n else {\n this.checkIfDone();\n }\n};\n\nfabric.ElementsParser.prototype._createObject = function(klass, el, index) {\n klass.fromElement(el, this.createCallback(index, el), this.options);\n};\n\nfabric.ElementsParser.prototype.createCallback = function(index, el) {\n var _this = this;\n return function(obj) {\n var _options;\n _this.resolveGradient(obj, 'fill');\n _this.resolveGradient(obj, 'stroke');\n if (obj instanceof fabric.Image) {\n _options = obj.parsePreserveAspectRatioAttribute(el);\n }\n obj._removeTransformMatrix(_options);\n _this.reviver && _this.reviver(el, obj);\n _this.instances[index] = obj;\n _this.checkIfDone();\n };\n};\n\nfabric.ElementsParser.prototype.resolveGradient = function(obj, property) {\n\n var instanceFillValue = obj[property];\n if (!(/^url\\(/).test(instanceFillValue)) {\n return;\n }\n var gradientId = this.regexUrl.exec(instanceFillValue)[1];\n this.regexUrl.lastIndex = 0;\n if (fabric.gradientDefs[this.svgUid][gradientId]) {\n obj.set(property,\n fabric.Gradient.fromElement(fabric.gradientDefs[this.svgUid][gradientId], obj));\n }\n};\n\nfabric.ElementsParser.prototype.checkIfDone = function() {\n if (--this.numElements === 0) {\n this.instances = this.instances.filter(function(el) {\n // eslint-disable-next-line no-eq-null, eqeqeq\n return el != null;\n });\n this.callback(this.instances, this.elements);\n }\n};\n\n\n(function(global) {\n\n 'use strict';\n\n /* Adaptation of work of Kevin Lindsey (kevin@kevlindev.com) */\n\n var fabric = global.fabric || (global.fabric = { });\n\n if (fabric.Point) {\n fabric.warn('fabric.Point is already defined');\n return;\n }\n\n fabric.Point = Point;\n\n /**\n * Point class\n * @class fabric.Point\n * @memberOf fabric\n * @constructor\n * @param {Number} x\n * @param {Number} y\n * @return {fabric.Point} thisArg\n */\n function Point(x, y) {\n this.x = x;\n this.y = y;\n }\n\n Point.prototype = /** @lends fabric.Point.prototype */ {\n\n type: 'point',\n\n constructor: Point,\n\n /**\n * Adds another point to this one and returns another one\n * @param {fabric.Point} that\n * @return {fabric.Point} new Point instance with added values\n */\n add: function (that) {\n return new Point(this.x + that.x, this.y + that.y);\n },\n\n /**\n * Adds another point to this one\n * @param {fabric.Point} that\n * @return {fabric.Point} thisArg\n * @chainable\n */\n addEquals: function (that) {\n this.x += that.x;\n this.y += that.y;\n return this;\n },\n\n /**\n * Adds value to this point and returns a new one\n * @param {Number} scalar\n * @return {fabric.Point} new Point with added value\n */\n scalarAdd: function (scalar) {\n return new Point(this.x + scalar, this.y + scalar);\n },\n\n /**\n * Adds value to this point\n * @param {Number} scalar\n * @return {fabric.Point} thisArg\n * @chainable\n */\n scalarAddEquals: function (scalar) {\n this.x += scalar;\n this.y += scalar;\n return this;\n },\n\n /**\n * Subtracts another point from this point and returns a new one\n * @param {fabric.Point} that\n * @return {fabric.Point} new Point object with subtracted values\n */\n subtract: function (that) {\n return new Point(this.x - that.x, this.y - that.y);\n },\n\n /**\n * Subtracts another point from this point\n * @param {fabric.Point} that\n * @return {fabric.Point} thisArg\n * @chainable\n */\n subtractEquals: function (that) {\n this.x -= that.x;\n this.y -= that.y;\n return this;\n },\n\n /**\n * Subtracts value from this point and returns a new one\n * @param {Number} scalar\n * @return {fabric.Point}\n */\n scalarSubtract: function (scalar) {\n return new Point(this.x - scalar, this.y - scalar);\n },\n\n /**\n * Subtracts value from this point\n * @param {Number} scalar\n * @return {fabric.Point} thisArg\n * @chainable\n */\n scalarSubtractEquals: function (scalar) {\n this.x -= scalar;\n this.y -= scalar;\n return this;\n },\n\n /**\n * Multiplies this point by a value and returns a new one\n * TODO: rename in scalarMultiply in 2.0\n * @param {Number} scalar\n * @return {fabric.Point}\n */\n multiply: function (scalar) {\n return new Point(this.x * scalar, this.y * scalar);\n },\n\n /**\n * Multiplies this point by a value\n * TODO: rename in scalarMultiplyEquals in 2.0\n * @param {Number} scalar\n * @return {fabric.Point} thisArg\n * @chainable\n */\n multiplyEquals: function (scalar) {\n this.x *= scalar;\n this.y *= scalar;\n return this;\n },\n\n /**\n * Divides this point by a value and returns a new one\n * TODO: rename in scalarDivide in 2.0\n * @param {Number} scalar\n * @return {fabric.Point}\n */\n divide: function (scalar) {\n return new Point(this.x / scalar, this.y / scalar);\n },\n\n /**\n * Divides this point by a value\n * TODO: rename in scalarDivideEquals in 2.0\n * @param {Number} scalar\n * @return {fabric.Point} thisArg\n * @chainable\n */\n divideEquals: function (scalar) {\n this.x /= scalar;\n this.y /= scalar;\n return this;\n },\n\n /**\n * Returns true if this point is equal to another one\n * @param {fabric.Point} that\n * @return {Boolean}\n */\n eq: function (that) {\n return (this.x === that.x && this.y === that.y);\n },\n\n /**\n * Returns true if this point is less than another one\n * @param {fabric.Point} that\n * @return {Boolean}\n */\n lt: function (that) {\n return (this.x < that.x && this.y < that.y);\n },\n\n /**\n * Returns true if this point is less than or equal to another one\n * @param {fabric.Point} that\n * @return {Boolean}\n */\n lte: function (that) {\n return (this.x <= that.x && this.y <= that.y);\n },\n\n /**\n\n * Returns true if this point is greater another one\n * @param {fabric.Point} that\n * @return {Boolean}\n */\n gt: function (that) {\n return (this.x > that.x && this.y > that.y);\n },\n\n /**\n * Returns true if this point is greater than or equal to another one\n * @param {fabric.Point} that\n * @return {Boolean}\n */\n gte: function (that) {\n return (this.x >= that.x && this.y >= that.y);\n },\n\n /**\n * Returns new point which is the result of linear interpolation with this one and another one\n * @param {fabric.Point} that\n * @param {Number} t , position of interpolation, between 0 and 1 default 0.5\n * @return {fabric.Point}\n */\n lerp: function (that, t) {\n if (typeof t === 'undefined') {\n t = 0.5;\n }\n t = Math.max(Math.min(1, t), 0);\n return new Point(this.x + (that.x - this.x) * t, this.y + (that.y - this.y) * t);\n },\n\n /**\n * Returns distance from this point and another one\n * @param {fabric.Point} that\n * @return {Number}\n */\n distanceFrom: function (that) {\n var dx = this.x - that.x,\n dy = this.y - that.y;\n return Math.sqrt(dx * dx + dy * dy);\n },\n\n /**\n * Returns the point between this point and another one\n * @param {fabric.Point} that\n * @return {fabric.Point}\n */\n midPointFrom: function (that) {\n return this.lerp(that);\n },\n\n /**\n * Returns a new point which is the min of this and another one\n * @param {fabric.Point} that\n * @return {fabric.Point}\n */\n min: function (that) {\n return new Point(Math.min(this.x, that.x), Math.min(this.y, that.y));\n },\n\n /**\n * Returns a new point which is the max of this and another one\n * @param {fabric.Point} that\n * @return {fabric.Point}\n */\n max: function (that) {\n return new Point(Math.max(this.x, that.x), Math.max(this.y, that.y));\n },\n\n /**\n * Returns string representation of this point\n * @return {String}\n */\n toString: function () {\n return this.x + ',' + this.y;\n },\n\n /**\n * Sets x/y of this point\n * @param {Number} x\n * @param {Number} y\n * @chainable\n */\n setXY: function (x, y) {\n this.x = x;\n this.y = y;\n return this;\n },\n\n /**\n * Sets x of this point\n * @param {Number} x\n * @chainable\n */\n setX: function (x) {\n this.x = x;\n return this;\n },\n\n /**\n * Sets y of this point\n * @param {Number} y\n * @chainable\n */\n setY: function (y) {\n this.y = y;\n return this;\n },\n\n /**\n * Sets x/y of this point from another point\n * @param {fabric.Point} that\n * @chainable\n */\n setFromPoint: function (that) {\n this.x = that.x;\n this.y = that.y;\n return this;\n },\n\n /**\n * Swaps x/y of this point and another point\n * @param {fabric.Point} that\n */\n swap: function (that) {\n var x = this.x,\n y = this.y;\n this.x = that.x;\n this.y = that.y;\n that.x = x;\n that.y = y;\n },\n\n /**\n * return a cloned instance of the point\n * @return {fabric.Point}\n */\n clone: function () {\n return new Point(this.x, this.y);\n }\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n /* Adaptation of work of Kevin Lindsey (kevin@kevlindev.com) */\n var fabric = global.fabric || (global.fabric = { });\n\n if (fabric.Intersection) {\n fabric.warn('fabric.Intersection is already defined');\n return;\n }\n\n /**\n * Intersection class\n * @class fabric.Intersection\n * @memberOf fabric\n * @constructor\n */\n function Intersection(status) {\n this.status = status;\n this.points = [];\n }\n\n fabric.Intersection = Intersection;\n\n fabric.Intersection.prototype = /** @lends fabric.Intersection.prototype */ {\n\n constructor: Intersection,\n\n /**\n * Appends a point to intersection\n * @param {fabric.Point} point\n * @return {fabric.Intersection} thisArg\n * @chainable\n */\n appendPoint: function (point) {\n this.points.push(point);\n return this;\n },\n\n /**\n * Appends points to intersection\n * @param {Array} points\n * @return {fabric.Intersection} thisArg\n * @chainable\n */\n appendPoints: function (points) {\n this.points = this.points.concat(points);\n return this;\n }\n };\n\n /**\n * Checks if one line intersects another\n * TODO: rename in intersectSegmentSegment\n * @static\n * @param {fabric.Point} a1\n * @param {fabric.Point} a2\n * @param {fabric.Point} b1\n * @param {fabric.Point} b2\n * @return {fabric.Intersection}\n */\n fabric.Intersection.intersectLineLine = function (a1, a2, b1, b2) {\n var result,\n uaT = (b2.x - b1.x) * (a1.y - b1.y) - (b2.y - b1.y) * (a1.x - b1.x),\n ubT = (a2.x - a1.x) * (a1.y - b1.y) - (a2.y - a1.y) * (a1.x - b1.x),\n uB = (b2.y - b1.y) * (a2.x - a1.x) - (b2.x - b1.x) * (a2.y - a1.y);\n if (uB !== 0) {\n var ua = uaT / uB,\n ub = ubT / uB;\n if (0 <= ua && ua <= 1 && 0 <= ub && ub <= 1) {\n result = new Intersection('Intersection');\n result.appendPoint(new fabric.Point(a1.x + ua * (a2.x - a1.x), a1.y + ua * (a2.y - a1.y)));\n }\n else {\n result = new Intersection();\n }\n }\n else {\n if (uaT === 0 || ubT === 0) {\n result = new Intersection('Coincident');\n }\n else {\n result = new Intersection('Parallel');\n }\n }\n return result;\n };\n\n /**\n * Checks if line intersects polygon\n * TODO: rename in intersectSegmentPolygon\n * fix detection of coincident\n * @static\n * @param {fabric.Point} a1\n * @param {fabric.Point} a2\n * @param {Array} points\n * @return {fabric.Intersection}\n */\n fabric.Intersection.intersectLinePolygon = function(a1, a2, points) {\n var result = new Intersection(),\n length = points.length,\n b1, b2, inter, i;\n\n for (i = 0; i < length; i++) {\n b1 = points[i];\n b2 = points[(i + 1) % length];\n inter = Intersection.intersectLineLine(a1, a2, b1, b2);\n\n result.appendPoints(inter.points);\n }\n if (result.points.length > 0) {\n result.status = 'Intersection';\n }\n return result;\n };\n\n /**\n * Checks if polygon intersects another polygon\n * @static\n * @param {Array} points1\n * @param {Array} points2\n * @return {fabric.Intersection}\n */\n fabric.Intersection.intersectPolygonPolygon = function (points1, points2) {\n var result = new Intersection(),\n length = points1.length, i;\n\n for (i = 0; i < length; i++) {\n var a1 = points1[i],\n a2 = points1[(i + 1) % length],\n inter = Intersection.intersectLinePolygon(a1, a2, points2);\n\n result.appendPoints(inter.points);\n }\n if (result.points.length > 0) {\n result.status = 'Intersection';\n }\n return result;\n };\n\n /**\n * Checks if polygon intersects rectangle\n * @static\n * @param {Array} points\n * @param {fabric.Point} r1\n * @param {fabric.Point} r2\n * @return {fabric.Intersection}\n */\n fabric.Intersection.intersectPolygonRectangle = function (points, r1, r2) {\n var min = r1.min(r2),\n max = r1.max(r2),\n topRight = new fabric.Point(max.x, min.y),\n bottomLeft = new fabric.Point(min.x, max.y),\n inter1 = Intersection.intersectLinePolygon(min, topRight, points),\n inter2 = Intersection.intersectLinePolygon(topRight, max, points),\n inter3 = Intersection.intersectLinePolygon(max, bottomLeft, points),\n inter4 = Intersection.intersectLinePolygon(bottomLeft, min, points),\n result = new Intersection();\n\n result.appendPoints(inter1.points);\n result.appendPoints(inter2.points);\n result.appendPoints(inter3.points);\n result.appendPoints(inter4.points);\n\n if (result.points.length > 0) {\n result.status = 'Intersection';\n }\n return result;\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { });\n\n if (fabric.Color) {\n fabric.warn('fabric.Color is already defined.');\n return;\n }\n\n /**\n * Color class\n * The purpose of {@link fabric.Color} is to abstract and encapsulate common color operations;\n * {@link fabric.Color} is a constructor and creates instances of {@link fabric.Color} objects.\n *\n * @class fabric.Color\n * @param {String} color optional in hex or rgb(a) or hsl format or from known color list\n * @return {fabric.Color} thisArg\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-2/#colors}\n */\n function Color(color) {\n if (!color) {\n this.setSource([0, 0, 0, 1]);\n }\n else {\n this._tryParsingColor(color);\n }\n }\n\n fabric.Color = Color;\n\n fabric.Color.prototype = /** @lends fabric.Color.prototype */ {\n\n /**\n * @private\n * @param {String|Array} color Color value to parse\n */\n _tryParsingColor: function(color) {\n var source;\n\n if (color in Color.colorNameMap) {\n color = Color.colorNameMap[color];\n }\n\n if (color === 'transparent') {\n source = [255, 255, 255, 0];\n }\n\n if (!source) {\n source = Color.sourceFromHex(color);\n }\n if (!source) {\n source = Color.sourceFromRgb(color);\n }\n if (!source) {\n source = Color.sourceFromHsl(color);\n }\n if (!source) {\n //if color is not recognize let's make black as canvas does\n source = [0, 0, 0, 1];\n }\n if (source) {\n this.setSource(source);\n }\n },\n\n /**\n * Adapted from https://github.com/mjijackson\n * @private\n * @param {Number} r Red color value\n * @param {Number} g Green color value\n * @param {Number} b Blue color value\n * @return {Array} Hsl color\n */\n _rgbToHsl: function(r, g, b) {\n r /= 255; g /= 255; b /= 255;\n\n var h, s, l,\n max = fabric.util.array.max([r, g, b]),\n min = fabric.util.array.min([r, g, b]);\n\n l = (max + min) / 2;\n\n if (max === min) {\n h = s = 0; // achromatic\n }\n else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n\n return [\n Math.round(h * 360),\n Math.round(s * 100),\n Math.round(l * 100)\n ];\n },\n\n /**\n * Returns source of this color (where source is an array representation; ex: [200, 200, 100, 1])\n * @return {Array}\n */\n getSource: function() {\n return this._source;\n },\n\n /**\n * Sets source of this color (where source is an array representation; ex: [200, 200, 100, 1])\n * @param {Array} source\n */\n setSource: function(source) {\n this._source = source;\n },\n\n /**\n * Returns color representation in RGB format\n * @return {String} ex: rgb(0-255,0-255,0-255)\n */\n toRgb: function() {\n var source = this.getSource();\n return 'rgb(' + source[0] + ',' + source[1] + ',' + source[2] + ')';\n },\n\n /**\n * Returns color representation in RGBA format\n * @return {String} ex: rgba(0-255,0-255,0-255,0-1)\n */\n toRgba: function() {\n var source = this.getSource();\n return 'rgba(' + source[0] + ',' + source[1] + ',' + source[2] + ',' + source[3] + ')';\n },\n\n /**\n * Returns color representation in HSL format\n * @return {String} ex: hsl(0-360,0%-100%,0%-100%)\n */\n toHsl: function() {\n var source = this.getSource(),\n hsl = this._rgbToHsl(source[0], source[1], source[2]);\n\n return 'hsl(' + hsl[0] + ',' + hsl[1] + '%,' + hsl[2] + '%)';\n },\n\n /**\n * Returns color representation in HSLA format\n * @return {String} ex: hsla(0-360,0%-100%,0%-100%,0-1)\n */\n toHsla: function() {\n var source = this.getSource(),\n hsl = this._rgbToHsl(source[0], source[1], source[2]);\n\n return 'hsla(' + hsl[0] + ',' + hsl[1] + '%,' + hsl[2] + '%,' + source[3] + ')';\n },\n\n /**\n * Returns color representation in HEX format\n * @return {String} ex: FF5555\n */\n toHex: function() {\n var source = this.getSource(), r, g, b;\n\n r = source[0].toString(16);\n r = (r.length === 1) ? ('0' + r) : r;\n\n g = source[1].toString(16);\n g = (g.length === 1) ? ('0' + g) : g;\n\n b = source[2].toString(16);\n b = (b.length === 1) ? ('0' + b) : b;\n\n return r.toUpperCase() + g.toUpperCase() + b.toUpperCase();\n },\n\n /**\n * Returns color representation in HEXA format\n * @return {String} ex: FF5555CC\n */\n toHexa: function() {\n var source = this.getSource(), a;\n\n a = Math.round(source[3] * 255);\n a = a.toString(16);\n a = (a.length === 1) ? ('0' + a) : a;\n\n return this.toHex() + a.toUpperCase();\n },\n\n /**\n * Gets value of alpha channel for this color\n * @return {Number} 0-1\n */\n getAlpha: function() {\n return this.getSource()[3];\n },\n\n /**\n * Sets value of alpha channel for this color\n * @param {Number} alpha Alpha value 0-1\n * @return {fabric.Color} thisArg\n */\n setAlpha: function(alpha) {\n var source = this.getSource();\n source[3] = alpha;\n this.setSource(source);\n return this;\n },\n\n /**\n * Transforms color to its grayscale representation\n * @return {fabric.Color} thisArg\n */\n toGrayscale: function() {\n var source = this.getSource(),\n average = parseInt((source[0] * 0.3 + source[1] * 0.59 + source[2] * 0.11).toFixed(0), 10),\n currentAlpha = source[3];\n this.setSource([average, average, average, currentAlpha]);\n return this;\n },\n\n /**\n * Transforms color to its black and white representation\n * @param {Number} threshold\n * @return {fabric.Color} thisArg\n */\n toBlackWhite: function(threshold) {\n var source = this.getSource(),\n average = (source[0] * 0.3 + source[1] * 0.59 + source[2] * 0.11).toFixed(0),\n currentAlpha = source[3];\n\n threshold = threshold || 127;\n\n average = (Number(average) < Number(threshold)) ? 0 : 255;\n this.setSource([average, average, average, currentAlpha]);\n return this;\n },\n\n /**\n * Overlays color with another color\n * @param {String|fabric.Color} otherColor\n * @return {fabric.Color} thisArg\n */\n overlayWith: function(otherColor) {\n if (!(otherColor instanceof Color)) {\n otherColor = new Color(otherColor);\n }\n\n var result = [],\n alpha = this.getAlpha(),\n otherAlpha = 0.5,\n source = this.getSource(),\n otherSource = otherColor.getSource(), i;\n\n for (i = 0; i < 3; i++) {\n result.push(Math.round((source[i] * (1 - otherAlpha)) + (otherSource[i] * otherAlpha)));\n }\n\n result[3] = alpha;\n this.setSource(result);\n return this;\n }\n };\n\n /**\n * Regex matching color in RGB or RGBA formats (ex: rgb(0, 0, 0), rgba(255, 100, 10, 0.5), rgba( 255 , 100 , 10 , 0.5 ), rgb(1,1,1), rgba(100%, 60%, 10%, 0.5))\n * @static\n * @field\n * @memberOf fabric.Color\n */\n // eslint-disable-next-line max-len\n fabric.Color.reRGBa = /^rgba?\\(\\s*(\\d{1,3}(?:\\.\\d+)?\\%?)\\s*,\\s*(\\d{1,3}(?:\\.\\d+)?\\%?)\\s*,\\s*(\\d{1,3}(?:\\.\\d+)?\\%?)\\s*(?:\\s*,\\s*((?:\\d*\\.?\\d+)?)\\s*)?\\)$/i;\n\n /**\n * Regex matching color in HSL or HSLA formats (ex: hsl(200, 80%, 10%), hsla(300, 50%, 80%, 0.5), hsla( 300 , 50% , 80% , 0.5 ))\n * @static\n * @field\n * @memberOf fabric.Color\n */\n fabric.Color.reHSLa = /^hsla?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3}\\%)\\s*,\\s*(\\d{1,3}\\%)\\s*(?:\\s*,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)$/i;\n\n /**\n * Regex matching color in HEX format (ex: #FF5544CC, #FF5555, 010155, aff)\n * @static\n * @field\n * @memberOf fabric.Color\n */\n fabric.Color.reHex = /^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i;\n\n /**\n * Map of the 148 color names with HEX code\n * @static\n * @field\n * @memberOf fabric.Color\n * @see: https://www.w3.org/TR/css3-color/#svg-color\n */\n fabric.Color.colorNameMap = {\n aliceblue: '#F0F8FF',\n antiquewhite: '#FAEBD7',\n aqua: '#00FFFF',\n aquamarine: '#7FFFD4',\n azure: '#F0FFFF',\n beige: '#F5F5DC',\n bisque: '#FFE4C4',\n black: '#000000',\n blanchedalmond: '#FFEBCD',\n blue: '#0000FF',\n blueviolet: '#8A2BE2',\n brown: '#A52A2A',\n burlywood: '#DEB887',\n cadetblue: '#5F9EA0',\n chartreuse: '#7FFF00',\n chocolate: '#D2691E',\n coral: '#FF7F50',\n cornflowerblue: '#6495ED',\n cornsilk: '#FFF8DC',\n crimson: '#DC143C',\n cyan: '#00FFFF',\n darkblue: '#00008B',\n darkcyan: '#008B8B',\n darkgoldenrod: '#B8860B',\n darkgray: '#A9A9A9',\n darkgrey: '#A9A9A9',\n darkgreen: '#006400',\n darkkhaki: '#BDB76B',\n darkmagenta: '#8B008B',\n darkolivegreen: '#556B2F',\n darkorange: '#FF8C00',\n darkorchid: '#9932CC',\n darkred: '#8B0000',\n darksalmon: '#E9967A',\n darkseagreen: '#8FBC8F',\n darkslateblue: '#483D8B',\n darkslategray: '#2F4F4F',\n darkslategrey: '#2F4F4F',\n darkturquoise: '#00CED1',\n darkviolet: '#9400D3',\n deeppink: '#FF1493',\n deepskyblue: '#00BFFF',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1E90FF',\n firebrick: '#B22222',\n floralwhite: '#FFFAF0',\n forestgreen: '#228B22',\n fuchsia: '#FF00FF',\n gainsboro: '#DCDCDC',\n ghostwhite: '#F8F8FF',\n gold: '#FFD700',\n goldenrod: '#DAA520',\n gray: '#808080',\n grey: '#808080',\n green: '#008000',\n greenyellow: '#ADFF2F',\n honeydew: '#F0FFF0',\n hotpink: '#FF69B4',\n indianred: '#CD5C5C',\n indigo: '#4B0082',\n ivory: '#FFFFF0',\n khaki: '#F0E68C',\n lavender: '#E6E6FA',\n lavenderblush: '#FFF0F5',\n lawngreen: '#7CFC00',\n lemonchiffon: '#FFFACD',\n lightblue: '#ADD8E6',\n lightcoral: '#F08080',\n lightcyan: '#E0FFFF',\n lightgoldenrodyellow: '#FAFAD2',\n lightgray: '#D3D3D3',\n lightgrey: '#D3D3D3',\n lightgreen: '#90EE90',\n lightpink: '#FFB6C1',\n lightsalmon: '#FFA07A',\n lightseagreen: '#20B2AA',\n lightskyblue: '#87CEFA',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#B0C4DE',\n lightyellow: '#FFFFE0',\n lime: '#00FF00',\n limegreen: '#32CD32',\n linen: '#FAF0E6',\n magenta: '#FF00FF',\n maroon: '#800000',\n mediumaquamarine: '#66CDAA',\n mediumblue: '#0000CD',\n mediumorchid: '#BA55D3',\n mediumpurple: '#9370DB',\n mediumseagreen: '#3CB371',\n mediumslateblue: '#7B68EE',\n mediumspringgreen: '#00FA9A',\n mediumturquoise: '#48D1CC',\n mediumvioletred: '#C71585',\n midnightblue: '#191970',\n mintcream: '#F5FFFA',\n mistyrose: '#FFE4E1',\n moccasin: '#FFE4B5',\n navajowhite: '#FFDEAD',\n navy: '#000080',\n oldlace: '#FDF5E6',\n olive: '#808000',\n olivedrab: '#6B8E23',\n orange: '#FFA500',\n orangered: '#FF4500',\n orchid: '#DA70D6',\n palegoldenrod: '#EEE8AA',\n palegreen: '#98FB98',\n paleturquoise: '#AFEEEE',\n palevioletred: '#DB7093',\n papayawhip: '#FFEFD5',\n peachpuff: '#FFDAB9',\n peru: '#CD853F',\n pink: '#FFC0CB',\n plum: '#DDA0DD',\n powderblue: '#B0E0E6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#FF0000',\n rosybrown: '#BC8F8F',\n royalblue: '#4169E1',\n saddlebrown: '#8B4513',\n salmon: '#FA8072',\n sandybrown: '#F4A460',\n seagreen: '#2E8B57',\n seashell: '#FFF5EE',\n sienna: '#A0522D',\n silver: '#C0C0C0',\n skyblue: '#87CEEB',\n slateblue: '#6A5ACD',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#FFFAFA',\n springgreen: '#00FF7F',\n steelblue: '#4682B4',\n tan: '#D2B48C',\n teal: '#008080',\n thistle: '#D8BFD8',\n tomato: '#FF6347',\n turquoise: '#40E0D0',\n violet: '#EE82EE',\n wheat: '#F5DEB3',\n white: '#FFFFFF',\n whitesmoke: '#F5F5F5',\n yellow: '#FFFF00',\n yellowgreen: '#9ACD32'\n };\n\n /**\n * @private\n * @param {Number} p\n * @param {Number} q\n * @param {Number} t\n * @return {Number}\n */\n function hue2rgb(p, q, t) {\n if (t < 0) {\n t += 1;\n }\n if (t > 1) {\n t -= 1;\n }\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n if (t < 1 / 2) {\n return q;\n }\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n return p;\n }\n\n /**\n * Returns new color object, when given a color in RGB format\n * @memberOf fabric.Color\n * @param {String} color Color value ex: rgb(0-255,0-255,0-255)\n * @return {fabric.Color}\n */\n fabric.Color.fromRgb = function(color) {\n return Color.fromSource(Color.sourceFromRgb(color));\n };\n\n /**\n * Returns array representation (ex: [100, 100, 200, 1]) of a color that's in RGB or RGBA format\n * @memberOf fabric.Color\n * @param {String} color Color value ex: rgb(0-255,0-255,0-255), rgb(0%-100%,0%-100%,0%-100%)\n * @return {Array} source\n */\n fabric.Color.sourceFromRgb = function(color) {\n var match = color.match(Color.reRGBa);\n if (match) {\n var r = parseInt(match[1], 10) / (/%$/.test(match[1]) ? 100 : 1) * (/%$/.test(match[1]) ? 255 : 1),\n g = parseInt(match[2], 10) / (/%$/.test(match[2]) ? 100 : 1) * (/%$/.test(match[2]) ? 255 : 1),\n b = parseInt(match[3], 10) / (/%$/.test(match[3]) ? 100 : 1) * (/%$/.test(match[3]) ? 255 : 1);\n\n return [\n parseInt(r, 10),\n parseInt(g, 10),\n parseInt(b, 10),\n match[4] ? parseFloat(match[4]) : 1\n ];\n }\n };\n\n /**\n * Returns new color object, when given a color in RGBA format\n * @static\n * @function\n * @memberOf fabric.Color\n * @param {String} color\n * @return {fabric.Color}\n */\n fabric.Color.fromRgba = Color.fromRgb;\n\n /**\n * Returns new color object, when given a color in HSL format\n * @param {String} color Color value ex: hsl(0-260,0%-100%,0%-100%)\n * @memberOf fabric.Color\n * @return {fabric.Color}\n */\n fabric.Color.fromHsl = function(color) {\n return Color.fromSource(Color.sourceFromHsl(color));\n };\n\n /**\n * Returns array representation (ex: [100, 100, 200, 1]) of a color that's in HSL or HSLA format.\n * Adapted from https://github.com/mjijackson\n * @memberOf fabric.Color\n * @param {String} color Color value ex: hsl(0-360,0%-100%,0%-100%) or hsla(0-360,0%-100%,0%-100%, 0-1)\n * @return {Array} source\n * @see http://http://www.w3.org/TR/css3-color/#hsl-color\n */\n fabric.Color.sourceFromHsl = function(color) {\n var match = color.match(Color.reHSLa);\n if (!match) {\n return;\n }\n\n var h = (((parseFloat(match[1]) % 360) + 360) % 360) / 360,\n s = parseFloat(match[2]) / (/%$/.test(match[2]) ? 100 : 1),\n l = parseFloat(match[3]) / (/%$/.test(match[3]) ? 100 : 1),\n r, g, b;\n\n if (s === 0) {\n r = g = b = l;\n }\n else {\n var q = l <= 0.5 ? l * (s + 1) : l + s - l * s,\n p = l * 2 - q;\n\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return [\n Math.round(r * 255),\n Math.round(g * 255),\n Math.round(b * 255),\n match[4] ? parseFloat(match[4]) : 1\n ];\n };\n\n /**\n * Returns new color object, when given a color in HSLA format\n * @static\n * @function\n * @memberOf fabric.Color\n * @param {String} color\n * @return {fabric.Color}\n */\n fabric.Color.fromHsla = Color.fromHsl;\n\n /**\n * Returns new color object, when given a color in HEX format\n * @static\n * @memberOf fabric.Color\n * @param {String} color Color value ex: FF5555\n * @return {fabric.Color}\n */\n fabric.Color.fromHex = function(color) {\n return Color.fromSource(Color.sourceFromHex(color));\n };\n\n /**\n * Returns array representation (ex: [100, 100, 200, 1]) of a color that's in HEX format\n * @static\n * @memberOf fabric.Color\n * @param {String} color ex: FF5555 or FF5544CC (RGBa)\n * @return {Array} source\n */\n fabric.Color.sourceFromHex = function(color) {\n if (color.match(Color.reHex)) {\n var value = color.slice(color.indexOf('#') + 1),\n isShortNotation = (value.length === 3 || value.length === 4),\n isRGBa = (value.length === 8 || value.length === 4),\n r = isShortNotation ? (value.charAt(0) + value.charAt(0)) : value.substring(0, 2),\n g = isShortNotation ? (value.charAt(1) + value.charAt(1)) : value.substring(2, 4),\n b = isShortNotation ? (value.charAt(2) + value.charAt(2)) : value.substring(4, 6),\n a = isRGBa ? (isShortNotation ? (value.charAt(3) + value.charAt(3)) : value.substring(6, 8)) : 'FF';\n\n return [\n parseInt(r, 16),\n parseInt(g, 16),\n parseInt(b, 16),\n parseFloat((parseInt(a, 16) / 255).toFixed(2))\n ];\n }\n };\n\n /**\n * Returns new color object, when given color in array representation (ex: [200, 100, 100, 0.5])\n * @static\n * @memberOf fabric.Color\n * @param {Array} source\n * @return {fabric.Color}\n */\n fabric.Color.fromSource = function(source) {\n var oColor = new Color();\n oColor.setSource(source);\n return oColor;\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function() {\n\n /* _FROM_SVG_START_ */\n function getColorStop(el) {\n var style = el.getAttribute('style'),\n offset = el.getAttribute('offset') || 0,\n color, colorAlpha, opacity, i;\n\n // convert percents to absolute values\n offset = parseFloat(offset) / (/%$/.test(offset) ? 100 : 1);\n offset = offset < 0 ? 0 : offset > 1 ? 1 : offset;\n if (style) {\n var keyValuePairs = style.split(/\\s*;\\s*/);\n\n if (keyValuePairs[keyValuePairs.length - 1] === '') {\n keyValuePairs.pop();\n }\n\n for (i = keyValuePairs.length; i--; ) {\n\n var split = keyValuePairs[i].split(/\\s*:\\s*/),\n key = split[0].trim(),\n value = split[1].trim();\n\n if (key === 'stop-color') {\n color = value;\n }\n else if (key === 'stop-opacity') {\n opacity = value;\n }\n }\n }\n\n if (!color) {\n color = el.getAttribute('stop-color') || 'rgb(0,0,0)';\n }\n if (!opacity) {\n opacity = el.getAttribute('stop-opacity');\n }\n\n color = new fabric.Color(color);\n colorAlpha = color.getAlpha();\n opacity = isNaN(parseFloat(opacity)) ? 1 : parseFloat(opacity);\n opacity *= colorAlpha;\n\n return {\n offset: offset,\n color: color.toRgb(),\n opacity: opacity\n };\n }\n\n function getLinearCoords(el) {\n return {\n x1: el.getAttribute('x1') || 0,\n y1: el.getAttribute('y1') || 0,\n x2: el.getAttribute('x2') || '100%',\n y2: el.getAttribute('y2') || 0\n };\n }\n\n function getRadialCoords(el) {\n return {\n x1: el.getAttribute('fx') || el.getAttribute('cx') || '50%',\n y1: el.getAttribute('fy') || el.getAttribute('cy') || '50%',\n r1: 0,\n x2: el.getAttribute('cx') || '50%',\n y2: el.getAttribute('cy') || '50%',\n r2: el.getAttribute('r') || '50%'\n };\n }\n /* _FROM_SVG_END_ */\n\n var clone = fabric.util.object.clone;\n\n /**\n * Gradient class\n * @class fabric.Gradient\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#gradients}\n * @see {@link fabric.Gradient#initialize} for constructor definition\n */\n fabric.Gradient = fabric.util.createClass(/** @lends fabric.Gradient.prototype */ {\n\n /**\n * Horizontal offset for aligning gradients coming from SVG when outside pathgroups\n * @type Number\n * @default 0\n */\n offsetX: 0,\n\n /**\n * Vertical offset for aligning gradients coming from SVG when outside pathgroups\n * @type Number\n * @default 0\n */\n offsetY: 0,\n\n /**\n * Constructor\n * @param {Object} [options] Options object with type, coords, gradientUnits and colorStops\n * @return {fabric.Gradient} thisArg\n */\n initialize: function(options) {\n options || (options = { });\n\n var coords = { };\n\n this.id = fabric.Object.__uid++;\n this.type = options.type || 'linear';\n\n coords = {\n x1: options.coords.x1 || 0,\n y1: options.coords.y1 || 0,\n x2: options.coords.x2 || 0,\n y2: options.coords.y2 || 0\n };\n\n if (this.type === 'radial') {\n coords.r1 = options.coords.r1 || 0;\n coords.r2 = options.coords.r2 || 0;\n }\n this.coords = coords;\n this.colorStops = options.colorStops.slice();\n if (options.gradientTransform) {\n this.gradientTransform = options.gradientTransform;\n }\n this.offsetX = options.offsetX || this.offsetX;\n this.offsetY = options.offsetY || this.offsetY;\n },\n\n /**\n * Adds another colorStop\n * @param {Object} colorStop Object with offset and color\n * @return {fabric.Gradient} thisArg\n */\n addColorStop: function(colorStops) {\n for (var position in colorStops) {\n var color = new fabric.Color(colorStops[position]);\n this.colorStops.push({\n offset: parseFloat(position),\n color: color.toRgb(),\n opacity: color.getAlpha()\n });\n }\n return this;\n },\n\n /**\n * Returns object representation of a gradient\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object}\n */\n toObject: function(propertiesToInclude) {\n var object = {\n type: this.type,\n coords: this.coords,\n colorStops: this.colorStops,\n offsetX: this.offsetX,\n offsetY: this.offsetY,\n gradientTransform: this.gradientTransform ? this.gradientTransform.concat() : this.gradientTransform\n };\n fabric.util.populateWithProperties(this, object, propertiesToInclude);\n\n return object;\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns SVG representation of an gradient\n * @param {Object} object Object to create a gradient for\n * @return {String} SVG representation of an gradient (linear/radial)\n */\n toSVG: function(object) {\n var coords = clone(this.coords, true), i, len,\n markup, commonAttributes, colorStops = clone(this.colorStops, true),\n needsSwap = coords.r1 > coords.r2,\n offsetX = object.width / 2, offsetY = object.height / 2;\n // colorStops must be sorted ascending\n colorStops.sort(function(a, b) {\n return a.offset - b.offset;\n });\n if (object.type === 'path') {\n offsetX -= object.pathOffset.x;\n offsetY -= object.pathOffset.y;\n }\n for (var prop in coords) {\n if (prop === 'x1' || prop === 'x2') {\n coords[prop] += this.offsetX - offsetX;\n }\n else if (prop === 'y1' || prop === 'y2') {\n coords[prop] += this.offsetY - offsetY;\n }\n }\n\n commonAttributes = 'id=\"SVGID_' + this.id +\n '\" gradientUnits=\"userSpaceOnUse\"';\n if (this.gradientTransform) {\n commonAttributes += ' gradientTransform=\"matrix(' + this.gradientTransform.join(' ') + ')\" ';\n }\n if (this.type === 'linear') {\n markup = [\n '\\n'\n ];\n }\n else if (this.type === 'radial') {\n // svg radial gradient has just 1 radius. the biggest.\n markup = [\n '\\n'\n ];\n }\n\n if (this.type === 'radial') {\n if (needsSwap) {\n // svg goes from internal to external radius. if radius are inverted, swap color stops.\n colorStops = colorStops.concat();\n colorStops.reverse();\n for (i = 0, len = colorStops.length; i < len; i++) {\n colorStops[i].offset = 1 - colorStops[i].offset;\n }\n }\n var minRadius = Math.min(coords.r1, coords.r2);\n if (minRadius > 0) {\n // i have to shift all colorStops and add new one in 0.\n var maxRadius = Math.max(coords.r1, coords.r2),\n percentageShift = minRadius / maxRadius;\n for (i = 0, len = colorStops.length; i < len; i++) {\n colorStops[i].offset += percentageShift * (1 - colorStops[i].offset);\n }\n }\n }\n\n for (i = 0, len = colorStops.length; i < len; i++) {\n var colorStop = colorStops[i];\n markup.push(\n '\\n'\n );\n }\n\n markup.push((this.type === 'linear' ? '\\n' : '\\n'));\n\n return markup.join('');\n },\n /* _TO_SVG_END_ */\n\n /**\n * Returns an instance of CanvasGradient\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @return {CanvasGradient}\n */\n toLive: function(ctx) {\n var gradient, coords = fabric.util.object.clone(this.coords), i, len;\n\n if (!this.type) {\n return;\n }\n\n if (this.type === 'linear') {\n gradient = ctx.createLinearGradient(\n coords.x1, coords.y1, coords.x2, coords.y2);\n }\n else if (this.type === 'radial') {\n gradient = ctx.createRadialGradient(\n coords.x1, coords.y1, coords.r1, coords.x2, coords.y2, coords.r2);\n }\n\n for (i = 0, len = this.colorStops.length; i < len; i++) {\n var color = this.colorStops[i].color,\n opacity = this.colorStops[i].opacity,\n offset = this.colorStops[i].offset;\n\n if (typeof opacity !== 'undefined') {\n color = new fabric.Color(color).setAlpha(opacity).toRgba();\n }\n gradient.addColorStop(offset, color);\n }\n\n return gradient;\n }\n });\n\n fabric.util.object.extend(fabric.Gradient, {\n\n /* _FROM_SVG_START_ */\n /**\n * Returns {@link fabric.Gradient} instance from an SVG element\n * @static\n * @memberOf fabric.Gradient\n * @param {SVGGradientElement} el SVG gradient element\n * @param {fabric.Object} instance\n * @return {fabric.Gradient} Gradient instance\n * @see http://www.w3.org/TR/SVG/pservers.html#LinearGradientElement\n * @see http://www.w3.org/TR/SVG/pservers.html#RadialGradientElement\n */\n fromElement: function(el, instance) {\n /**\n * @example:\n *\n * \n * \n * \n * \n *\n * OR\n *\n * \n * \n * \n * \n *\n * OR\n *\n * \n * \n * \n * \n * \n *\n * OR\n *\n * \n * \n * \n * \n * \n *\n */\n\n var colorStopEls = el.getElementsByTagName('stop'),\n type,\n gradientUnits = el.getAttribute('gradientUnits') || 'objectBoundingBox',\n gradientTransform = el.getAttribute('gradientTransform'),\n colorStops = [],\n coords, ellipseMatrix, i;\n\n if (el.nodeName === 'linearGradient' || el.nodeName === 'LINEARGRADIENT') {\n type = 'linear';\n }\n else {\n type = 'radial';\n }\n\n if (type === 'linear') {\n coords = getLinearCoords(el);\n }\n else if (type === 'radial') {\n coords = getRadialCoords(el);\n }\n\n for (i = colorStopEls.length; i--; ) {\n colorStops.push(getColorStop(colorStopEls[i]));\n }\n\n ellipseMatrix = _convertPercentUnitsToValues(instance, coords, gradientUnits);\n\n var gradient = new fabric.Gradient({\n type: type,\n coords: coords,\n colorStops: colorStops,\n offsetX: -instance.left,\n offsetY: -instance.top\n });\n\n if (gradientTransform || ellipseMatrix !== '') {\n gradient.gradientTransform = fabric.parseTransformAttribute((gradientTransform || '') + ellipseMatrix);\n }\n\n return gradient;\n },\n /* _FROM_SVG_END_ */\n\n /**\n * Returns {@link fabric.Gradient} instance from its object representation\n * @static\n * @memberOf fabric.Gradient\n * @param {Object} obj\n * @param {Object} [options] Options object\n */\n forObject: function(obj, options) {\n options || (options = { });\n _convertPercentUnitsToValues(obj, options.coords, 'userSpaceOnUse');\n return new fabric.Gradient(options);\n }\n });\n\n /**\n * @private\n */\n function _convertPercentUnitsToValues(object, options, gradientUnits) {\n var propValue, addFactor = 0, multFactor = 1, ellipseMatrix = '';\n for (var prop in options) {\n if (options[prop] === 'Infinity') {\n options[prop] = 1;\n }\n else if (options[prop] === '-Infinity') {\n options[prop] = 0;\n }\n propValue = parseFloat(options[prop], 10);\n if (typeof options[prop] === 'string' && /^(\\d+\\.\\d+)%|(\\d+)%$/.test(options[prop])) {\n multFactor = 0.01;\n }\n else {\n multFactor = 1;\n }\n if (prop === 'x1' || prop === 'x2' || prop === 'r2') {\n multFactor *= gradientUnits === 'objectBoundingBox' ? object.width : 1;\n addFactor = gradientUnits === 'objectBoundingBox' ? object.left || 0 : 0;\n }\n else if (prop === 'y1' || prop === 'y2') {\n multFactor *= gradientUnits === 'objectBoundingBox' ? object.height : 1;\n addFactor = gradientUnits === 'objectBoundingBox' ? object.top || 0 : 0;\n }\n options[prop] = propValue * multFactor + addFactor;\n }\n if (object.type === 'ellipse' &&\n options.r2 !== null &&\n gradientUnits === 'objectBoundingBox' &&\n object.rx !== object.ry) {\n\n var scaleFactor = object.ry / object.rx;\n ellipseMatrix = ' scale(1, ' + scaleFactor + ')';\n if (options.y1) {\n options.y1 /= scaleFactor;\n }\n if (options.y2) {\n options.y2 /= scaleFactor;\n }\n }\n return ellipseMatrix;\n }\n})();\n\n\n(function() {\n\n 'use strict';\n\n var toFixed = fabric.util.toFixed;\n\n /**\n * Pattern class\n * @class fabric.Pattern\n * @see {@link http://fabricjs.com/patterns|Pattern demo}\n * @see {@link http://fabricjs.com/dynamic-patterns|DynamicPattern demo}\n * @see {@link fabric.Pattern#initialize} for constructor definition\n */\n\n\n fabric.Pattern = fabric.util.createClass(/** @lends fabric.Pattern.prototype */ {\n\n /**\n * Repeat property of a pattern (one of repeat, repeat-x, repeat-y or no-repeat)\n * @type String\n * @default\n */\n repeat: 'repeat',\n\n /**\n * Pattern horizontal offset from object's left/top corner\n * @type Number\n * @default\n */\n offsetX: 0,\n\n /**\n * Pattern vertical offset from object's left/top corner\n * @type Number\n * @default\n */\n offsetY: 0,\n\n /**\n * crossOrigin value (one of \"\", \"anonymous\", \"use-credentials\")\n * @see https://developer.mozilla.org/en-US/docs/HTML/CORS_settings_attributes\n * @type String\n * @default\n */\n crossOrigin: '',\n\n /**\n * transform matrix to change the pattern, imported from svgs.\n * @type Array\n * @default\n */\n patternTransform: null,\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n * @param {Function} [callback] function to invoke after callback init.\n * @return {fabric.Pattern} thisArg\n */\n initialize: function(options, callback) {\n options || (options = { });\n\n this.id = fabric.Object.__uid++;\n this.setOptions(options);\n if (!options.source || (options.source && typeof options.source !== 'string')) {\n callback && callback(this);\n return;\n }\n // function string\n if (typeof fabric.util.getFunctionBody(options.source) !== 'undefined') {\n this.source = new Function(fabric.util.getFunctionBody(options.source));\n callback && callback(this);\n }\n else {\n // img src string\n var _this = this;\n this.source = fabric.util.createImage();\n fabric.util.loadImage(options.source, function(img) {\n _this.source = img;\n callback && callback(_this);\n }, null, this.crossOrigin);\n }\n },\n\n /**\n * Returns object representation of a pattern\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} Object representation of a pattern instance\n */\n toObject: function(propertiesToInclude) {\n var NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS,\n source, object;\n\n // callback\n if (typeof this.source === 'function') {\n source = String(this.source);\n }\n // element\n else if (typeof this.source.src === 'string') {\n source = this.source.src;\n }\n // element\n else if (typeof this.source === 'object' && this.source.toDataURL) {\n source = this.source.toDataURL();\n }\n\n object = {\n type: 'pattern',\n source: source,\n repeat: this.repeat,\n crossOrigin: this.crossOrigin,\n offsetX: toFixed(this.offsetX, NUM_FRACTION_DIGITS),\n offsetY: toFixed(this.offsetY, NUM_FRACTION_DIGITS),\n patternTransform: this.patternTransform ? this.patternTransform.concat() : null\n };\n fabric.util.populateWithProperties(this, object, propertiesToInclude);\n\n return object;\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns SVG representation of a pattern\n * @param {fabric.Object} object\n * @return {String} SVG representation of a pattern\n */\n toSVG: function(object) {\n var patternSource = typeof this.source === 'function' ? this.source() : this.source,\n patternWidth = patternSource.width / object.width,\n patternHeight = patternSource.height / object.height,\n patternOffsetX = this.offsetX / object.width,\n patternOffsetY = this.offsetY / object.height,\n patternImgSrc = '';\n if (this.repeat === 'repeat-x' || this.repeat === 'no-repeat') {\n patternHeight = 1;\n if (patternOffsetY) {\n patternHeight += Math.abs(patternOffsetY);\n }\n }\n if (this.repeat === 'repeat-y' || this.repeat === 'no-repeat') {\n patternWidth = 1;\n if (patternOffsetX) {\n patternWidth += Math.abs(patternOffsetX);\n }\n\n }\n if (patternSource.src) {\n patternImgSrc = patternSource.src;\n }\n else if (patternSource.toDataURL) {\n patternImgSrc = patternSource.toDataURL();\n }\n\n return '\\n' +\n '\\n' +\n '\\n';\n },\n /* _TO_SVG_END_ */\n\n setOptions: function(options) {\n for (var prop in options) {\n this[prop] = options[prop];\n }\n },\n\n /**\n * Returns an instance of CanvasPattern\n * @param {CanvasRenderingContext2D} ctx Context to create pattern\n * @return {CanvasPattern}\n */\n toLive: function(ctx) {\n var source = typeof this.source === 'function' ? this.source() : this.source;\n\n // if the image failed to load, return, and allow rest to continue loading\n if (!source) {\n return '';\n }\n\n // if an image\n if (typeof source.src !== 'undefined') {\n if (!source.complete) {\n return '';\n }\n if (source.naturalWidth === 0 || source.naturalHeight === 0) {\n return '';\n }\n }\n return ctx.createPattern(source, this.repeat);\n }\n });\n})();\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n toFixed = fabric.util.toFixed;\n\n if (fabric.Shadow) {\n fabric.warn('fabric.Shadow is already defined.');\n return;\n }\n\n /**\n * Shadow class\n * @class fabric.Shadow\n * @see {@link http://fabricjs.com/shadows|Shadow demo}\n * @see {@link fabric.Shadow#initialize} for constructor definition\n */\n fabric.Shadow = fabric.util.createClass(/** @lends fabric.Shadow.prototype */ {\n\n /**\n * Shadow color\n * @type String\n * @default\n */\n color: 'rgb(0,0,0)',\n\n /**\n * Shadow blur\n * @type Number\n */\n blur: 0,\n\n /**\n * Shadow horizontal offset\n * @type Number\n * @default\n */\n offsetX: 0,\n\n /**\n * Shadow vertical offset\n * @type Number\n * @default\n */\n offsetY: 0,\n\n /**\n * Whether the shadow should affect stroke operations\n * @type Boolean\n * @default\n */\n affectStroke: false,\n\n /**\n * Indicates whether toObject should include default values\n * @type Boolean\n * @default\n */\n includeDefaultValues: true,\n\n /**\n * Constructor\n * @param {Object|String} [options] Options object with any of color, blur, offsetX, offsetY properties or string (e.g. \"rgba(0,0,0,0.2) 2px 2px 10px\")\n * @return {fabric.Shadow} thisArg\n */\n initialize: function(options) {\n\n if (typeof options === 'string') {\n options = this._parseShadow(options);\n }\n\n for (var prop in options) {\n this[prop] = options[prop];\n }\n\n this.id = fabric.Object.__uid++;\n },\n\n /**\n * @private\n * @param {String} shadow Shadow value to parse\n * @return {Object} Shadow object with color, offsetX, offsetY and blur\n */\n _parseShadow: function(shadow) {\n var shadowStr = shadow.trim(),\n offsetsAndBlur = fabric.Shadow.reOffsetsAndBlur.exec(shadowStr) || [],\n color = shadowStr.replace(fabric.Shadow.reOffsetsAndBlur, '') || 'rgb(0,0,0)';\n\n return {\n color: color.trim(),\n offsetX: parseInt(offsetsAndBlur[1], 10) || 0,\n offsetY: parseInt(offsetsAndBlur[2], 10) || 0,\n blur: parseInt(offsetsAndBlur[3], 10) || 0\n };\n },\n\n /**\n * Returns a string representation of an instance\n * @see http://www.w3.org/TR/css-text-decor-3/#text-shadow\n * @return {String} Returns CSS3 text-shadow declaration\n */\n toString: function() {\n return [this.offsetX, this.offsetY, this.blur, this.color].join('px ');\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns SVG representation of a shadow\n * @param {fabric.Object} object\n * @return {String} SVG representation of a shadow\n */\n toSVG: function(object) {\n var fBoxX = 40, fBoxY = 40, NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS,\n offset = fabric.util.rotateVector(\n { x: this.offsetX, y: this.offsetY },\n fabric.util.degreesToRadians(-object.angle)),\n BLUR_BOX = 20, color = new fabric.Color(this.color);\n\n if (object.width && object.height) {\n //http://www.w3.org/TR/SVG/filters.html#FilterEffectsRegion\n // we add some extra space to filter box to contain the blur ( 20 )\n fBoxX = toFixed((Math.abs(offset.x) + this.blur) / object.width, NUM_FRACTION_DIGITS) * 100 + BLUR_BOX;\n fBoxY = toFixed((Math.abs(offset.y) + this.blur) / object.height, NUM_FRACTION_DIGITS) * 100 + BLUR_BOX;\n }\n if (object.flipX) {\n offset.x *= -1;\n }\n if (object.flipY) {\n offset.y *= -1;\n }\n\n return (\n '\\n' +\n '\\t\\n' +\n '\\t\\n' +\n '\\t\\n' +\n '\\t\\n' +\n '\\t\\n' +\n '\\t\\t\\n' +\n '\\t\\t\\n' +\n '\\t\\n' +\n '\\n');\n },\n /* _TO_SVG_END_ */\n\n /**\n * Returns object representation of a shadow\n * @return {Object} Object representation of a shadow instance\n */\n toObject: function() {\n if (this.includeDefaultValues) {\n return {\n color: this.color,\n blur: this.blur,\n offsetX: this.offsetX,\n offsetY: this.offsetY,\n affectStroke: this.affectStroke\n };\n }\n var obj = { }, proto = fabric.Shadow.prototype;\n\n ['color', 'blur', 'offsetX', 'offsetY', 'affectStroke'].forEach(function(prop) {\n if (this[prop] !== proto[prop]) {\n obj[prop] = this[prop];\n }\n }, this);\n\n return obj;\n }\n });\n\n /**\n * Regex matching shadow offsetX, offsetY and blur (ex: \"2px 2px 10px rgba(0,0,0,0.2)\", \"rgb(0,255,0) 2px 2px\")\n * @static\n * @field\n * @memberOf fabric.Shadow\n */\n // eslint-disable-next-line max-len\n fabric.Shadow.reOffsetsAndBlur = /(?:\\s|^)(-?\\d+(?:px)?(?:\\s?|$))?(-?\\d+(?:px)?(?:\\s?|$))?(\\d+(?:px)?)?(?:\\s?|$)(?:$|\\s)/;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function () {\n\n 'use strict';\n\n if (fabric.StaticCanvas) {\n fabric.warn('fabric.StaticCanvas is already defined.');\n return;\n }\n\n // aliases for faster resolution\n var extend = fabric.util.object.extend,\n getElementOffset = fabric.util.getElementOffset,\n removeFromArray = fabric.util.removeFromArray,\n toFixed = fabric.util.toFixed,\n transformPoint = fabric.util.transformPoint,\n invertTransform = fabric.util.invertTransform,\n\n CANVAS_INIT_ERROR = new Error('Could not initialize `canvas` element');\n\n /**\n * Static canvas class\n * @class fabric.StaticCanvas\n * @mixes fabric.Collection\n * @mixes fabric.Observable\n * @see {@link http://fabricjs.com/static_canvas|StaticCanvas demo}\n * @see {@link fabric.StaticCanvas#initialize} for constructor definition\n * @fires before:render\n * @fires after:render\n * @fires canvas:cleared\n * @fires object:added\n * @fires object:removed\n */\n fabric.StaticCanvas = fabric.util.createClass(fabric.CommonMethods, /** @lends fabric.StaticCanvas.prototype */ {\n\n /**\n * Constructor\n * @param {HTMLElement | String} el <canvas> element to initialize instance on\n * @param {Object} [options] Options object\n * @return {Object} thisArg\n */\n initialize: function(el, options) {\n options || (options = { });\n this.renderAndResetBound = this.renderAndReset.bind(this);\n this.requestRenderAllBound = this.requestRenderAll.bind(this);\n this._initStatic(el, options);\n },\n\n /**\n * Background color of canvas instance.\n * Should be set via {@link fabric.StaticCanvas#setBackgroundColor}.\n * @type {(String|fabric.Pattern)}\n * @default\n */\n backgroundColor: '',\n\n /**\n * Background image of canvas instance.\n * Should be set via {@link fabric.StaticCanvas#setBackgroundImage}.\n * Backwards incompatibility note: The \"backgroundImageOpacity\"\n * and \"backgroundImageStretch\" properties are deprecated since 1.3.9.\n * Use {@link fabric.Image#opacity}, {@link fabric.Image#width} and {@link fabric.Image#height}.\n * @type fabric.Image\n * @default\n */\n backgroundImage: null,\n\n /**\n * Overlay color of canvas instance.\n * Should be set via {@link fabric.StaticCanvas#setOverlayColor}\n * @since 1.3.9\n * @type {(String|fabric.Pattern)}\n * @default\n */\n overlayColor: '',\n\n /**\n * Overlay image of canvas instance.\n * Should be set via {@link fabric.StaticCanvas#setOverlayImage}.\n * Backwards incompatibility note: The \"overlayImageLeft\"\n * and \"overlayImageTop\" properties are deprecated since 1.3.9.\n * Use {@link fabric.Image#left} and {@link fabric.Image#top}.\n * @type fabric.Image\n * @default\n */\n overlayImage: null,\n\n /**\n * Indicates whether toObject/toDatalessObject should include default values\n * @type Boolean\n * @default\n */\n includeDefaultValues: true,\n\n /**\n * Indicates whether objects' state should be saved\n * @type Boolean\n * @default\n */\n stateful: false,\n\n /**\n * Indicates whether {@link fabric.Collection.add}, {@link fabric.Collection.insertAt} and {@link fabric.Collection.remove},\n * {@link fabric.StaticCanvas.moveTo}, {@link fabric.StaticCanvas.clear} and many more, should also re-render canvas.\n * Disabling this option will not give a performance boost when adding/removing a lot of objects to/from canvas at once\n * since the renders are quequed and executed one per frame.\n * Disabling is suggested anyway and managing the renders of the app manually is not a big effort ( canvas.requestRenderAll() )\n * Left default to true to do not break documentation and old app, fiddles.\n * @type Boolean\n * @default\n */\n renderOnAddRemove: true,\n\n /**\n * Function that determines clipping of entire canvas area\n * Being passed context as first argument.\n * If you are using code minification, ctx argument can be minified/manglied you should use\n * as a workaround `var ctx = arguments[0];` in the function;\n * See clipping canvas area in {@link https://github.com/kangax/fabric.js/wiki/FAQ}\n * @deprecated since 2.0.0\n * @type Function\n * @default\n */\n clipTo: null,\n\n /**\n * Indicates whether object controls (borders/controls) are rendered above overlay image\n * @type Boolean\n * @default\n */\n controlsAboveOverlay: false,\n\n /**\n * Indicates whether the browser can be scrolled when using a touchscreen and dragging on the canvas\n * @type Boolean\n * @default\n */\n allowTouchScrolling: false,\n\n /**\n * Indicates whether this canvas will use image smoothing, this is on by default in browsers\n * @type Boolean\n * @default\n */\n imageSmoothingEnabled: true,\n\n /**\n * The transformation (in the format of Canvas transform) which focuses the viewport\n * @type Array\n * @default\n */\n viewportTransform: fabric.iMatrix.concat(),\n\n /**\n * if set to false background image is not affected by viewport transform\n * @since 1.6.3\n * @type Boolean\n * @default\n */\n backgroundVpt: true,\n\n /**\n * if set to false overlya image is not affected by viewport transform\n * @since 1.6.3\n * @type Boolean\n * @default\n */\n overlayVpt: true,\n\n /**\n * Callback; invoked right before object is about to be scaled/rotated\n * @deprecated since 2.3.0\n * Use before:transform event\n */\n onBeforeScaleRotate: function () {\n /* NOOP */\n },\n\n /**\n * When true, canvas is scaled by devicePixelRatio for better rendering on retina screens\n * @type Boolean\n * @default\n */\n enableRetinaScaling: true,\n\n /**\n * Describe canvas element extension over design\n * properties are tl,tr,bl,br.\n * if canvas is not zoomed/panned those points are the four corner of canvas\n * if canvas is viewportTransformed you those points indicate the extension\n * of canvas element in plain untrasformed coordinates\n * The coordinates get updated with @method calcViewportBoundaries.\n * @memberOf fabric.StaticCanvas.prototype\n */\n vptCoords: { },\n\n /**\n * Based on vptCoords and object.aCoords, skip rendering of objects that\n * are not included in current viewport.\n * May greatly help in applications with crowded canvas and use of zoom/pan\n * If One of the corner of the bounding box of the object is on the canvas\n * the objects get rendered.\n * @memberOf fabric.StaticCanvas.prototype\n * @type Boolean\n * @default\n */\n skipOffscreen: true,\n\n /**\n * @private\n * @param {HTMLElement | String} el <canvas> element to initialize instance on\n * @param {Object} [options] Options object\n */\n _initStatic: function(el, options) {\n var cb = this.requestRenderAllBound;\n this._objects = [];\n this._createLowerCanvas(el);\n this._initOptions(options);\n this._setImageSmoothing();\n // only initialize retina scaling once\n if (!this.interactive) {\n this._initRetinaScaling();\n }\n\n if (options.overlayImage) {\n this.setOverlayImage(options.overlayImage, cb);\n }\n if (options.backgroundImage) {\n this.setBackgroundImage(options.backgroundImage, cb);\n }\n if (options.backgroundColor) {\n this.setBackgroundColor(options.backgroundColor, cb);\n }\n if (options.overlayColor) {\n this.setOverlayColor(options.overlayColor, cb);\n }\n this.calcOffset();\n },\n\n /**\n * @private\n */\n _isRetinaScaling: function() {\n return (fabric.devicePixelRatio !== 1 && this.enableRetinaScaling);\n },\n\n /**\n * @private\n * @return {Number} retinaScaling if applied, otherwise 1;\n */\n getRetinaScaling: function() {\n return this._isRetinaScaling() ? fabric.devicePixelRatio : 1;\n },\n\n /**\n * @private\n */\n _initRetinaScaling: function() {\n if (!this._isRetinaScaling()) {\n return;\n }\n this.lowerCanvasEl.setAttribute('width', this.width * fabric.devicePixelRatio);\n this.lowerCanvasEl.setAttribute('height', this.height * fabric.devicePixelRatio);\n\n this.contextContainer.scale(fabric.devicePixelRatio, fabric.devicePixelRatio);\n },\n\n /**\n * Calculates canvas element offset relative to the document\n * This method is also attached as \"resize\" event handler of window\n * @return {fabric.Canvas} instance\n * @chainable\n */\n calcOffset: function () {\n this._offset = getElementOffset(this.lowerCanvasEl);\n return this;\n },\n\n /**\n * Sets {@link fabric.StaticCanvas#overlayImage|overlay image} for this canvas\n * @param {(fabric.Image|String)} image fabric.Image instance or URL of an image to set overlay to\n * @param {Function} callback callback to invoke when image is loaded and set as an overlay\n * @param {Object} [options] Optional options to set for the {@link fabric.Image|overlay image}.\n * @return {fabric.Canvas} thisArg\n * @chainable\n * @see {@link http://jsfiddle.net/fabricjs/MnzHT/|jsFiddle demo}\n * @example Normal overlayImage with left/top = 0\n * canvas.setOverlayImage('http://fabricjs.com/assets/jail_cell_bars.png', canvas.renderAll.bind(canvas), {\n * // Needed to position overlayImage at 0/0\n * originX: 'left',\n * originY: 'top'\n * });\n * @example overlayImage with different properties\n * canvas.setOverlayImage('http://fabricjs.com/assets/jail_cell_bars.png', canvas.renderAll.bind(canvas), {\n * opacity: 0.5,\n * angle: 45,\n * left: 400,\n * top: 400,\n * originX: 'left',\n * originY: 'top'\n * });\n * @example Stretched overlayImage #1 - width/height correspond to canvas width/height\n * fabric.Image.fromURL('http://fabricjs.com/assets/jail_cell_bars.png', function(img) {\n * img.set({width: canvas.width, height: canvas.height, originX: 'left', originY: 'top'});\n * canvas.setOverlayImage(img, canvas.renderAll.bind(canvas));\n * });\n * @example Stretched overlayImage #2 - width/height correspond to canvas width/height\n * canvas.setOverlayImage('http://fabricjs.com/assets/jail_cell_bars.png', canvas.renderAll.bind(canvas), {\n * width: canvas.width,\n * height: canvas.height,\n * // Needed to position overlayImage at 0/0\n * originX: 'left',\n * originY: 'top'\n * });\n * @example overlayImage loaded from cross-origin\n * canvas.setOverlayImage('http://fabricjs.com/assets/jail_cell_bars.png', canvas.renderAll.bind(canvas), {\n * opacity: 0.5,\n * angle: 45,\n * left: 400,\n * top: 400,\n * originX: 'left',\n * originY: 'top',\n * crossOrigin: 'anonymous'\n * });\n */\n setOverlayImage: function (image, callback, options) {\n return this.__setBgOverlayImage('overlayImage', image, callback, options);\n },\n\n /**\n * Sets {@link fabric.StaticCanvas#backgroundImage|background image} for this canvas\n * @param {(fabric.Image|String)} image fabric.Image instance or URL of an image to set background to\n * @param {Function} callback Callback to invoke when image is loaded and set as background\n * @param {Object} [options] Optional options to set for the {@link fabric.Image|background image}.\n * @return {fabric.Canvas} thisArg\n * @chainable\n * @see {@link http://jsfiddle.net/djnr8o7a/28/|jsFiddle demo}\n * @example Normal backgroundImage with left/top = 0\n * canvas.setBackgroundImage('http://fabricjs.com/assets/honey_im_subtle.png', canvas.renderAll.bind(canvas), {\n * // Needed to position backgroundImage at 0/0\n * originX: 'left',\n * originY: 'top'\n * });\n * @example backgroundImage with different properties\n * canvas.setBackgroundImage('http://fabricjs.com/assets/honey_im_subtle.png', canvas.renderAll.bind(canvas), {\n * opacity: 0.5,\n * angle: 45,\n * left: 400,\n * top: 400,\n * originX: 'left',\n * originY: 'top'\n * });\n * @example Stretched backgroundImage #1 - width/height correspond to canvas width/height\n * fabric.Image.fromURL('http://fabricjs.com/assets/honey_im_subtle.png', function(img) {\n * img.set({width: canvas.width, height: canvas.height, originX: 'left', originY: 'top'});\n * canvas.setBackgroundImage(img, canvas.renderAll.bind(canvas));\n * });\n * @example Stretched backgroundImage #2 - width/height correspond to canvas width/height\n * canvas.setBackgroundImage('http://fabricjs.com/assets/honey_im_subtle.png', canvas.renderAll.bind(canvas), {\n * width: canvas.width,\n * height: canvas.height,\n * // Needed to position backgroundImage at 0/0\n * originX: 'left',\n * originY: 'top'\n * });\n * @example backgroundImage loaded from cross-origin\n * canvas.setBackgroundImage('http://fabricjs.com/assets/honey_im_subtle.png', canvas.renderAll.bind(canvas), {\n * opacity: 0.5,\n * angle: 45,\n * left: 400,\n * top: 400,\n * originX: 'left',\n * originY: 'top',\n * crossOrigin: 'anonymous'\n * });\n */\n setBackgroundImage: function (image, callback, options) {\n return this.__setBgOverlayImage('backgroundImage', image, callback, options);\n },\n\n /**\n * Sets {@link fabric.StaticCanvas#overlayColor|foreground color} for this canvas\n * @param {(String|fabric.Pattern)} overlayColor Color or pattern to set foreground color to\n * @param {Function} callback Callback to invoke when foreground color is set\n * @return {fabric.Canvas} thisArg\n * @chainable\n * @see {@link http://jsfiddle.net/fabricjs/pB55h/|jsFiddle demo}\n * @example Normal overlayColor - color value\n * canvas.setOverlayColor('rgba(255, 73, 64, 0.6)', canvas.renderAll.bind(canvas));\n * @example fabric.Pattern used as overlayColor\n * canvas.setOverlayColor({\n * source: 'http://fabricjs.com/assets/escheresque_ste.png'\n * }, canvas.renderAll.bind(canvas));\n * @example fabric.Pattern used as overlayColor with repeat and offset\n * canvas.setOverlayColor({\n * source: 'http://fabricjs.com/assets/escheresque_ste.png',\n * repeat: 'repeat',\n * offsetX: 200,\n * offsetY: 100\n * }, canvas.renderAll.bind(canvas));\n */\n setOverlayColor: function(overlayColor, callback) {\n return this.__setBgOverlayColor('overlayColor', overlayColor, callback);\n },\n\n /**\n * Sets {@link fabric.StaticCanvas#backgroundColor|background color} for this canvas\n * @param {(String|fabric.Pattern)} backgroundColor Color or pattern to set background color to\n * @param {Function} callback Callback to invoke when background color is set\n * @return {fabric.Canvas} thisArg\n * @chainable\n * @see {@link http://jsfiddle.net/fabricjs/hXzvk/|jsFiddle demo}\n * @example Normal backgroundColor - color value\n * canvas.setBackgroundColor('rgba(255, 73, 64, 0.6)', canvas.renderAll.bind(canvas));\n * @example fabric.Pattern used as backgroundColor\n * canvas.setBackgroundColor({\n * source: 'http://fabricjs.com/assets/escheresque_ste.png'\n * }, canvas.renderAll.bind(canvas));\n * @example fabric.Pattern used as backgroundColor with repeat and offset\n * canvas.setBackgroundColor({\n * source: 'http://fabricjs.com/assets/escheresque_ste.png',\n * repeat: 'repeat',\n * offsetX: 200,\n * offsetY: 100\n * }, canvas.renderAll.bind(canvas));\n */\n setBackgroundColor: function(backgroundColor, callback) {\n return this.__setBgOverlayColor('backgroundColor', backgroundColor, callback);\n },\n\n /**\n * @private\n * @see {@link http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#dom-context-2d-imagesmoothingenabled|WhatWG Canvas Standard}\n */\n _setImageSmoothing: function() {\n var ctx = this.getContext();\n\n ctx.imageSmoothingEnabled = ctx.imageSmoothingEnabled || ctx.webkitImageSmoothingEnabled\n || ctx.mozImageSmoothingEnabled || ctx.msImageSmoothingEnabled || ctx.oImageSmoothingEnabled;\n ctx.imageSmoothingEnabled = this.imageSmoothingEnabled;\n },\n\n /**\n * @private\n * @param {String} property Property to set ({@link fabric.StaticCanvas#backgroundImage|backgroundImage}\n * or {@link fabric.StaticCanvas#overlayImage|overlayImage})\n * @param {(fabric.Image|String|null)} image fabric.Image instance, URL of an image or null to set background or overlay to\n * @param {Function} callback Callback to invoke when image is loaded and set as background or overlay\n * @param {Object} [options] Optional options to set for the {@link fabric.Image|image}.\n */\n __setBgOverlayImage: function(property, image, callback, options) {\n if (typeof image === 'string') {\n fabric.util.loadImage(image, function(img) {\n img && (this[property] = new fabric.Image(img, options));\n callback && callback(img);\n }, this, options && options.crossOrigin);\n }\n else {\n options && image.setOptions(options);\n this[property] = image;\n callback && callback(image);\n }\n\n return this;\n },\n\n /**\n * @private\n * @param {String} property Property to set ({@link fabric.StaticCanvas#backgroundColor|backgroundColor}\n * or {@link fabric.StaticCanvas#overlayColor|overlayColor})\n * @param {(Object|String|null)} color Object with pattern information, color value or null\n * @param {Function} [callback] Callback is invoked when color is set\n */\n __setBgOverlayColor: function(property, color, callback) {\n this[property] = color;\n this._initGradient(color, property);\n this._initPattern(color, property, callback);\n return this;\n },\n\n /**\n * @private\n */\n _createCanvasElement: function() {\n var element = fabric.util.createCanvasElement();\n if (!element) {\n throw CANVAS_INIT_ERROR;\n }\n if (!element.style) {\n element.style = { };\n }\n if (typeof element.getContext === 'undefined') {\n throw CANVAS_INIT_ERROR;\n }\n return element;\n },\n\n /**\n * @private\n * @param {Object} [options] Options object\n */\n _initOptions: function (options) {\n this._setOptions(options);\n\n this.width = this.width || parseInt(this.lowerCanvasEl.width, 10) || 0;\n this.height = this.height || parseInt(this.lowerCanvasEl.height, 10) || 0;\n\n if (!this.lowerCanvasEl.style) {\n return;\n }\n\n this.lowerCanvasEl.width = this.width;\n this.lowerCanvasEl.height = this.height;\n\n this.lowerCanvasEl.style.width = this.width + 'px';\n this.lowerCanvasEl.style.height = this.height + 'px';\n\n this.viewportTransform = this.viewportTransform.slice();\n },\n\n /**\n * Creates a bottom canvas\n * @private\n * @param {HTMLElement} [canvasEl]\n */\n _createLowerCanvas: function (canvasEl) {\n // canvasEl === 'HTMLCanvasElement' does not work on jsdom/node\n if (canvasEl && canvasEl.getContext) {\n this.lowerCanvasEl = canvasEl;\n }\n else {\n this.lowerCanvasEl = fabric.util.getById(canvasEl) || this._createCanvasElement();\n }\n\n fabric.util.addClass(this.lowerCanvasEl, 'lower-canvas');\n\n if (this.interactive) {\n this._applyCanvasStyle(this.lowerCanvasEl);\n }\n\n this.contextContainer = this.lowerCanvasEl.getContext('2d');\n },\n\n /**\n * Returns canvas width (in px)\n * @return {Number}\n */\n getWidth: function () {\n return this.width;\n },\n\n /**\n * Returns canvas height (in px)\n * @return {Number}\n */\n getHeight: function () {\n return this.height;\n },\n\n /**\n * Sets width of this canvas instance\n * @param {Number|String} value Value to set width to\n * @param {Object} [options] Options object\n * @param {Boolean} [options.backstoreOnly=false] Set the given dimensions only as canvas backstore dimensions\n * @param {Boolean} [options.cssOnly=false] Set the given dimensions only as css dimensions\n * @return {fabric.Canvas} instance\n * @chainable true\n */\n setWidth: function (value, options) {\n return this.setDimensions({ width: value }, options);\n },\n\n /**\n * Sets height of this canvas instance\n * @param {Number|String} value Value to set height to\n * @param {Object} [options] Options object\n * @param {Boolean} [options.backstoreOnly=false] Set the given dimensions only as canvas backstore dimensions\n * @param {Boolean} [options.cssOnly=false] Set the given dimensions only as css dimensions\n * @return {fabric.Canvas} instance\n * @chainable true\n */\n setHeight: function (value, options) {\n return this.setDimensions({ height: value }, options);\n },\n\n /**\n * Sets dimensions (width, height) of this canvas instance. when options.cssOnly flag active you should also supply the unit of measure (px/%/em)\n * @param {Object} dimensions Object with width/height properties\n * @param {Number|String} [dimensions.width] Width of canvas element\n * @param {Number|String} [dimensions.height] Height of canvas element\n * @param {Object} [options] Options object\n * @param {Boolean} [options.backstoreOnly=false] Set the given dimensions only as canvas backstore dimensions\n * @param {Boolean} [options.cssOnly=false] Set the given dimensions only as css dimensions\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n setDimensions: function (dimensions, options) {\n var cssValue;\n\n options = options || {};\n\n for (var prop in dimensions) {\n cssValue = dimensions[prop];\n\n if (!options.cssOnly) {\n this._setBackstoreDimension(prop, dimensions[prop]);\n cssValue += 'px';\n this.hasLostContext = true;\n }\n\n if (!options.backstoreOnly) {\n this._setCssDimension(prop, cssValue);\n }\n }\n if (this._isCurrentlyDrawing) {\n this.freeDrawingBrush && this.freeDrawingBrush._setBrushStyles();\n }\n this._initRetinaScaling();\n this._setImageSmoothing();\n this.calcOffset();\n\n if (!options.cssOnly) {\n this.requestRenderAll();\n }\n\n return this;\n },\n\n /**\n * Helper for setting width/height\n * @private\n * @param {String} prop property (width|height)\n * @param {Number} value value to set property to\n * @return {fabric.Canvas} instance\n * @chainable true\n */\n _setBackstoreDimension: function (prop, value) {\n this.lowerCanvasEl[prop] = value;\n\n if (this.upperCanvasEl) {\n this.upperCanvasEl[prop] = value;\n }\n\n if (this.cacheCanvasEl) {\n this.cacheCanvasEl[prop] = value;\n }\n\n this[prop] = value;\n\n return this;\n },\n\n /**\n * Helper for setting css width/height\n * @private\n * @param {String} prop property (width|height)\n * @param {String} value value to set property to\n * @return {fabric.Canvas} instance\n * @chainable true\n */\n _setCssDimension: function (prop, value) {\n this.lowerCanvasEl.style[prop] = value;\n\n if (this.upperCanvasEl) {\n this.upperCanvasEl.style[prop] = value;\n }\n\n if (this.wrapperEl) {\n this.wrapperEl.style[prop] = value;\n }\n\n return this;\n },\n\n /**\n * Returns canvas zoom level\n * @return {Number}\n */\n getZoom: function () {\n return this.viewportTransform[0];\n },\n\n /**\n * Sets viewport transform of this canvas instance\n * @param {Array} vpt the transform in the form of context.transform\n * @return {fabric.Canvas} instance\n * @chainable true\n */\n setViewportTransform: function (vpt) {\n var activeObject = this._activeObject, object, ignoreVpt = false, skipAbsolute = true, i, len;\n this.viewportTransform = vpt;\n for (i = 0, len = this._objects.length; i < len; i++) {\n object = this._objects[i];\n object.group || object.setCoords(ignoreVpt, skipAbsolute);\n }\n if (activeObject && activeObject.type === 'activeSelection') {\n activeObject.setCoords(ignoreVpt, skipAbsolute);\n }\n this.calcViewportBoundaries();\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * Sets zoom level of this canvas instance, zoom centered around point\n * @param {fabric.Point} point to zoom with respect to\n * @param {Number} value to set zoom to, less than 1 zooms out\n * @return {fabric.Canvas} instance\n * @chainable true\n */\n zoomToPoint: function (point, value) {\n // TODO: just change the scale, preserve other transformations\n var before = point, vpt = this.viewportTransform.slice(0);\n point = transformPoint(point, invertTransform(this.viewportTransform));\n vpt[0] = value;\n vpt[3] = value;\n var after = transformPoint(point, vpt);\n vpt[4] += before.x - after.x;\n vpt[5] += before.y - after.y;\n return this.setViewportTransform(vpt);\n },\n\n /**\n * Sets zoom level of this canvas instance\n * @param {Number} value to set zoom to, less than 1 zooms out\n * @return {fabric.Canvas} instance\n * @chainable true\n */\n setZoom: function (value) {\n this.zoomToPoint(new fabric.Point(0, 0), value);\n return this;\n },\n\n /**\n * Pan viewport so as to place point at top left corner of canvas\n * @param {fabric.Point} point to move to\n * @return {fabric.Canvas} instance\n * @chainable true\n */\n absolutePan: function (point) {\n var vpt = this.viewportTransform.slice(0);\n vpt[4] = -point.x;\n vpt[5] = -point.y;\n return this.setViewportTransform(vpt);\n },\n\n /**\n * Pans viewpoint relatively\n * @param {fabric.Point} point (position vector) to move by\n * @return {fabric.Canvas} instance\n * @chainable true\n */\n relativePan: function (point) {\n return this.absolutePan(new fabric.Point(\n -point.x - this.viewportTransform[4],\n -point.y - this.viewportTransform[5]\n ));\n },\n\n /**\n * Returns <canvas> element corresponding to this instance\n * @return {HTMLCanvasElement}\n */\n getElement: function () {\n return this.lowerCanvasEl;\n },\n\n /**\n * @private\n * @param {fabric.Object} obj Object that was added\n */\n _onObjectAdded: function(obj) {\n this.stateful && obj.setupState();\n obj._set('canvas', this);\n obj.setCoords();\n this.fire('object:added', { target: obj });\n obj.fire('added');\n },\n\n /**\n * @private\n * @param {fabric.Object} obj Object that was removed\n */\n _onObjectRemoved: function(obj) {\n this.fire('object:removed', { target: obj });\n obj.fire('removed');\n delete obj.canvas;\n },\n\n /**\n * Clears specified context of canvas element\n * @param {CanvasRenderingContext2D} ctx Context to clear\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n clearContext: function(ctx) {\n ctx.clearRect(0, 0, this.width, this.height);\n return this;\n },\n\n /**\n * Returns context of canvas where objects are drawn\n * @return {CanvasRenderingContext2D}\n */\n getContext: function () {\n return this.contextContainer;\n },\n\n /**\n * Clears all contexts (background, main, top) of an instance\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n clear: function () {\n this._objects.length = 0;\n this.backgroundImage = null;\n this.overlayImage = null;\n this.backgroundColor = '';\n this.overlayColor = '';\n if (this._hasITextHandlers) {\n this.off('mouse:up', this._mouseUpITextHandler);\n this._iTextInstances = null;\n this._hasITextHandlers = false;\n }\n this.clearContext(this.contextContainer);\n this.fire('canvas:cleared');\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * Renders the canvas\n * @return {fabric.Canvas} instance\n * @chainable\n */\n renderAll: function () {\n var canvasToDrawOn = this.contextContainer;\n this.renderCanvas(canvasToDrawOn, this._objects);\n return this;\n },\n\n /**\n * Function created to be instance bound at initialization\n * used in requestAnimationFrame rendering\n * Let the fabricJS call it. If you call it manually you could have more\n * animationFrame stacking on to of each other\n * for an imperative rendering, use canvas.renderAll\n * @private\n * @return {fabric.Canvas} instance\n * @chainable\n */\n renderAndReset: function() {\n this.isRendering = 0;\n this.renderAll();\n },\n\n /**\n * Append a renderAll request to next animation frame.\n * unless one is already in progress, in that case nothing is done\n * a boolean flag will avoid appending more.\n * @return {fabric.Canvas} instance\n * @chainable\n */\n requestRenderAll: function () {\n if (!this.isRendering) {\n this.isRendering = fabric.util.requestAnimFrame(this.renderAndResetBound);\n }\n return this;\n },\n\n /**\n * Calculate the position of the 4 corner of canvas with current viewportTransform.\n * helps to determinate when an object is in the current rendering viewport using\n * object absolute coordinates ( aCoords )\n * @return {Object} points.tl\n * @chainable\n */\n calcViewportBoundaries: function() {\n var points = { }, width = this.width, height = this.height,\n iVpt = invertTransform(this.viewportTransform);\n points.tl = transformPoint({ x: 0, y: 0 }, iVpt);\n points.br = transformPoint({ x: width, y: height }, iVpt);\n points.tr = new fabric.Point(points.br.x, points.tl.y);\n points.bl = new fabric.Point(points.tl.x, points.br.y);\n this.vptCoords = points;\n return points;\n },\n\n cancelRequestedRender: function() {\n if (this.isRendering) {\n fabric.util.cancelAnimFrame(this.isRendering);\n this.isRendering = 0;\n }\n },\n\n /**\n * Renders background, objects, overlay and controls.\n * @param {CanvasRenderingContext2D} ctx\n * @param {Array} objects to render\n * @return {fabric.Canvas} instance\n * @chainable\n */\n renderCanvas: function(ctx, objects) {\n var v = this.viewportTransform;\n this.cancelRequestedRender();\n this.calcViewportBoundaries();\n this.clearContext(ctx);\n this.fire('before:render');\n if (this.clipTo) {\n fabric.util.clipContext(this, ctx);\n }\n this._renderBackground(ctx);\n\n ctx.save();\n //apply viewport transform once for all rendering process\n ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]);\n this._renderObjects(ctx, objects);\n ctx.restore();\n if (!this.controlsAboveOverlay && this.interactive) {\n this.drawControls(ctx);\n }\n if (this.clipTo) {\n ctx.restore();\n }\n this._renderOverlay(ctx);\n if (this.controlsAboveOverlay && this.interactive) {\n this.drawControls(ctx);\n }\n this.fire('after:render');\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {Array} objects to render\n */\n _renderObjects: function(ctx, objects) {\n var i, len;\n for (i = 0, len = objects.length; i < len; ++i) {\n objects[i] && objects[i].render(ctx);\n }\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {string} property 'background' or 'overlay'\n */\n _renderBackgroundOrOverlay: function(ctx, property) {\n var object = this[property + 'Color'], v;\n if (object) {\n ctx.fillStyle = object.toLive\n ? object.toLive(ctx, this)\n : object;\n\n ctx.fillRect(\n object.offsetX || 0,\n object.offsetY || 0,\n this.width,\n this.height);\n }\n object = this[property + 'Image'];\n if (object) {\n if (this[property + 'Vpt']) {\n v = this.viewportTransform;\n ctx.save();\n ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]);\n }\n object.render(ctx);\n this[property + 'Vpt'] && ctx.restore();\n }\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderBackground: function(ctx) {\n this._renderBackgroundOrOverlay(ctx, 'background');\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderOverlay: function(ctx) {\n this._renderBackgroundOrOverlay(ctx, 'overlay');\n },\n\n /**\n * Returns coordinates of a center of canvas.\n * Returned value is an object with top and left properties\n * @return {Object} object with \"top\" and \"left\" number values\n */\n getCenter: function () {\n return {\n top: this.height / 2,\n left: this.width / 2\n };\n },\n\n /**\n * Centers object horizontally in the canvas\n * @param {fabric.Object} object Object to center horizontally\n * @return {fabric.Canvas} thisArg\n */\n centerObjectH: function (object) {\n return this._centerObject(object, new fabric.Point(this.getCenter().left, object.getCenterPoint().y));\n },\n\n /**\n * Centers object vertically in the canvas\n * @param {fabric.Object} object Object to center vertically\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n centerObjectV: function (object) {\n return this._centerObject(object, new fabric.Point(object.getCenterPoint().x, this.getCenter().top));\n },\n\n /**\n * Centers object vertically and horizontally in the canvas\n * @param {fabric.Object} object Object to center vertically and horizontally\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n centerObject: function(object) {\n var center = this.getCenter();\n\n return this._centerObject(object, new fabric.Point(center.left, center.top));\n },\n\n /**\n * Centers object vertically and horizontally in the viewport\n * @param {fabric.Object} object Object to center vertically and horizontally\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n viewportCenterObject: function(object) {\n var vpCenter = this.getVpCenter();\n\n return this._centerObject(object, vpCenter);\n },\n\n /**\n * Centers object horizontally in the viewport, object.top is unchanged\n * @param {fabric.Object} object Object to center vertically and horizontally\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n viewportCenterObjectH: function(object) {\n var vpCenter = this.getVpCenter();\n this._centerObject(object, new fabric.Point(vpCenter.x, object.getCenterPoint().y));\n return this;\n },\n\n /**\n * Centers object Vertically in the viewport, object.top is unchanged\n * @param {fabric.Object} object Object to center vertically and horizontally\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n viewportCenterObjectV: function(object) {\n var vpCenter = this.getVpCenter();\n\n return this._centerObject(object, new fabric.Point(object.getCenterPoint().x, vpCenter.y));\n },\n\n /**\n * Calculate the point in canvas that correspond to the center of actual viewport.\n * @return {fabric.Point} vpCenter, viewport center\n * @chainable\n */\n getVpCenter: function() {\n var center = this.getCenter(),\n iVpt = invertTransform(this.viewportTransform);\n return transformPoint({ x: center.left, y: center.top }, iVpt);\n },\n\n /**\n * @private\n * @param {fabric.Object} object Object to center\n * @param {fabric.Point} center Center point\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n _centerObject: function(object, center) {\n object.setPositionByOrigin(center, 'center', 'center');\n object.setCoords();\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * Returs dataless JSON representation of canvas\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {String} json string\n */\n toDatalessJSON: function (propertiesToInclude) {\n return this.toDatalessObject(propertiesToInclude);\n },\n\n /**\n * Returns object representation of canvas\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject: function (propertiesToInclude) {\n return this._toObjectMethod('toObject', propertiesToInclude);\n },\n\n /**\n * Returns dataless object representation of canvas\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toDatalessObject: function (propertiesToInclude) {\n return this._toObjectMethod('toDatalessObject', propertiesToInclude);\n },\n\n /**\n * @private\n */\n _toObjectMethod: function (methodName, propertiesToInclude) {\n\n var data = {\n version: fabric.version,\n objects: this._toObjects(methodName, propertiesToInclude)\n };\n\n extend(data, this.__serializeBgOverlay(methodName, propertiesToInclude));\n\n fabric.util.populateWithProperties(this, data, propertiesToInclude);\n\n return data;\n },\n\n /**\n * @private\n */\n _toObjects: function(methodName, propertiesToInclude) {\n return this._objects.filter(function(object) {\n return !object.excludeFromExport;\n }).map(function(instance) {\n return this._toObject(instance, methodName, propertiesToInclude);\n }, this);\n },\n\n /**\n * @private\n */\n _toObject: function(instance, methodName, propertiesToInclude) {\n var originalValue;\n\n if (!this.includeDefaultValues) {\n originalValue = instance.includeDefaultValues;\n instance.includeDefaultValues = false;\n }\n\n var object = instance[methodName](propertiesToInclude);\n if (!this.includeDefaultValues) {\n instance.includeDefaultValues = originalValue;\n }\n return object;\n },\n\n /**\n * @private\n */\n __serializeBgOverlay: function(methodName, propertiesToInclude) {\n var data = { }, bgImage = this.backgroundImage, overlay = this.overlayImage;\n\n if (this.backgroundColor) {\n data.background = this.backgroundColor.toObject\n ? this.backgroundColor.toObject(propertiesToInclude)\n : this.backgroundColor;\n }\n\n if (this.overlayColor) {\n data.overlay = this.overlayColor.toObject\n ? this.overlayColor.toObject(propertiesToInclude)\n : this.overlayColor;\n }\n if (bgImage && !bgImage.excludeFromExport) {\n data.backgroundImage = this._toObject(bgImage, methodName, propertiesToInclude);\n }\n if (overlay && !overlay.excludeFromExport) {\n data.overlayImage = this._toObject(overlay, methodName, propertiesToInclude);\n }\n\n return data;\n },\n\n /* _TO_SVG_START_ */\n /**\n * When true, getSvgTransform() will apply the StaticCanvas.viewportTransform to the SVG transformation. When true,\n * a zoomed canvas will then produce zoomed SVG output.\n * @type Boolean\n * @default\n */\n svgViewportTransformation: true,\n\n /**\n * Returns SVG representation of canvas\n * @function\n * @param {Object} [options] Options object for SVG output\n * @param {Boolean} [options.suppressPreamble=false] If true xml tag is not included\n * @param {Object} [options.viewBox] SVG viewbox object\n * @param {Number} [options.viewBox.x] x-cooridnate of viewbox\n * @param {Number} [options.viewBox.y] y-coordinate of viewbox\n * @param {Number} [options.viewBox.width] Width of viewbox\n * @param {Number} [options.viewBox.height] Height of viewbox\n * @param {String} [options.encoding=UTF-8] Encoding of SVG output\n * @param {String} [options.width] desired width of svg with or without units\n * @param {String} [options.height] desired height of svg with or without units\n * @param {Function} [reviver] Method for further parsing of svg elements, called after each fabric object converted into svg representation.\n * @return {String} SVG string\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#serialization}\n * @see {@link http://jsfiddle.net/fabricjs/jQ3ZZ/|jsFiddle demo}\n * @example Normal SVG output\n * var svg = canvas.toSVG();\n * @example SVG output without preamble (without <?xml ../>)\n * var svg = canvas.toSVG({suppressPreamble: true});\n * @example SVG output with viewBox attribute\n * var svg = canvas.toSVG({\n * viewBox: {\n * x: 100,\n * y: 100,\n * width: 200,\n * height: 300\n * }\n * });\n * @example SVG output with different encoding (default: UTF-8)\n * var svg = canvas.toSVG({encoding: 'ISO-8859-1'});\n * @example Modify SVG output with reviver function\n * var svg = canvas.toSVG(null, function(svg) {\n * return svg.replace('stroke-dasharray: ; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; ', '');\n * });\n */\n toSVG: function(options, reviver) {\n options || (options = { });\n\n var markup = [];\n\n this._setSVGPreamble(markup, options);\n this._setSVGHeader(markup, options);\n\n this._setSVGBgOverlayColor(markup, 'backgroundColor');\n this._setSVGBgOverlayImage(markup, 'backgroundImage', reviver);\n\n this._setSVGObjects(markup, reviver);\n\n this._setSVGBgOverlayColor(markup, 'overlayColor');\n this._setSVGBgOverlayImage(markup, 'overlayImage', reviver);\n\n markup.push('');\n\n return markup.join('');\n },\n\n /**\n * @private\n */\n _setSVGPreamble: function(markup, options) {\n if (options.suppressPreamble) {\n return;\n }\n markup.push(\n '\\n',\n '\\n'\n );\n },\n\n /**\n * @private\n */\n _setSVGHeader: function(markup, options) {\n var width = options.width || this.width,\n height = options.height || this.height,\n vpt, viewBox = 'viewBox=\"0 0 ' + this.width + ' ' + this.height + '\" ',\n NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS;\n\n if (options.viewBox) {\n viewBox = 'viewBox=\"' +\n options.viewBox.x + ' ' +\n options.viewBox.y + ' ' +\n options.viewBox.width + ' ' +\n options.viewBox.height + '\" ';\n }\n else {\n if (this.svgViewportTransformation) {\n vpt = this.viewportTransform;\n viewBox = 'viewBox=\"' +\n toFixed(-vpt[4] / vpt[0], NUM_FRACTION_DIGITS) + ' ' +\n toFixed(-vpt[5] / vpt[3], NUM_FRACTION_DIGITS) + ' ' +\n toFixed(this.width / vpt[0], NUM_FRACTION_DIGITS) + ' ' +\n toFixed(this.height / vpt[3], NUM_FRACTION_DIGITS) + '\" ';\n }\n }\n\n markup.push(\n '\\n',\n 'Created with Fabric.js ', fabric.version, '\\n',\n '\\n',\n this.createSVGFontFacesMarkup(),\n this.createSVGRefElementsMarkup(),\n '\\n'\n );\n },\n\n /**\n * Creates markup containing SVG referenced elements like patterns, gradients etc.\n * @return {String}\n */\n createSVGRefElementsMarkup: function() {\n var _this = this,\n markup = ['backgroundColor', 'overlayColor'].map(function(prop) {\n var fill = _this[prop];\n if (fill && fill.toLive) {\n return fill.toSVG(_this, false);\n }\n });\n return markup.join('');\n },\n\n /**\n * Creates markup containing SVG font faces,\n * font URLs for font faces must be collected by developers\n * and are not extracted from the DOM by fabricjs\n * @param {Array} objects Array of fabric objects\n * @return {String}\n */\n createSVGFontFacesMarkup: function() {\n var markup = '', fontList = { }, obj, fontFamily,\n style, row, rowIndex, _char, charIndex, i, len,\n fontPaths = fabric.fontPaths, objects = this._objects;\n\n for (i = 0, len = objects.length; i < len; i++) {\n obj = objects[i];\n fontFamily = obj.fontFamily;\n if (obj.type.indexOf('text') === -1 || fontList[fontFamily] || !fontPaths[fontFamily]) {\n continue;\n }\n fontList[fontFamily] = true;\n if (!obj.styles) {\n continue;\n }\n style = obj.styles;\n for (rowIndex in style) {\n row = style[rowIndex];\n for (charIndex in row) {\n _char = row[charIndex];\n fontFamily = _char.fontFamily;\n if (!fontList[fontFamily] && fontPaths[fontFamily]) {\n fontList[fontFamily] = true;\n }\n }\n }\n }\n\n for (var j in fontList) {\n markup += [\n '\\t\\t@font-face {\\n',\n '\\t\\t\\tfont-family: \\'', j, '\\';\\n',\n '\\t\\t\\tsrc: url(\\'', fontPaths[j], '\\');\\n',\n '\\t\\t}\\n'\n ].join('');\n }\n\n if (markup) {\n markup = [\n '\\t\\n'\n ].join('');\n }\n\n return markup;\n },\n\n /**\n * @private\n */\n _setSVGObjects: function(markup, reviver) {\n var instance, i, len, objects = this._objects;\n for (i = 0, len = objects.length; i < len; i++) {\n instance = objects[i];\n if (instance.excludeFromExport) {\n continue;\n }\n this._setSVGObject(markup, instance, reviver);\n }\n },\n\n /**\n * @private\n */\n _setSVGObject: function(markup, instance, reviver) {\n markup.push(instance.toSVG(reviver));\n },\n\n /**\n * @private\n */\n _setSVGBgOverlayImage: function(markup, property, reviver) {\n if (this[property] && !this[property].excludeFromExport && this[property].toSVG) {\n markup.push(this[property].toSVG(reviver));\n }\n },\n\n /**\n * @private\n */\n _setSVGBgOverlayColor: function(markup, property) {\n var filler = this[property], vpt = this.viewportTransform, finalWidth = this.width / vpt[0],\n finalHeight = this.height / vpt[3];\n if (!filler) {\n return;\n }\n if (filler.toLive) {\n var repeat = filler.repeat;\n markup.push(\n '\\n'\n );\n }\n else {\n markup.push(\n '\\n'\n );\n }\n },\n /* _TO_SVG_END_ */\n\n /**\n * Moves an object or the objects of a multiple selection\n * to the bottom of the stack of drawn objects\n * @param {fabric.Object} object Object to send to back\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n sendToBack: function (object) {\n if (!object) {\n return this;\n }\n var activeSelection = this._activeObject,\n i, obj, objs;\n if (object === activeSelection && object.type === 'activeSelection') {\n objs = activeSelection._objects;\n for (i = objs.length; i--;) {\n obj = objs[i];\n removeFromArray(this._objects, obj);\n this._objects.unshift(obj);\n }\n }\n else {\n removeFromArray(this._objects, object);\n this._objects.unshift(object);\n }\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * Moves an object or the objects of a multiple selection\n * to the top of the stack of drawn objects\n * @param {fabric.Object} object Object to send\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n bringToFront: function (object) {\n if (!object) {\n return this;\n }\n var activeSelection = this._activeObject,\n i, obj, objs;\n if (object === activeSelection && object.type === 'activeSelection') {\n objs = activeSelection._objects;\n for (i = 0; i < objs.length; i++) {\n obj = objs[i];\n removeFromArray(this._objects, obj);\n this._objects.push(obj);\n }\n }\n else {\n removeFromArray(this._objects, object);\n this._objects.push(object);\n }\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * Moves an object or a selection down in stack of drawn objects\n * An optional paramter, intersecting allowes to move the object in behind\n * the first intersecting object. Where intersection is calculated with\n * bounding box. If no intersection is found, there will not be change in the\n * stack.\n * @param {fabric.Object} object Object to send\n * @param {Boolean} [intersecting] If `true`, send object behind next lower intersecting object\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n sendBackwards: function (object, intersecting) {\n if (!object) {\n return this;\n }\n var activeSelection = this._activeObject,\n i, obj, idx, newIdx, objs, objsMoved = 0;\n\n if (object === activeSelection && object.type === 'activeSelection') {\n objs = activeSelection._objects;\n for (i = 0; i < objs.length; i++) {\n obj = objs[i];\n idx = this._objects.indexOf(obj);\n if (idx > 0 + objsMoved) {\n newIdx = idx - 1;\n removeFromArray(this._objects, obj);\n this._objects.splice(newIdx, 0, obj);\n }\n objsMoved++;\n }\n }\n else {\n idx = this._objects.indexOf(object);\n if (idx !== 0) {\n // if object is not on the bottom of stack\n newIdx = this._findNewLowerIndex(object, idx, intersecting);\n removeFromArray(this._objects, object);\n this._objects.splice(newIdx, 0, object);\n }\n }\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * @private\n */\n _findNewLowerIndex: function(object, idx, intersecting) {\n var newIdx, i;\n\n if (intersecting) {\n newIdx = idx;\n\n // traverse down the stack looking for the nearest intersecting object\n for (i = idx - 1; i >= 0; --i) {\n\n var isIntersecting = object.intersectsWithObject(this._objects[i]) ||\n object.isContainedWithinObject(this._objects[i]) ||\n this._objects[i].isContainedWithinObject(object);\n\n if (isIntersecting) {\n newIdx = i;\n break;\n }\n }\n }\n else {\n newIdx = idx - 1;\n }\n\n return newIdx;\n },\n\n /**\n * Moves an object or a selection up in stack of drawn objects\n * An optional paramter, intersecting allowes to move the object in front\n * of the first intersecting object. Where intersection is calculated with\n * bounding box. If no intersection is found, there will not be change in the\n * stack.\n * @param {fabric.Object} object Object to send\n * @param {Boolean} [intersecting] If `true`, send object in front of next upper intersecting object\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n bringForward: function (object, intersecting) {\n if (!object) {\n return this;\n }\n var activeSelection = this._activeObject,\n i, obj, idx, newIdx, objs, objsMoved = 0;\n\n if (object === activeSelection && object.type === 'activeSelection') {\n objs = activeSelection._objects;\n for (i = objs.length; i--;) {\n obj = objs[i];\n idx = this._objects.indexOf(obj);\n if (idx < this._objects.length - 1 - objsMoved) {\n newIdx = idx + 1;\n removeFromArray(this._objects, obj);\n this._objects.splice(newIdx, 0, obj);\n }\n objsMoved++;\n }\n }\n else {\n idx = this._objects.indexOf(object);\n if (idx !== this._objects.length - 1) {\n // if object is not on top of stack (last item in an array)\n newIdx = this._findNewUpperIndex(object, idx, intersecting);\n removeFromArray(this._objects, object);\n this._objects.splice(newIdx, 0, object);\n }\n }\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * @private\n */\n _findNewUpperIndex: function(object, idx, intersecting) {\n var newIdx, i, len;\n\n if (intersecting) {\n newIdx = idx;\n\n // traverse up the stack looking for the nearest intersecting object\n for (i = idx + 1, len = this._objects.length; i < len; ++i) {\n\n var isIntersecting = object.intersectsWithObject(this._objects[i]) ||\n object.isContainedWithinObject(this._objects[i]) ||\n this._objects[i].isContainedWithinObject(object);\n\n if (isIntersecting) {\n newIdx = i;\n break;\n }\n }\n }\n else {\n newIdx = idx + 1;\n }\n\n return newIdx;\n },\n\n /**\n * Moves an object to specified level in stack of drawn objects\n * @param {fabric.Object} object Object to send\n * @param {Number} index Position to move to\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n moveTo: function (object, index) {\n removeFromArray(this._objects, object);\n this._objects.splice(index, 0, object);\n return this.renderOnAddRemove && this.requestRenderAll();\n },\n\n /**\n * Clears a canvas element and dispose objects\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n dispose: function () {\n // cancel eventually ongoing renders\n if (this.isRendering) {\n fabric.util.cancelAnimFrame(this.isRendering);\n this.isRendering = 0;\n }\n this.forEachObject(function(object) {\n object.dispose && object.dispose();\n });\n this._objects = [];\n if (this.backgroundImage && this.backgroundImage.dispose) {\n this.backgroundImage.dispose();\n }\n this.backgroundImage = null;\n if (this.overlayImage && this.overlayImage.dispose) {\n this.overlayImage.dispose();\n }\n this.overlayImage = null;\n this._iTextInstances = null;\n this.contextContainer = null;\n fabric.util.cleanUpJsdomNode(this.lowerCanvasEl);\n this.lowerCanvasEl = undefined;\n return this;\n },\n\n /**\n * Returns a string representation of an instance\n * @return {String} string representation of an instance\n */\n toString: function () {\n return '#';\n }\n });\n\n extend(fabric.StaticCanvas.prototype, fabric.Observable);\n extend(fabric.StaticCanvas.prototype, fabric.Collection);\n extend(fabric.StaticCanvas.prototype, fabric.DataURLExporter);\n\n extend(fabric.StaticCanvas, /** @lends fabric.StaticCanvas */ {\n\n /**\n * @static\n * @type String\n * @default\n */\n EMPTY_JSON: '{\"objects\": [], \"background\": \"white\"}',\n\n /**\n * Provides a way to check support of some of the canvas methods\n * (either those of HTMLCanvasElement itself, or rendering context)\n *\n * @param {String} methodName Method to check support for;\n * Could be one of \"getImageData\", \"toDataURL\", \"toDataURLWithQuality\" or \"setLineDash\"\n * @return {Boolean | null} `true` if method is supported (or at least exists),\n * `null` if canvas element or context can not be initialized\n */\n supports: function (methodName) {\n var el = fabric.util.createCanvasElement();\n\n if (!el || !el.getContext) {\n return null;\n }\n\n var ctx = el.getContext('2d');\n if (!ctx) {\n return null;\n }\n\n switch (methodName) {\n\n case 'getImageData':\n return typeof ctx.getImageData !== 'undefined';\n\n case 'setLineDash':\n return typeof ctx.setLineDash !== 'undefined';\n\n case 'toDataURL':\n return typeof el.toDataURL !== 'undefined';\n\n case 'toDataURLWithQuality':\n try {\n el.toDataURL('image/jpeg', 0);\n return true;\n }\n catch (e) { }\n return false;\n\n default:\n return null;\n }\n }\n });\n\n /**\n * Returns JSON representation of canvas\n * @function\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {String} JSON string\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#serialization}\n * @see {@link http://jsfiddle.net/fabricjs/pec86/|jsFiddle demo}\n * @example JSON without additional properties\n * var json = canvas.toJSON();\n * @example JSON with additional properties included\n * var json = canvas.toJSON(['lockMovementX', 'lockMovementY', 'lockRotation', 'lockScalingX', 'lockScalingY', 'lockUniScaling']);\n * @example JSON without default values\n * canvas.includeDefaultValues = false;\n * var json = canvas.toJSON();\n */\n fabric.StaticCanvas.prototype.toJSON = fabric.StaticCanvas.prototype.toObject;\n\n if (fabric.isLikelyNode) {\n fabric.StaticCanvas.prototype.createPNGStream = function() {\n var impl = fabric.util.getNodeCanvas(this.lowerCanvasEl);\n return impl && impl.createPNGStream();\n };\n fabric.StaticCanvas.prototype.createJPEGStream = function(opts) {\n var impl = fabric.util.getNodeCanvas(this.lowerCanvasEl);\n return impl && impl.createJPEGStream(opts);\n };\n }\n})();\n\n\n/**\n * BaseBrush class\n * @class fabric.BaseBrush\n * @see {@link http://fabricjs.com/freedrawing|Freedrawing demo}\n */\nfabric.BaseBrush = fabric.util.createClass(/** @lends fabric.BaseBrush.prototype */ {\n\n /**\n * Color of a brush\n * @type String\n * @default\n */\n color: 'rgb(0, 0, 0)',\n\n /**\n * Width of a brush, has to be a Number, no string literals\n * @type Number\n * @default\n */\n width: 1,\n\n /**\n * Shadow object representing shadow of this shape.\n * Backwards incompatibility note: This property replaces \"shadowColor\" (String), \"shadowOffsetX\" (Number),\n * \"shadowOffsetY\" (Number) and \"shadowBlur\" (Number) since v1.2.12\n * @type fabric.Shadow\n * @default\n */\n shadow: null,\n\n /**\n * Line endings style of a brush (one of \"butt\", \"round\", \"square\")\n * @type String\n * @default\n */\n strokeLineCap: 'round',\n\n /**\n * Corner style of a brush (one of \"bevel\", \"round\", \"miter\")\n * @type String\n * @default\n */\n strokeLineJoin: 'round',\n\n /**\n * Maximum miter length (used for strokeLineJoin = \"miter\") of a brush's\n * @type Number\n * @default\n */\n strokeMiterLimit: 10,\n\n /**\n * Stroke Dash Array.\n * @type Array\n * @default\n */\n strokeDashArray: null,\n\n /**\n * Sets shadow of an object\n * @param {Object|String} [options] Options object or string (e.g. \"2px 2px 10px rgba(0,0,0,0.2)\")\n * @return {fabric.Object} thisArg\n * @chainable\n */\n setShadow: function(options) {\n this.shadow = new fabric.Shadow(options);\n return this;\n },\n\n /**\n * Sets brush styles\n * @private\n */\n _setBrushStyles: function() {\n var ctx = this.canvas.contextTop;\n ctx.strokeStyle = this.color;\n ctx.lineWidth = this.width;\n ctx.lineCap = this.strokeLineCap;\n ctx.miterLimit = this.strokeMiterLimit;\n ctx.lineJoin = this.strokeLineJoin;\n if (fabric.StaticCanvas.supports('setLineDash')) {\n ctx.setLineDash(this.strokeDashArray || []);\n }\n },\n\n /**\n * Sets the transformation on given context\n * @param {RenderingContext2d} ctx context to render on\n * @private\n */\n _saveAndTransform: function(ctx) {\n var v = this.canvas.viewportTransform;\n ctx.save();\n ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]);\n },\n\n /**\n * Sets brush shadow styles\n * @private\n */\n _setShadow: function() {\n if (!this.shadow) {\n return;\n }\n\n var ctx = this.canvas.contextTop,\n zoom = this.canvas.getZoom();\n\n ctx.shadowColor = this.shadow.color;\n ctx.shadowBlur = this.shadow.blur * zoom;\n ctx.shadowOffsetX = this.shadow.offsetX * zoom;\n ctx.shadowOffsetY = this.shadow.offsetY * zoom;\n },\n\n /**\n * Removes brush shadow styles\n * @private\n */\n _resetShadow: function() {\n var ctx = this.canvas.contextTop;\n\n ctx.shadowColor = '';\n ctx.shadowBlur = ctx.shadowOffsetX = ctx.shadowOffsetY = 0;\n }\n});\n\n\n(function() {\n\n /**\n * PencilBrush class\n * @class fabric.PencilBrush\n * @extends fabric.BaseBrush\n */\n fabric.PencilBrush = fabric.util.createClass(fabric.BaseBrush, /** @lends fabric.PencilBrush.prototype */ {\n\n /**\n * Constructor\n * @param {fabric.Canvas} canvas\n * @return {fabric.PencilBrush} Instance of a pencil brush\n */\n initialize: function(canvas) {\n this.canvas = canvas;\n this._points = [];\n },\n\n /**\n * Invoked inside on mouse down and mouse move\n * @param {Object} pointer\n */\n _drawSegment: function (ctx, p1, p2) {\n var midPoint = p1.midPointFrom(p2);\n ctx.quadraticCurveTo(p1.x, p1.y, midPoint.x, midPoint.y);\n return midPoint;\n },\n\n /**\n * Inovoked on mouse down\n * @param {Object} pointer\n */\n onMouseDown: function(pointer) {\n this._prepareForDrawing(pointer);\n // capture coordinates immediately\n // this allows to draw dots (when movement never occurs)\n this._captureDrawingPath(pointer);\n this._render();\n },\n\n /**\n * Inovoked on mouse move\n * @param {Object} pointer\n */\n onMouseMove: function(pointer) {\n if (this._captureDrawingPath(pointer) && this._points.length > 1) {\n if (this.needsFullRender) {\n // redraw curve\n // clear top canvas\n this.canvas.clearContext(this.canvas.contextTop);\n this._render();\n }\n else {\n var points = this._points, length = points.length, ctx = this.canvas.contextTop;\n // draw the curve update\n this._saveAndTransform(ctx);\n if (this.oldEnd) {\n ctx.beginPath();\n ctx.moveTo(this.oldEnd.x, this.oldEnd.y);\n }\n this.oldEnd = this._drawSegment(ctx, points[length - 2], points[length - 1], true);\n ctx.stroke();\n ctx.restore();\n }\n }\n },\n\n /**\n * Invoked on mouse up\n */\n onMouseUp: function() {\n this.oldEnd = undefined;\n this._finalizeAndAddPath();\n },\n\n /**\n * @private\n * @param {Object} pointer Actual mouse position related to the canvas.\n */\n _prepareForDrawing: function(pointer) {\n\n var p = new fabric.Point(pointer.x, pointer.y);\n\n this._reset();\n this._addPoint(p);\n this.canvas.contextTop.moveTo(p.x, p.y);\n },\n\n /**\n * @private\n * @param {fabric.Point} point Point to be added to points array\n */\n _addPoint: function(point) {\n if (this._points.length > 1 && point.eq(this._points[this._points.length - 1])) {\n return false;\n }\n this._points.push(point);\n return true;\n },\n\n /**\n * Clear points array and set contextTop canvas style.\n * @private\n */\n _reset: function() {\n this._points.length = 0;\n this._setBrushStyles();\n var color = new fabric.Color(this.color);\n this.needsFullRender = (color.getAlpha() < 1);\n this._setShadow();\n },\n\n /**\n * @private\n * @param {Object} pointer Actual mouse position related to the canvas.\n */\n _captureDrawingPath: function(pointer) {\n var pointerPoint = new fabric.Point(pointer.x, pointer.y);\n return this._addPoint(pointerPoint);\n },\n\n /**\n * Draw a smooth path on the topCanvas using quadraticCurveTo\n * @private\n */\n _render: function() {\n var ctx = this.canvas.contextTop, i, len,\n p1 = this._points[0],\n p2 = this._points[1];\n\n this._saveAndTransform(ctx);\n ctx.beginPath();\n //if we only have 2 points in the path and they are the same\n //it means that the user only clicked the canvas without moving the mouse\n //then we should be drawing a dot. A path isn't drawn between two identical dots\n //that's why we set them apart a bit\n if (this._points.length === 2 && p1.x === p2.x && p1.y === p2.y) {\n var width = this.width / 1000;\n p1 = new fabric.Point(p1.x, p1.y);\n p2 = new fabric.Point(p2.x, p2.y);\n p1.x -= width;\n p2.x += width;\n }\n ctx.moveTo(p1.x, p1.y);\n\n for (i = 1, len = this._points.length; i < len; i++) {\n // we pick the point between pi + 1 & pi + 2 as the\n // end point and p1 as our control point.\n this._drawSegment(ctx, p1, p2);\n p1 = this._points[i];\n p2 = this._points[i + 1];\n }\n // Draw last line as a straight line while\n // we wait for the next point to be able to calculate\n // the bezier control point\n ctx.lineTo(p1.x, p1.y);\n ctx.stroke();\n ctx.restore();\n },\n\n /**\n * Converts points to SVG path\n * @param {Array} points Array of points\n * @return {String} SVG path\n */\n convertPointsToSVGPath: function(points) {\n var path = [], i, width = this.width / 1000,\n p1 = new fabric.Point(points[0].x, points[0].y),\n p2 = new fabric.Point(points[1].x, points[1].y),\n len = points.length, multSignX = 1, multSignY = 1, manyPoints = len > 2;\n\n if (manyPoints) {\n multSignX = points[2].x < p2.x ? -1 : points[2].x === p2.x ? 0 : 1;\n multSignY = points[2].y < p2.y ? -1 : points[2].y === p2.y ? 0 : 1;\n }\n path.push('M ', p1.x - multSignX * width, ' ', p1.y - multSignY * width, ' ');\n for (i = 1; i < len; i++) {\n if (!p1.eq(p2)) {\n var midPoint = p1.midPointFrom(p2);\n // p1 is our bezier control point\n // midpoint is our endpoint\n // start point is p(i-1) value.\n path.push('Q ', p1.x, ' ', p1.y, ' ', midPoint.x, ' ', midPoint.y, ' ');\n }\n p1 = points[i];\n if ((i + 1) < points.length) {\n p2 = points[i + 1];\n }\n }\n if (manyPoints) {\n multSignX = p1.x > points[i - 2].x ? 1 : p1.x === points[i - 2].x ? 0 : -1;\n multSignY = p1.y > points[i - 2].y ? 1 : p1.y === points[i - 2].y ? 0 : -1;\n }\n path.push('L ', p1.x + multSignX * width, ' ', p1.y + multSignY * width);\n return path;\n },\n\n /**\n * Creates fabric.Path object to add on canvas\n * @param {String} pathData Path data\n * @return {fabric.Path} Path to add on canvas\n */\n createPath: function(pathData) {\n var path = new fabric.Path(pathData, {\n fill: null,\n stroke: this.color,\n strokeWidth: this.width,\n strokeLineCap: this.strokeLineCap,\n strokeMiterLimit: this.strokeMiterLimit,\n strokeLineJoin: this.strokeLineJoin,\n strokeDashArray: this.strokeDashArray,\n });\n var position = new fabric.Point(path.left + path.width / 2, path.top + path.height / 2);\n position = path.translateToGivenOrigin(position, 'center', 'center', path.originX, path.originY);\n path.top = position.y;\n path.left = position.x;\n if (this.shadow) {\n this.shadow.affectStroke = true;\n path.setShadow(this.shadow);\n }\n\n return path;\n },\n\n /**\n * On mouseup after drawing the path on contextTop canvas\n * we use the points captured to create an new fabric path object\n * and add it to the fabric canvas.\n */\n _finalizeAndAddPath: function() {\n var ctx = this.canvas.contextTop;\n ctx.closePath();\n\n var pathData = this.convertPointsToSVGPath(this._points).join('');\n if (pathData === 'M 0 0 Q 0 0 0 0 L 0 0') {\n // do not create 0 width/height paths, as they are\n // rendered inconsistently across browsers\n // Firefox 4, for example, renders a dot,\n // whereas Chrome 10 renders nothing\n this.canvas.requestRenderAll();\n return;\n }\n\n var path = this.createPath(pathData);\n this.canvas.clearContext(this.canvas.contextTop);\n this.canvas.add(path);\n this.canvas.renderAll();\n path.setCoords();\n this._resetShadow();\n\n\n // fire event 'path' created\n this.canvas.fire('path:created', { path: path });\n }\n });\n})();\n\n\n/**\n * CircleBrush class\n * @class fabric.CircleBrush\n */\nfabric.CircleBrush = fabric.util.createClass(fabric.BaseBrush, /** @lends fabric.CircleBrush.prototype */ {\n\n /**\n * Width of a brush\n * @type Number\n * @default\n */\n width: 10,\n\n /**\n * Constructor\n * @param {fabric.Canvas} canvas\n * @return {fabric.CircleBrush} Instance of a circle brush\n */\n initialize: function(canvas) {\n this.canvas = canvas;\n this.points = [];\n },\n\n /**\n * Invoked inside on mouse down and mouse move\n * @param {Object} pointer\n */\n drawDot: function(pointer) {\n var point = this.addPoint(pointer),\n ctx = this.canvas.contextTop;\n this._saveAndTransform(ctx);\n ctx.fillStyle = point.fill;\n ctx.beginPath();\n ctx.arc(point.x, point.y, point.radius, 0, Math.PI * 2, false);\n ctx.closePath();\n ctx.fill();\n\n ctx.restore();\n },\n\n /**\n * Invoked on mouse down\n */\n onMouseDown: function(pointer) {\n this.points.length = 0;\n this.canvas.clearContext(this.canvas.contextTop);\n this._setShadow();\n this.drawDot(pointer);\n },\n\n /**\n * Render the full state of the brush\n * @private\n */\n _render: function() {\n var ctx = this.canvas.contextTop, i, len,\n points = this.points, point;\n this._saveAndTransform(ctx);\n for (i = 0, len = points.length; i < len; i++) {\n point = points[i];\n ctx.fillStyle = point.fill;\n ctx.beginPath();\n ctx.arc(point.x, point.y, point.radius, 0, Math.PI * 2, false);\n ctx.closePath();\n ctx.fill();\n }\n ctx.restore();\n },\n\n /**\n * Invoked on mouse move\n * @param {Object} pointer\n */\n onMouseMove: function(pointer) {\n this.drawDot(pointer);\n },\n\n /**\n * Invoked on mouse up\n */\n onMouseUp: function() {\n var originalRenderOnAddRemove = this.canvas.renderOnAddRemove, i, len;\n this.canvas.renderOnAddRemove = false;\n\n var circles = [];\n\n for (i = 0, len = this.points.length; i < len; i++) {\n var point = this.points[i],\n circle = new fabric.Circle({\n radius: point.radius,\n left: point.x,\n top: point.y,\n originX: 'center',\n originY: 'center',\n fill: point.fill\n });\n\n this.shadow && circle.setShadow(this.shadow);\n\n circles.push(circle);\n }\n var group = new fabric.Group(circles);\n group.canvas = this.canvas;\n\n this.canvas.add(group);\n this.canvas.fire('path:created', { path: group });\n\n this.canvas.clearContext(this.canvas.contextTop);\n this._resetShadow();\n this.canvas.renderOnAddRemove = originalRenderOnAddRemove;\n this.canvas.requestRenderAll();\n },\n\n /**\n * @param {Object} pointer\n * @return {fabric.Point} Just added pointer point\n */\n addPoint: function(pointer) {\n var pointerPoint = new fabric.Point(pointer.x, pointer.y),\n\n circleRadius = fabric.util.getRandomInt(\n Math.max(0, this.width - 20), this.width + 20) / 2,\n\n circleColor = new fabric.Color(this.color)\n .setAlpha(fabric.util.getRandomInt(0, 100) / 100)\n .toRgba();\n\n pointerPoint.radius = circleRadius;\n pointerPoint.fill = circleColor;\n\n this.points.push(pointerPoint);\n\n return pointerPoint;\n }\n});\n\n\n/**\n * SprayBrush class\n * @class fabric.SprayBrush\n */\nfabric.SprayBrush = fabric.util.createClass( fabric.BaseBrush, /** @lends fabric.SprayBrush.prototype */ {\n\n /**\n * Width of a spray\n * @type Number\n * @default\n */\n width: 10,\n\n /**\n * Density of a spray (number of dots per chunk)\n * @type Number\n * @default\n */\n density: 20,\n\n /**\n * Width of spray dots\n * @type Number\n * @default\n */\n dotWidth: 1,\n\n /**\n * Width variance of spray dots\n * @type Number\n * @default\n */\n dotWidthVariance: 1,\n\n /**\n * Whether opacity of a dot should be random\n * @type Boolean\n * @default\n */\n randomOpacity: false,\n\n /**\n * Whether overlapping dots (rectangles) should be removed (for performance reasons)\n * @type Boolean\n * @default\n */\n optimizeOverlapping: true,\n\n /**\n * Constructor\n * @param {fabric.Canvas} canvas\n * @return {fabric.SprayBrush} Instance of a spray brush\n */\n initialize: function(canvas) {\n this.canvas = canvas;\n this.sprayChunks = [];\n },\n\n /**\n * Invoked on mouse down\n * @param {Object} pointer\n */\n onMouseDown: function(pointer) {\n this.sprayChunks.length = 0;\n this.canvas.clearContext(this.canvas.contextTop);\n this._setShadow();\n\n this.addSprayChunk(pointer);\n this.render(this.sprayChunkPoints);\n },\n\n /**\n * Invoked on mouse move\n * @param {Object} pointer\n */\n onMouseMove: function(pointer) {\n this.addSprayChunk(pointer);\n this.render(this.sprayChunkPoints);\n },\n\n /**\n * Invoked on mouse up\n */\n onMouseUp: function() {\n var originalRenderOnAddRemove = this.canvas.renderOnAddRemove;\n this.canvas.renderOnAddRemove = false;\n\n var rects = [];\n\n for (var i = 0, ilen = this.sprayChunks.length; i < ilen; i++) {\n var sprayChunk = this.sprayChunks[i];\n\n for (var j = 0, jlen = sprayChunk.length; j < jlen; j++) {\n\n var rect = new fabric.Rect({\n width: sprayChunk[j].width,\n height: sprayChunk[j].width,\n left: sprayChunk[j].x + 1,\n top: sprayChunk[j].y + 1,\n originX: 'center',\n originY: 'center',\n fill: this.color\n });\n rects.push(rect);\n }\n }\n\n if (this.optimizeOverlapping) {\n rects = this._getOptimizedRects(rects);\n }\n\n var group = new fabric.Group(rects);\n this.shadow && group.setShadow(this.shadow);\n this.canvas.add(group);\n this.canvas.fire('path:created', { path: group });\n\n this.canvas.clearContext(this.canvas.contextTop);\n this._resetShadow();\n this.canvas.renderOnAddRemove = originalRenderOnAddRemove;\n this.canvas.requestRenderAll();\n },\n\n /**\n * @private\n * @param {Array} rects\n */\n _getOptimizedRects: function(rects) {\n\n // avoid creating duplicate rects at the same coordinates\n var uniqueRects = { }, key, i, len;\n\n for (i = 0, len = rects.length; i < len; i++) {\n key = rects[i].left + '' + rects[i].top;\n if (!uniqueRects[key]) {\n uniqueRects[key] = rects[i];\n }\n }\n var uniqueRectsArray = [];\n for (key in uniqueRects) {\n uniqueRectsArray.push(uniqueRects[key]);\n }\n\n return uniqueRectsArray;\n },\n\n /**\n * Render new chunk of spray brush\n */\n render: function(sprayChunk) {\n var ctx = this.canvas.contextTop, i, len;\n ctx.fillStyle = this.color;\n\n this._saveAndTransform(ctx);\n\n for (i = 0, len = sprayChunk.length; i < len; i++) {\n var point = sprayChunk[i];\n if (typeof point.opacity !== 'undefined') {\n ctx.globalAlpha = point.opacity;\n }\n ctx.fillRect(point.x, point.y, point.width, point.width);\n }\n ctx.restore();\n },\n\n /**\n * Render all spray chunks\n */\n _render: function() {\n var ctx = this.canvas.contextTop, i, ilen;\n ctx.fillStyle = this.color;\n\n this._saveAndTransform(ctx);\n\n for (i = 0, ilen = this.sprayChunks.length; i < ilen; i++) {\n this.render(this.sprayChunks[i]);\n }\n ctx.restore();\n },\n\n /**\n * @param {Object} pointer\n */\n addSprayChunk: function(pointer) {\n this.sprayChunkPoints = [];\n\n var x, y, width, radius = this.width / 2, i;\n\n for (i = 0; i < this.density; i++) {\n\n x = fabric.util.getRandomInt(pointer.x - radius, pointer.x + radius);\n y = fabric.util.getRandomInt(pointer.y - radius, pointer.y + radius);\n\n if (this.dotWidthVariance) {\n width = fabric.util.getRandomInt(\n // bottom clamp width to 1\n Math.max(1, this.dotWidth - this.dotWidthVariance),\n this.dotWidth + this.dotWidthVariance);\n }\n else {\n width = this.dotWidth;\n }\n\n var point = new fabric.Point(x, y);\n point.width = width;\n\n if (this.randomOpacity) {\n point.opacity = fabric.util.getRandomInt(0, 100) / 100;\n }\n\n this.sprayChunkPoints.push(point);\n }\n\n this.sprayChunks.push(this.sprayChunkPoints);\n }\n});\n\n\n/**\n * PatternBrush class\n * @class fabric.PatternBrush\n * @extends fabric.BaseBrush\n */\nfabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @lends fabric.PatternBrush.prototype */ {\n\n getPatternSrc: function() {\n\n var dotWidth = 20,\n dotDistance = 5,\n patternCanvas = fabric.util.createCanvasElement(),\n patternCtx = patternCanvas.getContext('2d');\n\n patternCanvas.width = patternCanvas.height = dotWidth + dotDistance;\n\n patternCtx.fillStyle = this.color;\n patternCtx.beginPath();\n patternCtx.arc(dotWidth / 2, dotWidth / 2, dotWidth / 2, 0, Math.PI * 2, false);\n patternCtx.closePath();\n patternCtx.fill();\n\n return patternCanvas;\n },\n\n getPatternSrcFunction: function() {\n return String(this.getPatternSrc).replace('this.color', '\"' + this.color + '\"');\n },\n\n /**\n * Creates \"pattern\" instance property\n */\n getPattern: function() {\n return this.canvas.contextTop.createPattern(this.source || this.getPatternSrc(), 'repeat');\n },\n\n /**\n * Sets brush styles\n */\n _setBrushStyles: function() {\n this.callSuper('_setBrushStyles');\n this.canvas.contextTop.strokeStyle = this.getPattern();\n },\n\n /**\n * Creates path\n */\n createPath: function(pathData) {\n var path = this.callSuper('createPath', pathData),\n topLeft = path._getLeftTopCoords().scalarAdd(path.strokeWidth / 2);\n\n path.stroke = new fabric.Pattern({\n source: this.source || this.getPatternSrcFunction(),\n offsetX: -topLeft.x,\n offsetY: -topLeft.y\n });\n return path;\n }\n});\n\n\n(function() {\n\n var getPointer = fabric.util.getPointer,\n degreesToRadians = fabric.util.degreesToRadians,\n radiansToDegrees = fabric.util.radiansToDegrees,\n atan2 = Math.atan2,\n abs = Math.abs,\n supportLineDash = fabric.StaticCanvas.supports('setLineDash'),\n\n STROKE_OFFSET = 0.5;\n\n /**\n * Canvas class\n * @class fabric.Canvas\n * @extends fabric.StaticCanvas\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-1#canvas}\n * @see {@link fabric.Canvas#initialize} for constructor definition\n *\n * @fires object:modified\n * @fires object:rotated\n * @fires object:scaled\n * @fires object:moved\n * @fires object:skewed\n * @fires object:rotating\n * @fires object:scaling\n * @fires object:moving\n * @fires object:skewing\n * @fires object:selected this event is deprecated. use selection:created\n *\n * @fires before:transform\n * @fires before:selection:cleared\n * @fires selection:cleared\n * @fires selection:updated\n * @fires selection:created\n *\n * @fires path:created\n * @fires mouse:down\n * @fires mouse:move\n * @fires mouse:up\n * @fires mouse:down:before\n * @fires mouse:move:before\n * @fires mouse:up:before\n * @fires mouse:over\n * @fires mouse:out\n * @fires mouse:dblclick\n *\n * @fires dragover\n * @fires dragenter\n * @fires dragleave\n * @fires drop\n *\n */\n fabric.Canvas = fabric.util.createClass(fabric.StaticCanvas, /** @lends fabric.Canvas.prototype */ {\n\n /**\n * Constructor\n * @param {HTMLElement | String} el <canvas> element to initialize instance on\n * @param {Object} [options] Options object\n * @return {Object} thisArg\n */\n initialize: function(el, options) {\n options || (options = { });\n this.renderAndResetBound = this.renderAndReset.bind(this);\n this.requestRenderAllBound = this.requestRenderAll.bind(this);\n this._initStatic(el, options);\n this._initInteractive();\n this._createCacheCanvas();\n },\n\n /**\n * When true, objects can be transformed by one side (unproportionally)\n * @type Boolean\n * @default\n */\n uniScaleTransform: false,\n\n /**\n * Indicates which key enable unproportional scaling\n * values: 'altKey', 'shiftKey', 'ctrlKey'.\n * If `null` or 'none' or any other string that is not a modifier key\n * feature is disabled feature disabled.\n * @since 1.6.2\n * @type String\n * @default\n */\n uniScaleKey: 'shiftKey',\n\n /**\n * When true, objects use center point as the origin of scale transformation.\n * Backwards incompatibility note: This property replaces \"centerTransform\" (Boolean).\n * @since 1.3.4\n * @type Boolean\n * @default\n */\n centeredScaling: false,\n\n /**\n * When true, objects use center point as the origin of rotate transformation.\n * Backwards incompatibility note: This property replaces \"centerTransform\" (Boolean).\n * @since 1.3.4\n * @type Boolean\n * @default\n */\n centeredRotation: false,\n\n /**\n * Indicates which key enable centered Transform\n * values: 'altKey', 'shiftKey', 'ctrlKey'.\n * If `null` or 'none' or any other string that is not a modifier key\n * feature is disabled feature disabled.\n * @since 1.6.2\n * @type String\n * @default\n */\n centeredKey: 'altKey',\n\n /**\n * Indicates which key enable alternate action on corner\n * values: 'altKey', 'shiftKey', 'ctrlKey'.\n * If `null` or 'none' or any other string that is not a modifier key\n * feature is disabled feature disabled.\n * @since 1.6.2\n * @type String\n * @default\n */\n altActionKey: 'shiftKey',\n\n /**\n * Indicates that canvas is interactive. This property should not be changed.\n * @type Boolean\n * @default\n */\n interactive: true,\n\n /**\n * Indicates whether group selection should be enabled\n * @type Boolean\n * @default\n */\n selection: true,\n\n /**\n * Indicates which key or keys enable multiple click selection\n * Pass value as a string or array of strings\n * values: 'altKey', 'shiftKey', 'ctrlKey'.\n * If `null` or empty or containing any other string that is not a modifier key\n * feature is disabled.\n * @since 1.6.2\n * @type String|Array\n * @default\n */\n selectionKey: 'shiftKey',\n\n /**\n * Indicates which key enable alternative selection\n * in case of target overlapping with active object\n * values: 'altKey', 'shiftKey', 'ctrlKey'.\n * For a series of reason that come from the general expectations on how\n * things should work, this feature works only for preserveObjectStacking true.\n * If `null` or 'none' or any other string that is not a modifier key\n * feature is disabled.\n * @since 1.6.5\n * @type null|String\n * @default\n */\n altSelectionKey: null,\n\n /**\n * Color of selection\n * @type String\n * @default\n */\n selectionColor: 'rgba(100, 100, 255, 0.3)', // blue\n\n /**\n * Default dash array pattern\n * If not empty the selection border is dashed\n * @type Array\n */\n selectionDashArray: [],\n\n /**\n * Color of the border of selection (usually slightly darker than color of selection itself)\n * @type String\n * @default\n */\n selectionBorderColor: 'rgba(255, 255, 255, 0.3)',\n\n /**\n * Width of a line used in object/group selection\n * @type Number\n * @default\n */\n selectionLineWidth: 1,\n\n /**\n * Select only shapes that are fully contained in the dragged selection rectangle.\n * @type Boolean\n * @default\n */\n selectionFullyContained: false,\n\n /**\n * Default cursor value used when hovering over an object on canvas\n * @type String\n * @default\n */\n hoverCursor: 'move',\n\n /**\n * Default cursor value used when moving an object on canvas\n * @type String\n * @default\n */\n moveCursor: 'move',\n\n /**\n * Default cursor value used for the entire canvas\n * @type String\n * @default\n */\n defaultCursor: 'default',\n\n /**\n * Cursor value used during free drawing\n * @type String\n * @default\n */\n freeDrawingCursor: 'crosshair',\n\n /**\n * Cursor value used for rotation point\n * @type String\n * @default\n */\n rotationCursor: 'crosshair',\n\n /**\n * Cursor value used for disabled elements ( corners with disabled action )\n * @type String\n * @since 2.0.0\n * @default\n */\n notAllowedCursor: 'not-allowed',\n\n /**\n * Default element class that's given to wrapper (div) element of canvas\n * @type String\n * @default\n */\n containerClass: 'canvas-container',\n\n /**\n * When true, object detection happens on per-pixel basis rather than on per-bounding-box\n * @type Boolean\n * @default\n */\n perPixelTargetFind: false,\n\n /**\n * Number of pixels around target pixel to tolerate (consider active) during object detection\n * @type Number\n * @default\n */\n targetFindTolerance: 0,\n\n /**\n * When true, target detection is skipped when hovering over canvas. This can be used to improve performance.\n * @type Boolean\n * @default\n */\n skipTargetFind: false,\n\n /**\n * When true, mouse events on canvas (mousedown/mousemove/mouseup) result in free drawing.\n * After mousedown, mousemove creates a shape,\n * and then mouseup finalizes it and adds an instance of `fabric.Path` onto canvas.\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-4#free_drawing}\n * @type Boolean\n * @default\n */\n isDrawingMode: false,\n\n /**\n * Indicates whether objects should remain in current stack position when selected.\n * When false objects are brought to top and rendered as part of the selection group\n * @type Boolean\n * @default\n */\n preserveObjectStacking: false,\n\n /**\n * Indicates the angle that an object will lock to while rotating.\n * @type Number\n * @since 1.6.7\n * @default\n */\n snapAngle: 0,\n\n /**\n * Indicates the distance from the snapAngle the rotation will lock to the snapAngle.\n * When `null`, the snapThreshold will default to the snapAngle.\n * @type null|Number\n * @since 1.6.7\n * @default\n */\n snapThreshold: null,\n\n /**\n * Indicates if the right click on canvas can output the context menu or not\n * @type Boolean\n * @since 1.6.5\n * @default\n */\n stopContextMenu: false,\n\n /**\n * Indicates if the canvas can fire right click events\n * @type Boolean\n * @since 1.6.5\n * @default\n */\n fireRightClick: false,\n\n /**\n * Indicates if the canvas can fire middle click events\n * @type Boolean\n * @since 1.7.8\n * @default\n */\n fireMiddleClick: false,\n\n /**\n * @private\n */\n _initInteractive: function() {\n this._currentTransform = null;\n this._groupSelector = null;\n this._initWrapperElement();\n this._createUpperCanvas();\n this._initEventListeners();\n\n this._initRetinaScaling();\n\n this.freeDrawingBrush = fabric.PencilBrush && new fabric.PencilBrush(this);\n\n this.calcOffset();\n },\n\n /**\n * Divides objects in two groups, one to render immediately\n * and one to render as activeGroup.\n * @return {Array} objects to render immediately and pushes the other in the activeGroup.\n */\n _chooseObjectsToRender: function() {\n var activeObjects = this.getActiveObjects(),\n object, objsToRender, activeGroupObjects;\n\n if (activeObjects.length > 0 && !this.preserveObjectStacking) {\n objsToRender = [];\n activeGroupObjects = [];\n for (var i = 0, length = this._objects.length; i < length; i++) {\n object = this._objects[i];\n if (activeObjects.indexOf(object) === -1 ) {\n objsToRender.push(object);\n }\n else {\n activeGroupObjects.push(object);\n }\n }\n if (activeObjects.length > 1) {\n this._activeObject._objects = activeGroupObjects;\n }\n objsToRender.push.apply(objsToRender, activeGroupObjects);\n }\n else {\n objsToRender = this._objects;\n }\n return objsToRender;\n },\n\n /**\n * Renders both the top canvas and the secondary container canvas.\n * @return {fabric.Canvas} instance\n * @chainable\n */\n renderAll: function () {\n if (this.contextTopDirty && !this._groupSelector && !this.isDrawingMode) {\n this.clearContext(this.contextTop);\n this.contextTopDirty = false;\n }\n if (this.hasLostContext) {\n this.renderTopLayer(this.contextTop);\n }\n var canvasToDrawOn = this.contextContainer;\n this.renderCanvas(canvasToDrawOn, this._chooseObjectsToRender());\n return this;\n },\n\n renderTopLayer: function(ctx) {\n if (this.isDrawingMode && this._isCurrentlyDrawing) {\n this.freeDrawingBrush && this.freeDrawingBrush._render();\n }\n // we render the top context - last object\n if (this.selection && this._groupSelector) {\n this._drawSelection(ctx);\n }\n },\n\n /**\n * Method to render only the top canvas.\n * Also used to render the group selection box.\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n renderTop: function () {\n var ctx = this.contextTop;\n this.clearContext(ctx);\n this.renderTopLayer(ctx);\n this.fire('after:render');\n this.contextTopDirty = true;\n return this;\n },\n\n /**\n * Resets the current transform to its original values and chooses the type of resizing based on the event\n * @private\n */\n _resetCurrentTransform: function() {\n var t = this._currentTransform;\n\n t.target.set({\n scaleX: t.original.scaleX,\n scaleY: t.original.scaleY,\n skewX: t.original.skewX,\n skewY: t.original.skewY,\n left: t.original.left,\n top: t.original.top\n });\n\n if (this._shouldCenterTransform(t.target)) {\n if (t.originX !== 'center') {\n if (t.originX === 'right') {\n t.mouseXSign = -1;\n }\n else {\n t.mouseXSign = 1;\n }\n }\n if (t.originY !== 'center') {\n if (t.originY === 'bottom') {\n t.mouseYSign = -1;\n }\n else {\n t.mouseYSign = 1;\n }\n }\n\n t.originX = 'center';\n t.originY = 'center';\n }\n else {\n t.originX = t.original.originX;\n t.originY = t.original.originY;\n }\n },\n\n /**\n * Checks if point is contained within an area of given object\n * @param {Event} e Event object\n * @param {fabric.Object} target Object to test against\n * @param {Object} [point] x,y object of point coordinates we want to check.\n * @return {Boolean} true if point is contained within an area of given object\n */\n containsPoint: function (e, target, point) {\n var ignoreZoom = true,\n pointer = point || this.getPointer(e, ignoreZoom),\n xy;\n\n if (target.group && target.group === this._activeObject && target.group.type === 'activeSelection') {\n xy = this._normalizePointer(target.group, pointer);\n }\n else {\n xy = { x: pointer.x, y: pointer.y };\n }\n // http://www.geog.ubc.ca/courses/klink/gis.notes/ncgia/u32.html\n // http://idav.ucdavis.edu/~okreylos/TAship/Spring2000/PointInPolygon.html\n return (target.containsPoint(xy) || target._findTargetCorner(pointer));\n },\n\n /**\n * @private\n */\n _normalizePointer: function (object, pointer) {\n var m = object.calcTransformMatrix(),\n invertedM = fabric.util.invertTransform(m),\n vptPointer = this.restorePointerVpt(pointer);\n return fabric.util.transformPoint(vptPointer, invertedM);\n },\n\n /**\n * Returns true if object is transparent at a certain location\n * @param {fabric.Object} target Object to check\n * @param {Number} x Left coordinate\n * @param {Number} y Top coordinate\n * @return {Boolean}\n */\n isTargetTransparent: function (target, x, y) {\n if (target.shouldCache() && target._cacheCanvas) {\n var normalizedPointer = this._normalizePointer(target, {x: x, y: y}),\n targetRelativeX = target.cacheTranslationX + (normalizedPointer.x * target.zoomX),\n targetRelativeY = target.cacheTranslationY + (normalizedPointer.y * target.zoomY);\n\n var isTransparent = fabric.util.isTransparent(\n target._cacheContext, targetRelativeX, targetRelativeY, this.targetFindTolerance);\n\n return isTransparent;\n }\n\n var ctx = this.contextCache,\n originalColor = target.selectionBackgroundColor, v = this.viewportTransform;\n\n target.selectionBackgroundColor = '';\n\n this.clearContext(ctx);\n\n ctx.save();\n ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]);\n target.render(ctx);\n ctx.restore();\n\n target === this._activeObject && target._renderControls(ctx, {\n hasBorders: false,\n transparentCorners: false\n }, {\n hasBorders: false,\n });\n\n target.selectionBackgroundColor = originalColor;\n\n var isTransparent = fabric.util.isTransparent(\n ctx, x, y, this.targetFindTolerance);\n\n return isTransparent;\n },\n\n /**\n * takes an event and determins if selection key has been pressed\n * @private\n * @param {Event} e Event object\n */\n _isSelectionKeyPressed: function(e) {\n var selectionKeyPressed = false;\n\n if (Object.prototype.toString.call(this.selectionKey) === '[object Array]') {\n selectionKeyPressed = !!this.selectionKey.find(function(key) { return e[key] === true; });\n }\n else {\n selectionKeyPressed = e[this.selectionKey];\n }\n\n return selectionKeyPressed;\n },\n\n /**\n * @private\n * @param {Event} e Event object\n * @param {fabric.Object} target\n */\n _shouldClearSelection: function (e, target) {\n var activeObjects = this.getActiveObjects(),\n activeObject = this._activeObject;\n\n return (\n !target\n ||\n (target &&\n activeObject &&\n activeObjects.length > 1 &&\n activeObjects.indexOf(target) === -1 &&\n activeObject !== target &&\n !this._isSelectionKeyPressed(e))\n ||\n (target && !target.evented)\n ||\n (target &&\n !target.selectable &&\n activeObject &&\n activeObject !== target)\n );\n },\n\n /**\n * centeredScaling from object can't override centeredScaling from canvas.\n * this should be fixed, since object setting should take precedence over canvas.\n * @private\n * @param {fabric.Object} target\n */\n _shouldCenterTransform: function (target) {\n if (!target) {\n return;\n }\n\n var t = this._currentTransform,\n centerTransform;\n\n if (t.action === 'scale' || t.action === 'scaleX' || t.action === 'scaleY') {\n centerTransform = this.centeredScaling || target.centeredScaling;\n }\n else if (t.action === 'rotate') {\n centerTransform = this.centeredRotation || target.centeredRotation;\n }\n\n return centerTransform ? !t.altKey : t.altKey;\n },\n\n /**\n * @private\n */\n _getOriginFromCorner: function(target, corner) {\n var origin = {\n x: target.originX,\n y: target.originY\n };\n\n if (corner === 'ml' || corner === 'tl' || corner === 'bl') {\n origin.x = 'right';\n }\n else if (corner === 'mr' || corner === 'tr' || corner === 'br') {\n origin.x = 'left';\n }\n\n if (corner === 'tl' || corner === 'mt' || corner === 'tr') {\n origin.y = 'bottom';\n }\n else if (corner === 'bl' || corner === 'mb' || corner === 'br') {\n origin.y = 'top';\n }\n\n return origin;\n },\n\n /**\n * @private\n */\n _getActionFromCorner: function(target, corner, e) {\n if (!corner) {\n return 'drag';\n }\n\n switch (corner) {\n case 'mtr':\n return 'rotate';\n case 'ml':\n case 'mr':\n return e[this.altActionKey] ? 'skewY' : 'scaleX';\n case 'mt':\n case 'mb':\n return e[this.altActionKey] ? 'skewX' : 'scaleY';\n default:\n return 'scale';\n }\n },\n\n /**\n * @private\n * @param {Event} e Event object\n * @param {fabric.Object} target\n */\n _setupCurrentTransform: function (e, target) {\n if (!target) {\n return;\n }\n\n var pointer = this.getPointer(e),\n corner = target._findTargetCorner(this.getPointer(e, true)),\n action = this._getActionFromCorner(target, corner, e),\n origin = this._getOriginFromCorner(target, corner);\n\n this._currentTransform = {\n target: target,\n action: action,\n corner: corner,\n scaleX: target.scaleX,\n scaleY: target.scaleY,\n skewX: target.skewX,\n skewY: target.skewY,\n // used by transation\n offsetX: pointer.x - target.left,\n offsetY: pointer.y - target.top,\n originX: origin.x,\n originY: origin.y,\n ex: pointer.x,\n ey: pointer.y,\n lastX: pointer.x,\n lastY: pointer.y,\n // unsure they are usefull anymore.\n // left: target.left,\n // top: target.top,\n theta: degreesToRadians(target.angle),\n // end of unsure\n width: target.width * target.scaleX,\n mouseXSign: 1,\n mouseYSign: 1,\n shiftKey: e.shiftKey,\n altKey: e[this.centeredKey],\n original: fabric.util.saveObjectTransform(target),\n };\n\n this._currentTransform.original.originX = origin.x;\n this._currentTransform.original.originY = origin.y;\n\n this._resetCurrentTransform();\n this._beforeTransform(e);\n },\n\n /**\n * Translates object by \"setting\" its left/top\n * @private\n * @param {Number} x pointer's x coordinate\n * @param {Number} y pointer's y coordinate\n * @return {Boolean} true if the translation occurred\n */\n _translateObject: function (x, y) {\n var transform = this._currentTransform,\n target = transform.target,\n newLeft = x - transform.offsetX,\n newTop = y - transform.offsetY,\n moveX = !target.get('lockMovementX') && target.left !== newLeft,\n moveY = !target.get('lockMovementY') && target.top !== newTop;\n\n moveX && target.set('left', newLeft);\n moveY && target.set('top', newTop);\n return moveX || moveY;\n },\n\n /**\n * Check if we are increasing a positive skew or lower it,\n * checking mouse direction and pressed corner.\n * @private\n */\n _changeSkewTransformOrigin: function(mouseMove, t, by) {\n var property = 'originX', origins = { 0: 'center' },\n skew = t.target.skewX, originA = 'left', originB = 'right',\n corner = t.corner === 'mt' || t.corner === 'ml' ? 1 : -1,\n flipSign = 1;\n\n mouseMove = mouseMove > 0 ? 1 : -1;\n if (by === 'y') {\n skew = t.target.skewY;\n originA = 'top';\n originB = 'bottom';\n property = 'originY';\n }\n origins[-1] = originA;\n origins[1] = originB;\n\n t.target.flipX && (flipSign *= -1);\n t.target.flipY && (flipSign *= -1);\n\n if (skew === 0) {\n t.skewSign = -corner * mouseMove * flipSign;\n t[property] = origins[-mouseMove];\n }\n else {\n skew = skew > 0 ? 1 : -1;\n t.skewSign = skew;\n t[property] = origins[skew * corner * flipSign];\n }\n },\n\n /**\n * Skew object by mouse events\n * @private\n * @param {Number} x pointer's x coordinate\n * @param {Number} y pointer's y coordinate\n * @param {String} by Either 'x' or 'y'\n * @return {Boolean} true if the skewing occurred\n */\n _skewObject: function (x, y, by) {\n var t = this._currentTransform,\n target = t.target, skewed = false,\n lockSkewingX = target.get('lockSkewingX'),\n lockSkewingY = target.get('lockSkewingY');\n\n if ((lockSkewingX && by === 'x') || (lockSkewingY && by === 'y')) {\n return false;\n }\n\n // Get the constraint point\n var center = target.getCenterPoint(),\n actualMouseByCenter = target.toLocalPoint(new fabric.Point(x, y), 'center', 'center')[by],\n lastMouseByCenter = target.toLocalPoint(new fabric.Point(t.lastX, t.lastY), 'center', 'center')[by],\n actualMouseByOrigin, constraintPosition, dim = target._getTransformedDimensions();\n\n this._changeSkewTransformOrigin(actualMouseByCenter - lastMouseByCenter, t, by);\n actualMouseByOrigin = target.toLocalPoint(new fabric.Point(x, y), t.originX, t.originY)[by];\n constraintPosition = target.translateToOriginPoint(center, t.originX, t.originY);\n // Actually skew the object\n skewed = this._setObjectSkew(actualMouseByOrigin, t, by, dim);\n t.lastX = x;\n t.lastY = y;\n // Make sure the constraints apply\n target.setPositionByOrigin(constraintPosition, t.originX, t.originY);\n return skewed;\n },\n\n /**\n * Set object skew\n * @private\n * @return {Boolean} true if the skewing occurred\n */\n _setObjectSkew: function(localMouse, transform, by, _dim) {\n var target = transform.target, newValue, skewed = false,\n skewSign = transform.skewSign, newDim, dimNoSkew,\n otherBy, _otherBy, _by, newDimMouse, skewX, skewY;\n\n if (by === 'x') {\n otherBy = 'y';\n _otherBy = 'Y';\n _by = 'X';\n skewX = 0;\n skewY = target.skewY;\n }\n else {\n otherBy = 'x';\n _otherBy = 'X';\n _by = 'Y';\n skewX = target.skewX;\n skewY = 0;\n }\n\n dimNoSkew = target._getTransformedDimensions(skewX, skewY);\n newDimMouse = 2 * Math.abs(localMouse) - dimNoSkew[by];\n if (newDimMouse <= 2) {\n newValue = 0;\n }\n else {\n newValue = skewSign * Math.atan((newDimMouse / target['scale' + _by]) /\n (dimNoSkew[otherBy] / target['scale' + _otherBy]));\n newValue = fabric.util.radiansToDegrees(newValue);\n }\n skewed = target['skew' + _by] !== newValue;\n target.set('skew' + _by, newValue);\n if (target['skew' + _otherBy] !== 0) {\n newDim = target._getTransformedDimensions();\n newValue = (_dim[otherBy] / newDim[otherBy]) * target['scale' + _otherBy];\n target.set('scale' + _otherBy, newValue);\n }\n return skewed;\n },\n\n /**\n * Scales object by invoking its scaleX/scaleY methods\n * @private\n * @param {Number} x pointer's x coordinate\n * @param {Number} y pointer's y coordinate\n * @param {String} by Either 'x' or 'y' - specifies dimension constraint by which to scale an object.\n * When not provided, an object is scaled by both dimensions equally\n * @return {Boolean} true if the scaling occurred\n */\n _scaleObject: function (x, y, by) {\n var t = this._currentTransform,\n target = t.target,\n lockScalingX = target.lockScalingX,\n lockScalingY = target.lockScalingY,\n lockScalingFlip = target.lockScalingFlip;\n\n if (lockScalingX && lockScalingY) {\n return false;\n }\n\n // Get the constraint point\n var constraintPosition = target.translateToOriginPoint(target.getCenterPoint(), t.originX, t.originY),\n localMouse = target.toLocalPoint(new fabric.Point(x, y), t.originX, t.originY),\n dim = target._getTransformedDimensions(), scaled = false;\n\n this._setLocalMouse(localMouse, t);\n\n // Actually scale the object\n scaled = this._setObjectScale(localMouse, t, lockScalingX, lockScalingY, by, lockScalingFlip, dim);\n\n // Make sure the constraints apply\n target.setPositionByOrigin(constraintPosition, t.originX, t.originY);\n return scaled;\n },\n\n /**\n * @private\n * @return {Boolean} true if the scaling occurred\n */\n _setObjectScale: function(localMouse, transform, lockScalingX, lockScalingY, by, lockScalingFlip, _dim) {\n var target = transform.target, forbidScalingX = false, forbidScalingY = false, scaled = false,\n changeX, changeY, scaleX, scaleY;\n\n scaleX = localMouse.x * target.scaleX / _dim.x;\n scaleY = localMouse.y * target.scaleY / _dim.y;\n changeX = target.scaleX !== scaleX;\n changeY = target.scaleY !== scaleY;\n\n if (lockScalingFlip && scaleX <= 0 && scaleX < target.scaleX) {\n forbidScalingX = true;\n localMouse.x = 0;\n }\n\n if (lockScalingFlip && scaleY <= 0 && scaleY < target.scaleY) {\n forbidScalingY = true;\n localMouse.y = 0;\n }\n\n if (by === 'equally' && !lockScalingX && !lockScalingY) {\n scaled = this._scaleObjectEqually(localMouse, target, transform, _dim);\n }\n else if (!by) {\n forbidScalingX || lockScalingX || (target.set('scaleX', scaleX) && (scaled = scaled || changeX));\n forbidScalingY || lockScalingY || (target.set('scaleY', scaleY) && (scaled = scaled || changeY));\n }\n else if (by === 'x' && !target.get('lockUniScaling')) {\n forbidScalingX || lockScalingX || (target.set('scaleX', scaleX) && (scaled = scaled || changeX));\n }\n else if (by === 'y' && !target.get('lockUniScaling')) {\n forbidScalingY || lockScalingY || (target.set('scaleY', scaleY) && (scaled = scaled || changeY));\n }\n transform.newScaleX = scaleX;\n transform.newScaleY = scaleY;\n forbidScalingX || forbidScalingY || this._flipObject(transform, by);\n return scaled;\n },\n\n /**\n * @private\n * @return {Boolean} true if the scaling occurred\n */\n _scaleObjectEqually: function(localMouse, target, transform, _dim) {\n\n var dist = localMouse.y + localMouse.x,\n lastDist = _dim.y * transform.original.scaleY / target.scaleY +\n _dim.x * transform.original.scaleX / target.scaleX,\n scaled, signX = localMouse.x < 0 ? -1 : 1,\n signY = localMouse.y < 0 ? -1 : 1;\n\n // We use transform.scaleX/Y instead of target.scaleX/Y\n // because the object may have a min scale and we'll loose the proportions\n transform.newScaleX = signX * Math.abs(transform.original.scaleX * dist / lastDist);\n transform.newScaleY = signY * Math.abs(transform.original.scaleY * dist / lastDist);\n scaled = transform.newScaleX !== target.scaleX || transform.newScaleY !== target.scaleY;\n target.set('scaleX', transform.newScaleX);\n target.set('scaleY', transform.newScaleY);\n return scaled;\n },\n\n /**\n * @private\n */\n _flipObject: function(transform, by) {\n if (transform.newScaleX < 0 && by !== 'y') {\n if (transform.originX === 'left') {\n transform.originX = 'right';\n }\n else if (transform.originX === 'right') {\n transform.originX = 'left';\n }\n }\n\n if (transform.newScaleY < 0 && by !== 'x') {\n if (transform.originY === 'top') {\n transform.originY = 'bottom';\n }\n else if (transform.originY === 'bottom') {\n transform.originY = 'top';\n }\n }\n },\n\n /**\n * @private\n */\n _setLocalMouse: function(localMouse, t) {\n var target = t.target, zoom = this.getZoom(),\n padding = target.padding / zoom;\n\n if (t.originX === 'right') {\n localMouse.x *= -1;\n }\n else if (t.originX === 'center') {\n localMouse.x *= t.mouseXSign * 2;\n if (localMouse.x < 0) {\n t.mouseXSign = -t.mouseXSign;\n }\n }\n\n if (t.originY === 'bottom') {\n localMouse.y *= -1;\n }\n else if (t.originY === 'center') {\n localMouse.y *= t.mouseYSign * 2;\n if (localMouse.y < 0) {\n t.mouseYSign = -t.mouseYSign;\n }\n }\n\n // adjust the mouse coordinates when dealing with padding\n if (abs(localMouse.x) > padding) {\n if (localMouse.x < 0) {\n localMouse.x += padding;\n }\n else {\n localMouse.x -= padding;\n }\n }\n else { // mouse is within the padding, set to 0\n localMouse.x = 0;\n }\n\n if (abs(localMouse.y) > padding) {\n if (localMouse.y < 0) {\n localMouse.y += padding;\n }\n else {\n localMouse.y -= padding;\n }\n }\n else {\n localMouse.y = 0;\n }\n },\n\n /**\n * Rotates object by invoking its rotate method\n * @private\n * @param {Number} x pointer's x coordinate\n * @param {Number} y pointer's y coordinate\n * @return {Boolean} true if the rotation occurred\n */\n _rotateObject: function (x, y) {\n\n var t = this._currentTransform,\n target = t.target, constraintPosition,\n constraintPosition = target.translateToOriginPoint(target.getCenterPoint(), t.originX, t.originY);\n\n if (target.lockRotation) {\n return false;\n }\n\n var lastAngle = atan2(t.ey - constraintPosition.y, t.ex - constraintPosition.x),\n curAngle = atan2(y - constraintPosition.y, x - constraintPosition.x),\n angle = radiansToDegrees(curAngle - lastAngle + t.theta),\n hasRotated = true;\n\n if (target.snapAngle > 0) {\n var snapAngle = target.snapAngle,\n snapThreshold = target.snapThreshold || snapAngle,\n rightAngleLocked = Math.ceil(angle / snapAngle) * snapAngle,\n leftAngleLocked = Math.floor(angle / snapAngle) * snapAngle;\n\n if (Math.abs(angle - leftAngleLocked) < snapThreshold) {\n angle = leftAngleLocked;\n }\n else if (Math.abs(angle - rightAngleLocked) < snapThreshold) {\n angle = rightAngleLocked;\n }\n }\n\n // normalize angle to positive value\n if (angle < 0) {\n angle = 360 + angle;\n }\n angle %= 360;\n\n if (target.angle === angle) {\n hasRotated = false;\n }\n else {\n // rotation only happen here\n target.angle = angle;\n // Make sure the constraints apply\n target.setPositionByOrigin(constraintPosition, t.originX, t.originY);\n }\n\n return hasRotated;\n },\n\n /**\n * Set the cursor type of the canvas element\n * @param {String} value Cursor type of the canvas element.\n * @see http://www.w3.org/TR/css3-ui/#cursor\n */\n setCursor: function (value) {\n this.upperCanvasEl.style.cursor = value;\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx to draw the selection on\n */\n _drawSelection: function (ctx) {\n var groupSelector = this._groupSelector,\n left = groupSelector.left,\n top = groupSelector.top,\n aleft = abs(left),\n atop = abs(top);\n\n if (this.selectionColor) {\n ctx.fillStyle = this.selectionColor;\n\n ctx.fillRect(\n groupSelector.ex - ((left > 0) ? 0 : -left),\n groupSelector.ey - ((top > 0) ? 0 : -top),\n aleft,\n atop\n );\n }\n\n if (!this.selectionLineWidth || !this.selectionBorderColor) {\n return;\n }\n ctx.lineWidth = this.selectionLineWidth;\n ctx.strokeStyle = this.selectionBorderColor;\n\n // selection border\n if (this.selectionDashArray.length > 1 && !supportLineDash) {\n\n var px = groupSelector.ex + STROKE_OFFSET - ((left > 0) ? 0 : aleft),\n py = groupSelector.ey + STROKE_OFFSET - ((top > 0) ? 0 : atop);\n\n ctx.beginPath();\n\n fabric.util.drawDashedLine(ctx, px, py, px + aleft, py, this.selectionDashArray);\n fabric.util.drawDashedLine(ctx, px, py + atop - 1, px + aleft, py + atop - 1, this.selectionDashArray);\n fabric.util.drawDashedLine(ctx, px, py, px, py + atop, this.selectionDashArray);\n fabric.util.drawDashedLine(ctx, px + aleft - 1, py, px + aleft - 1, py + atop, this.selectionDashArray);\n\n ctx.closePath();\n ctx.stroke();\n }\n else {\n fabric.Object.prototype._setLineDash.call(this, ctx, this.selectionDashArray);\n ctx.strokeRect(\n groupSelector.ex + STROKE_OFFSET - ((left > 0) ? 0 : aleft),\n groupSelector.ey + STROKE_OFFSET - ((top > 0) ? 0 : atop),\n aleft,\n atop\n );\n }\n },\n\n /**\n * Method that determines what object we are clicking on\n * the skipGroup parameter is for internal use, is needed for shift+click action\n * @param {Event} e mouse event\n * @param {Boolean} skipGroup when true, activeGroup is skipped and only objects are traversed through\n */\n findTarget: function (e, skipGroup) {\n if (this.skipTargetFind) {\n return;\n }\n\n var ignoreZoom = true,\n pointer = this.getPointer(e, ignoreZoom),\n activeObject = this._activeObject,\n aObjects = this.getActiveObjects(),\n activeTarget, activeTargetSubs;\n\n // first check current group (if one exists)\n // active group does not check sub targets like normal groups.\n // if active group just exits.\n this.targets = [];\n\n if (aObjects.length > 1 && !skipGroup && activeObject === this._searchPossibleTargets([activeObject], pointer)) {\n return activeObject;\n }\n // if we hit the corner of an activeObject, let's return that.\n if (aObjects.length === 1 && activeObject._findTargetCorner(pointer)) {\n return activeObject;\n }\n if (aObjects.length === 1 &&\n activeObject === this._searchPossibleTargets([activeObject], pointer)) {\n if (!this.preserveObjectStacking) {\n return activeObject;\n }\n else {\n activeTarget = activeObject;\n activeTargetSubs = this.targets;\n this.targets = [];\n }\n }\n var target = this._searchPossibleTargets(this._objects, pointer);\n if (e[this.altSelectionKey] && target && activeTarget && target !== activeTarget) {\n target = activeTarget;\n this.targets = activeTargetSubs;\n }\n return target;\n },\n\n /**\n * @private\n */\n _checkTarget: function(pointer, obj) {\n if (obj &&\n obj.visible &&\n obj.evented &&\n this.containsPoint(null, obj, pointer)){\n if ((this.perPixelTargetFind || obj.perPixelTargetFind) && !obj.isEditing) {\n var isTransparent = this.isTargetTransparent(obj, pointer.x, pointer.y);\n if (!isTransparent) {\n return true;\n }\n }\n else {\n return true;\n }\n }\n },\n\n /**\n * @private\n */\n _searchPossibleTargets: function(objects, pointer) {\n\n // Cache all targets where their bounding box contains point.\n var target, i = objects.length, normalizedPointer, subTarget;\n // Do not check for currently grouped objects, since we check the parent group itself.\n // until we call this function specifically to search inside the activeGroup\n while (i--) {\n if (this._checkTarget(pointer, objects[i])) {\n target = objects[i];\n if (target.subTargetCheck && target instanceof fabric.Group) {\n normalizedPointer = this._normalizePointer(target, pointer);\n subTarget = this._searchPossibleTargets(target._objects, normalizedPointer);\n subTarget && this.targets.push(subTarget);\n }\n break;\n }\n }\n return target;\n },\n\n /**\n * Returns pointer coordinates without the effect of the viewport\n * @param {Object} pointer with \"x\" and \"y\" number values\n * @return {Object} object with \"x\" and \"y\" number values\n */\n restorePointerVpt: function(pointer) {\n return fabric.util.transformPoint(\n pointer,\n fabric.util.invertTransform(this.viewportTransform)\n );\n },\n\n /**\n * Returns pointer coordinates relative to canvas.\n * Can return coordinates with or without viewportTransform.\n * ignoreZoom false gives back coordinates that represent\n * the point clicked on canvas element.\n * ignoreZoom true gives back coordinates after being processed\n * by the viewportTransform ( sort of coordinates of what is displayed\n * on the canvas where you are clicking.\n * ignoreZoom true = HTMLElement coordinates relative to top,left\n * ignoreZoom false, default = fabric space coordinates, the same used for shape position\n * To interact with your shapes top and left you want to use ignoreZoom true\n * most of the time, while ignoreZoom false will give you coordinates\n * compatible with the object.oCoords system.\n * of the time.\n * @param {Event} e\n * @param {Boolean} ignoreZoom\n * @return {Object} object with \"x\" and \"y\" number values\n */\n getPointer: function (e, ignoreZoom) {\n // return cached values if we are in the event processing chain\n if (this._absolutePointer && !ignoreZoom) {\n return this._absolutePointer;\n }\n if (this._pointer && ignoreZoom) {\n return this._pointer;\n }\n\n var pointer = getPointer(e),\n upperCanvasEl = this.upperCanvasEl,\n bounds = upperCanvasEl.getBoundingClientRect(),\n boundsWidth = bounds.width || 0,\n boundsHeight = bounds.height || 0,\n cssScale;\n\n if (!boundsWidth || !boundsHeight ) {\n if ('top' in bounds && 'bottom' in bounds) {\n boundsHeight = Math.abs( bounds.top - bounds.bottom );\n }\n if ('right' in bounds && 'left' in bounds) {\n boundsWidth = Math.abs( bounds.right - bounds.left );\n }\n }\n\n this.calcOffset();\n pointer.x = pointer.x - this._offset.left;\n pointer.y = pointer.y - this._offset.top;\n if (!ignoreZoom) {\n pointer = this.restorePointerVpt(pointer);\n }\n\n if (boundsWidth === 0 || boundsHeight === 0) {\n // If bounds are not available (i.e. not visible), do not apply scale.\n cssScale = { width: 1, height: 1 };\n }\n else {\n cssScale = {\n width: upperCanvasEl.width / boundsWidth,\n height: upperCanvasEl.height / boundsHeight\n };\n }\n\n return {\n x: pointer.x * cssScale.width,\n y: pointer.y * cssScale.height\n };\n },\n\n /**\n * @private\n * @throws {CANVAS_INIT_ERROR} If canvas can not be initialized\n */\n _createUpperCanvas: function () {\n var lowerCanvasClass = this.lowerCanvasEl.className.replace(/\\s*lower-canvas\\s*/, '');\n\n // there is no need to create a new upperCanvas element if we have already one.\n if (this.upperCanvasEl) {\n this.upperCanvasEl.className = '';\n }\n else {\n this.upperCanvasEl = this._createCanvasElement();\n }\n fabric.util.addClass(this.upperCanvasEl, 'upper-canvas ' + lowerCanvasClass);\n\n this.wrapperEl.appendChild(this.upperCanvasEl);\n\n this._copyCanvasStyle(this.lowerCanvasEl, this.upperCanvasEl);\n this._applyCanvasStyle(this.upperCanvasEl);\n this.contextTop = this.upperCanvasEl.getContext('2d');\n },\n\n /**\n * @private\n */\n _createCacheCanvas: function () {\n this.cacheCanvasEl = this._createCanvasElement();\n this.cacheCanvasEl.setAttribute('width', this.width);\n this.cacheCanvasEl.setAttribute('height', this.height);\n this.contextCache = this.cacheCanvasEl.getContext('2d');\n },\n\n /**\n * @private\n */\n _initWrapperElement: function () {\n this.wrapperEl = fabric.util.wrapElement(this.lowerCanvasEl, 'div', {\n 'class': this.containerClass\n });\n fabric.util.setStyle(this.wrapperEl, {\n width: this.width + 'px',\n height: this.height + 'px',\n position: 'relative'\n });\n fabric.util.makeElementUnselectable(this.wrapperEl);\n },\n\n /**\n * @private\n * @param {HTMLElement} element canvas element to apply styles on\n */\n _applyCanvasStyle: function (element) {\n var width = this.width || element.width,\n height = this.height || element.height;\n\n fabric.util.setStyle(element, {\n position: 'absolute',\n width: width + 'px',\n height: height + 'px',\n left: 0,\n top: 0,\n 'touch-action': this.allowTouchScrolling ? 'manipulation' : 'none'\n });\n element.width = width;\n element.height = height;\n fabric.util.makeElementUnselectable(element);\n },\n\n /**\n * Copy the entire inline style from one element (fromEl) to another (toEl)\n * @private\n * @param {Element} fromEl Element style is copied from\n * @param {Element} toEl Element copied style is applied to\n */\n _copyCanvasStyle: function (fromEl, toEl) {\n toEl.style.cssText = fromEl.style.cssText;\n },\n\n /**\n * Returns context of canvas where object selection is drawn\n * @return {CanvasRenderingContext2D}\n */\n getSelectionContext: function() {\n return this.contextTop;\n },\n\n /**\n * Returns <canvas> element on which object selection is drawn\n * @return {HTMLCanvasElement}\n */\n getSelectionElement: function () {\n return this.upperCanvasEl;\n },\n\n /**\n * Returns currently active object\n * @return {fabric.Object} active object\n */\n getActiveObject: function () {\n return this._activeObject;\n },\n\n /**\n * Returns an array with the current selected objects\n * @return {fabric.Object} active object\n */\n getActiveObjects: function () {\n var active = this._activeObject;\n if (active) {\n if (active.type === 'activeSelection' && active._objects) {\n return active._objects.slice(0);\n }\n else {\n return [active];\n }\n }\n return [];\n },\n\n /**\n * @private\n * @param {fabric.Object} obj Object that was removed\n */\n _onObjectRemoved: function(obj) {\n // removing active object should fire \"selection:cleared\" events\n if (obj === this._activeObject) {\n this.fire('before:selection:cleared', { target: obj });\n this._discardActiveObject();\n this.fire('selection:cleared', { target: obj });\n obj.fire('deselected');\n }\n if (this._hoveredTarget === obj) {\n this._hoveredTarget = null;\n }\n this.callSuper('_onObjectRemoved', obj);\n },\n\n /**\n * @private\n * Compares the old activeObject with the current one and fires correct events\n * @param {fabric.Object} obj old activeObject\n */\n _fireSelectionEvents: function(oldObjects, e) {\n var somethingChanged = false, objects = this.getActiveObjects(),\n added = [], removed = [], opt = { e: e };\n oldObjects.forEach(function(oldObject) {\n if (objects.indexOf(oldObject) === -1) {\n somethingChanged = true;\n oldObject.fire('deselected', opt);\n removed.push(oldObject);\n }\n });\n objects.forEach(function(object) {\n if (oldObjects.indexOf(object) === -1) {\n somethingChanged = true;\n object.fire('selected', opt);\n added.push(object);\n }\n });\n if (oldObjects.length > 0 && objects.length > 0) {\n opt.selected = added;\n opt.deselected = removed;\n // added for backward compatibility\n opt.updated = added[0] || removed[0];\n opt.target = this._activeObject;\n somethingChanged && this.fire('selection:updated', opt);\n }\n else if (objects.length > 0) {\n // deprecated event\n if (objects.length === 1) {\n opt.target = added[0];\n this.fire('object:selected', opt);\n }\n opt.selected = added;\n // added for backward compatibility\n opt.target = this._activeObject;\n this.fire('selection:created', opt);\n }\n else if (oldObjects.length > 0) {\n opt.deselected = removed;\n this.fire('selection:cleared', opt);\n }\n },\n\n /**\n * Sets given object as the only active object on canvas\n * @param {fabric.Object} object Object to set as an active one\n * @param {Event} [e] Event (passed along when firing \"object:selected\")\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n setActiveObject: function (object, e) {\n var currentActives = this.getActiveObjects();\n this._setActiveObject(object, e);\n this._fireSelectionEvents(currentActives, e);\n return this;\n },\n\n /**\n * @private\n * @param {Object} object to set as active\n * @param {Event} [e] Event (passed along when firing \"object:selected\")\n * @return {Boolean} true if the selection happened\n */\n _setActiveObject: function(object, e) {\n if (this._activeObject === object) {\n return false;\n }\n if (!this._discardActiveObject(e, object)) {\n return false;\n }\n if (object.onSelect({ e: e })) {\n return false;\n }\n this._activeObject = object;\n return true;\n },\n\n /**\n * @private\n */\n _discardActiveObject: function(e, object) {\n var obj = this._activeObject;\n if (obj) {\n // onDeselect return TRUE to cancel selection;\n if (obj.onDeselect({ e: e, object: object })) {\n return false;\n }\n this._activeObject = null;\n }\n return true;\n },\n\n /**\n * Discards currently active object and fire events. If the function is called by fabric\n * as a consequence of a mouse event, the event is passed as a parameter and\n * sent to the fire function for the custom events. When used as a method the\n * e param does not have any application.\n * @param {event} e\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n discardActiveObject: function (e) {\n var currentActives = this.getActiveObjects();\n if (currentActives.length) {\n this.fire('before:selection:cleared', { target: currentActives[0], e: e });\n }\n this._discardActiveObject(e);\n this._fireSelectionEvents(currentActives, e);\n return this;\n },\n\n /**\n * Clears a canvas element and removes all event listeners\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n dispose: function () {\n var wrapper = this.wrapperEl;\n this.removeListeners();\n wrapper.removeChild(this.upperCanvasEl);\n wrapper.removeChild(this.lowerCanvasEl);\n this.contextCache = null;\n this.contextTop = null;\n ['upperCanvasEl', 'cacheCanvasEl'].forEach((function(element) {\n fabric.util.cleanUpJsdomNode(this[element]);\n this[element] = undefined;\n }).bind(this));\n if (wrapper.parentNode) {\n wrapper.parentNode.replaceChild(this.lowerCanvasEl, this.wrapperEl);\n }\n delete this.wrapperEl;\n fabric.StaticCanvas.prototype.dispose.call(this);\n return this;\n },\n\n /**\n * Clears all contexts (background, main, top) of an instance\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n clear: function () {\n // this.discardActiveGroup();\n this.discardActiveObject();\n this.clearContext(this.contextTop);\n return this.callSuper('clear');\n },\n\n /**\n * Draws objects' controls (borders/controls)\n * @param {CanvasRenderingContext2D} ctx Context to render controls on\n */\n drawControls: function(ctx) {\n var activeObject = this._activeObject;\n\n if (activeObject) {\n activeObject._renderControls(ctx);\n }\n },\n\n /**\n * @private\n */\n _toObject: function(instance, methodName, propertiesToInclude) {\n //If the object is part of the current selection group, it should\n //be transformed appropriately\n //i.e. it should be serialised as it would appear if the selection group\n //were to be destroyed.\n var originalProperties = this._realizeGroupTransformOnObject(instance),\n object = this.callSuper('_toObject', instance, methodName, propertiesToInclude);\n //Undo the damage we did by changing all of its properties\n this._unwindGroupTransformOnObject(instance, originalProperties);\n return object;\n },\n\n /**\n * Realises an object's group transformation on it\n * @private\n * @param {fabric.Object} [instance] the object to transform (gets mutated)\n * @returns the original values of instance which were changed\n */\n _realizeGroupTransformOnObject: function(instance) {\n if (instance.group && instance.group.type === 'activeSelection' && this._activeObject === instance.group) {\n var layoutProps = ['angle', 'flipX', 'flipY', 'left', 'scaleX', 'scaleY', 'skewX', 'skewY', 'top'];\n //Copy all the positionally relevant properties across now\n var originalValues = {};\n layoutProps.forEach(function(prop) {\n originalValues[prop] = instance[prop];\n });\n this._activeObject.realizeTransform(instance);\n return originalValues;\n }\n else {\n return null;\n }\n },\n\n /**\n * Restores the changed properties of instance\n * @private\n * @param {fabric.Object} [instance] the object to un-transform (gets mutated)\n * @param {Object} [originalValues] the original values of instance, as returned by _realizeGroupTransformOnObject\n */\n _unwindGroupTransformOnObject: function(instance, originalValues) {\n if (originalValues) {\n instance.set(originalValues);\n }\n },\n\n /**\n * @private\n */\n _setSVGObject: function(markup, instance, reviver) {\n //If the object is in a selection group, simulate what would happen to that\n //object when the group is deselected\n var originalProperties = this._realizeGroupTransformOnObject(instance);\n this.callSuper('_setSVGObject', markup, instance, reviver);\n this._unwindGroupTransformOnObject(instance, originalProperties);\n },\n\n setViewportTransform: function (vpt) {\n if (this.renderOnAddRemove && this._activeObject && this._activeObject.isEditing) {\n this._activeObject.clearContextTop();\n }\n fabric.StaticCanvas.prototype.setViewportTransform.call(this, vpt);\n }\n });\n\n // copying static properties manually to work around Opera's bug,\n // where \"prototype\" property is enumerable and overrides existing prototype\n for (var prop in fabric.StaticCanvas) {\n if (prop !== 'prototype') {\n fabric.Canvas[prop] = fabric.StaticCanvas[prop];\n }\n }\n\n if (fabric.isTouchSupported) {\n /** @ignore */\n fabric.Canvas.prototype._setCursorFromEvent = function() { };\n }\n})();\n\n\n(function() {\n\n var cursorOffset = {\n mt: 0, // n\n tr: 1, // ne\n mr: 2, // e\n br: 3, // se\n mb: 4, // s\n bl: 5, // sw\n ml: 6, // w\n tl: 7 // nw\n },\n addListener = fabric.util.addListener,\n removeListener = fabric.util.removeListener,\n RIGHT_CLICK = 3, MIDDLE_CLICK = 2, LEFT_CLICK = 1,\n addEventOptions = { passive: false };\n\n function checkClick(e, value) {\n return 'which' in e ? e.which === value : e.button === value - 1;\n }\n\n fabric.util.object.extend(fabric.Canvas.prototype, /** @lends fabric.Canvas.prototype */ {\n\n /**\n * Map of cursor style values for each of the object controls\n * @private\n */\n cursorMap: [\n 'n-resize',\n 'ne-resize',\n 'e-resize',\n 'se-resize',\n 's-resize',\n 'sw-resize',\n 'w-resize',\n 'nw-resize'\n ],\n\n /**\n * Adds mouse listeners to canvas\n * @private\n */\n _initEventListeners: function () {\n // in case we initialized the class twice. This should not happen normally\n // but in some kind of applications where the canvas element may be changed\n // this is a workaround to having double listeners.\n this.removeListeners();\n this._bindEvents();\n this.addOrRemove(addListener, 'add');\n },\n\n addOrRemove: function(functor, eventjsFunctor) {\n functor(fabric.window, 'resize', this._onResize);\n functor(this.upperCanvasEl, 'mousedown', this._onMouseDown);\n functor(this.upperCanvasEl, 'mousemove', this._onMouseMove, addEventOptions);\n functor(this.upperCanvasEl, 'mouseout', this._onMouseOut);\n functor(this.upperCanvasEl, 'mouseenter', this._onMouseEnter);\n functor(this.upperCanvasEl, 'wheel', this._onMouseWheel);\n functor(this.upperCanvasEl, 'contextmenu', this._onContextMenu);\n functor(this.upperCanvasEl, 'dblclick', this._onDoubleClick);\n functor(this.upperCanvasEl, 'touchstart', this._onMouseDown, addEventOptions);\n functor(this.upperCanvasEl, 'touchmove', this._onMouseMove, addEventOptions);\n functor(this.upperCanvasEl, 'dragover', this._onDragOver);\n functor(this.upperCanvasEl, 'dragenter', this._onDragEnter);\n functor(this.upperCanvasEl, 'dragleave', this._onDragLeave);\n functor(this.upperCanvasEl, 'drop', this._onDrop);\n if (typeof eventjs !== 'undefined' && eventjsFunctor in eventjs) {\n eventjs[eventjsFunctor](this.upperCanvasEl, 'gesture', this._onGesture);\n eventjs[eventjsFunctor](this.upperCanvasEl, 'drag', this._onDrag);\n eventjs[eventjsFunctor](this.upperCanvasEl, 'orientation', this._onOrientationChange);\n eventjs[eventjsFunctor](this.upperCanvasEl, 'shake', this._onShake);\n eventjs[eventjsFunctor](this.upperCanvasEl, 'longpress', this._onLongPress);\n }\n },\n\n /**\n * Removes all event listeners\n */\n removeListeners: function() {\n this.addOrRemove(removeListener, 'remove');\n // if you dispose on a mouseDown, before mouse up, you need to clean document to...\n removeListener(fabric.document, 'mouseup', this._onMouseUp);\n removeListener(fabric.document, 'touchend', this._onMouseUp, addEventOptions);\n removeListener(fabric.document, 'mousemove', this._onMouseMove, addEventOptions);\n removeListener(fabric.document, 'touchmove', this._onMouseMove, addEventOptions);\n },\n\n /**\n * @private\n */\n _bindEvents: function() {\n if (this.eventsBound) {\n // for any reason we pass here twice we do not want to bind events twice.\n return;\n }\n this._onMouseDown = this._onMouseDown.bind(this);\n this._onMouseMove = this._onMouseMove.bind(this);\n this._onMouseUp = this._onMouseUp.bind(this);\n this._onResize = this._onResize.bind(this);\n this._onGesture = this._onGesture.bind(this);\n this._onDrag = this._onDrag.bind(this);\n this._onShake = this._onShake.bind(this);\n this._onLongPress = this._onLongPress.bind(this);\n this._onOrientationChange = this._onOrientationChange.bind(this);\n this._onMouseWheel = this._onMouseWheel.bind(this);\n this._onMouseOut = this._onMouseOut.bind(this);\n this._onMouseEnter = this._onMouseEnter.bind(this);\n this._onContextMenu = this._onContextMenu.bind(this);\n this._onDoubleClick = this._onDoubleClick.bind(this);\n this._onDragOver = this._onDragOver.bind(this);\n this._onDragEnter = this._simpleEventHandler.bind(this, 'dragenter');\n this._onDragLeave = this._simpleEventHandler.bind(this, 'dragleave');\n this._onDrop = this._simpleEventHandler.bind(this, 'drop');\n this.eventsBound = true;\n },\n\n /**\n * @private\n * @param {Event} [e] Event object fired on Event.js gesture\n * @param {Event} [self] Inner Event object\n */\n _onGesture: function(e, self) {\n this.__onTransformGesture && this.__onTransformGesture(e, self);\n },\n\n /**\n * @private\n * @param {Event} [e] Event object fired on Event.js drag\n * @param {Event} [self] Inner Event object\n */\n _onDrag: function(e, self) {\n this.__onDrag && this.__onDrag(e, self);\n },\n\n /**\n * @private\n * @param {Event} [e] Event object fired on wheel event\n */\n _onMouseWheel: function(e) {\n this.__onMouseWheel(e);\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n _onMouseOut: function(e) {\n var target = this._hoveredTarget;\n this.fire('mouse:out', { target: target, e: e });\n this._hoveredTarget = null;\n target && target.fire('mouseout', { e: e });\n if (this._iTextInstances) {\n this._iTextInstances.forEach(function(obj) {\n if (obj.isEditing) {\n obj.hiddenTextarea.focus();\n }\n });\n }\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mouseenter\n */\n _onMouseEnter: function(e) {\n if (!this.findTarget(e)) {\n this.fire('mouse:over', { target: null, e: e });\n this._hoveredTarget = null;\n }\n },\n\n /**\n * @private\n * @param {Event} [e] Event object fired on Event.js orientation change\n * @param {Event} [self] Inner Event object\n */\n _onOrientationChange: function(e, self) {\n this.__onOrientationChange && this.__onOrientationChange(e, self);\n },\n\n /**\n * @private\n * @param {Event} [e] Event object fired on Event.js shake\n * @param {Event} [self] Inner Event object\n */\n _onShake: function(e, self) {\n this.__onShake && this.__onShake(e, self);\n },\n\n /**\n * @private\n * @param {Event} [e] Event object fired on Event.js shake\n * @param {Event} [self] Inner Event object\n */\n _onLongPress: function(e, self) {\n this.__onLongPress && this.__onLongPress(e, self);\n },\n\n /**\n * prevent default to allow drop event to be fired\n * @private\n * @param {Event} [e] Event object fired on Event.js shake\n */\n _onDragOver: function(e) {\n e.preventDefault();\n var target = this._simpleEventHandler('dragover', e);\n this._fireEnterLeaveEvents(target, e);\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n _onContextMenu: function (e) {\n if (this.stopContextMenu) {\n e.stopPropagation();\n e.preventDefault();\n }\n return false;\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n _onDoubleClick: function (e) {\n this._cacheTransformEventData(e);\n this._handleEvent(e, 'dblclick');\n this._resetTransformEventData(e);\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n _onMouseDown: function (e) {\n this.__onMouseDown(e);\n this._resetTransformEventData();\n addListener(fabric.document, 'touchend', this._onMouseUp, addEventOptions);\n addListener(fabric.document, 'touchmove', this._onMouseMove, addEventOptions);\n\n removeListener(this.upperCanvasEl, 'mousemove', this._onMouseMove, addEventOptions);\n removeListener(this.upperCanvasEl, 'touchmove', this._onMouseMove, addEventOptions);\n\n if (e.type === 'touchstart') {\n // Unbind mousedown to prevent double triggers from touch devices\n removeListener(this.upperCanvasEl, 'mousedown', this._onMouseDown);\n }\n else {\n addListener(fabric.document, 'mouseup', this._onMouseUp);\n addListener(fabric.document, 'mousemove', this._onMouseMove, addEventOptions);\n }\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mouseup\n */\n _onMouseUp: function (e) {\n this.__onMouseUp(e);\n this._resetTransformEventData();\n removeListener(fabric.document, 'mouseup', this._onMouseUp);\n removeListener(fabric.document, 'touchend', this._onMouseUp, addEventOptions);\n\n removeListener(fabric.document, 'mousemove', this._onMouseMove, addEventOptions);\n removeListener(fabric.document, 'touchmove', this._onMouseMove, addEventOptions);\n\n addListener(this.upperCanvasEl, 'mousemove', this._onMouseMove, addEventOptions);\n addListener(this.upperCanvasEl, 'touchmove', this._onMouseMove, addEventOptions);\n\n if (e.type === 'touchend') {\n // Wait 400ms before rebinding mousedown to prevent double triggers\n // from touch devices\n var _this = this;\n setTimeout(function() {\n addListener(_this.upperCanvasEl, 'mousedown', _this._onMouseDown);\n }, 400);\n }\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousemove\n */\n _onMouseMove: function (e) {\n !this.allowTouchScrolling && e.preventDefault && e.preventDefault();\n this.__onMouseMove(e);\n },\n\n /**\n * @private\n */\n _onResize: function () {\n this.calcOffset();\n },\n\n /**\n * Decides whether the canvas should be redrawn in mouseup and mousedown events.\n * @private\n * @param {Object} target\n * @param {Object} pointer\n */\n _shouldRender: function(target, pointer) {\n var activeObject = this._activeObject;\n\n if (activeObject && activeObject.isEditing && target === activeObject) {\n // if we mouse up/down over a editing textbox a cursor change,\n // there is no need to re render\n return false;\n }\n return !!(\n (target && (\n target.isMoving ||\n target !== activeObject))\n ||\n (!target && !!activeObject)\n ||\n (!target && !activeObject && !this._groupSelector)\n ||\n (pointer &&\n this._previousPointer &&\n this.selection && (\n pointer.x !== this._previousPointer.x ||\n pointer.y !== this._previousPointer.y))\n );\n },\n\n /**\n * Method that defines the actions when mouse is released on canvas.\n * The method resets the currentTransform parameters, store the image corner\n * position in the image object and render the canvas on top.\n * @private\n * @param {Event} e Event object fired on mouseup\n */\n __onMouseUp: function (e) {\n var target, transform = this._currentTransform,\n groupSelector = this._groupSelector,\n isClick = (!groupSelector || (groupSelector.left === 0 && groupSelector.top === 0));\n this._cacheTransformEventData(e);\n target = this._target;\n this._handleEvent(e, 'up:before');\n // if right/middle click just fire events and return\n // target undefined will make the _handleEvent search the target\n if (checkClick(e, RIGHT_CLICK)) {\n if (this.fireRightClick) {\n this._handleEvent(e, 'up', RIGHT_CLICK, isClick);\n }\n return;\n }\n\n if (checkClick(e, MIDDLE_CLICK)) {\n if (this.fireMiddleClick) {\n this._handleEvent(e, 'up', MIDDLE_CLICK, isClick);\n }\n this._resetTransformEventData();\n return;\n }\n\n if (this.isDrawingMode && this._isCurrentlyDrawing) {\n this._onMouseUpInDrawingMode(e);\n return;\n }\n\n if (transform) {\n this._finalizeCurrentTransform(e);\n }\n\n var shouldRender = this._shouldRender(target, this._absolutePointer);\n\n if (target || !isClick) {\n this._maybeGroupObjects(e);\n }\n if (target) {\n target.isMoving = false;\n }\n this._setCursorFromEvent(e, target);\n this._handleEvent(e, 'up', LEFT_CLICK, isClick);\n this._groupSelector = null;\n this._currentTransform = null;\n target && (target.__corner = 0);\n shouldRender && this.requestRenderAll();\n },\n\n /**\n * @private\n * Handle event firing for target and subtargets\n * @param {Event} e event from mouse\n * @param {String} eventType event to fire (up, down or move)\n * @return {Fabric.Object} target return the the target found, for internal reasons.\n */\n _simpleEventHandler: function(eventType, e) {\n var target = this.findTarget(e),\n targets = this.targets,\n options = {\n e: e,\n target: target,\n subTargets: targets,\n };\n this.fire(eventType, options);\n target && target.fire(eventType, options);\n if (!targets) {\n return target;\n }\n for (var i = 0; i < targets.length; i++) {\n targets[i].fire(eventType, options);\n }\n return target;\n },\n\n /**\n * @private\n * Handle event firing for target and subtargets\n * @param {Event} e event from mouse\n * @param {String} eventType event to fire (up, down or move)\n * @param {fabric.Object} targetObj receiving event\n * @param {Number} [button] button used in the event 1 = left, 2 = middle, 3 = right\n * @param {Boolean} isClick for left button only, indicates that the mouse up happened without move.\n */\n _handleEvent: function(e, eventType, button, isClick) {\n var target = this._target,\n targets = this.targets || [],\n options = {\n e: e,\n target: target,\n subTargets: targets,\n button: button || LEFT_CLICK,\n isClick: isClick || false,\n pointer: this._pointer,\n absolutePointer: this._absolutePointer,\n transform: this._currentTransform\n };\n this.fire('mouse:' + eventType, options);\n target && target.fire('mouse' + eventType, options);\n for (var i = 0; i < targets.length; i++) {\n targets[i].fire('mouse' + eventType, options);\n }\n },\n\n /**\n * @private\n * @param {Event} e send the mouse event that generate the finalize down, so it can be used in the event\n */\n _finalizeCurrentTransform: function(e) {\n\n var transform = this._currentTransform,\n target = transform.target,\n eventName,\n options = {\n e: e,\n target: target,\n transform: transform,\n };\n\n if (target._scaling) {\n target._scaling = false;\n }\n\n target.setCoords();\n\n if (transform.actionPerformed || (this.stateful && target.hasStateChanged())) {\n if (transform.actionPerformed) {\n eventName = this._addEventOptions(options, transform);\n this._fire(eventName, options);\n }\n this._fire('modified', options);\n }\n },\n\n /**\n * Mutate option object in order to add by property and give back the event name.\n * @private\n * @param {Object} options to mutate\n * @param {Object} transform to inspect action from\n */\n _addEventOptions: function(options, transform) {\n // we can probably add more details at low cost\n // scale change, rotation changes, translation changes\n var eventName, by;\n switch (transform.action) {\n case 'scaleX':\n eventName = 'scaled';\n by = 'x';\n break;\n case 'scaleY':\n eventName = 'scaled';\n by = 'y';\n break;\n case 'skewX':\n eventName = 'skewed';\n by = 'x';\n break;\n case 'skewY':\n eventName = 'skewed';\n by = 'y';\n break;\n case 'scale':\n eventName = 'scaled';\n by = 'equally';\n break;\n case 'rotate':\n eventName = 'rotated';\n break;\n case 'drag':\n eventName = 'moved';\n break;\n }\n options.by = by;\n return eventName;\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n _onMouseDownInDrawingMode: function(e) {\n this._isCurrentlyDrawing = true;\n if (this.getActiveObject()) {\n this.discardActiveObject(e).requestRenderAll();\n }\n if (this.clipTo) {\n fabric.util.clipContext(this, this.contextTop);\n }\n var pointer = this.getPointer(e);\n this.freeDrawingBrush.onMouseDown(pointer);\n this._handleEvent(e, 'down');\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousemove\n */\n _onMouseMoveInDrawingMode: function(e) {\n if (this._isCurrentlyDrawing) {\n var pointer = this.getPointer(e);\n this.freeDrawingBrush.onMouseMove(pointer);\n }\n this.setCursor(this.freeDrawingCursor);\n this._handleEvent(e, 'move');\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mouseup\n */\n _onMouseUpInDrawingMode: function(e) {\n this._isCurrentlyDrawing = false;\n if (this.clipTo) {\n this.contextTop.restore();\n }\n this.freeDrawingBrush.onMouseUp();\n this._handleEvent(e, 'up');\n },\n\n /**\n * Method that defines the actions when mouse is clicked on canvas.\n * The method inits the currentTransform parameters and renders all the\n * canvas so the current image can be placed on the top canvas and the rest\n * in on the container one.\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n __onMouseDown: function (e) {\n this._cacheTransformEventData(e);\n this._handleEvent(e, 'down:before');\n var target = this._target;\n // if right click just fire events\n if (checkClick(e, RIGHT_CLICK)) {\n if (this.fireRightClick) {\n this._handleEvent(e, 'down', RIGHT_CLICK);\n }\n return;\n }\n\n if (checkClick(e, MIDDLE_CLICK)) {\n if (this.fireMiddleClick) {\n this._handleEvent(e, 'down', MIDDLE_CLICK);\n }\n return;\n }\n\n if (this.isDrawingMode) {\n this._onMouseDownInDrawingMode(e);\n return;\n }\n\n // ignore if some object is being transformed at this moment\n if (this._currentTransform) {\n return;\n }\n\n var pointer = this._pointer;\n // save pointer for check in __onMouseUp event\n this._previousPointer = pointer;\n var shouldRender = this._shouldRender(target, pointer),\n shouldGroup = this._shouldGroup(e, target);\n if (this._shouldClearSelection(e, target)) {\n this.discardActiveObject(e);\n }\n else if (shouldGroup) {\n this._handleGrouping(e, target);\n target = this._activeObject;\n }\n\n if (this.selection && (!target ||\n (!target.selectable && !target.isEditing && target !== this._activeObject))) {\n this._groupSelector = {\n ex: pointer.x,\n ey: pointer.y,\n top: 0,\n left: 0\n };\n }\n\n if (target) {\n if (target.selectable) {\n this.setActiveObject(target, e);\n }\n if (target === this._activeObject && (target.__corner || !shouldGroup)) {\n this._setupCurrentTransform(e, target);\n }\n }\n this._handleEvent(e, 'down');\n // we must renderAll so that we update the visuals\n shouldRender && this.requestRenderAll();\n },\n\n /**\n * reset cache form common information needed during event processing\n * @private\n */\n _resetTransformEventData: function() {\n this._target = null;\n this._pointer = null;\n this._absolutePointer = null;\n },\n\n /**\n * Cache common information needed during event processing\n * @private\n * @param {Event} e Event object fired on event\n */\n _cacheTransformEventData: function(e) {\n // reset in order to avoid stale caching\n this._resetTransformEventData();\n this._pointer = this.getPointer(e, true);\n this._absolutePointer = this.restorePointerVpt(this._pointer);\n this._target = this._currentTransform ? this._currentTransform.target : this.findTarget(e) || null;\n },\n\n /**\n * @private\n */\n _beforeTransform: function(e) {\n var t = this._currentTransform;\n this.stateful && t.target.saveState();\n this.fire('before:transform', {\n e: e,\n transform: t,\n });\n // determine if it's a drag or rotate case\n if (t.corner) {\n this.onBeforeScaleRotate(t.target);\n }\n },\n\n /**\n * Method that defines the actions when mouse is hovering the canvas.\n * The currentTransform parameter will definde whether the user is rotating/scaling/translating\n * an image or neither of them (only hovering). A group selection is also possible and would cancel\n * all any other type of action.\n * In case of an image transformation only the top canvas will be rendered.\n * @private\n * @param {Event} e Event object fired on mousemove\n */\n __onMouseMove: function (e) {\n this._handleEvent(e, 'move:before');\n this._cacheTransformEventData(e);\n var target, pointer;\n\n if (this.isDrawingMode) {\n this._onMouseMoveInDrawingMode(e);\n return;\n }\n if (typeof e.touches !== 'undefined' && e.touches.length > 1) {\n return;\n }\n\n var groupSelector = this._groupSelector;\n\n // We initially clicked in an empty area, so we draw a box for multiple selection\n if (groupSelector) {\n pointer = this._pointer;\n\n groupSelector.left = pointer.x - groupSelector.ex;\n groupSelector.top = pointer.y - groupSelector.ey;\n\n this.renderTop();\n }\n else if (!this._currentTransform) {\n target = this.findTarget(e) || null;\n this._setCursorFromEvent(e, target);\n this._fireOverOutEvents(target, e);\n }\n else {\n this._transformObject(e);\n }\n this._handleEvent(e, 'move');\n this._resetTransformEventData();\n },\n\n /**\n * Manage the mouseout, mouseover events for the fabric object on the canvas\n * @param {Fabric.Object} target the target where the target from the mousemove event\n * @param {Event} e Event object fired on mousemove\n * @private\n */\n _fireOverOutEvents: function(target, e) {\n this.fireSynteticInOutEvents(target, e, {\n targetName: '_hoveredTarget',\n canvasEvtOut: 'mouse:out',\n evtOut: 'mouseout',\n canvasEvtIn: 'mouse:over',\n evtIn: 'mouseover',\n });\n },\n\n /**\n * Manage the dragEnter, dragLeave events for the fabric objects on the canvas\n * @param {Fabric.Object} target the target where the target from the onDrag event\n * @param {Event} e Event object fired on ondrag\n * @private\n */\n _fireEnterLeaveEvents: function(target, e) {\n this.fireSynteticInOutEvents(target, e, {\n targetName: '_draggedoverTarget',\n evtOut: 'dragleave',\n evtIn: 'dragenter',\n });\n },\n\n /**\n * Manage the syntetic in/out events for the fabric objects on the canvas\n * @param {Fabric.Object} target the target where the target from the supported events\n * @param {Event} e Event object fired\n * @param {Object} config configuration for the function to work\n * @param {String} config.targetName property on the canvas where the old target is stored\n * @param {String} [config.canvasEvtOut] name of the event to fire at canvas level for out\n * @param {String} config.evtOut name of the event to fire for out\n * @param {String} [config.canvasEvtIn] name of the event to fire at canvas level for in\n * @param {String} config.evtIn name of the event to fire for in\n * @private\n */\n fireSynteticInOutEvents: function(target, e, config) {\n var inOpt, outOpt, oldTarget = this[config.targetName], outFires, inFires,\n targetChanged = oldTarget !== target, canvasEvtIn = config.canvasEvtIn, canvasEvtOut = config.canvasEvtOut;\n if (targetChanged) {\n inOpt = { e: e, target: target, previousTarget: oldTarget };\n outOpt = { e: e, target: oldTarget, nextTarget: target };\n this[config.targetName] = target;\n }\n inFires = target && targetChanged;\n outFires = oldTarget && targetChanged;\n if (outFires) {\n canvasEvtOut && this.fire(canvasEvtOut, outOpt);\n oldTarget.fire(config.evtOut, outOpt);\n }\n if (inFires) {\n canvasEvtIn && this.fire(canvasEvtIn, inOpt);\n target.fire(config.evtIn, inOpt);\n }\n },\n\n /**\n * Method that defines actions when an Event Mouse Wheel\n * @param {Event} e Event object fired on mouseup\n */\n __onMouseWheel: function(e) {\n this._cacheTransformEventData(e);\n this._handleEvent(e, 'wheel');\n this._resetTransformEventData();\n },\n\n /**\n * @private\n * @param {Event} e Event fired on mousemove\n */\n _transformObject: function(e) {\n var pointer = this.getPointer(e),\n transform = this._currentTransform;\n\n transform.reset = false;\n transform.target.isMoving = true;\n transform.shiftKey = e.shiftKey;\n transform.altKey = e[this.centeredKey];\n\n this._beforeScaleTransform(e, transform);\n this._performTransformAction(e, transform, pointer);\n\n transform.actionPerformed && this.requestRenderAll();\n },\n\n /**\n * @private\n */\n _performTransformAction: function(e, transform, pointer) {\n var x = pointer.x,\n y = pointer.y,\n action = transform.action,\n actionPerformed = false,\n options = {\n target: transform.target,\n e: e,\n transform: transform,\n pointer: pointer\n };\n\n if (action === 'rotate') {\n (actionPerformed = this._rotateObject(x, y)) && this._fire('rotating', options);\n }\n else if (action === 'scale') {\n (actionPerformed = this._onScale(e, transform, x, y)) && this._fire('scaling', options);\n }\n else if (action === 'scaleX') {\n (actionPerformed = this._scaleObject(x, y, 'x')) && this._fire('scaling', options);\n }\n else if (action === 'scaleY') {\n (actionPerformed = this._scaleObject(x, y, 'y')) && this._fire('scaling', options);\n }\n else if (action === 'skewX') {\n (actionPerformed = this._skewObject(x, y, 'x')) && this._fire('skewing', options);\n }\n else if (action === 'skewY') {\n (actionPerformed = this._skewObject(x, y, 'y')) && this._fire('skewing', options);\n }\n else {\n actionPerformed = this._translateObject(x, y);\n if (actionPerformed) {\n this._fire('moving', options);\n this.setCursor(options.target.moveCursor || this.moveCursor);\n }\n }\n transform.actionPerformed = transform.actionPerformed || actionPerformed;\n },\n\n /**\n * @private\n */\n _fire: function(eventName, options) {\n this.fire('object:' + eventName, options);\n options.target.fire(eventName, options);\n },\n\n /**\n * @private\n */\n _beforeScaleTransform: function(e, transform) {\n if (transform.action === 'scale' || transform.action === 'scaleX' || transform.action === 'scaleY') {\n var centerTransform = this._shouldCenterTransform(transform.target);\n\n // Switch from a normal resize to center-based\n if ((centerTransform && (transform.originX !== 'center' || transform.originY !== 'center')) ||\n // Switch from center-based resize to normal one\n (!centerTransform && transform.originX === 'center' && transform.originY === 'center')\n ) {\n this._resetCurrentTransform();\n transform.reset = true;\n }\n }\n },\n\n /**\n * @private\n * @param {Event} e Event object\n * @param {Object} transform current tranform\n * @param {Number} x mouse position x from origin\n * @param {Number} y mouse poistion y from origin\n * @return {Boolean} true if the scaling occurred\n */\n _onScale: function(e, transform, x, y) {\n if (this._isUniscalePossible(e, transform.target)) {\n transform.currentAction = 'scale';\n return this._scaleObject(x, y);\n }\n else {\n // Switch from a normal resize to proportional\n if (!transform.reset && transform.currentAction === 'scale') {\n this._resetCurrentTransform();\n }\n\n transform.currentAction = 'scaleEqually';\n return this._scaleObject(x, y, 'equally');\n }\n },\n\n /**\n * @private\n * @param {Event} e Event object\n * @param {fabric.Object} target current target\n * @return {Boolean} true if unproportional scaling is possible\n */\n _isUniscalePossible: function(e, target) {\n return (e[this.uniScaleKey] || this.uniScaleTransform) && !target.get('lockUniScaling');\n },\n\n /**\n * Sets the cursor depending on where the canvas is being hovered.\n * Note: very buggy in Opera\n * @param {Event} e Event object\n * @param {Object} target Object that the mouse is hovering, if so.\n */\n _setCursorFromEvent: function (e, target) {\n if (!target) {\n this.setCursor(this.defaultCursor);\n return false;\n }\n\n var hoverCursor = target.hoverCursor || this.hoverCursor,\n activeSelection = this._activeObject && this._activeObject.type === 'activeSelection' ?\n this._activeObject : null,\n // only show proper corner when group selection is not active\n corner = (!activeSelection || !activeSelection.contains(target))\n && target._findTargetCorner(this.getPointer(e, true));\n\n if (!corner) {\n this.setCursor(hoverCursor);\n }\n else {\n this.setCursor(this.getCornerCursor(corner, target, e));\n }\n },\n\n /**\n * @private\n */\n getCornerCursor: function(corner, target, e) {\n if (this.actionIsDisabled(corner, target, e)) {\n return this.notAllowedCursor;\n }\n else if (corner in cursorOffset) {\n return this._getRotatedCornerCursor(corner, target, e);\n }\n else if (corner === 'mtr' && target.hasRotatingPoint) {\n return this.rotationCursor;\n }\n else {\n return this.defaultCursor;\n }\n },\n\n actionIsDisabled: function(corner, target, e) {\n if (corner === 'mt' || corner === 'mb') {\n return e[this.altActionKey] ? target.lockSkewingX : target.lockScalingY;\n }\n else if (corner === 'ml' || corner === 'mr') {\n return e[this.altActionKey] ? target.lockSkewingY : target.lockScalingX;\n }\n else if (corner === 'mtr') {\n return target.lockRotation;\n }\n else {\n return this._isUniscalePossible(e, target) ?\n target.lockScalingX && target.lockScalingY : target.lockScalingX || target.lockScalingY;\n }\n },\n\n /**\n * @private\n */\n _getRotatedCornerCursor: function(corner, target, e) {\n var n = Math.round((target.angle % 360) / 45);\n\n if (n < 0) {\n n += 8; // full circle ahead\n }\n n += cursorOffset[corner];\n if (e[this.altActionKey] && cursorOffset[corner] % 2 === 0) {\n //if we are holding shift and we are on a mx corner...\n n += 2;\n }\n // normalize n to be from 0 to 7\n n %= 8;\n\n return this.cursorMap[n];\n }\n });\n})();\n\n\n(function() {\n\n var min = Math.min,\n max = Math.max;\n\n fabric.util.object.extend(fabric.Canvas.prototype, /** @lends fabric.Canvas.prototype */ {\n\n /**\n * @private\n * @param {Event} e Event object\n * @param {fabric.Object} target\n * @return {Boolean}\n */\n _shouldGroup: function(e, target) {\n var activeObject = this._activeObject;\n\n return activeObject && this._isSelectionKeyPressed(e) && target && target.selectable && this.selection &&\n (activeObject !== target || activeObject.type === 'activeSelection');\n },\n\n /**\n * @private\n * @param {Event} e Event object\n * @param {fabric.Object} target\n */\n _handleGrouping: function (e, target) {\n var activeObject = this._activeObject;\n if (activeObject.__corner) {\n return;\n }\n if (target === activeObject) {\n // if it's a group, find target again, using activeGroup objects\n target = this.findTarget(e, true);\n // if even object is not found or we are on activeObjectCorner, bail out\n if (!target) {\n return;\n }\n }\n if (activeObject && activeObject.type === 'activeSelection') {\n this._updateActiveSelection(target, e);\n }\n else {\n this._createActiveSelection(target, e);\n }\n },\n\n /**\n * @private\n */\n _updateActiveSelection: function(target, e) {\n var activeSelection = this._activeObject,\n currentActiveObjects = activeSelection._objects.slice(0);\n if (activeSelection.contains(target)) {\n activeSelection.removeWithUpdate(target);\n this._hoveredTarget = target;\n if (activeSelection.size() === 1) {\n // activate last remaining object\n this._setActiveObject(activeSelection.item(0), e);\n }\n }\n else {\n activeSelection.addWithUpdate(target);\n this._hoveredTarget = activeSelection;\n }\n this._fireSelectionEvents(currentActiveObjects, e);\n },\n\n /**\n * @private\n */\n _createActiveSelection: function(target, e) {\n var currentActives = this.getActiveObjects(), group = this._createGroup(target);\n this._hoveredTarget = group;\n this._setActiveObject(group, e);\n this._fireSelectionEvents(currentActives, e);\n },\n\n /**\n * @private\n * @param {Object} target\n */\n _createGroup: function(target) {\n var objects = this._objects,\n isActiveLower = objects.indexOf(this._activeObject) < objects.indexOf(target),\n groupObjects = isActiveLower\n ? [this._activeObject, target]\n : [target, this._activeObject];\n this._activeObject.isEditing && this._activeObject.exitEditing();\n return new fabric.ActiveSelection(groupObjects, {\n canvas: this\n });\n },\n\n /**\n * @private\n * @param {Event} e mouse event\n */\n _groupSelectedObjects: function (e) {\n\n var group = this._collectObjects(),\n aGroup;\n\n // do not create group for 1 element only\n if (group.length === 1) {\n this.setActiveObject(group[0], e);\n }\n else if (group.length > 1) {\n aGroup = new fabric.ActiveSelection(group.reverse(), {\n canvas: this\n });\n this.setActiveObject(aGroup, e);\n }\n },\n\n /**\n * @private\n */\n _collectObjects: function() {\n var group = [],\n currentObject,\n x1 = this._groupSelector.ex,\n y1 = this._groupSelector.ey,\n x2 = x1 + this._groupSelector.left,\n y2 = y1 + this._groupSelector.top,\n selectionX1Y1 = new fabric.Point(min(x1, x2), min(y1, y2)),\n selectionX2Y2 = new fabric.Point(max(x1, x2), max(y1, y2)),\n allowIntersect = !this.selectionFullyContained,\n isClick = x1 === x2 && y1 === y2;\n // we iterate reverse order to collect top first in case of click.\n for (var i = this._objects.length; i--; ) {\n currentObject = this._objects[i];\n\n if (!currentObject || !currentObject.selectable || !currentObject.visible) {\n continue;\n }\n\n if ((allowIntersect && currentObject.intersectsWithRect(selectionX1Y1, selectionX2Y2)) ||\n currentObject.isContainedWithinRect(selectionX1Y1, selectionX2Y2) ||\n (allowIntersect && currentObject.containsPoint(selectionX1Y1)) ||\n (allowIntersect && currentObject.containsPoint(selectionX2Y2))\n ) {\n group.push(currentObject);\n\n // only add one object if it's a click\n if (isClick) {\n break;\n }\n }\n }\n\n return group;\n },\n\n /**\n * @private\n */\n _maybeGroupObjects: function(e) {\n if (this.selection && this._groupSelector) {\n this._groupSelectedObjects(e);\n }\n this.setCursor(this.defaultCursor);\n // clear selection and current transformation\n this._groupSelector = null;\n }\n });\n\n})();\n\n\n(function () {\n\n var supportQuality = fabric.StaticCanvas.supports('toDataURLWithQuality');\n\n fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.StaticCanvas.prototype */ {\n\n /**\n * Exports canvas element to a dataurl image. Note that when multiplier is used, cropping is scaled appropriately\n * @param {Object} [options] Options object\n * @param {String} [options.format=png] The format of the output image. Either \"jpeg\" or \"png\"\n * @param {Number} [options.quality=1] Quality level (0..1). Only used for jpeg.\n * @param {Number} [options.multiplier=1] Multiplier to scale by, to have consistent\n * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14\n * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14\n * @param {Number} [options.width] Cropping width. Introduced in v1.2.14\n * @param {Number} [options.height] Cropping height. Introduced in v1.2.14\n * @param {Boolean} [options.enableRetinaScaling] Enable retina scaling for clone image. Introduce in 2.0.0\n * @return {String} Returns a data: URL containing a representation of the object in the format specified by options.format\n * @see {@link http://jsfiddle.net/fabricjs/NfZVb/|jsFiddle demo}\n * @example Generate jpeg dataURL with lower quality\n * var dataURL = canvas.toDataURL({\n * format: 'jpeg',\n * quality: 0.8\n * });\n * @example Generate cropped png dataURL (clipping of canvas)\n * var dataURL = canvas.toDataURL({\n * format: 'png',\n * left: 100,\n * top: 100,\n * width: 200,\n * height: 200\n * });\n * @example Generate double scaled png dataURL\n * var dataURL = canvas.toDataURL({\n * format: 'png',\n * multiplier: 2\n * });\n */\n toDataURL: function (options) {\n options || (options = { });\n\n var format = options.format || 'png',\n quality = options.quality || 1,\n multiplier = (options.multiplier || 1) * (options.enableRetinaScaling ? 1 : 1 / this.getRetinaScaling()),\n cropping = {\n left: options.left || 0,\n top: options.top || 0,\n width: options.width || 0,\n height: options.height || 0,\n };\n return this.__toDataURLWithMultiplier(format, quality, cropping, multiplier);\n },\n\n /**\n * @private\n */\n __toDataURLWithMultiplier: function(format, quality, cropping, multiplier) {\n\n var origWidth = this.width,\n origHeight = this.height,\n scaledWidth = (cropping.width || this.width) * multiplier,\n scaledHeight = (cropping.height || this.height) * multiplier,\n zoom = this.getZoom(),\n newZoom = zoom * multiplier,\n vp = this.viewportTransform,\n translateX = (vp[4] - cropping.left) * multiplier,\n translateY = (vp[5] - cropping.top) * multiplier,\n newVp = [newZoom, 0, 0, newZoom, translateX, translateY],\n originalInteractive = this.interactive,\n originalSkipOffScreen = this.skipOffscreen,\n needsResize = origWidth !== scaledWidth || origHeight !== scaledHeight;\n\n this.viewportTransform = newVp;\n this.skipOffscreen = false;\n // setting interactive to false avoid exporting controls\n this.interactive = false;\n if (needsResize) {\n this.setDimensions({ width: scaledWidth, height: scaledHeight }, { backstoreOnly: true });\n }\n // call a renderAll to force sync update. This will cancel the scheduled requestRenderAll\n // from setDimensions\n this.renderAll();\n var data = this.__toDataURL(format, quality, cropping);\n this.interactive = originalInteractive;\n this.skipOffscreen = originalSkipOffScreen;\n this.viewportTransform = vp;\n //setDimensions with no option object is taking care of:\n //this.width, this.height, this.requestRenderAll()\n if (needsResize) {\n this.setDimensions({ width: origWidth, height: origHeight }, { backstoreOnly: true });\n }\n this.renderAll();\n return data;\n },\n\n /**\n * @private\n */\n __toDataURL: function(format, quality) {\n\n var canvasEl = this.contextContainer.canvas;\n // to avoid common confusion https://github.com/kangax/fabric.js/issues/806\n if (format === 'jpg') {\n format = 'jpeg';\n }\n\n var data = supportQuality\n ? canvasEl.toDataURL('image/' + format, quality)\n : canvasEl.toDataURL('image/' + format);\n\n return data;\n },\n });\n\n})();\n\n\nfabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.StaticCanvas.prototype */ {\n\n /**\n * Populates canvas with data from the specified dataless JSON.\n * JSON format must conform to the one of {@link fabric.Canvas#toDatalessJSON}\n * @deprecated since 1.2.2\n * @param {String|Object} json JSON string or object\n * @param {Function} callback Callback, invoked when json is parsed\n * and corresponding objects (e.g: {@link fabric.Image})\n * are initialized\n * @param {Function} [reviver] Method for further parsing of JSON elements, called after each fabric object created.\n * @return {fabric.Canvas} instance\n * @chainable\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#deserialization}\n */\n loadFromDatalessJSON: function (json, callback, reviver) {\n return this.loadFromJSON(json, callback, reviver);\n },\n\n /**\n * Populates canvas with data from the specified JSON.\n * JSON format must conform to the one of {@link fabric.Canvas#toJSON}\n * @param {String|Object} json JSON string or object\n * @param {Function} callback Callback, invoked when json is parsed\n * and corresponding objects (e.g: {@link fabric.Image})\n * are initialized\n * @param {Function} [reviver] Method for further parsing of JSON elements, called after each fabric object created.\n * @return {fabric.Canvas} instance\n * @chainable\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#deserialization}\n * @see {@link http://jsfiddle.net/fabricjs/fmgXt/|jsFiddle demo}\n * @example loadFromJSON\n * canvas.loadFromJSON(json, canvas.renderAll.bind(canvas));\n * @example loadFromJSON with reviver\n * canvas.loadFromJSON(json, canvas.renderAll.bind(canvas), function(o, object) {\n * // `o` = json object\n * // `object` = fabric.Object instance\n * // ... do some stuff ...\n * });\n */\n loadFromJSON: function (json, callback, reviver) {\n if (!json) {\n return;\n }\n\n // serialize if it wasn't already\n var serialized = (typeof json === 'string')\n ? JSON.parse(json)\n : fabric.util.object.clone(json);\n\n var _this = this,\n renderOnAddRemove = this.renderOnAddRemove;\n this.renderOnAddRemove = false;\n\n this._enlivenObjects(serialized.objects, function (enlivenedObjects) {\n _this.clear();\n _this._setBgOverlay(serialized, function () {\n enlivenedObjects.forEach(function(obj, index) {\n // we splice the array just in case some custom classes restored from JSON\n // will add more object to canvas at canvas init.\n _this.insertAt(obj, index);\n });\n _this.renderOnAddRemove = renderOnAddRemove;\n // remove parts i cannot set as options\n delete serialized.objects;\n delete serialized.backgroundImage;\n delete serialized.overlayImage;\n delete serialized.background;\n delete serialized.overlay;\n // this._initOptions does too many things to just\n // call it. Normally loading an Object from JSON\n // create the Object instance. Here the Canvas is\n // already an instance and we are just loading things over it\n _this._setOptions(serialized);\n _this.renderAll();\n callback && callback();\n });\n }, reviver);\n return this;\n },\n\n /**\n * @private\n * @param {Object} serialized Object with background and overlay information\n * @param {Function} callback Invoked after all background and overlay images/patterns loaded\n */\n _setBgOverlay: function(serialized, callback) {\n var loaded = {\n backgroundColor: false,\n overlayColor: false,\n backgroundImage: false,\n overlayImage: false\n };\n\n if (!serialized.backgroundImage && !serialized.overlayImage && !serialized.background && !serialized.overlay) {\n callback && callback();\n return;\n }\n\n var cbIfLoaded = function () {\n if (loaded.backgroundImage && loaded.overlayImage && loaded.backgroundColor && loaded.overlayColor) {\n callback && callback();\n }\n };\n\n this.__setBgOverlay('backgroundImage', serialized.backgroundImage, loaded, cbIfLoaded);\n this.__setBgOverlay('overlayImage', serialized.overlayImage, loaded, cbIfLoaded);\n this.__setBgOverlay('backgroundColor', serialized.background, loaded, cbIfLoaded);\n this.__setBgOverlay('overlayColor', serialized.overlay, loaded, cbIfLoaded);\n },\n\n /**\n * @private\n * @param {String} property Property to set (backgroundImage, overlayImage, backgroundColor, overlayColor)\n * @param {(Object|String)} value Value to set\n * @param {Object} loaded Set loaded property to true if property is set\n * @param {Object} callback Callback function to invoke after property is set\n */\n __setBgOverlay: function(property, value, loaded, callback) {\n var _this = this;\n\n if (!value) {\n loaded[property] = true;\n callback && callback();\n return;\n }\n\n if (property === 'backgroundImage' || property === 'overlayImage') {\n fabric.util.enlivenObjects([value], function(enlivedObject){\n _this[property] = enlivedObject[0];\n loaded[property] = true;\n callback && callback();\n });\n }\n else {\n this['set' + fabric.util.string.capitalize(property, true)](value, function() {\n loaded[property] = true;\n callback && callback();\n });\n }\n },\n\n /**\n * @private\n * @param {Array} objects\n * @param {Function} callback\n * @param {Function} [reviver]\n */\n _enlivenObjects: function (objects, callback, reviver) {\n if (!objects || objects.length === 0) {\n callback && callback([]);\n return;\n }\n\n fabric.util.enlivenObjects(objects, function(enlivenedObjects) {\n callback && callback(enlivenedObjects);\n }, null, reviver);\n },\n\n /**\n * @private\n * @param {String} format\n * @param {Function} callback\n */\n _toDataURL: function (format, callback) {\n this.clone(function (clone) {\n callback(clone.toDataURL(format));\n });\n },\n\n /**\n * @private\n * @param {String} format\n * @param {Number} multiplier\n * @param {Function} callback\n */\n _toDataURLWithMultiplier: function (format, multiplier, callback) {\n this.clone(function (clone) {\n callback(clone.toDataURLWithMultiplier(format, multiplier));\n });\n },\n\n /**\n * Clones canvas instance\n * @param {Object} [callback] Receives cloned instance as a first argument\n * @param {Array} [properties] Array of properties to include in the cloned canvas and children\n */\n clone: function (callback, properties) {\n var data = JSON.stringify(this.toJSON(properties));\n this.cloneWithoutData(function(clone) {\n clone.loadFromJSON(data, function() {\n callback && callback(clone);\n });\n });\n },\n\n /**\n * Clones canvas instance without cloning existing data.\n * This essentially copies canvas dimensions, clipping properties, etc.\n * but leaves data empty (so that you can populate it with your own)\n * @param {Object} [callback] Receives cloned instance as a first argument\n */\n cloneWithoutData: function(callback) {\n var el = fabric.util.createCanvasElement();\n\n el.width = this.width;\n el.height = this.height;\n\n var clone = new fabric.Canvas(el);\n clone.clipTo = this.clipTo;\n if (this.backgroundImage) {\n clone.setBackgroundImage(this.backgroundImage.src, function() {\n clone.renderAll();\n callback && callback(clone);\n });\n clone.backgroundImageOpacity = this.backgroundImageOpacity;\n clone.backgroundImageStretch = this.backgroundImageStretch;\n }\n else {\n callback && callback(clone);\n }\n }\n});\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend,\n clone = fabric.util.object.clone,\n toFixed = fabric.util.toFixed,\n capitalize = fabric.util.string.capitalize,\n degreesToRadians = fabric.util.degreesToRadians,\n supportsLineDash = fabric.StaticCanvas.supports('setLineDash'),\n objectCaching = !fabric.isLikelyNode,\n ALIASING_LIMIT = 2;\n\n if (fabric.Object) {\n return;\n }\n\n /**\n * Root object class from which all 2d shape classes inherit from\n * @class fabric.Object\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-1#objects}\n * @see {@link fabric.Object#initialize} for constructor definition\n *\n * @fires added\n * @fires removed\n *\n * @fires selected\n * @fires deselected\n * @fires modified\n * @fires modified\n * @fires moved\n * @fires scaled\n * @fires rotated\n * @fires skewed\n *\n * @fires rotating\n * @fires scaling\n * @fires moving\n * @fires skewing\n *\n * @fires mousedown\n * @fires mouseup\n * @fires mouseover\n * @fires mouseout\n * @fires mousewheel\n * @fires mousedblclick\n *\n * @fires dragover\n * @fires dragenter\n * @fires dragleave\n * @fires drop\n */\n fabric.Object = fabric.util.createClass(fabric.CommonMethods, /** @lends fabric.Object.prototype */ {\n\n /**\n * Type of an object (rect, circle, path, etc.).\n * Note that this property is meant to be read-only and not meant to be modified.\n * If you modify, certain parts of Fabric (such as JSON loading) won't work correctly.\n * @type String\n * @default\n */\n type: 'object',\n\n /**\n * Horizontal origin of transformation of an object (one of \"left\", \"right\", \"center\")\n * See http://jsfiddle.net/1ow02gea/244/ on how originX/originY affect objects in groups\n * @type String\n * @default\n */\n originX: 'left',\n\n /**\n * Vertical origin of transformation of an object (one of \"top\", \"bottom\", \"center\")\n * See http://jsfiddle.net/1ow02gea/244/ on how originX/originY affect objects in groups\n * @type String\n * @default\n */\n originY: 'top',\n\n /**\n * Top position of an object. Note that by default it's relative to object top. You can change this by setting originY={top/center/bottom}\n * @type Number\n * @default\n */\n top: 0,\n\n /**\n * Left position of an object. Note that by default it's relative to object left. You can change this by setting originX={left/center/right}\n * @type Number\n * @default\n */\n left: 0,\n\n /**\n * Object width\n * @type Number\n * @default\n */\n width: 0,\n\n /**\n * Object height\n * @type Number\n * @default\n */\n height: 0,\n\n /**\n * Object scale factor (horizontal)\n * @type Number\n * @default\n */\n scaleX: 1,\n\n /**\n * Object scale factor (vertical)\n * @type Number\n * @default\n */\n scaleY: 1,\n\n /**\n * When true, an object is rendered as flipped horizontally\n * @type Boolean\n * @default\n */\n flipX: false,\n\n /**\n * When true, an object is rendered as flipped vertically\n * @type Boolean\n * @default\n */\n flipY: false,\n\n /**\n * Opacity of an object\n * @type Number\n * @default\n */\n opacity: 1,\n\n /**\n * Angle of rotation of an object (in degrees)\n * @type Number\n * @default\n */\n angle: 0,\n\n /**\n * Angle of skew on x axes of an object (in degrees)\n * @type Number\n * @default\n */\n skewX: 0,\n\n /**\n * Angle of skew on y axes of an object (in degrees)\n * @type Number\n * @default\n */\n skewY: 0,\n\n /**\n * Size of object's controlling corners (in pixels)\n * @type Number\n * @default\n */\n cornerSize: 13,\n\n /**\n * When true, object's controlling corners are rendered as transparent inside (i.e. stroke instead of fill)\n * @type Boolean\n * @default\n */\n transparentCorners: true,\n\n /**\n * Default cursor value used when hovering over this object on canvas\n * @type String\n * @default\n */\n hoverCursor: null,\n\n /**\n * Default cursor value used when moving this object on canvas\n * @type String\n * @default\n */\n moveCursor: null,\n\n /**\n * Padding between object and its controlling borders (in pixels)\n * @type Number\n * @default\n */\n padding: 0,\n\n /**\n * Color of controlling borders of an object (when it's active)\n * @type String\n * @default\n */\n borderColor: 'rgba(102,153,255,0.75)',\n\n /**\n * Array specifying dash pattern of an object's borders (hasBorder must be true)\n * @since 1.6.2\n * @type Array\n */\n borderDashArray: null,\n\n /**\n * Color of controlling corners of an object (when it's active)\n * @type String\n * @default\n */\n cornerColor: 'rgba(102,153,255,0.5)',\n\n /**\n * Color of controlling corners of an object (when it's active and transparentCorners false)\n * @since 1.6.2\n * @type String\n * @default\n */\n cornerStrokeColor: null,\n\n /**\n * Specify style of control, 'rect' or 'circle'\n * @since 1.6.2\n * @type String\n */\n cornerStyle: 'rect',\n\n /**\n * Array specifying dash pattern of an object's control (hasBorder must be true)\n * @since 1.6.2\n * @type Array\n */\n cornerDashArray: null,\n\n /**\n * When true, this object will use center point as the origin of transformation\n * when being scaled via the controls.\n * Backwards incompatibility note: This property replaces \"centerTransform\" (Boolean).\n * @since 1.3.4\n * @type Boolean\n * @default\n */\n centeredScaling: false,\n\n /**\n * When true, this object will use center point as the origin of transformation\n * when being rotated via the controls.\n * Backwards incompatibility note: This property replaces \"centerTransform\" (Boolean).\n * @since 1.3.4\n * @type Boolean\n * @default\n */\n centeredRotation: true,\n\n /**\n * Color of object's fill\n * takes css colors https://www.w3.org/TR/css-color-3/\n * @type String\n * @default\n */\n fill: 'rgb(0,0,0)',\n\n /**\n * Fill rule used to fill an object\n * accepted values are nonzero, evenodd\n * Backwards incompatibility note: This property was used for setting globalCompositeOperation until v1.4.12 (use `fabric.Object#globalCompositeOperation` instead)\n * @type String\n * @default\n */\n fillRule: 'nonzero',\n\n /**\n * Composite rule used for canvas globalCompositeOperation\n * @type String\n * @default\n */\n globalCompositeOperation: 'source-over',\n\n /**\n * Background color of an object.\n * takes css colors https://www.w3.org/TR/css-color-3/\n * @type String\n * @default\n */\n backgroundColor: '',\n\n /**\n * Selection Background color of an object. colored layer behind the object when it is active.\n * does not mix good with globalCompositeOperation methods.\n * @type String\n * @default\n */\n selectionBackgroundColor: '',\n\n /**\n * When defined, an object is rendered via stroke and this property specifies its color\n * takes css colors https://www.w3.org/TR/css-color-3/\n * @type String\n * @default\n */\n stroke: null,\n\n /**\n * Width of a stroke used to render this object\n * @type Number\n * @default\n */\n strokeWidth: 1,\n\n /**\n * Array specifying dash pattern of an object's stroke (stroke must be defined)\n * @type Array\n */\n strokeDashArray: null,\n\n /**\n * Line endings style of an object's stroke (one of \"butt\", \"round\", \"square\")\n * @type String\n * @default\n */\n strokeLineCap: 'butt',\n\n /**\n * Corner style of an object's stroke (one of \"bevil\", \"round\", \"miter\")\n * @type String\n * @default\n */\n strokeLineJoin: 'miter',\n\n /**\n * Maximum miter length (used for strokeLineJoin = \"miter\") of an object's stroke\n * @type Number\n * @default\n */\n strokeMiterLimit: 4,\n\n /**\n * Shadow object representing shadow of this shape\n * @type fabric.Shadow\n * @default\n */\n shadow: null,\n\n /**\n * Opacity of object's controlling borders when object is active and moving\n * @type Number\n * @default\n */\n borderOpacityWhenMoving: 0.4,\n\n /**\n * Scale factor of object's controlling borders\n * @type Number\n * @default\n */\n borderScaleFactor: 1,\n\n /**\n * Transform matrix (similar to SVG's transform matrix)\n * @type Array\n */\n transformMatrix: null,\n\n /**\n * Minimum allowed scale value of an object\n * @type Number\n * @default\n */\n minScaleLimit: 0,\n\n /**\n * When set to `false`, an object can not be selected for modification (using either point-click-based or group-based selection).\n * But events still fire on it.\n * @type Boolean\n * @default\n */\n selectable: true,\n\n /**\n * When set to `false`, an object can not be a target of events. All events propagate through it. Introduced in v1.3.4\n * @type Boolean\n * @default\n */\n evented: true,\n\n /**\n * When set to `false`, an object is not rendered on canvas\n * @type Boolean\n * @default\n */\n visible: true,\n\n /**\n * When set to `false`, object's controls are not displayed and can not be used to manipulate object\n * @type Boolean\n * @default\n */\n hasControls: true,\n\n /**\n * When set to `false`, object's controlling borders are not rendered\n * @type Boolean\n * @default\n */\n hasBorders: true,\n\n /**\n * When set to `false`, object's controlling rotating point will not be visible or selectable\n * @type Boolean\n * @default\n */\n hasRotatingPoint: true,\n\n /**\n * Offset for object's controlling rotating point (when enabled via `hasRotatingPoint`)\n * @type Number\n * @default\n */\n rotatingPointOffset: 40,\n\n /**\n * When set to `true`, objects are \"found\" on canvas on per-pixel basis rather than according to bounding box\n * @type Boolean\n * @default\n */\n perPixelTargetFind: false,\n\n /**\n * When `false`, default object's values are not included in its serialization\n * @type Boolean\n * @default\n */\n includeDefaultValues: true,\n\n /**\n * Function that determines clipping of an object (context is passed as a first argument).\n * If you are using code minification, ctx argument can be minified/manglied you should use\n * as a workaround `var ctx = arguments[0];` in the function;\n * Note that context origin is at the object's center point (not left/top corner)\n * @deprecated since 2.0.0\n * @type Function\n */\n clipTo: null,\n\n /**\n * When `true`, object horizontal movement is locked\n * @type Boolean\n * @default\n */\n lockMovementX: false,\n\n /**\n * When `true`, object vertical movement is locked\n * @type Boolean\n * @default\n */\n lockMovementY: false,\n\n /**\n * When `true`, object rotation is locked\n * @type Boolean\n * @default\n */\n lockRotation: false,\n\n /**\n * When `true`, object horizontal scaling is locked\n * @type Boolean\n * @default\n */\n lockScalingX: false,\n\n /**\n * When `true`, object vertical scaling is locked\n * @type Boolean\n * @default\n */\n lockScalingY: false,\n\n /**\n * When `true`, object non-uniform scaling is locked\n * @type Boolean\n * @default\n */\n lockUniScaling: false,\n\n /**\n * When `true`, object horizontal skewing is locked\n * @type Boolean\n * @default\n */\n lockSkewingX: false,\n\n /**\n * When `true`, object vertical skewing is locked\n * @type Boolean\n * @default\n */\n lockSkewingY: false,\n\n /**\n * When `true`, object cannot be flipped by scaling into negative values\n * @type Boolean\n * @default\n */\n lockScalingFlip: false,\n\n /**\n * When `true`, object is not exported in OBJECT/JSON\n * since 1.6.3\n * @type Boolean\n * @default\n */\n excludeFromExport: false,\n\n /**\n * When `true`, object is cached on an additional canvas.\n * default to true\n * since 1.7.0\n * @type Boolean\n * @default true\n */\n objectCaching: objectCaching,\n\n /**\n * When `true`, object properties are checked for cache invalidation. In some particular\n * situation you may want this to be disabled ( spray brush, very big, groups)\n * or if your application does not allow you to modify properties for groups child you want\n * to disable it for groups.\n * default to false\n * since 1.7.0\n * @type Boolean\n * @default false\n */\n statefullCache: false,\n\n /**\n * When `true`, cache does not get updated during scaling. The picture will get blocky if scaled\n * too much and will be redrawn with correct details at the end of scaling.\n * this setting is performance and application dependant.\n * default to true\n * since 1.7.0\n * @type Boolean\n * @default true\n */\n noScaleCache: true,\n\n /**\n * When set to `true`, object's cache will be rerendered next render call.\n * since 1.7.0\n * @type Boolean\n * @default true\n */\n dirty: true,\n\n /**\n * keeps the value of the last hovered coner during mouse move.\n * 0 is no corner, or 'mt', 'ml', 'mtr' etc..\n * It should be private, but there is no harm in using it as\n * a read-only property.\n * @type number|string|any\n * @default 0\n */\n __corner: 0,\n\n /**\n * Determins if the fill or the stroke is drawn first (one of \"fill\" or \"stroke\")\n * @type String\n * @default\n */\n paintFirst: 'fill',\n\n /**\n * List of properties to consider when checking if state\n * of an object is changed (fabric.Object#hasStateChanged)\n * as well as for history (undo/redo) purposes\n * @type Array\n */\n stateProperties: (\n 'top left width height scaleX scaleY flipX flipY originX originY transformMatrix ' +\n 'stroke strokeWidth strokeDashArray strokeLineCap strokeLineJoin strokeMiterLimit ' +\n 'angle opacity fill globalCompositeOperation shadow clipTo visible backgroundColor ' +\n 'skewX skewY fillRule paintFirst'\n ).split(' '),\n\n /**\n * List of properties to consider when checking if cache needs refresh\n * Those properties are checked by statefullCache ON ( or lazy mode if we want ) or from single\n * calls to Object.set(key, value). If the key is in this list, the object is marked as dirty\n * and refreshed at the next render\n * @type Array\n */\n cacheProperties: (\n 'fill stroke strokeWidth strokeDashArray width height paintFirst' +\n ' strokeLineCap strokeLineJoin strokeMiterLimit backgroundColor'\n ).split(' '),\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n */\n initialize: function(options) {\n if (options) {\n this.setOptions(options);\n }\n },\n\n /**\n * Create a the canvas used to keep the cached copy of the object\n * @private\n */\n _createCacheCanvas: function() {\n this._cacheProperties = {};\n this._cacheCanvas = fabric.util.createCanvasElement();\n this._cacheContext = this._cacheCanvas.getContext('2d');\n this._updateCacheCanvas();\n // if canvas gets created, is empty, so dirty.\n this.dirty = true;\n },\n\n /**\n * Limit the cache dimensions so that X * Y do not cross fabric.perfLimitSizeTotal\n * and each side do not cross fabric.cacheSideLimit\n * those numbers are configurable so that you can get as much detail as you want\n * making bargain with performances.\n * @param {Object} dims\n * @param {Object} dims.width width of canvas\n * @param {Object} dims.height height of canvas\n * @param {Object} dims.zoomX zoomX zoom value to unscale the canvas before drawing cache\n * @param {Object} dims.zoomY zoomY zoom value to unscale the canvas before drawing cache\n * @return {Object}.width width of canvas\n * @return {Object}.height height of canvas\n * @return {Object}.zoomX zoomX zoom value to unscale the canvas before drawing cache\n * @return {Object}.zoomY zoomY zoom value to unscale the canvas before drawing cache\n */\n _limitCacheSize: function(dims) {\n var perfLimitSizeTotal = fabric.perfLimitSizeTotal,\n width = dims.width, height = dims.height,\n max = fabric.maxCacheSideLimit, min = fabric.minCacheSideLimit;\n if (width <= max && height <= max && width * height <= perfLimitSizeTotal) {\n if (width < min) {\n dims.width = min;\n }\n if (height < min) {\n dims.height = min;\n }\n return dims;\n }\n var ar = width / height, limitedDims = fabric.util.limitDimsByArea(ar, perfLimitSizeTotal),\n capValue = fabric.util.capValue,\n x = capValue(min, limitedDims.x, max),\n y = capValue(min, limitedDims.y, max);\n if (width > x) {\n dims.zoomX /= width / x;\n dims.width = x;\n dims.capped = true;\n }\n if (height > y) {\n dims.zoomY /= height / y;\n dims.height = y;\n dims.capped = true;\n }\n return dims;\n },\n\n /**\n * Return the dimension and the zoom level needed to create a cache canvas\n * big enough to host the object to be cached.\n * @private\n * @param {Object} dim.x width of object to be cached\n * @param {Object} dim.y height of object to be cached\n * @return {Object}.width width of canvas\n * @return {Object}.height height of canvas\n * @return {Object}.zoomX zoomX zoom value to unscale the canvas before drawing cache\n * @return {Object}.zoomY zoomY zoom value to unscale the canvas before drawing cache\n */\n _getCacheCanvasDimensions: function() {\n var objectScale = this.getTotalObjectScaling(),\n dim = this._getNonTransformedDimensions(),\n zoomX = objectScale.scaleX,\n zoomY = objectScale.scaleY,\n width = dim.x * zoomX,\n height = dim.y * zoomY;\n return {\n // for sure this ALIASING_LIMIT is slightly crating problem\n // in situation in wich the cache canvas gets an upper limit\n width: width + ALIASING_LIMIT,\n height: height + ALIASING_LIMIT,\n zoomX: zoomX,\n zoomY: zoomY,\n x: dim.x,\n y: dim.y\n };\n },\n\n /**\n * Update width and height of the canvas for cache\n * returns true or false if canvas needed resize.\n * @private\n * @return {Boolean} true if the canvas has been resized\n */\n _updateCacheCanvas: function() {\n if (this.noScaleCache && this.canvas && this.canvas._currentTransform) {\n var target = this.canvas._currentTransform.target,\n action = this.canvas._currentTransform.action;\n if (this === target && action.slice && action.slice(0, 5) === 'scale') {\n return false;\n }\n }\n var canvas = this._cacheCanvas,\n dims = this._limitCacheSize(this._getCacheCanvasDimensions()),\n minCacheSize = fabric.minCacheSideLimit,\n width = dims.width, height = dims.height, drawingWidth, drawingHeight,\n zoomX = dims.zoomX, zoomY = dims.zoomY,\n dimensionsChanged = width !== this.cacheWidth || height !== this.cacheHeight,\n zoomChanged = this.zoomX !== zoomX || this.zoomY !== zoomY,\n shouldRedraw = dimensionsChanged || zoomChanged,\n additionalWidth = 0, additionalHeight = 0, shouldResizeCanvas = false;\n if (dimensionsChanged) {\n var canvasWidth = this._cacheCanvas.width,\n canvasHeight = this._cacheCanvas.height,\n sizeGrowing = width > canvasWidth || height > canvasHeight,\n sizeShrinking = (width < canvasWidth * 0.9 || height < canvasHeight * 0.9) &&\n canvasWidth > minCacheSize && canvasHeight > minCacheSize;\n shouldResizeCanvas = sizeGrowing || sizeShrinking;\n if (sizeGrowing && !dims.capped && (width > minCacheSize || height > minCacheSize)) {\n additionalWidth = width * 0.1;\n additionalHeight = height * 0.1;\n }\n }\n if (shouldRedraw) {\n if (shouldResizeCanvas) {\n canvas.width = Math.ceil(width + additionalWidth);\n canvas.height = Math.ceil(height + additionalHeight);\n }\n else {\n this._cacheContext.setTransform(1, 0, 0, 1, 0, 0);\n this._cacheContext.clearRect(0, 0, canvas.width, canvas.height);\n }\n drawingWidth = dims.x * zoomX / 2;\n drawingHeight = dims.y * zoomY / 2;\n this.cacheTranslationX = Math.round(canvas.width / 2 - drawingWidth) + drawingWidth;\n this.cacheTranslationY = Math.round(canvas.height / 2 - drawingHeight) + drawingHeight;\n this.cacheWidth = width;\n this.cacheHeight = height;\n this._cacheContext.translate(this.cacheTranslationX, this.cacheTranslationY);\n this._cacheContext.scale(zoomX, zoomY);\n this.zoomX = zoomX;\n this.zoomY = zoomY;\n return true;\n }\n return false;\n },\n\n /**\n * Sets object's properties from options\n * @param {Object} [options] Options object\n */\n setOptions: function(options) {\n this._setOptions(options);\n this._initGradient(options.fill, 'fill');\n this._initGradient(options.stroke, 'stroke');\n this._initClipping(options);\n this._initPattern(options.fill, 'fill');\n this._initPattern(options.stroke, 'stroke');\n },\n\n /**\n * Transforms context when rendering an object\n * @param {CanvasRenderingContext2D} ctx Context\n */\n transform: function(ctx) {\n var m;\n if (this.group && !this.group._transformDone) {\n m = this.calcTransformMatrix();\n }\n else {\n m = this.calcOwnMatrix();\n }\n ctx.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n },\n\n /**\n * Returns an object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} Object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n var NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS,\n\n object = {\n type: this.type,\n version: fabric.version,\n originX: this.originX,\n originY: this.originY,\n left: toFixed(this.left, NUM_FRACTION_DIGITS),\n top: toFixed(this.top, NUM_FRACTION_DIGITS),\n width: toFixed(this.width, NUM_FRACTION_DIGITS),\n height: toFixed(this.height, NUM_FRACTION_DIGITS),\n fill: (this.fill && this.fill.toObject) ? this.fill.toObject() : this.fill,\n stroke: (this.stroke && this.stroke.toObject) ? this.stroke.toObject() : this.stroke,\n strokeWidth: toFixed(this.strokeWidth, NUM_FRACTION_DIGITS),\n strokeDashArray: this.strokeDashArray ? this.strokeDashArray.concat() : this.strokeDashArray,\n strokeLineCap: this.strokeLineCap,\n strokeLineJoin: this.strokeLineJoin,\n strokeMiterLimit: toFixed(this.strokeMiterLimit, NUM_FRACTION_DIGITS),\n scaleX: toFixed(this.scaleX, NUM_FRACTION_DIGITS),\n scaleY: toFixed(this.scaleY, NUM_FRACTION_DIGITS),\n angle: toFixed(this.angle, NUM_FRACTION_DIGITS),\n flipX: this.flipX,\n flipY: this.flipY,\n opacity: toFixed(this.opacity, NUM_FRACTION_DIGITS),\n shadow: (this.shadow && this.shadow.toObject) ? this.shadow.toObject() : this.shadow,\n visible: this.visible,\n clipTo: this.clipTo && String(this.clipTo),\n backgroundColor: this.backgroundColor,\n fillRule: this.fillRule,\n paintFirst: this.paintFirst,\n globalCompositeOperation: this.globalCompositeOperation,\n transformMatrix: this.transformMatrix ? this.transformMatrix.concat() : null,\n skewX: toFixed(this.skewX, NUM_FRACTION_DIGITS),\n skewY: toFixed(this.skewY, NUM_FRACTION_DIGITS)\n };\n\n fabric.util.populateWithProperties(this, object, propertiesToInclude);\n if (!this.includeDefaultValues) {\n object = this._removeDefaultValues(object);\n }\n\n return object;\n },\n\n /**\n * Returns (dataless) object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} Object representation of an instance\n */\n toDatalessObject: function(propertiesToInclude) {\n // will be overwritten by subclasses\n return this.toObject(propertiesToInclude);\n },\n\n /**\n * @private\n * @param {Object} object\n */\n _removeDefaultValues: function(object) {\n var prototype = fabric.util.getKlass(object.type).prototype,\n stateProperties = prototype.stateProperties;\n stateProperties.forEach(function(prop) {\n if (object[prop] === prototype[prop]) {\n delete object[prop];\n }\n var isArray = Object.prototype.toString.call(object[prop]) === '[object Array]' &&\n Object.prototype.toString.call(prototype[prop]) === '[object Array]';\n\n // basically a check for [] === []\n if (isArray && object[prop].length === 0 && prototype[prop].length === 0) {\n delete object[prop];\n }\n });\n\n return object;\n },\n\n /**\n * Returns a string representation of an instance\n * @return {String}\n */\n toString: function() {\n return '#';\n },\n\n /**\n * Return the object scale factor counting also the group scaling\n * @return {Object} object with scaleX and scaleY properties\n */\n getObjectScaling: function() {\n var scaleX = this.scaleX, scaleY = this.scaleY;\n if (this.group) {\n var scaling = this.group.getObjectScaling();\n scaleX *= scaling.scaleX;\n scaleY *= scaling.scaleY;\n }\n return { scaleX: scaleX, scaleY: scaleY };\n },\n\n /**\n * Return the object scale factor counting also the group scaling, zoom and retina\n * @return {Object} object with scaleX and scaleY properties\n */\n getTotalObjectScaling: function() {\n var scale = this.getObjectScaling(), scaleX = scale.scaleX, scaleY = scale.scaleY;\n if (this.canvas) {\n var zoom = this.canvas.getZoom();\n var retina = this.canvas.getRetinaScaling();\n scaleX *= zoom * retina;\n scaleY *= zoom * retina;\n }\n return { scaleX: scaleX, scaleY: scaleY };\n },\n\n /**\n * Return the object opacity counting also the group property\n * @return {Number}\n */\n getObjectOpacity: function() {\n var opacity = this.opacity;\n if (this.group) {\n opacity *= this.group.getObjectOpacity();\n }\n return opacity;\n },\n\n /**\n * @private\n * @param {String} key\n * @param {*} value\n * @return {fabric.Object} thisArg\n */\n _set: function(key, value) {\n var shouldConstrainValue = (key === 'scaleX' || key === 'scaleY'),\n isChanged = this[key] !== value, groupNeedsUpdate = false;\n\n if (shouldConstrainValue) {\n value = this._constrainScale(value);\n }\n if (key === 'scaleX' && value < 0) {\n this.flipX = !this.flipX;\n value *= -1;\n }\n else if (key === 'scaleY' && value < 0) {\n this.flipY = !this.flipY;\n value *= -1;\n }\n else if (key === 'shadow' && value && !(value instanceof fabric.Shadow)) {\n value = new fabric.Shadow(value);\n }\n else if (key === 'dirty' && this.group) {\n this.group.set('dirty', value);\n }\n\n this[key] = value;\n\n if (isChanged) {\n groupNeedsUpdate = this.group && this.group.isOnACache();\n if (this.cacheProperties.indexOf(key) > -1) {\n this.dirty = true;\n groupNeedsUpdate && this.group.set('dirty', true);\n }\n else if (groupNeedsUpdate && this.stateProperties.indexOf(key) > -1) {\n this.group.set('dirty', true);\n }\n }\n\n return this;\n },\n\n /**\n * This callback function is called by the parent group of an object every\n * time a non-delegated property changes on the group. It is passed the key\n * and value as parameters. Not adding in this function's signature to avoid\n * Travis build error about unused variables.\n */\n setOnGroup: function() {\n // implemented by sub-classes, as needed.\n },\n\n /**\n * Retrieves viewportTransform from Object's canvas if possible\n * @method getViewportTransform\n * @memberOf fabric.Object.prototype\n * @return {Boolean}\n */\n getViewportTransform: function() {\n if (this.canvas && this.canvas.viewportTransform) {\n return this.canvas.viewportTransform;\n }\n return fabric.iMatrix.concat();\n },\n\n /*\n * @private\n * return if the object would be visible in rendering\n * @memberOf fabric.Object.prototype\n * @return {Boolean}\n */\n isNotVisible: function() {\n return this.opacity === 0 || (this.width === 0 && this.height === 0) || !this.visible;\n },\n\n /**\n * Renders an object on a specified context\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n render: function(ctx) {\n // do not render if width/height are zeros or object is not visible\n if (this.isNotVisible()) {\n return;\n }\n if (this.canvas && this.canvas.skipOffscreen && !this.group && !this.isOnScreen()) {\n return;\n }\n ctx.save();\n this._setupCompositeOperation(ctx);\n this.drawSelectionBackground(ctx);\n this.transform(ctx);\n this._setOpacity(ctx);\n this._setShadow(ctx, this);\n if (this.transformMatrix) {\n ctx.transform.apply(ctx, this.transformMatrix);\n }\n this.clipTo && fabric.util.clipContext(this, ctx);\n if (this.shouldCache()) {\n if (!this._cacheCanvas) {\n this._createCacheCanvas();\n\n }\n if (this.isCacheDirty()) {\n this.statefullCache && this.saveState({ propertySet: 'cacheProperties' });\n this.drawObject(this._cacheContext);\n this.dirty = false;\n }\n this.drawCacheOnCanvas(ctx);\n }\n else {\n this._removeCacheCanvas();\n this.dirty = false;\n this.drawObject(ctx);\n if (this.objectCaching && this.statefullCache) {\n this.saveState({ propertySet: 'cacheProperties' });\n }\n }\n this.clipTo && ctx.restore();\n ctx.restore();\n },\n\n /**\n * Remove cacheCanvas and its dimensions from the objects\n */\n _removeCacheCanvas: function() {\n this._cacheCanvas = null;\n this.cacheWidth = 0;\n this.cacheHeight = 0;\n },\n\n /**\n * When set to `true`, force the object to have its own cache, even if it is inside a group\n * it may be needed when your object behave in a particular way on the cache and always needs\n * its own isolated canvas to render correctly.\n * Created to be overridden\n * since 1.7.12\n * @returns false\n */\n needsItsOwnCache: function() {\n if (this.paintFirst === 'stroke' && typeof this.shadow === 'object') {\n return true;\n }\n return false;\n },\n\n /**\n * Decide if the object should cache or not. Create its own cache level\n * objectCaching is a global flag, wins over everything\n * needsItsOwnCache should be used when the object drawing method requires\n * a cache step. None of the fabric classes requires it.\n * Generally you do not cache objects in groups because the group outside is cached.\n * @return {Boolean}\n */\n shouldCache: function() {\n this.ownCaching = this.objectCaching &&\n (!this.group || this.needsItsOwnCache() || !this.group.isOnACache());\n return this.ownCaching;\n },\n\n /**\n * Check if this object or a child object will cast a shadow\n * used by Group.shouldCache to know if child has a shadow recursively\n * @return {Boolean}\n */\n willDrawShadow: function() {\n return !!this.shadow && (this.shadow.offsetX !== 0 || this.shadow.offsetY !== 0);\n },\n\n /**\n * Execute the drawing operation for an object on a specified context\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n drawObject: function(ctx) {\n this._renderBackground(ctx);\n this._setStrokeStyles(ctx, this);\n this._setFillStyles(ctx, this);\n this._render(ctx);\n },\n\n /**\n * Paint the cached copy of the object on the target context.\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n drawCacheOnCanvas: function(ctx) {\n ctx.scale(1 / this.zoomX, 1 / this.zoomY);\n ctx.drawImage(this._cacheCanvas, -this.cacheTranslationX, -this.cacheTranslationY);\n },\n\n /**\n * Check if cache is dirty\n * @param {Boolean} skipCanvas skip canvas checks because this object is painted\n * on parent canvas.\n */\n isCacheDirty: function(skipCanvas) {\n if (this.isNotVisible()) {\n return false;\n }\n if (this._cacheCanvas && !skipCanvas && this._updateCacheCanvas()) {\n // in this case the context is already cleared.\n return true;\n }\n else {\n if (this.dirty || (this.statefullCache && this.hasStateChanged('cacheProperties'))) {\n if (this._cacheCanvas && !skipCanvas) {\n var width = this.cacheWidth / this.zoomX;\n var height = this.cacheHeight / this.zoomY;\n this._cacheContext.clearRect(-width / 2, -height / 2, width, height);\n }\n return true;\n }\n }\n return false;\n },\n\n /**\n * Draws a background for the object big as its untrasformed dimensions\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderBackground: function(ctx) {\n if (!this.backgroundColor) {\n return;\n }\n var dim = this._getNonTransformedDimensions();\n ctx.fillStyle = this.backgroundColor;\n\n ctx.fillRect(\n -dim.x / 2,\n -dim.y / 2,\n dim.x,\n dim.y\n );\n // if there is background color no other shadows\n // should be casted\n this._removeShadow(ctx);\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _setOpacity: function(ctx) {\n if (this.group && !this.group._transformDone) {\n ctx.globalAlpha = this.getObjectOpacity();\n }\n else {\n ctx.globalAlpha *= this.opacity;\n }\n },\n\n _setStrokeStyles: function(ctx, decl) {\n if (decl.stroke) {\n ctx.lineWidth = decl.strokeWidth;\n ctx.lineCap = decl.strokeLineCap;\n ctx.lineJoin = decl.strokeLineJoin;\n ctx.miterLimit = decl.strokeMiterLimit;\n ctx.strokeStyle = decl.stroke.toLive\n ? decl.stroke.toLive(ctx, this)\n : decl.stroke;\n }\n },\n\n _setFillStyles: function(ctx, decl) {\n if (decl.fill) {\n ctx.fillStyle = decl.fill.toLive\n ? decl.fill.toLive(ctx, this)\n : decl.fill;\n }\n },\n\n /**\n * @private\n * Sets line dash\n * @param {CanvasRenderingContext2D} ctx Context to set the dash line on\n * @param {Array} dashArray array representing dashes\n * @param {Function} alternative function to call if browaser does not support lineDash\n */\n _setLineDash: function(ctx, dashArray, alternative) {\n if (!dashArray) {\n return;\n }\n // Spec requires the concatenation of two copies the dash list when the number of elements is odd\n if (1 & dashArray.length) {\n dashArray.push.apply(dashArray, dashArray);\n }\n if (supportsLineDash) {\n ctx.setLineDash(dashArray);\n }\n else {\n alternative && alternative(ctx);\n }\n },\n\n /**\n * Renders controls and borders for the object\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {Object} [styleOverride] properties to override the object style\n */\n _renderControls: function(ctx, styleOverride) {\n var vpt = this.getViewportTransform(),\n matrix = this.calcTransformMatrix(),\n options, drawBorders, drawControls;\n styleOverride = styleOverride || { };\n drawBorders = typeof styleOverride.hasBorders !== 'undefined' ? styleOverride.hasBorders : this.hasBorders;\n drawControls = typeof styleOverride.hasControls !== 'undefined' ? styleOverride.hasControls : this.hasControls;\n matrix = fabric.util.multiplyTransformMatrices(vpt, matrix);\n options = fabric.util.qrDecompose(matrix);\n ctx.save();\n ctx.translate(options.translateX, options.translateY);\n ctx.lineWidth = 1 * this.borderScaleFactor;\n if (!this.group) {\n ctx.globalAlpha = this.isMoving ? this.borderOpacityWhenMoving : 1;\n }\n if (styleOverride.forActiveSelection) {\n ctx.rotate(degreesToRadians(options.angle));\n drawBorders && this.drawBordersInGroup(ctx, options, styleOverride);\n }\n else {\n ctx.rotate(degreesToRadians(this.angle));\n drawBorders && this.drawBorders(ctx, styleOverride);\n }\n drawControls && this.drawControls(ctx, styleOverride);\n ctx.restore();\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _setShadow: function(ctx) {\n if (!this.shadow) {\n return;\n }\n\n var multX = (this.canvas && this.canvas.viewportTransform[0]) || 1,\n multY = (this.canvas && this.canvas.viewportTransform[3]) || 1,\n scaling = this.getObjectScaling();\n if (this.canvas && this.canvas._isRetinaScaling()) {\n multX *= fabric.devicePixelRatio;\n multY *= fabric.devicePixelRatio;\n }\n ctx.shadowColor = this.shadow.color;\n ctx.shadowBlur = this.shadow.blur * fabric.browserShadowBlurConstant *\n (multX + multY) * (scaling.scaleX + scaling.scaleY) / 4;\n ctx.shadowOffsetX = this.shadow.offsetX * multX * scaling.scaleX;\n ctx.shadowOffsetY = this.shadow.offsetY * multY * scaling.scaleY;\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _removeShadow: function(ctx) {\n if (!this.shadow) {\n return;\n }\n\n ctx.shadowColor = '';\n ctx.shadowBlur = ctx.shadowOffsetX = ctx.shadowOffsetY = 0;\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {Object} filler fabric.Pattern or fabric.Gradient\n */\n _applyPatternGradientTransform: function(ctx, filler) {\n if (!filler || !filler.toLive) {\n return { offsetX: 0, offsetY: 0 };\n }\n var t = filler.gradientTransform || filler.patternTransform;\n var offsetX = -this.width / 2 + filler.offsetX || 0,\n offsetY = -this.height / 2 + filler.offsetY || 0;\n ctx.translate(offsetX, offsetY);\n if (t) {\n ctx.transform(t[0], t[1], t[2], t[3], t[4], t[5]);\n }\n return { offsetX: offsetX, offsetY: offsetY };\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderPaintInOrder: function(ctx) {\n if (this.paintFirst === 'stroke') {\n this._renderStroke(ctx);\n this._renderFill(ctx);\n }\n else {\n this._renderFill(ctx);\n this._renderStroke(ctx);\n }\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderFill: function(ctx) {\n if (!this.fill) {\n return;\n }\n\n ctx.save();\n this._applyPatternGradientTransform(ctx, this.fill);\n if (this.fillRule === 'evenodd') {\n ctx.fill('evenodd');\n }\n else {\n ctx.fill();\n }\n ctx.restore();\n },\n\n _renderStroke: function(ctx) {\n if (!this.stroke || this.strokeWidth === 0) {\n return;\n }\n\n if (this.shadow && !this.shadow.affectStroke) {\n this._removeShadow(ctx);\n }\n\n ctx.save();\n this._setLineDash(ctx, this.strokeDashArray, this._renderDashedStroke);\n this._applyPatternGradientTransform(ctx, this.stroke);\n ctx.stroke();\n ctx.restore();\n },\n\n /**\n * This function is an helper for svg import. it returns the center of the object in the svg\n * untransformed coordinates\n * @private\n * @return {Object} center point from element coordinates\n */\n _findCenterFromElement: function() {\n return { x: this.left + this.width / 2, y: this.top + this.height / 2 };\n },\n\n /**\n * This function is an helper for svg import. it decoompose the transformMatrix\n * and assign properties to object.\n * untransformed coordinates\n * @private\n * @chainable\n */\n _assignTransformMatrixProps: function() {\n if (this.transformMatrix) {\n var options = fabric.util.qrDecompose(this.transformMatrix);\n this.flipX = false;\n this.flipY = false;\n this.set('scaleX', options.scaleX);\n this.set('scaleY', options.scaleY);\n this.angle = options.angle;\n this.skewX = options.skewX;\n this.skewY = 0;\n }\n },\n\n /**\n * This function is an helper for svg import. it removes the transform matrix\n * and set to object properties that fabricjs can handle\n * @private\n * @param {Object} preserveAspectRatioOptions\n * @return {thisArg}\n */\n _removeTransformMatrix: function(preserveAspectRatioOptions) {\n var center = this._findCenterFromElement();\n if (this.transformMatrix) {\n this._assignTransformMatrixProps();\n center = fabric.util.transformPoint(center, this.transformMatrix);\n }\n this.transformMatrix = null;\n if (preserveAspectRatioOptions) {\n this.scaleX *= preserveAspectRatioOptions.scaleX;\n this.scaleY *= preserveAspectRatioOptions.scaleY;\n this.cropX = preserveAspectRatioOptions.cropX;\n this.cropY = preserveAspectRatioOptions.cropY;\n center.x += preserveAspectRatioOptions.offsetLeft;\n center.y += preserveAspectRatioOptions.offsetTop;\n this.width = preserveAspectRatioOptions.width;\n this.height = preserveAspectRatioOptions.height;\n }\n this.setPositionByOrigin(center, 'center', 'center');\n },\n\n /**\n * Clones an instance, using a callback method will work for every object.\n * @param {Function} callback Callback is invoked with a clone as a first argument\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n */\n clone: function(callback, propertiesToInclude) {\n var objectForm = this.toObject(propertiesToInclude);\n if (this.constructor.fromObject) {\n this.constructor.fromObject(objectForm, callback);\n }\n else {\n fabric.Object._fromObject('Object', objectForm, callback);\n }\n },\n\n /**\n * Creates an instance of fabric.Image out of an object\n * @param {Function} callback callback, invoked with an instance as a first argument\n * @param {Object} [options] for clone as image, passed to toDataURL\n * @param {Boolean} [options.enableRetinaScaling] enable retina scaling for the cloned image\n * @return {fabric.Object} thisArg\n */\n cloneAsImage: function(callback, options) {\n var dataUrl = this.toDataURL(options);\n fabric.util.loadImage(dataUrl, function(img) {\n if (callback) {\n callback(new fabric.Image(img));\n }\n });\n return this;\n },\n\n /**\n * Converts an object into a data-url-like string\n * @param {Object} options Options object\n * @param {String} [options.format=png] The format of the output image. Either \"jpeg\" or \"png\"\n * @param {Number} [options.quality=1] Quality level (0..1). Only used for jpeg.\n * @param {Number} [options.multiplier=1] Multiplier to scale by\n * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14\n * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14\n * @param {Number} [options.width] Cropping width. Introduced in v1.2.14\n * @param {Number} [options.height] Cropping height. Introduced in v1.2.14\n * @param {Boolean} [options.enableRetinaScaling] Enable retina scaling for clone image. Introduce in 1.6.4\n * @param {Boolean} [options.withoutTransform] Remove current object transform ( no scale , no angle, no flip, no skew ). Introduced in 2.3.4\n * @return {String} Returns a data: URL containing a representation of the object in the format specified by options.format\n */\n toDataURL: function(options) {\n options || (options = { });\n\n var origParams = fabric.util.saveObjectTransform(this);\n\n if (options.withoutTransform) {\n fabric.util.resetObjectTransform(this);\n }\n\n var el = fabric.util.createCanvasElement(),\n // skip canvas zoom and calculate with setCoords now.\n boundingRect = this.getBoundingRect(true, true);\n\n el.width = boundingRect.width;\n el.height = boundingRect.height;\n var canvas = new fabric.StaticCanvas(el, {\n enableRetinaScaling: options.enableRetinaScaling,\n renderOnAddRemove: false,\n skipOffscreen: false,\n });\n // to avoid common confusion https://github.com/kangax/fabric.js/issues/806\n if (options.format === 'jpg') {\n options.format = 'jpeg';\n }\n\n if (options.format === 'jpeg') {\n canvas.backgroundColor = '#fff';\n }\n\n this.setPositionByOrigin(new fabric.Point(canvas.width / 2, canvas.height / 2), 'center', 'center');\n\n var originalCanvas = this.canvas;\n canvas.add(this);\n var data = canvas.toDataURL(options);\n this.set(origParams).setCoords();\n this.canvas = originalCanvas;\n // canvas.dispose will call image.dispose that will nullify the elements\n // since this canvas is a simple element for the process, we remove references\n // to objects in this way in order to avoid object trashing.\n canvas._objects = [];\n canvas.dispose();\n canvas = null;\n\n return data;\n },\n\n /**\n * Returns true if specified type is identical to the type of an instance\n * @param {String} type Type to check against\n * @return {Boolean}\n */\n isType: function(type) {\n return this.type === type;\n },\n\n /**\n * Returns complexity of an instance\n * @return {Number} complexity of this instance (is 1 unless subclassed)\n */\n complexity: function() {\n return 1;\n },\n\n /**\n * Returns a JSON representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} JSON\n */\n toJSON: function(propertiesToInclude) {\n // delegate, not alias\n return this.toObject(propertiesToInclude);\n },\n\n /**\n * Sets gradient (fill or stroke) of an object\n * Backwards incompatibility note: This method was named \"setGradientFill\" until v1.1.0\n * @param {String} property Property name 'stroke' or 'fill'\n * @param {Object} [options] Options object\n * @param {String} [options.type] Type of gradient 'radial' or 'linear'\n * @param {Number} [options.x1=0] x-coordinate of start point\n * @param {Number} [options.y1=0] y-coordinate of start point\n * @param {Number} [options.x2=0] x-coordinate of end point\n * @param {Number} [options.y2=0] y-coordinate of end point\n * @param {Number} [options.r1=0] Radius of start point (only for radial gradients)\n * @param {Number} [options.r2=0] Radius of end point (only for radial gradients)\n * @param {Object} [options.colorStops] Color stops object eg. {0: 'ff0000', 1: '000000'}\n * @param {Object} [options.gradientTransform] transforMatrix for gradient\n * @return {fabric.Object} thisArg\n * @chainable\n * @see {@link http://jsfiddle.net/fabricjs/58y8b/|jsFiddle demo}\n * @example Set linear gradient\n * object.setGradient('fill', {\n * type: 'linear',\n * x1: -object.width / 2,\n * y1: 0,\n * x2: object.width / 2,\n * y2: 0,\n * colorStops: {\n * 0: 'red',\n * 0.5: '#005555',\n * 1: 'rgba(0,0,255,0.5)'\n * }\n * });\n * canvas.renderAll();\n * @example Set radial gradient\n * object.setGradient('fill', {\n * type: 'radial',\n * x1: 0,\n * y1: 0,\n * x2: 0,\n * y2: 0,\n * r1: object.width / 2,\n * r2: 10,\n * colorStops: {\n * 0: 'red',\n * 0.5: '#005555',\n * 1: 'rgba(0,0,255,0.5)'\n * }\n * });\n * canvas.renderAll();\n */\n setGradient: function(property, options) {\n options || (options = { });\n\n var gradient = { colorStops: [] };\n\n gradient.type = options.type || (options.r1 || options.r2 ? 'radial' : 'linear');\n gradient.coords = {\n x1: options.x1,\n y1: options.y1,\n x2: options.x2,\n y2: options.y2\n };\n\n if (options.r1 || options.r2) {\n gradient.coords.r1 = options.r1;\n gradient.coords.r2 = options.r2;\n }\n\n gradient.gradientTransform = options.gradientTransform;\n fabric.Gradient.prototype.addColorStop.call(gradient, options.colorStops);\n\n return this.set(property, fabric.Gradient.forObject(this, gradient));\n },\n\n /**\n * Sets pattern fill of an object\n * @param {Object} options Options object\n * @param {(String|HTMLImageElement)} options.source Pattern source\n * @param {String} [options.repeat=repeat] Repeat property of a pattern (one of repeat, repeat-x, repeat-y or no-repeat)\n * @param {Number} [options.offsetX=0] Pattern horizontal offset from object's left/top corner\n * @param {Number} [options.offsetY=0] Pattern vertical offset from object's left/top corner\n * @param {Function} [callback] Callback to invoke when image set as a pattern\n * @return {fabric.Object} thisArg\n * @chainable\n * @see {@link http://jsfiddle.net/fabricjs/QT3pa/|jsFiddle demo}\n * @example Set pattern\n * object.setPatternFill({\n * source: 'http://fabricjs.com/assets/escheresque_ste.png',\n * repeat: 'repeat'\n * },canvas.renderAll.bind(canvas));\n */\n setPatternFill: function(options, callback) {\n return this.set('fill', new fabric.Pattern(options, callback));\n },\n\n /**\n * Sets {@link fabric.Object#shadow|shadow} of an object\n * @param {Object|String} [options] Options object or string (e.g. \"2px 2px 10px rgba(0,0,0,0.2)\")\n * @param {String} [options.color=rgb(0,0,0)] Shadow color\n * @param {Number} [options.blur=0] Shadow blur\n * @param {Number} [options.offsetX=0] Shadow horizontal offset\n * @param {Number} [options.offsetY=0] Shadow vertical offset\n * @return {fabric.Object} thisArg\n * @chainable\n * @see {@link http://jsfiddle.net/fabricjs/7gvJG/|jsFiddle demo}\n * @example Set shadow with string notation\n * object.setShadow('2px 2px 10px rgba(0,0,0,0.2)');\n * canvas.renderAll();\n * @example Set shadow with object notation\n * object.setShadow({\n * color: 'red',\n * blur: 10,\n * offsetX: 20,\n * offsetY: 20\n * });\n * canvas.renderAll();\n */\n setShadow: function(options) {\n return this.set('shadow', options ? new fabric.Shadow(options) : null);\n },\n\n /**\n * Sets \"color\" of an instance (alias of `set('fill', …)`)\n * @param {String} color Color value\n * @return {fabric.Object} thisArg\n * @chainable\n */\n setColor: function(color) {\n this.set('fill', color);\n return this;\n },\n\n /**\n * Sets \"angle\" of an instance with centered rotation\n * @param {Number} angle Angle value (in degrees)\n * @return {fabric.Object} thisArg\n * @chainable\n */\n rotate: function(angle) {\n var shouldCenterOrigin = (this.originX !== 'center' || this.originY !== 'center') && this.centeredRotation;\n\n if (shouldCenterOrigin) {\n this._setOriginToCenter();\n }\n\n this.set('angle', angle);\n\n if (shouldCenterOrigin) {\n this._resetOrigin();\n }\n\n return this;\n },\n\n /**\n * Centers object horizontally on canvas to which it was added last.\n * You might need to call `setCoords` on an object after centering, to update controls area.\n * @return {fabric.Object} thisArg\n * @chainable\n */\n centerH: function () {\n this.canvas && this.canvas.centerObjectH(this);\n return this;\n },\n\n /**\n * Centers object horizontally on current viewport of canvas to which it was added last.\n * You might need to call `setCoords` on an object after centering, to update controls area.\n * @return {fabric.Object} thisArg\n * @chainable\n */\n viewportCenterH: function () {\n this.canvas && this.canvas.viewportCenterObjectH(this);\n return this;\n },\n\n /**\n * Centers object vertically on canvas to which it was added last.\n * You might need to call `setCoords` on an object after centering, to update controls area.\n * @return {fabric.Object} thisArg\n * @chainable\n */\n centerV: function () {\n this.canvas && this.canvas.centerObjectV(this);\n return this;\n },\n\n /**\n * Centers object vertically on current viewport of canvas to which it was added last.\n * You might need to call `setCoords` on an object after centering, to update controls area.\n * @return {fabric.Object} thisArg\n * @chainable\n */\n viewportCenterV: function () {\n this.canvas && this.canvas.viewportCenterObjectV(this);\n return this;\n },\n\n /**\n * Centers object vertically and horizontally on canvas to which is was added last\n * You might need to call `setCoords` on an object after centering, to update controls area.\n * @return {fabric.Object} thisArg\n * @chainable\n */\n center: function () {\n this.canvas && this.canvas.centerObject(this);\n return this;\n },\n\n /**\n * Centers object on current viewport of canvas to which it was added last.\n * You might need to call `setCoords` on an object after centering, to update controls area.\n * @return {fabric.Object} thisArg\n * @chainable\n */\n viewportCenter: function () {\n this.canvas && this.canvas.viewportCenterObject(this);\n return this;\n },\n\n /**\n * Returns coordinates of a pointer relative to an object\n * @param {Event} e Event to operate upon\n * @param {Object} [pointer] Pointer to operate upon (instead of event)\n * @return {Object} Coordinates of a pointer (x, y)\n */\n getLocalPointer: function(e, pointer) {\n pointer = pointer || this.canvas.getPointer(e);\n var pClicked = new fabric.Point(pointer.x, pointer.y),\n objectLeftTop = this._getLeftTopCoords();\n if (this.angle) {\n pClicked = fabric.util.rotatePoint(\n pClicked, objectLeftTop, degreesToRadians(-this.angle));\n }\n return {\n x: pClicked.x - objectLeftTop.x,\n y: pClicked.y - objectLeftTop.y\n };\n },\n\n /**\n * Sets canvas globalCompositeOperation for specific object\n * custom composition operation for the particular object can be specifed using globalCompositeOperation property\n * @param {CanvasRenderingContext2D} ctx Rendering canvas context\n */\n _setupCompositeOperation: function (ctx) {\n if (this.globalCompositeOperation) {\n ctx.globalCompositeOperation = this.globalCompositeOperation;\n }\n }\n });\n\n fabric.util.createAccessors && fabric.util.createAccessors(fabric.Object);\n\n extend(fabric.Object.prototype, fabric.Observable);\n\n /**\n * Defines the number of fraction digits to use when serializing object values.\n * You can use it to increase/decrease precision of such values like left, top, scaleX, scaleY, etc.\n * @static\n * @memberOf fabric.Object\n * @constant\n * @type Number\n */\n fabric.Object.NUM_FRACTION_DIGITS = 2;\n\n fabric.Object._fromObject = function(className, object, callback, extraParam) {\n var klass = fabric[className];\n object = clone(object, true);\n fabric.util.enlivenPatterns([object.fill, object.stroke], function(patterns) {\n if (typeof patterns[0] !== 'undefined') {\n object.fill = patterns[0];\n }\n if (typeof patterns[1] !== 'undefined') {\n object.stroke = patterns[1];\n }\n var instance = extraParam ? new klass(object[extraParam], object) : new klass(object);\n callback && callback(instance);\n });\n };\n\n /**\n * Unique id used internally when creating SVG elements\n * @static\n * @memberOf fabric.Object\n * @type Number\n */\n fabric.Object.__uid = 0;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function() {\n\n var degreesToRadians = fabric.util.degreesToRadians,\n originXOffset = {\n left: -0.5,\n center: 0,\n right: 0.5\n },\n originYOffset = {\n top: -0.5,\n center: 0,\n bottom: 0.5\n };\n\n fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n\n /**\n * Translates the coordinates from a set of origin to another (based on the object's dimensions)\n * @param {fabric.Point} point The point which corresponds to the originX and originY params\n * @param {String} fromOriginX Horizontal origin: 'left', 'center' or 'right'\n * @param {String} fromOriginY Vertical origin: 'top', 'center' or 'bottom'\n * @param {String} toOriginX Horizontal origin: 'left', 'center' or 'right'\n * @param {String} toOriginY Vertical origin: 'top', 'center' or 'bottom'\n * @return {fabric.Point}\n */\n translateToGivenOrigin: function(point, fromOriginX, fromOriginY, toOriginX, toOriginY) {\n var x = point.x,\n y = point.y,\n offsetX, offsetY, dim;\n\n if (typeof fromOriginX === 'string') {\n fromOriginX = originXOffset[fromOriginX];\n }\n else {\n fromOriginX -= 0.5;\n }\n\n if (typeof toOriginX === 'string') {\n toOriginX = originXOffset[toOriginX];\n }\n else {\n toOriginX -= 0.5;\n }\n\n offsetX = toOriginX - fromOriginX;\n\n if (typeof fromOriginY === 'string') {\n fromOriginY = originYOffset[fromOriginY];\n }\n else {\n fromOriginY -= 0.5;\n }\n\n if (typeof toOriginY === 'string') {\n toOriginY = originYOffset[toOriginY];\n }\n else {\n toOriginY -= 0.5;\n }\n\n offsetY = toOriginY - fromOriginY;\n\n if (offsetX || offsetY) {\n dim = this._getTransformedDimensions();\n x = point.x + offsetX * dim.x;\n y = point.y + offsetY * dim.y;\n }\n\n return new fabric.Point(x, y);\n },\n\n /**\n * Translates the coordinates from origin to center coordinates (based on the object's dimensions)\n * @param {fabric.Point} point The point which corresponds to the originX and originY params\n * @param {String} originX Horizontal origin: 'left', 'center' or 'right'\n * @param {String} originY Vertical origin: 'top', 'center' or 'bottom'\n * @return {fabric.Point}\n */\n translateToCenterPoint: function(point, originX, originY) {\n var p = this.translateToGivenOrigin(point, originX, originY, 'center', 'center');\n if (this.angle) {\n return fabric.util.rotatePoint(p, point, degreesToRadians(this.angle));\n }\n return p;\n },\n\n /**\n * Translates the coordinates from center to origin coordinates (based on the object's dimensions)\n * @param {fabric.Point} center The point which corresponds to center of the object\n * @param {String} originX Horizontal origin: 'left', 'center' or 'right'\n * @param {String} originY Vertical origin: 'top', 'center' or 'bottom'\n * @return {fabric.Point}\n */\n translateToOriginPoint: function(center, originX, originY) {\n var p = this.translateToGivenOrigin(center, 'center', 'center', originX, originY);\n if (this.angle) {\n return fabric.util.rotatePoint(p, center, degreesToRadians(this.angle));\n }\n return p;\n },\n\n /**\n * Returns the real center coordinates of the object\n * @return {fabric.Point}\n */\n getCenterPoint: function() {\n var leftTop = new fabric.Point(this.left, this.top);\n return this.translateToCenterPoint(leftTop, this.originX, this.originY);\n },\n\n /**\n * Returns the coordinates of the object based on center coordinates\n * @param {fabric.Point} point The point which corresponds to the originX and originY params\n * @return {fabric.Point}\n */\n // getOriginPoint: function(center) {\n // return this.translateToOriginPoint(center, this.originX, this.originY);\n // },\n\n /**\n * Returns the coordinates of the object as if it has a different origin\n * @param {String} originX Horizontal origin: 'left', 'center' or 'right'\n * @param {String} originY Vertical origin: 'top', 'center' or 'bottom'\n * @return {fabric.Point}\n */\n getPointByOrigin: function(originX, originY) {\n var center = this.getCenterPoint();\n return this.translateToOriginPoint(center, originX, originY);\n },\n\n /**\n * Returns the point in local coordinates\n * @param {fabric.Point} point The point relative to the global coordinate system\n * @param {String} originX Horizontal origin: 'left', 'center' or 'right'\n * @param {String} originY Vertical origin: 'top', 'center' or 'bottom'\n * @return {fabric.Point}\n */\n toLocalPoint: function(point, originX, originY) {\n var center = this.getCenterPoint(),\n p, p2;\n\n if (typeof originX !== 'undefined' && typeof originY !== 'undefined' ) {\n p = this.translateToGivenOrigin(center, 'center', 'center', originX, originY);\n }\n else {\n p = new fabric.Point(this.left, this.top);\n }\n\n p2 = new fabric.Point(point.x, point.y);\n if (this.angle) {\n p2 = fabric.util.rotatePoint(p2, center, -degreesToRadians(this.angle));\n }\n return p2.subtractEquals(p);\n },\n\n /**\n * Returns the point in global coordinates\n * @param {fabric.Point} The point relative to the local coordinate system\n * @return {fabric.Point}\n */\n // toGlobalPoint: function(point) {\n // return fabric.util.rotatePoint(point, this.getCenterPoint(), degreesToRadians(this.angle)).addEquals(new fabric.Point(this.left, this.top));\n // },\n\n /**\n * Sets the position of the object taking into consideration the object's origin\n * @param {fabric.Point} pos The new position of the object\n * @param {String} originX Horizontal origin: 'left', 'center' or 'right'\n * @param {String} originY Vertical origin: 'top', 'center' or 'bottom'\n * @return {void}\n */\n setPositionByOrigin: function(pos, originX, originY) {\n var center = this.translateToCenterPoint(pos, originX, originY),\n position = this.translateToOriginPoint(center, this.originX, this.originY);\n this.set('left', position.x);\n this.set('top', position.y);\n },\n\n /**\n * @param {String} to One of 'left', 'center', 'right'\n */\n adjustPosition: function(to) {\n var angle = degreesToRadians(this.angle),\n hypotFull = this.getScaledWidth(),\n xFull = fabric.util.cos(angle) * hypotFull,\n yFull = fabric.util.sin(angle) * hypotFull,\n offsetFrom, offsetTo;\n\n //TODO: this function does not consider mixed situation like top, center.\n if (typeof this.originX === 'string') {\n offsetFrom = originXOffset[this.originX];\n }\n else {\n offsetFrom = this.originX - 0.5;\n }\n if (typeof to === 'string') {\n offsetTo = originXOffset[to];\n }\n else {\n offsetTo = to - 0.5;\n }\n this.left += xFull * (offsetTo - offsetFrom);\n this.top += yFull * (offsetTo - offsetFrom);\n this.setCoords();\n this.originX = to;\n },\n\n /**\n * Sets the origin/position of the object to it's center point\n * @private\n * @return {void}\n */\n _setOriginToCenter: function() {\n this._originalOriginX = this.originX;\n this._originalOriginY = this.originY;\n\n var center = this.getCenterPoint();\n\n this.originX = 'center';\n this.originY = 'center';\n\n this.left = center.x;\n this.top = center.y;\n },\n\n /**\n * Resets the origin/position of the object to it's original origin\n * @private\n * @return {void}\n */\n _resetOrigin: function() {\n var originPoint = this.translateToOriginPoint(\n this.getCenterPoint(),\n this._originalOriginX,\n this._originalOriginY);\n\n this.originX = this._originalOriginX;\n this.originY = this._originalOriginY;\n\n this.left = originPoint.x;\n this.top = originPoint.y;\n\n this._originalOriginX = null;\n this._originalOriginY = null;\n },\n\n /**\n * @private\n */\n _getLeftTopCoords: function() {\n return this.translateToOriginPoint(this.getCenterPoint(), 'left', 'top');\n },\n });\n\n})();\n\n\n(function() {\n\n function getCoords(coords) {\n return [\n new fabric.Point(coords.tl.x, coords.tl.y),\n new fabric.Point(coords.tr.x, coords.tr.y),\n new fabric.Point(coords.br.x, coords.br.y),\n new fabric.Point(coords.bl.x, coords.bl.y)\n ];\n }\n\n var degreesToRadians = fabric.util.degreesToRadians,\n multiplyMatrices = fabric.util.multiplyTransformMatrices,\n transformPoint = fabric.util.transformPoint;\n\n fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n\n /**\n * Describe object's corner position in canvas element coordinates.\n * properties are tl,mt,tr,ml,mr,bl,mb,br,mtr for the main controls.\n * each property is an object with x, y and corner.\n * The `corner` property contains in a similar manner the 4 points of the\n * interactive area of the corner.\n * The coordinates depends from this properties: width, height, scaleX, scaleY\n * skewX, skewY, angle, strokeWidth, viewportTransform, top, left, padding.\n * The coordinates get updated with @method setCoords.\n * You can calculate them without updating with @method calcCoords;\n * @memberOf fabric.Object.prototype\n */\n oCoords: null,\n\n /**\n * Describe object's corner position in canvas object absolute coordinates\n * properties are tl,tr,bl,br and describe the four main corner.\n * each property is an object with x, y, instance of Fabric.Point.\n * The coordinates depends from this properties: width, height, scaleX, scaleY\n * skewX, skewY, angle, strokeWidth, top, left.\n * Those coordinates are usefull to understand where an object is. They get updated\n * with oCoords but they do not need to be updated when zoom or panning change.\n * The coordinates get updated with @method setCoords.\n * You can calculate them without updating with @method calcCoords(true);\n * @memberOf fabric.Object.prototype\n */\n aCoords: null,\n\n /**\n * storage for object transform matrix\n */\n ownMatrixCache: null,\n\n /**\n * storage for object full transform matrix\n */\n matrixCache: null,\n\n /**\n * return correct set of coordinates for intersection\n */\n getCoords: function(absolute, calculate) {\n if (!this.oCoords) {\n this.setCoords();\n }\n var coords = absolute ? this.aCoords : this.oCoords;\n return getCoords(calculate ? this.calcCoords(absolute) : coords);\n },\n\n /**\n * Checks if object intersects with an area formed by 2 points\n * @param {Object} pointTL top-left point of area\n * @param {Object} pointBR bottom-right point of area\n * @param {Boolean} [absolute] use coordinates without viewportTransform\n * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords\n * @return {Boolean} true if object intersects with an area formed by 2 points\n */\n intersectsWithRect: function(pointTL, pointBR, absolute, calculate) {\n var coords = this.getCoords(absolute, calculate),\n intersection = fabric.Intersection.intersectPolygonRectangle(\n coords,\n pointTL,\n pointBR\n );\n return intersection.status === 'Intersection';\n },\n\n /**\n * Checks if object intersects with another object\n * @param {Object} other Object to test\n * @param {Boolean} [absolute] use coordinates without viewportTransform\n * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords\n * @return {Boolean} true if object intersects with another object\n */\n intersectsWithObject: function(other, absolute, calculate) {\n var intersection = fabric.Intersection.intersectPolygonPolygon(\n this.getCoords(absolute, calculate),\n other.getCoords(absolute, calculate)\n );\n\n return intersection.status === 'Intersection'\n || other.isContainedWithinObject(this, absolute, calculate)\n || this.isContainedWithinObject(other, absolute, calculate);\n },\n\n /**\n * Checks if object is fully contained within area of another object\n * @param {Object} other Object to test\n * @param {Boolean} [absolute] use coordinates without viewportTransform\n * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords\n * @return {Boolean} true if object is fully contained within area of another object\n */\n isContainedWithinObject: function(other, absolute, calculate) {\n var points = this.getCoords(absolute, calculate),\n i = 0, lines = other._getImageLines(\n calculate ? other.calcCoords(absolute) : absolute ? other.aCoords : other.oCoords\n );\n for (; i < 4; i++) {\n if (!other.containsPoint(points[i], lines)) {\n return false;\n }\n }\n return true;\n },\n\n /**\n * Checks if object is fully contained within area formed by 2 points\n * @param {Object} pointTL top-left point of area\n * @param {Object} pointBR bottom-right point of area\n * @param {Boolean} [absolute] use coordinates without viewportTransform\n * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords\n * @return {Boolean} true if object is fully contained within area formed by 2 points\n */\n isContainedWithinRect: function(pointTL, pointBR, absolute, calculate) {\n var boundingRect = this.getBoundingRect(absolute, calculate);\n\n return (\n boundingRect.left >= pointTL.x &&\n boundingRect.left + boundingRect.width <= pointBR.x &&\n boundingRect.top >= pointTL.y &&\n boundingRect.top + boundingRect.height <= pointBR.y\n );\n },\n\n /**\n * Checks if point is inside the object\n * @param {fabric.Point} point Point to check against\n * @param {Object} [lines] object returned from @method _getImageLines\n * @param {Boolean} [absolute] use coordinates without viewportTransform\n * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords\n * @return {Boolean} true if point is inside the object\n */\n containsPoint: function(point, lines, absolute, calculate) {\n var lines = lines || this._getImageLines(\n calculate ? this.calcCoords(absolute) : absolute ? this.aCoords : this.oCoords\n ),\n xPoints = this._findCrossPoints(point, lines);\n\n // if xPoints is odd then point is inside the object\n return (xPoints !== 0 && xPoints % 2 === 1);\n },\n\n /**\n * Checks if object is contained within the canvas with current viewportTransform\n * the check is done stopping at first point that appears on screen\n * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords\n * @return {Boolean} true if object is fully or partially contained within canvas\n */\n isOnScreen: function(calculate) {\n if (!this.canvas) {\n return false;\n }\n var pointTL = this.canvas.vptCoords.tl, pointBR = this.canvas.vptCoords.br;\n var points = this.getCoords(true, calculate), point;\n for (var i = 0; i < 4; i++) {\n point = points[i];\n if (point.x <= pointBR.x && point.x >= pointTL.x && point.y <= pointBR.y && point.y >= pointTL.y) {\n return true;\n }\n }\n // no points on screen, check intersection with absolute coordinates\n if (this.intersectsWithRect(pointTL, pointBR, true, calculate)) {\n return true;\n }\n return this._containsCenterOfCanvas(pointTL, pointBR, calculate);\n },\n\n /**\n * Checks if the object contains the midpoint between canvas extremities\n * Does not make sense outside the context of isOnScreen and isPartiallyOnScreen\n * @private\n * @param {Fabric.Point} pointTL Top Left point\n * @param {Fabric.Point} pointBR Top Right point\n * @param {Boolean} calculate use coordinates of current position instead of .oCoords\n * @return {Boolean} true if the objects containe the point\n */\n _containsCenterOfCanvas: function(pointTL, pointBR, calculate) {\n // worst case scenario the object is so big that contains the screen\n var centerPoint = { x: (pointTL.x + pointBR.x) / 2, y: (pointTL.y + pointBR.y) / 2 };\n if (this.containsPoint(centerPoint, null, true, calculate)) {\n return true;\n }\n return false;\n },\n\n /**\n * Checks if object is partially contained within the canvas with current viewportTransform\n * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords\n * @return {Boolean} true if object is partially contained within canvas\n */\n isPartiallyOnScreen: function(calculate) {\n if (!this.canvas) {\n return false;\n }\n var pointTL = this.canvas.vptCoords.tl, pointBR = this.canvas.vptCoords.br;\n if (this.intersectsWithRect(pointTL, pointBR, true, calculate)) {\n return true;\n }\n return this._containsCenterOfCanvas(pointTL, pointBR, calculate);\n },\n\n /**\n * Method that returns an object with the object edges in it, given the coordinates of the corners\n * @private\n * @param {Object} oCoords Coordinates of the object corners\n */\n _getImageLines: function(oCoords) {\n return {\n topline: {\n o: oCoords.tl,\n d: oCoords.tr\n },\n rightline: {\n o: oCoords.tr,\n d: oCoords.br\n },\n bottomline: {\n o: oCoords.br,\n d: oCoords.bl\n },\n leftline: {\n o: oCoords.bl,\n d: oCoords.tl\n }\n };\n },\n\n /**\n * Helper method to determine how many cross points are between the 4 object edges\n * and the horizontal line determined by a point on canvas\n * @private\n * @param {fabric.Point} point Point to check\n * @param {Object} lines Coordinates of the object being evaluated\n */\n // remove yi, not used but left code here just in case.\n _findCrossPoints: function(point, lines) {\n var b1, b2, a1, a2, xi, // yi,\n xcount = 0,\n iLine;\n\n for (var lineKey in lines) {\n iLine = lines[lineKey];\n // optimisation 1: line below point. no cross\n if ((iLine.o.y < point.y) && (iLine.d.y < point.y)) {\n continue;\n }\n // optimisation 2: line above point. no cross\n if ((iLine.o.y >= point.y) && (iLine.d.y >= point.y)) {\n continue;\n }\n // optimisation 3: vertical line case\n if ((iLine.o.x === iLine.d.x) && (iLine.o.x >= point.x)) {\n xi = iLine.o.x;\n // yi = point.y;\n }\n // calculate the intersection point\n else {\n b1 = 0;\n b2 = (iLine.d.y - iLine.o.y) / (iLine.d.x - iLine.o.x);\n a1 = point.y - b1 * point.x;\n a2 = iLine.o.y - b2 * iLine.o.x;\n\n xi = -(a1 - a2) / (b1 - b2);\n // yi = a1 + b1 * xi;\n }\n // dont count xi < point.x cases\n if (xi >= point.x) {\n xcount += 1;\n }\n // optimisation 4: specific for square images\n if (xcount === 2) {\n break;\n }\n }\n return xcount;\n },\n\n /**\n * Returns coordinates of object's bounding rectangle (left, top, width, height)\n * the box is intented as aligned to axis of canvas.\n * @param {Boolean} [absolute] use coordinates without viewportTransform\n * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords / .aCoords\n * @return {Object} Object with left, top, width, height properties\n */\n getBoundingRect: function(absolute, calculate) {\n var coords = this.getCoords(absolute, calculate);\n return fabric.util.makeBoundingBoxFromPoints(coords);\n },\n\n /**\n * Returns width of an object bounding box counting transformations\n * before 2.0 it was named getWidth();\n * @return {Number} width value\n */\n getScaledWidth: function() {\n return this._getTransformedDimensions().x;\n },\n\n /**\n * Returns height of an object bounding box counting transformations\n * before 2.0 it was named getHeight();\n * @return {Number} height value\n */\n getScaledHeight: function() {\n return this._getTransformedDimensions().y;\n },\n\n /**\n * Makes sure the scale is valid and modifies it if necessary\n * @private\n * @param {Number} value\n * @return {Number}\n */\n _constrainScale: function(value) {\n if (Math.abs(value) < this.minScaleLimit) {\n if (value < 0) {\n return -this.minScaleLimit;\n }\n else {\n return this.minScaleLimit;\n }\n }\n else if (value === 0) {\n return 0.0001;\n }\n return value;\n },\n\n /**\n * Scales an object (equally by x and y)\n * @param {Number} value Scale factor\n * @return {fabric.Object} thisArg\n * @chainable\n */\n scale: function(value) {\n this._set('scaleX', value);\n this._set('scaleY', value);\n return this.setCoords();\n },\n\n /**\n * Scales an object to a given width, with respect to bounding box (scaling by x/y equally)\n * @param {Number} value New width value\n * @param {Boolean} absolute ignore viewport\n * @return {fabric.Object} thisArg\n * @chainable\n */\n scaleToWidth: function(value, absolute) {\n // adjust to bounding rect factor so that rotated shapes would fit as well\n var boundingRectFactor = this.getBoundingRect(absolute).width / this.getScaledWidth();\n return this.scale(value / this.width / boundingRectFactor);\n },\n\n /**\n * Scales an object to a given height, with respect to bounding box (scaling by x/y equally)\n * @param {Number} value New height value\n * @param {Boolean} absolute ignore viewport\n * @return {fabric.Object} thisArg\n * @chainable\n */\n scaleToHeight: function(value, absolute) {\n // adjust to bounding rect factor so that rotated shapes would fit as well\n var boundingRectFactor = this.getBoundingRect(absolute).height / this.getScaledHeight();\n return this.scale(value / this.height / boundingRectFactor);\n },\n\n /**\n * Calculate and returns the .coords of an object.\n * @return {Object} Object with tl, tr, br, bl ....\n * @chainable\n */\n calcCoords: function(absolute) {\n var rotateMatrix = this._calcRotateMatrix(),\n translateMatrix = this._calcTranslateMatrix(),\n startMatrix = multiplyMatrices(translateMatrix, rotateMatrix),\n vpt = this.getViewportTransform(),\n finalMatrix = absolute ? startMatrix : multiplyMatrices(vpt, startMatrix),\n dim = this._getTransformedDimensions(),\n w = dim.x / 2, h = dim.y / 2,\n tl = transformPoint({ x: -w, y: -h }, finalMatrix),\n tr = transformPoint({ x: w, y: -h }, finalMatrix),\n bl = transformPoint({ x: -w, y: h }, finalMatrix),\n br = transformPoint({ x: w, y: h }, finalMatrix);\n if (!absolute) {\n var padding = this.padding, angle = degreesToRadians(this.angle),\n cos = fabric.util.cos(angle), sin = fabric.util.sin(angle),\n cosP = cos * padding, sinP = sin * padding, cosPSinP = cosP + sinP,\n cosPMinusSinP = cosP - sinP;\n if (padding) {\n tl.x -= cosPMinusSinP;\n tl.y -= cosPSinP;\n tr.x += cosPSinP;\n tr.y -= cosPMinusSinP;\n bl.x -= cosPSinP;\n bl.y += cosPMinusSinP;\n br.x += cosPMinusSinP;\n br.y += cosPSinP;\n }\n var ml = new fabric.Point((tl.x + bl.x) / 2, (tl.y + bl.y) / 2),\n mt = new fabric.Point((tr.x + tl.x) / 2, (tr.y + tl.y) / 2),\n mr = new fabric.Point((br.x + tr.x) / 2, (br.y + tr.y) / 2),\n mb = new fabric.Point((br.x + bl.x) / 2, (br.y + bl.y) / 2),\n mtr = new fabric.Point(mt.x + sin * this.rotatingPointOffset, mt.y - cos * this.rotatingPointOffset);\n }\n\n // if (!absolute) {\n // var canvas = this.canvas;\n // setTimeout(function() {\n // canvas.contextTop.clearRect(0, 0, 700, 700);\n // canvas.contextTop.fillStyle = 'green';\n // canvas.contextTop.fillRect(mb.x, mb.y, 3, 3);\n // canvas.contextTop.fillRect(bl.x, bl.y, 3, 3);\n // canvas.contextTop.fillRect(br.x, br.y, 3, 3);\n // canvas.contextTop.fillRect(tl.x, tl.y, 3, 3);\n // canvas.contextTop.fillRect(tr.x, tr.y, 3, 3);\n // canvas.contextTop.fillRect(ml.x, ml.y, 3, 3);\n // canvas.contextTop.fillRect(mr.x, mr.y, 3, 3);\n // canvas.contextTop.fillRect(mt.x, mt.y, 3, 3);\n // canvas.contextTop.fillRect(mtr.x, mtr.y, 3, 3);\n // }, 50);\n // }\n\n var coords = {\n // corners\n tl: tl, tr: tr, br: br, bl: bl,\n };\n if (!absolute) {\n // middle\n coords.ml = ml;\n coords.mt = mt;\n coords.mr = mr;\n coords.mb = mb;\n // rotating point\n coords.mtr = mtr;\n }\n return coords;\n },\n\n /**\n * Sets corner position coordinates based on current angle, width and height.\n * See {@link https://github.com/kangax/fabric.js/wiki/When-to-call-setCoords|When-to-call-setCoords}\n * @param {Boolean} [ignoreZoom] set oCoords with or without the viewport transform.\n * @param {Boolean} [skipAbsolute] skip calculation of aCoords, usefull in setViewportTransform\n * @return {fabric.Object} thisArg\n * @chainable\n */\n setCoords: function(ignoreZoom, skipAbsolute) {\n this.oCoords = this.calcCoords(ignoreZoom);\n if (!skipAbsolute) {\n this.aCoords = this.calcCoords(true);\n }\n\n // set coordinates of the draggable boxes in the corners used to scale/rotate the image\n ignoreZoom || (this._setCornerCoords && this._setCornerCoords());\n\n return this;\n },\n\n /**\n * calculate rotation matrix of an object\n * @return {Array} rotation matrix for the object\n */\n _calcRotateMatrix: function() {\n if (this.angle) {\n var theta = degreesToRadians(this.angle), cos = fabric.util.cos(theta), sin = fabric.util.sin(theta);\n return [cos, sin, -sin, cos, 0, 0];\n }\n return fabric.iMatrix.concat();\n },\n\n /**\n * calculate the translation matrix for an object transform\n * @return {Array} rotation matrix for the object\n */\n _calcTranslateMatrix: function() {\n var center = this.getCenterPoint();\n return [1, 0, 0, 1, center.x, center.y];\n },\n\n transformMatrixKey: function(skipGroup) {\n var sep = '_', prefix = '';\n if (!skipGroup && this.group) {\n prefix = this.group.transformMatrixKey(skipGroup) + sep;\n };\n return prefix + this.top + sep + this.left + sep + this.scaleX + sep + this.scaleY +\n sep + this.skewX + sep + this.skewY + sep + this.angle + sep + this.originX + sep + this.originY +\n sep + this.width + sep + this.height + sep + this.strokeWidth + this.flipX + this.flipY;\n },\n\n /**\n * calculate trasform Matrix that represent current transformation from\n * object properties.\n * @param {Boolean} [skipGroup] return transformMatrix for object and not go upward with parents\n * @return {Array} matrix Transform Matrix for the object\n */\n calcTransformMatrix: function(skipGroup) {\n if (skipGroup) {\n return this.calcOwnMatrix();\n }\n var key = this.transformMatrixKey(), cache = this.matrixCache || (this.matrixCache = {});\n if (cache.key === key) {\n return cache.value;\n }\n var matrix = this.calcOwnMatrix();\n if (this.group) {\n matrix = multiplyMatrices(this.group.calcTransformMatrix(), matrix);\n }\n cache.key = key;\n cache.value = matrix;\n return matrix;\n },\n\n calcOwnMatrix: function() {\n var key = this.transformMatrixKey(true), cache = this.ownMatrixCache || (this.ownMatrixCache = {});\n if (cache.key === key) {\n return cache.value;\n }\n var matrix = this._calcTranslateMatrix(),\n rotateMatrix,\n dimensionMatrix = this._calcDimensionsTransformMatrix(this.skewX, this.skewY, true);\n if (this.angle) {\n rotateMatrix = this._calcRotateMatrix();\n matrix = multiplyMatrices(matrix, rotateMatrix);\n }\n matrix = multiplyMatrices(matrix, dimensionMatrix);\n cache.key = key;\n cache.value = matrix;\n return matrix;\n },\n\n _calcDimensionsTransformMatrix: function(skewX, skewY, flipping) {\n var skewMatrix,\n scaleX = this.scaleX * (flipping && this.flipX ? -1 : 1),\n scaleY = this.scaleY * (flipping && this.flipY ? -1 : 1),\n scaleMatrix = [scaleX, 0, 0, scaleY, 0, 0];\n if (skewX) {\n skewMatrix = [1, 0, Math.tan(degreesToRadians(skewX)), 1];\n scaleMatrix = multiplyMatrices(scaleMatrix, skewMatrix, true);\n }\n if (skewY) {\n skewMatrix = [1, Math.tan(degreesToRadians(skewY)), 0, 1];\n scaleMatrix = multiplyMatrices(scaleMatrix, skewMatrix, true);\n }\n return scaleMatrix;\n },\n\n\n /*\n * Calculate object dimensions from its properties\n * @private\n * @return {Object} .x width dimension\n * @return {Object} .y height dimension\n */\n _getNonTransformedDimensions: function() {\n var strokeWidth = this.strokeWidth,\n w = this.width + strokeWidth,\n h = this.height + strokeWidth;\n return { x: w, y: h };\n },\n\n /*\n * Calculate object bounding boxdimensions from its properties scale, skew.\n * @private\n * @return {Object} .x width dimension\n * @return {Object} .y height dimension\n */\n _getTransformedDimensions: function(skewX, skewY) {\n if (typeof skewX === 'undefined') {\n skewX = this.skewX;\n }\n if (typeof skewY === 'undefined') {\n skewY = this.skewY;\n }\n var dimensions = this._getNonTransformedDimensions();\n if (skewX === 0 && skewY === 0) {\n return { x: dimensions.x * this.scaleX, y: dimensions.y * this.scaleY };\n }\n var dimX = dimensions.x / 2, dimY = dimensions.y / 2,\n points = [\n {\n x: -dimX,\n y: -dimY\n },\n {\n x: dimX,\n y: -dimY\n },\n {\n x: -dimX,\n y: dimY\n },\n {\n x: dimX,\n y: dimY\n }],\n i, transformMatrix = this._calcDimensionsTransformMatrix(skewX, skewY, false),\n bbox;\n for (i = 0; i < points.length; i++) {\n points[i] = fabric.util.transformPoint(points[i], transformMatrix);\n }\n bbox = fabric.util.makeBoundingBoxFromPoints(points);\n return { x: bbox.width, y: bbox.height };\n },\n\n /*\n * Calculate object dimensions for controls. include padding and canvas zoom\n * private\n */\n _calculateCurrentDimensions: function() {\n var vpt = this.getViewportTransform(),\n dim = this._getTransformedDimensions(),\n p = fabric.util.transformPoint(dim, vpt, true);\n\n return p.scalarAdd(2 * this.padding);\n },\n });\n})();\n\n\nfabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n\n /**\n * Moves an object to the bottom of the stack of drawn objects\n * @return {fabric.Object} thisArg\n * @chainable\n */\n sendToBack: function() {\n if (this.group) {\n fabric.StaticCanvas.prototype.sendToBack.call(this.group, this);\n }\n else {\n this.canvas.sendToBack(this);\n }\n return this;\n },\n\n /**\n * Moves an object to the top of the stack of drawn objects\n * @return {fabric.Object} thisArg\n * @chainable\n */\n bringToFront: function() {\n if (this.group) {\n fabric.StaticCanvas.prototype.bringToFront.call(this.group, this);\n }\n else {\n this.canvas.bringToFront(this);\n }\n return this;\n },\n\n /**\n * Moves an object down in stack of drawn objects\n * @param {Boolean} [intersecting] If `true`, send object behind next lower intersecting object\n * @return {fabric.Object} thisArg\n * @chainable\n */\n sendBackwards: function(intersecting) {\n if (this.group) {\n fabric.StaticCanvas.prototype.sendBackwards.call(this.group, this, intersecting);\n }\n else {\n this.canvas.sendBackwards(this, intersecting);\n }\n return this;\n },\n\n /**\n * Moves an object up in stack of drawn objects\n * @param {Boolean} [intersecting] If `true`, send object in front of next upper intersecting object\n * @return {fabric.Object} thisArg\n * @chainable\n */\n bringForward: function(intersecting) {\n if (this.group) {\n fabric.StaticCanvas.prototype.bringForward.call(this.group, this, intersecting);\n }\n else {\n this.canvas.bringForward(this, intersecting);\n }\n return this;\n },\n\n /**\n * Moves an object to specified level in stack of drawn objects\n * @param {Number} index New position of object\n * @return {fabric.Object} thisArg\n * @chainable\n */\n moveTo: function(index) {\n if (this.group && this.group.type !== 'activeSelection') {\n fabric.StaticCanvas.prototype.moveTo.call(this.group, this, index);\n }\n else {\n this.canvas.moveTo(this, index);\n }\n return this;\n }\n});\n\n\n/* _TO_SVG_START_ */\n(function() {\n function getSvgColorString(prop, value) {\n if (!value) {\n return prop + ': none; ';\n }\n else if (value.toLive) {\n return prop + ': url(#SVGID_' + value.id + '); ';\n }\n else {\n var color = new fabric.Color(value),\n str = prop + ': ' + color.toRgb() + '; ',\n opacity = color.getAlpha();\n if (opacity !== 1) {\n //change the color in rgb + opacity\n str += prop + '-opacity: ' + opacity.toString() + '; ';\n }\n return str;\n }\n }\n\n var toFixed = fabric.util.toFixed;\n\n fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n /**\n * Returns styles-string for svg-export\n * @param {Boolean} skipShadow a boolean to skip shadow filter output\n * @return {String}\n */\n getSvgStyles: function(skipShadow) {\n\n var fillRule = this.fillRule,\n strokeWidth = this.strokeWidth ? this.strokeWidth : '0',\n strokeDashArray = this.strokeDashArray ? this.strokeDashArray.join(' ') : 'none',\n strokeLineCap = this.strokeLineCap ? this.strokeLineCap : 'butt',\n strokeLineJoin = this.strokeLineJoin ? this.strokeLineJoin : 'miter',\n strokeMiterLimit = this.strokeMiterLimit ? this.strokeMiterLimit : '4',\n opacity = typeof this.opacity !== 'undefined' ? this.opacity : '1',\n visibility = this.visible ? '' : ' visibility: hidden;',\n filter = skipShadow ? '' : this.getSvgFilter(),\n fill = getSvgColorString('fill', this.fill),\n stroke = getSvgColorString('stroke', this.stroke);\n\n return [\n stroke,\n 'stroke-width: ', strokeWidth, '; ',\n 'stroke-dasharray: ', strokeDashArray, '; ',\n 'stroke-linecap: ', strokeLineCap, '; ',\n 'stroke-linejoin: ', strokeLineJoin, '; ',\n 'stroke-miterlimit: ', strokeMiterLimit, '; ',\n fill,\n 'fill-rule: ', fillRule, '; ',\n 'opacity: ', opacity, ';',\n filter,\n visibility\n ].join('');\n },\n\n /**\n * Returns styles-string for svg-export\n * @param {Object} style the object from which to retrieve style properties\n * @param {Boolean} useWhiteSpace a boolean to include an additional attribute in the style.\n * @return {String}\n */\n getSvgSpanStyles: function(style, useWhiteSpace) {\n var term = '; ';\n var fontFamily = style.fontFamily ?\n 'font-family: ' + (((style.fontFamily.indexOf('\\'') === -1 && style.fontFamily.indexOf('\"') === -1) ?\n '\\'' + style.fontFamily + '\\'' : style.fontFamily)) + term : '';\n var strokeWidth = style.strokeWidth ? 'stroke-width: ' + style.strokeWidth + term : '',\n fontFamily = fontFamily,\n fontSize = style.fontSize ? 'font-size: ' + style.fontSize + 'px' + term : '',\n fontStyle = style.fontStyle ? 'font-style: ' + style.fontStyle + term : '',\n fontWeight = style.fontWeight ? 'font-weight: ' + style.fontWeight + term : '',\n fill = style.fill ? getSvgColorString('fill', style.fill) : '',\n stroke = style.stroke ? getSvgColorString('stroke', style.stroke) : '',\n textDecoration = this.getSvgTextDecoration(style),\n deltaY = style.deltaY ? 'baseline-shift: ' + (-style.deltaY) + '; ' : '';\n if (textDecoration) {\n textDecoration = 'text-decoration: ' + textDecoration + term;\n }\n\n return [\n stroke,\n strokeWidth,\n fontFamily,\n fontSize,\n fontStyle,\n fontWeight,\n textDecoration,\n fill,\n deltaY,\n useWhiteSpace ? 'white-space: pre; ' : ''\n ].join('');\n },\n\n /**\n * Returns text-decoration property for svg-export\n * @param {Object} style the object from which to retrieve style properties\n * @return {String}\n */\n getSvgTextDecoration: function(style) {\n if ('overline' in style || 'underline' in style || 'linethrough' in style) {\n return (style.overline ? 'overline ' : '') +\n (style.underline ? 'underline ' : '') + (style.linethrough ? 'line-through ' : '');\n }\n return '';\n },\n\n /**\n * Returns filter for svg shadow\n * @return {String}\n */\n getSvgFilter: function() {\n return this.shadow ? 'filter: url(#SVGID_' + this.shadow.id + ');' : '';\n },\n\n /**\n * Returns id attribute for svg output\n * @return {String}\n */\n getSvgId: function() {\n return this.id ? 'id=\"' + this.id + '\" ' : '';\n },\n\n /**\n * Returns transform-string for svg-export\n * @return {String}\n */\n getSvgTransform: function() {\n var angle = this.angle,\n skewX = (this.skewX % 360),\n skewY = (this.skewY % 360),\n center = this.getCenterPoint(),\n\n NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS,\n\n translatePart = 'translate(' +\n toFixed(center.x, NUM_FRACTION_DIGITS) +\n ' ' +\n toFixed(center.y, NUM_FRACTION_DIGITS) +\n ')',\n\n anglePart = angle !== 0\n ? (' rotate(' + toFixed(angle, NUM_FRACTION_DIGITS) + ')')\n : '',\n\n scalePart = (this.scaleX === 1 && this.scaleY === 1)\n ? '' :\n (' scale(' +\n toFixed(this.scaleX, NUM_FRACTION_DIGITS) +\n ' ' +\n toFixed(this.scaleY, NUM_FRACTION_DIGITS) +\n ')'),\n\n skewXPart = skewX !== 0 ? ' skewX(' + toFixed(skewX, NUM_FRACTION_DIGITS) + ')' : '',\n\n skewYPart = skewY !== 0 ? ' skewY(' + toFixed(skewY, NUM_FRACTION_DIGITS) + ')' : '',\n\n flipXPart = this.flipX ? ' matrix(-1 0 0 1 0 0) ' : '',\n\n flipYPart = this.flipY ? ' matrix(1 0 0 -1 0 0)' : '';\n\n return [\n translatePart, anglePart, scalePart, flipXPart, flipYPart, skewXPart, skewYPart\n ].join('');\n },\n\n /**\n * Returns transform-string for svg-export from the transform matrix of single elements\n * @return {String}\n */\n getSvgTransformMatrix: function() {\n return this.transformMatrix ? ' matrix(' + this.transformMatrix.join(' ') + ') ' : '';\n },\n\n _setSVGBg: function(textBgRects) {\n if (this.backgroundColor) {\n var NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS;\n textBgRects.push(\n '\\t\\t\\n');\n }\n },\n\n /**\n * @private\n */\n _createBaseSVGMarkup: function() {\n var markup = [];\n\n if (this.fill && this.fill.toLive) {\n markup.push(this.fill.toSVG(this, false));\n }\n if (this.stroke && this.stroke.toLive) {\n markup.push(this.stroke.toSVG(this, false));\n }\n if (this.shadow) {\n markup.push(this.shadow.toSVG(this));\n }\n return markup;\n },\n\n addPaintOrder: function() {\n return this.paintFirst !== 'fill' ? ' paint-order=\"' + this.paintFirst + '\" ' : '';\n }\n });\n})();\n/* _TO_SVG_END_ */\n\n\n(function() {\n\n var extend = fabric.util.object.extend,\n originalSet = 'stateProperties';\n\n /*\n Depends on `stateProperties`\n */\n function saveProps(origin, destination, props) {\n var tmpObj = { }, deep = true;\n props.forEach(function(prop) {\n tmpObj[prop] = origin[prop];\n });\n extend(origin[destination], tmpObj, deep);\n }\n\n function _isEqual(origValue, currentValue, firstPass) {\n if (origValue === currentValue) {\n // if the objects are identical, return\n return true;\n }\n else if (Array.isArray(origValue)) {\n if (!Array.isArray(currentValue) || origValue.length !== currentValue.length) {\n return false;\n }\n for (var i = 0, len = origValue.length; i < len; i++) {\n if (!_isEqual(origValue[i], currentValue[i])) {\n return false;\n }\n }\n return true;\n }\n else if (origValue && typeof origValue === 'object') {\n var keys = Object.keys(origValue), key;\n if (!currentValue ||\n typeof currentValue !== 'object' ||\n (!firstPass && keys.length !== Object.keys(currentValue).length)\n ) {\n return false;\n }\n for (var i = 0, len = keys.length; i < len; i++) {\n key = keys[i];\n if (!_isEqual(origValue[key], currentValue[key])) {\n return false;\n }\n }\n return true;\n }\n }\n\n\n fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n\n /**\n * Returns true if object state (one of its state properties) was changed\n * @param {String} [propertySet] optional name for the set of property we want to save\n * @return {Boolean} true if instance' state has changed since `{@link fabric.Object#saveState}` was called\n */\n hasStateChanged: function(propertySet) {\n propertySet = propertySet || originalSet;\n var dashedPropertySet = '_' + propertySet;\n if (Object.keys(this[dashedPropertySet]).length < this[propertySet].length) {\n return true;\n }\n return !_isEqual(this[dashedPropertySet], this, true);\n },\n\n /**\n * Saves state of an object\n * @param {Object} [options] Object with additional `stateProperties` array to include when saving state\n * @return {fabric.Object} thisArg\n */\n saveState: function(options) {\n var propertySet = options && options.propertySet || originalSet,\n destination = '_' + propertySet;\n if (!this[destination]) {\n return this.setupState(options);\n }\n saveProps(this, destination, this[propertySet]);\n if (options && options.stateProperties) {\n saveProps(this, destination, options.stateProperties);\n }\n return this;\n },\n\n /**\n * Setups state of an object\n * @param {Object} [options] Object with additional `stateProperties` array to include when saving state\n * @return {fabric.Object} thisArg\n */\n setupState: function(options) {\n options = options || { };\n var propertySet = options.propertySet || originalSet;\n options.propertySet = propertySet;\n this['_' + propertySet] = { };\n this.saveState(options);\n return this;\n }\n });\n})();\n\n\n(function() {\n\n var degreesToRadians = fabric.util.degreesToRadians;\n\n fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n\n /**\n * The object interactivity controls.\n * @private\n */\n _controlsVisibility: null,\n\n /**\n * Determines which corner has been clicked\n * @private\n * @param {Object} pointer The pointer indicating the mouse position\n * @return {String|Boolean} corner code (tl, tr, bl, br, etc.), or false if nothing is found\n */\n _findTargetCorner: function(pointer) {\n // objects in group, anykind, are not self modificable,\n // must not return an hovered corner.\n if (!this.hasControls || this.group || (!this.canvas || this.canvas._activeObject !== this)) {\n return false;\n }\n\n var ex = pointer.x,\n ey = pointer.y,\n xPoints,\n lines;\n this.__corner = 0;\n for (var i in this.oCoords) {\n\n if (!this.isControlVisible(i)) {\n continue;\n }\n\n if (i === 'mtr' && !this.hasRotatingPoint) {\n continue;\n }\n\n if (this.get('lockUniScaling') &&\n (i === 'mt' || i === 'mr' || i === 'mb' || i === 'ml')) {\n continue;\n }\n\n lines = this._getImageLines(this.oCoords[i].corner);\n\n // debugging\n\n // canvas.contextTop.fillRect(lines.bottomline.d.x, lines.bottomline.d.y, 2, 2);\n // canvas.contextTop.fillRect(lines.bottomline.o.x, lines.bottomline.o.y, 2, 2);\n\n // canvas.contextTop.fillRect(lines.leftline.d.x, lines.leftline.d.y, 2, 2);\n // canvas.contextTop.fillRect(lines.leftline.o.x, lines.leftline.o.y, 2, 2);\n\n // canvas.contextTop.fillRect(lines.topline.d.x, lines.topline.d.y, 2, 2);\n // canvas.contextTop.fillRect(lines.topline.o.x, lines.topline.o.y, 2, 2);\n\n // canvas.contextTop.fillRect(lines.rightline.d.x, lines.rightline.d.y, 2, 2);\n // canvas.contextTop.fillRect(lines.rightline.o.x, lines.rightline.o.y, 2, 2);\n\n xPoints = this._findCrossPoints({ x: ex, y: ey }, lines);\n if (xPoints !== 0 && xPoints % 2 === 1) {\n this.__corner = i;\n return i;\n }\n }\n return false;\n },\n\n /**\n * Sets the coordinates of the draggable boxes in the corners of\n * the image used to scale/rotate it.\n * @private\n */\n _setCornerCoords: function() {\n var coords = this.oCoords,\n newTheta = degreesToRadians(45 - this.angle),\n /* Math.sqrt(2 * Math.pow(this.cornerSize, 2)) / 2, */\n /* 0.707106 stands for sqrt(2)/2 */\n cornerHypotenuse = this.cornerSize * 0.707106,\n cosHalfOffset = cornerHypotenuse * fabric.util.cos(newTheta),\n sinHalfOffset = cornerHypotenuse * fabric.util.sin(newTheta),\n x, y;\n\n for (var point in coords) {\n x = coords[point].x;\n y = coords[point].y;\n coords[point].corner = {\n tl: {\n x: x - sinHalfOffset,\n y: y - cosHalfOffset\n },\n tr: {\n x: x + cosHalfOffset,\n y: y - sinHalfOffset\n },\n bl: {\n x: x - cosHalfOffset,\n y: y + sinHalfOffset\n },\n br: {\n x: x + sinHalfOffset,\n y: y + cosHalfOffset\n }\n };\n }\n },\n\n /**\n * Draws a colored layer behind the object, inside its selection borders.\n * Requires public options: padding, selectionBackgroundColor\n * this function is called when the context is transformed\n * has checks to be skipped when the object is on a staticCanvas\n * @param {CanvasRenderingContext2D} ctx Context to draw on\n * @return {fabric.Object} thisArg\n * @chainable\n */\n drawSelectionBackground: function(ctx) {\n if (!this.selectionBackgroundColor ||\n (this.canvas && !this.canvas.interactive) ||\n (this.canvas && this.canvas._activeObject !== this)\n ) {\n return this;\n }\n ctx.save();\n var center = this.getCenterPoint(), wh = this._calculateCurrentDimensions(),\n vpt = this.canvas.viewportTransform;\n ctx.translate(center.x, center.y);\n ctx.scale(1 / vpt[0], 1 / vpt[3]);\n ctx.rotate(degreesToRadians(this.angle));\n ctx.fillStyle = this.selectionBackgroundColor;\n ctx.fillRect(-wh.x / 2, -wh.y / 2, wh.x, wh.y);\n ctx.restore();\n return this;\n },\n\n /**\n * Draws borders of an object's bounding box.\n * Requires public properties: width, height\n * Requires public options: padding, borderColor\n * @param {CanvasRenderingContext2D} ctx Context to draw on\n * @param {Object} styleOverride object to override the object style\n * @return {fabric.Object} thisArg\n * @chainable\n */\n drawBorders: function(ctx, styleOverride) {\n styleOverride = styleOverride || {};\n var wh = this._calculateCurrentDimensions(),\n strokeWidth = 1 / this.borderScaleFactor,\n width = wh.x + strokeWidth,\n height = wh.y + strokeWidth,\n drawRotatingPoint = typeof styleOverride.hasRotatingPoint !== 'undefined' ?\n styleOverride.hasRotatingPoint : this.hasRotatingPoint,\n hasControls = typeof styleOverride.hasControls !== 'undefined' ?\n styleOverride.hasControls : this.hasControls,\n rotatingPointOffset = typeof styleOverride.rotatingPointOffset !== 'undefined' ?\n styleOverride.rotatingPointOffset : this.rotatingPointOffset;\n\n ctx.save();\n ctx.strokeStyle = styleOverride.borderColor || this.borderColor;\n this._setLineDash(ctx, styleOverride.borderDashArray || this.borderDashArray, null);\n\n ctx.strokeRect(\n -width / 2,\n -height / 2,\n width,\n height\n );\n\n if (drawRotatingPoint && this.isControlVisible('mtr') && hasControls) {\n\n var rotateHeight = -height / 2;\n\n ctx.beginPath();\n ctx.moveTo(0, rotateHeight);\n ctx.lineTo(0, rotateHeight - rotatingPointOffset);\n ctx.stroke();\n }\n\n ctx.restore();\n return this;\n },\n\n /**\n * Draws borders of an object's bounding box when it is inside a group.\n * Requires public properties: width, height\n * Requires public options: padding, borderColor\n * @param {CanvasRenderingContext2D} ctx Context to draw on\n * @param {object} options object representing current object parameters\n * @param {Object} styleOverride object to override the object style\n * @return {fabric.Object} thisArg\n * @chainable\n */\n drawBordersInGroup: function(ctx, options, styleOverride) {\n styleOverride = styleOverride || {};\n var p = this._getNonTransformedDimensions(),\n matrix = fabric.util.customTransformMatrix(options.scaleX, options.scaleY, options.skewX),\n wh = fabric.util.transformPoint(p, matrix),\n strokeWidth = 1 / this.borderScaleFactor,\n width = wh.x + strokeWidth,\n height = wh.y + strokeWidth;\n\n ctx.save();\n this._setLineDash(ctx, styleOverride.borderDashArray || this.borderDashArray, null);\n ctx.strokeStyle = styleOverride.borderColor || this.borderColor;\n\n ctx.strokeRect(\n -width / 2,\n -height / 2,\n width,\n height\n );\n\n ctx.restore();\n return this;\n },\n\n /**\n * Draws corners of an object's bounding box.\n * Requires public properties: width, height\n * Requires public options: cornerSize, padding\n * @param {CanvasRenderingContext2D} ctx Context to draw on\n * @param {Object} styleOverride object to override the object style\n * @return {fabric.Object} thisArg\n * @chainable\n */\n drawControls: function(ctx, styleOverride) {\n styleOverride = styleOverride || {};\n var wh = this._calculateCurrentDimensions(),\n width = wh.x,\n height = wh.y,\n scaleOffset = styleOverride.cornerSize || this.cornerSize,\n left = -(width + scaleOffset) / 2,\n top = -(height + scaleOffset) / 2,\n transparentCorners = typeof styleOverride.transparentCorners !== 'undefined' ?\n styleOverride.transparentCorners : this.transparentCorners,\n hasRotatingPoint = typeof styleOverride.hasRotatingPoint !== 'undefined' ?\n styleOverride.hasRotatingPoint : this.hasRotatingPoint,\n methodName = transparentCorners ? 'stroke' : 'fill';\n\n ctx.save();\n ctx.strokeStyle = ctx.fillStyle = styleOverride.cornerColor || this.cornerColor;\n if (!this.transparentCorners) {\n ctx.strokeStyle = styleOverride.cornerStrokeColor || this.cornerStrokeColor;\n }\n this._setLineDash(ctx, styleOverride.cornerDashArray || this.cornerDashArray, null);\n\n // top-left\n this._drawControl('tl', ctx, methodName,\n left,\n top, styleOverride);\n\n // top-right\n this._drawControl('tr', ctx, methodName,\n left + width,\n top, styleOverride);\n\n // bottom-left\n this._drawControl('bl', ctx, methodName,\n left,\n top + height, styleOverride);\n\n // bottom-right\n this._drawControl('br', ctx, methodName,\n left + width,\n top + height, styleOverride);\n\n if (!this.get('lockUniScaling')) {\n\n // middle-top\n this._drawControl('mt', ctx, methodName,\n left + width / 2,\n top, styleOverride);\n\n // middle-bottom\n this._drawControl('mb', ctx, methodName,\n left + width / 2,\n top + height, styleOverride);\n\n // middle-right\n this._drawControl('mr', ctx, methodName,\n left + width,\n top + height / 2, styleOverride);\n\n // middle-left\n this._drawControl('ml', ctx, methodName,\n left,\n top + height / 2, styleOverride);\n }\n\n // middle-top-rotate\n if (hasRotatingPoint) {\n this._drawControl('mtr', ctx, methodName,\n left + width / 2,\n top - this.rotatingPointOffset, styleOverride);\n }\n\n ctx.restore();\n\n return this;\n },\n\n /**\n * @private\n */\n _drawControl: function(control, ctx, methodName, left, top, styleOverride) {\n styleOverride = styleOverride || {};\n if (!this.isControlVisible(control)) {\n return;\n }\n var size = this.cornerSize, stroke = !this.transparentCorners && this.cornerStrokeColor;\n switch (styleOverride.cornerStyle || this.cornerStyle) {\n case 'circle':\n ctx.beginPath();\n ctx.arc(left + size / 2, top + size / 2, size / 2, 0, 2 * Math.PI, false);\n ctx[methodName]();\n if (stroke) {\n ctx.stroke();\n }\n break;\n default:\n this.transparentCorners || ctx.clearRect(left, top, size, size);\n ctx[methodName + 'Rect'](left, top, size, size);\n if (stroke) {\n ctx.strokeRect(left, top, size, size);\n }\n }\n },\n\n /**\n * Returns true if the specified control is visible, false otherwise.\n * @param {String} controlName The name of the control. Possible values are 'tl', 'tr', 'br', 'bl', 'ml', 'mt', 'mr', 'mb', 'mtr'.\n * @returns {Boolean} true if the specified control is visible, false otherwise\n */\n isControlVisible: function(controlName) {\n return this._getControlsVisibility()[controlName];\n },\n\n /**\n * Sets the visibility of the specified control.\n * @param {String} controlName The name of the control. Possible values are 'tl', 'tr', 'br', 'bl', 'ml', 'mt', 'mr', 'mb', 'mtr'.\n * @param {Boolean} visible true to set the specified control visible, false otherwise\n * @return {fabric.Object} thisArg\n * @chainable\n */\n setControlVisible: function(controlName, visible) {\n this._getControlsVisibility()[controlName] = visible;\n return this;\n },\n\n /**\n * Sets the visibility state of object controls.\n * @param {Object} [options] Options object\n * @param {Boolean} [options.bl] true to enable the bottom-left control, false to disable it\n * @param {Boolean} [options.br] true to enable the bottom-right control, false to disable it\n * @param {Boolean} [options.mb] true to enable the middle-bottom control, false to disable it\n * @param {Boolean} [options.ml] true to enable the middle-left control, false to disable it\n * @param {Boolean} [options.mr] true to enable the middle-right control, false to disable it\n * @param {Boolean} [options.mt] true to enable the middle-top control, false to disable it\n * @param {Boolean} [options.tl] true to enable the top-left control, false to disable it\n * @param {Boolean} [options.tr] true to enable the top-right control, false to disable it\n * @param {Boolean} [options.mtr] true to enable the middle-top-rotate control, false to disable it\n * @return {fabric.Object} thisArg\n * @chainable\n */\n setControlsVisibility: function(options) {\n options || (options = { });\n\n for (var p in options) {\n this.setControlVisible(p, options[p]);\n }\n return this;\n },\n\n /**\n * Returns the instance of the control visibility set for this object.\n * @private\n * @returns {Object}\n */\n _getControlsVisibility: function() {\n if (!this._controlsVisibility) {\n this._controlsVisibility = {\n tl: true,\n tr: true,\n br: true,\n bl: true,\n ml: true,\n mt: true,\n mr: true,\n mb: true,\n mtr: true\n };\n }\n return this._controlsVisibility;\n },\n\n /**\n * This callback function is called every time _discardActiveObject or _setActiveObject\n * try to to deselect this object. If the function returns true, the process is cancelled\n * @param {Object} [options] options sent from the upper functions\n * @param {Event} [options.e] event if the process is generated by an event\n */\n onDeselect: function() {\n // implemented by sub-classes, as needed.\n },\n\n\n /**\n * This callback function is called every time _discardActiveObject or _setActiveObject\n * try to to select this object. If the function returns true, the process is cancelled\n * @param {Object} [options] options sent from the upper functions\n * @param {Event} [options.e] event if the process is generated by an event\n */\n onSelect: function() {\n // implemented by sub-classes, as needed.\n }\n });\n})();\n\n\nfabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.StaticCanvas.prototype */ {\n\n /**\n * Animation duration (in ms) for fx* methods\n * @type Number\n * @default\n */\n FX_DURATION: 500,\n\n /**\n * Centers object horizontally with animation.\n * @param {fabric.Object} object Object to center\n * @param {Object} [callbacks] Callbacks object with optional \"onComplete\" and/or \"onChange\" properties\n * @param {Function} [callbacks.onComplete] Invoked on completion\n * @param {Function} [callbacks.onChange] Invoked on every step of animation\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n fxCenterObjectH: function (object, callbacks) {\n callbacks = callbacks || { };\n\n var empty = function() { },\n onComplete = callbacks.onComplete || empty,\n onChange = callbacks.onChange || empty,\n _this = this;\n\n fabric.util.animate({\n startValue: object.left,\n endValue: this.getCenter().left,\n duration: this.FX_DURATION,\n onChange: function(value) {\n object.set('left', value);\n _this.requestRenderAll();\n onChange();\n },\n onComplete: function() {\n object.setCoords();\n onComplete();\n }\n });\n\n return this;\n },\n\n /**\n * Centers object vertically with animation.\n * @param {fabric.Object} object Object to center\n * @param {Object} [callbacks] Callbacks object with optional \"onComplete\" and/or \"onChange\" properties\n * @param {Function} [callbacks.onComplete] Invoked on completion\n * @param {Function} [callbacks.onChange] Invoked on every step of animation\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n fxCenterObjectV: function (object, callbacks) {\n callbacks = callbacks || { };\n\n var empty = function() { },\n onComplete = callbacks.onComplete || empty,\n onChange = callbacks.onChange || empty,\n _this = this;\n\n fabric.util.animate({\n startValue: object.top,\n endValue: this.getCenter().top,\n duration: this.FX_DURATION,\n onChange: function(value) {\n object.set('top', value);\n _this.requestRenderAll();\n onChange();\n },\n onComplete: function() {\n object.setCoords();\n onComplete();\n }\n });\n\n return this;\n },\n\n /**\n * Same as `fabric.Canvas#remove` but animated\n * @param {fabric.Object} object Object to remove\n * @param {Object} [callbacks] Callbacks object with optional \"onComplete\" and/or \"onChange\" properties\n * @param {Function} [callbacks.onComplete] Invoked on completion\n * @param {Function} [callbacks.onChange] Invoked on every step of animation\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n fxRemove: function (object, callbacks) {\n callbacks = callbacks || { };\n\n var empty = function() { },\n onComplete = callbacks.onComplete || empty,\n onChange = callbacks.onChange || empty,\n _this = this;\n\n fabric.util.animate({\n startValue: object.opacity,\n endValue: 0,\n duration: this.FX_DURATION,\n onChange: function(value) {\n object.set('opacity', value);\n _this.requestRenderAll();\n onChange();\n },\n onComplete: function () {\n _this.remove(object);\n onComplete();\n }\n });\n\n return this;\n }\n});\n\nfabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n /**\n * Animates object's properties\n * @param {String|Object} property Property to animate (if string) or properties to animate (if object)\n * @param {Number|Object} value Value to animate property to (if string was given first) or options object\n * @return {fabric.Object} thisArg\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#animation}\n * @chainable\n *\n * As object — multiple properties\n *\n * object.animate({ left: ..., top: ... });\n * object.animate({ left: ..., top: ... }, { duration: ... });\n *\n * As string — one property\n *\n * object.animate('left', ...);\n * object.animate('left', { duration: ... });\n *\n */\n animate: function() {\n if (arguments[0] && typeof arguments[0] === 'object') {\n var propsToAnimate = [], prop, skipCallbacks;\n for (prop in arguments[0]) {\n propsToAnimate.push(prop);\n }\n for (var i = 0, len = propsToAnimate.length; i < len; i++) {\n prop = propsToAnimate[i];\n skipCallbacks = i !== len - 1;\n this._animate(prop, arguments[0][prop], arguments[1], skipCallbacks);\n }\n }\n else {\n this._animate.apply(this, arguments);\n }\n return this;\n },\n\n /**\n * @private\n * @param {String} property Property to animate\n * @param {String} to Value to animate to\n * @param {Object} [options] Options object\n * @param {Boolean} [skipCallbacks] When true, callbacks like onchange and oncomplete are not invoked\n */\n _animate: function(property, to, options, skipCallbacks) {\n var _this = this, propPair;\n\n to = to.toString();\n\n if (!options) {\n options = { };\n }\n else {\n options = fabric.util.object.clone(options);\n }\n\n if (~property.indexOf('.')) {\n propPair = property.split('.');\n }\n\n var currentValue = propPair\n ? this.get(propPair[0])[propPair[1]]\n : this.get(property);\n\n if (!('from' in options)) {\n options.from = currentValue;\n }\n\n if (~to.indexOf('=')) {\n to = currentValue + parseFloat(to.replace('=', ''));\n }\n else {\n to = parseFloat(to);\n }\n\n fabric.util.animate({\n startValue: options.from,\n endValue: to,\n byValue: options.by,\n easing: options.easing,\n duration: options.duration,\n abort: options.abort && function() {\n return options.abort.call(_this);\n },\n onChange: function(value, valueProgress, timeProgress) {\n if (propPair) {\n _this[propPair[0]][propPair[1]] = value;\n }\n else {\n _this.set(property, value);\n }\n if (skipCallbacks) {\n return;\n }\n options.onChange && options.onChange(value, valueProgress, timeProgress);\n },\n onComplete: function(value, valueProgress, timeProgress) {\n if (skipCallbacks) {\n return;\n }\n\n _this.setCoords();\n options.onComplete && options.onComplete(value, valueProgress, timeProgress);\n }\n });\n }\n});\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend,\n clone = fabric.util.object.clone,\n coordProps = { x1: 1, x2: 1, y1: 1, y2: 1 },\n supportsLineDash = fabric.StaticCanvas.supports('setLineDash');\n\n if (fabric.Line) {\n fabric.warn('fabric.Line is already defined');\n return;\n }\n\n /**\n * Line class\n * @class fabric.Line\n * @extends fabric.Object\n * @see {@link fabric.Line#initialize} for constructor definition\n */\n fabric.Line = fabric.util.createClass(fabric.Object, /** @lends fabric.Line.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'line',\n\n /**\n * x value or first line edge\n * @type Number\n * @default\n */\n x1: 0,\n\n /**\n * y value or first line edge\n * @type Number\n * @default\n */\n y1: 0,\n\n /**\n * x value or second line edge\n * @type Number\n * @default\n */\n x2: 0,\n\n /**\n * y value or second line edge\n * @type Number\n * @default\n */\n y2: 0,\n\n cacheProperties: fabric.Object.prototype.cacheProperties.concat('x1', 'x2', 'y1', 'y2'),\n\n /**\n * Constructor\n * @param {Array} [points] Array of points\n * @param {Object} [options] Options object\n * @return {fabric.Line} thisArg\n */\n initialize: function(points, options) {\n if (!points) {\n points = [0, 0, 0, 0];\n }\n\n this.callSuper('initialize', options);\n\n this.set('x1', points[0]);\n this.set('y1', points[1]);\n this.set('x2', points[2]);\n this.set('y2', points[3]);\n\n this._setWidthHeight(options);\n },\n\n /**\n * @private\n * @param {Object} [options] Options\n */\n _setWidthHeight: function(options) {\n options || (options = { });\n\n this.width = Math.abs(this.x2 - this.x1);\n this.height = Math.abs(this.y2 - this.y1);\n\n this.left = 'left' in options\n ? options.left\n : this._getLeftToOriginX();\n\n this.top = 'top' in options\n ? options.top\n : this._getTopToOriginY();\n },\n\n /**\n * @private\n * @param {String} key\n * @param {*} value\n */\n _set: function(key, value) {\n this.callSuper('_set', key, value);\n if (typeof coordProps[key] !== 'undefined') {\n this._setWidthHeight();\n }\n return this;\n },\n\n /**\n * @private\n * @return {Number} leftToOriginX Distance from left edge of canvas to originX of Line.\n */\n _getLeftToOriginX: makeEdgeToOriginGetter(\n { // property names\n origin: 'originX',\n axis1: 'x1',\n axis2: 'x2',\n dimension: 'width'\n },\n { // possible values of origin\n nearest: 'left',\n center: 'center',\n farthest: 'right'\n }\n ),\n\n /**\n * @private\n * @return {Number} topToOriginY Distance from top edge of canvas to originY of Line.\n */\n _getTopToOriginY: makeEdgeToOriginGetter(\n { // property names\n origin: 'originY',\n axis1: 'y1',\n axis2: 'y2',\n dimension: 'height'\n },\n { // possible values of origin\n nearest: 'top',\n center: 'center',\n farthest: 'bottom'\n }\n ),\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(ctx) {\n ctx.beginPath();\n\n if (!this.strokeDashArray || this.strokeDashArray && supportsLineDash) {\n // move from center (of virtual box) to its left/top corner\n // we can't assume x1, y1 is top left and x2, y2 is bottom right\n var p = this.calcLinePoints();\n ctx.moveTo(p.x1, p.y1);\n ctx.lineTo(p.x2, p.y2);\n }\n\n ctx.lineWidth = this.strokeWidth;\n\n // TODO: test this\n // make sure setting \"fill\" changes color of a line\n // (by copying fillStyle to strokeStyle, since line is stroked, not filled)\n var origStrokeStyle = ctx.strokeStyle;\n ctx.strokeStyle = this.stroke || ctx.fillStyle;\n this.stroke && this._renderStroke(ctx);\n ctx.strokeStyle = origStrokeStyle;\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderDashedStroke: function(ctx) {\n var p = this.calcLinePoints();\n\n ctx.beginPath();\n fabric.util.drawDashedLine(ctx, p.x1, p.y1, p.x2, p.y2, this.strokeDashArray);\n ctx.closePath();\n },\n\n /**\n * This function is an helper for svg import. it returns the center of the object in the svg\n * untransformed coordinates\n * @private\n * @return {Object} center point from element coordinates\n */\n _findCenterFromElement: function() {\n return {\n x: (this.x1 + this.x2) / 2,\n y: (this.y1 + this.y2) / 2,\n };\n },\n\n /**\n * Returns object representation of an instance\n * @methd toObject\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n return extend(this.callSuper('toObject', propertiesToInclude), this.calcLinePoints());\n },\n\n /*\n * Calculate object dimensions from its properties\n * @private\n */\n _getNonTransformedDimensions: function() {\n var dim = this.callSuper('_getNonTransformedDimensions');\n if (this.strokeLineCap === 'butt') {\n if (this.width === 0) {\n dim.y -= this.strokeWidth;\n }\n if (this.height === 0) {\n dim.x -= this.strokeWidth;\n }\n }\n return dim;\n },\n\n /**\n * Recalculates line points given width and height\n * @private\n */\n calcLinePoints: function() {\n var xMult = this.x1 <= this.x2 ? -1 : 1,\n yMult = this.y1 <= this.y2 ? -1 : 1,\n x1 = (xMult * this.width * 0.5),\n y1 = (yMult * this.height * 0.5),\n x2 = (xMult * this.width * -0.5),\n y2 = (yMult * this.height * -0.5);\n\n return {\n x1: x1,\n x2: x2,\n y1: y1,\n y2: y2\n };\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns SVG representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n toSVG: function(reviver) {\n var markup = this._createBaseSVGMarkup(),\n p = this.calcLinePoints();\n markup.push(\n '\\n'\n );\n\n return reviver ? reviver(markup.join('')) : markup.join('');\n },\n /* _TO_SVG_END_ */\n });\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by {@link fabric.Line.fromElement})\n * @static\n * @memberOf fabric.Line\n * @see http://www.w3.org/TR/SVG/shapes.html#LineElement\n */\n fabric.Line.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat('x1 y1 x2 y2'.split(' '));\n\n /**\n * Returns fabric.Line instance from an SVG element\n * @static\n * @memberOf fabric.Line\n * @param {SVGElement} element Element to parse\n * @param {Object} [options] Options object\n * @param {Function} [callback] callback function invoked after parsing\n */\n fabric.Line.fromElement = function(element, callback, options) {\n options = options || { };\n var parsedAttributes = fabric.parseAttributes(element, fabric.Line.ATTRIBUTE_NAMES),\n points = [\n parsedAttributes.x1 || 0,\n parsedAttributes.y1 || 0,\n parsedAttributes.x2 || 0,\n parsedAttributes.y2 || 0\n ];\n callback(new fabric.Line(points, extend(parsedAttributes, options)));\n };\n /* _FROM_SVG_END_ */\n\n /**\n * Returns fabric.Line instance from an object representation\n * @static\n * @memberOf fabric.Line\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] invoked with new instance as first argument\n */\n fabric.Line.fromObject = function(object, callback) {\n function _callback(instance) {\n delete instance.points;\n callback && callback(instance);\n };\n var options = clone(object, true);\n options.points = [object.x1, object.y1, object.x2, object.y2];\n fabric.Object._fromObject('Line', options, _callback, 'points');\n };\n\n /**\n * Produces a function that calculates distance from canvas edge to Line origin.\n */\n function makeEdgeToOriginGetter(propertyNames, originValues) {\n var origin = propertyNames.origin,\n axis1 = propertyNames.axis1,\n axis2 = propertyNames.axis2,\n dimension = propertyNames.dimension,\n nearest = originValues.nearest,\n center = originValues.center,\n farthest = originValues.farthest;\n\n return function() {\n switch (this.get(origin)) {\n case nearest:\n return Math.min(this.get(axis1), this.get(axis2));\n case center:\n return Math.min(this.get(axis1), this.get(axis2)) + (0.5 * this.get(dimension));\n case farthest:\n return Math.max(this.get(axis1), this.get(axis2));\n }\n };\n\n }\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n pi = Math.PI;\n\n if (fabric.Circle) {\n fabric.warn('fabric.Circle is already defined.');\n return;\n }\n\n /**\n * Circle class\n * @class fabric.Circle\n * @extends fabric.Object\n * @see {@link fabric.Circle#initialize} for constructor definition\n */\n fabric.Circle = fabric.util.createClass(fabric.Object, /** @lends fabric.Circle.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'circle',\n\n /**\n * Radius of this circle\n * @type Number\n * @default\n */\n radius: 0,\n\n /**\n * Start angle of the circle, moving clockwise\n * deprectated type, this should be in degree, this was an oversight.\n * probably will change to degrees in next major version\n * @type Number\n * @default 0\n */\n startAngle: 0,\n\n /**\n * End angle of the circle\n * deprectated type, this should be in degree, this was an oversight.\n * probably will change to degrees in next major version\n * @type Number\n * @default 2Pi\n */\n endAngle: pi * 2,\n\n cacheProperties: fabric.Object.prototype.cacheProperties.concat('radius', 'startAngle', 'endAngle'),\n\n /**\n * @private\n * @param {String} key\n * @param {*} value\n * @return {fabric.Circle} thisArg\n */\n _set: function(key, value) {\n this.callSuper('_set', key, value);\n\n if (key === 'radius') {\n this.setRadius(value);\n }\n\n return this;\n },\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n return this.callSuper('toObject', ['radius', 'startAngle', 'endAngle'].concat(propertiesToInclude));\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns svg representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n toSVG: function(reviver) {\n var markup = this._createBaseSVGMarkup(), x = 0, y = 0,\n angle = (this.endAngle - this.startAngle) % ( 2 * pi);\n\n if (angle === 0) {\n markup.push(\n '\\n'\n );\n }\n else {\n var startX = fabric.util.cos(this.startAngle) * this.radius,\n startY = fabric.util.sin(this.startAngle) * this.radius,\n endX = fabric.util.cos(this.endAngle) * this.radius,\n endY = fabric.util.sin(this.endAngle) * this.radius,\n largeFlag = angle > pi ? '1' : '0';\n\n markup.push(\n '\\n'\n );\n }\n\n return reviver ? reviver(markup.join('')) : markup.join('');\n },\n /* _TO_SVG_END_ */\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx context to render on\n */\n _render: function(ctx) {\n ctx.beginPath();\n ctx.arc(\n 0,\n 0,\n this.radius,\n this.startAngle,\n this.endAngle, false);\n this._renderPaintInOrder(ctx);\n },\n\n /**\n * Returns horizontal radius of an object (according to how an object is scaled)\n * @return {Number}\n */\n getRadiusX: function() {\n return this.get('radius') * this.get('scaleX');\n },\n\n /**\n * Returns vertical radius of an object (according to how an object is scaled)\n * @return {Number}\n */\n getRadiusY: function() {\n return this.get('radius') * this.get('scaleY');\n },\n\n /**\n * Sets radius of an object (and updates width accordingly)\n * @return {fabric.Circle} thisArg\n */\n setRadius: function(value) {\n this.radius = value;\n return this.set('width', value * 2).set('height', value * 2);\n },\n });\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by {@link fabric.Circle.fromElement})\n * @static\n * @memberOf fabric.Circle\n * @see: http://www.w3.org/TR/SVG/shapes.html#CircleElement\n */\n fabric.Circle.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat('cx cy r'.split(' '));\n\n /**\n * Returns {@link fabric.Circle} instance from an SVG element\n * @static\n * @memberOf fabric.Circle\n * @param {SVGElement} element Element to parse\n * @param {Function} [callback] Options callback invoked after parsing is finished\n * @param {Object} [options] Options object\n * @throws {Error} If value of `r` attribute is missing or invalid\n */\n fabric.Circle.fromElement = function(element, callback) {\n var parsedAttributes = fabric.parseAttributes(element, fabric.Circle.ATTRIBUTE_NAMES);\n\n if (!isValidRadius(parsedAttributes)) {\n throw new Error('value of `r` attribute is required and can not be negative');\n }\n\n parsedAttributes.left = (parsedAttributes.left || 0) - parsedAttributes.radius;\n parsedAttributes.top = (parsedAttributes.top || 0) - parsedAttributes.radius;\n callback(new fabric.Circle(parsedAttributes));\n };\n\n /**\n * @private\n */\n function isValidRadius(attributes) {\n return (('radius' in attributes) && (attributes.radius >= 0));\n }\n /* _FROM_SVG_END_ */\n\n /**\n * Returns {@link fabric.Circle} instance from an object representation\n * @static\n * @memberOf fabric.Circle\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] invoked with new instance as first argument\n * @return {Object} Instance of fabric.Circle\n */\n fabric.Circle.fromObject = function(object, callback) {\n return fabric.Object._fromObject('Circle', object, callback);\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { });\n\n if (fabric.Triangle) {\n fabric.warn('fabric.Triangle is already defined');\n return;\n }\n\n /**\n * Triangle class\n * @class fabric.Triangle\n * @extends fabric.Object\n * @return {fabric.Triangle} thisArg\n * @see {@link fabric.Triangle#initialize} for constructor definition\n */\n fabric.Triangle = fabric.util.createClass(fabric.Object, /** @lends fabric.Triangle.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'triangle',\n\n /**\n * Width is set to 100 to compensate the old initialize code that was setting it to 100\n * @type Number\n * @default\n */\n width: 100,\n\n /**\n * Height is set to 100 to compensate the old initialize code that was setting it to 100\n * @type Number\n * @default\n */\n height: 100,\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(ctx) {\n var widthBy2 = this.width / 2,\n heightBy2 = this.height / 2;\n\n ctx.beginPath();\n ctx.moveTo(-widthBy2, heightBy2);\n ctx.lineTo(0, -heightBy2);\n ctx.lineTo(widthBy2, heightBy2);\n ctx.closePath();\n\n this._renderPaintInOrder(ctx);\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderDashedStroke: function(ctx) {\n var widthBy2 = this.width / 2,\n heightBy2 = this.height / 2;\n\n ctx.beginPath();\n fabric.util.drawDashedLine(ctx, -widthBy2, heightBy2, 0, -heightBy2, this.strokeDashArray);\n fabric.util.drawDashedLine(ctx, 0, -heightBy2, widthBy2, heightBy2, this.strokeDashArray);\n fabric.util.drawDashedLine(ctx, widthBy2, heightBy2, -widthBy2, heightBy2, this.strokeDashArray);\n ctx.closePath();\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns SVG representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n toSVG: function(reviver) {\n var markup = this._createBaseSVGMarkup(),\n widthBy2 = this.width / 2,\n heightBy2 = this.height / 2,\n points = [\n -widthBy2 + ' ' + heightBy2,\n '0 ' + -heightBy2,\n widthBy2 + ' ' + heightBy2\n ]\n .join(',');\n\n markup.push(\n ''\n );\n\n return reviver ? reviver(markup.join('')) : markup.join('');\n },\n /* _TO_SVG_END_ */\n });\n\n /**\n * Returns {@link fabric.Triangle} instance from an object representation\n * @static\n * @memberOf fabric.Triangle\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] invoked with new instance as first argument\n */\n fabric.Triangle.fromObject = function(object, callback) {\n return fabric.Object._fromObject('Triangle', object, callback);\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n piBy2 = Math.PI * 2;\n\n if (fabric.Ellipse) {\n fabric.warn('fabric.Ellipse is already defined.');\n return;\n }\n\n /**\n * Ellipse class\n * @class fabric.Ellipse\n * @extends fabric.Object\n * @return {fabric.Ellipse} thisArg\n * @see {@link fabric.Ellipse#initialize} for constructor definition\n */\n fabric.Ellipse = fabric.util.createClass(fabric.Object, /** @lends fabric.Ellipse.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'ellipse',\n\n /**\n * Horizontal radius\n * @type Number\n * @default\n */\n rx: 0,\n\n /**\n * Vertical radius\n * @type Number\n * @default\n */\n ry: 0,\n\n cacheProperties: fabric.Object.prototype.cacheProperties.concat('rx', 'ry'),\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n * @return {fabric.Ellipse} thisArg\n */\n initialize: function(options) {\n this.callSuper('initialize', options);\n this.set('rx', options && options.rx || 0);\n this.set('ry', options && options.ry || 0);\n },\n\n /**\n * @private\n * @param {String} key\n * @param {*} value\n * @return {fabric.Ellipse} thisArg\n */\n _set: function(key, value) {\n this.callSuper('_set', key, value);\n switch (key) {\n\n case 'rx':\n this.rx = value;\n this.set('width', value * 2);\n break;\n\n case 'ry':\n this.ry = value;\n this.set('height', value * 2);\n break;\n\n }\n return this;\n },\n\n /**\n * Returns horizontal radius of an object (according to how an object is scaled)\n * @return {Number}\n */\n getRx: function() {\n return this.get('rx') * this.get('scaleX');\n },\n\n /**\n * Returns Vertical radius of an object (according to how an object is scaled)\n * @return {Number}\n */\n getRy: function() {\n return this.get('ry') * this.get('scaleY');\n },\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n return this.callSuper('toObject', ['rx', 'ry'].concat(propertiesToInclude));\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns svg representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n toSVG: function(reviver) {\n var markup = this._createBaseSVGMarkup();\n markup.push(\n '\\n'\n );\n\n return reviver ? reviver(markup.join('')) : markup.join('');\n },\n /* _TO_SVG_END_ */\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx context to render on\n */\n _render: function(ctx) {\n ctx.beginPath();\n ctx.save();\n ctx.transform(1, 0, 0, this.ry / this.rx, 0, 0);\n ctx.arc(\n 0,\n 0,\n this.rx,\n 0,\n piBy2,\n false);\n ctx.restore();\n this._renderPaintInOrder(ctx);\n },\n });\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by {@link fabric.Ellipse.fromElement})\n * @static\n * @memberOf fabric.Ellipse\n * @see http://www.w3.org/TR/SVG/shapes.html#EllipseElement\n */\n fabric.Ellipse.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat('cx cy rx ry'.split(' '));\n\n /**\n * Returns {@link fabric.Ellipse} instance from an SVG element\n * @static\n * @memberOf fabric.Ellipse\n * @param {SVGElement} element Element to parse\n * @param {Function} [callback] Options callback invoked after parsing is finished\n * @return {fabric.Ellipse}\n */\n fabric.Ellipse.fromElement = function(element, callback) {\n\n var parsedAttributes = fabric.parseAttributes(element, fabric.Ellipse.ATTRIBUTE_NAMES);\n\n parsedAttributes.left = (parsedAttributes.left || 0) - parsedAttributes.rx;\n parsedAttributes.top = (parsedAttributes.top || 0) - parsedAttributes.ry;\n callback(new fabric.Ellipse(parsedAttributes));\n };\n /* _FROM_SVG_END_ */\n\n /**\n * Returns {@link fabric.Ellipse} instance from an object representation\n * @static\n * @memberOf fabric.Ellipse\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] invoked with new instance as first argument\n * @return {fabric.Ellipse}\n */\n fabric.Ellipse.fromObject = function(object, callback) {\n return fabric.Object._fromObject('Ellipse', object, callback);\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend;\n\n if (fabric.Rect) {\n fabric.warn('fabric.Rect is already defined');\n return;\n }\n\n /**\n * Rectangle class\n * @class fabric.Rect\n * @extends fabric.Object\n * @return {fabric.Rect} thisArg\n * @see {@link fabric.Rect#initialize} for constructor definition\n */\n fabric.Rect = fabric.util.createClass(fabric.Object, /** @lends fabric.Rect.prototype */ {\n\n /**\n * List of properties to consider when checking if state of an object is changed ({@link fabric.Object#hasStateChanged})\n * as well as for history (undo/redo) purposes\n * @type Array\n */\n stateProperties: fabric.Object.prototype.stateProperties.concat('rx', 'ry'),\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'rect',\n\n /**\n * Horizontal border radius\n * @type Number\n * @default\n */\n rx: 0,\n\n /**\n * Vertical border radius\n * @type Number\n * @default\n */\n ry: 0,\n\n cacheProperties: fabric.Object.prototype.cacheProperties.concat('rx', 'ry'),\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n * @return {Object} thisArg\n */\n initialize: function(options) {\n this.callSuper('initialize', options);\n this._initRxRy();\n },\n\n /**\n * Initializes rx/ry attributes\n * @private\n */\n _initRxRy: function() {\n if (this.rx && !this.ry) {\n this.ry = this.rx;\n }\n else if (this.ry && !this.rx) {\n this.rx = this.ry;\n }\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(ctx) {\n\n // optimize 1x1 case (used in spray brush)\n if (this.width === 1 && this.height === 1) {\n ctx.fillRect(-0.5, -0.5, 1, 1);\n return;\n }\n\n var rx = this.rx ? Math.min(this.rx, this.width / 2) : 0,\n ry = this.ry ? Math.min(this.ry, this.height / 2) : 0,\n w = this.width,\n h = this.height,\n x = -this.width / 2,\n y = -this.height / 2,\n isRounded = rx !== 0 || ry !== 0,\n /* \"magic number\" for bezier approximations of arcs (http://itc.ktu.lt/itc354/Riskus354.pdf) */\n k = 1 - 0.5522847498;\n ctx.beginPath();\n\n ctx.moveTo(x + rx, y);\n\n ctx.lineTo(x + w - rx, y);\n isRounded && ctx.bezierCurveTo(x + w - k * rx, y, x + w, y + k * ry, x + w, y + ry);\n\n ctx.lineTo(x + w, y + h - ry);\n isRounded && ctx.bezierCurveTo(x + w, y + h - k * ry, x + w - k * rx, y + h, x + w - rx, y + h);\n\n ctx.lineTo(x + rx, y + h);\n isRounded && ctx.bezierCurveTo(x + k * rx, y + h, x, y + h - k * ry, x, y + h - ry);\n\n ctx.lineTo(x, y + ry);\n isRounded && ctx.bezierCurveTo(x, y + k * ry, x + k * rx, y, x + rx, y);\n\n ctx.closePath();\n\n this._renderPaintInOrder(ctx);\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderDashedStroke: function(ctx) {\n var x = -this.width / 2,\n y = -this.height / 2,\n w = this.width,\n h = this.height;\n\n ctx.beginPath();\n fabric.util.drawDashedLine(ctx, x, y, x + w, y, this.strokeDashArray);\n fabric.util.drawDashedLine(ctx, x + w, y, x + w, y + h, this.strokeDashArray);\n fabric.util.drawDashedLine(ctx, x + w, y + h, x, y + h, this.strokeDashArray);\n fabric.util.drawDashedLine(ctx, x, y + h, x, y, this.strokeDashArray);\n ctx.closePath();\n },\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n return this.callSuper('toObject', ['rx', 'ry'].concat(propertiesToInclude));\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns svg representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n toSVG: function(reviver) {\n var markup = this._createBaseSVGMarkup(), x = -this.width / 2, y = -this.height / 2;\n markup.push(\n '\\n');\n\n return reviver ? reviver(markup.join('')) : markup.join('');\n },\n /* _TO_SVG_END_ */\n });\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by `fabric.Rect.fromElement`)\n * @static\n * @memberOf fabric.Rect\n * @see: http://www.w3.org/TR/SVG/shapes.html#RectElement\n */\n fabric.Rect.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat('x y rx ry width height'.split(' '));\n\n /**\n * Returns {@link fabric.Rect} instance from an SVG element\n * @static\n * @memberOf fabric.Rect\n * @param {SVGElement} element Element to parse\n * @param {Function} callback callback function invoked after parsing\n * @param {Object} [options] Options object\n */\n fabric.Rect.fromElement = function(element, callback, options) {\n if (!element) {\n return callback(null);\n }\n options = options || { };\n\n var parsedAttributes = fabric.parseAttributes(element, fabric.Rect.ATTRIBUTE_NAMES);\n\n parsedAttributes.left = parsedAttributes.left || 0;\n parsedAttributes.top = parsedAttributes.top || 0;\n var rect = new fabric.Rect(extend((options ? fabric.util.object.clone(options) : { }), parsedAttributes));\n rect.visible = rect.visible && rect.width > 0 && rect.height > 0;\n callback(rect);\n };\n /* _FROM_SVG_END_ */\n\n /**\n * Returns {@link fabric.Rect} instance from an object representation\n * @static\n * @memberOf fabric.Rect\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] Callback to invoke when an fabric.Rect instance is created\n */\n fabric.Rect.fromObject = function(object, callback) {\n return fabric.Object._fromObject('Rect', object, callback);\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend,\n min = fabric.util.array.min,\n max = fabric.util.array.max,\n toFixed = fabric.util.toFixed;\n\n if (fabric.Polyline) {\n fabric.warn('fabric.Polyline is already defined');\n return;\n }\n\n /**\n * Polyline class\n * @class fabric.Polyline\n * @extends fabric.Object\n * @see {@link fabric.Polyline#initialize} for constructor definition\n */\n fabric.Polyline = fabric.util.createClass(fabric.Object, /** @lends fabric.Polyline.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'polyline',\n\n /**\n * Points array\n * @type Array\n * @default\n */\n points: null,\n\n cacheProperties: fabric.Object.prototype.cacheProperties.concat('points'),\n\n /**\n * Constructor\n * @param {Array} points Array of points (where each point is an object with x and y)\n * @param {Object} [options] Options object\n * @return {fabric.Polyline} thisArg\n * @example\n * var poly = new fabric.Polyline([\n * { x: 10, y: 10 },\n * { x: 50, y: 30 },\n * { x: 40, y: 70 },\n * { x: 60, y: 50 },\n * { x: 100, y: 150 },\n * { x: 40, y: 100 }\n * ], {\n * stroke: 'red',\n * left: 100,\n * top: 100\n * });\n */\n initialize: function(points, options) {\n options = options || {};\n this.points = points || [];\n this.callSuper('initialize', options);\n var calcDim = this._calcDimensions();\n if (typeof options.left === 'undefined') {\n this.left = calcDim.left;\n }\n if (typeof options.top === 'undefined') {\n this.top = calcDim.top;\n }\n this.width = calcDim.width;\n this.height = calcDim.height;\n this.pathOffset = {\n x: calcDim.left + this.width / 2,\n y: calcDim.top + this.height / 2\n };\n },\n\n /**\n * Calculate the polygon min and max point from points array,\n * returning an object with left, top, widht, height to measure the\n * polygon size\n * @return {Object} object.left X coordinate of the polygon leftmost point\n * @return {Object} object.top Y coordinate of the polygon topmost point\n * @return {Object} object.width distance between X coordinates of the polygon leftmost and rightmost point\n * @return {Object} object.height distance between Y coordinates of the polygon topmost and bottommost point\n * @private\n */\n _calcDimensions: function() {\n\n var points = this.points,\n minX = min(points, 'x') || 0,\n minY = min(points, 'y') || 0,\n maxX = max(points, 'x') || 0,\n maxY = max(points, 'y') || 0,\n width = (maxX - minX),\n height = (maxY - minY);\n\n return {\n left: minX,\n top: minY,\n width: width,\n height: height\n };\n },\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} Object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n return extend(this.callSuper('toObject', propertiesToInclude), {\n points: this.points.concat()\n });\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns svg representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n toSVG: function(reviver) {\n var points = [], diffX = this.pathOffset.x, diffY = this.pathOffset.y,\n markup = this._createBaseSVGMarkup(),\n NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS;\n\n for (var i = 0, len = this.points.length; i < len; i++) {\n points.push(\n toFixed(this.points[i].x - diffX, NUM_FRACTION_DIGITS), ',',\n toFixed(this.points[i].y - diffY, NUM_FRACTION_DIGITS), ' '\n );\n }\n markup.push(\n '<', this.type, ' ', this.getSvgId(),\n 'points=\"', points.join(''),\n '\" style=\"', this.getSvgStyles(),\n '\" transform=\"', this.getSvgTransform(),\n ' ', this.getSvgTransformMatrix(), '\"',\n this.addPaintOrder(),\n '/>\\n'\n );\n\n return reviver ? reviver(markup.join('')) : markup.join('');\n },\n /* _TO_SVG_END_ */\n\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n commonRender: function(ctx) {\n var point, len = this.points.length,\n x = this.pathOffset.x,\n y = this.pathOffset.y;\n\n if (!len || isNaN(this.points[len - 1].y)) {\n // do not draw if no points or odd points\n // NaN comes from parseFloat of a empty string in parser\n return false;\n }\n ctx.beginPath();\n ctx.moveTo(this.points[0].x - x, this.points[0].y - y);\n for (var i = 0; i < len; i++) {\n point = this.points[i];\n ctx.lineTo(point.x - x, point.y - y);\n }\n return true;\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(ctx) {\n if (!this.commonRender(ctx)) {\n return;\n }\n this._renderPaintInOrder(ctx);\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderDashedStroke: function(ctx) {\n var p1, p2;\n\n ctx.beginPath();\n for (var i = 0, len = this.points.length; i < len; i++) {\n p1 = this.points[i];\n p2 = this.points[i + 1] || p1;\n fabric.util.drawDashedLine(ctx, p1.x, p1.y, p2.x, p2.y, this.strokeDashArray);\n }\n },\n\n /**\n * Returns complexity of an instance\n * @return {Number} complexity of this instance\n */\n complexity: function() {\n return this.get('points').length;\n }\n });\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by {@link fabric.Polyline.fromElement})\n * @static\n * @memberOf fabric.Polyline\n * @see: http://www.w3.org/TR/SVG/shapes.html#PolylineElement\n */\n fabric.Polyline.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat();\n\n /**\n * Returns fabric.Polyline instance from an SVG element\n * @static\n * @memberOf fabric.Polyline\n * @param {SVGElement} element Element to parser\n * @param {Function} callback callback function invoked after parsing\n * @param {Object} [options] Options object\n */\n fabric.Polyline.fromElement = function(element, callback, options) {\n if (!element) {\n return callback(null);\n }\n options || (options = { });\n\n var points = fabric.parsePointsAttribute(element.getAttribute('points')),\n parsedAttributes = fabric.parseAttributes(element, fabric.Polyline.ATTRIBUTE_NAMES);\n\n callback(new fabric.Polyline(points, fabric.util.object.extend(parsedAttributes, options)));\n };\n /* _FROM_SVG_END_ */\n\n /**\n * Returns fabric.Polyline instance from an object representation\n * @static\n * @memberOf fabric.Polyline\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] Callback to invoke when an fabric.Path instance is created\n */\n fabric.Polyline.fromObject = function(object, callback) {\n return fabric.Object._fromObject('Polyline', object, callback, 'points');\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend;\n\n if (fabric.Polygon) {\n fabric.warn('fabric.Polygon is already defined');\n return;\n }\n\n /**\n * Polygon class\n * @class fabric.Polygon\n * @extends fabric.Polyline\n * @see {@link fabric.Polygon#initialize} for constructor definition\n */\n fabric.Polygon = fabric.util.createClass(fabric.Polyline, /** @lends fabric.Polygon.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'polygon',\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(ctx) {\n if (!this.commonRender(ctx)) {\n return;\n }\n ctx.closePath();\n this._renderPaintInOrder(ctx);\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderDashedStroke: function(ctx) {\n this.callSuper('_renderDashedStroke', ctx);\n ctx.closePath();\n },\n });\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by `fabric.Polygon.fromElement`)\n * @static\n * @memberOf fabric.Polygon\n * @see: http://www.w3.org/TR/SVG/shapes.html#PolygonElement\n */\n fabric.Polygon.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat();\n\n /**\n * Returns {@link fabric.Polygon} instance from an SVG element\n * @static\n * @memberOf fabric.Polygon\n * @param {SVGElement} element Element to parse\n * @param {Function} callback callback function invoked after parsing\n * @param {Object} [options] Options object\n */\n fabric.Polygon.fromElement = function(element, callback, options) {\n if (!element) {\n return callback(null);\n }\n\n options || (options = { });\n\n var points = fabric.parsePointsAttribute(element.getAttribute('points')),\n parsedAttributes = fabric.parseAttributes(element, fabric.Polygon.ATTRIBUTE_NAMES);\n\n callback(new fabric.Polygon(points, extend(parsedAttributes, options)));\n };\n /* _FROM_SVG_END_ */\n\n /**\n * Returns fabric.Polygon instance from an object representation\n * @static\n * @memberOf fabric.Polygon\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] Callback to invoke when an fabric.Path instance is created\n */\n fabric.Polygon.fromObject = function(object, callback) {\n return fabric.Object._fromObject('Polygon', object, callback, 'points');\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n min = fabric.util.array.min,\n max = fabric.util.array.max,\n extend = fabric.util.object.extend,\n _toString = Object.prototype.toString,\n drawArc = fabric.util.drawArc,\n commandLengths = {\n m: 2,\n l: 2,\n h: 1,\n v: 1,\n c: 6,\n s: 4,\n q: 4,\n t: 2,\n a: 7\n },\n repeatedCommands = {\n m: 'l',\n M: 'L'\n };\n\n if (fabric.Path) {\n fabric.warn('fabric.Path is already defined');\n return;\n }\n\n /**\n * Path class\n * @class fabric.Path\n * @extends fabric.Object\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-1#path_and_pathgroup}\n * @see {@link fabric.Path#initialize} for constructor definition\n */\n fabric.Path = fabric.util.createClass(fabric.Object, /** @lends fabric.Path.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'path',\n\n /**\n * Array of path points\n * @type Array\n * @default\n */\n path: null,\n\n cacheProperties: fabric.Object.prototype.cacheProperties.concat('path', 'fillRule'),\n\n stateProperties: fabric.Object.prototype.stateProperties.concat('path'),\n\n /**\n * Constructor\n * @param {Array|String} path Path data (sequence of coordinates and corresponding \"command\" tokens)\n * @param {Object} [options] Options object\n * @return {fabric.Path} thisArg\n */\n initialize: function(path, options) {\n options = options || { };\n this.callSuper('initialize', options);\n\n if (!path) {\n path = [];\n }\n\n var fromArray = _toString.call(path) === '[object Array]';\n\n this.path = fromArray\n ? path\n // one of commands (m,M,l,L,q,Q,c,C,etc.) followed by non-command characters (i.e. command values)\n : path.match && path.match(/[mzlhvcsqta][^mzlhvcsqta]*/gi);\n\n if (!this.path) {\n return;\n }\n\n if (!fromArray) {\n this.path = this._parsePath();\n }\n\n this._setPositionDimensions(options);\n },\n\n /**\n * @private\n * @param {Object} options Options object\n */\n _setPositionDimensions: function(options) {\n var calcDim = this._parseDimensions();\n\n this.width = calcDim.width;\n this.height = calcDim.height;\n\n if (typeof options.left === 'undefined') {\n this.left = calcDim.left;\n }\n\n if (typeof options.top === 'undefined') {\n this.top = calcDim.top;\n }\n\n this.pathOffset = this.pathOffset || {\n x: calcDim.left + this.width / 2,\n y: calcDim.top + this.height / 2\n };\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx context to render path on\n */\n _renderPathCommands: function(ctx) {\n var current, // current instruction\n previous = null,\n subpathStartX = 0,\n subpathStartY = 0,\n x = 0, // current x\n y = 0, // current y\n controlX = 0, // current control point x\n controlY = 0, // current control point y\n tempX,\n tempY,\n l = -this.pathOffset.x,\n t = -this.pathOffset.y;\n\n ctx.beginPath();\n\n for (var i = 0, len = this.path.length; i < len; ++i) {\n\n current = this.path[i];\n\n switch (current[0]) { // first letter\n\n case 'l': // lineto, relative\n x += current[1];\n y += current[2];\n ctx.lineTo(x + l, y + t);\n break;\n\n case 'L': // lineto, absolute\n x = current[1];\n y = current[2];\n ctx.lineTo(x + l, y + t);\n break;\n\n case 'h': // horizontal lineto, relative\n x += current[1];\n ctx.lineTo(x + l, y + t);\n break;\n\n case 'H': // horizontal lineto, absolute\n x = current[1];\n ctx.lineTo(x + l, y + t);\n break;\n\n case 'v': // vertical lineto, relative\n y += current[1];\n ctx.lineTo(x + l, y + t);\n break;\n\n case 'V': // verical lineto, absolute\n y = current[1];\n ctx.lineTo(x + l, y + t);\n break;\n\n case 'm': // moveTo, relative\n x += current[1];\n y += current[2];\n subpathStartX = x;\n subpathStartY = y;\n ctx.moveTo(x + l, y + t);\n break;\n\n case 'M': // moveTo, absolute\n x = current[1];\n y = current[2];\n subpathStartX = x;\n subpathStartY = y;\n ctx.moveTo(x + l, y + t);\n break;\n\n case 'c': // bezierCurveTo, relative\n tempX = x + current[5];\n tempY = y + current[6];\n controlX = x + current[3];\n controlY = y + current[4];\n ctx.bezierCurveTo(\n x + current[1] + l, // x1\n y + current[2] + t, // y1\n controlX + l, // x2\n controlY + t, // y2\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n break;\n\n case 'C': // bezierCurveTo, absolute\n x = current[5];\n y = current[6];\n controlX = current[3];\n controlY = current[4];\n ctx.bezierCurveTo(\n current[1] + l,\n current[2] + t,\n controlX + l,\n controlY + t,\n x + l,\n y + t\n );\n break;\n\n case 's': // shorthand cubic bezierCurveTo, relative\n\n // transform to absolute x,y\n tempX = x + current[3];\n tempY = y + current[4];\n\n if (previous[0].match(/[CcSs]/) === null) {\n // If there is no previous command or if the previous command was not a C, c, S, or s,\n // the control point is coincident with the current point\n controlX = x;\n controlY = y;\n }\n else {\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n }\n\n ctx.bezierCurveTo(\n controlX + l,\n controlY + t,\n x + current[1] + l,\n y + current[2] + t,\n tempX + l,\n tempY + t\n );\n // set control point to 2nd one of this command\n // \"... the first control point is assumed to be\n // the reflection of the second control point on\n // the previous command relative to the current point.\"\n controlX = x + current[1];\n controlY = y + current[2];\n\n x = tempX;\n y = tempY;\n break;\n\n case 'S': // shorthand cubic bezierCurveTo, absolute\n tempX = current[3];\n tempY = current[4];\n if (previous[0].match(/[CcSs]/) === null) {\n // If there is no previous command or if the previous command was not a C, c, S, or s,\n // the control point is coincident with the current point\n controlX = x;\n controlY = y;\n }\n else {\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n }\n ctx.bezierCurveTo(\n controlX + l,\n controlY + t,\n current[1] + l,\n current[2] + t,\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n\n // set control point to 2nd one of this command\n // \"... the first control point is assumed to be\n // the reflection of the second control point on\n // the previous command relative to the current point.\"\n controlX = current[1];\n controlY = current[2];\n\n break;\n\n case 'q': // quadraticCurveTo, relative\n // transform to absolute x,y\n tempX = x + current[3];\n tempY = y + current[4];\n\n controlX = x + current[1];\n controlY = y + current[2];\n\n ctx.quadraticCurveTo(\n controlX + l,\n controlY + t,\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n break;\n\n case 'Q': // quadraticCurveTo, absolute\n tempX = current[3];\n tempY = current[4];\n\n ctx.quadraticCurveTo(\n current[1] + l,\n current[2] + t,\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n controlX = current[1];\n controlY = current[2];\n break;\n\n case 't': // shorthand quadraticCurveTo, relative\n\n // transform to absolute x,y\n tempX = x + current[1];\n tempY = y + current[2];\n\n if (previous[0].match(/[QqTt]/) === null) {\n // If there is no previous command or if the previous command was not a Q, q, T or t,\n // assume the control point is coincident with the current point\n controlX = x;\n controlY = y;\n }\n else {\n // calculate reflection of previous control point\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n }\n\n ctx.quadraticCurveTo(\n controlX + l,\n controlY + t,\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n\n break;\n\n case 'T':\n tempX = current[1];\n tempY = current[2];\n\n if (previous[0].match(/[QqTt]/) === null) {\n // If there is no previous command or if the previous command was not a Q, q, T or t,\n // assume the control point is coincident with the current point\n controlX = x;\n controlY = y;\n }\n else {\n // calculate reflection of previous control point\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n }\n ctx.quadraticCurveTo(\n controlX + l,\n controlY + t,\n tempX + l,\n tempY + t\n );\n x = tempX;\n y = tempY;\n break;\n\n case 'a':\n // TODO: optimize this\n drawArc(ctx, x + l, y + t, [\n current[1],\n current[2],\n current[3],\n current[4],\n current[5],\n current[6] + x + l,\n current[7] + y + t\n ]);\n x += current[6];\n y += current[7];\n break;\n\n case 'A':\n // TODO: optimize this\n drawArc(ctx, x + l, y + t, [\n current[1],\n current[2],\n current[3],\n current[4],\n current[5],\n current[6] + l,\n current[7] + t\n ]);\n x = current[6];\n y = current[7];\n break;\n\n case 'z':\n case 'Z':\n x = subpathStartX;\n y = subpathStartY;\n ctx.closePath();\n break;\n }\n previous = current;\n }\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx context to render path on\n */\n _render: function(ctx) {\n this._renderPathCommands(ctx);\n this._renderPaintInOrder(ctx);\n },\n\n /**\n * Returns string representation of an instance\n * @return {String} string representation of an instance\n */\n toString: function() {\n return '#';\n },\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n var o = extend(this.callSuper('toObject', propertiesToInclude), {\n path: this.path.map(function(item) { return item.slice(); }),\n top: this.top,\n left: this.left,\n });\n return o;\n },\n\n /**\n * Returns dataless object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toDatalessObject: function(propertiesToInclude) {\n var o = this.toObject(['sourcePath'].concat(propertiesToInclude));\n if (o.sourcePath) {\n delete o.path;\n }\n return o;\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns svg representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n toSVG: function(reviver) {\n var chunks = [],\n markup = this._createBaseSVGMarkup(), addTransform = '';\n\n for (var i = 0, len = this.path.length; i < len; i++) {\n chunks.push(this.path[i].join(' '));\n }\n var path = chunks.join(' ');\n addTransform = ' translate(' + (-this.pathOffset.x) + ', ' + (-this.pathOffset.y) + ') ';\n markup.push(\n '\\n'\n );\n\n return reviver ? reviver(markup.join('')) : markup.join('');\n },\n /* _TO_SVG_END_ */\n\n /**\n * Returns number representation of an instance complexity\n * @return {Number} complexity of this instance\n */\n complexity: function() {\n return this.path.length;\n },\n\n /**\n * @private\n */\n _parsePath: function() {\n var result = [],\n coords = [],\n currentPath,\n parsed,\n re = /([-+]?((\\d+\\.\\d+)|((\\d+)|(\\.\\d+)))(?:e[-+]?\\d+)?)/ig,\n match,\n coordsStr;\n\n for (var i = 0, coordsParsed, len = this.path.length; i < len; i++) {\n currentPath = this.path[i];\n\n coordsStr = currentPath.slice(1).trim();\n coords.length = 0;\n\n while ((match = re.exec(coordsStr))) {\n coords.push(match[0]);\n }\n\n coordsParsed = [currentPath.charAt(0)];\n\n for (var j = 0, jlen = coords.length; j < jlen; j++) {\n parsed = parseFloat(coords[j]);\n if (!isNaN(parsed)) {\n coordsParsed.push(parsed);\n }\n }\n\n var command = coordsParsed[0],\n commandLength = commandLengths[command.toLowerCase()],\n repeatedCommand = repeatedCommands[command] || command;\n\n if (coordsParsed.length - 1 > commandLength) {\n for (var k = 1, klen = coordsParsed.length; k < klen; k += commandLength) {\n result.push([command].concat(coordsParsed.slice(k, k + commandLength)));\n command = repeatedCommand;\n }\n }\n else {\n result.push(coordsParsed);\n }\n }\n\n return result;\n },\n\n /**\n * @private\n */\n _parseDimensions: function() {\n\n var aX = [],\n aY = [],\n current, // current instruction\n previous = null,\n subpathStartX = 0,\n subpathStartY = 0,\n x = 0, // current x\n y = 0, // current y\n controlX = 0, // current control point x\n controlY = 0, // current control point y\n tempX,\n tempY,\n bounds;\n\n for (var i = 0, len = this.path.length; i < len; ++i) {\n\n current = this.path[i];\n\n switch (current[0]) { // first letter\n\n case 'l': // lineto, relative\n x += current[1];\n y += current[2];\n bounds = [];\n break;\n\n case 'L': // lineto, absolute\n x = current[1];\n y = current[2];\n bounds = [];\n break;\n\n case 'h': // horizontal lineto, relative\n x += current[1];\n bounds = [];\n break;\n\n case 'H': // horizontal lineto, absolute\n x = current[1];\n bounds = [];\n break;\n\n case 'v': // vertical lineto, relative\n y += current[1];\n bounds = [];\n break;\n\n case 'V': // verical lineto, absolute\n y = current[1];\n bounds = [];\n break;\n\n case 'm': // moveTo, relative\n x += current[1];\n y += current[2];\n subpathStartX = x;\n subpathStartY = y;\n bounds = [];\n break;\n\n case 'M': // moveTo, absolute\n x = current[1];\n y = current[2];\n subpathStartX = x;\n subpathStartY = y;\n bounds = [];\n break;\n\n case 'c': // bezierCurveTo, relative\n tempX = x + current[5];\n tempY = y + current[6];\n controlX = x + current[3];\n controlY = y + current[4];\n bounds = fabric.util.getBoundsOfCurve(x, y,\n x + current[1], // x1\n y + current[2], // y1\n controlX, // x2\n controlY, // y2\n tempX,\n tempY\n );\n x = tempX;\n y = tempY;\n break;\n\n case 'C': // bezierCurveTo, absolute\n controlX = current[3];\n controlY = current[4];\n bounds = fabric.util.getBoundsOfCurve(x, y,\n current[1],\n current[2],\n controlX,\n controlY,\n current[5],\n current[6]\n );\n x = current[5];\n y = current[6];\n break;\n\n case 's': // shorthand cubic bezierCurveTo, relative\n\n // transform to absolute x,y\n tempX = x + current[3];\n tempY = y + current[4];\n\n if (previous[0].match(/[CcSs]/) === null) {\n // If there is no previous command or if the previous command was not a C, c, S, or s,\n // the control point is coincident with the current point\n controlX = x;\n controlY = y;\n }\n else {\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n }\n\n bounds = fabric.util.getBoundsOfCurve(x, y,\n controlX,\n controlY,\n x + current[1],\n y + current[2],\n tempX,\n tempY\n );\n // set control point to 2nd one of this command\n // \"... the first control point is assumed to be\n // the reflection of the second control point on\n // the previous command relative to the current point.\"\n controlX = x + current[1];\n controlY = y + current[2];\n x = tempX;\n y = tempY;\n break;\n\n case 'S': // shorthand cubic bezierCurveTo, absolute\n tempX = current[3];\n tempY = current[4];\n if (previous[0].match(/[CcSs]/) === null) {\n // If there is no previous command or if the previous command was not a C, c, S, or s,\n // the control point is coincident with the current point\n controlX = x;\n controlY = y;\n }\n else {\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n }\n bounds = fabric.util.getBoundsOfCurve(x, y,\n controlX,\n controlY,\n current[1],\n current[2],\n tempX,\n tempY\n );\n x = tempX;\n y = tempY;\n // set control point to 2nd one of this command\n // \"... the first control point is assumed to be\n // the reflection of the second control point on\n // the previous command relative to the current point.\"\n controlX = current[1];\n controlY = current[2];\n break;\n\n case 'q': // quadraticCurveTo, relative\n // transform to absolute x,y\n tempX = x + current[3];\n tempY = y + current[4];\n controlX = x + current[1];\n controlY = y + current[2];\n bounds = fabric.util.getBoundsOfCurve(x, y,\n controlX,\n controlY,\n controlX,\n controlY,\n tempX,\n tempY\n );\n x = tempX;\n y = tempY;\n break;\n\n case 'Q': // quadraticCurveTo, absolute\n controlX = current[1];\n controlY = current[2];\n bounds = fabric.util.getBoundsOfCurve(x, y,\n controlX,\n controlY,\n controlX,\n controlY,\n current[3],\n current[4]\n );\n x = current[3];\n y = current[4];\n break;\n\n case 't': // shorthand quadraticCurveTo, relative\n // transform to absolute x,y\n tempX = x + current[1];\n tempY = y + current[2];\n if (previous[0].match(/[QqTt]/) === null) {\n // If there is no previous command or if the previous command was not a Q, q, T or t,\n // assume the control point is coincident with the current point\n controlX = x;\n controlY = y;\n }\n else {\n // calculate reflection of previous control point\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n }\n\n bounds = fabric.util.getBoundsOfCurve(x, y,\n controlX,\n controlY,\n controlX,\n controlY,\n tempX,\n tempY\n );\n x = tempX;\n y = tempY;\n\n break;\n\n case 'T':\n tempX = current[1];\n tempY = current[2];\n\n if (previous[0].match(/[QqTt]/) === null) {\n // If there is no previous command or if the previous command was not a Q, q, T or t,\n // assume the control point is coincident with the current point\n controlX = x;\n controlY = y;\n }\n else {\n // calculate reflection of previous control point\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n }\n bounds = fabric.util.getBoundsOfCurve(x, y,\n controlX,\n controlY,\n controlX,\n controlY,\n tempX,\n tempY\n );\n x = tempX;\n y = tempY;\n break;\n\n case 'a':\n // TODO: optimize this\n bounds = fabric.util.getBoundsOfArc(x, y,\n current[1],\n current[2],\n current[3],\n current[4],\n current[5],\n current[6] + x,\n current[7] + y\n );\n x += current[6];\n y += current[7];\n break;\n\n case 'A':\n // TODO: optimize this\n bounds = fabric.util.getBoundsOfArc(x, y,\n current[1],\n current[2],\n current[3],\n current[4],\n current[5],\n current[6],\n current[7]\n );\n x = current[6];\n y = current[7];\n break;\n\n case 'z':\n case 'Z':\n x = subpathStartX;\n y = subpathStartY;\n break;\n }\n previous = current;\n bounds.forEach(function (point) {\n aX.push(point.x);\n aY.push(point.y);\n });\n aX.push(x);\n aY.push(y);\n }\n\n var minX = min(aX) || 0,\n minY = min(aY) || 0,\n maxX = max(aX) || 0,\n maxY = max(aY) || 0,\n deltaX = maxX - minX,\n deltaY = maxY - minY,\n\n o = {\n left: minX,\n top: minY,\n width: deltaX,\n height: deltaY\n };\n\n return o;\n }\n });\n\n /**\n * Creates an instance of fabric.Path from an object\n * @static\n * @memberOf fabric.Path\n * @param {Object} object\n * @param {Function} [callback] Callback to invoke when an fabric.Path instance is created\n */\n fabric.Path.fromObject = function(object, callback) {\n if (typeof object.sourcePath === 'string') {\n var pathUrl = object.sourcePath;\n fabric.loadSVGFromURL(pathUrl, function (elements) {\n var path = elements[0];\n path.setOptions(object);\n callback && callback(path);\n });\n }\n else {\n fabric.Object._fromObject('Path', object, callback, 'path');\n }\n };\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by `fabric.Path.fromElement`)\n * @static\n * @memberOf fabric.Path\n * @see http://www.w3.org/TR/SVG/paths.html#PathElement\n */\n fabric.Path.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat(['d']);\n\n /**\n * Creates an instance of fabric.Path from an SVG element\n * @static\n * @memberOf fabric.Path\n * @param {SVGElement} element to parse\n * @param {Function} callback Callback to invoke when an fabric.Path instance is created\n * @param {Object} [options] Options object\n * @param {Function} [callback] Options callback invoked after parsing is finished\n */\n fabric.Path.fromElement = function(element, callback, options) {\n var parsedAttributes = fabric.parseAttributes(element, fabric.Path.ATTRIBUTE_NAMES);\n callback(new fabric.Path(parsedAttributes.d, extend(parsedAttributes, options)));\n };\n /* _FROM_SVG_END_ */\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n min = fabric.util.array.min,\n max = fabric.util.array.max;\n\n if (fabric.Group) {\n return;\n }\n\n /**\n * Group class\n * @class fabric.Group\n * @extends fabric.Object\n * @mixes fabric.Collection\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#groups}\n * @see {@link fabric.Group#initialize} for constructor definition\n */\n fabric.Group = fabric.util.createClass(fabric.Object, fabric.Collection, /** @lends fabric.Group.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'group',\n\n /**\n * Width of stroke\n * @type Number\n * @default\n */\n strokeWidth: 0,\n\n /**\n * Indicates if click events should also check for subtargets\n * @type Boolean\n * @default\n */\n subTargetCheck: false,\n\n /**\n * Groups are container, do not render anything on theyr own, ence no cache properties\n * @type Array\n * @default\n */\n cacheProperties: [],\n\n /**\n * setOnGroup is a method used for TextBox that is no more used since 2.0.0 The behavior is still\n * available setting this boolean to true.\n * @type Boolean\n * @since 2.0.0\n * @default\n */\n useSetOnGroup: false,\n\n /**\n * Constructor\n * @param {Object} objects Group objects\n * @param {Object} [options] Options object\n * @param {Boolean} [isAlreadyGrouped] if true, objects have been grouped already.\n * @return {Object} thisArg\n */\n initialize: function(objects, options, isAlreadyGrouped) {\n options = options || {};\n this._objects = [];\n // if objects enclosed in a group have been grouped already,\n // we cannot change properties of objects.\n // Thus we need to set options to group without objects,\n isAlreadyGrouped && this.callSuper('initialize', options);\n this._objects = objects || [];\n for (var i = this._objects.length; i--; ) {\n this._objects[i].group = this;\n }\n\n if (!isAlreadyGrouped) {\n var center = options && options.centerPoint;\n // we want to set origins before calculating the bounding box.\n // so that the topleft can be set with that in mind.\n // if specific top and left are passed, are overwritten later\n // with the callSuper('initialize', options)\n if (options.originX !== undefined) {\n this.originX = options.originX;\n }\n if (options.originY !== undefined) {\n this.originY = options.originY;\n }\n // if coming from svg i do not want to calc bounds.\n // i assume width and height are passed along options\n center || this._calcBounds();\n this._updateObjectsCoords(center);\n delete options.centerPoint;\n this.callSuper('initialize', options);\n }\n else {\n this._updateObjectsACoords();\n }\n\n this.setCoords();\n },\n\n /**\n * @private\n * @param {Boolean} [skipCoordsChange] if true, coordinates of objects enclosed in a group do not change\n */\n _updateObjectsACoords: function() {\n var ignoreZoom = true, skipAbsolute = true;\n for (var i = this._objects.length; i--; ){\n this._objects[i].setCoords(ignoreZoom, skipAbsolute);\n }\n },\n\n /**\n * @private\n * @param {Boolean} [skipCoordsChange] if true, coordinates of objects enclosed in a group do not change\n */\n _updateObjectsCoords: function(center) {\n var center = center || this.getCenterPoint();\n for (var i = this._objects.length; i--; ){\n this._updateObjectCoords(this._objects[i], center);\n }\n },\n\n /**\n * @private\n * @param {Object} object\n * @param {fabric.Point} center, current center of group.\n */\n _updateObjectCoords: function(object, center) {\n var objectLeft = object.left,\n objectTop = object.top,\n ignoreZoom = true, skipAbsolute = true;\n\n object.set({\n left: objectLeft - center.x,\n top: objectTop - center.y\n });\n object.group = this;\n object.setCoords(ignoreZoom, skipAbsolute);\n },\n\n /**\n * Returns string represenation of a group\n * @return {String}\n */\n toString: function() {\n return '#';\n },\n\n /**\n * Adds an object to a group; Then recalculates group's dimension, position.\n * @param {Object} object\n * @return {fabric.Group} thisArg\n * @chainable\n */\n addWithUpdate: function(object) {\n this._restoreObjectsState();\n fabric.util.resetObjectTransform(this);\n if (object) {\n this._objects.push(object);\n object.group = this;\n object._set('canvas', this.canvas);\n }\n this._calcBounds();\n this._updateObjectsCoords();\n this.setCoords();\n this.dirty = true;\n return this;\n },\n\n /**\n * Removes an object from a group; Then recalculates group's dimension, position.\n * @param {Object} object\n * @return {fabric.Group} thisArg\n * @chainable\n */\n removeWithUpdate: function(object) {\n this._restoreObjectsState();\n fabric.util.resetObjectTransform(this);\n\n this.remove(object);\n this._calcBounds();\n this._updateObjectsCoords();\n this.setCoords();\n this.dirty = true;\n return this;\n },\n\n /**\n * @private\n */\n _onObjectAdded: function(object) {\n this.dirty = true;\n object.group = this;\n object._set('canvas', this.canvas);\n },\n\n /**\n * @private\n */\n _onObjectRemoved: function(object) {\n this.dirty = true;\n delete object.group;\n },\n\n /**\n * @private\n */\n _set: function(key, value) {\n var i = this._objects.length;\n if (this.useSetOnGroup) {\n while (i--) {\n this._objects[i].setOnGroup(key, value);\n }\n }\n if (key === 'canvas') {\n while (i--) {\n this._objects[i]._set(key, value);\n }\n }\n fabric.Object.prototype._set.call(this, key, value);\n },\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n var objsToObject = this._objects.map(function(obj) {\n var originalDefaults = obj.includeDefaultValues;\n obj.includeDefaultValues = obj.group.includeDefaultValues;\n var _obj = obj.toObject(propertiesToInclude);\n obj.includeDefaultValues = originalDefaults;\n return _obj;\n });\n var obj = fabric.Object.prototype.toObject.call(this, propertiesToInclude);\n obj.objects = objsToObject;\n return obj;\n },\n\n /**\n * Returns object representation of an instance, in dataless mode.\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toDatalessObject: function(propertiesToInclude) {\n var objsToObject, sourcePath = this.sourcePath;\n if (sourcePath) {\n objsToObject = sourcePath;\n }\n else {\n objsToObject = this._objects.map(function(obj) {\n var originalDefaults = obj.includeDefaultValues;\n obj.includeDefaultValues = obj.group.includeDefaultValues;\n var _obj = obj.toDatalessObject(propertiesToInclude);\n obj.includeDefaultValues = originalDefaults;\n return _obj;\n });\n }\n var obj = fabric.Object.prototype.toDatalessObject.call(this, propertiesToInclude);\n obj.objects = objsToObject;\n return obj;\n },\n\n /**\n * Renders instance on a given context\n * @param {CanvasRenderingContext2D} ctx context to render instance on\n */\n render: function(ctx) {\n this._transformDone = true;\n this.callSuper('render', ctx);\n this._transformDone = false;\n },\n\n /**\n * Decide if the object should cache or not. Create its own cache level\n * objectCaching is a global flag, wins over everything\n * needsItsOwnCache should be used when the object drawing method requires\n * a cache step. None of the fabric classes requires it.\n * Generally you do not cache objects in groups because the group outside is cached.\n * @return {Boolean}\n */\n shouldCache: function() {\n var ownCache = this.objectCaching && (!this.group || this.needsItsOwnCache() || !this.group.isOnACache());\n this.ownCaching = ownCache;\n if (ownCache) {\n for (var i = 0, len = this._objects.length; i < len; i++) {\n if (this._objects[i].willDrawShadow()) {\n this.ownCaching = false;\n return false;\n }\n }\n }\n return ownCache;\n },\n\n /**\n * Check if this object or a child object will cast a shadow\n * @return {Boolean}\n */\n willDrawShadow: function() {\n if (this.shadow) {\n return fabric.Object.prototype.willDrawShadow.call(this);\n }\n for (var i = 0, len = this._objects.length; i < len; i++) {\n if (this._objects[i].willDrawShadow()) {\n return true;\n }\n }\n return false;\n },\n\n /**\n * Check if this group or its parent group are caching, recursively up\n * @return {Boolean}\n */\n isOnACache: function() {\n return this.ownCaching || (this.group && this.group.isOnACache());\n },\n\n /**\n * Execute the drawing operation for an object on a specified context\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n drawObject: function(ctx) {\n for (var i = 0, len = this._objects.length; i < len; i++) {\n this._objects[i].render(ctx);\n }\n },\n\n /**\n * Check if cache is dirty\n */\n isCacheDirty: function() {\n if (this.callSuper('isCacheDirty')) {\n return true;\n }\n if (!this.statefullCache) {\n return false;\n }\n for (var i = 0, len = this._objects.length; i < len; i++) {\n if (this._objects[i].isCacheDirty(true)) {\n if (this._cacheCanvas) {\n // if this group has not a cache canvas there is nothing to clean\n var x = this.cacheWidth / this.zoomX, y = this.cacheHeight / this.zoomY;\n this._cacheContext.clearRect(-x / 2, -y / 2, x, y);\n }\n return true;\n }\n }\n return false;\n },\n\n /**\n * Retores original state of each of group objects (original state is that which was before group was created).\n * @private\n * @return {fabric.Group} thisArg\n * @chainable\n */\n _restoreObjectsState: function() {\n this._objects.forEach(this._restoreObjectState, this);\n return this;\n },\n\n /**\n * Realises the transform from this group onto the supplied object\n * i.e. it tells you what would happen if the supplied object was in\n * the group, and then the group was destroyed. It mutates the supplied\n * object.\n * @param {fabric.Object} object\n * @return {fabric.Object} transformedObject\n */\n realizeTransform: function(object) {\n var matrix = object.calcTransformMatrix(),\n options = fabric.util.qrDecompose(matrix),\n center = new fabric.Point(options.translateX, options.translateY);\n object.flipX = false;\n object.flipY = false;\n object.set('scaleX', options.scaleX);\n object.set('scaleY', options.scaleY);\n object.skewX = options.skewX;\n object.skewY = options.skewY;\n object.angle = options.angle;\n object.setPositionByOrigin(center, 'center', 'center');\n return object;\n },\n\n /**\n * Restores original state of a specified object in group\n * @private\n * @param {fabric.Object} object\n * @return {fabric.Group} thisArg\n */\n _restoreObjectState: function(object) {\n this.realizeTransform(object);\n object.setCoords();\n delete object.group;\n return this;\n },\n\n /**\n * Destroys a group (restoring state of its objects)\n * @return {fabric.Group} thisArg\n * @chainable\n */\n destroy: function() {\n // when group is destroyed objects needs to get a repaint to be eventually\n // displayed on canvas.\n this._objects.forEach(function(object) {\n object.set('dirty', true);\n });\n return this._restoreObjectsState();\n },\n\n /**\n * make a group an active selection, remove the group from canvas\n * the group has to be on canvas for this to work.\n * @return {fabric.ActiveSelection} thisArg\n * @chainable\n */\n toActiveSelection: function() {\n if (!this.canvas) {\n return;\n }\n var objects = this._objects, canvas = this.canvas;\n this._objects = [];\n var options = this.toObject();\n delete options.objects;\n var activeSelection = new fabric.ActiveSelection([]);\n activeSelection.set(options);\n activeSelection.type = 'activeSelection';\n canvas.remove(this);\n objects.forEach(function(object) {\n object.group = activeSelection;\n object.dirty = true;\n canvas.add(object);\n });\n activeSelection.canvas = canvas;\n activeSelection._objects = objects;\n canvas._activeObject = activeSelection;\n activeSelection.setCoords();\n return activeSelection;\n },\n\n /**\n * Destroys a group (restoring state of its objects)\n * @return {fabric.Group} thisArg\n * @chainable\n */\n ungroupOnCanvas: function() {\n return this._restoreObjectsState();\n },\n\n /**\n * Sets coordinates of all objects inside group\n * @return {fabric.Group} thisArg\n * @chainable\n */\n setObjectsCoords: function() {\n var ignoreZoom = true, skipAbsolute = true;\n this.forEachObject(function(object) {\n object.setCoords(ignoreZoom, skipAbsolute);\n });\n return this;\n },\n\n /**\n * @private\n */\n _calcBounds: function(onlyWidthHeight) {\n var aX = [],\n aY = [],\n o, prop,\n props = ['tr', 'br', 'bl', 'tl'],\n i = 0, iLen = this._objects.length,\n j, jLen = props.length,\n ignoreZoom = true;\n\n for ( ; i < iLen; ++i) {\n o = this._objects[i];\n o.setCoords(ignoreZoom);\n for (j = 0; j < jLen; j++) {\n prop = props[j];\n aX.push(o.oCoords[prop].x);\n aY.push(o.oCoords[prop].y);\n }\n }\n\n this._getBounds(aX, aY, onlyWidthHeight);\n },\n\n /**\n * @private\n */\n _getBounds: function(aX, aY, onlyWidthHeight) {\n var minXY = new fabric.Point(min(aX), min(aY)),\n maxXY = new fabric.Point(max(aX), max(aY)),\n top = minXY.y || 0, left = minXY.x || 0,\n width = (maxXY.x - minXY.x) || 0,\n height = (maxXY.y - minXY.y) || 0;\n this.width = width;\n this.height = height;\n if (!onlyWidthHeight) {\n // the bounding box always finds the topleft most corner.\n // whatever is the group origin, we set up here the left/top position.\n this.setPositionByOrigin({ x: left, y: top }, 'left', 'top');\n }\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns svg representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n toSVG: function(reviver) {\n var markup = this._createBaseSVGMarkup();\n markup.push(\n '\\n'\n );\n\n for (var i = 0, len = this._objects.length; i < len; i++) {\n markup.push('\\t', this._objects[i].toSVG(reviver));\n }\n\n markup.push('\\n');\n\n return reviver ? reviver(markup.join('')) : markup.join('');\n },\n /* _TO_SVG_END_ */\n });\n\n /**\n * Returns {@link fabric.Group} instance from an object representation\n * @static\n * @memberOf fabric.Group\n * @param {Object} object Object to create a group from\n * @param {Function} [callback] Callback to invoke when an group instance is created\n */\n fabric.Group.fromObject = function(object, callback) {\n fabric.util.enlivenObjects(object.objects, function(enlivenedObjects) {\n var options = fabric.util.object.clone(object, true);\n delete options.objects;\n callback && callback(new fabric.Group(enlivenedObjects, options, true));\n });\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { });\n\n if (fabric.ActiveSelection) {\n return;\n }\n\n /**\n * Group class\n * @class fabric.ActiveSelection\n * @extends fabric.Group\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#groups}\n * @see {@link fabric.ActiveSelection#initialize} for constructor definition\n */\n fabric.ActiveSelection = fabric.util.createClass(fabric.Group, /** @lends fabric.ActiveSelection.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'activeSelection',\n\n /**\n * Constructor\n * @param {Object} objects ActiveSelection objects\n * @param {Object} [options] Options object\n * @return {Object} thisArg\n */\n initialize: function(objects, options) {\n options = options || {};\n this._objects = objects || [];\n for (var i = this._objects.length; i--; ) {\n this._objects[i].group = this;\n }\n\n if (options.originX) {\n this.originX = options.originX;\n }\n if (options.originY) {\n this.originY = options.originY;\n }\n this._calcBounds();\n this._updateObjectsCoords();\n fabric.Object.prototype.initialize.call(this, options);\n this.setCoords();\n },\n\n /**\n * Change te activeSelection to a normal group,\n * High level function that automatically adds it to canvas as\n * active object. no events fired.\n * @since 2.0.0\n * @return {fabric.Group}\n */\n toGroup: function() {\n var objects = this._objects.concat();\n this._objects = [];\n var options = fabric.Object.prototype.toObject.call(this);\n var newGroup = new fabric.Group([]);\n delete options.type;\n newGroup.set(options);\n objects.forEach(function(object) {\n object.canvas.remove(object);\n object.group = newGroup;\n });\n newGroup._objects = objects;\n if (!this.canvas) {\n return newGroup;\n }\n var canvas = this.canvas;\n canvas.add(newGroup);\n canvas._activeObject = newGroup;\n newGroup.setCoords();\n return newGroup;\n },\n\n /**\n * If returns true, deselection is cancelled.\n * @since 2.0.0\n * @return {Boolean} [cancel]\n */\n onDeselect: function() {\n this.destroy();\n return false;\n },\n\n /**\n * Returns string representation of a group\n * @return {String}\n */\n toString: function() {\n return '#';\n },\n\n /**\n * Decide if the object should cache or not. Create its own cache level\n * objectCaching is a global flag, wins over everything\n * needsItsOwnCache should be used when the object drawing method requires\n * a cache step. None of the fabric classes requires it.\n * Generally you do not cache objects in groups because the group outside is cached.\n * @return {Boolean}\n */\n shouldCache: function() {\n return false;\n },\n\n /**\n * Check if this group or its parent group are caching, recursively up\n * @return {Boolean}\n */\n isOnACache: function() {\n return false;\n },\n\n /**\n * Renders controls and borders for the object\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {Object} [styleOverride] properties to override the object style\n * @param {Object} [childrenOverride] properties to override the children overrides\n */\n _renderControls: function(ctx, styleOverride, childrenOverride) {\n ctx.save();\n ctx.globalAlpha = this.isMoving ? this.borderOpacityWhenMoving : 1;\n this.callSuper('_renderControls', ctx, styleOverride);\n childrenOverride = childrenOverride || { };\n if (typeof childrenOverride.hasControls === 'undefined') {\n childrenOverride.hasControls = false;\n }\n if (typeof childrenOverride.hasRotatingPoint === 'undefined') {\n childrenOverride.hasRotatingPoint = false;\n }\n childrenOverride.forActiveSelection = true;\n for (var i = 0, len = this._objects.length; i < len; i++) {\n this._objects[i]._renderControls(ctx, childrenOverride);\n }\n ctx.restore();\n },\n });\n\n /**\n * Returns {@link fabric.ActiveSelection} instance from an object representation\n * @static\n * @memberOf fabric.ActiveSelection\n * @param {Object} object Object to create a group from\n * @param {Function} [callback] Callback to invoke when an ActiveSelection instance is created\n */\n fabric.ActiveSelection.fromObject = function(object, callback) {\n fabric.util.enlivenObjects(object.objects, function(enlivenedObjects) {\n delete object.objects;\n callback && callback(new fabric.ActiveSelection(enlivenedObjects, object, true));\n });\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var extend = fabric.util.object.extend;\n\n if (!global.fabric) {\n global.fabric = { };\n }\n\n if (global.fabric.Image) {\n fabric.warn('fabric.Image is already defined.');\n return;\n }\n\n /**\n * Image class\n * @class fabric.Image\n * @extends fabric.Object\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-1#images}\n * @see {@link fabric.Image#initialize} for constructor definition\n */\n fabric.Image = fabric.util.createClass(fabric.Object, /** @lends fabric.Image.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'image',\n\n /**\n * crossOrigin value (one of \"\", \"anonymous\", \"use-credentials\")\n * @see https://developer.mozilla.org/en-US/docs/HTML/CORS_settings_attributes\n * @type String\n * @default\n */\n crossOrigin: '',\n\n /**\n * Width of a stroke.\n * For image quality a stroke multiple of 2 gives better results.\n * @type Number\n * @default\n */\n strokeWidth: 0,\n\n /**\n * private\n * contains last value of scaleX to detect\n * if the Image got resized after the last Render\n * @type Number\n */\n _lastScaleX: 1,\n\n /**\n * private\n * contains last value of scaleY to detect\n * if the Image got resized after the last Render\n * @type Number\n */\n _lastScaleY: 1,\n\n /**\n * private\n * contains last value of scaling applied by the apply filter chain\n * @type Number\n */\n _filterScalingX: 1,\n\n /**\n * private\n * contains last value of scaling applied by the apply filter chain\n * @type Number\n */\n _filterScalingY: 1,\n\n /**\n * minimum scale factor under which any resizeFilter is triggered to resize the image\n * 0 will disable the automatic resize. 1 will trigger automatically always.\n * number bigger than 1 are not implemented yet.\n * @type Number\n */\n minimumScaleTrigger: 0.5,\n\n /**\n * List of properties to consider when checking if\n * state of an object is changed ({@link fabric.Object#hasStateChanged})\n * as well as for history (undo/redo) purposes\n * @type Array\n */\n stateProperties: fabric.Object.prototype.stateProperties.concat('cropX', 'cropY'),\n\n /**\n * When `true`, object is cached on an additional canvas.\n * default to false for images\n * since 1.7.0\n * @type Boolean\n * @default\n */\n objectCaching: false,\n\n /**\n * key used to retrieve the texture representing this image\n * since 2.0.0\n * @type String\n * @default\n */\n cacheKey: '',\n\n /**\n * Image crop in pixels from original image size.\n * since 2.0.0\n * @type Number\n * @default\n */\n cropX: 0,\n\n /**\n * Image crop in pixels from original image size.\n * since 2.0.0\n * @type Number\n * @default\n */\n cropY: 0,\n\n /**\n * Constructor\n * @param {HTMLImageElement | String} element Image element\n * @param {Object} [options] Options object\n * @param {function} [callback] callback function to call after eventual filters applied.\n * @return {fabric.Image} thisArg\n */\n initialize: function(element, options) {\n options || (options = { });\n this.filters = [];\n this.cacheKey = 'texture' + fabric.Object.__uid++;\n this.callSuper('initialize', options);\n this._initElement(element, options);\n },\n\n /**\n * Returns image element which this instance if based on\n * @return {HTMLImageElement} Image element\n */\n getElement: function() {\n return this._element || {};\n },\n\n /**\n * Sets image element for this instance to a specified one.\n * If filters defined they are applied to new image.\n * You might need to call `canvas.renderAll` and `object.setCoords` after replacing, to render new image and update controls area.\n * @param {HTMLImageElement} element\n * @param {Object} [options] Options object\n * @return {fabric.Image} thisArg\n * @chainable\n */\n setElement: function(element, options) {\n this.removeTexture(this.cacheKey);\n this.removeTexture(this.cacheKey + '_filtered');\n this._element = element;\n this._originalElement = element;\n this._initConfig(options);\n if (this.resizeFilter) {\n this.applyResizeFilters();\n }\n if (this.filters.length !== 0) {\n this.applyFilters();\n }\n return this;\n },\n\n /**\n * Delete a single texture if in webgl mode\n */\n removeTexture: function(key) {\n var backend = fabric.filterBackend;\n if (backend && backend.evictCachesForKey) {\n backend.evictCachesForKey(key);\n }\n },\n\n /**\n * Delete textures, reference to elements and eventually JSDOM cleanup\n */\n dispose: function() {\n this.removeTexture(this.cacheKey);\n this.removeTexture(this.cacheKey + '_filtered');\n this._cacheContext = undefined;\n ['_originalElement', '_element', '_filteredEl', '_cacheCanvas'].forEach((function(element) {\n fabric.util.cleanUpJsdomNode(this[element]);\n this[element] = undefined;\n }).bind(this));\n },\n\n /**\n * Sets crossOrigin value (on an instance and corresponding image element)\n * @return {fabric.Image} thisArg\n * @chainable\n */\n setCrossOrigin: function(value) {\n this.crossOrigin = value;\n this._element.crossOrigin = value;\n\n return this;\n },\n\n /**\n * Returns original size of an image\n * @return {Object} Object with \"width\" and \"height\" properties\n */\n getOriginalSize: function() {\n var element = this.getElement();\n return {\n width: element.naturalWidth || element.width,\n height: element.naturalHeight || element.height\n };\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _stroke: function(ctx) {\n if (!this.stroke || this.strokeWidth === 0) {\n return;\n }\n var w = this.width / 2, h = this.height / 2;\n ctx.beginPath();\n ctx.moveTo(-w, -h);\n ctx.lineTo(w, -h);\n ctx.lineTo(w, h);\n ctx.lineTo(-w, h);\n ctx.lineTo(-w, -h);\n ctx.closePath();\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderDashedStroke: function(ctx) {\n var x = -this.width / 2,\n y = -this.height / 2,\n w = this.width,\n h = this.height;\n\n ctx.save();\n this._setStrokeStyles(ctx, this);\n\n ctx.beginPath();\n fabric.util.drawDashedLine(ctx, x, y, x + w, y, this.strokeDashArray);\n fabric.util.drawDashedLine(ctx, x + w, y, x + w, y + h, this.strokeDashArray);\n fabric.util.drawDashedLine(ctx, x + w, y + h, x, y + h, this.strokeDashArray);\n fabric.util.drawDashedLine(ctx, x, y + h, x, y, this.strokeDashArray);\n ctx.closePath();\n ctx.restore();\n },\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} Object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n var filters = [];\n\n this.filters.forEach(function(filterObj) {\n if (filterObj) {\n filters.push(filterObj.toObject());\n }\n });\n var object = extend(\n this.callSuper(\n 'toObject',\n ['crossOrigin', 'cropX', 'cropY'].concat(propertiesToInclude)\n ), {\n src: this.getSrc(),\n filters: filters,\n });\n if (this.resizeFilter) {\n object.resizeFilter = this.resizeFilter.toObject();\n }\n return object;\n },\n\n /**\n * Returns true if an image has crop applied, inspecting values of cropX,cropY,width,hight.\n * @return {Boolean}\n */\n hasCrop: function() {\n return this.cropX || this.cropY || this.width < this._element.width || this.height < this._element.height;\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns SVG representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n toSVG: function(reviver) {\n var markup = this._createBaseSVGMarkup(), x = -this.width / 2, y = -this.height / 2, clipPath = '';\n if (this.hasCrop()) {\n var clipPathId = fabric.Object.__uid++;\n markup.push(\n '\\n',\n '\\t\\n',\n '\\n'\n );\n clipPath = ' clip-path=\"url(#imageCrop_' + clipPathId + ')\" ';\n }\n markup.push('\\n');\n var imageMarkup = ['\\t element with actual transformation, then offsetting object to the top/left\n // so that object's center aligns with container's left/top\n '\" width=\"', this._element.width || this._element.naturalWidth,\n '\" height=\"', this._element.height || this._element.height,\n '\"', clipPath,\n '>\\n'];\n if (this.paintFirst === 'fill') {\n Array.prototype.push.apply(markup, imageMarkup);\n }\n if (this.stroke || this.strokeDashArray) {\n var origFill = this.fill;\n this.fill = null;\n markup.push(\n '\\t\\n'\n );\n this.fill = origFill;\n }\n if (this.paintFirst !== 'fill') {\n Array.prototype.push.apply(markup, imageMarkup);\n }\n markup.push('\\n');\n\n return reviver ? reviver(markup.join('')) : markup.join('');\n },\n /* _TO_SVG_END_ */\n\n /**\n * Returns source of an image\n * @param {Boolean} filtered indicates if the src is needed for svg\n * @return {String} Source of an image\n */\n getSrc: function(filtered) {\n var element = filtered ? this._element : this._originalElement;\n if (element) {\n if (element.toDataURL) {\n return element.toDataURL();\n }\n return element.src;\n }\n else {\n return this.src || '';\n }\n },\n\n /**\n * Sets source of an image\n * @param {String} src Source string (URL)\n * @param {Function} [callback] Callback is invoked when image has been loaded (and all filters have been applied)\n * @param {Object} [options] Options object\n * @return {fabric.Image} thisArg\n * @chainable\n */\n setSrc: function(src, callback, options) {\n fabric.util.loadImage(src, function(img) {\n this.setElement(img, options);\n this._setWidthHeight();\n callback(this);\n }, this, options && options.crossOrigin);\n return this;\n },\n\n /**\n * Returns string representation of an instance\n * @return {String} String representation of an instance\n */\n toString: function() {\n return '#';\n },\n\n applyResizeFilters: function() {\n var filter = this.resizeFilter,\n minimumScale = this.minimumScaleTrigger,\n objectScale = this.getTotalObjectScaling(),\n scaleX = objectScale.scaleX,\n scaleY = objectScale.scaleY,\n elementToFilter = this._filteredEl || this._originalElement;\n if (this.group) {\n this.set('dirty', true);\n }\n if (!filter || (scaleX > minimumScale && scaleY > minimumScale)) {\n this._element = elementToFilter;\n this._filterScalingX = 1;\n this._filterScalingY = 1;\n this._lastScaleX = scaleX;\n this._lastScaleY = scaleY;\n return;\n }\n if (!fabric.filterBackend) {\n fabric.filterBackend = fabric.initFilterBackend();\n }\n var canvasEl = fabric.util.createCanvasElement(),\n cacheKey = this._filteredEl ? (this.cacheKey + '_filtered') : this.cacheKey,\n sourceWidth = elementToFilter.width, sourceHeight = elementToFilter.height;\n canvasEl.width = sourceWidth;\n canvasEl.height = sourceHeight;\n this._element = canvasEl;\n this._lastScaleX = filter.scaleX = scaleX;\n this._lastScaleY = filter.scaleY = scaleY;\n fabric.filterBackend.applyFilters(\n [filter], elementToFilter, sourceWidth, sourceHeight, this._element, cacheKey);\n this._filterScalingX = canvasEl.width / this._originalElement.width;\n this._filterScalingY = canvasEl.height / this._originalElement.height;\n },\n\n /**\n * Applies filters assigned to this image (from \"filters\" array) or from filter param\n * @method applyFilters\n * @param {Array} filters to be applied\n * @param {Boolean} forResizing specify if the filter operation is a resize operation\n * @return {thisArg} return the fabric.Image object\n * @chainable\n */\n applyFilters: function(filters) {\n\n filters = filters || this.filters || [];\n filters = filters.filter(function(filter) { return filter && !filter.isNeutralState(); });\n if (this.group) {\n this.set('dirty', true);\n }\n\n // needs to clear out or WEBGL will not resize correctly\n this.removeTexture(this.cacheKey + '_filtered');\n\n if (filters.length === 0) {\n this._element = this._originalElement;\n this._filteredEl = null;\n this._filterScalingX = 1;\n this._filterScalingY = 1;\n return this;\n }\n\n var imgElement = this._originalElement,\n sourceWidth = imgElement.naturalWidth || imgElement.width,\n sourceHeight = imgElement.naturalHeight || imgElement.height;\n\n if (this._element === this._originalElement) {\n // if the element is the same we need to create a new element\n var canvasEl = fabric.util.createCanvasElement();\n canvasEl.width = sourceWidth;\n canvasEl.height = sourceHeight;\n this._element = canvasEl;\n this._filteredEl = canvasEl;\n }\n else {\n // clear the existing element to get new filter data\n // also dereference the eventual resized _element\n this._element = this._filteredEl;\n this._filteredEl.getContext('2d').clearRect(0, 0, sourceWidth, sourceHeight);\n // we also need to resize again at next renderAll, so remove saved _lastScaleX/Y\n this._lastScaleX = 1;\n this._lastScaleY = 1;\n }\n if (!fabric.filterBackend) {\n fabric.filterBackend = fabric.initFilterBackend();\n }\n fabric.filterBackend.applyFilters(\n filters, this._originalElement, sourceWidth, sourceHeight, this._element, this.cacheKey);\n if (this._originalElement.width !== this._element.width ||\n this._originalElement.height !== this._element.height) {\n this._filterScalingX = this._element.width / this._originalElement.width;\n this._filterScalingY = this._element.height / this._originalElement.height;\n }\n return this;\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(ctx) {\n if (this.isMoving !== true && this.resizeFilter && this._needsResize()) {\n this.applyResizeFilters();\n }\n this._stroke(ctx);\n this._renderPaintInOrder(ctx);\n },\n\n _renderFill: function(ctx) {\n var w = this.width, h = this.height, sW = w * this._filterScalingX, sH = h * this._filterScalingY,\n x = -w / 2, y = -h / 2, elementToDraw = this._element;\n elementToDraw && ctx.drawImage(elementToDraw,\n this.cropX * this._filterScalingX,\n this.cropY * this._filterScalingY,\n sW,\n sH,\n x, y, w, h);\n },\n\n /**\n * @private, needed to check if image needs resize\n */\n _needsResize: function() {\n var scale = this.getTotalObjectScaling();\n return (scale.scaleX !== this._lastScaleX || scale.scaleY !== this._lastScaleY);\n },\n\n /**\n * @private\n */\n _resetWidthHeight: function() {\n this.set(this.getOriginalSize());\n },\n\n /**\n * The Image class's initialization method. This method is automatically\n * called by the constructor.\n * @private\n * @param {HTMLImageElement|String} element The element representing the image\n * @param {Object} [options] Options object\n */\n _initElement: function(element, options) {\n this.setElement(fabric.util.getById(element), options);\n fabric.util.addClass(this.getElement(), fabric.Image.CSS_CANVAS);\n },\n\n /**\n * @private\n * @param {Object} [options] Options object\n */\n _initConfig: function(options) {\n options || (options = { });\n this.setOptions(options);\n this._setWidthHeight(options);\n if (this._element && this.crossOrigin) {\n this._element.crossOrigin = this.crossOrigin;\n }\n },\n\n /**\n * @private\n * @param {Array} filters to be initialized\n * @param {Function} callback Callback to invoke when all fabric.Image.filters instances are created\n */\n _initFilters: function(filters, callback) {\n if (filters && filters.length) {\n fabric.util.enlivenObjects(filters, function(enlivenedObjects) {\n callback && callback(enlivenedObjects);\n }, 'fabric.Image.filters');\n }\n else {\n callback && callback();\n }\n },\n\n /**\n * @private\n * Set the width and the height of the image object, using the element or the\n * options.\n * @param {Object} [options] Object with width/height properties\n */\n _setWidthHeight: function(options) {\n options || (options = { });\n var el = this.getElement();\n this.width = options.width || el.naturalWidth || el.width || 0;\n this.height = options.height || el.naturalHeight || el.height || 0;\n },\n\n /**\n * Calculate offset for center and scale factor for the image in order to respect\n * the preserveAspectRatio attribute\n * @private\n * @return {Object}\n */\n parsePreserveAspectRatioAttribute: function() {\n var pAR = fabric.util.parsePreserveAspectRatioAttribute(this.preserveAspectRatio || ''),\n rWidth = this._element.width, rHeight = this._element.height,\n scaleX = 1, scaleY = 1, offsetLeft = 0, offsetTop = 0, cropX = 0, cropY = 0,\n offset, pWidth = this.width, pHeight = this.height, parsedAttributes = { width: pWidth, height: pHeight };\n if (pAR && (pAR.alignX !== 'none' || pAR.alignY !== 'none')) {\n if (pAR.meetOrSlice === 'meet') {\n scaleX = scaleY = fabric.util.findScaleToFit(this._element, parsedAttributes);\n offset = (pWidth - rWidth * scaleX) / 2;\n if (pAR.alignX === 'Min') {\n offsetLeft = -offset;\n }\n if (pAR.alignX === 'Max') {\n offsetLeft = offset;\n }\n offset = (pHeight - rHeight * scaleY) / 2;\n if (pAR.alignY === 'Min') {\n offsetTop = -offset;\n }\n if (pAR.alignY === 'Max') {\n offsetTop = offset;\n }\n }\n if (pAR.meetOrSlice === 'slice') {\n scaleX = scaleY = fabric.util.findScaleToCover(this._element, parsedAttributes);\n offset = rWidth - pWidth / scaleX;\n if (pAR.alignX === 'Mid') {\n cropX = offset / 2;\n }\n if (pAR.alignX === 'Max') {\n cropX = offset;\n }\n offset = rHeight - pHeight / scaleY;\n if (pAR.alignY === 'Mid') {\n cropY = offset / 2;\n }\n if (pAR.alignY === 'Max') {\n cropY = offset;\n }\n rWidth = pWidth / scaleX;\n rHeight = pHeight / scaleY;\n }\n }\n else {\n scaleX = pWidth / rWidth;\n scaleY = pHeight / rHeight;\n }\n return {\n width: rWidth,\n height: rHeight,\n scaleX: scaleX,\n scaleY: scaleY,\n offsetLeft: offsetLeft,\n offsetTop: offsetTop,\n cropX: cropX,\n cropY: cropY\n };\n }\n });\n\n /**\n * Default CSS class name for canvas\n * @static\n * @type String\n * @default\n */\n fabric.Image.CSS_CANVAS = 'canvas-img';\n\n /**\n * Alias for getSrc\n * @static\n */\n fabric.Image.prototype.getSvgSrc = fabric.Image.prototype.getSrc;\n\n /**\n * Creates an instance of fabric.Image from its object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {Function} callback Callback to invoke when an image instance is created\n */\n fabric.Image.fromObject = function(_object, callback) {\n var object = fabric.util.object.clone(_object);\n fabric.util.loadImage(object.src, function(img, error) {\n if (error) {\n callback && callback(null, error);\n return;\n }\n fabric.Image.prototype._initFilters.call(object, object.filters, function(filters) {\n object.filters = filters || [];\n fabric.Image.prototype._initFilters.call(object, [object.resizeFilter], function(resizeFilters) {\n object.resizeFilter = resizeFilters[0];\n var image = new fabric.Image(img, object);\n callback(image);\n });\n });\n }, null, object.crossOrigin);\n };\n\n /**\n * Creates an instance of fabric.Image from an URL string\n * @static\n * @param {String} url URL to create an image from\n * @param {Function} [callback] Callback to invoke when image is created (newly created image is passed as a first argument)\n * @param {Object} [imgOptions] Options object\n */\n fabric.Image.fromURL = function(url, callback, imgOptions) {\n fabric.util.loadImage(url, function(img) {\n callback && callback(new fabric.Image(img, imgOptions));\n }, null, imgOptions && imgOptions.crossOrigin);\n };\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by {@link fabric.Image.fromElement})\n * @static\n * @see {@link http://www.w3.org/TR/SVG/struct.html#ImageElement}\n */\n fabric.Image.ATTRIBUTE_NAMES =\n fabric.SHARED_ATTRIBUTES.concat('x y width height preserveAspectRatio xlink:href crossOrigin'.split(' '));\n\n /**\n * Returns {@link fabric.Image} instance from an SVG element\n * @static\n * @param {SVGElement} element Element to parse\n * @param {Object} [options] Options object\n * @param {Function} callback Callback to execute when fabric.Image object is created\n * @return {fabric.Image} Instance of fabric.Image\n */\n fabric.Image.fromElement = function(element, callback, options) {\n var parsedAttributes = fabric.parseAttributes(element, fabric.Image.ATTRIBUTE_NAMES);\n fabric.Image.fromURL(parsedAttributes['xlink:href'], callback,\n extend((options ? fabric.util.object.clone(options) : { }), parsedAttributes));\n };\n /* _FROM_SVG_END_ */\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\nfabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n\n /**\n * @private\n * @return {Number} angle value\n */\n _getAngleValueForStraighten: function() {\n var angle = this.angle % 360;\n if (angle > 0) {\n return Math.round((angle - 1) / 90) * 90;\n }\n return Math.round(angle / 90) * 90;\n },\n\n /**\n * Straightens an object (rotating it from current angle to one of 0, 90, 180, 270, etc. depending on which is closer)\n * @return {fabric.Object} thisArg\n * @chainable\n */\n straighten: function() {\n this.rotate(this._getAngleValueForStraighten());\n return this;\n },\n\n /**\n * Same as {@link fabric.Object.prototype.straighten} but with animation\n * @param {Object} callbacks Object with callback functions\n * @param {Function} [callbacks.onComplete] Invoked on completion\n * @param {Function} [callbacks.onChange] Invoked on every step of animation\n * @return {fabric.Object} thisArg\n * @chainable\n */\n fxStraighten: function(callbacks) {\n callbacks = callbacks || { };\n\n var empty = function() { },\n onComplete = callbacks.onComplete || empty,\n onChange = callbacks.onChange || empty,\n _this = this;\n\n fabric.util.animate({\n startValue: this.get('angle'),\n endValue: this._getAngleValueForStraighten(),\n duration: this.FX_DURATION,\n onChange: function(value) {\n _this.rotate(value);\n onChange();\n },\n onComplete: function() {\n _this.setCoords();\n onComplete();\n },\n });\n\n return this;\n }\n});\n\nfabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.StaticCanvas.prototype */ {\n\n /**\n * Straightens object, then rerenders canvas\n * @param {fabric.Object} object Object to straighten\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n straightenObject: function (object) {\n object.straighten();\n this.requestRenderAll();\n return this;\n },\n\n /**\n * Same as {@link fabric.Canvas.prototype.straightenObject}, but animated\n * @param {fabric.Object} object Object to straighten\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n fxStraightenObject: function (object) {\n object.fxStraighten({\n onChange: this.requestRenderAllBound\n });\n return this;\n }\n});\n\n\n(function() {\n\n 'use strict';\n\n /**\n * Tests if webgl supports certain precision\n * @param {WebGL} Canvas WebGL context to test on\n * @param {String} Precision to test can be any of following: 'lowp', 'mediump', 'highp'\n * @returns {Boolean} Whether the user's browser WebGL supports given precision.\n */\n function testPrecision(gl, precision){\n var fragmentSource = 'precision ' + precision + ' float;\\nvoid main(){}';\n var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);\n gl.shaderSource(fragmentShader, fragmentSource);\n gl.compileShader(fragmentShader);\n if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {\n return false;\n }\n return true;\n }\n\n /**\n * Indicate whether this filtering backend is supported by the user's browser.\n * @param {Number} tileSize check if the tileSize is supported\n * @returns {Boolean} Whether the user's browser supports WebGL.\n */\n fabric.isWebglSupported = function(tileSize) {\n if (fabric.isLikelyNode) {\n return false;\n }\n tileSize = tileSize || fabric.WebglFilterBackend.prototype.tileSize;\n var canvas = document.createElement('canvas');\n var gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');\n var isSupported = false;\n // eslint-disable-next-line\n if (gl) {\n fabric.maxTextureSize = gl.getParameter(gl.MAX_TEXTURE_SIZE);\n isSupported = fabric.maxTextureSize >= tileSize;\n var precisions = ['highp', 'mediump', 'lowp'];\n for (var i = 0; i < 3; i++){\n if (testPrecision(gl, precisions[i])){\n fabric.webGlPrecision = precisions[i];\n break;\n };\n }\n }\n this.isSupported = isSupported;\n return isSupported;\n };\n\n fabric.WebglFilterBackend = WebglFilterBackend;\n\n /**\n * WebGL filter backend.\n */\n function WebglFilterBackend(options) {\n if (options && options.tileSize) {\n this.tileSize = options.tileSize;\n }\n this.setupGLContext(this.tileSize, this.tileSize);\n this.captureGPUInfo();\n };\n\n WebglFilterBackend.prototype = /** @lends fabric.WebglFilterBackend.prototype */ {\n\n tileSize: 2048,\n\n /**\n * Experimental. This object is a sort of repository of help layers used to avoid\n * of recreating them during frequent filtering. If you are previewing a filter with\n * a slider you problably do not want to create help layers every filter step.\n * in this object there will be appended some canvases, created once, resized sometimes\n * cleared never. Clearing is left to the developer.\n **/\n resources: {\n\n },\n\n /**\n * Setup a WebGL context suitable for filtering, and bind any needed event handlers.\n */\n setupGLContext: function(width, height) {\n this.dispose();\n this.createWebGLCanvas(width, height);\n // eslint-disable-next-line\n this.aPosition = new Float32Array([0, 0, 0, 1, 1, 0, 1, 1]);\n this.chooseFastestCopyGLTo2DMethod(width, height);\n },\n\n /**\n * Pick a method to copy data from GL context to 2d canvas. In some browsers using\n * putImageData is faster than drawImage for that specific operation.\n */\n chooseFastestCopyGLTo2DMethod: function(width, height) {\n var canMeasurePerf = typeof window.performance !== 'undefined';\n var canUseImageData;\n try {\n new ImageData(1, 1);\n canUseImageData = true;\n }\n catch (e) {\n canUseImageData = false;\n }\n // eslint-disable-next-line no-undef\n var canUseArrayBuffer = typeof ArrayBuffer !== 'undefined';\n // eslint-disable-next-line no-undef\n var canUseUint8Clamped = typeof Uint8ClampedArray !== 'undefined';\n\n if (!(canMeasurePerf && canUseImageData && canUseArrayBuffer && canUseUint8Clamped)) {\n return;\n }\n\n var targetCanvas = fabric.util.createCanvasElement();\n // eslint-disable-next-line no-undef\n var imageBuffer = new ArrayBuffer(width * height * 4);\n var testContext = {\n imageBuffer: imageBuffer,\n destinationWidth: width,\n destinationHeight: height,\n targetCanvas: targetCanvas\n };\n var startTime, drawImageTime, putImageDataTime;\n targetCanvas.width = width;\n targetCanvas.height = height;\n\n startTime = window.performance.now();\n copyGLTo2DDrawImage.call(testContext, this.gl, testContext);\n drawImageTime = window.performance.now() - startTime;\n\n startTime = window.performance.now();\n copyGLTo2DPutImageData.call(testContext, this.gl, testContext);\n putImageDataTime = window.performance.now() - startTime;\n\n if (drawImageTime > putImageDataTime) {\n this.imageBuffer = imageBuffer;\n this.copyGLTo2D = copyGLTo2DPutImageData;\n }\n else {\n this.copyGLTo2D = copyGLTo2DDrawImage;\n }\n },\n\n /**\n * Create a canvas element and associated WebGL context and attaches them as\n * class properties to the GLFilterBackend class.\n */\n createWebGLCanvas: function(width, height) {\n var canvas = fabric.util.createCanvasElement();\n canvas.width = width;\n canvas.height = height;\n var glOptions = {\n alpha: true,\n premultipliedAlpha: false,\n depth: false,\n stencil: false,\n antialias: false\n },\n gl = canvas.getContext('webgl', glOptions);\n if (!gl) {\n gl = canvas.getContext('experimental-webgl', glOptions);\n }\n if (!gl) {\n return;\n }\n gl.clearColor(0, 0, 0, 0);\n // this canvas can fire webglcontextlost and webglcontextrestored\n this.canvas = canvas;\n this.gl = gl;\n },\n\n /**\n * Attempts to apply the requested filters to the source provided, drawing the filtered output\n * to the provided target canvas.\n *\n * @param {Array} filters The filters to apply.\n * @param {HTMLImageElement|HTMLCanvasElement} source The source to be filtered.\n * @param {Number} width The width of the source input.\n * @param {Number} height The height of the source input.\n * @param {HTMLCanvasElement} targetCanvas The destination for filtered output to be drawn.\n * @param {String|undefined} cacheKey A key used to cache resources related to the source. If\n * omitted, caching will be skipped.\n */\n applyFilters: function(filters, source, width, height, targetCanvas, cacheKey) {\n var gl = this.gl;\n var cachedTexture;\n if (cacheKey) {\n cachedTexture = this.getCachedTexture(cacheKey, source);\n }\n var pipelineState = {\n originalWidth: source.width || source.originalWidth,\n originalHeight: source.height || source.originalHeight,\n sourceWidth: width,\n sourceHeight: height,\n destinationWidth: width,\n destinationHeight: height,\n context: gl,\n sourceTexture: this.createTexture(gl, width, height, !cachedTexture && source),\n targetTexture: this.createTexture(gl, width, height),\n originalTexture: cachedTexture ||\n this.createTexture(gl, width, height, !cachedTexture && source),\n passes: filters.length,\n webgl: true,\n aPosition: this.aPosition,\n programCache: this.programCache,\n pass: 0,\n filterBackend: this,\n targetCanvas: targetCanvas\n };\n var tempFbo = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, tempFbo);\n filters.forEach(function(filter) { filter && filter.applyTo(pipelineState); });\n resizeCanvasIfNeeded(pipelineState);\n this.copyGLTo2D(gl, pipelineState);\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.deleteTexture(pipelineState.sourceTexture);\n gl.deleteTexture(pipelineState.targetTexture);\n gl.deleteFramebuffer(tempFbo);\n targetCanvas.getContext('2d').setTransform(1, 0, 0, 1, 0, 0);\n return pipelineState;\n },\n\n /**\n * The same as the applyFilter method but with additional logging of WebGL\n * errors.\n */\n applyFiltersDebug: function(filters, source, width, height, targetCanvas, cacheKey) {\n // The following code is useful when debugging a specific issue but adds ~10x slowdown.\n var gl = this.gl;\n var ret = this.applyFilters(filters, source, width, height, targetCanvas, cacheKey);\n var glError = gl.getError();\n if (glError !== gl.NO_ERROR) {\n var errorString = this.glErrorToString(gl, glError);\n var error = new Error('WebGL Error ' + errorString);\n error.glErrorCode = glError;\n throw error;\n }\n return ret;\n },\n\n glErrorToString: function(context, errorCode) {\n if (!context) {\n return 'Context undefined for error code: ' + errorCode;\n }\n else if (typeof errorCode !== 'number') {\n return 'Error code is not a number';\n }\n switch (errorCode) {\n case context.NO_ERROR:\n return 'NO_ERROR';\n case context.INVALID_ENUM:\n return 'INVALID_ENUM';\n case context.INVALID_VALUE:\n return 'INVALID_VALUE';\n case context.INVALID_OPERATION:\n return 'INVALID_OPERATION';\n case context.INVALID_FRAMEBUFFER_OPERATION:\n return 'INVALID_FRAMEBUFFER_OPERATION';\n case context.OUT_OF_MEMORY:\n return 'OUT_OF_MEMORY';\n case context.CONTEXT_LOST_WEBGL:\n return 'CONTEXT_LOST_WEBGL';\n default:\n return 'UNKNOWN_ERROR';\n }\n },\n\n /**\n * Detach event listeners, remove references, and clean up caches.\n */\n dispose: function() {\n if (this.canvas) {\n this.canvas = null;\n this.gl = null;\n }\n this.clearWebGLCaches();\n },\n\n /**\n * Wipe out WebGL-related caches.\n */\n clearWebGLCaches: function() {\n this.programCache = {};\n this.textureCache = {};\n },\n\n /**\n * Create a WebGL texture object.\n *\n * Accepts specific dimensions to initialize the textuer to or a source image.\n *\n * @param {WebGLRenderingContext} gl The GL context to use for creating the texture.\n * @param {Number} width The width to initialize the texture at.\n * @param {Number} height The height to initialize the texture.\n * @param {HTMLImageElement|HTMLCanvasElement} textureImageSource A source for the texture data.\n * @returns {WebGLTexture}\n */\n createTexture: function(gl, width, height, textureImageSource) {\n var texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n if (textureImageSource) {\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, textureImageSource);\n }\n else {\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n }\n return texture;\n },\n\n /**\n * Can be optionally used to get a texture from the cache array\n *\n * If an existing texture is not found, a new texture is created and cached.\n *\n * @param {String} uniqueId A cache key to use to find an existing texture.\n * @param {HTMLImageElement|HTMLCanvasElement} textureImageSource A source to use to create the\n * texture cache entry if one does not already exist.\n */\n getCachedTexture: function(uniqueId, textureImageSource) {\n if (this.textureCache[uniqueId]) {\n return this.textureCache[uniqueId];\n }\n else {\n var texture = this.createTexture(\n this.gl, textureImageSource.width, textureImageSource.height, textureImageSource);\n this.textureCache[uniqueId] = texture;\n return texture;\n }\n },\n\n /**\n * Clear out cached resources related to a source image that has been\n * filtered previously.\n *\n * @param {String} cacheKey The cache key provided when the source image was filtered.\n */\n evictCachesForKey: function(cacheKey) {\n if (this.textureCache[cacheKey]) {\n this.gl.deleteTexture(this.textureCache[cacheKey]);\n delete this.textureCache[cacheKey];\n }\n },\n\n copyGLTo2D: copyGLTo2DDrawImage,\n\n /**\n * Attempt to extract GPU information strings from a WebGL context.\n *\n * Useful information when debugging or blacklisting specific GPUs.\n *\n * @returns {Object} A GPU info object with renderer and vendor strings.\n */\n captureGPUInfo: function() {\n if (this.gpuInfo) {\n return this.gpuInfo;\n }\n var gl = this.gl;\n var ext = gl.getExtension('WEBGL_debug_renderer_info');\n var gpuInfo = { renderer: '', vendor: '' };\n if (ext) {\n var renderer = gl.getParameter(ext.UNMASKED_RENDERER_WEBGL);\n var vendor = gl.getParameter(ext.UNMASKED_VENDOR_WEBGL);\n if (renderer) {\n gpuInfo.renderer = renderer.toLowerCase();\n }\n if (vendor) {\n gpuInfo.vendor = vendor.toLowerCase();\n }\n }\n this.gpuInfo = gpuInfo;\n return gpuInfo;\n },\n };\n})();\n\nfunction resizeCanvasIfNeeded(pipelineState) {\n var targetCanvas = pipelineState.targetCanvas,\n width = targetCanvas.width, height = targetCanvas.height,\n dWidth = pipelineState.destinationWidth,\n dHeight = pipelineState.destinationHeight;\n\n if (width !== dWidth || height !== dHeight) {\n targetCanvas.width = dWidth;\n targetCanvas.height = dHeight;\n }\n}\n\n/**\n * Copy an input WebGL canvas on to an output 2D canvas.\n *\n * The WebGL canvas is assumed to be upside down, with the top-left pixel of the\n * desired output image appearing in the bottom-left corner of the WebGL canvas.\n *\n * @param {WebGLRenderingContext} sourceContext The WebGL context to copy from.\n * @param {HTMLCanvasElement} targetCanvas The 2D target canvas to copy on to.\n * @param {Object} pipelineState The 2D target canvas to copy on to.\n */\nfunction copyGLTo2DDrawImage(gl, pipelineState) {\n var glCanvas = gl.canvas, targetCanvas = pipelineState.targetCanvas,\n ctx = targetCanvas.getContext('2d');\n ctx.translate(0, targetCanvas.height); // move it down again\n ctx.scale(1, -1); // vertical flip\n // where is my image on the big glcanvas?\n var sourceY = glCanvas.height - targetCanvas.height;\n ctx.drawImage(glCanvas, 0, sourceY, targetCanvas.width, targetCanvas.height, 0, 0,\n targetCanvas.width, targetCanvas.height);\n}\n\n/**\n * Copy an input WebGL canvas on to an output 2D canvas using 2d canvas' putImageData\n * API. Measurably faster than using ctx.drawImage in Firefox (version 54 on OSX Sierra).\n *\n * @param {WebGLRenderingContext} sourceContext The WebGL context to copy from.\n * @param {HTMLCanvasElement} targetCanvas The 2D target canvas to copy on to.\n * @param {Object} pipelineState The 2D target canvas to copy on to.\n */\nfunction copyGLTo2DPutImageData(gl, pipelineState) {\n var targetCanvas = pipelineState.targetCanvas, ctx = targetCanvas.getContext('2d'),\n dWidth = pipelineState.destinationWidth,\n dHeight = pipelineState.destinationHeight,\n numBytes = dWidth * dHeight * 4;\n\n // eslint-disable-next-line no-undef\n var u8 = new Uint8Array(this.imageBuffer, 0, numBytes);\n // eslint-disable-next-line no-undef\n var u8Clamped = new Uint8ClampedArray(this.imageBuffer, 0, numBytes);\n\n gl.readPixels(0, 0, dWidth, dHeight, gl.RGBA, gl.UNSIGNED_BYTE, u8);\n var imgData = new ImageData(u8Clamped, dWidth, dHeight);\n ctx.putImageData(imgData, 0, 0);\n}\n\n\n(function() {\n\n 'use strict';\n\n var noop = function() {};\n\n fabric.Canvas2dFilterBackend = Canvas2dFilterBackend;\n\n /**\n * Canvas 2D filter backend.\n */\n function Canvas2dFilterBackend() {};\n\n Canvas2dFilterBackend.prototype = /** @lends fabric.Canvas2dFilterBackend.prototype */ {\n evictCachesForKey: noop,\n dispose: noop,\n clearWebGLCaches: noop,\n\n /**\n * Experimental. This object is a sort of repository of help layers used to avoid\n * of recreating them during frequent filtering. If you are previewing a filter with\n * a slider you probably do not want to create help layers every filter step.\n * in this object there will be appended some canvases, created once, resized sometimes\n * cleared never. Clearing is left to the developer.\n **/\n resources: {\n\n },\n\n /**\n * Apply a set of filters against a source image and draw the filtered output\n * to the provided destination canvas.\n *\n * @param {EnhancedFilter} filters The filter to apply.\n * @param {HTMLImageElement|HTMLCanvasElement} sourceElement The source to be filtered.\n * @param {Number} sourceWidth The width of the source input.\n * @param {Number} sourceHeight The height of the source input.\n * @param {HTMLCanvasElement} targetCanvas The destination for filtered output to be drawn.\n */\n applyFilters: function(filters, sourceElement, sourceWidth, sourceHeight, targetCanvas) {\n var ctx = targetCanvas.getContext('2d');\n ctx.drawImage(sourceElement, 0, 0, sourceWidth, sourceHeight);\n var imageData = ctx.getImageData(0, 0, sourceWidth, sourceHeight);\n var originalImageData = ctx.getImageData(0, 0, sourceWidth, sourceHeight);\n var pipelineState = {\n sourceWidth: sourceWidth,\n sourceHeight: sourceHeight,\n imageData: imageData,\n originalEl: sourceElement,\n originalImageData: originalImageData,\n canvasEl: targetCanvas,\n ctx: ctx,\n filterBackend: this,\n };\n filters.forEach(function(filter) { filter.applyTo(pipelineState); });\n if (pipelineState.imageData.width !== sourceWidth || pipelineState.imageData.height !== sourceHeight) {\n targetCanvas.width = pipelineState.imageData.width;\n targetCanvas.height = pipelineState.imageData.height;\n }\n ctx.putImageData(pipelineState.imageData, 0, 0);\n return pipelineState;\n },\n\n };\n})();\n\n\n/**\n * @namespace fabric.Image.filters\n * @memberOf fabric.Image\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#image_filters}\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n */\nfabric.Image.filters = fabric.Image.filters || { };\n\n/**\n * Root filter class from which all filter classes inherit from\n * @class fabric.Image.filters.BaseFilter\n * @memberOf fabric.Image.filters\n */\nfabric.Image.filters.BaseFilter = fabric.util.createClass(/** @lends fabric.Image.filters.BaseFilter.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'BaseFilter',\n\n /**\n * Array of attributes to send with buffers. do not modify\n * @private\n */\n\n vertexSource: 'attribute vec2 aPosition;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vTexCoord = aPosition;\\n' +\n 'gl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\\n' +\n '}',\n\n fragmentSource: 'precision highp float;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'void main() {\\n' +\n 'gl_FragColor = texture2D(uTexture, vTexCoord);\\n' +\n '}',\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n */\n initialize: function(options) {\n if (options) {\n this.setOptions(options);\n }\n },\n\n /**\n * Sets filter's properties from options\n * @param {Object} [options] Options object\n */\n setOptions: function(options) {\n for (var prop in options) {\n this[prop] = options[prop];\n }\n },\n\n /**\n * Compile this filter's shader program.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context to use for shader compilation.\n * @param {String} fragmentSource fragmentShader source for compilation\n * @param {String} vertexSource vertexShader source for compilation\n */\n createProgram: function(gl, fragmentSource, vertexSource) {\n fragmentSource = fragmentSource || this.fragmentSource;\n vertexSource = vertexSource || this.vertexSource;\n if (fabric.webGlPrecision !== 'highp'){\n fragmentSource = fragmentSource.replace(\n /precision highp float/g,\n 'precision ' + fabric.webGlPrecision + ' float'\n );\n }\n var vertexShader = gl.createShader(gl.VERTEX_SHADER);\n gl.shaderSource(vertexShader, vertexSource);\n gl.compileShader(vertexShader);\n if (!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS)) {\n throw new Error(\n // eslint-disable-next-line prefer-template\n 'Vertex shader compile error for ' + this.type + ': ' +\n gl.getShaderInfoLog(vertexShader)\n );\n }\n\n var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);\n gl.shaderSource(fragmentShader, fragmentSource);\n gl.compileShader(fragmentShader);\n if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {\n throw new Error(\n // eslint-disable-next-line prefer-template\n 'Fragment shader compile error for ' + this.type + ': ' +\n gl.getShaderInfoLog(fragmentShader)\n );\n }\n\n var program = gl.createProgram();\n gl.attachShader(program, vertexShader);\n gl.attachShader(program, fragmentShader);\n gl.linkProgram(program);\n if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n throw new Error(\n // eslint-disable-next-line prefer-template\n 'Shader link error for \"${this.type}\" ' +\n gl.getProgramInfoLog(program)\n );\n }\n\n var attributeLocations = this.getAttributeLocations(gl, program);\n var uniformLocations = this.getUniformLocations(gl, program) || { };\n uniformLocations.uStepW = gl.getUniformLocation(program, 'uStepW');\n uniformLocations.uStepH = gl.getUniformLocation(program, 'uStepH');\n return {\n program: program,\n attributeLocations: attributeLocations,\n uniformLocations: uniformLocations\n };\n },\n\n /**\n * Return a map of attribute names to WebGLAttributeLocation objects.\n *\n * @param {WebGLRenderingContext} gl The canvas context used to compile the shader program.\n * @param {WebGLShaderProgram} program The shader program from which to take attribute locations.\n * @returns {Object} A map of attribute names to attribute locations.\n */\n getAttributeLocations: function(gl, program) {\n return {\n aPosition: gl.getAttribLocation(program, 'aPosition'),\n };\n },\n\n /**\n * Return a map of uniform names to WebGLUniformLocation objects.\n *\n * Intended to be overridden by subclasses.\n *\n * @param {WebGLRenderingContext} gl The canvas context used to compile the shader program.\n * @param {WebGLShaderProgram} program The shader program from which to take uniform locations.\n * @returns {Object} A map of uniform names to uniform locations.\n */\n getUniformLocations: function (/* gl, program */) {\n // in case i do not need any special uniform i need to return an empty object\n return { };\n },\n\n /**\n * Send attribute data from this filter to its shader program on the GPU.\n *\n * @param {WebGLRenderingContext} gl The canvas context used to compile the shader program.\n * @param {Object} attributeLocations A map of shader attribute names to their locations.\n */\n sendAttributeData: function(gl, attributeLocations, aPositionData) {\n var attributeLocation = attributeLocations.aPosition;\n var buffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n gl.enableVertexAttribArray(attributeLocation);\n gl.vertexAttribPointer(attributeLocation, 2, gl.FLOAT, false, 0, 0);\n gl.bufferData(gl.ARRAY_BUFFER, aPositionData, gl.STATIC_DRAW);\n },\n\n _setupFrameBuffer: function(options) {\n var gl = options.context, width, height;\n if (options.passes > 1) {\n width = options.destinationWidth;\n height = options.destinationHeight;\n if (options.sourceWidth !== width || options.sourceHeight !== height) {\n gl.deleteTexture(options.targetTexture);\n options.targetTexture = options.filterBackend.createTexture(gl, width, height);\n }\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D,\n options.targetTexture, 0);\n }\n else {\n // draw last filter on canvas and not to framebuffer.\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n gl.finish();\n }\n },\n\n _swapTextures: function(options) {\n options.passes--;\n options.pass++;\n var temp = options.targetTexture;\n options.targetTexture = options.sourceTexture;\n options.sourceTexture = temp;\n },\n\n /**\n * Generic isNeutral implementation for one parameter based filters.\n * Used only in image applyFilters to discard filters that will not have an effect\n * on the image\n * Other filters may need their own verison ( ColorMatrix, HueRotation, gamma, ComposedFilter )\n * @param {Object} options\n **/\n isNeutralState: function(/* options */) {\n var main = this.mainParameter,\n _class = fabric.Image.filters[this.type].prototype;\n if (main) {\n if (Array.isArray(_class[main])) {\n for (var i = _class[main].length; i--;) {\n if (this[main][i] !== _class[main][i]) {\n return false;\n }\n }\n return true;\n }\n else {\n return _class[main] === this[main];\n }\n }\n else {\n return false;\n }\n },\n\n /**\n * Apply this filter to the input image data provided.\n *\n * Determines whether to use WebGL or Canvas2D based on the options.webgl flag.\n *\n * @param {Object} options\n * @param {Number} options.passes The number of filters remaining to be executed\n * @param {Boolean} options.webgl Whether to use webgl to render the filter.\n * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered.\n * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn.\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n applyTo: function(options) {\n if (options.webgl) {\n this._setupFrameBuffer(options);\n this.applyToWebGL(options);\n this._swapTextures(options);\n }\n else {\n this.applyTo2d(options);\n }\n },\n\n /**\n * Retrieves the cached shader.\n * @param {Object} options\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n retrieveShader: function(options) {\n if (!options.programCache.hasOwnProperty(this.type)) {\n options.programCache[this.type] = this.createProgram(options.context);\n }\n return options.programCache[this.type];\n },\n\n /**\n * Apply this filter using webgl.\n *\n * @param {Object} options\n * @param {Number} options.passes The number of filters remaining to be executed\n * @param {Boolean} options.webgl Whether to use webgl to render the filter.\n * @param {WebGLTexture} options.originalTexture The texture of the original input image.\n * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered.\n * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn.\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n applyToWebGL: function(options) {\n var gl = options.context;\n var shader = this.retrieveShader(options);\n if (options.pass === 0 && options.originalTexture) {\n gl.bindTexture(gl.TEXTURE_2D, options.originalTexture);\n }\n else {\n gl.bindTexture(gl.TEXTURE_2D, options.sourceTexture);\n }\n gl.useProgram(shader.program);\n this.sendAttributeData(gl, shader.attributeLocations, options.aPosition);\n\n gl.uniform1f(shader.uniformLocations.uStepW, 1 / options.sourceWidth);\n gl.uniform1f(shader.uniformLocations.uStepH, 1 / options.sourceHeight);\n\n this.sendUniformData(gl, shader.uniformLocations);\n gl.viewport(0, 0, options.destinationWidth, options.destinationHeight);\n gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);\n },\n\n bindAdditionalTexture: function(gl, texture, textureUnit) {\n gl.activeTexture(textureUnit);\n gl.bindTexture(gl.TEXTURE_2D, texture);\n // reset active texture to 0 as usual\n gl.activeTexture(gl.TEXTURE0);\n },\n\n unbindAdditionalTexture: function(gl, textureUnit) {\n gl.activeTexture(textureUnit);\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.activeTexture(gl.TEXTURE0);\n },\n\n getMainParameter: function() {\n return this[this.mainParameter];\n },\n\n setMainParameter: function(value) {\n this[this.mainParameter] = value;\n },\n\n /**\n * Send uniform data from this filter to its shader program on the GPU.\n *\n * Intended to be overridden by subclasses.\n *\n * @param {WebGLRenderingContext} gl The canvas context used to compile the shader program.\n * @param {Object} uniformLocations A map of shader uniform names to their locations.\n */\n sendUniformData: function(/* gl, uniformLocations */) {\n // Intentionally left blank. Override me in subclasses.\n },\n\n /**\n * If needed by a 2d filter, this functions can create an helper canvas to be used\n * remember that options.targetCanvas is available for use till end of chain.\n */\n createHelpLayer: function(options) {\n if (!options.helpLayer) {\n var helpLayer = document.createElement('canvas');\n helpLayer.width = options.sourceWidth;\n helpLayer.height = options.sourceHeight;\n options.helpLayer = helpLayer;\n }\n },\n\n /**\n * Returns object representation of an instance\n * @return {Object} Object representation of an instance\n */\n toObject: function() {\n var object = { type: this.type }, mainP = this.mainParameter;\n if (mainP) {\n object[mainP] = this[mainP];\n }\n return object;\n },\n\n /**\n * Returns a JSON representation of an instance\n * @return {Object} JSON\n */\n toJSON: function() {\n // delegate, not alias\n return this.toObject();\n }\n});\n\nfabric.Image.filters.BaseFilter.fromObject = function(object, callback) {\n var filter = new fabric.Image.filters[object.type](object);\n callback && callback(filter);\n return filter;\n};\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Color Matrix filter class\n * @class fabric.Image.filters.ColorMatrix\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.ColorMatrix#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @see {@Link http://www.webwasp.co.uk/tutorials/219/Color_Matrix_Filter.php}\n * @see {@Link http://phoboslab.org/log/2013/11/fast-image-filters-with-webgl}\n * @example Kodachrome filter\n * var filter = new fabric.Image.filters.ColorMatrix({\n * matrix: [\n 1.1285582396593525, -0.3967382283601348, -0.03992559172921793, 0, 63.72958762196502,\n -0.16404339962244616, 1.0835251566291304, -0.05498805115633132, 0, 24.732407896706203,\n -0.16786010706155763, -0.5603416277695248, 1.6014850761964943, 0, 35.62982807460946,\n 0, 0, 0, 1, 0\n ]\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.ColorMatrix = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.ColorMatrix.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'ColorMatrix',\n\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'uniform mat4 uColorMatrix;\\n' +\n 'uniform vec4 uConstants;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'color *= uColorMatrix;\\n' +\n 'color += uConstants;\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n\n /**\n * Colormatrix for pixels.\n * array of 20 floats. Numbers in positions 4, 9, 14, 19 loose meaning\n * outside the -1, 1 range.\n * 0.0039215686 is the part of 1 that get translated to 1 in 2d\n * @param {Array} matrix array of 20 numbers.\n * @default\n */\n matrix: [\n 1, 0, 0, 0, 0,\n 0, 1, 0, 0, 0,\n 0, 0, 1, 0, 0,\n 0, 0, 0, 1, 0\n ],\n\n mainParameter: 'matrix',\n\n /**\n * Lock the colormatrix on the color part, skipping alpha, manly for non webgl scenario\n * to save some calculation\n */\n colorsOnly: true,\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n */\n initialize: function(options) {\n this.callSuper('initialize', options);\n // create a new array instead mutating the prototype with push\n this.matrix = this.matrix.slice(0);\n },\n\n /**\n * Apply the ColorMatrix operation to a Uint8Array representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8Array to be filtered.\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n data = imageData.data,\n iLen = data.length,\n m = this.matrix,\n r, g, b, a, i, colorsOnly = this.colorsOnly;\n\n for (i = 0; i < iLen; i += 4) {\n r = data[i];\n g = data[i + 1];\n b = data[i + 2];\n if (colorsOnly) {\n data[i] = r * m[0] + g * m[1] + b * m[2] + m[4] * 255;\n data[i + 1] = r * m[5] + g * m[6] + b * m[7] + m[9] * 255;\n data[i + 2] = r * m[10] + g * m[11] + b * m[12] + m[14] * 255;\n }\n else {\n a = data[i + 3];\n data[i] = r * m[0] + g * m[1] + b * m[2] + a * m[3] + m[4] * 255;\n data[i + 1] = r * m[5] + g * m[6] + b * m[7] + a * m[8] + m[9] * 255;\n data[i + 2] = r * m[10] + g * m[11] + b * m[12] + a * m[13] + m[14] * 255;\n data[i + 3] = r * m[15] + g * m[16] + b * m[17] + a * m[18] + m[19] * 255;\n }\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uColorMatrix: gl.getUniformLocation(program, 'uColorMatrix'),\n uConstants: gl.getUniformLocation(program, 'uConstants'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n var m = this.matrix,\n matrix = [\n m[0], m[1], m[2], m[3],\n m[5], m[6], m[7], m[8],\n m[10], m[11], m[12], m[13],\n m[15], m[16], m[17], m[18]\n ],\n constants = [m[4], m[9], m[14], m[19]];\n gl.uniformMatrix4fv(uniformLocations.uColorMatrix, false, matrix);\n gl.uniform4fv(uniformLocations.uConstants, constants);\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] function to invoke after filter creation\n * @return {fabric.Image.filters.ColorMatrix} Instance of fabric.Image.filters.ColorMatrix\n */\n fabric.Image.filters.ColorMatrix.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Brightness filter class\n * @class fabric.Image.filters.Brightness\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Brightness#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Brightness({\n * brightness: 0.05\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.Brightness = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Brightness.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Brightness',\n\n /**\n * Fragment source for the brightness program\n */\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uBrightness;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'color.rgb += uBrightness;\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n\n /**\n * Brightness value, from -1 to 1.\n * translated to -255 to 255 for 2d\n * 0.0039215686 is the part of 1 that get translated to 1 in 2d\n * @param {Number} brightness\n * @default\n */\n brightness: 0,\n\n /**\n * Describe the property that is the filter parameter\n * @param {String} m\n * @default\n */\n mainParameter: 'brightness',\n\n /**\n * Apply the Brightness operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d: function(options) {\n if (this.brightness === 0) {\n return;\n }\n var imageData = options.imageData,\n data = imageData.data, i, len = data.length,\n brightness = Math.round(this.brightness * 255);\n for (i = 0; i < len; i += 4) {\n data[i] = data[i] + brightness;\n data[i + 1] = data[i + 1] + brightness;\n data[i + 2] = data[i + 2] + brightness;\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uBrightness: gl.getUniformLocation(program, 'uBrightness'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform1f(uniformLocations.uBrightness, this.brightness);\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Brightness} Instance of fabric.Image.filters.Brightness\n */\n fabric.Image.filters.Brightness.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend,\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Adapted from html5rocks article\n * @class fabric.Image.filters.Convolute\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Convolute#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example Sharpen filter\n * var filter = new fabric.Image.filters.Convolute({\n * matrix: [ 0, -1, 0,\n * -1, 5, -1,\n * 0, -1, 0 ]\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n * @example Blur filter\n * var filter = new fabric.Image.filters.Convolute({\n * matrix: [ 1/9, 1/9, 1/9,\n * 1/9, 1/9, 1/9,\n * 1/9, 1/9, 1/9 ]\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n * @example Emboss filter\n * var filter = new fabric.Image.filters.Convolute({\n * matrix: [ 1, 1, 1,\n * 1, 0.7, -1,\n * -1, -1, -1 ]\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n * @example Emboss filter with opaqueness\n * var filter = new fabric.Image.filters.Convolute({\n * opaque: true,\n * matrix: [ 1, 1, 1,\n * 1, 0.7, -1,\n * -1, -1, -1 ]\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\n filters.Convolute = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Convolute.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Convolute',\n\n /*\n * Opaque value (true/false)\n */\n opaque: false,\n\n /*\n * matrix for the filter, max 9x9\n */\n matrix: [0, 0, 0, 0, 1, 0, 0, 0, 0],\n\n /**\n * Fragment source for the brightness program\n */\n fragmentSource: {\n Convolute_3_1: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uMatrix[9];\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0, 0, 0, 0);\\n' +\n 'for (float h = 0.0; h < 3.0; h+=1.0) {\\n' +\n 'for (float w = 0.0; w < 3.0; w+=1.0) {\\n' +\n 'vec2 matrixPos = vec2(uStepW * (w - 1), uStepH * (h - 1));\\n' +\n 'color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 3.0 + w)];\\n' +\n '}\\n' +\n '}\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n Convolute_3_0: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uMatrix[9];\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0, 0, 0, 1);\\n' +\n 'for (float h = 0.0; h < 3.0; h+=1.0) {\\n' +\n 'for (float w = 0.0; w < 3.0; w+=1.0) {\\n' +\n 'vec2 matrixPos = vec2(uStepW * (w - 1.0), uStepH * (h - 1.0));\\n' +\n 'color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 3.0 + w)];\\n' +\n '}\\n' +\n '}\\n' +\n 'float alpha = texture2D(uTexture, vTexCoord).a;\\n' +\n 'gl_FragColor = color;\\n' +\n 'gl_FragColor.a = alpha;\\n' +\n '}',\n Convolute_5_1: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uMatrix[25];\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0, 0, 0, 0);\\n' +\n 'for (float h = 0.0; h < 5.0; h+=1.0) {\\n' +\n 'for (float w = 0.0; w < 5.0; w+=1.0) {\\n' +\n 'vec2 matrixPos = vec2(uStepW * (w - 2.0), uStepH * (h - 2.0));\\n' +\n 'color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 5.0 + w)];\\n' +\n '}\\n' +\n '}\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n Convolute_5_0: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uMatrix[25];\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0, 0, 0, 1);\\n' +\n 'for (float h = 0.0; h < 5.0; h+=1.0) {\\n' +\n 'for (float w = 0.0; w < 5.0; w+=1.0) {\\n' +\n 'vec2 matrixPos = vec2(uStepW * (w - 2.0), uStepH * (h - 2.0));\\n' +\n 'color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 5.0 + w)];\\n' +\n '}\\n' +\n '}\\n' +\n 'float alpha = texture2D(uTexture, vTexCoord).a;\\n' +\n 'gl_FragColor = color;\\n' +\n 'gl_FragColor.a = alpha;\\n' +\n '}',\n Convolute_7_1: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uMatrix[49];\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0, 0, 0, 0);\\n' +\n 'for (float h = 0.0; h < 7.0; h+=1.0) {\\n' +\n 'for (float w = 0.0; w < 7.0; w+=1.0) {\\n' +\n 'vec2 matrixPos = vec2(uStepW * (w - 3.0), uStepH * (h - 3.0));\\n' +\n 'color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 7.0 + w)];\\n' +\n '}\\n' +\n '}\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n Convolute_7_0: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uMatrix[49];\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0, 0, 0, 1);\\n' +\n 'for (float h = 0.0; h < 7.0; h+=1.0) {\\n' +\n 'for (float w = 0.0; w < 7.0; w+=1.0) {\\n' +\n 'vec2 matrixPos = vec2(uStepW * (w - 3.0), uStepH * (h - 3.0));\\n' +\n 'color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 7.0 + w)];\\n' +\n '}\\n' +\n '}\\n' +\n 'float alpha = texture2D(uTexture, vTexCoord).a;\\n' +\n 'gl_FragColor = color;\\n' +\n 'gl_FragColor.a = alpha;\\n' +\n '}',\n Convolute_9_1: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uMatrix[81];\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0, 0, 0, 0);\\n' +\n 'for (float h = 0.0; h < 9.0; h+=1.0) {\\n' +\n 'for (float w = 0.0; w < 9.0; w+=1.0) {\\n' +\n 'vec2 matrixPos = vec2(uStepW * (w - 4.0), uStepH * (h - 4.0));\\n' +\n 'color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 9.0 + w)];\\n' +\n '}\\n' +\n '}\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n Convolute_9_0: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uMatrix[81];\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0, 0, 0, 1);\\n' +\n 'for (float h = 0.0; h < 9.0; h+=1.0) {\\n' +\n 'for (float w = 0.0; w < 9.0; w+=1.0) {\\n' +\n 'vec2 matrixPos = vec2(uStepW * (w - 4.0), uStepH * (h - 4.0));\\n' +\n 'color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 9.0 + w)];\\n' +\n '}\\n' +\n '}\\n' +\n 'float alpha = texture2D(uTexture, vTexCoord).a;\\n' +\n 'gl_FragColor = color;\\n' +\n 'gl_FragColor.a = alpha;\\n' +\n '}',\n },\n\n /**\n * Constructor\n * @memberOf fabric.Image.filters.Convolute.prototype\n * @param {Object} [options] Options object\n * @param {Boolean} [options.opaque=false] Opaque value (true/false)\n * @param {Array} [options.matrix] Filter matrix\n */\n\n\n /**\n * Retrieves the cached shader.\n * @param {Object} options\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n retrieveShader: function(options) {\n var size = Math.sqrt(this.matrix.length);\n var cacheKey = this.type + '_' + size + '_' + (this.opaque ? 1 : 0);\n var shaderSource = this.fragmentSource[cacheKey];\n if (!options.programCache.hasOwnProperty(cacheKey)) {\n options.programCache[cacheKey] = this.createProgram(options.context, shaderSource);\n }\n return options.programCache[cacheKey];\n },\n\n /**\n * Apply the Brightness operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n data = imageData.data,\n weights = this.matrix,\n side = Math.round(Math.sqrt(weights.length)),\n halfSide = Math.floor(side / 2),\n sw = imageData.width,\n sh = imageData.height,\n output = options.ctx.createImageData(sw, sh),\n dst = output.data,\n // go through the destination image pixels\n alphaFac = this.opaque ? 1 : 0,\n r, g, b, a, dstOff,\n scx, scy, srcOff, wt,\n x, y, cx, cy;\n\n for (y = 0; y < sh; y++) {\n for (x = 0; x < sw; x++) {\n dstOff = (y * sw + x) * 4;\n // calculate the weighed sum of the source image pixels that\n // fall under the convolution matrix\n r = 0; g = 0; b = 0; a = 0;\n\n for (cy = 0; cy < side; cy++) {\n for (cx = 0; cx < side; cx++) {\n scy = y + cy - halfSide;\n scx = x + cx - halfSide;\n\n // eslint-disable-next-line max-depth\n if (scy < 0 || scy > sh || scx < 0 || scx > sw) {\n continue;\n }\n\n srcOff = (scy * sw + scx) * 4;\n wt = weights[cy * side + cx];\n\n r += data[srcOff] * wt;\n g += data[srcOff + 1] * wt;\n b += data[srcOff + 2] * wt;\n // eslint-disable-next-line max-depth\n if (!alphaFac) {\n a += data[srcOff + 3] * wt;\n }\n }\n }\n dst[dstOff] = r;\n dst[dstOff + 1] = g;\n dst[dstOff + 2] = b;\n if (!alphaFac) {\n dst[dstOff + 3] = a;\n }\n else {\n dst[dstOff + 3] = data[dstOff + 3];\n }\n }\n }\n options.imageData = output;\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uMatrix: gl.getUniformLocation(program, 'uMatrix'),\n uOpaque: gl.getUniformLocation(program, 'uOpaque'),\n uHalfSize: gl.getUniformLocation(program, 'uHalfSize'),\n uSize: gl.getUniformLocation(program, 'uSize'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform1fv(uniformLocations.uMatrix, this.matrix);\n },\n\n /**\n * Returns object representation of an instance\n * @return {Object} Object representation of an instance\n */\n toObject: function() {\n return extend(this.callSuper('toObject'), {\n opaque: this.opaque,\n matrix: this.matrix\n });\n }\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Convolute} Instance of fabric.Image.filters.Convolute\n */\n fabric.Image.filters.Convolute.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Grayscale image filter class\n * @class fabric.Image.filters.Grayscale\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Grayscale();\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.Grayscale = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Grayscale.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Grayscale',\n\n fragmentSource: {\n average: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'float average = (color.r + color.b + color.g) / 3.0;\\n' +\n 'gl_FragColor = vec4(average, average, average, color.a);\\n' +\n '}',\n lightness: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform int uMode;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 col = texture2D(uTexture, vTexCoord);\\n' +\n 'float average = (max(max(col.r, col.g),col.b) + min(min(col.r, col.g),col.b)) / 2.0;\\n' +\n 'gl_FragColor = vec4(average, average, average, col.a);\\n' +\n '}',\n luminosity: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform int uMode;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 col = texture2D(uTexture, vTexCoord);\\n' +\n 'float average = 0.21 * col.r + 0.72 * col.g + 0.07 * col.b;\\n' +\n 'gl_FragColor = vec4(average, average, average, col.a);\\n' +\n '}',\n },\n\n\n /**\n * Grayscale mode, between 'average', 'lightness', 'luminosity'\n * @param {String} type\n * @default\n */\n mode: 'average',\n\n mainParameter: 'mode',\n\n /**\n * Apply the Grayscale operation to a Uint8Array representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8Array to be filtered.\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n data = imageData.data, i,\n len = data.length, value,\n mode = this.mode;\n for (i = 0; i < len; i += 4) {\n if (mode === 'average') {\n value = (data[i] + data[i + 1] + data[i + 2]) / 3;\n }\n else if (mode === 'lightness') {\n value = (Math.min(data[i], data[i + 1], data[i + 2]) +\n Math.max(data[i], data[i + 1], data[i + 2])) / 2;\n }\n else if (mode === 'luminosity') {\n value = 0.21 * data[i] + 0.72 * data[i + 1] + 0.07 * data[i + 2];\n }\n data[i] = value;\n data[i + 1] = value;\n data[i + 2] = value;\n }\n },\n\n /**\n * Retrieves the cached shader.\n * @param {Object} options\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n retrieveShader: function(options) {\n var cacheKey = this.type + '_' + this.mode;\n if (!options.programCache.hasOwnProperty(cacheKey)) {\n var shaderSource = this.fragmentSource[this.mode];\n options.programCache[cacheKey] = this.createProgram(options.context, shaderSource);\n }\n return options.programCache[cacheKey];\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uMode: gl.getUniformLocation(program, 'uMode'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n // default average mode.\n var mode = 1;\n gl.uniform1i(uniformLocations.uMode, mode);\n },\n\n /**\n * Grayscale filter isNeutralState implementation\n * The filter is never neutral\n * on the image\n **/\n isNeutralState: function() {\n return false;\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Grayscale} Instance of fabric.Image.filters.Grayscale\n */\n fabric.Image.filters.Grayscale.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Invert filter class\n * @class fabric.Image.filters.Invert\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Invert();\n * object.filters.push(filter);\n * object.applyFilters(canvas.renderAll.bind(canvas));\n */\n filters.Invert = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Invert.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Invert',\n\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform int uInvert;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'if (uInvert == 1) {\\n' +\n 'gl_FragColor = vec4(1.0 - color.r,1.0 -color.g,1.0 -color.b,color.a);\\n' +\n '} else {\\n' +\n 'gl_FragColor = color;\\n' +\n '}\\n' +\n '}',\n\n /**\n * Filter invert. if false, does nothing\n * @param {Boolean} invert\n * @default\n */\n invert: true,\n\n mainParameter: 'invert',\n\n /**\n * Apply the Invert operation to a Uint8Array representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8Array to be filtered.\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n data = imageData.data, i,\n len = data.length;\n for (i = 0; i < len; i += 4) {\n data[i] = 255 - data[i];\n data[i + 1] = 255 - data[i + 1];\n data[i + 2] = 255 - data[i + 2];\n }\n },\n\n /**\n * Invert filter isNeutralState implementation\n * Used only in image applyFilters to discard filters that will not have an effect\n * on the image\n * @param {Object} options\n **/\n isNeutralState: function() {\n return !this.invert;\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uInvert: gl.getUniformLocation(program, 'uInvert'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform1i(uniformLocations.uInvert, this.invert);\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Invert} Instance of fabric.Image.filters.Invert\n */\n fabric.Image.filters.Invert.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend,\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Noise filter class\n * @class fabric.Image.filters.Noise\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Noise#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Noise({\n * noise: 700\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\n filters.Noise = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Noise.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Noise',\n\n /**\n * Fragment source for the noise program\n */\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uStepH;\\n' +\n 'uniform float uNoise;\\n' +\n 'uniform float uSeed;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'float rand(vec2 co, float seed, float vScale) {\\n' +\n 'return fract(sin(dot(co.xy * vScale ,vec2(12.9898 , 78.233))) * 43758.5453 * (seed + 0.01) / 2.0);\\n' +\n '}\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'color.rgb += (0.5 - rand(vTexCoord, uSeed, 0.1 / uStepH)) * uNoise;\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n\n /**\n * Describe the property that is the filter parameter\n * @param {String} m\n * @default\n */\n mainParameter: 'noise',\n\n /**\n * Noise value, from\n * @param {Number} noise\n * @default\n */\n noise: 0,\n\n /**\n * Apply the Brightness operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d: function(options) {\n if (this.noise === 0) {\n return;\n }\n var imageData = options.imageData,\n data = imageData.data, i, len = data.length,\n noise = this.noise, rand;\n\n for (i = 0, len = data.length; i < len; i += 4) {\n\n rand = (0.5 - Math.random()) * noise;\n\n data[i] += rand;\n data[i + 1] += rand;\n data[i + 2] += rand;\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uNoise: gl.getUniformLocation(program, 'uNoise'),\n uSeed: gl.getUniformLocation(program, 'uSeed'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform1f(uniformLocations.uNoise, this.noise / 255);\n gl.uniform1f(uniformLocations.uSeed, Math.random());\n },\n\n /**\n * Returns object representation of an instance\n * @return {Object} Object representation of an instance\n */\n toObject: function() {\n return extend(this.callSuper('toObject'), {\n noise: this.noise\n });\n }\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Noise} Instance of fabric.Image.filters.Noise\n */\n fabric.Image.filters.Noise.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Pixelate filter class\n * @class fabric.Image.filters.Pixelate\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Pixelate#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Pixelate({\n * blocksize: 8\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.Pixelate = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Pixelate.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Pixelate',\n\n blocksize: 4,\n\n mainParameter: 'blocksize',\n\n /**\n * Fragment source for the Pixelate program\n */\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uBlocksize;\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'float blockW = uBlocksize * uStepW;\\n' +\n 'float blockH = uBlocksize * uStepW;\\n' +\n 'int posX = int(vTexCoord.x / blockW);\\n' +\n 'int posY = int(vTexCoord.y / blockH);\\n' +\n 'float fposX = float(posX);\\n' +\n 'float fposY = float(posY);\\n' +\n 'vec2 squareCoords = vec2(fposX * blockW, fposY * blockH);\\n' +\n 'vec4 color = texture2D(uTexture, squareCoords);\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n\n /**\n * Apply the Pixelate operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n data = imageData.data,\n iLen = imageData.height,\n jLen = imageData.width,\n index, i, j, r, g, b, a,\n _i, _j, _iLen, _jLen;\n\n for (i = 0; i < iLen; i += this.blocksize) {\n for (j = 0; j < jLen; j += this.blocksize) {\n\n index = (i * 4) * jLen + (j * 4);\n\n r = data[index];\n g = data[index + 1];\n b = data[index + 2];\n a = data[index + 3];\n\n _iLen = Math.min(i + this.blocksize, iLen);\n _jLen = Math.min(j + this.blocksize, jLen);\n for (_i = i; _i < _iLen; _i++) {\n for (_j = j; _j < _jLen; _j++) {\n index = (_i * 4) * jLen + (_j * 4);\n data[index] = r;\n data[index + 1] = g;\n data[index + 2] = b;\n data[index + 3] = a;\n }\n }\n }\n }\n },\n\n /**\n * Indicate when the filter is not gonna apply changes to the image\n **/\n isNeutralState: function() {\n return this.blocksize === 1;\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uBlocksize: gl.getUniformLocation(program, 'uBlocksize'),\n uStepW: gl.getUniformLocation(program, 'uStepW'),\n uStepH: gl.getUniformLocation(program, 'uStepH'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform1f(uniformLocations.uBlocksize, this.blocksize);\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Pixelate} Instance of fabric.Image.filters.Pixelate\n */\n fabric.Image.filters.Pixelate.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend,\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Remove white filter class\n * @class fabric.Image.filters.RemoveColor\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.RemoveColor#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.RemoveColor({\n * threshold: 0.2,\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\n filters.RemoveColor = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.RemoveColor.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'RemoveColor',\n\n /**\n * Color to remove, in any format understood by fabric.Color.\n * @param {String} type\n * @default\n */\n color: '#FFFFFF',\n\n /**\n * Fragment source for the brightness program\n */\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform vec4 uLow;\\n' +\n 'uniform vec4 uHigh;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'gl_FragColor = texture2D(uTexture, vTexCoord);\\n' +\n 'if(all(greaterThan(gl_FragColor.rgb,uLow.rgb)) && all(greaterThan(uHigh.rgb,gl_FragColor.rgb))) {\\n' +\n 'gl_FragColor.a = 0.0;\\n' +\n '}\\n' +\n '}',\n\n /**\n * distance to actual color, as value up or down from each r,g,b\n * between 0 and 1\n **/\n distance: 0.02,\n\n /**\n * For color to remove inside distance, use alpha channel for a smoother deletion\n * NOT IMPLEMENTED YET\n **/\n useAlpha: false,\n\n /**\n * Constructor\n * @memberOf fabric.Image.filters.RemoveWhite.prototype\n * @param {Object} [options] Options object\n * @param {Number} [options.color=#RRGGBB] Threshold value\n * @param {Number} [options.distance=10] Distance value\n */\n\n /**\n * Applies filter to canvas element\n * @param {Object} canvasEl Canvas element to apply filter to\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n data = imageData.data, i,\n distance = this.distance * 255,\n r, g, b,\n source = new fabric.Color(this.color).getSource(),\n lowC = [\n source[0] - distance,\n source[1] - distance,\n source[2] - distance,\n ],\n highC = [\n source[0] + distance,\n source[1] + distance,\n source[2] + distance,\n ];\n\n\n for (i = 0; i < data.length; i += 4) {\n r = data[i];\n g = data[i + 1];\n b = data[i + 2];\n\n if (r > lowC[0] &&\n g > lowC[1] &&\n b > lowC[2] &&\n r < highC[0] &&\n g < highC[1] &&\n b < highC[2]) {\n data[i + 3] = 0;\n }\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uLow: gl.getUniformLocation(program, 'uLow'),\n uHigh: gl.getUniformLocation(program, 'uHigh'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n var source = new fabric.Color(this.color).getSource(),\n distance = parseFloat(this.distance),\n lowC = [\n 0 + source[0] / 255 - distance,\n 0 + source[1] / 255 - distance,\n 0 + source[2] / 255 - distance,\n 1\n ],\n highC = [\n source[0] / 255 + distance,\n source[1] / 255 + distance,\n source[2] / 255 + distance,\n 1\n ];\n gl.uniform4fv(uniformLocations.uLow, lowC);\n gl.uniform4fv(uniformLocations.uHigh, highC);\n },\n\n /**\n * Returns object representation of an instance\n * @return {Object} Object representation of an instance\n */\n toObject: function() {\n return extend(this.callSuper('toObject'), {\n color: this.color,\n distance: this.distance\n });\n }\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.RemoveColor} Instance of fabric.Image.filters.RemoveWhite\n */\n fabric.Image.filters.RemoveColor.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n var matrices = {\n Brownie: [\n 0.59970,0.34553,-0.27082,0,0.186,\n -0.03770,0.86095,0.15059,0,-0.1449,\n 0.24113,-0.07441,0.44972,0,-0.02965,\n 0,0,0,1,0\n ],\n Vintage: [\n 0.62793,0.32021,-0.03965,0,0.03784,\n 0.02578,0.64411,0.03259,0,0.02926,\n 0.04660,-0.08512,0.52416,0,0.02023,\n 0,0,0,1,0\n ],\n Kodachrome: [\n 1.12855,-0.39673,-0.03992,0,0.24991,\n -0.16404,1.08352,-0.05498,0,0.09698,\n -0.16786,-0.56034,1.60148,0,0.13972,\n 0,0,0,1,0\n ],\n Technicolor: [\n 1.91252,-0.85453,-0.09155,0,0.04624,\n -0.30878,1.76589,-0.10601,0,-0.27589,\n -0.23110,-0.75018,1.84759,0,0.12137,\n 0,0,0,1,0\n ],\n Polaroid: [\n 1.438,-0.062,-0.062,0,0,\n -0.122,1.378,-0.122,0,0,\n -0.016,-0.016,1.483,0,0,\n 0,0,0,1,0\n ],\n Sepia: [\n 0.393, 0.769, 0.189, 0, 0,\n 0.349, 0.686, 0.168, 0, 0,\n 0.272, 0.534, 0.131, 0, 0,\n 0, 0, 0, 1, 0\n ],\n BlackWhite: [\n 1.5, 1.5, 1.5, 0, -1,\n 1.5, 1.5, 1.5, 0, -1,\n 1.5, 1.5, 1.5, 0, -1,\n 0, 0, 0, 1, 0,\n ]\n };\n\n for (var key in matrices) {\n filters[key] = createClass(filters.ColorMatrix, /** @lends fabric.Image.filters.Sepia.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: key,\n\n /**\n * Colormatrix for the effect\n * array of 20 floats. Numbers in positions 4, 9, 14, 19 loose meaning\n * outside the -1, 1 range.\n * @param {Array} matrix array of 20 numbers.\n * @default\n */\n matrix: matrices[key],\n\n /**\n * Lock the matrix export for this kind of static, parameter less filters.\n */\n mainParameter: false,\n /**\n * Lock the colormatrix on the color part, skipping alpha\n */\n colorsOnly: true,\n\n });\n fabric.Image.filters[key].fromObject = fabric.Image.filters.BaseFilter.fromObject;\n }\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n 'use strict';\n\n var fabric = global.fabric,\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Color Blend filter class\n * @class fabric.Image.filter.BlendColor\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @example\n * var filter = new fabric.Image.filters.BlendColor({\n * color: '#000',\n * mode: 'multiply'\n * });\n *\n * var filter = new fabric.Image.filters.BlendImage({\n * image: fabricImageObject,\n * mode: 'multiply',\n * alpha: 0.5\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\n\n filters.BlendColor = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Blend.prototype */ {\n type: 'BlendColor',\n\n /**\n * Color to make the blend operation with. default to a reddish color since black or white\n * gives always strong result.\n **/\n color: '#F95C63',\n\n /**\n * Blend mode for the filter: one of multiply, add, diff, screen, subtract,\n * darken, lighten, overlay, exclusion, tint.\n **/\n mode: 'multiply',\n\n /**\n * alpha value. represent the strength of the blend color operation.\n **/\n alpha: 1,\n\n /**\n * Fragment source for the Multiply program\n */\n fragmentSource: {\n multiply: 'gl_FragColor.rgb *= uColor.rgb;\\n',\n screen: 'gl_FragColor.rgb = 1.0 - (1.0 - gl_FragColor.rgb) * (1.0 - uColor.rgb);\\n',\n add: 'gl_FragColor.rgb += uColor.rgb;\\n',\n diff: 'gl_FragColor.rgb = abs(gl_FragColor.rgb - uColor.rgb);\\n',\n subtract: 'gl_FragColor.rgb -= uColor.rgb;\\n',\n lighten: 'gl_FragColor.rgb = max(gl_FragColor.rgb, uColor.rgb);\\n',\n darken: 'gl_FragColor.rgb = min(gl_FragColor.rgb, uColor.rgb);\\n',\n exclusion: 'gl_FragColor.rgb += uColor.rgb - 2.0 * (uColor.rgb * gl_FragColor.rgb);\\n',\n overlay: 'if (uColor.r < 0.5) {\\n' +\n 'gl_FragColor.r *= 2.0 * uColor.r;\\n' +\n '} else {\\n' +\n 'gl_FragColor.r = 1.0 - 2.0 * (1.0 - gl_FragColor.r) * (1.0 - uColor.r);\\n' +\n '}\\n' +\n 'if (uColor.g < 0.5) {\\n' +\n 'gl_FragColor.g *= 2.0 * uColor.g;\\n' +\n '} else {\\n' +\n 'gl_FragColor.g = 1.0 - 2.0 * (1.0 - gl_FragColor.g) * (1.0 - uColor.g);\\n' +\n '}\\n' +\n 'if (uColor.b < 0.5) {\\n' +\n 'gl_FragColor.b *= 2.0 * uColor.b;\\n' +\n '} else {\\n' +\n 'gl_FragColor.b = 1.0 - 2.0 * (1.0 - gl_FragColor.b) * (1.0 - uColor.b);\\n' +\n '}\\n',\n tint: 'gl_FragColor.rgb *= (1.0 - uColor.a);\\n' +\n 'gl_FragColor.rgb += uColor.rgb;\\n',\n },\n\n /**\n * build the fragment source for the filters, joining the common part with\n * the specific one.\n * @param {String} mode the mode of the filter, a key of this.fragmentSource\n * @return {String} the source to be compiled\n * @private\n */\n buildSource: function(mode) {\n return 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform vec4 uColor;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'gl_FragColor = color;\\n' +\n 'if (color.a > 0.0) {\\n' +\n this.fragmentSource[mode] +\n '}\\n' +\n '}';\n },\n\n /**\n * Retrieves the cached shader.\n * @param {Object} options\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n retrieveShader: function(options) {\n var cacheKey = this.type + '_' + this.mode, shaderSource;\n if (!options.programCache.hasOwnProperty(cacheKey)) {\n shaderSource = this.buildSource(this.mode);\n options.programCache[cacheKey] = this.createProgram(options.context, shaderSource);\n }\n return options.programCache[cacheKey];\n },\n\n /**\n * Apply the Blend operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n data = imageData.data, iLen = data.length,\n tr, tg, tb,\n r, g, b,\n source, alpha1 = 1 - this.alpha;\n\n source = new fabric.Color(this.color).getSource();\n tr = source[0] * this.alpha;\n tg = source[1] * this.alpha;\n tb = source[2] * this.alpha;\n\n for (var i = 0; i < iLen; i += 4) {\n\n r = data[i];\n g = data[i + 1];\n b = data[i + 2];\n\n switch (this.mode) {\n case 'multiply':\n data[i] = r * tr / 255;\n data[i + 1] = g * tg / 255;\n data[i + 2] = b * tb / 255;\n break;\n case 'screen':\n data[i] = 255 - (255 - r) * (255 - tr) / 255;\n data[i + 1] = 255 - (255 - g) * (255 - tg) / 255;\n data[i + 2] = 255 - (255 - b) * (255 - tb) / 255;\n break;\n case 'add':\n data[i] = r + tr;\n data[i + 1] = g + tg;\n data[i + 2] = b + tb;\n break;\n case 'diff':\n case 'difference':\n data[i] = Math.abs(r - tr);\n data[i + 1] = Math.abs(g - tg);\n data[i + 2] = Math.abs(b - tb);\n break;\n case 'subtract':\n data[i] = r - tr;\n data[i + 1] = g - tg;\n data[i + 2] = b - tb;\n break;\n case 'darken':\n data[i] = Math.min(r, tr);\n data[i + 1] = Math.min(g, tg);\n data[i + 2] = Math.min(b, tb);\n break;\n case 'lighten':\n data[i] = Math.max(r, tr);\n data[i + 1] = Math.max(g, tg);\n data[i + 2] = Math.max(b, tb);\n break;\n case 'overlay':\n data[i] = tr < 128 ? (2 * r * tr / 255) : (255 - 2 * (255 - r) * (255 - tr) / 255);\n data[i + 1] = tg < 128 ? (2 * g * tg / 255) : (255 - 2 * (255 - g) * (255 - tg) / 255);\n data[i + 2] = tb < 128 ? (2 * b * tb / 255) : (255 - 2 * (255 - b) * (255 - tb) / 255);\n break;\n case 'exclusion':\n data[i] = tr + r - ((2 * tr * r) / 255);\n data[i + 1] = tg + g - ((2 * tg * g) / 255);\n data[i + 2] = tb + b - ((2 * tb * b) / 255);\n break;\n case 'tint':\n data[i] = tr + r * alpha1;\n data[i + 1] = tg + g * alpha1;\n data[i + 2] = tb + b * alpha1;\n }\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uColor: gl.getUniformLocation(program, 'uColor'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n var source = new fabric.Color(this.color).getSource();\n source[0] = this.alpha * source[0] / 255;\n source[1] = this.alpha * source[1] / 255;\n source[2] = this.alpha * source[2] / 255;\n source[3] = this.alpha;\n gl.uniform4fv(uniformLocations.uColor, source);\n },\n\n /**\n * Returns object representation of an instance\n * @return {Object} Object representation of an instance\n */\n toObject: function() {\n return {\n type: this.type,\n color: this.color,\n mode: this.mode,\n alpha: this.alpha\n };\n }\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.BlendColor} Instance of fabric.Image.filters.BlendColor\n */\n fabric.Image.filters.BlendColor.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n 'use strict';\n\n var fabric = global.fabric,\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Image Blend filter class\n * @class fabric.Image.filter.BlendImage\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @example\n * var filter = new fabric.Image.filters.BlendColor({\n * color: '#000',\n * mode: 'multiply'\n * });\n *\n * var filter = new fabric.Image.filters.BlendImage({\n * image: fabricImageObject,\n * mode: 'multiply',\n * alpha: 0.5\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\n\n filters.BlendImage = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.BlendImage.prototype */ {\n type: 'BlendImage',\n\n /**\n * Color to make the blend operation with. default to a reddish color since black or white\n * gives always strong result.\n **/\n image: null,\n\n /**\n * Blend mode for the filter: one of multiply, add, diff, screen, subtract,\n * darken, lighten, overlay, exclusion, tint.\n **/\n mode: 'multiply',\n\n /**\n * alpha value. represent the strength of the blend image operation.\n * not implemented.\n **/\n alpha: 1,\n\n vertexSource: 'attribute vec2 aPosition;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'varying vec2 vTexCoord2;\\n' +\n 'uniform mat3 uTransformMatrix;\\n' +\n 'void main() {\\n' +\n 'vTexCoord = aPosition;\\n' +\n 'vTexCoord2 = (uTransformMatrix * vec3(aPosition, 1.0)).xy;\\n' +\n 'gl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\\n' +\n '}',\n\n /**\n * Fragment source for the Multiply program\n */\n fragmentSource: {\n multiply: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform sampler2D uImage;\\n' +\n 'uniform vec4 uColor;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'varying vec2 vTexCoord2;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'vec4 color2 = texture2D(uImage, vTexCoord2);\\n' +\n 'color.rgba *= color2.rgba;\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n mask: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform sampler2D uImage;\\n' +\n 'uniform vec4 uColor;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'varying vec2 vTexCoord2;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'vec4 color2 = texture2D(uImage, vTexCoord2);\\n' +\n 'color.a = color2.a;\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n },\n\n /**\n * Retrieves the cached shader.\n * @param {Object} options\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n retrieveShader: function(options) {\n var cacheKey = this.type + '_' + this.mode;\n var shaderSource = this.fragmentSource[this.mode];\n if (!options.programCache.hasOwnProperty(cacheKey)) {\n options.programCache[cacheKey] = this.createProgram(options.context, shaderSource);\n }\n return options.programCache[cacheKey];\n },\n\n applyToWebGL: function(options) {\n // load texture to blend.\n var gl = options.context,\n texture = this.createTexture(options.filterBackend, this.image);\n this.bindAdditionalTexture(gl, texture, gl.TEXTURE1);\n this.callSuper('applyToWebGL', options);\n this.unbindAdditionalTexture(gl, gl.TEXTURE1);\n },\n\n createTexture: function(backend, image) {\n return backend.getCachedTexture(image.cacheKey, image._element);\n },\n\n /**\n * Calculate a transformMatrix to adapt the image to blend over\n * @param {Object} options\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n calculateMatrix: function() {\n var image = this.image,\n width = image._element.width,\n height = image._element.height;\n return [\n 1 / image.scaleX, 0, 0,\n 0, 1 / image.scaleY, 0,\n -image.left / width, -image.top / height, 1\n ];\n },\n\n /**\n * Apply the Blend operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n resources = options.filterBackend.resources,\n data = imageData.data, iLen = data.length,\n width = imageData.width,\n height = imageData.height,\n tr, tg, tb, ta,\n r, g, b, a,\n canvas1, context, image = this.image, blendData;\n\n if (!resources.blendImage) {\n resources.blendImage = fabric.util.createCanvasElement();\n }\n canvas1 = resources.blendImage;\n context = canvas1.getContext('2d');\n if (canvas1.width !== width || canvas1.height !== height) {\n canvas1.width = width;\n canvas1.height = height;\n }\n else {\n context.clearRect(0, 0, width, height);\n }\n context.setTransform(image.scaleX, 0, 0, image.scaleY, image.left, image.top);\n context.drawImage(image._element, 0, 0, width, height);\n blendData = context.getImageData(0, 0, width, height).data;\n for (var i = 0; i < iLen; i += 4) {\n\n r = data[i];\n g = data[i + 1];\n b = data[i + 2];\n a = data[i + 3];\n\n tr = blendData[i];\n tg = blendData[i + 1];\n tb = blendData[i + 2];\n ta = blendData[i + 3];\n\n switch (this.mode) {\n case 'multiply':\n data[i] = r * tr / 255;\n data[i + 1] = g * tg / 255;\n data[i + 2] = b * tb / 255;\n data[i + 3] = a * ta / 255;\n break;\n case 'mask':\n data[i + 3] = ta;\n break;\n }\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uTransformMatrix: gl.getUniformLocation(program, 'uTransformMatrix'),\n uImage: gl.getUniformLocation(program, 'uImage'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n var matrix = this.calculateMatrix();\n gl.uniform1i(uniformLocations.uImage, 1); // texture unit 1.\n gl.uniformMatrix3fv(uniformLocations.uTransformMatrix, false, matrix);\n },\n\n /**\n * Returns object representation of an instance\n * @return {Object} Object representation of an instance\n */\n toObject: function() {\n return {\n type: this.type,\n image: this.image && this.image.toObject(),\n mode: this.mode,\n alpha: this.alpha\n };\n }\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} callback to be invoked after filter creation\n * @return {fabric.Image.filters.BlendImage} Instance of fabric.Image.filters.BlendImage\n */\n fabric.Image.filters.BlendImage.fromObject = function(object, callback) {\n fabric.Image.fromObject(object.image, function(image) {\n var options = fabric.util.object.clone(object);\n options.image = image;\n callback(new fabric.Image.filters.BlendImage(options));\n });\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }), pow = Math.pow, floor = Math.floor,\n sqrt = Math.sqrt, abs = Math.abs, round = Math.round, sin = Math.sin,\n ceil = Math.ceil,\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Resize image filter class\n * @class fabric.Image.filters.Resize\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Resize();\n * object.filters.push(filter);\n * object.applyFilters(canvas.renderAll.bind(canvas));\n */\n filters.Resize = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Resize.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Resize',\n\n /**\n * Resize type\n * for webgl resizyType is just lanczos, for canvas2d can be:\n * bilinear, hermite, sliceHacl, lanczos.\n * @param {String} resizeType\n * @default\n */\n resizeType: 'hermite',\n\n /**\n * Scale factor for resizing, x axis\n * @param {Number} scaleX\n * @default\n */\n scaleX: 1,\n\n /**\n * Scale factor for resizing, y axis\n * @param {Number} scaleY\n * @default\n */\n scaleY: 1,\n\n /**\n * LanczosLobes parameter for lanczos filter, valid for resizeType lanczos\n * @param {Number} lanczosLobes\n * @default\n */\n lanczosLobes: 3,\n\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uDelta: gl.getUniformLocation(program, 'uDelta'),\n uTaps: gl.getUniformLocation(program, 'uTaps'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform2fv(uniformLocations.uDelta, this.horizontal ? [1 / this.width, 0] : [0, 1 / this.height]);\n gl.uniform1fv(uniformLocations.uTaps, this.taps);\n },\n\n /**\n * Retrieves the cached shader.\n * @param {Object} options\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n retrieveShader: function(options) {\n var filterWindow = this.getFilterWindow(), cacheKey = this.type + '_' + filterWindow;\n if (!options.programCache.hasOwnProperty(cacheKey)) {\n var fragmentShader = this.generateShader(filterWindow);\n options.programCache[cacheKey] = this.createProgram(options.context, fragmentShader);\n }\n return options.programCache[cacheKey];\n },\n\n getFilterWindow: function() {\n var scale = this.tempScale;\n return Math.ceil(this.lanczosLobes / scale);\n },\n\n getTaps: function() {\n var lobeFunction = this.lanczosCreate(this.lanczosLobes), scale = this.tempScale,\n filterWindow = this.getFilterWindow(), taps = new Array(filterWindow);\n for (var i = 1; i <= filterWindow; i++) {\n taps[i - 1] = lobeFunction(i * scale);\n }\n return taps;\n },\n\n /**\n * Generate vertex and shader sources from the necessary steps numbers\n * @param {Number} filterWindow\n */\n generateShader: function(filterWindow) {\n var offsets = new Array(filterWindow),\n fragmentShader = this.fragmentSourceTOP, filterWindow;\n\n for (var i = 1; i <= filterWindow; i++) {\n offsets[i - 1] = i + '.0 * uDelta';\n }\n\n fragmentShader += 'uniform float uTaps[' + filterWindow + '];\\n';\n fragmentShader += 'void main() {\\n';\n fragmentShader += ' vec4 color = texture2D(uTexture, vTexCoord);\\n';\n fragmentShader += ' float sum = 1.0;\\n';\n\n offsets.forEach(function(offset, i) {\n fragmentShader += ' color += texture2D(uTexture, vTexCoord + ' + offset + ') * uTaps[' + i + '];\\n';\n fragmentShader += ' color += texture2D(uTexture, vTexCoord - ' + offset + ') * uTaps[' + i + '];\\n';\n fragmentShader += ' sum += 2.0 * uTaps[' + i + '];\\n';\n });\n fragmentShader += ' gl_FragColor = color / sum;\\n';\n fragmentShader += '}';\n return fragmentShader;\n },\n\n fragmentSourceTOP: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform vec2 uDelta;\\n' +\n 'varying vec2 vTexCoord;\\n',\n\n /**\n * Apply the resize filter to the image\n * Determines whether to use WebGL or Canvas2D based on the options.webgl flag.\n *\n * @param {Object} options\n * @param {Number} options.passes The number of filters remaining to be executed\n * @param {Boolean} options.webgl Whether to use webgl to render the filter.\n * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered.\n * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn.\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n applyTo: function(options) {\n if (options.webgl) {\n options.passes++;\n this.width = options.sourceWidth;\n this.horizontal = true;\n this.dW = Math.round(this.width * this.scaleX);\n this.dH = options.sourceHeight;\n this.tempScale = this.dW / this.width;\n this.taps = this.getTaps();\n options.destinationWidth = this.dW;\n this._setupFrameBuffer(options);\n this.applyToWebGL(options);\n this._swapTextures(options);\n options.sourceWidth = options.destinationWidth;\n\n this.height = options.sourceHeight;\n this.horizontal = false;\n this.dH = Math.round(this.height * this.scaleY);\n this.tempScale = this.dH / this.height;\n this.taps = this.getTaps();\n options.destinationHeight = this.dH;\n this._setupFrameBuffer(options);\n this.applyToWebGL(options);\n this._swapTextures(options);\n options.sourceHeight = options.destinationHeight;\n }\n else {\n this.applyTo2d(options);\n }\n },\n\n isNeutralState: function() {\n return this.scaleX === 1 && this.scaleY === 1;\n },\n\n lanczosCreate: function(lobes) {\n return function(x) {\n if (x >= lobes || x <= -lobes) {\n return 0.0;\n }\n if (x < 1.19209290E-07 && x > -1.19209290E-07) {\n return 1.0;\n }\n x *= Math.PI;\n var xx = x / lobes;\n return (sin(x) / x) * sin(xx) / xx;\n };\n },\n\n /**\n * Applies filter to canvas element\n * @memberOf fabric.Image.filters.Resize.prototype\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} scaleX\n * @param {Number} scaleY\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n scaleX = this.scaleX,\n scaleY = this.scaleY;\n\n this.rcpScaleX = 1 / scaleX;\n this.rcpScaleY = 1 / scaleY;\n\n var oW = imageData.width, oH = imageData.height,\n dW = round(oW * scaleX), dH = round(oH * scaleY),\n newData;\n\n if (this.resizeType === 'sliceHack') {\n newData = this.sliceByTwo(options, oW, oH, dW, dH);\n }\n else if (this.resizeType === 'hermite') {\n newData = this.hermiteFastResize(options, oW, oH, dW, dH);\n }\n else if (this.resizeType === 'bilinear') {\n newData = this.bilinearFiltering(options, oW, oH, dW, dH);\n }\n else if (this.resizeType === 'lanczos') {\n newData = this.lanczosResize(options, oW, oH, dW, dH);\n }\n options.imageData = newData;\n },\n\n /**\n * Filter sliceByTwo\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} oW Original Width\n * @param {Number} oH Original Height\n * @param {Number} dW Destination Width\n * @param {Number} dH Destination Height\n * @returns {ImageData}\n */\n sliceByTwo: function(options, oW, oH, dW, dH) {\n var imageData = options.imageData,\n mult = 0.5, doneW = false, doneH = false, stepW = oW * mult,\n stepH = oH * mult, resources = fabric.filterBackend.resources,\n tmpCanvas, ctx, sX = 0, sY = 0, dX = oW, dY = 0;\n if (!resources.sliceByTwo) {\n resources.sliceByTwo = document.createElement('canvas');\n }\n tmpCanvas = resources.sliceByTwo;\n if (tmpCanvas.width < oW * 1.5 || tmpCanvas.height < oH) {\n tmpCanvas.width = oW * 1.5;\n tmpCanvas.height = oH;\n }\n ctx = tmpCanvas.getContext('2d');\n ctx.clearRect(0, 0, oW * 1.5, oH);\n ctx.putImageData(imageData, 0, 0);\n\n dW = floor(dW);\n dH = floor(dH);\n\n while (!doneW || !doneH) {\n oW = stepW;\n oH = stepH;\n if (dW < floor(stepW * mult)) {\n stepW = floor(stepW * mult);\n }\n else {\n stepW = dW;\n doneW = true;\n }\n if (dH < floor(stepH * mult)) {\n stepH = floor(stepH * mult);\n }\n else {\n stepH = dH;\n doneH = true;\n }\n ctx.drawImage(tmpCanvas, sX, sY, oW, oH, dX, dY, stepW, stepH);\n sX = dX;\n sY = dY;\n dY += stepH;\n }\n return ctx.getImageData(sX, sY, dW, dH);\n },\n\n /**\n * Filter lanczosResize\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} oW Original Width\n * @param {Number} oH Original Height\n * @param {Number} dW Destination Width\n * @param {Number} dH Destination Height\n * @returns {ImageData}\n */\n lanczosResize: function(options, oW, oH, dW, dH) {\n\n function process(u) {\n var v, i, weight, idx, a, red, green,\n blue, alpha, fX, fY;\n center.x = (u + 0.5) * ratioX;\n icenter.x = floor(center.x);\n for (v = 0; v < dH; v++) {\n center.y = (v + 0.5) * ratioY;\n icenter.y = floor(center.y);\n a = 0; red = 0; green = 0; blue = 0; alpha = 0;\n for (i = icenter.x - range2X; i <= icenter.x + range2X; i++) {\n if (i < 0 || i >= oW) {\n continue;\n }\n fX = floor(1000 * abs(i - center.x));\n if (!cacheLanc[fX]) {\n cacheLanc[fX] = { };\n }\n for (var j = icenter.y - range2Y; j <= icenter.y + range2Y; j++) {\n if (j < 0 || j >= oH) {\n continue;\n }\n fY = floor(1000 * abs(j - center.y));\n if (!cacheLanc[fX][fY]) {\n cacheLanc[fX][fY] = lanczos(sqrt(pow(fX * rcpRatioX, 2) + pow(fY * rcpRatioY, 2)) / 1000);\n }\n weight = cacheLanc[fX][fY];\n if (weight > 0) {\n idx = (j * oW + i) * 4;\n a += weight;\n red += weight * srcData[idx];\n green += weight * srcData[idx + 1];\n blue += weight * srcData[idx + 2];\n alpha += weight * srcData[idx + 3];\n }\n }\n }\n idx = (v * dW + u) * 4;\n destData[idx] = red / a;\n destData[idx + 1] = green / a;\n destData[idx + 2] = blue / a;\n destData[idx + 3] = alpha / a;\n }\n\n if (++u < dW) {\n return process(u);\n }\n else {\n return destImg;\n }\n }\n\n var srcData = options.imageData.data,\n destImg = options.ctx.createImageData(dW, dH),\n destData = destImg.data,\n lanczos = this.lanczosCreate(this.lanczosLobes),\n ratioX = this.rcpScaleX, ratioY = this.rcpScaleY,\n rcpRatioX = 2 / this.rcpScaleX, rcpRatioY = 2 / this.rcpScaleY,\n range2X = ceil(ratioX * this.lanczosLobes / 2),\n range2Y = ceil(ratioY * this.lanczosLobes / 2),\n cacheLanc = { }, center = { }, icenter = { };\n\n return process(0);\n },\n\n /**\n * bilinearFiltering\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} oW Original Width\n * @param {Number} oH Original Height\n * @param {Number} dW Destination Width\n * @param {Number} dH Destination Height\n * @returns {ImageData}\n */\n bilinearFiltering: function(options, oW, oH, dW, dH) {\n var a, b, c, d, x, y, i, j, xDiff, yDiff, chnl,\n color, offset = 0, origPix, ratioX = this.rcpScaleX,\n ratioY = this.rcpScaleY,\n w4 = 4 * (oW - 1), img = options.imageData,\n pixels = img.data, destImage = options.ctx.createImageData(dW, dH),\n destPixels = destImage.data;\n for (i = 0; i < dH; i++) {\n for (j = 0; j < dW; j++) {\n x = floor(ratioX * j);\n y = floor(ratioY * i);\n xDiff = ratioX * j - x;\n yDiff = ratioY * i - y;\n origPix = 4 * (y * oW + x);\n\n for (chnl = 0; chnl < 4; chnl++) {\n a = pixels[origPix + chnl];\n b = pixels[origPix + 4 + chnl];\n c = pixels[origPix + w4 + chnl];\n d = pixels[origPix + w4 + 4 + chnl];\n color = a * (1 - xDiff) * (1 - yDiff) + b * xDiff * (1 - yDiff) +\n c * yDiff * (1 - xDiff) + d * xDiff * yDiff;\n destPixels[offset++] = color;\n }\n }\n }\n return destImage;\n },\n\n /**\n * hermiteFastResize\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} oW Original Width\n * @param {Number} oH Original Height\n * @param {Number} dW Destination Width\n * @param {Number} dH Destination Height\n * @returns {ImageData}\n */\n hermiteFastResize: function(options, oW, oH, dW, dH) {\n var ratioW = this.rcpScaleX, ratioH = this.rcpScaleY,\n ratioWHalf = ceil(ratioW / 2),\n ratioHHalf = ceil(ratioH / 2),\n img = options.imageData, data = img.data,\n img2 = options.ctx.createImageData(dW, dH), data2 = img2.data;\n for (var j = 0; j < dH; j++) {\n for (var i = 0; i < dW; i++) {\n var x2 = (i + j * dW) * 4, weight = 0, weights = 0, weightsAlpha = 0,\n gxR = 0, gxG = 0, gxB = 0, gxA = 0, centerY = (j + 0.5) * ratioH;\n for (var yy = floor(j * ratioH); yy < (j + 1) * ratioH; yy++) {\n var dy = abs(centerY - (yy + 0.5)) / ratioHHalf,\n centerX = (i + 0.5) * ratioW, w0 = dy * dy;\n for (var xx = floor(i * ratioW); xx < (i + 1) * ratioW; xx++) {\n var dx = abs(centerX - (xx + 0.5)) / ratioWHalf,\n w = sqrt(w0 + dx * dx);\n /* eslint-disable max-depth */\n if (w > 1 && w < -1) {\n continue;\n }\n //hermite filter\n weight = 2 * w * w * w - 3 * w * w + 1;\n if (weight > 0) {\n dx = 4 * (xx + yy * oW);\n //alpha\n gxA += weight * data[dx + 3];\n weightsAlpha += weight;\n //colors\n if (data[dx + 3] < 255) {\n weight = weight * data[dx + 3] / 250;\n }\n gxR += weight * data[dx];\n gxG += weight * data[dx + 1];\n gxB += weight * data[dx + 2];\n weights += weight;\n }\n /* eslint-enable max-depth */\n }\n }\n data2[x2] = gxR / weights;\n data2[x2 + 1] = gxG / weights;\n data2[x2 + 2] = gxB / weights;\n data2[x2 + 3] = gxA / weightsAlpha;\n }\n }\n return img2;\n },\n\n /**\n * Returns object representation of an instance\n * @return {Object} Object representation of an instance\n */\n toObject: function() {\n return {\n type: this.type,\n scaleX: this.scaleX,\n scaleY: this.scaleY,\n resizeType: this.resizeType,\n lanczosLobes: this.lanczosLobes\n };\n }\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Resize} Instance of fabric.Image.filters.Resize\n */\n fabric.Image.filters.Resize.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Contrast filter class\n * @class fabric.Image.filters.Contrast\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Contrast#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Contrast({\n * contrast: 40\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.Contrast = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Contrast.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Contrast',\n\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uContrast;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'float contrastF = 1.015 * (uContrast + 1.0) / (1.0 * (1.015 - uContrast));\\n' +\n 'color.rgb = contrastF * (color.rgb - 0.5) + 0.5;\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n\n contrast: 0,\n\n mainParameter: 'contrast',\n\n /**\n * Constructor\n * @memberOf fabric.Image.filters.Contrast.prototype\n * @param {Object} [options] Options object\n * @param {Number} [options.contrast=0] Value to contrast the image up (-1...1)\n */\n\n /**\n * Apply the Contrast operation to a Uint8Array representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8Array to be filtered.\n */\n applyTo2d: function(options) {\n if (this.contrast === 0) {\n return;\n }\n var imageData = options.imageData, i, len,\n data = imageData.data, len = data.length,\n contrast = Math.floor(this.contrast * 255),\n contrastF = 259 * (contrast + 255) / (255 * (259 - contrast));\n\n for (i = 0; i < len; i += 4) {\n data[i] = contrastF * (data[i] - 128) + 128;\n data[i + 1] = contrastF * (data[i + 1] - 128) + 128;\n data[i + 2] = contrastF * (data[i + 2] - 128) + 128;\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uContrast: gl.getUniformLocation(program, 'uContrast'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform1f(uniformLocations.uContrast, this.contrast);\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Contrast} Instance of fabric.Image.filters.Contrast\n */\n fabric.Image.filters.Contrast.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Saturate filter class\n * @class fabric.Image.filters.Saturation\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Saturation#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Saturation({\n * saturation: 100\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.Saturation = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Saturation.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Saturation',\n\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uSaturation;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'float rgMax = max(color.r, color.g);\\n' +\n 'float rgbMax = max(rgMax, color.b);\\n' +\n 'color.r += rgbMax != color.r ? (rgbMax - color.r) * uSaturation : 0.00;\\n' +\n 'color.g += rgbMax != color.g ? (rgbMax - color.g) * uSaturation : 0.00;\\n' +\n 'color.b += rgbMax != color.b ? (rgbMax - color.b) * uSaturation : 0.00;\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n\n saturation: 0,\n\n mainParameter: 'saturation',\n\n /**\n * Constructor\n * @memberOf fabric.Image.filters.Saturate.prototype\n * @param {Object} [options] Options object\n * @param {Number} [options.saturate=0] Value to saturate the image (-1...1)\n */\n\n /**\n * Apply the Saturation operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d: function(options) {\n if (this.saturation === 0) {\n return;\n }\n var imageData = options.imageData,\n data = imageData.data, len = data.length,\n adjust = -this.saturation, i, max;\n\n for (i = 0; i < len; i += 4) {\n max = Math.max(data[i], data[i + 1], data[i + 2]);\n data[i] += max !== data[i] ? (max - data[i]) * adjust : 0;\n data[i + 1] += max !== data[i + 1] ? (max - data[i + 1]) * adjust : 0;\n data[i + 2] += max !== data[i + 2] ? (max - data[i + 2]) * adjust : 0;\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uSaturation: gl.getUniformLocation(program, 'uSaturation'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform1f(uniformLocations.uSaturation, -this.saturation);\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Saturation} Instance of fabric.Image.filters.Saturate\n */\n fabric.Image.filters.Saturation.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Blur filter class\n * @class fabric.Image.filters.Blur\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Blur#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Blur({\n * blur: 0.5\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\n filters.Blur = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Blur.prototype */ {\n\n type: 'Blur',\n\n /*\n'gl_FragColor = vec4(0.0);',\n'gl_FragColor += texture2D(texture, vTexCoord + -7 * uDelta)*0.0044299121055113265;',\n'gl_FragColor += texture2D(texture, vTexCoord + -6 * uDelta)*0.00895781211794;',\n'gl_FragColor += texture2D(texture, vTexCoord + -5 * uDelta)*0.0215963866053;',\n'gl_FragColor += texture2D(texture, vTexCoord + -4 * uDelta)*0.0443683338718;',\n'gl_FragColor += texture2D(texture, vTexCoord + -3 * uDelta)*0.0776744219933;',\n'gl_FragColor += texture2D(texture, vTexCoord + -2 * uDelta)*0.115876621105;',\n'gl_FragColor += texture2D(texture, vTexCoord + -1 * uDelta)*0.147308056121;',\n'gl_FragColor += texture2D(texture, vTexCoord )*0.159576912161;',\n'gl_FragColor += texture2D(texture, vTexCoord + 1 * uDelta)*0.147308056121;',\n'gl_FragColor += texture2D(texture, vTexCoord + 2 * uDelta)*0.115876621105;',\n'gl_FragColor += texture2D(texture, vTexCoord + 3 * uDelta)*0.0776744219933;',\n'gl_FragColor += texture2D(texture, vTexCoord + 4 * uDelta)*0.0443683338718;',\n'gl_FragColor += texture2D(texture, vTexCoord + 5 * uDelta)*0.0215963866053;',\n'gl_FragColor += texture2D(texture, vTexCoord + 6 * uDelta)*0.00895781211794;',\n'gl_FragColor += texture2D(texture, vTexCoord + 7 * uDelta)*0.0044299121055113265;',\n*/\n\n /* eslint-disable max-len */\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform vec2 uDelta;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'const float nSamples = 15.0;\\n' +\n 'vec3 v3offset = vec3(12.9898, 78.233, 151.7182);\\n' +\n 'float random(vec3 scale) {\\n' +\n /* use the fragment position for a different seed per-pixel */\n 'return fract(sin(dot(gl_FragCoord.xyz, scale)) * 43758.5453);\\n' +\n '}\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0.0);\\n' +\n 'float total = 0.0;\\n' +\n 'float offset = random(v3offset);\\n' +\n 'for (float t = -nSamples; t <= nSamples; t++) {\\n' +\n 'float percent = (t + offset - 0.5) / nSamples;\\n' +\n 'float weight = 1.0 - abs(percent);\\n' +\n 'color += texture2D(uTexture, vTexCoord + uDelta * percent) * weight;\\n' +\n 'total += weight;\\n' +\n '}\\n' +\n 'gl_FragColor = color / total;\\n' +\n '}',\n /* eslint-enable max-len */\n\n /**\n * blur value, in percentage of image dimensions.\n * specific to keep the image blur constant at different resolutions\n * range bewteen 0 and 1.\n */\n blur: 0,\n\n mainParameter: 'blur',\n\n applyTo: function(options) {\n if (options.webgl) {\n // this aspectRatio is used to give the same blur to vertical and horizontal\n this.aspectRatio = options.sourceWidth / options.sourceHeight;\n options.passes++;\n this._setupFrameBuffer(options);\n this.horizontal = true;\n this.applyToWebGL(options);\n this._swapTextures(options);\n this._setupFrameBuffer(options);\n this.horizontal = false;\n this.applyToWebGL(options);\n this._swapTextures(options);\n }\n else {\n this.applyTo2d(options);\n }\n },\n\n applyTo2d: function(options) {\n // paint canvasEl with current image data.\n //options.ctx.putImageData(options.imageData, 0, 0);\n options.imageData = this.simpleBlur(options);\n },\n\n simpleBlur: function(options) {\n var resources = options.filterBackend.resources, canvas1, canvas2,\n width = options.imageData.width,\n height = options.imageData.height;\n\n if (!resources.blurLayer1) {\n resources.blurLayer1 = fabric.util.createCanvasElement();\n resources.blurLayer2 = fabric.util.createCanvasElement();\n }\n canvas1 = resources.blurLayer1;\n canvas2 = resources.blurLayer2;\n if (canvas1.width !== width || canvas1.height !== height) {\n canvas2.width = canvas1.width = width;\n canvas2.height = canvas1.height = height;\n }\n var ctx1 = canvas1.getContext('2d'),\n ctx2 = canvas2.getContext('2d'),\n nSamples = 15,\n random, percent, j, i,\n blur = this.blur * 0.06 * 0.5;\n\n // load first canvas\n ctx1.putImageData(options.imageData, 0, 0);\n ctx2.clearRect(0, 0, width, height);\n\n for (i = -nSamples; i <= nSamples; i++) {\n random = (Math.random() - 0.5) / 4;\n percent = i / nSamples;\n j = blur * percent * width + random;\n ctx2.globalAlpha = 1 - Math.abs(percent);\n ctx2.drawImage(canvas1, j, random);\n ctx1.drawImage(canvas2, 0, 0);\n ctx2.globalAlpha = 1;\n ctx2.clearRect(0, 0, canvas2.width, canvas2.height);\n }\n for (i = -nSamples; i <= nSamples; i++) {\n random = (Math.random() - 0.5) / 4;\n percent = i / nSamples;\n j = blur * percent * height + random;\n ctx2.globalAlpha = 1 - Math.abs(percent);\n ctx2.drawImage(canvas1, random, j);\n ctx1.drawImage(canvas2, 0, 0);\n ctx2.globalAlpha = 1;\n ctx2.clearRect(0, 0, canvas2.width, canvas2.height);\n }\n options.ctx.drawImage(canvas1, 0, 0);\n var newImageData = options.ctx.getImageData(0, 0, canvas1.width, canvas1.height);\n ctx1.globalAlpha = 1;\n ctx1.clearRect(0, 0, canvas1.width, canvas1.height);\n return newImageData;\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n delta: gl.getUniformLocation(program, 'uDelta'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n var delta = this.chooseRightDelta();\n gl.uniform2fv(uniformLocations.delta, delta);\n },\n\n /**\n * choose right value of image percentage to blur with\n * @returns {Array} a numeric array with delta values\n */\n chooseRightDelta: function() {\n var blurScale = 1, delta = [0, 0], blur;\n if (this.horizontal) {\n if (this.aspectRatio > 1) {\n // image is wide, i want to shrink radius horizontal\n blurScale = 1 / this.aspectRatio;\n }\n }\n else {\n if (this.aspectRatio < 1) {\n // image is tall, i want to shrink radius vertical\n blurScale = this.aspectRatio;\n }\n }\n blur = blurScale * this.blur * 0.12;\n if (this.horizontal) {\n delta[0] = blur;\n }\n else {\n delta[1] = blur;\n }\n return delta;\n },\n });\n\n /**\n * Deserialize a JSON definition of a BlurFilter into a concrete instance.\n */\n filters.Blur.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Gamma filter class\n * @class fabric.Image.filters.Gamma\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Gamma#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Gamma({\n * brightness: 200\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.Gamma = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Gamma.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Gamma',\n\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform vec3 uGamma;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'vec3 correction = (1.0 / uGamma);\\n' +\n 'color.r = pow(color.r, correction.r);\\n' +\n 'color.g = pow(color.g, correction.g);\\n' +\n 'color.b = pow(color.b, correction.b);\\n' +\n 'gl_FragColor = color;\\n' +\n 'gl_FragColor.rgb *= color.a;\\n' +\n '}',\n\n /**\n * Gamma array value, from 0.01 to 2.2.\n * @param {Array} gamma\n * @default\n */\n gamma: [1, 1, 1],\n\n /**\n * Describe the property that is the filter parameter\n * @param {String} m\n * @default\n */\n mainParameter: 'gamma',\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n */\n initialize: function(options) {\n this.gamma = [1, 1, 1];\n filters.BaseFilter.prototype.initialize.call(this, options);\n },\n\n /**\n * Apply the Gamma operation to a Uint8Array representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8Array to be filtered.\n */\n applyTo2d: function(options) {\n var imageData = options.imageData, data = imageData.data,\n gamma = this.gamma, len = data.length,\n rInv = 1 / gamma[0], gInv = 1 / gamma[1],\n bInv = 1 / gamma[2], i;\n\n if (!this.rVals) {\n // eslint-disable-next-line\n this.rVals = new Uint8Array(256);\n // eslint-disable-next-line\n this.gVals = new Uint8Array(256);\n // eslint-disable-next-line\n this.bVals = new Uint8Array(256);\n }\n\n // This is an optimization - pre-compute a look-up table for each color channel\n // instead of performing these pow calls for each pixel in the image.\n for (i = 0, len = 256; i < len; i++) {\n this.rVals[i] = Math.pow(i / 255, rInv) * 255;\n this.gVals[i] = Math.pow(i / 255, gInv) * 255;\n this.bVals[i] = Math.pow(i / 255, bInv) * 255;\n }\n for (i = 0, len = data.length; i < len; i += 4) {\n data[i] = this.rVals[data[i]];\n data[i + 1] = this.gVals[data[i + 1]];\n data[i + 2] = this.bVals[data[i + 2]];\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uGamma: gl.getUniformLocation(program, 'uGamma'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform3fv(uniformLocations.uGamma, this.gamma);\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Gamma} Instance of fabric.Image.filters.Gamma\n */\n fabric.Image.filters.Gamma.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * A container class that knows how to apply a sequence of filters to an input image.\n */\n filters.Composed = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Composed.prototype */ {\n\n type: 'Composed',\n\n /**\n * A non sparse array of filters to apply\n */\n subFilters: [],\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n */\n initialize: function(options) {\n this.callSuper('initialize', options);\n // create a new array instead mutating the prototype with push\n this.subFilters = this.subFilters.slice(0);\n },\n\n /**\n * Apply this container's filters to the input image provided.\n *\n * @param {Object} options\n * @param {Number} options.passes The number of filters remaining to be applied.\n */\n applyTo: function(options) {\n options.passes += this.subFilters.length - 1;\n this.subFilters.forEach(function(filter) {\n filter.applyTo(options);\n });\n },\n\n /**\n * Serialize this filter into JSON.\n *\n * @returns {Object} A JSON representation of this filter.\n */\n toObject: function() {\n return fabric.util.object.extend(this.callSuper('toObject'), {\n subFilters: this.subFilters.map(function(filter) { return filter.toObject(); }),\n });\n },\n\n isNeutralState: function() {\n return !this.subFilters.some(function(filter) { return !filter.isNeutralState(); });\n }\n });\n\n /**\n * Deserialize a JSON definition of a ComposedFilter into a concrete instance.\n */\n fabric.Image.filters.Composed.fromObject = function(object, callback) {\n var filters = object.subFilters || [],\n subFilters = filters.map(function(filter) {\n return new fabric.Image.filters[filter.type](filter);\n }),\n instance = new fabric.Image.filters.Composed({ subFilters: subFilters });\n callback && callback(instance);\n return instance;\n };\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * HueRotation filter class\n * @class fabric.Image.filters.HueRotation\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.HueRotation#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.HueRotation({\n * rotation: -0.5\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.HueRotation = createClass(filters.ColorMatrix, /** @lends fabric.Image.filters.HueRotation.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'HueRotation',\n\n /**\n * HueRotation value, from -1 to 1.\n * the unit is radians\n * @param {Number} myParameter\n * @default\n */\n rotation: 0,\n\n /**\n * Describe the property that is the filter parameter\n * @param {String} m\n * @default\n */\n mainParameter: 'rotation',\n\n calculateMatrix: function() {\n var rad = this.rotation * Math.PI, cos = fabric.util.cos(rad), sin = fabric.util.sin(rad),\n aThird = 1 / 3, aThirdSqtSin = Math.sqrt(aThird) * sin, OneMinusCos = 1 - cos;\n this.matrix = [\n 1, 0, 0, 0, 0,\n 0, 1, 0, 0, 0,\n 0, 0, 1, 0, 0,\n 0, 0, 0, 1, 0\n ];\n this.matrix[0] = cos + OneMinusCos / 3;\n this.matrix[1] = aThird * OneMinusCos - aThirdSqtSin;\n this.matrix[2] = aThird * OneMinusCos + aThirdSqtSin;\n this.matrix[5] = aThird * OneMinusCos + aThirdSqtSin;\n this.matrix[6] = cos + aThird * OneMinusCos;\n this.matrix[7] = aThird * OneMinusCos - aThirdSqtSin;\n this.matrix[10] = aThird * OneMinusCos - aThirdSqtSin;\n this.matrix[11] = aThird * OneMinusCos + aThirdSqtSin;\n this.matrix[12] = cos + aThird * OneMinusCos;\n },\n\n /**\n * HueRotation isNeutralState implementation\n * Used only in image applyFilters to discard filters that will not have an effect\n * on the image\n * @param {Object} options\n **/\n isNeutralState: function(options) {\n this.calculateMatrix();\n return filters.BaseFilter.prototype.isNeutralState.call(this, options);\n },\n\n /**\n * Apply this filter to the input image data provided.\n *\n * Determines whether to use WebGL or Canvas2D based on the options.webgl flag.\n *\n * @param {Object} options\n * @param {Number} options.passes The number of filters remaining to be executed\n * @param {Boolean} options.webgl Whether to use webgl to render the filter.\n * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered.\n * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn.\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n applyTo: function(options) {\n this.calculateMatrix();\n filters.BaseFilter.prototype.applyTo.call(this, options);\n },\n\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.HueRotation} Instance of fabric.Image.filters.HueRotation\n */\n fabric.Image.filters.HueRotation.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n clone = fabric.util.object.clone;\n\n if (fabric.Text) {\n fabric.warn('fabric.Text is already defined');\n return;\n }\n\n /**\n * Text class\n * @class fabric.Text\n * @extends fabric.Object\n * @return {fabric.Text} thisArg\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#text}\n * @see {@link fabric.Text#initialize} for constructor definition\n */\n fabric.Text = fabric.util.createClass(fabric.Object, /** @lends fabric.Text.prototype */ {\n\n /**\n * Properties which when set cause object to change dimensions\n * @type Array\n * @private\n */\n _dimensionAffectingProps: [\n 'fontSize',\n 'fontWeight',\n 'fontFamily',\n 'fontStyle',\n 'lineHeight',\n 'text',\n 'charSpacing',\n 'textAlign',\n 'styles',\n ],\n\n /**\n * @private\n */\n _reNewline: /\\r?\\n/,\n\n /**\n * Use this regular expression to filter for whitespaces that is not a new line.\n * Mostly used when text is 'justify' aligned.\n * @private\n */\n _reSpacesAndTabs: /[ \\t\\r]/g,\n\n /**\n * Use this regular expression to filter for whitespace that is not a new line.\n * Mostly used when text is 'justify' aligned.\n * @private\n */\n _reSpaceAndTab: /[ \\t\\r]/,\n\n /**\n * Use this regular expression to filter consecutive groups of non spaces.\n * Mostly used when text is 'justify' aligned.\n * @private\n */\n _reWords: /\\S+/g,\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'text',\n\n /**\n * Font size (in pixels)\n * @type Number\n * @default\n */\n fontSize: 40,\n\n /**\n * Font weight (e.g. bold, normal, 400, 600, 800)\n * @type {(Number|String)}\n * @default\n */\n fontWeight: 'normal',\n\n /**\n * Font family\n * @type String\n * @default\n */\n fontFamily: 'Times New Roman',\n\n /**\n * Text decoration underline.\n * @type Boolean\n * @default\n */\n underline: false,\n\n /**\n * Text decoration overline.\n * @type Boolean\n * @default\n */\n overline: false,\n\n /**\n * Text decoration linethrough.\n * @type Boolean\n * @default\n */\n linethrough: false,\n\n /**\n * Text alignment. Possible values: \"left\", \"center\", \"right\", \"justify\",\n * \"justify-left\", \"justify-center\" or \"justify-right\".\n * @type String\n * @default\n */\n textAlign: 'left',\n\n /**\n * Font style . Possible values: \"\", \"normal\", \"italic\" or \"oblique\".\n * @type String\n * @default\n */\n fontStyle: 'normal',\n\n /**\n * Line height\n * @type Number\n * @default\n */\n lineHeight: 1.16,\n\n /**\n * Superscript schema object (minimum overlap)\n * @type {Object}\n * @default\n */\n superscript: {\n size: 0.60, // fontSize factor\n baseline: -0.35 // baseline-shift factor (upwards)\n },\n\n /**\n * Subscript schema object (minimum overlap)\n * @type {Object}\n * @default\n */\n subscript: {\n size: 0.60, // fontSize factor\n baseline: 0.11 // baseline-shift factor (downwards)\n },\n\n /**\n * Background color of text lines\n * @type String\n * @default\n */\n textBackgroundColor: '',\n\n /**\n * List of properties to consider when checking if\n * state of an object is changed ({@link fabric.Object#hasStateChanged})\n * as well as for history (undo/redo) purposes\n * @type Array\n */\n stateProperties: fabric.Object.prototype.stateProperties.concat('fontFamily',\n 'fontWeight',\n 'fontSize',\n 'text',\n 'underline',\n 'overline',\n 'linethrough',\n 'textAlign',\n 'fontStyle',\n 'lineHeight',\n 'textBackgroundColor',\n 'charSpacing',\n 'styles'),\n\n /**\n * List of properties to consider when checking if cache needs refresh\n * @type Array\n */\n cacheProperties: fabric.Object.prototype.cacheProperties.concat('fontFamily',\n 'fontWeight',\n 'fontSize',\n 'text',\n 'underline',\n 'overline',\n 'linethrough',\n 'textAlign',\n 'fontStyle',\n 'lineHeight',\n 'textBackgroundColor',\n 'charSpacing',\n 'styles'),\n\n /**\n * When defined, an object is rendered via stroke and this property specifies its color.\n * Backwards incompatibility note: This property was named \"strokeStyle\" until v1.1.6\n * @type String\n * @default\n */\n stroke: null,\n\n /**\n * Shadow object representing shadow of this shape.\n * Backwards incompatibility note: This property was named \"textShadow\" (String) until v1.2.11\n * @type fabric.Shadow\n * @default\n */\n shadow: null,\n\n /**\n * @private\n */\n _fontSizeFraction: 0.222,\n\n /**\n * @private\n */\n offsets: {\n underline: 0.10,\n linethrough: -0.315,\n overline: -0.88\n },\n\n /**\n * Text Line proportion to font Size (in pixels)\n * @type Number\n * @default\n */\n _fontSizeMult: 1.13,\n\n /**\n * additional space between characters\n * expressed in thousands of em unit\n * @type Number\n * @default\n */\n charSpacing: 0,\n\n /**\n * Object containing character styles - top-level properties -> line numbers,\n * 2nd-level properties - charater numbers\n * @type Object\n * @default\n */\n styles: null,\n\n /**\n * Reference to a context to measure text char or couple of chars\n * the cacheContext of the canvas will be used or a freshly created one if the object is not on canvas\n * once created it will be referenced on fabric._measuringContext to avoide creating a canvas for every\n * text object created.\n * @type {CanvasRenderingContext2D}\n * @default\n */\n _measuringContext: null,\n\n /**\n * Baseline shift, stlyes only, keep at 0 for the main text object\n * @type {Number}\n * @default\n */\n deltaY: 0,\n\n /**\n * Array of properties that define a style unit (of 'styles').\n * @type {Array}\n * @default\n */\n _styleProperties: [\n 'stroke',\n 'strokeWidth',\n 'fill',\n 'fontFamily',\n 'fontSize',\n 'fontWeight',\n 'fontStyle',\n 'underline',\n 'overline',\n 'linethrough',\n 'deltaY',\n 'textBackgroundColor',\n ],\n\n /**\n * contains characters bounding boxes\n */\n __charBounds: [],\n\n /**\n * use this size when measuring text. To avoid IE11 rounding errors\n * @type {Number}\n * @default\n * @readonly\n * @private\n */\n CACHE_FONT_SIZE: 400,\n\n /**\n * contains the min text width to avoid getting 0\n * @type {Number}\n * @default\n */\n MIN_TEXT_WIDTH: 2,\n\n /**\n * Constructor\n * @param {String} text Text string\n * @param {Object} [options] Options object\n * @return {fabric.Text} thisArg\n */\n initialize: function(text, options) {\n this.styles = options ? (options.styles || { }) : { };\n this.text = text;\n this.__skipDimension = true;\n this.callSuper('initialize', options);\n this.__skipDimension = false;\n this.initDimensions();\n this.setCoords();\n this.setupState({ propertySet: '_dimensionAffectingProps' });\n },\n\n /**\n * Return a contex for measurement of text string.\n * if created it gets stored for reuse\n * @param {String} text Text string\n * @param {Object} [options] Options object\n * @return {fabric.Text} thisArg\n */\n getMeasuringContext: function() {\n // if we did not return we have to measure something.\n if (!fabric._measuringContext) {\n fabric._measuringContext = this.canvas && this.canvas.contextCache ||\n fabric.util.createCanvasElement().getContext('2d');\n }\n return fabric._measuringContext;\n },\n\n /**\n * @private\n * Divides text into lines of text and lines of graphemes.\n */\n _splitText: function() {\n var newLines = this._splitTextIntoLines(this.text);\n this.textLines = newLines.lines;\n this._textLines = newLines.graphemeLines;\n this._unwrappedTextLines = newLines._unwrappedLines;\n this._text = newLines.graphemeText;\n return newLines;\n },\n\n /**\n * Initialize or update text dimensions.\n * Updates this.width and this.height with the proper values.\n * Does not return dimensions.\n */\n initDimensions: function() {\n if (this.__skipDimension) {\n return;\n }\n this._splitText();\n this._clearCache();\n this.width = this.calcTextWidth() || this.cursorWidth || this.MIN_TEXT_WIDTH;\n if (this.textAlign.indexOf('justify') !== -1) {\n // once text is measured we need to make space fatter to make justified text.\n this.enlargeSpaces();\n }\n this.height = this.calcTextHeight();\n this.saveState({ propertySet: '_dimensionAffectingProps' });\n },\n\n /**\n * Enlarge space boxes and shift the others\n */\n enlargeSpaces: function() {\n var diffSpace, currentLineWidth, numberOfSpaces, accumulatedSpace, line, charBound, spaces;\n for (var i = 0, len = this._textLines.length; i < len; i++) {\n if (this.textAlign !== 'justify' && (i === len - 1 || this.isEndOfWrapping(i))) {\n continue;\n }\n accumulatedSpace = 0;\n line = this._textLines[i];\n currentLineWidth = this.getLineWidth(i);\n if (currentLineWidth < this.width && (spaces = this.textLines[i].match(this._reSpacesAndTabs))) {\n numberOfSpaces = spaces.length;\n diffSpace = (this.width - currentLineWidth) / numberOfSpaces;\n for (var j = 0, jlen = line.length; j <= jlen; j++) {\n charBound = this.__charBounds[i][j];\n if (this._reSpaceAndTab.test(line[j])) {\n charBound.width += diffSpace;\n charBound.kernedWidth += diffSpace;\n charBound.left += accumulatedSpace;\n accumulatedSpace += diffSpace;\n }\n else {\n charBound.left += accumulatedSpace;\n }\n }\n }\n }\n },\n\n /**\n * Detect if the text line is ended with an hard break\n * text and itext do not have wrapping, return false\n * @return {Boolean}\n */\n isEndOfWrapping: function(lineIndex) {\n return lineIndex === this._textLines.length - 1;\n },\n\n /**\n * Returns string representation of an instance\n * @return {String} String representation of text object\n */\n toString: function() {\n return '#';\n },\n\n /**\n * Return the dimension and the zoom level needed to create a cache canvas\n * big enough to host the object to be cached.\n * @private\n * @param {Object} dim.x width of object to be cached\n * @param {Object} dim.y height of object to be cached\n * @return {Object}.width width of canvas\n * @return {Object}.height height of canvas\n * @return {Object}.zoomX zoomX zoom value to unscale the canvas before drawing cache\n * @return {Object}.zoomY zoomY zoom value to unscale the canvas before drawing cache\n */\n _getCacheCanvasDimensions: function() {\n var dims = this.callSuper('_getCacheCanvasDimensions');\n var fontSize = this.fontSize;\n dims.width += fontSize * dims.zoomX;\n dims.height += fontSize * dims.zoomY;\n return dims;\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(ctx) {\n this._setTextStyles(ctx);\n this._renderTextLinesBackground(ctx);\n this._renderTextDecoration(ctx, 'underline');\n this._renderText(ctx);\n this._renderTextDecoration(ctx, 'overline');\n this._renderTextDecoration(ctx, 'linethrough');\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderText: function(ctx) {\n if (this.paintFirst === 'stroke') {\n this._renderTextStroke(ctx);\n this._renderTextFill(ctx);\n }\n else {\n this._renderTextFill(ctx);\n this._renderTextStroke(ctx);\n }\n },\n\n /**\n * Set the font parameter of the context with the object properties or with charStyle\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {Object} [charStyle] object with font style properties\n * @param {String} [charStyle.fontFamily] Font Family\n * @param {Number} [charStyle.fontSize] Font size in pixels. ( without px suffix )\n * @param {String} [charStyle.fontWeight] Font weight\n * @param {String} [charStyle.fontStyle] Font style (italic|normal)\n */\n _setTextStyles: function(ctx, charStyle, forMeasuring) {\n ctx.textBaseline = 'alphabetic';\n ctx.font = this._getFontDeclaration(charStyle, forMeasuring);\n },\n\n /**\n * calculate and return the text Width measuring each line.\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @return {Number} Maximum width of fabric.Text object\n */\n calcTextWidth: function() {\n var maxWidth = this.getLineWidth(0);\n\n for (var i = 1, len = this._textLines.length; i < len; i++) {\n var currentLineWidth = this.getLineWidth(i);\n if (currentLineWidth > maxWidth) {\n maxWidth = currentLineWidth;\n }\n }\n return maxWidth;\n },\n\n /**\n * @private\n * @param {String} method Method name (\"fillText\" or \"strokeText\")\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {String} line Text to render\n * @param {Number} left Left position of text\n * @param {Number} top Top position of text\n * @param {Number} lineIndex Index of a line in a text\n */\n _renderTextLine: function(method, ctx, line, left, top, lineIndex) {\n this._renderChars(method, ctx, line, left, top, lineIndex);\n },\n\n /**\n * Renders the text background for lines, taking care of style\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderTextLinesBackground: function(ctx) {\n if (!this.textBackgroundColor && !this.styleHas('textBackgroundColor')) {\n return;\n }\n var lineTopOffset = 0, heightOfLine,\n lineLeftOffset, originalFill = ctx.fillStyle,\n line, lastColor,\n leftOffset = this._getLeftOffset(),\n topOffset = this._getTopOffset(),\n boxStart = 0, boxWidth = 0, charBox, currentColor;\n\n for (var i = 0, len = this._textLines.length; i < len; i++) {\n heightOfLine = this.getHeightOfLine(i);\n if (!this.textBackgroundColor && !this.styleHas('textBackgroundColor', i)) {\n lineTopOffset += heightOfLine;\n continue;\n }\n line = this._textLines[i];\n lineLeftOffset = this._getLineLeftOffset(i);\n boxWidth = 0;\n boxStart = 0;\n lastColor = this.getValueOfPropertyAt(i, 0, 'textBackgroundColor');\n for (var j = 0, jlen = line.length; j < jlen; j++) {\n charBox = this.__charBounds[i][j];\n currentColor = this.getValueOfPropertyAt(i, j, 'textBackgroundColor');\n if (currentColor !== lastColor) {\n ctx.fillStyle = lastColor;\n lastColor && ctx.fillRect(\n leftOffset + lineLeftOffset + boxStart,\n topOffset + lineTopOffset,\n boxWidth,\n heightOfLine / this.lineHeight\n );\n boxStart = charBox.left;\n boxWidth = charBox.width;\n lastColor = currentColor;\n }\n else {\n boxWidth += charBox.kernedWidth;\n }\n }\n if (currentColor) {\n ctx.fillStyle = currentColor;\n ctx.fillRect(\n leftOffset + lineLeftOffset + boxStart,\n topOffset + lineTopOffset,\n boxWidth,\n heightOfLine / this.lineHeight\n );\n }\n lineTopOffset += heightOfLine;\n }\n ctx.fillStyle = originalFill;\n // if there is text background color no\n // other shadows should be casted\n this._removeShadow(ctx);\n },\n\n /**\n * @private\n * @param {Object} decl style declaration for cache\n * @param {String} decl.fontFamily fontFamily\n * @param {String} decl.fontStyle fontStyle\n * @param {String} decl.fontWeight fontWeight\n * @return {Object} reference to cache\n */\n getFontCache: function(decl) {\n var fontFamily = decl.fontFamily.toLowerCase();\n if (!fabric.charWidthsCache[fontFamily]) {\n fabric.charWidthsCache[fontFamily] = { };\n }\n var cache = fabric.charWidthsCache[fontFamily],\n cacheProp = decl.fontStyle.toLowerCase() + '_' + (decl.fontWeight + '').toLowerCase();\n if (!cache[cacheProp]) {\n cache[cacheProp] = { };\n }\n return cache[cacheProp];\n },\n\n /**\n * apply all the character style to canvas for rendering\n * @private\n * @param {String} _char\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @param {Object} [decl]\n */\n _applyCharStyles: function(method, ctx, lineIndex, charIndex, styleDeclaration) {\n\n this._setFillStyles(ctx, styleDeclaration);\n this._setStrokeStyles(ctx, styleDeclaration);\n\n ctx.font = this._getFontDeclaration(styleDeclaration);\n },\n\n /**\n * measure and return the width of a single character.\n * possibly overridden to accommodate different measure logic or\n * to hook some external lib for character measurement\n * @private\n * @param {String} char to be measured\n * @param {Object} charStyle style of char to be measured\n * @param {String} [previousChar] previous char\n * @param {Object} [prevCharStyle] style of previous char\n */\n _measureChar: function(_char, charStyle, previousChar, prevCharStyle) {\n // first i try to return from cache\n var fontCache = this.getFontCache(charStyle), fontDeclaration = this._getFontDeclaration(charStyle),\n previousFontDeclaration = this._getFontDeclaration(prevCharStyle), couple = previousChar + _char,\n stylesAreEqual = fontDeclaration === previousFontDeclaration, width, coupleWidth, previousWidth,\n fontMultiplier = charStyle.fontSize / this.CACHE_FONT_SIZE, kernedWidth;\n\n if (previousChar && fontCache[previousChar] !== undefined) {\n previousWidth = fontCache[previousChar];\n }\n if (fontCache[_char] !== undefined) {\n kernedWidth = width = fontCache[_char];\n }\n if (stylesAreEqual && fontCache[couple] !== undefined) {\n coupleWidth = fontCache[couple];\n kernedWidth = coupleWidth - previousWidth;\n }\n if (width === undefined || previousWidth === undefined || coupleWidth === undefined) {\n var ctx = this.getMeasuringContext();\n // send a TRUE to specify measuring font size CACHE_FONT_SIZE\n this._setTextStyles(ctx, charStyle, true);\n }\n if (width === undefined) {\n kernedWidth = width = ctx.measureText(_char).width;\n fontCache[_char] = width;\n }\n if (previousWidth === undefined && stylesAreEqual && previousChar) {\n previousWidth = ctx.measureText(previousChar).width;\n fontCache[previousChar] = previousWidth;\n }\n if (stylesAreEqual && coupleWidth === undefined) {\n // we can measure the kerning couple and subtract the width of the previous character\n coupleWidth = ctx.measureText(couple).width;\n fontCache[couple] = coupleWidth;\n kernedWidth = coupleWidth - previousWidth;\n }\n return { width: width * fontMultiplier, kernedWidth: kernedWidth * fontMultiplier };\n },\n\n /**\n * Computes height of character at given position\n * @param {Number} line the line number\n * @param {Number} char the character number\n * @return {Number} fontSize of the character\n */\n getHeightOfChar: function(line, char) {\n return this.getValueOfPropertyAt(line, char, 'fontSize');\n },\n\n /**\n * measure a text line measuring all characters.\n * @param {Number} lineIndex line number\n * @return {Number} Line width\n */\n measureLine: function(lineIndex) {\n var lineInfo = this._measureLine(lineIndex);\n if (this.charSpacing !== 0) {\n lineInfo.width -= this._getWidthOfCharSpacing();\n }\n if (lineInfo.width < 0) {\n lineInfo.width = 0;\n }\n return lineInfo;\n },\n\n /**\n * measure every grapheme of a line, populating __charBounds\n * @param {Number} lineIndex\n * @return {Object} object.width total width of characters\n * @return {Object} object.widthOfSpaces length of chars that match this._reSpacesAndTabs\n */\n _measureLine: function(lineIndex) {\n var width = 0, i, grapheme, line = this._textLines[lineIndex], prevGrapheme,\n graphemeInfo, numOfSpaces = 0, lineBounds = new Array(line.length);\n\n this.__charBounds[lineIndex] = lineBounds;\n for (i = 0; i < line.length; i++) {\n grapheme = line[i];\n graphemeInfo = this._getGraphemeBox(grapheme, lineIndex, i, prevGrapheme);\n lineBounds[i] = graphemeInfo;\n width += graphemeInfo.kernedWidth;\n prevGrapheme = grapheme;\n }\n // this latest bound box represent the last character of the line\n // to simplify cursor handling in interactive mode.\n lineBounds[i] = {\n left: graphemeInfo ? graphemeInfo.left + graphemeInfo.width : 0,\n width: 0,\n kernedWidth: 0,\n height: this.fontSize\n };\n return { width: width, numOfSpaces: numOfSpaces };\n },\n\n /**\n * Measure and return the info of a single grapheme.\n * needs the the info of previous graphemes already filled\n * @private\n * @param {String} grapheme to be measured\n * @param {Number} lineIndex index of the line where the char is\n * @param {Number} charIndex position in the line\n * @param {String} [prevGrapheme] character preceding the one to be measured\n */\n _getGraphemeBox: function(grapheme, lineIndex, charIndex, prevGrapheme, skipLeft) {\n var style = this.getCompleteStyleDeclaration(lineIndex, charIndex),\n prevStyle = prevGrapheme ? this.getCompleteStyleDeclaration(lineIndex, charIndex - 1) : { },\n info = this._measureChar(grapheme, style, prevGrapheme, prevStyle),\n kernedWidth = info.kernedWidth,\n width = info.width, charSpacing;\n\n if (this.charSpacing !== 0) {\n charSpacing = this._getWidthOfCharSpacing();\n width += charSpacing;\n kernedWidth += charSpacing;\n }\n\n var box = {\n width: width,\n left: 0,\n height: style.fontSize,\n kernedWidth: kernedWidth,\n deltaY: style.deltaY,\n };\n if (charIndex > 0 && !skipLeft) {\n var previousBox = this.__charBounds[lineIndex][charIndex - 1];\n box.left = previousBox.left + previousBox.width + info.kernedWidth - info.width;\n }\n return box;\n },\n\n /**\n * Calculate height of line at 'lineIndex'\n * @param {Number} lineIndex index of line to calculate\n * @return {Number}\n */\n getHeightOfLine: function(lineIndex) {\n if (this.__lineHeights[lineIndex]) {\n return this.__lineHeights[lineIndex];\n }\n\n var line = this._textLines[lineIndex],\n // char 0 is measured before the line cycle because it nneds to char\n // emptylines\n maxHeight = this.getHeightOfChar(lineIndex, 0);\n for (var i = 1, len = line.length; i < len; i++) {\n maxHeight = Math.max(this.getHeightOfChar(lineIndex, i), maxHeight);\n }\n\n return this.__lineHeights[lineIndex] = maxHeight * this.lineHeight * this._fontSizeMult;\n },\n\n /**\n * Calculate text box height\n */\n calcTextHeight: function() {\n var lineHeight, height = 0;\n for (var i = 0, len = this._textLines.length; i < len; i++) {\n lineHeight = this.getHeightOfLine(i);\n height += (i === len - 1 ? lineHeight / this.lineHeight : lineHeight);\n }\n return height;\n },\n\n /**\n * @private\n * @return {Number} Left offset\n */\n _getLeftOffset: function() {\n return -this.width / 2;\n },\n\n /**\n * @private\n * @return {Number} Top offset\n */\n _getTopOffset: function() {\n return -this.height / 2;\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {String} method Method name (\"fillText\" or \"strokeText\")\n */\n _renderTextCommon: function(ctx, method) {\n ctx.save();\n var lineHeights = 0, left = this._getLeftOffset(), top = this._getTopOffset(),\n offsets = this._applyPatternGradientTransform(ctx, method === 'fillText' ? this.fill : this.stroke);\n for (var i = 0, len = this._textLines.length; i < len; i++) {\n var heightOfLine = this.getHeightOfLine(i),\n maxHeight = heightOfLine / this.lineHeight,\n leftOffset = this._getLineLeftOffset(i);\n this._renderTextLine(\n method,\n ctx,\n this._textLines[i],\n left + leftOffset - offsets.offsetX,\n top + lineHeights + maxHeight - offsets.offsetY,\n i\n );\n lineHeights += heightOfLine;\n }\n ctx.restore();\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderTextFill: function(ctx) {\n if (!this.fill && !this.styleHas('fill')) {\n return;\n }\n\n this._renderTextCommon(ctx, 'fillText');\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderTextStroke: function(ctx) {\n if ((!this.stroke || this.strokeWidth === 0) && this.isEmptyStyles()) {\n return;\n }\n\n if (this.shadow && !this.shadow.affectStroke) {\n this._removeShadow(ctx);\n }\n\n ctx.save();\n this._setLineDash(ctx, this.strokeDashArray);\n ctx.beginPath();\n this._renderTextCommon(ctx, 'strokeText');\n ctx.closePath();\n ctx.restore();\n },\n\n /**\n * @private\n * @param {String} method\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {String} line Content of the line\n * @param {Number} left\n * @param {Number} top\n * @param {Number} lineIndex\n * @param {Number} charOffset\n */\n _renderChars: function(method, ctx, line, left, top, lineIndex) {\n // set proper line offset\n var lineHeight = this.getHeightOfLine(lineIndex),\n isJustify = this.textAlign.indexOf('justify') !== -1,\n actualStyle,\n nextStyle,\n charsToRender = '',\n charBox,\n boxWidth = 0,\n timeToRender,\n shortCut = !isJustify && this.charSpacing === 0 && this.isEmptyStyles(lineIndex);\n\n ctx.save();\n top -= lineHeight * this._fontSizeFraction / this.lineHeight;\n if (shortCut) {\n // render all the line in one pass without checking\n this._renderChar(method, ctx, lineIndex, 0, this.textLines[lineIndex], left, top, lineHeight);\n ctx.restore();\n return;\n }\n for (var i = 0, len = line.length - 1; i <= len; i++) {\n timeToRender = i === len || this.charSpacing;\n charsToRender += line[i];\n charBox = this.__charBounds[lineIndex][i];\n if (boxWidth === 0) {\n left += charBox.kernedWidth - charBox.width;\n boxWidth += charBox.width;\n }\n else {\n boxWidth += charBox.kernedWidth;\n }\n if (isJustify && !timeToRender) {\n if (this._reSpaceAndTab.test(line[i])) {\n timeToRender = true;\n }\n }\n if (!timeToRender) {\n // if we have charSpacing, we render char by char\n actualStyle = actualStyle || this.getCompleteStyleDeclaration(lineIndex, i);\n nextStyle = this.getCompleteStyleDeclaration(lineIndex, i + 1);\n timeToRender = this._hasStyleChanged(actualStyle, nextStyle);\n }\n if (timeToRender) {\n this._renderChar(method, ctx, lineIndex, i, charsToRender, left, top, lineHeight);\n charsToRender = '';\n actualStyle = nextStyle;\n left += boxWidth;\n boxWidth = 0;\n }\n }\n ctx.restore();\n },\n\n /**\n * @private\n * @param {String} method\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @param {String} _char\n * @param {Number} left Left coordinate\n * @param {Number} top Top coordinate\n * @param {Number} lineHeight Height of the line\n */\n _renderChar: function(method, ctx, lineIndex, charIndex, _char, left, top) {\n var decl = this._getStyleDeclaration(lineIndex, charIndex),\n fullDecl = this.getCompleteStyleDeclaration(lineIndex, charIndex),\n shouldFill = method === 'fillText' && fullDecl.fill,\n shouldStroke = method === 'strokeText' && fullDecl.stroke && fullDecl.strokeWidth;\n\n if (!shouldStroke && !shouldFill) {\n return;\n }\n decl && ctx.save();\n\n this._applyCharStyles(method, ctx, lineIndex, charIndex, fullDecl);\n\n if (decl && decl.textBackgroundColor) {\n this._removeShadow(ctx);\n }\n if (decl && decl.deltaY) {\n top += decl.deltaY;\n }\n\n shouldFill && ctx.fillText(_char, left, top);\n shouldStroke && ctx.strokeText(_char, left, top);\n decl && ctx.restore();\n },\n\n /**\n * Turns the character into a 'superior figure' (i.e. 'superscript')\n * @param {Number} start selection start\n * @param {Number} end selection end\n * @returns {fabric.Text} thisArg\n * @chainable\n */\n setSuperscript: function(start, end) {\n return this._setScript(start, end, this.superscript);\n },\n\n /**\n * Turns the character into an 'inferior figure' (i.e. 'subscript')\n * @param {Number} start selection start\n * @param {Number} end selection end\n * @returns {fabric.Text} thisArg\n * @chainable\n */\n setSubscript: function(start, end) {\n return this._setScript(start, end, this.subscript);\n },\n\n /**\n * Applies 'schema' at given position\n * @private\n * @param {Number} start selection start\n * @param {Number} end selection end\n * @param {Number} schema\n * @returns {fabric.Text} thisArg\n * @chainable\n */\n _setScript: function(start, end, schema) {\n var loc = this.get2DCursorLocation(start, true),\n fontSize = this.getValueOfPropertyAt(loc.lineIndex, loc.charIndex, 'fontSize'),\n dy = this.getValueOfPropertyAt(loc.lineIndex, loc.charIndex, 'deltaY'),\n style = { fontSize: fontSize * schema.size, deltaY: dy + fontSize * schema.baseline };\n this.setSelectionStyles(style, start, end);\n return this;\n },\n\n /**\n * @private\n * @param {Object} prevStyle\n * @param {Object} thisStyle\n */\n _hasStyleChanged: function(prevStyle, thisStyle) {\n return prevStyle.fill !== thisStyle.fill ||\n prevStyle.stroke !== thisStyle.stroke ||\n prevStyle.strokeWidth !== thisStyle.strokeWidth ||\n prevStyle.fontSize !== thisStyle.fontSize ||\n prevStyle.fontFamily !== thisStyle.fontFamily ||\n prevStyle.fontWeight !== thisStyle.fontWeight ||\n prevStyle.fontStyle !== thisStyle.fontStyle ||\n prevStyle.deltaY !== thisStyle.deltaY;\n },\n\n /**\n * @private\n * @param {Object} prevStyle\n * @param {Object} thisStyle\n */\n _hasStyleChangedForSvg: function(prevStyle, thisStyle) {\n return this._hasStyleChanged(prevStyle, thisStyle) ||\n prevStyle.overline !== thisStyle.overline ||\n prevStyle.underline !== thisStyle.underline ||\n prevStyle.linethrough !== thisStyle.linethrough;\n },\n\n /**\n * @private\n * @param {Number} lineIndex index text line\n * @return {Number} Line left offset\n */\n _getLineLeftOffset: function(lineIndex) {\n var lineWidth = this.getLineWidth(lineIndex);\n if (this.textAlign === 'center') {\n return (this.width - lineWidth) / 2;\n }\n if (this.textAlign === 'right') {\n return this.width - lineWidth;\n }\n if (this.textAlign === 'justify-center' && this.isEndOfWrapping(lineIndex)) {\n return (this.width - lineWidth) / 2;\n }\n if (this.textAlign === 'justify-right' && this.isEndOfWrapping(lineIndex)) {\n return this.width - lineWidth;\n }\n return 0;\n },\n\n /**\n * @private\n */\n _clearCache: function() {\n this.__lineWidths = [];\n this.__lineHeights = [];\n this.__charBounds = [];\n },\n\n /**\n * @private\n */\n _shouldClearDimensionCache: function() {\n var shouldClear = this._forceClearCache;\n shouldClear || (shouldClear = this.hasStateChanged('_dimensionAffectingProps'));\n if (shouldClear) {\n this.dirty = true;\n this._forceClearCache = false;\n }\n return shouldClear;\n },\n\n /**\n * Measure a single line given its index. Used to calculate the initial\n * text bounding box. The values are calculated and stored in __lineWidths cache.\n * @private\n * @param {Number} lineIndex line number\n * @return {Number} Line width\n */\n getLineWidth: function(lineIndex) {\n if (this.__lineWidths[lineIndex]) {\n return this.__lineWidths[lineIndex];\n }\n\n var width, line = this._textLines[lineIndex], lineInfo;\n\n if (line === '') {\n width = 0;\n }\n else {\n lineInfo = this.measureLine(lineIndex);\n width = lineInfo.width;\n }\n this.__lineWidths[lineIndex] = width;\n return width;\n },\n\n _getWidthOfCharSpacing: function() {\n if (this.charSpacing !== 0) {\n return this.fontSize * this.charSpacing / 1000;\n }\n return 0;\n },\n\n /**\n * Retrieves the value of property at given character position\n * @param {Number} lineIndex the line number\n * @param {Number} charIndex the charater number\n * @param {String} property the property name\n * @returns the value of 'property'\n */\n getValueOfPropertyAt: function(lineIndex, charIndex, property) {\n var charStyle = this._getStyleDeclaration(lineIndex, charIndex);\n if (charStyle && typeof charStyle[property] !== 'undefined') {\n return charStyle[property];\n }\n return this[property];\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderTextDecoration: function(ctx, type) {\n if (!this[type] && !this.styleHas(type)) {\n return;\n }\n var heightOfLine, size, _size,\n lineLeftOffset, dy, _dy,\n line, lastDecoration,\n leftOffset = this._getLeftOffset(),\n topOffset = this._getTopOffset(), top,\n boxStart, boxWidth, charBox, currentDecoration,\n maxHeight, currentFill, lastFill,\n charSpacing = this._getWidthOfCharSpacing();\n\n for (var i = 0, len = this._textLines.length; i < len; i++) {\n heightOfLine = this.getHeightOfLine(i);\n if (!this[type] && !this.styleHas(type, i)) {\n topOffset += heightOfLine;\n continue;\n }\n line = this._textLines[i];\n maxHeight = heightOfLine / this.lineHeight;\n lineLeftOffset = this._getLineLeftOffset(i);\n boxStart = 0;\n boxWidth = 0;\n lastDecoration = this.getValueOfPropertyAt(i, 0, type);\n lastFill = this.getValueOfPropertyAt(i, 0, 'fill');\n top = topOffset + maxHeight * (1 - this._fontSizeFraction);\n size = this.getHeightOfChar(i, 0);\n dy = this.getValueOfPropertyAt(i, 0, 'deltaY');\n for (var j = 0, jlen = line.length; j < jlen; j++) {\n charBox = this.__charBounds[i][j];\n currentDecoration = this.getValueOfPropertyAt(i, j, type);\n currentFill = this.getValueOfPropertyAt(i, j, 'fill');\n _size = this.getHeightOfChar(i, j);\n _dy = this.getValueOfPropertyAt(i, j, 'deltaY');\n if ((currentDecoration !== lastDecoration || currentFill !== lastFill || _size !== size || _dy !== dy) &&\n boxWidth > 0) {\n ctx.fillStyle = lastFill;\n lastDecoration && lastFill && ctx.fillRect(\n leftOffset + lineLeftOffset + boxStart,\n top + this.offsets[type] * size + dy,\n boxWidth,\n this.fontSize / 15\n );\n boxStart = charBox.left;\n boxWidth = charBox.width;\n lastDecoration = currentDecoration;\n lastFill = currentFill;\n size = _size;\n dy = _dy;\n }\n else {\n boxWidth += charBox.kernedWidth;\n }\n }\n ctx.fillStyle = currentFill;\n currentDecoration && currentFill && ctx.fillRect(\n leftOffset + lineLeftOffset + boxStart,\n top + this.offsets[type] * size + dy,\n boxWidth - charSpacing,\n this.fontSize / 15\n );\n topOffset += heightOfLine;\n }\n // if there is text background color no\n // other shadows should be casted\n this._removeShadow(ctx);\n },\n\n /**\n * return font declaration string for canvas context\n * @param {Object} [styleObject] object\n * @returns {String} font declaration formatted for canvas context.\n */\n _getFontDeclaration: function(styleObject, forMeasuring) {\n var style = styleObject || this, family = this.fontFamily,\n fontIsGeneric = fabric.Text.genericFonts.indexOf(family.toLowerCase()) > -1;\n var fontFamily = family === undefined ||\n family.indexOf('\\'') > -1 ||\n family.indexOf('\"') > -1 || fontIsGeneric\n ? style.fontFamily : '\"' + style.fontFamily + '\"';\n return [\n // node-canvas needs \"weight style\", while browsers need \"style weight\"\n (fabric.isLikelyNode ? style.fontWeight : style.fontStyle),\n (fabric.isLikelyNode ? style.fontStyle : style.fontWeight),\n forMeasuring ? this.CACHE_FONT_SIZE + 'px' : style.fontSize + 'px',\n fontFamily\n ].join(' ');\n },\n\n /**\n * Renders text instance on a specified context\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n render: function(ctx) {\n // do not render if object is not visible\n if (!this.visible) {\n return;\n }\n if (this.canvas && this.canvas.skipOffscreen && !this.group && !this.isOnScreen()) {\n return;\n }\n if (this._shouldClearDimensionCache()) {\n this.initDimensions();\n }\n this.callSuper('render', ctx);\n },\n\n /**\n * Returns the text as an array of lines.\n * @param {String} text text to split\n * @returns {Array} Lines in the text\n */\n _splitTextIntoLines: function(text) {\n var lines = text.split(this._reNewline),\n newLines = new Array(lines.length),\n newLine = ['\\n'],\n newText = [];\n for (var i = 0; i < lines.length; i++) {\n newLines[i] = fabric.util.string.graphemeSplit(lines[i]);\n newText = newText.concat(newLines[i], newLine);\n }\n newText.pop();\n return { _unwrappedLines: newLines, lines: lines, graphemeText: newText, graphemeLines: newLines };\n },\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} Object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n var additionalProperties = [\n 'text',\n 'fontSize',\n 'fontWeight',\n 'fontFamily',\n 'fontStyle',\n 'lineHeight',\n 'underline',\n 'overline',\n 'linethrough',\n 'textAlign',\n 'textBackgroundColor',\n 'charSpacing',\n ].concat(propertiesToInclude);\n var obj = this.callSuper('toObject', additionalProperties);\n obj.styles = clone(this.styles, true);\n return obj;\n },\n\n /**\n * Sets property to a given value. When changing position/dimension -related properties (left, top, scale, angle, etc.) `set` does not update position of object's borders/controls. If you need to update those, call `setCoords()`.\n * @param {String|Object} key Property name or object (if object, iterate over the object properties)\n * @param {Object|Function} value Property value (if function, the value is passed into it and its return value is used as a new one)\n * @return {fabric.Object} thisArg\n * @chainable\n */\n set: function(key, value) {\n this.callSuper('set', key, value);\n var needsDims = false;\n if (typeof key === 'object') {\n for (var _key in key) {\n needsDims = needsDims || this._dimensionAffectingProps.indexOf(_key) !== -1;\n }\n }\n else {\n needsDims = this._dimensionAffectingProps.indexOf(key) !== -1;\n }\n if (needsDims) {\n this.initDimensions();\n this.setCoords();\n }\n return this;\n },\n\n /**\n * Returns complexity of an instance\n * @return {Number} complexity\n */\n complexity: function() {\n return 1;\n }\n });\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by {@link fabric.Text.fromElement})\n * @static\n * @memberOf fabric.Text\n * @see: http://www.w3.org/TR/SVG/text.html#TextElement\n */\n fabric.Text.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat(\n 'x y dx dy font-family font-style font-weight font-size letter-spacing text-decoration text-anchor'.split(' '));\n\n /**\n * Default SVG font size\n * @static\n * @memberOf fabric.Text\n */\n fabric.Text.DEFAULT_SVG_FONT_SIZE = 16;\n\n /**\n * Returns fabric.Text instance from an SVG element (not yet implemented)\n * @static\n * @memberOf fabric.Text\n * @param {SVGElement} element Element to parse\n * @param {Function} callback callback function invoked after parsing\n * @param {Object} [options] Options object\n */\n fabric.Text.fromElement = function(element, callback, options) {\n if (!element) {\n return callback(null);\n }\n\n var parsedAttributes = fabric.parseAttributes(element, fabric.Text.ATTRIBUTE_NAMES),\n parsedAnchor = parsedAttributes.textAnchor || 'left';\n options = fabric.util.object.extend((options ? clone(options) : { }), parsedAttributes);\n\n options.top = options.top || 0;\n options.left = options.left || 0;\n if (parsedAttributes.textDecoration) {\n var textDecoration = parsedAttributes.textDecoration;\n if (textDecoration.indexOf('underline') !== -1) {\n options.underline = true;\n }\n if (textDecoration.indexOf('overline') !== -1) {\n options.overline = true;\n }\n if (textDecoration.indexOf('line-through') !== -1) {\n options.linethrough = true;\n }\n delete options.textDecoration;\n }\n if ('dx' in parsedAttributes) {\n options.left += parsedAttributes.dx;\n }\n if ('dy' in parsedAttributes) {\n options.top += parsedAttributes.dy;\n }\n if (!('fontSize' in options)) {\n options.fontSize = fabric.Text.DEFAULT_SVG_FONT_SIZE;\n }\n\n var textContent = '';\n\n // The XML is not properly parsed in IE9 so a workaround to get\n // textContent is through firstChild.data. Another workaround would be\n // to convert XML loaded from a file to be converted using DOMParser (same way loadSVGFromString() does)\n if (!('textContent' in element)) {\n if ('firstChild' in element && element.firstChild !== null) {\n if ('data' in element.firstChild && element.firstChild.data !== null) {\n textContent = element.firstChild.data;\n }\n }\n }\n else {\n textContent = element.textContent;\n }\n\n textContent = textContent.replace(/^\\s+|\\s+$|\\n+/g, '').replace(/\\s+/g, ' ');\n var originalStrokeWidth = options.strokeWidth;\n options.strokeWidth = 0;\n\n var text = new fabric.Text(textContent, options),\n textHeightScaleFactor = text.getScaledHeight() / text.height,\n lineHeightDiff = (text.height + text.strokeWidth) * text.lineHeight - text.height,\n scaledDiff = lineHeightDiff * textHeightScaleFactor,\n textHeight = text.getScaledHeight() + scaledDiff,\n offX = 0;\n /*\n Adjust positioning:\n x/y attributes in SVG correspond to the bottom-left corner of text bounding box\n fabric output by default at top, left.\n */\n if (parsedAnchor === 'center') {\n offX = text.getScaledWidth() / 2;\n }\n if (parsedAnchor === 'right') {\n offX = text.getScaledWidth();\n }\n text.set({\n left: text.left - offX,\n top: text.top - (textHeight - text.fontSize * (0.07 + text._fontSizeFraction)) / text.lineHeight,\n strokeWidth: typeof originalStrokeWidth !== 'undefined' ? originalStrokeWidth : 1,\n });\n callback(text);\n };\n /* _FROM_SVG_END_ */\n\n /**\n * Returns fabric.Text instance from an object representation\n * @static\n * @memberOf fabric.Text\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] Callback to invoke when an fabric.Text instance is created\n */\n fabric.Text.fromObject = function(object, callback) {\n return fabric.Object._fromObject('Text', object, callback, 'text');\n };\n\n fabric.Text.genericFonts = ['sans-serif', 'serif', 'cursive', 'fantasy', 'monospace'];\n\n fabric.util.createAccessors && fabric.util.createAccessors(fabric.Text);\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function() {\n fabric.util.object.extend(fabric.Text.prototype, /** @lends fabric.Text.prototype */ {\n /**\n * Returns true if object has no styling or no styling in a line\n * @param {Number} lineIndex , lineIndex is on wrapped lines.\n * @return {Boolean}\n */\n isEmptyStyles: function(lineIndex) {\n if (!this.styles) {\n return true;\n }\n if (typeof lineIndex !== 'undefined' && !this.styles[lineIndex]) {\n return true;\n }\n var obj = typeof lineIndex === 'undefined' ? this.styles : { line: this.styles[lineIndex] };\n for (var p1 in obj) {\n for (var p2 in obj[p1]) {\n // eslint-disable-next-line no-unused-vars\n for (var p3 in obj[p1][p2]) {\n return false;\n }\n }\n }\n return true;\n },\n\n /**\n * Returns true if object has a style property or has it ina specified line\n * @param {Number} lineIndex\n * @return {Boolean}\n */\n styleHas: function(property, lineIndex) {\n if (!this.styles || !property || property === '') {\n return false;\n }\n if (typeof lineIndex !== 'undefined' && !this.styles[lineIndex]) {\n return false;\n }\n var obj = typeof lineIndex === 'undefined' ? this.styles : { line: this.styles[lineIndex] };\n // eslint-disable-next-line\n for (var p1 in obj) {\n // eslint-disable-next-line\n for (var p2 in obj[p1]) {\n if (typeof obj[p1][p2][property] !== 'undefined') {\n return true;\n }\n }\n }\n return false;\n },\n\n /**\n * Check if characters in a text have a value for a property\n * whose value matches the textbox's value for that property. If so,\n * the character-level property is deleted. If the character\n * has no other properties, then it is also deleted. Finally,\n * if the line containing that character has no other characters\n * then it also is deleted.\n *\n * @param {string} property The property to compare between characters and text.\n */\n cleanStyle: function(property) {\n if (!this.styles || !property || property === '') {\n return false;\n }\n var obj = this.styles, stylesCount = 0, letterCount, stylePropertyValue,\n allStyleObjectPropertiesMatch = true, graphemeCount = 0, styleObject;\n // eslint-disable-next-line\n for (var p1 in obj) {\n letterCount = 0;\n // eslint-disable-next-line\n for (var p2 in obj[p1]) {\n var styleObject = obj[p1][p2],\n stylePropertyHasBeenSet = styleObject.hasOwnProperty(property);\n\n stylesCount++;\n\n if (stylePropertyHasBeenSet) {\n if (!stylePropertyValue) {\n stylePropertyValue = styleObject[property];\n }\n else if (styleObject[property] !== stylePropertyValue) {\n allStyleObjectPropertiesMatch = false;\n }\n\n if (styleObject[property] === this[property]) {\n delete styleObject[property];\n }\n }\n else {\n allStyleObjectPropertiesMatch = false;\n }\n\n if (Object.keys(styleObject).length !== 0) {\n letterCount++;\n }\n else {\n delete obj[p1][p2];\n }\n }\n\n if (letterCount === 0) {\n delete obj[p1];\n }\n }\n // if every grapheme has the same style set then\n // delete those styles and set it on the parent\n for (var i = 0; i < this._textLines.length; i++) {\n graphemeCount += this._textLines[i].length;\n }\n if (allStyleObjectPropertiesMatch && stylesCount === graphemeCount) {\n this[property] = stylePropertyValue;\n this.removeStyle(property);\n }\n },\n\n /**\n * Remove a style property or properties from all individual character styles\n * in a text object. Deletes the character style object if it contains no other style\n * props. Deletes a line style object if it contains no other character styles.\n *\n * @param {String} props The property to remove from character styles.\n */\n removeStyle: function(property) {\n if (!this.styles || !property || property === '') {\n return;\n }\n var obj = this.styles, line, lineNum, charNum;\n for (lineNum in obj) {\n line = obj[lineNum];\n for (charNum in line) {\n delete line[charNum][property];\n if (Object.keys(line[charNum]).length === 0) {\n delete line[charNum];\n }\n }\n if (Object.keys(line).length === 0) {\n delete obj[lineNum];\n }\n }\n },\n\n /**\n * @private\n */\n _extendStyles: function(index, styles) {\n var loc = this.get2DCursorLocation(index);\n\n if (!this._getLineStyle(loc.lineIndex)) {\n this._setLineStyle(loc.lineIndex, {});\n }\n\n if (!this._getStyleDeclaration(loc.lineIndex, loc.charIndex)) {\n this._setStyleDeclaration(loc.lineIndex, loc.charIndex, {});\n }\n\n fabric.util.object.extend(this._getStyleDeclaration(loc.lineIndex, loc.charIndex), styles);\n },\n\n /**\n * Returns 2d representation (lineIndex and charIndex) of cursor (or selection start)\n * @param {Number} [selectionStart] Optional index. When not given, current selectionStart is used.\n * @param {Boolean} [skipWrapping] consider the location for unwrapped lines. usefull to manage styles.\n */\n get2DCursorLocation: function(selectionStart, skipWrapping) {\n if (typeof selectionStart === 'undefined') {\n selectionStart = this.selectionStart;\n }\n var lines = skipWrapping ? this._unwrappedTextLines : this._textLines;\n var len = lines.length;\n for (var i = 0; i < len; i++) {\n if (selectionStart <= lines[i].length) {\n return {\n lineIndex: i,\n charIndex: selectionStart\n };\n }\n selectionStart -= lines[i].length + 1;\n }\n return {\n lineIndex: i - 1,\n charIndex: lines[i - 1].length < selectionStart ? lines[i - 1].length : selectionStart\n };\n },\n\n /**\n * Gets style of a current selection/cursor (at the start position)\n * if startIndex or endIndex are not provided, slectionStart or selectionEnd will be used.\n * @param {Number} [startIndex] Start index to get styles at\n * @param {Number} [endIndex] End index to get styles at, if not specified selectionEnd or startIndex + 1\n * @param {Boolean} [complete] get full style or not\n * @return {Array} styles an array with one, zero or more Style objects\n */\n getSelectionStyles: function(startIndex, endIndex, complete) {\n if (typeof startIndex === 'undefined') {\n startIndex = this.selectionStart || 0;\n }\n if (typeof endIndex === 'undefined') {\n endIndex = this.selectionEnd || startIndex;\n }\n var styles = [];\n for (var i = startIndex; i < endIndex; i++) {\n styles.push(this.getStyleAtPosition(i, complete));\n }\n return styles;\n },\n\n /**\n * Gets style of a current selection/cursor position\n * @param {Number} position to get styles at\n * @param {Boolean} [complete] full style if true\n * @return {Object} style Style object at a specified index\n * @private\n */\n getStyleAtPosition: function(position, complete) {\n var loc = this.get2DCursorLocation(position),\n style = complete ? this.getCompleteStyleDeclaration(loc.lineIndex, loc.charIndex) :\n this._getStyleDeclaration(loc.lineIndex, loc.charIndex);\n return style || {};\n },\n\n /**\n * Sets style of a current selection, if no selection exist, do not set anything.\n * @param {Object} [styles] Styles object\n * @param {Number} [startIndex] Start index to get styles at\n * @param {Number} [endIndex] End index to get styles at, if not specified selectionEnd or startIndex + 1\n * @return {fabric.IText} thisArg\n * @chainable\n */\n setSelectionStyles: function(styles, startIndex, endIndex) {\n if (typeof startIndex === 'undefined') {\n startIndex = this.selectionStart || 0;\n }\n if (typeof endIndex === 'undefined') {\n endIndex = this.selectionEnd || startIndex;\n }\n for (var i = startIndex; i < endIndex; i++) {\n this._extendStyles(i, styles);\n }\n /* not included in _extendStyles to avoid clearing cache more than once */\n this._forceClearCache = true;\n return this;\n },\n\n /**\n * get the reference, not a clone, of the style object for a given character\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @return {Object} style object\n */\n _getStyleDeclaration: function(lineIndex, charIndex) {\n var lineStyle = this.styles && this.styles[lineIndex];\n if (!lineStyle) {\n return null;\n }\n return lineStyle[charIndex];\n },\n\n /**\n * return a new object that contains all the style property for a character\n * the object returned is newly created\n * @param {Number} lineIndex of the line where the character is\n * @param {Number} charIndex position of the character on the line\n * @return {Object} style object\n */\n getCompleteStyleDeclaration: function(lineIndex, charIndex) {\n var style = this._getStyleDeclaration(lineIndex, charIndex) || { },\n styleObject = { }, prop;\n for (var i = 0; i < this._styleProperties.length; i++) {\n prop = this._styleProperties[i];\n styleObject[prop] = typeof style[prop] === 'undefined' ? this[prop] : style[prop];\n }\n return styleObject;\n },\n\n /**\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @param {Object} style\n * @private\n */\n _setStyleDeclaration: function(lineIndex, charIndex, style) {\n this.styles[lineIndex][charIndex] = style;\n },\n\n /**\n *\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @private\n */\n _deleteStyleDeclaration: function(lineIndex, charIndex) {\n delete this.styles[lineIndex][charIndex];\n },\n\n /**\n * @param {Number} lineIndex\n * @private\n */\n _getLineStyle: function(lineIndex) {\n return this.styles[lineIndex];\n },\n\n /**\n * @param {Number} lineIndex\n * @param {Object} style\n * @private\n */\n _setLineStyle: function(lineIndex, style) {\n this.styles[lineIndex] = style;\n },\n\n /**\n * @param {Number} lineIndex\n * @private\n */\n _deleteLineStyle: function(lineIndex) {\n delete this.styles[lineIndex];\n }\n });\n})();\n\n\n(function() {\n\n function parseDecoration(object) {\n if (object.textDecoration) {\n object.textDecoration.indexOf('underline') > -1 && (object.underline = true);\n object.textDecoration.indexOf('line-through') > -1 && (object.linethrough = true);\n object.textDecoration.indexOf('overline') > -1 && (object.overline = true);\n delete object.textDecoration;\n }\n }\n\n /**\n * IText class (introduced in v1.4) Events are also fired with \"text:\"\n * prefix when observing canvas.\n * @class fabric.IText\n * @extends fabric.Text\n * @mixes fabric.Observable\n *\n * @fires changed\n * @fires selection:changed\n * @fires editing:entered\n * @fires editing:exited\n *\n * @return {fabric.IText} thisArg\n * @see {@link fabric.IText#initialize} for constructor definition\n *\n *

Supported key combinations:

\n *
\n   *   Move cursor:                    left, right, up, down\n   *   Select character:               shift + left, shift + right\n   *   Select text vertically:         shift + up, shift + down\n   *   Move cursor by word:            alt + left, alt + right\n   *   Select words:                   shift + alt + left, shift + alt + right\n   *   Move cursor to line start/end:  cmd + left, cmd + right or home, end\n   *   Select till start/end of line:  cmd + shift + left, cmd + shift + right or shift + home, shift + end\n   *   Jump to start/end of text:      cmd + up, cmd + down\n   *   Select till start/end of text:  cmd + shift + up, cmd + shift + down or shift + pgUp, shift + pgDown\n   *   Delete character:               backspace\n   *   Delete word:                    alt + backspace\n   *   Delete line:                    cmd + backspace\n   *   Forward delete:                 delete\n   *   Copy text:                      ctrl/cmd + c\n   *   Paste text:                     ctrl/cmd + v\n   *   Cut text:                       ctrl/cmd + x\n   *   Select entire text:             ctrl/cmd + a\n   *   Quit editing                    tab or esc\n   * 
\n *\n *

Supported mouse/touch combination

\n *
\n   *   Position cursor:                click/touch\n   *   Create selection:               click/touch & drag\n   *   Create selection:               click & shift + click\n   *   Select word:                    double click\n   *   Select line:                    triple click\n   * 
\n */\n fabric.IText = fabric.util.createClass(fabric.Text, fabric.Observable, /** @lends fabric.IText.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'i-text',\n\n /**\n * Index where text selection starts (or where cursor is when there is no selection)\n * @type Number\n * @default\n */\n selectionStart: 0,\n\n /**\n * Index where text selection ends\n * @type Number\n * @default\n */\n selectionEnd: 0,\n\n /**\n * Color of text selection\n * @type String\n * @default\n */\n selectionColor: 'rgba(17,119,255,0.3)',\n\n /**\n * Indicates whether text is in editing mode\n * @type Boolean\n * @default\n */\n isEditing: false,\n\n /**\n * Indicates whether a text can be edited\n * @type Boolean\n * @default\n */\n editable: true,\n\n /**\n * Border color of text object while it's in editing mode\n * @type String\n * @default\n */\n editingBorderColor: 'rgba(102,153,255,0.25)',\n\n /**\n * Width of cursor (in px)\n * @type Number\n * @default\n */\n cursorWidth: 2,\n\n /**\n * Color of default cursor (when not overwritten by character style)\n * @type String\n * @default\n */\n cursorColor: '#333',\n\n /**\n * Delay between cursor blink (in ms)\n * @type Number\n * @default\n */\n cursorDelay: 1000,\n\n /**\n * Duration of cursor fadein (in ms)\n * @type Number\n * @default\n */\n cursorDuration: 600,\n\n /**\n * Indicates whether internal text char widths can be cached\n * @type Boolean\n * @default\n */\n caching: true,\n\n /**\n * @private\n */\n _reSpace: /\\s|\\n/,\n\n /**\n * @private\n */\n _currentCursorOpacity: 0,\n\n /**\n * @private\n */\n _selectionDirection: null,\n\n /**\n * @private\n */\n _abortCursorAnimation: false,\n\n /**\n * @private\n */\n __widthOfSpace: [],\n\n /**\n * Helps determining when the text is in composition, so that the cursor\n * rendering is altered.\n */\n inCompositionMode: false,\n\n /**\n * Constructor\n * @param {String} text Text string\n * @param {Object} [options] Options object\n * @return {fabric.IText} thisArg\n */\n initialize: function(text, options) {\n this.callSuper('initialize', text, options);\n this.initBehavior();\n },\n\n /**\n * Sets selection start (left boundary of a selection)\n * @param {Number} index Index to set selection start to\n */\n setSelectionStart: function(index) {\n index = Math.max(index, 0);\n this._updateAndFire('selectionStart', index);\n },\n\n /**\n * Sets selection end (right boundary of a selection)\n * @param {Number} index Index to set selection end to\n */\n setSelectionEnd: function(index) {\n index = Math.min(index, this.text.length);\n this._updateAndFire('selectionEnd', index);\n },\n\n /**\n * @private\n * @param {String} property 'selectionStart' or 'selectionEnd'\n * @param {Number} index new position of property\n */\n _updateAndFire: function(property, index) {\n if (this[property] !== index) {\n this._fireSelectionChanged();\n this[property] = index;\n }\n this._updateTextarea();\n },\n\n /**\n * Fires the even of selection changed\n * @private\n */\n _fireSelectionChanged: function() {\n this.fire('selection:changed');\n this.canvas && this.canvas.fire('text:selection:changed', { target: this });\n },\n\n /**\n * Initialize text dimensions. Render all text on given context\n * or on a offscreen canvas to get the text width with measureText.\n * Updates this.width and this.height with the proper values.\n * Does not return dimensions.\n * @private\n */\n initDimensions: function() {\n this.isEditing && this.initDelayedCursor();\n this.clearContextTop();\n this.callSuper('initDimensions');\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n render: function(ctx) {\n this.clearContextTop();\n this.callSuper('render', ctx);\n // clear the cursorOffsetCache, so we ensure to calculate once per renderCursor\n // the correct position but not at every cursor animation.\n this.cursorOffsetCache = { };\n this.renderCursorOrSelection();\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(ctx) {\n this.callSuper('_render', ctx);\n },\n\n /**\n * Prepare and clean the contextTop\n */\n clearContextTop: function(skipRestore) {\n if (!this.isEditing) {\n return;\n }\n if (this.canvas && this.canvas.contextTop) {\n var ctx = this.canvas.contextTop, v = this.canvas.viewportTransform;\n ctx.save();\n ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]);\n this.transform(ctx);\n this.transformMatrix && ctx.transform.apply(ctx, this.transformMatrix);\n this._clearTextArea(ctx);\n skipRestore || ctx.restore();\n }\n },\n\n /**\n * Renders cursor or selection (depending on what exists)\n */\n renderCursorOrSelection: function() {\n if (!this.isEditing || !this.canvas) {\n return;\n }\n var boundaries = this._getCursorBoundaries(), ctx;\n if (this.canvas && this.canvas.contextTop) {\n ctx = this.canvas.contextTop;\n this.clearContextTop(true);\n }\n else {\n ctx = this.canvas.contextContainer;\n ctx.save();\n }\n if (this.selectionStart === this.selectionEnd) {\n this.renderCursor(boundaries, ctx);\n }\n else {\n this.renderSelection(boundaries, ctx);\n }\n ctx.restore();\n },\n\n _clearTextArea: function(ctx) {\n // we add 4 pixel, to be sure to do not leave any pixel out\n var width = this.width + 4, height = this.height + 4;\n ctx.clearRect(-width / 2, -height / 2, width, height);\n },\n\n /**\n * Returns cursor boundaries (left, top, leftOffset, topOffset)\n * @private\n * @param {Array} chars Array of characters\n * @param {String} typeOfBoundaries\n */\n _getCursorBoundaries: function(position) {\n\n // left/top are left/top of entire text box\n // leftOffset/topOffset are offset from that left/top point of a text box\n\n if (typeof position === 'undefined') {\n position = this.selectionStart;\n }\n\n var left = this._getLeftOffset(),\n top = this._getTopOffset(),\n offsets = this._getCursorBoundariesOffsets(position);\n\n return {\n left: left,\n top: top,\n leftOffset: offsets.left,\n topOffset: offsets.top\n };\n },\n\n /**\n * @private\n */\n _getCursorBoundariesOffsets: function(position) {\n if (this.cursorOffsetCache && 'top' in this.cursorOffsetCache) {\n return this.cursorOffsetCache;\n }\n var lineLeftOffset,\n lineIndex,\n charIndex,\n topOffset = 0,\n leftOffset = 0,\n boundaries,\n cursorPosition = this.get2DCursorLocation(position);\n charIndex = cursorPosition.charIndex;\n lineIndex = cursorPosition.lineIndex;\n for (var i = 0; i < lineIndex; i++) {\n topOffset += this.getHeightOfLine(i);\n }\n lineLeftOffset = this._getLineLeftOffset(lineIndex);\n var bound = this.__charBounds[lineIndex][charIndex];\n bound && (leftOffset = bound.left);\n if (this.charSpacing !== 0 && charIndex === this._textLines[lineIndex].length) {\n leftOffset -= this._getWidthOfCharSpacing();\n }\n boundaries = {\n top: topOffset,\n left: lineLeftOffset + (leftOffset > 0 ? leftOffset : 0),\n };\n this.cursorOffsetCache = boundaries;\n return this.cursorOffsetCache;\n },\n\n /**\n * Renders cursor\n * @param {Object} boundaries\n * @param {CanvasRenderingContext2D} ctx transformed context to draw on\n */\n renderCursor: function(boundaries, ctx) {\n var cursorLocation = this.get2DCursorLocation(),\n lineIndex = cursorLocation.lineIndex,\n charIndex = cursorLocation.charIndex > 0 ? cursorLocation.charIndex - 1 : 0,\n charHeight = this.getValueOfPropertyAt(lineIndex, charIndex, 'fontSize'),\n multiplier = this.scaleX * this.canvas.getZoom(),\n cursorWidth = this.cursorWidth / multiplier,\n topOffset = boundaries.topOffset,\n dy = this.getValueOfPropertyAt(lineIndex, charIndex, 'deltaY');\n\n topOffset += (1 - this._fontSizeFraction) * this.getHeightOfLine(lineIndex) / this.lineHeight\n - charHeight * (1 - this._fontSizeFraction);\n\n if (this.inCompositionMode) {\n this.renderSelection(boundaries, ctx);\n }\n\n ctx.fillStyle = this.getValueOfPropertyAt(lineIndex, charIndex, 'fill');\n ctx.globalAlpha = this.__isMousedown ? 1 : this._currentCursorOpacity;\n ctx.fillRect(\n boundaries.left + boundaries.leftOffset - cursorWidth / 2,\n topOffset + boundaries.top + dy,\n cursorWidth,\n charHeight);\n },\n\n /**\n * Renders text selection\n * @param {Object} boundaries Object with left/top/leftOffset/topOffset\n * @param {CanvasRenderingContext2D} ctx transformed context to draw on\n */\n renderSelection: function(boundaries, ctx) {\n\n var selectionStart = this.inCompositionMode ? this.hiddenTextarea.selectionStart : this.selectionStart,\n selectionEnd = this.inCompositionMode ? this.hiddenTextarea.selectionEnd : this.selectionEnd,\n isJustify = this.textAlign.indexOf('justify') !== -1,\n start = this.get2DCursorLocation(selectionStart),\n end = this.get2DCursorLocation(selectionEnd),\n startLine = start.lineIndex,\n endLine = end.lineIndex,\n startChar = start.charIndex < 0 ? 0 : start.charIndex,\n endChar = end.charIndex < 0 ? 0 : end.charIndex;\n\n for (var i = startLine; i <= endLine; i++) {\n var lineOffset = this._getLineLeftOffset(i) || 0,\n lineHeight = this.getHeightOfLine(i),\n realLineHeight = 0, boxStart = 0, boxEnd = 0;\n\n if (i === startLine) {\n boxStart = this.__charBounds[startLine][startChar].left;\n }\n if (i >= startLine && i < endLine) {\n boxEnd = isJustify && !this.isEndOfWrapping(i) ? this.width : this.getLineWidth(i) || 5; // WTF is this 5?\n }\n else if (i === endLine) {\n if (endChar === 0) {\n boxEnd = this.__charBounds[endLine][endChar].left;\n }\n else {\n var charSpacing = this._getWidthOfCharSpacing();\n boxEnd = this.__charBounds[endLine][endChar - 1].left\n + this.__charBounds[endLine][endChar - 1].width - charSpacing;\n }\n }\n realLineHeight = lineHeight;\n if (this.lineHeight < 1 || (i === endLine && this.lineHeight > 1)) {\n lineHeight /= this.lineHeight;\n }\n if (this.inCompositionMode) {\n ctx.fillStyle = this.compositionColor || 'black';\n ctx.fillRect(\n boundaries.left + lineOffset + boxStart,\n boundaries.top + boundaries.topOffset + lineHeight,\n boxEnd - boxStart,\n 1);\n }\n else {\n ctx.fillStyle = this.selectionColor;\n ctx.fillRect(\n boundaries.left + lineOffset + boxStart,\n boundaries.top + boundaries.topOffset,\n boxEnd - boxStart,\n lineHeight);\n }\n\n\n boundaries.topOffset += realLineHeight;\n }\n },\n\n /**\n * High level function to know the height of the cursor.\n * the currentChar is the one that precedes the cursor\n * Returns fontSize of char at the current cursor\n * @return {Number} Character font size\n */\n getCurrentCharFontSize: function() {\n var cp = this._getCurrentCharIndex();\n return this.getValueOfPropertyAt(cp.l, cp.c, 'fontSize');\n },\n\n /**\n * High level function to know the color of the cursor.\n * the currentChar is the one that precedes the cursor\n * Returns color (fill) of char at the current cursor\n * @return {String} Character color (fill)\n */\n getCurrentCharColor: function() {\n var cp = this._getCurrentCharIndex();\n return this.getValueOfPropertyAt(cp.l, cp.c, 'fill');\n },\n\n /**\n * Returns the cursor position for the getCurrent.. functions\n * @private\n */\n _getCurrentCharIndex: function() {\n var cursorPosition = this.get2DCursorLocation(this.selectionStart, true),\n charIndex = cursorPosition.charIndex > 0 ? cursorPosition.charIndex - 1 : 0;\n return { l: cursorPosition.lineIndex, c: charIndex };\n }\n });\n\n /**\n * Returns fabric.IText instance from an object representation\n * @static\n * @memberOf fabric.IText\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] invoked with new instance as argument\n */\n fabric.IText.fromObject = function(object, callback) {\n parseDecoration(object);\n if (object.styles) {\n for (var i in object.styles) {\n for (var j in object.styles[i]) {\n parseDecoration(object.styles[i][j]);\n }\n }\n }\n fabric.Object._fromObject('IText', object, callback, 'text');\n };\n})();\n\n\n(function() {\n\n var clone = fabric.util.object.clone;\n\n fabric.util.object.extend(fabric.IText.prototype, /** @lends fabric.IText.prototype */ {\n\n /**\n * Initializes all the interactive behavior of IText\n */\n initBehavior: function() {\n this.initAddedHandler();\n this.initRemovedHandler();\n this.initCursorSelectionHandlers();\n this.initDoubleClickSimulation();\n this.mouseMoveHandler = this.mouseMoveHandler.bind(this);\n },\n\n onDeselect: function() {\n this.isEditing && this.exitEditing();\n this.selected = false;\n },\n\n /**\n * Initializes \"added\" event handler\n */\n initAddedHandler: function() {\n var _this = this;\n this.on('added', function() {\n var canvas = _this.canvas;\n if (canvas) {\n if (!canvas._hasITextHandlers) {\n canvas._hasITextHandlers = true;\n _this._initCanvasHandlers(canvas);\n }\n canvas._iTextInstances = canvas._iTextInstances || [];\n canvas._iTextInstances.push(_this);\n }\n });\n },\n\n initRemovedHandler: function() {\n var _this = this;\n this.on('removed', function() {\n var canvas = _this.canvas;\n if (canvas) {\n canvas._iTextInstances = canvas._iTextInstances || [];\n fabric.util.removeFromArray(canvas._iTextInstances, _this);\n if (canvas._iTextInstances.length === 0) {\n canvas._hasITextHandlers = false;\n _this._removeCanvasHandlers(canvas);\n }\n }\n });\n },\n\n /**\n * register canvas event to manage exiting on other instances\n * @private\n */\n _initCanvasHandlers: function(canvas) {\n canvas._mouseUpITextHandler = function() {\n if (canvas._iTextInstances) {\n canvas._iTextInstances.forEach(function(obj) {\n obj.__isMousedown = false;\n });\n }\n };\n canvas.on('mouse:up', canvas._mouseUpITextHandler);\n },\n\n /**\n * remove canvas event to manage exiting on other instances\n * @private\n */\n _removeCanvasHandlers: function(canvas) {\n canvas.off('mouse:up', canvas._mouseUpITextHandler);\n },\n\n /**\n * @private\n */\n _tick: function() {\n this._currentTickState = this._animateCursor(this, 1, this.cursorDuration, '_onTickComplete');\n },\n\n /**\n * @private\n */\n _animateCursor: function(obj, targetOpacity, duration, completeMethod) {\n\n var tickState;\n\n tickState = {\n isAborted: false,\n abort: function() {\n this.isAborted = true;\n },\n };\n\n obj.animate('_currentCursorOpacity', targetOpacity, {\n duration: duration,\n onComplete: function() {\n if (!tickState.isAborted) {\n obj[completeMethod]();\n }\n },\n onChange: function() {\n // we do not want to animate a selection, only cursor\n if (obj.canvas && obj.selectionStart === obj.selectionEnd) {\n obj.renderCursorOrSelection();\n }\n },\n abort: function() {\n return tickState.isAborted;\n }\n });\n return tickState;\n },\n\n /**\n * @private\n */\n _onTickComplete: function() {\n\n var _this = this;\n\n if (this._cursorTimeout1) {\n clearTimeout(this._cursorTimeout1);\n }\n this._cursorTimeout1 = setTimeout(function() {\n _this._currentTickCompleteState = _this._animateCursor(_this, 0, this.cursorDuration / 2, '_tick');\n }, 100);\n },\n\n /**\n * Initializes delayed cursor\n */\n initDelayedCursor: function(restart) {\n var _this = this,\n delay = restart ? 0 : this.cursorDelay;\n\n this.abortCursorAnimation();\n this._currentCursorOpacity = 1;\n this._cursorTimeout2 = setTimeout(function() {\n _this._tick();\n }, delay);\n },\n\n /**\n * Aborts cursor animation and clears all timeouts\n */\n abortCursorAnimation: function() {\n var shouldClear = this._currentTickState || this._currentTickCompleteState,\n canvas = this.canvas;\n this._currentTickState && this._currentTickState.abort();\n this._currentTickCompleteState && this._currentTickCompleteState.abort();\n\n clearTimeout(this._cursorTimeout1);\n clearTimeout(this._cursorTimeout2);\n\n this._currentCursorOpacity = 0;\n // to clear just itext area we need to transform the context\n // it may not be worth it\n if (shouldClear && canvas) {\n canvas.clearContext(canvas.contextTop || canvas.contextContainer);\n }\n\n },\n\n /**\n * Selects entire text\n * @return {fabric.IText} thisArg\n * @chainable\n */\n selectAll: function() {\n this.selectionStart = 0;\n this.selectionEnd = this._text.length;\n this._fireSelectionChanged();\n this._updateTextarea();\n return this;\n },\n\n /**\n * Returns selected text\n * @return {String}\n */\n getSelectedText: function() {\n return this._text.slice(this.selectionStart, this.selectionEnd).join('');\n },\n\n /**\n * Find new selection index representing start of current word according to current selection index\n * @param {Number} startFrom Surrent selection index\n * @return {Number} New selection index\n */\n findWordBoundaryLeft: function(startFrom) {\n var offset = 0, index = startFrom - 1;\n\n // remove space before cursor first\n if (this._reSpace.test(this._text[index])) {\n while (this._reSpace.test(this._text[index])) {\n offset++;\n index--;\n }\n }\n while (/\\S/.test(this._text[index]) && index > -1) {\n offset++;\n index--;\n }\n\n return startFrom - offset;\n },\n\n /**\n * Find new selection index representing end of current word according to current selection index\n * @param {Number} startFrom Current selection index\n * @return {Number} New selection index\n */\n findWordBoundaryRight: function(startFrom) {\n var offset = 0, index = startFrom;\n\n // remove space after cursor first\n if (this._reSpace.test(this._text[index])) {\n while (this._reSpace.test(this._text[index])) {\n offset++;\n index++;\n }\n }\n while (/\\S/.test(this._text[index]) && index < this.text.length) {\n offset++;\n index++;\n }\n\n return startFrom + offset;\n },\n\n /**\n * Find new selection index representing start of current line according to current selection index\n * @param {Number} startFrom Current selection index\n * @return {Number} New selection index\n */\n findLineBoundaryLeft: function(startFrom) {\n var offset = 0, index = startFrom - 1;\n\n while (!/\\n/.test(this._text[index]) && index > -1) {\n offset++;\n index--;\n }\n\n return startFrom - offset;\n },\n\n /**\n * Find new selection index representing end of current line according to current selection index\n * @param {Number} startFrom Current selection index\n * @return {Number} New selection index\n */\n findLineBoundaryRight: function(startFrom) {\n var offset = 0, index = startFrom;\n\n while (!/\\n/.test(this._text[index]) && index < this.text.length) {\n offset++;\n index++;\n }\n\n return startFrom + offset;\n },\n\n /**\n * Finds index corresponding to beginning or end of a word\n * @param {Number} selectionStart Index of a character\n * @param {Number} direction 1 or -1\n * @return {Number} Index of the beginning or end of a word\n */\n searchWordBoundary: function(selectionStart, direction) {\n var index = this._reSpace.test(this.text.charAt(selectionStart)) ? selectionStart - 1 : selectionStart,\n _char = this.text.charAt(index),\n reNonWord = /[ \\n\\.,;!\\?\\-]/;\n\n while (!reNonWord.test(_char) && index > 0 && index < this.text.length) {\n index += direction;\n _char = this.text.charAt(index);\n }\n if (reNonWord.test(_char) && _char !== '\\n') {\n index += direction === 1 ? 0 : 1;\n }\n return index;\n },\n\n /**\n * Selects a word based on the index\n * @param {Number} selectionStart Index of a character\n */\n selectWord: function(selectionStart) {\n selectionStart = selectionStart || this.selectionStart;\n var newSelectionStart = this.searchWordBoundary(selectionStart, -1), /* search backwards */\n newSelectionEnd = this.searchWordBoundary(selectionStart, 1); /* search forward */\n\n this.selectionStart = newSelectionStart;\n this.selectionEnd = newSelectionEnd;\n this._fireSelectionChanged();\n this._updateTextarea();\n this.renderCursorOrSelection();\n },\n\n /**\n * Selects a line based on the index\n * @param {Number} selectionStart Index of a character\n * @return {fabric.IText} thisArg\n * @chainable\n */\n selectLine: function(selectionStart) {\n selectionStart = selectionStart || this.selectionStart;\n var newSelectionStart = this.findLineBoundaryLeft(selectionStart),\n newSelectionEnd = this.findLineBoundaryRight(selectionStart);\n\n this.selectionStart = newSelectionStart;\n this.selectionEnd = newSelectionEnd;\n this._fireSelectionChanged();\n this._updateTextarea();\n return this;\n },\n\n /**\n * Enters editing state\n * @return {fabric.IText} thisArg\n * @chainable\n */\n enterEditing: function(e) {\n if (this.isEditing || !this.editable) {\n return;\n }\n\n if (this.canvas) {\n this.canvas.calcOffset();\n this.exitEditingOnOthers(this.canvas);\n }\n\n this.isEditing = true;\n\n this.initHiddenTextarea(e);\n this.hiddenTextarea.focus();\n this.hiddenTextarea.value = this.text;\n this._updateTextarea();\n this._saveEditingProps();\n this._setEditingProps();\n this._textBeforeEdit = this.text;\n\n this._tick();\n this.fire('editing:entered');\n this._fireSelectionChanged();\n if (!this.canvas) {\n return this;\n }\n this.canvas.fire('text:editing:entered', { target: this });\n this.initMouseMoveHandler();\n this.canvas.requestRenderAll();\n return this;\n },\n\n exitEditingOnOthers: function(canvas) {\n if (canvas._iTextInstances) {\n canvas._iTextInstances.forEach(function(obj) {\n obj.selected = false;\n if (obj.isEditing) {\n obj.exitEditing();\n }\n });\n }\n },\n\n /**\n * Initializes \"mousemove\" event handler\n */\n initMouseMoveHandler: function() {\n this.canvas.on('mouse:move', this.mouseMoveHandler);\n },\n\n /**\n * @private\n */\n mouseMoveHandler: function(options) {\n if (!this.__isMousedown || !this.isEditing) {\n return;\n }\n\n var newSelectionStart = this.getSelectionStartFromPointer(options.e),\n currentStart = this.selectionStart,\n currentEnd = this.selectionEnd;\n if (\n (newSelectionStart !== this.__selectionStartOnMouseDown || currentStart === currentEnd)\n &&\n (currentStart === newSelectionStart || currentEnd === newSelectionStart)\n ) {\n return;\n }\n if (newSelectionStart > this.__selectionStartOnMouseDown) {\n this.selectionStart = this.__selectionStartOnMouseDown;\n this.selectionEnd = newSelectionStart;\n }\n else {\n this.selectionStart = newSelectionStart;\n this.selectionEnd = this.__selectionStartOnMouseDown;\n }\n if (this.selectionStart !== currentStart || this.selectionEnd !== currentEnd) {\n this.restartCursorIfNeeded();\n this._fireSelectionChanged();\n this._updateTextarea();\n this.renderCursorOrSelection();\n }\n },\n\n /**\n * @private\n */\n _setEditingProps: function() {\n this.hoverCursor = 'text';\n\n if (this.canvas) {\n this.canvas.defaultCursor = this.canvas.moveCursor = 'text';\n }\n\n this.borderColor = this.editingBorderColor;\n\n this.hasControls = this.selectable = false;\n this.lockMovementX = this.lockMovementY = true;\n },\n\n /**\n * convert from textarea to grapheme indexes\n */\n fromStringToGraphemeSelection: function(start, end, text) {\n var smallerTextStart = text.slice(0, start),\n graphemeStart = fabric.util.string.graphemeSplit(smallerTextStart).length;\n if (start === end) {\n return { selectionStart: graphemeStart, selectionEnd: graphemeStart };\n }\n var smallerTextEnd = text.slice(start, end),\n graphemeEnd = fabric.util.string.graphemeSplit(smallerTextEnd).length;\n return { selectionStart: graphemeStart, selectionEnd: graphemeStart + graphemeEnd };\n },\n\n /**\n * convert from fabric to textarea values\n */\n fromGraphemeToStringSelection: function(start, end, _text) {\n var smallerTextStart = _text.slice(0, start),\n graphemeStart = smallerTextStart.join('').length;\n if (start === end) {\n return { selectionStart: graphemeStart, selectionEnd: graphemeStart };\n }\n var smallerTextEnd = _text.slice(start, end),\n graphemeEnd = smallerTextEnd.join('').length;\n return { selectionStart: graphemeStart, selectionEnd: graphemeStart + graphemeEnd };\n },\n\n /**\n * @private\n */\n _updateTextarea: function() {\n this.cursorOffsetCache = { };\n if (!this.hiddenTextarea) {\n return;\n }\n if (!this.inCompositionMode) {\n var newSelection = this.fromGraphemeToStringSelection(this.selectionStart, this.selectionEnd, this._text);\n this.hiddenTextarea.selectionStart = newSelection.selectionStart;\n this.hiddenTextarea.selectionEnd = newSelection.selectionEnd;\n }\n this.updateTextareaPosition();\n },\n\n /**\n * @private\n */\n updateFromTextArea: function() {\n if (!this.hiddenTextarea) {\n return;\n }\n this.cursorOffsetCache = { };\n this.text = this.hiddenTextarea.value;\n if (this._shouldClearDimensionCache()) {\n this.initDimensions();\n this.setCoords();\n }\n var newSelection = this.fromStringToGraphemeSelection(\n this.hiddenTextarea.selectionStart, this.hiddenTextarea.selectionEnd, this.hiddenTextarea.value);\n this.selectionEnd = this.selectionStart = newSelection.selectionEnd;\n if (!this.inCompositionMode) {\n this.selectionStart = newSelection.selectionStart;\n }\n this.updateTextareaPosition();\n },\n\n /**\n * @private\n */\n updateTextareaPosition: function() {\n if (this.selectionStart === this.selectionEnd) {\n var style = this._calcTextareaPosition();\n this.hiddenTextarea.style.left = style.left;\n this.hiddenTextarea.style.top = style.top;\n }\n },\n\n /**\n * @private\n * @return {Object} style contains style for hiddenTextarea\n */\n _calcTextareaPosition: function() {\n if (!this.canvas) {\n return { x: 1, y: 1 };\n }\n var desiredPostion = this.inCompositionMode ? this.compositionStart : this.selectionStart,\n boundaries = this._getCursorBoundaries(desiredPostion),\n cursorLocation = this.get2DCursorLocation(desiredPostion),\n lineIndex = cursorLocation.lineIndex,\n charIndex = cursorLocation.charIndex,\n charHeight = this.getValueOfPropertyAt(lineIndex, charIndex, 'fontSize') * this.lineHeight,\n leftOffset = boundaries.leftOffset,\n m = this.calcTransformMatrix(),\n p = {\n x: boundaries.left + leftOffset,\n y: boundaries.top + boundaries.topOffset + charHeight\n },\n upperCanvas = this.canvas.upperCanvasEl,\n upperCanvasWidth = upperCanvas.width,\n upperCanvasHeight = upperCanvas.height,\n maxWidth = upperCanvasWidth - charHeight,\n maxHeight = upperCanvasHeight - charHeight,\n scaleX = upperCanvas.clientWidth / upperCanvasWidth,\n scaleY = upperCanvas.clientHeight / upperCanvasHeight;\n\n p = fabric.util.transformPoint(p, m);\n p = fabric.util.transformPoint(p, this.canvas.viewportTransform);\n p.x *= scaleX;\n p.y *= scaleY;\n if (p.x < 0) {\n p.x = 0;\n }\n if (p.x > maxWidth) {\n p.x = maxWidth;\n }\n if (p.y < 0) {\n p.y = 0;\n }\n if (p.y > maxHeight) {\n p.y = maxHeight;\n }\n\n // add canvas offset on document\n p.x += this.canvas._offset.left;\n p.y += this.canvas._offset.top;\n\n return { left: p.x + 'px', top: p.y + 'px', fontSize: charHeight + 'px', charHeight: charHeight };\n },\n\n /**\n * @private\n */\n _saveEditingProps: function() {\n this._savedProps = {\n hasControls: this.hasControls,\n borderColor: this.borderColor,\n lockMovementX: this.lockMovementX,\n lockMovementY: this.lockMovementY,\n hoverCursor: this.hoverCursor,\n defaultCursor: this.canvas && this.canvas.defaultCursor,\n moveCursor: this.canvas && this.canvas.moveCursor\n };\n },\n\n /**\n * @private\n */\n _restoreEditingProps: function() {\n if (!this._savedProps) {\n return;\n }\n\n this.hoverCursor = this._savedProps.hoverCursor;\n this.hasControls = this._savedProps.hasControls;\n this.borderColor = this._savedProps.borderColor;\n this.lockMovementX = this._savedProps.lockMovementX;\n this.lockMovementY = this._savedProps.lockMovementY;\n\n if (this.canvas) {\n this.canvas.defaultCursor = this._savedProps.defaultCursor;\n this.canvas.moveCursor = this._savedProps.moveCursor;\n }\n },\n\n /**\n * Exits from editing state\n * @return {fabric.IText} thisArg\n * @chainable\n */\n exitEditing: function() {\n var isTextChanged = (this._textBeforeEdit !== this.text);\n this.selected = false;\n this.isEditing = false;\n this.selectable = true;\n\n this.selectionEnd = this.selectionStart;\n\n if (this.hiddenTextarea) {\n this.hiddenTextarea.blur && this.hiddenTextarea.blur();\n this.canvas && this.hiddenTextarea.parentNode.removeChild(this.hiddenTextarea);\n this.hiddenTextarea = null;\n }\n\n this.abortCursorAnimation();\n this._restoreEditingProps();\n this._currentCursorOpacity = 0;\n if (this._shouldClearDimensionCache()) {\n this.initDimensions();\n this.setCoords();\n }\n this.fire('editing:exited');\n isTextChanged && this.fire('modified');\n if (this.canvas) {\n this.canvas.off('mouse:move', this.mouseMoveHandler);\n this.canvas.fire('text:editing:exited', { target: this });\n isTextChanged && this.canvas.fire('object:modified', { target: this });\n }\n return this;\n },\n\n /**\n * @private\n */\n _removeExtraneousStyles: function() {\n for (var prop in this.styles) {\n if (!this._textLines[prop]) {\n delete this.styles[prop];\n }\n }\n },\n\n /**\n * remove and reflow a style block from start to end.\n * @param {Number} start linear start position for removal (included in removal)\n * @param {Number} end linear end position for removal ( excluded from removal )\n */\n removeStyleFromTo: function(start, end) {\n var cursorStart = this.get2DCursorLocation(start, true),\n cursorEnd = this.get2DCursorLocation(end, true),\n lineStart = cursorStart.lineIndex,\n charStart = cursorStart.charIndex,\n lineEnd = cursorEnd.lineIndex,\n charEnd = cursorEnd.charIndex,\n i, styleObj;\n if (lineStart !== lineEnd) {\n // step1 remove the trailing of lineStart\n if (this.styles[lineStart]) {\n for (i = charStart; i < this._unwrappedTextLines[lineStart].length; i++) {\n delete this.styles[lineStart][i];\n }\n }\n // step2 move the trailing of lineEnd to lineStart if needed\n if (this.styles[lineEnd]) {\n for (i = charEnd; i < this._unwrappedTextLines[lineEnd].length; i++) {\n styleObj = this.styles[lineEnd][i];\n if (styleObj) {\n this.styles[lineStart] || (this.styles[lineStart] = { });\n this.styles[lineStart][charStart + i - charEnd] = styleObj;\n }\n }\n }\n // step3 detects lines will be completely removed.\n for (i = lineStart + 1; i <= lineEnd; i++) {\n delete this.styles[i];\n }\n // step4 shift remaining lines.\n this.shiftLineStyles(lineEnd, lineStart - lineEnd);\n }\n else {\n // remove and shift left on the same line\n if (this.styles[lineStart]) {\n styleObj = this.styles[lineStart];\n var diff = charEnd - charStart, numericChar, _char;\n for (i = charStart; i < charEnd; i++) {\n delete styleObj[i];\n }\n for (_char in this.styles[lineStart]) {\n numericChar = parseInt(_char, 10);\n if (numericChar >= charEnd) {\n styleObj[numericChar - diff] = styleObj[_char];\n delete styleObj[_char];\n }\n }\n }\n }\n },\n\n /**\n * Shifts line styles up or down\n * @param {Number} lineIndex Index of a line\n * @param {Number} offset Can any number?\n */\n shiftLineStyles: function(lineIndex, offset) {\n // shift all line styles by offset upward or downward\n // do not clone deep. we need new array, not new style objects\n var clonedStyles = clone(this.styles);\n for (var line in this.styles) {\n var numericLine = parseInt(line, 10);\n if (numericLine > lineIndex) {\n this.styles[numericLine + offset] = clonedStyles[numericLine];\n if (!clonedStyles[numericLine - offset]) {\n delete this.styles[numericLine];\n }\n }\n }\n },\n\n restartCursorIfNeeded: function() {\n if (!this._currentTickState || this._currentTickState.isAborted\n || !this._currentTickCompleteState || this._currentTickCompleteState.isAborted\n ) {\n this.initDelayedCursor();\n }\n },\n\n /**\n * Inserts new style object\n * @param {Number} lineIndex Index of a line\n * @param {Number} charIndex Index of a char\n * @param {Number} qty number of lines to add\n * @param {Array} copiedStyle Array of objects styles\n */\n insertNewlineStyleObject: function(lineIndex, charIndex, qty, copiedStyle) {\n var currentCharStyle,\n newLineStyles = {},\n somethingAdded = false;\n\n qty || (qty = 1);\n this.shiftLineStyles(lineIndex, qty);\n if (this.styles[lineIndex]) {\n currentCharStyle = this.styles[lineIndex][charIndex === 0 ? charIndex : charIndex - 1];\n }\n\n // we clone styles of all chars\n // after cursor onto the current line\n for (var index in this.styles[lineIndex]) {\n var numIndex = parseInt(index, 10);\n if (numIndex >= charIndex) {\n somethingAdded = true;\n newLineStyles[numIndex - charIndex] = this.styles[lineIndex][index];\n // remove lines from the previous line since they're on a new line now\n delete this.styles[lineIndex][index];\n }\n }\n if (somethingAdded) {\n this.styles[lineIndex + qty] = newLineStyles;\n }\n else {\n delete this.styles[lineIndex + qty];\n }\n // for the other lines\n // we clone current char style onto the next (otherwise empty) line\n while (qty > 1) {\n qty--;\n if (copiedStyle && copiedStyle[qty]) {\n this.styles[lineIndex + qty] = { 0: clone(copiedStyle[qty]) };\n }\n else if (currentCharStyle) {\n this.styles[lineIndex + qty] = { 0: clone(currentCharStyle) };\n }\n else {\n delete this.styles[lineIndex + qty];\n }\n }\n this._forceClearCache = true;\n },\n\n /**\n * Inserts style object for a given line/char index\n * @param {Number} lineIndex Index of a line\n * @param {Number} charIndex Index of a char\n * @param {Number} quantity number Style object to insert, if given\n * @param {Array} copiedStyle array of style objecs\n */\n insertCharStyleObject: function(lineIndex, charIndex, quantity, copiedStyle) {\n if (!this.styles) {\n this.styles = {};\n }\n var currentLineStyles = this.styles[lineIndex],\n currentLineStylesCloned = currentLineStyles ? clone(currentLineStyles) : {};\n\n quantity || (quantity = 1);\n // shift all char styles by quantity forward\n // 0,1,2,3 -> (charIndex=2) -> 0,1,3,4 -> (insert 2) -> 0,1,2,3,4\n for (var index in currentLineStylesCloned) {\n var numericIndex = parseInt(index, 10);\n if (numericIndex >= charIndex) {\n currentLineStyles[numericIndex + quantity] = currentLineStylesCloned[numericIndex];\n // only delete the style if there was nothing moved there\n if (!currentLineStylesCloned[numericIndex - quantity]) {\n delete currentLineStyles[numericIndex];\n }\n }\n }\n this._forceClearCache = true;\n if (copiedStyle) {\n while (quantity--) {\n if (!Object.keys(copiedStyle[quantity]).length) {\n continue;\n }\n if (!this.styles[lineIndex]) {\n this.styles[lineIndex] = {};\n }\n this.styles[lineIndex][charIndex + quantity] = clone(copiedStyle[quantity]);\n }\n return;\n }\n if (!currentLineStyles) {\n return;\n }\n var newStyle = currentLineStyles[charIndex ? charIndex - 1 : 1];\n while (newStyle && quantity--) {\n this.styles[lineIndex][charIndex + quantity] = clone(newStyle);\n }\n },\n\n /**\n * Inserts style object(s)\n * @param {Array} insertedText Characters at the location where style is inserted\n * @param {Number} start cursor index for inserting style\n * @param {Array} [copiedStyle] array of style objects to insert.\n */\n insertNewStyleBlock: function(insertedText, start, copiedStyle) {\n var cursorLoc = this.get2DCursorLocation(start, true),\n addedLines = [0], linesLenght = 0;\n for (var i = 0; i < insertedText.length; i++) {\n if (insertedText[i] === '\\n') {\n linesLenght++;\n addedLines[linesLenght] = 0;\n }\n else {\n addedLines[linesLenght]++;\n }\n }\n if (addedLines[0] > 0) {\n this.insertCharStyleObject(cursorLoc.lineIndex, cursorLoc.charIndex, addedLines[0], copiedStyle);\n copiedStyle = copiedStyle && copiedStyle.slice(addedLines[0] + 1);\n }\n linesLenght && this.insertNewlineStyleObject(\n cursorLoc.lineIndex, cursorLoc.charIndex + addedLines[0], linesLenght);\n for (var i = 1; i < linesLenght; i++) {\n if (addedLines[i] > 0) {\n this.insertCharStyleObject(cursorLoc.lineIndex + i, 0, addedLines[i], copiedStyle);\n }\n else if (copiedStyle) {\n this.styles[cursorLoc.lineIndex + i][0] = copiedStyle[0];\n }\n copiedStyle = copiedStyle && copiedStyle.slice(addedLines[i] + 1);\n }\n // we use i outside the loop to get it like linesLength\n if (addedLines[i] > 0) {\n this.insertCharStyleObject(cursorLoc.lineIndex + i, 0, addedLines[i], copiedStyle);\n }\n },\n\n /**\n * Set the selectionStart and selectionEnd according to the ne postion of cursor\n * mimic the key - mouse navigation when shift is pressed.\n */\n setSelectionStartEndWithShift: function(start, end, newSelection) {\n if (newSelection <= start) {\n if (end === start) {\n this._selectionDirection = 'left';\n }\n else if (this._selectionDirection === 'right') {\n this._selectionDirection = 'left';\n this.selectionEnd = start;\n }\n this.selectionStart = newSelection;\n }\n else if (newSelection > start && newSelection < end) {\n if (this._selectionDirection === 'right') {\n this.selectionEnd = newSelection;\n }\n else {\n this.selectionStart = newSelection;\n }\n }\n else {\n // newSelection is > selection start and end\n if (end === start) {\n this._selectionDirection = 'right';\n }\n else if (this._selectionDirection === 'left') {\n this._selectionDirection = 'right';\n this.selectionStart = end;\n }\n this.selectionEnd = newSelection;\n }\n },\n\n setSelectionInBoundaries: function() {\n var length = this.text.length;\n if (this.selectionStart > length) {\n this.selectionStart = length;\n }\n else if (this.selectionStart < 0) {\n this.selectionStart = 0;\n }\n if (this.selectionEnd > length) {\n this.selectionEnd = length;\n }\n else if (this.selectionEnd < 0) {\n this.selectionEnd = 0;\n }\n }\n });\n})();\n\n\nfabric.util.object.extend(fabric.IText.prototype, /** @lends fabric.IText.prototype */ {\n /**\n * Initializes \"dbclick\" event handler\n */\n initDoubleClickSimulation: function() {\n\n // for double click\n this.__lastClickTime = +new Date();\n\n // for triple click\n this.__lastLastClickTime = +new Date();\n\n this.__lastPointer = { };\n\n this.on('mousedown', this.onMouseDown);\n },\n\n /**\n * Default event handler to simulate triple click\n * @private\n */\n onMouseDown: function(options) {\n if (!this.canvas) {\n return;\n }\n this.__newClickTime = +new Date();\n var newPointer = options.pointer;\n if (this.isTripleClick(newPointer)) {\n this.fire('tripleclick', options);\n this._stopEvent(options.e);\n }\n this.__lastLastClickTime = this.__lastClickTime;\n this.__lastClickTime = this.__newClickTime;\n this.__lastPointer = newPointer;\n this.__lastIsEditing = this.isEditing;\n this.__lastSelected = this.selected;\n },\n\n isTripleClick: function(newPointer) {\n return this.__newClickTime - this.__lastClickTime < 500 &&\n this.__lastClickTime - this.__lastLastClickTime < 500 &&\n this.__lastPointer.x === newPointer.x &&\n this.__lastPointer.y === newPointer.y;\n },\n\n /**\n * @private\n */\n _stopEvent: function(e) {\n e.preventDefault && e.preventDefault();\n e.stopPropagation && e.stopPropagation();\n },\n\n /**\n * Initializes event handlers related to cursor or selection\n */\n initCursorSelectionHandlers: function() {\n this.initMousedownHandler();\n this.initMouseupHandler();\n this.initClicks();\n },\n\n /**\n * Initializes double and triple click event handlers\n */\n initClicks: function() {\n this.on('mousedblclick', function(options) {\n this.selectWord(this.getSelectionStartFromPointer(options.e));\n });\n this.on('tripleclick', function(options) {\n this.selectLine(this.getSelectionStartFromPointer(options.e));\n });\n },\n\n /**\n * Default event handler for the basic functionalities needed on _mouseDown\n * can be overridden to do something different.\n * Scope of this implementation is: find the click position, set selectionStart\n * find selectionEnd, initialize the drawing of either cursor or selection area\n */\n _mouseDownHandler: function(options) {\n if (!this.canvas || !this.editable || (options.e.button && options.e.button !== 1)) {\n return;\n }\n\n this.__isMousedown = true;\n\n if (this.selected) {\n this.setCursorByClick(options.e);\n }\n\n if (this.isEditing) {\n this.__selectionStartOnMouseDown = this.selectionStart;\n if (this.selectionStart === this.selectionEnd) {\n this.abortCursorAnimation();\n }\n this.renderCursorOrSelection();\n }\n },\n\n /**\n * Default event handler for the basic functionalities needed on mousedown:before\n * can be overridden to do something different.\n * Scope of this implementation is: verify the object is already selected when mousing down\n */\n _mouseDownHandlerBefore: function(options) {\n if (!this.canvas || !this.editable || (options.e.button && options.e.button !== 1)) {\n return;\n }\n if (this === this.canvas._activeObject) {\n this.selected = true;\n }\n },\n\n /**\n * Initializes \"mousedown\" event handler\n */\n initMousedownHandler: function() {\n this.on('mousedown', this._mouseDownHandler);\n this.on('mousedown:before', this._mouseDownHandlerBefore);\n },\n\n /**\n * Initializes \"mouseup\" event handler\n */\n initMouseupHandler: function() {\n this.on('mouseup', this.mouseUpHandler);\n },\n\n /**\n * standard hander for mouse up, overridable\n * @private\n */\n mouseUpHandler: function(options) {\n this.__isMousedown = false;\n if (!this.editable || this.group ||\n (options.transform && options.transform.actionPerformed) ||\n (options.e.button && options.e.button !== 1)) {\n return;\n }\n\n if (this.__lastSelected && !this.__corner) {\n this.selected = false;\n this.__lastSelected = false;\n this.enterEditing(options.e);\n if (this.selectionStart === this.selectionEnd) {\n this.initDelayedCursor(true);\n }\n else {\n this.renderCursorOrSelection();\n }\n }\n else {\n this.selected = true;\n }\n },\n\n /**\n * Changes cursor location in a text depending on passed pointer (x/y) object\n * @param {Event} e Event object\n */\n setCursorByClick: function(e) {\n var newSelection = this.getSelectionStartFromPointer(e),\n start = this.selectionStart, end = this.selectionEnd;\n if (e.shiftKey) {\n this.setSelectionStartEndWithShift(start, end, newSelection);\n }\n else {\n this.selectionStart = newSelection;\n this.selectionEnd = newSelection;\n }\n if (this.isEditing) {\n this._fireSelectionChanged();\n this._updateTextarea();\n }\n },\n\n /**\n * Returns index of a character corresponding to where an object was clicked\n * @param {Event} e Event object\n * @return {Number} Index of a character\n */\n getSelectionStartFromPointer: function(e) {\n var mouseOffset = this.getLocalPointer(e),\n prevWidth = 0,\n width = 0,\n height = 0,\n charIndex = 0,\n lineIndex = 0,\n lineLeftOffset,\n line;\n\n for (var i = 0, len = this._textLines.length; i < len; i++) {\n if (height <= mouseOffset.y) {\n height += this.getHeightOfLine(i) * this.scaleY;\n lineIndex = i;\n if (i > 0) {\n charIndex += this._textLines[i - 1].length + 1;\n }\n }\n else {\n break;\n }\n }\n lineLeftOffset = this._getLineLeftOffset(lineIndex);\n width = lineLeftOffset * this.scaleX;\n line = this._textLines[lineIndex];\n for (var j = 0, jlen = line.length; j < jlen; j++) {\n prevWidth = width;\n // i removed something about flipX here, check.\n width += this.__charBounds[lineIndex][j].kernedWidth * this.scaleX;\n if (width <= mouseOffset.x) {\n charIndex++;\n }\n else {\n break;\n }\n }\n return this._getNewSelectionStartFromOffset(mouseOffset, prevWidth, width, charIndex, jlen);\n },\n\n /**\n * @private\n */\n _getNewSelectionStartFromOffset: function(mouseOffset, prevWidth, width, index, jlen) {\n // we need Math.abs because when width is after the last char, the offset is given as 1, while is 0\n var distanceBtwLastCharAndCursor = mouseOffset.x - prevWidth,\n distanceBtwNextCharAndCursor = width - mouseOffset.x,\n offset = distanceBtwNextCharAndCursor > distanceBtwLastCharAndCursor ||\n distanceBtwNextCharAndCursor < 0 ? 0 : 1,\n newSelectionStart = index + offset;\n // if object is horizontally flipped, mirror cursor location from the end\n if (this.flipX) {\n newSelectionStart = jlen - newSelectionStart;\n }\n\n if (newSelectionStart > this._text.length) {\n newSelectionStart = this._text.length;\n }\n\n return newSelectionStart;\n }\n});\n\n\nfabric.util.object.extend(fabric.IText.prototype, /** @lends fabric.IText.prototype */ {\n\n /**\n * Initializes hidden textarea (needed to bring up keyboard in iOS)\n */\n initHiddenTextarea: function() {\n this.hiddenTextarea = fabric.document.createElement('textarea');\n this.hiddenTextarea.setAttribute('autocapitalize', 'off');\n this.hiddenTextarea.setAttribute('autocorrect', 'off');\n this.hiddenTextarea.setAttribute('autocomplete', 'off');\n this.hiddenTextarea.setAttribute('spellcheck', 'false');\n this.hiddenTextarea.setAttribute('data-fabric-hiddentextarea', '');\n this.hiddenTextarea.setAttribute('wrap', 'off');\n var style = this._calcTextareaPosition();\n // line-height: 1px; was removed from the style to fix this:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=870966\n this.hiddenTextarea.style.cssText = 'position: absolute; top: ' + style.top +\n '; left: ' + style.left + '; z-index: -999; opacity: 0; width: 1px; height: 1px; font-size: 1px;' +\n ' paddingーtop: ' + style.fontSize + ';';\n fabric.document.body.appendChild(this.hiddenTextarea);\n\n fabric.util.addListener(this.hiddenTextarea, 'keydown', this.onKeyDown.bind(this));\n fabric.util.addListener(this.hiddenTextarea, 'keyup', this.onKeyUp.bind(this));\n fabric.util.addListener(this.hiddenTextarea, 'input', this.onInput.bind(this));\n fabric.util.addListener(this.hiddenTextarea, 'copy', this.copy.bind(this));\n fabric.util.addListener(this.hiddenTextarea, 'cut', this.copy.bind(this));\n fabric.util.addListener(this.hiddenTextarea, 'paste', this.paste.bind(this));\n fabric.util.addListener(this.hiddenTextarea, 'compositionstart', this.onCompositionStart.bind(this));\n fabric.util.addListener(this.hiddenTextarea, 'compositionupdate', this.onCompositionUpdate.bind(this));\n fabric.util.addListener(this.hiddenTextarea, 'compositionend', this.onCompositionEnd.bind(this));\n\n if (!this._clickHandlerInitialized && this.canvas) {\n fabric.util.addListener(this.canvas.upperCanvasEl, 'click', this.onClick.bind(this));\n this._clickHandlerInitialized = true;\n }\n },\n\n /**\n * For functionalities on keyDown\n * Map a special key to a function of the instance/prototype\n * If you need different behaviour for ESC or TAB or arrows, you have to change\n * this map setting the name of a function that you build on the fabric.Itext or\n * your prototype.\n * the map change will affect all Instances unless you need for only some text Instances\n * in that case you have to clone this object and assign your Instance.\n * this.keysMap = fabric.util.object.clone(this.keysMap);\n * The function must be in fabric.Itext.prototype.myFunction And will receive event as args[0]\n */\n keysMap: {\n 9: 'exitEditing',\n 27: 'exitEditing',\n 33: 'moveCursorUp',\n 34: 'moveCursorDown',\n 35: 'moveCursorRight',\n 36: 'moveCursorLeft',\n 37: 'moveCursorLeft',\n 38: 'moveCursorUp',\n 39: 'moveCursorRight',\n 40: 'moveCursorDown',\n },\n\n /**\n * For functionalities on keyUp + ctrl || cmd\n */\n ctrlKeysMapUp: {\n 67: 'copy',\n 88: 'cut'\n },\n\n /**\n * For functionalities on keyDown + ctrl || cmd\n */\n ctrlKeysMapDown: {\n 65: 'selectAll'\n },\n\n onClick: function() {\n // No need to trigger click event here, focus is enough to have the keyboard appear on Android\n this.hiddenTextarea && this.hiddenTextarea.focus();\n },\n\n /**\n * Handles keyup event\n * @param {Event} e Event object\n */\n onKeyDown: function(e) {\n if (!this.isEditing || this.inCompositionMode) {\n return;\n }\n if (e.keyCode in this.keysMap) {\n this[this.keysMap[e.keyCode]](e);\n }\n else if ((e.keyCode in this.ctrlKeysMapDown) && (e.ctrlKey || e.metaKey)) {\n this[this.ctrlKeysMapDown[e.keyCode]](e);\n }\n else {\n return;\n }\n e.stopImmediatePropagation();\n e.preventDefault();\n if (e.keyCode >= 33 && e.keyCode <= 40) {\n // if i press an arrow key just update selection\n this.clearContextTop();\n this.renderCursorOrSelection();\n }\n else {\n this.canvas && this.canvas.requestRenderAll();\n }\n },\n\n /**\n * Handles keyup event\n * We handle KeyUp because ie11 and edge have difficulties copy/pasting\n * if a copy/cut event fired, keyup is dismissed\n * @param {Event} e Event object\n */\n onKeyUp: function(e) {\n if (!this.isEditing || this._copyDone || this.inCompositionMode) {\n this._copyDone = false;\n return;\n }\n if ((e.keyCode in this.ctrlKeysMapUp) && (e.ctrlKey || e.metaKey)) {\n this[this.ctrlKeysMapUp[e.keyCode]](e);\n }\n else {\n return;\n }\n e.stopImmediatePropagation();\n e.preventDefault();\n this.canvas && this.canvas.requestRenderAll();\n },\n\n /**\n * Handles onInput event\n * @param {Event} e Event object\n */\n onInput: function(e) {\n var fromPaste = this.fromPaste;\n this.fromPaste = false;\n e && e.stopPropagation();\n if (!this.isEditing) {\n return;\n }\n // decisions about style changes.\n var nextText = this._splitTextIntoLines(this.hiddenTextarea.value).graphemeText,\n charCount = this._text.length,\n nextCharCount = nextText.length,\n removedText, insertedText,\n charDiff = nextCharCount - charCount;\n if (this.hiddenTextarea.value === '') {\n this.styles = { };\n this.updateFromTextArea();\n this.fire('changed');\n if (this.canvas) {\n this.canvas.fire('text:changed', { target: this });\n this.canvas.requestRenderAll();\n }\n return;\n }\n\n var textareaSelection = this.fromStringToGraphemeSelection(\n this.hiddenTextarea.selectionStart,\n this.hiddenTextarea.selectionEnd,\n this.hiddenTextarea.value\n );\n var backDelete = this.selectionStart > textareaSelection.selectionStart;\n\n if (this.selectionStart !== this.selectionEnd) {\n removedText = this._text.slice(this.selectionStart, this.selectionEnd);\n charDiff += this.selectionEnd - this.selectionStart;\n }\n else if (nextCharCount < charCount) {\n if (backDelete) {\n removedText = this._text.slice(this.selectionEnd + charDiff, this.selectionEnd);\n }\n else {\n removedText = this._text.slice(this.selectionStart, this.selectionStart - charDiff);\n }\n }\n insertedText = nextText.slice(textareaSelection.selectionEnd - charDiff, textareaSelection.selectionEnd);\n if (removedText && removedText.length) {\n if (this.selectionStart !== this.selectionEnd) {\n this.removeStyleFromTo(this.selectionStart, this.selectionEnd);\n }\n else if (backDelete) {\n // detect differencies between forwardDelete and backDelete\n this.removeStyleFromTo(this.selectionEnd - removedText.length, this.selectionEnd);\n }\n else {\n this.removeStyleFromTo(this.selectionEnd, this.selectionEnd + removedText.length);\n }\n }\n if (insertedText.length) {\n if (fromPaste && insertedText.join('') === fabric.copiedText) {\n this.insertNewStyleBlock(insertedText, this.selectionStart, fabric.copiedTextStyle);\n }\n else {\n this.insertNewStyleBlock(insertedText, this.selectionStart);\n }\n }\n this.updateFromTextArea();\n this.fire('changed');\n if (this.canvas) {\n this.canvas.fire('text:changed', { target: this });\n this.canvas.requestRenderAll();\n }\n },\n /**\n * Composition start\n */\n onCompositionStart: function() {\n this.inCompositionMode = true;\n },\n\n /**\n * Composition end\n */\n onCompositionEnd: function() {\n this.inCompositionMode = false;\n },\n\n // /**\n // * Composition update\n // */\n onCompositionUpdate: function(e) {\n this.compositionStart = e.target.selectionStart;\n this.compositionEnd = e.target.selectionEnd;\n this.updateTextareaPosition();\n },\n\n /**\n * Copies selected text\n * @param {Event} e Event object\n */\n copy: function() {\n if (this.selectionStart === this.selectionEnd) {\n //do not cut-copy if no selection\n return;\n }\n\n fabric.copiedText = this.getSelectedText();\n fabric.copiedTextStyle = this.getSelectionStyles(this.selectionStart, this.selectionEnd, true);\n this._copyDone = true;\n },\n\n /**\n * Pastes text\n * @param {Event} e Event object\n */\n paste: function() {\n this.fromPaste = true;\n },\n\n /**\n * @private\n * @param {Event} e Event object\n * @return {Object} Clipboard data object\n */\n _getClipboardData: function(e) {\n return (e && e.clipboardData) || fabric.window.clipboardData;\n },\n\n /**\n * Finds the width in pixels before the cursor on the same line\n * @private\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @return {Number} widthBeforeCursor width before cursor\n */\n _getWidthBeforeCursor: function(lineIndex, charIndex) {\n var widthBeforeCursor = this._getLineLeftOffset(lineIndex), bound;\n\n if (charIndex > 0) {\n bound = this.__charBounds[lineIndex][charIndex - 1];\n widthBeforeCursor += bound.left + bound.width;\n }\n return widthBeforeCursor;\n },\n\n /**\n * Gets start offset of a selection\n * @param {Event} e Event object\n * @param {Boolean} isRight\n * @return {Number}\n */\n getDownCursorOffset: function(e, isRight) {\n var selectionProp = this._getSelectionForOffset(e, isRight),\n cursorLocation = this.get2DCursorLocation(selectionProp),\n lineIndex = cursorLocation.lineIndex;\n // if on last line, down cursor goes to end of line\n if (lineIndex === this._textLines.length - 1 || e.metaKey || e.keyCode === 34) {\n // move to the end of a text\n return this._text.length - selectionProp;\n }\n var charIndex = cursorLocation.charIndex,\n widthBeforeCursor = this._getWidthBeforeCursor(lineIndex, charIndex),\n indexOnOtherLine = this._getIndexOnLine(lineIndex + 1, widthBeforeCursor),\n textAfterCursor = this._textLines[lineIndex].slice(charIndex);\n return textAfterCursor.length + indexOnOtherLine + 2;\n },\n\n /**\n * private\n * Helps finding if the offset should be counted from Start or End\n * @param {Event} e Event object\n * @param {Boolean} isRight\n * @return {Number}\n */\n _getSelectionForOffset: function(e, isRight) {\n if (e.shiftKey && this.selectionStart !== this.selectionEnd && isRight) {\n return this.selectionEnd;\n }\n else {\n return this.selectionStart;\n }\n },\n\n /**\n * @param {Event} e Event object\n * @param {Boolean} isRight\n * @return {Number}\n */\n getUpCursorOffset: function(e, isRight) {\n var selectionProp = this._getSelectionForOffset(e, isRight),\n cursorLocation = this.get2DCursorLocation(selectionProp),\n lineIndex = cursorLocation.lineIndex;\n if (lineIndex === 0 || e.metaKey || e.keyCode === 33) {\n // if on first line, up cursor goes to start of line\n return -selectionProp;\n }\n var charIndex = cursorLocation.charIndex,\n widthBeforeCursor = this._getWidthBeforeCursor(lineIndex, charIndex),\n indexOnOtherLine = this._getIndexOnLine(lineIndex - 1, widthBeforeCursor),\n textBeforeCursor = this._textLines[lineIndex].slice(0, charIndex);\n // return a negative offset\n return -this._textLines[lineIndex - 1].length + indexOnOtherLine - textBeforeCursor.length;\n },\n\n /**\n * for a given width it founds the matching character.\n * @private\n */\n _getIndexOnLine: function(lineIndex, width) {\n\n var line = this._textLines[lineIndex],\n lineLeftOffset = this._getLineLeftOffset(lineIndex),\n widthOfCharsOnLine = lineLeftOffset,\n indexOnLine = 0, charWidth, foundMatch;\n\n for (var j = 0, jlen = line.length; j < jlen; j++) {\n charWidth = this.__charBounds[lineIndex][j].width;\n widthOfCharsOnLine += charWidth;\n if (widthOfCharsOnLine > width) {\n foundMatch = true;\n var leftEdge = widthOfCharsOnLine - charWidth,\n rightEdge = widthOfCharsOnLine,\n offsetFromLeftEdge = Math.abs(leftEdge - width),\n offsetFromRightEdge = Math.abs(rightEdge - width);\n\n indexOnLine = offsetFromRightEdge < offsetFromLeftEdge ? j : (j - 1);\n break;\n }\n }\n\n // reached end\n if (!foundMatch) {\n indexOnLine = line.length - 1;\n }\n\n return indexOnLine;\n },\n\n\n /**\n * Moves cursor down\n * @param {Event} e Event object\n */\n moveCursorDown: function(e) {\n if (this.selectionStart >= this._text.length && this.selectionEnd >= this._text.length) {\n return;\n }\n this._moveCursorUpOrDown('Down', e);\n },\n\n /**\n * Moves cursor up\n * @param {Event} e Event object\n */\n moveCursorUp: function(e) {\n if (this.selectionStart === 0 && this.selectionEnd === 0) {\n return;\n }\n this._moveCursorUpOrDown('Up', e);\n },\n\n /**\n * Moves cursor up or down, fires the events\n * @param {String} direction 'Up' or 'Down'\n * @param {Event} e Event object\n */\n _moveCursorUpOrDown: function(direction, e) {\n // getUpCursorOffset\n // getDownCursorOffset\n var action = 'get' + direction + 'CursorOffset',\n offset = this[action](e, this._selectionDirection === 'right');\n if (e.shiftKey) {\n this.moveCursorWithShift(offset);\n }\n else {\n this.moveCursorWithoutShift(offset);\n }\n if (offset !== 0) {\n this.setSelectionInBoundaries();\n this.abortCursorAnimation();\n this._currentCursorOpacity = 1;\n this.initDelayedCursor();\n this._fireSelectionChanged();\n this._updateTextarea();\n }\n },\n\n /**\n * Moves cursor with shift\n * @param {Number} offset\n */\n moveCursorWithShift: function(offset) {\n var newSelection = this._selectionDirection === 'left'\n ? this.selectionStart + offset\n : this.selectionEnd + offset;\n this.setSelectionStartEndWithShift(this.selectionStart, this.selectionEnd, newSelection);\n return offset !== 0;\n },\n\n /**\n * Moves cursor up without shift\n * @param {Number} offset\n */\n moveCursorWithoutShift: function(offset) {\n if (offset < 0) {\n this.selectionStart += offset;\n this.selectionEnd = this.selectionStart;\n }\n else {\n this.selectionEnd += offset;\n this.selectionStart = this.selectionEnd;\n }\n return offset !== 0;\n },\n\n /**\n * Moves cursor left\n * @param {Event} e Event object\n */\n moveCursorLeft: function(e) {\n if (this.selectionStart === 0 && this.selectionEnd === 0) {\n return;\n }\n this._moveCursorLeftOrRight('Left', e);\n },\n\n /**\n * @private\n * @return {Boolean} true if a change happened\n */\n _move: function(e, prop, direction) {\n var newValue;\n if (e.altKey) {\n newValue = this['findWordBoundary' + direction](this[prop]);\n }\n else if (e.metaKey || e.keyCode === 35 || e.keyCode === 36 ) {\n newValue = this['findLineBoundary' + direction](this[prop]);\n }\n else {\n this[prop] += direction === 'Left' ? -1 : 1;\n return true;\n }\n if (typeof newValue !== undefined && this[prop] !== newValue) {\n this[prop] = newValue;\n return true;\n }\n },\n\n /**\n * @private\n */\n _moveLeft: function(e, prop) {\n return this._move(e, prop, 'Left');\n },\n\n /**\n * @private\n */\n _moveRight: function(e, prop) {\n return this._move(e, prop, 'Right');\n },\n\n /**\n * Moves cursor left without keeping selection\n * @param {Event} e\n */\n moveCursorLeftWithoutShift: function(e) {\n var change = true;\n this._selectionDirection = 'left';\n\n // only move cursor when there is no selection,\n // otherwise we discard it, and leave cursor on same place\n if (this.selectionEnd === this.selectionStart && this.selectionStart !== 0) {\n change = this._moveLeft(e, 'selectionStart');\n\n }\n this.selectionEnd = this.selectionStart;\n return change;\n },\n\n /**\n * Moves cursor left while keeping selection\n * @param {Event} e\n */\n moveCursorLeftWithShift: function(e) {\n if (this._selectionDirection === 'right' && this.selectionStart !== this.selectionEnd) {\n return this._moveLeft(e, 'selectionEnd');\n }\n else if (this.selectionStart !== 0){\n this._selectionDirection = 'left';\n return this._moveLeft(e, 'selectionStart');\n }\n },\n\n /**\n * Moves cursor right\n * @param {Event} e Event object\n */\n moveCursorRight: function(e) {\n if (this.selectionStart >= this._text.length && this.selectionEnd >= this._text.length) {\n return;\n }\n this._moveCursorLeftOrRight('Right', e);\n },\n\n /**\n * Moves cursor right or Left, fires event\n * @param {String} direction 'Left', 'Right'\n * @param {Event} e Event object\n */\n _moveCursorLeftOrRight: function(direction, e) {\n var actionName = 'moveCursor' + direction + 'With';\n this._currentCursorOpacity = 1;\n\n if (e.shiftKey) {\n actionName += 'Shift';\n }\n else {\n actionName += 'outShift';\n }\n if (this[actionName](e)) {\n this.abortCursorAnimation();\n this.initDelayedCursor();\n this._fireSelectionChanged();\n this._updateTextarea();\n }\n },\n\n /**\n * Moves cursor right while keeping selection\n * @param {Event} e\n */\n moveCursorRightWithShift: function(e) {\n if (this._selectionDirection === 'left' && this.selectionStart !== this.selectionEnd) {\n return this._moveRight(e, 'selectionStart');\n }\n else if (this.selectionEnd !== this._text.length) {\n this._selectionDirection = 'right';\n return this._moveRight(e, 'selectionEnd');\n }\n },\n\n /**\n * Moves cursor right without keeping selection\n * @param {Event} e Event object\n */\n moveCursorRightWithoutShift: function(e) {\n var changed = true;\n this._selectionDirection = 'right';\n\n if (this.selectionStart === this.selectionEnd) {\n changed = this._moveRight(e, 'selectionStart');\n this.selectionEnd = this.selectionStart;\n }\n else {\n this.selectionStart = this.selectionEnd;\n }\n return changed;\n },\n\n /**\n * Removes characters from start/end\n * start/end ar per grapheme position in _text array.\n *\n * @param {Number} start\n * @param {Number} end default to start + 1\n */\n removeChars: function(start, end) {\n if (typeof end === 'undefined') {\n end = start + 1;\n }\n this.removeStyleFromTo(start, end);\n this._text.splice(start, end - start);\n this.text = this._text.join('');\n this.set('dirty', true);\n if (this._shouldClearDimensionCache()) {\n this.initDimensions();\n this.setCoords();\n }\n this._removeExtraneousStyles();\n },\n\n /**\n * insert characters at start position, before start position.\n * start equal 1 it means the text get inserted between actual grapheme 0 and 1\n * if style array is provided, it must be as the same length of text in graphemes\n * if end is provided and is bigger than start, old text is replaced.\n * start/end ar per grapheme position in _text array.\n *\n * @param {String} text text to insert\n * @param {Array} style array of style objects\n * @param {Number} start\n * @param {Number} end default to start + 1\n */\n insertChars: function(text, style, start, end) {\n if (typeof end === 'undefined') {\n end = start;\n }\n if (end > start) {\n this.removeStyleFromTo(start, end);\n }\n var graphemes = fabric.util.string.graphemeSplit(text);\n this.insertNewStyleBlock(graphemes, start, style);\n this._text = [].concat(this._text.slice(0, start), graphemes, this._text.slice(end));\n this.text = this._text.join('');\n this.set('dirty', true);\n if (this._shouldClearDimensionCache()) {\n this.initDimensions();\n this.setCoords();\n }\n this._removeExtraneousStyles();\n },\n\n});\n\n\n/* _TO_SVG_START_ */\n(function() {\n var toFixed = fabric.util.toFixed,\n multipleSpacesRegex = / +/g;\n\n fabric.util.object.extend(fabric.Text.prototype, /** @lends fabric.Text.prototype */ {\n\n /**\n * Returns SVG representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n toSVG: function(reviver) {\n var markup = this._createBaseSVGMarkup(),\n offsets = this._getSVGLeftTopOffsets(),\n textAndBg = this._getSVGTextAndBg(offsets.textTop, offsets.textLeft);\n this._wrapSVGTextAndBg(markup, textAndBg);\n\n return reviver ? reviver(markup.join('')) : markup.join('');\n },\n\n /**\n * @private\n */\n _getSVGLeftTopOffsets: function() {\n return {\n textLeft: -this.width / 2,\n textTop: -this.height / 2,\n lineTop: this.getHeightOfLine(0)\n };\n },\n\n /**\n * @private\n */\n _wrapSVGTextAndBg: function(markup, textAndBg) {\n var noShadow = true, filter = this.getSvgFilter(),\n style = filter === '' ? '' : ' style=\"' + filter + '\"',\n textDecoration = this.getSvgTextDecoration(this);\n markup.push(\n '\\t\\n',\n textAndBg.textBgRects.join(''),\n '\\t\\t',\n textAndBg.textSpans.join(''),\n '\\n',\n '\\t\\n'\n );\n },\n\n /**\n * @private\n * @param {Number} textTopOffset Text top offset\n * @param {Number} textLeftOffset Text left offset\n * @return {Object}\n */\n _getSVGTextAndBg: function(textTopOffset, textLeftOffset) {\n var textSpans = [],\n textBgRects = [],\n height = textTopOffset, lineOffset;\n // bounding-box background\n this._setSVGBg(textBgRects);\n\n // text and text-background\n for (var i = 0, len = this._textLines.length; i < len; i++) {\n lineOffset = this._getLineLeftOffset(i);\n if (this.textBackgroundColor || this.styleHas('textBackgroundColor', i)) {\n this._setSVGTextLineBg(textBgRects, i, textLeftOffset + lineOffset, height);\n }\n this._setSVGTextLineText(textSpans, i, textLeftOffset + lineOffset, height);\n height += this.getHeightOfLine(i);\n }\n\n return {\n textSpans: textSpans,\n textBgRects: textBgRects\n };\n },\n\n /**\n * @private\n */\n _createTextCharSpan: function(_char, styleDecl, left, top) {\n var shouldUseWhitespace = _char !== _char.trim() || _char.match(multipleSpacesRegex),\n styleProps = this.getSvgSpanStyles(styleDecl, shouldUseWhitespace),\n fillStyles = styleProps ? 'style=\"' + styleProps + '\"' : '',\n dy = styleDecl.deltaY, dySpan = '',\n NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS;\n if (dy) {\n dySpan = ' dy=\"' + toFixed(dy, NUM_FRACTION_DIGITS) + '\" ';\n }\n return [\n '',\n fabric.util.string.escapeXml(_char),\n ''\n ].join('');\n },\n\n _setSVGTextLineText: function(textSpans, lineIndex, textLeftOffset, textTopOffset) {\n // set proper line offset\n var lineHeight = this.getHeightOfLine(lineIndex),\n isJustify = this.textAlign.indexOf('justify') !== -1,\n actualStyle,\n nextStyle,\n charsToRender = '',\n charBox, style,\n boxWidth = 0,\n line = this._textLines[lineIndex],\n timeToRender;\n\n textTopOffset += lineHeight * (1 - this._fontSizeFraction) / this.lineHeight;\n for (var i = 0, len = line.length - 1; i <= len; i++) {\n timeToRender = i === len || this.charSpacing;\n charsToRender += line[i];\n charBox = this.__charBounds[lineIndex][i];\n if (boxWidth === 0) {\n textLeftOffset += charBox.kernedWidth - charBox.width;\n boxWidth += charBox.width;\n }\n else {\n boxWidth += charBox.kernedWidth;\n }\n if (isJustify && !timeToRender) {\n if (this._reSpaceAndTab.test(line[i])) {\n timeToRender = true;\n }\n }\n if (!timeToRender) {\n // if we have charSpacing, we render char by char\n actualStyle = actualStyle || this.getCompleteStyleDeclaration(lineIndex, i);\n nextStyle = this.getCompleteStyleDeclaration(lineIndex, i + 1);\n timeToRender = this._hasStyleChangedForSvg(actualStyle, nextStyle);\n }\n if (timeToRender) {\n style = this._getStyleDeclaration(lineIndex, i) || { };\n textSpans.push(this._createTextCharSpan(charsToRender, style, textLeftOffset, textTopOffset));\n charsToRender = '';\n actualStyle = nextStyle;\n textLeftOffset += boxWidth;\n boxWidth = 0;\n }\n }\n },\n\n _pushTextBgRect: function(textBgRects, color, left, top, width, height) {\n var NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS;\n textBgRects.push(\n '\\t\\t\\n');\n },\n\n _setSVGTextLineBg: function(textBgRects, i, leftOffset, textTopOffset) {\n var line = this._textLines[i],\n heightOfLine = this.getHeightOfLine(i) / this.lineHeight,\n boxWidth = 0,\n boxStart = 0,\n charBox, currentColor,\n lastColor = this.getValueOfPropertyAt(i, 0, 'textBackgroundColor');\n for (var j = 0, jlen = line.length; j < jlen; j++) {\n charBox = this.__charBounds[i][j];\n currentColor = this.getValueOfPropertyAt(i, j, 'textBackgroundColor');\n if (currentColor !== lastColor) {\n lastColor && this._pushTextBgRect(textBgRects, lastColor, leftOffset + boxStart,\n textTopOffset, boxWidth, heightOfLine);\n boxStart = charBox.left;\n boxWidth = charBox.width;\n lastColor = currentColor;\n }\n else {\n boxWidth += charBox.kernedWidth;\n }\n }\n currentColor && this._pushTextBgRect(textBgRects, currentColor, leftOffset + boxStart,\n textTopOffset, boxWidth, heightOfLine);\n },\n\n /**\n * Adobe Illustrator (at least CS5) is unable to render rgba()-based fill values\n * we work around it by \"moving\" alpha channel into opacity attribute and setting fill's alpha to 1\n *\n * @private\n * @param {*} value\n * @return {String}\n */\n _getFillAttributes: function(value) {\n var fillColor = (value && typeof value === 'string') ? new fabric.Color(value) : '';\n if (!fillColor || !fillColor.getSource() || fillColor.getAlpha() === 1) {\n return 'fill=\"' + value + '\"';\n }\n return 'opacity=\"' + fillColor.getAlpha() + '\" fill=\"' + fillColor.setAlpha(1).toRgb() + '\"';\n },\n\n /**\n * @private\n */\n _getSVGLineTopOffset: function(lineIndex) {\n var lineTopOffset = 0, lastHeight = 0;\n for (var j = 0; j < lineIndex; j++) {\n lineTopOffset += this.getHeightOfLine(j);\n }\n lastHeight = this.getHeightOfLine(j);\n return {\n lineTop: lineTopOffset,\n offset: (this._fontSizeMult - this._fontSizeFraction) * lastHeight / (this.lineHeight * this._fontSizeMult)\n };\n },\n\n /**\n * Returns styles-string for svg-export\n * @param {Boolean} skipShadow a boolean to skip shadow filter output\n * @return {String}\n */\n getSvgStyles: function(skipShadow) {\n var svgStyle = fabric.Object.prototype.getSvgStyles.call(this, skipShadow);\n return svgStyle + ' white-space: pre;';\n },\n });\n})();\n/* _TO_SVG_END_ */\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = {});\n\n /**\n * Textbox class, based on IText, allows the user to resize the text rectangle\n * and wraps lines automatically. Textboxes have their Y scaling locked, the\n * user can only change width. Height is adjusted automatically based on the\n * wrapping of lines.\n * @class fabric.Textbox\n * @extends fabric.IText\n * @mixes fabric.Observable\n * @return {fabric.Textbox} thisArg\n * @see {@link fabric.Textbox#initialize} for constructor definition\n */\n fabric.Textbox = fabric.util.createClass(fabric.IText, fabric.Observable, {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'textbox',\n\n /**\n * Minimum width of textbox, in pixels.\n * @type Number\n * @default\n */\n minWidth: 20,\n\n /**\n * Minimum calculated width of a textbox, in pixels.\n * fixed to 2 so that an empty textbox cannot go to 0\n * and is still selectable without text.\n * @type Number\n * @default\n */\n dynamicMinWidth: 2,\n\n /**\n * Cached array of text wrapping.\n * @type Array\n */\n __cachedLines: null,\n\n /**\n * Override standard Object class values\n */\n lockScalingFlip: true,\n\n /**\n * Override standard Object class values\n * Textbox needs this on false\n */\n noScaleCache: false,\n\n /**\n * Properties which when set cause object to change dimensions\n * @type Object\n * @private\n */\n _dimensionAffectingProps: fabric.Text.prototype._dimensionAffectingProps.concat('width'),\n\n /**\n * Unlike superclass's version of this function, Textbox does not update\n * its width.\n * @private\n * @override\n */\n initDimensions: function() {\n if (this.__skipDimension) {\n return;\n }\n this.isEditing && this.initDelayedCursor();\n this.clearContextTop();\n this._clearCache();\n // clear dynamicMinWidth as it will be different after we re-wrap line\n this.dynamicMinWidth = 0;\n // wrap lines\n this._styleMap = this._generateStyleMap(this._splitText());\n // if after wrapping, the width is smaller than dynamicMinWidth, change the width and re-wrap\n if (this.dynamicMinWidth > this.width) {\n this._set('width', this.dynamicMinWidth);\n }\n if (this.textAlign.indexOf('justify') !== -1) {\n // once text is measured we need to make space fatter to make justified text.\n this.enlargeSpaces();\n }\n // clear cache and re-calculate height\n this.height = this.calcTextHeight();\n this.saveState({ propertySet: '_dimensionAffectingProps' });\n },\n\n /**\n * Generate an object that translates the style object so that it is\n * broken up by visual lines (new lines and automatic wrapping).\n * The original text styles object is broken up by actual lines (new lines only),\n * which is only sufficient for Text / IText\n * @private\n */\n _generateStyleMap: function(textInfo) {\n var realLineCount = 0,\n realLineCharCount = 0,\n charCount = 0,\n map = {};\n\n for (var i = 0; i < textInfo.graphemeLines.length; i++) {\n if (textInfo.graphemeText[charCount] === '\\n' && i > 0) {\n realLineCharCount = 0;\n charCount++;\n realLineCount++;\n }\n else if (this._reSpaceAndTab.test(textInfo.graphemeText[charCount]) && i > 0) {\n // this case deals with space's that are removed from end of lines when wrapping\n realLineCharCount++;\n charCount++;\n }\n\n map[i] = { line: realLineCount, offset: realLineCharCount };\n\n charCount += textInfo.graphemeLines[i].length;\n realLineCharCount += textInfo.graphemeLines[i].length;\n }\n\n return map;\n },\n\n /**\n * Returns true if object has a style property or has it ina specified line\n * @param {Number} lineIndex\n * @return {Boolean}\n */\n styleHas: function(property, lineIndex) {\n if (this._styleMap && !this.isWrapping) {\n var map = this._styleMap[lineIndex];\n if (map) {\n lineIndex = map.line;\n }\n }\n return fabric.Text.prototype.styleHas.call(this, property, lineIndex);\n },\n\n /**\n * Returns true if object has no styling or no styling in a line\n * @param {Number} lineIndex , lineIndex is on wrapped lines.\n * @return {Boolean}\n */\n isEmptyStyles: function(lineIndex) {\n var offset = 0, nextLineIndex = lineIndex + 1, nextOffset, obj, shouldLimit = false;\n var map = this._styleMap[lineIndex];\n var mapNextLine = this._styleMap[lineIndex + 1];\n if (map) {\n lineIndex = map.line;\n offset = map.offset;\n }\n if (mapNextLine) {\n nextLineIndex = mapNextLine.line;\n shouldLimit = nextLineIndex === lineIndex;\n nextOffset = mapNextLine.offset;\n }\n obj = typeof lineIndex === 'undefined' ? this.styles : { line: this.styles[lineIndex] };\n for (var p1 in obj) {\n for (var p2 in obj[p1]) {\n if (p2 >= offset && (!shouldLimit || p2 < nextOffset)) {\n // eslint-disable-next-line no-unused-vars\n for (var p3 in obj[p1][p2]) {\n return false;\n }\n }\n }\n }\n return true;\n },\n\n /**\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @private\n */\n _getStyleDeclaration: function(lineIndex, charIndex) {\n if (this._styleMap && !this.isWrapping) {\n var map = this._styleMap[lineIndex];\n if (!map) {\n return null;\n }\n lineIndex = map.line;\n charIndex = map.offset + charIndex;\n }\n return this.callSuper('_getStyleDeclaration', lineIndex, charIndex);\n },\n\n /**\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @param {Object} style\n * @private\n */\n _setStyleDeclaration: function(lineIndex, charIndex, style) {\n var map = this._styleMap[lineIndex];\n lineIndex = map.line;\n charIndex = map.offset + charIndex;\n\n this.styles[lineIndex][charIndex] = style;\n },\n\n /**\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @private\n */\n _deleteStyleDeclaration: function(lineIndex, charIndex) {\n var map = this._styleMap[lineIndex];\n lineIndex = map.line;\n charIndex = map.offset + charIndex;\n\n delete this.styles[lineIndex][charIndex];\n },\n\n /**\n * probably broken need a fix\n * @param {Number} lineIndex\n * @private\n */\n _getLineStyle: function(lineIndex) {\n var map = this._styleMap[lineIndex];\n return this.styles[map.line];\n },\n\n /**\n * probably broken need a fix\n * @param {Number} lineIndex\n * @param {Object} style\n * @private\n */\n _setLineStyle: function(lineIndex, style) {\n var map = this._styleMap[lineIndex];\n this.styles[map.line] = style;\n },\n\n /**\n * probably broken need a fix\n * @param {Number} lineIndex\n * @private\n */\n _deleteLineStyle: function(lineIndex) {\n var map = this._styleMap[lineIndex];\n delete this.styles[map.line];\n },\n\n /**\n * Wraps text using the 'width' property of Textbox. First this function\n * splits text on newlines, so we preserve newlines entered by the user.\n * Then it wraps each line using the width of the Textbox by calling\n * _wrapLine().\n * @param {Array} lines The string array of text that is split into lines\n * @param {Number} desiredWidth width you want to wrap to\n * @returns {Array} Array of lines\n */\n _wrapText: function(lines, desiredWidth) {\n var wrapped = [], i;\n this.isWrapping = true;\n for (i = 0; i < lines.length; i++) {\n wrapped = wrapped.concat(this._wrapLine(lines[i], i, desiredWidth));\n }\n this.isWrapping = false;\n return wrapped;\n },\n\n /**\n * Helper function to measure a string of text, given its lineIndex and charIndex offset\n * it gets called when charBounds are not available yet.\n * @param {CanvasRenderingContext2D} ctx\n * @param {String} text\n * @param {number} lineIndex\n * @param {number} charOffset\n * @returns {number}\n * @private\n */\n _measureWord: function(word, lineIndex, charOffset) {\n var width = 0, prevGrapheme, skipLeft = true;\n charOffset = charOffset || 0;\n for (var i = 0, len = word.length; i < len; i++) {\n var box = this._getGraphemeBox(word[i], lineIndex, i + charOffset, prevGrapheme, skipLeft);\n width += box.kernedWidth;\n prevGrapheme = word[i];\n }\n return width;\n },\n\n /**\n * Wraps a line of text using the width of the Textbox and a context.\n * @param {Array} line The grapheme array that represent the line\n * @param {Number} lineIndex\n * @param {Number} desiredWidth width you want to wrap the line to\n * @param {Number} reservedSpace space to remove from wrapping for custom functionalities\n * @returns {Array} Array of line(s) into which the given text is wrapped\n * to.\n */\n _wrapLine: function(_line, lineIndex, desiredWidth, reservedSpace) {\n var lineWidth = 0,\n graphemeLines = [],\n line = [],\n // spaces in different languges?\n words = _line.split(this._reSpaceAndTab),\n word = '',\n offset = 0,\n infix = ' ',\n wordWidth = 0,\n infixWidth = 0,\n largestWordWidth = 0,\n lineJustStarted = true,\n additionalSpace = this._getWidthOfCharSpacing(),\n reservedSpace = reservedSpace || 0;\n\n desiredWidth -= reservedSpace;\n for (var i = 0; i < words.length; i++) {\n // i would avoid resplitting the graphemes\n word = fabric.util.string.graphemeSplit(words[i]);\n wordWidth = this._measureWord(word, lineIndex, offset);\n offset += word.length;\n\n lineWidth += infixWidth + wordWidth - additionalSpace;\n\n if (lineWidth >= desiredWidth && !lineJustStarted) {\n graphemeLines.push(line);\n line = [];\n lineWidth = wordWidth;\n lineJustStarted = true;\n }\n else {\n lineWidth += additionalSpace;\n }\n\n if (!lineJustStarted) {\n line.push(infix);\n }\n line = line.concat(word);\n\n infixWidth = this._measureWord([infix], lineIndex, offset);\n offset++;\n lineJustStarted = false;\n // keep track of largest word\n if (wordWidth > largestWordWidth) {\n largestWordWidth = wordWidth;\n }\n }\n\n i && graphemeLines.push(line);\n\n if (largestWordWidth + reservedSpace > this.dynamicMinWidth) {\n this.dynamicMinWidth = largestWordWidth - additionalSpace + reservedSpace;\n }\n\n return graphemeLines;\n },\n\n /**\n * Detect if the text line is ended with an hard break\n * text and itext do not have wrapping, return false\n * @param {Number} lineIndex text to split\n * @return {Boolean}\n */\n isEndOfWrapping: function(lineIndex) {\n if (!this._styleMap[lineIndex + 1]) {\n // is last line, return true;\n return true;\n }\n if (this._styleMap[lineIndex + 1].line !== this._styleMap[lineIndex].line) {\n // this is last line before a line break, return true;\n return true;\n }\n return false;\n },\n\n /**\n * Gets lines of text to render in the Textbox. This function calculates\n * text wrapping on the fly every time it is called.\n * @param {String} text text to split\n * @returns {Array} Array of lines in the Textbox.\n * @override\n */\n _splitTextIntoLines: function(text) {\n var newText = fabric.Text.prototype._splitTextIntoLines.call(this, text),\n graphemeLines = this._wrapText(newText.lines, this.width),\n lines = new Array(graphemeLines.length);\n\n for (var i = 0; i < graphemeLines.length; i++) {\n lines[i] = graphemeLines[i].join('');\n }\n newText.lines = lines;\n newText.graphemeLines = graphemeLines;\n return newText;\n },\n\n getMinWidth: function() {\n return Math.max(this.minWidth, this.dynamicMinWidth);\n },\n\n /**\n * Returns object representation of an instance\n * @method toObject\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n return this.callSuper('toObject', ['minWidth'].concat(propertiesToInclude));\n }\n });\n\n /**\n * Returns fabric.Textbox instance from an object representation\n * @static\n * @memberOf fabric.Textbox\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] Callback to invoke when an fabric.Textbox instance is created\n */\n fabric.Textbox.fromObject = function(object, callback) {\n return fabric.Object._fromObject('Textbox', object, callback, 'text');\n };\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function() {\n\n /**\n * Override _setObjectScale and add Textbox specific resizing behavior. Resizing\n * a Textbox doesn't scale text, it only changes width and makes text wrap automatically.\n */\n var setObjectScaleOverridden = fabric.Canvas.prototype._setObjectScale;\n\n fabric.Canvas.prototype._setObjectScale = function(localMouse, transform,\n lockScalingX, lockScalingY, by, lockScalingFlip, _dim) {\n\n var t = transform.target;\n if (by === 'x' && t instanceof fabric.Textbox) {\n var tw = t._getTransformedDimensions().x;\n var w = t.width * (localMouse.x / tw);\n if (w >= t.getMinWidth()) {\n t.set('width', w);\n return true;\n }\n }\n else {\n return setObjectScaleOverridden.call(fabric.Canvas.prototype, localMouse, transform,\n lockScalingX, lockScalingY, by, lockScalingFlip, _dim);\n }\n };\n\n fabric.util.object.extend(fabric.Textbox.prototype, /** @lends fabric.IText.prototype */ {\n /**\n * @private\n */\n _removeExtraneousStyles: function() {\n for (var prop in this._styleMap) {\n if (!this._textLines[prop]) {\n delete this.styles[this._styleMap[prop].line];\n }\n }\n },\n\n });\n})();\n\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","module.exports = require('./lib/gravatar');\n","var md5 = require('blueimp-md5'),\n querystring = require('querystring'),\n MD5_REGEX = /^[0-9a-f]{32}$/;\n\nfunction params(options) {\n var params = {}, removing = {protocol:1, format:1};\n for (var key in options) {\n if (!removing[key]) params[key] = options[key];\n }\n return params;\n}\nfunction proto(options, protocol) {\n if (!options) return;\n if(typeof options.protocol === 'boolean') return options.protocol;\n return options.protocol === \"http\" ? false\n : options.protocol === \"https\" ? true\n : undefined;\n}\nfunction getHash(email){\n email = (typeof email === 'string') ? email.trim().toLowerCase() : 'unspecified';\n return email.match(MD5_REGEX) ? email : md5(email);\n}\n\nfunction getQueryString(options){\n var queryData = querystring.stringify(params(options));\n return (queryData && \"?\" + queryData) || \"\";\n}\n\nvar gravatar = module.exports = {\n\n url: function (email, options, protocol) {\n var baseURL = \"//www.gravatar.com/avatar/\";\n if (options && options.cdn) {\n baseURL = options.cdn + '/avatar/';\n delete options.cdn;\n } else {\n if (options && options.protocol) protocol = proto(options);\n if(typeof protocol !== 'undefined') {\n baseURL = protocol ? \"https://s.gravatar.com/avatar/\" : 'http://www.gravatar.com/avatar/';\n }\n }\n var query = getQueryString(options);\n return baseURL + getHash(email) + query;\n },\n\n profile_url: function (email, options, https) {\n var format = options != undefined && options.format != undefined ? String(options.format) : 'json'\n var baseURL\n if (options && options.cdn) {\n baseURL = options.cdn + '/';\n delete options.cdn;\n } else {\n if (options && options.protocol) https = proto(options);\n var baseURL = (https && \"https://secure.gravatar.com/\") || 'http://www.gravatar.com/';\n }\n var query = getQueryString(options);\n return baseURL + getHash(email) + '.' + format + query;\n }\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\tif ($defineProperty) {\n\t\ttry {\n\t\t\t$defineProperty({}, 'a', { value: 1 });\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\t// IE 8 has a broken defineProperty\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn false;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!hasPropertyDescriptors()) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar test = {\n\tfoo: {}\n};\n\nvar $Object = Object;\n\nmodule.exports = function hasProto() {\n\treturn { __proto__: test }.foo === test.foo && !({ __proto__: null } instanceof $Object);\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {(o: {}, p: PropertyKey) => p is keyof o} */\nmodule.exports = bind.call(call, $hasOwn);\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","// http://www.w3.org/TR/CSS21/grammar.html\n// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027\nvar COMMENT_REGEX = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\n\nvar NEWLINE_REGEX = /\\n/g;\nvar WHITESPACE_REGEX = /^\\s*/;\n\n// declaration\nvar PROPERTY_REGEX = /^(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/;\nvar COLON_REGEX = /^:\\s*/;\nvar VALUE_REGEX = /^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};])+)/;\nvar SEMICOLON_REGEX = /^[;\\s]*/;\n\n// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\nvar TRIM_REGEX = /^\\s+|\\s+$/g;\n\n// strings\nvar NEWLINE = '\\n';\nvar FORWARD_SLASH = '/';\nvar ASTERISK = '*';\nvar EMPTY_STRING = '';\n\n// types\nvar TYPE_COMMENT = 'comment';\nvar TYPE_DECLARATION = 'declaration';\n\n/**\n * @param {String} style\n * @param {Object} [options]\n * @return {Object[]}\n * @throws {TypeError}\n * @throws {Error}\n */\nmodule.exports = function(style, options) {\n if (typeof style !== 'string') {\n throw new TypeError('First argument must be a string');\n }\n\n if (!style) return [];\n\n options = options || {};\n\n /**\n * Positional.\n */\n var lineno = 1;\n var column = 1;\n\n /**\n * Update lineno and column based on `str`.\n *\n * @param {String} str\n */\n function updatePosition(str) {\n var lines = str.match(NEWLINE_REGEX);\n if (lines) lineno += lines.length;\n var i = str.lastIndexOf(NEWLINE);\n column = ~i ? str.length - i : column + str.length;\n }\n\n /**\n * Mark position and patch `node.position`.\n *\n * @return {Function}\n */\n function position() {\n var start = { line: lineno, column: column };\n return function(node) {\n node.position = new Position(start);\n whitespace();\n return node;\n };\n }\n\n /**\n * Store position information for a node.\n *\n * @constructor\n * @property {Object} start\n * @property {Object} end\n * @property {undefined|String} source\n */\n function Position(start) {\n this.start = start;\n this.end = { line: lineno, column: column };\n this.source = options.source;\n }\n\n /**\n * Non-enumerable source string.\n */\n Position.prototype.content = style;\n\n var errorsList = [];\n\n /**\n * Error `msg`.\n *\n * @param {String} msg\n * @throws {Error}\n */\n function error(msg) {\n var err = new Error(\n options.source + ':' + lineno + ':' + column + ': ' + msg\n );\n err.reason = msg;\n err.filename = options.source;\n err.line = lineno;\n err.column = column;\n err.source = style;\n\n if (options.silent) {\n errorsList.push(err);\n } else {\n throw err;\n }\n }\n\n /**\n * Match `re` and return captures.\n *\n * @param {RegExp} re\n * @return {undefined|Array}\n */\n function match(re) {\n var m = re.exec(style);\n if (!m) return;\n var str = m[0];\n updatePosition(str);\n style = style.slice(str.length);\n return m;\n }\n\n /**\n * Parse whitespace.\n */\n function whitespace() {\n match(WHITESPACE_REGEX);\n }\n\n /**\n * Parse comments.\n *\n * @param {Object[]} [rules]\n * @return {Object[]}\n */\n function comments(rules) {\n var c;\n rules = rules || [];\n while ((c = comment())) {\n if (c !== false) {\n rules.push(c);\n }\n }\n return rules;\n }\n\n /**\n * Parse comment.\n *\n * @return {Object}\n * @throws {Error}\n */\n function comment() {\n var pos = position();\n if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return;\n\n var i = 2;\n while (\n EMPTY_STRING != style.charAt(i) &&\n (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))\n ) {\n ++i;\n }\n i += 2;\n\n if (EMPTY_STRING === style.charAt(i - 1)) {\n return error('End of comment missing');\n }\n\n var str = style.slice(2, i - 2);\n column += 2;\n updatePosition(str);\n style = style.slice(i);\n column += 2;\n\n return pos({\n type: TYPE_COMMENT,\n comment: str\n });\n }\n\n /**\n * Parse declaration.\n *\n * @return {Object}\n * @throws {Error}\n */\n function declaration() {\n var pos = position();\n\n // prop\n var prop = match(PROPERTY_REGEX);\n if (!prop) return;\n comment();\n\n // :\n if (!match(COLON_REGEX)) return error(\"property missing ':'\");\n\n // val\n var val = match(VALUE_REGEX);\n\n var ret = pos({\n type: TYPE_DECLARATION,\n property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),\n value: val\n ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING))\n : EMPTY_STRING\n });\n\n // ;\n match(SEMICOLON_REGEX);\n\n return ret;\n }\n\n /**\n * Parse declarations.\n *\n * @return {Object[]}\n */\n function declarations() {\n var decls = [];\n\n comments(decls);\n\n // declarations\n var decl;\n while ((decl = declaration())) {\n if (decl !== false) {\n decls.push(decl);\n comments(decls);\n }\n }\n\n return decls;\n }\n\n whitespace();\n return declarations();\n};\n\n/**\n * Trim `str`.\n *\n * @param {String} str\n * @return {String}\n */\nfunction trim(str) {\n return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;\n}\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n","'use strict';\n\nvar toStr = Object.prototype.toString;\nvar fnToStr = Function.prototype.toString;\nvar isFnRegex = /^\\s*(?:function)?\\*/;\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = Object.getPrototypeOf;\nvar getGeneratorFunc = function () { // eslint-disable-line consistent-return\n\tif (!hasToStringTag) {\n\t\treturn false;\n\t}\n\ttry {\n\t\treturn Function('return function*() {}')();\n\t} catch (e) {\n\t}\n};\nvar GeneratorFunction;\n\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex.test(fnToStr.call(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr.call(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tif (typeof GeneratorFunction === 'undefined') {\n\t\tvar generatorFunc = getGeneratorFunc();\n\t\tGeneratorFunction = generatorFunc ? getProto(generatorFunc) : false;\n\t}\n\treturn getProto(fn) === GeneratorFunction;\n};\n","'use strict';\n\nvar whichTypedArray = require('which-typed-array');\n\nmodule.exports = function isTypedArray(value) {\n\treturn !!whichTypedArray(value);\n};\n","'use strict'\n\nvar isObject = function isObject(val) {\n return val !== null && !Array.isArray(val) && typeof val === 'object'\n}\n\nvar codes = {\n // ----------------------------------------\n // By Code\n // ----------------------------------------\n 3: 'Cancel',\n 6: 'Help',\n 8: 'Backspace',\n 9: 'Tab',\n 12: 'Clear',\n 13: 'Enter',\n 16: 'Shift',\n 17: 'Control',\n 18: 'Alt',\n 19: 'Pause',\n 20: 'CapsLock',\n 27: 'Escape',\n 28: 'Convert',\n 29: 'NonConvert',\n 30: 'Accept',\n 31: 'ModeChange',\n 32: ' ',\n 33: 'PageUp',\n 34: 'PageDown',\n 35: 'End',\n 36: 'Home',\n 37: 'ArrowLeft',\n 38: 'ArrowUp',\n 39: 'ArrowRight',\n 40: 'ArrowDown',\n 41: 'Select',\n 42: 'Print',\n 43: 'Execute',\n 44: 'PrintScreen',\n 45: 'Insert',\n 46: 'Delete',\n 48: ['0', ')'],\n 49: ['1', '!'],\n 50: ['2', '@'],\n 51: ['3', '#'],\n 52: ['4', '$'],\n 53: ['5', '%'],\n 54: ['6', '^'],\n 55: ['7', '&'],\n 56: ['8', '*'],\n 57: ['9', '('],\n 91: 'OS',\n 93: 'ContextMenu',\n 144: 'NumLock',\n 145: 'ScrollLock',\n 181: 'VolumeMute',\n 182: 'VolumeDown',\n 183: 'VolumeUp',\n 186: [';', ':'],\n 187: ['=', '+'],\n 188: [',', '<'],\n 189: ['-', '_'],\n 190: ['.', '>'],\n 191: ['/', '?'],\n 192: ['`', '~'],\n 219: ['[', '{'],\n 220: ['\\\\', '|'],\n 221: [']', '}'],\n 222: [\"'\", '\"'],\n 224: 'Meta',\n 225: 'AltGraph',\n 246: 'Attn',\n 247: 'CrSel',\n 248: 'ExSel',\n 249: 'EraseEof',\n 250: 'Play',\n 251: 'ZoomOut',\n}\n\n// Function Keys (F1-24)\nfor (var i = 0; i < 24; i += 1) {\n codes[112 + i] = 'F' + (i + 1)\n}\n\n// Alphabet (a-Z)\nfor (var j = 0; j < 26; j += 1) {\n var n = j + 65\n codes[n] = [String.fromCharCode(n + 32), String.fromCharCode(n)]\n}\n\nvar keyboardKey = {\n codes: codes,\n\n /**\n * Get the `keyCode` or `which` value from a keyboard event or `key` name.\n * @param {string|object} eventOrKey A keyboard event-like object or `key` name.\n * @param {string} [eventOrKey.key] If object, it must have one of these keys.\n * @param {number} [eventOrKey.keyCode] If object, it must have one of these keys.\n * @param {number} [eventOrKey.which] If object, it must have one of these keys.\n * @returns {number|undefined}\n */\n getCode: function getCode(eventOrKey) {\n if (isObject(eventOrKey)) {\n return eventOrKey.keyCode || eventOrKey.which || this[eventOrKey.key]\n }\n return this[eventOrKey]\n },\n\n /**\n * Get the key name from a keyboard event, `keyCode`, or `which` value.\n * @param {number|object} eventOrCode A keyboard event-like object or key code.\n * @param {string} [eventOrCode.key] If object with a `key` name, it will be returned.\n * @param {number} [eventOrCode.keyCode] If object, it must have one of these keys.\n * @param {number} [eventOrCode.which] If object, it must have one of these keys.\n * @param {boolean} [eventOrCode.shiftKey] If object, it must have one of these keys.\n * @returns {string|undefined}\n */\n getKey: function getKey(eventOrCode) {\n var isEvent = isObject(eventOrCode)\n\n // handle events with a `key` already defined\n if (isEvent && eventOrCode.key) {\n return eventOrCode.key\n }\n\n var name = codes[isEvent ? eventOrCode.keyCode || eventOrCode.which : eventOrCode]\n\n if (Array.isArray(name)) {\n if (isEvent) {\n name = name[eventOrCode.shiftKey ? 1 : 0]\n } else {\n name = name[0]\n }\n }\n\n return name\n },\n\n // ----------------------------------------\n // By Name\n // ----------------------------------------\n // declare these manually for static analysis\n Cancel: 3,\n Help: 6,\n Backspace: 8,\n Tab: 9,\n Clear: 12,\n Enter: 13,\n Shift: 16,\n Control: 17,\n Alt: 18,\n Pause: 19,\n CapsLock: 20,\n Escape: 27,\n Convert: 28,\n NonConvert: 29,\n Accept: 30,\n ModeChange: 31,\n ' ': 32,\n PageUp: 33,\n PageDown: 34,\n End: 35,\n Home: 36,\n ArrowLeft: 37,\n ArrowUp: 38,\n ArrowRight: 39,\n ArrowDown: 40,\n Select: 41,\n Print: 42,\n Execute: 43,\n PrintScreen: 44,\n Insert: 45,\n Delete: 46,\n 0: 48,\n ')': 48,\n 1: 49,\n '!': 49,\n 2: 50,\n '@': 50,\n 3: 51,\n '#': 51,\n 4: 52,\n $: 52,\n 5: 53,\n '%': 53,\n 6: 54,\n '^': 54,\n 7: 55,\n '&': 55,\n 8: 56,\n '*': 56,\n 9: 57,\n '(': 57,\n a: 65,\n A: 65,\n b: 66,\n B: 66,\n c: 67,\n C: 67,\n d: 68,\n D: 68,\n e: 69,\n E: 69,\n f: 70,\n F: 70,\n g: 71,\n G: 71,\n h: 72,\n H: 72,\n i: 73,\n I: 73,\n j: 74,\n J: 74,\n k: 75,\n K: 75,\n l: 76,\n L: 76,\n m: 77,\n M: 77,\n n: 78,\n N: 78,\n o: 79,\n O: 79,\n p: 80,\n P: 80,\n q: 81,\n Q: 81,\n r: 82,\n R: 82,\n s: 83,\n S: 83,\n t: 84,\n T: 84,\n u: 85,\n U: 85,\n v: 86,\n V: 86,\n w: 87,\n W: 87,\n x: 88,\n X: 88,\n y: 89,\n Y: 89,\n z: 90,\n Z: 90,\n OS: 91,\n ContextMenu: 93,\n F1: 112,\n F2: 113,\n F3: 114,\n F4: 115,\n F5: 116,\n F6: 117,\n F7: 118,\n F8: 119,\n F9: 120,\n F10: 121,\n F11: 122,\n F12: 123,\n F13: 124,\n F14: 125,\n F15: 126,\n F16: 127,\n F17: 128,\n F18: 129,\n F19: 130,\n F20: 131,\n F21: 132,\n F22: 133,\n F23: 134,\n F24: 135,\n NumLock: 144,\n ScrollLock: 145,\n VolumeMute: 181,\n VolumeDown: 182,\n VolumeUp: 183,\n ';': 186,\n ':': 186,\n '=': 187,\n '+': 187,\n ',': 188,\n '<': 188,\n '-': 189,\n _: 189,\n '.': 190,\n '>': 190,\n '/': 191,\n '?': 191,\n '`': 192,\n '~': 192,\n '[': 219,\n '{': 219,\n '\\\\': 220,\n '|': 220,\n ']': 221,\n '}': 221,\n \"'\": 222,\n '\"': 222,\n Meta: 224,\n AltGraph: 225,\n Attn: 246,\n CrSel: 247,\n ExSel: 248,\n EraseEof: 249,\n Play: 250,\n ZoomOut: 251,\n}\n\n// ----------------------------------------\n// By Alias\n// ----------------------------------------\n// provide dot-notation accessible keys for all key names\nkeyboardKey.Spacebar = keyboardKey[' ']\nkeyboardKey.Digit0 = keyboardKey['0']\nkeyboardKey.Digit1 = keyboardKey['1']\nkeyboardKey.Digit2 = keyboardKey['2']\nkeyboardKey.Digit3 = keyboardKey['3']\nkeyboardKey.Digit4 = keyboardKey['4']\nkeyboardKey.Digit5 = keyboardKey['5']\nkeyboardKey.Digit6 = keyboardKey['6']\nkeyboardKey.Digit7 = keyboardKey['7']\nkeyboardKey.Digit8 = keyboardKey['8']\nkeyboardKey.Digit9 = keyboardKey['9']\nkeyboardKey.Tilde = keyboardKey['~']\nkeyboardKey.GraveAccent = keyboardKey['`']\nkeyboardKey.ExclamationPoint = keyboardKey['!']\nkeyboardKey.AtSign = keyboardKey['@']\nkeyboardKey.PoundSign = keyboardKey['#']\nkeyboardKey.PercentSign = keyboardKey['%']\nkeyboardKey.Caret = keyboardKey['^']\nkeyboardKey.Ampersand = keyboardKey['&']\nkeyboardKey.PlusSign = keyboardKey['+']\nkeyboardKey.MinusSign = keyboardKey['-']\nkeyboardKey.EqualsSign = keyboardKey['=']\nkeyboardKey.DivisionSign = keyboardKey['/']\nkeyboardKey.MultiplicationSign = keyboardKey['*']\nkeyboardKey.Comma = keyboardKey[',']\nkeyboardKey.Decimal = keyboardKey['.']\nkeyboardKey.Colon = keyboardKey[':']\nkeyboardKey.Semicolon = keyboardKey[';']\nkeyboardKey.Pipe = keyboardKey['|']\nkeyboardKey.BackSlash = keyboardKey['\\\\']\nkeyboardKey.QuestionMark = keyboardKey['?']\nkeyboardKey.SingleQuote = keyboardKey[\"'\"]\nkeyboardKey.DoubleQuote = keyboardKey['\"']\nkeyboardKey.LeftCurlyBrace = keyboardKey['{']\nkeyboardKey.RightCurlyBrace = keyboardKey['}']\nkeyboardKey.LeftParenthesis = keyboardKey['(']\nkeyboardKey.RightParenthesis = keyboardKey[')']\nkeyboardKey.LeftAngleBracket = keyboardKey['<']\nkeyboardKey.RightAngleBracket = keyboardKey['>']\nkeyboardKey.LeftSquareBracket = keyboardKey['[']\nkeyboardKey.RightSquareBracket = keyboardKey[']']\n\nmodule.exports = keyboardKey\n","/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys'),\n keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar regexpTag = '[object RegExp]';\n\n/**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\nfunction baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n}\n\nmodule.exports = baseIsRegExp;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var identity = require('./identity');\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : identity;\n}\n\nmodule.exports = castFunction;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = cloneDeep;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var toString = require('./toString');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n/**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\nfunction escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n}\n\nmodule.exports = escapeRegExp;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","var baseForOwn = require('./_baseForOwn'),\n castFunction = require('./_castFunction');\n\n/**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forOwn(object, iteratee) {\n return object && baseForOwn(object, castFunction(iteratee));\n}\n\nmodule.exports = forOwn;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var baseIsRegExp = require('./_baseIsRegExp'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsRegExp = nodeUtil && nodeUtil.isRegExp;\n\n/**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\nvar isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\nmodule.exports = isRegExp;\n","var baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n isArray = require('./isArray');\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.MicRecorder = factory());\n}(this, (function () {\n\nfunction new_byte$1(count) {\n return new Int8Array(count);\n}\n\nfunction new_short(count) {\n return new Int16Array(count);\n}\n\nfunction new_int$1(count) {\n return new Int32Array(count);\n}\n\nfunction new_float$1(count) {\n return new Float32Array(count);\n}\n\nfunction new_double$1(count) {\n return new Float64Array(count);\n}\n\nfunction new_float_n$1(args) {\n if (args.length == 1) {\n return new_float$1(args[0]);\n }\n var sz = args[0];\n args = args.slice(1);\n var A = [];\n for (var i = 0; i < sz; i++) {\n A.push(new_float_n$1(args));\n }\n return A;\n}\nfunction new_int_n$1(args) {\n if (args.length == 1) {\n return new_int$1(args[0]);\n }\n var sz = args[0];\n args = args.slice(1);\n var A = [];\n for (var i = 0; i < sz; i++) {\n A.push(new_int_n$1(args));\n }\n return A;\n}\n\nfunction new_short_n(args) {\n if (args.length == 1) {\n return new_short(args[0]);\n }\n var sz = args[0];\n args = args.slice(1);\n var A = [];\n for (var i = 0; i < sz; i++) {\n A.push(new_short_n(args));\n }\n return A;\n}\n\nfunction new_array_n$1(args) {\n if (args.length == 1) {\n return new Array(args[0]);\n }\n var sz = args[0];\n args = args.slice(1);\n var A = [];\n for (var i = 0; i < sz; i++) {\n A.push(new_array_n$1(args));\n }\n return A;\n}\n\n\nvar Arrays$1 = {};\n\nArrays$1.fill = function (a, fromIndex, toIndex, val) {\n if (arguments.length == 2) {\n for (var i = 0; i < a.length; i++) {\n a[i] = arguments[1];\n }\n } else {\n for (var i = fromIndex; i < toIndex; i++) {\n a[i] = val;\n }\n }\n};\n\nvar System$1 = {};\n\nSystem$1.arraycopy = function (src, srcPos, dest, destPos, length) {\n var srcEnd = srcPos + length;\n while (srcPos < srcEnd)\n dest[destPos++] = src[srcPos++];\n};\n\n\nvar Util$1 = {};\nUtil$1.SQRT2 = 1.41421356237309504880;\nUtil$1.FAST_LOG10 = function (x) {\n return Math.log10(x);\n};\n\nUtil$1.FAST_LOG10_X = function (x, y) {\n return Math.log10(x) * y;\n};\n\nfunction ShortBlock$1(ordinal) {\n this.ordinal = ordinal;\n}\n/**\n * LAME may use them, even different block types for L/R.\n */\nShortBlock$1.short_block_allowed = new ShortBlock$1(0);\n/**\n * LAME may use them, but always same block types in L/R.\n */\nShortBlock$1.short_block_coupled = new ShortBlock$1(1);\n/**\n * LAME will not use short blocks, long blocks only.\n */\nShortBlock$1.short_block_dispensed = new ShortBlock$1(2);\n/**\n * LAME will not use long blocks, short blocks only.\n */\nShortBlock$1.short_block_forced = new ShortBlock$1(3);\n\nvar Float$1 = {};\nFloat$1.MAX_VALUE = 3.4028235e+38;\n\nfunction VbrMode$1(ordinal) {\n this.ordinal = ordinal;\n}\nVbrMode$1.vbr_off = new VbrMode$1(0);\nVbrMode$1.vbr_mt = new VbrMode$1(1);\nVbrMode$1.vbr_rh = new VbrMode$1(2);\nVbrMode$1.vbr_abr = new VbrMode$1(3);\nVbrMode$1.vbr_mtrh = new VbrMode$1(4);\nVbrMode$1.vbr_default = VbrMode$1.vbr_mtrh;\n\nvar assert$1 = function (x) {\n //console.assert(x);\n};\n\nvar common = {\n \"System\": System$1,\n \"VbrMode\": VbrMode$1,\n \"Float\": Float$1,\n \"ShortBlock\": ShortBlock$1,\n \"Util\": Util$1,\n \"Arrays\": Arrays$1,\n \"new_array_n\": new_array_n$1,\n \"new_byte\": new_byte$1,\n \"new_double\": new_double$1,\n \"new_float\": new_float$1,\n \"new_float_n\": new_float_n$1,\n \"new_int\": new_int$1,\n \"new_int_n\": new_int_n$1,\n \"new_short\": new_short,\n \"new_short_n\": new_short_n,\n \"assert\": assert$1\n};\n\n/*\n * MP3 window subband -> subband filtering -> mdct routine\n *\n * Copyright (c) 1999-2000 Takehiro Tominaga\n *\n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * Library General Public License for more details.\n *\n * You should have received a copy of the GNU Library General Public\n * License along with this library; if not, write to the\n * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n * Boston, MA 02111-1307, USA.\n */\n/*\n * Special Thanks to Patrick De Smet for your advices.\n */\n\n/* $Id: NewMDCT.java,v 1.11 2011/05/24 20:48:06 kenchis Exp $ */\n\n//package mp3;\n\n//import java.util.Arrays;\n\nvar System$6 = common.System;\nvar Util$6 = common.Util;\nvar Arrays$6 = common.Arrays;\nvar new_float$6 = common.new_float;\nfunction NewMDCT() {\n\n\tvar enwindow = [\n\t\t\t-4.77e-07 * 0.740951125354959 / 2.384e-06,\n\t\t\t1.03951e-04 * 0.740951125354959 / 2.384e-06,\n\t\t\t9.53674e-04 * 0.740951125354959 / 2.384e-06,\n\t\t\t2.841473e-03 * 0.740951125354959 / 2.384e-06,\n\t\t\t3.5758972e-02 * 0.740951125354959 / 2.384e-06,\n\t\t\t3.401756e-03 * 0.740951125354959 / 2.384e-06,\n\t\t\t9.83715e-04 * 0.740951125354959 / 2.384e-06,\n\t\t\t9.9182e-05 * 0.740951125354959 / 2.384e-06, /* 15 */\n\t\t\t1.2398e-05 * 0.740951125354959 / 2.384e-06,\n\t\t\t1.91212e-04 * 0.740951125354959 / 2.384e-06,\n\t\t\t2.283096e-03 * 0.740951125354959 / 2.384e-06,\n\t\t\t1.6994476e-02 * 0.740951125354959 / 2.384e-06,\n\t\t\t-1.8756866e-02 * 0.740951125354959 / 2.384e-06,\n\t\t\t-2.630711e-03 * 0.740951125354959 / 2.384e-06,\n\t\t\t-2.47478e-04 * 0.740951125354959 / 2.384e-06,\n\t\t\t-1.4782e-05 * 0.740951125354959 / 2.384e-06,\n\t\t\t9.063471690191471e-01, 1.960342806591213e-01,\n\n\t\t\t-4.77e-07 * 0.773010453362737 / 2.384e-06,\n\t\t\t1.05858e-04 * 0.773010453362737 / 2.384e-06,\n\t\t\t9.30786e-04 * 0.773010453362737 / 2.384e-06,\n\t\t\t2.521515e-03 * 0.773010453362737 / 2.384e-06,\n\t\t\t3.5694122e-02 * 0.773010453362737 / 2.384e-06,\n\t\t\t3.643036e-03 * 0.773010453362737 / 2.384e-06,\n\t\t\t9.91821e-04 * 0.773010453362737 / 2.384e-06,\n\t\t\t9.6321e-05 * 0.773010453362737 / 2.384e-06, /* 14 */\n\t\t\t1.1444e-05 * 0.773010453362737 / 2.384e-06,\n\t\t\t1.65462e-04 * 0.773010453362737 / 2.384e-06,\n\t\t\t2.110004e-03 * 0.773010453362737 / 2.384e-06,\n\t\t\t1.6112804e-02 * 0.773010453362737 / 2.384e-06,\n\t\t\t-1.9634247e-02 * 0.773010453362737 / 2.384e-06,\n\t\t\t-2.803326e-03 * 0.773010453362737 / 2.384e-06,\n\t\t\t-2.77042e-04 * 0.773010453362737 / 2.384e-06,\n\t\t\t-1.6689e-05 * 0.773010453362737 / 2.384e-06,\n\t\t\t8.206787908286602e-01, 3.901806440322567e-01,\n\n\t\t\t-4.77e-07 * 0.803207531480645 / 2.384e-06,\n\t\t\t1.07288e-04 * 0.803207531480645 / 2.384e-06,\n\t\t\t9.02653e-04 * 0.803207531480645 / 2.384e-06,\n\t\t\t2.174854e-03 * 0.803207531480645 / 2.384e-06,\n\t\t\t3.5586357e-02 * 0.803207531480645 / 2.384e-06,\n\t\t\t3.858566e-03 * 0.803207531480645 / 2.384e-06,\n\t\t\t9.95159e-04 * 0.803207531480645 / 2.384e-06,\n\t\t\t9.3460e-05 * 0.803207531480645 / 2.384e-06, /* 13 */\n\t\t\t1.0014e-05 * 0.803207531480645 / 2.384e-06,\n\t\t\t1.40190e-04 * 0.803207531480645 / 2.384e-06,\n\t\t\t1.937389e-03 * 0.803207531480645 / 2.384e-06,\n\t\t\t1.5233517e-02 * 0.803207531480645 / 2.384e-06,\n\t\t\t-2.0506859e-02 * 0.803207531480645 / 2.384e-06,\n\t\t\t-2.974033e-03 * 0.803207531480645 / 2.384e-06,\n\t\t\t-3.07560e-04 * 0.803207531480645 / 2.384e-06,\n\t\t\t-1.8120e-05 * 0.803207531480645 / 2.384e-06,\n\t\t\t7.416505462720353e-01, 5.805693545089249e-01,\n\n\t\t\t-4.77e-07 * 0.831469612302545 / 2.384e-06,\n\t\t\t1.08242e-04 * 0.831469612302545 / 2.384e-06,\n\t\t\t8.68797e-04 * 0.831469612302545 / 2.384e-06,\n\t\t\t1.800537e-03 * 0.831469612302545 / 2.384e-06,\n\t\t\t3.5435200e-02 * 0.831469612302545 / 2.384e-06,\n\t\t\t4.049301e-03 * 0.831469612302545 / 2.384e-06,\n\t\t\t9.94205e-04 * 0.831469612302545 / 2.384e-06,\n\t\t\t9.0599e-05 * 0.831469612302545 / 2.384e-06, /* 12 */\n\t\t\t9.060e-06 * 0.831469612302545 / 2.384e-06,\n\t\t\t1.16348e-04 * 0.831469612302545 / 2.384e-06,\n\t\t\t1.766682e-03 * 0.831469612302545 / 2.384e-06,\n\t\t\t1.4358521e-02 * 0.831469612302545 / 2.384e-06,\n\t\t\t-2.1372318e-02 * 0.831469612302545 / 2.384e-06,\n\t\t\t-3.14188e-03 * 0.831469612302545 / 2.384e-06,\n\t\t\t-3.39031e-04 * 0.831469612302545 / 2.384e-06,\n\t\t\t-1.9550e-05 * 0.831469612302545 / 2.384e-06,\n\t\t\t6.681786379192989e-01, 7.653668647301797e-01,\n\n\t\t\t-4.77e-07 * 0.857728610000272 / 2.384e-06,\n\t\t\t1.08719e-04 * 0.857728610000272 / 2.384e-06,\n\t\t\t8.29220e-04 * 0.857728610000272 / 2.384e-06,\n\t\t\t1.399517e-03 * 0.857728610000272 / 2.384e-06,\n\t\t\t3.5242081e-02 * 0.857728610000272 / 2.384e-06,\n\t\t\t4.215240e-03 * 0.857728610000272 / 2.384e-06,\n\t\t\t9.89437e-04 * 0.857728610000272 / 2.384e-06,\n\t\t\t8.7261e-05 * 0.857728610000272 / 2.384e-06, /* 11 */\n\t\t\t8.106e-06 * 0.857728610000272 / 2.384e-06,\n\t\t\t9.3937e-05 * 0.857728610000272 / 2.384e-06,\n\t\t\t1.597881e-03 * 0.857728610000272 / 2.384e-06,\n\t\t\t1.3489246e-02 * 0.857728610000272 / 2.384e-06,\n\t\t\t-2.2228718e-02 * 0.857728610000272 / 2.384e-06,\n\t\t\t-3.306866e-03 * 0.857728610000272 / 2.384e-06,\n\t\t\t-3.71456e-04 * 0.857728610000272 / 2.384e-06,\n\t\t\t-2.1458e-05 * 0.857728610000272 / 2.384e-06,\n\t\t\t5.993769336819237e-01, 9.427934736519954e-01,\n\n\t\t\t-4.77e-07 * 0.881921264348355 / 2.384e-06,\n\t\t\t1.08719e-04 * 0.881921264348355 / 2.384e-06,\n\t\t\t7.8392e-04 * 0.881921264348355 / 2.384e-06,\n\t\t\t9.71317e-04 * 0.881921264348355 / 2.384e-06,\n\t\t\t3.5007000e-02 * 0.881921264348355 / 2.384e-06,\n\t\t\t4.357815e-03 * 0.881921264348355 / 2.384e-06,\n\t\t\t9.80854e-04 * 0.881921264348355 / 2.384e-06,\n\t\t\t8.3923e-05 * 0.881921264348355 / 2.384e-06, /* 10 */\n\t\t\t7.629e-06 * 0.881921264348355 / 2.384e-06,\n\t\t\t7.2956e-05 * 0.881921264348355 / 2.384e-06,\n\t\t\t1.432419e-03 * 0.881921264348355 / 2.384e-06,\n\t\t\t1.2627602e-02 * 0.881921264348355 / 2.384e-06,\n\t\t\t-2.3074150e-02 * 0.881921264348355 / 2.384e-06,\n\t\t\t-3.467083e-03 * 0.881921264348355 / 2.384e-06,\n\t\t\t-4.04358e-04 * 0.881921264348355 / 2.384e-06,\n\t\t\t-2.3365e-05 * 0.881921264348355 / 2.384e-06,\n\t\t\t5.345111359507916e-01, 1.111140466039205e+00,\n\n\t\t\t-9.54e-07 * 0.903989293123443 / 2.384e-06,\n\t\t\t1.08242e-04 * 0.903989293123443 / 2.384e-06,\n\t\t\t7.31945e-04 * 0.903989293123443 / 2.384e-06,\n\t\t\t5.15938e-04 * 0.903989293123443 / 2.384e-06,\n\t\t\t3.4730434e-02 * 0.903989293123443 / 2.384e-06,\n\t\t\t4.477024e-03 * 0.903989293123443 / 2.384e-06,\n\t\t\t9.68933e-04 * 0.903989293123443 / 2.384e-06,\n\t\t\t8.0585e-05 * 0.903989293123443 / 2.384e-06, /* 9 */\n\t\t\t6.676e-06 * 0.903989293123443 / 2.384e-06,\n\t\t\t5.2929e-05 * 0.903989293123443 / 2.384e-06,\n\t\t\t1.269817e-03 * 0.903989293123443 / 2.384e-06,\n\t\t\t1.1775017e-02 * 0.903989293123443 / 2.384e-06,\n\t\t\t-2.3907185e-02 * 0.903989293123443 / 2.384e-06,\n\t\t\t-3.622532e-03 * 0.903989293123443 / 2.384e-06,\n\t\t\t-4.38213e-04 * 0.903989293123443 / 2.384e-06,\n\t\t\t-2.5272e-05 * 0.903989293123443 / 2.384e-06,\n\t\t\t4.729647758913199e-01, 1.268786568327291e+00,\n\n\t\t\t-9.54e-07 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t1.06812e-04 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t6.74248e-04 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t3.3379e-05 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t3.4412861e-02 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t4.573822e-03 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t9.54151e-04 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t7.6771e-05 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t6.199e-06 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t3.4332e-05 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t1.111031e-03 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t1.0933399e-02 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t-2.4725437e-02 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t-3.771782e-03 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t-4.72546e-04 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t-2.7657e-05 * 0.92387953251128675613 / 2.384e-06,\n\t\t\t4.1421356237309504879e-01, /* tan(PI/8) */\n\t\t\t1.414213562373095e+00,\n\n\t\t\t-9.54e-07 * 0.941544065183021 / 2.384e-06,\n\t\t\t1.05381e-04 * 0.941544065183021 / 2.384e-06,\n\t\t\t6.10352e-04 * 0.941544065183021 / 2.384e-06,\n\t\t\t-4.75883e-04 * 0.941544065183021 / 2.384e-06,\n\t\t\t3.4055710e-02 * 0.941544065183021 / 2.384e-06,\n\t\t\t4.649162e-03 * 0.941544065183021 / 2.384e-06,\n\t\t\t9.35555e-04 * 0.941544065183021 / 2.384e-06,\n\t\t\t7.3433e-05 * 0.941544065183021 / 2.384e-06, /* 7 */\n\t\t\t5.245e-06 * 0.941544065183021 / 2.384e-06,\n\t\t\t1.7166e-05 * 0.941544065183021 / 2.384e-06,\n\t\t\t9.56535e-04 * 0.941544065183021 / 2.384e-06,\n\t\t\t1.0103703e-02 * 0.941544065183021 / 2.384e-06,\n\t\t\t-2.5527000e-02 * 0.941544065183021 / 2.384e-06,\n\t\t\t-3.914356e-03 * 0.941544065183021 / 2.384e-06,\n\t\t\t-5.07355e-04 * 0.941544065183021 / 2.384e-06,\n\t\t\t-3.0041e-05 * 0.941544065183021 / 2.384e-06,\n\t\t\t3.578057213145241e-01, 1.546020906725474e+00,\n\n\t\t\t-9.54e-07 * 0.956940335732209 / 2.384e-06,\n\t\t\t1.02520e-04 * 0.956940335732209 / 2.384e-06,\n\t\t\t5.39303e-04 * 0.956940335732209 / 2.384e-06,\n\t\t\t-1.011848e-03 * 0.956940335732209 / 2.384e-06,\n\t\t\t3.3659935e-02 * 0.956940335732209 / 2.384e-06,\n\t\t\t4.703045e-03 * 0.956940335732209 / 2.384e-06,\n\t\t\t9.15051e-04 * 0.956940335732209 / 2.384e-06,\n\t\t\t7.0095e-05 * 0.956940335732209 / 2.384e-06, /* 6 */\n\t\t\t4.768e-06 * 0.956940335732209 / 2.384e-06,\n\t\t\t9.54e-07 * 0.956940335732209 / 2.384e-06,\n\t\t\t8.06808e-04 * 0.956940335732209 / 2.384e-06,\n\t\t\t9.287834e-03 * 0.956940335732209 / 2.384e-06,\n\t\t\t-2.6310921e-02 * 0.956940335732209 / 2.384e-06,\n\t\t\t-4.048824e-03 * 0.956940335732209 / 2.384e-06,\n\t\t\t-5.42164e-04 * 0.956940335732209 / 2.384e-06,\n\t\t\t-3.2425e-05 * 0.956940335732209 / 2.384e-06,\n\t\t\t3.033466836073424e-01, 1.662939224605090e+00,\n\n\t\t\t-1.431e-06 * 0.970031253194544 / 2.384e-06,\n\t\t\t9.9182e-05 * 0.970031253194544 / 2.384e-06,\n\t\t\t4.62532e-04 * 0.970031253194544 / 2.384e-06,\n\t\t\t-1.573563e-03 * 0.970031253194544 / 2.384e-06,\n\t\t\t3.3225536e-02 * 0.970031253194544 / 2.384e-06,\n\t\t\t4.737377e-03 * 0.970031253194544 / 2.384e-06,\n\t\t\t8.91685e-04 * 0.970031253194544 / 2.384e-06,\n\t\t\t6.6280e-05 * 0.970031253194544 / 2.384e-06, /* 5 */\n\t\t\t4.292e-06 * 0.970031253194544 / 2.384e-06,\n\t\t\t-1.3828e-05 * 0.970031253194544 / 2.384e-06,\n\t\t\t6.61850e-04 * 0.970031253194544 / 2.384e-06,\n\t\t\t8.487225e-03 * 0.970031253194544 / 2.384e-06,\n\t\t\t-2.7073860e-02 * 0.970031253194544 / 2.384e-06,\n\t\t\t-4.174709e-03 * 0.970031253194544 / 2.384e-06,\n\t\t\t-5.76973e-04 * 0.970031253194544 / 2.384e-06,\n\t\t\t-3.4809e-05 * 0.970031253194544 / 2.384e-06,\n\t\t\t2.504869601913055e-01, 1.763842528696710e+00,\n\n\t\t\t-1.431e-06 * 0.98078528040323 / 2.384e-06,\n\t\t\t9.5367e-05 * 0.98078528040323 / 2.384e-06,\n\t\t\t3.78609e-04 * 0.98078528040323 / 2.384e-06,\n\t\t\t-2.161503e-03 * 0.98078528040323 / 2.384e-06,\n\t\t\t3.2754898e-02 * 0.98078528040323 / 2.384e-06,\n\t\t\t4.752159e-03 * 0.98078528040323 / 2.384e-06,\n\t\t\t8.66413e-04 * 0.98078528040323 / 2.384e-06,\n\t\t\t6.2943e-05 * 0.98078528040323 / 2.384e-06, /* 4 */\n\t\t\t3.815e-06 * 0.98078528040323 / 2.384e-06,\n\t\t\t-2.718e-05 * 0.98078528040323 / 2.384e-06,\n\t\t\t5.22137e-04 * 0.98078528040323 / 2.384e-06,\n\t\t\t7.703304e-03 * 0.98078528040323 / 2.384e-06,\n\t\t\t-2.7815342e-02 * 0.98078528040323 / 2.384e-06,\n\t\t\t-4.290581e-03 * 0.98078528040323 / 2.384e-06,\n\t\t\t-6.11782e-04 * 0.98078528040323 / 2.384e-06,\n\t\t\t-3.7670e-05 * 0.98078528040323 / 2.384e-06,\n\t\t\t1.989123673796580e-01, 1.847759065022573e+00,\n\n\t\t\t-1.907e-06 * 0.989176509964781 / 2.384e-06,\n\t\t\t9.0122e-05 * 0.989176509964781 / 2.384e-06,\n\t\t\t2.88486e-04 * 0.989176509964781 / 2.384e-06,\n\t\t\t-2.774239e-03 * 0.989176509964781 / 2.384e-06,\n\t\t\t3.2248020e-02 * 0.989176509964781 / 2.384e-06,\n\t\t\t4.748821e-03 * 0.989176509964781 / 2.384e-06,\n\t\t\t8.38757e-04 * 0.989176509964781 / 2.384e-06,\n\t\t\t5.9605e-05 * 0.989176509964781 / 2.384e-06, /* 3 */\n\t\t\t3.338e-06 * 0.989176509964781 / 2.384e-06,\n\t\t\t-3.9577e-05 * 0.989176509964781 / 2.384e-06,\n\t\t\t3.88145e-04 * 0.989176509964781 / 2.384e-06,\n\t\t\t6.937027e-03 * 0.989176509964781 / 2.384e-06,\n\t\t\t-2.8532982e-02 * 0.989176509964781 / 2.384e-06,\n\t\t\t-4.395962e-03 * 0.989176509964781 / 2.384e-06,\n\t\t\t-6.46591e-04 * 0.989176509964781 / 2.384e-06,\n\t\t\t-4.0531e-05 * 0.989176509964781 / 2.384e-06,\n\t\t\t1.483359875383474e-01, 1.913880671464418e+00,\n\n\t\t\t-1.907e-06 * 0.995184726672197 / 2.384e-06,\n\t\t\t8.4400e-05 * 0.995184726672197 / 2.384e-06,\n\t\t\t1.91689e-04 * 0.995184726672197 / 2.384e-06,\n\t\t\t-3.411293e-03 * 0.995184726672197 / 2.384e-06,\n\t\t\t3.1706810e-02 * 0.995184726672197 / 2.384e-06,\n\t\t\t4.728317e-03 * 0.995184726672197 / 2.384e-06,\n\t\t\t8.09669e-04 * 0.995184726672197 / 2.384e-06,\n\t\t\t5.579e-05 * 0.995184726672197 / 2.384e-06,\n\t\t\t3.338e-06 * 0.995184726672197 / 2.384e-06,\n\t\t\t-5.0545e-05 * 0.995184726672197 / 2.384e-06,\n\t\t\t2.59876e-04 * 0.995184726672197 / 2.384e-06,\n\t\t\t6.189346e-03 * 0.995184726672197 / 2.384e-06,\n\t\t\t-2.9224873e-02 * 0.995184726672197 / 2.384e-06,\n\t\t\t-4.489899e-03 * 0.995184726672197 / 2.384e-06,\n\t\t\t-6.80923e-04 * 0.995184726672197 / 2.384e-06,\n\t\t\t-4.3392e-05 * 0.995184726672197 / 2.384e-06,\n\t\t\t9.849140335716425e-02, 1.961570560806461e+00,\n\n\t\t\t-2.384e-06 * 0.998795456205172 / 2.384e-06,\n\t\t\t7.7724e-05 * 0.998795456205172 / 2.384e-06,\n\t\t\t8.8215e-05 * 0.998795456205172 / 2.384e-06,\n\t\t\t-4.072189e-03 * 0.998795456205172 / 2.384e-06,\n\t\t\t3.1132698e-02 * 0.998795456205172 / 2.384e-06,\n\t\t\t4.691124e-03 * 0.998795456205172 / 2.384e-06,\n\t\t\t7.79152e-04 * 0.998795456205172 / 2.384e-06,\n\t\t\t5.2929e-05 * 0.998795456205172 / 2.384e-06,\n\t\t\t2.861e-06 * 0.998795456205172 / 2.384e-06,\n\t\t\t-6.0558e-05 * 0.998795456205172 / 2.384e-06,\n\t\t\t1.37329e-04 * 0.998795456205172 / 2.384e-06,\n\t\t\t5.462170e-03 * 0.998795456205172 / 2.384e-06,\n\t\t\t-2.9890060e-02 * 0.998795456205172 / 2.384e-06,\n\t\t\t-4.570484e-03 * 0.998795456205172 / 2.384e-06,\n\t\t\t-7.14302e-04 * 0.998795456205172 / 2.384e-06,\n\t\t\t-4.6253e-05 * 0.998795456205172 / 2.384e-06,\n\t\t\t4.912684976946725e-02, 1.990369453344394e+00,\n\n\t\t\t3.5780907e-02 * Util$6.SQRT2 * 0.5 / 2.384e-06,\n\t\t\t1.7876148e-02 * Util$6.SQRT2 * 0.5 / 2.384e-06,\n\t\t\t3.134727e-03 * Util$6.SQRT2 * 0.5 / 2.384e-06,\n\t\t\t2.457142e-03 * Util$6.SQRT2 * 0.5 / 2.384e-06,\n\t\t\t9.71317e-04 * Util$6.SQRT2 * 0.5 / 2.384e-06,\n\t\t\t2.18868e-04 * Util$6.SQRT2 * 0.5 / 2.384e-06,\n\t\t\t1.01566e-04 * Util$6.SQRT2 * 0.5 / 2.384e-06,\n\t\t\t1.3828e-05 * Util$6.SQRT2 * 0.5 / 2.384e-06,\n\n\t\t\t3.0526638e-02 / 2.384e-06, 4.638195e-03 / 2.384e-06,\n\t\t\t7.47204e-04 / 2.384e-06, 4.9591e-05 / 2.384e-06,\n\t\t\t4.756451e-03 / 2.384e-06, 2.1458e-05 / 2.384e-06,\n\t\t\t-6.9618e-05 / 2.384e-06, /* 2.384e-06/2.384e-06 */\n\t];\n\n\tvar NS = 12;\n\tvar NL = 36;\n\n\tvar win = [\n\t [\n\t 2.382191739347913e-13,\n\t 6.423305872147834e-13,\n\t 9.400849094049688e-13,\n\t 1.122435026096556e-12,\n\t 1.183840321267481e-12,\n\t 1.122435026096556e-12,\n\t 9.400849094049690e-13,\n\t 6.423305872147839e-13,\n\t 2.382191739347918e-13,\n\n\t 5.456116108943412e-12,\n\t 4.878985199565852e-12,\n\t 4.240448995017367e-12,\n\t 3.559909094758252e-12,\n\t 2.858043359288075e-12,\n\t 2.156177623817898e-12,\n\t 1.475637723558783e-12,\n\t 8.371015190102974e-13,\n\t 2.599706096327376e-13,\n\n\t -5.456116108943412e-12,\n\t -4.878985199565852e-12,\n\t -4.240448995017367e-12,\n\t -3.559909094758252e-12,\n\t -2.858043359288076e-12,\n\t -2.156177623817898e-12,\n\t -1.475637723558783e-12,\n\t -8.371015190102975e-13,\n\t -2.599706096327376e-13,\n\n\t -2.382191739347923e-13,\n\t -6.423305872147843e-13,\n\t -9.400849094049696e-13,\n\t -1.122435026096556e-12,\n\t -1.183840321267481e-12,\n\t -1.122435026096556e-12,\n\t -9.400849094049694e-13,\n\t -6.423305872147840e-13,\n\t -2.382191739347918e-13,\n\t ],\n\t [\n\t 2.382191739347913e-13,\n\t 6.423305872147834e-13,\n\t 9.400849094049688e-13,\n\t 1.122435026096556e-12,\n\t 1.183840321267481e-12,\n\t 1.122435026096556e-12,\n\t 9.400849094049688e-13,\n\t 6.423305872147841e-13,\n\t 2.382191739347918e-13,\n\n\t 5.456116108943413e-12,\n\t 4.878985199565852e-12,\n\t 4.240448995017367e-12,\n\t 3.559909094758253e-12,\n\t 2.858043359288075e-12,\n\t 2.156177623817898e-12,\n\t 1.475637723558782e-12,\n\t 8.371015190102975e-13,\n\t 2.599706096327376e-13,\n\n\t -5.461314069809755e-12,\n\t -4.921085770524055e-12,\n\t -4.343405037091838e-12,\n\t -3.732668368707687e-12,\n\t -3.093523840190885e-12,\n\t -2.430835727329465e-12,\n\t -1.734679010007751e-12,\n\t -9.748253656609281e-13,\n\t -2.797435120168326e-13,\n\n\t 0.000000000000000e+00,\n\t 0.000000000000000e+00,\n\t 0.000000000000000e+00,\n\t 0.000000000000000e+00,\n\t 0.000000000000000e+00,\n\t 0.000000000000000e+00,\n\t -2.283748241799531e-13,\n\t -4.037858874020686e-13,\n\t -2.146547464825323e-13,\n\t ],\n\t [\n\t 1.316524975873958e-01, /* win[SHORT_TYPE] */\n\t 4.142135623730950e-01,\n\t 7.673269879789602e-01,\n\n\t 1.091308501069271e+00, /* tantab_l */\n\t 1.303225372841206e+00,\n\t 1.569685577117490e+00,\n\t 1.920982126971166e+00,\n\t 2.414213562373094e+00,\n\t 3.171594802363212e+00,\n\t 4.510708503662055e+00,\n\t 7.595754112725146e+00,\n\t 2.290376554843115e+01,\n\n\t 0.98480775301220802032, /* cx */\n\t 0.64278760968653936292,\n\t 0.34202014332566882393,\n\t 0.93969262078590842791,\n\t -0.17364817766693030343,\n\t -0.76604444311897790243,\n\t 0.86602540378443870761,\n\t 0.500000000000000e+00,\n\n\t -5.144957554275265e-01, /* ca */\n\t -4.717319685649723e-01,\n\t -3.133774542039019e-01,\n\t -1.819131996109812e-01,\n\t -9.457419252642064e-02,\n\t -4.096558288530405e-02,\n\t -1.419856857247115e-02,\n\t -3.699974673760037e-03,\n\n\t 8.574929257125442e-01, /* cs */\n\t 8.817419973177052e-01,\n\t 9.496286491027329e-01,\n\t 9.833145924917901e-01,\n\t 9.955178160675857e-01,\n\t 9.991605581781475e-01,\n\t 9.998991952444470e-01,\n\t 9.999931550702802e-01,\n\t ],\n\t [\n\t 0.000000000000000e+00,\n\t 0.000000000000000e+00,\n\t 0.000000000000000e+00,\n\t 0.000000000000000e+00,\n\t 0.000000000000000e+00,\n\t 0.000000000000000e+00,\n\t 2.283748241799531e-13,\n\t 4.037858874020686e-13,\n\t 2.146547464825323e-13,\n\n\t 5.461314069809755e-12,\n\t 4.921085770524055e-12,\n\t 4.343405037091838e-12,\n\t 3.732668368707687e-12,\n\t 3.093523840190885e-12,\n\t 2.430835727329466e-12,\n\t 1.734679010007751e-12,\n\t 9.748253656609281e-13,\n\t 2.797435120168326e-13,\n\n\t -5.456116108943413e-12,\n\t -4.878985199565852e-12,\n\t -4.240448995017367e-12,\n\t -3.559909094758253e-12,\n\t -2.858043359288075e-12,\n\t -2.156177623817898e-12,\n\t -1.475637723558782e-12,\n\t -8.371015190102975e-13,\n\t -2.599706096327376e-13,\n\n\t -2.382191739347913e-13,\n\t -6.423305872147834e-13,\n\t -9.400849094049688e-13,\n\t -1.122435026096556e-12,\n\t -1.183840321267481e-12,\n\t -1.122435026096556e-12,\n\t -9.400849094049688e-13,\n\t -6.423305872147841e-13,\n\t -2.382191739347918e-13,\n\t ]\n\t];\n\n\tvar tantab_l = win[Encoder_1.SHORT_TYPE];\n\tvar cx = win[Encoder_1.SHORT_TYPE];\n\tvar ca = win[Encoder_1.SHORT_TYPE];\n\tvar cs = win[Encoder_1.SHORT_TYPE];\n\n\t/**\n\t * new IDCT routine written by Takehiro TOMINAGA\n\t *\n\t * PURPOSE: Overlapping window on PCM samples
\n\t *\n\t * SEMANTICS:
\n\t * 32 16-bit pcm samples are scaled to fractional 2's complement and\n\t * concatenated to the end of the window buffer #x#. The updated window\n\t * buffer #x# is then windowed by the analysis window #c# to produce the\n\t * windowed sample #z#\n\t */\n\tvar order = [\n\t 0, 1, 16, 17, 8, 9, 24, 25, 4, 5, 20, 21, 12, 13, 28, 29,\n\t 2, 3, 18, 19, 10, 11, 26, 27, 6, 7, 22, 23, 14, 15, 30, 31\n\t];\n\n\t/**\n\t * returns sum_j=0^31 a[j]*cos(PI*j*(k+1/2)/32), 0<=k<32\n\t */\n\tfunction window_subband(x1, x1Pos, a) {\n\t\tvar wp = 10;\n\n\t\tvar x2 = x1Pos + 238 - 14 - 286;\n\n\t\tfor (var i = -15; i < 0; i++) {\n\t\t\tvar w, s, t;\n\n\t\t\tw = enwindow[wp + -10];\n\t\t\ts = x1[x2 + -224] * w;\n\t\t\tt = x1[x1Pos + 224] * w;\n\t\t\tw = enwindow[wp + -9];\n\t\t\ts += x1[x2 + -160] * w;\n\t\t\tt += x1[x1Pos + 160] * w;\n\t\t\tw = enwindow[wp + -8];\n\t\t\ts += x1[x2 + -96] * w;\n\t\t\tt += x1[x1Pos + 96] * w;\n\t\t\tw = enwindow[wp + -7];\n\t\t\ts += x1[x2 + -32] * w;\n\t\t\tt += x1[x1Pos + 32] * w;\n\t\t\tw = enwindow[wp + -6];\n\t\t\ts += x1[x2 + 32] * w;\n\t\t\tt += x1[x1Pos + -32] * w;\n\t\t\tw = enwindow[wp + -5];\n\t\t\ts += x1[x2 + 96] * w;\n\t\t\tt += x1[x1Pos + -96] * w;\n\t\t\tw = enwindow[wp + -4];\n\t\t\ts += x1[x2 + 160] * w;\n\t\t\tt += x1[x1Pos + -160] * w;\n\t\t\tw = enwindow[wp + -3];\n\t\t\ts += x1[x2 + 224] * w;\n\t\t\tt += x1[x1Pos + -224] * w;\n\n\t\t\tw = enwindow[wp + -2];\n\t\t\ts += x1[x1Pos + -256] * w;\n\t\t\tt -= x1[x2 + 256] * w;\n\t\t\tw = enwindow[wp + -1];\n\t\t\ts += x1[x1Pos + -192] * w;\n\t\t\tt -= x1[x2 + 192] * w;\n\t\t\tw = enwindow[wp + 0];\n\t\t\ts += x1[x1Pos + -128] * w;\n\t\t\tt -= x1[x2 + 128] * w;\n\t\t\tw = enwindow[wp + 1];\n\t\t\ts += x1[x1Pos + -64] * w;\n\t\t\tt -= x1[x2 + 64] * w;\n\t\t\tw = enwindow[wp + 2];\n\t\t\ts += x1[x1Pos + 0] * w;\n\t\t\tt -= x1[x2 + 0] * w;\n\t\t\tw = enwindow[wp + 3];\n\t\t\ts += x1[x1Pos + 64] * w;\n\t\t\tt -= x1[x2 + -64] * w;\n\t\t\tw = enwindow[wp + 4];\n\t\t\ts += x1[x1Pos + 128] * w;\n\t\t\tt -= x1[x2 + -128] * w;\n\t\t\tw = enwindow[wp + 5];\n\t\t\ts += x1[x1Pos + 192] * w;\n\t\t\tt -= x1[x2 + -192] * w;\n\n\t\t\t/*\n\t\t\t * this multiplyer could be removed, but it needs more 256 FLOAT\n\t\t\t * data. thinking about the data cache performance, I think we\n\t\t\t * should not use such a huge table. tt 2000/Oct/25\n\t\t\t */\n\t\t\ts *= enwindow[wp + 6];\n\t\t\tw = t - s;\n\t\t\ta[30 + i * 2] = t + s;\n\t\t\ta[31 + i * 2] = enwindow[wp + 7] * w;\n\t\t\twp += 18;\n\t\t\tx1Pos--;\n\t\t\tx2++;\n\t\t}\n\t\t{\n\t\t\tvar s, t, u, v;\n\t\t\tt = x1[x1Pos + -16] * enwindow[wp + -10];\n\t\t\ts = x1[x1Pos + -32] * enwindow[wp + -2];\n\t\t\tt += (x1[x1Pos + -48] - x1[x1Pos + 16]) * enwindow[wp + -9];\n\t\t\ts += x1[x1Pos + -96] * enwindow[wp + -1];\n\t\t\tt += (x1[x1Pos + -80] + x1[x1Pos + 48]) * enwindow[wp + -8];\n\t\t\ts += x1[x1Pos + -160] * enwindow[wp + 0];\n\t\t\tt += (x1[x1Pos + -112] - x1[x1Pos + 80]) * enwindow[wp + -7];\n\t\t\ts += x1[x1Pos + -224] * enwindow[wp + 1];\n\t\t\tt += (x1[x1Pos + -144] + x1[x1Pos + 112]) * enwindow[wp + -6];\n\t\t\ts -= x1[x1Pos + 32] * enwindow[wp + 2];\n\t\t\tt += (x1[x1Pos + -176] - x1[x1Pos + 144]) * enwindow[wp + -5];\n\t\t\ts -= x1[x1Pos + 96] * enwindow[wp + 3];\n\t\t\tt += (x1[x1Pos + -208] + x1[x1Pos + 176]) * enwindow[wp + -4];\n\t\t\ts -= x1[x1Pos + 160] * enwindow[wp + 4];\n\t\t\tt += (x1[x1Pos + -240] - x1[x1Pos + 208]) * enwindow[wp + -3];\n\t\t\ts -= x1[x1Pos + 224];\n\n\t\t\tu = s - t;\n\t\t\tv = s + t;\n\n\t\t\tt = a[14];\n\t\t\ts = a[15] - t;\n\n\t\t\ta[31] = v + t; /* A0 */\n\t\t\ta[30] = u + s; /* A1 */\n\t\t\ta[15] = u - s; /* A2 */\n\t\t\ta[14] = v - t; /* A3 */\n\t\t}\n\t\t{\n\t\t\tvar xr;\n\t\t\txr = a[28] - a[0];\n\t\t\ta[0] += a[28];\n\t\t\ta[28] = xr * enwindow[wp + -2 * 18 + 7];\n\t\t\txr = a[29] - a[1];\n\t\t\ta[1] += a[29];\n\t\t\ta[29] = xr * enwindow[wp + -2 * 18 + 7];\n\n\t\t\txr = a[26] - a[2];\n\t\t\ta[2] += a[26];\n\t\t\ta[26] = xr * enwindow[wp + -4 * 18 + 7];\n\t\t\txr = a[27] - a[3];\n\t\t\ta[3] += a[27];\n\t\t\ta[27] = xr * enwindow[wp + -4 * 18 + 7];\n\n\t\t\txr = a[24] - a[4];\n\t\t\ta[4] += a[24];\n\t\t\ta[24] = xr * enwindow[wp + -6 * 18 + 7];\n\t\t\txr = a[25] - a[5];\n\t\t\ta[5] += a[25];\n\t\t\ta[25] = xr * enwindow[wp + -6 * 18 + 7];\n\n\t\t\txr = a[22] - a[6];\n\t\t\ta[6] += a[22];\n\t\t\ta[22] = xr * Util$6.SQRT2;\n\t\t\txr = a[23] - a[7];\n\t\t\ta[7] += a[23];\n\t\t\ta[23] = xr * Util$6.SQRT2 - a[7];\n\t\t\ta[7] -= a[6];\n\t\t\ta[22] -= a[7];\n\t\t\ta[23] -= a[22];\n\n\t\t\txr = a[6];\n\t\t\ta[6] = a[31] - xr;\n\t\t\ta[31] = a[31] + xr;\n\t\t\txr = a[7];\n\t\t\ta[7] = a[30] - xr;\n\t\t\ta[30] = a[30] + xr;\n\t\t\txr = a[22];\n\t\t\ta[22] = a[15] - xr;\n\t\t\ta[15] = a[15] + xr;\n\t\t\txr = a[23];\n\t\t\ta[23] = a[14] - xr;\n\t\t\ta[14] = a[14] + xr;\n\n\t\t\txr = a[20] - a[8];\n\t\t\ta[8] += a[20];\n\t\t\ta[20] = xr * enwindow[wp + -10 * 18 + 7];\n\t\t\txr = a[21] - a[9];\n\t\t\ta[9] += a[21];\n\t\t\ta[21] = xr * enwindow[wp + -10 * 18 + 7];\n\n\t\t\txr = a[18] - a[10];\n\t\t\ta[10] += a[18];\n\t\t\ta[18] = xr * enwindow[wp + -12 * 18 + 7];\n\t\t\txr = a[19] - a[11];\n\t\t\ta[11] += a[19];\n\t\t\ta[19] = xr * enwindow[wp + -12 * 18 + 7];\n\n\t\t\txr = a[16] - a[12];\n\t\t\ta[12] += a[16];\n\t\t\ta[16] = xr * enwindow[wp + -14 * 18 + 7];\n\t\t\txr = a[17] - a[13];\n\t\t\ta[13] += a[17];\n\t\t\ta[17] = xr * enwindow[wp + -14 * 18 + 7];\n\n\t\t\txr = -a[20] + a[24];\n\t\t\ta[20] += a[24];\n\t\t\ta[24] = xr * enwindow[wp + -12 * 18 + 7];\n\t\t\txr = -a[21] + a[25];\n\t\t\ta[21] += a[25];\n\t\t\ta[25] = xr * enwindow[wp + -12 * 18 + 7];\n\n\t\t\txr = a[4] - a[8];\n\t\t\ta[4] += a[8];\n\t\t\ta[8] = xr * enwindow[wp + -12 * 18 + 7];\n\t\t\txr = a[5] - a[9];\n\t\t\ta[5] += a[9];\n\t\t\ta[9] = xr * enwindow[wp + -12 * 18 + 7];\n\n\t\t\txr = a[0] - a[12];\n\t\t\ta[0] += a[12];\n\t\t\ta[12] = xr * enwindow[wp + -4 * 18 + 7];\n\t\t\txr = a[1] - a[13];\n\t\t\ta[1] += a[13];\n\t\t\ta[13] = xr * enwindow[wp + -4 * 18 + 7];\n\t\t\txr = a[16] - a[28];\n\t\t\ta[16] += a[28];\n\t\t\ta[28] = xr * enwindow[wp + -4 * 18 + 7];\n\t\t\txr = -a[17] + a[29];\n\t\t\ta[17] += a[29];\n\t\t\ta[29] = xr * enwindow[wp + -4 * 18 + 7];\n\n\t\t\txr = Util$6.SQRT2 * (a[2] - a[10]);\n\t\t\ta[2] += a[10];\n\t\t\ta[10] = xr;\n\t\t\txr = Util$6.SQRT2 * (a[3] - a[11]);\n\t\t\ta[3] += a[11];\n\t\t\ta[11] = xr;\n\t\t\txr = Util$6.SQRT2 * (-a[18] + a[26]);\n\t\t\ta[18] += a[26];\n\t\t\ta[26] = xr - a[18];\n\t\t\txr = Util$6.SQRT2 * (-a[19] + a[27]);\n\t\t\ta[19] += a[27];\n\t\t\ta[27] = xr - a[19];\n\n\t\t\txr = a[2];\n\t\t\ta[19] -= a[3];\n\t\t\ta[3] -= xr;\n\t\t\ta[2] = a[31] - xr;\n\t\t\ta[31] += xr;\n\t\t\txr = a[3];\n\t\t\ta[11] -= a[19];\n\t\t\ta[18] -= xr;\n\t\t\ta[3] = a[30] - xr;\n\t\t\ta[30] += xr;\n\t\t\txr = a[18];\n\t\t\ta[27] -= a[11];\n\t\t\ta[19] -= xr;\n\t\t\ta[18] = a[15] - xr;\n\t\t\ta[15] += xr;\n\n\t\t\txr = a[19];\n\t\t\ta[10] -= xr;\n\t\t\ta[19] = a[14] - xr;\n\t\t\ta[14] += xr;\n\t\t\txr = a[10];\n\t\t\ta[11] -= xr;\n\t\t\ta[10] = a[23] - xr;\n\t\t\ta[23] += xr;\n\t\t\txr = a[11];\n\t\t\ta[26] -= xr;\n\t\t\ta[11] = a[22] - xr;\n\t\t\ta[22] += xr;\n\t\t\txr = a[26];\n\t\t\ta[27] -= xr;\n\t\t\ta[26] = a[7] - xr;\n\t\t\ta[7] += xr;\n\n\t\t\txr = a[27];\n\t\t\ta[27] = a[6] - xr;\n\t\t\ta[6] += xr;\n\n\t\t\txr = Util$6.SQRT2 * (a[0] - a[4]);\n\t\t\ta[0] += a[4];\n\t\t\ta[4] = xr;\n\t\t\txr = Util$6.SQRT2 * (a[1] - a[5]);\n\t\t\ta[1] += a[5];\n\t\t\ta[5] = xr;\n\t\t\txr = Util$6.SQRT2 * (a[16] - a[20]);\n\t\t\ta[16] += a[20];\n\t\t\ta[20] = xr;\n\t\t\txr = Util$6.SQRT2 * (a[17] - a[21]);\n\t\t\ta[17] += a[21];\n\t\t\ta[21] = xr;\n\n\t\t\txr = -Util$6.SQRT2 * (a[8] - a[12]);\n\t\t\ta[8] += a[12];\n\t\t\ta[12] = xr - a[8];\n\t\t\txr = -Util$6.SQRT2 * (a[9] - a[13]);\n\t\t\ta[9] += a[13];\n\t\t\ta[13] = xr - a[9];\n\t\t\txr = -Util$6.SQRT2 * (a[25] - a[29]);\n\t\t\ta[25] += a[29];\n\t\t\ta[29] = xr - a[25];\n\t\t\txr = -Util$6.SQRT2 * (a[24] + a[28]);\n\t\t\ta[24] -= a[28];\n\t\t\ta[28] = xr - a[24];\n\n\t\t\txr = a[24] - a[16];\n\t\t\ta[24] = xr;\n\t\t\txr = a[20] - xr;\n\t\t\ta[20] = xr;\n\t\t\txr = a[28] - xr;\n\t\t\ta[28] = xr;\n\n\t\t\txr = a[25] - a[17];\n\t\t\ta[25] = xr;\n\t\t\txr = a[21] - xr;\n\t\t\ta[21] = xr;\n\t\t\txr = a[29] - xr;\n\t\t\ta[29] = xr;\n\n\t\t\txr = a[17] - a[1];\n\t\t\ta[17] = xr;\n\t\t\txr = a[9] - xr;\n\t\t\ta[9] = xr;\n\t\t\txr = a[25] - xr;\n\t\t\ta[25] = xr;\n\t\t\txr = a[5] - xr;\n\t\t\ta[5] = xr;\n\t\t\txr = a[21] - xr;\n\t\t\ta[21] = xr;\n\t\t\txr = a[13] - xr;\n\t\t\ta[13] = xr;\n\t\t\txr = a[29] - xr;\n\t\t\ta[29] = xr;\n\n\t\t\txr = a[1] - a[0];\n\t\t\ta[1] = xr;\n\t\t\txr = a[16] - xr;\n\t\t\ta[16] = xr;\n\t\t\txr = a[17] - xr;\n\t\t\ta[17] = xr;\n\t\t\txr = a[8] - xr;\n\t\t\ta[8] = xr;\n\t\t\txr = a[9] - xr;\n\t\t\ta[9] = xr;\n\t\t\txr = a[24] - xr;\n\t\t\ta[24] = xr;\n\t\t\txr = a[25] - xr;\n\t\t\ta[25] = xr;\n\t\t\txr = a[4] - xr;\n\t\t\ta[4] = xr;\n\t\t\txr = a[5] - xr;\n\t\t\ta[5] = xr;\n\t\t\txr = a[20] - xr;\n\t\t\ta[20] = xr;\n\t\t\txr = a[21] - xr;\n\t\t\ta[21] = xr;\n\t\t\txr = a[12] - xr;\n\t\t\ta[12] = xr;\n\t\t\txr = a[13] - xr;\n\t\t\ta[13] = xr;\n\t\t\txr = a[28] - xr;\n\t\t\ta[28] = xr;\n\t\t\txr = a[29] - xr;\n\t\t\ta[29] = xr;\n\n\t\t\txr = a[0];\n\t\t\ta[0] += a[31];\n\t\t\ta[31] -= xr;\n\t\t\txr = a[1];\n\t\t\ta[1] += a[30];\n\t\t\ta[30] -= xr;\n\t\t\txr = a[16];\n\t\t\ta[16] += a[15];\n\t\t\ta[15] -= xr;\n\t\t\txr = a[17];\n\t\t\ta[17] += a[14];\n\t\t\ta[14] -= xr;\n\t\t\txr = a[8];\n\t\t\ta[8] += a[23];\n\t\t\ta[23] -= xr;\n\t\t\txr = a[9];\n\t\t\ta[9] += a[22];\n\t\t\ta[22] -= xr;\n\t\t\txr = a[24];\n\t\t\ta[24] += a[7];\n\t\t\ta[7] -= xr;\n\t\t\txr = a[25];\n\t\t\ta[25] += a[6];\n\t\t\ta[6] -= xr;\n\t\t\txr = a[4];\n\t\t\ta[4] += a[27];\n\t\t\ta[27] -= xr;\n\t\t\txr = a[5];\n\t\t\ta[5] += a[26];\n\t\t\ta[26] -= xr;\n\t\t\txr = a[20];\n\t\t\ta[20] += a[11];\n\t\t\ta[11] -= xr;\n\t\t\txr = a[21];\n\t\t\ta[21] += a[10];\n\t\t\ta[10] -= xr;\n\t\t\txr = a[12];\n\t\t\ta[12] += a[19];\n\t\t\ta[19] -= xr;\n\t\t\txr = a[13];\n\t\t\ta[13] += a[18];\n\t\t\ta[18] -= xr;\n\t\t\txr = a[28];\n\t\t\ta[28] += a[3];\n\t\t\ta[3] -= xr;\n\t\t\txr = a[29];\n\t\t\ta[29] += a[2];\n\t\t\ta[2] -= xr;\n\t\t}\n\t}\n\n\t/**\n\t * Function: Calculation of the MDCT In the case of long blocks (type 0,1,3)\n\t * there are 36 coefficents in the time domain and 18 in the frequency\n\t * domain.
\n\t * In the case of short blocks (type 2) there are 3 transformations with\n\t * short length. This leads to 12 coefficents in the time and 6 in the\n\t * frequency domain. In this case the results are stored side by side in the\n\t * vector out[].\n\t *\n\t * New layer3\n\t */\n\tfunction mdct_short(inout, inoutPos) {\n\t\tfor (var l = 0; l < 3; l++) {\n\t\t\tvar tc0, tc1, tc2, ts0, ts1, ts2;\n\n\t\t\tts0 = inout[inoutPos + 2 * 3] * win[Encoder_1.SHORT_TYPE][0]\n\t\t\t\t\t- inout[inoutPos + 5 * 3];\n\t\t\ttc0 = inout[inoutPos + 0 * 3] * win[Encoder_1.SHORT_TYPE][2]\n\t\t\t\t\t- inout[inoutPos + 3 * 3];\n\t\t\ttc1 = ts0 + tc0;\n\t\t\ttc2 = ts0 - tc0;\n\n\t\t\tts0 = inout[inoutPos + 5 * 3] * win[Encoder_1.SHORT_TYPE][0]\n\t\t\t\t\t+ inout[inoutPos + 2 * 3];\n\t\t\ttc0 = inout[inoutPos + 3 * 3] * win[Encoder_1.SHORT_TYPE][2]\n\t\t\t\t\t+ inout[inoutPos + 0 * 3];\n\t\t\tts1 = ts0 + tc0;\n\t\t\tts2 = -ts0 + tc0;\n\n\t\t\ttc0 = (inout[inoutPos + 1 * 3] * win[Encoder_1.SHORT_TYPE][1] - inout[inoutPos + 4 * 3]) * 2.069978111953089e-11;\n\t\t\t/*\n\t\t\t * tritab_s [ 1 ]\n\t\t\t */\n\t\t\tts0 = (inout[inoutPos + 4 * 3] * win[Encoder_1.SHORT_TYPE][1] + inout[inoutPos + 1 * 3]) * 2.069978111953089e-11;\n\t\t\t/*\n\t\t\t * tritab_s [ 1 ]\n\t\t\t */\n\t\t\tinout[inoutPos + 3 * 0] = tc1 * 1.907525191737280e-11 + tc0;\n\t\t\t/*\n\t\t\t * tritab_s[ 2 ]\n\t\t\t */\n\t\t\tinout[inoutPos + 3 * 5] = -ts1 * 1.907525191737280e-11 + ts0;\n\t\t\t/*\n\t\t\t * tritab_s[0 ]\n\t\t\t */\n\t\t\ttc2 = tc2 * 0.86602540378443870761 * 1.907525191737281e-11;\n\t\t\t/*\n\t\t\t * tritab_s[ 2]\n\t\t\t */\n\t\t\tts1 = ts1 * 0.5 * 1.907525191737281e-11 + ts0;\n\t\t\tinout[inoutPos + 3 * 1] = tc2 - ts1;\n\t\t\tinout[inoutPos + 3 * 2] = tc2 + ts1;\n\n\t\t\ttc1 = tc1 * 0.5 * 1.907525191737281e-11 - tc0;\n\t\t\tts2 = ts2 * 0.86602540378443870761 * 1.907525191737281e-11;\n\t\t\t/*\n\t\t\t * tritab_s[ 0]\n\t\t\t */\n\t\t\tinout[inoutPos + 3 * 3] = tc1 + ts2;\n\t\t\tinout[inoutPos + 3 * 4] = tc1 - ts2;\n\n\t\t\tinoutPos++;\n\t\t}\n\t}\n\n\tfunction mdct_long(out, outPos, _in) {\n\t\tvar ct, st;\n\t\t{\n\t\t\tvar tc1, tc2, tc3, tc4, ts5, ts6, ts7, ts8;\n\t\t\t/* 1,2, 5,6, 9,10, 13,14, 17 */\n\t\t\ttc1 = _in[17] - _in[9];\n\t\t\ttc3 = _in[15] - _in[11];\n\t\t\ttc4 = _in[14] - _in[12];\n\t\t\tts5 = _in[0] + _in[8];\n\t\t\tts6 = _in[1] + _in[7];\n\t\t\tts7 = _in[2] + _in[6];\n\t\t\tts8 = _in[3] + _in[5];\n\n\t\t\tout[outPos + 17] = (ts5 + ts7 - ts8) - (ts6 - _in[4]);\n\t\t\tst = (ts5 + ts7 - ts8) * cx[12 + 7] + (ts6 - _in[4]);\n\t\t\tct = (tc1 - tc3 - tc4) * cx[12 + 6];\n\t\t\tout[outPos + 5] = ct + st;\n\t\t\tout[outPos + 6] = ct - st;\n\n\t\t\ttc2 = (_in[16] - _in[10]) * cx[12 + 6];\n\t\t\tts6 = ts6 * cx[12 + 7] + _in[4];\n\t\t\tct = tc1 * cx[12 + 0] + tc2 + tc3 * cx[12 + 1] + tc4 * cx[12 + 2];\n\t\t\tst = -ts5 * cx[12 + 4] + ts6 - ts7 * cx[12 + 5] + ts8 * cx[12 + 3];\n\t\t\tout[outPos + 1] = ct + st;\n\t\t\tout[outPos + 2] = ct - st;\n\n\t\t\tct = tc1 * cx[12 + 1] - tc2 - tc3 * cx[12 + 2] + tc4 * cx[12 + 0];\n\t\t\tst = -ts5 * cx[12 + 5] + ts6 - ts7 * cx[12 + 3] + ts8 * cx[12 + 4];\n\t\t\tout[outPos + 9] = ct + st;\n\t\t\tout[outPos + 10] = ct - st;\n\n\t\t\tct = tc1 * cx[12 + 2] - tc2 + tc3 * cx[12 + 0] - tc4 * cx[12 + 1];\n\t\t\tst = ts5 * cx[12 + 3] - ts6 + ts7 * cx[12 + 4] - ts8 * cx[12 + 5];\n\t\t\tout[outPos + 13] = ct + st;\n\t\t\tout[outPos + 14] = ct - st;\n\t\t}\n\t\t{\n\t\t\tvar ts1, ts2, ts3, ts4, tc5, tc6, tc7, tc8;\n\n\t\t\tts1 = _in[8] - _in[0];\n\t\t\tts3 = _in[6] - _in[2];\n\t\t\tts4 = _in[5] - _in[3];\n\t\t\ttc5 = _in[17] + _in[9];\n\t\t\ttc6 = _in[16] + _in[10];\n\t\t\ttc7 = _in[15] + _in[11];\n\t\t\ttc8 = _in[14] + _in[12];\n\n\t\t\tout[outPos + 0] = (tc5 + tc7 + tc8) + (tc6 + _in[13]);\n\t\t\tct = (tc5 + tc7 + tc8) * cx[12 + 7] - (tc6 + _in[13]);\n\t\t\tst = (ts1 - ts3 + ts4) * cx[12 + 6];\n\t\t\tout[outPos + 11] = ct + st;\n\t\t\tout[outPos + 12] = ct - st;\n\n\t\t\tts2 = (_in[7] - _in[1]) * cx[12 + 6];\n\t\t\ttc6 = _in[13] - tc6 * cx[12 + 7];\n\t\t\tct = tc5 * cx[12 + 3] - tc6 + tc7 * cx[12 + 4] + tc8 * cx[12 + 5];\n\t\t\tst = ts1 * cx[12 + 2] + ts2 + ts3 * cx[12 + 0] + ts4 * cx[12 + 1];\n\t\t\tout[outPos + 3] = ct + st;\n\t\t\tout[outPos + 4] = ct - st;\n\n\t\t\tct = -tc5 * cx[12 + 5] + tc6 - tc7 * cx[12 + 3] - tc8 * cx[12 + 4];\n\t\t\tst = ts1 * cx[12 + 1] + ts2 - ts3 * cx[12 + 2] - ts4 * cx[12 + 0];\n\t\t\tout[outPos + 7] = ct + st;\n\t\t\tout[outPos + 8] = ct - st;\n\n\t\t\tct = -tc5 * cx[12 + 4] + tc6 - tc7 * cx[12 + 5] - tc8 * cx[12 + 3];\n\t\t\tst = ts1 * cx[12 + 0] - ts2 + ts3 * cx[12 + 1] - ts4 * cx[12 + 2];\n\t\t\tout[outPos + 15] = ct + st;\n\t\t\tout[outPos + 16] = ct - st;\n\t\t}\n\t}\n\n\tthis.mdct_sub48 = function(gfc, w0, w1) {\n\t\tvar wk = w0;\n\t\tvar wkPos = 286;\n\t\t/* thinking cache performance, ch->gr loop is better than gr->ch loop */\n\t\tfor (var ch = 0; ch < gfc.channels_out; ch++) {\n\t\t\tfor (var gr = 0; gr < gfc.mode_gr; gr++) {\n\t\t\t\tvar band;\n\t\t\t\tvar gi = (gfc.l3_side.tt[gr][ch]);\n\t\t\t\tvar mdct_enc = gi.xr;\n\t\t\t\tvar mdct_encPos = 0;\n\t\t\t\tvar samp = gfc.sb_sample[ch][1 - gr];\n\t\t\t\tvar sampPos = 0;\n\n\t\t\t\tfor (var k = 0; k < 18 / 2; k++) {\n\t\t\t\t\twindow_subband(wk, wkPos, samp[sampPos]);\n\t\t\t\t\twindow_subband(wk, wkPos + 32, samp[sampPos + 1]);\n\t\t\t\t\tsampPos += 2;\n\t\t\t\t\twkPos += 64;\n\t\t\t\t\t/*\n\t\t\t\t\t * Compensate for inversion in the analysis filter\n\t\t\t\t\t */\n\t\t\t\t\tfor (band = 1; band < 32; band += 2) {\n\t\t\t\t\t\tsamp[sampPos - 1][band] *= -1;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t/*\n\t\t\t\t * Perform imdct of 18 previous subband samples + 18 current\n\t\t\t\t * subband samples\n\t\t\t\t */\n\t\t\t\tfor (band = 0; band < 32; band++, mdct_encPos += 18) {\n\t\t\t\t\tvar type = gi.block_type;\n\t\t\t\t\tvar band0 = gfc.sb_sample[ch][gr];\n\t\t\t\t\tvar band1 = gfc.sb_sample[ch][1 - gr];\n\t\t\t\t\tif (gi.mixed_block_flag != 0 && band < 2)\n\t\t\t\t\t\ttype = 0;\n\t\t\t\t\tif (gfc.amp_filter[band] < 1e-12) {\n\t\t\t\t\t\tArrays$6.fill(mdct_enc, mdct_encPos + 0,\n\t\t\t\t\t\t\t\tmdct_encPos + 18, 0);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (gfc.amp_filter[band] < 1.0) {\n\t\t\t\t\t\t\tfor (var k = 0; k < 18; k++)\n\t\t\t\t\t\t\t\tband1[k][order[band]] *= gfc.amp_filter[band];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (type == Encoder_1.SHORT_TYPE) {\n\t\t\t\t\t\t\tfor (var k = -NS / 4; k < 0; k++) {\n\t\t\t\t\t\t\t\tvar w = win[Encoder_1.SHORT_TYPE][k + 3];\n\t\t\t\t\t\t\t\tmdct_enc[mdct_encPos + k * 3 + 9] = band0[9 + k][order[band]]\n\t\t\t\t\t\t\t\t\t\t* w - band0[8 - k][order[band]];\n\t\t\t\t\t\t\t\tmdct_enc[mdct_encPos + k * 3 + 18] = band0[14 - k][order[band]]\n\t\t\t\t\t\t\t\t\t\t* w + band0[15 + k][order[band]];\n\t\t\t\t\t\t\t\tmdct_enc[mdct_encPos + k * 3 + 10] = band0[15 + k][order[band]]\n\t\t\t\t\t\t\t\t\t\t* w - band0[14 - k][order[band]];\n\t\t\t\t\t\t\t\tmdct_enc[mdct_encPos + k * 3 + 19] = band1[2 - k][order[band]]\n\t\t\t\t\t\t\t\t\t\t* w + band1[3 + k][order[band]];\n\t\t\t\t\t\t\t\tmdct_enc[mdct_encPos + k * 3 + 11] = band1[3 + k][order[band]]\n\t\t\t\t\t\t\t\t\t\t* w - band1[2 - k][order[band]];\n\t\t\t\t\t\t\t\tmdct_enc[mdct_encPos + k * 3 + 20] = band1[8 - k][order[band]]\n\t\t\t\t\t\t\t\t\t\t* w + band1[9 + k][order[band]];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tmdct_short(mdct_enc, mdct_encPos);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar work = new_float$6(18);\n\t\t\t\t\t\t\tfor (var k = -NL / 4; k < 0; k++) {\n\t\t\t\t\t\t\t\tvar a, b;\n\t\t\t\t\t\t\t\ta = win[type][k + 27]\n\t\t\t\t\t\t\t\t\t\t* band1[k + 9][order[band]]\n\t\t\t\t\t\t\t\t\t\t+ win[type][k + 36]\n\t\t\t\t\t\t\t\t\t\t* band1[8 - k][order[band]];\n\t\t\t\t\t\t\t\tb = win[type][k + 9]\n\t\t\t\t\t\t\t\t\t\t* band0[k + 9][order[band]]\n\t\t\t\t\t\t\t\t\t\t- win[type][k + 18]\n\t\t\t\t\t\t\t\t\t\t* band0[8 - k][order[band]];\n\t\t\t\t\t\t\t\twork[k + 9] = a - b * tantab_l[3 + k + 9];\n\t\t\t\t\t\t\t\twork[k + 18] = a * tantab_l[3 + k + 9] + b;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tmdct_long(mdct_enc, mdct_encPos, work);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t/*\n\t\t\t\t\t * Perform aliasing reduction butterfly\n\t\t\t\t\t */\n\t\t\t\t\tif (type != Encoder_1.SHORT_TYPE && band != 0) {\n\t\t\t\t\t\tfor (var k = 7; k >= 0; --k) {\n\t\t\t\t\t\t\tvar bu, bd;\n\t\t\t\t\t\t\tbu = mdct_enc[mdct_encPos + k] * ca[20 + k]\n\t\t\t\t\t\t\t\t\t+ mdct_enc[mdct_encPos + -1 - k]\n\t\t\t\t\t\t\t\t\t* cs[28 + k];\n\t\t\t\t\t\t\tbd = mdct_enc[mdct_encPos + k] * cs[28 + k]\n\t\t\t\t\t\t\t\t\t- mdct_enc[mdct_encPos + -1 - k]\n\t\t\t\t\t\t\t\t\t* ca[20 + k];\n\n\t\t\t\t\t\t\tmdct_enc[mdct_encPos + -1 - k] = bu;\n\t\t\t\t\t\t\tmdct_enc[mdct_encPos + k] = bd;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\twk = w1;\n\t\t\twkPos = 286;\n\t\t\tif (gfc.mode_gr == 1) {\n\t\t\t\tfor (var i = 0; i < 18; i++) {\n\t\t\t\t\tSystem$6.arraycopy(gfc.sb_sample[ch][1][i], 0,\n\t\t\t\t\t\t\tgfc.sb_sample[ch][0][i], 0, 32);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\nvar NewMDCT_1 = NewMDCT;\n\nvar System$7 = common.System;\nvar new_float$7 = common.new_float;\nvar new_float_n$7 = common.new_float_n;\nfunction III_psy_xmin() {\n this.l = new_float$7(Encoder_1.SBMAX_l);\n this.s = new_float_n$7([Encoder_1.SBMAX_s, 3]);\n\n var self = this;\n this.assign = function (iii_psy_xmin) {\n System$7.arraycopy(iii_psy_xmin.l, 0, self.l, 0, Encoder_1.SBMAX_l);\n for (var i = 0; i < Encoder_1.SBMAX_s; i++) {\n for (var j = 0; j < 3; j++) {\n self.s[i][j] = iii_psy_xmin.s[i][j];\n }\n }\n };\n}\n\nvar III_psy_xmin_1 = III_psy_xmin;\n\n//package mp3;\n\n\n\nfunction III_psy_ratio() {\n\tthis.thm = new III_psy_xmin_1();\n\tthis.en = new III_psy_xmin_1();\n}\n\nvar III_psy_ratio_1 = III_psy_ratio;\n\nvar System$5 = common.System;\nvar VbrMode$5 = common.VbrMode;\nvar new_array_n$5 = common.new_array_n;\nvar new_float$5 = common.new_float;\nvar new_float_n$5 = common.new_float_n;\nvar new_int$5 = common.new_int;\nvar assert$5 = common.assert;\n\n/**\n * ENCDELAY The encoder delay.\n *\n * Minimum allowed is MDCTDELAY (see below)\n *\n * The first 96 samples will be attenuated, so using a value less than 96\n * will result in corrupt data for the first 96-ENCDELAY samples.\n *\n * suggested: 576 set to 1160 to sync with FhG.\n */\nEncoder$2.ENCDELAY = 576;\n/**\n * make sure there is at least one complete frame after the last frame\n * containing real data\n *\n * Using a value of 288 would be sufficient for a a very sophisticated\n * decoder that can decode granule-by-granule instead of frame by frame. But\n * lets not assume this, and assume the decoder will not decode frame N\n * unless it also has data for frame N+1\n */\nEncoder$2.POSTDELAY = 1152;\n\n/**\n * delay of the MDCT used in mdct.c original ISO routines had a delay of\n * 528! Takehiro's routines:\n */\nEncoder$2.MDCTDELAY = 48;\nEncoder$2.FFTOFFSET = (224 + Encoder$2.MDCTDELAY);\n\n/**\n * Most decoders, including the one we use, have a delay of 528 samples.\n */\nEncoder$2.DECDELAY = 528;\n\n/**\n * number of subbands\n */\nEncoder$2.SBLIMIT = 32;\n\n/**\n * parition bands bands\n */\nEncoder$2.CBANDS = 64;\n\n/**\n * number of critical bands/scale factor bands where masking is computed\n */\nEncoder$2.SBPSY_l = 21;\nEncoder$2.SBPSY_s = 12;\n\n/**\n * total number of scalefactor bands encoded\n */\nEncoder$2.SBMAX_l = 22;\nEncoder$2.SBMAX_s = 13;\nEncoder$2.PSFB21 = 6;\nEncoder$2.PSFB12 = 6;\n\n/**\n * FFT sizes\n */\nEncoder$2.BLKSIZE = 1024;\nEncoder$2.HBLKSIZE = (Encoder$2.BLKSIZE / 2 + 1);\nEncoder$2.BLKSIZE_s = 256;\nEncoder$2.HBLKSIZE_s = (Encoder$2.BLKSIZE_s / 2 + 1);\n\nEncoder$2.NORM_TYPE = 0;\nEncoder$2.START_TYPE = 1;\nEncoder$2.SHORT_TYPE = 2;\nEncoder$2.STOP_TYPE = 3;\n\n/**\n *
\n * Mode Extention:\n * When we are in stereo mode, there are 4 possible methods to store these\n * two channels. The stereo modes -m? are using a subset of them.\n *\n *  -ms: MPG_MD_LR_LR\n *  -mj: MPG_MD_LR_LR and MPG_MD_MS_LR\n *  -mf: MPG_MD_MS_LR\n *  -mi: all\n * 
\n */\nEncoder$2.MPG_MD_LR_LR = 0;\nEncoder$2.MPG_MD_LR_I = 1;\nEncoder$2.MPG_MD_MS_LR = 2;\nEncoder$2.MPG_MD_MS_I = 3;\n\nEncoder$2.fircoef = [-0.0207887 * 5, -0.0378413 * 5,\n -0.0432472 * 5, -0.031183 * 5, 7.79609e-18 * 5, 0.0467745 * 5,\n 0.10091 * 5, 0.151365 * 5, 0.187098 * 5];\n\nfunction Encoder$2() {\n var NewMDCT = NewMDCT_1;\n var III_psy_ratio = III_psy_ratio_1;\n\n var FFTOFFSET = Encoder$2.FFTOFFSET;\n var MPG_MD_MS_LR = Encoder$2.MPG_MD_MS_LR;\n //BitStream bs;\n //PsyModel psy;\n //VBRTag vbr;\n //QuantizePVT qupvt;\n var bs = null;\n this.psy = null;\n var psy = null;\n var vbr = null;\n var qupvt = null;\n\n //public final void setModules(BitStream bs, PsyModel psy, QuantizePVT qupvt,\n // VBRTag vbr) {\n this.setModules = function (_bs, _psy, _qupvt, _vbr) {\n bs = _bs;\n this.psy = _psy;\n psy = _psy;\n vbr = _vbr;\n qupvt = _qupvt;\n };\n\n var newMDCT = new NewMDCT();\n\n /***********************************************************************\n *\n * encoder and decoder delays\n *\n ***********************************************************************/\n\n /**\n *
\n     * layer III enc->dec delay:  1056 (1057?)   (observed)\n     * layer  II enc->dec delay:   480  (481?)   (observed)\n     *\n     * polyphase 256-16             (dec or enc)        = 240\n     * mdct      256+32  (9*32)     (dec or enc)        = 288\n     * total:    512+16\n     *\n     * My guess is that delay of polyphase filterbank is actualy 240.5\n     * (there are technical reasons for this, see postings in mp3encoder).\n     * So total Encode+Decode delay = ENCDELAY + 528 + 1\n     * 
\n */\n\n\n /**\n * auto-adjust of ATH, useful for low volume Gabriel Bouvigne 3 feb 2001\n *\n * modifies some values in gfp.internal_flags.ATH (gfc.ATH)\n */\n//private void adjust_ATH(final LameInternalFlags gfc) {\n function adjust_ATH(gfc) {\n var gr2_max, max_pow;\n\n if (gfc.ATH.useAdjust == 0) {\n gfc.ATH.adjust = 1.0;\n /* no adjustment */\n return;\n }\n\n /* jd - 2001 mar 12, 27, jun 30 */\n /* loudness based on equal loudness curve; */\n /* use granule with maximum combined loudness */\n max_pow = gfc.loudness_sq[0][0];\n gr2_max = gfc.loudness_sq[1][0];\n if (gfc.channels_out == 2) {\n max_pow += gfc.loudness_sq[0][1];\n gr2_max += gfc.loudness_sq[1][1];\n } else {\n max_pow += max_pow;\n gr2_max += gr2_max;\n }\n if (gfc.mode_gr == 2) {\n max_pow = Math.max(max_pow, gr2_max);\n }\n max_pow *= 0.5;\n /* max_pow approaches 1.0 for full band noise */\n\n /* jd - 2001 mar 31, jun 30 */\n /* user tuning of ATH adjustment region */\n max_pow *= gfc.ATH.aaSensitivityP;\n\n /*\n * adjust ATH depending on range of maximum value\n */\n\n /* jd - 2001 feb27, mar12,20, jun30, jul22 */\n /* continuous curves based on approximation */\n /* to GB's original values. */\n /* For an increase in approximate loudness, */\n /* set ATH adjust to adjust_limit immediately */\n /* after a delay of one frame. */\n /* For a loudness decrease, reduce ATH adjust */\n /* towards adjust_limit gradually. */\n /* max_pow is a loudness squared or a power. */\n if (max_pow > 0.03125) { /* ((1 - 0.000625)/ 31.98) from curve below */\n if (gfc.ATH.adjust >= 1.0) {\n gfc.ATH.adjust = 1.0;\n } else {\n /* preceding frame has lower ATH adjust; */\n /* ascend only to the preceding adjust_limit */\n /* in case there is leading low volume */\n if (gfc.ATH.adjust < gfc.ATH.adjustLimit) {\n gfc.ATH.adjust = gfc.ATH.adjustLimit;\n }\n }\n gfc.ATH.adjustLimit = 1.0;\n } else { /* adjustment curve */\n /* about 32 dB maximum adjust (0.000625) */\n var adj_lim_new = 31.98 * max_pow + 0.000625;\n if (gfc.ATH.adjust >= adj_lim_new) { /* descend gradually */\n gfc.ATH.adjust *= adj_lim_new * 0.075 + 0.925;\n if (gfc.ATH.adjust < adj_lim_new) { /* stop descent */\n gfc.ATH.adjust = adj_lim_new;\n }\n } else { /* ascend */\n if (gfc.ATH.adjustLimit >= adj_lim_new) {\n gfc.ATH.adjust = adj_lim_new;\n } else {\n /* preceding frame has lower ATH adjust; */\n /* ascend only to the preceding adjust_limit */\n if (gfc.ATH.adjust < gfc.ATH.adjustLimit) {\n gfc.ATH.adjust = gfc.ATH.adjustLimit;\n }\n }\n }\n gfc.ATH.adjustLimit = adj_lim_new;\n }\n }\n\n /**\n *
\n     *  some simple statistics\n     *\n     *  bitrate index 0: free bitrate . not allowed in VBR mode\n     *  : bitrates, kbps depending on MPEG version\n     *  bitrate index 15: forbidden\n     *\n     *  mode_ext:\n     *  0:  LR\n     *  1:  LR-i\n     *  2:  MS\n     *  3:  MS-i\n     * 
\n */\n function updateStats(gfc) {\n var gr, ch;\n assert$5(0 <= gfc.bitrate_index && gfc.bitrate_index < 16);\n assert$5(0 <= gfc.mode_ext && gfc.mode_ext < 4);\n\n /* count bitrate indices */\n gfc.bitrate_stereoMode_Hist[gfc.bitrate_index][4]++;\n gfc.bitrate_stereoMode_Hist[15][4]++;\n\n /* count 'em for every mode extension in case of 2 channel encoding */\n if (gfc.channels_out == 2) {\n gfc.bitrate_stereoMode_Hist[gfc.bitrate_index][gfc.mode_ext]++;\n gfc.bitrate_stereoMode_Hist[15][gfc.mode_ext]++;\n }\n for (gr = 0; gr < gfc.mode_gr; ++gr) {\n for (ch = 0; ch < gfc.channels_out; ++ch) {\n var bt = gfc.l3_side.tt[gr][ch].block_type | 0;\n if (gfc.l3_side.tt[gr][ch].mixed_block_flag != 0)\n bt = 4;\n gfc.bitrate_blockType_Hist[gfc.bitrate_index][bt]++;\n gfc.bitrate_blockType_Hist[gfc.bitrate_index][5]++;\n gfc.bitrate_blockType_Hist[15][bt]++;\n gfc.bitrate_blockType_Hist[15][5]++;\n }\n }\n }\n\n function lame_encode_frame_init(gfp, inbuf) {\n var gfc = gfp.internal_flags;\n\n var ch, gr;\n\n if (gfc.lame_encode_frame_init == 0) {\n /* prime the MDCT/polyphase filterbank with a short block */\n var i, j;\n var primebuff0 = new_float$5(286 + 1152 + 576);\n var primebuff1 = new_float$5(286 + 1152 + 576);\n gfc.lame_encode_frame_init = 1;\n for (i = 0, j = 0; i < 286 + 576 * (1 + gfc.mode_gr); ++i) {\n if (i < 576 * gfc.mode_gr) {\n primebuff0[i] = 0;\n if (gfc.channels_out == 2)\n primebuff1[i] = 0;\n } else {\n primebuff0[i] = inbuf[0][j];\n if (gfc.channels_out == 2)\n primebuff1[i] = inbuf[1][j];\n ++j;\n }\n }\n /* polyphase filtering / mdct */\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n gfc.l3_side.tt[gr][ch].block_type = Encoder$2.SHORT_TYPE;\n }\n }\n newMDCT.mdct_sub48(gfc, primebuff0, primebuff1);\n\n /* check FFT will not use a negative starting offset */\n assert$5(576 >= Encoder$2.FFTOFFSET);\n /* check if we have enough data for FFT */\n assert$5(gfc.mf_size >= (Encoder$2.BLKSIZE + gfp.framesize - Encoder$2.FFTOFFSET));\n /* check if we have enough data for polyphase filterbank */\n assert$5(gfc.mf_size >= (512 + gfp.framesize - 32));\n }\n\n }\n\n /**\n *
\n     * encodeframe()           Layer 3\n     *\n     * encode a single frame\n     *\n     *\n     *    lame_encode_frame()\n     *\n     *\n     *                           gr 0            gr 1\n     *    inbuf:           |--------------|--------------|--------------|\n     *\n     *\n     *    Polyphase (18 windows, each shifted 32)\n     *    gr 0:\n     *    window1          <----512---.\n     *    window18                 <----512---.\n     *\n     *    gr 1:\n     *    window1                         <----512---.\n     *    window18                                <----512---.\n     *\n     *\n     *\n     *    MDCT output:  |--------------|--------------|--------------|\n     *\n     *    FFT's                    <---------1024---------.\n     *                                             <---------1024-------.\n     *\n     *\n     *\n     *        inbuf = buffer of PCM data size=MP3 framesize\n     *        encoder acts on inbuf[ch][0], but output is delayed by MDCTDELAY\n     *        so the MDCT coefficints are from inbuf[ch][-MDCTDELAY]\n     *\n     *        psy-model FFT has a 1 granule delay, so we feed it data for the\n     *        next granule.\n     *        FFT is centered over granule:  224+576+224\n     *        So FFT starts at:   576-224-MDCTDELAY\n     *\n     *        MPEG2:  FFT ends at:  BLKSIZE+576-224-MDCTDELAY      (1328)\n     *        MPEG1:  FFT ends at:  BLKSIZE+2*576-224-MDCTDELAY    (1904)\n     *\n     *        MPEG2:  polyphase first window:  [0..511]\n     *                          18th window:   [544..1055]          (1056)\n     *        MPEG1:            36th window:   [1120..1631]         (1632)\n     *                data needed:  512+framesize-32\n     *\n     *        A close look newmdct.c shows that the polyphase filterbank\n     *        only uses data from [0..510] for each window.  Perhaps because the window\n     *        used by the filterbank is zero for the last point, so Takehiro's\n     *        code doesn't bother to compute with it.\n     *\n     *        FFT starts at 576-224-MDCTDELAY (304)  = 576-FFTOFFSET\n     *\n     * 
\n */\n\n\n this.lame_encode_mp3_frame = function (gfp, inbuf_l, inbuf_r, mp3buf, mp3bufPos, mp3buf_size) {\n var mp3count;\n var masking_LR = new_array_n$5([2, 2]);\n /*\n * LR masking &\n * energy\n */\n masking_LR[0][0] = new III_psy_ratio();\n masking_LR[0][1] = new III_psy_ratio();\n masking_LR[1][0] = new III_psy_ratio();\n masking_LR[1][1] = new III_psy_ratio();\n var masking_MS = new_array_n$5([2, 2]);\n /* MS masking & energy */\n masking_MS[0][0] = new III_psy_ratio();\n masking_MS[0][1] = new III_psy_ratio();\n masking_MS[1][0] = new III_psy_ratio();\n masking_MS[1][1] = new III_psy_ratio();\n //III_psy_ratio masking[][];\n var masking;\n /* pointer to selected maskings */\n var inbuf = [null, null];\n var gfc = gfp.internal_flags;\n\n var tot_ener = new_float_n$5([2, 4]);\n var ms_ener_ratio = [.5, .5];\n var pe = [[0., 0.], [0., 0.]];\n var pe_MS = [[0., 0.], [0., 0.]];\n\n//float[][] pe_use;\n var pe_use;\n\n var ch, gr;\n\n inbuf[0] = inbuf_l;\n inbuf[1] = inbuf_r;\n\n if (gfc.lame_encode_frame_init == 0) {\n /* first run? */\n lame_encode_frame_init(gfp, inbuf);\n\n }\n\n /********************** padding *****************************/\n /**\n *
\n         * padding method as described in\n         * \"MPEG-Layer3 / Bitstream Syntax and Decoding\"\n         * by Martin Sieler, Ralph Sperschneider\n         *\n         * note: there is no padding for the very first frame\n         *\n         * Robert Hegemann 2000-06-22\n         * 
\n */\n gfc.padding = 0;\n if ((gfc.slot_lag -= gfc.frac_SpF) < 0) {\n gfc.slot_lag += gfp.out_samplerate;\n gfc.padding = 1;\n }\n\n /****************************************\n * Stage 1: psychoacoustic model *\n ****************************************/\n\n if (gfc.psymodel != 0) {\n /*\n * psychoacoustic model psy model has a 1 granule (576) delay that\n * we must compensate for (mt 6/99).\n */\n var ret;\n var bufp = [null, null];\n /* address of beginning of left & right granule */\n var bufpPos = 0;\n /* address of beginning of left & right granule */\n var blocktype = new_int$5(2);\n\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n\n for (ch = 0; ch < gfc.channels_out; ch++) {\n bufp[ch] = inbuf[ch];\n bufpPos = 576 + gr * 576 - Encoder$2.FFTOFFSET;\n }\n if (gfp.VBR == VbrMode$5.vbr_mtrh || gfp.VBR == VbrMode$5.vbr_mt) {\n ret = psy.L3psycho_anal_vbr(gfp, bufp, bufpPos, gr,\n masking_LR, masking_MS, pe[gr], pe_MS[gr],\n tot_ener[gr], blocktype);\n } else {\n ret = psy.L3psycho_anal_ns(gfp, bufp, bufpPos, gr,\n masking_LR, masking_MS, pe[gr], pe_MS[gr],\n tot_ener[gr], blocktype);\n }\n if (ret != 0)\n return -4;\n\n if (gfp.mode == MPEGMode.JOINT_STEREO) {\n ms_ener_ratio[gr] = tot_ener[gr][2] + tot_ener[gr][3];\n if (ms_ener_ratio[gr] > 0)\n ms_ener_ratio[gr] = tot_ener[gr][3] / ms_ener_ratio[gr];\n }\n\n /* block type flags */\n for (ch = 0; ch < gfc.channels_out; ch++) {\n var cod_info = gfc.l3_side.tt[gr][ch];\n cod_info.block_type = blocktype[ch];\n cod_info.mixed_block_flag = 0;\n }\n }\n } else {\n /* no psy model */\n for (gr = 0; gr < gfc.mode_gr; gr++)\n for (ch = 0; ch < gfc.channels_out; ch++) {\n gfc.l3_side.tt[gr][ch].block_type = Encoder$2.NORM_TYPE;\n gfc.l3_side.tt[gr][ch].mixed_block_flag = 0;\n pe_MS[gr][ch] = pe[gr][ch] = 700;\n }\n }\n\n /* auto-adjust of ATH, useful for low volume */\n adjust_ATH(gfc);\n\n /****************************************\n * Stage 2: MDCT *\n ****************************************/\n\n /* polyphase filtering / mdct */\n newMDCT.mdct_sub48(gfc, inbuf[0], inbuf[1]);\n\n /****************************************\n * Stage 3: MS/LR decision *\n ****************************************/\n\n /* Here will be selected MS or LR coding of the 2 stereo channels */\n gfc.mode_ext = Encoder$2.MPG_MD_LR_LR;\n\n if (gfp.force_ms) {\n gfc.mode_ext = Encoder$2.MPG_MD_MS_LR;\n } else if (gfp.mode == MPEGMode.JOINT_STEREO) {\n /*\n * ms_ratio = is scaled, for historical reasons, to look like a\n * ratio of side_channel / total. 0 = signal is 100% mono .5 = L & R\n * uncorrelated\n */\n\n /**\n *
\n             * [0] and [1] are the results for the two granules in MPEG-1,\n             * in MPEG-2 it's only a faked averaging of the same value\n             * _prev is the value of the last granule of the previous frame\n             * _next is the value of the first granule of the next frame\n             * 
\n */\n\n var sum_pe_MS = 0.;\n var sum_pe_LR = 0.;\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n sum_pe_MS += pe_MS[gr][ch];\n sum_pe_LR += pe[gr][ch];\n }\n }\n\n /* based on PE: M/S coding would not use much more bits than L/R */\n if (sum_pe_MS <= 1.00 * sum_pe_LR) {\n\n var gi0 = gfc.l3_side.tt[0];\n var gi1 = gfc.l3_side.tt[gfc.mode_gr - 1];\n\n if (gi0[0].block_type == gi0[1].block_type\n && gi1[0].block_type == gi1[1].block_type) {\n\n gfc.mode_ext = Encoder$2.MPG_MD_MS_LR;\n }\n }\n }\n\n /* bit and noise allocation */\n if (gfc.mode_ext == MPG_MD_MS_LR) {\n masking = masking_MS;\n /* use MS masking */\n pe_use = pe_MS;\n } else {\n masking = masking_LR;\n /* use LR masking */\n pe_use = pe;\n }\n\n /* copy data for MP3 frame analyzer */\n if (gfp.analysis && gfc.pinfo != null) {\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n gfc.pinfo.ms_ratio[gr] = gfc.ms_ratio[gr];\n gfc.pinfo.ms_ener_ratio[gr] = ms_ener_ratio[gr];\n gfc.pinfo.blocktype[gr][ch] = gfc.l3_side.tt[gr][ch].block_type;\n gfc.pinfo.pe[gr][ch] = pe_use[gr][ch];\n System$5.arraycopy(gfc.l3_side.tt[gr][ch].xr, 0,\n gfc.pinfo.xr[gr][ch], 0, 576);\n /*\n * in psymodel, LR and MS data was stored in pinfo. switch\n * to MS data:\n */\n if (gfc.mode_ext == MPG_MD_MS_LR) {\n gfc.pinfo.ers[gr][ch] = gfc.pinfo.ers[gr][ch + 2];\n System$5.arraycopy(gfc.pinfo.energy[gr][ch + 2], 0,\n gfc.pinfo.energy[gr][ch], 0,\n gfc.pinfo.energy[gr][ch].length);\n }\n }\n }\n }\n\n /****************************************\n * Stage 4: quantization loop *\n ****************************************/\n\n if (gfp.VBR == VbrMode$5.vbr_off || gfp.VBR == VbrMode$5.vbr_abr) {\n\n var i;\n var f;\n\n for (i = 0; i < 18; i++)\n gfc.nsPsy.pefirbuf[i] = gfc.nsPsy.pefirbuf[i + 1];\n\n f = 0.0;\n for (gr = 0; gr < gfc.mode_gr; gr++)\n for (ch = 0; ch < gfc.channels_out; ch++)\n f += pe_use[gr][ch];\n gfc.nsPsy.pefirbuf[18] = f;\n\n f = gfc.nsPsy.pefirbuf[9];\n for (i = 0; i < 9; i++)\n f += (gfc.nsPsy.pefirbuf[i] + gfc.nsPsy.pefirbuf[18 - i])\n * Encoder$2.fircoef[i];\n\n f = (670 * 5 * gfc.mode_gr * gfc.channels_out) / f;\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n pe_use[gr][ch] *= f;\n }\n }\n }\n gfc.iteration_loop.iteration_loop(gfp, pe_use, ms_ener_ratio, masking);\n\n /****************************************\n * Stage 5: bitstream formatting *\n ****************************************/\n\n /* write the frame to the bitstream */\n bs.format_bitstream(gfp);\n\n /* copy mp3 bit buffer into array */\n mp3count = bs.copy_buffer(gfc, mp3buf, mp3bufPos, mp3buf_size, 1);\n\n if (gfp.bWriteVbrTag)\n vbr.addVbrFrame(gfp);\n\n if (gfp.analysis && gfc.pinfo != null) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n var j;\n for (j = 0; j < FFTOFFSET; j++)\n gfc.pinfo.pcmdata[ch][j] = gfc.pinfo.pcmdata[ch][j\n + gfp.framesize];\n for (j = FFTOFFSET; j < 1600; j++) {\n gfc.pinfo.pcmdata[ch][j] = inbuf[ch][j - FFTOFFSET];\n }\n }\n qupvt.set_frame_pinfo(gfp, masking);\n }\n\n updateStats(gfc);\n\n return mp3count;\n };\n}\n\n\nvar Encoder_1 = Encoder$2;\n\nvar Util$4 = common.Util;\nvar new_float$4 = common.new_float;\nfunction FFT() {\n\n var window = new_float$4(Encoder_1.BLKSIZE);\n var window_s = new_float$4(Encoder_1.BLKSIZE_s / 2);\n\n var costab = [\n 9.238795325112867e-01, 3.826834323650898e-01,\n 9.951847266721969e-01, 9.801714032956060e-02,\n 9.996988186962042e-01, 2.454122852291229e-02,\n 9.999811752826011e-01, 6.135884649154475e-03\n ];\n\n function fht(fz, fzPos, n) {\n var tri = 0;\n var k4;\n var fi;\n var gi;\n\n n <<= 1;\n /* to get BLKSIZE, because of 3DNow! ASM routine */\n var fn = fzPos + n;\n k4 = 4;\n do {\n var s1, c1;\n var i, k1, k2, k3, kx;\n kx = k4 >> 1;\n k1 = k4;\n k2 = k4 << 1;\n k3 = k2 + k1;\n k4 = k2 << 1;\n fi = fzPos;\n gi = fi + kx;\n do {\n var f0, f1, f2, f3;\n f1 = fz[fi + 0] - fz[fi + k1];\n f0 = fz[fi + 0] + fz[fi + k1];\n f3 = fz[fi + k2] - fz[fi + k3];\n f2 = fz[fi + k2] + fz[fi + k3];\n fz[fi + k2] = f0 - f2;\n fz[fi + 0] = f0 + f2;\n fz[fi + k3] = f1 - f3;\n fz[fi + k1] = f1 + f3;\n f1 = fz[gi + 0] - fz[gi + k1];\n f0 = fz[gi + 0] + fz[gi + k1];\n f3 = (Util$4.SQRT2 * fz[gi + k3]);\n f2 = (Util$4.SQRT2 * fz[gi + k2]);\n fz[gi + k2] = f0 - f2;\n fz[gi + 0] = f0 + f2;\n fz[gi + k3] = f1 - f3;\n fz[gi + k1] = f1 + f3;\n gi += k4;\n fi += k4;\n } while (fi < fn);\n c1 = costab[tri + 0];\n s1 = costab[tri + 1];\n for (i = 1; i < kx; i++) {\n var c2, s2;\n c2 = 1 - (2 * s1) * s1;\n s2 = (2 * s1) * c1;\n fi = fzPos + i;\n gi = fzPos + k1 - i;\n do {\n var a, b, g0, f0, f1, g1, f2, g2, f3, g3;\n b = s2 * fz[fi + k1] - c2 * fz[gi + k1];\n a = c2 * fz[fi + k1] + s2 * fz[gi + k1];\n f1 = fz[fi + 0] - a;\n f0 = fz[fi + 0] + a;\n g1 = fz[gi + 0] - b;\n g0 = fz[gi + 0] + b;\n b = s2 * fz[fi + k3] - c2 * fz[gi + k3];\n a = c2 * fz[fi + k3] + s2 * fz[gi + k3];\n f3 = fz[fi + k2] - a;\n f2 = fz[fi + k2] + a;\n g3 = fz[gi + k2] - b;\n g2 = fz[gi + k2] + b;\n b = s1 * f2 - c1 * g3;\n a = c1 * f2 + s1 * g3;\n fz[fi + k2] = f0 - a;\n fz[fi + 0] = f0 + a;\n fz[gi + k3] = g1 - b;\n fz[gi + k1] = g1 + b;\n b = c1 * g2 - s1 * f3;\n a = s1 * g2 + c1 * f3;\n fz[gi + k2] = g0 - a;\n fz[gi + 0] = g0 + a;\n fz[fi + k3] = f1 - b;\n fz[fi + k1] = f1 + b;\n gi += k4;\n fi += k4;\n } while (fi < fn);\n c2 = c1;\n c1 = c2 * costab[tri + 0] - s1 * costab[tri + 1];\n s1 = c2 * costab[tri + 1] + s1 * costab[tri + 0];\n }\n tri += 2;\n } while (k4 < n);\n }\n\n var rv_tbl = [0x00, 0x80, 0x40,\n 0xc0, 0x20, 0xa0, 0x60, 0xe0, 0x10,\n 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70,\n 0xf0, 0x08, 0x88, 0x48, 0xc8, 0x28,\n 0xa8, 0x68, 0xe8, 0x18, 0x98, 0x58,\n 0xd8, 0x38, 0xb8, 0x78, 0xf8, 0x04,\n 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64,\n 0xe4, 0x14, 0x94, 0x54, 0xd4, 0x34,\n 0xb4, 0x74, 0xf4, 0x0c, 0x8c, 0x4c,\n 0xcc, 0x2c, 0xac, 0x6c, 0xec, 0x1c,\n 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c,\n 0xfc, 0x02, 0x82, 0x42, 0xc2, 0x22,\n 0xa2, 0x62, 0xe2, 0x12, 0x92, 0x52,\n 0xd2, 0x32, 0xb2, 0x72, 0xf2, 0x0a,\n 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a,\n 0xea, 0x1a, 0x9a, 0x5a, 0xda, 0x3a,\n 0xba, 0x7a, 0xfa, 0x06, 0x86, 0x46,\n 0xc6, 0x26, 0xa6, 0x66, 0xe6, 0x16,\n 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76,\n 0xf6, 0x0e, 0x8e, 0x4e, 0xce, 0x2e,\n 0xae, 0x6e, 0xee, 0x1e, 0x9e, 0x5e,\n 0xde, 0x3e, 0xbe, 0x7e, 0xfe];\n\n this.fft_short = function (gfc, x_real, chn, buffer, bufPos) {\n for (var b = 0; b < 3; b++) {\n var x = Encoder_1.BLKSIZE_s / 2;\n var k = 0xffff & ((576 / 3) * (b + 1));\n var j = Encoder_1.BLKSIZE_s / 8 - 1;\n do {\n var f0, f1, f2, f3, w;\n var i = rv_tbl[j << 2] & 0xff;\n\n f0 = window_s[i] * buffer[chn][bufPos + i + k];\n w = window_s[0x7f - i] * buffer[chn][bufPos + i + k + 0x80];\n f1 = f0 - w;\n f0 = f0 + w;\n f2 = window_s[i + 0x40] * buffer[chn][bufPos + i + k + 0x40];\n w = window_s[0x3f - i] * buffer[chn][bufPos + i + k + 0xc0];\n f3 = f2 - w;\n f2 = f2 + w;\n\n x -= 4;\n x_real[b][x + 0] = f0 + f2;\n x_real[b][x + 2] = f0 - f2;\n x_real[b][x + 1] = f1 + f3;\n x_real[b][x + 3] = f1 - f3;\n\n f0 = window_s[i + 0x01] * buffer[chn][bufPos + i + k + 0x01];\n w = window_s[0x7e - i] * buffer[chn][bufPos + i + k + 0x81];\n f1 = f0 - w;\n f0 = f0 + w;\n f2 = window_s[i + 0x41] * buffer[chn][bufPos + i + k + 0x41];\n w = window_s[0x3e - i] * buffer[chn][bufPos + i + k + 0xc1];\n f3 = f2 - w;\n f2 = f2 + w;\n\n x_real[b][x + Encoder_1.BLKSIZE_s / 2 + 0] = f0 + f2;\n x_real[b][x + Encoder_1.BLKSIZE_s / 2 + 2] = f0 - f2;\n x_real[b][x + Encoder_1.BLKSIZE_s / 2 + 1] = f1 + f3;\n x_real[b][x + Encoder_1.BLKSIZE_s / 2 + 3] = f1 - f3;\n } while (--j >= 0);\n\n fht(x_real[b], x, Encoder_1.BLKSIZE_s / 2);\n /* BLKSIZE_s/2 because of 3DNow! ASM routine */\n /* BLKSIZE/2 because of 3DNow! ASM routine */\n }\n };\n\n this.fft_long = function (gfc, y, chn, buffer, bufPos) {\n var jj = Encoder_1.BLKSIZE / 8 - 1;\n var x = Encoder_1.BLKSIZE / 2;\n\n do {\n var f0, f1, f2, f3, w;\n var i = rv_tbl[jj] & 0xff;\n f0 = window[i] * buffer[chn][bufPos + i];\n w = window[i + 0x200] * buffer[chn][bufPos + i + 0x200];\n f1 = f0 - w;\n f0 = f0 + w;\n f2 = window[i + 0x100] * buffer[chn][bufPos + i + 0x100];\n w = window[i + 0x300] * buffer[chn][bufPos + i + 0x300];\n f3 = f2 - w;\n f2 = f2 + w;\n\n x -= 4;\n y[x + 0] = f0 + f2;\n y[x + 2] = f0 - f2;\n y[x + 1] = f1 + f3;\n y[x + 3] = f1 - f3;\n\n f0 = window[i + 0x001] * buffer[chn][bufPos + i + 0x001];\n w = window[i + 0x201] * buffer[chn][bufPos + i + 0x201];\n f1 = f0 - w;\n f0 = f0 + w;\n f2 = window[i + 0x101] * buffer[chn][bufPos + i + 0x101];\n w = window[i + 0x301] * buffer[chn][bufPos + i + 0x301];\n f3 = f2 - w;\n f2 = f2 + w;\n\n y[x + Encoder_1.BLKSIZE / 2 + 0] = f0 + f2;\n y[x + Encoder_1.BLKSIZE / 2 + 2] = f0 - f2;\n y[x + Encoder_1.BLKSIZE / 2 + 1] = f1 + f3;\n y[x + Encoder_1.BLKSIZE / 2 + 3] = f1 - f3;\n } while (--jj >= 0);\n\n fht(y, x, Encoder_1.BLKSIZE / 2);\n /* BLKSIZE/2 because of 3DNow! ASM routine */\n };\n\n this.init_fft = function (gfc) {\n /* The type of window used here will make no real difference, but */\n /*\n * in the interest of merging nspsytune stuff - switch to blackman\n * window\n */\n for (var i = 0; i < Encoder_1.BLKSIZE; i++)\n /* blackman window */\n window[i] = (0.42 - 0.5 * Math.cos(2 * Math.PI * (i + .5)\n / Encoder_1.BLKSIZE) + 0.08 * Math.cos(4 * Math.PI * (i + .5)\n / Encoder_1.BLKSIZE));\n\n for (var i = 0; i < Encoder_1.BLKSIZE_s / 2; i++)\n window_s[i] = (0.5 * (1.0 - Math.cos(2.0 * Math.PI\n * (i + 0.5) / Encoder_1.BLKSIZE_s)));\n\n };\n\n}\n\nvar FFT_1 = FFT;\n\nvar VbrMode$3 = common.VbrMode;\nvar Float$3 = common.Float;\nvar ShortBlock$3 = common.ShortBlock;\nvar Util$3 = common.Util;\nvar Arrays$3 = common.Arrays;\nvar new_float$3 = common.new_float;\nvar new_float_n$3 = common.new_float_n;\nvar new_int$3 = common.new_int;\nvar assert$3 = common.assert;\n\n\n\n\nfunction PsyModel() {\n\n var fft = new FFT_1();\n\n var LOG10 = 2.30258509299404568402;\n\n var rpelev = 2;\n var rpelev2 = 16;\n var rpelev_s = 2;\n var rpelev2_s = 16;\n\n /* size of each partition band, in barks: */\n var DELBARK = .34;\n\n /* tuned for output level (sensitive to energy scale) */\n var VO_SCALE = (1. / (14752 * 14752) / (Encoder_1.BLKSIZE / 2));\n\n var temporalmask_sustain_sec = 0.01;\n\n var NS_PREECHO_ATT0 = 0.8;\n var NS_PREECHO_ATT1 = 0.6;\n var NS_PREECHO_ATT2 = 0.3;\n\n var NS_MSFIX = 3.5;\n\n var NSATTACKTHRE = 4.4;\n var NSATTACKTHRE_S = 25;\n\n var NSFIRLEN = 21;\n\n /* size of each partition band, in barks: */\n var LN_TO_LOG10 = 0.2302585093;\n\n function NON_LINEAR_SCALE_ENERGY(x) {\n return x;\n }\n\n /**\n *
\n     *       L3psycho_anal.  Compute psycho acoustics.\n     *\n     *       Data returned to the calling program must be delayed by one\n     *       granule.\n     *\n     *       This is done in two places.\n     *       If we do not need to know the blocktype, the copying\n     *       can be done here at the top of the program: we copy the data for\n     *       the last granule (computed during the last call) before it is\n     *       overwritten with the new data.  It looks like this:\n     *\n     *       0. static psymodel_data\n     *       1. calling_program_data = psymodel_data\n     *       2. compute psymodel_data\n     *\n     *       For data which needs to know the blocktype, the copying must be\n     *       done at the end of this loop, and the old values must be saved:\n     *\n     *       0. static psymodel_data_old\n     *       1. compute psymodel_data\n     *       2. compute possible block type of this granule\n     *       3. compute final block type of previous granule based on #2.\n     *       4. calling_program_data = psymodel_data_old\n     *       5. psymodel_data_old = psymodel_data\n     *     psycho_loudness_approx\n     *       jd - 2001 mar 12\n     *    in:  energy   - BLKSIZE/2 elements of frequency magnitudes ^ 2\n     *         gfp      - uses out_samplerate, ATHtype (also needed for ATHformula)\n     *    returns: loudness^2 approximation, a positive value roughly tuned for a value\n     *             of 1.0 for signals near clipping.\n     *    notes:   When calibrated, feeding this function binary white noise at sample\n     *             values +32767 or -32768 should return values that approach 3.\n     *             ATHformula is used to approximate an equal loudness curve.\n     *    future:  Data indicates that the shape of the equal loudness curve varies\n     *             with intensity.  This function might be improved by using an equal\n     *             loudness curve shaped for typical playback levels (instead of the\n     *             ATH, that is shaped for the threshold).  A flexible realization might\n     *             simply bend the existing ATH curve to achieve the desired shape.\n     *             However, the potential gain may not be enough to justify an effort.\n     * 
\n */\n function psycho_loudness_approx(energy, gfc) {\n var loudness_power = 0.0;\n /* apply weights to power in freq. bands */\n for (var i = 0; i < Encoder_1.BLKSIZE / 2; ++i)\n loudness_power += energy[i] * gfc.ATH.eql_w[i];\n loudness_power *= VO_SCALE;\n\n return loudness_power;\n }\n\n function compute_ffts(gfp, fftenergy, fftenergy_s, wsamp_l, wsamp_lPos, wsamp_s, wsamp_sPos, gr_out, chn, buffer, bufPos) {\n var gfc = gfp.internal_flags;\n if (chn < 2) {\n fft.fft_long(gfc, wsamp_l[wsamp_lPos], chn, buffer, bufPos);\n fft.fft_short(gfc, wsamp_s[wsamp_sPos], chn, buffer, bufPos);\n }\n /* FFT data for mid and side channel is derived from L & R */\n else if (chn == 2) {\n for (var j = Encoder_1.BLKSIZE - 1; j >= 0; --j) {\n var l = wsamp_l[wsamp_lPos + 0][j];\n var r = wsamp_l[wsamp_lPos + 1][j];\n wsamp_l[wsamp_lPos + 0][j] = (l + r) * Util$3.SQRT2 * 0.5;\n wsamp_l[wsamp_lPos + 1][j] = (l - r) * Util$3.SQRT2 * 0.5;\n }\n for (var b = 2; b >= 0; --b) {\n for (var j = Encoder_1.BLKSIZE_s - 1; j >= 0; --j) {\n var l = wsamp_s[wsamp_sPos + 0][b][j];\n var r = wsamp_s[wsamp_sPos + 1][b][j];\n wsamp_s[wsamp_sPos + 0][b][j] = (l + r) * Util$3.SQRT2 * 0.5;\n wsamp_s[wsamp_sPos + 1][b][j] = (l - r) * Util$3.SQRT2 * 0.5;\n }\n }\n }\n\n /*********************************************************************\n * compute energies\n *********************************************************************/\n fftenergy[0] = NON_LINEAR_SCALE_ENERGY(wsamp_l[wsamp_lPos + 0][0]);\n fftenergy[0] *= fftenergy[0];\n\n for (var j = Encoder_1.BLKSIZE / 2 - 1; j >= 0; --j) {\n var re = (wsamp_l[wsamp_lPos + 0])[Encoder_1.BLKSIZE / 2 - j];\n var im = (wsamp_l[wsamp_lPos + 0])[Encoder_1.BLKSIZE / 2 + j];\n fftenergy[Encoder_1.BLKSIZE / 2 - j] = NON_LINEAR_SCALE_ENERGY((re\n * re + im * im) * 0.5);\n }\n for (var b = 2; b >= 0; --b) {\n fftenergy_s[b][0] = (wsamp_s[wsamp_sPos + 0])[b][0];\n fftenergy_s[b][0] *= fftenergy_s[b][0];\n for (var j = Encoder_1.BLKSIZE_s / 2 - 1; j >= 0; --j) {\n var re = (wsamp_s[wsamp_sPos + 0])[b][Encoder_1.BLKSIZE_s\n / 2 - j];\n var im = (wsamp_s[wsamp_sPos + 0])[b][Encoder_1.BLKSIZE_s\n / 2 + j];\n fftenergy_s[b][Encoder_1.BLKSIZE_s / 2 - j] = NON_LINEAR_SCALE_ENERGY((re\n * re + im * im) * 0.5);\n }\n }\n /* total energy */\n {\n var totalenergy = 0.0;\n for (var j = 11; j < Encoder_1.HBLKSIZE; j++)\n totalenergy += fftenergy[j];\n\n gfc.tot_ener[chn] = totalenergy;\n }\n\n if (gfp.analysis) {\n for (var j = 0; j < Encoder_1.HBLKSIZE; j++) {\n gfc.pinfo.energy[gr_out][chn][j] = gfc.pinfo.energy_save[chn][j];\n gfc.pinfo.energy_save[chn][j] = fftenergy[j];\n }\n gfc.pinfo.pe[gr_out][chn] = gfc.pe[chn];\n }\n\n /*********************************************************************\n * compute loudness approximation (used for ATH auto-level adjustment)\n *********************************************************************/\n if (gfp.athaa_loudapprox == 2 && chn < 2) {\n // no loudness for mid/side ch\n gfc.loudness_sq[gr_out][chn] = gfc.loudness_sq_save[chn];\n gfc.loudness_sq_save[chn] = psycho_loudness_approx(fftenergy, gfc);\n }\n }\n\n /* mask_add optimization */\n /* init the limit values used to avoid computing log in mask_add when it is not necessary */\n\n /**\n *
\n     *  For example, with i = 10*log10(m2/m1)/10*16         (= log10(m2/m1)*16)\n     *\n     * abs(i)>8 is equivalent (as i is an integer) to\n     * abs(i)>=9\n     * i>=9 || i<=-9\n     * equivalent to (as i is the biggest integer smaller than log10(m2/m1)*16\n     * or the smallest integer bigger than log10(m2/m1)*16 depending on the sign of log10(m2/m1)*16)\n     * log10(m2/m1)>=9/16 || log10(m2/m1)<=-9/16\n     * exp10 is strictly increasing thus this is equivalent to\n     * m2/m1 >= 10^(9/16) || m2/m1<=10^(-9/16) which are comparisons to constants\n     * 
\n */\n\n /**\n * as in if(i>8)\n */\n var I1LIMIT = 8;\n /**\n * as in if(i>24) . changed 23\n */\n var I2LIMIT = 23;\n /**\n * as in if(m<15)\n */\n var MLIMIT = 15;\n\n var ma_max_i1;\n var ma_max_i2;\n var ma_max_m;\n\n /**\n * This is the masking table:
\n * According to tonality, values are going from 0dB (TMN) to 9.3dB (NMT).
\n * After additive masking computation, 8dB are added, so final values are\n * going from 8dB to 17.3dB\n *\n * pow(10, -0.0..-0.6)\n */\n var tab = [1.0, 0.79433, 0.63096, 0.63096,\n 0.63096, 0.63096, 0.63096, 0.25119, 0.11749];\n\n function init_mask_add_max_values() {\n ma_max_i1 = Math.pow(10, (I1LIMIT + 1) / 16.0);\n ma_max_i2 = Math.pow(10, (I2LIMIT + 1) / 16.0);\n ma_max_m = Math.pow(10, (MLIMIT) / 10.0);\n }\n\n var table1 = [3.3246 * 3.3246,\n 3.23837 * 3.23837, 3.15437 * 3.15437, 3.00412 * 3.00412,\n 2.86103 * 2.86103, 2.65407 * 2.65407, 2.46209 * 2.46209,\n 2.284 * 2.284, 2.11879 * 2.11879, 1.96552 * 1.96552,\n 1.82335 * 1.82335, 1.69146 * 1.69146, 1.56911 * 1.56911,\n 1.46658 * 1.46658, 1.37074 * 1.37074, 1.31036 * 1.31036,\n 1.25264 * 1.25264, 1.20648 * 1.20648, 1.16203 * 1.16203,\n 1.12765 * 1.12765, 1.09428 * 1.09428, 1.0659 * 1.0659,\n 1.03826 * 1.03826, 1.01895 * 1.01895, 1];\n\n var table2 = [1.33352 * 1.33352,\n 1.35879 * 1.35879, 1.38454 * 1.38454, 1.39497 * 1.39497,\n 1.40548 * 1.40548, 1.3537 * 1.3537, 1.30382 * 1.30382,\n 1.22321 * 1.22321, 1.14758 * 1.14758, 1];\n\n var table3 = [2.35364 * 2.35364,\n 2.29259 * 2.29259, 2.23313 * 2.23313, 2.12675 * 2.12675,\n 2.02545 * 2.02545, 1.87894 * 1.87894, 1.74303 * 1.74303,\n 1.61695 * 1.61695, 1.49999 * 1.49999, 1.39148 * 1.39148,\n 1.29083 * 1.29083, 1.19746 * 1.19746, 1.11084 * 1.11084,\n 1.03826 * 1.03826];\n\n /**\n * addition of simultaneous masking Naoki Shibata 2000/7\n */\n function mask_add(m1, m2, kk, b, gfc, shortblock) {\n var ratio;\n\n if (m2 > m1) {\n if (m2 < (m1 * ma_max_i2))\n ratio = m2 / m1;\n else\n return (m1 + m2);\n } else {\n if (m1 >= (m2 * ma_max_i2))\n return (m1 + m2);\n ratio = m1 / m2;\n }\n\n /* Should always be true, just checking */\n assert$3(m1 >= 0);\n assert$3(m2 >= 0);\n\n m1 += m2;\n //if (((long)(b + 3) & 0xffffffff) <= 3 + 3) {\n if ((b + 3) <= 3 + 3) {\n /* approximately, 1 bark = 3 partitions */\n /* 65% of the cases */\n /* originally 'if(i > 8)' */\n if (ratio >= ma_max_i1) {\n /* 43% of the total */\n return m1;\n }\n\n /* 22% of the total */\n var i = 0 | (Util$3.FAST_LOG10_X(ratio, 16.0));\n return m1 * table2[i];\n }\n\n /**\n *
\n         * m<15 equ log10((m1+m2)/gfc.ATH.cb[k])<1.5\n         * equ (m1+m2)/gfc.ATH.cb[k]<10^1.5\n         * equ (m1+m2)<10^1.5 * gfc.ATH.cb[k]\n         * 
\n */\n var i = 0 | Util$3.FAST_LOG10_X(ratio, 16.0);\n if (shortblock != 0) {\n m2 = gfc.ATH.cb_s[kk] * gfc.ATH.adjust;\n } else {\n m2 = gfc.ATH.cb_l[kk] * gfc.ATH.adjust;\n }\n assert$3(m2 >= 0);\n if (m1 < ma_max_m * m2) {\n /* 3% of the total */\n /* Originally if (m > 0) { */\n if (m1 > m2) {\n var f, r;\n\n f = 1.0;\n if (i <= 13)\n f = table3[i];\n\n r = Util$3.FAST_LOG10_X(m1 / m2, 10.0 / 15.0);\n return m1 * ((table1[i] - f) * r + f);\n }\n\n if (i > 13)\n return m1;\n\n return m1 * table3[i];\n }\n\n /* 10% of total */\n return m1 * table1[i];\n }\n\n var table2_ = [1.33352 * 1.33352,\n 1.35879 * 1.35879, 1.38454 * 1.38454, 1.39497 * 1.39497,\n 1.40548 * 1.40548, 1.3537 * 1.3537, 1.30382 * 1.30382,\n 1.22321 * 1.22321, 1.14758 * 1.14758, 1];\n\n /**\n * addition of simultaneous masking Naoki Shibata 2000/7\n */\n function vbrpsy_mask_add(m1, m2, b) {\n var ratio;\n\n if (m1 < 0) {\n m1 = 0;\n }\n if (m2 < 0) {\n m2 = 0;\n }\n if (m1 <= 0) {\n return m2;\n }\n if (m2 <= 0) {\n return m1;\n }\n if (m2 > m1) {\n ratio = m2 / m1;\n } else {\n ratio = m1 / m2;\n }\n if (-2 <= b && b <= 2) {\n /* approximately, 1 bark = 3 partitions */\n /* originally 'if(i > 8)' */\n if (ratio >= ma_max_i1) {\n return m1 + m2;\n } else {\n var i = 0 | (Util$3.FAST_LOG10_X(ratio, 16.0));\n return (m1 + m2) * table2_[i];\n }\n }\n if (ratio < ma_max_i2) {\n return m1 + m2;\n }\n if (m1 < m2) {\n m1 = m2;\n }\n return m1;\n }\n\n /**\n * compute interchannel masking effects\n */\n function calc_interchannel_masking(gfp, ratio) {\n var gfc = gfp.internal_flags;\n if (gfc.channels_out > 1) {\n for (var sb = 0; sb < Encoder_1.SBMAX_l; sb++) {\n var l = gfc.thm[0].l[sb];\n var r = gfc.thm[1].l[sb];\n gfc.thm[0].l[sb] += r * ratio;\n gfc.thm[1].l[sb] += l * ratio;\n }\n for (var sb = 0; sb < Encoder_1.SBMAX_s; sb++) {\n for (var sblock = 0; sblock < 3; sblock++) {\n var l = gfc.thm[0].s[sb][sblock];\n var r = gfc.thm[1].s[sb][sblock];\n gfc.thm[0].s[sb][sblock] += r * ratio;\n gfc.thm[1].s[sb][sblock] += l * ratio;\n }\n }\n }\n }\n\n /**\n * compute M/S thresholds from Johnston & Ferreira 1992 ICASSP paper\n */\n function msfix1(gfc) {\n for (var sb = 0; sb < Encoder_1.SBMAX_l; sb++) {\n /* use this fix if L & R masking differs by 2db or less */\n /* if db = 10*log10(x2/x1) < 2 */\n /* if (x2 < 1.58*x1) { */\n if (gfc.thm[0].l[sb] > 1.58 * gfc.thm[1].l[sb]\n || gfc.thm[1].l[sb] > 1.58 * gfc.thm[0].l[sb])\n continue;\n var mld = gfc.mld_l[sb] * gfc.en[3].l[sb];\n var rmid = Math.max(gfc.thm[2].l[sb],\n Math.min(gfc.thm[3].l[sb], mld));\n\n mld = gfc.mld_l[sb] * gfc.en[2].l[sb];\n var rside = Math.max(gfc.thm[3].l[sb],\n Math.min(gfc.thm[2].l[sb], mld));\n gfc.thm[2].l[sb] = rmid;\n gfc.thm[3].l[sb] = rside;\n }\n\n for (var sb = 0; sb < Encoder_1.SBMAX_s; sb++) {\n for (var sblock = 0; sblock < 3; sblock++) {\n if (gfc.thm[0].s[sb][sblock] > 1.58 * gfc.thm[1].s[sb][sblock]\n || gfc.thm[1].s[sb][sblock] > 1.58 * gfc.thm[0].s[sb][sblock])\n continue;\n var mld = gfc.mld_s[sb] * gfc.en[3].s[sb][sblock];\n var rmid = Math.max(gfc.thm[2].s[sb][sblock],\n Math.min(gfc.thm[3].s[sb][sblock], mld));\n\n mld = gfc.mld_s[sb] * gfc.en[2].s[sb][sblock];\n var rside = Math.max(gfc.thm[3].s[sb][sblock],\n Math.min(gfc.thm[2].s[sb][sblock], mld));\n\n gfc.thm[2].s[sb][sblock] = rmid;\n gfc.thm[3].s[sb][sblock] = rside;\n }\n }\n }\n\n /**\n * Adjust M/S maskings if user set \"msfix\"\n *\n * Naoki Shibata 2000\n */\n function ns_msfix(gfc, msfix, athadjust) {\n var msfix2 = msfix;\n var athlower = Math.pow(10, athadjust);\n\n msfix *= 2.0;\n msfix2 *= 2.0;\n for (var sb = 0; sb < Encoder_1.SBMAX_l; sb++) {\n var thmLR, thmM, thmS, ath;\n ath = (gfc.ATH.cb_l[gfc.bm_l[sb]]) * athlower;\n thmLR = Math.min(Math.max(gfc.thm[0].l[sb], ath),\n Math.max(gfc.thm[1].l[sb], ath));\n thmM = Math.max(gfc.thm[2].l[sb], ath);\n thmS = Math.max(gfc.thm[3].l[sb], ath);\n if (thmLR * msfix < thmM + thmS) {\n var f = thmLR * msfix2 / (thmM + thmS);\n thmM *= f;\n thmS *= f;\n assert$3(thmM + thmS > 0);\n }\n gfc.thm[2].l[sb] = Math.min(thmM, gfc.thm[2].l[sb]);\n gfc.thm[3].l[sb] = Math.min(thmS, gfc.thm[3].l[sb]);\n }\n\n athlower *= ( Encoder_1.BLKSIZE_s / Encoder_1.BLKSIZE);\n for (var sb = 0; sb < Encoder_1.SBMAX_s; sb++) {\n for (var sblock = 0; sblock < 3; sblock++) {\n var thmLR, thmM, thmS, ath;\n ath = (gfc.ATH.cb_s[gfc.bm_s[sb]]) * athlower;\n thmLR = Math.min(Math.max(gfc.thm[0].s[sb][sblock], ath),\n Math.max(gfc.thm[1].s[sb][sblock], ath));\n thmM = Math.max(gfc.thm[2].s[sb][sblock], ath);\n thmS = Math.max(gfc.thm[3].s[sb][sblock], ath);\n\n if (thmLR * msfix < thmM + thmS) {\n var f = thmLR * msfix / (thmM + thmS);\n thmM *= f;\n thmS *= f;\n assert$3(thmM + thmS > 0);\n }\n gfc.thm[2].s[sb][sblock] = Math.min(gfc.thm[2].s[sb][sblock],\n thmM);\n gfc.thm[3].s[sb][sblock] = Math.min(gfc.thm[3].s[sb][sblock],\n thmS);\n }\n }\n }\n\n /**\n * short block threshold calculation (part 2)\n *\n * partition band bo_s[sfb] is at the transition from scalefactor band sfb\n * to the next one sfb+1; enn and thmm have to be split between them\n */\n function convert_partition2scalefac_s(gfc, eb, thr, chn, sblock) {\n var sb, b;\n var enn = 0.0;\n var thmm = 0.0;\n for (sb = b = 0; sb < Encoder_1.SBMAX_s; ++b, ++sb) {\n var bo_s_sb = gfc.bo_s[sb];\n var npart_s = gfc.npart_s;\n var b_lim = bo_s_sb < npart_s ? bo_s_sb : npart_s;\n while (b < b_lim) {\n assert$3(eb[b] >= 0);\n // iff failed, it may indicate some index error elsewhere\n assert$3(thr[b] >= 0);\n enn += eb[b];\n thmm += thr[b];\n b++;\n }\n gfc.en[chn].s[sb][sblock] = enn;\n gfc.thm[chn].s[sb][sblock] = thmm;\n\n if (b >= npart_s) {\n ++sb;\n break;\n }\n assert$3(eb[b] >= 0);\n // iff failed, it may indicate some index error elsewhere\n assert$3(thr[b] >= 0);\n {\n /* at transition sfb . sfb+1 */\n var w_curr = gfc.PSY.bo_s_weight[sb];\n var w_next = 1.0 - w_curr;\n enn = w_curr * eb[b];\n thmm = w_curr * thr[b];\n gfc.en[chn].s[sb][sblock] += enn;\n gfc.thm[chn].s[sb][sblock] += thmm;\n enn = w_next * eb[b];\n thmm = w_next * thr[b];\n }\n }\n /* zero initialize the rest */\n for (; sb < Encoder_1.SBMAX_s; ++sb) {\n gfc.en[chn].s[sb][sblock] = 0;\n gfc.thm[chn].s[sb][sblock] = 0;\n }\n }\n\n /**\n * longblock threshold calculation (part 2)\n */\n function convert_partition2scalefac_l(gfc, eb, thr, chn) {\n var sb, b;\n var enn = 0.0;\n var thmm = 0.0;\n for (sb = b = 0; sb < Encoder_1.SBMAX_l; ++b, ++sb) {\n var bo_l_sb = gfc.bo_l[sb];\n var npart_l = gfc.npart_l;\n var b_lim = bo_l_sb < npart_l ? bo_l_sb : npart_l;\n while (b < b_lim) {\n assert$3(eb[b] >= 0);\n // iff failed, it may indicate some index error elsewhere\n assert$3(thr[b] >= 0);\n enn += eb[b];\n thmm += thr[b];\n b++;\n }\n gfc.en[chn].l[sb] = enn;\n gfc.thm[chn].l[sb] = thmm;\n\n if (b >= npart_l) {\n ++sb;\n break;\n }\n assert$3(eb[b] >= 0);\n assert$3(thr[b] >= 0);\n {\n /* at transition sfb . sfb+1 */\n var w_curr = gfc.PSY.bo_l_weight[sb];\n var w_next = 1.0 - w_curr;\n enn = w_curr * eb[b];\n thmm = w_curr * thr[b];\n gfc.en[chn].l[sb] += enn;\n gfc.thm[chn].l[sb] += thmm;\n enn = w_next * eb[b];\n thmm = w_next * thr[b];\n }\n }\n /* zero initialize the rest */\n for (; sb < Encoder_1.SBMAX_l; ++sb) {\n gfc.en[chn].l[sb] = 0;\n gfc.thm[chn].l[sb] = 0;\n }\n }\n\n function compute_masking_s(gfp, fftenergy_s, eb, thr, chn, sblock) {\n var gfc = gfp.internal_flags;\n var j, b;\n\n for (b = j = 0; b < gfc.npart_s; ++b) {\n var ebb = 0, m = 0;\n var n = gfc.numlines_s[b];\n for (var i = 0; i < n; ++i, ++j) {\n var el = fftenergy_s[sblock][j];\n ebb += el;\n if (m < el)\n m = el;\n }\n eb[b] = ebb;\n }\n assert$3(b == gfc.npart_s);\n assert$3(j == 129);\n for (j = b = 0; b < gfc.npart_s; b++) {\n var kk = gfc.s3ind_s[b][0];\n var ecb = gfc.s3_ss[j++] * eb[kk];\n ++kk;\n while (kk <= gfc.s3ind_s[b][1]) {\n ecb += gfc.s3_ss[j] * eb[kk];\n ++j;\n ++kk;\n }\n\n { /* limit calculated threshold by previous granule */\n var x = rpelev_s * gfc.nb_s1[chn][b];\n thr[b] = Math.min(ecb, x);\n }\n if (gfc.blocktype_old[chn & 1] == Encoder_1.SHORT_TYPE) {\n /* limit calculated threshold by even older granule */\n var x = rpelev2_s * gfc.nb_s2[chn][b];\n var y = thr[b];\n thr[b] = Math.min(x, y);\n }\n\n gfc.nb_s2[chn][b] = gfc.nb_s1[chn][b];\n gfc.nb_s1[chn][b] = ecb;\n assert$3(thr[b] >= 0);\n }\n for (; b <= Encoder_1.CBANDS; ++b) {\n eb[b] = 0;\n thr[b] = 0;\n }\n }\n\n function block_type_set(gfp, uselongblock, blocktype_d, blocktype) {\n var gfc = gfp.internal_flags;\n\n if (gfp.short_blocks == ShortBlock$3.short_block_coupled\n /* force both channels to use the same block type */\n /* this is necessary if the frame is to be encoded in ms_stereo. */\n /* But even without ms_stereo, FhG does this */\n && !(uselongblock[0] != 0 && uselongblock[1] != 0))\n uselongblock[0] = uselongblock[1] = 0;\n\n /*\n * update the blocktype of the previous granule, since it depends on\n * what happend in this granule\n */\n for (var chn = 0; chn < gfc.channels_out; chn++) {\n blocktype[chn] = Encoder_1.NORM_TYPE;\n /* disable short blocks */\n if (gfp.short_blocks == ShortBlock$3.short_block_dispensed)\n uselongblock[chn] = 1;\n if (gfp.short_blocks == ShortBlock$3.short_block_forced)\n uselongblock[chn] = 0;\n\n if (uselongblock[chn] != 0) {\n /* no attack : use long blocks */\n assert$3(gfc.blocktype_old[chn] != Encoder_1.START_TYPE);\n if (gfc.blocktype_old[chn] == Encoder_1.SHORT_TYPE)\n blocktype[chn] = Encoder_1.STOP_TYPE;\n } else {\n /* attack : use short blocks */\n blocktype[chn] = Encoder_1.SHORT_TYPE;\n if (gfc.blocktype_old[chn] == Encoder_1.NORM_TYPE) {\n gfc.blocktype_old[chn] = Encoder_1.START_TYPE;\n }\n if (gfc.blocktype_old[chn] == Encoder_1.STOP_TYPE)\n gfc.blocktype_old[chn] = Encoder_1.SHORT_TYPE;\n }\n\n blocktype_d[chn] = gfc.blocktype_old[chn];\n // value returned to calling program\n gfc.blocktype_old[chn] = blocktype[chn];\n // save for next call to l3psy_anal\n }\n }\n\n function NS_INTERP(x, y, r) {\n /* was pow((x),(r))*pow((y),1-(r)) */\n if (r >= 1.0) {\n /* 99.7% of the time */\n return x;\n }\n if (r <= 0.0)\n return y;\n if (y > 0.0) {\n /* rest of the time */\n return (Math.pow(x / y, r) * y);\n }\n /* never happens */\n return 0.0;\n }\n\n /**\n * these values are tuned only for 44.1kHz...\n */\n var regcoef_s = [11.8, 13.6, 17.2, 32, 46.5,\n 51.3, 57.5, 67.1, 71.5, 84.6, 97.6, 130,\n /* 255.8 */\n ];\n\n function pecalc_s(mr, masking_lower) {\n var pe_s = 1236.28 / 4;\n for (var sb = 0; sb < Encoder_1.SBMAX_s - 1; sb++) {\n for (var sblock = 0; sblock < 3; sblock++) {\n var thm = mr.thm.s[sb][sblock];\n assert$3(sb < regcoef_s.length);\n if (thm > 0.0) {\n var x = thm * masking_lower;\n var en = mr.en.s[sb][sblock];\n if (en > x) {\n if (en > x * 1e10) {\n pe_s += regcoef_s[sb] * (10.0 * LOG10);\n } else {\n assert$3(x > 0);\n pe_s += regcoef_s[sb] * Util$3.FAST_LOG10(en / x);\n }\n }\n }\n }\n }\n\n return pe_s;\n }\n\n /**\n * these values are tuned only for 44.1kHz...\n */\n var regcoef_l = [6.8, 5.8, 5.8, 6.4, 6.5, 9.9,\n 12.1, 14.4, 15, 18.9, 21.6, 26.9, 34.2, 40.2, 46.8, 56.5,\n 60.7, 73.9, 85.7, 93.4, 126.1,\n /* 241.3 */\n ];\n\n function pecalc_l(mr, masking_lower) {\n var pe_l = 1124.23 / 4;\n for (var sb = 0; sb < Encoder_1.SBMAX_l - 1; sb++) {\n var thm = mr.thm.l[sb];\n assert$3(sb < regcoef_l.length);\n if (thm > 0.0) {\n var x = thm * masking_lower;\n var en = mr.en.l[sb];\n if (en > x) {\n if (en > x * 1e10) {\n pe_l += regcoef_l[sb] * (10.0 * LOG10);\n } else {\n assert$3(x > 0);\n pe_l += regcoef_l[sb] * Util$3.FAST_LOG10(en / x);\n }\n }\n }\n }\n return pe_l;\n }\n\n function calc_energy(gfc, fftenergy, eb, max, avg) {\n var b, j;\n\n for (b = j = 0; b < gfc.npart_l; ++b) {\n var ebb = 0, m = 0;\n var i;\n for (i = 0; i < gfc.numlines_l[b]; ++i, ++j) {\n var el = fftenergy[j];\n assert$3(el >= 0);\n ebb += el;\n if (m < el)\n m = el;\n }\n eb[b] = ebb;\n max[b] = m;\n avg[b] = ebb * gfc.rnumlines_l[b];\n assert$3(gfc.rnumlines_l[b] >= 0);\n assert$3(ebb >= 0);\n assert$3(eb[b] >= 0);\n assert$3(max[b] >= 0);\n assert$3(avg[b] >= 0);\n }\n }\n\n function calc_mask_index_l(gfc, max, avg, mask_idx) {\n var last_tab_entry = tab.length - 1;\n var b = 0;\n var a = avg[b] + avg[b + 1];\n assert$3(a >= 0);\n if (a > 0.0) {\n var m = max[b];\n if (m < max[b + 1])\n m = max[b + 1];\n assert$3((gfc.numlines_l[b] + gfc.numlines_l[b + 1] - 1) > 0);\n a = 20.0 * (m * 2.0 - a)\n / (a * (gfc.numlines_l[b] + gfc.numlines_l[b + 1] - 1));\n var k = 0 | a;\n if (k > last_tab_entry)\n k = last_tab_entry;\n mask_idx[b] = k;\n } else {\n mask_idx[b] = 0;\n }\n\n for (b = 1; b < gfc.npart_l - 1; b++) {\n a = avg[b - 1] + avg[b] + avg[b + 1];\n assert$3(a >= 0);\n if (a > 0.0) {\n var m = max[b - 1];\n if (m < max[b])\n m = max[b];\n if (m < max[b + 1])\n m = max[b + 1];\n assert$3((gfc.numlines_l[b - 1] + gfc.numlines_l[b] + gfc.numlines_l[b + 1] - 1) > 0);\n a = 20.0\n * (m * 3.0 - a)\n / (a * (gfc.numlines_l[b - 1] + gfc.numlines_l[b]\n + gfc.numlines_l[b + 1] - 1));\n var k = 0 | a;\n if (k > last_tab_entry)\n k = last_tab_entry;\n mask_idx[b] = k;\n } else {\n mask_idx[b] = 0;\n }\n }\n assert$3(b > 0);\n assert$3(b == gfc.npart_l - 1);\n\n a = avg[b - 1] + avg[b];\n assert$3(a >= 0);\n if (a > 0.0) {\n var m = max[b - 1];\n if (m < max[b])\n m = max[b];\n assert$3((gfc.numlines_l[b - 1] + gfc.numlines_l[b] - 1) > 0);\n a = 20.0 * (m * 2.0 - a)\n / (a * (gfc.numlines_l[b - 1] + gfc.numlines_l[b] - 1));\n var k = 0 | a;\n if (k > last_tab_entry)\n k = last_tab_entry;\n mask_idx[b] = k;\n } else {\n mask_idx[b] = 0;\n }\n assert$3(b == (gfc.npart_l - 1));\n }\n\n var fircoef = [\n -8.65163e-18 * 2, -0.00851586 * 2, -6.74764e-18 * 2, 0.0209036 * 2,\n -3.36639e-17 * 2, -0.0438162 * 2, -1.54175e-17 * 2, 0.0931738 * 2,\n -5.52212e-17 * 2, -0.313819 * 2\n ];\n\n this.L3psycho_anal_ns = function (gfp, buffer, bufPos, gr_out, masking_ratio, masking_MS_ratio, percep_entropy, percep_MS_entropy, energy, blocktype_d) {\n /*\n * to get a good cache performance, one has to think about the sequence,\n * in which the variables are used.\n */\n var gfc = gfp.internal_flags;\n\n /* fft and energy calculation */\n var wsamp_L = new_float_n$3([2, Encoder_1.BLKSIZE]);\n var wsamp_S = new_float_n$3([2, 3, Encoder_1.BLKSIZE_s]);\n\n /* convolution */\n var eb_l = new_float$3(Encoder_1.CBANDS + 1);\n var eb_s = new_float$3(Encoder_1.CBANDS + 1);\n var thr = new_float$3(Encoder_1.CBANDS + 2);\n\n /* block type */\n var blocktype = new_int$3(2), uselongblock = new_int$3(2);\n\n /* usual variables like loop indices, etc.. */\n var numchn, chn;\n var b, i, j, k;\n var sb, sblock;\n\n /* variables used for --nspsytune */\n var ns_hpfsmpl = new_float_n$3([2, 576]);\n var pcfact;\n var mask_idx_l = new_int$3(Encoder_1.CBANDS + 2), mask_idx_s = new_int$3(Encoder_1.CBANDS + 2);\n\n Arrays$3.fill(mask_idx_s, 0);\n\n numchn = gfc.channels_out;\n /* chn=2 and 3 = Mid and Side channels */\n if (gfp.mode == MPEGMode.JOINT_STEREO)\n numchn = 4;\n\n if (gfp.VBR == VbrMode$3.vbr_off)\n pcfact = gfc.ResvMax == 0 ? 0 : ( gfc.ResvSize)\n / gfc.ResvMax * 0.5;\n else if (gfp.VBR == VbrMode$3.vbr_rh || gfp.VBR == VbrMode$3.vbr_mtrh\n || gfp.VBR == VbrMode$3.vbr_mt) {\n pcfact = 0.6;\n } else\n pcfact = 1.0;\n\n /**********************************************************************\n * Apply HPF of fs/4 to the input signal. This is used for attack\n * detection / handling.\n **********************************************************************/\n /* Don't copy the input buffer into a temporary buffer */\n /* unroll the loop 2 times */\n for (chn = 0; chn < gfc.channels_out; chn++) {\n /* apply high pass filter of fs/4 */\n var firbuf = buffer[chn];\n var firbufPos = bufPos + 576 - 350 - NSFIRLEN + 192;\n assert$3(fircoef.length == ((NSFIRLEN - 1) / 2));\n for (i = 0; i < 576; i++) {\n var sum1, sum2;\n sum1 = firbuf[firbufPos + i + 10];\n sum2 = 0.0;\n for (j = 0; j < ((NSFIRLEN - 1) / 2) - 1; j += 2) {\n sum1 += fircoef[j]\n * (firbuf[firbufPos + i + j] + firbuf[firbufPos + i\n + NSFIRLEN - j]);\n sum2 += fircoef[j + 1]\n * (firbuf[firbufPos + i + j + 1] + firbuf[firbufPos\n + i + NSFIRLEN - j - 1]);\n }\n ns_hpfsmpl[chn][i] = sum1 + sum2;\n }\n masking_ratio[gr_out][chn].en.assign(gfc.en[chn]);\n masking_ratio[gr_out][chn].thm.assign(gfc.thm[chn]);\n if (numchn > 2) {\n /* MS maskings */\n /* percep_MS_entropy [chn-2] = gfc . pe [chn]; */\n masking_MS_ratio[gr_out][chn].en.assign(gfc.en[chn + 2]);\n masking_MS_ratio[gr_out][chn].thm.assign(gfc.thm[chn + 2]);\n }\n }\n\n for (chn = 0; chn < numchn; chn++) {\n var wsamp_l;\n var wsamp_s;\n var en_subshort = new_float$3(12);\n var en_short = [0, 0, 0, 0];\n var attack_intensity = new_float$3(12);\n var ns_uselongblock = 1;\n var attackThreshold;\n var max = new_float$3(Encoder_1.CBANDS), avg = new_float$3(Encoder_1.CBANDS);\n var ns_attacks = [0, 0, 0, 0];\n var fftenergy = new_float$3(Encoder_1.HBLKSIZE);\n var fftenergy_s = new_float_n$3([3, Encoder_1.HBLKSIZE_s]);\n\n /*\n * rh 20040301: the following loops do access one off the limits so\n * I increase the array dimensions by one and initialize the\n * accessed values to zero\n */\n assert$3(gfc.npart_s <= Encoder_1.CBANDS);\n assert$3(gfc.npart_l <= Encoder_1.CBANDS);\n\n /***************************************************************\n * determine the block type (window type)\n ***************************************************************/\n /* calculate energies of each sub-shortblocks */\n for (i = 0; i < 3; i++) {\n en_subshort[i] = gfc.nsPsy.last_en_subshort[chn][i + 6];\n assert$3(gfc.nsPsy.last_en_subshort[chn][i + 4] > 0);\n attack_intensity[i] = en_subshort[i]\n / gfc.nsPsy.last_en_subshort[chn][i + 4];\n en_short[0] += en_subshort[i];\n }\n\n if (chn == 2) {\n for (i = 0; i < 576; i++) {\n var l, r;\n l = ns_hpfsmpl[0][i];\n r = ns_hpfsmpl[1][i];\n ns_hpfsmpl[0][i] = l + r;\n ns_hpfsmpl[1][i] = l - r;\n }\n }\n {\n var pf = ns_hpfsmpl[chn & 1];\n var pfPos = 0;\n for (i = 0; i < 9; i++) {\n var pfe = pfPos + 576 / 9;\n var p = 1.;\n for (; pfPos < pfe; pfPos++)\n if (p < Math.abs(pf[pfPos]))\n p = Math.abs(pf[pfPos]);\n\n gfc.nsPsy.last_en_subshort[chn][i] = en_subshort[i + 3] = p;\n en_short[1 + i / 3] += p;\n if (p > en_subshort[i + 3 - 2]) {\n assert$3(en_subshort[i + 3 - 2] > 0);\n p = p / en_subshort[i + 3 - 2];\n } else if (en_subshort[i + 3 - 2] > p * 10.0) {\n assert$3(p > 0);\n p = en_subshort[i + 3 - 2] / (p * 10.0);\n } else\n p = 0.0;\n attack_intensity[i + 3] = p;\n }\n }\n\n if (gfp.analysis) {\n var x = attack_intensity[0];\n for (i = 1; i < 12; i++)\n if (x < attack_intensity[i])\n x = attack_intensity[i];\n gfc.pinfo.ers[gr_out][chn] = gfc.pinfo.ers_save[chn];\n gfc.pinfo.ers_save[chn] = x;\n }\n\n /* compare energies between sub-shortblocks */\n attackThreshold = (chn == 3) ? gfc.nsPsy.attackthre_s\n : gfc.nsPsy.attackthre;\n for (i = 0; i < 12; i++)\n if (0 == ns_attacks[i / 3]\n && attack_intensity[i] > attackThreshold)\n ns_attacks[i / 3] = (i % 3) + 1;\n\n /*\n * should have energy change between short blocks, in order to avoid\n * periodic signals\n */\n for (i = 1; i < 4; i++) {\n var ratio;\n if (en_short[i - 1] > en_short[i]) {\n assert$3(en_short[i] > 0);\n ratio = en_short[i - 1] / en_short[i];\n } else {\n assert$3(en_short[i - 1] > 0);\n ratio = en_short[i] / en_short[i - 1];\n }\n if (ratio < 1.7) {\n ns_attacks[i] = 0;\n if (i == 1)\n ns_attacks[0] = 0;\n }\n }\n\n if (ns_attacks[0] != 0 && gfc.nsPsy.lastAttacks[chn] != 0)\n ns_attacks[0] = 0;\n\n if (gfc.nsPsy.lastAttacks[chn] == 3\n || (ns_attacks[0] + ns_attacks[1] + ns_attacks[2] + ns_attacks[3]) != 0) {\n ns_uselongblock = 0;\n\n if (ns_attacks[1] != 0 && ns_attacks[0] != 0)\n ns_attacks[1] = 0;\n if (ns_attacks[2] != 0 && ns_attacks[1] != 0)\n ns_attacks[2] = 0;\n if (ns_attacks[3] != 0 && ns_attacks[2] != 0)\n ns_attacks[3] = 0;\n }\n\n if (chn < 2) {\n uselongblock[chn] = ns_uselongblock;\n } else {\n if (ns_uselongblock == 0) {\n uselongblock[0] = uselongblock[1] = 0;\n }\n }\n\n /*\n * there is a one granule delay. Copy maskings computed last call\n * into masking_ratio to return to calling program.\n */\n energy[chn] = gfc.tot_ener[chn];\n\n /*********************************************************************\n * compute FFTs\n *********************************************************************/\n wsamp_s = wsamp_S;\n wsamp_l = wsamp_L;\n compute_ffts(gfp, fftenergy, fftenergy_s, wsamp_l, (chn & 1),\n wsamp_s, (chn & 1), gr_out, chn, buffer, bufPos);\n\n /*********************************************************************\n * Calculate the energy and the tonality of each partition.\n *********************************************************************/\n calc_energy(gfc, fftenergy, eb_l, max, avg);\n calc_mask_index_l(gfc, max, avg, mask_idx_l);\n /* compute masking thresholds for short blocks */\n for (sblock = 0; sblock < 3; sblock++) {\n var enn, thmm;\n compute_masking_s(gfp, fftenergy_s, eb_s, thr, chn, sblock);\n convert_partition2scalefac_s(gfc, eb_s, thr, chn, sblock);\n /**** short block pre-echo control ****/\n for (sb = 0; sb < Encoder_1.SBMAX_s; sb++) {\n thmm = gfc.thm[chn].s[sb][sblock];\n\n thmm *= NS_PREECHO_ATT0;\n if (ns_attacks[sblock] >= 2 || ns_attacks[sblock + 1] == 1) {\n var idx = (sblock != 0) ? sblock - 1 : 2;\n var p = NS_INTERP(gfc.thm[chn].s[sb][idx], thmm,\n NS_PREECHO_ATT1 * pcfact);\n thmm = Math.min(thmm, p);\n }\n\n if (ns_attacks[sblock] == 1) {\n var idx = (sblock != 0) ? sblock - 1 : 2;\n var p = NS_INTERP(gfc.thm[chn].s[sb][idx], thmm,\n NS_PREECHO_ATT2 * pcfact);\n thmm = Math.min(thmm, p);\n } else if ((sblock != 0 && ns_attacks[sblock - 1] == 3)\n || (sblock == 0 && gfc.nsPsy.lastAttacks[chn] == 3)) {\n var idx = (sblock != 2) ? sblock + 1 : 0;\n var p = NS_INTERP(gfc.thm[chn].s[sb][idx], thmm,\n NS_PREECHO_ATT2 * pcfact);\n thmm = Math.min(thmm, p);\n }\n\n /* pulse like signal detection for fatboy.wav and so on */\n enn = en_subshort[sblock * 3 + 3]\n + en_subshort[sblock * 3 + 4]\n + en_subshort[sblock * 3 + 5];\n if (en_subshort[sblock * 3 + 5] * 6 < enn) {\n thmm *= 0.5;\n if (en_subshort[sblock * 3 + 4] * 6 < enn)\n thmm *= 0.5;\n }\n\n gfc.thm[chn].s[sb][sblock] = thmm;\n }\n }\n gfc.nsPsy.lastAttacks[chn] = ns_attacks[2];\n\n /*********************************************************************\n * convolve the partitioned energy and unpredictability with the\n * spreading function, s3_l[b][k]\n ********************************************************************/\n k = 0;\n {\n for (b = 0; b < gfc.npart_l; b++) {\n /*\n * convolve the partitioned energy with the spreading\n * function\n */\n var kk = gfc.s3ind[b][0];\n var eb2 = eb_l[kk] * tab[mask_idx_l[kk]];\n var ecb = gfc.s3_ll[k++] * eb2;\n while (++kk <= gfc.s3ind[b][1]) {\n eb2 = eb_l[kk] * tab[mask_idx_l[kk]];\n ecb = mask_add(ecb, gfc.s3_ll[k++] * eb2, kk, kk - b,\n gfc, 0);\n }\n ecb *= 0.158489319246111;\n /* pow(10,-0.8) */\n\n /**** long block pre-echo control ****/\n /**\n *
\n                     * dont use long block pre-echo control if previous granule was\n                     * a short block.  This is to avoid the situation:\n                     * frame0:  quiet (very low masking)\n                     * frame1:  surge  (triggers short blocks)\n                     * frame2:  regular frame.  looks like pre-echo when compared to\n                     *          frame0, but all pre-echo was in frame1.\n                     * 
\n */\n /*\n * chn=0,1 L and R channels\n *\n * chn=2,3 S and M channels.\n */\n\n if (gfc.blocktype_old[chn & 1] == Encoder_1.SHORT_TYPE)\n thr[b] = ecb;\n else\n thr[b] = NS_INTERP(\n Math.min(ecb, Math.min(rpelev\n * gfc.nb_1[chn][b], rpelev2\n * gfc.nb_2[chn][b])), ecb, pcfact);\n\n gfc.nb_2[chn][b] = gfc.nb_1[chn][b];\n gfc.nb_1[chn][b] = ecb;\n }\n }\n for (; b <= Encoder_1.CBANDS; ++b) {\n eb_l[b] = 0;\n thr[b] = 0;\n }\n /* compute masking thresholds for long blocks */\n convert_partition2scalefac_l(gfc, eb_l, thr, chn);\n }\n /* end loop over chn */\n\n if (gfp.mode == MPEGMode.STEREO || gfp.mode == MPEGMode.JOINT_STEREO) {\n if (gfp.interChRatio > 0.0) {\n calc_interchannel_masking(gfp, gfp.interChRatio);\n }\n }\n\n if (gfp.mode == MPEGMode.JOINT_STEREO) {\n var msfix;\n msfix1(gfc);\n msfix = gfp.msfix;\n if (Math.abs(msfix) > 0.0)\n ns_msfix(gfc, msfix, gfp.ATHlower * gfc.ATH.adjust);\n }\n\n /***************************************************************\n * determine final block type\n ***************************************************************/\n block_type_set(gfp, uselongblock, blocktype_d, blocktype);\n\n /*********************************************************************\n * compute the value of PE to return ... no delay and advance\n *********************************************************************/\n for (chn = 0; chn < numchn; chn++) {\n var ppe;\n var ppePos = 0;\n var type;\n var mr;\n\n if (chn > 1) {\n ppe = percep_MS_entropy;\n ppePos = -2;\n type = Encoder_1.NORM_TYPE;\n if (blocktype_d[0] == Encoder_1.SHORT_TYPE\n || blocktype_d[1] == Encoder_1.SHORT_TYPE)\n type = Encoder_1.SHORT_TYPE;\n mr = masking_MS_ratio[gr_out][chn - 2];\n } else {\n ppe = percep_entropy;\n ppePos = 0;\n type = blocktype_d[chn];\n mr = masking_ratio[gr_out][chn];\n }\n\n if (type == Encoder_1.SHORT_TYPE)\n ppe[ppePos + chn] = pecalc_s(mr, gfc.masking_lower);\n else\n ppe[ppePos + chn] = pecalc_l(mr, gfc.masking_lower);\n\n if (gfp.analysis)\n gfc.pinfo.pe[gr_out][chn] = ppe[ppePos + chn];\n\n }\n return 0;\n };\n\n function vbrpsy_compute_fft_l(gfp, buffer, bufPos, chn, gr_out, fftenergy, wsamp_l, wsamp_lPos) {\n var gfc = gfp.internal_flags;\n if (chn < 2) {\n fft.fft_long(gfc, wsamp_l[wsamp_lPos], chn, buffer, bufPos);\n } else if (chn == 2) {\n /* FFT data for mid and side channel is derived from L & R */\n for (var j = Encoder_1.BLKSIZE - 1; j >= 0; --j) {\n var l = wsamp_l[wsamp_lPos + 0][j];\n var r = wsamp_l[wsamp_lPos + 1][j];\n wsamp_l[wsamp_lPos + 0][j] = (l + r) * Util$3.SQRT2 * 0.5;\n wsamp_l[wsamp_lPos + 1][j] = (l - r) * Util$3.SQRT2 * 0.5;\n }\n }\n\n /*********************************************************************\n * compute energies\n *********************************************************************/\n fftenergy[0] = NON_LINEAR_SCALE_ENERGY(wsamp_l[wsamp_lPos + 0][0]);\n fftenergy[0] *= fftenergy[0];\n\n for (var j = Encoder_1.BLKSIZE / 2 - 1; j >= 0; --j) {\n var re = wsamp_l[wsamp_lPos + 0][Encoder_1.BLKSIZE / 2 - j];\n var im = wsamp_l[wsamp_lPos + 0][Encoder_1.BLKSIZE / 2 + j];\n fftenergy[Encoder_1.BLKSIZE / 2 - j] = NON_LINEAR_SCALE_ENERGY((re\n * re + im * im) * 0.5);\n }\n /* total energy */\n {\n var totalenergy = 0.0;\n for (var j = 11; j < Encoder_1.HBLKSIZE; j++)\n totalenergy += fftenergy[j];\n\n gfc.tot_ener[chn] = totalenergy;\n }\n\n if (gfp.analysis) {\n for (var j = 0; j < Encoder_1.HBLKSIZE; j++) {\n gfc.pinfo.energy[gr_out][chn][j] = gfc.pinfo.energy_save[chn][j];\n gfc.pinfo.energy_save[chn][j] = fftenergy[j];\n }\n gfc.pinfo.pe[gr_out][chn] = gfc.pe[chn];\n }\n }\n\n function vbrpsy_compute_fft_s(gfp, buffer, bufPos, chn, sblock, fftenergy_s, wsamp_s, wsamp_sPos) {\n var gfc = gfp.internal_flags;\n\n if (sblock == 0 && chn < 2) {\n fft.fft_short(gfc, wsamp_s[wsamp_sPos], chn, buffer, bufPos);\n }\n if (chn == 2) {\n /* FFT data for mid and side channel is derived from L & R */\n for (var j = Encoder_1.BLKSIZE_s - 1; j >= 0; --j) {\n var l = wsamp_s[wsamp_sPos + 0][sblock][j];\n var r = wsamp_s[wsamp_sPos + 1][sblock][j];\n wsamp_s[wsamp_sPos + 0][sblock][j] = (l + r) * Util$3.SQRT2 * 0.5;\n wsamp_s[wsamp_sPos + 1][sblock][j] = (l - r) * Util$3.SQRT2 * 0.5;\n }\n }\n\n /*********************************************************************\n * compute energies\n *********************************************************************/\n fftenergy_s[sblock][0] = wsamp_s[wsamp_sPos + 0][sblock][0];\n fftenergy_s[sblock][0] *= fftenergy_s[sblock][0];\n for (var j = Encoder_1.BLKSIZE_s / 2 - 1; j >= 0; --j) {\n var re = wsamp_s[wsamp_sPos + 0][sblock][Encoder_1.BLKSIZE_s / 2 - j];\n var im = wsamp_s[wsamp_sPos + 0][sblock][Encoder_1.BLKSIZE_s / 2 + j];\n fftenergy_s[sblock][Encoder_1.BLKSIZE_s / 2 - j] = NON_LINEAR_SCALE_ENERGY((re\n * re + im * im) * 0.5);\n }\n }\n\n /**\n * compute loudness approximation (used for ATH auto-level adjustment)\n */\n function vbrpsy_compute_loudness_approximation_l(gfp, gr_out, chn, fftenergy) {\n var gfc = gfp.internal_flags;\n if (gfp.athaa_loudapprox == 2 && chn < 2) {\n // no loudness for mid/side ch\n gfc.loudness_sq[gr_out][chn] = gfc.loudness_sq_save[chn];\n gfc.loudness_sq_save[chn] = psycho_loudness_approx(fftenergy, gfc);\n }\n }\n\n var fircoef_ = [-8.65163e-18 * 2,\n -0.00851586 * 2, -6.74764e-18 * 2, 0.0209036 * 2,\n -3.36639e-17 * 2, -0.0438162 * 2, -1.54175e-17 * 2,\n 0.0931738 * 2, -5.52212e-17 * 2, -0.313819 * 2];\n\n /**\n * Apply HPF of fs/4 to the input signal. This is used for attack detection\n * / handling.\n */\n function vbrpsy_attack_detection(gfp, buffer, bufPos, gr_out, masking_ratio, masking_MS_ratio, energy, sub_short_factor, ns_attacks, uselongblock) {\n var ns_hpfsmpl = new_float_n$3([2, 576]);\n var gfc = gfp.internal_flags;\n var n_chn_out = gfc.channels_out;\n /* chn=2 and 3 = Mid and Side channels */\n var n_chn_psy = (gfp.mode == MPEGMode.JOINT_STEREO) ? 4 : n_chn_out;\n /* Don't copy the input buffer into a temporary buffer */\n /* unroll the loop 2 times */\n for (var chn = 0; chn < n_chn_out; chn++) {\n /* apply high pass filter of fs/4 */\n firbuf = buffer[chn];\n var firbufPos = bufPos + 576 - 350 - NSFIRLEN + 192;\n assert$3(fircoef_.length == ((NSFIRLEN - 1) / 2));\n for (var i = 0; i < 576; i++) {\n var sum1, sum2;\n sum1 = firbuf[firbufPos + i + 10];\n sum2 = 0.0;\n for (var j = 0; j < ((NSFIRLEN - 1) / 2) - 1; j += 2) {\n sum1 += fircoef_[j]\n * (firbuf[firbufPos + i + j] + firbuf[firbufPos + i\n + NSFIRLEN - j]);\n sum2 += fircoef_[j + 1]\n * (firbuf[firbufPos + i + j + 1] + firbuf[firbufPos\n + i + NSFIRLEN - j - 1]);\n }\n ns_hpfsmpl[chn][i] = sum1 + sum2;\n }\n masking_ratio[gr_out][chn].en.assign(gfc.en[chn]);\n masking_ratio[gr_out][chn].thm.assign(gfc.thm[chn]);\n if (n_chn_psy > 2) {\n /* MS maskings */\n /* percep_MS_entropy [chn-2] = gfc . pe [chn]; */\n masking_MS_ratio[gr_out][chn].en.assign(gfc.en[chn + 2]);\n masking_MS_ratio[gr_out][chn].thm.assign(gfc.thm[chn + 2]);\n }\n }\n for (var chn = 0; chn < n_chn_psy; chn++) {\n var attack_intensity = new_float$3(12);\n var en_subshort = new_float$3(12);\n var en_short = [0, 0, 0, 0];\n var pf = ns_hpfsmpl[chn & 1];\n var pfPos = 0;\n var attackThreshold = (chn == 3) ? gfc.nsPsy.attackthre_s\n : gfc.nsPsy.attackthre;\n var ns_uselongblock = 1;\n\n if (chn == 2) {\n for (var i = 0, j = 576; j > 0; ++i, --j) {\n var l = ns_hpfsmpl[0][i];\n var r = ns_hpfsmpl[1][i];\n ns_hpfsmpl[0][i] = l + r;\n ns_hpfsmpl[1][i] = l - r;\n }\n }\n /***************************************************************\n * determine the block type (window type)\n ***************************************************************/\n /* calculate energies of each sub-shortblocks */\n for (var i = 0; i < 3; i++) {\n en_subshort[i] = gfc.nsPsy.last_en_subshort[chn][i + 6];\n assert$3(gfc.nsPsy.last_en_subshort[chn][i + 4] > 0);\n attack_intensity[i] = en_subshort[i]\n / gfc.nsPsy.last_en_subshort[chn][i + 4];\n en_short[0] += en_subshort[i];\n }\n\n for (var i = 0; i < 9; i++) {\n var pfe = pfPos + 576 / 9;\n var p = 1.;\n for (; pfPos < pfe; pfPos++)\n if (p < Math.abs(pf[pfPos]))\n p = Math.abs(pf[pfPos]);\n\n gfc.nsPsy.last_en_subshort[chn][i] = en_subshort[i + 3] = p;\n en_short[1 + i / 3] += p;\n if (p > en_subshort[i + 3 - 2]) {\n assert$3(en_subshort[i + 3 - 2] > 0);\n p = p / en_subshort[i + 3 - 2];\n } else if (en_subshort[i + 3 - 2] > p * 10.0) {\n assert$3(p > 0);\n p = en_subshort[i + 3 - 2] / (p * 10.0);\n } else {\n p = 0.0;\n }\n attack_intensity[i + 3] = p;\n }\n /* pulse like signal detection for fatboy.wav and so on */\n for (var i = 0; i < 3; ++i) {\n var enn = en_subshort[i * 3 + 3]\n + en_subshort[i * 3 + 4] + en_subshort[i * 3 + 5];\n var factor = 1.;\n if (en_subshort[i * 3 + 5] * 6 < enn) {\n factor *= 0.5;\n if (en_subshort[i * 3 + 4] * 6 < enn) {\n factor *= 0.5;\n }\n }\n sub_short_factor[chn][i] = factor;\n }\n\n if (gfp.analysis) {\n var x = attack_intensity[0];\n for (var i = 1; i < 12; i++) {\n if (x < attack_intensity[i]) {\n x = attack_intensity[i];\n }\n }\n gfc.pinfo.ers[gr_out][chn] = gfc.pinfo.ers_save[chn];\n gfc.pinfo.ers_save[chn] = x;\n }\n\n /* compare energies between sub-shortblocks */\n for (var i = 0; i < 12; i++) {\n if (0 == ns_attacks[chn][i / 3]\n && attack_intensity[i] > attackThreshold) {\n ns_attacks[chn][i / 3] = (i % 3) + 1;\n }\n }\n\n /*\n * should have energy change between short blocks, in order to avoid\n * periodic signals\n */\n /* Good samples to show the effect are Trumpet test songs */\n /*\n * GB: tuned (1) to avoid too many short blocks for test sample\n * TRUMPET\n */\n /*\n * RH: tuned (2) to let enough short blocks through for test sample\n * FSOL and SNAPS\n */\n for (var i = 1; i < 4; i++) {\n var u = en_short[i - 1];\n var v = en_short[i];\n var m = Math.max(u, v);\n if (m < 40000) { /* (2) */\n if (u < 1.7 * v && v < 1.7 * u) { /* (1) */\n if (i == 1 && ns_attacks[chn][0] <= ns_attacks[chn][i]) {\n ns_attacks[chn][0] = 0;\n }\n ns_attacks[chn][i] = 0;\n }\n }\n }\n\n if (ns_attacks[chn][0] <= gfc.nsPsy.lastAttacks[chn]) {\n ns_attacks[chn][0] = 0;\n }\n\n if (gfc.nsPsy.lastAttacks[chn] == 3\n || (ns_attacks[chn][0] + ns_attacks[chn][1]\n + ns_attacks[chn][2] + ns_attacks[chn][3]) != 0) {\n ns_uselongblock = 0;\n\n if (ns_attacks[chn][1] != 0 && ns_attacks[chn][0] != 0) {\n ns_attacks[chn][1] = 0;\n }\n if (ns_attacks[chn][2] != 0 && ns_attacks[chn][1] != 0) {\n ns_attacks[chn][2] = 0;\n }\n if (ns_attacks[chn][3] != 0 && ns_attacks[chn][2] != 0) {\n ns_attacks[chn][3] = 0;\n }\n }\n if (chn < 2) {\n uselongblock[chn] = ns_uselongblock;\n } else {\n if (ns_uselongblock == 0) {\n uselongblock[0] = uselongblock[1] = 0;\n }\n }\n\n /*\n * there is a one granule delay. Copy maskings computed last call\n * into masking_ratio to return to calling program.\n */\n energy[chn] = gfc.tot_ener[chn];\n }\n }\n\n function vbrpsy_skip_masking_s(gfc, chn, sblock) {\n if (sblock == 0) {\n for (var b = 0; b < gfc.npart_s; b++) {\n gfc.nb_s2[chn][b] = gfc.nb_s1[chn][b];\n gfc.nb_s1[chn][b] = 0;\n }\n }\n }\n\n function vbrpsy_skip_masking_l(gfc, chn) {\n for (var b = 0; b < gfc.npart_l; b++) {\n gfc.nb_2[chn][b] = gfc.nb_1[chn][b];\n gfc.nb_1[chn][b] = 0;\n }\n }\n\n function psyvbr_calc_mask_index_s(gfc, max, avg, mask_idx) {\n var last_tab_entry = tab.length - 1;\n var b = 0;\n var a = avg[b] + avg[b + 1];\n assert$3(a >= 0);\n if (a > 0.0) {\n var m = max[b];\n if (m < max[b + 1])\n m = max[b + 1];\n assert$3((gfc.numlines_s[b] + gfc.numlines_s[b + 1] - 1) > 0);\n a = 20.0 * (m * 2.0 - a)\n / (a * (gfc.numlines_s[b] + gfc.numlines_s[b + 1] - 1));\n var k = 0 | a;\n if (k > last_tab_entry)\n k = last_tab_entry;\n mask_idx[b] = k;\n } else {\n mask_idx[b] = 0;\n }\n\n for (b = 1; b < gfc.npart_s - 1; b++) {\n a = avg[b - 1] + avg[b] + avg[b + 1];\n assert$3(b + 1 < gfc.npart_s);\n assert$3(a >= 0);\n if (a > 0.0) {\n var m = max[b - 1];\n if (m < max[b])\n m = max[b];\n if (m < max[b + 1])\n m = max[b + 1];\n assert$3((gfc.numlines_s[b - 1] + gfc.numlines_s[b] + gfc.numlines_s[b + 1] - 1) > 0);\n a = 20.0\n * (m * 3.0 - a)\n / (a * (gfc.numlines_s[b - 1] + gfc.numlines_s[b]\n + gfc.numlines_s[b + 1] - 1));\n var k = 0 | a;\n if (k > last_tab_entry)\n k = last_tab_entry;\n mask_idx[b] = k;\n } else {\n mask_idx[b] = 0;\n }\n }\n assert$3(b > 0);\n assert$3(b == gfc.npart_s - 1);\n\n a = avg[b - 1] + avg[b];\n assert$3(a >= 0);\n if (a > 0.0) {\n var m = max[b - 1];\n if (m < max[b])\n m = max[b];\n assert$3((gfc.numlines_s[b - 1] + gfc.numlines_s[b] - 1) > 0);\n a = 20.0 * (m * 2.0 - a)\n / (a * (gfc.numlines_s[b - 1] + gfc.numlines_s[b] - 1));\n var k = 0 | a;\n if (k > last_tab_entry)\n k = last_tab_entry;\n mask_idx[b] = k;\n } else {\n mask_idx[b] = 0;\n }\n assert$3(b == (gfc.npart_s - 1));\n }\n\n function vbrpsy_compute_masking_s(gfp, fftenergy_s, eb, thr, chn, sblock) {\n var gfc = gfp.internal_flags;\n var max = new float[Encoder_1.CBANDS], avg = new_float$3(Encoder_1.CBANDS);\n var i, j, b;\n var mask_idx_s = new int[Encoder_1.CBANDS];\n\n for (b = j = 0; b < gfc.npart_s; ++b) {\n var ebb = 0, m = 0;\n var n = gfc.numlines_s[b];\n for (i = 0; i < n; ++i, ++j) {\n var el = fftenergy_s[sblock][j];\n ebb += el;\n if (m < el)\n m = el;\n }\n eb[b] = ebb;\n assert$3(ebb >= 0);\n max[b] = m;\n assert$3(n > 0);\n avg[b] = ebb / n;\n assert$3(avg[b] >= 0);\n }\n assert$3(b == gfc.npart_s);\n assert$3(j == 129);\n for (; b < Encoder_1.CBANDS; ++b) {\n max[b] = 0;\n avg[b] = 0;\n }\n psyvbr_calc_mask_index_s(gfc, max, avg, mask_idx_s);\n for (j = b = 0; b < gfc.npart_s; b++) {\n var kk = gfc.s3ind_s[b][0];\n var last = gfc.s3ind_s[b][1];\n var dd, dd_n;\n var x, ecb, avg_mask;\n dd = mask_idx_s[kk];\n dd_n = 1;\n ecb = gfc.s3_ss[j] * eb[kk] * tab[mask_idx_s[kk]];\n ++j;\n ++kk;\n while (kk <= last) {\n dd += mask_idx_s[kk];\n dd_n += 1;\n x = gfc.s3_ss[j] * eb[kk] * tab[mask_idx_s[kk]];\n ecb = vbrpsy_mask_add(ecb, x, kk - b);\n ++j;\n ++kk;\n }\n dd = (1 + 2 * dd) / (2 * dd_n);\n avg_mask = tab[dd] * 0.5;\n ecb *= avg_mask;\n thr[b] = ecb;\n gfc.nb_s2[chn][b] = gfc.nb_s1[chn][b];\n gfc.nb_s1[chn][b] = ecb;\n {\n /*\n * if THR exceeds EB, the quantization routines will take the\n * difference from other bands. in case of strong tonal samples\n * (tonaltest.wav) this leads to heavy distortions. that's why\n * we limit THR here.\n */\n x = max[b];\n x *= gfc.minval_s[b];\n x *= avg_mask;\n if (thr[b] > x) {\n thr[b] = x;\n }\n }\n if (gfc.masking_lower > 1) {\n thr[b] *= gfc.masking_lower;\n }\n if (thr[b] > eb[b]) {\n thr[b] = eb[b];\n }\n if (gfc.masking_lower < 1) {\n thr[b] *= gfc.masking_lower;\n }\n\n assert$3(thr[b] >= 0);\n }\n for (; b < Encoder_1.CBANDS; ++b) {\n eb[b] = 0;\n thr[b] = 0;\n }\n }\n\n function vbrpsy_compute_masking_l(gfc, fftenergy, eb_l, thr, chn) {\n var max = new_float$3(Encoder_1.CBANDS), avg = new_float$3(Encoder_1.CBANDS);\n var mask_idx_l = new_int$3(Encoder_1.CBANDS + 2);\n var b;\n\n /*********************************************************************\n * Calculate the energy and the tonality of each partition.\n *********************************************************************/\n calc_energy(gfc, fftenergy, eb_l, max, avg);\n calc_mask_index_l(gfc, max, avg, mask_idx_l);\n\n /*********************************************************************\n * convolve the partitioned energy and unpredictability with the\n * spreading function, s3_l[b][k]\n ********************************************************************/\n var k = 0;\n for (b = 0; b < gfc.npart_l; b++) {\n var x, ecb, avg_mask, t;\n /* convolve the partitioned energy with the spreading function */\n var kk = gfc.s3ind[b][0];\n var last = gfc.s3ind[b][1];\n var dd = 0, dd_n = 0;\n dd = mask_idx_l[kk];\n dd_n += 1;\n ecb = gfc.s3_ll[k] * eb_l[kk] * tab[mask_idx_l[kk]];\n ++k;\n ++kk;\n while (kk <= last) {\n dd += mask_idx_l[kk];\n dd_n += 1;\n x = gfc.s3_ll[k] * eb_l[kk] * tab[mask_idx_l[kk]];\n t = vbrpsy_mask_add(ecb, x, kk - b);\n ecb = t;\n ++k;\n ++kk;\n }\n dd = (1 + 2 * dd) / (2 * dd_n);\n avg_mask = tab[dd] * 0.5;\n ecb *= avg_mask;\n\n /**** long block pre-echo control ****/\n /**\n *
\n             * dont use long block pre-echo control if previous granule was\n             * a short block.  This is to avoid the situation:\n             * frame0:  quiet (very low masking)\n             * frame1:  surge  (triggers short blocks)\n             * frame2:  regular frame.  looks like pre-echo when compared to\n             *          frame0, but all pre-echo was in frame1.\n             * 
\n */\n /*\n * chn=0,1 L and R channels chn=2,3 S and M channels.\n */\n if (gfc.blocktype_old[chn & 0x01] == Encoder_1.SHORT_TYPE) {\n var ecb_limit = rpelev * gfc.nb_1[chn][b];\n if (ecb_limit > 0) {\n thr[b] = Math.min(ecb, ecb_limit);\n } else {\n /**\n *
\n                     * Robert 071209:\n                     * Because we don't calculate long block psy when we know a granule\n                     * should be of short blocks, we don't have any clue how the granule\n                     * before would have looked like as a long block. So we have to guess\n                     * a little bit for this END_TYPE block.\n                     * Most of the time we get away with this sloppyness. (fingers crossed :)\n                     * The speed increase is worth it.\n                     * 
\n */\n thr[b] = Math.min(ecb, eb_l[b] * NS_PREECHO_ATT2);\n }\n } else {\n var ecb_limit_2 = rpelev2 * gfc.nb_2[chn][b];\n var ecb_limit_1 = rpelev * gfc.nb_1[chn][b];\n var ecb_limit;\n if (ecb_limit_2 <= 0) {\n ecb_limit_2 = ecb;\n }\n if (ecb_limit_1 <= 0) {\n ecb_limit_1 = ecb;\n }\n if (gfc.blocktype_old[chn & 0x01] == Encoder_1.NORM_TYPE) {\n ecb_limit = Math.min(ecb_limit_1, ecb_limit_2);\n } else {\n ecb_limit = ecb_limit_1;\n }\n thr[b] = Math.min(ecb, ecb_limit);\n }\n gfc.nb_2[chn][b] = gfc.nb_1[chn][b];\n gfc.nb_1[chn][b] = ecb;\n {\n /*\n * if THR exceeds EB, the quantization routines will take the\n * difference from other bands. in case of strong tonal samples\n * (tonaltest.wav) this leads to heavy distortions. that's why\n * we limit THR here.\n */\n x = max[b];\n x *= gfc.minval_l[b];\n x *= avg_mask;\n if (thr[b] > x) {\n thr[b] = x;\n }\n }\n if (gfc.masking_lower > 1) {\n thr[b] *= gfc.masking_lower;\n }\n if (thr[b] > eb_l[b]) {\n thr[b] = eb_l[b];\n }\n if (gfc.masking_lower < 1) {\n thr[b] *= gfc.masking_lower;\n }\n assert$3(thr[b] >= 0);\n }\n for (; b < Encoder_1.CBANDS; ++b) {\n eb_l[b] = 0;\n thr[b] = 0;\n }\n }\n\n function vbrpsy_compute_block_type(gfp, uselongblock) {\n var gfc = gfp.internal_flags;\n\n if (gfp.short_blocks == ShortBlock$3.short_block_coupled\n /* force both channels to use the same block type */\n /* this is necessary if the frame is to be encoded in ms_stereo. */\n /* But even without ms_stereo, FhG does this */\n && !(uselongblock[0] != 0 && uselongblock[1] != 0))\n uselongblock[0] = uselongblock[1] = 0;\n\n for (var chn = 0; chn < gfc.channels_out; chn++) {\n /* disable short blocks */\n if (gfp.short_blocks == ShortBlock$3.short_block_dispensed) {\n uselongblock[chn] = 1;\n }\n if (gfp.short_blocks == ShortBlock$3.short_block_forced) {\n uselongblock[chn] = 0;\n }\n }\n }\n\n function vbrpsy_apply_block_type(gfp, uselongblock, blocktype_d) {\n var gfc = gfp.internal_flags;\n\n /*\n * update the blocktype of the previous granule, since it depends on\n * what happend in this granule\n */\n for (var chn = 0; chn < gfc.channels_out; chn++) {\n var blocktype = Encoder_1.NORM_TYPE;\n /* disable short blocks */\n\n if (uselongblock[chn] != 0) {\n /* no attack : use long blocks */\n assert$3(gfc.blocktype_old[chn] != Encoder_1.START_TYPE);\n if (gfc.blocktype_old[chn] == Encoder_1.SHORT_TYPE)\n blocktype = Encoder_1.STOP_TYPE;\n } else {\n /* attack : use short blocks */\n blocktype = Encoder_1.SHORT_TYPE;\n if (gfc.blocktype_old[chn] == Encoder_1.NORM_TYPE) {\n gfc.blocktype_old[chn] = Encoder_1.START_TYPE;\n }\n if (gfc.blocktype_old[chn] == Encoder_1.STOP_TYPE)\n gfc.blocktype_old[chn] = Encoder_1.SHORT_TYPE;\n }\n\n blocktype_d[chn] = gfc.blocktype_old[chn];\n // value returned to calling program\n gfc.blocktype_old[chn] = blocktype;\n // save for next call to l3psy_anal\n }\n }\n\n /**\n * compute M/S thresholds from Johnston & Ferreira 1992 ICASSP paper\n */\n function vbrpsy_compute_MS_thresholds(eb, thr, cb_mld, ath_cb, athadjust, msfix, n) {\n var msfix2 = msfix * 2;\n var athlower = msfix > 0 ? Math.pow(10, athadjust) : 1;\n var rside, rmid;\n for (var b = 0; b < n; ++b) {\n var ebM = eb[2][b];\n var ebS = eb[3][b];\n var thmL = thr[0][b];\n var thmR = thr[1][b];\n var thmM = thr[2][b];\n var thmS = thr[3][b];\n\n /* use this fix if L & R masking differs by 2db or less */\n if (thmL <= 1.58 * thmR && thmR <= 1.58 * thmL) {\n var mld_m = cb_mld[b] * ebS;\n var mld_s = cb_mld[b] * ebM;\n rmid = Math.max(thmM, Math.min(thmS, mld_m));\n rside = Math.max(thmS, Math.min(thmM, mld_s));\n } else {\n rmid = thmM;\n rside = thmS;\n }\n if (msfix > 0) {\n /***************************************************************/\n /* Adjust M/S maskings if user set \"msfix\" */\n /***************************************************************/\n /* Naoki Shibata 2000 */\n var thmLR, thmMS;\n var ath = ath_cb[b] * athlower;\n thmLR = Math.min(Math.max(thmL, ath), Math.max(thmR, ath));\n thmM = Math.max(rmid, ath);\n thmS = Math.max(rside, ath);\n thmMS = thmM + thmS;\n if (thmMS > 0 && (thmLR * msfix2) < thmMS) {\n var f = thmLR * msfix2 / thmMS;\n thmM *= f;\n thmS *= f;\n assert$3(thmMS > 0);\n }\n rmid = Math.min(thmM, rmid);\n rside = Math.min(thmS, rside);\n }\n if (rmid > ebM) {\n rmid = ebM;\n }\n if (rside > ebS) {\n rside = ebS;\n }\n thr[2][b] = rmid;\n thr[3][b] = rside;\n }\n }\n\n this.L3psycho_anal_vbr = function (gfp, buffer, bufPos, gr_out, masking_ratio, masking_MS_ratio, percep_entropy, percep_MS_entropy, energy, blocktype_d) {\n var gfc = gfp.internal_flags;\n\n /* fft and energy calculation */\n var wsamp_l;\n var wsamp_s;\n var fftenergy = new_float$3(Encoder_1.HBLKSIZE);\n var fftenergy_s = new_float_n$3([3, Encoder_1.HBLKSIZE_s]);\n var wsamp_L = new_float_n$3([2, Encoder_1.BLKSIZE]);\n var wsamp_S = new_float_n$3([2, 3, Encoder_1.BLKSIZE_s]);\n var eb = new_float_n$3([4, Encoder_1.CBANDS]), thr = new_float_n$3([4, Encoder_1.CBANDS]);\n var sub_short_factor = new_float_n$3([4, 3]);\n var pcfact = 0.6;\n\n /* block type */\n var ns_attacks = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0],\n [0, 0, 0, 0]];\n var uselongblock = new_int$3(2);\n\n /* usual variables like loop indices, etc.. */\n\n /* chn=2 and 3 = Mid and Side channels */\n var n_chn_psy = (gfp.mode == MPEGMode.JOINT_STEREO) ? 4\n : gfc.channels_out;\n\n vbrpsy_attack_detection(gfp, buffer, bufPos, gr_out, masking_ratio,\n masking_MS_ratio, energy, sub_short_factor, ns_attacks,\n uselongblock);\n\n vbrpsy_compute_block_type(gfp, uselongblock);\n\n /* LONG BLOCK CASE */\n {\n for (var chn = 0; chn < n_chn_psy; chn++) {\n var ch01 = chn & 0x01;\n wsamp_l = wsamp_L;\n vbrpsy_compute_fft_l(gfp, buffer, bufPos, chn, gr_out,\n fftenergy, wsamp_l, ch01);\n\n vbrpsy_compute_loudness_approximation_l(gfp, gr_out, chn,\n fftenergy);\n\n if (uselongblock[ch01] != 0) {\n vbrpsy_compute_masking_l(gfc, fftenergy, eb[chn], thr[chn],\n chn);\n } else {\n vbrpsy_skip_masking_l(gfc, chn);\n }\n }\n if ((uselongblock[0] + uselongblock[1]) == 2) {\n /* M/S channel */\n if (gfp.mode == MPEGMode.JOINT_STEREO) {\n vbrpsy_compute_MS_thresholds(eb, thr, gfc.mld_cb_l,\n gfc.ATH.cb_l, gfp.ATHlower * gfc.ATH.adjust,\n gfp.msfix, gfc.npart_l);\n }\n }\n /* TODO: apply adaptive ATH masking here ?? */\n for (var chn = 0; chn < n_chn_psy; chn++) {\n var ch01 = chn & 0x01;\n if (uselongblock[ch01] != 0) {\n convert_partition2scalefac_l(gfc, eb[chn], thr[chn], chn);\n }\n }\n }\n\n /* SHORT BLOCKS CASE */\n {\n for (var sblock = 0; sblock < 3; sblock++) {\n for (var chn = 0; chn < n_chn_psy; ++chn) {\n var ch01 = chn & 0x01;\n\n if (uselongblock[ch01] != 0) {\n vbrpsy_skip_masking_s(gfc, chn, sblock);\n } else {\n /* compute masking thresholds for short blocks */\n wsamp_s = wsamp_S;\n vbrpsy_compute_fft_s(gfp, buffer, bufPos, chn, sblock,\n fftenergy_s, wsamp_s, ch01);\n vbrpsy_compute_masking_s(gfp, fftenergy_s, eb[chn],\n thr[chn], chn, sblock);\n }\n }\n if ((uselongblock[0] + uselongblock[1]) == 0) {\n /* M/S channel */\n if (gfp.mode == MPEGMode.JOINT_STEREO) {\n vbrpsy_compute_MS_thresholds(eb, thr, gfc.mld_cb_s,\n gfc.ATH.cb_s, gfp.ATHlower * gfc.ATH.adjust,\n gfp.msfix, gfc.npart_s);\n }\n /* L/R channel */\n }\n /* TODO: apply adaptive ATH masking here ?? */\n for (var chn = 0; chn < n_chn_psy; ++chn) {\n var ch01 = chn & 0x01;\n if (0 == uselongblock[ch01]) {\n convert_partition2scalefac_s(gfc, eb[chn], thr[chn],\n chn, sblock);\n }\n }\n }\n\n /**** short block pre-echo control ****/\n for (var chn = 0; chn < n_chn_psy; chn++) {\n var ch01 = chn & 0x01;\n\n if (uselongblock[ch01] != 0) {\n continue;\n }\n for (var sb = 0; sb < Encoder_1.SBMAX_s; sb++) {\n var new_thmm = new_float$3(3);\n for (var sblock = 0; sblock < 3; sblock++) {\n var thmm = gfc.thm[chn].s[sb][sblock];\n thmm *= NS_PREECHO_ATT0;\n\n if (ns_attacks[chn][sblock] >= 2\n || ns_attacks[chn][sblock + 1] == 1) {\n var idx = (sblock != 0) ? sblock - 1 : 2;\n var p = NS_INTERP(gfc.thm[chn].s[sb][idx], thmm,\n NS_PREECHO_ATT1 * pcfact);\n thmm = Math.min(thmm, p);\n } else if (ns_attacks[chn][sblock] == 1) {\n var idx = (sblock != 0) ? sblock - 1 : 2;\n var p = NS_INTERP(gfc.thm[chn].s[sb][idx], thmm,\n NS_PREECHO_ATT2 * pcfact);\n thmm = Math.min(thmm, p);\n } else if ((sblock != 0 && ns_attacks[chn][sblock - 1] == 3)\n || (sblock == 0 && gfc.nsPsy.lastAttacks[chn] == 3)) {\n var idx = (sblock != 2) ? sblock + 1 : 0;\n var p = NS_INTERP(gfc.thm[chn].s[sb][idx], thmm,\n NS_PREECHO_ATT2 * pcfact);\n thmm = Math.min(thmm, p);\n }\n\n /* pulse like signal detection for fatboy.wav and so on */\n thmm *= sub_short_factor[chn][sblock];\n\n new_thmm[sblock] = thmm;\n }\n for (var sblock = 0; sblock < 3; sblock++) {\n gfc.thm[chn].s[sb][sblock] = new_thmm[sblock];\n }\n }\n }\n }\n for (var chn = 0; chn < n_chn_psy; chn++) {\n gfc.nsPsy.lastAttacks[chn] = ns_attacks[chn][2];\n }\n\n /***************************************************************\n * determine final block type\n ***************************************************************/\n vbrpsy_apply_block_type(gfp, uselongblock, blocktype_d);\n\n /*********************************************************************\n * compute the value of PE to return ... no delay and advance\n *********************************************************************/\n for (var chn = 0; chn < n_chn_psy; chn++) {\n var ppe;\n var ppePos;\n var type;\n var mr;\n\n if (chn > 1) {\n ppe = percep_MS_entropy;\n ppePos = -2;\n type = Encoder_1.NORM_TYPE;\n if (blocktype_d[0] == Encoder_1.SHORT_TYPE\n || blocktype_d[1] == Encoder_1.SHORT_TYPE)\n type = Encoder_1.SHORT_TYPE;\n mr = masking_MS_ratio[gr_out][chn - 2];\n } else {\n ppe = percep_entropy;\n ppePos = 0;\n type = blocktype_d[chn];\n mr = masking_ratio[gr_out][chn];\n }\n\n if (type == Encoder_1.SHORT_TYPE) {\n ppe[ppePos + chn] = pecalc_s(mr, gfc.masking_lower);\n } else {\n ppe[ppePos + chn] = pecalc_l(mr, gfc.masking_lower);\n }\n\n if (gfp.analysis) {\n gfc.pinfo.pe[gr_out][chn] = ppe[ppePos + chn];\n }\n }\n return 0;\n };\n\n function s3_func_x(bark, hf_slope) {\n var tempx = bark, tempy;\n\n if (tempx >= 0) {\n tempy = -tempx * 27;\n } else {\n tempy = tempx * hf_slope;\n }\n if (tempy <= -72.0) {\n return 0;\n }\n return Math.exp(tempy * LN_TO_LOG10);\n }\n\n function norm_s3_func_x(hf_slope) {\n var lim_a = 0, lim_b = 0;\n {\n var x = 0, l, h;\n for (x = 0; s3_func_x(x, hf_slope) > 1e-20; x -= 1)\n ;\n l = x;\n h = 0;\n while (Math.abs(h - l) > 1e-12) {\n x = (h + l) / 2;\n if (s3_func_x(x, hf_slope) > 0) {\n h = x;\n } else {\n l = x;\n }\n }\n lim_a = l;\n }\n {\n var x = 0, l, h;\n for (x = 0; s3_func_x(x, hf_slope) > 1e-20; x += 1)\n ;\n l = 0;\n h = x;\n while (Math.abs(h - l) > 1e-12) {\n x = (h + l) / 2;\n if (s3_func_x(x, hf_slope) > 0) {\n l = x;\n } else {\n h = x;\n }\n }\n lim_b = h;\n }\n {\n var sum = 0;\n var m = 1000;\n var i;\n for (i = 0; i <= m; ++i) {\n var x = lim_a + i * (lim_b - lim_a) / m;\n var y = s3_func_x(x, hf_slope);\n sum += y;\n }\n {\n var norm = (m + 1) / (sum * (lim_b - lim_a));\n /* printf( \"norm = %lf\\n\",norm); */\n return norm;\n }\n }\n }\n\n /**\n * The spreading function. Values returned in units of energy\n */\n function s3_func(bark) {\n var tempx, x, tempy, temp;\n tempx = bark;\n if (tempx >= 0)\n tempx *= 3;\n else\n tempx *= 1.5;\n\n if (tempx >= 0.5 && tempx <= 2.5) {\n temp = tempx - 0.5;\n x = 8.0 * (temp * temp - 2.0 * temp);\n } else\n x = 0.0;\n tempx += 0.474;\n tempy = 15.811389 + 7.5 * tempx - 17.5\n * Math.sqrt(1.0 + tempx * tempx);\n\n if (tempy <= -60.0)\n return 0.0;\n\n tempx = Math.exp((x + tempy) * LN_TO_LOG10);\n\n /**\n *
\n         * Normalization.  The spreading function should be normalized so that:\n         * +inf\n         * /\n         * |  s3 [ bark ]  d(bark)   =  1\n         * /\n         * -inf\n         * 
\n */\n tempx /= .6609193;\n return tempx;\n }\n\n /**\n * see for example \"Zwicker: Psychoakustik, 1982; ISBN 3-540-11401-7\n */\n function freq2bark(freq) {\n /* input: freq in hz output: barks */\n if (freq < 0)\n freq = 0;\n freq = freq * 0.001;\n return 13.0 * Math.atan(.76 * freq) + 3.5\n * Math.atan(freq * freq / (7.5 * 7.5));\n }\n\n function init_numline(numlines, bo, bm, bval, bval_width, mld, bo_w, sfreq, blksize, scalepos, deltafreq, sbmax) {\n var b_frq = new_float$3(Encoder_1.CBANDS + 1);\n var sample_freq_frac = sfreq / (sbmax > 15 ? 2 * 576 : 2 * 192);\n var partition = new_int$3(Encoder_1.HBLKSIZE);\n var i;\n sfreq /= blksize;\n var j = 0;\n var ni = 0;\n /* compute numlines, the number of spectral lines in each partition band */\n /* each partition band should be about DELBARK wide. */\n for (i = 0; i < Encoder_1.CBANDS; i++) {\n var bark1;\n var j2;\n bark1 = freq2bark(sfreq * j);\n\n b_frq[i] = sfreq * j;\n\n for (j2 = j; freq2bark(sfreq * j2) - bark1 < DELBARK\n && j2 <= blksize / 2; j2++)\n ;\n\n numlines[i] = j2 - j;\n ni = i + 1;\n\n while (j < j2) {\n assert$3(j < Encoder_1.HBLKSIZE);\n partition[j++] = i;\n }\n if (j > blksize / 2) {\n j = blksize / 2;\n ++i;\n break;\n }\n }\n assert$3(i < Encoder_1.CBANDS);\n b_frq[i] = sfreq * j;\n\n for (var sfb = 0; sfb < sbmax; sfb++) {\n var i1, i2, start, end;\n var arg;\n start = scalepos[sfb];\n end = scalepos[sfb + 1];\n\n i1 = 0 | Math.floor(.5 + deltafreq * (start - .5));\n if (i1 < 0)\n i1 = 0;\n i2 = 0 | Math.floor(.5 + deltafreq * (end - .5));\n\n if (i2 > blksize / 2)\n i2 = blksize / 2;\n\n bm[sfb] = (partition[i1] + partition[i2]) / 2;\n bo[sfb] = partition[i2];\n var f_tmp = sample_freq_frac * end;\n /*\n * calculate how much of this band belongs to current scalefactor\n * band\n */\n bo_w[sfb] = (f_tmp - b_frq[bo[sfb]])\n / (b_frq[bo[sfb] + 1] - b_frq[bo[sfb]]);\n if (bo_w[sfb] < 0) {\n bo_w[sfb] = 0;\n } else {\n if (bo_w[sfb] > 1) {\n bo_w[sfb] = 1;\n }\n }\n /* setup stereo demasking thresholds */\n /* formula reverse enginerred from plot in paper */\n arg = freq2bark(sfreq * scalepos[sfb] * deltafreq);\n arg = ( Math.min(arg, 15.5) / 15.5);\n\n mld[sfb] = Math.pow(10.0,\n 1.25 * (1 - Math.cos(Math.PI * arg)) - 2.5);\n }\n\n /* compute bark values of each critical band */\n j = 0;\n for (var k = 0; k < ni; k++) {\n var w = numlines[k];\n var bark1, bark2;\n\n bark1 = freq2bark(sfreq * (j));\n bark2 = freq2bark(sfreq * (j + w - 1));\n bval[k] = .5 * (bark1 + bark2);\n\n bark1 = freq2bark(sfreq * (j - .5));\n bark2 = freq2bark(sfreq * (j + w - .5));\n bval_width[k] = bark2 - bark1;\n j += w;\n }\n\n return ni;\n }\n\n function init_s3_values(s3ind, npart, bval, bval_width, norm, use_old_s3) {\n var s3 = new_float_n$3([Encoder_1.CBANDS, Encoder_1.CBANDS]);\n /*\n * The s3 array is not linear in the bark scale.\n *\n * bval[x] should be used to get the bark value.\n */\n var j;\n var numberOfNoneZero = 0;\n\n /**\n *
\n         * s[i][j], the value of the spreading function,\n         * centered at band j (masker), for band i (maskee)\n         *\n         * i.e.: sum over j to spread into signal barkval=i\n         * NOTE: i and j are used opposite as in the ISO docs\n         * 
\n */\n if (use_old_s3) {\n for (var i = 0; i < npart; i++) {\n for (j = 0; j < npart; j++) {\n var v = s3_func(bval[i] - bval[j]) * bval_width[j];\n s3[i][j] = v * norm[i];\n }\n }\n } else {\n for (j = 0; j < npart; j++) {\n var hf_slope = 15 + Math.min(21 / bval[j], 12);\n var s3_x_norm = norm_s3_func_x(hf_slope);\n for (var i = 0; i < npart; i++) {\n var v = s3_x_norm\n * s3_func_x(bval[i] - bval[j], hf_slope)\n * bval_width[j];\n s3[i][j] = v * norm[i];\n }\n }\n }\n for (var i = 0; i < npart; i++) {\n for (j = 0; j < npart; j++) {\n if (s3[i][j] > 0.0)\n break;\n }\n s3ind[i][0] = j;\n\n for (j = npart - 1; j > 0; j--) {\n if (s3[i][j] > 0.0)\n break;\n }\n s3ind[i][1] = j;\n numberOfNoneZero += (s3ind[i][1] - s3ind[i][0] + 1);\n }\n\n var p = new_float$3(numberOfNoneZero);\n var k = 0;\n for (var i = 0; i < npart; i++)\n for (j = s3ind[i][0]; j <= s3ind[i][1]; j++)\n p[k++] = s3[i][j];\n\n return p;\n }\n\n function stereo_demask(f) {\n /* setup stereo demasking thresholds */\n /* formula reverse enginerred from plot in paper */\n var arg = freq2bark(f);\n arg = (Math.min(arg, 15.5) / 15.5);\n\n return Math.pow(10.0,\n 1.25 * (1 - Math.cos(Math.PI * arg)) - 2.5);\n }\n\n /**\n * NOTE: the bitrate reduction from the inter-channel masking effect is low\n * compared to the chance of getting annyoing artefacts. L3psycho_anal_vbr\n * does not use this feature. (Robert 071216)\n */\n this.psymodel_init = function (gfp) {\n var gfc = gfp.internal_flags;\n var i;\n var useOldS3 = true;\n var bvl_a = 13, bvl_b = 24;\n var snr_l_a = 0, snr_l_b = 0;\n var snr_s_a = -8.25, snr_s_b = -4.5;\n var bval = new_float$3(Encoder_1.CBANDS);\n var bval_width = new_float$3(Encoder_1.CBANDS);\n var norm = new_float$3(Encoder_1.CBANDS);\n var sfreq = gfp.out_samplerate;\n\n switch (gfp.experimentalZ) {\n default:\n case 0:\n useOldS3 = true;\n break;\n case 1:\n useOldS3 = (gfp.VBR == VbrMode$3.vbr_mtrh || gfp.VBR == VbrMode$3.vbr_mt) ? false\n : true;\n break;\n case 2:\n useOldS3 = false;\n break;\n case 3:\n bvl_a = 8;\n snr_l_a = -1.75;\n snr_l_b = -0.0125;\n snr_s_a = -8.25;\n snr_s_b = -2.25;\n break;\n }\n gfc.ms_ener_ratio_old = .25;\n gfc.blocktype_old[0] = gfc.blocktype_old[1] = Encoder_1.NORM_TYPE;\n // the vbr header is long blocks\n\n for (i = 0; i < 4; ++i) {\n for (var j = 0; j < Encoder_1.CBANDS; ++j) {\n gfc.nb_1[i][j] = 1e20;\n gfc.nb_2[i][j] = 1e20;\n gfc.nb_s1[i][j] = gfc.nb_s2[i][j] = 1.0;\n }\n for (var sb = 0; sb < Encoder_1.SBMAX_l; sb++) {\n gfc.en[i].l[sb] = 1e20;\n gfc.thm[i].l[sb] = 1e20;\n }\n for (var j = 0; j < 3; ++j) {\n for (var sb = 0; sb < Encoder_1.SBMAX_s; sb++) {\n gfc.en[i].s[sb][j] = 1e20;\n gfc.thm[i].s[sb][j] = 1e20;\n }\n gfc.nsPsy.lastAttacks[i] = 0;\n }\n for (var j = 0; j < 9; j++)\n gfc.nsPsy.last_en_subshort[i][j] = 10.;\n }\n\n /* init. for loudness approx. -jd 2001 mar 27 */\n gfc.loudness_sq_save[0] = gfc.loudness_sq_save[1] = 0.0;\n\n /*************************************************************************\n * now compute the psychoacoustic model specific constants\n ************************************************************************/\n /* compute numlines, bo, bm, bval, bval_width, mld */\n\n gfc.npart_l = init_numline(gfc.numlines_l, gfc.bo_l, gfc.bm_l, bval,\n bval_width, gfc.mld_l, gfc.PSY.bo_l_weight, sfreq,\n Encoder_1.BLKSIZE, gfc.scalefac_band.l, Encoder_1.BLKSIZE\n / (2.0 * 576), Encoder_1.SBMAX_l);\n assert$3(gfc.npart_l < Encoder_1.CBANDS);\n /* compute the spreading function */\n for (i = 0; i < gfc.npart_l; i++) {\n var snr = snr_l_a;\n if (bval[i] >= bvl_a) {\n snr = snr_l_b * (bval[i] - bvl_a) / (bvl_b - bvl_a) + snr_l_a\n * (bvl_b - bval[i]) / (bvl_b - bvl_a);\n }\n norm[i] = Math.pow(10.0, snr / 10.0);\n if (gfc.numlines_l[i] > 0) {\n gfc.rnumlines_l[i] = 1.0 / gfc.numlines_l[i];\n } else {\n gfc.rnumlines_l[i] = 0;\n }\n }\n gfc.s3_ll = init_s3_values(gfc.s3ind, gfc.npart_l, bval, bval_width,\n norm, useOldS3);\n\n /* compute long block specific values, ATH and MINVAL */\n var j = 0;\n for (i = 0; i < gfc.npart_l; i++) {\n var x;\n\n /* ATH */\n x = Float$3.MAX_VALUE;\n for (var k = 0; k < gfc.numlines_l[i]; k++, j++) {\n var freq = sfreq * j / (1000.0 * Encoder_1.BLKSIZE);\n var level;\n /*\n * ATH below 100 Hz constant, not further climbing\n */\n level = this.ATHformula(freq * 1000, gfp) - 20;\n // scale to FFT units; returned value is in dB\n level = Math.pow(10., 0.1 * level);\n // convert from dB . energy\n level *= gfc.numlines_l[i];\n if (x > level)\n x = level;\n }\n gfc.ATH.cb_l[i] = x;\n\n /*\n * MINVAL. For low freq, the strength of the masking is limited by\n * minval this is an ISO MPEG1 thing, dont know if it is really\n * needed\n */\n /*\n * FIXME: it does work to reduce low-freq problems in S53-Wind-Sax\n * and lead-voice samples, but introduces some 3 kbps bit bloat too.\n * TODO: Further refinement of the shape of this hack.\n */\n x = -20 + bval[i] * 20 / 10;\n if (x > 6) {\n x = 100;\n }\n if (x < -15) {\n x = -15;\n }\n x -= 8.;\n gfc.minval_l[i] = (Math.pow(10.0, x / 10.) * gfc.numlines_l[i]);\n }\n\n /************************************************************************\n * do the same things for short blocks\n ************************************************************************/\n gfc.npart_s = init_numline(gfc.numlines_s, gfc.bo_s, gfc.bm_s, bval,\n bval_width, gfc.mld_s, gfc.PSY.bo_s_weight, sfreq,\n Encoder_1.BLKSIZE_s, gfc.scalefac_band.s, Encoder_1.BLKSIZE_s\n / (2.0 * 192), Encoder_1.SBMAX_s);\n assert$3(gfc.npart_s < Encoder_1.CBANDS);\n\n /* SNR formula. short block is normalized by SNR. is it still right ? */\n j = 0;\n for (i = 0; i < gfc.npart_s; i++) {\n var x;\n var snr = snr_s_a;\n if (bval[i] >= bvl_a) {\n snr = snr_s_b * (bval[i] - bvl_a) / (bvl_b - bvl_a) + snr_s_a\n * (bvl_b - bval[i]) / (bvl_b - bvl_a);\n }\n norm[i] = Math.pow(10.0, snr / 10.0);\n\n /* ATH */\n x = Float$3.MAX_VALUE;\n for (var k = 0; k < gfc.numlines_s[i]; k++, j++) {\n var freq = sfreq * j / (1000.0 * Encoder_1.BLKSIZE_s);\n var level;\n /* freq = Min(.1,freq); */\n /*\n * ATH below 100 Hz constant, not\n * further climbing\n */\n level = this.ATHformula(freq * 1000, gfp) - 20;\n // scale to FFT units; returned value is in dB\n level = Math.pow(10., 0.1 * level);\n // convert from dB . energy\n level *= gfc.numlines_s[i];\n if (x > level)\n x = level;\n }\n gfc.ATH.cb_s[i] = x;\n\n /*\n * MINVAL. For low freq, the strength of the masking is limited by\n * minval this is an ISO MPEG1 thing, dont know if it is really\n * needed\n */\n x = (-7.0 + bval[i] * 7.0 / 12.0);\n if (bval[i] > 12) {\n x *= 1 + Math.log(1 + x) * 3.1;\n }\n if (bval[i] < 12) {\n x *= 1 + Math.log(1 - x) * 2.3;\n }\n if (x < -15) {\n x = -15;\n }\n x -= 8;\n gfc.minval_s[i] = Math.pow(10.0, x / 10)\n * gfc.numlines_s[i];\n }\n\n gfc.s3_ss = init_s3_values(gfc.s3ind_s, gfc.npart_s, bval, bval_width,\n norm, useOldS3);\n\n init_mask_add_max_values();\n fft.init_fft(gfc);\n\n /* setup temporal masking */\n gfc.decay = Math.exp(-1.0 * LOG10\n / (temporalmask_sustain_sec * sfreq / 192.0));\n\n {\n var msfix;\n msfix = NS_MSFIX;\n if ((gfp.exp_nspsytune & 2) != 0)\n msfix = 1.0;\n if (Math.abs(gfp.msfix) > 0.0)\n msfix = gfp.msfix;\n gfp.msfix = msfix;\n\n /*\n * spread only from npart_l bands. Normally, we use the spreading\n * function to convolve from npart_l down to npart_l bands\n */\n for (var b = 0; b < gfc.npart_l; b++)\n if (gfc.s3ind[b][1] > gfc.npart_l - 1)\n gfc.s3ind[b][1] = gfc.npart_l - 1;\n }\n\n /*\n * prepare for ATH auto adjustment: we want to decrease the ATH by 12 dB\n * per second\n */\n var frame_duration = (576. * gfc.mode_gr / sfreq);\n gfc.ATH.decay = Math.pow(10., -12. / 10. * frame_duration);\n gfc.ATH.adjust = 0.01;\n /* minimum, for leading low loudness */\n gfc.ATH.adjustLimit = 1.0;\n /* on lead, allow adjust up to maximum */\n\n assert$3(gfc.bo_l[Encoder_1.SBMAX_l - 1] <= gfc.npart_l);\n assert$3(gfc.bo_s[Encoder_1.SBMAX_s - 1] <= gfc.npart_s);\n\n if (gfp.ATHtype != -1) {\n /* compute equal loudness weights (eql_w) */\n var freq;\n var freq_inc = gfp.out_samplerate\n / (Encoder_1.BLKSIZE);\n var eql_balance = 0.0;\n freq = 0.0;\n for (i = 0; i < Encoder_1.BLKSIZE / 2; ++i) {\n /* convert ATH dB to relative power (not dB) */\n /* to determine eql_w */\n freq += freq_inc;\n gfc.ATH.eql_w[i] = 1. / Math.pow(10, this.ATHformula(freq, gfp) / 10);\n eql_balance += gfc.ATH.eql_w[i];\n }\n eql_balance = 1.0 / eql_balance;\n for (i = Encoder_1.BLKSIZE / 2; --i >= 0;) { /* scale weights */\n gfc.ATH.eql_w[i] *= eql_balance;\n }\n }\n {\n for (var b = j = 0; b < gfc.npart_s; ++b) {\n for (i = 0; i < gfc.numlines_s[b]; ++i) {\n ++j;\n }\n }\n assert$3(j == 129);\n for (var b = j = 0; b < gfc.npart_l; ++b) {\n for (i = 0; i < gfc.numlines_l[b]; ++i) {\n ++j;\n }\n }\n assert$3(j == 513);\n }\n j = 0;\n for (i = 0; i < gfc.npart_l; i++) {\n var freq = sfreq * (j + gfc.numlines_l[i] / 2) / (1.0 * Encoder_1.BLKSIZE);\n gfc.mld_cb_l[i] = stereo_demask(freq);\n j += gfc.numlines_l[i];\n }\n for (; i < Encoder_1.CBANDS; ++i) {\n gfc.mld_cb_l[i] = 1;\n }\n j = 0;\n for (i = 0; i < gfc.npart_s; i++) {\n var freq = sfreq * (j + gfc.numlines_s[i] / 2) / (1.0 * Encoder_1.BLKSIZE_s);\n gfc.mld_cb_s[i] = stereo_demask(freq);\n j += gfc.numlines_s[i];\n }\n for (; i < Encoder_1.CBANDS; ++i) {\n gfc.mld_cb_s[i] = 1;\n }\n return 0;\n };\n\n /**\n * Those ATH formulas are returning their minimum value for input = -1\n */\n function ATHformula_GB(f, value) {\n /**\n *
\n         *  from Painter & Spanias\n         *           modified by Gabriel Bouvigne to better fit the reality\n         *           ath =    3.640 * pow(f,-0.8)\n         *           - 6.800 * exp(-0.6*pow(f-3.4,2.0))\n         *           + 6.000 * exp(-0.15*pow(f-8.7,2.0))\n         *           + 0.6* 0.001 * pow(f,4.0);\n         *\n         *\n         *           In the past LAME was using the Painter &Spanias formula.\n         *           But we had some recurrent problems with HF content.\n         *           We measured real ATH values, and found the older formula\n         *           to be inaccurate in the higher part. So we made this new\n         *           formula and this solved most of HF problematic test cases.\n         *           The tradeoff is that in VBR mode it increases a lot the\n         *           bitrate.\n         * 
\n */\n\n /*\n * This curve can be adjusted according to the VBR scale: it adjusts\n * from something close to Painter & Spanias on V9 up to Bouvigne's\n * formula for V0. This way the VBR bitrate is more balanced according\n * to the -V value.\n */\n\n // the following Hack allows to ask for the lowest value\n if (f < -.3)\n f = 3410;\n\n // convert to khz\n f /= 1000;\n f = Math.max(0.1, f);\n var ath = 3.640 * Math.pow(f, -0.8) - 6.800\n * Math.exp(-0.6 * Math.pow(f - 3.4, 2.0)) + 6.000\n * Math.exp(-0.15 * Math.pow(f - 8.7, 2.0))\n + (0.6 + 0.04 * value) * 0.001 * Math.pow(f, 4.0);\n return ath;\n }\n\n this.ATHformula = function (f, gfp) {\n var ath;\n switch (gfp.ATHtype) {\n case 0:\n ath = ATHformula_GB(f, 9);\n break;\n case 1:\n // over sensitive, should probably be removed\n ath = ATHformula_GB(f, -1);\n break;\n case 2:\n ath = ATHformula_GB(f, 0);\n break;\n case 3:\n // modification of GB formula by Roel\n ath = ATHformula_GB(f, 1) + 6;\n break;\n case 4:\n ath = ATHformula_GB(f, gfp.ATHcurve);\n break;\n default:\n ath = ATHformula_GB(f, 0);\n break;\n }\n return ath;\n };\n\n}\n\nvar PsyModel_1 = PsyModel;\n\n//package mp3;\n\n/* MPEG modes */\nfunction MPEGMode$1(ordinal) {\n var _ordinal = ordinal;\n this.ordinal = function () {\n return _ordinal;\n };\n}\n\nMPEGMode$1.STEREO = new MPEGMode$1(0);\nMPEGMode$1.JOINT_STEREO = new MPEGMode$1(1);\nMPEGMode$1.DUAL_CHANNEL = new MPEGMode$1(2);\nMPEGMode$1.MONO = new MPEGMode$1(3);\nMPEGMode$1.NOT_SET = new MPEGMode$1(4);\n\nvar MPEGMode_1 = MPEGMode$1;\n\nfunction LameGlobalFlags() {\n\n this.class_id = 0;\n\n /* input description */\n\n /**\n * number of samples. default=-1\n */\n this.num_samples = 0;\n /**\n * input number of channels. default=2\n */\n this.num_channels = 0;\n /**\n * input_samp_rate in Hz. default=44.1 kHz\n */\n this.in_samplerate = 0;\n /**\n * output_samp_rate. default: LAME picks best value at least not used for\n * MP3 decoding: Remember 44.1 kHz MP3s and AC97\n */\n this.out_samplerate = 0;\n /**\n * scale input by this amount before encoding at least not used for MP3\n * decoding\n */\n this.scale = 0.;\n /**\n * scale input of channel 0 (left) by this amount before encoding\n */\n this.scale_left = 0.;\n /**\n * scale input of channel 1 (right) by this amount before encoding\n */\n this.scale_right = 0.;\n\n /* general control params */\n /**\n * collect data for a MP3 frame analyzer?\n */\n this.analysis = false;\n /**\n * add Xing VBR tag?\n */\n this.bWriteVbrTag = false;\n\n /**\n * use lame/mpglib to convert mp3 to wav\n */\n this.decode_only = false;\n /**\n * quality setting 0=best, 9=worst default=5\n */\n this.quality = 0;\n /**\n * see enum default = LAME picks best value\n */\n this.mode = MPEGMode_1.STEREO;\n /**\n * force M/S mode. requires mode=1\n */\n this.force_ms = false;\n /**\n * use free format? default=0\n */\n this.free_format = false;\n /**\n * find the RG value? default=0\n */\n this.findReplayGain = false;\n /**\n * decode on the fly? default=0\n */\n this.decode_on_the_fly = false;\n /**\n * 1 (default) writes ID3 tags, 0 not\n */\n this.write_id3tag_automatic = false;\n\n /*\n * set either brate>0 or compression_ratio>0, LAME will compute the value of\n * the variable not set. Default is compression_ratio = 11.025\n */\n /**\n * bitrate\n */\n this.brate = 0;\n /**\n * sizeof(wav file)/sizeof(mp3 file)\n */\n this.compression_ratio = 0.;\n\n /* frame params */\n /**\n * mark as copyright. default=0\n */\n this.copyright = 0;\n /**\n * mark as original. default=1\n */\n this.original = 0;\n /**\n * the MP3 'private extension' bit. Meaningless\n */\n this.extension = 0;\n /**\n * Input PCM is emphased PCM (for instance from one of the rarely emphased\n * CDs), it is STRONGLY not recommended to use this, because psycho does not\n * take it into account, and last but not least many decoders don't care\n * about these bits\n */\n this.emphasis = 0;\n /**\n * use 2 bytes per frame for a CRC checksum. default=0\n */\n this.error_protection = 0;\n /**\n * enforce ISO spec as much as possible\n */\n this.strict_ISO = false;\n\n /**\n * use bit reservoir?\n */\n this.disable_reservoir = false;\n\n /* quantization/noise shaping */\n this.quant_comp = 0;\n this.quant_comp_short = 0;\n this.experimentalY = false;\n this.experimentalZ = 0;\n this.exp_nspsytune = 0;\n\n this.preset = 0;\n\n /* VBR control */\n this.VBR = null;\n /**\n * Range [0,...,1[\n */\n this.VBR_q_frac = 0.;\n /**\n * Range [0,...,9]\n */\n this.VBR_q = 0;\n this.VBR_mean_bitrate_kbps = 0;\n this.VBR_min_bitrate_kbps = 0;\n this.VBR_max_bitrate_kbps = 0;\n /**\n * strictly enforce VBR_min_bitrate normaly, it will be violated for analog\n * silence\n */\n this.VBR_hard_min = 0;\n\n /* resampling and filtering */\n\n /**\n * freq in Hz. 0=lame choses. -1=no filter\n */\n this.lowpassfreq = 0;\n /**\n * freq in Hz. 0=lame choses. -1=no filter\n */\n this.highpassfreq = 0;\n /**\n * freq width of filter, in Hz (default=15%)\n */\n this.lowpasswidth = 0;\n /**\n * freq width of filter, in Hz (default=15%)\n */\n this.highpasswidth = 0;\n\n /*\n * psycho acoustics and other arguments which you should not change unless\n * you know what you are doing\n */\n\n this.maskingadjust = 0.;\n this.maskingadjust_short = 0.;\n /**\n * only use ATH\n */\n this.ATHonly = false;\n /**\n * only use ATH for short blocks\n */\n this.ATHshort = false;\n /**\n * disable ATH\n */\n this.noATH = false;\n /**\n * select ATH formula\n */\n this.ATHtype = 0;\n /**\n * change ATH formula 4 shape\n */\n this.ATHcurve = 0.;\n /**\n * lower ATH by this many db\n */\n this.ATHlower = 0.;\n /**\n * select ATH auto-adjust scheme\n */\n this.athaa_type = 0;\n /**\n * select ATH auto-adjust loudness calc\n */\n this.athaa_loudapprox = 0;\n /**\n * dB, tune active region of auto-level\n */\n this.athaa_sensitivity = 0.;\n this.short_blocks = null;\n /**\n * use temporal masking effect\n */\n this.useTemporal = false;\n this.interChRatio = 0.;\n /**\n * Naoki's adjustment of Mid/Side maskings\n */\n this.msfix = 0.;\n\n /**\n * 0 off, 1 on\n */\n this.tune = false;\n /**\n * used to pass values for debugging and stuff\n */\n this.tune_value_a = 0.;\n\n /************************************************************************/\n /* internal variables, do not set... */\n /* provided because they may be of use to calling application */\n /************************************************************************/\n\n /**\n * 0=MPEG-2/2.5 1=MPEG-1\n */\n this.version = 0;\n this.encoder_delay = 0;\n /**\n * number of samples of padding appended to input\n */\n this.encoder_padding = 0;\n this.framesize = 0;\n /**\n * number of frames encoded\n */\n this.frameNum = 0;\n /**\n * is this struct owned by calling program or lame?\n */\n this.lame_allocated_gfp = 0;\n /**************************************************************************/\n /* more internal variables are stored in this structure: */\n /**************************************************************************/\n this.internal_flags = null;\n}\n\nvar LameGlobalFlags_1 = LameGlobalFlags;\n\nvar L3Side$1 = {};\n\n\n\t/**\n\t * max scalefactor band, max(SBMAX_l, SBMAX_s*3, (SBMAX_s-3)*3+8)\n\t */\nL3Side$1.SFBMAX = (Encoder_1.SBMAX_s * 3);\n\nvar L3Side_1 = L3Side$1;\n\nvar new_float$10 = common.new_float;\nvar new_int$10 = common.new_int;\nfunction GrInfo() {\n //float xr[] = new float[576];\n this.xr = new_float$10(576);\n //int l3_enc[] = new int[576];\n this.l3_enc = new_int$10(576);\n //int scalefac[] = new int[L3Side.SFBMAX];\n this.scalefac = new_int$10(L3Side_1.SFBMAX);\n this.xrpow_max = 0.;\n\n this.part2_3_length = 0;\n this.big_values = 0;\n this.count1 = 0;\n this.global_gain = 0;\n this.scalefac_compress = 0;\n this.block_type = 0;\n this.mixed_block_flag = 0;\n this.table_select = new_int$10(3);\n this.subblock_gain = new_int$10(3 + 1);\n this.region0_count = 0;\n this.region1_count = 0;\n this.preflag = 0;\n this.scalefac_scale = 0;\n this.count1table_select = 0;\n\n this.part2_length = 0;\n this.sfb_lmax = 0;\n this.sfb_smin = 0;\n this.psy_lmax = 0;\n this.sfbmax = 0;\n this.psymax = 0;\n this.sfbdivide = 0;\n this.width = new_int$10(L3Side_1.SFBMAX);\n this.window = new_int$10(L3Side_1.SFBMAX);\n this.count1bits = 0;\n /**\n * added for LSF\n */\n this.sfb_partition_table = null;\n this.slen = new_int$10(4);\n\n this.max_nonzero_coeff = 0;\n\n var self = this;\n function clone_int(array) {\n return new Int32Array(array);\n }\n function clone_float(array) {\n return new Float32Array(array);\n }\n this.assign = function (other) {\n self.xr = clone_float(other.xr); //.slice(0); //clone();\n self.l3_enc = clone_int(other.l3_enc); //.slice(0); //clone();\n self.scalefac = clone_int(other.scalefac);//.slice(0); //clone();\n self.xrpow_max = other.xrpow_max;\n\n self.part2_3_length = other.part2_3_length;\n self.big_values = other.big_values;\n self.count1 = other.count1;\n self.global_gain = other.global_gain;\n self.scalefac_compress = other.scalefac_compress;\n self.block_type = other.block_type;\n self.mixed_block_flag = other.mixed_block_flag;\n self.table_select = clone_int(other.table_select);//.slice(0); //clone();\n self.subblock_gain = clone_int(other.subblock_gain); //.slice(0); //.clone();\n self.region0_count = other.region0_count;\n self.region1_count = other.region1_count;\n self.preflag = other.preflag;\n self.scalefac_scale = other.scalefac_scale;\n self.count1table_select = other.count1table_select;\n\n self.part2_length = other.part2_length;\n self.sfb_lmax = other.sfb_lmax;\n self.sfb_smin = other.sfb_smin;\n self.psy_lmax = other.psy_lmax;\n self.sfbmax = other.sfbmax;\n self.psymax = other.psymax;\n self.sfbdivide = other.sfbdivide;\n self.width = clone_int(other.width); //.slice(0); //.clone();\n self.window = clone_int(other.window); //.slice(0); //.clone();\n self.count1bits = other.count1bits;\n\n self.sfb_partition_table = other.sfb_partition_table.slice(0); //.clone();\n self.slen = clone_int(other.slen); //.slice(0); //.clone();\n self.max_nonzero_coeff = other.max_nonzero_coeff;\n };\n}\n\nvar GrInfo_1 = GrInfo;\n\nvar new_int$9 = common.new_int;\nfunction IIISideInfo() {\n this.tt = [[null, null], [null, null]];\n this.main_data_begin = 0;\n this.private_bits = 0;\n this.resvDrain_pre = 0;\n this.resvDrain_post = 0;\n this.scfsi = [new_int$9(4), new_int$9(4)];\n\n for (var gr = 0; gr < 2; gr++) {\n for (var ch = 0; ch < 2; ch++) {\n this.tt[gr][ch] = new GrInfo_1();\n }\n }\n}\n\nvar IIISideInfo_1 = IIISideInfo;\n\n//package mp3;\n\n/**\n * Layer III side information.\n *\n * @author Ken\n *\n */\n\n\nvar System$11 = common.System;\nvar new_int$11 = common.new_int;\nfunction ScaleFac(arrL, arrS, arr21, arr12) {\n\n this.l = new_int$11(1 + Encoder_1.SBMAX_l);\n this.s = new_int$11(1 + Encoder_1.SBMAX_s);\n this.psfb21 = new_int$11(1 + Encoder_1.PSFB21);\n this.psfb12 = new_int$11(1 + Encoder_1.PSFB12);\n var l = this.l;\n var s = this.s;\n\n if (arguments.length == 4) {\n //public ScaleFac(final int[] arrL, final int[] arrS, final int[] arr21,\n // final int[] arr12) {\n this.arrL = arguments[0];\n this.arrS = arguments[1];\n this.arr21 = arguments[2];\n this.arr12 = arguments[3];\n\n System$11.arraycopy(this.arrL, 0, l, 0, Math.min(this.arrL.length, this.l.length));\n System$11.arraycopy(this.arrS, 0, s, 0, Math.min(this.arrS.length, this.s.length));\n System$11.arraycopy(this.arr21, 0, this.psfb21, 0, Math.min(this.arr21.length, this.psfb21.length));\n System$11.arraycopy(this.arr12, 0, this.psfb12, 0, Math.min(this.arr12.length, this.psfb12.length));\n }\n}\n\nvar ScaleFac_1 = ScaleFac;\n\nvar new_float$12 = common.new_float;\nvar new_float_n$12 = common.new_float_n;\nvar new_int$12 = common.new_int;\n//package mp3;\n\n/**\n * Variables used for --nspsytune\n *\n * @author Ken\n *\n */\nfunction NsPsy() {\n this.last_en_subshort = new_float_n$12([4, 9]);\n this.lastAttacks = new_int$12(4);\n this.pefirbuf = new_float$12(19);\n this.longfact = new_float$12(Encoder_1.SBMAX_l);\n this.shortfact = new_float$12(Encoder_1.SBMAX_s);\n\n /**\n * short block tuning\n */\n this.attackthre = 0.;\n this.attackthre_s = 0.;\n}\n\nvar NsPsy_1 = NsPsy;\n\n//package mp3;\n\nfunction VBRSeekInfo() {\n /**\n * What we have seen so far.\n */\n this.sum = 0;\n /**\n * How many frames we have seen in this chunk.\n */\n this.seen = 0;\n /**\n * How many frames we want to collect into one chunk.\n */\n this.want = 0;\n /**\n * Actual position in our bag.\n */\n this.pos = 0;\n /**\n * Size of our bag.\n */\n this.size = 0;\n /**\n * Pointer to our bag.\n */\n this.bag = null;\n this.nVbrNumFrames = 0;\n this.nBytesWritten = 0;\n /* VBR tag data */\n this.TotalFrameSize = 0;\n}\n\nvar VBRSeekInfo_1 = VBRSeekInfo;\n\nvar new_byte$8 = common.new_byte;\nvar new_double$8 = common.new_double;\nvar new_float$8 = common.new_float;\nvar new_float_n$8 = common.new_float_n;\nvar new_int$8 = common.new_int;\nvar new_int_n$8 = common.new_int_n;\nLameInternalFlags$1.MFSIZE = (3 * 1152 + Encoder_1.ENCDELAY - Encoder_1.MDCTDELAY);\nLameInternalFlags$1.MAX_HEADER_BUF = 256;\nLameInternalFlags$1.MAX_BITS_PER_CHANNEL = 4095;\nLameInternalFlags$1.MAX_BITS_PER_GRANULE = 7680;\nLameInternalFlags$1.BPC = 320;\n\nfunction LameInternalFlags$1() {\n var MAX_HEADER_LEN = 40;\n\n\n /********************************************************************\n * internal variables NOT set by calling program, and should not be *\n * modified by the calling program *\n ********************************************************************/\n\n /**\n * Some remarks to the Class_ID field: The Class ID is an Identifier for a\n * pointer to this struct. It is very unlikely that a pointer to\n * lame_global_flags has the same 32 bits in it's structure (large and other\n * special properties, for instance prime).\n *\n * To test that the structure is right and initialized, use: if ( gfc .\n * Class_ID == LAME_ID ) ... Other remark: If you set a flag to 0 for uninit\n * data and 1 for init data, the right test should be \"if (flag == 1)\" and\n * NOT \"if (flag)\". Unintended modification of this element will be\n * otherwise misinterpreted as an init.\n */\n this.Class_ID = 0;\n\n this.lame_encode_frame_init = 0;\n this.iteration_init_init = 0;\n this.fill_buffer_resample_init = 0;\n\n //public float mfbuf[][] = new float[2][MFSIZE];\n this.mfbuf = new_float_n$8([2, LameInternalFlags$1.MFSIZE]);\n\n /**\n * granules per frame\n */\n this.mode_gr = 0;\n /**\n * number of channels in the input data stream (PCM or decoded PCM)\n */\n this.channels_in = 0;\n /**\n * number of channels in the output data stream (not used for decoding)\n */\n this.channels_out = 0;\n /**\n * input_samp_rate/output_samp_rate\n */\n //public double resample_ratio;\n this.resample_ratio = 0.;\n\n this.mf_samples_to_encode = 0;\n this.mf_size = 0;\n /**\n * min bitrate index\n */\n this.VBR_min_bitrate = 0;\n /**\n * max bitrate index\n */\n this.VBR_max_bitrate = 0;\n this.bitrate_index = 0;\n this.samplerate_index = 0;\n this.mode_ext = 0;\n\n /* lowpass and highpass filter control */\n /**\n * normalized frequency bounds of passband\n */\n this.lowpass1 = 0.;\n this.lowpass2 = 0.;\n /**\n * normalized frequency bounds of passband\n */\n this.highpass1 = 0.;\n this.highpass2 = 0.;\n\n /**\n * 0 = none 1 = ISO AAC model 2 = allow scalefac_select=1\n */\n this.noise_shaping = 0;\n\n /**\n * 0 = ISO model: amplify all distorted bands
\n * 1 = amplify within 50% of max (on db scale)
\n * 2 = amplify only most distorted band
\n * 3 = method 1 and refine with method 2
\n */\n this.noise_shaping_amp = 0;\n /**\n * 0 = no substep
\n * 1 = use substep shaping at last step(VBR only)
\n * (not implemented yet)
\n * 2 = use substep inside loop
\n * 3 = use substep inside loop and last step
\n */\n this.substep_shaping = 0;\n\n /**\n * 1 = gpsycho. 0 = none\n */\n this.psymodel = 0;\n /**\n * 0 = stop at over=0, all scalefacs amplified or
\n * a scalefac has reached max value
\n * 1 = stop when all scalefacs amplified or a scalefac has reached max value
\n * 2 = stop when all scalefacs amplified\n */\n this.noise_shaping_stop = 0;\n\n /**\n * 0 = no, 1 = yes\n */\n this.subblock_gain = 0;\n /**\n * 0 = no. 1=outside loop 2=inside loop(slow)\n */\n this.use_best_huffman = 0;\n\n /**\n * 0 = stop early after 0 distortion found. 1 = full search\n */\n this.full_outer_loop = 0;\n\n //public IIISideInfo l3_side = new IIISideInfo();\n this.l3_side = new IIISideInfo_1();\n this.ms_ratio = new_float$8(2);\n\n /* used for padding */\n /**\n * padding for the current frame?\n */\n this.padding = 0;\n this.frac_SpF = 0;\n this.slot_lag = 0;\n\n /**\n * optional ID3 tags\n */\n //public ID3TagSpec tag_spec;\n this.tag_spec = null;\n this.nMusicCRC = 0;\n\n /* variables used by Quantize */\n //public int OldValue[] = new int[2];\n this.OldValue = new_int$8(2);\n //public int CurrentStep[] = new int[2];\n this.CurrentStep = new_int$8(2);\n\n this.masking_lower = 0.;\n //public int bv_scf[] = new int[576];\n this.bv_scf = new_int$8(576);\n //public int pseudohalf[] = new int[L3Side.SFBMAX];\n this.pseudohalf = new_int$8(L3Side_1.SFBMAX);\n\n /**\n * will be set in lame_init_params\n */\n this.sfb21_extra = false;\n\n /* BPC = maximum number of filter convolution windows to precompute */\n //public float[][] inbuf_old = new float[2][];\n this.inbuf_old = new Array(2);\n //public float[][] blackfilt = new float[2 * BPC + 1][];\n this.blackfilt = new Array(2 * LameInternalFlags$1.BPC + 1);\n //public double itime[] = new double[2];\n this.itime = new_double$8(2);\n this.sideinfo_len = 0;\n\n /* variables for newmdct.c */\n //public float sb_sample[][][][] = new float[2][2][18][Encoder.SBLIMIT];\n this.sb_sample = new_float_n$8([2, 2, 18, Encoder_1.SBLIMIT]);\n this.amp_filter = new_float$8(32);\n\n /* variables for BitStream */\n\n /**\n *
\n     * mpeg1: buffer=511 bytes  smallest frame: 96-38(sideinfo)=58\n     * max number of frames in reservoir:  8\n     * mpeg2: buffer=255 bytes.  smallest frame: 24-23bytes=1\n     * with VBR, if you are encoding all silence, it is possible to\n     * have 8kbs/24khz frames with 1byte of data each, which means we need\n     * to buffer up to 255 headers!\n     * 
\n */\n /**\n * also, max_header_buf has to be a power of two\n */\n /**\n * max size of header is 38\n */\n\n function Header() {\n this.write_timing = 0;\n this.ptr = 0;\n //public byte buf[] = new byte[MAX_HEADER_LEN];\n this.buf = new_byte$8(MAX_HEADER_LEN);\n }\n\n this.header = new Array(LameInternalFlags$1.MAX_HEADER_BUF);\n\n this.h_ptr = 0;\n this.w_ptr = 0;\n this.ancillary_flag = 0;\n\n /* variables for Reservoir */\n /**\n * in bits\n */\n this.ResvSize = 0;\n /**\n * in bits\n */\n this.ResvMax = 0;\n\n //public ScaleFac scalefac_band = new ScaleFac();\n this.scalefac_band = new ScaleFac_1();\n\n /* daa from PsyModel */\n /* The static variables \"r\", \"phi_sav\", \"new\", \"old\" and \"oldest\" have */\n /* to be remembered for the unpredictability measure. For \"r\" and */\n /* \"phi_sav\", the first index from the left is the channel select and */\n /* the second index is the \"age\" of the data. */\n this.minval_l = new_float$8(Encoder_1.CBANDS);\n this.minval_s = new_float$8(Encoder_1.CBANDS);\n this.nb_1 = new_float_n$8([4, Encoder_1.CBANDS]);\n this.nb_2 = new_float_n$8([4, Encoder_1.CBANDS]);\n this.nb_s1 = new_float_n$8([4, Encoder_1.CBANDS]);\n this.nb_s2 = new_float_n$8([4, Encoder_1.CBANDS]);\n this.s3_ss = null;\n this.s3_ll = null;\n this.decay = 0.;\n\n //public III_psy_xmin[] thm = new III_psy_xmin[4];\n //public III_psy_xmin[] en = new III_psy_xmin[4];\n this.thm = new Array(4);\n this.en = new Array(4);\n\n /**\n * fft and energy calculation\n */\n this.tot_ener = new_float$8(4);\n\n /* loudness calculation (for adaptive threshold of hearing) */\n /**\n * loudness^2 approx. per granule and channel\n */\n this.loudness_sq = new_float_n$8([2, 2]);\n /**\n * account for granule delay of L3psycho_anal\n */\n this.loudness_sq_save = new_float$8(2);\n\n /**\n * Scale Factor Bands\n */\n this.mld_l = new_float$8(Encoder_1.SBMAX_l);\n this.mld_s = new_float$8(Encoder_1.SBMAX_s);\n this.bm_l = new_int$8(Encoder_1.SBMAX_l);\n this.bo_l = new_int$8(Encoder_1.SBMAX_l);\n this.bm_s = new_int$8(Encoder_1.SBMAX_s);\n this.bo_s = new_int$8(Encoder_1.SBMAX_s);\n this.npart_l = 0;\n this.npart_s = 0;\n\n this.s3ind = new_int_n$8([Encoder_1.CBANDS, 2]);\n this.s3ind_s = new_int_n$8([Encoder_1.CBANDS, 2]);\n\n this.numlines_s = new_int$8(Encoder_1.CBANDS);\n this.numlines_l = new_int$8(Encoder_1.CBANDS);\n this.rnumlines_l = new_float$8(Encoder_1.CBANDS);\n this.mld_cb_l = new_float$8(Encoder_1.CBANDS);\n this.mld_cb_s = new_float$8(Encoder_1.CBANDS);\n this.numlines_s_num1 = 0;\n this.numlines_l_num1 = 0;\n\n /* ratios */\n this.pe = new_float$8(4);\n this.ms_ratio_s_old = 0.;\n this.ms_ratio_l_old = 0.;\n this.ms_ener_ratio_old = 0.;\n\n /**\n * block type\n */\n this.blocktype_old = new_int$8(2);\n\n /**\n * variables used for --nspsytune\n */\n this.nsPsy = new NsPsy_1();\n\n /**\n * used for Xing VBR header\n */\n this.VBR_seek_table = new VBRSeekInfo_1();\n\n /**\n * all ATH related stuff\n */\n //public ATH ATH;\n this.ATH = null;\n\n this.PSY = null;\n\n this.nogap_total = 0;\n this.nogap_current = 0;\n\n /* ReplayGain */\n this.decode_on_the_fly = true;\n this.findReplayGain = true;\n this.findPeakSample = true;\n this.PeakSample = 0.;\n this.RadioGain = 0;\n this.AudiophileGain = 0;\n //public ReplayGain rgdata;\n this.rgdata = null;\n\n /**\n * gain change required for preventing clipping\n */\n this.noclipGainChange = 0;\n /**\n * user-specified scale factor required for preventing clipping\n */\n this.noclipScale = 0.;\n\n /* simple statistics */\n this.bitrate_stereoMode_Hist = new_int_n$8([16, 4 + 1]);\n /**\n * norm/start/short/stop/mixed(short)/sum\n */\n this.bitrate_blockType_Hist = new_int_n$8([16, 4 + 1 + 1]);\n\n //public PlottingData pinfo;\n //public MPGLib.mpstr_tag hip;\n this.pinfo = null;\n this.hip = null;\n\n this.in_buffer_nsamples = 0;\n //public float[] in_buffer_0;\n //public float[] in_buffer_1;\n this.in_buffer_0 = null;\n this.in_buffer_1 = null;\n\n //public IIterationLoop iteration_loop;\n this.iteration_loop = null;\n\n for (var i = 0; i < this.en.length; i++) {\n this.en[i] = new III_psy_xmin_1();\n }\n for (var i = 0; i < this.thm.length; i++) {\n this.thm[i] = new III_psy_xmin_1();\n }\n for (var i = 0; i < this.header.length; i++) {\n this.header[i] = new Header();\n }\n\n}\n\nvar LameInternalFlags_1 = LameInternalFlags$1;\n\nvar new_float$13 = common.new_float;\n/**\n * ATH related stuff, if something new ATH related has to be added, please plug\n * it here into the ATH.\n */\nfunction ATH() {\n /**\n * Method for the auto adjustment.\n */\n this.useAdjust = 0;\n /**\n * factor for tuning the (sample power) point below which adaptive threshold\n * of hearing adjustment occurs\n */\n this.aaSensitivityP = 0.;\n /**\n * Lowering based on peak volume, 1 = no lowering.\n */\n this.adjust = 0.;\n /**\n * Limit for dynamic ATH adjust.\n */\n this.adjustLimit = 0.;\n /**\n * Determined to lower x dB each second.\n */\n this.decay = 0.;\n /**\n * Lowest ATH value.\n */\n this.floor = 0.;\n /**\n * ATH for sfbs in long blocks.\n */\n this.l = new_float$13(Encoder_1.SBMAX_l);\n /**\n * ATH for sfbs in short blocks.\n */\n this.s = new_float$13(Encoder_1.SBMAX_s);\n /**\n * ATH for partitioned sfb21 in long blocks.\n */\n this.psfb21 = new_float$13(Encoder_1.PSFB21);\n /**\n * ATH for partitioned sfb12 in short blocks.\n */\n this.psfb12 = new_float$13(Encoder_1.PSFB12);\n /**\n * ATH for long block convolution bands.\n */\n this.cb_l = new_float$13(Encoder_1.CBANDS);\n /**\n * ATH for short block convolution bands.\n */\n this.cb_s = new_float$13(Encoder_1.CBANDS);\n /**\n * Equal loudness weights (based on ATH).\n */\n this.eql_w = new_float$13(Encoder_1.BLKSIZE / 2);\n}\n\nvar ATH_1 = ATH;\n\n/*\n * ReplayGainAnalysis - analyzes input samples and give the recommended dB change\n * Copyright (C) 2001 David Robinson and Glen Sawyer\n * Improvements and optimizations added by Frank Klemm, and by Marcel Muller \n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2.1 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this library; if not, write to the Free Software\n * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\n *\n * concept and filter values by David Robinson (David@Robinson.org)\n * -- blame him if you think the idea is flawed\n * original coding by Glen Sawyer (mp3gain@hotmail.com)\n * -- blame him if you think this runs too slowly, or the coding is otherwise flawed\n *\n * lots of code improvements by Frank Klemm ( http://www.uni-jena.de/~pfk/mpp/ )\n * -- credit him for all the _good_ programming ;)\n *\n *\n * For an explanation of the concepts and the basic algorithms involved, go to:\n * http://www.replaygain.org/\n */\n\n/*\n * Here's the deal. Call\n *\n * InitGainAnalysis ( long samplefreq );\n *\n * to initialize everything. Call\n *\n * AnalyzeSamples ( var Float_t* left_samples,\n * var Float_t* right_samples,\n * size_t num_samples,\n * int num_channels );\n *\n * as many times as you want, with as many or as few samples as you want.\n * If mono, pass the sample buffer in through left_samples, leave\n * right_samples NULL, and make sure num_channels = 1.\n *\n * GetTitleGain()\n *\n * will return the recommended dB level change for all samples analyzed\n * SINCE THE LAST TIME you called GetTitleGain() OR InitGainAnalysis().\n *\n * GetAlbumGain()\n *\n * will return the recommended dB level change for all samples analyzed\n * since InitGainAnalysis() was called and finalized with GetTitleGain().\n *\n * Pseudo-code to process an album:\n *\n * Float_t l_samples [4096];\n * Float_t r_samples [4096];\n * size_t num_samples;\n * unsigned int num_songs;\n * unsigned int i;\n *\n * InitGainAnalysis ( 44100 );\n * for ( i = 1; i <= num_songs; i++ ) {\n * while ( ( num_samples = getSongSamples ( song[i], left_samples, right_samples ) ) > 0 )\n * AnalyzeSamples ( left_samples, right_samples, num_samples, 2 );\n * fprintf (\"Recommended dB change for song %2d: %+6.2 dB\\n\", i, GetTitleGain() );\n * }\n * fprintf (\"Recommended dB change for whole album: %+6.2 dB\\n\", GetAlbumGain() );\n */\n\n/*\n * So here's the main source of potential code confusion:\n *\n * The filters applied to the incoming samples are IIR filters,\n * meaning they rely on up to number of previous samples\n * AND up to number of previous filtered samples.\n *\n * I set up the AnalyzeSamples routine to minimize memory usage and interface\n * complexity. The speed isn't compromised too much (I don't think), but the\n * internal complexity is higher than it should be for such a relatively\n * simple routine.\n *\n * Optimization/clarity suggestions are welcome.\n */\n\nvar System$15 = common.System;\nvar Arrays$15 = common.Arrays;\n/**\n * Table entries per dB\n */\nGainAnalysis$1.STEPS_per_dB = 100.;\n/**\n * Table entries for 0...MAX_dB (normal max. values are 70...80 dB)\n */\nGainAnalysis$1.MAX_dB = 120.;\nGainAnalysis$1.GAIN_NOT_ENOUGH_SAMPLES = -24601;\nGainAnalysis$1.GAIN_ANALYSIS_ERROR = 0;\nGainAnalysis$1.GAIN_ANALYSIS_OK = 1;\nGainAnalysis$1.INIT_GAIN_ANALYSIS_ERROR = 0;\nGainAnalysis$1.INIT_GAIN_ANALYSIS_OK = 1;\n\nGainAnalysis$1.YULE_ORDER = 10;\nGainAnalysis$1.MAX_ORDER = GainAnalysis$1.YULE_ORDER;\n\nGainAnalysis$1.MAX_SAMP_FREQ = 48000;\nGainAnalysis$1.RMS_WINDOW_TIME_NUMERATOR = 1;\nGainAnalysis$1.RMS_WINDOW_TIME_DENOMINATOR = 20;\nGainAnalysis$1.MAX_SAMPLES_PER_WINDOW = ((GainAnalysis$1.MAX_SAMP_FREQ * GainAnalysis$1.RMS_WINDOW_TIME_NUMERATOR) / GainAnalysis$1.RMS_WINDOW_TIME_DENOMINATOR + 1);\n\nfunction GainAnalysis$1() {\n /**\n * calibration value for 89dB\n */\n var PINK_REF = 64.82;\n\n var YULE_ORDER = GainAnalysis$1.YULE_ORDER;\n /**\n * percentile which is louder than the proposed level\n */\n var RMS_PERCENTILE = 0.95;\n /**\n * maximum allowed sample frequency [Hz]\n */\n var MAX_SAMP_FREQ = GainAnalysis$1.MAX_SAMP_FREQ;\n var RMS_WINDOW_TIME_NUMERATOR = GainAnalysis$1.RMS_WINDOW_TIME_NUMERATOR;\n /**\n * numerator / denominator = time slice size [s]\n */\n var RMS_WINDOW_TIME_DENOMINATOR = GainAnalysis$1.RMS_WINDOW_TIME_DENOMINATOR;\n /**\n * max. Samples per Time slice\n */\n var MAX_SAMPLES_PER_WINDOW = GainAnalysis$1.MAX_SAMPLES_PER_WINDOW;\n\n\n var ABYule = [\n [0.03857599435200, -3.84664617118067, -0.02160367184185,\n 7.81501653005538, -0.00123395316851, -11.34170355132042,\n -0.00009291677959, 13.05504219327545, -0.01655260341619,\n -12.28759895145294, 0.02161526843274, 9.48293806319790,\n -0.02074045215285, -5.87257861775999, 0.00594298065125,\n 2.75465861874613, 0.00306428023191, -0.86984376593551,\n 0.00012025322027, 0.13919314567432, 0.00288463683916],\n [0.05418656406430, -3.47845948550071, -0.02911007808948,\n 6.36317777566148, -0.00848709379851, -8.54751527471874,\n -0.00851165645469, 9.47693607801280, -0.00834990904936,\n -8.81498681370155, 0.02245293253339, 6.85401540936998,\n -0.02596338512915, -4.39470996079559, 0.01624864962975,\n 2.19611684890774, -0.00240879051584, -0.75104302451432,\n 0.00674613682247, 0.13149317958808, -0.00187763777362],\n [0.15457299681924, -2.37898834973084, -0.09331049056315,\n 2.84868151156327, -0.06247880153653, -2.64577170229825,\n 0.02163541888798, 2.23697657451713, -0.05588393329856,\n -1.67148153367602, 0.04781476674921, 1.00595954808547,\n 0.00222312597743, -0.45953458054983, 0.03174092540049,\n 0.16378164858596, -0.01390589421898, -0.05032077717131,\n 0.00651420667831, 0.02347897407020, -0.00881362733839],\n [0.30296907319327, -1.61273165137247, -0.22613988682123,\n 1.07977492259970, -0.08587323730772, -0.25656257754070,\n 0.03282930172664, -0.16276719120440, -0.00915702933434,\n -0.22638893773906, -0.02364141202522, 0.39120800788284,\n -0.00584456039913, -0.22138138954925, 0.06276101321749,\n 0.04500235387352, -0.00000828086748, 0.02005851806501,\n 0.00205861885564, 0.00302439095741, -0.02950134983287],\n [0.33642304856132, -1.49858979367799, -0.25572241425570,\n 0.87350271418188, -0.11828570177555, 0.12205022308084,\n 0.11921148675203, -0.80774944671438, -0.07834489609479,\n 0.47854794562326, -0.00469977914380, -0.12453458140019,\n -0.00589500224440, -0.04067510197014, 0.05724228140351,\n 0.08333755284107, 0.00832043980773, -0.04237348025746,\n -0.01635381384540, 0.02977207319925, -0.01760176568150],\n [0.44915256608450, -0.62820619233671, -0.14351757464547,\n 0.29661783706366, -0.22784394429749, -0.37256372942400,\n -0.01419140100551, 0.00213767857124, 0.04078262797139,\n -0.42029820170918, -0.12398163381748, 0.22199650564824,\n 0.04097565135648, 0.00613424350682, 0.10478503600251,\n 0.06747620744683, -0.01863887810927, 0.05784820375801,\n -0.03193428438915, 0.03222754072173, 0.00541907748707],\n [0.56619470757641, -1.04800335126349, -0.75464456939302,\n 0.29156311971249, 0.16242137742230, -0.26806001042947,\n 0.16744243493672, 0.00819999645858, -0.18901604199609,\n 0.45054734505008, 0.30931782841830, -0.33032403314006,\n -0.27562961986224, 0.06739368333110, 0.00647310677246,\n -0.04784254229033, 0.08647503780351, 0.01639907836189,\n -0.03788984554840, 0.01807364323573, -0.00588215443421],\n [0.58100494960553, -0.51035327095184, -0.53174909058578,\n -0.31863563325245, -0.14289799034253, -0.20256413484477,\n 0.17520704835522, 0.14728154134330, 0.02377945217615,\n 0.38952639978999, 0.15558449135573, -0.23313271880868,\n -0.25344790059353, -0.05246019024463, 0.01628462406333,\n -0.02505961724053, 0.06920467763959, 0.02442357316099,\n -0.03721611395801, 0.01818801111503, -0.00749618797172],\n [0.53648789255105, -0.25049871956020, -0.42163034350696,\n -0.43193942311114, -0.00275953611929, -0.03424681017675,\n 0.04267842219415, -0.04678328784242, -0.10214864179676,\n 0.26408300200955, 0.14590772289388, 0.15113130533216,\n -0.02459864859345, -0.17556493366449, -0.11202315195388,\n -0.18823009262115, -0.04060034127000, 0.05477720428674,\n 0.04788665548180, 0.04704409688120, -0.02217936801134]];\n\n var ABButter = [\n [0.98621192462708, -1.97223372919527, -1.97242384925416,\n 0.97261396931306, 0.98621192462708],\n [0.98500175787242, -1.96977855582618, -1.97000351574484,\n 0.97022847566350, 0.98500175787242],\n [0.97938932735214, -1.95835380975398, -1.95877865470428,\n 0.95920349965459, 0.97938932735214],\n [0.97531843204928, -1.95002759149878, -1.95063686409857,\n 0.95124613669835, 0.97531843204928],\n [0.97316523498161, -1.94561023566527, -1.94633046996323,\n 0.94705070426118, 0.97316523498161],\n [0.96454515552826, -1.92783286977036, -1.92909031105652,\n 0.93034775234268, 0.96454515552826],\n [0.96009142950541, -1.91858953033784, -1.92018285901082,\n 0.92177618768381, 0.96009142950541],\n [0.95856916599601, -1.91542108074780, -1.91713833199203,\n 0.91885558323625, 0.95856916599601],\n [0.94597685600279, -1.88903307939452, -1.89195371200558,\n 0.89487434461664, 0.94597685600279]];\n\n\n /**\n * When calling this procedure, make sure that ip[-order] and op[-order]\n * point to real data\n */\n //private void filterYule(final float[] input, int inputPos, float[] output,\n //int outputPos, int nSamples, final float[] kernel) {\n function filterYule(input, inputPos, output, outputPos, nSamples, kernel) {\n\n while ((nSamples--) != 0) {\n /* 1e-10 is a hack to avoid slowdown because of denormals */\n output[outputPos] = 1e-10 + input[inputPos + 0] * kernel[0]\n - output[outputPos - 1] * kernel[1] + input[inputPos - 1]\n * kernel[2] - output[outputPos - 2] * kernel[3]\n + input[inputPos - 2] * kernel[4] - output[outputPos - 3]\n * kernel[5] + input[inputPos - 3] * kernel[6]\n - output[outputPos - 4] * kernel[7] + input[inputPos - 4]\n * kernel[8] - output[outputPos - 5] * kernel[9]\n + input[inputPos - 5] * kernel[10] - output[outputPos - 6]\n * kernel[11] + input[inputPos - 6] * kernel[12]\n - output[outputPos - 7] * kernel[13] + input[inputPos - 7]\n * kernel[14] - output[outputPos - 8] * kernel[15]\n + input[inputPos - 8] * kernel[16] - output[outputPos - 9]\n * kernel[17] + input[inputPos - 9] * kernel[18]\n - output[outputPos - 10] * kernel[19]\n + input[inputPos - 10] * kernel[20];\n ++outputPos;\n ++inputPos;\n }\n }\n\n//private void filterButter(final float[] input, int inputPos,\n// float[] output, int outputPos, int nSamples, final float[] kernel) {\n function filterButter(input, inputPos, output, outputPos, nSamples, kernel) {\n\n while ((nSamples--) != 0) {\n output[outputPos] = input[inputPos + 0] * kernel[0]\n - output[outputPos - 1] * kernel[1] + input[inputPos - 1]\n * kernel[2] - output[outputPos - 2] * kernel[3]\n + input[inputPos - 2] * kernel[4];\n ++outputPos;\n ++inputPos;\n }\n }\n\n /**\n * @return INIT_GAIN_ANALYSIS_OK if successful, INIT_GAIN_ANALYSIS_ERROR if\n * not\n */\n function ResetSampleFrequency(rgData, samplefreq) {\n /* zero out initial values */\n for (var i = 0; i < MAX_ORDER; i++)\n rgData.linprebuf[i] = rgData.lstepbuf[i] = rgData.loutbuf[i] = rgData.rinprebuf[i] = rgData.rstepbuf[i] = rgData.routbuf[i] = 0.;\n\n switch (0 | (samplefreq)) {\n case 48000:\n rgData.reqindex = 0;\n break;\n case 44100:\n rgData.reqindex = 1;\n break;\n case 32000:\n rgData.reqindex = 2;\n break;\n case 24000:\n rgData.reqindex = 3;\n break;\n case 22050:\n rgData.reqindex = 4;\n break;\n case 16000:\n rgData.reqindex = 5;\n break;\n case 12000:\n rgData.reqindex = 6;\n break;\n case 11025:\n rgData.reqindex = 7;\n break;\n case 8000:\n rgData.reqindex = 8;\n break;\n default:\n return INIT_GAIN_ANALYSIS_ERROR;\n }\n\n rgData.sampleWindow = 0 | ((samplefreq * RMS_WINDOW_TIME_NUMERATOR\n + RMS_WINDOW_TIME_DENOMINATOR - 1) / RMS_WINDOW_TIME_DENOMINATOR);\n\n rgData.lsum = 0.;\n rgData.rsum = 0.;\n rgData.totsamp = 0;\n\n Arrays$15.ill(rgData.A, 0);\n\n return INIT_GAIN_ANALYSIS_OK;\n }\n\n this.InitGainAnalysis = function (rgData, samplefreq) {\n if (ResetSampleFrequency(rgData, samplefreq) != INIT_GAIN_ANALYSIS_OK) {\n return INIT_GAIN_ANALYSIS_ERROR;\n }\n\n rgData.linpre = MAX_ORDER;\n rgData.rinpre = MAX_ORDER;\n rgData.lstep = MAX_ORDER;\n rgData.rstep = MAX_ORDER;\n rgData.lout = MAX_ORDER;\n rgData.rout = MAX_ORDER;\n\n Arrays$15.fill(rgData.B, 0);\n\n return INIT_GAIN_ANALYSIS_OK;\n };\n\n /**\n * square\n */\n function fsqr(d) {\n return d * d;\n }\n\n this.AnalyzeSamples = function (rgData, left_samples, left_samplesPos, right_samples, right_samplesPos, num_samples,\n num_channels) {\n var curleft;\n var curleftBase;\n var curright;\n var currightBase;\n var batchsamples;\n var cursamples;\n var cursamplepos;\n\n if (num_samples == 0)\n return GAIN_ANALYSIS_OK;\n\n cursamplepos = 0;\n batchsamples = num_samples;\n\n switch (num_channels) {\n case 1:\n right_samples = left_samples;\n right_samplesPos = left_samplesPos;\n break;\n case 2:\n break;\n default:\n return GAIN_ANALYSIS_ERROR;\n }\n\n if (num_samples < MAX_ORDER) {\n System$15.arraycopy(left_samples, left_samplesPos, rgData.linprebuf,\n MAX_ORDER, num_samples);\n System$15.arraycopy(right_samples, right_samplesPos, rgData.rinprebuf,\n MAX_ORDER, num_samples);\n } else {\n System$15.arraycopy(left_samples, left_samplesPos, rgData.linprebuf,\n MAX_ORDER, MAX_ORDER);\n System$15.arraycopy(right_samples, right_samplesPos, rgData.rinprebuf,\n MAX_ORDER, MAX_ORDER);\n }\n\n while (batchsamples > 0) {\n cursamples = batchsamples > rgData.sampleWindow - rgData.totsamp ? rgData.sampleWindow\n - rgData.totsamp\n : batchsamples;\n if (cursamplepos < MAX_ORDER) {\n curleft = rgData.linpre + cursamplepos;\n curleftBase = rgData.linprebuf;\n curright = rgData.rinpre + cursamplepos;\n currightBase = rgData.rinprebuf;\n if (cursamples > MAX_ORDER - cursamplepos)\n cursamples = MAX_ORDER - cursamplepos;\n } else {\n curleft = left_samplesPos + cursamplepos;\n curleftBase = left_samples;\n curright = right_samplesPos + cursamplepos;\n currightBase = right_samples;\n }\n\n filterYule(curleftBase, curleft, rgData.lstepbuf, rgData.lstep\n + rgData.totsamp, cursamples, ABYule[rgData.reqindex]);\n filterYule(currightBase, curright, rgData.rstepbuf, rgData.rstep\n + rgData.totsamp, cursamples, ABYule[rgData.reqindex]);\n\n filterButter(rgData.lstepbuf, rgData.lstep + rgData.totsamp,\n rgData.loutbuf, rgData.lout + rgData.totsamp, cursamples,\n ABButter[rgData.reqindex]);\n filterButter(rgData.rstepbuf, rgData.rstep + rgData.totsamp,\n rgData.routbuf, rgData.rout + rgData.totsamp, cursamples,\n ABButter[rgData.reqindex]);\n\n curleft = rgData.lout + rgData.totsamp;\n /* Get the squared values */\n curleftBase = rgData.loutbuf;\n curright = rgData.rout + rgData.totsamp;\n currightBase = rgData.routbuf;\n\n var i = cursamples % 8;\n while ((i--) != 0) {\n rgData.lsum += fsqr(curleftBase[curleft++]);\n rgData.rsum += fsqr(currightBase[curright++]);\n }\n i = cursamples / 8;\n while ((i--) != 0) {\n rgData.lsum += fsqr(curleftBase[curleft + 0])\n + fsqr(curleftBase[curleft + 1])\n + fsqr(curleftBase[curleft + 2])\n + fsqr(curleftBase[curleft + 3])\n + fsqr(curleftBase[curleft + 4])\n + fsqr(curleftBase[curleft + 5])\n + fsqr(curleftBase[curleft + 6])\n + fsqr(curleftBase[curleft + 7]);\n curleft += 8;\n rgData.rsum += fsqr(currightBase[curright + 0])\n + fsqr(currightBase[curright + 1])\n + fsqr(currightBase[curright + 2])\n + fsqr(currightBase[curright + 3])\n + fsqr(currightBase[curright + 4])\n + fsqr(currightBase[curright + 5])\n + fsqr(currightBase[curright + 6])\n + fsqr(currightBase[curright + 7]);\n curright += 8;\n }\n\n batchsamples -= cursamples;\n cursamplepos += cursamples;\n rgData.totsamp += cursamples;\n if (rgData.totsamp == rgData.sampleWindow) {\n /* Get the Root Mean Square (RMS) for this set of samples */\n var val = GainAnalysis$1.STEPS_per_dB\n * 10.\n * Math.log10((rgData.lsum + rgData.rsum)\n / rgData.totsamp * 0.5 + 1.e-37);\n var ival = (val <= 0) ? 0 : 0 | val;\n if (ival >= rgData.A.length)\n ival = rgData.A.length - 1;\n rgData.A[ival]++;\n rgData.lsum = rgData.rsum = 0.;\n\n System$15.arraycopy(rgData.loutbuf, rgData.totsamp,\n rgData.loutbuf, 0, MAX_ORDER);\n System$15.arraycopy(rgData.routbuf, rgData.totsamp,\n rgData.routbuf, 0, MAX_ORDER);\n System$15.arraycopy(rgData.lstepbuf, rgData.totsamp,\n rgData.lstepbuf, 0, MAX_ORDER);\n System$15.arraycopy(rgData.rstepbuf, rgData.totsamp,\n rgData.rstepbuf, 0, MAX_ORDER);\n rgData.totsamp = 0;\n }\n if (rgData.totsamp > rgData.sampleWindow) {\n /*\n * somehow I really screwed up: Error in programming! Contact\n * author about totsamp > sampleWindow\n */\n return GAIN_ANALYSIS_ERROR;\n }\n }\n if (num_samples < MAX_ORDER) {\n System$15.arraycopy(rgData.linprebuf, num_samples, rgData.linprebuf,\n 0, MAX_ORDER - num_samples);\n System$15.arraycopy(rgData.rinprebuf, num_samples, rgData.rinprebuf,\n 0, MAX_ORDER - num_samples);\n System$15.arraycopy(left_samples, left_samplesPos, rgData.linprebuf,\n MAX_ORDER - num_samples, num_samples);\n System$15.arraycopy(right_samples, right_samplesPos, rgData.rinprebuf,\n MAX_ORDER - num_samples, num_samples);\n } else {\n System$15.arraycopy(left_samples, left_samplesPos + num_samples\n - MAX_ORDER, rgData.linprebuf, 0, MAX_ORDER);\n System$15.arraycopy(right_samples, right_samplesPos + num_samples\n - MAX_ORDER, rgData.rinprebuf, 0, MAX_ORDER);\n }\n\n return GAIN_ANALYSIS_OK;\n };\n\n function analyzeResult(Array, len) {\n var i;\n\n var elems = 0;\n for (i = 0; i < len; i++)\n elems += Array[i];\n if (elems == 0)\n return GAIN_NOT_ENOUGH_SAMPLES;\n\n var upper = 0 | Math.ceil(elems * (1. - RMS_PERCENTILE));\n for (i = len; i-- > 0;) {\n if ((upper -= Array[i]) <= 0)\n break;\n }\n\n //return (float) ((float) PINK_REF - (float) i / (float) STEPS_per_dB);\n return (PINK_REF - i / GainAnalysis$1.STEPS_per_dB);\n }\n\n this.GetTitleGain = function (rgData) {\n var retval = analyzeResult(rgData.A, rgData.A.length);\n\n for (var i = 0; i < rgData.A.length; i++) {\n rgData.B[i] += rgData.A[i];\n rgData.A[i] = 0;\n }\n\n for (var i = 0; i < MAX_ORDER; i++)\n rgData.linprebuf[i] = rgData.lstepbuf[i] = rgData.loutbuf[i] = rgData.rinprebuf[i] = rgData.rstepbuf[i] = rgData.routbuf[i] = 0.;\n\n rgData.totsamp = 0;\n rgData.lsum = rgData.rsum = 0.;\n return retval;\n };\n\n}\n\nvar GainAnalysis_1 = GainAnalysis$1;\n\nvar new_float$14 = common.new_float;\nvar new_int$14 = common.new_int;\nfunction ReplayGain() {\n this.linprebuf = new_float$14(GainAnalysis_1.MAX_ORDER * 2);\n /**\n * left input samples, with pre-buffer\n */\n this.linpre = 0;\n this.lstepbuf = new_float$14(GainAnalysis_1.MAX_SAMPLES_PER_WINDOW + GainAnalysis_1.MAX_ORDER);\n /**\n * left \"first step\" (i.e. post first filter) samples\n */\n this.lstep = 0;\n this.loutbuf = new_float$14(GainAnalysis_1.MAX_SAMPLES_PER_WINDOW + GainAnalysis_1.MAX_ORDER);\n /**\n * left \"out\" (i.e. post second filter) samples\n */\n this.lout = 0;\n this.rinprebuf = new_float$14(GainAnalysis_1.MAX_ORDER * 2);\n /**\n * right input samples ...\n */\n this.rinpre = 0;\n this.rstepbuf = new_float$14(GainAnalysis_1.MAX_SAMPLES_PER_WINDOW + GainAnalysis_1.MAX_ORDER);\n this.rstep = 0;\n this.routbuf = new_float$14(GainAnalysis_1.MAX_SAMPLES_PER_WINDOW + GainAnalysis_1.MAX_ORDER);\n this.rout = 0;\n /**\n * number of samples required to reach number of milliseconds required\n * for RMS window\n */\n this.sampleWindow = 0;\n this.totsamp = 0;\n this.lsum = 0.;\n this.rsum = 0.;\n this.freqindex = 0;\n this.first = 0;\n this.A = new_int$14(0 | (GainAnalysis_1.STEPS_per_dB * GainAnalysis_1.MAX_dB));\n this.B = new_int$14(0 | (GainAnalysis_1.STEPS_per_dB * GainAnalysis_1.MAX_dB));\n\n}\n\nvar ReplayGain_1 = ReplayGain;\n\nfunction MeanBits$1(meanBits) {\n this.bits = meanBits;\n}\n\nvar MeanBits_1 = MeanBits$1;\n\nvar new_float$16 = common.new_float;\nvar new_int$16 = common.new_int;\nvar assert$16 = common.assert;\n\n\n\n\n\n\nfunction CBRNewIterationLoop(_quantize) {\n var quantize = _quantize;\n this.quantize = quantize;\n\tthis.iteration_loop = function(gfp, pe, ms_ener_ratio, ratio) {\n\t\tvar gfc = gfp.internal_flags;\n var l3_xmin = new_float$16(L3Side_1.SFBMAX);\n\t\tvar xrpow = new_float$16(576);\n\t\tvar targ_bits = new_int$16(2);\n\t\tvar mean_bits = 0, max_bits;\n\t\tvar l3_side = gfc.l3_side;\n\n\t\tvar mb = new MeanBits_1(mean_bits);\n\t\tthis.quantize.rv.ResvFrameBegin(gfp, mb);\n\t\tmean_bits = mb.bits;\n\n\t\t/* quantize! */\n\t\tfor (var gr = 0; gr < gfc.mode_gr; gr++) {\n\n\t\t\t/*\n\t\t\t * calculate needed bits\n\t\t\t */\n\t\t\tmax_bits = this.quantize.qupvt.on_pe(gfp, pe, targ_bits, mean_bits,\n\t\t\t\t\tgr, gr);\n\n\t\t\tif (gfc.mode_ext == Encoder_1.MPG_MD_MS_LR) {\n\t\t\t\tthis.quantize.ms_convert(gfc.l3_side, gr);\n\t\t\t\tthis.quantize.qupvt.reduce_side(targ_bits, ms_ener_ratio[gr],\n\t\t\t\t\t\tmean_bits, max_bits);\n\t\t\t}\n\n\t\t\tfor (var ch = 0; ch < gfc.channels_out; ch++) {\n\t\t\t\tvar adjust, masking_lower_db;\n\t\t\t\tvar cod_info = l3_side.tt[gr][ch];\n\n\t\t\t\tif (cod_info.block_type != Encoder_1.SHORT_TYPE) {\n\t\t\t\t\t// NORM, START or STOP type\n\t\t\t\t\tadjust = 0;\n\t\t\t\t\tmasking_lower_db = gfc.PSY.mask_adjust - adjust;\n\t\t\t\t} else {\n\t\t\t\t\tadjust = 0;\n\t\t\t\t\tmasking_lower_db = gfc.PSY.mask_adjust_short - adjust;\n\t\t\t\t}\n\t\t\t\tgfc.masking_lower = Math.pow(10.0,\n\t\t\t\t\t\tmasking_lower_db * 0.1);\n\n\t\t\t\t/*\n\t\t\t\t * init_outer_loop sets up cod_info, scalefac and xrpow\n\t\t\t\t */\n\t\t\t\tthis.quantize.init_outer_loop(gfc, cod_info);\n\t\t\t\tif (this.quantize.init_xrpow(gfc, cod_info, xrpow)) {\n\t\t\t\t\t/*\n\t\t\t\t\t * xr contains energy we will have to encode calculate the\n\t\t\t\t\t * masking abilities find some good quantization in\n\t\t\t\t\t * outer_loop\n\t\t\t\t\t */\n\t\t\t\t\tthis.quantize.qupvt.calc_xmin(gfp, ratio[gr][ch], cod_info,\n\t\t\t\t\t\t\tl3_xmin);\n\t\t\t\t\tthis.quantize.outer_loop(gfp, cod_info, l3_xmin, xrpow, ch,\n\t\t\t\t\t\t\ttarg_bits[ch]);\n\t\t\t\t}\n\n\t\t\t\tthis.quantize.iteration_finish_one(gfc, gr, ch);\n\t\t\t\tassert$16 (cod_info.part2_3_length <= LameInternalFlags_1.MAX_BITS_PER_CHANNEL);\n\t\t\t\tassert$16 (cod_info.part2_3_length <= targ_bits[ch]);\n\t\t\t} /* for ch */\n\t\t} /* for gr */\n\n\t\tthis.quantize.rv.ResvFrameEnd(gfc, mean_bits);\n\t};\n}\nvar CBRNewIterationLoop_1 = CBRNewIterationLoop;\n\nfunction HuffCodeTab(len, max, tab, hl) {\n this.xlen = len;\n this.linmax = max;\n this.table = tab;\n this.hlen = hl;\n}\n\nvar Tables$1 = {};\n\n\nTables$1.t1HB = [\n 1, 1,\n 1, 0\n];\n\nTables$1.t2HB = [\n 1, 2, 1,\n 3, 1, 1,\n 3, 2, 0\n];\n\nTables$1.t3HB = [\n 3, 2, 1,\n 1, 1, 1,\n 3, 2, 0\n];\n\nTables$1.t5HB = [\n 1, 2, 6, 5,\n 3, 1, 4, 4,\n 7, 5, 7, 1,\n 6, 1, 1, 0\n];\n\nTables$1.t6HB = [\n 7, 3, 5, 1,\n 6, 2, 3, 2,\n 5, 4, 4, 1,\n 3, 3, 2, 0\n];\n\nTables$1.t7HB = [\n 1, 2, 10, 19, 16, 10,\n 3, 3, 7, 10, 5, 3,\n 11, 4, 13, 17, 8, 4,\n 12, 11, 18, 15, 11, 2,\n 7, 6, 9, 14, 3, 1,\n 6, 4, 5, 3, 2, 0\n];\n\nTables$1.t8HB = [\n 3, 4, 6, 18, 12, 5,\n 5, 1, 2, 16, 9, 3,\n 7, 3, 5, 14, 7, 3,\n 19, 17, 15, 13, 10, 4,\n 13, 5, 8, 11, 5, 1,\n 12, 4, 4, 1, 1, 0\n];\n\nTables$1.t9HB = [\n 7, 5, 9, 14, 15, 7,\n 6, 4, 5, 5, 6, 7,\n 7, 6, 8, 8, 8, 5,\n 15, 6, 9, 10, 5, 1,\n 11, 7, 9, 6, 4, 1,\n 14, 4, 6, 2, 6, 0\n];\n\nTables$1.t10HB = [\n 1, 2, 10, 23, 35, 30, 12, 17,\n 3, 3, 8, 12, 18, 21, 12, 7,\n 11, 9, 15, 21, 32, 40, 19, 6,\n 14, 13, 22, 34, 46, 23, 18, 7,\n 20, 19, 33, 47, 27, 22, 9, 3,\n 31, 22, 41, 26, 21, 20, 5, 3,\n 14, 13, 10, 11, 16, 6, 5, 1,\n 9, 8, 7, 8, 4, 4, 2, 0\n];\n\nTables$1.t11HB = [\n 3, 4, 10, 24, 34, 33, 21, 15,\n 5, 3, 4, 10, 32, 17, 11, 10,\n 11, 7, 13, 18, 30, 31, 20, 5,\n 25, 11, 19, 59, 27, 18, 12, 5,\n 35, 33, 31, 58, 30, 16, 7, 5,\n 28, 26, 32, 19, 17, 15, 8, 14,\n 14, 12, 9, 13, 14, 9, 4, 1,\n 11, 4, 6, 6, 6, 3, 2, 0\n];\n\nTables$1.t12HB = [\n 9, 6, 16, 33, 41, 39, 38, 26,\n 7, 5, 6, 9, 23, 16, 26, 11,\n 17, 7, 11, 14, 21, 30, 10, 7,\n 17, 10, 15, 12, 18, 28, 14, 5,\n 32, 13, 22, 19, 18, 16, 9, 5,\n 40, 17, 31, 29, 17, 13, 4, 2,\n 27, 12, 11, 15, 10, 7, 4, 1,\n 27, 12, 8, 12, 6, 3, 1, 0\n];\n\nTables$1.t13HB = [\n 1, 5, 14, 21, 34, 51, 46, 71, 42, 52, 68, 52, 67, 44, 43, 19,\n 3, 4, 12, 19, 31, 26, 44, 33, 31, 24, 32, 24, 31, 35, 22, 14,\n 15, 13, 23, 36, 59, 49, 77, 65, 29, 40, 30, 40, 27, 33, 42, 16,\n 22, 20, 37, 61, 56, 79, 73, 64, 43, 76, 56, 37, 26, 31, 25, 14,\n 35, 16, 60, 57, 97, 75, 114, 91, 54, 73, 55, 41, 48, 53, 23, 24,\n 58, 27, 50, 96, 76, 70, 93, 84, 77, 58, 79, 29, 74, 49, 41, 17,\n 47, 45, 78, 74, 115, 94, 90, 79, 69, 83, 71, 50, 59, 38, 36, 15,\n 72, 34, 56, 95, 92, 85, 91, 90, 86, 73, 77, 65, 51, 44, 43, 42,\n 43, 20, 30, 44, 55, 78, 72, 87, 78, 61, 46, 54, 37, 30, 20, 16,\n 53, 25, 41, 37, 44, 59, 54, 81, 66, 76, 57, 54, 37, 18, 39, 11,\n 35, 33, 31, 57, 42, 82, 72, 80, 47, 58, 55, 21, 22, 26, 38, 22,\n 53, 25, 23, 38, 70, 60, 51, 36, 55, 26, 34, 23, 27, 14, 9, 7,\n 34, 32, 28, 39, 49, 75, 30, 52, 48, 40, 52, 28, 18, 17, 9, 5,\n 45, 21, 34, 64, 56, 50, 49, 45, 31, 19, 12, 15, 10, 7, 6, 3,\n 48, 23, 20, 39, 36, 35, 53, 21, 16, 23, 13, 10, 6, 1, 4, 2,\n 16, 15, 17, 27, 25, 20, 29, 11, 17, 12, 16, 8, 1, 1, 0, 1\n];\n\nTables$1.t15HB = [\n 7, 12, 18, 53, 47, 76, 124, 108, 89, 123, 108, 119, 107, 81, 122, 63,\n 13, 5, 16, 27, 46, 36, 61, 51, 42, 70, 52, 83, 65, 41, 59, 36,\n 19, 17, 15, 24, 41, 34, 59, 48, 40, 64, 50, 78, 62, 80, 56, 33,\n 29, 28, 25, 43, 39, 63, 55, 93, 76, 59, 93, 72, 54, 75, 50, 29,\n 52, 22, 42, 40, 67, 57, 95, 79, 72, 57, 89, 69, 49, 66, 46, 27,\n 77, 37, 35, 66, 58, 52, 91, 74, 62, 48, 79, 63, 90, 62, 40, 38,\n 125, 32, 60, 56, 50, 92, 78, 65, 55, 87, 71, 51, 73, 51, 70, 30,\n 109, 53, 49, 94, 88, 75, 66, 122, 91, 73, 56, 42, 64, 44, 21, 25,\n 90, 43, 41, 77, 73, 63, 56, 92, 77, 66, 47, 67, 48, 53, 36, 20,\n 71, 34, 67, 60, 58, 49, 88, 76, 67, 106, 71, 54, 38, 39, 23, 15,\n 109, 53, 51, 47, 90, 82, 58, 57, 48, 72, 57, 41, 23, 27, 62, 9,\n 86, 42, 40, 37, 70, 64, 52, 43, 70, 55, 42, 25, 29, 18, 11, 11,\n 118, 68, 30, 55, 50, 46, 74, 65, 49, 39, 24, 16, 22, 13, 14, 7,\n 91, 44, 39, 38, 34, 63, 52, 45, 31, 52, 28, 19, 14, 8, 9, 3,\n 123, 60, 58, 53, 47, 43, 32, 22, 37, 24, 17, 12, 15, 10, 2, 1,\n 71, 37, 34, 30, 28, 20, 17, 26, 21, 16, 10, 6, 8, 6, 2, 0\n];\n\nTables$1.t16HB = [\n 1, 5, 14, 44, 74, 63, 110, 93, 172, 149, 138, 242, 225, 195, 376, 17,\n 3, 4, 12, 20, 35, 62, 53, 47, 83, 75, 68, 119, 201, 107, 207, 9,\n 15, 13, 23, 38, 67, 58, 103, 90, 161, 72, 127, 117, 110, 209, 206, 16,\n 45, 21, 39, 69, 64, 114, 99, 87, 158, 140, 252, 212, 199, 387, 365, 26,\n 75, 36, 68, 65, 115, 101, 179, 164, 155, 264, 246, 226, 395, 382, 362, 9,\n 66, 30, 59, 56, 102, 185, 173, 265, 142, 253, 232, 400, 388, 378, 445, 16,\n 111, 54, 52, 100, 184, 178, 160, 133, 257, 244, 228, 217, 385, 366, 715, 10,\n 98, 48, 91, 88, 165, 157, 148, 261, 248, 407, 397, 372, 380, 889, 884, 8,\n 85, 84, 81, 159, 156, 143, 260, 249, 427, 401, 392, 383, 727, 713, 708, 7,\n 154, 76, 73, 141, 131, 256, 245, 426, 406, 394, 384, 735, 359, 710, 352, 11,\n 139, 129, 67, 125, 247, 233, 229, 219, 393, 743, 737, 720, 885, 882, 439, 4,\n 243, 120, 118, 115, 227, 223, 396, 746, 742, 736, 721, 712, 706, 223, 436, 6,\n 202, 224, 222, 218, 216, 389, 386, 381, 364, 888, 443, 707, 440, 437, 1728, 4,\n 747, 211, 210, 208, 370, 379, 734, 723, 714, 1735, 883, 877, 876, 3459, 865, 2,\n 377, 369, 102, 187, 726, 722, 358, 711, 709, 866, 1734, 871, 3458, 870, 434, 0,\n 12, 10, 7, 11, 10, 17, 11, 9, 13, 12, 10, 7, 5, 3, 1, 3\n];\n\nTables$1.t24HB = [\n 15, 13, 46, 80, 146, 262, 248, 434, 426, 669, 653, 649, 621, 517, 1032, 88,\n 14, 12, 21, 38, 71, 130, 122, 216, 209, 198, 327, 345, 319, 297, 279, 42,\n 47, 22, 41, 74, 68, 128, 120, 221, 207, 194, 182, 340, 315, 295, 541, 18,\n 81, 39, 75, 70, 134, 125, 116, 220, 204, 190, 178, 325, 311, 293, 271, 16,\n 147, 72, 69, 135, 127, 118, 112, 210, 200, 188, 352, 323, 306, 285, 540, 14,\n 263, 66, 129, 126, 119, 114, 214, 202, 192, 180, 341, 317, 301, 281, 262, 12,\n 249, 123, 121, 117, 113, 215, 206, 195, 185, 347, 330, 308, 291, 272, 520, 10,\n 435, 115, 111, 109, 211, 203, 196, 187, 353, 332, 313, 298, 283, 531, 381, 17,\n 427, 212, 208, 205, 201, 193, 186, 177, 169, 320, 303, 286, 268, 514, 377, 16,\n 335, 199, 197, 191, 189, 181, 174, 333, 321, 305, 289, 275, 521, 379, 371, 11,\n 668, 184, 183, 179, 175, 344, 331, 314, 304, 290, 277, 530, 383, 373, 366, 10,\n 652, 346, 171, 168, 164, 318, 309, 299, 287, 276, 263, 513, 375, 368, 362, 6,\n 648, 322, 316, 312, 307, 302, 292, 284, 269, 261, 512, 376, 370, 364, 359, 4,\n 620, 300, 296, 294, 288, 282, 273, 266, 515, 380, 374, 369, 365, 361, 357, 2,\n 1033, 280, 278, 274, 267, 264, 259, 382, 378, 372, 367, 363, 360, 358, 356, 0,\n 43, 20, 19, 17, 15, 13, 11, 9, 7, 6, 4, 7, 5, 3, 1, 3\n];\n\nTables$1.t32HB = [\n 1 << 0, 5 << 1, 4 << 1, 5 << 2, 6 << 1, 5 << 2, 4 << 2, 4 << 3,\n 7 << 1, 3 << 2, 6 << 2, 0 << 3, 7 << 2, 2 << 3, 3 << 3, 1 << 4\n];\n\nTables$1.t33HB = [\n 15 << 0, 14 << 1, 13 << 1, 12 << 2, 11 << 1, 10 << 2, 9 << 2, 8 << 3,\n 7 << 1, 6 << 2, 5 << 2, 4 << 3, 3 << 2, 2 << 3, 1 << 3, 0 << 4\n];\n\nTables$1.t1l = [\n 1, 4,\n 3, 5\n];\n\nTables$1.t2l = [\n 1, 4, 7,\n 4, 5, 7,\n 6, 7, 8\n];\n\nTables$1.t3l = [\n 2, 3, 7,\n 4, 4, 7,\n 6, 7, 8\n];\n\nTables$1.t5l = [\n 1, 4, 7, 8,\n 4, 5, 8, 9,\n 7, 8, 9, 10,\n 8, 8, 9, 10\n];\n\nTables$1.t6l = [\n 3, 4, 6, 8,\n 4, 4, 6, 7,\n 5, 6, 7, 8,\n 7, 7, 8, 9\n];\n\nTables$1.t7l = [\n 1, 4, 7, 9, 9, 10,\n 4, 6, 8, 9, 9, 10,\n 7, 7, 9, 10, 10, 11,\n 8, 9, 10, 11, 11, 11,\n 8, 9, 10, 11, 11, 12,\n 9, 10, 11, 12, 12, 12\n];\n\nTables$1.t8l = [\n 2, 4, 7, 9, 9, 10,\n 4, 4, 6, 10, 10, 10,\n 7, 6, 8, 10, 10, 11,\n 9, 10, 10, 11, 11, 12,\n 9, 9, 10, 11, 12, 12,\n 10, 10, 11, 11, 13, 13\n];\n\nTables$1.t9l = [\n 3, 4, 6, 7, 9, 10,\n 4, 5, 6, 7, 8, 10,\n 5, 6, 7, 8, 9, 10,\n 7, 7, 8, 9, 9, 10,\n 8, 8, 9, 9, 10, 11,\n 9, 9, 10, 10, 11, 11\n];\n\nTables$1.t10l = [\n 1, 4, 7, 9, 10, 10, 10, 11,\n 4, 6, 8, 9, 10, 11, 10, 10,\n 7, 8, 9, 10, 11, 12, 11, 11,\n 8, 9, 10, 11, 12, 12, 11, 12,\n 9, 10, 11, 12, 12, 12, 12, 12,\n 10, 11, 12, 12, 13, 13, 12, 13,\n 9, 10, 11, 12, 12, 12, 13, 13,\n 10, 10, 11, 12, 12, 13, 13, 13\n];\n\nTables$1.t11l = [\n 2, 4, 6, 8, 9, 10, 9, 10,\n 4, 5, 6, 8, 10, 10, 9, 10,\n 6, 7, 8, 9, 10, 11, 10, 10,\n 8, 8, 9, 11, 10, 12, 10, 11,\n 9, 10, 10, 11, 11, 12, 11, 12,\n 9, 10, 11, 12, 12, 13, 12, 13,\n 9, 9, 9, 10, 11, 12, 12, 12,\n 9, 9, 10, 11, 12, 12, 12, 12\n];\n\nTables$1.t12l = [\n 4, 4, 6, 8, 9, 10, 10, 10,\n 4, 5, 6, 7, 9, 9, 10, 10,\n 6, 6, 7, 8, 9, 10, 9, 10,\n 7, 7, 8, 8, 9, 10, 10, 10,\n 8, 8, 9, 9, 10, 10, 10, 11,\n 9, 9, 10, 10, 10, 11, 10, 11,\n 9, 9, 9, 10, 10, 11, 11, 12,\n 10, 10, 10, 11, 11, 11, 11, 12\n];\n\nTables$1.t13l = [\n 1, 5, 7, 8, 9, 10, 10, 11, 10, 11, 12, 12, 13, 13, 14, 14,\n 4, 6, 8, 9, 10, 10, 11, 11, 11, 11, 12, 12, 13, 14, 14, 14,\n 7, 8, 9, 10, 11, 11, 12, 12, 11, 12, 12, 13, 13, 14, 15, 15,\n 8, 9, 10, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 15, 15,\n 9, 9, 11, 11, 12, 12, 13, 13, 12, 13, 13, 14, 14, 15, 15, 16,\n 10, 10, 11, 12, 12, 12, 13, 13, 13, 13, 14, 13, 15, 15, 16, 16,\n 10, 11, 12, 12, 13, 13, 13, 13, 13, 14, 14, 14, 15, 15, 16, 16,\n 11, 11, 12, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 16, 18, 18,\n 10, 10, 11, 12, 12, 13, 13, 14, 14, 14, 14, 15, 15, 16, 17, 17,\n 11, 11, 12, 12, 13, 13, 13, 15, 14, 15, 15, 16, 16, 16, 18, 17,\n 11, 12, 12, 13, 13, 14, 14, 15, 14, 15, 16, 15, 16, 17, 18, 19,\n 12, 12, 12, 13, 14, 14, 14, 14, 15, 15, 15, 16, 17, 17, 17, 18,\n 12, 13, 13, 14, 14, 15, 14, 15, 16, 16, 17, 17, 17, 18, 18, 18,\n 13, 13, 14, 15, 15, 15, 16, 16, 16, 16, 16, 17, 18, 17, 18, 18,\n 14, 14, 14, 15, 15, 15, 17, 16, 16, 19, 17, 17, 17, 19, 18, 18,\n 13, 14, 15, 16, 16, 16, 17, 16, 17, 17, 18, 18, 21, 20, 21, 18\n];\n\nTables$1.t15l = [\n 3, 5, 6, 8, 8, 9, 10, 10, 10, 11, 11, 12, 12, 12, 13, 14,\n 5, 5, 7, 8, 9, 9, 10, 10, 10, 11, 11, 12, 12, 12, 13, 13,\n 6, 7, 7, 8, 9, 9, 10, 10, 10, 11, 11, 12, 12, 13, 13, 13,\n 7, 8, 8, 9, 9, 10, 10, 11, 11, 11, 12, 12, 12, 13, 13, 13,\n 8, 8, 9, 9, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 13, 13,\n 9, 9, 9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 13, 13, 13, 14,\n 10, 9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 13, 14, 14,\n 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 14,\n 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 14, 14, 14,\n 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14,\n 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 13, 14, 15, 14,\n 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 15,\n 12, 12, 11, 12, 12, 12, 13, 13, 13, 13, 13, 13, 14, 14, 15, 15,\n 12, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 14, 15, 15,\n 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 14, 15,\n 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 15, 15, 15, 15\n];\n\nTables$1.t16_5l = [\n 1, 5, 7, 9, 10, 10, 11, 11, 12, 12, 12, 13, 13, 13, 14, 11,\n 4, 6, 8, 9, 10, 11, 11, 11, 12, 12, 12, 13, 14, 13, 14, 11,\n 7, 8, 9, 10, 11, 11, 12, 12, 13, 12, 13, 13, 13, 14, 14, 12,\n 9, 9, 10, 11, 11, 12, 12, 12, 13, 13, 14, 14, 14, 15, 15, 13,\n 10, 10, 11, 11, 12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 15, 12,\n 10, 10, 11, 11, 12, 13, 13, 14, 13, 14, 14, 15, 15, 15, 16, 13,\n 11, 11, 11, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 16, 13,\n 11, 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 17, 17, 13,\n 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 13,\n 12, 12, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 15, 16, 15, 14,\n 12, 13, 12, 13, 14, 14, 14, 14, 15, 16, 16, 16, 17, 17, 16, 13,\n 13, 13, 13, 13, 14, 14, 15, 16, 16, 16, 16, 16, 16, 15, 16, 14,\n 13, 14, 14, 14, 14, 15, 15, 15, 15, 17, 16, 16, 16, 16, 18, 14,\n 15, 14, 14, 14, 15, 15, 16, 16, 16, 18, 17, 17, 17, 19, 17, 14,\n 14, 15, 13, 14, 16, 16, 15, 16, 16, 17, 18, 17, 19, 17, 16, 14,\n 11, 11, 11, 12, 12, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 12\n];\n\nTables$1.t16l = [\n 1, 5, 7, 9, 10, 10, 11, 11, 12, 12, 12, 13, 13, 13, 14, 10,\n 4, 6, 8, 9, 10, 11, 11, 11, 12, 12, 12, 13, 14, 13, 14, 10,\n 7, 8, 9, 10, 11, 11, 12, 12, 13, 12, 13, 13, 13, 14, 14, 11,\n 9, 9, 10, 11, 11, 12, 12, 12, 13, 13, 14, 14, 14, 15, 15, 12,\n 10, 10, 11, 11, 12, 12, 13, 13, 13, 14, 14, 14, 15, 15, 15, 11,\n 10, 10, 11, 11, 12, 13, 13, 14, 13, 14, 14, 15, 15, 15, 16, 12,\n 11, 11, 11, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 16, 12,\n 11, 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 17, 17, 12,\n 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 12,\n 12, 12, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 15, 16, 15, 13,\n 12, 13, 12, 13, 14, 14, 14, 14, 15, 16, 16, 16, 17, 17, 16, 12,\n 13, 13, 13, 13, 14, 14, 15, 16, 16, 16, 16, 16, 16, 15, 16, 13,\n 13, 14, 14, 14, 14, 15, 15, 15, 15, 17, 16, 16, 16, 16, 18, 13,\n 15, 14, 14, 14, 15, 15, 16, 16, 16, 18, 17, 17, 17, 19, 17, 13,\n 14, 15, 13, 14, 16, 16, 15, 16, 16, 17, 18, 17, 19, 17, 16, 13,\n 10, 10, 10, 11, 11, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 10\n];\n\nTables$1.t24l = [\n 4, 5, 7, 8, 9, 10, 10, 11, 11, 12, 12, 12, 12, 12, 13, 10,\n 5, 6, 7, 8, 9, 10, 10, 11, 11, 11, 12, 12, 12, 12, 12, 10,\n 7, 7, 8, 9, 9, 10, 10, 11, 11, 11, 11, 12, 12, 12, 13, 9,\n 8, 8, 9, 9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 9,\n 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 12, 12, 12, 12, 13, 9,\n 10, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 9,\n 10, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 9,\n 11, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 10,\n 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 10,\n 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 10,\n 12, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 10,\n 12, 12, 11, 11, 11, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 10,\n 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 10,\n 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 10,\n 13, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 10,\n 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 6\n];\n\nTables$1.t32l = [\n 1 + 0, 4 + 1, 4 + 1, 5 + 2, 4 + 1, 6 + 2, 5 + 2, 6 + 3,\n 4 + 1, 5 + 2, 5 + 2, 6 + 3, 5 + 2, 6 + 3, 6 + 3, 6 + 4\n];\n\nTables$1.t33l = [\n 4 + 0, 4 + 1, 4 + 1, 4 + 2, 4 + 1, 4 + 2, 4 + 2, 4 + 3,\n 4 + 1, 4 + 2, 4 + 2, 4 + 3, 4 + 2, 4 + 3, 4 + 3, 4 + 4\n];\n\nTables$1.ht = [\n /* xlen, linmax, table, hlen */\n new HuffCodeTab(0, 0, null, null),\n new HuffCodeTab(2, 0, Tables$1.t1HB, Tables$1.t1l),\n new HuffCodeTab(3, 0, Tables$1.t2HB, Tables$1.t2l),\n new HuffCodeTab(3, 0, Tables$1.t3HB, Tables$1.t3l),\n new HuffCodeTab(0, 0, null, null), /* Apparently not used */\n new HuffCodeTab(4, 0, Tables$1.t5HB, Tables$1.t5l),\n new HuffCodeTab(4, 0, Tables$1.t6HB, Tables$1.t6l),\n new HuffCodeTab(6, 0, Tables$1.t7HB, Tables$1.t7l),\n new HuffCodeTab(6, 0, Tables$1.t8HB, Tables$1.t8l),\n new HuffCodeTab(6, 0, Tables$1.t9HB, Tables$1.t9l),\n new HuffCodeTab(8, 0, Tables$1.t10HB, Tables$1.t10l),\n new HuffCodeTab(8, 0, Tables$1.t11HB, Tables$1.t11l),\n new HuffCodeTab(8, 0, Tables$1.t12HB, Tables$1.t12l),\n new HuffCodeTab(16, 0, Tables$1.t13HB, Tables$1.t13l),\n new HuffCodeTab(0, 0, null, Tables$1.t16_5l), /* Apparently not used */\n new HuffCodeTab(16, 0, Tables$1.t15HB, Tables$1.t15l),\n\n new HuffCodeTab(1, 1, Tables$1.t16HB, Tables$1.t16l),\n new HuffCodeTab(2, 3, Tables$1.t16HB, Tables$1.t16l),\n new HuffCodeTab(3, 7, Tables$1.t16HB, Tables$1.t16l),\n new HuffCodeTab(4, 15, Tables$1.t16HB, Tables$1.t16l),\n new HuffCodeTab(6, 63, Tables$1.t16HB, Tables$1.t16l),\n new HuffCodeTab(8, 255, Tables$1.t16HB, Tables$1.t16l),\n new HuffCodeTab(10, 1023, Tables$1.t16HB, Tables$1.t16l),\n new HuffCodeTab(13, 8191, Tables$1.t16HB, Tables$1.t16l),\n\n new HuffCodeTab(4, 15, Tables$1.t24HB, Tables$1.t24l),\n new HuffCodeTab(5, 31, Tables$1.t24HB, Tables$1.t24l),\n new HuffCodeTab(6, 63, Tables$1.t24HB, Tables$1.t24l),\n new HuffCodeTab(7, 127, Tables$1.t24HB, Tables$1.t24l),\n new HuffCodeTab(8, 255, Tables$1.t24HB, Tables$1.t24l),\n new HuffCodeTab(9, 511, Tables$1.t24HB, Tables$1.t24l),\n new HuffCodeTab(11, 2047, Tables$1.t24HB, Tables$1.t24l),\n new HuffCodeTab(13, 8191, Tables$1.t24HB, Tables$1.t24l),\n\n new HuffCodeTab(0, 0, Tables$1.t32HB, Tables$1.t32l),\n new HuffCodeTab(0, 0, Tables$1.t33HB, Tables$1.t33l),\n];\n\n/**\n * \n * for (i = 0; i < 16*16; i++) [\n * largetbl[i] = ((ht[16].hlen[i]) << 16) + ht[24].hlen[i];\n * ]\n * \n *\n */\nTables$1.largetbl = [\n 0x010004, 0x050005, 0x070007, 0x090008, 0x0a0009, 0x0a000a, 0x0b000a, 0x0b000b,\n 0x0c000b, 0x0c000c, 0x0c000c, 0x0d000c, 0x0d000c, 0x0d000c, 0x0e000d, 0x0a000a,\n 0x040005, 0x060006, 0x080007, 0x090008, 0x0a0009, 0x0b000a, 0x0b000a, 0x0b000b,\n 0x0c000b, 0x0c000b, 0x0c000c, 0x0d000c, 0x0e000c, 0x0d000c, 0x0e000c, 0x0a000a,\n 0x070007, 0x080007, 0x090008, 0x0a0009, 0x0b0009, 0x0b000a, 0x0c000a, 0x0c000b,\n 0x0d000b, 0x0c000b, 0x0d000b, 0x0d000c, 0x0d000c, 0x0e000c, 0x0e000d, 0x0b0009,\n 0x090008, 0x090008, 0x0a0009, 0x0b0009, 0x0b000a, 0x0c000a, 0x0c000a, 0x0c000b,\n 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x0c0009,\n 0x0a0009, 0x0a0009, 0x0b0009, 0x0b000a, 0x0c000a, 0x0c000a, 0x0d000a, 0x0d000b,\n 0x0d000b, 0x0e000b, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000d, 0x0b0009,\n 0x0a000a, 0x0a0009, 0x0b000a, 0x0b000a, 0x0c000a, 0x0d000a, 0x0d000b, 0x0e000b,\n 0x0d000b, 0x0e000b, 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000c, 0x10000c, 0x0c0009,\n 0x0b000a, 0x0b000a, 0x0b000a, 0x0c000a, 0x0d000a, 0x0d000b, 0x0d000b, 0x0d000b,\n 0x0e000b, 0x0e000c, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x10000d, 0x0c0009,\n 0x0b000b, 0x0b000a, 0x0c000a, 0x0c000a, 0x0d000b, 0x0d000b, 0x0d000b, 0x0e000b,\n 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000c, 0x0f000c, 0x11000d, 0x11000d, 0x0c000a,\n 0x0b000b, 0x0c000b, 0x0c000b, 0x0d000b, 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000b,\n 0x0f000b, 0x0f000c, 0x0f000c, 0x0f000c, 0x10000c, 0x10000d, 0x10000d, 0x0c000a,\n 0x0c000b, 0x0c000b, 0x0c000b, 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000b, 0x0f000c,\n 0x0f000c, 0x0f000c, 0x0f000c, 0x10000c, 0x0f000d, 0x10000d, 0x0f000d, 0x0d000a,\n 0x0c000c, 0x0d000b, 0x0c000b, 0x0d000b, 0x0e000b, 0x0e000c, 0x0e000c, 0x0e000c,\n 0x0f000c, 0x10000c, 0x10000c, 0x10000d, 0x11000d, 0x11000d, 0x10000d, 0x0c000a,\n 0x0d000c, 0x0d000c, 0x0d000b, 0x0d000b, 0x0e000b, 0x0e000c, 0x0f000c, 0x10000c,\n 0x10000c, 0x10000c, 0x10000c, 0x10000d, 0x10000d, 0x0f000d, 0x10000d, 0x0d000a,\n 0x0d000c, 0x0e000c, 0x0e000c, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x0f000c,\n 0x0f000c, 0x11000c, 0x10000d, 0x10000d, 0x10000d, 0x10000d, 0x12000d, 0x0d000a,\n 0x0f000c, 0x0e000c, 0x0e000c, 0x0e000c, 0x0f000c, 0x0f000c, 0x10000c, 0x10000c,\n 0x10000d, 0x12000d, 0x11000d, 0x11000d, 0x11000d, 0x13000d, 0x11000d, 0x0d000a,\n 0x0e000d, 0x0f000c, 0x0d000c, 0x0e000c, 0x10000c, 0x10000c, 0x0f000c, 0x10000d,\n 0x10000d, 0x11000d, 0x12000d, 0x11000d, 0x13000d, 0x11000d, 0x10000d, 0x0d000a,\n 0x0a0009, 0x0a0009, 0x0a0009, 0x0b0009, 0x0b0009, 0x0c0009, 0x0c0009, 0x0c0009,\n 0x0d0009, 0x0d0009, 0x0d0009, 0x0d000a, 0x0d000a, 0x0d000a, 0x0d000a, 0x0a0006\n];\n/**\n * \n * for (i = 0; i < 3*3; i++) [\n * table23[i] = ((ht[2].hlen[i]) << 16) + ht[3].hlen[i];\n * ]\n * \n *\n */\nTables$1.table23 = [\n 0x010002, 0x040003, 0x070007,\n 0x040004, 0x050004, 0x070007,\n 0x060006, 0x070007, 0x080008\n];\n\n/**\n * \n * for (i = 0; i < 4*4; i++) [\n * table56[i] = ((ht[5].hlen[i]) << 16) + ht[6].hlen[i];\n * ]\n * \n *\n */\nTables$1.table56 = [\n 0x010003, 0x040004, 0x070006, 0x080008, 0x040004, 0x050004, 0x080006, 0x090007,\n 0x070005, 0x080006, 0x090007, 0x0a0008, 0x080007, 0x080007, 0x090008, 0x0a0009\n];\n\nTables$1.bitrate_table = [\n [0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, -1], /* MPEG 2 */\n [0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, -1], /* MPEG 1 */\n [0, 8, 16, 24, 32, 40, 48, 56, 64, -1, -1, -1, -1, -1, -1, -1], /* MPEG 2.5 */\n];\n\n/**\n * MPEG 2, MPEG 1, MPEG 2.5.\n */\nTables$1.samplerate_table = [\n [22050, 24000, 16000, -1],\n [44100, 48000, 32000, -1],\n [11025, 12000, 8000, -1],\n];\n\n/**\n * This is the scfsi_band table from 2.4.2.7 of the IS.\n */\nTables$1.scfsi_band = [0, 6, 11, 16, 21];\n\nvar Tables_1 = Tables$1;\n\nvar VbrMode$19 = common.VbrMode;\nvar Float$19 = common.Float;\nvar Util$19 = common.Util;\nvar new_float$19 = common.new_float;\nvar new_int$19 = common.new_int;\nvar assert$19 = common.assert;\n\n\n\n\n\nQuantizePVT$1.Q_MAX = (256 + 1);\nQuantizePVT$1.Q_MAX2 = 116;\nQuantizePVT$1.LARGE_BITS = 100000;\nQuantizePVT$1.IXMAX_VAL = 8206;\n\nfunction QuantizePVT$1() {\n\n var tak = null;\n var rv = null;\n var psy = null;\n\n this.setModules = function (_tk, _rv, _psy) {\n tak = _tk;\n rv = _rv;\n psy = _psy;\n };\n\n function POW20(x) {\n assert$19(0 <= (x + QuantizePVT$1.Q_MAX2) && x < QuantizePVT$1.Q_MAX);\n return pow20[x + QuantizePVT$1.Q_MAX2];\n }\n\n this.IPOW20 = function (x) {\n assert$19(0 <= x && x < QuantizePVT$1.Q_MAX);\n return ipow20[x];\n };\n\n /**\n * smallest such that 1.0+DBL_EPSILON != 1.0\n */\n var DBL_EPSILON = 2.2204460492503131e-016;\n\n /**\n * ix always <= 8191+15. see count_bits()\n */\n var IXMAX_VAL = QuantizePVT$1.IXMAX_VAL;\n\n var PRECALC_SIZE = (IXMAX_VAL + 2);\n\n var Q_MAX = QuantizePVT$1.Q_MAX;\n\n\n /**\n * \n * minimum possible number of\n * -cod_info.global_gain + ((scalefac[] + (cod_info.preflag ? pretab[sfb] : 0))\n * << (cod_info.scalefac_scale + 1)) + cod_info.subblock_gain[cod_info.window[sfb]] * 8;\n *\n * for long block, 0+((15+3)<<2) = 18*4 = 72\n * for short block, 0+(15<<2)+7*8 = 15*4+56 = 116\n * \n */\n var Q_MAX2 = QuantizePVT$1.Q_MAX2;\n\n var LARGE_BITS = QuantizePVT$1.LARGE_BITS;\n\n\n /**\n * Assuming dynamic range=96dB, this value should be 92\n */\n var NSATHSCALE = 100;\n\n /**\n * The following table is used to implement the scalefactor partitioning for\n * MPEG2 as described in section 2.4.3.2 of the IS. The indexing corresponds\n * to the way the tables are presented in the IS:\n *\n * [table_number][row_in_table][column of nr_of_sfb]\n */\n this.nr_of_sfb_block = [\n [[6, 5, 5, 5], [9, 9, 9, 9], [6, 9, 9, 9]],\n [[6, 5, 7, 3], [9, 9, 12, 6], [6, 9, 12, 6]],\n [[11, 10, 0, 0], [18, 18, 0, 0], [15, 18, 0, 0]],\n [[7, 7, 7, 0], [12, 12, 12, 0], [6, 15, 12, 0]],\n [[6, 6, 6, 3], [12, 9, 9, 6], [6, 12, 9, 6]],\n [[8, 8, 5, 0], [15, 12, 9, 0], [6, 18, 9, 0]]];\n\n /**\n * Table B.6: layer3 preemphasis\n */\n var pretab = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,\n 2, 2, 3, 3, 3, 2, 0];\n this.pretab = pretab;\n\n /**\n * Here are MPEG1 Table B.8 and MPEG2 Table B.1 -- Layer III scalefactor\n * bands.
\n * Index into this using a method such as:
\n * idx = fr_ps.header.sampling_frequency + (fr_ps.header.version * 3)\n */\n this.sfBandIndex = [\n // Table B.2.b: 22.05 kHz\n new ScaleFac_1([0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140, 168, 200, 238, 284, 336, 396, 464,\n 522, 576],\n [0, 4, 8, 12, 18, 24, 32, 42, 56, 74, 100, 132, 174, 192]\n , [0, 0, 0, 0, 0, 0, 0] // sfb21 pseudo sub bands\n , [0, 0, 0, 0, 0, 0, 0] // sfb12 pseudo sub bands\n ),\n /* Table B.2.c: 24 kHz */ /* docs: 332. mpg123(broken): 330 */\n new ScaleFac_1([0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 114, 136, 162, 194, 232, 278, 332, 394, 464,\n 540, 576],\n [0, 4, 8, 12, 18, 26, 36, 48, 62, 80, 104, 136, 180, 192]\n , [0, 0, 0, 0, 0, 0, 0] /* sfb21 pseudo sub bands */\n , [0, 0, 0, 0, 0, 0, 0] /* sfb12 pseudo sub bands */\n ),\n /* Table B.2.a: 16 kHz */\n new ScaleFac_1([0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140, 168, 200, 238, 284, 336, 396, 464,\n 522, 576],\n [0, 4, 8, 12, 18, 26, 36, 48, 62, 80, 104, 134, 174, 192]\n , [0, 0, 0, 0, 0, 0, 0] /* sfb21 pseudo sub bands */\n , [0, 0, 0, 0, 0, 0, 0] /* sfb12 pseudo sub bands */\n ),\n /* Table B.8.b: 44.1 kHz */\n new ScaleFac_1([0, 4, 8, 12, 16, 20, 24, 30, 36, 44, 52, 62, 74, 90, 110, 134, 162, 196, 238, 288, 342, 418,\n 576],\n [0, 4, 8, 12, 16, 22, 30, 40, 52, 66, 84, 106, 136, 192]\n , [0, 0, 0, 0, 0, 0, 0] /* sfb21 pseudo sub bands */\n , [0, 0, 0, 0, 0, 0, 0] /* sfb12 pseudo sub bands */\n ),\n /* Table B.8.c: 48 kHz */\n new ScaleFac_1([0, 4, 8, 12, 16, 20, 24, 30, 36, 42, 50, 60, 72, 88, 106, 128, 156, 190, 230, 276, 330, 384,\n 576],\n [0, 4, 8, 12, 16, 22, 28, 38, 50, 64, 80, 100, 126, 192]\n , [0, 0, 0, 0, 0, 0, 0] /* sfb21 pseudo sub bands */\n , [0, 0, 0, 0, 0, 0, 0] /* sfb12 pseudo sub bands */\n ),\n /* Table B.8.a: 32 kHz */\n new ScaleFac_1([0, 4, 8, 12, 16, 20, 24, 30, 36, 44, 54, 66, 82, 102, 126, 156, 194, 240, 296, 364, 448, 550,\n 576],\n [0, 4, 8, 12, 16, 22, 30, 42, 58, 78, 104, 138, 180, 192]\n , [0, 0, 0, 0, 0, 0, 0] /* sfb21 pseudo sub bands */\n , [0, 0, 0, 0, 0, 0, 0] /* sfb12 pseudo sub bands */\n ),\n /* MPEG-2.5 11.025 kHz */\n new ScaleFac_1([0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140, 168, 200, 238, 284, 336, 396, 464,\n 522, 576],\n [0 / 3, 12 / 3, 24 / 3, 36 / 3, 54 / 3, 78 / 3, 108 / 3, 144 / 3, 186 / 3, 240 / 3, 312 / 3,\n 402 / 3, 522 / 3, 576 / 3]\n , [0, 0, 0, 0, 0, 0, 0] /* sfb21 pseudo sub bands */\n , [0, 0, 0, 0, 0, 0, 0] /* sfb12 pseudo sub bands */\n ),\n /* MPEG-2.5 12 kHz */\n new ScaleFac_1([0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140, 168, 200, 238, 284, 336, 396, 464,\n 522, 576],\n [0 / 3, 12 / 3, 24 / 3, 36 / 3, 54 / 3, 78 / 3, 108 / 3, 144 / 3, 186 / 3, 240 / 3, 312 / 3,\n 402 / 3, 522 / 3, 576 / 3]\n , [0, 0, 0, 0, 0, 0, 0] /* sfb21 pseudo sub bands */\n , [0, 0, 0, 0, 0, 0, 0] /* sfb12 pseudo sub bands */\n ),\n /* MPEG-2.5 8 kHz */\n new ScaleFac_1([0, 12, 24, 36, 48, 60, 72, 88, 108, 132, 160, 192, 232, 280, 336, 400, 476, 566, 568, 570,\n 572, 574, 576],\n [0 / 3, 24 / 3, 48 / 3, 72 / 3, 108 / 3, 156 / 3, 216 / 3, 288 / 3, 372 / 3, 480 / 3, 486 / 3,\n 492 / 3, 498 / 3, 576 / 3]\n , [0, 0, 0, 0, 0, 0, 0] /* sfb21 pseudo sub bands */\n , [0, 0, 0, 0, 0, 0, 0] /* sfb12 pseudo sub bands */\n )\n ];\n\n var pow20 = new_float$19(Q_MAX + Q_MAX2 + 1);\n var ipow20 = new_float$19(Q_MAX);\n var pow43 = new_float$19(PRECALC_SIZE);\n\n var adj43 = new_float$19(PRECALC_SIZE);\n this.adj43 = adj43;\n\n /**\n *
\n     * compute the ATH for each scalefactor band cd range: 0..96db\n     *\n     * Input: 3.3kHz signal 32767 amplitude (3.3kHz is where ATH is smallest =\n     * -5db) longblocks: sfb=12 en0/bw=-11db max_en0 = 1.3db shortblocks: sfb=5\n     * -9db 0db\n     *\n     * Input: 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 (repeated) longblocks: amp=1\n     * sfb=12 en0/bw=-103 db max_en0 = -92db amp=32767 sfb=12 -12 db -1.4db\n     *\n     * Input: 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 (repeated) shortblocks: amp=1\n     * sfb=5 en0/bw= -99 -86 amp=32767 sfb=5 -9 db 4db\n     *\n     *\n     * MAX energy of largest wave at 3.3kHz = 1db AVE energy of largest wave at\n     * 3.3kHz = -11db Let's take AVE: -11db = maximum signal in sfb=12. Dynamic\n     * range of CD: 96db. Therefor energy of smallest audible wave in sfb=12 =\n     * -11 - 96 = -107db = ATH at 3.3kHz.\n     *\n     * ATH formula for this wave: -5db. To adjust to LAME scaling, we need ATH =\n     * ATH_formula - 103 (db) ATH = ATH * 2.5e-10 (ener)\n     * 
\n */\n function ATHmdct(gfp, f) {\n var ath = psy.ATHformula(f, gfp);\n\n ath -= NSATHSCALE;\n\n /* modify the MDCT scaling for the ATH and convert to energy */\n ath = Math.pow(10.0, ath / 10.0 + gfp.ATHlower);\n return ath;\n }\n\n function compute_ath(gfp) {\n var ATH_l = gfp.internal_flags.ATH.l;\n var ATH_psfb21 = gfp.internal_flags.ATH.psfb21;\n var ATH_s = gfp.internal_flags.ATH.s;\n var ATH_psfb12 = gfp.internal_flags.ATH.psfb12;\n var gfc = gfp.internal_flags;\n var samp_freq = gfp.out_samplerate;\n\n for (var sfb = 0; sfb < Encoder_1.SBMAX_l; sfb++) {\n var start = gfc.scalefac_band.l[sfb];\n var end = gfc.scalefac_band.l[sfb + 1];\n ATH_l[sfb] = Float$19.MAX_VALUE;\n for (var i = start; i < end; i++) {\n var freq = i * samp_freq / (2 * 576);\n var ATH_f = ATHmdct(gfp, freq);\n /* freq in kHz */\n ATH_l[sfb] = Math.min(ATH_l[sfb], ATH_f);\n }\n }\n\n for (var sfb = 0; sfb < Encoder_1.PSFB21; sfb++) {\n var start = gfc.scalefac_band.psfb21[sfb];\n var end = gfc.scalefac_band.psfb21[sfb + 1];\n ATH_psfb21[sfb] = Float$19.MAX_VALUE;\n for (var i = start; i < end; i++) {\n var freq = i * samp_freq / (2 * 576);\n var ATH_f = ATHmdct(gfp, freq);\n /* freq in kHz */\n ATH_psfb21[sfb] = Math.min(ATH_psfb21[sfb], ATH_f);\n }\n }\n\n for (var sfb = 0; sfb < Encoder_1.SBMAX_s; sfb++) {\n var start = gfc.scalefac_band.s[sfb];\n var end = gfc.scalefac_band.s[sfb + 1];\n ATH_s[sfb] = Float$19.MAX_VALUE;\n for (var i = start; i < end; i++) {\n var freq = i * samp_freq / (2 * 192);\n var ATH_f = ATHmdct(gfp, freq);\n /* freq in kHz */\n ATH_s[sfb] = Math.min(ATH_s[sfb], ATH_f);\n }\n ATH_s[sfb] *= (gfc.scalefac_band.s[sfb + 1] - gfc.scalefac_band.s[sfb]);\n }\n\n for (var sfb = 0; sfb < Encoder_1.PSFB12; sfb++) {\n var start = gfc.scalefac_band.psfb12[sfb];\n var end = gfc.scalefac_band.psfb12[sfb + 1];\n ATH_psfb12[sfb] = Float$19.MAX_VALUE;\n for (var i = start; i < end; i++) {\n var freq = i * samp_freq / (2 * 192);\n var ATH_f = ATHmdct(gfp, freq);\n /* freq in kHz */\n ATH_psfb12[sfb] = Math.min(ATH_psfb12[sfb], ATH_f);\n }\n /* not sure about the following */\n ATH_psfb12[sfb] *= (gfc.scalefac_band.s[13] - gfc.scalefac_band.s[12]);\n }\n\n /*\n * no-ATH mode: reduce ATH to -200 dB\n */\n if (gfp.noATH) {\n for (var sfb = 0; sfb < Encoder_1.SBMAX_l; sfb++) {\n ATH_l[sfb] = 1E-20;\n }\n for (var sfb = 0; sfb < Encoder_1.PSFB21; sfb++) {\n ATH_psfb21[sfb] = 1E-20;\n }\n for (var sfb = 0; sfb < Encoder_1.SBMAX_s; sfb++) {\n ATH_s[sfb] = 1E-20;\n }\n for (var sfb = 0; sfb < Encoder_1.PSFB12; sfb++) {\n ATH_psfb12[sfb] = 1E-20;\n }\n }\n\n /*\n * work in progress, don't rely on it too much\n */\n gfc.ATH.floor = 10. * Math.log10(ATHmdct(gfp, -1.));\n }\n\n /**\n * initialization for iteration_loop\n */\n this.iteration_init = function (gfp) {\n var gfc = gfp.internal_flags;\n var l3_side = gfc.l3_side;\n var i;\n\n if (gfc.iteration_init_init == 0) {\n gfc.iteration_init_init = 1;\n\n l3_side.main_data_begin = 0;\n compute_ath(gfp);\n\n pow43[0] = 0.0;\n for (i = 1; i < PRECALC_SIZE; i++)\n pow43[i] = Math.pow(i, 4.0 / 3.0);\n\n for (i = 0; i < PRECALC_SIZE - 1; i++)\n adj43[i] = ((i + 1) - Math.pow(\n 0.5 * (pow43[i] + pow43[i + 1]), 0.75));\n adj43[i] = 0.5;\n\n for (i = 0; i < Q_MAX; i++)\n ipow20[i] = Math.pow(2.0, (i - 210) * -0.1875);\n for (i = 0; i <= Q_MAX + Q_MAX2; i++)\n pow20[i] = Math.pow(2.0, (i - 210 - Q_MAX2) * 0.25);\n\n tak.huffman_init(gfc);\n\n {\n var bass, alto, treble, sfb21;\n\n i = (gfp.exp_nspsytune >> 2) & 63;\n if (i >= 32)\n i -= 64;\n bass = Math.pow(10, i / 4.0 / 10.0);\n\n i = (gfp.exp_nspsytune >> 8) & 63;\n if (i >= 32)\n i -= 64;\n alto = Math.pow(10, i / 4.0 / 10.0);\n\n i = (gfp.exp_nspsytune >> 14) & 63;\n if (i >= 32)\n i -= 64;\n treble = Math.pow(10, i / 4.0 / 10.0);\n\n /*\n * to be compatible with Naoki's original code, the next 6 bits\n * define only the amount of changing treble for sfb21\n */\n i = (gfp.exp_nspsytune >> 20) & 63;\n if (i >= 32)\n i -= 64;\n sfb21 = treble * Math.pow(10, i / 4.0 / 10.0);\n for (i = 0; i < Encoder_1.SBMAX_l; i++) {\n var f;\n if (i <= 6)\n f = bass;\n else if (i <= 13)\n f = alto;\n else if (i <= 20)\n f = treble;\n else\n f = sfb21;\n\n gfc.nsPsy.longfact[i] = f;\n }\n for (i = 0; i < Encoder_1.SBMAX_s; i++) {\n var f;\n if (i <= 5)\n f = bass;\n else if (i <= 10)\n f = alto;\n else if (i <= 11)\n f = treble;\n else\n f = sfb21;\n\n gfc.nsPsy.shortfact[i] = f;\n }\n }\n }\n };\n\n /**\n * allocate bits among 2 channels based on PE
\n * mt 6/99
\n * bugfixes rh 8/01: often allocated more than the allowed 4095 bits\n */\n this.on_pe = function (gfp, pe,\n targ_bits, mean_bits, gr, cbr) {\n var gfc = gfp.internal_flags;\n var tbits = 0, bits;\n var add_bits = new_int$19(2);\n var ch;\n\n /* allocate targ_bits for granule */\n var mb = new MeanBits_1(tbits);\n var extra_bits = rv.ResvMaxBits(gfp, mean_bits, mb, cbr);\n tbits = mb.bits;\n /* maximum allowed bits for this granule */\n var max_bits = tbits + extra_bits;\n if (max_bits > LameInternalFlags_1.MAX_BITS_PER_GRANULE) {\n // hard limit per granule\n max_bits = LameInternalFlags_1.MAX_BITS_PER_GRANULE;\n }\n for (bits = 0, ch = 0; ch < gfc.channels_out; ++ch) {\n /******************************************************************\n * allocate bits for each channel\n ******************************************************************/\n targ_bits[ch] = Math.min(LameInternalFlags_1.MAX_BITS_PER_CHANNEL,\n tbits / gfc.channels_out);\n\n add_bits[ch] = 0 | (targ_bits[ch] * pe[gr][ch] / 700.0 - targ_bits[ch]);\n\n /* at most increase bits by 1.5*average */\n if (add_bits[ch] > mean_bits * 3 / 4)\n add_bits[ch] = mean_bits * 3 / 4;\n if (add_bits[ch] < 0)\n add_bits[ch] = 0;\n\n if (add_bits[ch] + targ_bits[ch] > LameInternalFlags_1.MAX_BITS_PER_CHANNEL)\n add_bits[ch] = Math.max(0,\n LameInternalFlags_1.MAX_BITS_PER_CHANNEL - targ_bits[ch]);\n\n bits += add_bits[ch];\n }\n if (bits > extra_bits) {\n for (ch = 0; ch < gfc.channels_out; ++ch) {\n add_bits[ch] = extra_bits * add_bits[ch] / bits;\n }\n }\n\n for (ch = 0; ch < gfc.channels_out; ++ch) {\n targ_bits[ch] += add_bits[ch];\n extra_bits -= add_bits[ch];\n }\n\n for (bits = 0, ch = 0; ch < gfc.channels_out; ++ch) {\n bits += targ_bits[ch];\n }\n if (bits > LameInternalFlags_1.MAX_BITS_PER_GRANULE) {\n var sum = 0;\n for (ch = 0; ch < gfc.channels_out; ++ch) {\n targ_bits[ch] *= LameInternalFlags_1.MAX_BITS_PER_GRANULE;\n targ_bits[ch] /= bits;\n sum += targ_bits[ch];\n }\n assert$19(sum <= LameInternalFlags_1.MAX_BITS_PER_GRANULE);\n }\n\n return max_bits;\n };\n\n this.reduce_side = function (targ_bits, ms_ener_ratio, mean_bits, max_bits) {\n assert$19(max_bits <= LameInternalFlags_1.MAX_BITS_PER_GRANULE);\n assert$19(targ_bits[0] + targ_bits[1] <= LameInternalFlags_1.MAX_BITS_PER_GRANULE);\n\n /*\n * ms_ener_ratio = 0: allocate 66/33 mid/side fac=.33 ms_ener_ratio =.5:\n * allocate 50/50 mid/side fac= 0\n */\n /* 75/25 split is fac=.5 */\n var fac = .33 * (.5 - ms_ener_ratio) / .5;\n if (fac < 0)\n fac = 0;\n if (fac > .5)\n fac = .5;\n\n /* number of bits to move from side channel to mid channel */\n /* move_bits = fac*targ_bits[1]; */\n var move_bits = 0 | (fac * .5 * (targ_bits[0] + targ_bits[1]));\n\n if (move_bits > LameInternalFlags_1.MAX_BITS_PER_CHANNEL - targ_bits[0]) {\n move_bits = LameInternalFlags_1.MAX_BITS_PER_CHANNEL - targ_bits[0];\n }\n if (move_bits < 0)\n move_bits = 0;\n\n if (targ_bits[1] >= 125) {\n /* dont reduce side channel below 125 bits */\n if (targ_bits[1] - move_bits > 125) {\n\n /* if mid channel already has 2x more than average, dont bother */\n /* mean_bits = bits per granule (for both channels) */\n if (targ_bits[0] < mean_bits)\n targ_bits[0] += move_bits;\n targ_bits[1] -= move_bits;\n } else {\n targ_bits[0] += targ_bits[1] - 125;\n targ_bits[1] = 125;\n }\n }\n\n move_bits = targ_bits[0] + targ_bits[1];\n if (move_bits > max_bits) {\n targ_bits[0] = (max_bits * targ_bits[0]) / move_bits;\n targ_bits[1] = (max_bits * targ_bits[1]) / move_bits;\n }\n assert$19(targ_bits[0] <= LameInternalFlags_1.MAX_BITS_PER_CHANNEL);\n assert$19(targ_bits[1] <= LameInternalFlags_1.MAX_BITS_PER_CHANNEL);\n assert$19(targ_bits[0] + targ_bits[1] <= LameInternalFlags_1.MAX_BITS_PER_GRANULE);\n };\n\n /**\n * Robert Hegemann 2001-04-27:\n * this adjusts the ATH, keeping the original noise floor\n * affects the higher frequencies more than the lower ones\n */\n this.athAdjust = function (a, x, athFloor) {\n /*\n * work in progress\n */\n var o = 90.30873362;\n var p = 94.82444863;\n var u = Util$19.FAST_LOG10_X(x, 10.0);\n var v = a * a;\n var w = 0.0;\n u -= athFloor;\n /* undo scaling */\n if (v > 1E-20)\n w = 1. + Util$19.FAST_LOG10_X(v, 10.0 / o);\n if (w < 0)\n w = 0.;\n u *= w;\n u += athFloor + o - p;\n /* redo scaling */\n\n return Math.pow(10., 0.1 * u);\n };\n\n /**\n * Calculate the allowed distortion for each scalefactor band, as determined\n * by the psychoacoustic model. xmin(sb) = ratio(sb) * en(sb) / bw(sb)\n *\n * returns number of sfb's with energy > ATH\n */\n this.calc_xmin = function (gfp, ratio, cod_info, pxmin) {\n var pxminPos = 0;\n var gfc = gfp.internal_flags;\n var gsfb, j = 0, ath_over = 0;\n var ATH = gfc.ATH;\n var xr = cod_info.xr;\n var enable_athaa_fix = (gfp.VBR == VbrMode$19.vbr_mtrh) ? 1 : 0;\n var masking_lower = gfc.masking_lower;\n\n if (gfp.VBR == VbrMode$19.vbr_mtrh || gfp.VBR == VbrMode$19.vbr_mt) {\n /* was already done in PSY-Model */\n masking_lower = 1.0;\n }\n\n for (gsfb = 0; gsfb < cod_info.psy_lmax; gsfb++) {\n var en0, xmin;\n var rh1, rh2;\n var width, l;\n\n if (gfp.VBR == VbrMode$19.vbr_rh || gfp.VBR == VbrMode$19.vbr_mtrh)\n xmin = athAdjust(ATH.adjust, ATH.l[gsfb], ATH.floor);\n else\n xmin = ATH.adjust * ATH.l[gsfb];\n\n width = cod_info.width[gsfb];\n rh1 = xmin / width;\n rh2 = DBL_EPSILON;\n l = width >> 1;\n en0 = 0.0;\n do {\n var xa, xb;\n xa = xr[j] * xr[j];\n en0 += xa;\n rh2 += (xa < rh1) ? xa : rh1;\n j++;\n xb = xr[j] * xr[j];\n en0 += xb;\n rh2 += (xb < rh1) ? xb : rh1;\n j++;\n } while (--l > 0);\n if (en0 > xmin)\n ath_over++;\n\n if (gsfb == Encoder_1.SBPSY_l) {\n var x = xmin * gfc.nsPsy.longfact[gsfb];\n if (rh2 < x) {\n rh2 = x;\n }\n }\n if (enable_athaa_fix != 0) {\n xmin = rh2;\n }\n if (!gfp.ATHonly) {\n var e = ratio.en.l[gsfb];\n if (e > 0.0) {\n var x;\n x = en0 * ratio.thm.l[gsfb] * masking_lower / e;\n if (enable_athaa_fix != 0)\n x *= gfc.nsPsy.longfact[gsfb];\n if (xmin < x)\n xmin = x;\n }\n }\n if (enable_athaa_fix != 0)\n pxmin[pxminPos++] = xmin;\n else\n pxmin[pxminPos++] = xmin * gfc.nsPsy.longfact[gsfb];\n }\n /* end of long block loop */\n\n /* use this function to determine the highest non-zero coeff */\n var max_nonzero = 575;\n if (cod_info.block_type != Encoder_1.SHORT_TYPE) {\n // NORM, START or STOP type, but not SHORT\n var k = 576;\n while (k-- != 0 && BitStream.EQ(xr[k], 0)) {\n max_nonzero = k;\n }\n }\n cod_info.max_nonzero_coeff = max_nonzero;\n\n for (var sfb = cod_info.sfb_smin; gsfb < cod_info.psymax; sfb++, gsfb += 3) {\n var width, b;\n var tmpATH;\n if (gfp.VBR == VbrMode$19.vbr_rh || gfp.VBR == VbrMode$19.vbr_mtrh)\n tmpATH = athAdjust(ATH.adjust, ATH.s[sfb], ATH.floor);\n else\n tmpATH = ATH.adjust * ATH.s[sfb];\n\n width = cod_info.width[gsfb];\n for (b = 0; b < 3; b++) {\n var en0 = 0.0, xmin;\n var rh1, rh2;\n var l = width >> 1;\n\n rh1 = tmpATH / width;\n rh2 = DBL_EPSILON;\n do {\n var xa, xb;\n xa = xr[j] * xr[j];\n en0 += xa;\n rh2 += (xa < rh1) ? xa : rh1;\n j++;\n xb = xr[j] * xr[j];\n en0 += xb;\n rh2 += (xb < rh1) ? xb : rh1;\n j++;\n } while (--l > 0);\n if (en0 > tmpATH)\n ath_over++;\n if (sfb == Encoder_1.SBPSY_s) {\n var x = tmpATH * gfc.nsPsy.shortfact[sfb];\n if (rh2 < x) {\n rh2 = x;\n }\n }\n if (enable_athaa_fix != 0)\n xmin = rh2;\n else\n xmin = tmpATH;\n\n if (!gfp.ATHonly && !gfp.ATHshort) {\n var e = ratio.en.s[sfb][b];\n if (e > 0.0) {\n var x;\n x = en0 * ratio.thm.s[sfb][b] * masking_lower / e;\n if (enable_athaa_fix != 0)\n x *= gfc.nsPsy.shortfact[sfb];\n if (xmin < x)\n xmin = x;\n }\n }\n if (enable_athaa_fix != 0)\n pxmin[pxminPos++] = xmin;\n else\n pxmin[pxminPos++] = xmin * gfc.nsPsy.shortfact[sfb];\n }\n /* b */\n if (gfp.useTemporal) {\n if (pxmin[pxminPos - 3] > pxmin[pxminPos - 3 + 1])\n pxmin[pxminPos - 3 + 1] += (pxmin[pxminPos - 3] - pxmin[pxminPos - 3 + 1])\n * gfc.decay;\n if (pxmin[pxminPos - 3 + 1] > pxmin[pxminPos - 3 + 2])\n pxmin[pxminPos - 3 + 2] += (pxmin[pxminPos - 3 + 1] - pxmin[pxminPos - 3 + 2])\n * gfc.decay;\n }\n }\n /* end of short block sfb loop */\n\n return ath_over;\n };\n\n function StartLine(j) {\n this.s = j;\n }\n\n this.calc_noise_core = function (cod_info, startline, l, step) {\n var noise = 0;\n var j = startline.s;\n var ix = cod_info.l3_enc;\n\n if (j > cod_info.count1) {\n while ((l--) != 0) {\n var temp;\n temp = cod_info.xr[j];\n j++;\n noise += temp * temp;\n temp = cod_info.xr[j];\n j++;\n noise += temp * temp;\n }\n } else if (j > cod_info.big_values) {\n var ix01 = new_float$19(2);\n ix01[0] = 0;\n ix01[1] = step;\n while ((l--) != 0) {\n var temp;\n temp = Math.abs(cod_info.xr[j]) - ix01[ix[j]];\n j++;\n noise += temp * temp;\n temp = Math.abs(cod_info.xr[j]) - ix01[ix[j]];\n j++;\n noise += temp * temp;\n }\n } else {\n while ((l--) != 0) {\n var temp;\n temp = Math.abs(cod_info.xr[j]) - pow43[ix[j]] * step;\n j++;\n noise += temp * temp;\n temp = Math.abs(cod_info.xr[j]) - pow43[ix[j]] * step;\n j++;\n noise += temp * temp;\n }\n }\n\n startline.s = j;\n return noise;\n };\n\n /**\n *
\n     * -oo dB  =>  -1.00\n     * - 6 dB  =>  -0.97\n     * - 3 dB  =>  -0.80\n     * - 2 dB  =>  -0.64\n     * - 1 dB  =>  -0.38\n     *   0 dB  =>   0.00\n     * + 1 dB  =>  +0.49\n     * + 2 dB  =>  +1.06\n     * + 3 dB  =>  +1.68\n     * + 6 dB  =>  +3.69\n     * +10 dB  =>  +6.45\n     * 
\n */\n this.calc_noise = function (cod_info, l3_xmin, distort, res, prev_noise) {\n var distortPos = 0;\n var l3_xminPos = 0;\n var sfb, l, over = 0;\n var over_noise_db = 0;\n /* 0 dB relative to masking */\n var tot_noise_db = 0;\n /* -200 dB relative to masking */\n var max_noise = -20.0;\n var j = 0;\n var scalefac = cod_info.scalefac;\n var scalefacPos = 0;\n\n res.over_SSD = 0;\n\n for (sfb = 0; sfb < cod_info.psymax; sfb++) {\n var s = cod_info.global_gain\n - (((scalefac[scalefacPos++]) + (cod_info.preflag != 0 ? pretab[sfb]\n : 0)) << (cod_info.scalefac_scale + 1))\n - cod_info.subblock_gain[cod_info.window[sfb]] * 8;\n var noise = 0.0;\n\n if (prev_noise != null && (prev_noise.step[sfb] == s)) {\n\n /* use previously computed values */\n noise = prev_noise.noise[sfb];\n j += cod_info.width[sfb];\n distort[distortPos++] = noise / l3_xmin[l3_xminPos++];\n\n noise = prev_noise.noise_log[sfb];\n\n } else {\n var step = POW20(s);\n l = cod_info.width[sfb] >> 1;\n\n if ((j + cod_info.width[sfb]) > cod_info.max_nonzero_coeff) {\n var usefullsize;\n usefullsize = cod_info.max_nonzero_coeff - j + 1;\n\n if (usefullsize > 0)\n l = usefullsize >> 1;\n else\n l = 0;\n }\n\n var sl = new StartLine(j);\n noise = this.calc_noise_core(cod_info, sl, l, step);\n j = sl.s;\n\n if (prev_noise != null) {\n /* save noise values */\n prev_noise.step[sfb] = s;\n prev_noise.noise[sfb] = noise;\n }\n\n noise = distort[distortPos++] = noise / l3_xmin[l3_xminPos++];\n\n /* multiplying here is adding in dB, but can overflow */\n noise = Util$19.FAST_LOG10(Math.max(noise, 1E-20));\n\n if (prev_noise != null) {\n /* save noise values */\n prev_noise.noise_log[sfb] = noise;\n }\n }\n\n if (prev_noise != null) {\n /* save noise values */\n prev_noise.global_gain = cod_info.global_gain;\n }\n\n tot_noise_db += noise;\n\n if (noise > 0.0) {\n var tmp;\n\n tmp = Math.max(0 | (noise * 10 + .5), 1);\n res.over_SSD += tmp * tmp;\n\n over++;\n /* multiplying here is adding in dB -but can overflow */\n /* over_noise *= noise; */\n over_noise_db += noise;\n }\n max_noise = Math.max(max_noise, noise);\n\n }\n\n res.over_count = over;\n res.tot_noise = tot_noise_db;\n res.over_noise = over_noise_db;\n res.max_noise = max_noise;\n\n return over;\n };\n\n /**\n * updates plotting data\n *\n * Mark Taylor 2000-??-??\n *\n * Robert Hegemann: moved noise/distortion calc into it\n */\n this.set_pinfo = function (gfp, cod_info, ratio, gr, ch) {\n var gfc = gfp.internal_flags;\n var sfb, sfb2;\n var l;\n var en0, en1;\n var ifqstep = (cod_info.scalefac_scale == 0) ? .5 : 1.0;\n var scalefac = cod_info.scalefac;\n\n var l3_xmin = new_float$19(L3Side.SFBMAX);\n var xfsf = new_float$19(L3Side.SFBMAX);\n var noise = new CalcNoiseResult();\n\n calc_xmin(gfp, ratio, cod_info, l3_xmin);\n calc_noise(cod_info, l3_xmin, xfsf, noise, null);\n\n var j = 0;\n sfb2 = cod_info.sfb_lmax;\n if (cod_info.block_type != Encoder_1.SHORT_TYPE\n && 0 == cod_info.mixed_block_flag)\n sfb2 = 22;\n for (sfb = 0; sfb < sfb2; sfb++) {\n var start = gfc.scalefac_band.l[sfb];\n var end = gfc.scalefac_band.l[sfb + 1];\n var bw = end - start;\n for (en0 = 0.0; j < end; j++)\n en0 += cod_info.xr[j] * cod_info.xr[j];\n en0 /= bw;\n /* convert to MDCT units */\n /* scaling so it shows up on FFT plot */\n en1 = 1e15;\n gfc.pinfo.en[gr][ch][sfb] = en1 * en0;\n gfc.pinfo.xfsf[gr][ch][sfb] = en1 * l3_xmin[sfb] * xfsf[sfb] / bw;\n\n if (ratio.en.l[sfb] > 0 && !gfp.ATHonly)\n en0 = en0 / ratio.en.l[sfb];\n else\n en0 = 0.0;\n\n gfc.pinfo.thr[gr][ch][sfb] = en1\n * Math.max(en0 * ratio.thm.l[sfb], gfc.ATH.l[sfb]);\n\n /* there is no scalefactor bands >= SBPSY_l */\n gfc.pinfo.LAMEsfb[gr][ch][sfb] = 0;\n if (cod_info.preflag != 0 && sfb >= 11)\n gfc.pinfo.LAMEsfb[gr][ch][sfb] = -ifqstep * pretab[sfb];\n\n if (sfb < Encoder_1.SBPSY_l) {\n /* scfsi should be decoded by caller side */\n assert$19(scalefac[sfb] >= 0);\n gfc.pinfo.LAMEsfb[gr][ch][sfb] -= ifqstep * scalefac[sfb];\n }\n }\n /* for sfb */\n\n if (cod_info.block_type == Encoder_1.SHORT_TYPE) {\n sfb2 = sfb;\n for (sfb = cod_info.sfb_smin; sfb < Encoder_1.SBMAX_s; sfb++) {\n var start = gfc.scalefac_band.s[sfb];\n var end = gfc.scalefac_band.s[sfb + 1];\n var bw = end - start;\n for (var i = 0; i < 3; i++) {\n for (en0 = 0.0, l = start; l < end; l++) {\n en0 += cod_info.xr[j] * cod_info.xr[j];\n j++;\n }\n en0 = Math.max(en0 / bw, 1e-20);\n /* convert to MDCT units */\n /* scaling so it shows up on FFT plot */\n en1 = 1e15;\n\n gfc.pinfo.en_s[gr][ch][3 * sfb + i] = en1 * en0;\n gfc.pinfo.xfsf_s[gr][ch][3 * sfb + i] = en1 * l3_xmin[sfb2]\n * xfsf[sfb2] / bw;\n if (ratio.en.s[sfb][i] > 0)\n en0 = en0 / ratio.en.s[sfb][i];\n else\n en0 = 0.0;\n if (gfp.ATHonly || gfp.ATHshort)\n en0 = 0;\n\n gfc.pinfo.thr_s[gr][ch][3 * sfb + i] = en1\n * Math.max(en0 * ratio.thm.s[sfb][i],\n gfc.ATH.s[sfb]);\n\n /* there is no scalefactor bands >= SBPSY_s */\n gfc.pinfo.LAMEsfb_s[gr][ch][3 * sfb + i] = -2.0\n * cod_info.subblock_gain[i];\n if (sfb < Encoder_1.SBPSY_s) {\n gfc.pinfo.LAMEsfb_s[gr][ch][3 * sfb + i] -= ifqstep\n * scalefac[sfb2];\n }\n sfb2++;\n }\n }\n }\n /* block type short */\n gfc.pinfo.LAMEqss[gr][ch] = cod_info.global_gain;\n gfc.pinfo.LAMEmainbits[gr][ch] = cod_info.part2_3_length\n + cod_info.part2_length;\n gfc.pinfo.LAMEsfbits[gr][ch] = cod_info.part2_length;\n\n gfc.pinfo.over[gr][ch] = noise.over_count;\n gfc.pinfo.max_noise[gr][ch] = noise.max_noise * 10.0;\n gfc.pinfo.over_noise[gr][ch] = noise.over_noise * 10.0;\n gfc.pinfo.tot_noise[gr][ch] = noise.tot_noise * 10.0;\n gfc.pinfo.over_SSD[gr][ch] = noise.over_SSD;\n };\n\n /**\n * updates plotting data for a whole frame\n *\n * Robert Hegemann 2000-10-21\n */\n \n\n}\n\nvar QuantizePVT_1 = QuantizePVT$1;\n\n/*\n *\tMP3 huffman table selecting and bit counting\n *\n *\tCopyright (c) 1999-2005 Takehiro TOMINAGA\n *\tCopyright (c) 2002-2005 Gabriel Bouvigne\n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\t See the GNU\n * Library General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this library; if not, write to the\n * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n * Boston, MA 02111-1307, USA.\n */\n\n/* $Id: Takehiro.java,v 1.26 2011/05/24 20:48:06 kenchis Exp $ */\n\n//package mp3;\n\n//import java.util.Arrays;\n\nvar System$18 = common.System;\nvar Arrays$18 = common.Arrays;\nvar new_int$18 = common.new_int;\nvar assert$18 = common.assert;\n\n\n\n\n\n\n\nfunction Takehiro$1() {\n\n var qupvt = null;\n this.qupvt = null;\n\n this.setModules = function (_qupvt) {\n this.qupvt = _qupvt;\n qupvt = _qupvt;\n };\n\n function Bits(b) {\n this.bits = 0 | b;\n }\n\n var subdv_table = [[0, 0], /* 0 bands */\n [0, 0], /* 1 bands */\n [0, 0], /* 2 bands */\n [0, 0], /* 3 bands */\n [0, 0], /* 4 bands */\n [0, 1], /* 5 bands */\n [1, 1], /* 6 bands */\n [1, 1], /* 7 bands */\n [1, 2], /* 8 bands */\n [2, 2], /* 9 bands */\n [2, 3], /* 10 bands */\n [2, 3], /* 11 bands */\n [3, 4], /* 12 bands */\n [3, 4], /* 13 bands */\n [3, 4], /* 14 bands */\n [4, 5], /* 15 bands */\n [4, 5], /* 16 bands */\n [4, 6], /* 17 bands */\n [5, 6], /* 18 bands */\n [5, 6], /* 19 bands */\n [5, 7], /* 20 bands */\n [6, 7], /* 21 bands */\n [6, 7], /* 22 bands */\n ];\n\n /**\n * nonlinear quantization of xr More accurate formula than the ISO formula.\n * Takes into account the fact that we are quantizing xr . ix, but we want\n * ix^4/3 to be as close as possible to x^4/3. (taking the nearest int would\n * mean ix is as close as possible to xr, which is different.)\n *\n * From Segher Boessenkool 11/1999\n *\n * 09/2000: ASM code removed in favor of IEEE754 hack by Takehiro Tominaga.\n * If you need the ASM code, check CVS circa Aug 2000.\n *\n * 01/2004: Optimizations by Gabriel Bouvigne\n */\n function quantize_lines_xrpow_01(l, istep, xr, xrPos, ix, ixPos) {\n var compareval0 = (1.0 - 0.4054) / istep;\n\n assert$18(l > 0);\n l = l >> 1;\n while ((l--) != 0) {\n ix[ixPos++] = (compareval0 > xr[xrPos++]) ? 0 : 1;\n ix[ixPos++] = (compareval0 > xr[xrPos++]) ? 0 : 1;\n }\n }\n\n /**\n * XRPOW_FTOI is a macro to convert floats to ints.
\n * if XRPOW_FTOI(x) = nearest_int(x), then QUANTFAC(x)=adj43asm[x]
\n * ROUNDFAC= -0.0946
\n *\n * if XRPOW_FTOI(x) = floor(x), then QUANTFAC(x)=asj43[x]
\n * ROUNDFAC=0.4054
\n *\n * Note: using floor() or 0| is extremely slow. On machines where the\n * TAKEHIRO_IEEE754_HACK code above does not work, it is worthwile to write\n * some ASM for XRPOW_FTOI().\n */\n function quantize_lines_xrpow(l, istep, xr, xrPos, ix, ixPos) {\n assert$18(l > 0);\n\n l = l >> 1;\n var remaining = l % 2;\n l = l >> 1;\n while (l-- != 0) {\n var x0, x1, x2, x3;\n var rx0, rx1, rx2, rx3;\n\n x0 = xr[xrPos++] * istep;\n x1 = xr[xrPos++] * istep;\n rx0 = 0 | x0;\n x2 = xr[xrPos++] * istep;\n rx1 = 0 | x1;\n x3 = xr[xrPos++] * istep;\n rx2 = 0 | x2;\n x0 += qupvt.adj43[rx0];\n rx3 = 0 | x3;\n x1 += qupvt.adj43[rx1];\n ix[ixPos++] = 0 | x0;\n x2 += qupvt.adj43[rx2];\n ix[ixPos++] = 0 | x1;\n x3 += qupvt.adj43[rx3];\n ix[ixPos++] = 0 | x2;\n ix[ixPos++] = 0 | x3;\n }\n if (remaining != 0) {\n var x0, x1;\n var rx0, rx1;\n\n x0 = xr[xrPos++] * istep;\n x1 = xr[xrPos++] * istep;\n rx0 = 0 | x0;\n rx1 = 0 | x1;\n x0 += qupvt.adj43[rx0];\n x1 += qupvt.adj43[rx1];\n ix[ixPos++] = 0 | x0;\n ix[ixPos++] = 0 | x1;\n }\n }\n\n /**\n * Quantization function This function will select which lines to quantize\n * and call the proper quantization function\n */\n function quantize_xrpow(xp, pi, istep, codInfo, prevNoise) {\n /* quantize on xr^(3/4) instead of xr */\n var sfb;\n var sfbmax;\n var j = 0;\n var prev_data_use;\n var accumulate = 0;\n var accumulate01 = 0;\n var xpPos = 0;\n var iData = pi;\n var iDataPos = 0;\n var acc_iData = iData;\n var acc_iDataPos = 0;\n var acc_xp = xp;\n var acc_xpPos = 0;\n\n /*\n * Reusing previously computed data does not seems to work if global\n * gain is changed. Finding why it behaves this way would allow to use a\n * cache of previously computed values (let's 10 cached values per sfb)\n * that would probably provide a noticeable speedup\n */\n prev_data_use = (prevNoise != null && (codInfo.global_gain == prevNoise.global_gain));\n\n if (codInfo.block_type == Encoder_1.SHORT_TYPE)\n sfbmax = 38;\n else\n sfbmax = 21;\n\n for (sfb = 0; sfb <= sfbmax; sfb++) {\n var step = -1;\n\n if (prev_data_use || codInfo.block_type == Encoder_1.NORM_TYPE) {\n step = codInfo.global_gain\n - ((codInfo.scalefac[sfb] + (codInfo.preflag != 0 ? qupvt.pretab[sfb]\n : 0)) << (codInfo.scalefac_scale + 1))\n - codInfo.subblock_gain[codInfo.window[sfb]] * 8;\n }\n assert$18(codInfo.width[sfb] >= 0);\n if (prev_data_use && (prevNoise.step[sfb] == step)) {\n /*\n * do not recompute this part, but compute accumulated lines\n */\n if (accumulate != 0) {\n quantize_lines_xrpow(accumulate, istep, acc_xp, acc_xpPos,\n acc_iData, acc_iDataPos);\n accumulate = 0;\n }\n if (accumulate01 != 0) {\n quantize_lines_xrpow_01(accumulate01, istep, acc_xp,\n acc_xpPos, acc_iData, acc_iDataPos);\n accumulate01 = 0;\n }\n } else { /* should compute this part */\n var l = codInfo.width[sfb];\n\n if ((j + codInfo.width[sfb]) > codInfo.max_nonzero_coeff) {\n /* do not compute upper zero part */\n var usefullsize;\n usefullsize = codInfo.max_nonzero_coeff - j + 1;\n Arrays$18.fill(pi, codInfo.max_nonzero_coeff, 576, 0);\n l = usefullsize;\n\n if (l < 0) {\n l = 0;\n }\n\n /* no need to compute higher sfb values */\n sfb = sfbmax + 1;\n }\n\n /* accumulate lines to quantize */\n if (0 == accumulate && 0 == accumulate01) {\n acc_iData = iData;\n acc_iDataPos = iDataPos;\n acc_xp = xp;\n acc_xpPos = xpPos;\n }\n if (prevNoise != null && prevNoise.sfb_count1 > 0\n && sfb >= prevNoise.sfb_count1\n && prevNoise.step[sfb] > 0\n && step >= prevNoise.step[sfb]) {\n\n if (accumulate != 0) {\n quantize_lines_xrpow(accumulate, istep, acc_xp,\n acc_xpPos, acc_iData, acc_iDataPos);\n accumulate = 0;\n acc_iData = iData;\n acc_iDataPos = iDataPos;\n acc_xp = xp;\n acc_xpPos = xpPos;\n }\n accumulate01 += l;\n } else {\n if (accumulate01 != 0) {\n quantize_lines_xrpow_01(accumulate01, istep, acc_xp,\n acc_xpPos, acc_iData, acc_iDataPos);\n accumulate01 = 0;\n acc_iData = iData;\n acc_iDataPos = iDataPos;\n acc_xp = xp;\n acc_xpPos = xpPos;\n }\n accumulate += l;\n }\n\n if (l <= 0) {\n /*\n * rh: 20040215 may happen due to \"prev_data_use\"\n * optimization\n */\n if (accumulate01 != 0) {\n quantize_lines_xrpow_01(accumulate01, istep, acc_xp,\n acc_xpPos, acc_iData, acc_iDataPos);\n accumulate01 = 0;\n }\n if (accumulate != 0) {\n quantize_lines_xrpow(accumulate, istep, acc_xp,\n acc_xpPos, acc_iData, acc_iDataPos);\n accumulate = 0;\n }\n\n break;\n /* ends for-loop */\n }\n }\n if (sfb <= sfbmax) {\n iDataPos += codInfo.width[sfb];\n xpPos += codInfo.width[sfb];\n j += codInfo.width[sfb];\n }\n }\n if (accumulate != 0) { /* last data part */\n quantize_lines_xrpow(accumulate, istep, acc_xp, acc_xpPos,\n acc_iData, acc_iDataPos);\n accumulate = 0;\n }\n if (accumulate01 != 0) { /* last data part */\n quantize_lines_xrpow_01(accumulate01, istep, acc_xp, acc_xpPos,\n acc_iData, acc_iDataPos);\n accumulate01 = 0;\n }\n\n }\n\n /**\n * ix_max\n */\n function ix_max(ix, ixPos, endPos) {\n var max1 = 0, max2 = 0;\n\n do {\n var x1 = ix[ixPos++];\n var x2 = ix[ixPos++];\n if (max1 < x1)\n max1 = x1;\n\n if (max2 < x2)\n max2 = x2;\n } while (ixPos < endPos);\n if (max1 < max2)\n max1 = max2;\n return max1;\n }\n\n function count_bit_ESC(ix, ixPos, end, t1, t2, s) {\n /* ESC-table is used */\n var linbits = Tables_1.ht[t1].xlen * 65536 + Tables_1.ht[t2].xlen;\n var sum = 0, sum2;\n\n do {\n var x = ix[ixPos++];\n var y = ix[ixPos++];\n\n if (x != 0) {\n if (x > 14) {\n x = 15;\n sum += linbits;\n }\n x *= 16;\n }\n\n if (y != 0) {\n if (y > 14) {\n y = 15;\n sum += linbits;\n }\n x += y;\n }\n\n sum += Tables_1.largetbl[x];\n } while (ixPos < end);\n\n sum2 = sum & 0xffff;\n sum >>= 16;\n\n if (sum > sum2) {\n sum = sum2;\n t1 = t2;\n }\n\n s.bits += sum;\n return t1;\n }\n\n function count_bit_noESC(ix, ixPos, end, s) {\n /* No ESC-words */\n var sum1 = 0;\n var hlen1 = Tables_1.ht[1].hlen;\n\n do {\n var x = ix[ixPos + 0] * 2 + ix[ixPos + 1];\n ixPos += 2;\n sum1 += hlen1[x];\n } while (ixPos < end);\n\n s.bits += sum1;\n return 1;\n }\n\n function count_bit_noESC_from2(ix, ixPos, end, t1, s) {\n /* No ESC-words */\n var sum = 0, sum2;\n var xlen = Tables_1.ht[t1].xlen;\n var hlen;\n if (t1 == 2)\n hlen = Tables_1.table23;\n else\n hlen = Tables_1.table56;\n\n do {\n var x = ix[ixPos + 0] * xlen + ix[ixPos + 1];\n ixPos += 2;\n sum += hlen[x];\n } while (ixPos < end);\n\n sum2 = sum & 0xffff;\n sum >>= 16;\n\n if (sum > sum2) {\n sum = sum2;\n t1++;\n }\n\n s.bits += sum;\n return t1;\n }\n\n function count_bit_noESC_from3(ix, ixPos, end, t1, s) {\n /* No ESC-words */\n var sum1 = 0;\n var sum2 = 0;\n var sum3 = 0;\n var xlen = Tables_1.ht[t1].xlen;\n var hlen1 = Tables_1.ht[t1].hlen;\n var hlen2 = Tables_1.ht[t1 + 1].hlen;\n var hlen3 = Tables_1.ht[t1 + 2].hlen;\n\n do {\n var x = ix[ixPos + 0] * xlen + ix[ixPos + 1];\n ixPos += 2;\n sum1 += hlen1[x];\n sum2 += hlen2[x];\n sum3 += hlen3[x];\n } while (ixPos < end);\n var t = t1;\n if (sum1 > sum2) {\n sum1 = sum2;\n t++;\n }\n if (sum1 > sum3) {\n sum1 = sum3;\n t = t1 + 2;\n }\n s.bits += sum1;\n\n return t;\n }\n\n /*************************************************************************/\n /* choose table */\n /*************************************************************************/\n\n var huf_tbl_noESC = [1, 2, 5, 7, 7, 10, 10, 13, 13,\n 13, 13, 13, 13, 13, 13];\n\n /**\n * Choose the Huffman table that will encode ix[begin..end] with the fewest\n * bits.\n *\n * Note: This code contains knowledge about the sizes and characteristics of\n * the Huffman tables as defined in the IS (Table B.7), and will not work\n * with any arbitrary tables.\n */\n function choose_table(ix, ixPos, endPos, s) {\n var max = ix_max(ix, ixPos, endPos);\n\n switch (max) {\n case 0:\n return max;\n\n case 1:\n return count_bit_noESC(ix, ixPos, endPos, s);\n\n case 2:\n case 3:\n return count_bit_noESC_from2(ix, ixPos, endPos,\n huf_tbl_noESC[max - 1], s);\n\n case 4:\n case 5:\n case 6:\n case 7:\n case 8:\n case 9:\n case 10:\n case 11:\n case 12:\n case 13:\n case 14:\n case 15:\n return count_bit_noESC_from3(ix, ixPos, endPos,\n huf_tbl_noESC[max - 1], s);\n\n default:\n /* try tables with linbits */\n if (max > QuantizePVT_1.IXMAX_VAL) {\n s.bits = QuantizePVT_1.LARGE_BITS;\n return -1;\n }\n max -= 15;\n var choice2;\n for (choice2 = 24; choice2 < 32; choice2++) {\n if (Tables_1.ht[choice2].linmax >= max) {\n break;\n }\n }\n var choice;\n for (choice = choice2 - 8; choice < 24; choice++) {\n if (Tables_1.ht[choice].linmax >= max) {\n break;\n }\n }\n return count_bit_ESC(ix, ixPos, endPos, choice, choice2, s);\n }\n }\n\n /**\n * count_bit\n */\n this.noquant_count_bits = function (gfc, gi, prev_noise) {\n var ix = gi.l3_enc;\n var i = Math.min(576, ((gi.max_nonzero_coeff + 2) >> 1) << 1);\n\n if (prev_noise != null)\n prev_noise.sfb_count1 = 0;\n\n /* Determine count1 region */\n for (; i > 1; i -= 2)\n if ((ix[i - 1] | ix[i - 2]) != 0)\n break;\n gi.count1 = i;\n\n /* Determines the number of bits to encode the quadruples. */\n var a1 = 0;\n var a2 = 0;\n for (; i > 3; i -= 4) {\n var p;\n /* hack to check if all values <= 1 */\n //throw \"TODO: HACK if ((((long) ix[i - 1] | (long) ix[i - 2] | (long) ix[i - 3] | (long) ix[i - 4]) & 0xffffffffL) > 1L \"\n //if (true) {\n if (((ix[i - 1] | ix[i - 2] | ix[i - 3] | ix[i - 4]) & 0x7fffffff) > 1) {\n break;\n }\n p = ((ix[i - 4] * 2 + ix[i - 3]) * 2 + ix[i - 2]) * 2 + ix[i - 1];\n a1 += Tables_1.t32l[p];\n a2 += Tables_1.t33l[p];\n }\n var bits = a1;\n gi.count1table_select = 0;\n if (a1 > a2) {\n bits = a2;\n gi.count1table_select = 1;\n }\n\n gi.count1bits = bits;\n gi.big_values = i;\n if (i == 0)\n return bits;\n\n if (gi.block_type == Encoder_1.SHORT_TYPE) {\n a1 = 3 * gfc.scalefac_band.s[3];\n if (a1 > gi.big_values)\n a1 = gi.big_values;\n a2 = gi.big_values;\n\n } else if (gi.block_type == Encoder_1.NORM_TYPE) {\n assert$18(i <= 576);\n /* bv_scf has 576 entries (0..575) */\n a1 = gi.region0_count = gfc.bv_scf[i - 2];\n a2 = gi.region1_count = gfc.bv_scf[i - 1];\n\n assert$18(a1 + a2 + 2 < Encoder_1.SBPSY_l);\n a2 = gfc.scalefac_band.l[a1 + a2 + 2];\n a1 = gfc.scalefac_band.l[a1 + 1];\n if (a2 < i) {\n var bi = new Bits(bits);\n gi.table_select[2] = choose_table(ix, a2, i, bi);\n bits = bi.bits;\n }\n } else {\n gi.region0_count = 7;\n /* gi.region1_count = SBPSY_l - 7 - 1; */\n gi.region1_count = Encoder_1.SBMAX_l - 1 - 7 - 1;\n a1 = gfc.scalefac_band.l[7 + 1];\n a2 = i;\n if (a1 > a2) {\n a1 = a2;\n }\n }\n\n /* have to allow for the case when bigvalues < region0 < region1 */\n /* (and region0, region1 are ignored) */\n a1 = Math.min(a1, i);\n a2 = Math.min(a2, i);\n\n assert$18(a1 >= 0);\n assert$18(a2 >= 0);\n\n /* Count the number of bits necessary to code the bigvalues region. */\n if (0 < a1) {\n var bi = new Bits(bits);\n gi.table_select[0] = choose_table(ix, 0, a1, bi);\n bits = bi.bits;\n }\n if (a1 < a2) {\n var bi = new Bits(bits);\n gi.table_select[1] = choose_table(ix, a1, a2, bi);\n bits = bi.bits;\n }\n if (gfc.use_best_huffman == 2) {\n gi.part2_3_length = bits;\n best_huffman_divide(gfc, gi);\n bits = gi.part2_3_length;\n }\n\n if (prev_noise != null) {\n if (gi.block_type == Encoder_1.NORM_TYPE) {\n var sfb = 0;\n while (gfc.scalefac_band.l[sfb] < gi.big_values) {\n sfb++;\n }\n prev_noise.sfb_count1 = sfb;\n }\n }\n\n return bits;\n };\n\n this.count_bits = function (gfc, xr, gi, prev_noise) {\n var ix = gi.l3_enc;\n\n /* since quantize_xrpow uses table lookup, we need to check this first: */\n var w = (QuantizePVT_1.IXMAX_VAL) / qupvt.IPOW20(gi.global_gain);\n\n if (gi.xrpow_max > w)\n return QuantizePVT_1.LARGE_BITS;\n\n quantize_xrpow(xr, ix, qupvt.IPOW20(gi.global_gain), gi, prev_noise);\n\n if ((gfc.substep_shaping & 2) != 0) {\n var j = 0;\n /* 0.634521682242439 = 0.5946*2**(.5*0.1875) */\n var gain = gi.global_gain + gi.scalefac_scale;\n var roundfac = 0.634521682242439 / qupvt.IPOW20(gain);\n for (var sfb = 0; sfb < gi.sfbmax; sfb++) {\n var width = gi.width[sfb];\n assert$18(width >= 0);\n if (0 == gfc.pseudohalf[sfb]) {\n j += width;\n } else {\n var k;\n for (k = j, j += width; k < j; ++k) {\n ix[k] = (xr[k] >= roundfac) ? ix[k] : 0;\n }\n }\n }\n }\n return this.noquant_count_bits(gfc, gi, prev_noise);\n };\n\n /**\n * re-calculate the best scalefac_compress using scfsi the saved bits are\n * kept in the bit reservoir.\n */\n function recalc_divide_init(gfc, cod_info, ix, r01_bits, r01_div, r0_tbl, r1_tbl) {\n var bigv = cod_info.big_values;\n\n for (var r0 = 0; r0 <= 7 + 15; r0++) {\n r01_bits[r0] = QuantizePVT_1.LARGE_BITS;\n }\n\n for (var r0 = 0; r0 < 16; r0++) {\n var a1 = gfc.scalefac_band.l[r0 + 1];\n if (a1 >= bigv)\n break;\n var r0bits = 0;\n var bi = new Bits(r0bits);\n var r0t = choose_table(ix, 0, a1, bi);\n r0bits = bi.bits;\n\n for (var r1 = 0; r1 < 8; r1++) {\n var a2 = gfc.scalefac_band.l[r0 + r1 + 2];\n if (a2 >= bigv)\n break;\n var bits = r0bits;\n bi = new Bits(bits);\n var r1t = choose_table(ix, a1, a2, bi);\n bits = bi.bits;\n if (r01_bits[r0 + r1] > bits) {\n r01_bits[r0 + r1] = bits;\n r01_div[r0 + r1] = r0;\n r0_tbl[r0 + r1] = r0t;\n r1_tbl[r0 + r1] = r1t;\n }\n }\n }\n }\n\n function recalc_divide_sub(gfc, cod_info2, gi, ix, r01_bits, r01_div, r0_tbl, r1_tbl) {\n var bigv = cod_info2.big_values;\n\n for (var r2 = 2; r2 < Encoder_1.SBMAX_l + 1; r2++) {\n var a2 = gfc.scalefac_band.l[r2];\n if (a2 >= bigv)\n break;\n var bits = r01_bits[r2 - 2] + cod_info2.count1bits;\n if (gi.part2_3_length <= bits)\n break;\n\n var bi = new Bits(bits);\n var r2t = choose_table(ix, a2, bigv, bi);\n bits = bi.bits;\n if (gi.part2_3_length <= bits)\n continue;\n\n gi.assign(cod_info2);\n gi.part2_3_length = bits;\n gi.region0_count = r01_div[r2 - 2];\n gi.region1_count = r2 - 2 - r01_div[r2 - 2];\n gi.table_select[0] = r0_tbl[r2 - 2];\n gi.table_select[1] = r1_tbl[r2 - 2];\n gi.table_select[2] = r2t;\n }\n }\n\n this.best_huffman_divide = function (gfc, gi) {\n var cod_info2 = new GrInfo_1();\n var ix = gi.l3_enc;\n var r01_bits = new_int$18(7 + 15 + 1);\n var r01_div = new_int$18(7 + 15 + 1);\n var r0_tbl = new_int$18(7 + 15 + 1);\n var r1_tbl = new_int$18(7 + 15 + 1);\n\n /* SHORT BLOCK stuff fails for MPEG2 */\n if (gi.block_type == Encoder_1.SHORT_TYPE && gfc.mode_gr == 1)\n return;\n\n cod_info2.assign(gi);\n if (gi.block_type == Encoder_1.NORM_TYPE) {\n recalc_divide_init(gfc, gi, ix, r01_bits, r01_div, r0_tbl, r1_tbl);\n recalc_divide_sub(gfc, cod_info2, gi, ix, r01_bits, r01_div,\n r0_tbl, r1_tbl);\n }\n var i = cod_info2.big_values;\n if (i == 0 || (ix[i - 2] | ix[i - 1]) > 1)\n return;\n\n i = gi.count1 + 2;\n if (i > 576)\n return;\n\n /* Determines the number of bits to encode the quadruples. */\n cod_info2.assign(gi);\n cod_info2.count1 = i;\n var a1 = 0;\n var a2 = 0;\n\n assert$18(i <= 576);\n\n for (; i > cod_info2.big_values; i -= 4) {\n var p = ((ix[i - 4] * 2 + ix[i - 3]) * 2 + ix[i - 2]) * 2\n + ix[i - 1];\n a1 += Tables_1.t32l[p];\n a2 += Tables_1.t33l[p];\n }\n cod_info2.big_values = i;\n\n cod_info2.count1table_select = 0;\n if (a1 > a2) {\n a1 = a2;\n cod_info2.count1table_select = 1;\n }\n\n cod_info2.count1bits = a1;\n\n if (cod_info2.block_type == Encoder_1.NORM_TYPE)\n recalc_divide_sub(gfc, cod_info2, gi, ix, r01_bits, r01_div,\n r0_tbl, r1_tbl);\n else {\n /* Count the number of bits necessary to code the bigvalues region. */\n cod_info2.part2_3_length = a1;\n a1 = gfc.scalefac_band.l[7 + 1];\n if (a1 > i) {\n a1 = i;\n }\n if (a1 > 0) {\n var bi = new Bits(cod_info2.part2_3_length);\n cod_info2.table_select[0] = choose_table(ix, 0, a1, bi);\n cod_info2.part2_3_length = bi.bits;\n }\n if (i > a1) {\n var bi = new Bits(cod_info2.part2_3_length);\n cod_info2.table_select[1] = choose_table(ix, a1, i, bi);\n cod_info2.part2_3_length = bi.bits;\n }\n if (gi.part2_3_length > cod_info2.part2_3_length)\n gi.assign(cod_info2);\n }\n };\n\n var slen1_n = [1, 1, 1, 1, 8, 2, 2, 2, 4, 4, 4, 8, 8, 8, 16, 16];\n var slen2_n = [1, 2, 4, 8, 1, 2, 4, 8, 2, 4, 8, 2, 4, 8, 4, 8];\n var slen1_tab = [0, 0, 0, 0, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4];\n var slen2_tab = [0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 3];\n Takehiro$1.slen1_tab = slen1_tab;\n Takehiro$1.slen2_tab = slen2_tab;\n\n function scfsi_calc(ch, l3_side) {\n var sfb;\n var gi = l3_side.tt[1][ch];\n var g0 = l3_side.tt[0][ch];\n\n for (var i = 0; i < Tables_1.scfsi_band.length - 1; i++) {\n for (sfb = Tables_1.scfsi_band[i]; sfb < Tables_1.scfsi_band[i + 1]; sfb++) {\n if (g0.scalefac[sfb] != gi.scalefac[sfb]\n && gi.scalefac[sfb] >= 0)\n break;\n }\n if (sfb == Tables_1.scfsi_band[i + 1]) {\n for (sfb = Tables_1.scfsi_band[i]; sfb < Tables_1.scfsi_band[i + 1]; sfb++) {\n gi.scalefac[sfb] = -1;\n }\n l3_side.scfsi[ch][i] = 1;\n }\n }\n var s1 = 0;\n var c1 = 0;\n for (sfb = 0; sfb < 11; sfb++) {\n if (gi.scalefac[sfb] == -1)\n continue;\n c1++;\n if (s1 < gi.scalefac[sfb])\n s1 = gi.scalefac[sfb];\n }\n var s2 = 0;\n var c2 = 0;\n for (; sfb < Encoder_1.SBPSY_l; sfb++) {\n if (gi.scalefac[sfb] == -1)\n continue;\n c2++;\n if (s2 < gi.scalefac[sfb])\n s2 = gi.scalefac[sfb];\n }\n\n for (var i = 0; i < 16; i++) {\n if (s1 < slen1_n[i] && s2 < slen2_n[i]) {\n var c = slen1_tab[i] * c1 + slen2_tab[i] * c2;\n if (gi.part2_length > c) {\n gi.part2_length = c;\n gi.scalefac_compress = i;\n }\n }\n }\n }\n\n /**\n * Find the optimal way to store the scalefactors. Only call this routine\n * after final scalefactors have been chosen and the channel/granule will\n * not be re-encoded.\n */\n this.best_scalefac_store = function (gfc, gr, ch, l3_side) {\n /* use scalefac_scale if we can */\n var gi = l3_side.tt[gr][ch];\n var sfb, i, j, l;\n var recalc = 0;\n\n /*\n * remove scalefacs from bands with ix=0. This idea comes from the AAC\n * ISO docs. added mt 3/00\n */\n /* check if l3_enc=0 */\n j = 0;\n for (sfb = 0; sfb < gi.sfbmax; sfb++) {\n var width = gi.width[sfb];\n assert$18(width >= 0);\n j += width;\n for (l = -width; l < 0; l++) {\n if (gi.l3_enc[l + j] != 0)\n break;\n }\n if (l == 0)\n gi.scalefac[sfb] = recalc = -2;\n /* anything goes. */\n /*\n * only best_scalefac_store and calc_scfsi know--and only they\n * should know--about the magic number -2.\n */\n }\n\n if (0 == gi.scalefac_scale && 0 == gi.preflag) {\n var s = 0;\n for (sfb = 0; sfb < gi.sfbmax; sfb++)\n if (gi.scalefac[sfb] > 0)\n s |= gi.scalefac[sfb];\n\n if (0 == (s & 1) && s != 0) {\n for (sfb = 0; sfb < gi.sfbmax; sfb++)\n if (gi.scalefac[sfb] > 0)\n gi.scalefac[sfb] >>= 1;\n\n gi.scalefac_scale = recalc = 1;\n }\n }\n\n if (0 == gi.preflag && gi.block_type != Encoder_1.SHORT_TYPE\n && gfc.mode_gr == 2) {\n for (sfb = 11; sfb < Encoder_1.SBPSY_l; sfb++)\n if (gi.scalefac[sfb] < qupvt.pretab[sfb]\n && gi.scalefac[sfb] != -2)\n break;\n if (sfb == Encoder_1.SBPSY_l) {\n for (sfb = 11; sfb < Encoder_1.SBPSY_l; sfb++)\n if (gi.scalefac[sfb] > 0)\n gi.scalefac[sfb] -= qupvt.pretab[sfb];\n\n gi.preflag = recalc = 1;\n }\n }\n\n for (i = 0; i < 4; i++)\n l3_side.scfsi[ch][i] = 0;\n\n if (gfc.mode_gr == 2 && gr == 1\n && l3_side.tt[0][ch].block_type != Encoder_1.SHORT_TYPE\n && l3_side.tt[1][ch].block_type != Encoder_1.SHORT_TYPE) {\n scfsi_calc(ch, l3_side);\n recalc = 0;\n }\n for (sfb = 0; sfb < gi.sfbmax; sfb++) {\n if (gi.scalefac[sfb] == -2) {\n gi.scalefac[sfb] = 0;\n /* if anything goes, then 0 is a good choice */\n }\n }\n if (recalc != 0) {\n if (gfc.mode_gr == 2) {\n this.scale_bitcount(gi);\n } else {\n this.scale_bitcount_lsf(gfc, gi);\n }\n }\n };\n\n function all_scalefactors_not_negative(scalefac, n) {\n for (var i = 0; i < n; ++i) {\n if (scalefac[i] < 0)\n return false;\n }\n return true;\n }\n\n /**\n * number of bits used to encode scalefacs.\n *\n * 18*slen1_tab[i] + 18*slen2_tab[i]\n */\n var scale_short = [0, 18, 36, 54, 54, 36, 54, 72,\n 54, 72, 90, 72, 90, 108, 108, 126];\n\n /**\n * number of bits used to encode scalefacs.\n *\n * 17*slen1_tab[i] + 18*slen2_tab[i]\n */\n var scale_mixed = [0, 18, 36, 54, 51, 35, 53, 71,\n 52, 70, 88, 69, 87, 105, 104, 122];\n\n /**\n * number of bits used to encode scalefacs.\n *\n * 11*slen1_tab[i] + 10*slen2_tab[i]\n */\n var scale_long = [0, 10, 20, 30, 33, 21, 31, 41, 32, 42,\n 52, 43, 53, 63, 64, 74];\n\n /**\n * Also calculates the number of bits necessary to code the scalefactors.\n */\n this.scale_bitcount = function (cod_info) {\n var k, sfb, max_slen1 = 0, max_slen2 = 0;\n\n /* maximum values */\n var tab;\n var scalefac = cod_info.scalefac;\n\n assert$18(all_scalefactors_not_negative(scalefac, cod_info.sfbmax));\n\n if (cod_info.block_type == Encoder_1.SHORT_TYPE) {\n tab = scale_short;\n if (cod_info.mixed_block_flag != 0)\n tab = scale_mixed;\n } else { /* block_type == 1,2,or 3 */\n tab = scale_long;\n if (0 == cod_info.preflag) {\n for (sfb = 11; sfb < Encoder_1.SBPSY_l; sfb++)\n if (scalefac[sfb] < qupvt.pretab[sfb])\n break;\n\n if (sfb == Encoder_1.SBPSY_l) {\n cod_info.preflag = 1;\n for (sfb = 11; sfb < Encoder_1.SBPSY_l; sfb++)\n scalefac[sfb] -= qupvt.pretab[sfb];\n }\n }\n }\n\n for (sfb = 0; sfb < cod_info.sfbdivide; sfb++)\n if (max_slen1 < scalefac[sfb])\n max_slen1 = scalefac[sfb];\n\n for (; sfb < cod_info.sfbmax; sfb++)\n if (max_slen2 < scalefac[sfb])\n max_slen2 = scalefac[sfb];\n\n /*\n * from Takehiro TOMINAGA 10/99 loop over *all*\n * posible values of scalefac_compress to find the one which uses the\n * smallest number of bits. ISO would stop at first valid index\n */\n cod_info.part2_length = QuantizePVT_1.LARGE_BITS;\n for (k = 0; k < 16; k++) {\n if (max_slen1 < slen1_n[k] && max_slen2 < slen2_n[k]\n && cod_info.part2_length > tab[k]) {\n cod_info.part2_length = tab[k];\n cod_info.scalefac_compress = k;\n }\n }\n return cod_info.part2_length == QuantizePVT_1.LARGE_BITS;\n };\n\n /**\n * table of largest scalefactor values for MPEG2\n */\n var max_range_sfac_tab = [[15, 15, 7, 7],\n [15, 15, 7, 0], [7, 3, 0, 0], [15, 31, 31, 0],\n [7, 7, 7, 0], [3, 3, 0, 0]];\n\n /**\n * Also counts the number of bits to encode the scalefacs but for MPEG 2\n * Lower sampling frequencies (24, 22.05 and 16 kHz.)\n *\n * This is reverse-engineered from section 2.4.3.2 of the MPEG2 IS,\n * \"Audio Decoding Layer III\"\n */\n this.scale_bitcount_lsf = function (gfc, cod_info) {\n var table_number, row_in_table, partition, nr_sfb, window;\n var over;\n var i, sfb;\n var max_sfac = new_int$18(4);\n//var partition_table;\n var scalefac = cod_info.scalefac;\n\n /*\n * Set partition table. Note that should try to use table one, but do\n * not yet...\n */\n if (cod_info.preflag != 0)\n table_number = 2;\n else\n table_number = 0;\n\n for (i = 0; i < 4; i++)\n max_sfac[i] = 0;\n\n if (cod_info.block_type == Encoder_1.SHORT_TYPE) {\n row_in_table = 1;\n var partition_table = qupvt.nr_of_sfb_block[table_number][row_in_table];\n for (sfb = 0, partition = 0; partition < 4; partition++) {\n nr_sfb = partition_table[partition] / 3;\n for (i = 0; i < nr_sfb; i++, sfb++)\n for (window = 0; window < 3; window++)\n if (scalefac[sfb * 3 + window] > max_sfac[partition])\n max_sfac[partition] = scalefac[sfb * 3 + window];\n }\n } else {\n row_in_table = 0;\n var partition_table = qupvt.nr_of_sfb_block[table_number][row_in_table];\n for (sfb = 0, partition = 0; partition < 4; partition++) {\n nr_sfb = partition_table[partition];\n for (i = 0; i < nr_sfb; i++, sfb++)\n if (scalefac[sfb] > max_sfac[partition])\n max_sfac[partition] = scalefac[sfb];\n }\n }\n\n for (over = false, partition = 0; partition < 4; partition++) {\n if (max_sfac[partition] > max_range_sfac_tab[table_number][partition])\n over = true;\n }\n if (!over) {\n var slen1, slen2, slen3, slen4;\n\n cod_info.sfb_partition_table = qupvt.nr_of_sfb_block[table_number][row_in_table];\n for (partition = 0; partition < 4; partition++)\n cod_info.slen[partition] = log2tab[max_sfac[partition]];\n\n /* set scalefac_compress */\n slen1 = cod_info.slen[0];\n slen2 = cod_info.slen[1];\n slen3 = cod_info.slen[2];\n slen4 = cod_info.slen[3];\n\n switch (table_number) {\n case 0:\n cod_info.scalefac_compress = (((slen1 * 5) + slen2) << 4)\n + (slen3 << 2) + slen4;\n break;\n\n case 1:\n cod_info.scalefac_compress = 400 + (((slen1 * 5) + slen2) << 2)\n + slen3;\n break;\n\n case 2:\n cod_info.scalefac_compress = 500 + (slen1 * 3) + slen2;\n break;\n\n default:\n System$18.err.printf(\"intensity stereo not implemented yet\\n\");\n break;\n }\n }\n if (!over) {\n assert$18(cod_info.sfb_partition_table != null);\n cod_info.part2_length = 0;\n for (partition = 0; partition < 4; partition++)\n cod_info.part2_length += cod_info.slen[partition]\n * cod_info.sfb_partition_table[partition];\n }\n return over;\n };\n\n /*\n * Since no bands have been over-amplified, we can set scalefac_compress and\n * slen[] for the formatter\n */\n var log2tab = [0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4,\n 4, 4, 4, 4];\n\n this.huffman_init = function (gfc) {\n for (var i = 2; i <= 576; i += 2) {\n var scfb_anz = 0, bv_index;\n while (gfc.scalefac_band.l[++scfb_anz] < i)\n ;\n\n bv_index = subdv_table[scfb_anz][0]; // .region0_count\n while (gfc.scalefac_band.l[bv_index + 1] > i)\n bv_index--;\n\n if (bv_index < 0) {\n /*\n * this is an indication that everything is going to be encoded\n * as region0: bigvalues < region0 < region1 so lets set\n * region0, region1 to some value larger than bigvalues\n */\n bv_index = subdv_table[scfb_anz][0]; // .region0_count\n }\n\n gfc.bv_scf[i - 2] = bv_index;\n\n bv_index = subdv_table[scfb_anz][1]; // .region1_count\n while (gfc.scalefac_band.l[bv_index + gfc.bv_scf[i - 2] + 2] > i)\n bv_index--;\n\n if (bv_index < 0) {\n bv_index = subdv_table[scfb_anz][1]; // .region1_count\n }\n\n gfc.bv_scf[i - 1] = bv_index;\n }\n };\n}\n\nvar Takehiro_1 = Takehiro$1;\n\nvar System$17 = common.System;\nvar Arrays$17 = common.Arrays;\nvar new_byte$17 = common.new_byte;\nvar new_float_n$17 = common.new_float_n;\nvar new_int$17 = common.new_int;\nvar assert$17 = common.assert;\n\n\n\n\n\n\nBitStream$1.EQ = function (a, b) {\n return (Math.abs(a) > Math.abs(b)) ? (Math.abs((a) - (b)) <= (Math\n .abs(a) * 1e-6))\n : (Math.abs((a) - (b)) <= (Math.abs(b) * 1e-6));\n};\n\nBitStream$1.NEQ = function (a, b) {\n return !BitStream$1.EQ(a, b);\n};\n\nfunction BitStream$1() {\n var self = this;\n var CRC16_POLYNOMIAL = 0x8005;\n\n /*\n * we work with ints, so when doing bit manipulation, we limit ourselves to\n * MAX_LENGTH-2 just to be on the safe side\n */\n var MAX_LENGTH = 32;\n\n //GainAnalysis ga;\n //MPGLib mpg;\n //Version ver;\n //VBRTag vbr;\n var ga = null;\n var mpg = null;\n var ver = null;\n var vbr = null;\n\n //public final void setModules(GainAnalysis ga, MPGLib mpg, Version ver,\n //\tVBRTag vbr) {\n\n this.setModules = function (_ga, _mpg, _ver, _vbr) {\n ga = _ga;\n mpg = _mpg;\n ver = _ver;\n vbr = _vbr;\n };\n\n /**\n * Bit stream buffer.\n */\n //private byte[] buf;\n var buf = null;\n /**\n * Bit counter of bit stream.\n */\n var totbit = 0;\n /**\n * Pointer to top byte in buffer.\n */\n var bufByteIdx = 0;\n /**\n * Pointer to top bit of top byte in buffer.\n */\n var bufBitIdx = 0;\n\n /**\n * compute bitsperframe and mean_bits for a layer III frame\n */\n this.getframebits = function (gfp) {\n var gfc = gfp.internal_flags;\n var bit_rate;\n\n /* get bitrate in kbps [?] */\n if (gfc.bitrate_index != 0)\n bit_rate = Tables_1.bitrate_table[gfp.version][gfc.bitrate_index];\n else\n bit_rate = gfp.brate;\n assert$17(8 <= bit_rate && bit_rate <= 640);\n\n /* main encoding routine toggles padding on and off */\n /* one Layer3 Slot consists of 8 bits */\n var bytes = 0 | (gfp.version + 1) * 72000 * bit_rate / gfp.out_samplerate + gfc.padding;\n return 8 * bytes;\n };\n\n function putheader_bits(gfc) {\n System$17.arraycopy(gfc.header[gfc.w_ptr].buf, 0, buf, bufByteIdx, gfc.sideinfo_len);\n bufByteIdx += gfc.sideinfo_len;\n totbit += gfc.sideinfo_len * 8;\n gfc.w_ptr = (gfc.w_ptr + 1) & (LameInternalFlags_1.MAX_HEADER_BUF - 1);\n }\n\n /**\n * write j bits into the bit stream\n */\n function putbits2(gfc, val, j) {\n assert$17(j < MAX_LENGTH - 2);\n\n while (j > 0) {\n var k;\n if (bufBitIdx == 0) {\n bufBitIdx = 8;\n bufByteIdx++;\n assert$17(bufByteIdx < Lame.LAME_MAXMP3BUFFER);\n assert$17(gfc.header[gfc.w_ptr].write_timing >= totbit);\n if (gfc.header[gfc.w_ptr].write_timing == totbit) {\n putheader_bits(gfc);\n }\n buf[bufByteIdx] = 0;\n }\n\n k = Math.min(j, bufBitIdx);\n j -= k;\n\n bufBitIdx -= k;\n\n assert$17(j < MAX_LENGTH);\n /* 32 too large on 32 bit machines */\n assert$17(bufBitIdx < MAX_LENGTH);\n\n buf[bufByteIdx] |= ((val >> j) << bufBitIdx);\n totbit += k;\n }\n }\n\n /**\n * write j bits into the bit stream, ignoring frame headers\n */\n function putbits_noheaders(gfc, val, j) {\n assert$17(j < MAX_LENGTH - 2);\n\n while (j > 0) {\n var k;\n if (bufBitIdx == 0) {\n bufBitIdx = 8;\n bufByteIdx++;\n assert$17(bufByteIdx < Lame.LAME_MAXMP3BUFFER);\n buf[bufByteIdx] = 0;\n }\n\n k = Math.min(j, bufBitIdx);\n j -= k;\n\n bufBitIdx -= k;\n\n assert$17(j < MAX_LENGTH);\n /* 32 too large on 32 bit machines */\n assert$17(bufBitIdx < MAX_LENGTH);\n\n buf[bufByteIdx] |= ((val >> j) << bufBitIdx);\n totbit += k;\n }\n }\n\n /**\n * Some combinations of bitrate, Fs, and stereo make it impossible to stuff\n * out a frame using just main_data, due to the limited number of bits to\n * indicate main_data_length. In these situations, we put stuffing bits into\n * the ancillary data...\n */\n function drain_into_ancillary(gfp, remainingBits) {\n var gfc = gfp.internal_flags;\n var i;\n assert$17(remainingBits >= 0);\n\n if (remainingBits >= 8) {\n putbits2(gfc, 0x4c, 8);\n remainingBits -= 8;\n }\n if (remainingBits >= 8) {\n putbits2(gfc, 0x41, 8);\n remainingBits -= 8;\n }\n if (remainingBits >= 8) {\n putbits2(gfc, 0x4d, 8);\n remainingBits -= 8;\n }\n if (remainingBits >= 8) {\n putbits2(gfc, 0x45, 8);\n remainingBits -= 8;\n }\n\n if (remainingBits >= 32) {\n var version = ver.getLameShortVersion();\n if (remainingBits >= 32)\n for (i = 0; i < version.length && remainingBits >= 8; ++i) {\n remainingBits -= 8;\n putbits2(gfc, version.charAt(i), 8);\n }\n }\n\n for (; remainingBits >= 1; remainingBits -= 1) {\n putbits2(gfc, gfc.ancillary_flag, 1);\n gfc.ancillary_flag ^= (!gfp.disable_reservoir ? 1 : 0);\n }\n\n assert$17(remainingBits == 0);\n\n }\n\n /**\n * write N bits into the header\n */\n function writeheader(gfc, val, j) {\n var ptr = gfc.header[gfc.h_ptr].ptr;\n\n while (j > 0) {\n var k = Math.min(j, 8 - (ptr & 7));\n j -= k;\n assert$17(j < MAX_LENGTH);\n /* >> 32 too large for 32 bit machines */\n\n gfc.header[gfc.h_ptr].buf[ptr >> 3] |= ((val >> j)) << (8 - (ptr & 7) - k);\n ptr += k;\n }\n gfc.header[gfc.h_ptr].ptr = ptr;\n }\n\n function CRC_update(value, crc) {\n value <<= 8;\n for (var i = 0; i < 8; i++) {\n value <<= 1;\n crc <<= 1;\n\n if ((((crc ^ value) & 0x10000) != 0))\n crc ^= CRC16_POLYNOMIAL;\n }\n return crc;\n }\n\n this.CRC_writeheader = function (gfc, header) {\n var crc = 0xffff;\n /* (jo) init crc16 for error_protection */\n\n crc = CRC_update(header[2] & 0xff, crc);\n crc = CRC_update(header[3] & 0xff, crc);\n for (var i = 6; i < gfc.sideinfo_len; i++) {\n crc = CRC_update(header[i] & 0xff, crc);\n }\n\n header[4] = (byte)(crc >> 8);\n header[5] = (byte)(crc & 255);\n };\n\n function encodeSideInfo2(gfp, bitsPerFrame) {\n var gfc = gfp.internal_flags;\n var l3_side;\n var gr, ch;\n\n l3_side = gfc.l3_side;\n gfc.header[gfc.h_ptr].ptr = 0;\n Arrays$17.fill(gfc.header[gfc.h_ptr].buf, 0, gfc.sideinfo_len, 0);\n if (gfp.out_samplerate < 16000)\n writeheader(gfc, 0xffe, 12);\n else\n writeheader(gfc, 0xfff, 12);\n writeheader(gfc, (gfp.version), 1);\n writeheader(gfc, 4 - 3, 2);\n writeheader(gfc, (!gfp.error_protection ? 1 : 0), 1);\n writeheader(gfc, (gfc.bitrate_index), 4);\n writeheader(gfc, (gfc.samplerate_index), 2);\n writeheader(gfc, (gfc.padding), 1);\n writeheader(gfc, (gfp.extension), 1);\n writeheader(gfc, (gfp.mode.ordinal()), 2);\n writeheader(gfc, (gfc.mode_ext), 2);\n writeheader(gfc, (gfp.copyright), 1);\n writeheader(gfc, (gfp.original), 1);\n writeheader(gfc, (gfp.emphasis), 2);\n if (gfp.error_protection) {\n writeheader(gfc, 0, 16);\n /* dummy */\n }\n\n if (gfp.version == 1) {\n /* MPEG1 */\n assert$17(l3_side.main_data_begin >= 0);\n writeheader(gfc, (l3_side.main_data_begin), 9);\n\n if (gfc.channels_out == 2)\n writeheader(gfc, l3_side.private_bits, 3);\n else\n writeheader(gfc, l3_side.private_bits, 5);\n\n for (ch = 0; ch < gfc.channels_out; ch++) {\n var band;\n for (band = 0; band < 4; band++) {\n writeheader(gfc, l3_side.scfsi[ch][band], 1);\n }\n }\n\n for (gr = 0; gr < 2; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n var gi = l3_side.tt[gr][ch];\n writeheader(gfc, gi.part2_3_length + gi.part2_length, 12);\n writeheader(gfc, gi.big_values / 2, 9);\n writeheader(gfc, gi.global_gain, 8);\n writeheader(gfc, gi.scalefac_compress, 4);\n\n if (gi.block_type != Encoder_1.NORM_TYPE) {\n writeheader(gfc, 1, 1);\n /* window_switching_flag */\n writeheader(gfc, gi.block_type, 2);\n writeheader(gfc, gi.mixed_block_flag, 1);\n\n if (gi.table_select[0] == 14)\n gi.table_select[0] = 16;\n writeheader(gfc, gi.table_select[0], 5);\n if (gi.table_select[1] == 14)\n gi.table_select[1] = 16;\n writeheader(gfc, gi.table_select[1], 5);\n\n writeheader(gfc, gi.subblock_gain[0], 3);\n writeheader(gfc, gi.subblock_gain[1], 3);\n writeheader(gfc, gi.subblock_gain[2], 3);\n } else {\n writeheader(gfc, 0, 1);\n /* window_switching_flag */\n if (gi.table_select[0] == 14)\n gi.table_select[0] = 16;\n writeheader(gfc, gi.table_select[0], 5);\n if (gi.table_select[1] == 14)\n gi.table_select[1] = 16;\n writeheader(gfc, gi.table_select[1], 5);\n if (gi.table_select[2] == 14)\n gi.table_select[2] = 16;\n writeheader(gfc, gi.table_select[2], 5);\n\n assert$17(0 <= gi.region0_count && gi.region0_count < 16);\n assert$17(0 <= gi.region1_count && gi.region1_count < 8);\n writeheader(gfc, gi.region0_count, 4);\n writeheader(gfc, gi.region1_count, 3);\n }\n writeheader(gfc, gi.preflag, 1);\n writeheader(gfc, gi.scalefac_scale, 1);\n writeheader(gfc, gi.count1table_select, 1);\n }\n }\n } else {\n /* MPEG2 */\n assert$17(l3_side.main_data_begin >= 0);\n writeheader(gfc, (l3_side.main_data_begin), 8);\n writeheader(gfc, l3_side.private_bits, gfc.channels_out);\n\n gr = 0;\n for (ch = 0; ch < gfc.channels_out; ch++) {\n var gi = l3_side.tt[gr][ch];\n writeheader(gfc, gi.part2_3_length + gi.part2_length, 12);\n writeheader(gfc, gi.big_values / 2, 9);\n writeheader(gfc, gi.global_gain, 8);\n writeheader(gfc, gi.scalefac_compress, 9);\n\n if (gi.block_type != Encoder_1.NORM_TYPE) {\n writeheader(gfc, 1, 1);\n /* window_switching_flag */\n writeheader(gfc, gi.block_type, 2);\n writeheader(gfc, gi.mixed_block_flag, 1);\n\n if (gi.table_select[0] == 14)\n gi.table_select[0] = 16;\n writeheader(gfc, gi.table_select[0], 5);\n if (gi.table_select[1] == 14)\n gi.table_select[1] = 16;\n writeheader(gfc, gi.table_select[1], 5);\n\n writeheader(gfc, gi.subblock_gain[0], 3);\n writeheader(gfc, gi.subblock_gain[1], 3);\n writeheader(gfc, gi.subblock_gain[2], 3);\n } else {\n writeheader(gfc, 0, 1);\n /* window_switching_flag */\n if (gi.table_select[0] == 14)\n gi.table_select[0] = 16;\n writeheader(gfc, gi.table_select[0], 5);\n if (gi.table_select[1] == 14)\n gi.table_select[1] = 16;\n writeheader(gfc, gi.table_select[1], 5);\n if (gi.table_select[2] == 14)\n gi.table_select[2] = 16;\n writeheader(gfc, gi.table_select[2], 5);\n\n assert$17(0 <= gi.region0_count && gi.region0_count < 16);\n assert$17(0 <= gi.region1_count && gi.region1_count < 8);\n writeheader(gfc, gi.region0_count, 4);\n writeheader(gfc, gi.region1_count, 3);\n }\n\n writeheader(gfc, gi.scalefac_scale, 1);\n writeheader(gfc, gi.count1table_select, 1);\n }\n }\n\n if (gfp.error_protection) {\n /* (jo) error_protection: add crc16 information to header */\n CRC_writeheader(gfc, gfc.header[gfc.h_ptr].buf);\n }\n\n {\n var old = gfc.h_ptr;\n assert$17(gfc.header[old].ptr == gfc.sideinfo_len * 8);\n\n gfc.h_ptr = (old + 1) & (LameInternalFlags_1.MAX_HEADER_BUF - 1);\n gfc.header[gfc.h_ptr].write_timing = gfc.header[old].write_timing\n + bitsPerFrame;\n\n if (gfc.h_ptr == gfc.w_ptr) {\n /* yikes! we are out of header buffer space */\n System$17.err\n .println(\"Error: MAX_HEADER_BUF too small in bitstream.c \\n\");\n }\n\n }\n }\n\n function huffman_coder_count1(gfc, gi) {\n /* Write count1 area */\n var h = Tables_1.ht[gi.count1table_select + 32];\n var i, bits = 0;\n\n var ix = gi.big_values;\n var xr = gi.big_values;\n assert$17(gi.count1table_select < 2);\n\n for (i = (gi.count1 - gi.big_values) / 4; i > 0; --i) {\n var huffbits = 0;\n var p = 0, v;\n\n v = gi.l3_enc[ix + 0];\n if (v != 0) {\n p += 8;\n if (gi.xr[xr + 0] < 0)\n huffbits++;\n assert$17(v <= 1);\n }\n\n v = gi.l3_enc[ix + 1];\n if (v != 0) {\n p += 4;\n huffbits *= 2;\n if (gi.xr[xr + 1] < 0)\n huffbits++;\n assert$17(v <= 1);\n }\n\n v = gi.l3_enc[ix + 2];\n if (v != 0) {\n p += 2;\n huffbits *= 2;\n if (gi.xr[xr + 2] < 0)\n huffbits++;\n assert$17(v <= 1);\n }\n\n v = gi.l3_enc[ix + 3];\n if (v != 0) {\n p++;\n huffbits *= 2;\n if (gi.xr[xr + 3] < 0)\n huffbits++;\n assert$17(v <= 1);\n }\n\n ix += 4;\n xr += 4;\n putbits2(gfc, huffbits + h.table[p], h.hlen[p]);\n bits += h.hlen[p];\n }\n return bits;\n }\n\n /**\n * Implements the pseudocode of page 98 of the IS\n */\n function Huffmancode(gfc, tableindex, start, end, gi) {\n var h = Tables_1.ht[tableindex];\n var bits = 0;\n\n assert$17(tableindex < 32);\n if (0 == tableindex)\n return bits;\n\n for (var i = start; i < end; i += 2) {\n var cbits = 0;\n var xbits = 0;\n var linbits = h.xlen;\n var xlen = h.xlen;\n var ext = 0;\n var x1 = gi.l3_enc[i];\n var x2 = gi.l3_enc[i + 1];\n\n if (x1 != 0) {\n if (gi.xr[i] < 0)\n ext++;\n cbits--;\n }\n\n if (tableindex > 15) {\n /* use ESC-words */\n if (x1 > 14) {\n var linbits_x1 = x1 - 15;\n assert$17(linbits_x1 <= h.linmax);\n ext |= linbits_x1 << 1;\n xbits = linbits;\n x1 = 15;\n }\n\n if (x2 > 14) {\n var linbits_x2 = x2 - 15;\n assert$17(linbits_x2 <= h.linmax);\n ext <<= linbits;\n ext |= linbits_x2;\n xbits += linbits;\n x2 = 15;\n }\n xlen = 16;\n }\n\n if (x2 != 0) {\n ext <<= 1;\n if (gi.xr[i + 1] < 0)\n ext++;\n cbits--;\n }\n\n assert$17((x1 | x2) < 16);\n\n x1 = x1 * xlen + x2;\n xbits -= cbits;\n cbits += h.hlen[x1];\n\n assert$17(cbits <= MAX_LENGTH);\n assert$17(xbits <= MAX_LENGTH);\n\n putbits2(gfc, h.table[x1], cbits);\n putbits2(gfc, ext, xbits);\n bits += cbits + xbits;\n }\n return bits;\n }\n\n /**\n * Note the discussion of huffmancodebits() on pages 28 and 29 of the IS, as\n * well as the definitions of the side information on pages 26 and 27.\n */\n function ShortHuffmancodebits(gfc, gi) {\n var region1Start = 3 * gfc.scalefac_band.s[3];\n if (region1Start > gi.big_values)\n region1Start = gi.big_values;\n\n /* short blocks do not have a region2 */\n var bits = Huffmancode(gfc, gi.table_select[0], 0, region1Start, gi);\n bits += Huffmancode(gfc, gi.table_select[1], region1Start,\n gi.big_values, gi);\n return bits;\n }\n\n function LongHuffmancodebits(gfc, gi) {\n var bigvalues, bits;\n var region1Start, region2Start;\n\n bigvalues = gi.big_values;\n assert$17(0 <= bigvalues && bigvalues <= 576);\n\n var i = gi.region0_count + 1;\n assert$17(0 <= i);\n assert$17(i < gfc.scalefac_band.l.length);\n region1Start = gfc.scalefac_band.l[i];\n i += gi.region1_count + 1;\n assert$17(0 <= i);\n assert$17(i < gfc.scalefac_band.l.length);\n region2Start = gfc.scalefac_band.l[i];\n\n if (region1Start > bigvalues)\n region1Start = bigvalues;\n\n if (region2Start > bigvalues)\n region2Start = bigvalues;\n\n bits = Huffmancode(gfc, gi.table_select[0], 0, region1Start, gi);\n bits += Huffmancode(gfc, gi.table_select[1], region1Start,\n region2Start, gi);\n bits += Huffmancode(gfc, gi.table_select[2], region2Start, bigvalues,\n gi);\n return bits;\n }\n\n function writeMainData(gfp) {\n var gr, ch, sfb, data_bits, tot_bits = 0;\n var gfc = gfp.internal_flags;\n var l3_side = gfc.l3_side;\n\n if (gfp.version == 1) {\n /* MPEG 1 */\n for (gr = 0; gr < 2; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n var gi = l3_side.tt[gr][ch];\n var slen1 = Takehiro_1.slen1_tab[gi.scalefac_compress];\n var slen2 = Takehiro_1.slen2_tab[gi.scalefac_compress];\n data_bits = 0;\n for (sfb = 0; sfb < gi.sfbdivide; sfb++) {\n if (gi.scalefac[sfb] == -1)\n continue;\n /* scfsi is used */\n putbits2(gfc, gi.scalefac[sfb], slen1);\n data_bits += slen1;\n }\n for (; sfb < gi.sfbmax; sfb++) {\n if (gi.scalefac[sfb] == -1)\n continue;\n /* scfsi is used */\n putbits2(gfc, gi.scalefac[sfb], slen2);\n data_bits += slen2;\n }\n assert$17(data_bits == gi.part2_length);\n\n if (gi.block_type == Encoder_1.SHORT_TYPE) {\n data_bits += ShortHuffmancodebits(gfc, gi);\n } else {\n data_bits += LongHuffmancodebits(gfc, gi);\n }\n data_bits += huffman_coder_count1(gfc, gi);\n /* does bitcount in quantize.c agree with actual bit count? */\n assert$17(data_bits == gi.part2_3_length + gi.part2_length);\n tot_bits += data_bits;\n }\n /* for ch */\n }\n /* for gr */\n } else {\n /* MPEG 2 */\n gr = 0;\n for (ch = 0; ch < gfc.channels_out; ch++) {\n var gi = l3_side.tt[gr][ch];\n var i, sfb_partition, scale_bits = 0;\n assert$17(gi.sfb_partition_table != null);\n data_bits = 0;\n sfb = 0;\n sfb_partition = 0;\n\n if (gi.block_type == Encoder_1.SHORT_TYPE) {\n for (; sfb_partition < 4; sfb_partition++) {\n var sfbs = gi.sfb_partition_table[sfb_partition] / 3;\n var slen = gi.slen[sfb_partition];\n for (i = 0; i < sfbs; i++, sfb++) {\n putbits2(gfc,\n Math.max(gi.scalefac[sfb * 3 + 0], 0), slen);\n putbits2(gfc,\n Math.max(gi.scalefac[sfb * 3 + 1], 0), slen);\n putbits2(gfc,\n Math.max(gi.scalefac[sfb * 3 + 2], 0), slen);\n scale_bits += 3 * slen;\n }\n }\n data_bits += ShortHuffmancodebits(gfc, gi);\n } else {\n for (; sfb_partition < 4; sfb_partition++) {\n var sfbs = gi.sfb_partition_table[sfb_partition];\n var slen = gi.slen[sfb_partition];\n for (i = 0; i < sfbs; i++, sfb++) {\n putbits2(gfc, Math.max(gi.scalefac[sfb], 0), slen);\n scale_bits += slen;\n }\n }\n data_bits += LongHuffmancodebits(gfc, gi);\n }\n data_bits += huffman_coder_count1(gfc, gi);\n /* does bitcount in quantize.c agree with actual bit count? */\n assert$17(data_bits == gi.part2_3_length);\n assert$17(scale_bits == gi.part2_length);\n tot_bits += scale_bits + data_bits;\n }\n /* for ch */\n }\n /* for gf */\n return tot_bits;\n }\n\n /* main_data */\n\n function TotalBytes() {\n this.total = 0;\n }\n\n /*\n * compute the number of bits required to flush all mp3 frames currently in\n * the buffer. This should be the same as the reservoir size. Only call this\n * routine between frames - i.e. only after all headers and data have been\n * added to the buffer by format_bitstream().\n *\n * Also compute total_bits_output = size of mp3 buffer (including frame\n * headers which may not have yet been send to the mp3 buffer) + number of\n * bits needed to flush all mp3 frames.\n *\n * total_bytes_output is the size of the mp3 output buffer if\n * lame_encode_flush_nogap() was called right now.\n */\n function compute_flushbits(gfp, total_bytes_output) {\n var gfc = gfp.internal_flags;\n var flushbits, remaining_headers;\n var bitsPerFrame;\n var last_ptr, first_ptr;\n first_ptr = gfc.w_ptr;\n /* first header to add to bitstream */\n last_ptr = gfc.h_ptr - 1;\n /* last header to add to bitstream */\n if (last_ptr == -1)\n last_ptr = LameInternalFlags_1.MAX_HEADER_BUF - 1;\n\n /* add this many bits to bitstream so we can flush all headers */\n flushbits = gfc.header[last_ptr].write_timing - totbit;\n total_bytes_output.total = flushbits;\n\n if (flushbits >= 0) {\n /* if flushbits >= 0, some headers have not yet been written */\n /* reduce flushbits by the size of the headers */\n remaining_headers = 1 + last_ptr - first_ptr;\n if (last_ptr < first_ptr)\n remaining_headers = 1 + last_ptr - first_ptr\n + LameInternalFlags_1.MAX_HEADER_BUF;\n flushbits -= remaining_headers * 8 * gfc.sideinfo_len;\n }\n\n /*\n * finally, add some bits so that the last frame is complete these bits\n * are not necessary to decode the last frame, but some decoders will\n * ignore last frame if these bits are missing\n */\n bitsPerFrame = self.getframebits(gfp);\n flushbits += bitsPerFrame;\n total_bytes_output.total += bitsPerFrame;\n /* round up: */\n if ((total_bytes_output.total % 8) != 0)\n total_bytes_output.total = 1 + (total_bytes_output.total / 8);\n else\n total_bytes_output.total = (total_bytes_output.total / 8);\n total_bytes_output.total += bufByteIdx + 1;\n\n if (flushbits < 0) {\n System$17.err.println(\"strange error flushing buffer ... \\n\");\n }\n return flushbits;\n }\n\n this.flush_bitstream = function (gfp) {\n var gfc = gfp.internal_flags;\n var l3_side;\n var flushbits;\n var last_ptr = gfc.h_ptr - 1;\n /* last header to add to bitstream */\n if (last_ptr == -1)\n last_ptr = LameInternalFlags_1.MAX_HEADER_BUF - 1;\n l3_side = gfc.l3_side;\n\n if ((flushbits = compute_flushbits(gfp, new TotalBytes())) < 0)\n return;\n drain_into_ancillary(gfp, flushbits);\n\n /* check that the 100% of the last frame has been written to bitstream */\n assert$17(gfc.header[last_ptr].write_timing + this.getframebits(gfp) == totbit);\n\n /*\n * we have padded out all frames with ancillary data, which is the same\n * as filling the bitreservoir with ancillary data, so :\n */\n gfc.ResvSize = 0;\n l3_side.main_data_begin = 0;\n\n /* save the ReplayGain value */\n if (gfc.findReplayGain) {\n var RadioGain = ga.GetTitleGain(gfc.rgdata);\n assert$17(NEQ(RadioGain, GainAnalysis.GAIN_NOT_ENOUGH_SAMPLES));\n gfc.RadioGain = Math.floor(RadioGain * 10.0 + 0.5) | 0;\n /* round to nearest */\n }\n\n /* find the gain and scale change required for no clipping */\n if (gfc.findPeakSample) {\n gfc.noclipGainChange = Math.ceil(Math\n .log10(gfc.PeakSample / 32767.0) * 20.0 * 10.0) | 0;\n /* round up */\n\n if (gfc.noclipGainChange > 0) {\n /* clipping occurs */\n if (EQ(gfp.scale, 1.0) || EQ(gfp.scale, 0.0))\n gfc.noclipScale = (Math\n .floor((32767.0 / gfc.PeakSample) * 100.0) / 100.0);\n /* round down */\n else {\n /*\n * the user specified his own scaling factor. We could\n * suggest the scaling factor of\n * (32767.0/gfp.PeakSample)*(gfp.scale) but it's usually\n * very inaccurate. So we'd rather not advice him on the\n * scaling factor.\n */\n gfc.noclipScale = -1;\n }\n } else\n /* no clipping */\n gfc.noclipScale = -1;\n }\n };\n\n this.add_dummy_byte = function (gfp, val, n) {\n var gfc = gfp.internal_flags;\n var i;\n\n while (n-- > 0) {\n putbits_noheaders(gfc, val, 8);\n\n for (i = 0; i < LameInternalFlags_1.MAX_HEADER_BUF; ++i)\n gfc.header[i].write_timing += 8;\n }\n };\n\n /**\n * This is called after a frame of audio has been quantized and coded. It\n * will write the encoded audio to the bitstream. Note that from a layer3\n * encoder's perspective the bit stream is primarily a series of main_data()\n * blocks, with header and side information inserted at the proper locations\n * to maintain framing. (See Figure A.7 in the IS).\n */\n this.format_bitstream = function (gfp) {\n var gfc = gfp.internal_flags;\n var l3_side;\n l3_side = gfc.l3_side;\n\n var bitsPerFrame = this.getframebits(gfp);\n drain_into_ancillary(gfp, l3_side.resvDrain_pre);\n\n encodeSideInfo2(gfp, bitsPerFrame);\n var bits = 8 * gfc.sideinfo_len;\n bits += writeMainData(gfp);\n drain_into_ancillary(gfp, l3_side.resvDrain_post);\n bits += l3_side.resvDrain_post;\n\n l3_side.main_data_begin += (bitsPerFrame - bits) / 8;\n\n /*\n * compare number of bits needed to clear all buffered mp3 frames with\n * what we think the resvsize is:\n */\n if (compute_flushbits(gfp, new TotalBytes()) != gfc.ResvSize) {\n System$17.err.println(\"Internal buffer inconsistency. flushbits <> ResvSize\");\n }\n\n /*\n * compare main_data_begin for the next frame with what we think the\n * resvsize is:\n */\n if ((l3_side.main_data_begin * 8) != gfc.ResvSize) {\n System$17.err.printf(\"bit reservoir error: \\n\"\n + \"l3_side.main_data_begin: %d \\n\"\n + \"Resvoir size: %d \\n\"\n + \"resv drain (post) %d \\n\"\n + \"resv drain (pre) %d \\n\"\n + \"header and sideinfo: %d \\n\"\n + \"data bits: %d \\n\"\n + \"total bits: %d (remainder: %d) \\n\"\n + \"bitsperframe: %d \\n\",\n 8 * l3_side.main_data_begin, gfc.ResvSize,\n l3_side.resvDrain_post, l3_side.resvDrain_pre,\n 8 * gfc.sideinfo_len, bits - l3_side.resvDrain_post - 8\n * gfc.sideinfo_len, bits, bits % 8, bitsPerFrame);\n\n System$17.err.println(\"This is a fatal error. It has several possible causes:\");\n System$17.err.println(\"90%% LAME compiled with buggy version of gcc using advanced optimizations\");\n System$17.err.println(\" 9%% Your system is overclocked\");\n System$17.err.println(\" 1%% bug in LAME encoding library\");\n\n gfc.ResvSize = l3_side.main_data_begin * 8;\n }\n //;\n assert$17(totbit % 8 == 0);\n\n if (totbit > 1000000000) {\n /*\n * to avoid totbit overflow, (at 8h encoding at 128kbs) lets reset\n * bit counter\n */\n var i;\n for (i = 0; i < LameInternalFlags_1.MAX_HEADER_BUF; ++i)\n gfc.header[i].write_timing -= totbit;\n totbit = 0;\n }\n\n return 0;\n };\n\n /**\n *
\n     * copy data out of the internal MP3 bit buffer into a user supplied\n     *       unsigned char buffer.\n     *\n     *       mp3data=0      indicates data in buffer is an id3tags and VBR tags\n     *       mp3data=1      data is real mp3 frame data.\n     * 
\n */\n this.copy_buffer = function (gfc, buffer, bufferPos, size, mp3data) {\n var minimum = bufByteIdx + 1;\n if (minimum <= 0)\n return 0;\n if (size != 0 && minimum > size) {\n /* buffer is too small */\n return -1;\n }\n System$17.arraycopy(buf, 0, buffer, bufferPos, minimum);\n bufByteIdx = -1;\n bufBitIdx = 0;\n\n if (mp3data != 0) {\n var crc = new_int$17(1);\n crc[0] = gfc.nMusicCRC;\n vbr.updateMusicCRC(crc, buffer, bufferPos, minimum);\n gfc.nMusicCRC = crc[0];\n\n /**\n * sum number of bytes belonging to the mp3 stream this info will be\n * written into the Xing/LAME header for seeking\n */\n if (minimum > 0) {\n gfc.VBR_seek_table.nBytesWritten += minimum;\n }\n\n if (gfc.decode_on_the_fly) { /* decode the frame */\n var pcm_buf = new_float_n$17([2, 1152]);\n var mp3_in = minimum;\n var samples_out = -1;\n var i;\n\n /* re-synthesis to pcm. Repeat until we get a samples_out=0 */\n while (samples_out != 0) {\n\n samples_out = mpg.hip_decode1_unclipped(gfc.hip, buffer,\n bufferPos, mp3_in, pcm_buf[0], pcm_buf[1]);\n /*\n * samples_out = 0: need more data to decode samples_out =\n * -1: error. Lets assume 0 pcm output samples_out = number\n * of samples output\n */\n\n /*\n * set the lenght of the mp3 input buffer to zero, so that\n * in the next iteration of the loop we will be querying\n * mpglib about buffered data\n */\n mp3_in = 0;\n\n if (samples_out == -1) {\n /*\n * error decoding. Not fatal, but might screw up the\n * ReplayGain tag. What should we do? Ignore for now\n */\n samples_out = 0;\n }\n if (samples_out > 0) {\n /* process the PCM data */\n\n /*\n * this should not be possible, and indicates we have\n * overflown the pcm_buf buffer\n */\n assert$17(samples_out <= 1152);\n\n if (gfc.findPeakSample) {\n for (i = 0; i < samples_out; i++) {\n if (pcm_buf[0][i] > gfc.PeakSample)\n gfc.PeakSample = pcm_buf[0][i];\n else if (-pcm_buf[0][i] > gfc.PeakSample)\n gfc.PeakSample = -pcm_buf[0][i];\n }\n if (gfc.channels_out > 1)\n for (i = 0; i < samples_out; i++) {\n if (pcm_buf[1][i] > gfc.PeakSample)\n gfc.PeakSample = pcm_buf[1][i];\n else if (-pcm_buf[1][i] > gfc.PeakSample)\n gfc.PeakSample = -pcm_buf[1][i];\n }\n }\n\n if (gfc.findReplayGain)\n if (ga.AnalyzeSamples(gfc.rgdata, pcm_buf[0], 0,\n pcm_buf[1], 0, samples_out,\n gfc.channels_out) == GainAnalysis.GAIN_ANALYSIS_ERROR)\n return -6;\n\n }\n /* if (samples_out>0) */\n }\n /* while (samples_out!=0) */\n }\n /* if (gfc.decode_on_the_fly) */\n\n }\n /* if (mp3data) */\n return minimum;\n };\n\n this.init_bit_stream_w = function (gfc) {\n buf = new_byte$17(Lame.LAME_MAXMP3BUFFER);\n\n gfc.h_ptr = gfc.w_ptr = 0;\n gfc.header[gfc.h_ptr].write_timing = 0;\n bufByteIdx = -1;\n bufBitIdx = 0;\n totbit = 0;\n };\n\n // From machine.h\n\n\n}\n\nvar BitStream_1 = BitStream$1;\n\nvar System$2 = common.System;\nvar VbrMode$2 = common.VbrMode;\nvar ShortBlock$2 = common.ShortBlock;\nvar new_float$2 = common.new_float;\nvar new_int_n$2 = common.new_int_n;\nvar new_short_n$1 = common.new_short_n;\nvar assert$2 = common.assert;\n\n\n\n\n\n\n\n\n\n\n\nfunction Lame$1() {\n var self = this;\n var LAME_MAXALBUMART = (128 * 1024);\n\n Lame$1.V9 = 410;\n Lame$1.V8 = 420;\n Lame$1.V7 = 430;\n Lame$1.V6 = 440;\n Lame$1.V5 = 450;\n Lame$1.V4 = 460;\n Lame$1.V3 = 470;\n Lame$1.V2 = 480;\n Lame$1.V1 = 490;\n Lame$1.V0 = 500;\n\n /* still there for compatibility */\n\n Lame$1.R3MIX = 1000;\n Lame$1.STANDARD = 1001;\n Lame$1.EXTREME = 1002;\n Lame$1.INSANE = 1003;\n Lame$1.STANDARD_FAST = 1004;\n Lame$1.EXTREME_FAST = 1005;\n Lame$1.MEDIUM = 1006;\n Lame$1.MEDIUM_FAST = 1007;\n\n /**\n * maximum size of mp3buffer needed if you encode at most 1152 samples for\n * each call to lame_encode_buffer. see lame_encode_buffer() below\n * (LAME_MAXMP3BUFFER is now obsolete)\n */\n var LAME_MAXMP3BUFFER = (16384 + LAME_MAXALBUMART);\n Lame$1.LAME_MAXMP3BUFFER = LAME_MAXMP3BUFFER;\n\n var ga;\n var bs;\n var p;\n var qupvt;\n var qu;\n var psy = new PsyModel_1();\n var vbr;\n var ver;\n var id3;\n var mpglib;\n this.enc = new Encoder_1();\n\n this.setModules = function (_ga, _bs, _p, _qupvt, _qu, _vbr, _ver, _id3, _mpglib) {\n ga = _ga;\n bs = _bs;\n p = _p;\n qupvt = _qupvt;\n qu = _qu;\n vbr = _vbr;\n ver = _ver;\n id3 = _id3;\n mpglib = _mpglib;\n this.enc.setModules(bs, psy, qupvt, vbr);\n };\n\n /**\n * PSY Model related stuff\n */\n function PSY() {\n /**\n * The dbQ stuff.\n */\n this.mask_adjust = 0.;\n /**\n * The dbQ stuff.\n */\n this.mask_adjust_short = 0.;\n /* at transition from one scalefactor band to next */\n /**\n * Band weight long scalefactor bands.\n */\n this.bo_l_weight = new_float$2(Encoder_1.SBMAX_l);\n /**\n * Band weight short scalefactor bands.\n */\n this.bo_s_weight = new_float$2(Encoder_1.SBMAX_s);\n }\n\n function LowPassHighPass() {\n this.lowerlimit = 0.;\n }\n\n function BandPass(bitrate, lPass) {\n this.lowpass = lPass;\n }\n\n var LAME_ID = 0xFFF88E3B;\n\n function lame_init_old(gfp) {\n var gfc;\n\n gfp.class_id = LAME_ID;\n\n gfc = gfp.internal_flags = new LameInternalFlags_1();\n\n /* Global flags. set defaults here for non-zero values */\n /* see lame.h for description */\n /*\n * set integer values to -1 to mean that LAME will compute the best\n * value, UNLESS the calling program as set it (and the value is no\n * longer -1)\n */\n\n gfp.mode = MPEGMode.NOT_SET;\n gfp.original = 1;\n gfp.in_samplerate = 44100;\n gfp.num_channels = 2;\n gfp.num_samples = -1;\n\n gfp.bWriteVbrTag = true;\n gfp.quality = -1;\n gfp.short_blocks = null;\n gfc.subblock_gain = -1;\n\n gfp.lowpassfreq = 0;\n gfp.highpassfreq = 0;\n gfp.lowpasswidth = -1;\n gfp.highpasswidth = -1;\n\n gfp.VBR = VbrMode$2.vbr_off;\n gfp.VBR_q = 4;\n gfp.ATHcurve = -1;\n gfp.VBR_mean_bitrate_kbps = 128;\n gfp.VBR_min_bitrate_kbps = 0;\n gfp.VBR_max_bitrate_kbps = 0;\n gfp.VBR_hard_min = 0;\n gfc.VBR_min_bitrate = 1;\n /* not 0 ????? */\n gfc.VBR_max_bitrate = 13;\n /* not 14 ????? */\n\n gfp.quant_comp = -1;\n gfp.quant_comp_short = -1;\n\n gfp.msfix = -1;\n\n gfc.resample_ratio = 1;\n\n gfc.OldValue[0] = 180;\n gfc.OldValue[1] = 180;\n gfc.CurrentStep[0] = 4;\n gfc.CurrentStep[1] = 4;\n gfc.masking_lower = 1;\n gfc.nsPsy.attackthre = -1;\n gfc.nsPsy.attackthre_s = -1;\n\n gfp.scale = -1;\n\n gfp.athaa_type = -1;\n gfp.ATHtype = -1;\n /* default = -1 = set in lame_init_params */\n gfp.athaa_loudapprox = -1;\n /* 1 = flat loudness approx. (total energy) */\n /* 2 = equal loudness curve */\n gfp.athaa_sensitivity = 0.0;\n /* no offset */\n gfp.useTemporal = null;\n gfp.interChRatio = -1;\n\n /*\n * The reason for int mf_samples_to_encode = ENCDELAY + POSTDELAY;\n * ENCDELAY = internal encoder delay. And then we have to add\n * POSTDELAY=288 because of the 50% MDCT overlap. A 576 MDCT granule\n * decodes to 1152 samples. To synthesize the 576 samples centered under\n * this granule we need the previous granule for the first 288 samples\n * (no problem), and the next granule for the next 288 samples (not\n * possible if this is last granule). So we need to pad with 288 samples\n * to make sure we can encode the 576 samples we are interested in.\n */\n gfc.mf_samples_to_encode = Encoder_1.ENCDELAY + Encoder_1.POSTDELAY;\n gfp.encoder_padding = 0;\n gfc.mf_size = Encoder_1.ENCDELAY - Encoder_1.MDCTDELAY;\n /*\n * we pad input with this many 0's\n */\n\n gfp.findReplayGain = false;\n gfp.decode_on_the_fly = false;\n\n gfc.decode_on_the_fly = false;\n gfc.findReplayGain = false;\n gfc.findPeakSample = false;\n\n gfc.RadioGain = 0;\n gfc.AudiophileGain = 0;\n gfc.noclipGainChange = 0;\n gfc.noclipScale = -1.0;\n\n gfp.preset = 0;\n\n gfp.write_id3tag_automatic = true;\n return 0;\n }\n\n this.lame_init = function () {\n var gfp = new LameGlobalFlags_1();\n\n var ret = lame_init_old(gfp);\n if (ret != 0) {\n return null;\n }\n\n gfp.lame_allocated_gfp = 1;\n return gfp;\n };\n\n function filter_coef(x) {\n if (x > 1.0)\n return 0.0;\n if (x <= 0.0)\n return 1.0;\n\n return Math.cos(Math.PI / 2 * x);\n }\n\n this.nearestBitrateFullIndex = function (bitrate) {\n /* borrowed from DM abr presets */\n\n var full_bitrate_table = [8, 16, 24, 32, 40, 48, 56, 64, 80,\n 96, 112, 128, 160, 192, 224, 256, 320];\n\n var lower_range = 0, lower_range_kbps = 0, upper_range = 0, upper_range_kbps = 0;\n\n /* We assume specified bitrate will be 320kbps */\n upper_range_kbps = full_bitrate_table[16];\n upper_range = 16;\n lower_range_kbps = full_bitrate_table[16];\n lower_range = 16;\n\n /*\n * Determine which significant bitrates the value specified falls\n * between, if loop ends without breaking then we were correct above\n * that the value was 320\n */\n for (var b = 0; b < 16; b++) {\n if ((Math.max(bitrate, full_bitrate_table[b + 1])) != bitrate) {\n upper_range_kbps = full_bitrate_table[b + 1];\n upper_range = b + 1;\n lower_range_kbps = full_bitrate_table[b];\n lower_range = (b);\n break;\n /* We found upper range */\n }\n }\n\n /* Determine which range the value specified is closer to */\n if ((upper_range_kbps - bitrate) > (bitrate - lower_range_kbps)) {\n return lower_range;\n }\n return upper_range;\n };\n\n function optimum_samplefreq(lowpassfreq, input_samplefreq) {\n /*\n * Rules:\n *\n * - if possible, sfb21 should NOT be used\n */\n var suggested_samplefreq = 44100;\n\n if (input_samplefreq >= 48000)\n suggested_samplefreq = 48000;\n else if (input_samplefreq >= 44100)\n suggested_samplefreq = 44100;\n else if (input_samplefreq >= 32000)\n suggested_samplefreq = 32000;\n else if (input_samplefreq >= 24000)\n suggested_samplefreq = 24000;\n else if (input_samplefreq >= 22050)\n suggested_samplefreq = 22050;\n else if (input_samplefreq >= 16000)\n suggested_samplefreq = 16000;\n else if (input_samplefreq >= 12000)\n suggested_samplefreq = 12000;\n else if (input_samplefreq >= 11025)\n suggested_samplefreq = 11025;\n else if (input_samplefreq >= 8000)\n suggested_samplefreq = 8000;\n\n if (lowpassfreq == -1)\n return suggested_samplefreq;\n\n if (lowpassfreq <= 15960)\n suggested_samplefreq = 44100;\n if (lowpassfreq <= 15250)\n suggested_samplefreq = 32000;\n if (lowpassfreq <= 11220)\n suggested_samplefreq = 24000;\n if (lowpassfreq <= 9970)\n suggested_samplefreq = 22050;\n if (lowpassfreq <= 7230)\n suggested_samplefreq = 16000;\n if (lowpassfreq <= 5420)\n suggested_samplefreq = 12000;\n if (lowpassfreq <= 4510)\n suggested_samplefreq = 11025;\n if (lowpassfreq <= 3970)\n suggested_samplefreq = 8000;\n\n if (input_samplefreq < suggested_samplefreq) {\n /*\n * choose a valid MPEG sample frequency above the input sample\n * frequency to avoid SFB21/12 bitrate bloat rh 061115\n */\n if (input_samplefreq > 44100) {\n return 48000;\n }\n if (input_samplefreq > 32000) {\n return 44100;\n }\n if (input_samplefreq > 24000) {\n return 32000;\n }\n if (input_samplefreq > 22050) {\n return 24000;\n }\n if (input_samplefreq > 16000) {\n return 22050;\n }\n if (input_samplefreq > 12000) {\n return 16000;\n }\n if (input_samplefreq > 11025) {\n return 12000;\n }\n if (input_samplefreq > 8000) {\n return 11025;\n }\n return 8000;\n }\n return suggested_samplefreq;\n }\n\n /**\n * convert samp freq in Hz to index\n */\n function SmpFrqIndex(sample_freq, gpf) {\n switch (sample_freq) {\n case 44100:\n gpf.version = 1;\n return 0;\n case 48000:\n gpf.version = 1;\n return 1;\n case 32000:\n gpf.version = 1;\n return 2;\n case 22050:\n gpf.version = 0;\n return 0;\n case 24000:\n gpf.version = 0;\n return 1;\n case 16000:\n gpf.version = 0;\n return 2;\n case 11025:\n gpf.version = 0;\n return 0;\n case 12000:\n gpf.version = 0;\n return 1;\n case 8000:\n gpf.version = 0;\n return 2;\n default:\n gpf.version = 0;\n return -1;\n }\n }\n\n /**\n * @param bRate\n * legal rates from 8 to 320\n */\n function FindNearestBitrate(bRate, version, samplerate) {\n /* MPEG-1 or MPEG-2 LSF */\n if (samplerate < 16000)\n version = 2;\n\n var bitrate = Tables_1.bitrate_table[version][1];\n\n for (var i = 2; i <= 14; i++) {\n if (Tables_1.bitrate_table[version][i] > 0) {\n if (Math.abs(Tables_1.bitrate_table[version][i] - bRate) < Math\n .abs(bitrate - bRate))\n bitrate = Tables_1.bitrate_table[version][i];\n }\n }\n return bitrate;\n }\n\n /**\n * @param bRate\n * legal rates from 32 to 448 kbps\n * @param version\n * MPEG-1 or MPEG-2/2.5 LSF\n */\n function BitrateIndex(bRate, version, samplerate) {\n /* convert bitrate in kbps to index */\n if (samplerate < 16000)\n version = 2;\n for (var i = 0; i <= 14; i++) {\n if (Tables_1.bitrate_table[version][i] > 0) {\n if (Tables_1.bitrate_table[version][i] == bRate) {\n return i;\n }\n }\n }\n return -1;\n }\n\n function optimum_bandwidth(lh, bitrate) {\n /**\n *
\n         *  Input:\n         *      bitrate     total bitrate in kbps\n         *\n         *   Output:\n         *      lowerlimit: best lowpass frequency limit for input filter in Hz\n         *      upperlimit: best highpass frequency limit for input filter in Hz\n         * 
\n */\n var freq_map = [new BandPass(8, 2000),\n new BandPass(16, 3700), new BandPass(24, 3900),\n new BandPass(32, 5500), new BandPass(40, 7000),\n new BandPass(48, 7500), new BandPass(56, 10000),\n new BandPass(64, 11000), new BandPass(80, 13500),\n new BandPass(96, 15100), new BandPass(112, 15600),\n new BandPass(128, 17000), new BandPass(160, 17500),\n new BandPass(192, 18600), new BandPass(224, 19400),\n new BandPass(256, 19700), new BandPass(320, 20500)];\n\n var table_index = self.nearestBitrateFullIndex(bitrate);\n lh.lowerlimit = freq_map[table_index].lowpass;\n }\n\n function lame_init_params_ppflt(gfp) {\n var gfc = gfp.internal_flags;\n /***************************************************************/\n /* compute info needed for polyphase filter (filter type==0, default) */\n /***************************************************************/\n\n var lowpass_band = 32;\n var highpass_band = -1;\n\n if (gfc.lowpass1 > 0) {\n var minband = 999;\n for (var band = 0; band <= 31; band++) {\n var freq = (band / 31.0);\n /* this band and above will be zeroed: */\n if (freq >= gfc.lowpass2) {\n lowpass_band = Math.min(lowpass_band, band);\n }\n if (gfc.lowpass1 < freq && freq < gfc.lowpass2) {\n minband = Math.min(minband, band);\n }\n }\n\n /*\n * compute the *actual* transition band implemented by the polyphase\n * filter\n */\n if (minband == 999) {\n gfc.lowpass1 = (lowpass_band - .75) / 31.0;\n } else {\n gfc.lowpass1 = (minband - .75) / 31.0;\n }\n gfc.lowpass2 = lowpass_band / 31.0;\n }\n\n /*\n * make sure highpass filter is within 90% of what the effective\n * highpass frequency will be\n */\n if (gfc.highpass2 > 0) {\n if (gfc.highpass2 < .9 * (.75 / 31.0)) {\n gfc.highpass1 = 0;\n gfc.highpass2 = 0;\n System$2.err.println(\"Warning: highpass filter disabled. \"\n + \"highpass frequency too small\\n\");\n }\n }\n\n if (gfc.highpass2 > 0) {\n var maxband = -1;\n for (var band = 0; band <= 31; band++) {\n var freq = band / 31.0;\n /* this band and below will be zereod */\n if (freq <= gfc.highpass1) {\n highpass_band = Math.max(highpass_band, band);\n }\n if (gfc.highpass1 < freq && freq < gfc.highpass2) {\n maxband = Math.max(maxband, band);\n }\n }\n /*\n * compute the *actual* transition band implemented by the polyphase\n * filter\n */\n gfc.highpass1 = highpass_band / 31.0;\n if (maxband == -1) {\n gfc.highpass2 = (highpass_band + .75) / 31.0;\n } else {\n gfc.highpass2 = (maxband + .75) / 31.0;\n }\n }\n\n for (var band = 0; band < 32; band++) {\n var fc1, fc2;\n var freq = band / 31.0;\n if (gfc.highpass2 > gfc.highpass1) {\n fc1 = filter_coef((gfc.highpass2 - freq)\n / (gfc.highpass2 - gfc.highpass1 + 1e-20));\n } else {\n fc1 = 1.0;\n }\n if (gfc.lowpass2 > gfc.lowpass1) {\n fc2 = filter_coef((freq - gfc.lowpass1)\n / (gfc.lowpass2 - gfc.lowpass1 + 1e-20));\n } else {\n fc2 = 1.0;\n }\n gfc.amp_filter[band] = (fc1 * fc2);\n }\n }\n\n function lame_init_qval(gfp) {\n var gfc = gfp.internal_flags;\n\n switch (gfp.quality) {\n default:\n case 9: /* no psymodel, no noise shaping */\n gfc.psymodel = 0;\n gfc.noise_shaping = 0;\n gfc.noise_shaping_amp = 0;\n gfc.noise_shaping_stop = 0;\n gfc.use_best_huffman = 0;\n gfc.full_outer_loop = 0;\n break;\n\n case 8:\n gfp.quality = 7;\n //$FALL-THROUGH$\n case 7:\n /*\n * use psymodel (for short block and m/s switching), but no noise\n * shapping\n */\n gfc.psymodel = 1;\n gfc.noise_shaping = 0;\n gfc.noise_shaping_amp = 0;\n gfc.noise_shaping_stop = 0;\n gfc.use_best_huffman = 0;\n gfc.full_outer_loop = 0;\n break;\n\n case 6:\n gfc.psymodel = 1;\n if (gfc.noise_shaping == 0)\n gfc.noise_shaping = 1;\n gfc.noise_shaping_amp = 0;\n gfc.noise_shaping_stop = 0;\n if (gfc.subblock_gain == -1)\n gfc.subblock_gain = 1;\n gfc.use_best_huffman = 0;\n gfc.full_outer_loop = 0;\n break;\n\n case 5:\n gfc.psymodel = 1;\n if (gfc.noise_shaping == 0)\n gfc.noise_shaping = 1;\n gfc.noise_shaping_amp = 0;\n gfc.noise_shaping_stop = 0;\n if (gfc.subblock_gain == -1)\n gfc.subblock_gain = 1;\n gfc.use_best_huffman = 0;\n gfc.full_outer_loop = 0;\n break;\n\n case 4:\n gfc.psymodel = 1;\n if (gfc.noise_shaping == 0)\n gfc.noise_shaping = 1;\n gfc.noise_shaping_amp = 0;\n gfc.noise_shaping_stop = 0;\n if (gfc.subblock_gain == -1)\n gfc.subblock_gain = 1;\n gfc.use_best_huffman = 1;\n gfc.full_outer_loop = 0;\n break;\n\n case 3:\n gfc.psymodel = 1;\n if (gfc.noise_shaping == 0)\n gfc.noise_shaping = 1;\n gfc.noise_shaping_amp = 1;\n gfc.noise_shaping_stop = 1;\n if (gfc.subblock_gain == -1)\n gfc.subblock_gain = 1;\n gfc.use_best_huffman = 1;\n gfc.full_outer_loop = 0;\n break;\n\n case 2:\n gfc.psymodel = 1;\n if (gfc.noise_shaping == 0)\n gfc.noise_shaping = 1;\n if (gfc.substep_shaping == 0)\n gfc.substep_shaping = 2;\n gfc.noise_shaping_amp = 1;\n gfc.noise_shaping_stop = 1;\n if (gfc.subblock_gain == -1)\n gfc.subblock_gain = 1;\n gfc.use_best_huffman = 1;\n /* inner loop */\n gfc.full_outer_loop = 0;\n break;\n\n case 1:\n gfc.psymodel = 1;\n if (gfc.noise_shaping == 0)\n gfc.noise_shaping = 1;\n if (gfc.substep_shaping == 0)\n gfc.substep_shaping = 2;\n gfc.noise_shaping_amp = 2;\n gfc.noise_shaping_stop = 1;\n if (gfc.subblock_gain == -1)\n gfc.subblock_gain = 1;\n gfc.use_best_huffman = 1;\n gfc.full_outer_loop = 0;\n break;\n\n case 0:\n gfc.psymodel = 1;\n if (gfc.noise_shaping == 0)\n gfc.noise_shaping = 1;\n if (gfc.substep_shaping == 0)\n gfc.substep_shaping = 2;\n gfc.noise_shaping_amp = 2;\n gfc.noise_shaping_stop = 1;\n if (gfc.subblock_gain == -1)\n gfc.subblock_gain = 1;\n gfc.use_best_huffman = 1;\n /*\n * type 2 disabled because of it slowness, in favor of full outer\n * loop search\n */\n gfc.full_outer_loop = 0;\n /*\n * full outer loop search disabled because of audible distortions it\n * may generate rh 060629\n */\n break;\n }\n\n }\n\n function lame_init_bitstream(gfp) {\n var gfc = gfp.internal_flags;\n gfp.frameNum = 0;\n\n if (gfp.write_id3tag_automatic) {\n id3.id3tag_write_v2(gfp);\n }\n /* initialize histogram data optionally used by frontend */\n\n gfc.bitrate_stereoMode_Hist = new_int_n$2([16, 4 + 1]);\n gfc.bitrate_blockType_Hist = new_int_n$2([16, 4 + 1 + 1]);\n\n gfc.PeakSample = 0.0;\n\n /* Write initial VBR Header to bitstream and init VBR data */\n if (gfp.bWriteVbrTag)\n vbr.InitVbrTag(gfp);\n }\n\n /********************************************************************\n * initialize internal params based on data in gf (globalflags struct filled\n * in by calling program)\n *\n * OUTLINE:\n *\n * We first have some complex code to determine bitrate, output samplerate\n * and mode. It is complicated by the fact that we allow the user to set\n * some or all of these parameters, and need to determine best possible\n * values for the rest of them:\n *\n * 1. set some CPU related flags 2. check if we are mono.mono, stereo.mono\n * or stereo.stereo 3. compute bitrate and output samplerate: user may have\n * set compression ratio user may have set a bitrate user may have set a\n * output samplerate 4. set some options which depend on output samplerate\n * 5. compute the actual compression ratio 6. set mode based on compression\n * ratio\n *\n * The remaining code is much simpler - it just sets options based on the\n * mode & compression ratio:\n *\n * set allow_diff_short based on mode select lowpass filter based on\n * compression ratio & mode set the bitrate index, and min/max bitrates for\n * VBR modes disable VBR tag if it is not appropriate initialize the\n * bitstream initialize scalefac_band data set sideinfo_len (based on\n * channels, CRC, out_samplerate) write an id3v2 tag into the bitstream\n * write VBR tag into the bitstream set mpeg1/2 flag estimate the number of\n * frames (based on a lot of data)\n *\n * now we set more flags: nspsytune: see code VBR modes see code CBR/ABR see\n * code\n *\n * Finally, we set the algorithm flags based on the gfp.quality value\n * lame_init_qval(gfp);\n *\n ********************************************************************/\n this.lame_init_params = function (gfp) {\n var gfc = gfp.internal_flags;\n\n gfc.Class_ID = 0;\n if (gfc.ATH == null)\n gfc.ATH = new ATH_1();\n if (gfc.PSY == null)\n gfc.PSY = new PSY();\n if (gfc.rgdata == null)\n gfc.rgdata = new ReplayGain_1();\n\n gfc.channels_in = gfp.num_channels;\n if (gfc.channels_in == 1)\n gfp.mode = MPEGMode.MONO;\n gfc.channels_out = (gfp.mode == MPEGMode.MONO) ? 1 : 2;\n gfc.mode_ext = Encoder_1.MPG_MD_MS_LR;\n if (gfp.mode == MPEGMode.MONO)\n gfp.force_ms = false;\n /*\n * don't allow forced mid/side stereo for mono output\n */\n\n if (gfp.VBR == VbrMode$2.vbr_off && gfp.VBR_mean_bitrate_kbps != 128\n && gfp.brate == 0)\n gfp.brate = gfp.VBR_mean_bitrate_kbps;\n\n if (gfp.VBR == VbrMode$2.vbr_off || gfp.VBR == VbrMode$2.vbr_mtrh\n || gfp.VBR == VbrMode$2.vbr_mt) {\n /* these modes can handle free format condition */\n } else {\n gfp.free_format = false;\n /* mode can't be mixed with free format */\n }\n\n if (gfp.VBR == VbrMode$2.vbr_off && gfp.brate == 0) {\n /* no bitrate or compression ratio specified, use 11.025 */\n if (BitStream_1.EQ(gfp.compression_ratio, 0))\n gfp.compression_ratio = 11.025;\n /*\n * rate to compress a CD down to exactly 128000 bps\n */\n }\n\n /* find bitrate if user specify a compression ratio */\n if (gfp.VBR == VbrMode$2.vbr_off && gfp.compression_ratio > 0) {\n\n if (gfp.out_samplerate == 0)\n gfp.out_samplerate = map2MP3Frequency((int)(0.97 * gfp.in_samplerate));\n /*\n * round up with a margin of 3 %\n */\n\n /*\n * choose a bitrate for the output samplerate which achieves\n * specified compression ratio\n */\n gfp.brate = 0 | (gfp.out_samplerate * 16 * gfc.channels_out / (1.e3 * gfp.compression_ratio));\n\n /* we need the version for the bitrate table look up */\n gfc.samplerate_index = SmpFrqIndex(gfp.out_samplerate, gfp);\n\n if (!gfp.free_format) /*\n * for non Free Format find the nearest allowed\n * bitrate\n */\n gfp.brate = FindNearestBitrate(gfp.brate, gfp.version,\n gfp.out_samplerate);\n }\n\n if (gfp.out_samplerate != 0) {\n if (gfp.out_samplerate < 16000) {\n gfp.VBR_mean_bitrate_kbps = Math.max(gfp.VBR_mean_bitrate_kbps,\n 8);\n gfp.VBR_mean_bitrate_kbps = Math.min(gfp.VBR_mean_bitrate_kbps,\n 64);\n } else if (gfp.out_samplerate < 32000) {\n gfp.VBR_mean_bitrate_kbps = Math.max(gfp.VBR_mean_bitrate_kbps,\n 8);\n gfp.VBR_mean_bitrate_kbps = Math.min(gfp.VBR_mean_bitrate_kbps,\n 160);\n } else {\n gfp.VBR_mean_bitrate_kbps = Math.max(gfp.VBR_mean_bitrate_kbps,\n 32);\n gfp.VBR_mean_bitrate_kbps = Math.min(gfp.VBR_mean_bitrate_kbps,\n 320);\n }\n }\n\n /****************************************************************/\n /* if a filter has not been enabled, see if we should add one: */\n /****************************************************************/\n if (gfp.lowpassfreq == 0) {\n var lowpass = 16000.;\n\n switch (gfp.VBR) {\n case VbrMode$2.vbr_off:\n {\n var lh = new LowPassHighPass();\n optimum_bandwidth(lh, gfp.brate);\n lowpass = lh.lowerlimit;\n break;\n }\n case VbrMode$2.vbr_abr:\n {\n var lh = new LowPassHighPass();\n optimum_bandwidth(lh, gfp.VBR_mean_bitrate_kbps);\n lowpass = lh.lowerlimit;\n break;\n }\n case VbrMode$2.vbr_rh:\n {\n var x = [19500, 19000, 18600, 18000, 17500, 16000,\n 15600, 14900, 12500, 10000, 3950];\n if (0 <= gfp.VBR_q && gfp.VBR_q <= 9) {\n var a = x[gfp.VBR_q], b = x[gfp.VBR_q + 1], m = gfp.VBR_q_frac;\n lowpass = linear_int(a, b, m);\n } else {\n lowpass = 19500;\n }\n break;\n }\n default:\n {\n var x = [19500, 19000, 18500, 18000, 17500, 16500,\n 15500, 14500, 12500, 9500, 3950];\n if (0 <= gfp.VBR_q && gfp.VBR_q <= 9) {\n var a = x[gfp.VBR_q], b = x[gfp.VBR_q + 1], m = gfp.VBR_q_frac;\n lowpass = linear_int(a, b, m);\n } else {\n lowpass = 19500;\n }\n }\n }\n if (gfp.mode == MPEGMode.MONO\n && (gfp.VBR == VbrMode$2.vbr_off || gfp.VBR == VbrMode$2.vbr_abr))\n lowpass *= 1.5;\n\n gfp.lowpassfreq = lowpass | 0;\n }\n\n if (gfp.out_samplerate == 0) {\n if (2 * gfp.lowpassfreq > gfp.in_samplerate) {\n gfp.lowpassfreq = gfp.in_samplerate / 2;\n }\n gfp.out_samplerate = optimum_samplefreq(gfp.lowpassfreq | 0,\n gfp.in_samplerate);\n }\n\n gfp.lowpassfreq = Math.min(20500, gfp.lowpassfreq);\n gfp.lowpassfreq = Math.min(gfp.out_samplerate / 2, gfp.lowpassfreq);\n\n if (gfp.VBR == VbrMode$2.vbr_off) {\n gfp.compression_ratio = gfp.out_samplerate * 16 * gfc.channels_out\n / (1.e3 * gfp.brate);\n }\n if (gfp.VBR == VbrMode$2.vbr_abr) {\n gfp.compression_ratio = gfp.out_samplerate * 16 * gfc.channels_out\n / (1.e3 * gfp.VBR_mean_bitrate_kbps);\n }\n\n /*\n * do not compute ReplayGain values and do not find the peak sample if\n * we can't store them\n */\n if (!gfp.bWriteVbrTag) {\n gfp.findReplayGain = false;\n gfp.decode_on_the_fly = false;\n gfc.findPeakSample = false;\n }\n gfc.findReplayGain = gfp.findReplayGain;\n gfc.decode_on_the_fly = gfp.decode_on_the_fly;\n\n if (gfc.decode_on_the_fly)\n gfc.findPeakSample = true;\n\n if (gfc.findReplayGain) {\n if (ga.InitGainAnalysis(gfc.rgdata, gfp.out_samplerate) == GainAnalysis.INIT_GAIN_ANALYSIS_ERROR) {\n gfp.internal_flags = null;\n return -6;\n }\n }\n\n if (gfc.decode_on_the_fly && !gfp.decode_only) {\n if (gfc.hip != null) {\n mpglib.hip_decode_exit(gfc.hip);\n }\n gfc.hip = mpglib.hip_decode_init();\n }\n\n gfc.mode_gr = gfp.out_samplerate <= 24000 ? 1 : 2;\n /*\n * Number of granules per frame\n */\n gfp.framesize = 576 * gfc.mode_gr;\n gfp.encoder_delay = Encoder_1.ENCDELAY;\n\n gfc.resample_ratio = gfp.in_samplerate / gfp.out_samplerate;\n\n /**\n *
\n         *  sample freq       bitrate     compression ratio\n         *     [kHz]      [kbps/channel]   for 16 bit input\n         *     44.1            56               12.6\n         *     44.1            64               11.025\n         *     44.1            80                8.82\n         *     22.05           24               14.7\n         *     22.05           32               11.025\n         *     22.05           40                8.82\n         *     16              16               16.0\n         *     16              24               10.667\n         * 
\n */\n /**\n *
\n         *  For VBR, take a guess at the compression_ratio.\n         *  For example:\n         *\n         *    VBR_q    compression     like\n         *     -        4.4         320 kbps/44 kHz\n         *   0...1      5.5         256 kbps/44 kHz\n         *     2        7.3         192 kbps/44 kHz\n         *     4        8.8         160 kbps/44 kHz\n         *     6       11           128 kbps/44 kHz\n         *     9       14.7          96 kbps\n         *\n         *  for lower bitrates, downsample with --resample\n         * 
\n */\n switch (gfp.VBR) {\n case VbrMode$2.vbr_mt:\n case VbrMode$2.vbr_rh:\n case VbrMode$2.vbr_mtrh:\n {\n /* numbers are a bit strange, but they determine the lowpass value */\n var cmp = [5.7, 6.5, 7.3, 8.2, 10, 11.9, 13, 14,\n 15, 16.5];\n gfp.compression_ratio = cmp[gfp.VBR_q];\n }\n break;\n case VbrMode$2.vbr_abr:\n gfp.compression_ratio = gfp.out_samplerate * 16 * gfc.channels_out\n / (1.e3 * gfp.VBR_mean_bitrate_kbps);\n break;\n default:\n gfp.compression_ratio = gfp.out_samplerate * 16 * gfc.channels_out\n / (1.e3 * gfp.brate);\n break;\n }\n\n /*\n * mode = -1 (not set by user) or mode = MONO (because of only 1 input\n * channel). If mode has not been set, then select J-STEREO\n */\n if (gfp.mode == MPEGMode.NOT_SET) {\n gfp.mode = MPEGMode.JOINT_STEREO;\n }\n\n /* apply user driven high pass filter */\n if (gfp.highpassfreq > 0) {\n gfc.highpass1 = 2. * gfp.highpassfreq;\n\n if (gfp.highpasswidth >= 0)\n gfc.highpass2 = 2. * (gfp.highpassfreq + gfp.highpasswidth);\n else\n /* 0% above on default */\n gfc.highpass2 = (1 + 0.00) * 2. * gfp.highpassfreq;\n\n gfc.highpass1 /= gfp.out_samplerate;\n gfc.highpass2 /= gfp.out_samplerate;\n } else {\n gfc.highpass1 = 0;\n gfc.highpass2 = 0;\n }\n /* apply user driven low pass filter */\n if (gfp.lowpassfreq > 0) {\n gfc.lowpass2 = 2. * gfp.lowpassfreq;\n if (gfp.lowpasswidth >= 0) {\n gfc.lowpass1 = 2. * (gfp.lowpassfreq - gfp.lowpasswidth);\n if (gfc.lowpass1 < 0) /* has to be >= 0 */\n gfc.lowpass1 = 0;\n } else { /* 0% below on default */\n gfc.lowpass1 = (1 - 0.00) * 2. * gfp.lowpassfreq;\n }\n gfc.lowpass1 /= gfp.out_samplerate;\n gfc.lowpass2 /= gfp.out_samplerate;\n } else {\n gfc.lowpass1 = 0;\n gfc.lowpass2 = 0;\n }\n\n /**********************************************************************/\n /* compute info needed for polyphase filter (filter type==0, default) */\n /**********************************************************************/\n lame_init_params_ppflt(gfp);\n /*******************************************************\n * samplerate and bitrate index\n *******************************************************/\n gfc.samplerate_index = SmpFrqIndex(gfp.out_samplerate, gfp);\n if (gfc.samplerate_index < 0) {\n gfp.internal_flags = null;\n return -1;\n }\n\n if (gfp.VBR == VbrMode$2.vbr_off) {\n if (gfp.free_format) {\n gfc.bitrate_index = 0;\n } else {\n gfp.brate = FindNearestBitrate(gfp.brate, gfp.version,\n gfp.out_samplerate);\n gfc.bitrate_index = BitrateIndex(gfp.brate, gfp.version,\n gfp.out_samplerate);\n if (gfc.bitrate_index <= 0) {\n gfp.internal_flags = null;\n return -1;\n }\n }\n } else {\n gfc.bitrate_index = 1;\n }\n\n /* for CBR, we will write an \"info\" tag. */\n\n if (gfp.analysis)\n gfp.bWriteVbrTag = false;\n\n /* some file options not allowed if output is: not specified or stdout */\n if (gfc.pinfo != null)\n gfp.bWriteVbrTag = false;\n /* disable Xing VBR tag */\n\n bs.init_bit_stream_w(gfc);\n\n var j = gfc.samplerate_index + (3 * gfp.version) + 6\n * (gfp.out_samplerate < 16000 ? 1 : 0);\n for (var i = 0; i < Encoder_1.SBMAX_l + 1; i++)\n gfc.scalefac_band.l[i] = qupvt.sfBandIndex[j].l[i];\n\n for (var i = 0; i < Encoder_1.PSFB21 + 1; i++) {\n var size = (gfc.scalefac_band.l[22] - gfc.scalefac_band.l[21])\n / Encoder_1.PSFB21;\n var start = gfc.scalefac_band.l[21] + i * size;\n gfc.scalefac_band.psfb21[i] = start;\n }\n gfc.scalefac_band.psfb21[Encoder_1.PSFB21] = 576;\n\n for (var i = 0; i < Encoder_1.SBMAX_s + 1; i++)\n gfc.scalefac_band.s[i] = qupvt.sfBandIndex[j].s[i];\n\n for (var i = 0; i < Encoder_1.PSFB12 + 1; i++) {\n var size = (gfc.scalefac_band.s[13] - gfc.scalefac_band.s[12])\n / Encoder_1.PSFB12;\n var start = gfc.scalefac_band.s[12] + i * size;\n gfc.scalefac_band.psfb12[i] = start;\n }\n gfc.scalefac_band.psfb12[Encoder_1.PSFB12] = 192;\n /* determine the mean bitrate for main data */\n if (gfp.version == 1) /* MPEG 1 */\n gfc.sideinfo_len = (gfc.channels_out == 1) ? 4 + 17 : 4 + 32;\n else\n /* MPEG 2 */\n gfc.sideinfo_len = (gfc.channels_out == 1) ? 4 + 9 : 4 + 17;\n\n if (gfp.error_protection)\n gfc.sideinfo_len += 2;\n\n lame_init_bitstream(gfp);\n\n gfc.Class_ID = LAME_ID;\n\n {\n var k;\n\n for (k = 0; k < 19; k++)\n gfc.nsPsy.pefirbuf[k] = 700 * gfc.mode_gr * gfc.channels_out;\n\n if (gfp.ATHtype == -1)\n gfp.ATHtype = 4;\n }\n assert$2(gfp.VBR_q <= 9);\n assert$2(gfp.VBR_q >= 0);\n\n switch (gfp.VBR) {\n\n case VbrMode$2.vbr_mt:\n gfp.VBR = VbrMode$2.vbr_mtrh;\n //$FALL-THROUGH$\n case VbrMode$2.vbr_mtrh:\n {\n if (gfp.useTemporal == null) {\n gfp.useTemporal = false;\n /* off by default for this VBR mode */\n }\n\n p.apply_preset(gfp, 500 - (gfp.VBR_q * 10), 0);\n /**\n *
\n                 *   The newer VBR code supports only a limited\n                 *     subset of quality levels:\n                 *     9-5=5 are the same, uses x^3/4 quantization\n                 *   4-0=0 are the same  5 plus best huffman divide code\n                 * 
\n */\n if (gfp.quality < 0)\n gfp.quality = LAME_DEFAULT_QUALITY;\n if (gfp.quality < 5)\n gfp.quality = 0;\n if (gfp.quality > 5)\n gfp.quality = 5;\n\n gfc.PSY.mask_adjust = gfp.maskingadjust;\n gfc.PSY.mask_adjust_short = gfp.maskingadjust_short;\n\n /*\n * sfb21 extra only with MPEG-1 at higher sampling rates\n */\n if (gfp.experimentalY)\n gfc.sfb21_extra = false;\n else\n gfc.sfb21_extra = (gfp.out_samplerate > 44000);\n\n gfc.iteration_loop = new VBRNewIterationLoop(qu);\n break;\n\n }\n case VbrMode$2.vbr_rh:\n {\n\n p.apply_preset(gfp, 500 - (gfp.VBR_q * 10), 0);\n\n gfc.PSY.mask_adjust = gfp.maskingadjust;\n gfc.PSY.mask_adjust_short = gfp.maskingadjust_short;\n\n /*\n * sfb21 extra only with MPEG-1 at higher sampling rates\n */\n if (gfp.experimentalY)\n gfc.sfb21_extra = false;\n else\n gfc.sfb21_extra = (gfp.out_samplerate > 44000);\n\n /*\n * VBR needs at least the output of GPSYCHO, so we have to garantee\n * that by setting a minimum quality level, actually level 6 does\n * it. down to level 6\n */\n if (gfp.quality > 6)\n gfp.quality = 6;\n\n if (gfp.quality < 0)\n gfp.quality = LAME_DEFAULT_QUALITY;\n\n gfc.iteration_loop = new VBROldIterationLoop(qu);\n break;\n }\n\n default: /* cbr/abr */\n {\n var vbrmode;\n\n /*\n * no sfb21 extra with CBR code\n */\n gfc.sfb21_extra = false;\n\n if (gfp.quality < 0)\n gfp.quality = LAME_DEFAULT_QUALITY;\n\n vbrmode = gfp.VBR;\n if (vbrmode == VbrMode$2.vbr_off)\n gfp.VBR_mean_bitrate_kbps = gfp.brate;\n /* second, set parameters depending on bitrate */\n p.apply_preset(gfp, gfp.VBR_mean_bitrate_kbps, 0);\n gfp.VBR = vbrmode;\n\n gfc.PSY.mask_adjust = gfp.maskingadjust;\n gfc.PSY.mask_adjust_short = gfp.maskingadjust_short;\n\n if (vbrmode == VbrMode$2.vbr_off) {\n gfc.iteration_loop = new CBRNewIterationLoop_1(qu);\n } else {\n gfc.iteration_loop = new ABRIterationLoop(qu);\n }\n break;\n }\n }\n assert$2(gfp.scale >= 0);\n /* initialize default values common for all modes */\n\n if (gfp.VBR != VbrMode$2.vbr_off) { /* choose a min/max bitrate for VBR */\n /* if the user didn't specify VBR_max_bitrate: */\n gfc.VBR_min_bitrate = 1;\n /*\n * default: allow 8 kbps (MPEG-2) or 32 kbps (MPEG-1)\n */\n gfc.VBR_max_bitrate = 14;\n /*\n * default: allow 160 kbps (MPEG-2) or 320 kbps (MPEG-1)\n */\n if (gfp.out_samplerate < 16000)\n gfc.VBR_max_bitrate = 8;\n /* default: allow 64 kbps (MPEG-2.5) */\n if (gfp.VBR_min_bitrate_kbps != 0) {\n gfp.VBR_min_bitrate_kbps = FindNearestBitrate(\n gfp.VBR_min_bitrate_kbps, gfp.version,\n gfp.out_samplerate);\n gfc.VBR_min_bitrate = BitrateIndex(gfp.VBR_min_bitrate_kbps,\n gfp.version, gfp.out_samplerate);\n if (gfc.VBR_min_bitrate < 0)\n return -1;\n }\n if (gfp.VBR_max_bitrate_kbps != 0) {\n gfp.VBR_max_bitrate_kbps = FindNearestBitrate(\n gfp.VBR_max_bitrate_kbps, gfp.version,\n gfp.out_samplerate);\n gfc.VBR_max_bitrate = BitrateIndex(gfp.VBR_max_bitrate_kbps,\n gfp.version, gfp.out_samplerate);\n if (gfc.VBR_max_bitrate < 0)\n return -1;\n }\n gfp.VBR_min_bitrate_kbps = Tables_1.bitrate_table[gfp.version][gfc.VBR_min_bitrate];\n gfp.VBR_max_bitrate_kbps = Tables_1.bitrate_table[gfp.version][gfc.VBR_max_bitrate];\n gfp.VBR_mean_bitrate_kbps = Math.min(\n Tables_1.bitrate_table[gfp.version][gfc.VBR_max_bitrate],\n gfp.VBR_mean_bitrate_kbps);\n gfp.VBR_mean_bitrate_kbps = Math.max(\n Tables_1.bitrate_table[gfp.version][gfc.VBR_min_bitrate],\n gfp.VBR_mean_bitrate_kbps);\n }\n\n /* just another daily changing developer switch */\n if (gfp.tune) {\n gfc.PSY.mask_adjust += gfp.tune_value_a;\n gfc.PSY.mask_adjust_short += gfp.tune_value_a;\n }\n\n /* initialize internal qval settings */\n lame_init_qval(gfp);\n assert$2(gfp.scale >= 0);\n /*\n * automatic ATH adjustment on\n */\n if (gfp.athaa_type < 0)\n gfc.ATH.useAdjust = 3;\n else\n gfc.ATH.useAdjust = gfp.athaa_type;\n\n /* initialize internal adaptive ATH settings -jd */\n gfc.ATH.aaSensitivityP = Math.pow(10.0, gfp.athaa_sensitivity\n / -10.0);\n\n if (gfp.short_blocks == null) {\n gfp.short_blocks = ShortBlock$2.short_block_allowed;\n }\n\n /*\n * Note Jan/2003: Many hardware decoders cannot handle short blocks in\n * regular stereo mode unless they are coupled (same type in both\n * channels) it is a rare event (1 frame per min. or so) that LAME would\n * use uncoupled short blocks, so lets turn them off until we decide how\n * to handle this. No other encoders allow uncoupled short blocks, even\n * though it is in the standard.\n */\n /*\n * rh 20040217: coupling makes no sense for mono and dual-mono streams\n */\n if (gfp.short_blocks == ShortBlock$2.short_block_allowed\n && (gfp.mode == MPEGMode.JOINT_STEREO || gfp.mode == MPEGMode.STEREO)) {\n gfp.short_blocks = ShortBlock$2.short_block_coupled;\n }\n\n if (gfp.quant_comp < 0)\n gfp.quant_comp = 1;\n if (gfp.quant_comp_short < 0)\n gfp.quant_comp_short = 0;\n\n if (gfp.msfix < 0)\n gfp.msfix = 0;\n\n /* select psychoacoustic model */\n gfp.exp_nspsytune = gfp.exp_nspsytune | 1;\n\n if (gfp.internal_flags.nsPsy.attackthre < 0)\n gfp.internal_flags.nsPsy.attackthre = PsyModel_1.NSATTACKTHRE;\n if (gfp.internal_flags.nsPsy.attackthre_s < 0)\n gfp.internal_flags.nsPsy.attackthre_s = PsyModel_1.NSATTACKTHRE_S;\n\n assert$2(gfp.scale >= 0);\n\n if (gfp.scale < 0)\n gfp.scale = 1;\n\n if (gfp.ATHtype < 0)\n gfp.ATHtype = 4;\n\n if (gfp.ATHcurve < 0)\n gfp.ATHcurve = 4;\n\n if (gfp.athaa_loudapprox < 0)\n gfp.athaa_loudapprox = 2;\n\n if (gfp.interChRatio < 0)\n gfp.interChRatio = 0;\n\n if (gfp.useTemporal == null)\n gfp.useTemporal = true;\n /* on by default */\n\n /*\n * padding method as described in\n * \"MPEG-Layer3 / Bitstream Syntax and Decoding\" by Martin Sieler, Ralph\n * Sperschneider\n *\n * note: there is no padding for the very first frame\n *\n * Robert Hegemann 2000-06-22\n */\n gfc.slot_lag = gfc.frac_SpF = 0;\n if (gfp.VBR == VbrMode$2.vbr_off)\n gfc.slot_lag = gfc.frac_SpF = (((gfp.version + 1) * 72000 * gfp.brate) % gfp.out_samplerate) | 0;\n\n qupvt.iteration_init(gfp);\n psy.psymodel_init(gfp);\n assert$2(gfp.scale >= 0);\n return 0;\n };\n\n function update_inbuffer_size(gfc, nsamples) {\n if (gfc.in_buffer_0 == null || gfc.in_buffer_nsamples < nsamples) {\n gfc.in_buffer_0 = new_float$2(nsamples);\n gfc.in_buffer_1 = new_float$2(nsamples);\n gfc.in_buffer_nsamples = nsamples;\n }\n }\n\n this.lame_encode_flush = function (gfp, mp3buffer, mp3bufferPos, mp3buffer_size) {\n var gfc = gfp.internal_flags;\n var buffer = new_short_n$1([2, 1152]);\n var imp3 = 0, mp3count, mp3buffer_size_remaining;\n\n /*\n * we always add POSTDELAY=288 padding to make sure granule with real\n * data can be complety decoded (because of 50% overlap with next\n * granule\n */\n var end_padding;\n var frames_left;\n var samples_to_encode = gfc.mf_samples_to_encode - Encoder_1.POSTDELAY;\n var mf_needed = calcNeeded(gfp);\n\n /* Was flush already called? */\n if (gfc.mf_samples_to_encode < 1) {\n return 0;\n }\n mp3count = 0;\n\n if (gfp.in_samplerate != gfp.out_samplerate) {\n /*\n * delay due to resampling; needs to be fixed, if resampling code\n * gets changed\n */\n samples_to_encode += 16. * gfp.out_samplerate / gfp.in_samplerate;\n }\n end_padding = gfp.framesize - (samples_to_encode % gfp.framesize);\n if (end_padding < 576)\n end_padding += gfp.framesize;\n gfp.encoder_padding = end_padding;\n\n frames_left = (samples_to_encode + end_padding) / gfp.framesize;\n\n /*\n * send in a frame of 0 padding until all internal sample buffers are\n * flushed\n */\n while (frames_left > 0 && imp3 >= 0) {\n var bunch = mf_needed - gfc.mf_size;\n var frame_num = gfp.frameNum;\n\n bunch *= gfp.in_samplerate;\n bunch /= gfp.out_samplerate;\n if (bunch > 1152)\n bunch = 1152;\n if (bunch < 1)\n bunch = 1;\n\n mp3buffer_size_remaining = mp3buffer_size - mp3count;\n\n /* if user specifed buffer size = 0, dont check size */\n if (mp3buffer_size == 0)\n mp3buffer_size_remaining = 0;\n\n imp3 = this.lame_encode_buffer(gfp, buffer[0], buffer[1], bunch,\n mp3buffer, mp3bufferPos, mp3buffer_size_remaining);\n\n mp3bufferPos += imp3;\n mp3count += imp3;\n frames_left -= (frame_num != gfp.frameNum) ? 1 : 0;\n }\n /*\n * Set gfc.mf_samples_to_encode to 0, so we may detect and break loops\n * calling it more than once in a row.\n */\n gfc.mf_samples_to_encode = 0;\n\n if (imp3 < 0) {\n /* some type of fatal error */\n return imp3;\n }\n\n mp3buffer_size_remaining = mp3buffer_size - mp3count;\n /* if user specifed buffer size = 0, dont check size */\n if (mp3buffer_size == 0)\n mp3buffer_size_remaining = 0;\n\n /* mp3 related stuff. bit buffer might still contain some mp3 data */\n bs.flush_bitstream(gfp);\n imp3 = bs.copy_buffer(gfc, mp3buffer, mp3bufferPos,\n mp3buffer_size_remaining, 1);\n if (imp3 < 0) {\n /* some type of fatal error */\n return imp3;\n }\n mp3bufferPos += imp3;\n mp3count += imp3;\n mp3buffer_size_remaining = mp3buffer_size - mp3count;\n /* if user specifed buffer size = 0, dont check size */\n if (mp3buffer_size == 0)\n mp3buffer_size_remaining = 0;\n\n if (gfp.write_id3tag_automatic) {\n /* write a id3 tag to the bitstream */\n id3.id3tag_write_v1(gfp);\n\n imp3 = bs.copy_buffer(gfc, mp3buffer, mp3bufferPos,\n mp3buffer_size_remaining, 0);\n\n if (imp3 < 0) {\n return imp3;\n }\n mp3count += imp3;\n }\n return mp3count;\n };\n\n this.lame_encode_buffer = function (gfp, buffer_l, buffer_r, nsamples, mp3buf, mp3bufPos, mp3buf_size) {\n var gfc = gfp.internal_flags;\n var in_buffer = [null, null];\n\n if (gfc.Class_ID != LAME_ID)\n return -3;\n\n if (nsamples == 0)\n return 0;\n\n update_inbuffer_size(gfc, nsamples);\n\n in_buffer[0] = gfc.in_buffer_0;\n in_buffer[1] = gfc.in_buffer_1;\n\n /* make a copy of input buffer, changing type to sample_t */\n for (var i = 0; i < nsamples; i++) {\n in_buffer[0][i] = buffer_l[i];\n if (gfc.channels_in > 1)\n in_buffer[1][i] = buffer_r[i];\n }\n\n return lame_encode_buffer_sample(gfp, in_buffer[0], in_buffer[1],\n nsamples, mp3buf, mp3bufPos, mp3buf_size);\n };\n\n function calcNeeded(gfp) {\n var mf_needed = Encoder_1.BLKSIZE + gfp.framesize - Encoder_1.FFTOFFSET;\n /*\n * amount needed for FFT\n */\n mf_needed = Math.max(mf_needed, 512 + gfp.framesize - 32);\n assert$2(LameInternalFlags_1.MFSIZE >= mf_needed);\n\n return mf_needed;\n }\n\n function lame_encode_buffer_sample(gfp, buffer_l, buffer_r, nsamples, mp3buf, mp3bufPos, mp3buf_size) {\n var gfc = gfp.internal_flags;\n var mp3size = 0, ret, i, ch, mf_needed;\n var mp3out;\n var mfbuf = [null, null];\n var in_buffer = [null, null];\n\n if (gfc.Class_ID != LAME_ID)\n return -3;\n\n if (nsamples == 0)\n return 0;\n\n /* copy out any tags that may have been written into bitstream */\n mp3out = bs.copy_buffer(gfc, mp3buf, mp3bufPos, mp3buf_size, 0);\n if (mp3out < 0)\n return mp3out;\n /* not enough buffer space */\n mp3bufPos += mp3out;\n mp3size += mp3out;\n\n in_buffer[0] = buffer_l;\n in_buffer[1] = buffer_r;\n\n /* Apply user defined re-scaling */\n\n /* user selected scaling of the samples */\n if (BitStream_1.NEQ(gfp.scale, 0) && BitStream_1.NEQ(gfp.scale, 1.0)) {\n for (i = 0; i < nsamples; ++i) {\n in_buffer[0][i] *= gfp.scale;\n if (gfc.channels_out == 2)\n in_buffer[1][i] *= gfp.scale;\n }\n }\n\n /* user selected scaling of the channel 0 (left) samples */\n if (BitStream_1.NEQ(gfp.scale_left, 0)\n && BitStream_1.NEQ(gfp.scale_left, 1.0)) {\n for (i = 0; i < nsamples; ++i) {\n in_buffer[0][i] *= gfp.scale_left;\n }\n }\n\n /* user selected scaling of the channel 1 (right) samples */\n if (BitStream_1.NEQ(gfp.scale_right, 0)\n && BitStream_1.NEQ(gfp.scale_right, 1.0)) {\n for (i = 0; i < nsamples; ++i) {\n in_buffer[1][i] *= gfp.scale_right;\n }\n }\n\n /* Downsample to Mono if 2 channels in and 1 channel out */\n if (gfp.num_channels == 2 && gfc.channels_out == 1) {\n for (i = 0; i < nsamples; ++i) {\n in_buffer[0][i] = 0.5 * ( in_buffer[0][i] + in_buffer[1][i]);\n in_buffer[1][i] = 0.0;\n }\n }\n\n mf_needed = calcNeeded(gfp);\n\n mfbuf[0] = gfc.mfbuf[0];\n mfbuf[1] = gfc.mfbuf[1];\n\n var in_bufferPos = 0;\n while (nsamples > 0) {\n var in_buffer_ptr = [null, null];\n var n_in = 0;\n /* number of input samples processed with fill_buffer */\n var n_out = 0;\n /* number of samples output with fill_buffer */\n /* n_in <> n_out if we are resampling */\n\n in_buffer_ptr[0] = in_buffer[0];\n in_buffer_ptr[1] = in_buffer[1];\n /* copy in new samples into mfbuf, with resampling */\n var inOut = new InOut();\n fill_buffer(gfp, mfbuf, in_buffer_ptr, in_bufferPos, nsamples,\n inOut);\n n_in = inOut.n_in;\n n_out = inOut.n_out;\n\n /* compute ReplayGain of resampled input if requested */\n if (gfc.findReplayGain && !gfc.decode_on_the_fly)\n if (ga.AnalyzeSamples(gfc.rgdata, mfbuf[0], gfc.mf_size,\n mfbuf[1], gfc.mf_size, n_out, gfc.channels_out) == GainAnalysis.GAIN_ANALYSIS_ERROR)\n return -6;\n\n /* update in_buffer counters */\n nsamples -= n_in;\n in_bufferPos += n_in;\n if (gfc.channels_out == 2)\n ;// in_bufferPos += n_in;\n\n /* update mfbuf[] counters */\n gfc.mf_size += n_out;\n assert$2(gfc.mf_size <= LameInternalFlags_1.MFSIZE);\n\n /*\n * lame_encode_flush may have set gfc.mf_sample_to_encode to 0 so we\n * have to reinitialize it here when that happened.\n */\n if (gfc.mf_samples_to_encode < 1) {\n gfc.mf_samples_to_encode = Encoder_1.ENCDELAY + Encoder_1.POSTDELAY;\n }\n gfc.mf_samples_to_encode += n_out;\n\n if (gfc.mf_size >= mf_needed) {\n /* encode the frame. */\n /* mp3buf = pointer to current location in buffer */\n /* mp3buf_size = size of original mp3 output buffer */\n /* = 0 if we should not worry about the */\n /* buffer size because calling program is */\n /* to lazy to compute it */\n /* mp3size = size of data written to buffer so far */\n /* mp3buf_size-mp3size = amount of space avalable */\n\n var buf_size = mp3buf_size - mp3size;\n if (mp3buf_size == 0)\n buf_size = 0;\n\n ret = lame_encode_frame(gfp, mfbuf[0], mfbuf[1], mp3buf,\n mp3bufPos, buf_size);\n\n if (ret < 0)\n return ret;\n mp3bufPos += ret;\n mp3size += ret;\n\n /* shift out old samples */\n gfc.mf_size -= gfp.framesize;\n gfc.mf_samples_to_encode -= gfp.framesize;\n for (ch = 0; ch < gfc.channels_out; ch++)\n for (i = 0; i < gfc.mf_size; i++)\n mfbuf[ch][i] = mfbuf[ch][i + gfp.framesize];\n }\n }\n assert$2(nsamples == 0);\n\n return mp3size;\n }\n\n function lame_encode_frame(gfp, inbuf_l, inbuf_r, mp3buf, mp3bufPos, mp3buf_size) {\n var ret = self.enc.lame_encode_mp3_frame(gfp, inbuf_l, inbuf_r, mp3buf,\n mp3bufPos, mp3buf_size);\n gfp.frameNum++;\n return ret;\n }\n\n function InOut() {\n this.n_in = 0;\n this.n_out = 0;\n }\n\n\n function NumUsed() {\n this.num_used = 0;\n }\n\n /**\n * Greatest common divisor.\n *

\n * Joint work of Euclid and M. Hendry\n */\n function gcd(i, j) {\n return j != 0 ? gcd(j, i % j) : i;\n }\n\n /**\n * Resampling via FIR filter, blackman window.\n */\n function blackman(x, fcn, l) {\n /*\n * This algorithm from: SIGNAL PROCESSING ALGORITHMS IN FORTRAN AND C\n * S.D. Stearns and R.A. David, Prentice-Hall, 1992\n */\n var wcn = (Math.PI * fcn);\n\n x /= l;\n if (x < 0)\n x = 0;\n if (x > 1)\n x = 1;\n var x2 = x - .5;\n\n var bkwn = 0.42 - 0.5 * Math.cos(2 * x * Math.PI) + 0.08 * Math.cos(4 * x * Math.PI);\n if (Math.abs(x2) < 1e-9)\n return (wcn / Math.PI);\n else\n return (bkwn * Math.sin(l * wcn * x2) / (Math.PI * l * x2));\n }\n\n function fill_buffer_resample(gfp, outbuf, outbufPos, desired_len, inbuf, in_bufferPos, len, num_used, ch) {\n var gfc = gfp.internal_flags;\n var i, j = 0, k;\n /* number of convolution functions to pre-compute */\n var bpc = gfp.out_samplerate\n / gcd(gfp.out_samplerate, gfp.in_samplerate);\n if (bpc > LameInternalFlags_1.BPC)\n bpc = LameInternalFlags_1.BPC;\n\n var intratio = (Math.abs(gfc.resample_ratio\n - Math.floor(.5 + gfc.resample_ratio)) < .0001) ? 1 : 0;\n var fcn = 1.00 / gfc.resample_ratio;\n if (fcn > 1.00)\n fcn = 1.00;\n var filter_l = 31;\n if (0 == filter_l % 2)\n --filter_l;\n /* must be odd */\n filter_l += intratio;\n /* unless resample_ratio=int, it must be even */\n\n var BLACKSIZE = filter_l + 1;\n /* size of data needed for FIR */\n\n if (gfc.fill_buffer_resample_init == 0) {\n gfc.inbuf_old[0] = new_float$2(BLACKSIZE);\n gfc.inbuf_old[1] = new_float$2(BLACKSIZE);\n for (i = 0; i <= 2 * bpc; ++i)\n gfc.blackfilt[i] = new_float$2(BLACKSIZE);\n\n gfc.itime[0] = 0;\n gfc.itime[1] = 0;\n\n /* precompute blackman filter coefficients */\n for (j = 0; j <= 2 * bpc; j++) {\n var sum = 0.;\n var offset = (j - bpc) / (2. * bpc);\n for (i = 0; i <= filter_l; i++)\n sum += gfc.blackfilt[j][i] = blackman(i - offset, fcn,\n filter_l);\n for (i = 0; i <= filter_l; i++)\n gfc.blackfilt[j][i] /= sum;\n }\n gfc.fill_buffer_resample_init = 1;\n }\n\n var inbuf_old = gfc.inbuf_old[ch];\n\n /* time of j'th element in inbuf = itime + j/ifreq; */\n /* time of k'th element in outbuf = j/ofreq */\n for (k = 0; k < desired_len; k++) {\n var time0;\n var joff;\n\n time0 = k * gfc.resample_ratio;\n /* time of k'th output sample */\n j = 0 | Math.floor(time0 - gfc.itime[ch]);\n\n /* check if we need more input data */\n if ((filter_l + j - filter_l / 2) >= len)\n break;\n\n /* blackman filter. by default, window centered at j+.5(filter_l%2) */\n /* but we want a window centered at time0. */\n var offset = (time0 - gfc.itime[ch] - (j + .5 * (filter_l % 2)));\n assert$2(Math.abs(offset) <= .501);\n\n /* find the closest precomputed window for this offset: */\n joff = 0 | Math.floor((offset * 2 * bpc) + bpc + .5);\n var xvalue = 0.;\n for (i = 0; i <= filter_l; ++i) {\n var j2 = i + j - filter_l / 2;\n var y;\n assert$2(j2 < len);\n assert$2(j2 + BLACKSIZE >= 0);\n y = (j2 < 0) ? inbuf_old[BLACKSIZE + j2] : inbuf[in_bufferPos\n + j2];\n xvalue += y * gfc.blackfilt[joff][i];\n }\n outbuf[outbufPos + k] = xvalue;\n }\n\n /* k = number of samples added to outbuf */\n /* last k sample used data from [j-filter_l/2,j+filter_l-filter_l/2] */\n\n /* how many samples of input data were used: */\n num_used.num_used = Math.min(len, filter_l + j - filter_l / 2);\n\n /*\n * adjust our input time counter. Incriment by the number of samples\n * used, then normalize so that next output sample is at time 0, next\n * input buffer is at time itime[ch]\n */\n gfc.itime[ch] += num_used.num_used - k * gfc.resample_ratio;\n\n /* save the last BLACKSIZE samples into the inbuf_old buffer */\n if (num_used.num_used >= BLACKSIZE) {\n for (i = 0; i < BLACKSIZE; i++)\n inbuf_old[i] = inbuf[in_bufferPos + num_used.num_used + i\n - BLACKSIZE];\n } else {\n /* shift in num_used.num_used samples into inbuf_old */\n var n_shift = BLACKSIZE - num_used.num_used;\n /*\n * number of samples to\n * shift\n */\n\n /*\n * shift n_shift samples by num_used.num_used, to make room for the\n * num_used new samples\n */\n for (i = 0; i < n_shift; ++i)\n inbuf_old[i] = inbuf_old[i + num_used.num_used];\n\n /* shift in the num_used.num_used samples */\n for (j = 0; i < BLACKSIZE; ++i, ++j)\n inbuf_old[i] = inbuf[in_bufferPos + j];\n\n assert$2(j == num_used.num_used);\n }\n return k;\n /* return the number samples created at the new samplerate */\n }\n\n function fill_buffer(gfp, mfbuf, in_buffer, in_bufferPos, nsamples, io) {\n var gfc = gfp.internal_flags;\n\n /* copy in new samples into mfbuf, with resampling if necessary */\n if ((gfc.resample_ratio < .9999) || (gfc.resample_ratio > 1.0001)) {\n for (var ch = 0; ch < gfc.channels_out; ch++) {\n var numUsed = new NumUsed();\n io.n_out = fill_buffer_resample(gfp, mfbuf[ch], gfc.mf_size,\n gfp.framesize, in_buffer[ch], in_bufferPos, nsamples,\n numUsed, ch);\n io.n_in = numUsed.num_used;\n }\n } else {\n io.n_out = Math.min(gfp.framesize, nsamples);\n io.n_in = io.n_out;\n for (var i = 0; i < io.n_out; ++i) {\n mfbuf[0][gfc.mf_size + i] = in_buffer[0][in_bufferPos + i];\n if (gfc.channels_out == 2)\n mfbuf[1][gfc.mf_size + i] = in_buffer[1][in_bufferPos + i];\n }\n }\n }\n\n}\n\nvar Lame_1 = Lame$1;\n\nvar VbrMode$20 = common.VbrMode;\nfunction Presets$1() {\n function VBRPresets(qual, comp, compS,\n y, shThreshold, shThresholdS,\n adj, adjShort, lower,\n curve, sens, inter,\n joint, mod, fix) {\n this.vbr_q = qual;\n this.quant_comp = comp;\n this.quant_comp_s = compS;\n this.expY = y;\n this.st_lrm = shThreshold;\n this.st_s = shThresholdS;\n this.masking_adj = adj;\n this.masking_adj_short = adjShort;\n this.ath_lower = lower;\n this.ath_curve = curve;\n this.ath_sensitivity = sens;\n this.interch = inter;\n this.safejoint = joint;\n this.sfb21mod = mod;\n this.msfix = fix;\n }\n\n function ABRPresets(kbps, comp, compS,\n joint, fix, shThreshold,\n shThresholdS, bass, sc,\n mask, lower, curve,\n interCh, sfScale) {\n this.quant_comp = comp;\n this.quant_comp_s = compS;\n this.safejoint = joint;\n this.nsmsfix = fix;\n this.st_lrm = shThreshold;\n this.st_s = shThresholdS;\n this.nsbass = bass;\n this.scale = sc;\n this.masking_adj = mask;\n this.ath_lower = lower;\n this.ath_curve = curve;\n this.interch = interCh;\n this.sfscale = sfScale;\n }\n\n var lame;\n\n this.setModules = function (_lame) {\n lame = _lame;\n };\n\n /**\n *

\n     * Switch mappings for VBR mode VBR_RH\n     *             vbr_q  qcomp_l  qcomp_s  expY  st_lrm   st_s  mask adj_l  adj_s  ath_lower  ath_curve  ath_sens  interChR  safejoint sfb21mod  msfix\n     * 
\n */\n var vbr_old_switch_map = [\n new VBRPresets(0, 9, 9, 0, 5.20, 125.0, -4.2, -6.3, 4.8, 1, 0, 0, 2, 21, 0.97),\n new VBRPresets(1, 9, 9, 0, 5.30, 125.0, -3.6, -5.6, 4.5, 1.5, 0, 0, 2, 21, 1.35),\n new VBRPresets(2, 9, 9, 0, 5.60, 125.0, -2.2, -3.5, 2.8, 2, 0, 0, 2, 21, 1.49),\n new VBRPresets(3, 9, 9, 1, 5.80, 130.0, -1.8, -2.8, 2.6, 3, -4, 0, 2, 20, 1.64),\n new VBRPresets(4, 9, 9, 1, 6.00, 135.0, -0.7, -1.1, 1.1, 3.5, -8, 0, 2, 0, 1.79),\n new VBRPresets(5, 9, 9, 1, 6.40, 140.0, 0.5, 0.4, -7.5, 4, -12, 0.0002, 0, 0, 1.95),\n new VBRPresets(6, 9, 9, 1, 6.60, 145.0, 0.67, 0.65, -14.7, 6.5, -19, 0.0004, 0, 0, 2.30),\n new VBRPresets(7, 9, 9, 1, 6.60, 145.0, 0.8, 0.75, -19.7, 8, -22, 0.0006, 0, 0, 2.70),\n new VBRPresets(8, 9, 9, 1, 6.60, 145.0, 1.2, 1.15, -27.5, 10, -23, 0.0007, 0, 0, 0),\n new VBRPresets(9, 9, 9, 1, 6.60, 145.0, 1.6, 1.6, -36, 11, -25, 0.0008, 0, 0, 0),\n new VBRPresets(10, 9, 9, 1, 6.60, 145.0, 2.0, 2.0, -36, 12, -25, 0.0008, 0, 0, 0)\n ];\n\n /**\n *
\n     *                 vbr_q  qcomp_l  qcomp_s  expY  st_lrm   st_s  mask adj_l  adj_s  ath_lower  ath_curve  ath_sens  interChR  safejoint sfb21mod  msfix\n     * 
\n */\n var vbr_psy_switch_map = [\n new VBRPresets(0, 9, 9, 0, 4.20, 25.0, -7.0, -4.0, 7.5, 1, 0, 0, 2, 26, 0.97),\n new VBRPresets(1, 9, 9, 0, 4.20, 25.0, -5.6, -3.6, 4.5, 1.5, 0, 0, 2, 21, 1.35),\n new VBRPresets(2, 9, 9, 0, 4.20, 25.0, -4.4, -1.8, 2, 2, 0, 0, 2, 18, 1.49),\n new VBRPresets(3, 9, 9, 1, 4.20, 25.0, -3.4, -1.25, 1.1, 3, -4, 0, 2, 15, 1.64),\n new VBRPresets(4, 9, 9, 1, 4.20, 25.0, -2.2, 0.1, 0, 3.5, -8, 0, 2, 0, 1.79),\n new VBRPresets(5, 9, 9, 1, 4.20, 25.0, -1.0, 1.65, -7.7, 4, -12, 0.0002, 0, 0, 1.95),\n new VBRPresets(6, 9, 9, 1, 4.20, 25.0, -0.0, 2.47, -7.7, 6.5, -19, 0.0004, 0, 0, 2),\n new VBRPresets(7, 9, 9, 1, 4.20, 25.0, 0.5, 2.0, -14.5, 8, -22, 0.0006, 0, 0, 2),\n new VBRPresets(8, 9, 9, 1, 4.20, 25.0, 1.0, 2.4, -22.0, 10, -23, 0.0007, 0, 0, 2),\n new VBRPresets(9, 9, 9, 1, 4.20, 25.0, 1.5, 2.95, -30.0, 11, -25, 0.0008, 0, 0, 2),\n new VBRPresets(10, 9, 9, 1, 4.20, 25.0, 2.0, 2.95, -36.0, 12, -30, 0.0008, 0, 0, 2)\n ];\n\n function apply_vbr_preset(gfp, a, enforce) {\n var vbr_preset = gfp.VBR == VbrMode$20.vbr_rh ? vbr_old_switch_map\n : vbr_psy_switch_map;\n\n var x = gfp.VBR_q_frac;\n var p = vbr_preset[a];\n var q = vbr_preset[a + 1];\n var set = p;\n\n // NOOP(vbr_q);\n // NOOP(quant_comp);\n // NOOP(quant_comp_s);\n // NOOP(expY);\n p.st_lrm = p.st_lrm + x * (q.st_lrm - p.st_lrm);\n // LERP(st_lrm);\n p.st_s = p.st_s + x * (q.st_s - p.st_s);\n // LERP(st_s);\n p.masking_adj = p.masking_adj + x * (q.masking_adj - p.masking_adj);\n // LERP(masking_adj);\n p.masking_adj_short = p.masking_adj_short + x\n * (q.masking_adj_short - p.masking_adj_short);\n // LERP(masking_adj_short);\n p.ath_lower = p.ath_lower + x * (q.ath_lower - p.ath_lower);\n // LERP(ath_lower);\n p.ath_curve = p.ath_curve + x * (q.ath_curve - p.ath_curve);\n // LERP(ath_curve);\n p.ath_sensitivity = p.ath_sensitivity + x\n * (q.ath_sensitivity - p.ath_sensitivity);\n // LERP(ath_sensitivity);\n p.interch = p.interch + x * (q.interch - p.interch);\n // LERP(interch);\n // NOOP(safejoint);\n // NOOP(sfb21mod);\n p.msfix = p.msfix + x * (q.msfix - p.msfix);\n // LERP(msfix);\n\n lame_set_VBR_q(gfp, set.vbr_q);\n\n if (enforce != 0)\n gfp.quant_comp = set.quant_comp;\n else if (!(Math.abs(gfp.quant_comp - -1) > 0))\n gfp.quant_comp = set.quant_comp;\n // SET_OPTION(quant_comp, set.quant_comp, -1);\n if (enforce != 0)\n gfp.quant_comp_short = set.quant_comp_s;\n else if (!(Math.abs(gfp.quant_comp_short - -1) > 0))\n gfp.quant_comp_short = set.quant_comp_s;\n // SET_OPTION(quant_comp_short, set.quant_comp_s, -1);\n if (set.expY != 0) {\n gfp.experimentalY = set.expY != 0;\n }\n if (enforce != 0)\n gfp.internal_flags.nsPsy.attackthre = set.st_lrm;\n else if (!(Math.abs(gfp.internal_flags.nsPsy.attackthre - -1) > 0))\n gfp.internal_flags.nsPsy.attackthre = set.st_lrm;\n // SET_OPTION(short_threshold_lrm, set.st_lrm, -1);\n if (enforce != 0)\n gfp.internal_flags.nsPsy.attackthre_s = set.st_s;\n else if (!(Math.abs(gfp.internal_flags.nsPsy.attackthre_s - -1) > 0))\n gfp.internal_flags.nsPsy.attackthre_s = set.st_s;\n // SET_OPTION(short_threshold_s, set.st_s, -1);\n if (enforce != 0)\n gfp.maskingadjust = set.masking_adj;\n else if (!(Math.abs(gfp.maskingadjust - 0) > 0))\n gfp.maskingadjust = set.masking_adj;\n // SET_OPTION(maskingadjust, set.masking_adj, 0);\n if (enforce != 0)\n gfp.maskingadjust_short = set.masking_adj_short;\n else if (!(Math.abs(gfp.maskingadjust_short - 0) > 0))\n gfp.maskingadjust_short = set.masking_adj_short;\n // SET_OPTION(maskingadjust_short, set.masking_adj_short, 0);\n if (enforce != 0)\n gfp.ATHlower = -set.ath_lower / 10.0;\n else if (!(Math.abs((-gfp.ATHlower * 10.0) - 0) > 0))\n gfp.ATHlower = -set.ath_lower / 10.0;\n // SET_OPTION(ATHlower, set.ath_lower, 0);\n if (enforce != 0)\n gfp.ATHcurve = set.ath_curve;\n else if (!(Math.abs(gfp.ATHcurve - -1) > 0))\n gfp.ATHcurve = set.ath_curve;\n // SET_OPTION(ATHcurve, set.ath_curve, -1);\n if (enforce != 0)\n gfp.athaa_sensitivity = set.ath_sensitivity;\n else if (!(Math.abs(gfp.athaa_sensitivity - -1) > 0))\n gfp.athaa_sensitivity = set.ath_sensitivity;\n // SET_OPTION(athaa_sensitivity, set.ath_sensitivity, 0);\n if (set.interch > 0) {\n if (enforce != 0)\n gfp.interChRatio = set.interch;\n else if (!(Math.abs(gfp.interChRatio - -1) > 0))\n gfp.interChRatio = set.interch;\n // SET_OPTION(interChRatio, set.interch, -1);\n }\n\n /* parameters for which there is no proper set/get interface */\n if (set.safejoint > 0) {\n gfp.exp_nspsytune = gfp.exp_nspsytune | set.safejoint;\n }\n if (set.sfb21mod > 0) {\n gfp.exp_nspsytune = gfp.exp_nspsytune | (set.sfb21mod << 20);\n }\n if (enforce != 0)\n gfp.msfix = set.msfix;\n else if (!(Math.abs(gfp.msfix - -1) > 0))\n gfp.msfix = set.msfix;\n // SET_OPTION(msfix, set.msfix, -1);\n\n if (enforce == 0) {\n gfp.VBR_q = a;\n gfp.VBR_q_frac = x;\n }\n }\n\n /**\n *
\n     *  Switch mappings for ABR mode\n     *\n     *              kbps  quant q_s safejoint nsmsfix st_lrm  st_s  ns-bass scale   msk ath_lwr ath_curve  interch , sfscale\n     * 
\n */\n var abr_switch_map = [\n new ABRPresets(8, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, -30.0, 11, 0.0012, 1), /* 8, impossible to use in stereo */\n new ABRPresets(16, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, -25.0, 11, 0.0010, 1), /* 16 */\n new ABRPresets(24, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, -20.0, 11, 0.0010, 1), /* 24 */\n new ABRPresets(32, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, -15.0, 11, 0.0010, 1), /* 32 */\n new ABRPresets(40, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, -10.0, 11, 0.0009, 1), /* 40 */\n new ABRPresets(48, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, -10.0, 11, 0.0009, 1), /* 48 */\n new ABRPresets(56, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, -6.0, 11, 0.0008, 1), /* 56 */\n new ABRPresets(64, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, -2.0, 11, 0.0008, 1), /* 64 */\n new ABRPresets(80, 9, 9, 0, 0, 6.60, 145, 0, 0.95, 0, .0, 8, 0.0007, 1), /* 80 */\n new ABRPresets(96, 9, 9, 0, 2.50, 6.60, 145, 0, 0.95, 0, 1.0, 5.5, 0.0006, 1), /* 96 */\n new ABRPresets(112, 9, 9, 0, 2.25, 6.60, 145, 0, 0.95, 0, 2.0, 4.5, 0.0005, 1), /* 112 */\n new ABRPresets(128, 9, 9, 0, 1.95, 6.40, 140, 0, 0.95, 0, 3.0, 4, 0.0002, 1), /* 128 */\n new ABRPresets(160, 9, 9, 1, 1.79, 6.00, 135, 0, 0.95, -2, 5.0, 3.5, 0, 1), /* 160 */\n new ABRPresets(192, 9, 9, 1, 1.49, 5.60, 125, 0, 0.97, -4, 7.0, 3, 0, 0), /* 192 */\n new ABRPresets(224, 9, 9, 1, 1.25, 5.20, 125, 0, 0.98, -6, 9.0, 2, 0, 0), /* 224 */\n new ABRPresets(256, 9, 9, 1, 0.97, 5.20, 125, 0, 1.00, -8, 10.0, 1, 0, 0), /* 256 */\n new ABRPresets(320, 9, 9, 1, 0.90, 5.20, 125, 0, 1.00, -10, 12.0, 0, 0, 0) /* 320 */\n ];\n\n function apply_abr_preset(gfp, preset, enforce) {\n /* Variables for the ABR stuff */\n var actual_bitrate = preset;\n\n var r = lame.nearestBitrateFullIndex(preset);\n\n gfp.VBR = VbrMode$20.vbr_abr;\n gfp.VBR_mean_bitrate_kbps = actual_bitrate;\n gfp.VBR_mean_bitrate_kbps = Math.min(gfp.VBR_mean_bitrate_kbps, 320);\n gfp.VBR_mean_bitrate_kbps = Math.max(gfp.VBR_mean_bitrate_kbps, 8);\n gfp.brate = gfp.VBR_mean_bitrate_kbps;\n if (gfp.VBR_mean_bitrate_kbps > 320) {\n gfp.disable_reservoir = true;\n }\n\n /* parameters for which there is no proper set/get interface */\n if (abr_switch_map[r].safejoint > 0)\n gfp.exp_nspsytune = gfp.exp_nspsytune | 2;\n /* safejoint */\n\n if (abr_switch_map[r].sfscale > 0) {\n gfp.internal_flags.noise_shaping = 2;\n }\n /* ns-bass tweaks */\n if (Math.abs(abr_switch_map[r].nsbass) > 0) {\n var k = (int)(abr_switch_map[r].nsbass * 4);\n if (k < 0)\n k += 64;\n gfp.exp_nspsytune = gfp.exp_nspsytune | (k << 2);\n }\n\n if (enforce != 0)\n gfp.quant_comp = abr_switch_map[r].quant_comp;\n else if (!(Math.abs(gfp.quant_comp - -1) > 0))\n gfp.quant_comp = abr_switch_map[r].quant_comp;\n // SET_OPTION(quant_comp, abr_switch_map[r].quant_comp, -1);\n if (enforce != 0)\n gfp.quant_comp_short = abr_switch_map[r].quant_comp_s;\n else if (!(Math.abs(gfp.quant_comp_short - -1) > 0))\n gfp.quant_comp_short = abr_switch_map[r].quant_comp_s;\n // SET_OPTION(quant_comp_short, abr_switch_map[r].quant_comp_s, -1);\n\n if (enforce != 0)\n gfp.msfix = abr_switch_map[r].nsmsfix;\n else if (!(Math.abs(gfp.msfix - -1) > 0))\n gfp.msfix = abr_switch_map[r].nsmsfix;\n // SET_OPTION(msfix, abr_switch_map[r].nsmsfix, -1);\n\n if (enforce != 0)\n gfp.internal_flags.nsPsy.attackthre = abr_switch_map[r].st_lrm;\n else if (!(Math.abs(gfp.internal_flags.nsPsy.attackthre - -1) > 0))\n gfp.internal_flags.nsPsy.attackthre = abr_switch_map[r].st_lrm;\n // SET_OPTION(short_threshold_lrm, abr_switch_map[r].st_lrm, -1);\n if (enforce != 0)\n gfp.internal_flags.nsPsy.attackthre_s = abr_switch_map[r].st_s;\n else if (!(Math.abs(gfp.internal_flags.nsPsy.attackthre_s - -1) > 0))\n gfp.internal_flags.nsPsy.attackthre_s = abr_switch_map[r].st_s;\n // SET_OPTION(short_threshold_s, abr_switch_map[r].st_s, -1);\n\n /*\n * ABR seems to have big problems with clipping, especially at low\n * bitrates\n */\n /*\n * so we compensate for that here by using a scale value depending on\n * bitrate\n */\n if (enforce != 0)\n gfp.scale = abr_switch_map[r].scale;\n else if (!(Math.abs(gfp.scale - -1) > 0))\n gfp.scale = abr_switch_map[r].scale;\n // SET_OPTION(scale, abr_switch_map[r].scale, -1);\n\n if (enforce != 0)\n gfp.maskingadjust = abr_switch_map[r].masking_adj;\n else if (!(Math.abs(gfp.maskingadjust - 0) > 0))\n gfp.maskingadjust = abr_switch_map[r].masking_adj;\n // SET_OPTION(maskingadjust, abr_switch_map[r].masking_adj, 0);\n if (abr_switch_map[r].masking_adj > 0) {\n if (enforce != 0)\n gfp.maskingadjust_short = (abr_switch_map[r].masking_adj * .9);\n else if (!(Math.abs(gfp.maskingadjust_short - 0) > 0))\n gfp.maskingadjust_short = (abr_switch_map[r].masking_adj * .9);\n // SET_OPTION(maskingadjust_short, abr_switch_map[r].masking_adj *\n // .9, 0);\n } else {\n if (enforce != 0)\n gfp.maskingadjust_short = (abr_switch_map[r].masking_adj * 1.1);\n else if (!(Math.abs(gfp.maskingadjust_short - 0) > 0))\n gfp.maskingadjust_short = (abr_switch_map[r].masking_adj * 1.1);\n // SET_OPTION(maskingadjust_short, abr_switch_map[r].masking_adj *\n // 1.1, 0);\n }\n\n if (enforce != 0)\n gfp.ATHlower = -abr_switch_map[r].ath_lower / 10.;\n else if (!(Math.abs((-gfp.ATHlower * 10.) - 0) > 0))\n gfp.ATHlower = -abr_switch_map[r].ath_lower / 10.;\n // SET_OPTION(ATHlower, abr_switch_map[r].ath_lower, 0);\n if (enforce != 0)\n gfp.ATHcurve = abr_switch_map[r].ath_curve;\n else if (!(Math.abs(gfp.ATHcurve - -1) > 0))\n gfp.ATHcurve = abr_switch_map[r].ath_curve;\n // SET_OPTION(ATHcurve, abr_switch_map[r].ath_curve, -1);\n\n if (enforce != 0)\n gfp.interChRatio = abr_switch_map[r].interch;\n else if (!(Math.abs(gfp.interChRatio - -1) > 0))\n gfp.interChRatio = abr_switch_map[r].interch;\n // SET_OPTION(interChRatio, abr_switch_map[r].interch, -1);\n\n return preset;\n }\n\n this.apply_preset = function(gfp, preset, enforce) {\n /* translate legacy presets */\n switch (preset) {\n case Lame.R3MIX:\n {\n preset = Lame.V3;\n gfp.VBR = VbrMode$20.vbr_mtrh;\n break;\n }\n case Lame.MEDIUM:\n {\n preset = Lame.V4;\n gfp.VBR = VbrMode$20.vbr_rh;\n break;\n }\n case Lame.MEDIUM_FAST:\n {\n preset = Lame.V4;\n gfp.VBR = VbrMode$20.vbr_mtrh;\n break;\n }\n case Lame.STANDARD:\n {\n preset = Lame.V2;\n gfp.VBR = VbrMode$20.vbr_rh;\n break;\n }\n case Lame.STANDARD_FAST:\n {\n preset = Lame.V2;\n gfp.VBR = VbrMode$20.vbr_mtrh;\n break;\n }\n case Lame.EXTREME:\n {\n preset = Lame.V0;\n gfp.VBR = VbrMode$20.vbr_rh;\n break;\n }\n case Lame.EXTREME_FAST:\n {\n preset = Lame.V0;\n gfp.VBR = VbrMode$20.vbr_mtrh;\n break;\n }\n case Lame.INSANE:\n {\n preset = 320;\n gfp.preset = preset;\n apply_abr_preset(gfp, preset, enforce);\n gfp.VBR = VbrMode$20.vbr_off;\n return preset;\n }\n }\n\n gfp.preset = preset;\n {\n switch (preset) {\n case Lame.V9:\n apply_vbr_preset(gfp, 9, enforce);\n return preset;\n case Lame.V8:\n apply_vbr_preset(gfp, 8, enforce);\n return preset;\n case Lame.V7:\n apply_vbr_preset(gfp, 7, enforce);\n return preset;\n case Lame.V6:\n apply_vbr_preset(gfp, 6, enforce);\n return preset;\n case Lame.V5:\n apply_vbr_preset(gfp, 5, enforce);\n return preset;\n case Lame.V4:\n apply_vbr_preset(gfp, 4, enforce);\n return preset;\n case Lame.V3:\n apply_vbr_preset(gfp, 3, enforce);\n return preset;\n case Lame.V2:\n apply_vbr_preset(gfp, 2, enforce);\n return preset;\n case Lame.V1:\n apply_vbr_preset(gfp, 1, enforce);\n return preset;\n case Lame.V0:\n apply_vbr_preset(gfp, 0, enforce);\n return preset;\n default:\n break;\n }\n }\n if (8 <= preset && preset <= 320) {\n return apply_abr_preset(gfp, preset, enforce);\n }\n\n /* no corresponding preset found */\n gfp.preset = 0;\n return preset;\n };\n\n // Rest from getset.c:\n\n /**\n * VBR quality level.
\n * 0 = highest
\n * 9 = lowest\n */\n function lame_set_VBR_q(gfp, VBR_q) {\n var ret = 0;\n\n if (0 > VBR_q) {\n /* Unknown VBR quality level! */\n ret = -1;\n VBR_q = 0;\n }\n if (9 < VBR_q) {\n ret = -1;\n VBR_q = 9;\n }\n\n gfp.VBR_q = VBR_q;\n gfp.VBR_q_frac = 0;\n return ret;\n }\n\n}\n\nvar Presets_1 = Presets$1;\n\nfunction VBRQuantize() {\n var qupvt;\n var tak;\n\n this.setModules = function (_qupvt, _tk) {\n qupvt = _qupvt;\n tak = _tk;\n };\n //TODO\n\n}\n\nvar VBRQuantize_1 = VBRQuantize;\n\n//package mp3;\n\nfunction CalcNoiseResult$1() {\n /**\n * sum of quantization noise > masking\n */\n this.over_noise = 0.;\n /**\n * sum of all quantization noise\n */\n this.tot_noise = 0.;\n /**\n * max quantization noise\n */\n this.max_noise = 0.;\n /**\n * number of quantization noise > masking\n */\n this.over_count = 0;\n /**\n * SSD-like cost of distorted bands\n */\n this.over_SSD = 0;\n this.bits = 0;\n}\n\nvar CalcNoiseResult_1 = CalcNoiseResult$1;\n\nvar new_float$22 = common.new_float;\nvar new_int$22 = common.new_int;\nfunction CalcNoiseData() {\n this.global_gain = 0;\n this.sfb_count1 = 0;\n this.step = new_int$22(39);\n this.noise = new_float$22(39);\n this.noise_log = new_float$22(39);\n}\n\nvar CalcNoiseData_1 = CalcNoiseData;\n\n/*\n * MP3 quantization\n *\n * Copyright (c) 1999-2000 Mark Taylor\n * Copyright (c) 1999-2003 Takehiro Tominaga\n * Copyright (c) 2000-2007 Robert Hegemann\n * Copyright (c) 2001-2005 Gabriel Bouvigne\n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * Library General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this library; if not, write to the\n * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n * Boston, MA 02111-1307, USA.\n */\n\n/* $Id: Quantize.java,v 1.24 2011/05/24 20:48:06 kenchis Exp $ */\n\n//package mp3;\n\n//import java.util.Arrays;\n\nvar System$21 = common.System;\nvar VbrMode$21 = common.VbrMode;\nvar Util$21 = common.Util;\nvar Arrays$21 = common.Arrays;\nvar new_float$21 = common.new_float;\nvar assert$21 = common.assert;\n\n\n\n\n\n\n\n\nfunction Quantize$1() {\n var bs;\n this.rv = null;\n var rv;\n this.qupvt = null;\n var qupvt;\n\n var vbr = new VBRQuantize_1();\n var tk;\n\n this.setModules = function (_bs, _rv, _qupvt, _tk) {\n bs = _bs;\n rv = _rv;\n this.rv = _rv;\n qupvt = _qupvt;\n this.qupvt = _qupvt;\n tk = _tk;\n vbr.setModules(qupvt, tk);\n };\n\n /**\n * convert from L/R <. Mid/Side\n */\n this.ms_convert = function (l3_side, gr) {\n for (var i = 0; i < 576; ++i) {\n var l = l3_side.tt[gr][0].xr[i];\n var r = l3_side.tt[gr][1].xr[i];\n l3_side.tt[gr][0].xr[i] = (l + r) * (Util$21.SQRT2 * 0.5);\n l3_side.tt[gr][1].xr[i] = (l - r) * (Util$21.SQRT2 * 0.5);\n }\n };\n\n /**\n * mt 6/99\n *\n * initializes cod_info, scalefac and xrpow\n *\n * returns 0 if all energies in xr are zero, else 1\n */\n function init_xrpow_core(cod_info, xrpow, upper, sum) {\n sum = 0;\n for (var i = 0; i <= upper; ++i) {\n var tmp = Math.abs(cod_info.xr[i]);\n sum += tmp;\n xrpow[i] = Math.sqrt(tmp * Math.sqrt(tmp));\n\n if (xrpow[i] > cod_info.xrpow_max)\n cod_info.xrpow_max = xrpow[i];\n }\n return sum;\n }\n\n this.init_xrpow = function (gfc, cod_info, xrpow) {\n var sum = 0;\n var upper = 0 | cod_info.max_nonzero_coeff;\n\n assert$21(xrpow != null);\n cod_info.xrpow_max = 0;\n\n /*\n * check if there is some energy we have to quantize and calculate xrpow\n * matching our fresh scalefactors\n */\n assert$21(0 <= upper && upper <= 575);\n\n Arrays$21.fill(xrpow, upper, 576, 0);\n\n sum = init_xrpow_core(cod_info, xrpow, upper, sum);\n\n /*\n * return 1 if we have something to quantize, else 0\n */\n if (sum > 1E-20) {\n var j = 0;\n if ((gfc.substep_shaping & 2) != 0)\n j = 1;\n\n for (var i = 0; i < cod_info.psymax; i++)\n gfc.pseudohalf[i] = j;\n\n return true;\n }\n\n Arrays$21.fill(cod_info.l3_enc, 0, 576, 0);\n return false;\n };\n\n /**\n * Gabriel Bouvigne feb/apr 2003
\n * Analog silence detection in partitionned sfb21 or sfb12 for short blocks\n *\n * From top to bottom of sfb, changes to 0 coeffs which are below ath. It\n * stops on the first coeff higher than ath.\n */\n function psfb21_analogsilence(gfc, cod_info) {\n var ath = gfc.ATH;\n var xr = cod_info.xr;\n\n if (cod_info.block_type != Encoder_1.SHORT_TYPE) {\n /* NORM, START or STOP type, but not SHORT blocks */\n var stop = false;\n for (var gsfb = Encoder_1.PSFB21 - 1; gsfb >= 0 && !stop; gsfb--) {\n var start = gfc.scalefac_band.psfb21[gsfb];\n var end = gfc.scalefac_band.psfb21[gsfb + 1];\n var ath21 = qupvt.athAdjust(ath.adjust, ath.psfb21[gsfb],\n ath.floor);\n\n if (gfc.nsPsy.longfact[21] > 1e-12)\n ath21 *= gfc.nsPsy.longfact[21];\n\n for (var j = end - 1; j >= start; j--) {\n if (Math.abs(xr[j]) < ath21)\n xr[j] = 0;\n else {\n stop = true;\n break;\n }\n }\n }\n } else {\n /* note: short blocks coeffs are reordered */\n for (var block = 0; block < 3; block++) {\n var stop = false;\n for (var gsfb = Encoder_1.PSFB12 - 1; gsfb >= 0 && !stop; gsfb--) {\n var start = gfc.scalefac_band.s[12]\n * 3\n + (gfc.scalefac_band.s[13] - gfc.scalefac_band.s[12])\n * block\n + (gfc.scalefac_band.psfb12[gsfb] - gfc.scalefac_band.psfb12[0]);\n var end = start\n + (gfc.scalefac_band.psfb12[gsfb + 1] - gfc.scalefac_band.psfb12[gsfb]);\n var ath12 = qupvt.athAdjust(ath.adjust, ath.psfb12[gsfb],\n ath.floor);\n\n if (gfc.nsPsy.shortfact[12] > 1e-12)\n ath12 *= gfc.nsPsy.shortfact[12];\n\n for (var j = end - 1; j >= start; j--) {\n if (Math.abs(xr[j]) < ath12)\n xr[j] = 0;\n else {\n stop = true;\n break;\n }\n }\n }\n }\n }\n\n }\n\n this.init_outer_loop = function (gfc, cod_info) {\n /*\n * initialize fresh cod_info\n */\n cod_info.part2_3_length = 0;\n cod_info.big_values = 0;\n cod_info.count1 = 0;\n cod_info.global_gain = 210;\n cod_info.scalefac_compress = 0;\n /* mixed_block_flag, block_type was set in psymodel.c */\n cod_info.table_select[0] = 0;\n cod_info.table_select[1] = 0;\n cod_info.table_select[2] = 0;\n cod_info.subblock_gain[0] = 0;\n cod_info.subblock_gain[1] = 0;\n cod_info.subblock_gain[2] = 0;\n cod_info.subblock_gain[3] = 0;\n /* this one is always 0 */\n cod_info.region0_count = 0;\n cod_info.region1_count = 0;\n cod_info.preflag = 0;\n cod_info.scalefac_scale = 0;\n cod_info.count1table_select = 0;\n cod_info.part2_length = 0;\n cod_info.sfb_lmax = Encoder_1.SBPSY_l;\n cod_info.sfb_smin = Encoder_1.SBPSY_s;\n cod_info.psy_lmax = gfc.sfb21_extra ? Encoder_1.SBMAX_l : Encoder_1.SBPSY_l;\n cod_info.psymax = cod_info.psy_lmax;\n cod_info.sfbmax = cod_info.sfb_lmax;\n cod_info.sfbdivide = 11;\n for (var sfb = 0; sfb < Encoder_1.SBMAX_l; sfb++) {\n cod_info.width[sfb] = gfc.scalefac_band.l[sfb + 1]\n - gfc.scalefac_band.l[sfb];\n /* which is always 0. */\n cod_info.window[sfb] = 3;\n }\n if (cod_info.block_type == Encoder_1.SHORT_TYPE) {\n var ixwork = new_float$21(576);\n\n cod_info.sfb_smin = 0;\n cod_info.sfb_lmax = 0;\n if (cod_info.mixed_block_flag != 0) {\n /*\n * MPEG-1: sfbs 0-7 long block, 3-12 short blocks MPEG-2(.5):\n * sfbs 0-5 long block, 3-12 short blocks\n */\n cod_info.sfb_smin = 3;\n cod_info.sfb_lmax = gfc.mode_gr * 2 + 4;\n }\n cod_info.psymax = cod_info.sfb_lmax\n + 3\n * ((gfc.sfb21_extra ? Encoder_1.SBMAX_s : Encoder_1.SBPSY_s) - cod_info.sfb_smin);\n cod_info.sfbmax = cod_info.sfb_lmax + 3\n * (Encoder_1.SBPSY_s - cod_info.sfb_smin);\n cod_info.sfbdivide = cod_info.sfbmax - 18;\n cod_info.psy_lmax = cod_info.sfb_lmax;\n /* re-order the short blocks, for more efficient encoding below */\n /* By Takehiro TOMINAGA */\n /*\n * Within each scalefactor band, data is given for successive time\n * windows, beginning with window 0 and ending with window 2. Within\n * each window, the quantized values are then arranged in order of\n * increasing frequency...\n */\n var ix = gfc.scalefac_band.l[cod_info.sfb_lmax];\n System$21.arraycopy(cod_info.xr, 0, ixwork, 0, 576);\n for (var sfb = cod_info.sfb_smin; sfb < Encoder_1.SBMAX_s; sfb++) {\n var start = gfc.scalefac_band.s[sfb];\n var end = gfc.scalefac_band.s[sfb + 1];\n for (var window = 0; window < 3; window++) {\n for (var l = start; l < end; l++) {\n cod_info.xr[ix++] = ixwork[3 * l + window];\n }\n }\n }\n\n var j = cod_info.sfb_lmax;\n for (var sfb = cod_info.sfb_smin; sfb < Encoder_1.SBMAX_s; sfb++) {\n cod_info.width[j] = cod_info.width[j + 1] = cod_info.width[j + 2] = gfc.scalefac_band.s[sfb + 1]\n - gfc.scalefac_band.s[sfb];\n cod_info.window[j] = 0;\n cod_info.window[j + 1] = 1;\n cod_info.window[j + 2] = 2;\n j += 3;\n }\n }\n\n cod_info.count1bits = 0;\n cod_info.sfb_partition_table = qupvt.nr_of_sfb_block[0][0];\n cod_info.slen[0] = 0;\n cod_info.slen[1] = 0;\n cod_info.slen[2] = 0;\n cod_info.slen[3] = 0;\n\n cod_info.max_nonzero_coeff = 575;\n\n /*\n * fresh scalefactors are all zero\n */\n Arrays$21.fill(cod_info.scalefac, 0);\n\n psfb21_analogsilence(gfc, cod_info);\n };\n\n function BinSearchDirection(ordinal) {\n this.ordinal = ordinal;\n }\n\n BinSearchDirection.BINSEARCH_NONE = new BinSearchDirection(0);\n BinSearchDirection.BINSEARCH_UP = new BinSearchDirection(1);\n BinSearchDirection.BINSEARCH_DOWN = new BinSearchDirection(2);\n\n /**\n * author/date??\n *\n * binary step size search used by outer_loop to get a quantizer step size\n * to start with\n */\n function bin_search_StepSize(gfc, cod_info, desired_rate, ch, xrpow) {\n var nBits;\n var CurrentStep = gfc.CurrentStep[ch];\n var flagGoneOver = false;\n var start = gfc.OldValue[ch];\n var Direction = BinSearchDirection.BINSEARCH_NONE;\n cod_info.global_gain = start;\n desired_rate -= cod_info.part2_length;\n\n assert$21(CurrentStep != 0);\n for (; ;) {\n var step;\n nBits = tk.count_bits(gfc, xrpow, cod_info, null);\n\n if (CurrentStep == 1 || nBits == desired_rate)\n break;\n /* nothing to adjust anymore */\n\n if (nBits > desired_rate) {\n /* increase Quantize_StepSize */\n if (Direction == BinSearchDirection.BINSEARCH_DOWN)\n flagGoneOver = true;\n\n if (flagGoneOver)\n CurrentStep /= 2;\n Direction = BinSearchDirection.BINSEARCH_UP;\n step = CurrentStep;\n } else {\n /* decrease Quantize_StepSize */\n if (Direction == BinSearchDirection.BINSEARCH_UP)\n flagGoneOver = true;\n\n if (flagGoneOver)\n CurrentStep /= 2;\n Direction = BinSearchDirection.BINSEARCH_DOWN;\n step = -CurrentStep;\n }\n cod_info.global_gain += step;\n if (cod_info.global_gain < 0) {\n cod_info.global_gain = 0;\n flagGoneOver = true;\n }\n if (cod_info.global_gain > 255) {\n cod_info.global_gain = 255;\n flagGoneOver = true;\n }\n }\n\n assert$21(cod_info.global_gain >= 0);\n assert$21(cod_info.global_gain < 256);\n\n while (nBits > desired_rate && cod_info.global_gain < 255) {\n cod_info.global_gain++;\n nBits = tk.count_bits(gfc, xrpow, cod_info, null);\n }\n gfc.CurrentStep[ch] = (start - cod_info.global_gain >= 4) ? 4 : 2;\n gfc.OldValue[ch] = cod_info.global_gain;\n cod_info.part2_3_length = nBits;\n return nBits;\n }\n\n this.trancate_smallspectrums = function (gfc, gi, l3_xmin, work) {\n var distort = new_float$21(L3Side_1.SFBMAX);\n\n if ((0 == (gfc.substep_shaping & 4) && gi.block_type == Encoder_1.SHORT_TYPE)\n || (gfc.substep_shaping & 0x80) != 0)\n return;\n qupvt.calc_noise(gi, l3_xmin, distort, new CalcNoiseResult_1(), null);\n for (var j = 0; j < 576; j++) {\n var xr = 0.0;\n if (gi.l3_enc[j] != 0)\n xr = Math.abs(gi.xr[j]);\n work[j] = xr;\n }\n\n var j = 0;\n var sfb = 8;\n if (gi.block_type == Encoder_1.SHORT_TYPE)\n sfb = 6;\n do {\n var allowedNoise, trancateThreshold;\n var nsame, start;\n\n var width = gi.width[sfb];\n j += width;\n if (distort[sfb] >= 1.0)\n continue;\n\n Arrays$21.sort(work, j - width, width);\n if (BitStream.EQ(work[j - 1], 0.0))\n continue;\n /* all zero sfb */\n\n allowedNoise = (1.0 - distort[sfb]) * l3_xmin[sfb];\n trancateThreshold = 0.0;\n start = 0;\n do {\n var noise;\n for (nsame = 1; start + nsame < width; nsame++)\n if (BitStream.NEQ(work[start + j - width], work[start + j\n + nsame - width]))\n break;\n\n noise = work[start + j - width] * work[start + j - width]\n * nsame;\n if (allowedNoise < noise) {\n if (start != 0)\n trancateThreshold = work[start + j - width - 1];\n break;\n }\n allowedNoise -= noise;\n start += nsame;\n } while (start < width);\n if (BitStream.EQ(trancateThreshold, 0.0))\n continue;\n\n do {\n if (Math.abs(gi.xr[j - width]) <= trancateThreshold)\n gi.l3_enc[j - width] = 0;\n } while (--width > 0);\n } while (++sfb < gi.psymax);\n\n gi.part2_3_length = tk.noquant_count_bits(gfc, gi, null);\n };\n\n /**\n * author/date??\n *\n * Function: Returns zero if there is a scalefac which has not been\n * amplified. Otherwise it returns one.\n */\n function loop_break(cod_info) {\n for (var sfb = 0; sfb < cod_info.sfbmax; sfb++)\n if (cod_info.scalefac[sfb]\n + cod_info.subblock_gain[cod_info.window[sfb]] == 0)\n return false;\n\n return true;\n }\n\n /* mt 5/99: Function: Improved calc_noise for a single channel */\n\n function penalties(noise) {\n return Util$21.FAST_LOG10((0.368 + 0.632 * noise * noise * noise));\n }\n\n /**\n * author/date??\n *\n * several different codes to decide which quantization is better\n */\n function get_klemm_noise(distort, gi) {\n var klemm_noise = 1E-37;\n for (var sfb = 0; sfb < gi.psymax; sfb++)\n klemm_noise += penalties(distort[sfb]);\n\n return Math.max(1e-20, klemm_noise);\n }\n\n function quant_compare(quant_comp, best, calc, gi, distort) {\n /**\n * noise is given in decibels (dB) relative to masking thesholds.
\n *\n * over_noise: ??? (the previous comment is fully wrong)
\n * tot_noise: ??? (the previous comment is fully wrong)
\n * max_noise: max quantization noise\n */\n var better;\n\n switch (quant_comp) {\n default:\n case 9:\n {\n if (best.over_count > 0) {\n /* there are distorted sfb */\n better = calc.over_SSD <= best.over_SSD;\n if (calc.over_SSD == best.over_SSD)\n better = calc.bits < best.bits;\n } else {\n /* no distorted sfb */\n better = ((calc.max_noise < 0) && ((calc.max_noise * 10 + calc.bits) <= (best.max_noise * 10 + best.bits)));\n }\n break;\n }\n\n case 0:\n better = calc.over_count < best.over_count\n || (calc.over_count == best.over_count && calc.over_noise < best.over_noise)\n || (calc.over_count == best.over_count\n && BitStream.EQ(calc.over_noise, best.over_noise) && calc.tot_noise < best.tot_noise);\n break;\n\n case 8:\n calc.max_noise = get_klemm_noise(distort, gi);\n //$FALL-THROUGH$\n case 1:\n better = calc.max_noise < best.max_noise;\n break;\n case 2:\n better = calc.tot_noise < best.tot_noise;\n break;\n case 3:\n better = (calc.tot_noise < best.tot_noise)\n && (calc.max_noise < best.max_noise);\n break;\n case 4:\n better = (calc.max_noise <= 0.0 && best.max_noise > 0.2)\n || (calc.max_noise <= 0.0 && best.max_noise < 0.0\n && best.max_noise > calc.max_noise - 0.2 && calc.tot_noise < best.tot_noise)\n || (calc.max_noise <= 0.0 && best.max_noise > 0.0\n && best.max_noise > calc.max_noise - 0.2 && calc.tot_noise < best.tot_noise\n + best.over_noise)\n || (calc.max_noise > 0.0 && best.max_noise > -0.05\n && best.max_noise > calc.max_noise - 0.1 && calc.tot_noise\n + calc.over_noise < best.tot_noise\n + best.over_noise)\n || (calc.max_noise > 0.0 && best.max_noise > -0.1\n && best.max_noise > calc.max_noise - 0.15 && calc.tot_noise\n + calc.over_noise + calc.over_noise < best.tot_noise\n + best.over_noise + best.over_noise);\n break;\n case 5:\n better = calc.over_noise < best.over_noise\n || (BitStream.EQ(calc.over_noise, best.over_noise) && calc.tot_noise < best.tot_noise);\n break;\n case 6:\n better = calc.over_noise < best.over_noise\n || (BitStream.EQ(calc.over_noise, best.over_noise) && (calc.max_noise < best.max_noise || (BitStream\n .EQ(calc.max_noise, best.max_noise) && calc.tot_noise <= best.tot_noise)));\n break;\n case 7:\n better = calc.over_count < best.over_count\n || calc.over_noise < best.over_noise;\n break;\n }\n\n if (best.over_count == 0) {\n /*\n * If no distorted bands, only use this quantization if it is\n * better, and if it uses less bits. Unfortunately, part2_3_length\n * is sometimes a poor estimator of the final size at low bitrates.\n */\n better = better && calc.bits < best.bits;\n }\n\n return better;\n }\n\n /**\n * author/date??\n *\n *
\n     *  Amplify the scalefactor bands that violate the masking threshold.\n     *  See ISO 11172-3 Section C.1.5.4.3.5\n     *\n     *  distort[] = noise/masking\n     *  distort[] > 1   ==> noise is not masked\n     *  distort[] < 1   ==> noise is masked\n     *  max_dist = maximum value of distort[]\n     *\n     *  Three algorithms:\n     *  noise_shaping_amp\n     *        0             Amplify all bands with distort[]>1.\n     *\n     *        1             Amplify all bands with distort[] >= max_dist^(.5);\n     *                     ( 50% in the db scale)\n     *\n     *        2             Amplify first band with distort[] >= max_dist;\n     *\n     *\n     *  For algorithms 0 and 1, if max_dist < 1, then amplify all bands\n     *  with distort[] >= .95*max_dist.  This is to make sure we always\n     *  amplify at least one band.\n     * 
\n */\n function amp_scalefac_bands(gfp, cod_info, distort, xrpow, bRefine) {\n var gfc = gfp.internal_flags;\n var ifqstep34;\n\n if (cod_info.scalefac_scale == 0) {\n ifqstep34 = 1.29683955465100964055;\n /* 2**(.75*.5) */\n } else {\n ifqstep34 = 1.68179283050742922612;\n /* 2**(.75*1) */\n }\n\n /* compute maximum value of distort[] */\n var trigger = 0;\n for (var sfb = 0; sfb < cod_info.sfbmax; sfb++) {\n if (trigger < distort[sfb])\n trigger = distort[sfb];\n }\n\n var noise_shaping_amp = gfc.noise_shaping_amp;\n if (noise_shaping_amp == 3) {\n if (bRefine)\n noise_shaping_amp = 2;\n else\n noise_shaping_amp = 1;\n }\n switch (noise_shaping_amp) {\n case 2:\n /* amplify exactly 1 band */\n break;\n\n case 1:\n /* amplify bands within 50% of max (on db scale) */\n if (trigger > 1.0)\n trigger = Math.pow(trigger, .5);\n else\n trigger *= .95;\n break;\n\n case 0:\n default:\n /* ISO algorithm. amplify all bands with distort>1 */\n if (trigger > 1.0)\n trigger = 1.0;\n else\n trigger *= .95;\n break;\n }\n\n var j = 0;\n for (var sfb = 0; sfb < cod_info.sfbmax; sfb++) {\n var width = cod_info.width[sfb];\n var l;\n j += width;\n if (distort[sfb] < trigger)\n continue;\n\n if ((gfc.substep_shaping & 2) != 0) {\n gfc.pseudohalf[sfb] = (0 == gfc.pseudohalf[sfb]) ? 1 : 0;\n if (0 == gfc.pseudohalf[sfb] && gfc.noise_shaping_amp == 2)\n return;\n }\n cod_info.scalefac[sfb]++;\n for (l = -width; l < 0; l++) {\n xrpow[j + l] *= ifqstep34;\n if (xrpow[j + l] > cod_info.xrpow_max)\n cod_info.xrpow_max = xrpow[j + l];\n }\n\n if (gfc.noise_shaping_amp == 2)\n return;\n }\n }\n\n /**\n * Takehiro Tominaga 2000-xx-xx\n *\n * turns on scalefac scale and adjusts scalefactors\n */\n function inc_scalefac_scale(cod_info, xrpow) {\n var ifqstep34 = 1.29683955465100964055;\n\n var j = 0;\n for (var sfb = 0; sfb < cod_info.sfbmax; sfb++) {\n var width = cod_info.width[sfb];\n var s = cod_info.scalefac[sfb];\n if (cod_info.preflag != 0)\n s += qupvt.pretab[sfb];\n j += width;\n if ((s & 1) != 0) {\n s++;\n for (var l = -width; l < 0; l++) {\n xrpow[j + l] *= ifqstep34;\n if (xrpow[j + l] > cod_info.xrpow_max)\n cod_info.xrpow_max = xrpow[j + l];\n }\n }\n cod_info.scalefac[sfb] = s >> 1;\n }\n cod_info.preflag = 0;\n cod_info.scalefac_scale = 1;\n }\n\n /**\n * Takehiro Tominaga 2000-xx-xx\n *\n * increases the subblock gain and adjusts scalefactors\n */\n function inc_subblock_gain(gfc, cod_info, xrpow) {\n var sfb;\n var scalefac = cod_info.scalefac;\n\n /* subbloc_gain can't do anything in the long block region */\n for (sfb = 0; sfb < cod_info.sfb_lmax; sfb++) {\n if (scalefac[sfb] >= 16)\n return true;\n }\n\n for (var window = 0; window < 3; window++) {\n var s1 = 0;\n var s2 = 0;\n\n for (sfb = cod_info.sfb_lmax + window; sfb < cod_info.sfbdivide; sfb += 3) {\n if (s1 < scalefac[sfb])\n s1 = scalefac[sfb];\n }\n for (; sfb < cod_info.sfbmax; sfb += 3) {\n if (s2 < scalefac[sfb])\n s2 = scalefac[sfb];\n }\n\n if (s1 < 16 && s2 < 8)\n continue;\n\n if (cod_info.subblock_gain[window] >= 7)\n return true;\n\n /*\n * even though there is no scalefactor for sfb12 subblock gain\n * affects upper frequencies too, that's why we have to go up to\n * SBMAX_s\n */\n cod_info.subblock_gain[window]++;\n var j = gfc.scalefac_band.l[cod_info.sfb_lmax];\n for (sfb = cod_info.sfb_lmax + window; sfb < cod_info.sfbmax; sfb += 3) {\n var amp;\n var width = cod_info.width[sfb];\n var s = scalefac[sfb];\n assert$21(s >= 0);\n s = s - (4 >> cod_info.scalefac_scale);\n if (s >= 0) {\n scalefac[sfb] = s;\n j += width * 3;\n continue;\n }\n\n scalefac[sfb] = 0;\n {\n var gain = 210 + (s << (cod_info.scalefac_scale + 1));\n amp = qupvt.IPOW20(gain);\n }\n j += width * (window + 1);\n for (var l = -width; l < 0; l++) {\n xrpow[j + l] *= amp;\n if (xrpow[j + l] > cod_info.xrpow_max)\n cod_info.xrpow_max = xrpow[j + l];\n }\n j += width * (3 - window - 1);\n }\n\n {\n var amp = qupvt.IPOW20(202);\n j += cod_info.width[sfb] * (window + 1);\n for (var l = -cod_info.width[sfb]; l < 0; l++) {\n xrpow[j + l] *= amp;\n if (xrpow[j + l] > cod_info.xrpow_max)\n cod_info.xrpow_max = xrpow[j + l];\n }\n }\n }\n return false;\n }\n\n /**\n *
\n     *  Takehiro Tominaga /date??\n     *  Robert Hegemann 2000-09-06: made a function of it\n     *\n     *  amplifies scalefactor bands,\n     *   - if all are already amplified returns 0\n     *   - if some bands are amplified too much:\n     *      * try to increase scalefac_scale\n     *      * if already scalefac_scale was set\n     *          try on short blocks to increase subblock gain\n     * 
\n */\n function balance_noise(gfp, cod_info, distort, xrpow, bRefine) {\n var gfc = gfp.internal_flags;\n\n amp_scalefac_bands(gfp, cod_info, distort, xrpow, bRefine);\n\n /*\n * check to make sure we have not amplified too much loop_break returns\n * 0 if there is an unamplified scalefac scale_bitcount returns 0 if no\n * scalefactors are too large\n */\n\n var status = loop_break(cod_info);\n\n if (status)\n return false;\n /* all bands amplified */\n\n /*\n * not all scalefactors have been amplified. so these scalefacs are\n * possibly valid. encode them:\n */\n if (gfc.mode_gr == 2)\n status = tk.scale_bitcount(cod_info);\n else\n status = tk.scale_bitcount_lsf(gfc, cod_info);\n\n if (!status)\n return true;\n /* amplified some bands not exceeding limits */\n\n /*\n * some scalefactors are too large. lets try setting scalefac_scale=1\n */\n if (gfc.noise_shaping > 1) {\n Arrays$21.fill(gfc.pseudohalf, 0);\n if (0 == cod_info.scalefac_scale) {\n inc_scalefac_scale(cod_info, xrpow);\n status = false;\n } else {\n if (cod_info.block_type == Encoder_1.SHORT_TYPE\n && gfc.subblock_gain > 0) {\n status = (inc_subblock_gain(gfc, cod_info, xrpow) || loop_break(cod_info));\n }\n }\n }\n\n if (!status) {\n if (gfc.mode_gr == 2)\n status = tk.scale_bitcount(cod_info);\n else\n status = tk.scale_bitcount_lsf(gfc, cod_info);\n }\n return !status;\n }\n\n /**\n *
\n     *  Function: The outer iteration loop controls the masking conditions\n     *  of all scalefactorbands. It computes the best scalefac and\n     *  global gain. This module calls the inner iteration loop\n     *\n     *  mt 5/99 completely rewritten to allow for bit reservoir control,\n     *  mid/side channels with L/R or mid/side masking thresholds,\n     *  and chooses best quantization instead of last quantization when\n     *  no distortion free quantization can be found.\n     *\n     *  added VBR support mt 5/99\n     *\n     *  some code shuffle rh 9/00\n     * 
\n *\n * @param l3_xmin\n * allowed distortion\n * @param xrpow\n * coloured magnitudes of spectral\n * @param targ_bits\n * maximum allowed bits\n */\n this.outer_loop = function (gfp, cod_info, l3_xmin, xrpow, ch, targ_bits) {\n var gfc = gfp.internal_flags;\n var cod_info_w = new GrInfo_1();\n var save_xrpow = new_float$21(576);\n var distort = new_float$21(L3Side_1.SFBMAX);\n var best_noise_info = new CalcNoiseResult_1();\n var better;\n var prev_noise = new CalcNoiseData_1();\n var best_part2_3_length = 9999999;\n var bEndOfSearch = false;\n var bRefine = false;\n var best_ggain_pass1 = 0;\n\n bin_search_StepSize(gfc, cod_info, targ_bits, ch, xrpow);\n\n if (0 == gfc.noise_shaping)\n /* fast mode, no noise shaping, we are ready */\n return 100;\n /* default noise_info.over_count */\n\n /* compute the distortion in this quantization */\n /* coefficients and thresholds both l/r (or both mid/side) */\n qupvt.calc_noise(cod_info, l3_xmin, distort, best_noise_info,\n prev_noise);\n best_noise_info.bits = cod_info.part2_3_length;\n\n cod_info_w.assign(cod_info);\n var age = 0;\n System$21.arraycopy(xrpow, 0, save_xrpow, 0, 576);\n\n while (!bEndOfSearch) {\n /* BEGIN MAIN LOOP */\n do {\n var noise_info = new CalcNoiseResult_1();\n var search_limit;\n var maxggain = 255;\n\n /*\n * When quantization with no distorted bands is found, allow up\n * to X new unsuccesful tries in serial. This gives us more\n * possibilities for different quant_compare modes. Much more\n * than 3 makes not a big difference, it is only slower.\n */\n\n if ((gfc.substep_shaping & 2) != 0) {\n search_limit = 20;\n } else {\n search_limit = 3;\n }\n\n /*\n * Check if the last scalefactor band is distorted. in VBR mode\n * we can't get rid of the distortion, so quit now and VBR mode\n * will try again with more bits. (makes a 10% speed increase,\n * the files I tested were binary identical, 2000/05/20 Robert\n * Hegemann) distort[] > 1 means noise > allowed noise\n */\n if (gfc.sfb21_extra) {\n if (distort[cod_info_w.sfbmax] > 1.0)\n break;\n if (cod_info_w.block_type == Encoder_1.SHORT_TYPE\n && (distort[cod_info_w.sfbmax + 1] > 1.0 || distort[cod_info_w.sfbmax + 2] > 1.0))\n break;\n }\n\n /* try a new scalefactor conbination on cod_info_w */\n if (!balance_noise(gfp, cod_info_w, distort, xrpow, bRefine))\n break;\n if (cod_info_w.scalefac_scale != 0)\n maxggain = 254;\n\n /*\n * inner_loop starts with the initial quantization step computed\n * above and slowly increases until the bits < huff_bits. Thus\n * it is important not to start with too large of an inital\n * quantization step. Too small is ok, but inner_loop will take\n * longer\n */\n var huff_bits = targ_bits - cod_info_w.part2_length;\n if (huff_bits <= 0)\n break;\n\n /*\n * increase quantizer stepsize until needed bits are below\n * maximum\n */\n while ((cod_info_w.part2_3_length = tk.count_bits(gfc, xrpow,\n cod_info_w, prev_noise)) > huff_bits\n && cod_info_w.global_gain <= maxggain)\n cod_info_w.global_gain++;\n\n if (cod_info_w.global_gain > maxggain)\n break;\n\n if (best_noise_info.over_count == 0) {\n\n while ((cod_info_w.part2_3_length = tk.count_bits(gfc,\n xrpow, cod_info_w, prev_noise)) > best_part2_3_length\n && cod_info_w.global_gain <= maxggain)\n cod_info_w.global_gain++;\n\n if (cod_info_w.global_gain > maxggain)\n break;\n }\n\n /* compute the distortion in this quantization */\n qupvt.calc_noise(cod_info_w, l3_xmin, distort, noise_info,\n prev_noise);\n noise_info.bits = cod_info_w.part2_3_length;\n\n /*\n * check if this quantization is better than our saved\n * quantization\n */\n if (cod_info.block_type != Encoder_1.SHORT_TYPE) {\n // NORM, START or STOP type\n better = gfp.quant_comp;\n } else\n better = gfp.quant_comp_short;\n\n better = quant_compare(better, best_noise_info, noise_info,\n cod_info_w, distort) ? 1 : 0;\n\n /* save data so we can restore this quantization later */\n if (better != 0) {\n best_part2_3_length = cod_info.part2_3_length;\n best_noise_info = noise_info;\n cod_info.assign(cod_info_w);\n age = 0;\n /* save data so we can restore this quantization later */\n /* store for later reuse */\n System$21.arraycopy(xrpow, 0, save_xrpow, 0, 576);\n } else {\n /* early stop? */\n if (gfc.full_outer_loop == 0) {\n if (++age > search_limit\n && best_noise_info.over_count == 0)\n break;\n if ((gfc.noise_shaping_amp == 3) && bRefine && age > 30)\n break;\n if ((gfc.noise_shaping_amp == 3)\n && bRefine\n && (cod_info_w.global_gain - best_ggain_pass1) > 15)\n break;\n }\n }\n } while ((cod_info_w.global_gain + cod_info_w.scalefac_scale) < 255);\n\n if (gfc.noise_shaping_amp == 3) {\n if (!bRefine) {\n /* refine search */\n cod_info_w.assign(cod_info);\n System$21.arraycopy(save_xrpow, 0, xrpow, 0, 576);\n age = 0;\n best_ggain_pass1 = cod_info_w.global_gain;\n\n bRefine = true;\n } else {\n /* search already refined, stop */\n bEndOfSearch = true;\n }\n\n } else {\n bEndOfSearch = true;\n }\n }\n\n assert$21((cod_info.global_gain + cod_info.scalefac_scale) <= 255);\n /*\n * finish up\n */\n if (gfp.VBR == VbrMode$21.vbr_rh || gfp.VBR == VbrMode$21.vbr_mtrh)\n /* restore for reuse on next try */\n System$21.arraycopy(save_xrpow, 0, xrpow, 0, 576);\n /*\n * do the 'substep shaping'\n */\n else if ((gfc.substep_shaping & 1) != 0)\n trancate_smallspectrums(gfc, cod_info, l3_xmin, xrpow);\n\n return best_noise_info.over_count;\n };\n\n /**\n * Robert Hegemann 2000-09-06\n *\n * update reservoir status after FINAL quantization/bitrate\n */\n this.iteration_finish_one = function (gfc, gr, ch) {\n var l3_side = gfc.l3_side;\n var cod_info = l3_side.tt[gr][ch];\n\n /*\n * try some better scalefac storage\n */\n tk.best_scalefac_store(gfc, gr, ch, l3_side);\n\n /*\n * best huffman_divide may save some bits too\n */\n if (gfc.use_best_huffman == 1)\n tk.best_huffman_divide(gfc, cod_info);\n\n /*\n * update reservoir status after FINAL quantization/bitrate\n */\n rv.ResvAdjust(gfc, cod_info);\n };\n\n /**\n *\n * 2000-09-04 Robert Hegemann\n *\n * @param l3_xmin\n * allowed distortion of the scalefactor\n * @param xrpow\n * coloured magnitudes of spectral values\n */\n this.VBR_encode_granule = function (gfp, cod_info, l3_xmin, xrpow, ch, min_bits, max_bits) {\n var gfc = gfp.internal_flags;\n var bst_cod_info = new GrInfo_1();\n var bst_xrpow = new_float$21(576);\n var Max_bits = max_bits;\n var real_bits = max_bits + 1;\n var this_bits = (max_bits + min_bits) / 2;\n var dbits, over, found = 0;\n var sfb21_extra = gfc.sfb21_extra;\n\n assert$21(Max_bits <= LameInternalFlags.MAX_BITS_PER_CHANNEL);\n Arrays$21.fill(bst_cod_info.l3_enc, 0);\n\n /*\n * search within round about 40 bits of optimal\n */\n do {\n assert$21(this_bits >= min_bits);\n assert$21(this_bits <= max_bits);\n assert$21(min_bits <= max_bits);\n\n if (this_bits > Max_bits - 42)\n gfc.sfb21_extra = false;\n else\n gfc.sfb21_extra = sfb21_extra;\n\n over = outer_loop(gfp, cod_info, l3_xmin, xrpow, ch, this_bits);\n\n /*\n * is quantization as good as we are looking for ? in this case: is\n * no scalefactor band distorted?\n */\n if (over <= 0) {\n found = 1;\n /*\n * now we know it can be done with \"real_bits\" and maybe we can\n * skip some iterations\n */\n real_bits = cod_info.part2_3_length;\n\n /*\n * store best quantization so far\n */\n bst_cod_info.assign(cod_info);\n System$21.arraycopy(xrpow, 0, bst_xrpow, 0, 576);\n\n /*\n * try with fewer bits\n */\n max_bits = real_bits - 32;\n dbits = max_bits - min_bits;\n this_bits = (max_bits + min_bits) / 2;\n } else {\n /*\n * try with more bits\n */\n min_bits = this_bits + 32;\n dbits = max_bits - min_bits;\n this_bits = (max_bits + min_bits) / 2;\n\n if (found != 0) {\n found = 2;\n /*\n * start again with best quantization so far\n */\n cod_info.assign(bst_cod_info);\n System$21.arraycopy(bst_xrpow, 0, xrpow, 0, 576);\n }\n }\n } while (dbits > 12);\n\n gfc.sfb21_extra = sfb21_extra;\n\n /*\n * found=0 => nothing found, use last one found=1 => we just found the\n * best and left the loop found=2 => we restored a good one and have now\n * l3_enc to restore too\n */\n if (found == 2) {\n System$21.arraycopy(bst_cod_info.l3_enc, 0, cod_info.l3_enc, 0, 576);\n }\n assert$21(cod_info.part2_3_length <= Max_bits);\n };\n\n /**\n * Robert Hegemann 2000-09-05\n *\n * calculates * how many bits are available for analog silent granules * how\n * many bits to use for the lowest allowed bitrate * how many bits each\n * bitrate would provide\n */\n this.get_framebits = function (gfp, frameBits) {\n var gfc = gfp.internal_flags;\n\n /*\n * always use at least this many bits per granule per channel unless we\n * detect analog silence, see below\n */\n gfc.bitrate_index = gfc.VBR_min_bitrate;\n var bitsPerFrame = bs.getframebits(gfp);\n\n /*\n * bits for analog silence\n */\n gfc.bitrate_index = 1;\n bitsPerFrame = bs.getframebits(gfp);\n\n for (var i = 1; i <= gfc.VBR_max_bitrate; i++) {\n gfc.bitrate_index = i;\n var mb = new MeanBits(bitsPerFrame);\n frameBits[i] = rv.ResvFrameBegin(gfp, mb);\n bitsPerFrame = mb.bits;\n }\n };\n\n /* RH: this one needs to be overhauled sometime */\n\n /**\n *
\n     *  2000-09-04 Robert Hegemann\n     *\n     *  * converts LR to MS coding when necessary\n     *  * calculates allowed/adjusted quantization noise amounts\n     *  * detects analog silent frames\n     *\n     *  some remarks:\n     *  - lower masking depending on Quality setting\n     *  - quality control together with adjusted ATH MDCT scaling\n     *    on lower quality setting allocate more noise from\n     *    ATH masking, and on higher quality setting allocate\n     *    less noise from ATH masking.\n     *  - experiments show that going more than 2dB over GPSYCHO's\n     *    limits ends up in very annoying artefacts\n     * 
\n */\n this.VBR_old_prepare = function (gfp, pe, ms_ener_ratio, ratio, l3_xmin, frameBits, min_bits,\n max_bits, bands) {\n var gfc = gfp.internal_flags;\n\n var masking_lower_db, adjust = 0.0;\n var analog_silence = 1;\n var bits = 0;\n\n gfc.bitrate_index = gfc.VBR_max_bitrate;\n var avg = rv.ResvFrameBegin(gfp, new MeanBits(0)) / gfc.mode_gr;\n\n get_framebits(gfp, frameBits);\n\n for (var gr = 0; gr < gfc.mode_gr; gr++) {\n var mxb = qupvt.on_pe(gfp, pe, max_bits[gr], avg, gr, 0);\n if (gfc.mode_ext == Encoder_1.MPG_MD_MS_LR) {\n ms_convert(gfc.l3_side, gr);\n qupvt.reduce_side(max_bits[gr], ms_ener_ratio[gr], avg, mxb);\n }\n for (var ch = 0; ch < gfc.channels_out; ++ch) {\n var cod_info = gfc.l3_side.tt[gr][ch];\n\n if (cod_info.block_type != Encoder_1.SHORT_TYPE) {\n // NORM, START or STOP type\n adjust = 1.28 / (1 + Math\n .exp(3.5 - pe[gr][ch] / 300.)) - 0.05;\n masking_lower_db = gfc.PSY.mask_adjust - adjust;\n } else {\n adjust = 2.56 / (1 + Math\n .exp(3.5 - pe[gr][ch] / 300.)) - 0.14;\n masking_lower_db = gfc.PSY.mask_adjust_short - adjust;\n }\n gfc.masking_lower = Math.pow(10.0,\n masking_lower_db * 0.1);\n\n init_outer_loop(gfc, cod_info);\n bands[gr][ch] = qupvt.calc_xmin(gfp, ratio[gr][ch], cod_info,\n l3_xmin[gr][ch]);\n if (bands[gr][ch] != 0)\n analog_silence = 0;\n\n min_bits[gr][ch] = 126;\n\n bits += max_bits[gr][ch];\n }\n }\n for (var gr = 0; gr < gfc.mode_gr; gr++) {\n for (var ch = 0; ch < gfc.channels_out; ch++) {\n if (bits > frameBits[gfc.VBR_max_bitrate]) {\n max_bits[gr][ch] *= frameBits[gfc.VBR_max_bitrate];\n max_bits[gr][ch] /= bits;\n }\n if (min_bits[gr][ch] > max_bits[gr][ch])\n min_bits[gr][ch] = max_bits[gr][ch];\n\n }\n /* for ch */\n }\n /* for gr */\n\n return analog_silence;\n };\n\n this.bitpressure_strategy = function (gfc, l3_xmin, min_bits, max_bits) {\n for (var gr = 0; gr < gfc.mode_gr; gr++) {\n for (var ch = 0; ch < gfc.channels_out; ch++) {\n var gi = gfc.l3_side.tt[gr][ch];\n var pxmin = l3_xmin[gr][ch];\n var pxminPos = 0;\n for (var sfb = 0; sfb < gi.psy_lmax; sfb++)\n pxmin[pxminPos++] *= 1. + .029 * sfb * sfb\n / Encoder_1.SBMAX_l / Encoder_1.SBMAX_l;\n\n if (gi.block_type == Encoder_1.SHORT_TYPE) {\n for (var sfb = gi.sfb_smin; sfb < Encoder_1.SBMAX_s; sfb++) {\n pxmin[pxminPos++] *= 1. + .029 * sfb * sfb\n / Encoder_1.SBMAX_s / Encoder_1.SBMAX_s;\n pxmin[pxminPos++] *= 1. + .029 * sfb * sfb\n / Encoder_1.SBMAX_s / Encoder_1.SBMAX_s;\n pxmin[pxminPos++] *= 1. + .029 * sfb * sfb\n / Encoder_1.SBMAX_s / Encoder_1.SBMAX_s;\n }\n }\n max_bits[gr][ch] = 0 | Math.max(min_bits[gr][ch],\n 0.9 * max_bits[gr][ch]);\n }\n }\n };\n\n this.VBR_new_prepare = function (gfp, pe, ratio, l3_xmin, frameBits, max_bits) {\n var gfc = gfp.internal_flags;\n\n var analog_silence = 1;\n var avg = 0, bits = 0;\n var maximum_framebits;\n\n if (!gfp.free_format) {\n gfc.bitrate_index = gfc.VBR_max_bitrate;\n\n var mb = new MeanBits(avg);\n rv.ResvFrameBegin(gfp, mb);\n avg = mb.bits;\n\n get_framebits(gfp, frameBits);\n maximum_framebits = frameBits[gfc.VBR_max_bitrate];\n } else {\n gfc.bitrate_index = 0;\n var mb = new MeanBits(avg);\n maximum_framebits = rv.ResvFrameBegin(gfp, mb);\n avg = mb.bits;\n frameBits[0] = maximum_framebits;\n }\n\n for (var gr = 0; gr < gfc.mode_gr; gr++) {\n qupvt.on_pe(gfp, pe, max_bits[gr], avg, gr, 0);\n if (gfc.mode_ext == Encoder_1.MPG_MD_MS_LR) {\n ms_convert(gfc.l3_side, gr);\n }\n for (var ch = 0; ch < gfc.channels_out; ++ch) {\n var cod_info = gfc.l3_side.tt[gr][ch];\n\n gfc.masking_lower = Math.pow(10.0,\n gfc.PSY.mask_adjust * 0.1);\n\n init_outer_loop(gfc, cod_info);\n if (0 != qupvt.calc_xmin(gfp, ratio[gr][ch], cod_info,\n l3_xmin[gr][ch]))\n analog_silence = 0;\n\n bits += max_bits[gr][ch];\n }\n }\n for (var gr = 0; gr < gfc.mode_gr; gr++) {\n for (var ch = 0; ch < gfc.channels_out; ch++) {\n if (bits > maximum_framebits) {\n max_bits[gr][ch] *= maximum_framebits;\n max_bits[gr][ch] /= bits;\n }\n\n }\n /* for ch */\n }\n /* for gr */\n\n return analog_silence;\n };\n\n /**\n * calculates target bits for ABR encoding\n *\n * mt 2000/05/31\n */\n this.calc_target_bits = function (gfp, pe, ms_ener_ratio, targ_bits, analog_silence_bits, max_frame_bits) {\n var gfc = gfp.internal_flags;\n var l3_side = gfc.l3_side;\n var res_factor;\n var gr, ch, totbits, mean_bits = 0;\n\n gfc.bitrate_index = gfc.VBR_max_bitrate;\n var mb = new MeanBits(mean_bits);\n max_frame_bits[0] = rv.ResvFrameBegin(gfp, mb);\n mean_bits = mb.bits;\n\n gfc.bitrate_index = 1;\n mean_bits = bs.getframebits(gfp) - gfc.sideinfo_len * 8;\n analog_silence_bits[0] = mean_bits / (gfc.mode_gr * gfc.channels_out);\n\n mean_bits = gfp.VBR_mean_bitrate_kbps * gfp.framesize * 1000;\n if ((gfc.substep_shaping & 1) != 0)\n mean_bits *= 1.09;\n mean_bits /= gfp.out_samplerate;\n mean_bits -= gfc.sideinfo_len * 8;\n mean_bits /= (gfc.mode_gr * gfc.channels_out);\n\n /**\n *
\n         *           res_factor is the percentage of the target bitrate that should\n         *           be used on average.  the remaining bits are added to the\n         *           bitreservoir and used for difficult to encode frames.\n         *\n         *           Since we are tracking the average bitrate, we should adjust\n         *           res_factor \"on the fly\", increasing it if the average bitrate\n         *           is greater than the requested bitrate, and decreasing it\n         *           otherwise.  Reasonable ranges are from .9 to 1.0\n         *\n         *           Until we get the above suggestion working, we use the following\n         *           tuning:\n         *           compression ratio    res_factor\n         *           5.5  (256kbps)         1.0      no need for bitreservoir\n         *           11   (128kbps)         .93      7% held for reservoir\n         *\n         *           with linear interpolation for other values.\n         * 
\n */\n res_factor = .93 + .07 * (11.0 - gfp.compression_ratio)\n / (11.0 - 5.5);\n if (res_factor < .90)\n res_factor = .90;\n if (res_factor > 1.00)\n res_factor = 1.00;\n\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n var sum = 0;\n for (ch = 0; ch < gfc.channels_out; ch++) {\n targ_bits[gr][ch] = (int)(res_factor * mean_bits);\n\n if (pe[gr][ch] > 700) {\n var add_bits = (int)((pe[gr][ch] - 700) / 1.4);\n\n var cod_info = l3_side.tt[gr][ch];\n targ_bits[gr][ch] = (int)(res_factor * mean_bits);\n\n /* short blocks use a little extra, no matter what the pe */\n if (cod_info.block_type == Encoder_1.SHORT_TYPE) {\n if (add_bits < mean_bits / 2)\n add_bits = mean_bits / 2;\n }\n /* at most increase bits by 1.5*average */\n if (add_bits > mean_bits * 3 / 2)\n add_bits = mean_bits * 3 / 2;\n else if (add_bits < 0)\n add_bits = 0;\n\n targ_bits[gr][ch] += add_bits;\n }\n if (targ_bits[gr][ch] > LameInternalFlags.MAX_BITS_PER_CHANNEL) {\n targ_bits[gr][ch] = LameInternalFlags.MAX_BITS_PER_CHANNEL;\n }\n sum += targ_bits[gr][ch];\n }\n /* for ch */\n if (sum > LameInternalFlags.MAX_BITS_PER_GRANULE) {\n for (ch = 0; ch < gfc.channels_out; ++ch) {\n targ_bits[gr][ch] *= LameInternalFlags.MAX_BITS_PER_GRANULE;\n targ_bits[gr][ch] /= sum;\n }\n }\n }\n /* for gr */\n\n if (gfc.mode_ext == Encoder_1.MPG_MD_MS_LR)\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n qupvt.reduce_side(targ_bits[gr], ms_ener_ratio[gr], mean_bits\n * gfc.channels_out,\n LameInternalFlags.MAX_BITS_PER_GRANULE);\n }\n\n /*\n * sum target bits\n */\n totbits = 0;\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n if (targ_bits[gr][ch] > LameInternalFlags.MAX_BITS_PER_CHANNEL)\n targ_bits[gr][ch] = LameInternalFlags.MAX_BITS_PER_CHANNEL;\n totbits += targ_bits[gr][ch];\n }\n }\n\n /*\n * repartion target bits if needed\n */\n if (totbits > max_frame_bits[0]) {\n for (gr = 0; gr < gfc.mode_gr; gr++) {\n for (ch = 0; ch < gfc.channels_out; ch++) {\n targ_bits[gr][ch] *= max_frame_bits[0];\n targ_bits[gr][ch] /= totbits;\n }\n }\n }\n };\n\n}\n\nvar Quantize_1 = Quantize$1;\n\n/*\n * bit reservoir source file\n *\n * Copyright (c) 1999-2000 Mark Taylor\n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * Library General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this library; if not, write to the\n * Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n * Boston, MA 02111-1307, USA.\n */\n\n/* $Id: Reservoir.java,v 1.9 2011/05/24 20:48:06 kenchis Exp $ */\n\n//package mp3;\n\n/**\n * ResvFrameBegin:
\n * Called (repeatedly) at the beginning of a frame. Updates the maximum size of\n * the reservoir, and checks to make sure main_data_begin was set properly by\n * the formatter
\n * Background information:\n * \n * This is the original text from the ISO standard. Because of sooo many bugs\n * and irritations correcting comments are added in brackets []. A '^W' means\n * you should remove the last word.\n * \n *
\n *  1. The following rule can be used to calculate the maximum\n *     number of bits used for one granule [^W frame]:
\n * At the highest possible bitrate of Layer III (320 kbps\n * per stereo signal [^W^W^W], 48 kHz) the frames must be of\n * [^W^W^W are designed to have] constant length, i.e.\n * one buffer [^W^W the frame] length is:
\n * \n * 320 kbps * 1152/48 kHz = 7680 bit = 960 byte\n * \n * This value is used as the maximum buffer per channel [^W^W] at\n * lower bitrates [than 320 kbps]. At 64 kbps mono or 128 kbps\n * stereo the main granule length is 64 kbps * 576/48 kHz = 768 bit\n * [per granule and channel] at 48 kHz sampling frequency.\n * This means that there is a maximum deviation (short time buffer\n * [= reservoir]) of 7680 - 2*2*768 = 4608 bits is allowed at 64 kbps.\n * The actual deviation is equal to the number of bytes [with the\n * meaning of octets] denoted by the main_data_end offset pointer.\n * The actual maximum deviation is (2^9-1)*8 bit = 4088 bits\n * [for MPEG-1 and (2^8-1)*8 bit for MPEG-2, both are hard limits].\n * ... The xchange of buffer bits between the left and right channel\n * is allowed without restrictions [exception: dual channel].\n * Because of the [constructed] constraint on the buffer size\n * main_data_end is always set to 0 in the case of bit_rate_index==14,\n * i.e. data rate 320 kbps per stereo signal [^W^W^W]. In this case\n * all data are allocated between adjacent header [^W sync] words\n * [, i.e. there is no buffering at all].\n *
\n */\n\n\nvar assert$23 = common.assert;\n\nfunction Reservoir$1() {\n\tvar bs;\n\n\tthis.setModules = function(_bs) {\n\t\tbs = _bs;\n\t};\n\n\tthis.ResvFrameBegin = function(gfp, mean_bits) {\n\t\tvar gfc = gfp.internal_flags;\n\t\tvar maxmp3buf;\n\t\tvar l3_side = gfc.l3_side;\n\n\t\tvar frameLength = bs.getframebits(gfp);\n\t\tmean_bits.bits = (frameLength - gfc.sideinfo_len * 8) / gfc.mode_gr;\n\n\t\t/**\n\t\t *
\n\t\t *  Meaning of the variables:\n\t\t *      resvLimit: (0, 8, ..., 8*255 (MPEG-2), 8*511 (MPEG-1))\n\t\t *          Number of bits can be stored in previous frame(s) due to\n\t\t *          counter size constaints\n\t\t *      maxmp3buf: ( ??? ... 8*1951 (MPEG-1 and 2), 8*2047 (MPEG-2.5))\n\t\t *          Number of bits allowed to encode one frame (you can take 8*511 bit\n\t\t *          from the bit reservoir and at most 8*1440 bit from the current\n\t\t *          frame (320 kbps, 32 kHz), so 8*1951 bit is the largest possible\n\t\t *          value for MPEG-1 and -2)\n\t\t * \n\t\t *          maximum allowed granule/channel size times 4 = 8*2047 bits.,\n\t\t *          so this is the absolute maximum supported by the format.\n\t\t * \n\t\t * \n\t\t *      fullFrameBits:  maximum number of bits available for encoding\n\t\t *                      the current frame.\n\t\t * \n\t\t *      mean_bits:      target number of bits per granule.\n\t\t * \n\t\t *      frameLength:\n\t\t * \n\t\t *      gfc.ResvMax:   maximum allowed reservoir\n\t\t * \n\t\t *      gfc.ResvSize:  current reservoir size\n\t\t * \n\t\t *      l3_side.resvDrain_pre:\n\t\t *         ancillary data to be added to previous frame:\n\t\t *         (only usefull in VBR modes if it is possible to have\n\t\t *         maxmp3buf < fullFrameBits)).  Currently disabled,\n\t\t *         see #define NEW_DRAIN\n\t\t *         2010-02-13: RH now enabled, it seems to be needed for CBR too,\n\t\t *                     as there exists one example, where the FhG decoder\n\t\t *                     can't decode a -b320 CBR file anymore.\n\t\t * \n\t\t *      l3_side.resvDrain_post:\n\t\t *         ancillary data to be added to this frame:\n\t\t * \n\t\t * 
\n\t\t */\n\n\t\t/* main_data_begin has 9 bits in MPEG-1, 8 bits MPEG-2 */\n\t\tvar resvLimit = (8 * 256) * gfc.mode_gr - 8;\n\n\t\t/*\n\t\t * maximum allowed frame size. dont use more than this number of bits,\n\t\t * even if the frame has the space for them:\n\t\t */\n\t\tif (gfp.brate > 320) {\n\t\t\t/* in freeformat the buffer is constant */\n\t\t\tmaxmp3buf = 8 * ((int) ((gfp.brate * 1000)\n\t\t\t\t\t/ (gfp.out_samplerate / 1152) / 8 + .5));\n\t\t} else {\n\t\t\t/*\n\t\t\t * all mp3 decoders should have enough buffer to handle this value:\n\t\t\t * size of a 320kbps 32kHz frame\n\t\t\t */\n\t\t\tmaxmp3buf = 8 * 1440;\n\n\t\t\t/*\n\t\t\t * Bouvigne suggests this more lax interpretation of the ISO doc\n\t\t\t * instead of using 8*960.\n\t\t\t */\n\n\t\t\tif (gfp.strict_ISO) {\n\t\t\t\tmaxmp3buf = 8 * ((int) (320000 / (gfp.out_samplerate / 1152) / 8 + .5));\n\t\t\t}\n\t\t}\n\n\t\tgfc.ResvMax = maxmp3buf - frameLength;\n\t\tif (gfc.ResvMax > resvLimit)\n\t\t\tgfc.ResvMax = resvLimit;\n\t\tif (gfc.ResvMax < 0 || gfp.disable_reservoir)\n\t\t\tgfc.ResvMax = 0;\n\n\t\tvar fullFrameBits = mean_bits.bits * gfc.mode_gr\n\t\t\t\t+ Math.min(gfc.ResvSize, gfc.ResvMax);\n\n\t\tif (fullFrameBits > maxmp3buf)\n\t\t\tfullFrameBits = maxmp3buf;\n\n\t\tassert$23 (0 == gfc.ResvMax % 8);\n\t\tassert$23 (gfc.ResvMax >= 0);\n\n\t\tl3_side.resvDrain_pre = 0;\n\n\t\t// frame analyzer code\n\t\tif (gfc.pinfo != null) {\n\t\t\t/*\n\t\t\t * expected bits per channel per granule [is this also right for\n\t\t\t * mono/stereo, MPEG-1/2 ?]\n\t\t\t */\n\t\t\tgfc.pinfo.mean_bits = mean_bits.bits / 2;\n\t\t\tgfc.pinfo.resvsize = gfc.ResvSize;\n\t\t}\n\n\t\treturn fullFrameBits;\n\t};\n\n\t/**\n\t * returns targ_bits: target number of bits to use for 1 granule
\n\t * extra_bits: amount extra available from reservoir
\n\t * Mark Taylor 4/99\n\t */\n\tthis.ResvMaxBits = function(gfp, mean_bits, targ_bits, cbr) {\n\t\tvar gfc = gfp.internal_flags;\n\t\tvar add_bits;\n var ResvSize = gfc.ResvSize, ResvMax = gfc.ResvMax;\n\n\t\t/* compensate the saved bits used in the 1st granule */\n\t\tif (cbr != 0)\n\t\t\tResvSize += mean_bits;\n\n\t\tif ((gfc.substep_shaping & 1) != 0)\n\t\t\tResvMax *= 0.9;\n\n\t\ttarg_bits.bits = mean_bits;\n\n\t\t/* extra bits if the reservoir is almost full */\n\t\tif (ResvSize * 10 > ResvMax * 9) {\n\t\t\tadd_bits = ResvSize - (ResvMax * 9) / 10;\n\t\t\ttarg_bits.bits += add_bits;\n\t\t\tgfc.substep_shaping |= 0x80;\n\t\t} else {\n\t\t\tadd_bits = 0;\n\t\t\tgfc.substep_shaping &= 0x7f;\n\t\t\t/*\n\t\t\t * build up reservoir. this builds the reservoir a little slower\n\t\t\t * than FhG. It could simple be mean_bits/15, but this was rigged to\n\t\t\t * always produce 100 (the old value) at 128kbs\n\t\t\t */\n\t\t\tif (!gfp.disable_reservoir && 0 == (gfc.substep_shaping & 1))\n\t\t\t\ttarg_bits.bits -= .1 * mean_bits;\n\t\t}\n\n\t\t/* amount from the reservoir we are allowed to use. ISO says 6/10 */\n\t\tvar extra_bits = (ResvSize < (gfc.ResvMax * 6) / 10 ? ResvSize\n\t\t\t\t: (gfc.ResvMax * 6) / 10);\n\t\textra_bits -= add_bits;\n\n\t\tif (extra_bits < 0)\n\t\t\textra_bits = 0;\n\t\treturn extra_bits;\n\t};\n\n\t/**\n\t * Called after a granule's bit allocation. Readjusts the size of the\n\t * reservoir to reflect the granule's usage.\n\t */\n\tthis.ResvAdjust = function(gfc, gi) {\n\t\tgfc.ResvSize -= gi.part2_3_length + gi.part2_length;\n\t};\n\n\t/**\n\t * Called after all granules in a frame have been allocated. Makes sure that\n\t * the reservoir size is within limits, possibly by adding stuffing bits.\n\t */\n\tthis.ResvFrameEnd = function(gfc, mean_bits) {\n\t\tvar over_bits;\n\t\tvar l3_side = gfc.l3_side;\n\n\t\tgfc.ResvSize += mean_bits * gfc.mode_gr;\n\t\tvar stuffingBits = 0;\n\t\tl3_side.resvDrain_post = 0;\n\t\tl3_side.resvDrain_pre = 0;\n\n\t\t/* we must be byte aligned */\n\t\tif ((over_bits = gfc.ResvSize % 8) != 0)\n\t\t\tstuffingBits += over_bits;\n\n\t\tover_bits = (gfc.ResvSize - stuffingBits) - gfc.ResvMax;\n\t\tif (over_bits > 0) {\n\t\t\tassert$23 (0 == over_bits % 8);\n\t\t\tassert$23 (over_bits >= 0);\n\t\t\tstuffingBits += over_bits;\n\t\t}\n\n\t\t/*\n\t\t * NOTE: enabling the NEW_DRAIN code fixes some problems with FhG\n\t\t * decoder shipped with MS Windows operating systems. Using this, it is\n\t\t * even possible to use Gabriel's lax buffer consideration again, which\n\t\t * assumes, any decoder should have a buffer large enough for a 320 kbps\n\t\t * frame at 32 kHz sample rate.\n\t\t * \n\t\t * old drain code: lame -b320 BlackBird.wav --. does not play with\n\t\t * GraphEdit.exe using FhG decoder V1.5 Build 50\n\t\t * \n\t\t * new drain code: lame -b320 BlackBird.wav --. plays fine with\n\t\t * GraphEdit.exe using FhG decoder V1.5 Build 50\n\t\t * \n\t\t * Robert Hegemann, 2010-02-13.\n\t\t */\n\t\t/*\n\t\t * drain as many bits as possible into previous frame ancillary data In\n\t\t * particular, in VBR mode ResvMax may have changed, and we have to make\n\t\t * sure main_data_begin does not create a reservoir bigger than ResvMax\n\t\t * mt 4/00\n\t\t */\n\t\t{\n\t\t\tvar mdb_bytes = Math.min(l3_side.main_data_begin * 8, stuffingBits) / 8;\n\t\t\tl3_side.resvDrain_pre += 8 * mdb_bytes;\n\t\t\tstuffingBits -= 8 * mdb_bytes;\n\t\t\tgfc.ResvSize -= 8 * mdb_bytes;\n\t\t\tl3_side.main_data_begin -= mdb_bytes;\n\t\t}\n\t\t/* drain the rest into this frames ancillary data */\n\t\tl3_side.resvDrain_post += stuffingBits;\n\t\tgfc.ResvSize -= stuffingBits;\n\t};\n}\n\nvar Reservoir_1 = Reservoir$1;\n\nfunction Version() {\n\n /**\n * URL for the LAME website.\n */\n var LAME_URL = \"http://www.mp3dev.org/\";\n\n /**\n * Major version number.\n */\n var LAME_MAJOR_VERSION = 3;\n /**\n * Minor version number.\n */\n var LAME_MINOR_VERSION = 98;\n /**\n * Patch level.\n */\n var LAME_PATCH_VERSION = 4;\n\n /**\n * Major version number.\n */\n var PSY_MAJOR_VERSION = 0;\n /**\n * Minor version number.\n */\n var PSY_MINOR_VERSION = 93;\n\n /**\n * A string which describes the version of LAME.\n *\n * @return string which describes the version of LAME\n */\n this.getLameVersion = function () {\n // primary to write screen reports\n return (LAME_MAJOR_VERSION + \".\" + LAME_MINOR_VERSION + \".\" + LAME_PATCH_VERSION);\n };\n\n /**\n * The short version of the LAME version string.\n *\n * @return short version of the LAME version string\n */\n this.getLameShortVersion = function () {\n // Adding date and time to version string makes it harder for output\n // validation\n return (LAME_MAJOR_VERSION + \".\" + LAME_MINOR_VERSION + \".\" + LAME_PATCH_VERSION);\n };\n\n /**\n * The shortest version of the LAME version string.\n *\n * @return shortest version of the LAME version string\n */\n this.getLameVeryShortVersion = function () {\n // Adding date and time to version string makes it harder for output\n return (\"LAME\" + LAME_MAJOR_VERSION + \".\" + LAME_MINOR_VERSION + \"r\");\n };\n\n /**\n * String which describes the version of GPSYCHO\n *\n * @return string which describes the version of GPSYCHO\n */\n this.getPsyVersion = function () {\n return (PSY_MAJOR_VERSION + \".\" + PSY_MINOR_VERSION);\n };\n\n /**\n * String which is a URL for the LAME website.\n *\n * @return string which is a URL for the LAME website\n */\n this.getLameUrl = function () {\n return LAME_URL;\n };\n\n /**\n * Quite useless for a java version, however we are compatible ;-)\n *\n * @return \"32bits\"\n */\n this.getLameOsBitness = function () {\n return \"32bits\";\n };\n\n}\n\nvar Version_1 = Version;\n\nvar System$22 = common.System;\nvar VbrMode$22 = common.VbrMode;\nvar ShortBlock$22 = common.ShortBlock;\nvar Arrays$22 = common.Arrays;\nvar new_byte$22 = common.new_byte;\nvar assert$24 = common.assert;\n\n/**\n * A Vbr header may be present in the ancillary data field of the first frame of\n * an mp3 bitstream
\n * The Vbr header (optionally) contains\n *
    \n *
  • frames total number of audio frames in the bitstream\n *
  • bytes total number of bytes in the bitstream\n *
  • toc table of contents\n *
\n *\n * toc (table of contents) gives seek points for random access.
\n * The ith entry determines the seek point for i-percent duration.
\n * seek point in bytes = (toc[i]/256.0) * total_bitstream_bytes
\n * e.g. half duration seek point = (toc[50]/256.0) * total_bitstream_bytes\n */\nVBRTag.NUMTOCENTRIES = 100;\nVBRTag.MAXFRAMESIZE = 2880;\n\nfunction VBRTag() {\n\n var lame;\n var bs;\n var v;\n\n this.setModules = function (_lame, _bs, _v) {\n lame = _lame;\n bs = _bs;\n v = _v;\n };\n\n var FRAMES_FLAG = 0x0001;\n var BYTES_FLAG = 0x0002;\n var TOC_FLAG = 0x0004;\n var VBR_SCALE_FLAG = 0x0008;\n\n var NUMTOCENTRIES = VBRTag.NUMTOCENTRIES;\n\n /**\n * (0xB40) the max freeformat 640 32kHz framesize.\n */\n var MAXFRAMESIZE = VBRTag.MAXFRAMESIZE;\n\n /**\n *
\n     *    4 bytes for Header Tag\n     *    4 bytes for Header Flags\n     *  100 bytes for entry (toc)\n     *    4 bytes for frame size\n     *    4 bytes for stream size\n     *    4 bytes for VBR scale. a VBR quality indicator: 0=best 100=worst\n     *   20 bytes for LAME tag.  for example, \"LAME3.12 (beta 6)\"\n     * ___________\n     *  140 bytes\n     * 
\n */\n var VBRHEADERSIZE = (NUMTOCENTRIES + 4 + 4 + 4 + 4 + 4);\n\n var LAMEHEADERSIZE = (VBRHEADERSIZE + 9 + 1 + 1 + 8\n + 1 + 1 + 3 + 1 + 1 + 2 + 4 + 2 + 2);\n\n /**\n * The size of the Xing header MPEG-1, bit rate in kbps.\n */\n var XING_BITRATE1 = 128;\n /**\n * The size of the Xing header MPEG-2, bit rate in kbps.\n */\n var XING_BITRATE2 = 64;\n /**\n * The size of the Xing header MPEG-2.5, bit rate in kbps.\n */\n var XING_BITRATE25 = 32;\n\n /**\n * ISO-8859-1 charset for byte to string operations.\n */\n var ISO_8859_1 = null; //Charset.forName(\"ISO-8859-1\");\n\n /**\n * VBR header magic string.\n */\n var VBRTag0 = \"Xing\";\n /**\n * VBR header magic string (VBR == VBRMode.vbr_off).\n */\n var VBRTag1 = \"Info\";\n\n /**\n * Lookup table for fast CRC-16 computation. Uses the polynomial\n * x^16+x^15+x^2+1\n */\n var crc16Lookup = [0x0000, 0xC0C1, 0xC181, 0x0140,\n 0xC301, 0x03C0, 0x0280, 0xC241, 0xC601, 0x06C0, 0x0780, 0xC741,\n 0x0500, 0xC5C1, 0xC481, 0x0440, 0xCC01, 0x0CC0, 0x0D80, 0xCD41,\n 0x0F00, 0xCFC1, 0xCE81, 0x0E40, 0x0A00, 0xCAC1, 0xCB81, 0x0B40,\n 0xC901, 0x09C0, 0x0880, 0xC841, 0xD801, 0x18C0, 0x1980, 0xD941,\n 0x1B00, 0xDBC1, 0xDA81, 0x1A40, 0x1E00, 0xDEC1, 0xDF81, 0x1F40,\n 0xDD01, 0x1DC0, 0x1C80, 0xDC41, 0x1400, 0xD4C1, 0xD581, 0x1540,\n 0xD701, 0x17C0, 0x1680, 0xD641, 0xD201, 0x12C0, 0x1380, 0xD341,\n 0x1100, 0xD1C1, 0xD081, 0x1040, 0xF001, 0x30C0, 0x3180, 0xF141,\n 0x3300, 0xF3C1, 0xF281, 0x3240, 0x3600, 0xF6C1, 0xF781, 0x3740,\n 0xF501, 0x35C0, 0x3480, 0xF441, 0x3C00, 0xFCC1, 0xFD81, 0x3D40,\n 0xFF01, 0x3FC0, 0x3E80, 0xFE41, 0xFA01, 0x3AC0, 0x3B80, 0xFB41,\n 0x3900, 0xF9C1, 0xF881, 0x3840, 0x2800, 0xE8C1, 0xE981, 0x2940,\n 0xEB01, 0x2BC0, 0x2A80, 0xEA41, 0xEE01, 0x2EC0, 0x2F80, 0xEF41,\n 0x2D00, 0xEDC1, 0xEC81, 0x2C40, 0xE401, 0x24C0, 0x2580, 0xE541,\n 0x2700, 0xE7C1, 0xE681, 0x2640, 0x2200, 0xE2C1, 0xE381, 0x2340,\n 0xE101, 0x21C0, 0x2080, 0xE041, 0xA001, 0x60C0, 0x6180, 0xA141,\n 0x6300, 0xA3C1, 0xA281, 0x6240, 0x6600, 0xA6C1, 0xA781, 0x6740,\n 0xA501, 0x65C0, 0x6480, 0xA441, 0x6C00, 0xACC1, 0xAD81, 0x6D40,\n 0xAF01, 0x6FC0, 0x6E80, 0xAE41, 0xAA01, 0x6AC0, 0x6B80, 0xAB41,\n 0x6900, 0xA9C1, 0xA881, 0x6840, 0x7800, 0xB8C1, 0xB981, 0x7940,\n 0xBB01, 0x7BC0, 0x7A80, 0xBA41, 0xBE01, 0x7EC0, 0x7F80, 0xBF41,\n 0x7D00, 0xBDC1, 0xBC81, 0x7C40, 0xB401, 0x74C0, 0x7580, 0xB541,\n 0x7700, 0xB7C1, 0xB681, 0x7640, 0x7200, 0xB2C1, 0xB381, 0x7340,\n 0xB101, 0x71C0, 0x7080, 0xB041, 0x5000, 0x90C1, 0x9181, 0x5140,\n 0x9301, 0x53C0, 0x5280, 0x9241, 0x9601, 0x56C0, 0x5780, 0x9741,\n 0x5500, 0x95C1, 0x9481, 0x5440, 0x9C01, 0x5CC0, 0x5D80, 0x9D41,\n 0x5F00, 0x9FC1, 0x9E81, 0x5E40, 0x5A00, 0x9AC1, 0x9B81, 0x5B40,\n 0x9901, 0x59C0, 0x5880, 0x9841, 0x8801, 0x48C0, 0x4980, 0x8941,\n 0x4B00, 0x8BC1, 0x8A81, 0x4A40, 0x4E00, 0x8EC1, 0x8F81, 0x4F40,\n 0x8D01, 0x4DC0, 0x4C80, 0x8C41, 0x4400, 0x84C1, 0x8581, 0x4540,\n 0x8701, 0x47C0, 0x4680, 0x8641, 0x8201, 0x42C0, 0x4380, 0x8341,\n 0x4100, 0x81C1, 0x8081, 0x4040];\n\n /***********************************************************************\n * Robert Hegemann 2001-01-17\n ***********************************************************************/\n\n function addVbr(v, bitrate) {\n v.nVbrNumFrames++;\n v.sum += bitrate;\n v.seen++;\n\n if (v.seen < v.want) {\n return;\n }\n\n if (v.pos < v.size) {\n v.bag[v.pos] = v.sum;\n v.pos++;\n v.seen = 0;\n }\n if (v.pos == v.size) {\n for (var i = 1; i < v.size; i += 2) {\n v.bag[i / 2] = v.bag[i];\n }\n v.want *= 2;\n v.pos /= 2;\n }\n }\n\n function xingSeekTable(v, t) {\n if (v.pos <= 0)\n return;\n\n for (var i = 1; i < NUMTOCENTRIES; ++i) {\n var j = i / NUMTOCENTRIES, act, sum;\n var indx = 0 | (Math.floor(j * v.pos));\n if (indx > v.pos - 1)\n indx = v.pos - 1;\n act = v.bag[indx];\n sum = v.sum;\n var seek_point = 0 | (256. * act / sum);\n if (seek_point > 255)\n seek_point = 255;\n t[i] = 0xff & seek_point;\n }\n }\n\n /**\n * Add VBR entry, used to fill the VBR TOC entries.\n *\n * @param gfp\n * global flags\n */\n this.addVbrFrame = function (gfp) {\n var gfc = gfp.internal_flags;\n var kbps = Tables.bitrate_table[gfp.version][gfc.bitrate_index];\n assert$24(gfc.VBR_seek_table.bag != null);\n addVbr(gfc.VBR_seek_table, kbps);\n };\n\n /**\n * Read big endian integer (4-bytes) from header.\n *\n * @param buf\n * header containing the integer\n * @param bufPos\n * offset into the header\n * @return extracted integer\n */\n function extractInteger(buf, bufPos) {\n var x = buf[bufPos + 0] & 0xff;\n x <<= 8;\n x |= buf[bufPos + 1] & 0xff;\n x <<= 8;\n x |= buf[bufPos + 2] & 0xff;\n x <<= 8;\n x |= buf[bufPos + 3] & 0xff;\n return x;\n }\n\n /**\n * Write big endian integer (4-bytes) in the header.\n *\n * @param buf\n * header to write the integer into\n * @param bufPos\n * offset into the header\n * @param value\n * integer value to write\n */\n function createInteger(buf, bufPos, value) {\n buf[bufPos + 0] = 0xff & ((value >> 24) & 0xff);\n buf[bufPos + 1] = 0xff & ((value >> 16) & 0xff);\n buf[bufPos + 2] = 0xff & ((value >> 8) & 0xff);\n buf[bufPos + 3] = 0xff & (value & 0xff);\n }\n\n /**\n * Write big endian short (2-bytes) in the header.\n *\n * @param buf\n * header to write the integer into\n * @param bufPos\n * offset into the header\n * @param value\n * integer value to write\n */\n function createShort(buf, bufPos, value) {\n buf[bufPos + 0] = 0xff & ((value >> 8) & 0xff);\n buf[bufPos + 1] = 0xff & (value & 0xff);\n }\n\n /**\n * Check for magic strings (Xing/Info).\n *\n * @param buf\n * header to check\n * @param bufPos\n * header offset to check\n * @return magic string found\n */\n function isVbrTag(buf, bufPos) {\n return new String(buf, bufPos, VBRTag0.length(), ISO_8859_1)\n .equals(VBRTag0)\n || new String(buf, bufPos, VBRTag1.length(), ISO_8859_1)\n .equals(VBRTag1);\n }\n\n function shiftInBitsValue(x, n, v) {\n return 0xff & ((x << n) | (v & ~(-1 << n)));\n }\n\n /**\n * Construct the MP3 header using the settings of the global flags.\n *\n * \n *\n * @param gfp\n * global flags\n * @param buffer\n * header\n */\n function setLameTagFrameHeader(gfp, buffer) {\n var gfc = gfp.internal_flags;\n\n // MP3 Sync Word\n buffer[0] = shiftInBitsValue(buffer[0], 8, 0xff);\n\n buffer[1] = shiftInBitsValue(buffer[1], 3, 7);\n buffer[1] = shiftInBitsValue(buffer[1], 1,\n (gfp.out_samplerate < 16000) ? 0 : 1);\n // Version\n buffer[1] = shiftInBitsValue(buffer[1], 1, gfp.version);\n // 01 == Layer 3\n buffer[1] = shiftInBitsValue(buffer[1], 2, 4 - 3);\n // Error protection\n buffer[1] = shiftInBitsValue(buffer[1], 1, (!gfp.error_protection) ? 1\n : 0);\n\n // Bit rate\n buffer[2] = shiftInBitsValue(buffer[2], 4, gfc.bitrate_index);\n // Frequency\n buffer[2] = shiftInBitsValue(buffer[2], 2, gfc.samplerate_index);\n // Pad. Bit\n buffer[2] = shiftInBitsValue(buffer[2], 1, 0);\n // Priv. Bit\n buffer[2] = shiftInBitsValue(buffer[2], 1, gfp.extension);\n\n // Mode\n buffer[3] = shiftInBitsValue(buffer[3], 2, gfp.mode.ordinal());\n // Mode extension (Used with Joint Stereo)\n buffer[3] = shiftInBitsValue(buffer[3], 2, gfc.mode_ext);\n // Copy\n buffer[3] = shiftInBitsValue(buffer[3], 1, gfp.copyright);\n // Original\n buffer[3] = shiftInBitsValue(buffer[3], 1, gfp.original);\n // Emphasis\n buffer[3] = shiftInBitsValue(buffer[3], 2, gfp.emphasis);\n\n /* the default VBR header. 48 kbps layer III, no padding, no crc */\n /* but sampling freq, mode and copyright/copy protection taken */\n /* from first valid frame */\n buffer[0] = 0xff;\n var abyte = 0xff & (buffer[1] & 0xf1);\n var bitrate;\n if (1 == gfp.version) {\n bitrate = XING_BITRATE1;\n } else {\n if (gfp.out_samplerate < 16000)\n bitrate = XING_BITRATE25;\n else\n bitrate = XING_BITRATE2;\n }\n\n if (gfp.VBR == VbrMode$22.vbr_off)\n bitrate = gfp.brate;\n\n var bbyte;\n if (gfp.free_format)\n bbyte = 0x00;\n else\n bbyte = 0xff & (16 * lame.BitrateIndex(bitrate, gfp.version,\n gfp.out_samplerate));\n\n /*\n * Use as much of the info from the real frames in the Xing header:\n * samplerate, channels, crc, etc...\n */\n if (gfp.version == 1) {\n /* MPEG1 */\n buffer[1] = 0xff & (abyte | 0x0a);\n /* was 0x0b; */\n abyte = 0xff & (buffer[2] & 0x0d);\n /* AF keep also private bit */\n buffer[2] = 0xff & (bbyte | abyte);\n /* 64kbs MPEG1 frame */\n } else {\n /* MPEG2 */\n buffer[1] = 0xff & (abyte | 0x02);\n /* was 0x03; */\n abyte = 0xff & (buffer[2] & 0x0d);\n /* AF keep also private bit */\n buffer[2] = 0xff & (bbyte | abyte);\n /* 64kbs MPEG2 frame */\n }\n }\n\n /**\n * Get VBR tag information\n *\n * @param buf\n * header to analyze\n * @param bufPos\n * offset into the header\n * @return VBR tag data\n */\n this.getVbrTag = function (buf) {\n var pTagData = new VBRTagData();\n var bufPos = 0;\n\n /* get Vbr header data */\n pTagData.flags = 0;\n\n /* get selected MPEG header data */\n var hId = (buf[bufPos + 1] >> 3) & 1;\n var hSrIndex = (buf[bufPos + 2] >> 2) & 3;\n var hMode = (buf[bufPos + 3] >> 6) & 3;\n var hBitrate = ((buf[bufPos + 2] >> 4) & 0xf);\n hBitrate = Tables.bitrate_table[hId][hBitrate];\n\n /* check for FFE syncword */\n if ((buf[bufPos + 1] >> 4) == 0xE)\n pTagData.samprate = Tables.samplerate_table[2][hSrIndex];\n else\n pTagData.samprate = Tables.samplerate_table[hId][hSrIndex];\n\n /* determine offset of header */\n if (hId != 0) {\n /* mpeg1 */\n if (hMode != 3)\n bufPos += (32 + 4);\n else\n bufPos += (17 + 4);\n } else {\n /* mpeg2 */\n if (hMode != 3)\n bufPos += (17 + 4);\n else\n bufPos += (9 + 4);\n }\n\n if (!isVbrTag(buf, bufPos))\n return null;\n\n bufPos += 4;\n\n pTagData.hId = hId;\n\n /* get flags */\n var head_flags = pTagData.flags = extractInteger(buf, bufPos);\n bufPos += 4;\n\n if ((head_flags & FRAMES_FLAG) != 0) {\n pTagData.frames = extractInteger(buf, bufPos);\n bufPos += 4;\n }\n\n if ((head_flags & BYTES_FLAG) != 0) {\n pTagData.bytes = extractInteger(buf, bufPos);\n bufPos += 4;\n }\n\n if ((head_flags & TOC_FLAG) != 0) {\n if (pTagData.toc != null) {\n for (var i = 0; i < NUMTOCENTRIES; i++)\n pTagData.toc[i] = buf[bufPos + i];\n }\n bufPos += NUMTOCENTRIES;\n }\n\n pTagData.vbrScale = -1;\n\n if ((head_flags & VBR_SCALE_FLAG) != 0) {\n pTagData.vbrScale = extractInteger(buf, bufPos);\n bufPos += 4;\n }\n\n pTagData.headersize = ((hId + 1) * 72000 * hBitrate)\n / pTagData.samprate;\n\n bufPos += 21;\n var encDelay = buf[bufPos + 0] << 4;\n encDelay += buf[bufPos + 1] >> 4;\n var encPadding = (buf[bufPos + 1] & 0x0F) << 8;\n encPadding += buf[bufPos + 2] & 0xff;\n /* check for reasonable values (this may be an old Xing header, */\n /* not a INFO tag) */\n if (encDelay < 0 || encDelay > 3000)\n encDelay = -1;\n if (encPadding < 0 || encPadding > 3000)\n encPadding = -1;\n\n pTagData.encDelay = encDelay;\n pTagData.encPadding = encPadding;\n\n /* success */\n return pTagData;\n };\n\n /**\n * Initializes the header\n *\n * @param gfp\n * global flags\n */\n this.InitVbrTag = function (gfp) {\n var gfc = gfp.internal_flags;\n\n /**\n *
\n         * Xing VBR pretends to be a 48kbs layer III frame.  (at 44.1kHz).\n         * (at 48kHz they use 56kbs since 48kbs frame not big enough for\n         * table of contents)\n         * let's always embed Xing header inside a 64kbs layer III frame.\n         * this gives us enough room for a LAME version string too.\n         * size determined by sampling frequency (MPEG1)\n         * 32kHz:    216 bytes@48kbs    288bytes@ 64kbs\n         * 44.1kHz:  156 bytes          208bytes@64kbs     (+1 if padding = 1)\n         * 48kHz:    144 bytes          192\n         *\n         * MPEG 2 values are the same since the framesize and samplerate\n         * are each reduced by a factor of 2.\n         * 
\n */\n var kbps_header;\n if (1 == gfp.version) {\n kbps_header = XING_BITRATE1;\n } else {\n if (gfp.out_samplerate < 16000)\n kbps_header = XING_BITRATE25;\n else\n kbps_header = XING_BITRATE2;\n }\n\n if (gfp.VBR == VbrMode$22.vbr_off)\n kbps_header = gfp.brate;\n\n // make sure LAME Header fits into Frame\n var totalFrameSize = ((gfp.version + 1) * 72000 * kbps_header)\n / gfp.out_samplerate;\n var headerSize = (gfc.sideinfo_len + LAMEHEADERSIZE);\n gfc.VBR_seek_table.TotalFrameSize = totalFrameSize;\n if (totalFrameSize < headerSize || totalFrameSize > MAXFRAMESIZE) {\n /* disable tag, it wont fit */\n gfp.bWriteVbrTag = false;\n return;\n }\n\n gfc.VBR_seek_table.nVbrNumFrames = 0;\n gfc.VBR_seek_table.nBytesWritten = 0;\n gfc.VBR_seek_table.sum = 0;\n\n gfc.VBR_seek_table.seen = 0;\n gfc.VBR_seek_table.want = 1;\n gfc.VBR_seek_table.pos = 0;\n\n if (gfc.VBR_seek_table.bag == null) {\n gfc.VBR_seek_table.bag = new int[400];\n gfc.VBR_seek_table.size = 400;\n }\n\n // write dummy VBR tag of all 0's into bitstream\n var buffer = new_byte$22(MAXFRAMESIZE);\n\n setLameTagFrameHeader(gfp, buffer);\n var n = gfc.VBR_seek_table.TotalFrameSize;\n for (var i = 0; i < n; ++i) {\n bs.add_dummy_byte(gfp, buffer[i] & 0xff, 1);\n }\n };\n\n /**\n * Fast CRC-16 computation (uses table crc16Lookup).\n *\n * @param value\n * @param crc\n * @return\n */\n function crcUpdateLookup(value, crc) {\n var tmp = crc ^ value;\n crc = (crc >> 8) ^ crc16Lookup[tmp & 0xff];\n return crc;\n }\n\n this.updateMusicCRC = function (crc, buffer, bufferPos, size) {\n for (var i = 0; i < size; ++i)\n crc[0] = crcUpdateLookup(buffer[bufferPos + i], crc[0]);\n };\n\n /**\n * Write LAME info: mini version + info on various switches used (Jonathan\n * Dee 2001/08/31).\n *\n * @param gfp\n * global flags\n * @param musicLength\n * music length\n * @param streamBuffer\n * pointer to output buffer\n * @param streamBufferPos\n * offset into the output buffer\n * @param crc\n * computation of CRC-16 of Lame Tag so far (starting at frame\n * sync)\n * @return number of bytes written to the stream\n */\n function putLameVBR(gfp, musicLength, streamBuffer, streamBufferPos, crc) {\n var gfc = gfp.internal_flags;\n var bytesWritten = 0;\n\n /* encoder delay */\n var encDelay = gfp.encoder_delay;\n /* encoder padding */\n var encPadding = gfp.encoder_padding;\n\n /* recall: gfp.VBR_q is for example set by the switch -V */\n /* gfp.quality by -q, -h, -f, etc */\n var quality = (100 - 10 * gfp.VBR_q - gfp.quality);\n\n var version = v.getLameVeryShortVersion();\n var vbr;\n var revision = 0x00;\n var revMethod;\n // numbering different in vbr_mode vs. Lame tag\n var vbrTypeTranslator = [1, 5, 3, 2, 4, 0, 3];\n var lowpass = 0 | (((gfp.lowpassfreq / 100.0) + .5) > 255 ? 255\n : (gfp.lowpassfreq / 100.0) + .5);\n var peakSignalAmplitude = 0;\n var radioReplayGain = 0;\n var audiophileReplayGain = 0;\n var noiseShaping = gfp.internal_flags.noise_shaping;\n var stereoMode = 0;\n var nonOptimal = 0;\n var sourceFreq = 0;\n var misc = 0;\n var musicCRC = 0;\n\n // psy model type: Gpsycho or NsPsytune\n var expNPsyTune = (gfp.exp_nspsytune & 1) != 0;\n var safeJoint = (gfp.exp_nspsytune & 2) != 0;\n var noGapMore = false;\n var noGapPrevious = false;\n var noGapCount = gfp.internal_flags.nogap_total;\n var noGapCurr = gfp.internal_flags.nogap_current;\n\n // 4 bits\n var athType = gfp.ATHtype;\n var flags = 0;\n\n // vbr modes\n var abrBitrate;\n switch (gfp.VBR) {\n case vbr_abr:\n abrBitrate = gfp.VBR_mean_bitrate_kbps;\n break;\n case vbr_off:\n abrBitrate = gfp.brate;\n break;\n default:\n abrBitrate = gfp.VBR_min_bitrate_kbps;\n }\n\n // revision and vbr method\n if (gfp.VBR.ordinal() < vbrTypeTranslator.length)\n vbr = vbrTypeTranslator[gfp.VBR.ordinal()];\n else\n vbr = 0x00; // unknown\n\n revMethod = 0x10 * revision + vbr;\n\n // ReplayGain\n if (gfc.findReplayGain) {\n if (gfc.RadioGain > 0x1FE)\n gfc.RadioGain = 0x1FE;\n if (gfc.RadioGain < -0x1FE)\n gfc.RadioGain = -0x1FE;\n\n // set name code\n radioReplayGain = 0x2000;\n // set originator code to `determined automatically'\n radioReplayGain |= 0xC00;\n\n if (gfc.RadioGain >= 0) {\n // set gain adjustment\n radioReplayGain |= gfc.RadioGain;\n } else {\n // set the sign bit\n radioReplayGain |= 0x200;\n // set gain adjustment\n radioReplayGain |= -gfc.RadioGain;\n }\n }\n\n // peak sample\n if (gfc.findPeakSample)\n peakSignalAmplitude = Math\n .abs(0 | ((( gfc.PeakSample) / 32767.0) * Math.pow(2, 23) + .5));\n\n // nogap\n if (noGapCount != -1) {\n if (noGapCurr > 0)\n noGapPrevious = true;\n\n if (noGapCurr < noGapCount - 1)\n noGapMore = true;\n }\n\n // flags\n flags = athType + ((expNPsyTune ? 1 : 0) << 4)\n + ((safeJoint ? 1 : 0) << 5) + ((noGapMore ? 1 : 0) << 6)\n + ((noGapPrevious ? 1 : 0) << 7);\n\n if (quality < 0)\n quality = 0;\n\n // stereo mode field (Intensity stereo is not implemented)\n switch (gfp.mode) {\n case MONO:\n stereoMode = 0;\n break;\n case STEREO:\n stereoMode = 1;\n break;\n case DUAL_CHANNEL:\n stereoMode = 2;\n break;\n case JOINT_STEREO:\n if (gfp.force_ms)\n stereoMode = 4;\n else\n stereoMode = 3;\n break;\n case NOT_SET:\n //$FALL-THROUGH$\n default:\n stereoMode = 7;\n break;\n }\n\n if (gfp.in_samplerate <= 32000)\n sourceFreq = 0x00;\n else if (gfp.in_samplerate == 48000)\n sourceFreq = 0x02;\n else if (gfp.in_samplerate > 48000)\n sourceFreq = 0x03;\n else {\n // default is 44100Hz\n sourceFreq = 0x01;\n }\n\n // Check if the user overrided the default LAME behavior with some\n // nasty options\n if (gfp.short_blocks == ShortBlock$22.short_block_forced\n || gfp.short_blocks == ShortBlock$22.short_block_dispensed\n || ((gfp.lowpassfreq == -1) && (gfp.highpassfreq == -1)) || /* \"-k\" */\n (gfp.scale_left < gfp.scale_right)\n || (gfp.scale_left > gfp.scale_right)\n || (gfp.disable_reservoir && gfp.brate < 320) || gfp.noATH\n || gfp.ATHonly || (athType == 0) || gfp.in_samplerate <= 32000)\n nonOptimal = 1;\n\n misc = noiseShaping + (stereoMode << 2) + (nonOptimal << 5)\n + (sourceFreq << 6);\n\n musicCRC = gfc.nMusicCRC;\n\n // Write all this information into the stream\n\n createInteger(streamBuffer, streamBufferPos + bytesWritten, quality);\n bytesWritten += 4;\n\n for (var j = 0; j < 9; j++) {\n streamBuffer[streamBufferPos + bytesWritten + j] = 0xff & version .charAt(j);\n }\n bytesWritten += 9;\n\n streamBuffer[streamBufferPos + bytesWritten] = 0xff & revMethod;\n bytesWritten++;\n\n streamBuffer[streamBufferPos + bytesWritten] = 0xff & lowpass;\n bytesWritten++;\n\n createInteger(streamBuffer, streamBufferPos + bytesWritten,\n peakSignalAmplitude);\n bytesWritten += 4;\n\n createShort(streamBuffer, streamBufferPos + bytesWritten,\n radioReplayGain);\n bytesWritten += 2;\n\n createShort(streamBuffer, streamBufferPos + bytesWritten,\n audiophileReplayGain);\n bytesWritten += 2;\n\n streamBuffer[streamBufferPos + bytesWritten] = 0xff & flags;\n bytesWritten++;\n\n if (abrBitrate >= 255)\n streamBuffer[streamBufferPos + bytesWritten] = 0xFF;\n else\n streamBuffer[streamBufferPos + bytesWritten] = 0xff & abrBitrate;\n bytesWritten++;\n\n streamBuffer[streamBufferPos + bytesWritten] = 0xff & (encDelay >> 4);\n streamBuffer[streamBufferPos + bytesWritten + 1] = 0xff & ((encDelay << 4) + (encPadding >> 8));\n streamBuffer[streamBufferPos + bytesWritten + 2] = 0xff & encPadding;\n\n bytesWritten += 3;\n\n streamBuffer[streamBufferPos + bytesWritten] = 0xff & misc;\n bytesWritten++;\n\n // unused in rev0\n streamBuffer[streamBufferPos + bytesWritten++] = 0;\n\n createShort(streamBuffer, streamBufferPos + bytesWritten, gfp.preset);\n bytesWritten += 2;\n\n createInteger(streamBuffer, streamBufferPos + bytesWritten, musicLength);\n bytesWritten += 4;\n\n createShort(streamBuffer, streamBufferPos + bytesWritten, musicCRC);\n bytesWritten += 2;\n\n // Calculate tag CRC.... must be done here, since it includes previous\n // information\n\n for (var i = 0; i < bytesWritten; i++)\n crc = crcUpdateLookup(streamBuffer[streamBufferPos + i], crc);\n\n createShort(streamBuffer, streamBufferPos + bytesWritten, crc);\n bytesWritten += 2;\n\n return bytesWritten;\n }\n\n function skipId3v2(fpStream) {\n // seek to the beginning of the stream\n fpStream.seek(0);\n // read 10 bytes in case there's an ID3 version 2 header here\n var id3v2Header = new_byte$22(10);\n fpStream.readFully(id3v2Header);\n /* does the stream begin with the ID3 version 2 file identifier? */\n var id3v2TagSize;\n if (!new String(id3v2Header, \"ISO-8859-1\").startsWith(\"ID3\")) {\n /*\n * the tag size (minus the 10-byte header) is encoded into four\n * bytes where the most significant bit is clear in each byte\n */\n id3v2TagSize = (((id3v2Header[6] & 0x7f) << 21)\n | ((id3v2Header[7] & 0x7f) << 14)\n | ((id3v2Header[8] & 0x7f) << 7) | (id3v2Header[9] & 0x7f))\n + id3v2Header.length;\n } else {\n /* no ID3 version 2 tag in this stream */\n id3v2TagSize = 0;\n }\n return id3v2TagSize;\n }\n\n this.getLameTagFrame = function (gfp, buffer) {\n var gfc = gfp.internal_flags;\n\n if (!gfp.bWriteVbrTag) {\n return 0;\n }\n if (gfc.Class_ID != Lame.LAME_ID) {\n return 0;\n }\n if (gfc.VBR_seek_table.pos <= 0) {\n return 0;\n }\n if (buffer.length < gfc.VBR_seek_table.TotalFrameSize) {\n return gfc.VBR_seek_table.TotalFrameSize;\n }\n\n Arrays$22.fill(buffer, 0, gfc.VBR_seek_table.TotalFrameSize, 0);\n\n // 4 bytes frame header\n setLameTagFrameHeader(gfp, buffer);\n\n // Create TOC entries\n var toc = new_byte$22(NUMTOCENTRIES);\n\n if (gfp.free_format) {\n for (var i = 1; i < NUMTOCENTRIES; ++i)\n toc[i] = 0xff & (255 * i / 100);\n } else {\n xingSeekTable(gfc.VBR_seek_table, toc);\n }\n\n // Start writing the tag after the zero frame\n var streamIndex = gfc.sideinfo_len;\n /**\n * Note: Xing header specifies that Xing data goes in the ancillary data\n * with NO ERROR PROTECTION. If error protecton in enabled, the Xing\n * data still starts at the same offset, and now it is in sideinfo data\n * block, and thus will not decode correctly by non-Xing tag aware\n * players\n */\n if (gfp.error_protection)\n streamIndex -= 2;\n\n // Put Vbr tag\n if (gfp.VBR == VbrMode$22.vbr_off) {\n buffer[streamIndex++] = 0xff & VBRTag1.charAt(0);\n buffer[streamIndex++] = 0xff & VBRTag1.charAt(1);\n buffer[streamIndex++] = 0xff & VBRTag1.charAt(2);\n buffer[streamIndex++] = 0xff & VBRTag1.charAt(3);\n\n } else {\n buffer[streamIndex++] = 0xff & VBRTag0.charAt(0);\n buffer[streamIndex++] = 0xff & VBRTag0.charAt(1);\n buffer[streamIndex++] = 0xff & VBRTag0.charAt(2);\n buffer[streamIndex++] = 0xff & VBRTag0.charAt(3);\n }\n\n // Put header flags\n createInteger(buffer, streamIndex, FRAMES_FLAG + BYTES_FLAG + TOC_FLAG\n + VBR_SCALE_FLAG);\n streamIndex += 4;\n\n // Put Total Number of frames\n createInteger(buffer, streamIndex, gfc.VBR_seek_table.nVbrNumFrames);\n streamIndex += 4;\n\n // Put total audio stream size, including Xing/LAME Header\n var streamSize = (gfc.VBR_seek_table.nBytesWritten + gfc.VBR_seek_table.TotalFrameSize);\n createInteger(buffer, streamIndex, 0 | streamSize);\n streamIndex += 4;\n\n /* Put TOC */\n System$22.arraycopy(toc, 0, buffer, streamIndex, toc.length);\n streamIndex += toc.length;\n\n if (gfp.error_protection) {\n // (jo) error_protection: add crc16 information to header\n bs.CRC_writeheader(gfc, buffer);\n }\n\n // work out CRC so far: initially crc = 0\n var crc = 0x00;\n for (var i = 0; i < streamIndex; i++)\n crc = crcUpdateLookup(buffer[i], crc);\n // Put LAME VBR info\n streamIndex += putLameVBR(gfp, streamSize, buffer, streamIndex, crc);\n\n return gfc.VBR_seek_table.TotalFrameSize;\n };\n\n /**\n * Write final VBR tag to the file.\n *\n * @param gfp\n * global flags\n * @param stream\n * stream to add the VBR tag to\n * @return 0 (OK), -1 else\n * @throws IOException\n * I/O error\n */\n this.putVbrTag = function (gfp, stream) {\n var gfc = gfp.internal_flags;\n\n if (gfc.VBR_seek_table.pos <= 0)\n return -1;\n\n // Seek to end of file\n stream.seek(stream.length());\n\n // Get file size, abort if file has zero length.\n if (stream.length() == 0)\n return -1;\n\n // The VBR tag may NOT be located at the beginning of the stream. If an\n // ID3 version 2 tag was added, then it must be skipped to write the VBR\n // tag data.\n var id3v2TagSize = skipId3v2(stream);\n\n // Seek to the beginning of the stream\n stream.seek(id3v2TagSize);\n\n var buffer = new_byte$22(MAXFRAMESIZE);\n var bytes = getLameTagFrame(gfp, buffer);\n if (bytes > buffer.length) {\n return -1;\n }\n\n if (bytes < 1) {\n return 0;\n }\n\n // Put it all to disk again\n stream.write(buffer, 0, bytes);\n // success\n return 0;\n };\n\n}\n\nvar VBRTag_1 = VBRTag;\n\nvar new_byte = common.new_byte;\nvar assert = common.assert;\n\nLame = Lame_1;\nPresets = Presets_1;\nGainAnalysis = GainAnalysis_1;\nQuantizePVT = QuantizePVT_1;\nQuantize = Quantize_1;\nTakehiro = Takehiro_1;\nReservoir = Reservoir_1;\nMPEGMode = MPEGMode_1;\nBitStream = BitStream_1;\n\n\n\n\nfunction GetAudio() {\n var parse;\n var mpg;\n\n this.setModules = function (parse2, mpg2) {\n parse = parse2;\n mpg = mpg2;\n };\n}\n\n\nfunction Parse() {\n var ver;\n var id3;\n var pre;\n\n this.setModules = function (ver2, id32, pre2) {\n ver = ver2;\n id3 = id32;\n pre = pre2;\n };\n}\n\nfunction MPGLib() {\n}\n\nfunction ID3Tag() {\n var bits;\n var ver;\n\n this.setModules = function (_bits, _ver) {\n bits = _bits;\n ver = _ver;\n };\n}\n\nfunction Mp3Encoder(channels, samplerate, kbps) {\n if (arguments.length != 3) {\n console.error('WARN: Mp3Encoder(channels, samplerate, kbps) not specified');\n channels = 1;\n samplerate = 44100;\n kbps = 128;\n }\n var lame = new Lame();\n var gaud = new GetAudio();\n var ga = new GainAnalysis();\n var bs = new BitStream();\n var p = new Presets();\n var qupvt = new QuantizePVT();\n var qu = new Quantize();\n var vbr = new VBRTag_1();\n var ver = new Version_1();\n var id3 = new ID3Tag();\n var rv = new Reservoir();\n var tak = new Takehiro();\n var parse = new Parse();\n var mpg = new MPGLib();\n\n lame.setModules(ga, bs, p, qupvt, qu, vbr, ver, id3, mpg);\n bs.setModules(ga, mpg, ver, vbr);\n id3.setModules(bs, ver);\n p.setModules(lame);\n qu.setModules(bs, rv, qupvt, tak);\n qupvt.setModules(tak, rv, lame.enc.psy);\n rv.setModules(bs);\n tak.setModules(qupvt);\n vbr.setModules(lame, bs, ver);\n gaud.setModules(parse, mpg);\n parse.setModules(ver, id3, p);\n\n var gfp = lame.lame_init();\n\n gfp.num_channels = channels;\n gfp.in_samplerate = samplerate;\n gfp.brate = kbps;\n gfp.mode = MPEGMode.STEREO;\n gfp.quality = 3;\n gfp.bWriteVbrTag = false;\n gfp.disable_reservoir = true;\n gfp.write_id3tag_automatic = false;\n\n var retcode = lame.lame_init_params(gfp);\n assert(0 == retcode);\n var maxSamples = 1152;\n var mp3buf_size = 0 | (1.25 * maxSamples + 7200);\n var mp3buf = new_byte(mp3buf_size);\n\n this.encodeBuffer = function (left, right) {\n if (channels == 1) {\n right = left;\n }\n assert(left.length == right.length);\n if (left.length > maxSamples) {\n maxSamples = left.length;\n mp3buf_size = 0 | (1.25 * maxSamples + 7200);\n mp3buf = new_byte(mp3buf_size);\n }\n\n var _sz = lame.lame_encode_buffer(gfp, left, right, left.length, mp3buf, 0, mp3buf_size);\n return new Int8Array(mp3buf.subarray(0, _sz));\n };\n\n this.flush = function () {\n var _sz = lame.lame_encode_flush(gfp, mp3buf, 0, mp3buf_size);\n return new Int8Array(mp3buf.subarray(0, _sz));\n };\n}\n\nfunction WavHeader() {\n this.dataOffset = 0;\n this.dataLen = 0;\n this.channels = 0;\n this.sampleRate = 0;\n}\n\nfunction fourccToInt(fourcc) {\n return fourcc.charCodeAt(0) << 24 | fourcc.charCodeAt(1) << 16 | fourcc.charCodeAt(2) << 8 | fourcc.charCodeAt(3);\n}\n\nWavHeader.RIFF = fourccToInt(\"RIFF\");\nWavHeader.WAVE = fourccToInt(\"WAVE\");\nWavHeader.fmt_ = fourccToInt(\"fmt \");\nWavHeader.data = fourccToInt(\"data\");\n\nWavHeader.readHeader = function (dataView) {\n var w = new WavHeader();\n\n var header = dataView.getUint32(0, false);\n if (WavHeader.RIFF != header) {\n return;\n }\n var fileLen = dataView.getUint32(4, true);\n if (WavHeader.WAVE != dataView.getUint32(8, false)) {\n return;\n }\n if (WavHeader.fmt_ != dataView.getUint32(12, false)) {\n return;\n }\n var fmtLen = dataView.getUint32(16, true);\n var pos = 16 + 4;\n switch (fmtLen) {\n case 16:\n case 18:\n w.channels = dataView.getUint16(pos + 2, true);\n w.sampleRate = dataView.getUint32(pos + 4, true);\n break;\n default:\n throw 'extended fmt chunk not implemented';\n }\n pos += fmtLen;\n var data = WavHeader.data;\n var len = 0;\n while (data != header) {\n header = dataView.getUint32(pos, false);\n len = dataView.getUint32(pos + 4, true);\n if (data == header) {\n break;\n }\n pos += (len + 8);\n }\n w.dataLen = len;\n w.dataOffset = pos + 8;\n return w;\n};\n\nvar Mp3Encoder_1 = Mp3Encoder;\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar Encoder = function () {\n function Encoder(config) {\n classCallCheck(this, Encoder);\n\n this.config = {\n sampleRate: 44100,\n bitRate: 128\n };\n\n Object.assign(this.config, config);\n\n this.mp3Encoder = new Mp3Encoder_1(1, this.config.sampleRate, this.config.bitRate);\n\n // Audio is processed by frames of 1152 samples per audio channel\n // http://lame.sourceforge.net/tech-FAQ.txt\n this.maxSamples = 1152;\n\n this.samplesMono = null;\n this.clearBuffer();\n }\n\n /**\n * Clear active buffer\n */\n\n\n createClass(Encoder, [{\n key: 'clearBuffer',\n value: function clearBuffer() {\n this.dataBuffer = [];\n }\n\n /**\n * Append new audio buffer to current active buffer\n * @param {Buffer} buffer\n */\n\n }, {\n key: 'appendToBuffer',\n value: function appendToBuffer(buffer) {\n this.dataBuffer.push(new Int8Array(buffer));\n }\n\n /**\n * Float current data to 16 bits PCM\n * @param {Float32Array} input\n * @param {Int16Array} output\n */\n\n }, {\n key: 'floatTo16BitPCM',\n value: function floatTo16BitPCM(input, output) {\n for (var i = 0; i < input.length; i++) {\n var s = Math.max(-1, Math.min(1, input[i]));\n output[i] = s < 0 ? s * 0x8000 : s * 0x7FFF;\n }\n }\n\n /**\n * Convert buffer to proper format\n * @param {Array} arrayBuffer\n */\n\n }, {\n key: 'convertBuffer',\n value: function convertBuffer(arrayBuffer) {\n var data = new Float32Array(arrayBuffer);\n var out = new Int16Array(arrayBuffer.length);\n this.floatTo16BitPCM(data, out);\n\n return out;\n }\n\n /**\n * Encode and append current buffer to dataBuffer\n * @param {Array} arrayBuffer\n */\n\n }, {\n key: 'encode',\n value: function encode(arrayBuffer) {\n this.samplesMono = this.convertBuffer(arrayBuffer);\n var remaining = this.samplesMono.length;\n\n for (var i = 0; remaining >= 0; i += this.maxSamples) {\n var left = this.samplesMono.subarray(i, i + this.maxSamples);\n var mp3buffer = this.mp3Encoder.encodeBuffer(left);\n this.appendToBuffer(mp3buffer);\n remaining -= this.maxSamples;\n }\n }\n\n /**\n * Return full dataBuffer\n */\n\n }, {\n key: 'finish',\n value: function finish() {\n this.appendToBuffer(this.mp3Encoder.flush());\n\n return this.dataBuffer;\n }\n }]);\n return Encoder;\n}();\n\nvar MicRecorder = function () {\n function MicRecorder(config) {\n classCallCheck(this, MicRecorder);\n\n this.config = {\n // 128 or 160 kbit/s – mid-range bitrate quality\n bitRate: 128,\n\n // There is a known issue with some macOS machines, where the recording\n // will sometimes have a loud 'pop' or 'pop-click' sound. This flag\n // prevents getting audio from the microphone a few milliseconds after\n // the begining of the recording. It also helps to remove the mouse\n // \"click\" sound from the output mp3 file.\n startRecordingAt: 300,\n deviceId: null\n };\n\n this.activeStream = null;\n this.context = null;\n this.microphone = null;\n this.processor = null;\n this.startTime = 0;\n\n Object.assign(this.config, config);\n }\n\n /**\n * Starts to listen for the microphone sound\n * @param {MediaStream} stream\n */\n\n\n createClass(MicRecorder, [{\n key: 'addMicrophoneListener',\n value: function addMicrophoneListener(stream) {\n var _this = this;\n\n this.activeStream = stream;\n\n // This prevents the weird noise once you start listening to the microphone\n this.timerToStart = setTimeout(function () {\n delete _this.timerToStart;\n }, this.config.startRecordingAt);\n\n // Set up Web Audio API to process data from the media stream (microphone).\n this.microphone = this.context.createMediaStreamSource(stream);\n\n // Settings a bufferSize of 0 instructs the browser to choose the best bufferSize\n this.processor = this.context.createScriptProcessor(0, 1, 1);\n\n // Add all buffers from LAME into an array.\n this.processor.onaudioprocess = function (event) {\n if (_this.timerToStart) {\n return;\n }\n\n // Send microphone data to LAME for MP3 encoding while recording.\n _this.lameEncoder.encode(event.inputBuffer.getChannelData(0));\n };\n\n // Begin retrieving microphone data.\n this.microphone.connect(this.processor);\n this.processor.connect(this.context.destination);\n }\n }, {\n key: 'stop',\n\n\n /**\n * Disconnect microphone, processor and remove activeStream\n */\n value: function stop() {\n if (this.processor && this.microphone) {\n // Clean up the Web Audio API resources.\n this.microphone.disconnect();\n this.processor.disconnect();\n\n // If all references using this.context are destroyed, context is closed\n // automatically. DOMException is fired when trying to close again\n if (this.context && this.context.state !== 'closed') {\n this.context.close();\n }\n\n this.processor.onaudioprocess = null;\n\n // Stop all audio tracks. Also, removes recording icon from chrome tab\n this.activeStream.getAudioTracks().forEach(function (track) {\n return track.stop();\n });\n }\n\n return this;\n }\n }, {\n key: 'start',\n\n\n /**\n * Requests access to the microphone and start recording\n * @return Promise\n */\n value: function start() {\n var _this2 = this;\n\n var AudioContext = window.AudioContext || window.webkitAudioContext;\n this.context = new AudioContext();\n this.config.sampleRate = this.context.sampleRate;\n this.lameEncoder = new Encoder(this.config);\n\n var audio = this.config.deviceId ? { deviceId: { exact: this.config.deviceId } } : true;\n\n return new Promise(function (resolve, reject) {\n navigator.mediaDevices.getUserMedia({ audio: audio }).then(function (stream) {\n _this2.addMicrophoneListener(stream);\n resolve(stream);\n }).catch(function (err) {\n reject(err);\n });\n });\n }\n }, {\n key: 'getMp3',\n\n\n /**\n * Return Mp3 Buffer and Blob with type mp3\n * @return {Promise}\n */\n value: function getMp3() {\n var _this3 = this;\n\n var finalBuffer = this.lameEncoder.finish();\n\n return new Promise(function (resolve, reject) {\n if (finalBuffer.length === 0) {\n reject(new Error('No buffer to send'));\n } else {\n resolve([finalBuffer, new Blob(finalBuffer, { type: 'audio/mp3' })]);\n _this3.lameEncoder.clearBuffer();\n }\n });\n }\n }]);\n return MicRecorder;\n}();\n\nreturn MicRecorder;\n\n})));\n//# sourceMappingURL=index.js.map\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-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\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-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\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-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\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (Array.isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return Object.keys(obj).map(function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (Array.isArray(obj[k])) {\n return obj[k].map(function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","/**\n * Copyright (c) 2015-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 */\n\n'use strict';\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n // Added the nonzero y check to make Flow happy, but it is redundant\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n}\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n */\nfunction shallowEqual(objA, objB) {\n if (is(objA, objB)) {\n return true;\n }\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n // Test for A's keys different from B.\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = {\n shouldComponentUpdate: function(nextProps, nextState) {\n return (\n !shallowEqual(this.props, nextProps) ||\n !shallowEqual(this.state, nextState)\n );\n }\n};\n","var checkboardCache = {};\n\nexport var render = function render(c1, c2, size, serverCanvas) {\n if (typeof document === 'undefined' && !serverCanvas) {\n return null;\n }\n var canvas = serverCanvas ? new serverCanvas() : document.createElement('canvas');\n canvas.width = size * 2;\n canvas.height = size * 2;\n var ctx = canvas.getContext('2d');\n if (!ctx) {\n return null;\n } // If no context can be found, return early.\n ctx.fillStyle = c1;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n ctx.fillStyle = c2;\n ctx.fillRect(0, 0, size, size);\n ctx.translate(size, size);\n ctx.fillRect(0, 0, size, size);\n return canvas.toDataURL();\n};\n\nexport var get = function get(c1, c2, size, serverCanvas) {\n var key = c1 + '-' + c2 + '-' + size + (serverCanvas ? '-server' : '');\n\n if (checkboardCache[key]) {\n return checkboardCache[key];\n }\n\n var checkboard = render(c1, c2, size, serverCanvas);\n checkboardCache[key] = checkboard;\n return checkboard;\n};","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport React, { isValidElement } from 'react';\nimport reactCSS from 'reactcss';\nimport * as checkboard from '../../helpers/checkboard';\n\nexport var Checkboard = function Checkboard(_ref) {\n var white = _ref.white,\n grey = _ref.grey,\n size = _ref.size,\n renderers = _ref.renderers,\n borderRadius = _ref.borderRadius,\n boxShadow = _ref.boxShadow,\n children = _ref.children;\n\n var styles = reactCSS({\n 'default': {\n grid: {\n borderRadius: borderRadius,\n boxShadow: boxShadow,\n absolute: '0px 0px 0px 0px',\n background: 'url(' + checkboard.get(white, grey, size, renderers.canvas) + ') center left'\n }\n }\n });\n return isValidElement(children) ? React.cloneElement(children, _extends({}, children.props, { style: _extends({}, children.props.style, styles.grid) })) : React.createElement('div', { style: styles.grid });\n};\n\nCheckboard.defaultProps = {\n size: 8,\n white: 'transparent',\n grey: 'rgba(0,0,0,.08)',\n renderers: {}\n};\n\nexport default Checkboard;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React, { Component, PureComponent } from 'react';\nimport reactCSS from 'reactcss';\nimport * as alpha from '../../helpers/alpha';\n\nimport Checkboard from './Checkboard';\n\nexport var Alpha = function (_ref) {\n _inherits(Alpha, _ref);\n\n function Alpha() {\n var _ref2;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Alpha);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref2 = Alpha.__proto__ || Object.getPrototypeOf(Alpha)).call.apply(_ref2, [this].concat(args))), _this), _this.handleChange = function (e) {\n var change = alpha.calculateChange(e, _this.props.hsl, _this.props.direction, _this.props.a, _this.container);\n change && typeof _this.props.onChange === 'function' && _this.props.onChange(change, e);\n }, _this.handleMouseDown = function (e) {\n _this.handleChange(e);\n window.addEventListener('mousemove', _this.handleChange);\n window.addEventListener('mouseup', _this.handleMouseUp);\n }, _this.handleMouseUp = function () {\n _this.unbindEventListeners();\n }, _this.unbindEventListeners = function () {\n window.removeEventListener('mousemove', _this.handleChange);\n window.removeEventListener('mouseup', _this.handleMouseUp);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Alpha, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.unbindEventListeners();\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var rgb = this.props.rgb;\n var styles = reactCSS({\n 'default': {\n alpha: {\n absolute: '0px 0px 0px 0px',\n borderRadius: this.props.radius\n },\n checkboard: {\n absolute: '0px 0px 0px 0px',\n overflow: 'hidden',\n borderRadius: this.props.radius\n },\n gradient: {\n absolute: '0px 0px 0px 0px',\n background: 'linear-gradient(to right, rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 0) 0%,\\n rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 1) 100%)',\n boxShadow: this.props.shadow,\n borderRadius: this.props.radius\n },\n container: {\n position: 'relative',\n height: '100%',\n margin: '0 3px'\n },\n pointer: {\n position: 'absolute',\n left: rgb.a * 100 + '%'\n },\n slider: {\n width: '4px',\n borderRadius: '1px',\n height: '8px',\n boxShadow: '0 0 2px rgba(0, 0, 0, .6)',\n background: '#fff',\n marginTop: '1px',\n transform: 'translateX(-2px)'\n }\n },\n 'vertical': {\n gradient: {\n background: 'linear-gradient(to bottom, rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 0) 0%,\\n rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 1) 100%)'\n },\n pointer: {\n left: 0,\n top: rgb.a * 100 + '%'\n }\n },\n 'overwrite': _extends({}, this.props.style)\n }, {\n vertical: this.props.direction === 'vertical',\n overwrite: true\n });\n\n return React.createElement(\n 'div',\n { style: styles.alpha },\n React.createElement(\n 'div',\n { style: styles.checkboard },\n React.createElement(Checkboard, { renderers: this.props.renderers })\n ),\n React.createElement('div', { style: styles.gradient }),\n React.createElement(\n 'div',\n {\n style: styles.container,\n ref: function ref(container) {\n return _this2.container = container;\n },\n onMouseDown: this.handleMouseDown,\n onTouchMove: this.handleChange,\n onTouchStart: this.handleChange\n },\n React.createElement(\n 'div',\n { style: styles.pointer },\n this.props.pointer ? React.createElement(this.props.pointer, this.props) : React.createElement('div', { style: styles.slider })\n )\n )\n );\n }\n }]);\n\n return Alpha;\n}(PureComponent || Component);\n\nexport default Alpha;","export var calculateChange = function calculateChange(e, hsl, direction, initialA, container) {\n var containerWidth = container.clientWidth;\n var containerHeight = container.clientHeight;\n var x = typeof e.pageX === 'number' ? e.pageX : e.touches[0].pageX;\n var y = typeof e.pageY === 'number' ? e.pageY : e.touches[0].pageY;\n var left = x - (container.getBoundingClientRect().left + window.pageXOffset);\n var top = y - (container.getBoundingClientRect().top + window.pageYOffset);\n\n if (direction === 'vertical') {\n var a = void 0;\n if (top < 0) {\n a = 0;\n } else if (top > containerHeight) {\n a = 1;\n } else {\n a = Math.round(top * 100 / containerHeight) / 100;\n }\n\n if (hsl.a !== a) {\n return {\n h: hsl.h,\n s: hsl.s,\n l: hsl.l,\n a: a,\n source: 'rgb'\n };\n }\n } else {\n var _a = void 0;\n if (left < 0) {\n _a = 0;\n } else if (left > containerWidth) {\n _a = 1;\n } else {\n _a = Math.round(left * 100 / containerWidth) / 100;\n }\n\n if (initialA !== _a) {\n return {\n h: hsl.h,\n s: hsl.s,\n l: hsl.l,\n a: _a,\n source: 'rgb'\n };\n }\n }\n return null;\n};","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React, { Component, PureComponent } from 'react';\nimport reactCSS from 'reactcss';\n\nvar DEFAULT_ARROW_OFFSET = 1;\n\nvar UP_KEY_CODE = 38;\nvar DOWN_KEY_CODE = 40;\nvar VALID_KEY_CODES = [UP_KEY_CODE, DOWN_KEY_CODE];\nvar isValidKeyCode = function isValidKeyCode(keyCode) {\n return VALID_KEY_CODES.indexOf(keyCode) > -1;\n};\nvar getNumberValue = function getNumberValue(value) {\n return Number(String(value).replace(/%/g, ''));\n};\n\nvar idCounter = 1;\n\nexport var EditableInput = function (_ref) {\n _inherits(EditableInput, _ref);\n\n function EditableInput(props) {\n _classCallCheck(this, EditableInput);\n\n var _this = _possibleConstructorReturn(this, (EditableInput.__proto__ || Object.getPrototypeOf(EditableInput)).call(this));\n\n _this.handleBlur = function () {\n if (_this.state.blurValue) {\n _this.setState({ value: _this.state.blurValue, blurValue: null });\n }\n };\n\n _this.handleChange = function (e) {\n _this.setUpdatedValue(e.target.value, e);\n };\n\n _this.handleKeyDown = function (e) {\n // In case `e.target.value` is a percentage remove the `%` character\n // and update accordingly with a percentage\n // https://github.com/casesandberg/react-color/issues/383\n var value = getNumberValue(e.target.value);\n if (!isNaN(value) && isValidKeyCode(e.keyCode)) {\n var offset = _this.getArrowOffset();\n var updatedValue = e.keyCode === UP_KEY_CODE ? value + offset : value - offset;\n\n _this.setUpdatedValue(updatedValue, e);\n }\n };\n\n _this.handleDrag = function (e) {\n if (_this.props.dragLabel) {\n var newValue = Math.round(_this.props.value + e.movementX);\n if (newValue >= 0 && newValue <= _this.props.dragMax) {\n _this.props.onChange && _this.props.onChange(_this.getValueObjectWithLabel(newValue), e);\n }\n }\n };\n\n _this.handleMouseDown = function (e) {\n if (_this.props.dragLabel) {\n e.preventDefault();\n _this.handleDrag(e);\n window.addEventListener('mousemove', _this.handleDrag);\n window.addEventListener('mouseup', _this.handleMouseUp);\n }\n };\n\n _this.handleMouseUp = function () {\n _this.unbindEventListeners();\n };\n\n _this.unbindEventListeners = function () {\n window.removeEventListener('mousemove', _this.handleDrag);\n window.removeEventListener('mouseup', _this.handleMouseUp);\n };\n\n _this.state = {\n value: String(props.value).toUpperCase(),\n blurValue: String(props.value).toUpperCase()\n };\n\n _this.inputId = 'rc-editable-input-' + idCounter++;\n return _this;\n }\n\n _createClass(EditableInput, [{\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps, prevState) {\n if (this.props.value !== this.state.value && (prevProps.value !== this.props.value || prevState.value !== this.state.value)) {\n if (this.input === document.activeElement) {\n this.setState({ blurValue: String(this.props.value).toUpperCase() });\n } else {\n this.setState({ value: String(this.props.value).toUpperCase(), blurValue: !this.state.blurValue && String(this.props.value).toUpperCase() });\n }\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.unbindEventListeners();\n }\n }, {\n key: 'getValueObjectWithLabel',\n value: function getValueObjectWithLabel(value) {\n return _defineProperty({}, this.props.label, value);\n }\n }, {\n key: 'getArrowOffset',\n value: function getArrowOffset() {\n return this.props.arrowOffset || DEFAULT_ARROW_OFFSET;\n }\n }, {\n key: 'setUpdatedValue',\n value: function setUpdatedValue(value, e) {\n var onChangeValue = this.props.label ? this.getValueObjectWithLabel(value) : value;\n this.props.onChange && this.props.onChange(onChangeValue, e);\n\n this.setState({ value: value });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var styles = reactCSS({\n 'default': {\n wrap: {\n position: 'relative'\n }\n },\n 'user-override': {\n wrap: this.props.style && this.props.style.wrap ? this.props.style.wrap : {},\n input: this.props.style && this.props.style.input ? this.props.style.input : {},\n label: this.props.style && this.props.style.label ? this.props.style.label : {}\n },\n 'dragLabel-true': {\n label: {\n cursor: 'ew-resize'\n }\n }\n }, {\n 'user-override': true\n }, this.props);\n\n return React.createElement(\n 'div',\n { style: styles.wrap },\n React.createElement('input', {\n id: this.inputId,\n style: styles.input,\n ref: function ref(input) {\n return _this2.input = input;\n },\n value: this.state.value,\n onKeyDown: this.handleKeyDown,\n onChange: this.handleChange,\n onBlur: this.handleBlur,\n placeholder: this.props.placeholder,\n spellCheck: 'false'\n }),\n this.props.label && !this.props.hideLabel ? React.createElement(\n 'label',\n {\n htmlFor: this.inputId,\n style: styles.label,\n onMouseDown: this.handleMouseDown\n },\n this.props.label\n ) : null\n );\n }\n }]);\n\n return EditableInput;\n}(PureComponent || Component);\n\nexport default EditableInput;","export var calculateChange = function calculateChange(e, direction, hsl, container) {\n var containerWidth = container.clientWidth;\n var containerHeight = container.clientHeight;\n var x = typeof e.pageX === 'number' ? e.pageX : e.touches[0].pageX;\n var y = typeof e.pageY === 'number' ? e.pageY : e.touches[0].pageY;\n var left = x - (container.getBoundingClientRect().left + window.pageXOffset);\n var top = y - (container.getBoundingClientRect().top + window.pageYOffset);\n\n if (direction === 'vertical') {\n var h = void 0;\n if (top < 0) {\n h = 359;\n } else if (top > containerHeight) {\n h = 0;\n } else {\n var percent = -(top * 100 / containerHeight) + 100;\n h = 360 * percent / 100;\n }\n\n if (hsl.h !== h) {\n return {\n h: h,\n s: hsl.s,\n l: hsl.l,\n a: hsl.a,\n source: 'hsl'\n };\n }\n } else {\n var _h = void 0;\n if (left < 0) {\n _h = 0;\n } else if (left > containerWidth) {\n _h = 359;\n } else {\n var _percent = left * 100 / containerWidth;\n _h = 360 * _percent / 100;\n }\n\n if (hsl.h !== _h) {\n return {\n h: _h,\n s: hsl.s,\n l: hsl.l,\n a: hsl.a,\n source: 'hsl'\n };\n }\n }\n return null;\n};","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React, { Component, PureComponent } from 'react';\nimport reactCSS from 'reactcss';\nimport * as hue from '../../helpers/hue';\n\nexport var Hue = function (_ref) {\n _inherits(Hue, _ref);\n\n function Hue() {\n var _ref2;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Hue);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref2 = Hue.__proto__ || Object.getPrototypeOf(Hue)).call.apply(_ref2, [this].concat(args))), _this), _this.handleChange = function (e) {\n var change = hue.calculateChange(e, _this.props.direction, _this.props.hsl, _this.container);\n change && typeof _this.props.onChange === 'function' && _this.props.onChange(change, e);\n }, _this.handleMouseDown = function (e) {\n _this.handleChange(e);\n window.addEventListener('mousemove', _this.handleChange);\n window.addEventListener('mouseup', _this.handleMouseUp);\n }, _this.handleMouseUp = function () {\n _this.unbindEventListeners();\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Hue, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.unbindEventListeners();\n }\n }, {\n key: 'unbindEventListeners',\n value: function unbindEventListeners() {\n window.removeEventListener('mousemove', this.handleChange);\n window.removeEventListener('mouseup', this.handleMouseUp);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props$direction = this.props.direction,\n direction = _props$direction === undefined ? 'horizontal' : _props$direction;\n\n\n var styles = reactCSS({\n 'default': {\n hue: {\n absolute: '0px 0px 0px 0px',\n borderRadius: this.props.radius,\n boxShadow: this.props.shadow\n },\n container: {\n padding: '0 2px',\n position: 'relative',\n height: '100%',\n borderRadius: this.props.radius\n },\n pointer: {\n position: 'absolute',\n left: this.props.hsl.h * 100 / 360 + '%'\n },\n slider: {\n marginTop: '1px',\n width: '4px',\n borderRadius: '1px',\n height: '8px',\n boxShadow: '0 0 2px rgba(0, 0, 0, .6)',\n background: '#fff',\n transform: 'translateX(-2px)'\n }\n },\n 'vertical': {\n pointer: {\n left: '0px',\n top: -(this.props.hsl.h * 100 / 360) + 100 + '%'\n }\n }\n }, { vertical: direction === 'vertical' });\n\n return React.createElement(\n 'div',\n { style: styles.hue },\n React.createElement(\n 'div',\n {\n className: 'hue-' + direction,\n style: styles.container,\n ref: function ref(container) {\n return _this2.container = container;\n },\n onMouseDown: this.handleMouseDown,\n onTouchMove: this.handleChange,\n onTouchStart: this.handleChange\n },\n React.createElement(\n 'style',\n null,\n '\\n .hue-horizontal {\\n background: linear-gradient(to right, #f00 0%, #ff0 17%, #0f0\\n 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\\n background: -webkit-linear-gradient(to right, #f00 0%, #ff0\\n 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\\n }\\n\\n .hue-vertical {\\n background: linear-gradient(to top, #f00 0%, #ff0 17%, #0f0 33%,\\n #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\\n background: -webkit-linear-gradient(to top, #f00 0%, #ff0 17%,\\n #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);\\n }\\n '\n ),\n React.createElement(\n 'div',\n { style: styles.pointer },\n this.props.pointer ? React.createElement(this.props.pointer, this.props) : React.createElement('div', { style: styles.slider })\n )\n )\n );\n }\n }]);\n\n return Hue;\n}(PureComponent || Component);\n\nexport default Hue;","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignMergeValue;\n","import root from './_root.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nexport default cloneBuffer;\n","import Uint8Array from './_Uint8Array.js';\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nexport default cloneArrayBuffer;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nexport default cloneTypedArray;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nexport default copyArray;\n","import isObject from './isObject.js';\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nexport default baseCreate;\n","import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nexport default initCloneObject;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nexport default safeGet;\n","import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nexport default copyObject;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default nativeKeysIn;\n","import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeysIn;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nexport default toPlainObject;\n","import assignMergeValue from './_assignMergeValue.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\nimport copyArray from './_copyArray.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport isBuffer from './isBuffer.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isPlainObject from './isPlainObject.js';\nimport isTypedArray from './isTypedArray.js';\nimport safeGet from './_safeGet.js';\nimport toPlainObject from './toPlainObject.js';\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nexport default baseMergeDeep;\n","import Stack from './_Stack.js';\nimport assignMergeValue from './_assignMergeValue.js';\nimport baseFor from './_baseFor.js';\nimport baseMergeDeep from './_baseMergeDeep.js';\nimport isObject from './isObject.js';\nimport keysIn from './keysIn.js';\nimport safeGet from './_safeGet.js';\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nexport default baseMerge;\n","import baseMerge from './_baseMerge.js';\nimport createAssigner from './_createAssigner.js';\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nexport default merge;\n","import baseRest from './_baseRest.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nexport default createAssigner;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport merge from 'lodash-es/merge';\n\nexport var Raised = function Raised(_ref) {\n var zDepth = _ref.zDepth,\n radius = _ref.radius,\n background = _ref.background,\n children = _ref.children,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles;\n\n var styles = reactCSS(merge({\n 'default': {\n wrap: {\n position: 'relative',\n display: 'inline-block'\n },\n content: {\n position: 'relative'\n },\n bg: {\n absolute: '0px 0px 0px 0px',\n boxShadow: '0 ' + zDepth + 'px ' + zDepth * 4 + 'px rgba(0,0,0,.24)',\n borderRadius: radius,\n background: background\n }\n },\n 'zDepth-0': {\n bg: {\n boxShadow: 'none'\n }\n },\n\n 'zDepth-1': {\n bg: {\n boxShadow: '0 2px 10px rgba(0,0,0,.12), 0 2px 5px rgba(0,0,0,.16)'\n }\n },\n 'zDepth-2': {\n bg: {\n boxShadow: '0 6px 20px rgba(0,0,0,.19), 0 8px 17px rgba(0,0,0,.2)'\n }\n },\n 'zDepth-3': {\n bg: {\n boxShadow: '0 17px 50px rgba(0,0,0,.19), 0 12px 15px rgba(0,0,0,.24)'\n }\n },\n 'zDepth-4': {\n bg: {\n boxShadow: '0 25px 55px rgba(0,0,0,.21), 0 16px 28px rgba(0,0,0,.22)'\n }\n },\n 'zDepth-5': {\n bg: {\n boxShadow: '0 40px 77px rgba(0,0,0,.22), 0 27px 24px rgba(0,0,0,.2)'\n }\n },\n 'square': {\n bg: {\n borderRadius: '0'\n }\n },\n 'circle': {\n bg: {\n borderRadius: '50%'\n }\n }\n }, passedStyles), { 'zDepth-1': zDepth === 1 });\n\n return React.createElement(\n 'div',\n { style: styles.wrap },\n React.createElement('div', { style: styles.bg }),\n React.createElement(\n 'div',\n { style: styles.content },\n children\n )\n );\n};\n\nRaised.propTypes = {\n background: PropTypes.string,\n zDepth: PropTypes.oneOf([0, 1, 2, 3, 4, 5]),\n radius: PropTypes.number,\n styles: PropTypes.object\n};\n\nRaised.defaultProps = {\n background: '#fff',\n zDepth: 1,\n radius: 2,\n styles: {}\n};\n\nexport default Raised;","import root from './_root.js';\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nexport default now;\n","import isObject from './isObject.js';\nimport now from './now.js';\nimport toNumber from './toNumber.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nexport default debounce;\n","import debounce from './debounce.js';\nimport isObject from './isObject.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nexport default throttle;\n","export var calculateChange = function calculateChange(e, hsl, container) {\n var _container$getBoundin = container.getBoundingClientRect(),\n containerWidth = _container$getBoundin.width,\n containerHeight = _container$getBoundin.height;\n\n var x = typeof e.pageX === 'number' ? e.pageX : e.touches[0].pageX;\n var y = typeof e.pageY === 'number' ? e.pageY : e.touches[0].pageY;\n var left = x - (container.getBoundingClientRect().left + window.pageXOffset);\n var top = y - (container.getBoundingClientRect().top + window.pageYOffset);\n\n if (left < 0) {\n left = 0;\n } else if (left > containerWidth) {\n left = containerWidth;\n }\n\n if (top < 0) {\n top = 0;\n } else if (top > containerHeight) {\n top = containerHeight;\n }\n\n var saturation = left / containerWidth;\n var bright = 1 - top / containerHeight;\n\n return {\n h: hsl.h,\n s: saturation,\n v: bright,\n a: hsl.a,\n source: 'hsv'\n };\n};","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React, { Component, PureComponent } from 'react';\nimport reactCSS from 'reactcss';\nimport throttle from 'lodash-es/throttle';\nimport * as saturation from '../../helpers/saturation';\n\nexport var Saturation = function (_ref) {\n _inherits(Saturation, _ref);\n\n function Saturation(props) {\n _classCallCheck(this, Saturation);\n\n var _this = _possibleConstructorReturn(this, (Saturation.__proto__ || Object.getPrototypeOf(Saturation)).call(this, props));\n\n _this.handleChange = function (e) {\n typeof _this.props.onChange === 'function' && _this.throttle(_this.props.onChange, saturation.calculateChange(e, _this.props.hsl, _this.container), e);\n };\n\n _this.handleMouseDown = function (e) {\n _this.handleChange(e);\n var renderWindow = _this.getContainerRenderWindow();\n renderWindow.addEventListener('mousemove', _this.handleChange);\n renderWindow.addEventListener('mouseup', _this.handleMouseUp);\n };\n\n _this.handleMouseUp = function () {\n _this.unbindEventListeners();\n };\n\n _this.throttle = throttle(function (fn, data, e) {\n fn(data, e);\n }, 50);\n return _this;\n }\n\n _createClass(Saturation, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.throttle.cancel();\n this.unbindEventListeners();\n }\n }, {\n key: 'getContainerRenderWindow',\n value: function getContainerRenderWindow() {\n var container = this.container;\n\n var renderWindow = window;\n while (!renderWindow.document.contains(container) && renderWindow.parent !== renderWindow) {\n renderWindow = renderWindow.parent;\n }\n return renderWindow;\n }\n }, {\n key: 'unbindEventListeners',\n value: function unbindEventListeners() {\n var renderWindow = this.getContainerRenderWindow();\n renderWindow.removeEventListener('mousemove', this.handleChange);\n renderWindow.removeEventListener('mouseup', this.handleMouseUp);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _ref2 = this.props.style || {},\n color = _ref2.color,\n white = _ref2.white,\n black = _ref2.black,\n pointer = _ref2.pointer,\n circle = _ref2.circle;\n\n var styles = reactCSS({\n 'default': {\n color: {\n absolute: '0px 0px 0px 0px',\n background: 'hsl(' + this.props.hsl.h + ',100%, 50%)',\n borderRadius: this.props.radius\n },\n white: {\n absolute: '0px 0px 0px 0px',\n borderRadius: this.props.radius\n },\n black: {\n absolute: '0px 0px 0px 0px',\n boxShadow: this.props.shadow,\n borderRadius: this.props.radius\n },\n pointer: {\n position: 'absolute',\n top: -(this.props.hsv.v * 100) + 100 + '%',\n left: this.props.hsv.s * 100 + '%',\n cursor: 'default'\n },\n circle: {\n width: '4px',\n height: '4px',\n boxShadow: '0 0 0 1.5px #fff, inset 0 0 1px 1px rgba(0,0,0,.3),\\n 0 0 1px 2px rgba(0,0,0,.4)',\n borderRadius: '50%',\n cursor: 'hand',\n transform: 'translate(-2px, -2px)'\n }\n },\n 'custom': {\n color: color,\n white: white,\n black: black,\n pointer: pointer,\n circle: circle\n }\n }, { 'custom': !!this.props.style });\n\n return React.createElement(\n 'div',\n {\n style: styles.color,\n ref: function ref(container) {\n return _this2.container = container;\n },\n onMouseDown: this.handleMouseDown,\n onTouchMove: this.handleChange,\n onTouchStart: this.handleChange\n },\n React.createElement(\n 'style',\n null,\n '\\n .saturation-white {\\n background: -webkit-linear-gradient(to right, #fff, rgba(255,255,255,0));\\n background: linear-gradient(to right, #fff, rgba(255,255,255,0));\\n }\\n .saturation-black {\\n background: -webkit-linear-gradient(to top, #000, rgba(0,0,0,0));\\n background: linear-gradient(to top, #000, rgba(0,0,0,0));\\n }\\n '\n ),\n React.createElement(\n 'div',\n { style: styles.white, className: 'saturation-white' },\n React.createElement('div', { style: styles.black, className: 'saturation-black' }),\n React.createElement(\n 'div',\n { style: styles.pointer },\n this.props.pointer ? React.createElement(this.props.pointer, this.props) : React.createElement('div', { style: styles.circle })\n )\n )\n );\n }\n }]);\n\n return Saturation;\n}(PureComponent || Component);\n\nexport default Saturation;","// This file is autogenerated. It's used to publish ESM to npm.\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\n// https://github.com/bgrins/TinyColor\n// Brian Grinstead, MIT License\n\nvar trimLeft = /^\\s+/;\nvar trimRight = /\\s+$/;\nfunction tinycolor(color, opts) {\n color = color ? color : \"\";\n opts = opts || {};\n\n // If input is already a tinycolor, return itself\n if (color instanceof tinycolor) {\n return color;\n }\n // If we are called as a function, call using new instead\n if (!(this instanceof tinycolor)) {\n return new tinycolor(color, opts);\n }\n var rgb = inputToRGB(color);\n this._originalInput = color, this._r = rgb.r, this._g = rgb.g, this._b = rgb.b, this._a = rgb.a, this._roundA = Math.round(100 * this._a) / 100, this._format = opts.format || rgb.format;\n this._gradientType = opts.gradientType;\n\n // Don't let the range of [0,255] come back in [0,1].\n // Potentially lose a little bit of precision here, but will fix issues where\n // .5 gets interpreted as half of the total, instead of half of 1\n // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n if (this._r < 1) this._r = Math.round(this._r);\n if (this._g < 1) this._g = Math.round(this._g);\n if (this._b < 1) this._b = Math.round(this._b);\n this._ok = rgb.ok;\n}\ntinycolor.prototype = {\n isDark: function isDark() {\n return this.getBrightness() < 128;\n },\n isLight: function isLight() {\n return !this.isDark();\n },\n isValid: function isValid() {\n return this._ok;\n },\n getOriginalInput: function getOriginalInput() {\n return this._originalInput;\n },\n getFormat: function getFormat() {\n return this._format;\n },\n getAlpha: function getAlpha() {\n return this._a;\n },\n getBrightness: function getBrightness() {\n //http://www.w3.org/TR/AERT#color-contrast\n var rgb = this.toRgb();\n return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n },\n getLuminance: function getLuminance() {\n //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n var rgb = this.toRgb();\n var RsRGB, GsRGB, BsRGB, R, G, B;\n RsRGB = rgb.r / 255;\n GsRGB = rgb.g / 255;\n BsRGB = rgb.b / 255;\n if (RsRGB <= 0.03928) R = RsRGB / 12.92;else R = Math.pow((RsRGB + 0.055) / 1.055, 2.4);\n if (GsRGB <= 0.03928) G = GsRGB / 12.92;else G = Math.pow((GsRGB + 0.055) / 1.055, 2.4);\n if (BsRGB <= 0.03928) B = BsRGB / 12.92;else B = Math.pow((BsRGB + 0.055) / 1.055, 2.4);\n return 0.2126 * R + 0.7152 * G + 0.0722 * B;\n },\n setAlpha: function setAlpha(value) {\n this._a = boundAlpha(value);\n this._roundA = Math.round(100 * this._a) / 100;\n return this;\n },\n toHsv: function toHsv() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n return {\n h: hsv.h * 360,\n s: hsv.s,\n v: hsv.v,\n a: this._a\n };\n },\n toHsvString: function toHsvString() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n var h = Math.round(hsv.h * 360),\n s = Math.round(hsv.s * 100),\n v = Math.round(hsv.v * 100);\n return this._a == 1 ? \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\" : \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \" + this._roundA + \")\";\n },\n toHsl: function toHsl() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n return {\n h: hsl.h * 360,\n s: hsl.s,\n l: hsl.l,\n a: this._a\n };\n },\n toHslString: function toHslString() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n var h = Math.round(hsl.h * 360),\n s = Math.round(hsl.s * 100),\n l = Math.round(hsl.l * 100);\n return this._a == 1 ? \"hsl(\" + h + \", \" + s + \"%, \" + l + \"%)\" : \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \" + this._roundA + \")\";\n },\n toHex: function toHex(allow3Char) {\n return rgbToHex(this._r, this._g, this._b, allow3Char);\n },\n toHexString: function toHexString(allow3Char) {\n return \"#\" + this.toHex(allow3Char);\n },\n toHex8: function toHex8(allow4Char) {\n return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);\n },\n toHex8String: function toHex8String(allow4Char) {\n return \"#\" + this.toHex8(allow4Char);\n },\n toRgb: function toRgb() {\n return {\n r: Math.round(this._r),\n g: Math.round(this._g),\n b: Math.round(this._b),\n a: this._a\n };\n },\n toRgbString: function toRgbString() {\n return this._a == 1 ? \"rgb(\" + Math.round(this._r) + \", \" + Math.round(this._g) + \", \" + Math.round(this._b) + \")\" : \"rgba(\" + Math.round(this._r) + \", \" + Math.round(this._g) + \", \" + Math.round(this._b) + \", \" + this._roundA + \")\";\n },\n toPercentageRgb: function toPercentageRgb() {\n return {\n r: Math.round(bound01(this._r, 255) * 100) + \"%\",\n g: Math.round(bound01(this._g, 255) * 100) + \"%\",\n b: Math.round(bound01(this._b, 255) * 100) + \"%\",\n a: this._a\n };\n },\n toPercentageRgbString: function toPercentageRgbString() {\n return this._a == 1 ? \"rgb(\" + Math.round(bound01(this._r, 255) * 100) + \"%, \" + Math.round(bound01(this._g, 255) * 100) + \"%, \" + Math.round(bound01(this._b, 255) * 100) + \"%)\" : \"rgba(\" + Math.round(bound01(this._r, 255) * 100) + \"%, \" + Math.round(bound01(this._g, 255) * 100) + \"%, \" + Math.round(bound01(this._b, 255) * 100) + \"%, \" + this._roundA + \")\";\n },\n toName: function toName() {\n if (this._a === 0) {\n return \"transparent\";\n }\n if (this._a < 1) {\n return false;\n }\n return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n },\n toFilter: function toFilter(secondColor) {\n var hex8String = \"#\" + rgbaToArgbHex(this._r, this._g, this._b, this._a);\n var secondHex8String = hex8String;\n var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\n if (secondColor) {\n var s = tinycolor(secondColor);\n secondHex8String = \"#\" + rgbaToArgbHex(s._r, s._g, s._b, s._a);\n }\n return \"progid:DXImageTransform.Microsoft.gradient(\" + gradientType + \"startColorstr=\" + hex8String + \",endColorstr=\" + secondHex8String + \")\";\n },\n toString: function toString(format) {\n var formatSet = !!format;\n format = format || this._format;\n var formattedString = false;\n var hasAlpha = this._a < 1 && this._a >= 0;\n var needsAlphaFormat = !formatSet && hasAlpha && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"hex4\" || format === \"hex8\" || format === \"name\");\n if (needsAlphaFormat) {\n // Special case for \"transparent\", all other non-alpha formats\n // will return rgba when there is transparency.\n if (format === \"name\" && this._a === 0) {\n return this.toName();\n }\n return this.toRgbString();\n }\n if (format === \"rgb\") {\n formattedString = this.toRgbString();\n }\n if (format === \"prgb\") {\n formattedString = this.toPercentageRgbString();\n }\n if (format === \"hex\" || format === \"hex6\") {\n formattedString = this.toHexString();\n }\n if (format === \"hex3\") {\n formattedString = this.toHexString(true);\n }\n if (format === \"hex4\") {\n formattedString = this.toHex8String(true);\n }\n if (format === \"hex8\") {\n formattedString = this.toHex8String();\n }\n if (format === \"name\") {\n formattedString = this.toName();\n }\n if (format === \"hsl\") {\n formattedString = this.toHslString();\n }\n if (format === \"hsv\") {\n formattedString = this.toHsvString();\n }\n return formattedString || this.toHexString();\n },\n clone: function clone() {\n return tinycolor(this.toString());\n },\n _applyModification: function _applyModification(fn, args) {\n var color = fn.apply(null, [this].concat([].slice.call(args)));\n this._r = color._r;\n this._g = color._g;\n this._b = color._b;\n this.setAlpha(color._a);\n return this;\n },\n lighten: function lighten() {\n return this._applyModification(_lighten, arguments);\n },\n brighten: function brighten() {\n return this._applyModification(_brighten, arguments);\n },\n darken: function darken() {\n return this._applyModification(_darken, arguments);\n },\n desaturate: function desaturate() {\n return this._applyModification(_desaturate, arguments);\n },\n saturate: function saturate() {\n return this._applyModification(_saturate, arguments);\n },\n greyscale: function greyscale() {\n return this._applyModification(_greyscale, arguments);\n },\n spin: function spin() {\n return this._applyModification(_spin, arguments);\n },\n _applyCombination: function _applyCombination(fn, args) {\n return fn.apply(null, [this].concat([].slice.call(args)));\n },\n analogous: function analogous() {\n return this._applyCombination(_analogous, arguments);\n },\n complement: function complement() {\n return this._applyCombination(_complement, arguments);\n },\n monochromatic: function monochromatic() {\n return this._applyCombination(_monochromatic, arguments);\n },\n splitcomplement: function splitcomplement() {\n return this._applyCombination(_splitcomplement, arguments);\n },\n // Disabled until https://github.com/bgrins/TinyColor/issues/254\n // polyad: function (number) {\n // return this._applyCombination(polyad, [number]);\n // },\n triad: function triad() {\n return this._applyCombination(polyad, [3]);\n },\n tetrad: function tetrad() {\n return this._applyCombination(polyad, [4]);\n }\n};\n\n// If input is an object, force 1 into \"1.0\" to handle ratios properly\n// String input requires \"1.0\" as input, so 1 will be treated as 1\ntinycolor.fromRatio = function (color, opts) {\n if (_typeof(color) == \"object\") {\n var newColor = {};\n for (var i in color) {\n if (color.hasOwnProperty(i)) {\n if (i === \"a\") {\n newColor[i] = color[i];\n } else {\n newColor[i] = convertToPercentage(color[i]);\n }\n }\n }\n color = newColor;\n }\n return tinycolor(color, opts);\n};\n\n// Given a string or object, convert that input to RGB\n// Possible string inputs:\n//\n// \"red\"\n// \"#f00\" or \"f00\"\n// \"#ff0000\" or \"ff0000\"\n// \"#ff000000\" or \"ff000000\"\n// \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n// \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n// \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n// \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n// \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n// \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n// \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n//\nfunction inputToRGB(color) {\n var rgb = {\n r: 0,\n g: 0,\n b: 0\n };\n var a = 1;\n var s = null;\n var v = null;\n var l = null;\n var ok = false;\n var format = false;\n if (typeof color == \"string\") {\n color = stringInputToObject(color);\n }\n if (_typeof(color) == \"object\") {\n if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n s = convertToPercentage(color.s);\n v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, s, v);\n ok = true;\n format = \"hsv\";\n } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n s = convertToPercentage(color.s);\n l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, s, l);\n ok = true;\n format = \"hsl\";\n }\n if (color.hasOwnProperty(\"a\")) {\n a = color.a;\n }\n }\n a = boundAlpha(a);\n return {\n ok: ok,\n format: color.format || format,\n r: Math.min(255, Math.max(rgb.r, 0)),\n g: Math.min(255, Math.max(rgb.g, 0)),\n b: Math.min(255, Math.max(rgb.b, 0)),\n a: a\n };\n}\n\n// Conversion Functions\n// --------------------\n\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// \n\n// `rgbToRgb`\n// Handle bounds / percentage checking to conform to CSS color spec\n// \n// *Assumes:* r, g, b in [0, 255] or [0, 1]\n// *Returns:* { r, g, b } in [0, 255]\nfunction rgbToRgb(r, g, b) {\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255\n };\n}\n\n// `rgbToHsl`\n// Converts an RGB color value to HSL.\n// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n// *Returns:* { h, s, l } in [0,1]\nfunction rgbToHsl(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b),\n min = Math.min(r, g, b);\n var h,\n s,\n l = (max + min) / 2;\n if (max == min) {\n h = s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return {\n h: h,\n s: s,\n l: l\n };\n}\n\n// `hslToRgb`\n// Converts an HSL color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hslToRgb(h, s, l) {\n var r, g, b;\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n return {\n r: r * 255,\n g: g * 255,\n b: b * 255\n };\n}\n\n// `rgbToHsv`\n// Converts an RGB color value to HSV\n// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n// *Returns:* { h, s, v } in [0,1]\nfunction rgbToHsv(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b),\n min = Math.min(r, g, b);\n var h,\n s,\n v = max;\n var d = max - min;\n s = max === 0 ? 0 : d / max;\n if (max == min) {\n h = 0; // achromatic\n } else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return {\n h: h,\n s: s,\n v: v\n };\n}\n\n// `hsvToRgb`\n// Converts an HSV color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hsvToRgb(h, s, v) {\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n var i = Math.floor(h),\n f = h - i,\n p = v * (1 - s),\n q = v * (1 - f * s),\n t = v * (1 - (1 - f) * s),\n mod = i % 6,\n r = [v, q, p, p, t, v][mod],\n g = [t, v, v, q, p, p][mod],\n b = [p, p, t, v, v, q][mod];\n return {\n r: r * 255,\n g: g * 255,\n b: b * 255\n };\n}\n\n// `rgbToHex`\n// Converts an RGB color to hex\n// Assumes r, g, and b are contained in the set [0, 255]\n// Returns a 3 or 6 character hex\nfunction rgbToHex(r, g, b, allow3Char) {\n var hex = [pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16))];\n\n // Return a 3 character hex if possible\n if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n return hex.join(\"\");\n}\n\n// `rgbaToHex`\n// Converts an RGBA color plus alpha transparency to hex\n// Assumes r, g, b are contained in the set [0, 255] and\n// a in [0, 1]. Returns a 4 or 8 character rgba hex\nfunction rgbaToHex(r, g, b, a, allow4Char) {\n var hex = [pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16)), pad2(convertDecimalToHex(a))];\n\n // Return a 4 character hex if possible\n if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n }\n return hex.join(\"\");\n}\n\n// `rgbaToArgbHex`\n// Converts an RGBA color to an ARGB Hex8 string\n// Rarely used, but required for \"toFilter()\"\nfunction rgbaToArgbHex(r, g, b, a) {\n var hex = [pad2(convertDecimalToHex(a)), pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16))];\n return hex.join(\"\");\n}\n\n// `equals`\n// Can be called with any tinycolor input\ntinycolor.equals = function (color1, color2) {\n if (!color1 || !color2) return false;\n return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n};\ntinycolor.random = function () {\n return tinycolor.fromRatio({\n r: Math.random(),\n g: Math.random(),\n b: Math.random()\n });\n};\n\n// Modification Functions\n// ----------------------\n// Thanks to less.js for some of the basics here\n// \n\nfunction _desaturate(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.s -= amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\nfunction _saturate(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.s += amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\nfunction _greyscale(color) {\n return tinycolor(color).desaturate(100);\n}\nfunction _lighten(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.l += amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\nfunction _brighten(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var rgb = tinycolor(color).toRgb();\n rgb.r = Math.max(0, Math.min(255, rgb.r - Math.round(255 * -(amount / 100))));\n rgb.g = Math.max(0, Math.min(255, rgb.g - Math.round(255 * -(amount / 100))));\n rgb.b = Math.max(0, Math.min(255, rgb.b - Math.round(255 * -(amount / 100))));\n return tinycolor(rgb);\n}\nfunction _darken(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.l -= amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\n\n// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n// Values outside of this range will be wrapped into this range.\nfunction _spin(color, amount) {\n var hsl = tinycolor(color).toHsl();\n var hue = (hsl.h + amount) % 360;\n hsl.h = hue < 0 ? 360 + hue : hue;\n return tinycolor(hsl);\n}\n\n// Combination Functions\n// ---------------------\n// Thanks to jQuery xColor for some of the ideas behind these\n// \n\nfunction _complement(color) {\n var hsl = tinycolor(color).toHsl();\n hsl.h = (hsl.h + 180) % 360;\n return tinycolor(hsl);\n}\nfunction polyad(color, number) {\n if (isNaN(number) || number <= 0) {\n throw new Error(\"Argument to polyad must be a positive number\");\n }\n var hsl = tinycolor(color).toHsl();\n var result = [tinycolor(color)];\n var step = 360 / number;\n for (var i = 1; i < number; i++) {\n result.push(tinycolor({\n h: (hsl.h + i * step) % 360,\n s: hsl.s,\n l: hsl.l\n }));\n }\n return result;\n}\nfunction _splitcomplement(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [tinycolor(color), tinycolor({\n h: (h + 72) % 360,\n s: hsl.s,\n l: hsl.l\n }), tinycolor({\n h: (h + 216) % 360,\n s: hsl.s,\n l: hsl.l\n })];\n}\nfunction _analogous(color, results, slices) {\n results = results || 6;\n slices = slices || 30;\n var hsl = tinycolor(color).toHsl();\n var part = 360 / slices;\n var ret = [tinycolor(color)];\n for (hsl.h = (hsl.h - (part * results >> 1) + 720) % 360; --results;) {\n hsl.h = (hsl.h + part) % 360;\n ret.push(tinycolor(hsl));\n }\n return ret;\n}\nfunction _monochromatic(color, results) {\n results = results || 6;\n var hsv = tinycolor(color).toHsv();\n var h = hsv.h,\n s = hsv.s,\n v = hsv.v;\n var ret = [];\n var modification = 1 / results;\n while (results--) {\n ret.push(tinycolor({\n h: h,\n s: s,\n v: v\n }));\n v = (v + modification) % 1;\n }\n return ret;\n}\n\n// Utility Functions\n// ---------------------\n\ntinycolor.mix = function (color1, color2, amount) {\n amount = amount === 0 ? 0 : amount || 50;\n var rgb1 = tinycolor(color1).toRgb();\n var rgb2 = tinycolor(color2).toRgb();\n var p = amount / 100;\n var rgba = {\n r: (rgb2.r - rgb1.r) * p + rgb1.r,\n g: (rgb2.g - rgb1.g) * p + rgb1.g,\n b: (rgb2.b - rgb1.b) * p + rgb1.b,\n a: (rgb2.a - rgb1.a) * p + rgb1.a\n };\n return tinycolor(rgba);\n};\n\n// Readability Functions\n// ---------------------\n// false\n// tinycolor.isReadable(\"#000\", \"#111\",{level:\"AA\",size:\"large\"}) => false\ntinycolor.isReadable = function (color1, color2, wcag2) {\n var readability = tinycolor.readability(color1, color2);\n var wcag2Parms, out;\n out = false;\n wcag2Parms = validateWCAG2Parms(wcag2);\n switch (wcag2Parms.level + wcag2Parms.size) {\n case \"AAsmall\":\n case \"AAAlarge\":\n out = readability >= 4.5;\n break;\n case \"AAlarge\":\n out = readability >= 3;\n break;\n case \"AAAsmall\":\n out = readability >= 7;\n break;\n }\n return out;\n};\n\n// `mostReadable`\n// Given a base color and a list of possible foreground or background\n// colors for that base, returns the most readable color.\n// Optionally returns Black or White if the most readable color is unreadable.\n// *Example*\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:false}).toHexString(); // \"#112255\"\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:true}).toHexString(); // \"#ffffff\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"large\"}).toHexString(); // \"#faf3f3\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"small\"}).toHexString(); // \"#ffffff\"\ntinycolor.mostReadable = function (baseColor, colorList, args) {\n var bestColor = null;\n var bestScore = 0;\n var readability;\n var includeFallbackColors, level, size;\n args = args || {};\n includeFallbackColors = args.includeFallbackColors;\n level = args.level;\n size = args.size;\n for (var i = 0; i < colorList.length; i++) {\n readability = tinycolor.readability(baseColor, colorList[i]);\n if (readability > bestScore) {\n bestScore = readability;\n bestColor = tinycolor(colorList[i]);\n }\n }\n if (tinycolor.isReadable(baseColor, bestColor, {\n level: level,\n size: size\n }) || !includeFallbackColors) {\n return bestColor;\n } else {\n args.includeFallbackColors = false;\n return tinycolor.mostReadable(baseColor, [\"#fff\", \"#000\"], args);\n }\n};\n\n// Big List of Colors\n// ------------------\n// \nvar names = tinycolor.names = {\n aliceblue: \"f0f8ff\",\n antiquewhite: \"faebd7\",\n aqua: \"0ff\",\n aquamarine: \"7fffd4\",\n azure: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"000\",\n blanchedalmond: \"ffebcd\",\n blue: \"00f\",\n blueviolet: \"8a2be2\",\n brown: \"a52a2a\",\n burlywood: \"deb887\",\n burntsienna: \"ea7e5d\",\n cadetblue: \"5f9ea0\",\n chartreuse: \"7fff00\",\n chocolate: \"d2691e\",\n coral: \"ff7f50\",\n cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"0ff\",\n darkblue: \"00008b\",\n darkcyan: \"008b8b\",\n darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\",\n darkgreen: \"006400\",\n darkgrey: \"a9a9a9\",\n darkkhaki: \"bdb76b\",\n darkmagenta: \"8b008b\",\n darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\",\n darkorchid: \"9932cc\",\n darkred: \"8b0000\",\n darksalmon: \"e9967a\",\n darkseagreen: \"8fbc8f\",\n darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\",\n darkslategrey: \"2f4f4f\",\n darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\",\n deeppink: \"ff1493\",\n deepskyblue: \"00bfff\",\n dimgray: \"696969\",\n dimgrey: \"696969\",\n dodgerblue: \"1e90ff\",\n firebrick: \"b22222\",\n floralwhite: \"fffaf0\",\n forestgreen: \"228b22\",\n fuchsia: \"f0f\",\n gainsboro: \"dcdcdc\",\n ghostwhite: \"f8f8ff\",\n gold: \"ffd700\",\n goldenrod: \"daa520\",\n gray: \"808080\",\n green: \"008000\",\n greenyellow: \"adff2f\",\n grey: \"808080\",\n honeydew: \"f0fff0\",\n hotpink: \"ff69b4\",\n indianred: \"cd5c5c\",\n indigo: \"4b0082\",\n ivory: \"fffff0\",\n khaki: \"f0e68c\",\n lavender: \"e6e6fa\",\n lavenderblush: \"fff0f5\",\n lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\",\n lightblue: \"add8e6\",\n lightcoral: \"f08080\",\n lightcyan: \"e0ffff\",\n lightgoldenrodyellow: \"fafad2\",\n lightgray: \"d3d3d3\",\n lightgreen: \"90ee90\",\n lightgrey: \"d3d3d3\",\n lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\",\n lightseagreen: \"20b2aa\",\n lightskyblue: \"87cefa\",\n lightslategray: \"789\",\n lightslategrey: \"789\",\n lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\",\n lime: \"0f0\",\n limegreen: \"32cd32\",\n linen: \"faf0e6\",\n magenta: \"f0f\",\n maroon: \"800000\",\n mediumaquamarine: \"66cdaa\",\n mediumblue: \"0000cd\",\n mediumorchid: \"ba55d3\",\n mediumpurple: \"9370db\",\n mediumseagreen: \"3cb371\",\n mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\",\n mediumturquoise: \"48d1cc\",\n mediumvioletred: \"c71585\",\n midnightblue: \"191970\",\n mintcream: \"f5fffa\",\n mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\",\n navajowhite: \"ffdead\",\n navy: \"000080\",\n oldlace: \"fdf5e6\",\n olive: \"808000\",\n olivedrab: \"6b8e23\",\n orange: \"ffa500\",\n orangered: \"ff4500\",\n orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\",\n palegreen: \"98fb98\",\n paleturquoise: \"afeeee\",\n palevioletred: \"db7093\",\n papayawhip: \"ffefd5\",\n peachpuff: \"ffdab9\",\n peru: \"cd853f\",\n pink: \"ffc0cb\",\n plum: \"dda0dd\",\n powderblue: \"b0e0e6\",\n purple: \"800080\",\n rebeccapurple: \"663399\",\n red: \"f00\",\n rosybrown: \"bc8f8f\",\n royalblue: \"4169e1\",\n saddlebrown: \"8b4513\",\n salmon: \"fa8072\",\n sandybrown: \"f4a460\",\n seagreen: \"2e8b57\",\n seashell: \"fff5ee\",\n sienna: \"a0522d\",\n silver: \"c0c0c0\",\n skyblue: \"87ceeb\",\n slateblue: \"6a5acd\",\n slategray: \"708090\",\n slategrey: \"708090\",\n snow: \"fffafa\",\n springgreen: \"00ff7f\",\n steelblue: \"4682b4\",\n tan: \"d2b48c\",\n teal: \"008080\",\n thistle: \"d8bfd8\",\n tomato: \"ff6347\",\n turquoise: \"40e0d0\",\n violet: \"ee82ee\",\n wheat: \"f5deb3\",\n white: \"fff\",\n whitesmoke: \"f5f5f5\",\n yellow: \"ff0\",\n yellowgreen: \"9acd32\"\n};\n\n// Make it easy to access colors via `hexNames[hex]`\nvar hexNames = tinycolor.hexNames = flip(names);\n\n// Utilities\n// ---------\n\n// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\nfunction flip(o) {\n var flipped = {};\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n flipped[o[i]] = i;\n }\n }\n return flipped;\n}\n\n// Return a valid alpha value [0,1] with all invalid values being set to 1\nfunction boundAlpha(a) {\n a = parseFloat(a);\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n return a;\n}\n\n// Take input from [0, n] and return it as [0, 1]\nfunction bound01(n, max) {\n if (isOnePointZero(n)) n = \"100%\";\n var processPercent = isPercentage(n);\n n = Math.min(max, Math.max(0, parseFloat(n)));\n\n // Automatically convert percentage into number\n if (processPercent) {\n n = parseInt(n * max, 10) / 100;\n }\n\n // Handle floating point rounding errors\n if (Math.abs(n - max) < 0.000001) {\n return 1;\n }\n\n // Convert into [0, 1] range if it isn't already\n return n % max / parseFloat(max);\n}\n\n// Force a number between 0 and 1\nfunction clamp01(val) {\n return Math.min(1, Math.max(0, val));\n}\n\n// Parse a base-16 hex value into a base-10 integer\nfunction parseIntFromHex(val) {\n return parseInt(val, 16);\n}\n\n// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n// \nfunction isOnePointZero(n) {\n return typeof n == \"string\" && n.indexOf(\".\") != -1 && parseFloat(n) === 1;\n}\n\n// Check to see if string passed in is a percentage\nfunction isPercentage(n) {\n return typeof n === \"string\" && n.indexOf(\"%\") != -1;\n}\n\n// Force a hex value to have 2 characters\nfunction pad2(c) {\n return c.length == 1 ? \"0\" + c : \"\" + c;\n}\n\n// Replace a decimal with it's percentage value\nfunction convertToPercentage(n) {\n if (n <= 1) {\n n = n * 100 + \"%\";\n }\n return n;\n}\n\n// Converts a decimal to a hex value\nfunction convertDecimalToHex(d) {\n return Math.round(parseFloat(d) * 255).toString(16);\n}\n// Converts a hex value to a decimal\nfunction convertHexToDecimal(h) {\n return parseIntFromHex(h) / 255;\n}\nvar matchers = function () {\n // \n var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n // \n var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\n var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n // Actual matching.\n // Parentheses and commas are optional, but not required.\n // Whitespace can take the place of commas or opening paren\n var PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n var PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n return {\n CSS_UNIT: new RegExp(CSS_UNIT),\n rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n };\n}();\n\n// `isValidCSSUnit`\n// Take in a single string / number and check to see if it looks like a CSS unit\n// (see `matchers` above for definition).\nfunction isValidCSSUnit(color) {\n return !!matchers.CSS_UNIT.exec(color);\n}\n\n// `stringInputToObject`\n// Permissive string parsing. Take in a number of formats, and output an object\n// based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\nfunction stringInputToObject(color) {\n color = color.replace(trimLeft, \"\").replace(trimRight, \"\").toLowerCase();\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n } else if (color == \"transparent\") {\n return {\n r: 0,\n g: 0,\n b: 0,\n a: 0,\n format: \"name\"\n };\n }\n\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match;\n if (match = matchers.rgb.exec(color)) {\n return {\n r: match[1],\n g: match[2],\n b: match[3]\n };\n }\n if (match = matchers.rgba.exec(color)) {\n return {\n r: match[1],\n g: match[2],\n b: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hsl.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n l: match[3]\n };\n }\n if (match = matchers.hsla.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n l: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hsv.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n v: match[3]\n };\n }\n if (match = matchers.hsva.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n v: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hex8.exec(color)) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: convertHexToDecimal(match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if (match = matchers.hex6.exec(color)) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n if (match = matchers.hex4.exec(color)) {\n return {\n r: parseIntFromHex(match[1] + \"\" + match[1]),\n g: parseIntFromHex(match[2] + \"\" + match[2]),\n b: parseIntFromHex(match[3] + \"\" + match[3]),\n a: convertHexToDecimal(match[4] + \"\" + match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if (match = matchers.hex3.exec(color)) {\n return {\n r: parseIntFromHex(match[1] + \"\" + match[1]),\n g: parseIntFromHex(match[2] + \"\" + match[2]),\n b: parseIntFromHex(match[3] + \"\" + match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n return false;\n}\nfunction validateWCAG2Parms(parms) {\n // return valid WCAG2 parms for isReadable.\n // If input parms are invalid, return {\"level\":\"AA\", \"size\":\"small\"}\n var level, size;\n parms = parms || {\n level: \"AA\",\n size: \"small\"\n };\n level = (parms.level || \"AA\").toUpperCase();\n size = (parms.size || \"small\").toLowerCase();\n if (level !== \"AA\" && level !== \"AAA\") {\n level = \"AA\";\n }\n if (size !== \"small\" && size !== \"large\") {\n size = \"small\";\n }\n return {\n level: level,\n size: size\n };\n}\n\nexport { tinycolor as default };\n","import each from 'lodash-es/each';\nimport tinycolor from 'tinycolor2';\n\nexport var simpleCheckForValidColor = function simpleCheckForValidColor(data) {\n var keysToCheck = ['r', 'g', 'b', 'a', 'h', 's', 'l', 'v'];\n var checked = 0;\n var passed = 0;\n each(keysToCheck, function (letter) {\n if (data[letter]) {\n checked += 1;\n if (!isNaN(data[letter])) {\n passed += 1;\n }\n if (letter === 's' || letter === 'l') {\n var percentPatt = /^\\d+%$/;\n if (percentPatt.test(data[letter])) {\n passed += 1;\n }\n }\n }\n });\n return checked === passed ? data : false;\n};\n\nexport var toState = function toState(data, oldHue) {\n var color = data.hex ? tinycolor(data.hex) : tinycolor(data);\n var hsl = color.toHsl();\n var hsv = color.toHsv();\n var rgb = color.toRgb();\n var hex = color.toHex();\n if (hsl.s === 0) {\n hsl.h = oldHue || 0;\n hsv.h = oldHue || 0;\n }\n var transparent = hex === '000000' && rgb.a === 0;\n\n return {\n hsl: hsl,\n hex: transparent ? 'transparent' : '#' + hex,\n rgb: rgb,\n hsv: hsv,\n oldHue: data.h || oldHue || hsl.h,\n source: data.source\n };\n};\n\nexport var isValidHex = function isValidHex(hex) {\n if (hex === 'transparent') {\n return true;\n }\n // disable hex4 and hex8\n var lh = String(hex).charAt(0) === '#' ? 1 : 0;\n return hex.length !== 4 + lh && hex.length < 7 + lh && tinycolor(hex).isValid();\n};\n\nexport var getContrastingColor = function getContrastingColor(data) {\n if (!data) {\n return '#fff';\n }\n var col = toState(data);\n if (col.hex === 'transparent') {\n return 'rgba(0,0,0,0.4)';\n }\n var yiq = (col.rgb.r * 299 + col.rgb.g * 587 + col.rgb.b * 114) / 1000;\n return yiq >= 128 ? '#000' : '#fff';\n};\n\nexport var red = {\n hsl: { a: 1, h: 0, l: 0.5, s: 1 },\n hex: '#ff0000',\n rgb: { r: 255, g: 0, b: 0, a: 1 },\n hsv: { h: 0, s: 1, v: 1, a: 1 }\n};\n\nexport var isvalidColorString = function isvalidColorString(string, type) {\n var stringWithoutDegree = string.replace('°', '');\n return tinycolor(type + ' (' + stringWithoutDegree + ')')._ok;\n};","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React, { Component, PureComponent } from 'react';\nimport debounce from 'lodash-es/debounce';\nimport * as color from '../../helpers/color';\n\nexport var ColorWrap = function ColorWrap(Picker) {\n var ColorPicker = function (_ref) {\n _inherits(ColorPicker, _ref);\n\n function ColorPicker(props) {\n _classCallCheck(this, ColorPicker);\n\n var _this = _possibleConstructorReturn(this, (ColorPicker.__proto__ || Object.getPrototypeOf(ColorPicker)).call(this));\n\n _this.handleChange = function (data, event) {\n var isValidColor = color.simpleCheckForValidColor(data);\n if (isValidColor) {\n var colors = color.toState(data, data.h || _this.state.oldHue);\n _this.setState(colors);\n _this.props.onChangeComplete && _this.debounce(_this.props.onChangeComplete, colors, event);\n _this.props.onChange && _this.props.onChange(colors, event);\n }\n };\n\n _this.handleSwatchHover = function (data, event) {\n var isValidColor = color.simpleCheckForValidColor(data);\n if (isValidColor) {\n var colors = color.toState(data, data.h || _this.state.oldHue);\n _this.props.onSwatchHover && _this.props.onSwatchHover(colors, event);\n }\n };\n\n _this.state = _extends({}, color.toState(props.color, 0));\n\n _this.debounce = debounce(function (fn, data, event) {\n fn(data, event);\n }, 100);\n return _this;\n }\n\n _createClass(ColorPicker, [{\n key: 'render',\n value: function render() {\n var optionalEvents = {};\n if (this.props.onSwatchHover) {\n optionalEvents.onSwatchHover = this.handleSwatchHover;\n }\n\n return React.createElement(Picker, _extends({}, this.props, this.state, {\n onChange: this.handleChange\n }, optionalEvents));\n }\n }], [{\n key: 'getDerivedStateFromProps',\n value: function getDerivedStateFromProps(nextProps, state) {\n return _extends({}, color.toState(nextProps.color, state.oldHue));\n }\n }]);\n\n return ColorPicker;\n }(PureComponent || Component);\n\n ColorPicker.propTypes = _extends({}, Picker.propTypes);\n\n ColorPicker.defaultProps = _extends({}, Picker.defaultProps, {\n color: {\n h: 250,\n s: 0.50,\n l: 0.20,\n a: 1\n }\n });\n\n return ColorPicker;\n};\n\nexport default ColorWrap;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/* eslint-disable no-invalid-this */\nimport React from 'react';\n\nexport var handleFocus = function handleFocus(Component) {\n var Span = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'span';\n return function (_React$Component) {\n _inherits(Focus, _React$Component);\n\n function Focus() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Focus);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Focus.__proto__ || Object.getPrototypeOf(Focus)).call.apply(_ref, [this].concat(args))), _this), _this.state = { focus: false }, _this.handleFocus = function () {\n return _this.setState({ focus: true });\n }, _this.handleBlur = function () {\n return _this.setState({ focus: false });\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Focus, [{\n key: 'render',\n value: function render() {\n return React.createElement(\n Span,\n { onFocus: this.handleFocus, onBlur: this.handleBlur },\n React.createElement(Component, _extends({}, this.props, this.state))\n );\n }\n }]);\n\n return Focus;\n }(React.Component);\n};","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport React from 'react';\nimport reactCSS from 'reactcss';\nimport { handleFocus } from '../../helpers/interaction';\n\nimport Checkboard from './Checkboard';\n\nvar ENTER = 13;\n\nexport var Swatch = function Swatch(_ref) {\n var color = _ref.color,\n style = _ref.style,\n _ref$onClick = _ref.onClick,\n onClick = _ref$onClick === undefined ? function () {} : _ref$onClick,\n onHover = _ref.onHover,\n _ref$title = _ref.title,\n title = _ref$title === undefined ? color : _ref$title,\n children = _ref.children,\n focus = _ref.focus,\n _ref$focusStyle = _ref.focusStyle,\n focusStyle = _ref$focusStyle === undefined ? {} : _ref$focusStyle;\n\n var transparent = color === 'transparent';\n var styles = reactCSS({\n default: {\n swatch: _extends({\n background: color,\n height: '100%',\n width: '100%',\n cursor: 'pointer',\n position: 'relative',\n outline: 'none'\n }, style, focus ? focusStyle : {})\n }\n });\n\n var handleClick = function handleClick(e) {\n return onClick(color, e);\n };\n var handleKeyDown = function handleKeyDown(e) {\n return e.keyCode === ENTER && onClick(color, e);\n };\n var handleHover = function handleHover(e) {\n return onHover(color, e);\n };\n\n var optionalEvents = {};\n if (onHover) {\n optionalEvents.onMouseOver = handleHover;\n }\n\n return React.createElement(\n 'div',\n _extends({\n style: styles.swatch,\n onClick: handleClick,\n title: title,\n tabIndex: 0,\n onKeyDown: handleKeyDown\n }, optionalEvents),\n children,\n transparent && React.createElement(Checkboard, {\n borderRadius: styles.swatch.borderRadius,\n boxShadow: 'inset 0 0 0 1px rgba(0,0,0,0.1)'\n })\n );\n};\n\nexport default handleFocus(Swatch);","import React from 'react';\nimport reactCSS from 'reactcss';\n\nexport var AlphaPointer = function AlphaPointer(_ref) {\n var direction = _ref.direction;\n\n var styles = reactCSS({\n 'default': {\n picker: {\n width: '18px',\n height: '18px',\n borderRadius: '50%',\n transform: 'translate(-9px, -1px)',\n backgroundColor: 'rgb(248, 248, 248)',\n boxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.37)'\n }\n },\n 'vertical': {\n picker: {\n transform: 'translate(-3px, -9px)'\n }\n }\n }, { vertical: direction === 'vertical' });\n\n return React.createElement('div', { style: styles.picker });\n};\n\nexport default AlphaPointer;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport React from 'react';\nimport reactCSS from 'reactcss';\n\nimport { ColorWrap, Alpha } from '../common';\nimport AlphaPointer from './AlphaPointer';\n\nexport var AlphaPicker = function AlphaPicker(_ref) {\n var rgb = _ref.rgb,\n hsl = _ref.hsl,\n width = _ref.width,\n height = _ref.height,\n onChange = _ref.onChange,\n direction = _ref.direction,\n style = _ref.style,\n renderers = _ref.renderers,\n pointer = _ref.pointer,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = reactCSS({\n 'default': {\n picker: {\n position: 'relative',\n width: width,\n height: height\n },\n alpha: {\n radius: '2px',\n style: style\n }\n }\n });\n\n return React.createElement(\n 'div',\n { style: styles.picker, className: 'alpha-picker ' + className },\n React.createElement(Alpha, _extends({}, styles.alpha, {\n rgb: rgb,\n hsl: hsl,\n pointer: pointer,\n renderers: renderers,\n onChange: onChange,\n direction: direction\n }))\n );\n};\n\nAlphaPicker.defaultProps = {\n width: '316px',\n height: '16px',\n direction: 'horizontal',\n pointer: AlphaPointer\n};\n\nexport default ColorWrap(AlphaPicker);","import React from 'react';\nimport reactCSS from 'reactcss';\nimport map from 'lodash-es/map';\n\nimport { Swatch } from '../common';\n\nexport var BlockSwatches = function BlockSwatches(_ref) {\n var colors = _ref.colors,\n onClick = _ref.onClick,\n onSwatchHover = _ref.onSwatchHover;\n\n var styles = reactCSS({\n 'default': {\n swatches: {\n marginRight: '-10px'\n },\n swatch: {\n width: '22px',\n height: '22px',\n float: 'left',\n marginRight: '10px',\n marginBottom: '10px',\n borderRadius: '4px'\n },\n clear: {\n clear: 'both'\n }\n }\n });\n\n return React.createElement(\n 'div',\n { style: styles.swatches },\n map(colors, function (c) {\n return React.createElement(Swatch, {\n key: c,\n color: c,\n style: styles.swatch,\n onClick: onClick,\n onHover: onSwatchHover,\n focusStyle: {\n boxShadow: '0 0 4px ' + c\n }\n });\n }),\n React.createElement('div', { style: styles.clear })\n );\n};\n\nexport default BlockSwatches;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport merge from 'lodash-es/merge';\nimport * as color from '../../helpers/color';\n\nimport { ColorWrap, EditableInput, Checkboard } from '../common';\nimport BlockSwatches from './BlockSwatches';\n\nexport var Block = function Block(_ref) {\n var onChange = _ref.onChange,\n onSwatchHover = _ref.onSwatchHover,\n hex = _ref.hex,\n colors = _ref.colors,\n width = _ref.width,\n triangle = _ref.triangle,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var transparent = hex === 'transparent';\n var handleChange = function handleChange(hexCode, e) {\n color.isValidHex(hexCode) && onChange({\n hex: hexCode,\n source: 'hex'\n }, e);\n };\n\n var styles = reactCSS(merge({\n 'default': {\n card: {\n width: width,\n background: '#fff',\n boxShadow: '0 1px rgba(0,0,0,.1)',\n borderRadius: '6px',\n position: 'relative'\n },\n head: {\n height: '110px',\n background: hex,\n borderRadius: '6px 6px 0 0',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n position: 'relative'\n },\n body: {\n padding: '10px'\n },\n label: {\n fontSize: '18px',\n color: color.getContrastingColor(hex),\n position: 'relative'\n },\n triangle: {\n width: '0px',\n height: '0px',\n borderStyle: 'solid',\n borderWidth: '0 10px 10px 10px',\n borderColor: 'transparent transparent ' + hex + ' transparent',\n position: 'absolute',\n top: '-10px',\n left: '50%',\n marginLeft: '-10px'\n },\n input: {\n width: '100%',\n fontSize: '12px',\n color: '#666',\n border: '0px',\n outline: 'none',\n height: '22px',\n boxShadow: 'inset 0 0 0 1px #ddd',\n borderRadius: '4px',\n padding: '0 7px',\n boxSizing: 'border-box'\n }\n },\n 'hide-triangle': {\n triangle: {\n display: 'none'\n }\n }\n }, passedStyles), { 'hide-triangle': triangle === 'hide' });\n\n return React.createElement(\n 'div',\n { style: styles.card, className: 'block-picker ' + className },\n React.createElement('div', { style: styles.triangle }),\n React.createElement(\n 'div',\n { style: styles.head },\n transparent && React.createElement(Checkboard, { borderRadius: '6px 6px 0 0' }),\n React.createElement(\n 'div',\n { style: styles.label },\n hex\n )\n ),\n React.createElement(\n 'div',\n { style: styles.body },\n React.createElement(BlockSwatches, { colors: colors, onClick: handleChange, onSwatchHover: onSwatchHover }),\n React.createElement(EditableInput, {\n style: { input: styles.input },\n value: hex,\n onChange: handleChange\n })\n )\n );\n};\n\nBlock.propTypes = {\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n colors: PropTypes.arrayOf(PropTypes.string),\n triangle: PropTypes.oneOf(['top', 'hide']),\n styles: PropTypes.object\n};\n\nBlock.defaultProps = {\n width: 170,\n colors: ['#D9E3F0', '#F47373', '#697689', '#37D67A', '#2CCCE4', '#555555', '#dce775', '#ff8a65', '#ba68c8'],\n triangle: 'top',\n styles: {}\n};\n\nexport default ColorWrap(Block);","export var red = {\"50\":\"#ffebee\",\"100\":\"#ffcdd2\",\"200\":\"#ef9a9a\",\"300\":\"#e57373\",\"400\":\"#ef5350\",\"500\":\"#f44336\",\"600\":\"#e53935\",\"700\":\"#d32f2f\",\"800\":\"#c62828\",\"900\":\"#b71c1c\",\"a100\":\"#ff8a80\",\"a200\":\"#ff5252\",\"a400\":\"#ff1744\",\"a700\":\"#d50000\"};\nexport var pink = {\"50\":\"#fce4ec\",\"100\":\"#f8bbd0\",\"200\":\"#f48fb1\",\"300\":\"#f06292\",\"400\":\"#ec407a\",\"500\":\"#e91e63\",\"600\":\"#d81b60\",\"700\":\"#c2185b\",\"800\":\"#ad1457\",\"900\":\"#880e4f\",\"a100\":\"#ff80ab\",\"a200\":\"#ff4081\",\"a400\":\"#f50057\",\"a700\":\"#c51162\"};\nexport var purple = {\"50\":\"#f3e5f5\",\"100\":\"#e1bee7\",\"200\":\"#ce93d8\",\"300\":\"#ba68c8\",\"400\":\"#ab47bc\",\"500\":\"#9c27b0\",\"600\":\"#8e24aa\",\"700\":\"#7b1fa2\",\"800\":\"#6a1b9a\",\"900\":\"#4a148c\",\"a100\":\"#ea80fc\",\"a200\":\"#e040fb\",\"a400\":\"#d500f9\",\"a700\":\"#aa00ff\"};\nexport var deepPurple = {\"50\":\"#ede7f6\",\"100\":\"#d1c4e9\",\"200\":\"#b39ddb\",\"300\":\"#9575cd\",\"400\":\"#7e57c2\",\"500\":\"#673ab7\",\"600\":\"#5e35b1\",\"700\":\"#512da8\",\"800\":\"#4527a0\",\"900\":\"#311b92\",\"a100\":\"#b388ff\",\"a200\":\"#7c4dff\",\"a400\":\"#651fff\",\"a700\":\"#6200ea\"};\nexport var indigo = {\"50\":\"#e8eaf6\",\"100\":\"#c5cae9\",\"200\":\"#9fa8da\",\"300\":\"#7986cb\",\"400\":\"#5c6bc0\",\"500\":\"#3f51b5\",\"600\":\"#3949ab\",\"700\":\"#303f9f\",\"800\":\"#283593\",\"900\":\"#1a237e\",\"a100\":\"#8c9eff\",\"a200\":\"#536dfe\",\"a400\":\"#3d5afe\",\"a700\":\"#304ffe\"};\nexport var blue = {\"50\":\"#e3f2fd\",\"100\":\"#bbdefb\",\"200\":\"#90caf9\",\"300\":\"#64b5f6\",\"400\":\"#42a5f5\",\"500\":\"#2196f3\",\"600\":\"#1e88e5\",\"700\":\"#1976d2\",\"800\":\"#1565c0\",\"900\":\"#0d47a1\",\"a100\":\"#82b1ff\",\"a200\":\"#448aff\",\"a400\":\"#2979ff\",\"a700\":\"#2962ff\"};\nexport var lightBlue = {\"50\":\"#e1f5fe\",\"100\":\"#b3e5fc\",\"200\":\"#81d4fa\",\"300\":\"#4fc3f7\",\"400\":\"#29b6f6\",\"500\":\"#03a9f4\",\"600\":\"#039be5\",\"700\":\"#0288d1\",\"800\":\"#0277bd\",\"900\":\"#01579b\",\"a100\":\"#80d8ff\",\"a200\":\"#40c4ff\",\"a400\":\"#00b0ff\",\"a700\":\"#0091ea\"};\nexport var cyan = {\"50\":\"#e0f7fa\",\"100\":\"#b2ebf2\",\"200\":\"#80deea\",\"300\":\"#4dd0e1\",\"400\":\"#26c6da\",\"500\":\"#00bcd4\",\"600\":\"#00acc1\",\"700\":\"#0097a7\",\"800\":\"#00838f\",\"900\":\"#006064\",\"a100\":\"#84ffff\",\"a200\":\"#18ffff\",\"a400\":\"#00e5ff\",\"a700\":\"#00b8d4\"};\nexport var teal = {\"50\":\"#e0f2f1\",\"100\":\"#b2dfdb\",\"200\":\"#80cbc4\",\"300\":\"#4db6ac\",\"400\":\"#26a69a\",\"500\":\"#009688\",\"600\":\"#00897b\",\"700\":\"#00796b\",\"800\":\"#00695c\",\"900\":\"#004d40\",\"a100\":\"#a7ffeb\",\"a200\":\"#64ffda\",\"a400\":\"#1de9b6\",\"a700\":\"#00bfa5\"};\nexport var green = {\"50\":\"#e8f5e9\",\"100\":\"#c8e6c9\",\"200\":\"#a5d6a7\",\"300\":\"#81c784\",\"400\":\"#66bb6a\",\"500\":\"#4caf50\",\"600\":\"#43a047\",\"700\":\"#388e3c\",\"800\":\"#2e7d32\",\"900\":\"#1b5e20\",\"a100\":\"#b9f6ca\",\"a200\":\"#69f0ae\",\"a400\":\"#00e676\",\"a700\":\"#00c853\"};\nexport var lightGreen = {\"50\":\"#f1f8e9\",\"100\":\"#dcedc8\",\"200\":\"#c5e1a5\",\"300\":\"#aed581\",\"400\":\"#9ccc65\",\"500\":\"#8bc34a\",\"600\":\"#7cb342\",\"700\":\"#689f38\",\"800\":\"#558b2f\",\"900\":\"#33691e\",\"a100\":\"#ccff90\",\"a200\":\"#b2ff59\",\"a400\":\"#76ff03\",\"a700\":\"#64dd17\"};\nexport var lime = {\"50\":\"#f9fbe7\",\"100\":\"#f0f4c3\",\"200\":\"#e6ee9c\",\"300\":\"#dce775\",\"400\":\"#d4e157\",\"500\":\"#cddc39\",\"600\":\"#c0ca33\",\"700\":\"#afb42b\",\"800\":\"#9e9d24\",\"900\":\"#827717\",\"a100\":\"#f4ff81\",\"a200\":\"#eeff41\",\"a400\":\"#c6ff00\",\"a700\":\"#aeea00\"};\nexport var yellow = {\"50\":\"#fffde7\",\"100\":\"#fff9c4\",\"200\":\"#fff59d\",\"300\":\"#fff176\",\"400\":\"#ffee58\",\"500\":\"#ffeb3b\",\"600\":\"#fdd835\",\"700\":\"#fbc02d\",\"800\":\"#f9a825\",\"900\":\"#f57f17\",\"a100\":\"#ffff8d\",\"a200\":\"#ffff00\",\"a400\":\"#ffea00\",\"a700\":\"#ffd600\"};\nexport var amber = {\"50\":\"#fff8e1\",\"100\":\"#ffecb3\",\"200\":\"#ffe082\",\"300\":\"#ffd54f\",\"400\":\"#ffca28\",\"500\":\"#ffc107\",\"600\":\"#ffb300\",\"700\":\"#ffa000\",\"800\":\"#ff8f00\",\"900\":\"#ff6f00\",\"a100\":\"#ffe57f\",\"a200\":\"#ffd740\",\"a400\":\"#ffc400\",\"a700\":\"#ffab00\"};\nexport var orange = {\"50\":\"#fff3e0\",\"100\":\"#ffe0b2\",\"200\":\"#ffcc80\",\"300\":\"#ffb74d\",\"400\":\"#ffa726\",\"500\":\"#ff9800\",\"600\":\"#fb8c00\",\"700\":\"#f57c00\",\"800\":\"#ef6c00\",\"900\":\"#e65100\",\"a100\":\"#ffd180\",\"a200\":\"#ffab40\",\"a400\":\"#ff9100\",\"a700\":\"#ff6d00\"};\nexport var deepOrange = {\"50\":\"#fbe9e7\",\"100\":\"#ffccbc\",\"200\":\"#ffab91\",\"300\":\"#ff8a65\",\"400\":\"#ff7043\",\"500\":\"#ff5722\",\"600\":\"#f4511e\",\"700\":\"#e64a19\",\"800\":\"#d84315\",\"900\":\"#bf360c\",\"a100\":\"#ff9e80\",\"a200\":\"#ff6e40\",\"a400\":\"#ff3d00\",\"a700\":\"#dd2c00\"};\nexport var brown = {\"50\":\"#efebe9\",\"100\":\"#d7ccc8\",\"200\":\"#bcaaa4\",\"300\":\"#a1887f\",\"400\":\"#8d6e63\",\"500\":\"#795548\",\"600\":\"#6d4c41\",\"700\":\"#5d4037\",\"800\":\"#4e342e\",\"900\":\"#3e2723\"};\nexport var grey = {\"50\":\"#fafafa\",\"100\":\"#f5f5f5\",\"200\":\"#eeeeee\",\"300\":\"#e0e0e0\",\"400\":\"#bdbdbd\",\"500\":\"#9e9e9e\",\"600\":\"#757575\",\"700\":\"#616161\",\"800\":\"#424242\",\"900\":\"#212121\"};\nexport var blueGrey = {\"50\":\"#eceff1\",\"100\":\"#cfd8dc\",\"200\":\"#b0bec5\",\"300\":\"#90a4ae\",\"400\":\"#78909c\",\"500\":\"#607d8b\",\"600\":\"#546e7a\",\"700\":\"#455a64\",\"800\":\"#37474f\",\"900\":\"#263238\"};\nexport var darkText = {\"primary\":\"rgba(0, 0, 0, 0.87)\",\"secondary\":\"rgba(0, 0, 0, 0.54)\",\"disabled\":\"rgba(0, 0, 0, 0.38)\",\"dividers\":\"rgba(0, 0, 0, 0.12)\"};\nexport var lightText = {\"primary\":\"rgba(255, 255, 255, 1)\",\"secondary\":\"rgba(255, 255, 255, 0.7)\",\"disabled\":\"rgba(255, 255, 255, 0.5)\",\"dividers\":\"rgba(255, 255, 255, 0.12)\"};\nexport var darkIcons = {\"active\":\"rgba(0, 0, 0, 0.54)\",\"inactive\":\"rgba(0, 0, 0, 0.38)\"};\nexport var lightIcons = {\"active\":\"rgba(255, 255, 255, 1)\",\"inactive\":\"rgba(255, 255, 255, 0.5)\"};\nexport var white = \"#ffffff\";\nexport var black = \"#000000\";\n\nexport default {\n red: red,\n pink: pink,\n purple: purple,\n deepPurple: deepPurple,\n indigo: indigo,\n blue: blue,\n lightBlue: lightBlue,\n cyan: cyan,\n teal: teal,\n green: green,\n lightGreen: lightGreen,\n lime: lime,\n yellow: yellow,\n amber: amber,\n orange: orange,\n deepOrange: deepOrange,\n brown: brown,\n grey: grey,\n blueGrey: blueGrey,\n darkText: darkText,\n lightText: lightText,\n darkIcons: darkIcons,\n lightIcons: lightIcons,\n white: white,\n black: black\n};\n","import React from 'react';\nimport reactCSS, { handleHover } from 'reactcss';\n\nimport { Swatch } from '../common';\n\nexport var CircleSwatch = function CircleSwatch(_ref) {\n var color = _ref.color,\n onClick = _ref.onClick,\n onSwatchHover = _ref.onSwatchHover,\n hover = _ref.hover,\n active = _ref.active,\n circleSize = _ref.circleSize,\n circleSpacing = _ref.circleSpacing;\n\n var styles = reactCSS({\n 'default': {\n swatch: {\n width: circleSize,\n height: circleSize,\n marginRight: circleSpacing,\n marginBottom: circleSpacing,\n transform: 'scale(1)',\n transition: '100ms transform ease'\n },\n Swatch: {\n borderRadius: '50%',\n background: 'transparent',\n boxShadow: 'inset 0 0 0 ' + (circleSize / 2 + 1) + 'px ' + color,\n transition: '100ms box-shadow ease'\n }\n },\n 'hover': {\n swatch: {\n transform: 'scale(1.2)'\n }\n },\n 'active': {\n Swatch: {\n boxShadow: 'inset 0 0 0 3px ' + color\n }\n }\n }, { hover: hover, active: active });\n\n return React.createElement(\n 'div',\n { style: styles.swatch },\n React.createElement(Swatch, {\n style: styles.Swatch,\n color: color,\n onClick: onClick,\n onHover: onSwatchHover,\n focusStyle: { boxShadow: styles.Swatch.boxShadow + ', 0 0 5px ' + color }\n })\n );\n};\n\nCircleSwatch.defaultProps = {\n circleSize: 28,\n circleSpacing: 14\n};\n\nexport default handleHover(CircleSwatch);","import React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport map from 'lodash-es/map';\nimport merge from 'lodash-es/merge';\nimport * as material from 'material-colors';\n\nimport { ColorWrap } from '../common';\nimport CircleSwatch from './CircleSwatch';\n\nexport var Circle = function Circle(_ref) {\n var width = _ref.width,\n onChange = _ref.onChange,\n onSwatchHover = _ref.onSwatchHover,\n colors = _ref.colors,\n hex = _ref.hex,\n circleSize = _ref.circleSize,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n circleSpacing = _ref.circleSpacing,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = reactCSS(merge({\n 'default': {\n card: {\n width: width,\n display: 'flex',\n flexWrap: 'wrap',\n marginRight: -circleSpacing,\n marginBottom: -circleSpacing\n }\n }\n }, passedStyles));\n\n var handleChange = function handleChange(hexCode, e) {\n return onChange({ hex: hexCode, source: 'hex' }, e);\n };\n\n return React.createElement(\n 'div',\n { style: styles.card, className: 'circle-picker ' + className },\n map(colors, function (c) {\n return React.createElement(CircleSwatch, {\n key: c,\n color: c,\n onClick: handleChange,\n onSwatchHover: onSwatchHover,\n active: hex === c.toLowerCase(),\n circleSize: circleSize,\n circleSpacing: circleSpacing\n });\n })\n );\n};\n\nCircle.propTypes = {\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n circleSize: PropTypes.number,\n circleSpacing: PropTypes.number,\n styles: PropTypes.object\n};\n\nCircle.defaultProps = {\n width: 252,\n circleSize: 28,\n circleSpacing: 14,\n colors: [material.red['500'], material.pink['500'], material.purple['500'], material.deepPurple['500'], material.indigo['500'], material.blue['500'], material.lightBlue['500'], material.cyan['500'], material.teal['500'], material.green['500'], material.lightGreen['500'], material.lime['500'], material.yellow['500'], material.amber['500'], material.orange['500'], material.deepOrange['500'], material.brown['500'], material.blueGrey['500']],\n styles: {}\n};\n\nexport default ColorWrap(Circle);","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/* eslint-disable react/no-did-mount-set-state, no-param-reassign */\n\nimport React from 'react';\nimport reactCSS from 'reactcss';\nimport * as color from '../../helpers/color';\nimport isUndefined from 'lodash-es/isUndefined';\n\nimport { EditableInput } from '../common';\nimport UnfoldMoreHorizontalIcon from '@icons/material/UnfoldMoreHorizontalIcon';\n\nexport var ChromeFields = function (_React$Component) {\n _inherits(ChromeFields, _React$Component);\n\n function ChromeFields(props) {\n _classCallCheck(this, ChromeFields);\n\n var _this = _possibleConstructorReturn(this, (ChromeFields.__proto__ || Object.getPrototypeOf(ChromeFields)).call(this));\n\n _this.toggleViews = function () {\n if (_this.state.view === 'hex') {\n _this.setState({ view: 'rgb' });\n } else if (_this.state.view === 'rgb') {\n _this.setState({ view: 'hsl' });\n } else if (_this.state.view === 'hsl') {\n if (_this.props.hsl.a === 1) {\n _this.setState({ view: 'hex' });\n } else {\n _this.setState({ view: 'rgb' });\n }\n }\n };\n\n _this.handleChange = function (data, e) {\n if (data.hex) {\n color.isValidHex(data.hex) && _this.props.onChange({\n hex: data.hex,\n source: 'hex'\n }, e);\n } else if (data.r || data.g || data.b) {\n _this.props.onChange({\n r: data.r || _this.props.rgb.r,\n g: data.g || _this.props.rgb.g,\n b: data.b || _this.props.rgb.b,\n source: 'rgb'\n }, e);\n } else if (data.a) {\n if (data.a < 0) {\n data.a = 0;\n } else if (data.a > 1) {\n data.a = 1;\n }\n\n _this.props.onChange({\n h: _this.props.hsl.h,\n s: _this.props.hsl.s,\n l: _this.props.hsl.l,\n a: Math.round(data.a * 100) / 100,\n source: 'rgb'\n }, e);\n } else if (data.h || data.s || data.l) {\n // Remove any occurances of '%'.\n if (typeof data.s === 'string' && data.s.includes('%')) {\n data.s = data.s.replace('%', '');\n }\n if (typeof data.l === 'string' && data.l.includes('%')) {\n data.l = data.l.replace('%', '');\n }\n\n // We store HSL as a unit interval so we need to override the 1 input to 0.01\n if (data.s == 1) {\n data.s = 0.01;\n } else if (data.l == 1) {\n data.l = 0.01;\n }\n\n _this.props.onChange({\n h: data.h || _this.props.hsl.h,\n s: Number(!isUndefined(data.s) ? data.s : _this.props.hsl.s),\n l: Number(!isUndefined(data.l) ? data.l : _this.props.hsl.l),\n source: 'hsl'\n }, e);\n }\n };\n\n _this.showHighlight = function (e) {\n e.currentTarget.style.background = '#eee';\n };\n\n _this.hideHighlight = function (e) {\n e.currentTarget.style.background = 'transparent';\n };\n\n if (props.hsl.a !== 1 && props.view === \"hex\") {\n _this.state = {\n view: \"rgb\"\n };\n } else {\n _this.state = {\n view: props.view\n };\n }\n return _this;\n }\n\n _createClass(ChromeFields, [{\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var styles = reactCSS({\n 'default': {\n wrap: {\n paddingTop: '16px',\n display: 'flex'\n },\n fields: {\n flex: '1',\n display: 'flex',\n marginLeft: '-6px'\n },\n field: {\n paddingLeft: '6px',\n width: '100%'\n },\n alpha: {\n paddingLeft: '6px',\n width: '100%'\n },\n toggle: {\n width: '32px',\n textAlign: 'right',\n position: 'relative'\n },\n icon: {\n marginRight: '-4px',\n marginTop: '12px',\n cursor: 'pointer',\n position: 'relative'\n },\n iconHighlight: {\n position: 'absolute',\n width: '24px',\n height: '28px',\n background: '#eee',\n borderRadius: '4px',\n top: '10px',\n left: '12px',\n display: 'none'\n },\n input: {\n fontSize: '11px',\n color: '#333',\n width: '100%',\n borderRadius: '2px',\n border: 'none',\n boxShadow: 'inset 0 0 0 1px #dadada',\n height: '21px',\n textAlign: 'center'\n },\n label: {\n textTransform: 'uppercase',\n fontSize: '11px',\n lineHeight: '11px',\n color: '#969696',\n textAlign: 'center',\n display: 'block',\n marginTop: '12px'\n },\n svg: {\n fill: '#333',\n width: '24px',\n height: '24px',\n border: '1px transparent solid',\n borderRadius: '5px'\n }\n },\n 'disableAlpha': {\n alpha: {\n display: 'none'\n }\n }\n }, this.props, this.state);\n\n var fields = void 0;\n if (this.state.view === 'hex') {\n fields = React.createElement(\n 'div',\n { style: styles.fields, className: 'flexbox-fix' },\n React.createElement(\n 'div',\n { style: styles.field },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'hex', value: this.props.hex,\n onChange: this.handleChange\n })\n )\n );\n } else if (this.state.view === 'rgb') {\n fields = React.createElement(\n 'div',\n { style: styles.fields, className: 'flexbox-fix' },\n React.createElement(\n 'div',\n { style: styles.field },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'r',\n value: this.props.rgb.r,\n onChange: this.handleChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.field },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'g',\n value: this.props.rgb.g,\n onChange: this.handleChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.field },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'b',\n value: this.props.rgb.b,\n onChange: this.handleChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.alpha },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'a',\n value: this.props.rgb.a,\n arrowOffset: 0.01,\n onChange: this.handleChange\n })\n )\n );\n } else if (this.state.view === 'hsl') {\n fields = React.createElement(\n 'div',\n { style: styles.fields, className: 'flexbox-fix' },\n React.createElement(\n 'div',\n { style: styles.field },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'h',\n value: Math.round(this.props.hsl.h),\n onChange: this.handleChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.field },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 's',\n value: Math.round(this.props.hsl.s * 100) + '%',\n onChange: this.handleChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.field },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'l',\n value: Math.round(this.props.hsl.l * 100) + '%',\n onChange: this.handleChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.alpha },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'a',\n value: this.props.hsl.a,\n arrowOffset: 0.01,\n onChange: this.handleChange\n })\n )\n );\n }\n\n return React.createElement(\n 'div',\n { style: styles.wrap, className: 'flexbox-fix' },\n fields,\n React.createElement(\n 'div',\n { style: styles.toggle },\n React.createElement(\n 'div',\n { style: styles.icon, onClick: this.toggleViews, ref: function ref(icon) {\n return _this2.icon = icon;\n } },\n React.createElement(UnfoldMoreHorizontalIcon, {\n style: styles.svg,\n onMouseOver: this.showHighlight,\n onMouseEnter: this.showHighlight,\n onMouseOut: this.hideHighlight\n })\n )\n )\n );\n }\n }], [{\n key: 'getDerivedStateFromProps',\n value: function getDerivedStateFromProps(nextProps, state) {\n if (nextProps.hsl.a !== 1 && state.view === 'hex') {\n return { view: 'rgb' };\n }\n return null;\n }\n }]);\n\n return ChromeFields;\n}(React.Component);\n\nChromeFields.defaultProps = {\n view: \"hex\"\n};\n\nexport default ChromeFields;","import React from 'react';\nimport reactCSS from 'reactcss';\n\nexport var ChromePointer = function ChromePointer() {\n var styles = reactCSS({\n 'default': {\n picker: {\n width: '12px',\n height: '12px',\n borderRadius: '6px',\n transform: 'translate(-6px, -1px)',\n backgroundColor: 'rgb(248, 248, 248)',\n boxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.37)'\n }\n }\n });\n\n return React.createElement('div', { style: styles.picker });\n};\n\nexport default ChromePointer;","import React from 'react';\nimport reactCSS from 'reactcss';\n\nexport var ChromePointerCircle = function ChromePointerCircle() {\n var styles = reactCSS({\n 'default': {\n picker: {\n width: '12px',\n height: '12px',\n borderRadius: '6px',\n boxShadow: 'inset 0 0 0 1px #fff',\n transform: 'translate(-6px, -6px)'\n }\n }\n });\n\n return React.createElement('div', { style: styles.picker });\n};\n\nexport default ChromePointerCircle;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport merge from 'lodash-es/merge';\n\nimport { ColorWrap, Saturation, Hue, Alpha, Checkboard } from '../common';\nimport ChromeFields from './ChromeFields';\nimport ChromePointer from './ChromePointer';\nimport ChromePointerCircle from './ChromePointerCircle';\n\nexport var Chrome = function Chrome(_ref) {\n var width = _ref.width,\n onChange = _ref.onChange,\n disableAlpha = _ref.disableAlpha,\n rgb = _ref.rgb,\n hsl = _ref.hsl,\n hsv = _ref.hsv,\n hex = _ref.hex,\n renderers = _ref.renderers,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className,\n defaultView = _ref.defaultView;\n\n var styles = reactCSS(merge({\n 'default': {\n picker: {\n width: width,\n background: '#fff',\n borderRadius: '2px',\n boxShadow: '0 0 2px rgba(0,0,0,.3), 0 4px 8px rgba(0,0,0,.3)',\n boxSizing: 'initial',\n fontFamily: 'Menlo'\n },\n saturation: {\n width: '100%',\n paddingBottom: '55%',\n position: 'relative',\n borderRadius: '2px 2px 0 0',\n overflow: 'hidden'\n },\n Saturation: {\n radius: '2px 2px 0 0'\n },\n body: {\n padding: '16px 16px 12px'\n },\n controls: {\n display: 'flex'\n },\n color: {\n width: '32px'\n },\n swatch: {\n marginTop: '6px',\n width: '16px',\n height: '16px',\n borderRadius: '8px',\n position: 'relative',\n overflow: 'hidden'\n },\n active: {\n absolute: '0px 0px 0px 0px',\n borderRadius: '8px',\n boxShadow: 'inset 0 0 0 1px rgba(0,0,0,.1)',\n background: 'rgba(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ', ' + rgb.a + ')',\n zIndex: '2'\n },\n toggles: {\n flex: '1'\n },\n hue: {\n height: '10px',\n position: 'relative',\n marginBottom: '8px'\n },\n Hue: {\n radius: '2px'\n },\n alpha: {\n height: '10px',\n position: 'relative'\n },\n Alpha: {\n radius: '2px'\n }\n },\n 'disableAlpha': {\n color: {\n width: '22px'\n },\n alpha: {\n display: 'none'\n },\n hue: {\n marginBottom: '0px'\n },\n swatch: {\n width: '10px',\n height: '10px',\n marginTop: '0px'\n }\n }\n }, passedStyles), { disableAlpha: disableAlpha });\n\n return React.createElement(\n 'div',\n { style: styles.picker, className: 'chrome-picker ' + className },\n React.createElement(\n 'div',\n { style: styles.saturation },\n React.createElement(Saturation, {\n style: styles.Saturation,\n hsl: hsl,\n hsv: hsv,\n pointer: ChromePointerCircle,\n onChange: onChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.body },\n React.createElement(\n 'div',\n { style: styles.controls, className: 'flexbox-fix' },\n React.createElement(\n 'div',\n { style: styles.color },\n React.createElement(\n 'div',\n { style: styles.swatch },\n React.createElement('div', { style: styles.active }),\n React.createElement(Checkboard, { renderers: renderers })\n )\n ),\n React.createElement(\n 'div',\n { style: styles.toggles },\n React.createElement(\n 'div',\n { style: styles.hue },\n React.createElement(Hue, {\n style: styles.Hue,\n hsl: hsl,\n pointer: ChromePointer,\n onChange: onChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.alpha },\n React.createElement(Alpha, {\n style: styles.Alpha,\n rgb: rgb,\n hsl: hsl,\n pointer: ChromePointer,\n renderers: renderers,\n onChange: onChange\n })\n )\n )\n ),\n React.createElement(ChromeFields, {\n rgb: rgb,\n hsl: hsl,\n hex: hex,\n view: defaultView,\n onChange: onChange,\n disableAlpha: disableAlpha\n })\n )\n );\n};\n\nChrome.propTypes = {\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n disableAlpha: PropTypes.bool,\n styles: PropTypes.object,\n defaultView: PropTypes.oneOf([\"hex\", \"rgb\", \"hsl\"])\n};\n\nChrome.defaultProps = {\n width: 225,\n disableAlpha: false,\n styles: {}\n};\n\nexport default ColorWrap(Chrome);","import React from 'react';\nimport reactCSS from 'reactcss';\nimport * as colorUtils from '../../helpers/color';\n\nimport { Swatch } from '../common';\n\nexport var CompactColor = function CompactColor(_ref) {\n var color = _ref.color,\n _ref$onClick = _ref.onClick,\n onClick = _ref$onClick === undefined ? function () {} : _ref$onClick,\n onSwatchHover = _ref.onSwatchHover,\n active = _ref.active;\n\n var styles = reactCSS({\n 'default': {\n color: {\n background: color,\n width: '15px',\n height: '15px',\n float: 'left',\n marginRight: '5px',\n marginBottom: '5px',\n position: 'relative',\n cursor: 'pointer'\n },\n dot: {\n absolute: '5px 5px 5px 5px',\n background: colorUtils.getContrastingColor(color),\n borderRadius: '50%',\n opacity: '0'\n }\n },\n 'active': {\n dot: {\n opacity: '1'\n }\n },\n 'color-#FFFFFF': {\n color: {\n boxShadow: 'inset 0 0 0 1px #ddd'\n },\n dot: {\n background: '#000'\n }\n },\n 'transparent': {\n dot: {\n background: '#000'\n }\n }\n }, { active: active, 'color-#FFFFFF': color === '#FFFFFF', 'transparent': color === 'transparent' });\n\n return React.createElement(\n Swatch,\n {\n style: styles.color,\n color: color,\n onClick: onClick,\n onHover: onSwatchHover,\n focusStyle: { boxShadow: '0 0 4px ' + color }\n },\n React.createElement('div', { style: styles.dot })\n );\n};\n\nexport default CompactColor;","import React from 'react';\nimport reactCSS from 'reactcss';\n\nimport { EditableInput } from '../common';\n\nexport var CompactFields = function CompactFields(_ref) {\n var hex = _ref.hex,\n rgb = _ref.rgb,\n onChange = _ref.onChange;\n\n var styles = reactCSS({\n 'default': {\n fields: {\n display: 'flex',\n paddingBottom: '6px',\n paddingRight: '5px',\n position: 'relative'\n },\n active: {\n position: 'absolute',\n top: '6px',\n left: '5px',\n height: '9px',\n width: '9px',\n background: hex\n },\n HEXwrap: {\n flex: '6',\n position: 'relative'\n },\n HEXinput: {\n width: '80%',\n padding: '0px',\n paddingLeft: '20%',\n border: 'none',\n outline: 'none',\n background: 'none',\n fontSize: '12px',\n color: '#333',\n height: '16px'\n },\n HEXlabel: {\n display: 'none'\n },\n RGBwrap: {\n flex: '3',\n position: 'relative'\n },\n RGBinput: {\n width: '70%',\n padding: '0px',\n paddingLeft: '30%',\n border: 'none',\n outline: 'none',\n background: 'none',\n fontSize: '12px',\n color: '#333',\n height: '16px'\n },\n RGBlabel: {\n position: 'absolute',\n top: '3px',\n left: '0px',\n lineHeight: '16px',\n textTransform: 'uppercase',\n fontSize: '12px',\n color: '#999'\n }\n }\n });\n\n var handleChange = function handleChange(data, e) {\n if (data.r || data.g || data.b) {\n onChange({\n r: data.r || rgb.r,\n g: data.g || rgb.g,\n b: data.b || rgb.b,\n source: 'rgb'\n }, e);\n } else {\n onChange({\n hex: data.hex,\n source: 'hex'\n }, e);\n }\n };\n\n return React.createElement(\n 'div',\n { style: styles.fields, className: 'flexbox-fix' },\n React.createElement('div', { style: styles.active }),\n React.createElement(EditableInput, {\n style: { wrap: styles.HEXwrap, input: styles.HEXinput, label: styles.HEXlabel },\n label: 'hex',\n value: hex,\n onChange: handleChange\n }),\n React.createElement(EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'r',\n value: rgb.r,\n onChange: handleChange\n }),\n React.createElement(EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'g',\n value: rgb.g,\n onChange: handleChange\n }),\n React.createElement(EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'b',\n value: rgb.b,\n onChange: handleChange\n })\n );\n};\n\nexport default CompactFields;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport map from 'lodash-es/map';\nimport merge from 'lodash-es/merge';\nimport * as color from '../../helpers/color';\n\nimport { ColorWrap, Raised } from '../common';\nimport CompactColor from './CompactColor';\nimport CompactFields from './CompactFields';\n\nexport var Compact = function Compact(_ref) {\n var onChange = _ref.onChange,\n onSwatchHover = _ref.onSwatchHover,\n colors = _ref.colors,\n hex = _ref.hex,\n rgb = _ref.rgb,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = reactCSS(merge({\n 'default': {\n Compact: {\n background: '#f6f6f6',\n radius: '4px'\n },\n compact: {\n paddingTop: '5px',\n paddingLeft: '5px',\n boxSizing: 'initial',\n width: '240px'\n },\n clear: {\n clear: 'both'\n }\n }\n }, passedStyles));\n\n var handleChange = function handleChange(data, e) {\n if (data.hex) {\n color.isValidHex(data.hex) && onChange({\n hex: data.hex,\n source: 'hex'\n }, e);\n } else {\n onChange(data, e);\n }\n };\n\n return React.createElement(\n Raised,\n { style: styles.Compact, styles: passedStyles },\n React.createElement(\n 'div',\n { style: styles.compact, className: 'compact-picker ' + className },\n React.createElement(\n 'div',\n null,\n map(colors, function (c) {\n return React.createElement(CompactColor, {\n key: c,\n color: c,\n active: c.toLowerCase() === hex,\n onClick: handleChange,\n onSwatchHover: onSwatchHover\n });\n }),\n React.createElement('div', { style: styles.clear })\n ),\n React.createElement(CompactFields, { hex: hex, rgb: rgb, onChange: handleChange })\n )\n );\n};\n\nCompact.propTypes = {\n colors: PropTypes.arrayOf(PropTypes.string),\n styles: PropTypes.object\n};\n\nCompact.defaultProps = {\n colors: ['#4D4D4D', '#999999', '#FFFFFF', '#F44E3B', '#FE9200', '#FCDC00', '#DBDF00', '#A4DD00', '#68CCCA', '#73D8FF', '#AEA1FF', '#FDA1FF', '#333333', '#808080', '#cccccc', '#D33115', '#E27300', '#FCC400', '#B0BC00', '#68BC00', '#16A5A5', '#009CE0', '#7B64FF', '#FA28FF', '#000000', '#666666', '#B3B3B3', '#9F0500', '#C45100', '#FB9E00', '#808900', '#194D33', '#0C797D', '#0062B1', '#653294', '#AB149E'],\n styles: {}\n};\n\nexport default ColorWrap(Compact);","import React from 'react';\nimport reactCSS, { handleHover } from 'reactcss';\n\nimport { Swatch } from '../common';\n\nexport var GithubSwatch = function GithubSwatch(_ref) {\n var hover = _ref.hover,\n color = _ref.color,\n onClick = _ref.onClick,\n onSwatchHover = _ref.onSwatchHover;\n\n var hoverSwatch = {\n position: 'relative',\n zIndex: '2',\n outline: '2px solid #fff',\n boxShadow: '0 0 5px 2px rgba(0,0,0,0.25)'\n };\n\n var styles = reactCSS({\n 'default': {\n swatch: {\n width: '25px',\n height: '25px',\n fontSize: '0'\n }\n },\n 'hover': {\n swatch: hoverSwatch\n }\n }, { hover: hover });\n\n return React.createElement(\n 'div',\n { style: styles.swatch },\n React.createElement(Swatch, {\n color: color,\n onClick: onClick,\n onHover: onSwatchHover,\n focusStyle: hoverSwatch\n })\n );\n};\n\nexport default handleHover(GithubSwatch);","import React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport map from 'lodash-es/map';\nimport merge from 'lodash-es/merge';\n\nimport { ColorWrap } from '../common';\nimport GithubSwatch from './GithubSwatch';\n\nexport var Github = function Github(_ref) {\n var width = _ref.width,\n colors = _ref.colors,\n onChange = _ref.onChange,\n onSwatchHover = _ref.onSwatchHover,\n triangle = _ref.triangle,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = reactCSS(merge({\n 'default': {\n card: {\n width: width,\n background: '#fff',\n border: '1px solid rgba(0,0,0,0.2)',\n boxShadow: '0 3px 12px rgba(0,0,0,0.15)',\n borderRadius: '4px',\n position: 'relative',\n padding: '5px',\n display: 'flex',\n flexWrap: 'wrap'\n },\n triangle: {\n position: 'absolute',\n border: '7px solid transparent',\n borderBottomColor: '#fff'\n },\n triangleShadow: {\n position: 'absolute',\n border: '8px solid transparent',\n borderBottomColor: 'rgba(0,0,0,0.15)'\n }\n },\n 'hide-triangle': {\n triangle: {\n display: 'none'\n },\n triangleShadow: {\n display: 'none'\n }\n },\n 'top-left-triangle': {\n triangle: {\n top: '-14px',\n left: '10px'\n },\n triangleShadow: {\n top: '-16px',\n left: '9px'\n }\n },\n 'top-right-triangle': {\n triangle: {\n top: '-14px',\n right: '10px'\n },\n triangleShadow: {\n top: '-16px',\n right: '9px'\n }\n },\n 'bottom-left-triangle': {\n triangle: {\n top: '35px',\n left: '10px',\n transform: 'rotate(180deg)'\n },\n triangleShadow: {\n top: '37px',\n left: '9px',\n transform: 'rotate(180deg)'\n }\n },\n 'bottom-right-triangle': {\n triangle: {\n top: '35px',\n right: '10px',\n transform: 'rotate(180deg)'\n },\n triangleShadow: {\n top: '37px',\n right: '9px',\n transform: 'rotate(180deg)'\n }\n }\n }, passedStyles), {\n 'hide-triangle': triangle === 'hide',\n 'top-left-triangle': triangle === 'top-left',\n 'top-right-triangle': triangle === 'top-right',\n 'bottom-left-triangle': triangle === 'bottom-left',\n 'bottom-right-triangle': triangle === 'bottom-right'\n });\n\n var handleChange = function handleChange(hex, e) {\n return onChange({ hex: hex, source: 'hex' }, e);\n };\n\n return React.createElement(\n 'div',\n { style: styles.card, className: 'github-picker ' + className },\n React.createElement('div', { style: styles.triangleShadow }),\n React.createElement('div', { style: styles.triangle }),\n map(colors, function (c) {\n return React.createElement(GithubSwatch, {\n color: c,\n key: c,\n onClick: handleChange,\n onSwatchHover: onSwatchHover\n });\n })\n );\n};\n\nGithub.propTypes = {\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n colors: PropTypes.arrayOf(PropTypes.string),\n triangle: PropTypes.oneOf(['hide', 'top-left', 'top-right', 'bottom-left', 'bottom-right']),\n styles: PropTypes.object\n};\n\nGithub.defaultProps = {\n width: 200,\n colors: ['#B80000', '#DB3E00', '#FCCB00', '#008B02', '#006B76', '#1273DE', '#004DCF', '#5300EB', '#EB9694', '#FAD0C3', '#FEF3BD', '#C1E1C5', '#BEDADC', '#C4DEF6', '#BED3F3', '#D4C4FB'],\n triangle: 'top-left',\n styles: {}\n};\n\nexport default ColorWrap(Github);","import React from 'react';\nimport reactCSS from 'reactcss';\n\nexport var SliderPointer = function SliderPointer(_ref) {\n var direction = _ref.direction;\n\n var styles = reactCSS({\n 'default': {\n picker: {\n width: '18px',\n height: '18px',\n borderRadius: '50%',\n transform: 'translate(-9px, -1px)',\n backgroundColor: 'rgb(248, 248, 248)',\n boxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.37)'\n }\n },\n 'vertical': {\n picker: {\n transform: 'translate(-3px, -9px)'\n }\n }\n }, { vertical: direction === 'vertical' });\n\n return React.createElement('div', { style: styles.picker });\n};\n\nexport default SliderPointer;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport merge from 'lodash-es/merge';\n\nimport { ColorWrap, Hue } from '../common';\nimport HuePointer from './HuePointer';\n\nexport var HuePicker = function HuePicker(_ref) {\n var width = _ref.width,\n height = _ref.height,\n onChange = _ref.onChange,\n hsl = _ref.hsl,\n direction = _ref.direction,\n pointer = _ref.pointer,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = reactCSS(merge({\n 'default': {\n picker: {\n position: 'relative',\n width: width,\n height: height\n },\n hue: {\n radius: '2px'\n }\n }\n }, passedStyles));\n\n // Overwrite to provide pure hue color\n var handleChange = function handleChange(data) {\n return onChange({ a: 1, h: data.h, l: 0.5, s: 1 });\n };\n\n return React.createElement(\n 'div',\n { style: styles.picker, className: 'hue-picker ' + className },\n React.createElement(Hue, _extends({}, styles.hue, {\n hsl: hsl,\n pointer: pointer,\n onChange: handleChange,\n direction: direction\n }))\n );\n};\n\nHuePicker.propTypes = {\n styles: PropTypes.object\n};\nHuePicker.defaultProps = {\n width: '316px',\n height: '16px',\n direction: 'horizontal',\n pointer: HuePointer,\n styles: {}\n};\n\nexport default ColorWrap(HuePicker);","import React from 'react';\nimport reactCSS from 'reactcss';\nimport merge from 'lodash-es/merge';\nimport * as color from '../../helpers/color';\n\nimport { ColorWrap, EditableInput, Raised } from '../common';\n\nexport var Material = function Material(_ref) {\n var onChange = _ref.onChange,\n hex = _ref.hex,\n rgb = _ref.rgb,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = reactCSS(merge({\n 'default': {\n material: {\n width: '98px',\n height: '98px',\n padding: '16px',\n fontFamily: 'Roboto'\n },\n HEXwrap: {\n position: 'relative'\n },\n HEXinput: {\n width: '100%',\n marginTop: '12px',\n fontSize: '15px',\n color: '#333',\n padding: '0px',\n border: '0px',\n borderBottom: '2px solid ' + hex,\n outline: 'none',\n height: '30px'\n },\n HEXlabel: {\n position: 'absolute',\n top: '0px',\n left: '0px',\n fontSize: '11px',\n color: '#999999',\n textTransform: 'capitalize'\n },\n Hex: {\n style: {}\n },\n RGBwrap: {\n position: 'relative'\n },\n RGBinput: {\n width: '100%',\n marginTop: '12px',\n fontSize: '15px',\n color: '#333',\n padding: '0px',\n border: '0px',\n borderBottom: '1px solid #eee',\n outline: 'none',\n height: '30px'\n },\n RGBlabel: {\n position: 'absolute',\n top: '0px',\n left: '0px',\n fontSize: '11px',\n color: '#999999',\n textTransform: 'capitalize'\n },\n split: {\n display: 'flex',\n marginRight: '-10px',\n paddingTop: '11px'\n },\n third: {\n flex: '1',\n paddingRight: '10px'\n }\n }\n }, passedStyles));\n\n var handleChange = function handleChange(data, e) {\n if (data.hex) {\n color.isValidHex(data.hex) && onChange({\n hex: data.hex,\n source: 'hex'\n }, e);\n } else if (data.r || data.g || data.b) {\n onChange({\n r: data.r || rgb.r,\n g: data.g || rgb.g,\n b: data.b || rgb.b,\n source: 'rgb'\n }, e);\n }\n };\n\n return React.createElement(\n Raised,\n { styles: passedStyles },\n React.createElement(\n 'div',\n { style: styles.material, className: 'material-picker ' + className },\n React.createElement(EditableInput, {\n style: { wrap: styles.HEXwrap, input: styles.HEXinput, label: styles.HEXlabel },\n label: 'hex',\n value: hex,\n onChange: handleChange\n }),\n React.createElement(\n 'div',\n { style: styles.split, className: 'flexbox-fix' },\n React.createElement(\n 'div',\n { style: styles.third },\n React.createElement(EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'r', value: rgb.r,\n onChange: handleChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.third },\n React.createElement(EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'g',\n value: rgb.g,\n onChange: handleChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.third },\n React.createElement(EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'b',\n value: rgb.b,\n onChange: handleChange\n })\n )\n )\n )\n );\n};\n\nexport default ColorWrap(Material);","import React from 'react';\nimport reactCSS from 'reactcss';\nimport * as color from '../../helpers/color';\n\nimport { EditableInput } from '../common';\n\nexport var PhotoshopPicker = function PhotoshopPicker(_ref) {\n var onChange = _ref.onChange,\n rgb = _ref.rgb,\n hsv = _ref.hsv,\n hex = _ref.hex;\n\n var styles = reactCSS({\n 'default': {\n fields: {\n paddingTop: '5px',\n paddingBottom: '9px',\n width: '80px',\n position: 'relative'\n },\n divider: {\n height: '5px'\n },\n RGBwrap: {\n position: 'relative'\n },\n RGBinput: {\n marginLeft: '40%',\n width: '40%',\n height: '18px',\n border: '1px solid #888888',\n boxShadow: 'inset 0 1px 1px rgba(0,0,0,.1), 0 1px 0 0 #ECECEC',\n marginBottom: '5px',\n fontSize: '13px',\n paddingLeft: '3px',\n marginRight: '10px'\n },\n RGBlabel: {\n left: '0px',\n top: '0px',\n width: '34px',\n textTransform: 'uppercase',\n fontSize: '13px',\n height: '18px',\n lineHeight: '22px',\n position: 'absolute'\n },\n HEXwrap: {\n position: 'relative'\n },\n HEXinput: {\n marginLeft: '20%',\n width: '80%',\n height: '18px',\n border: '1px solid #888888',\n boxShadow: 'inset 0 1px 1px rgba(0,0,0,.1), 0 1px 0 0 #ECECEC',\n marginBottom: '6px',\n fontSize: '13px',\n paddingLeft: '3px'\n },\n HEXlabel: {\n position: 'absolute',\n top: '0px',\n left: '0px',\n width: '14px',\n textTransform: 'uppercase',\n fontSize: '13px',\n height: '18px',\n lineHeight: '22px'\n },\n fieldSymbols: {\n position: 'absolute',\n top: '5px',\n right: '-7px',\n fontSize: '13px'\n },\n symbol: {\n height: '20px',\n lineHeight: '22px',\n paddingBottom: '7px'\n }\n }\n });\n\n var handleChange = function handleChange(data, e) {\n if (data['#']) {\n color.isValidHex(data['#']) && onChange({\n hex: data['#'],\n source: 'hex'\n }, e);\n } else if (data.r || data.g || data.b) {\n onChange({\n r: data.r || rgb.r,\n g: data.g || rgb.g,\n b: data.b || rgb.b,\n source: 'rgb'\n }, e);\n } else if (data.h || data.s || data.v) {\n onChange({\n h: data.h || hsv.h,\n s: data.s || hsv.s,\n v: data.v || hsv.v,\n source: 'hsv'\n }, e);\n }\n };\n\n return React.createElement(\n 'div',\n { style: styles.fields },\n React.createElement(EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'h',\n value: Math.round(hsv.h),\n onChange: handleChange\n }),\n React.createElement(EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 's',\n value: Math.round(hsv.s * 100),\n onChange: handleChange\n }),\n React.createElement(EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'v',\n value: Math.round(hsv.v * 100),\n onChange: handleChange\n }),\n React.createElement('div', { style: styles.divider }),\n React.createElement(EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'r',\n value: rgb.r,\n onChange: handleChange\n }),\n React.createElement(EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'g',\n value: rgb.g,\n onChange: handleChange\n }),\n React.createElement(EditableInput, {\n style: { wrap: styles.RGBwrap, input: styles.RGBinput, label: styles.RGBlabel },\n label: 'b',\n value: rgb.b,\n onChange: handleChange\n }),\n React.createElement('div', { style: styles.divider }),\n React.createElement(EditableInput, {\n style: { wrap: styles.HEXwrap, input: styles.HEXinput, label: styles.HEXlabel },\n label: '#',\n value: hex.replace('#', ''),\n onChange: handleChange\n }),\n React.createElement(\n 'div',\n { style: styles.fieldSymbols },\n React.createElement(\n 'div',\n { style: styles.symbol },\n '\\xB0'\n ),\n React.createElement(\n 'div',\n { style: styles.symbol },\n '%'\n ),\n React.createElement(\n 'div',\n { style: styles.symbol },\n '%'\n )\n )\n );\n};\n\nexport default PhotoshopPicker;","import React from 'react';\nimport reactCSS from 'reactcss';\n\nexport var PhotoshopPointerCircle = function PhotoshopPointerCircle(_ref) {\n var hsl = _ref.hsl;\n\n var styles = reactCSS({\n 'default': {\n picker: {\n width: '12px',\n height: '12px',\n borderRadius: '6px',\n boxShadow: 'inset 0 0 0 1px #fff',\n transform: 'translate(-6px, -6px)'\n }\n },\n 'black-outline': {\n picker: {\n boxShadow: 'inset 0 0 0 1px #000'\n }\n }\n }, { 'black-outline': hsl.l > 0.5 });\n\n return React.createElement('div', { style: styles.picker });\n};\n\nexport default PhotoshopPointerCircle;","import React from 'react';\nimport reactCSS from 'reactcss';\n\nexport var PhotoshopPointerCircle = function PhotoshopPointerCircle() {\n var styles = reactCSS({\n 'default': {\n triangle: {\n width: 0,\n height: 0,\n borderStyle: 'solid',\n borderWidth: '4px 0 4px 6px',\n borderColor: 'transparent transparent transparent #fff',\n position: 'absolute',\n top: '1px',\n left: '1px'\n },\n triangleBorder: {\n width: 0,\n height: 0,\n borderStyle: 'solid',\n borderWidth: '5px 0 5px 8px',\n borderColor: 'transparent transparent transparent #555'\n },\n\n left: {\n Extend: 'triangleBorder',\n transform: 'translate(-13px, -4px)'\n },\n leftInside: {\n Extend: 'triangle',\n transform: 'translate(-8px, -5px)'\n },\n\n right: {\n Extend: 'triangleBorder',\n transform: 'translate(20px, -14px) rotate(180deg)'\n },\n rightInside: {\n Extend: 'triangle',\n transform: 'translate(-8px, -5px)'\n }\n }\n });\n\n return React.createElement(\n 'div',\n { style: styles.pointer },\n React.createElement(\n 'div',\n { style: styles.left },\n React.createElement('div', { style: styles.leftInside })\n ),\n React.createElement(\n 'div',\n { style: styles.right },\n React.createElement('div', { style: styles.rightInside })\n )\n );\n};\n\nexport default PhotoshopPointerCircle;","import React from 'react';\nimport reactCSS from 'reactcss';\n\nexport var PhotoshopButton = function PhotoshopButton(_ref) {\n var onClick = _ref.onClick,\n label = _ref.label,\n children = _ref.children,\n active = _ref.active;\n\n var styles = reactCSS({\n 'default': {\n button: {\n backgroundImage: 'linear-gradient(-180deg, #FFFFFF 0%, #E6E6E6 100%)',\n border: '1px solid #878787',\n borderRadius: '2px',\n height: '20px',\n boxShadow: '0 1px 0 0 #EAEAEA',\n fontSize: '14px',\n color: '#000',\n lineHeight: '20px',\n textAlign: 'center',\n marginBottom: '10px',\n cursor: 'pointer'\n }\n },\n 'active': {\n button: {\n boxShadow: '0 0 0 1px #878787'\n }\n }\n }, { active: active });\n\n return React.createElement(\n 'div',\n { style: styles.button, onClick: onClick },\n label || children\n );\n};\n\nexport default PhotoshopButton;","import React from 'react';\nimport reactCSS from 'reactcss';\n\nexport var PhotoshopPreviews = function PhotoshopPreviews(_ref) {\n var rgb = _ref.rgb,\n currentColor = _ref.currentColor;\n\n var styles = reactCSS({\n 'default': {\n swatches: {\n border: '1px solid #B3B3B3',\n borderBottom: '1px solid #F0F0F0',\n marginBottom: '2px',\n marginTop: '1px'\n },\n new: {\n height: '34px',\n background: 'rgb(' + rgb.r + ',' + rgb.g + ', ' + rgb.b + ')',\n boxShadow: 'inset 1px 0 0 #000, inset -1px 0 0 #000, inset 0 1px 0 #000'\n },\n current: {\n height: '34px',\n background: currentColor,\n boxShadow: 'inset 1px 0 0 #000, inset -1px 0 0 #000, inset 0 -1px 0 #000'\n },\n label: {\n fontSize: '14px',\n color: '#000',\n textAlign: 'center'\n }\n }\n });\n\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'div',\n { style: styles.label },\n 'new'\n ),\n React.createElement(\n 'div',\n { style: styles.swatches },\n React.createElement('div', { style: styles.new }),\n React.createElement('div', { style: styles.current })\n ),\n React.createElement(\n 'div',\n { style: styles.label },\n 'current'\n )\n );\n};\n\nexport default PhotoshopPreviews;","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport merge from 'lodash-es/merge';\n\nimport { ColorWrap, Saturation, Hue } from '../common';\nimport PhotoshopFields from './PhotoshopFields';\nimport PhotoshopPointerCircle from './PhotoshopPointerCircle';\nimport PhotoshopPointer from './PhotoshopPointer';\nimport PhotoshopButton from './PhotoshopButton';\nimport PhotoshopPreviews from './PhotoshopPreviews';\n\nexport var Photoshop = function (_React$Component) {\n _inherits(Photoshop, _React$Component);\n\n function Photoshop(props) {\n _classCallCheck(this, Photoshop);\n\n var _this = _possibleConstructorReturn(this, (Photoshop.__proto__ || Object.getPrototypeOf(Photoshop)).call(this));\n\n _this.state = {\n currentColor: props.hex\n };\n return _this;\n }\n\n _createClass(Photoshop, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n _props$styles = _props.styles,\n passedStyles = _props$styles === undefined ? {} : _props$styles,\n _props$className = _props.className,\n className = _props$className === undefined ? '' : _props$className;\n\n var styles = reactCSS(merge({\n 'default': {\n picker: {\n background: '#DCDCDC',\n borderRadius: '4px',\n boxShadow: '0 0 0 1px rgba(0,0,0,.25), 0 8px 16px rgba(0,0,0,.15)',\n boxSizing: 'initial',\n width: '513px'\n },\n head: {\n backgroundImage: 'linear-gradient(-180deg, #F0F0F0 0%, #D4D4D4 100%)',\n borderBottom: '1px solid #B1B1B1',\n boxShadow: 'inset 0 1px 0 0 rgba(255,255,255,.2), inset 0 -1px 0 0 rgba(0,0,0,.02)',\n height: '23px',\n lineHeight: '24px',\n borderRadius: '4px 4px 0 0',\n fontSize: '13px',\n color: '#4D4D4D',\n textAlign: 'center'\n },\n body: {\n padding: '15px 15px 0',\n display: 'flex'\n },\n saturation: {\n width: '256px',\n height: '256px',\n position: 'relative',\n border: '2px solid #B3B3B3',\n borderBottom: '2px solid #F0F0F0',\n overflow: 'hidden'\n },\n hue: {\n position: 'relative',\n height: '256px',\n width: '19px',\n marginLeft: '10px',\n border: '2px solid #B3B3B3',\n borderBottom: '2px solid #F0F0F0'\n },\n controls: {\n width: '180px',\n marginLeft: '10px'\n },\n top: {\n display: 'flex'\n },\n previews: {\n width: '60px'\n },\n actions: {\n flex: '1',\n marginLeft: '20px'\n }\n }\n }, passedStyles));\n\n return React.createElement(\n 'div',\n { style: styles.picker, className: 'photoshop-picker ' + className },\n React.createElement(\n 'div',\n { style: styles.head },\n this.props.header\n ),\n React.createElement(\n 'div',\n { style: styles.body, className: 'flexbox-fix' },\n React.createElement(\n 'div',\n { style: styles.saturation },\n React.createElement(Saturation, {\n hsl: this.props.hsl,\n hsv: this.props.hsv,\n pointer: PhotoshopPointerCircle,\n onChange: this.props.onChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.hue },\n React.createElement(Hue, {\n direction: 'vertical',\n hsl: this.props.hsl,\n pointer: PhotoshopPointer,\n onChange: this.props.onChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.controls },\n React.createElement(\n 'div',\n { style: styles.top, className: 'flexbox-fix' },\n React.createElement(\n 'div',\n { style: styles.previews },\n React.createElement(PhotoshopPreviews, {\n rgb: this.props.rgb,\n currentColor: this.state.currentColor\n })\n ),\n React.createElement(\n 'div',\n { style: styles.actions },\n React.createElement(PhotoshopButton, { label: 'OK', onClick: this.props.onAccept, active: true }),\n React.createElement(PhotoshopButton, { label: 'Cancel', onClick: this.props.onCancel }),\n React.createElement(PhotoshopFields, {\n onChange: this.props.onChange,\n rgb: this.props.rgb,\n hsv: this.props.hsv,\n hex: this.props.hex\n })\n )\n )\n )\n )\n );\n }\n }]);\n\n return Photoshop;\n}(React.Component);\n\nPhotoshop.propTypes = {\n header: PropTypes.string,\n styles: PropTypes.object\n};\n\nPhotoshop.defaultProps = {\n header: 'Color Picker',\n styles: {}\n};\n\nexport default ColorWrap(Photoshop);","/* eslint-disable no-param-reassign */\n\nimport React from 'react';\nimport reactCSS from 'reactcss';\nimport * as color from '../../helpers/color';\n\nimport { EditableInput } from '../common';\n\nexport var SketchFields = function SketchFields(_ref) {\n var onChange = _ref.onChange,\n rgb = _ref.rgb,\n hsl = _ref.hsl,\n hex = _ref.hex,\n disableAlpha = _ref.disableAlpha;\n\n var styles = reactCSS({\n 'default': {\n fields: {\n display: 'flex',\n paddingTop: '4px'\n },\n single: {\n flex: '1',\n paddingLeft: '6px'\n },\n alpha: {\n flex: '1',\n paddingLeft: '6px'\n },\n double: {\n flex: '2'\n },\n input: {\n width: '80%',\n padding: '4px 10% 3px',\n border: 'none',\n boxShadow: 'inset 0 0 0 1px #ccc',\n fontSize: '11px'\n },\n label: {\n display: 'block',\n textAlign: 'center',\n fontSize: '11px',\n color: '#222',\n paddingTop: '3px',\n paddingBottom: '4px',\n textTransform: 'capitalize'\n }\n },\n 'disableAlpha': {\n alpha: {\n display: 'none'\n }\n }\n }, { disableAlpha: disableAlpha });\n\n var handleChange = function handleChange(data, e) {\n if (data.hex) {\n color.isValidHex(data.hex) && onChange({\n hex: data.hex,\n source: 'hex'\n }, e);\n } else if (data.r || data.g || data.b) {\n onChange({\n r: data.r || rgb.r,\n g: data.g || rgb.g,\n b: data.b || rgb.b,\n a: rgb.a,\n source: 'rgb'\n }, e);\n } else if (data.a) {\n if (data.a < 0) {\n data.a = 0;\n } else if (data.a > 100) {\n data.a = 100;\n }\n\n data.a /= 100;\n onChange({\n h: hsl.h,\n s: hsl.s,\n l: hsl.l,\n a: data.a,\n source: 'rgb'\n }, e);\n }\n };\n\n return React.createElement(\n 'div',\n { style: styles.fields, className: 'flexbox-fix' },\n React.createElement(\n 'div',\n { style: styles.double },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'hex',\n value: hex.replace('#', ''),\n onChange: handleChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.single },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'r',\n value: rgb.r,\n onChange: handleChange,\n dragLabel: 'true',\n dragMax: '255'\n })\n ),\n React.createElement(\n 'div',\n { style: styles.single },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'g',\n value: rgb.g,\n onChange: handleChange,\n dragLabel: 'true',\n dragMax: '255'\n })\n ),\n React.createElement(\n 'div',\n { style: styles.single },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'b',\n value: rgb.b,\n onChange: handleChange,\n dragLabel: 'true',\n dragMax: '255'\n })\n ),\n React.createElement(\n 'div',\n { style: styles.alpha },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'a',\n value: Math.round(rgb.a * 100),\n onChange: handleChange,\n dragLabel: 'true',\n dragMax: '100'\n })\n )\n );\n};\n\nexport default SketchFields;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\n\nimport { Swatch } from '../common';\n\nexport var SketchPresetColors = function SketchPresetColors(_ref) {\n var colors = _ref.colors,\n _ref$onClick = _ref.onClick,\n onClick = _ref$onClick === undefined ? function () {} : _ref$onClick,\n onSwatchHover = _ref.onSwatchHover;\n\n var styles = reactCSS({\n 'default': {\n colors: {\n margin: '0 -10px',\n padding: '10px 0 0 10px',\n borderTop: '1px solid #eee',\n display: 'flex',\n flexWrap: 'wrap',\n position: 'relative'\n },\n swatchWrap: {\n width: '16px',\n height: '16px',\n margin: '0 10px 10px 0'\n },\n swatch: {\n borderRadius: '3px',\n boxShadow: 'inset 0 0 0 1px rgba(0,0,0,.15)'\n }\n },\n 'no-presets': {\n colors: {\n display: 'none'\n }\n }\n }, {\n 'no-presets': !colors || !colors.length\n });\n\n var handleClick = function handleClick(hex, e) {\n onClick({\n hex: hex,\n source: 'hex'\n }, e);\n };\n\n return React.createElement(\n 'div',\n { style: styles.colors, className: 'flexbox-fix' },\n colors.map(function (colorObjOrString) {\n var c = typeof colorObjOrString === 'string' ? { color: colorObjOrString } : colorObjOrString;\n var key = '' + c.color + (c.title || '');\n return React.createElement(\n 'div',\n { key: key, style: styles.swatchWrap },\n React.createElement(Swatch, _extends({}, c, {\n style: styles.swatch,\n onClick: handleClick,\n onHover: onSwatchHover,\n focusStyle: {\n boxShadow: 'inset 0 0 0 1px rgba(0,0,0,.15), 0 0 4px ' + c.color\n }\n }))\n );\n })\n );\n};\n\nSketchPresetColors.propTypes = {\n colors: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.shape({\n color: PropTypes.string,\n title: PropTypes.string\n })])).isRequired\n};\n\nexport default SketchPresetColors;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport merge from 'lodash-es/merge';\n\nimport { ColorWrap, Saturation, Hue, Alpha, Checkboard } from '../common';\nimport SketchFields from './SketchFields';\nimport SketchPresetColors from './SketchPresetColors';\n\nexport var Sketch = function Sketch(_ref) {\n var width = _ref.width,\n rgb = _ref.rgb,\n hex = _ref.hex,\n hsv = _ref.hsv,\n hsl = _ref.hsl,\n onChange = _ref.onChange,\n onSwatchHover = _ref.onSwatchHover,\n disableAlpha = _ref.disableAlpha,\n presetColors = _ref.presetColors,\n renderers = _ref.renderers,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = reactCSS(merge({\n 'default': _extends({\n picker: {\n width: width,\n padding: '10px 10px 0',\n boxSizing: 'initial',\n background: '#fff',\n borderRadius: '4px',\n boxShadow: '0 0 0 1px rgba(0,0,0,.15), 0 8px 16px rgba(0,0,0,.15)'\n },\n saturation: {\n width: '100%',\n paddingBottom: '75%',\n position: 'relative',\n overflow: 'hidden'\n },\n Saturation: {\n radius: '3px',\n shadow: 'inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)'\n },\n controls: {\n display: 'flex'\n },\n sliders: {\n padding: '4px 0',\n flex: '1'\n },\n color: {\n width: '24px',\n height: '24px',\n position: 'relative',\n marginTop: '4px',\n marginLeft: '4px',\n borderRadius: '3px'\n },\n activeColor: {\n absolute: '0px 0px 0px 0px',\n borderRadius: '2px',\n background: 'rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ',' + rgb.a + ')',\n boxShadow: 'inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)'\n },\n hue: {\n position: 'relative',\n height: '10px',\n overflow: 'hidden'\n },\n Hue: {\n radius: '2px',\n shadow: 'inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)'\n },\n\n alpha: {\n position: 'relative',\n height: '10px',\n marginTop: '4px',\n overflow: 'hidden'\n },\n Alpha: {\n radius: '2px',\n shadow: 'inset 0 0 0 1px rgba(0,0,0,.15), inset 0 0 4px rgba(0,0,0,.25)'\n }\n }, passedStyles),\n 'disableAlpha': {\n color: {\n height: '10px'\n },\n hue: {\n height: '10px'\n },\n alpha: {\n display: 'none'\n }\n }\n }, passedStyles), { disableAlpha: disableAlpha });\n\n return React.createElement(\n 'div',\n { style: styles.picker, className: 'sketch-picker ' + className },\n React.createElement(\n 'div',\n { style: styles.saturation },\n React.createElement(Saturation, {\n style: styles.Saturation,\n hsl: hsl,\n hsv: hsv,\n onChange: onChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.controls, className: 'flexbox-fix' },\n React.createElement(\n 'div',\n { style: styles.sliders },\n React.createElement(\n 'div',\n { style: styles.hue },\n React.createElement(Hue, {\n style: styles.Hue,\n hsl: hsl,\n onChange: onChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.alpha },\n React.createElement(Alpha, {\n style: styles.Alpha,\n rgb: rgb,\n hsl: hsl,\n renderers: renderers,\n onChange: onChange\n })\n )\n ),\n React.createElement(\n 'div',\n { style: styles.color },\n React.createElement(Checkboard, null),\n React.createElement('div', { style: styles.activeColor })\n )\n ),\n React.createElement(SketchFields, {\n rgb: rgb,\n hsl: hsl,\n hex: hex,\n onChange: onChange,\n disableAlpha: disableAlpha\n }),\n React.createElement(SketchPresetColors, {\n colors: presetColors,\n onClick: onChange,\n onSwatchHover: onSwatchHover\n })\n );\n};\n\nSketch.propTypes = {\n disableAlpha: PropTypes.bool,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n styles: PropTypes.object\n};\n\nSketch.defaultProps = {\n disableAlpha: false,\n width: 200,\n styles: {},\n presetColors: ['#D0021B', '#F5A623', '#F8E71C', '#8B572A', '#7ED321', '#417505', '#BD10E0', '#9013FE', '#4A90E2', '#50E3C2', '#B8E986', '#000000', '#4A4A4A', '#9B9B9B', '#FFFFFF']\n};\n\nexport default ColorWrap(Sketch);","import React from 'react';\nimport reactCSS from 'reactcss';\n\nexport var SliderSwatch = function SliderSwatch(_ref) {\n var hsl = _ref.hsl,\n offset = _ref.offset,\n _ref$onClick = _ref.onClick,\n onClick = _ref$onClick === undefined ? function () {} : _ref$onClick,\n active = _ref.active,\n first = _ref.first,\n last = _ref.last;\n\n var styles = reactCSS({\n 'default': {\n swatch: {\n height: '12px',\n background: 'hsl(' + hsl.h + ', 50%, ' + offset * 100 + '%)',\n cursor: 'pointer'\n }\n },\n 'first': {\n swatch: {\n borderRadius: '2px 0 0 2px'\n }\n },\n 'last': {\n swatch: {\n borderRadius: '0 2px 2px 0'\n }\n },\n 'active': {\n swatch: {\n transform: 'scaleY(1.8)',\n borderRadius: '3.6px/2px'\n }\n }\n }, { active: active, first: first, last: last });\n\n var handleClick = function handleClick(e) {\n return onClick({\n h: hsl.h,\n s: 0.5,\n l: offset,\n source: 'hsl'\n }, e);\n };\n\n return React.createElement('div', { style: styles.swatch, onClick: handleClick });\n};\n\nexport default SliderSwatch;","import React from 'react';\nimport reactCSS from 'reactcss';\n\nimport SliderSwatch from './SliderSwatch';\n\nexport var SliderSwatches = function SliderSwatches(_ref) {\n var onClick = _ref.onClick,\n hsl = _ref.hsl;\n\n var styles = reactCSS({\n 'default': {\n swatches: {\n marginTop: '20px'\n },\n swatch: {\n boxSizing: 'border-box',\n width: '20%',\n paddingRight: '1px',\n float: 'left'\n },\n clear: {\n clear: 'both'\n }\n }\n });\n\n // Acceptible difference in floating point equality\n var epsilon = 0.1;\n\n return React.createElement(\n 'div',\n { style: styles.swatches },\n React.createElement(\n 'div',\n { style: styles.swatch },\n React.createElement(SliderSwatch, {\n hsl: hsl,\n offset: '.80',\n active: Math.abs(hsl.l - 0.80) < epsilon && Math.abs(hsl.s - 0.50) < epsilon,\n onClick: onClick,\n first: true\n })\n ),\n React.createElement(\n 'div',\n { style: styles.swatch },\n React.createElement(SliderSwatch, {\n hsl: hsl,\n offset: '.65',\n active: Math.abs(hsl.l - 0.65) < epsilon && Math.abs(hsl.s - 0.50) < epsilon,\n onClick: onClick\n })\n ),\n React.createElement(\n 'div',\n { style: styles.swatch },\n React.createElement(SliderSwatch, {\n hsl: hsl,\n offset: '.50',\n active: Math.abs(hsl.l - 0.50) < epsilon && Math.abs(hsl.s - 0.50) < epsilon,\n onClick: onClick\n })\n ),\n React.createElement(\n 'div',\n { style: styles.swatch },\n React.createElement(SliderSwatch, {\n hsl: hsl,\n offset: '.35',\n active: Math.abs(hsl.l - 0.35) < epsilon && Math.abs(hsl.s - 0.50) < epsilon,\n onClick: onClick\n })\n ),\n React.createElement(\n 'div',\n { style: styles.swatch },\n React.createElement(SliderSwatch, {\n hsl: hsl,\n offset: '.20',\n active: Math.abs(hsl.l - 0.20) < epsilon && Math.abs(hsl.s - 0.50) < epsilon,\n onClick: onClick,\n last: true\n })\n ),\n React.createElement('div', { style: styles.clear })\n );\n};\n\nexport default SliderSwatches;","import React from 'react';\nimport reactCSS from 'reactcss';\n\nexport var SliderPointer = function SliderPointer() {\n var styles = reactCSS({\n 'default': {\n picker: {\n width: '14px',\n height: '14px',\n borderRadius: '6px',\n transform: 'translate(-7px, -1px)',\n backgroundColor: 'rgb(248, 248, 248)',\n boxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.37)'\n }\n }\n });\n\n return React.createElement('div', { style: styles.picker });\n};\n\nexport default SliderPointer;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport merge from 'lodash-es/merge';\n\nimport { ColorWrap, Hue } from '../common';\nimport SliderSwatches from './SliderSwatches';\nimport SliderPointer from './SliderPointer';\n\nexport var Slider = function Slider(_ref) {\n var hsl = _ref.hsl,\n onChange = _ref.onChange,\n pointer = _ref.pointer,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = reactCSS(merge({\n 'default': {\n hue: {\n height: '12px',\n position: 'relative'\n },\n Hue: {\n radius: '2px'\n }\n }\n }, passedStyles));\n\n return React.createElement(\n 'div',\n { style: styles.wrap || {}, className: 'slider-picker ' + className },\n React.createElement(\n 'div',\n { style: styles.hue },\n React.createElement(Hue, {\n style: styles.Hue,\n hsl: hsl,\n pointer: pointer,\n onChange: onChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.swatches },\n React.createElement(SliderSwatches, { hsl: hsl, onClick: onChange })\n )\n );\n};\n\nSlider.propTypes = {\n styles: PropTypes.object\n};\nSlider.defaultProps = {\n pointer: SliderPointer,\n styles: {}\n};\n\nexport default ColorWrap(Slider);","import React from 'react';\nimport reactCSS from 'reactcss';\nimport * as colorUtils from '../../helpers/color';\n\nimport { Swatch } from '../common';\nimport CheckIcon from '@icons/material/CheckIcon';\n\nexport var SwatchesColor = function SwatchesColor(_ref) {\n var color = _ref.color,\n _ref$onClick = _ref.onClick,\n onClick = _ref$onClick === undefined ? function () {} : _ref$onClick,\n onSwatchHover = _ref.onSwatchHover,\n first = _ref.first,\n last = _ref.last,\n active = _ref.active;\n\n var styles = reactCSS({\n 'default': {\n color: {\n width: '40px',\n height: '24px',\n cursor: 'pointer',\n background: color,\n marginBottom: '1px'\n },\n check: {\n color: colorUtils.getContrastingColor(color),\n marginLeft: '8px',\n display: 'none'\n }\n },\n 'first': {\n color: {\n overflow: 'hidden',\n borderRadius: '2px 2px 0 0'\n }\n },\n 'last': {\n color: {\n overflow: 'hidden',\n borderRadius: '0 0 2px 2px'\n }\n },\n 'active': {\n check: {\n display: 'block'\n }\n },\n 'color-#FFFFFF': {\n color: {\n boxShadow: 'inset 0 0 0 1px #ddd'\n },\n check: {\n color: '#333'\n }\n },\n 'transparent': {\n check: {\n color: '#333'\n }\n }\n }, {\n first: first,\n last: last,\n active: active,\n 'color-#FFFFFF': color === '#FFFFFF',\n 'transparent': color === 'transparent'\n });\n\n return React.createElement(\n Swatch,\n {\n color: color,\n style: styles.color,\n onClick: onClick,\n onHover: onSwatchHover,\n focusStyle: { boxShadow: '0 0 4px ' + color }\n },\n React.createElement(\n 'div',\n { style: styles.check },\n React.createElement(CheckIcon, null)\n )\n );\n};\n\nexport default SwatchesColor;","import React from 'react';\nimport reactCSS from 'reactcss';\nimport map from 'lodash-es/map';\n\nimport SwatchesColor from './SwatchesColor';\n\nexport var SwatchesGroup = function SwatchesGroup(_ref) {\n var onClick = _ref.onClick,\n onSwatchHover = _ref.onSwatchHover,\n group = _ref.group,\n active = _ref.active;\n\n var styles = reactCSS({\n 'default': {\n group: {\n paddingBottom: '10px',\n width: '40px',\n float: 'left',\n marginRight: '10px'\n }\n }\n });\n\n return React.createElement(\n 'div',\n { style: styles.group },\n map(group, function (color, i) {\n return React.createElement(SwatchesColor, {\n key: color,\n color: color,\n active: color.toLowerCase() === active,\n first: i === 0,\n last: i === group.length - 1,\n onClick: onClick,\n onSwatchHover: onSwatchHover\n });\n })\n );\n};\n\nexport default SwatchesGroup;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport map from 'lodash-es/map';\nimport merge from 'lodash-es/merge';\nimport * as material from 'material-colors';\n\nimport { ColorWrap, Raised } from '../common';\nimport SwatchesGroup from './SwatchesGroup';\n\nexport var Swatches = function Swatches(_ref) {\n var width = _ref.width,\n height = _ref.height,\n onChange = _ref.onChange,\n onSwatchHover = _ref.onSwatchHover,\n colors = _ref.colors,\n hex = _ref.hex,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = reactCSS(merge({\n 'default': {\n picker: {\n width: width,\n height: height\n },\n overflow: {\n height: height,\n overflowY: 'scroll'\n },\n body: {\n padding: '16px 0 6px 16px'\n },\n clear: {\n clear: 'both'\n }\n }\n }, passedStyles));\n\n var handleChange = function handleChange(data, e) {\n return onChange({ hex: data, source: 'hex' }, e);\n };\n\n return React.createElement(\n 'div',\n { style: styles.picker, className: 'swatches-picker ' + className },\n React.createElement(\n Raised,\n null,\n React.createElement(\n 'div',\n { style: styles.overflow },\n React.createElement(\n 'div',\n { style: styles.body },\n map(colors, function (group) {\n return React.createElement(SwatchesGroup, {\n key: group.toString(),\n group: group,\n active: hex,\n onClick: handleChange,\n onSwatchHover: onSwatchHover\n });\n }),\n React.createElement('div', { style: styles.clear })\n )\n )\n )\n );\n};\n\nSwatches.propTypes = {\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n colors: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.string)),\n styles: PropTypes.object\n\n /* eslint-disable max-len */\n};Swatches.defaultProps = {\n width: 320,\n height: 240,\n colors: [[material.red['900'], material.red['700'], material.red['500'], material.red['300'], material.red['100']], [material.pink['900'], material.pink['700'], material.pink['500'], material.pink['300'], material.pink['100']], [material.purple['900'], material.purple['700'], material.purple['500'], material.purple['300'], material.purple['100']], [material.deepPurple['900'], material.deepPurple['700'], material.deepPurple['500'], material.deepPurple['300'], material.deepPurple['100']], [material.indigo['900'], material.indigo['700'], material.indigo['500'], material.indigo['300'], material.indigo['100']], [material.blue['900'], material.blue['700'], material.blue['500'], material.blue['300'], material.blue['100']], [material.lightBlue['900'], material.lightBlue['700'], material.lightBlue['500'], material.lightBlue['300'], material.lightBlue['100']], [material.cyan['900'], material.cyan['700'], material.cyan['500'], material.cyan['300'], material.cyan['100']], [material.teal['900'], material.teal['700'], material.teal['500'], material.teal['300'], material.teal['100']], ['#194D33', material.green['700'], material.green['500'], material.green['300'], material.green['100']], [material.lightGreen['900'], material.lightGreen['700'], material.lightGreen['500'], material.lightGreen['300'], material.lightGreen['100']], [material.lime['900'], material.lime['700'], material.lime['500'], material.lime['300'], material.lime['100']], [material.yellow['900'], material.yellow['700'], material.yellow['500'], material.yellow['300'], material.yellow['100']], [material.amber['900'], material.amber['700'], material.amber['500'], material.amber['300'], material.amber['100']], [material.orange['900'], material.orange['700'], material.orange['500'], material.orange['300'], material.orange['100']], [material.deepOrange['900'], material.deepOrange['700'], material.deepOrange['500'], material.deepOrange['300'], material.deepOrange['100']], [material.brown['900'], material.brown['700'], material.brown['500'], material.brown['300'], material.brown['100']], [material.blueGrey['900'], material.blueGrey['700'], material.blueGrey['500'], material.blueGrey['300'], material.blueGrey['100']], ['#000000', '#525252', '#969696', '#D9D9D9', '#FFFFFF']],\n styles: {}\n};\n\nexport default ColorWrap(Swatches);","import React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport map from 'lodash-es/map';\nimport merge from 'lodash-es/merge';\nimport * as color from '../../helpers/color';\n\nimport { ColorWrap, EditableInput, Swatch } from '../common';\n\nexport var Twitter = function Twitter(_ref) {\n var onChange = _ref.onChange,\n onSwatchHover = _ref.onSwatchHover,\n hex = _ref.hex,\n colors = _ref.colors,\n width = _ref.width,\n triangle = _ref.triangle,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = reactCSS(merge({\n 'default': {\n card: {\n width: width,\n background: '#fff',\n border: '0 solid rgba(0,0,0,0.25)',\n boxShadow: '0 1px 4px rgba(0,0,0,0.25)',\n borderRadius: '4px',\n position: 'relative'\n },\n body: {\n padding: '15px 9px 9px 15px'\n },\n label: {\n fontSize: '18px',\n color: '#fff'\n },\n triangle: {\n width: '0px',\n height: '0px',\n borderStyle: 'solid',\n borderWidth: '0 9px 10px 9px',\n borderColor: 'transparent transparent #fff transparent',\n position: 'absolute'\n },\n triangleShadow: {\n width: '0px',\n height: '0px',\n borderStyle: 'solid',\n borderWidth: '0 9px 10px 9px',\n borderColor: 'transparent transparent rgba(0,0,0,.1) transparent',\n position: 'absolute'\n },\n hash: {\n background: '#F0F0F0',\n height: '30px',\n width: '30px',\n borderRadius: '4px 0 0 4px',\n float: 'left',\n color: '#98A1A4',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n },\n input: {\n width: '100px',\n fontSize: '14px',\n color: '#666',\n border: '0px',\n outline: 'none',\n height: '28px',\n boxShadow: 'inset 0 0 0 1px #F0F0F0',\n boxSizing: 'content-box',\n borderRadius: '0 4px 4px 0',\n float: 'left',\n paddingLeft: '8px'\n },\n swatch: {\n width: '30px',\n height: '30px',\n float: 'left',\n borderRadius: '4px',\n margin: '0 6px 6px 0'\n },\n clear: {\n clear: 'both'\n }\n },\n 'hide-triangle': {\n triangle: {\n display: 'none'\n },\n triangleShadow: {\n display: 'none'\n }\n },\n 'top-left-triangle': {\n triangle: {\n top: '-10px',\n left: '12px'\n },\n triangleShadow: {\n top: '-11px',\n left: '12px'\n }\n },\n 'top-right-triangle': {\n triangle: {\n top: '-10px',\n right: '12px'\n },\n triangleShadow: {\n top: '-11px',\n right: '12px'\n }\n }\n }, passedStyles), {\n 'hide-triangle': triangle === 'hide',\n 'top-left-triangle': triangle === 'top-left',\n 'top-right-triangle': triangle === 'top-right'\n });\n\n var handleChange = function handleChange(hexcode, e) {\n color.isValidHex(hexcode) && onChange({\n hex: hexcode,\n source: 'hex'\n }, e);\n };\n\n return React.createElement(\n 'div',\n { style: styles.card, className: 'twitter-picker ' + className },\n React.createElement('div', { style: styles.triangleShadow }),\n React.createElement('div', { style: styles.triangle }),\n React.createElement(\n 'div',\n { style: styles.body },\n map(colors, function (c, i) {\n return React.createElement(Swatch, {\n key: i,\n color: c,\n hex: c,\n style: styles.swatch,\n onClick: handleChange,\n onHover: onSwatchHover,\n focusStyle: {\n boxShadow: '0 0 4px ' + c\n }\n });\n }),\n React.createElement(\n 'div',\n { style: styles.hash },\n '#'\n ),\n React.createElement(EditableInput, {\n label: null,\n style: { input: styles.input },\n value: hex.replace('#', ''),\n onChange: handleChange\n }),\n React.createElement('div', { style: styles.clear })\n )\n );\n};\n\nTwitter.propTypes = {\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n triangle: PropTypes.oneOf(['hide', 'top-left', 'top-right']),\n colors: PropTypes.arrayOf(PropTypes.string),\n styles: PropTypes.object\n};\n\nTwitter.defaultProps = {\n width: 276,\n colors: ['#FF6900', '#FCB900', '#7BDCB5', '#00D084', '#8ED1FC', '#0693E3', '#ABB8C3', '#EB144C', '#F78DA7', '#9900EF'],\n triangle: 'top-left',\n styles: {}\n};\n\nexport default ColorWrap(Twitter);","import React from 'react';\nimport reactCSS from 'reactcss';\nimport PropTypes from 'prop-types';\n\nexport var GooglePointerCircle = function GooglePointerCircle(props) {\n var styles = reactCSS({\n 'default': {\n picker: {\n width: '20px',\n height: '20px',\n borderRadius: '22px',\n border: '2px #fff solid',\n transform: 'translate(-12px, -13px)',\n background: 'hsl(' + Math.round(props.hsl.h) + ', ' + Math.round(props.hsl.s * 100) + '%, ' + Math.round(props.hsl.l * 100) + '%)'\n }\n }\n });\n\n return React.createElement('div', { style: styles.picker });\n};\n\nGooglePointerCircle.propTypes = {\n hsl: PropTypes.shape({\n h: PropTypes.number,\n s: PropTypes.number,\n l: PropTypes.number,\n a: PropTypes.number\n })\n};\n\nGooglePointerCircle.defaultProps = {\n hsl: { a: 1, h: 249.94, l: 0.2, s: 0.50 }\n};\n\nexport default GooglePointerCircle;","import React from 'react';\nimport reactCSS from 'reactcss';\nimport PropTypes from 'prop-types';\n\nexport var GooglePointer = function GooglePointer(props) {\n var styles = reactCSS({\n 'default': {\n picker: {\n width: '20px',\n height: '20px',\n borderRadius: '22px',\n transform: 'translate(-10px, -7px)',\n background: 'hsl(' + Math.round(props.hsl.h) + ', 100%, 50%)',\n border: '2px white solid'\n }\n }\n });\n\n return React.createElement('div', { style: styles.picker });\n};\n\nGooglePointer.propTypes = {\n hsl: PropTypes.shape({\n h: PropTypes.number,\n s: PropTypes.number,\n l: PropTypes.number,\n a: PropTypes.number\n })\n};\n\nGooglePointer.defaultProps = {\n hsl: { a: 1, h: 249.94, l: 0.2, s: 0.50 }\n};\n\nexport default GooglePointer;","import React from 'react';\nimport reactCSS from 'reactcss';\nimport * as color from '../../helpers/color';\nimport { EditableInput } from '../common';\n\nexport var GoogleFields = function GoogleFields(_ref) {\n var onChange = _ref.onChange,\n rgb = _ref.rgb,\n hsl = _ref.hsl,\n hex = _ref.hex,\n hsv = _ref.hsv;\n\n\n var handleChange = function handleChange(data, e) {\n if (data.hex) {\n color.isValidHex(data.hex) && onChange({\n hex: data.hex,\n source: 'hex'\n }, e);\n } else if (data.rgb) {\n var values = data.rgb.split(',');\n color.isvalidColorString(data.rgb, 'rgb') && onChange({\n r: values[0],\n g: values[1],\n b: values[2],\n a: 1,\n source: 'rgb'\n }, e);\n } else if (data.hsv) {\n var _values = data.hsv.split(',');\n if (color.isvalidColorString(data.hsv, 'hsv')) {\n _values[2] = _values[2].replace('%', '');\n _values[1] = _values[1].replace('%', '');\n _values[0] = _values[0].replace('°', '');\n if (_values[1] == 1) {\n _values[1] = 0.01;\n } else if (_values[2] == 1) {\n _values[2] = 0.01;\n }\n onChange({\n h: Number(_values[0]),\n s: Number(_values[1]),\n v: Number(_values[2]),\n source: 'hsv'\n }, e);\n }\n } else if (data.hsl) {\n var _values2 = data.hsl.split(',');\n if (color.isvalidColorString(data.hsl, 'hsl')) {\n _values2[2] = _values2[2].replace('%', '');\n _values2[1] = _values2[1].replace('%', '');\n _values2[0] = _values2[0].replace('°', '');\n if (hsvValue[1] == 1) {\n hsvValue[1] = 0.01;\n } else if (hsvValue[2] == 1) {\n hsvValue[2] = 0.01;\n }\n onChange({\n h: Number(_values2[0]),\n s: Number(_values2[1]),\n v: Number(_values2[2]),\n source: 'hsl'\n }, e);\n }\n }\n };\n\n var styles = reactCSS({\n 'default': {\n wrap: {\n display: 'flex',\n height: '100px',\n marginTop: '4px'\n },\n fields: {\n width: '100%'\n },\n column: {\n paddingTop: '10px',\n display: 'flex',\n justifyContent: 'space-between'\n },\n double: {\n padding: '0px 4.4px',\n boxSizing: 'border-box'\n },\n input: {\n width: '100%',\n height: '38px',\n boxSizing: 'border-box',\n padding: '4px 10% 3px',\n textAlign: 'center',\n border: '1px solid #dadce0',\n fontSize: '11px',\n textTransform: 'lowercase',\n borderRadius: '5px',\n outline: 'none',\n fontFamily: 'Roboto,Arial,sans-serif'\n },\n input2: {\n height: '38px',\n width: '100%',\n border: '1px solid #dadce0',\n boxSizing: 'border-box',\n fontSize: '11px',\n textTransform: 'lowercase',\n borderRadius: '5px',\n outline: 'none',\n paddingLeft: '10px',\n fontFamily: 'Roboto,Arial,sans-serif'\n },\n label: {\n textAlign: 'center',\n fontSize: '12px',\n background: '#fff',\n position: 'absolute',\n textTransform: 'uppercase',\n color: '#3c4043',\n width: '35px',\n top: '-6px',\n left: '0',\n right: '0',\n marginLeft: 'auto',\n marginRight: 'auto',\n fontFamily: 'Roboto,Arial,sans-serif'\n },\n label2: {\n left: '10px',\n textAlign: 'center',\n fontSize: '12px',\n background: '#fff',\n position: 'absolute',\n textTransform: 'uppercase',\n color: '#3c4043',\n width: '32px',\n top: '-6px',\n fontFamily: 'Roboto,Arial,sans-serif'\n },\n single: {\n flexGrow: '1',\n margin: '0px 4.4px'\n }\n }\n });\n\n var rgbValue = rgb.r + ', ' + rgb.g + ', ' + rgb.b;\n var hslValue = Math.round(hsl.h) + '\\xB0, ' + Math.round(hsl.s * 100) + '%, ' + Math.round(hsl.l * 100) + '%';\n var hsvValue = Math.round(hsv.h) + '\\xB0, ' + Math.round(hsv.s * 100) + '%, ' + Math.round(hsv.v * 100) + '%';\n\n return React.createElement(\n 'div',\n { style: styles.wrap, className: 'flexbox-fix' },\n React.createElement(\n 'div',\n { style: styles.fields },\n React.createElement(\n 'div',\n { style: styles.double },\n React.createElement(EditableInput, {\n style: { input: styles.input, label: styles.label },\n label: 'hex',\n value: hex,\n onChange: handleChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.column },\n React.createElement(\n 'div',\n { style: styles.single },\n React.createElement(EditableInput, {\n style: { input: styles.input2, label: styles.label2 },\n label: 'rgb',\n value: rgbValue,\n onChange: handleChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.single },\n React.createElement(EditableInput, {\n style: { input: styles.input2, label: styles.label2 },\n label: 'hsv',\n value: hsvValue,\n onChange: handleChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.single },\n React.createElement(EditableInput, {\n style: { input: styles.input2, label: styles.label2 },\n label: 'hsl',\n value: hslValue,\n onChange: handleChange\n })\n )\n )\n )\n );\n};\n\nexport default GoogleFields;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport reactCSS from 'reactcss';\nimport merge from 'lodash-es/merge';\n\nimport { ColorWrap, Saturation, Hue } from '../common';\nimport GooglePointerCircle from './GooglePointerCircle';\nimport GooglePointer from './GooglePointer';\nimport GoogleFields from './GoogleFields';\n\nexport var Google = function Google(_ref) {\n var width = _ref.width,\n onChange = _ref.onChange,\n rgb = _ref.rgb,\n hsl = _ref.hsl,\n hsv = _ref.hsv,\n hex = _ref.hex,\n header = _ref.header,\n _ref$styles = _ref.styles,\n passedStyles = _ref$styles === undefined ? {} : _ref$styles,\n _ref$className = _ref.className,\n className = _ref$className === undefined ? '' : _ref$className;\n\n var styles = reactCSS(merge({\n 'default': {\n picker: {\n width: width,\n background: '#fff',\n border: '1px solid #dfe1e5',\n boxSizing: 'initial',\n display: 'flex',\n flexWrap: 'wrap',\n borderRadius: '8px 8px 0px 0px'\n },\n head: {\n height: '57px',\n width: '100%',\n paddingTop: '16px',\n paddingBottom: '16px',\n paddingLeft: '16px',\n fontSize: '20px',\n boxSizing: 'border-box',\n fontFamily: 'Roboto-Regular,HelveticaNeue,Arial,sans-serif'\n },\n saturation: {\n width: '70%',\n padding: '0px',\n position: 'relative',\n overflow: 'hidden'\n },\n swatch: {\n width: '30%',\n height: '228px',\n padding: '0px',\n background: 'rgba(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ', 1)',\n position: 'relative',\n overflow: 'hidden'\n },\n body: {\n margin: 'auto',\n width: '95%'\n },\n controls: {\n display: 'flex',\n boxSizing: 'border-box',\n height: '52px',\n paddingTop: '22px'\n },\n color: {\n width: '32px'\n },\n hue: {\n height: '8px',\n position: 'relative',\n margin: '0px 16px 0px 16px',\n width: '100%'\n },\n Hue: {\n radius: '2px'\n }\n }\n }, passedStyles));\n return React.createElement(\n 'div',\n { style: styles.picker, className: 'google-picker ' + className },\n React.createElement(\n 'div',\n { style: styles.head },\n header\n ),\n React.createElement('div', { style: styles.swatch }),\n React.createElement(\n 'div',\n { style: styles.saturation },\n React.createElement(Saturation, {\n hsl: hsl,\n hsv: hsv,\n pointer: GooglePointerCircle,\n onChange: onChange\n })\n ),\n React.createElement(\n 'div',\n { style: styles.body },\n React.createElement(\n 'div',\n { style: styles.controls, className: 'flexbox-fix' },\n React.createElement(\n 'div',\n { style: styles.hue },\n React.createElement(Hue, {\n style: styles.Hue,\n hsl: hsl,\n radius: '4px',\n pointer: GooglePointer,\n onChange: onChange\n })\n )\n ),\n React.createElement(GoogleFields, {\n rgb: rgb,\n hsl: hsl,\n hex: hex,\n hsv: hsv,\n onChange: onChange\n })\n )\n );\n};\n\nGoogle.propTypes = {\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n styles: PropTypes.object,\n header: PropTypes.string\n\n};\n\nGoogle.defaultProps = {\n width: 652,\n styles: {},\n header: 'Color picker'\n};\n\nexport default ColorWrap(Google);","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"react\")):\"function\"==typeof define&&define.amd?define([\"react\"],t):\"object\"==typeof exports?exports.DayPicker=t(require(\"react\")):e.DayPicker=t(e.React)}(\"undefined\"!=typeof self?self:this,function(e){return function(e){function t(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,o){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:o})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=8)}([function(t,n){t.exports=e},function(e,t,n){\"use strict\";function o(e){return new Date(e.getTime())}function r(e){return e instanceof Date&&!isNaN(e.valueOf())}function a(e,t){var n=o(e);return n.setMonth(e.getMonth()+t),n}function s(e,t){return!(!e||!t)&&(e.getDate()===t.getDate()&&e.getMonth()===t.getMonth()&&e.getFullYear()===t.getFullYear())}function i(e,t){return!(!e||!t)&&(e.getMonth()===t.getMonth()&&e.getFullYear()===t.getFullYear())}function u(e,t){return o(e).setHours(0,0,0,0)o(t).setHours(0,0,0,0)}function c(e){var t=new Date;return t.setHours(0,0,0,0),u(e,t)}function p(e){var t=new Date((new Date).getTime()+864e5);return t.setHours(0,0,0,0),e>=t}function f(e,t,n){var r=o(e);return r.setHours(0,0,0,0),l(r,t)&&u(r,n)||l(r,n)&&u(r,t)}function h(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{from:null,to:null},n=t.from,o=t.to;return n?n&&o&&s(n,o)&&s(e,n)?(n=null,o=null):o&&u(e,n)?n=e:o&&s(e,o)?(n=e,o=e):(o=e,u(o,n)&&(o=n,n=e)):n=e,{from:n,to:o}}function d(e,t){var n=t.from,o=t.to;return n&&s(e,n)||o&&s(e,o)||n&&o&&f(e,n,o)}function y(e){var t=o(e);return t.setHours(0,0,0),t.setDate(t.getDate()+4-(t.getDay()||7)),Math.ceil(((t-new Date(t.getFullYear(),0,1))/864e5+1)/7)}Object.defineProperty(t,\"__esModule\",{value:!0}),t.clone=o,t.isDate=r,t.addMonths=a,t.isSameDay=s,t.isSameMonth=i,t.isDayBefore=u,t.isDayAfter=l,t.isPastDay=c,t.isFutureDay=p,t.isDayBetween=f,t.addDayToRange=h,t.isDayInRange=d,t.getWeekNumber=y,t.default={addDayToRange:h,addMonths:a,clone:o,getWeekNumber:y,isDate:r,isDayAfter:l,isDayBefore:u,isDayBetween:f,isDayInRange:d,isFutureDay:p,isPastDay:c,isSameDay:s,isSameMonth:i}},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});t.LEFT=37,t.UP=38,t.RIGHT=39,t.DOWN=40,t.ENTER=13,t.SPACE=32,t.ESC=27,t.TAB=9},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default={container:\"DayPicker\",wrapper:\"DayPicker-wrapper\",interactionDisabled:\"DayPicker--interactionDisabled\",months:\"DayPicker-Months\",month:\"DayPicker-Month\",navBar:\"DayPicker-NavBar\",navButtonPrev:\"DayPicker-NavButton DayPicker-NavButton--prev\",navButtonNext:\"DayPicker-NavButton DayPicker-NavButton--next\",navButtonInteractionDisabled:\"DayPicker-NavButton--interactionDisabled\",caption:\"DayPicker-Caption\",weekdays:\"DayPicker-Weekdays\",weekdaysRow:\"DayPicker-WeekdaysRow\",weekday:\"DayPicker-Weekday\",body:\"DayPicker-Body\",week:\"DayPicker-Week\",weekNumber:\"DayPicker-WeekNumber\",day:\"DayPicker-Day\",footer:\"DayPicker-Footer\",todayButton:\"DayPicker-TodayButton\",today:\"today\",selected:\"selected\",disabled:\"disabled\",outside:\"outside\"}},function(e,t,n){\"use strict\";function o(e){e.preventDefault(),e.stopPropagation()}function r(e){return new Date(e.getFullYear(),e.getMonth(),1,12)}function a(e){var t=r(e);return t.setMonth(t.getMonth()+1),t.setDate(t.getDate()-1),t.getDate()}function s(e){var t=y({},e.modifiers);return e.selectedDays&&(t[e.classNames.selected]=e.selectedDays),e.disabledDays&&(t[e.classNames.disabled]=e.disabledDays),t}function i(e){var t=e.firstDayOfWeek,n=e.locale,o=void 0===n?\"en\":n,r=e.localeUtils,a=void 0===r?{}:r;return isNaN(t)?a.getFirstDayOfWeek?a.getFirstDayOfWeek(o):0:t}function u(e){return!!(e&&e.from&&e.to)}function l(e,t){return t.getMonth()-e.getMonth()+12*(t.getFullYear()-e.getFullYear())}function c(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(0,m.getFirstDayOfWeek)(),n=arguments[2],o=a(e),r=[],s=[],i=[],u=1;u<=o;u+=1)r.push(new Date(e.getFullYear(),e.getMonth(),u,12));r.forEach(function(e){s.length>0&&e.getDay()===t&&(i.push(s),s=[]),s.push(e),r.indexOf(e)===r.length-1&&i.push(s)});for(var l=i[0],c=7-l.length;c>0;c-=1){var p=(0,v.clone)(l[0]);p.setDate(l[0].getDate()-1),l.unshift(p)}for(var f=i[i.length-1],h=f.length;h<7;h+=1){var d=(0,v.clone)(f[f.length-1]);d.setDate(f[f.length-1].getDate()+1),f.push(d)}if(n&&i.length<6)for(var y=void 0,k=i.length;k<6;k+=1){y=i[i.length-1];for(var D=y[y.length-1],b=[],g=0;g<7;g+=1){var w=(0,v.clone)(D);w.setDate(D.getDate()+g+1),b.push(w)}i.push(b)}return i}function p(e){var t=(0,v.clone)(e);return t.setDate(1),t.setHours(12,0,0,0),t}function f(e,t){var n=void 0;n=t===D.default?t.day+\"--\"+t.outside:\"\"+t.outside;var o=t.day.replace(/ /g,\".\"),r=n.replace(/ /g,\".\"),a=\".\"+o+\":not(.\"+r+\")\";return e.querySelectorAll(a)}function h(e){return Array.prototype.slice.call(e,0)}function d(e,t){return Object.prototype.hasOwnProperty.call(e,t)}Object.defineProperty(t,\"__esModule\",{value:!0});var y=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(t).reduce(function(n,r){var a=t[r];return o(e,a)&&n.push(r),n},[])}Object.defineProperty(t,\"__esModule\",{value:!0}),t.dayMatchesModifier=o,t.getModifiersForDay=r;var a=n(1),s=n(4);t.default={dayMatchesModifier:o,getModifiersForDay:r}},function(e,t,n){\"use strict\";function o(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function r(e){return e&&e.__esModule?e:{default:e}}function a(e,t){var n={};for(var o in e)t.indexOf(o)>=0||Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=e[o]);return n}function s(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function i(e,t){if(!e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!t||\"object\"!=typeof t&&\"function\"!=typeof t?e:t}function u(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,\"__esModule\",{value:!0}),t.ModifiersUtils=t.LocaleUtils=t.DateUtils=t.DayPicker=void 0;var l=Object.assign||function(e){for(var t=1;t1&&e.fromMonth){var o=w.startOfMonth(e.fromMonth),r=w.getMonthsDiff(o,n);n=P.addMonths(o,Math.floor(r/e.numberOfMonths)*e.numberOfMonths)}else e.toMonth&&e.numberOfMonths>1&&w.getMonthsDiff(n,e.toMonth)<=0&&(n=P.addMonths(w.startOfMonth(e.toMonth),1-this.props.numberOfMonths));return n}},{key:\"getNextNavigableMonth\",value:function(){return P.addMonths(this.state.currentMonth,this.props.numberOfMonths)}},{key:\"getPreviousNavigableMonth\",value:function(){return P.addMonths(this.state.currentMonth,-1)}},{key:\"allowPreviousMonth\",value:function(){var e=P.addMonths(this.state.currentMonth,-1);return this.allowMonth(e)}},{key:\"allowNextMonth\",value:function(){var e=P.addMonths(this.state.currentMonth,this.props.numberOfMonths);return this.allowMonth(e)}},{key:\"allowMonth\",value:function(e){var t=this.props,n=t.fromMonth,o=t.toMonth;return!(!t.canChangeMonth||n&&w.getMonthsDiff(n,e)<0||o&&w.getMonthsDiff(o,e)>0)}},{key:\"allowYearChange\",value:function(){return this.props.canChangeMonth}},{key:\"showMonth\",value:function(e,t){var n=this;this.allowMonth(e)&&this.setState({currentMonth:w.startOfMonth(e)},function(){t&&t(),n.props.onMonthChange&&n.props.onMonthChange(n.state.currentMonth)})}},{key:\"showNextYear\",value:function(){if(this.allowYearChange()){var e=P.addMonths(this.state.currentMonth,12);this.showMonth(e)}}},{key:\"showPreviousYear\",value:function(){if(this.allowYearChange()){var e=P.addMonths(this.state.currentMonth,-12);this.showMonth(e)}}},{key:\"focus\",value:function(){this.wrapper.focus()}},{key:\"focusFirstDayOfMonth\",value:function(){w.getDayNodes(this.dayPicker,this.props.classNames)[0].focus()}},{key:\"focusLastDayOfMonth\",value:function(){var e=w.getDayNodes(this.dayPicker,this.props.classNames);e[e.length-1].focus()}},{key:\"focusPreviousDay\",value:function(e){var t=this,n=w.getDayNodes(this.dayPicker,this.props.classNames),o=w.nodeListToArray(n).indexOf(e);-1!==o&&(0===o?this.showPreviousMonth(function(){return t.focusLastDayOfMonth()}):n[o-1].focus())}},{key:\"focusNextDay\",value:function(e){var t=this,n=w.getDayNodes(this.dayPicker,this.props.classNames),o=w.nodeListToArray(n).indexOf(e);-1!==o&&(o===n.length-1?this.showNextMonth(function(){return t.focusFirstDayOfMonth()}):n[o+1].focus())}},{key:\"focusNextWeek\",value:function(e){var t=this,n=w.getDayNodes(this.dayPicker,this.props.classNames),o=w.nodeListToArray(n).indexOf(e);o>n.length-8?this.showNextMonth(function(){var e=n.length-o,r=7-e;w.getDayNodes(t.dayPicker,t.props.classNames)[r].focus()}):n[o+7].focus()}},{key:\"focusPreviousWeek\",value:function(e){var t=this,n=w.getDayNodes(this.dayPicker,this.props.classNames),o=w.nodeListToArray(n).indexOf(e);o<=6?this.showPreviousMonth(function(){var e=w.getDayNodes(t.dayPicker,t.props.classNames);e[e.length-7+o].focus()}):n[o-7].focus()}},{key:\"handleOutsideDayClick\",value:function(e){var t=this.state.currentMonth,n=this.props.numberOfMonths,o=w.getMonthsDiff(t,e);o>0&&o>=n?this.showNextMonth():o<0&&this.showPreviousMonth()}},{key:\"renderNavbar\",value:function(){var e=this.props,t=e.labels,n=e.locale,o=e.localeUtils,r=e.canChangeMonth,s=e.navbarElement,i=a(e,[\"labels\",\"locale\",\"localeUtils\",\"canChangeMonth\",\"navbarElement\"]);if(!r)return null;var u={month:this.state.currentMonth,classNames:this.props.classNames,className:this.props.classNames.navBar,nextMonth:this.getNextNavigableMonth(),previousMonth:this.getPreviousNavigableMonth(),showPreviousButton:this.allowPreviousMonth(),showNextButton:this.allowNextMonth(),onNextClick:this.showNextMonth,onPreviousClick:this.showPreviousMonth,dir:i.dir,labels:t,locale:n,localeUtils:o};return f.default.isValidElement(s)?f.default.cloneElement(s,u):f.default.createElement(s,u)}},{key:\"renderMonths\",value:function(){for(var e=[],t=w.getFirstDayOfWeekFromProps(this.props),n=0;n-1,ariaSelected:r.indexOf(o.props.classNames.selected)>-1,onClick:o.props.onDayClick,onFocus:o.props.onDayFocus,onKeyDown:o.props.onDayKeyDown,onMouseEnter:o.props.onDayMouseEnter,onMouseLeave:o.props.onDayMouseLeave,onMouseDown:o.props.onDayMouseDown,onMouseUp:o.props.onDayMouseUp,onTouchEnd:o.props.onDayTouchEnd,onTouchStart:o.props.onDayTouchStart},o.props.renderDay(e,u))},r=n,s(o,r)}return i(t,e),u(t,[{key:\"render\",value:function(){var e=this,t=this.props,n=t.classNames,o=t.month,r=t.months,a=t.fixedWeeks,s=t.captionElement,i=t.weekdayElement,u=t.locale,l=t.localeUtils,p=t.weekdaysLong,h=t.weekdaysShort,d=t.firstDayOfWeek,v=t.onCaptionClick,m=t.showWeekNumbers,k=t.showWeekDays,b=t.onWeekClick,w={date:o,classNames:n,months:r,localeUtils:l,locale:u,onClick:v?function(e){return v(o,e)}:void 0},M=c.default.isValidElement(s)?c.default.cloneElement(s,w):c.default.createElement(s,w),P=D.getWeekArray(o,d,a);return c.default.createElement(\"div\",{className:n.month,role:\"grid\"},M,k&&c.default.createElement(f.default,{classNames:n,weekdaysShort:h,weekdaysLong:p,firstDayOfWeek:d,showWeekNumbers:m,locale:u,localeUtils:l,weekdayElement:i}),c.default.createElement(\"div\",{className:n.body,role:\"rowgroup\"},P.map(function(t){var r=void 0;return m&&(r=g.getWeekNumber(t[6])),c.default.createElement(\"div\",{key:t[0].getTime(),className:n.week,role:\"row\"},m&&c.default.createElement(\"div\",{className:n.weekNumber,tabIndex:b?0:-1,role:\"gridcell\",onClick:b?function(e){return b(r,t,e)}:void 0,onKeyUp:b?function(e){return e.keyCode===y.ENTER&&b(r,t,e)}:void 0},e.props.renderWeek(r,t,o)),t.map(e.renderDay))})))}}]),t}(l.Component);t.default=w},function(e,t,n){\"use strict\";function o(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function r(e,t){if(!e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!t||\"object\"!=typeof t&&\"function\"!=typeof t?e:t}function a(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,\"__esModule\",{value:!0});var s=function(){function e(e,t){for(var n=0;n=0||Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=e[o]);return n}function l(e){var t=(e.input,e.selectedDay,e.month,e.children),n=e.classNames,o=u(e,[\"input\",\"selectedDay\",\"month\",\"children\",\"classNames\"]);return y.default.createElement(\"div\",h({className:n.overlayWrapper},o),y.default.createElement(\"div\",{className:n.overlay},t))}function c(e){if((0,k.isDate)(e)){return e.getFullYear()+\"-\"+(\"\"+(e.getMonth()+1))+\"-\"+(\"\"+e.getDate())}return\"\"}function p(e){if(\"string\"==typeof e){var t=e.split(\"-\");if(3===t.length){var n=parseInt(t[0],10),o=parseInt(t[1],10)-1,r=parseInt(t[2],10);if(!(isNaN(n)||String(n).length>4||isNaN(o)||isNaN(r)||r<=0||r>31||o<0||o>=12))return new Date(n,o,r,12,0,0,0)}}}Object.defineProperty(t,\"__esModule\",{value:!0}),t.HIDE_TIMEOUT=void 0;var f=function(){function e(e,t){for(var n=0;n0&&this.setState(t)}},{key:\"componentWillUnmount\",value:function(){clearTimeout(this.clickTimeout),clearTimeout(this.hideTimeout),clearTimeout(this.inputFocusTimeout),clearTimeout(this.inputBlurTimeout),clearTimeout(this.overlayBlurTimeout)}},{key:\"getInitialMonthFromProps\",value:function(e){var t=e.dayPickerProps,n=e.format,o=void 0;return e.value&&(o=(0,k.isDate)(e.value)?e.value:e.parseDate(e.value,n,t.locale)),t.initialMonth||t.month||o||new Date}},{key:\"getInitialStateFromProps\",value:function(e){var t=e.dayPickerProps,n=e.formatDate,o=e.format,r=e.typedValue,a=e.value;return e.value&&(0,k.isDate)(e.value)&&(a=n(e.value,o,t.locale)),{value:a,typedValue:r,month:this.getInitialMonthFromProps(e),selectedDays:t.selectedDays}}},{key:\"getInput\",value:function(){return this.input}},{key:\"getDayPicker\",value:function(){return this.daypicker}},{key:\"updateState\",value:function(e,t,n){var o=this,a=this.props,s=a.dayPickerProps,i=a.onDayChange;this.setState({month:e,value:t,typedValue:\"\"},function(){if(n&&n(),i){var t=h({disabled:s.disabledDays,selected:s.selectedDays},s.modifiers),a=(0,D.getModifiersForDay)(e,t).reduce(function(e,t){return h({},e,r({},t,!0))},{});i(e,a,o)}})}},{key:\"showDayPicker\",value:function(){var e=this,t=this.props,n=t.parseDate,o=t.format,r=t.dayPickerProps,a=this.state,s=a.value;if(!a.showOverlay){var i=s?n(s,o,r.locale):this.getInitialMonthFromProps(this.props);this.setState(function(e){return{showOverlay:!0,month:i||e.month}},function(){e.props.onDayPickerShow&&e.props.onDayPickerShow()})}}},{key:\"hideDayPicker\",value:function(){var e=this;!1!==this.state.showOverlay&&this.setState({showOverlay:!1},function(){e.props.onDayPickerHide&&e.props.onDayPickerHide()})}},{key:\"hideAfterDayClick\",value:function(){var e=this;this.props.hideOnDayClick&&(this.hideTimeout=setTimeout(function(){e.overlayHasFocus=!1,e.hideDayPicker()},g))}},{key:\"handleInputClick\",value:function(e){this.showDayPicker(),this.props.inputProps.onClick&&(e.persist(),this.props.inputProps.onClick(e))}},{key:\"handleInputFocus\",value:function(e){var t=this;this.showDayPicker(),this.inputFocusTimeout=setTimeout(function(){t.overlayHasFocus=!1},2),this.props.inputProps.onFocus&&(e.persist(),this.props.inputProps.onFocus(e))}},{key:\"handleInputBlur\",value:function(e){var t=this;this.inputBlurTimeout=setTimeout(function(){t.overlayHasFocus||t.hideDayPicker()},1),this.props.inputProps.onBlur&&(e.persist(),this.props.inputProps.onBlur(e))}},{key:\"handleOverlayFocus\",value:function(e){e.preventDefault(),this.overlayHasFocus=!0,this.props.keepFocus&&this.input&&\"function\"==typeof this.input.focus&&this.input.focus()}},{key:\"handleOverlayBlur\",value:function(){var e=this;this.overlayBlurTimeout=setTimeout(function(){e.overlayHasFocus=!1},3)}},{key:\"handleInputChange\",value:function(e){var t=this.props,n=t.dayPickerProps,o=t.format,r=t.inputProps,a=t.onDayChange,s=t.parseDate;r.onChange&&(e.persist(),r.onChange(e));var i=e.target.value;if(\"\"===i.trim())return this.setState({value:i,typedValue:\"\"}),void(a&&a(void 0,{},this));var u=s(i,o,n.locale);if(!u)return this.setState({value:i,typedValue:i}),void(a&&a(void 0,{},this));this.updateState(u,i)}},{key:\"handleInputKeyDown\",value:function(e){e.keyCode===b.TAB?this.hideDayPicker():this.showDayPicker(),this.props.inputProps.onKeyDown&&(e.persist(),this.props.inputProps.onKeyDown(e))}},{key:\"handleInputKeyUp\",value:function(e){e.keyCode===b.ESC?this.hideDayPicker():this.showDayPicker(),this.props.inputProps.onKeyUp&&(e.persist(),this.props.inputProps.onKeyUp(e))}},{key:\"handleMonthChange\",value:function(e){var t=this;this.setState({month:e},function(){t.props.dayPickerProps&&t.props.dayPickerProps.onMonthChange&&t.props.dayPickerProps.onMonthChange(e)})}},{key:\"handleDayClick\",value:function(e,t,n){var o=this,r=this.props,a=r.clickUnselectsDay,s=r.dayPickerProps,i=r.onDayChange,u=r.formatDate,l=r.format;if(s.onDayClick&&s.onDayClick(e,t,n),!(t.disabled||s&&s.classNames&&t[s.classNames.disabled])){if(t.selected&&a){var c=this.state.selectedDays;if(Array.isArray(c)){c=c.slice(0);var p=c.indexOf(e);c.splice(p,1)}else c&&(c=null);return this.setState({value:\"\",typedValue:\"\",selectedDays:c},this.hideAfterDayClick),void(i&&i(void 0,t,this))}var f=u(e,l,s.locale);this.setState({value:f,typedValue:\"\",month:e},function(){i&&i(e,t,o),o.hideAfterDayClick()})}}},{key:\"renderOverlay\",value:function(){var e=this,t=this.props,n=t.classNames,o=t.dayPickerProps,r=t.parseDate,a=t.formatDate,s=t.format,i=this.state,u=i.selectedDays,l=i.value,c=void 0;if(!u&&l){var p=r(l,s,o.locale);p&&(c=p)}else u&&(c=u);var f=void 0;o.todayButton&&(f=function(){return e.updateState(new Date,a(new Date,s,o.locale),e.hideAfterDayClick)});var d=this.props.overlayComponent;return y.default.createElement(d,{classNames:n,month:this.state.month,selectedDay:c,input:this.input,tabIndex:0,onFocus:this.handleOverlayFocus,onBlur:this.handleOverlayBlur},y.default.createElement(m.default,h({ref:function(t){return e.daypicker=t},onTodayButtonClick:f},o,{month:this.state.month,selectedDays:c,onDayClick:this.handleDayClick,onMonthChange:this.handleMonthChange})))}},{key:\"render\",value:function(){var e=this,t=this.props.component,n=this.props.inputProps;return y.default.createElement(\"div\",{className:this.props.classNames.container,style:this.props.style},y.default.createElement(t,h({ref:function(t){return e.input=t},placeholder:this.props.placeholder},n,{value:this.state.value||this.state.typedValue,onChange:this.handleInputChange,onFocus:this.handleInputFocus,onBlur:this.handleInputBlur,onKeyDown:this.handleInputKeyDown,onKeyUp:this.handleInputKeyUp,onClick:n.disabled?void 0:this.handleInputClick})),this.state.showOverlay&&this.renderOverlay())}}]),t}(y.default.Component);w.defaultProps={dayPickerProps:{},value:\"\",typedValue:\"\",placeholder:\"YYYY-M-D\",format:\"L\",formatDate:c,parseDate:p,showOverlay:!1,hideOnDayClick:!0,clickUnselectsDay:!1,keepFocus:!0,component:\"input\",inputProps:{},overlayComponent:l,classNames:{container:\"DayPickerInput\",overlayWrapper:\"DayPickerInput-OverlayWrapper\",overlay:\"DayPickerInput-Overlay\"}},t.default=w}]).default});\n//# sourceMappingURL=react-day-picker.min.js.map","/** @license React v17.0.2\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),m=require(\"object-assign\"),r=require(\"scheduler\");function y(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function B(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(oa,\npa);D[b]=new B(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2h||e[g]!==f[h])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Oa=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Na(a):\"\"}\nfunction Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na(\"Lazy\");case 13:return Na(\"Suspense\");case 19:return Na(\"SuspenseList\");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return\"\"}}\nfunction Ra(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ua:return\"Fragment\";case ta:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:b=a._payload;a=a._init;try{return Ra(a(b))}catch(c){}}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return m({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function $a(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction ab(a,b){$a(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction bb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function db(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function eb(a,b){a=m({children:void 0},b);if(b=db(b.children))a.children=b;return a}\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e=c.length))throw Error(y(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var kb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction lb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function mb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?lb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar nb,ob=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==kb.svg||\"innerHTML\"in a)a.innerHTML=b;else{nb=nb||document.createElement(\"div\");nb.innerHTML=\"\"+b.valueOf().toString()+\"\";for(b=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qb).forEach(function(a){rb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qb[b]=qb[a]})});function sb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qb.hasOwnProperty(a)&&qb[a]?(\"\"+b).trim():b+\"px\"}\nfunction tb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=sb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ub=m({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction vb(a,b){if(b){if(ub[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(y(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(y(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(y(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(y(62));}}\nfunction wb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(y(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;ad?0:1<c;c++)b.push(a);return b}\nfunction $c(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Vc(b);a[b]=c}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return 0===a?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,b,c,d){Kb||Ib();var e=hd,f=Kb;Kb=!0;try{Hb(e,a,b,c,d)}finally{(Kb=f)||Mb()}}function id(a,b,c,d){ed(dd,hd.bind(null,a,b,c,d))}\nfunction hd(a,b,c,d){if(fd){var e;if((e=0===(b&4))&&0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Ke(c)}}function Me(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Me(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Ne(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Oe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Pe=fa&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Oe(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Je(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I(a,b){Af++;zf[Af]=a.current;a.current=b}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;\nfunction Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function Ff(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gf(){H(N);H(M)}function Hf(a,b,c){if(M.current!==Cf)throw Error(y(168));I(M,b);I(N,c)}\nfunction If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(y(108,Ra(b)||\"Unknown\",e));return m({},c,d)}function Jf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf;Df=M.current;I(M,a);I(N,N.current);return!0}function Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(y(169));c?(a=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I(M,a)):H(N);I(N,c)}\nvar Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=void 0!==Rf?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1E4>dg?Sf:function(){return Sf()-dg};\nfunction eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332));}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332));}}function gg(a,b){a=fg(a);return Nf(a,b)}function hg(a,b,c){a=fg(a);return Of(a,b,c)}function ig(){if(null!==bg){var a=bg;bg=null;Pf(a)}jg()}\nfunction jg(){if(!cg&&null!==ag){cg=!0;var a=0;try{var b=ag;gg(99,function(){for(;az?(q=u,u=null):q=u.sibling;var n=p(e,u,h[z],k);if(null===n){null===u&&(u=q);break}a&&u&&null===\nn.alternate&&b(e,u);g=f(n,g,z);null===t?l=n:t.sibling=n;t=n;u=q}if(z===h.length)return c(e,u),l;if(null===u){for(;zz?(q=u,u=null):q=u.sibling;var w=p(e,u,n.value,k);if(null===w){null===u&&(u=q);break}a&&u&&null===w.alternate&&b(e,u);g=f(w,g,z);null===t?l=w:t.sibling=w;t=w;u=q}if(n.done)return c(e,u),l;if(null===u){for(;!n.done;z++,n=h.next())n=A(e,n.value,k),null!==n&&(g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);return l}for(u=d(e,u);!n.done;z++,n=h.next())n=C(u,e,z,n.value,k),null!==n&&(a&&null!==n.alternate&&\nu.delete(null===n.key?z:n.key),g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ua){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,k.sibling);\nd=e(k,f.props);d.ref=Qg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=Xg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Vg(f.type,f.key,f.props,null,a.mode,h),h.ref=Qg(a,d,f),h.return=a,a=h)}return g(a);case ta:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=\nWg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Ug(f,a.mode,h),d.return=a,a=d),g(a);if(Pg(f))return x(a,d,f,h);if(La(f))return w(a,d,f,h);l&&Rg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(a.type)||\"Component\"));}return c(a,d)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);\nfunction dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,b){I(ch,b);I(bh,a);I(ah,$g);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:mb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=mb(b,a)}H(ah);I(ah,b)}function fh(){H(ah);H(bh);H(ch)}function gh(a){dh(ch.current);var b=dh(ah.current);var c=mb(b,a.type);b!==c&&(I(bh,a),I(ah,c))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);\nfunction ih(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var jh=null,kh=null,lh=!1;\nfunction mh(a,b){var c=nh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function oh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ph(a){if(lh){var b=kh;if(b){var c=b;if(!oh(a,b)){b=rf(c.nextSibling);if(!b||!oh(a,b)){a.flags=a.flags&-1025|2;lh=!1;jh=a;return}mh(jh,c)}jh=a;kh=rf(b.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;jh=a}\nfunction rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!nf(b,a.memoizedProps))for(b=kh;b;)mh(a,b),b=rf(b.nextSibling);qh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(y(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){kh=rf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}\nfunction sh(){kh=jh=null;lh=!1}var th=[];function uh(){for(var a=0;af))throw Error(y(301));f+=1;T=S=null;b.updateQueue=null;vh.current=Fh;a=c(d,e)}while(zh)}vh.current=Gh;b=null!==S&&null!==S.next;xh=0;T=S=R=null;yh=!1;if(b)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?R.memoizedState=T=a:T=T.next=a;return T}\nfunction Ih(){if(null===S){var a=R.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?R.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(y(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?R.memoizedState=T=a:T=T.next=a}return T}function Jh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Kh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=S,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.lane;if((xh&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;R.lanes|=l;Dg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;He(d,b.memoizedState)||(ug=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Lh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Mh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(xh&a)===a)b._workInProgressVersionPrimary=d,th.push(b);if(a)return c(b._source);th.push(b);throw Error(y(350));}\nfunction Nh(a,b,c,d){var e=U;if(null===e)throw Error(y(349));var f=b._getVersion,g=f(b._source),h=vh.current,k=h.useState(function(){return Mh(e,b,c)}),l=k[1],n=k[0];k=T;var A=a.memoizedState,p=A.refs,C=p.getSnapshot,x=A.source;A=A.subscribe;var w=R;a.memoizedState={refs:p,source:b,subscribe:d};h.useEffect(function(){p.getSnapshot=c;p.setSnapshot=l;var a=f(b._source);if(!He(g,a)){a=c(b._source);He(n,a)||(l(a),a=Ig(w),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0c?98:c,function(){a(!0)});gg(97\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[wf]=b;a[xf]=d;Bi(a,b,!1,!1);b.stateNode=a;g=wb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eJi&&(b.flags|=64,f=!0,Fi(d,!1),b.lanes=33554432)}else{if(!f)if(a=ih(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Fi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!lh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*O()-d.renderingStartTime>Ji&&1073741824!==c&&(b.flags|=\n64,f=!0,Fi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=O(),c.sibling=null,b=P.current,I(P,f?b&1|2:b&1),c):null;case 23:case 24:return Ki(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(y(156,b.tag));}\nfunction Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var b=a.flags;return b&4096?(a.flags=b&-4097|64,a):null;case 3:fh();H(N);H(M);uh();b=a.flags;if(0!==(b&64))throw Error(y(285));a.flags=b&-4097|64;return a;case 5:return hh(a),null;case 13:return H(P),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}\nfunction Mi(a,b){try{var c=\"\",d=b;do c+=Qa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ni(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Oi=\"function\"===typeof WeakMap?WeakMap:Map;function Pi(a,b,c){c=zg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Qi||(Qi=!0,Ri=d);Ni(a,b)};return c}\nfunction Si(a,b,c){c=zg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ni(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Ti?Ti=new Set([this]):Ti.add(this),Ni(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var Ui=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction Vi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Wi(a,c)}else b.current=null}function Xi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:lg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&qf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163));}\nfunction Yi(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Zi(c,a),$i(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:lg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Eg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Eg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&mf(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Cc(c))));\nreturn;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163));}\nfunction aj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=sb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction bj(a,b){if(Mf&&\"function\"===typeof Mf.onCommitFiberUnmount)try{Mf.onCommitFiberUnmount(Lf,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Zi(b,c);else{d=b;try{e()}catch(f){Wi(d,f)}}c=c.next}while(c!==a)}break;case 1:Vi(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Wi(b,\nf)}break;case 5:Vi(b);break;case 4:cj(a,b)}}function dj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function ej(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction fj(a){a:{for(var b=a.return;null!==b;){if(ej(b))break a;b=b.return}throw Error(y(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(y(161));}c.flags&16&&(pb(b,\"\"),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||ej(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?gj(a,c,b):hj(a,c,b)}\nfunction gj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=jf));else if(4!==d&&(a=a.child,null!==a))for(gj(a,b,c),a=a.sibling;null!==a;)gj(a,b,c),a=a.sibling}\nfunction hj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(hj(a,b,c),a=a.sibling;null!==a;)hj(a,b,c),a=a.sibling}\nfunction cj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(y(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(bj(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(bj(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[xf]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&$a(c,d);wb(a,e);b=wb(a,d);for(e=0;ee&&(e=g);c&=~f}c=e;c=O()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*nj(c/1960))-c;if(10 component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==V&&(V=2);k=Mi(k,h);p=\ng;do{switch(p.tag){case 3:f=k;p.flags|=4096;b&=-b;p.lanes|=b;var J=Pi(p,f,b);Bg(p,J);break a;case 1:f=k;var K=p.type,Q=p.stateNode;if(0===(p.flags&64)&&(\"function\"===typeof K.getDerivedStateFromError||null!==Q&&\"function\"===typeof Q.componentDidCatch&&(null===Ti||!Ti.has(Q)))){p.flags|=4096;b&=-b;p.lanes|=b;var L=Si(p,f,b);Bg(p,L);break a}}p=p.return}while(null!==p)}Zj(c)}catch(va){b=va;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}\nfunction Pj(){var a=oj.current;oj.current=Gh;return null===a?Gh:a}function Tj(a,b){var c=X;X|=16;var d=Pj();U===a&&W===b||Qj(a,b);do try{ak();break}catch(e){Sj(a,e)}while(1);qg();X=c;oj.current=d;if(null!==Y)throw Error(y(261));U=null;W=0;return V}function ak(){for(;null!==Y;)bk(Y)}function Rj(){for(;null!==Y&&!Qf();)bk(Y)}function bk(a){var b=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps;null===b?Zj(a):Y=b;pj.current=null}\nfunction Zj(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=Gi(c,b,qj);if(null!==c){Y=c;return}c=b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(qj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1g&&(h=g,g=J,J=h),h=Le(t,J),f=Le(t,g),h&&f&&(1!==v.rangeCount||v.anchorNode!==h.node||v.anchorOffset!==h.offset||v.focusNode!==f.node||v.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),v.removeAllRanges(),J>g?(v.addRange(q),v.extend(f.node,f.offset)):(q.setEnd(f.node,f.offset),v.addRange(q))))));q=[];for(v=t;v=v.parentNode;)1===v.nodeType&&q.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===typeof t.focus&&t.focus();for(t=\n0;tO()-jj?Qj(a,0):uj|=c);Mj(a,b)}function lj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===eg()?1:2:(0===Gj&&(Gj=tj),b=Yc(62914560&~Gj),0===b&&(b=4194304)));c=Hg();a=Kj(a,b);null!==a&&($c(a,b,c),Mj(a,c))}var ck;\nck=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||N.current)ug=!0;else if(0!==(c&d))ug=0!==(a.flags&16384)?!0:!1;else{ug=!1;switch(b.tag){case 3:ri(b);sh();break;case 5:gh(b);break;case 1:Ff(b.type)&&Jf(b);break;case 4:eh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;I(mg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return ti(a,b,c);I(P,P.current&1);b=hi(a,b,c);return null!==\nb?b.sibling:null}I(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Ai(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);I(P,P.current);if(d)break;else return null;case 23:case 24:return b.lanes=0,mi(a,b,c)}return hi(a,b,c)}else ug=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=Ef(b,M.current);tg(b,c);e=Ch(null,b,d,a,e,c);b.flags|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(Ff(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;xg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Gg(b,d,g,a);e.updater=Kg;b.stateNode=e;e._reactInternals=b;Og(b,d,a,c);b=qi(null,b,d,!0,f,c)}else b.tag=0,fi(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);\na=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=hk(e);a=lg(e,a);switch(f){case 0:b=li(null,b,e,a,c);break a;case 1:b=pi(null,b,e,a,c);break a;case 11:b=gi(null,b,e,a,c);break a;case 14:b=ii(null,b,e,lg(e.type,a),d,c);break a}throw Error(y(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),li(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),pi(a,b,d,e,c);case 3:ri(b);d=b.updateQueue;if(null===a||null===d)throw Error(y(282));\nd=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;yg(a,b);Cg(b,d,null,c);d=b.memoizedState.element;if(d===e)sh(),b=hi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)kh=rf(b.stateNode.containerInfo.firstChild),jh=b,f=lh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;e= minSize;\n}\n\nexport function allFilesAccepted(files, accept) {\n return files.every(function (file) {\n return fileAccepted(file, accept);\n });\n}\n\n// allow the entire document to be a drag target\nexport function onDocumentDragOver(evt) {\n evt.preventDefault();\n}\n\nfunction isIe(userAgent) {\n return userAgent.indexOf('MSIE') !== -1 || userAgent.indexOf('Trident/') !== -1;\n}\n\nfunction isEdge(userAgent) {\n return userAgent.indexOf('Edge/') !== -1;\n}\n\nexport function isIeOrEdge() {\n var userAgent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.navigator.userAgent;\n\n return isIe(userAgent) || isEdge(userAgent);\n}","export default {\n rejected: {\n borderStyle: 'solid',\n borderColor: '#c66',\n backgroundColor: '#eee'\n },\n disabled: {\n opacity: 0.5\n },\n active: {\n borderStyle: 'solid',\n borderColor: '#6c6',\n backgroundColor: '#eee'\n },\n default: {\n width: 200,\n height: 200,\n borderWidth: 2,\n borderColor: '#666',\n borderStyle: 'dashed',\n borderRadius: 5\n }\n};","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/* eslint prefer-template: 0 */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { supportMultiple, fileAccepted, allFilesAccepted, fileMatchSize, onDocumentDragOver, getDataTransferItems as defaultGetDataTransferItem, isIeOrEdge } from './utils';\nimport styles from './utils/styles';\n\nvar Dropzone = function (_React$Component) {\n _inherits(Dropzone, _React$Component);\n\n function Dropzone(props, context) {\n _classCallCheck(this, Dropzone);\n\n var _this = _possibleConstructorReturn(this, (Dropzone.__proto__ || Object.getPrototypeOf(Dropzone)).call(this, props, context));\n\n _this.renderChildren = function (children, isDragActive, isDragAccept, isDragReject) {\n if (typeof children === 'function') {\n return children(_extends({}, _this.state, {\n isDragActive: isDragActive,\n isDragAccept: isDragAccept,\n isDragReject: isDragReject\n }));\n }\n return children;\n };\n\n _this.composeHandlers = _this.composeHandlers.bind(_this);\n _this.onClick = _this.onClick.bind(_this);\n _this.onDocumentDrop = _this.onDocumentDrop.bind(_this);\n _this.onDragEnter = _this.onDragEnter.bind(_this);\n _this.onDragLeave = _this.onDragLeave.bind(_this);\n _this.onDragOver = _this.onDragOver.bind(_this);\n _this.onDragStart = _this.onDragStart.bind(_this);\n _this.onDrop = _this.onDrop.bind(_this);\n _this.onFileDialogCancel = _this.onFileDialogCancel.bind(_this);\n _this.onInputElementClick = _this.onInputElementClick.bind(_this);\n\n _this.setRef = _this.setRef.bind(_this);\n _this.setRefs = _this.setRefs.bind(_this);\n\n _this.isFileDialogActive = false;\n\n _this.state = {\n draggedFiles: [],\n acceptedFiles: [],\n rejectedFiles: []\n };\n return _this;\n }\n\n _createClass(Dropzone, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var preventDropOnDocument = this.props.preventDropOnDocument;\n\n this.dragTargets = [];\n\n if (preventDropOnDocument) {\n document.addEventListener('dragover', onDocumentDragOver, false);\n document.addEventListener('drop', this.onDocumentDrop, false);\n }\n this.fileInputEl.addEventListener('click', this.onInputElementClick, false);\n window.addEventListener('focus', this.onFileDialogCancel, false);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n var preventDropOnDocument = this.props.preventDropOnDocument;\n\n if (preventDropOnDocument) {\n document.removeEventListener('dragover', onDocumentDragOver);\n document.removeEventListener('drop', this.onDocumentDrop);\n }\n if (this.fileInputEl != null) {\n this.fileInputEl.removeEventListener('click', this.onInputElementClick, false);\n }\n window.removeEventListener('focus', this.onFileDialogCancel, false);\n }\n }, {\n key: 'composeHandlers',\n value: function composeHandlers(handler) {\n if (this.props.disabled) {\n return null;\n }\n\n return handler;\n }\n }, {\n key: 'onDocumentDrop',\n value: function onDocumentDrop(evt) {\n if (this.node && this.node.contains(evt.target)) {\n // if we intercepted an event for our instance, let it propagate down to the instance's onDrop handler\n return;\n }\n evt.preventDefault();\n this.dragTargets = [];\n }\n }, {\n key: 'onDragStart',\n value: function onDragStart(evt) {\n if (this.props.onDragStart) {\n this.props.onDragStart.call(this, evt);\n }\n }\n }, {\n key: 'onDragEnter',\n value: function onDragEnter(evt) {\n var _this2 = this;\n\n evt.preventDefault();\n\n // Count the dropzone and any children that are entered.\n if (this.dragTargets.indexOf(evt.target) === -1) {\n this.dragTargets.push(evt.target);\n }\n\n Promise.resolve(this.props.getDataTransferItems(evt)).then(function (draggedFiles) {\n _this2.setState({\n isDragActive: true, // Do not rely on files for the drag state. It doesn't work in Safari.\n draggedFiles: draggedFiles\n });\n });\n if (this.props.onDragEnter) {\n this.props.onDragEnter.call(this, evt);\n }\n }\n }, {\n key: 'onDragOver',\n value: function onDragOver(evt) {\n // eslint-disable-line class-methods-use-this\n evt.preventDefault();\n evt.stopPropagation();\n try {\n // The file dialog on Chrome allows users to drag files from the dialog onto\n // the dropzone, causing the browser the crash when the file dialog is closed.\n // A drop effect of 'none' prevents the file from being dropped\n evt.dataTransfer.dropEffect = this.isFileDialogActive ? 'none' : 'copy'; // eslint-disable-line no-param-reassign\n } catch (err) {\n // continue regardless of error\n }\n\n if (this.props.onDragOver) {\n this.props.onDragOver.call(this, evt);\n }\n return false;\n }\n }, {\n key: 'onDragLeave',\n value: function onDragLeave(evt) {\n var _this3 = this;\n\n evt.preventDefault();\n\n // Only deactivate once the dropzone and all children have been left.\n this.dragTargets = this.dragTargets.filter(function (el) {\n return el !== evt.target && _this3.node.contains(el);\n });\n if (this.dragTargets.length > 0) {\n return;\n }\n\n // Clear dragging files state\n this.setState({\n isDragActive: false,\n draggedFiles: []\n });\n\n if (this.props.onDragLeave) {\n this.props.onDragLeave.call(this, evt);\n }\n }\n }, {\n key: 'onDrop',\n value: function onDrop(evt) {\n var _this4 = this;\n\n var _props = this.props,\n onDrop = _props.onDrop,\n onDropAccepted = _props.onDropAccepted,\n onDropRejected = _props.onDropRejected,\n multiple = _props.multiple,\n disablePreview = _props.disablePreview,\n accept = _props.accept,\n getDataTransferItems = _props.getDataTransferItems;\n\n // Stop default browser behavior\n\n evt.preventDefault();\n\n // Reset the counter along with the drag on a drop.\n this.dragTargets = [];\n this.isFileDialogActive = false;\n\n // Clear files value\n this.draggedFiles = null;\n\n // Reset drag state\n this.setState({\n isDragActive: false,\n draggedFiles: []\n });\n\n Promise.resolve(getDataTransferItems(evt)).then(function (fileList) {\n var acceptedFiles = [];\n var rejectedFiles = [];\n\n fileList.forEach(function (file) {\n if (!disablePreview) {\n try {\n file.preview = window.URL.createObjectURL(file); // eslint-disable-line no-param-reassign\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n console.error('Failed to generate preview for file', file, err); // eslint-disable-line no-console\n }\n }\n }\n\n if (fileAccepted(file, accept) && fileMatchSize(file, _this4.props.maxSize, _this4.props.minSize)) {\n acceptedFiles.push(file);\n } else {\n rejectedFiles.push(file);\n }\n });\n\n if (!multiple) {\n // if not in multi mode add any extra accepted files to rejected.\n // This will allow end users to easily ignore a multi file drop in \"single\" mode.\n rejectedFiles.push.apply(rejectedFiles, _toConsumableArray(acceptedFiles.splice(1)));\n }\n\n if (onDrop) {\n onDrop.call(_this4, acceptedFiles, rejectedFiles, evt);\n }\n\n if (rejectedFiles.length > 0 && onDropRejected) {\n onDropRejected.call(_this4, rejectedFiles, evt);\n }\n\n if (acceptedFiles.length > 0 && onDropAccepted) {\n onDropAccepted.call(_this4, acceptedFiles, evt);\n }\n });\n }\n }, {\n key: 'onClick',\n value: function onClick(evt) {\n var _props2 = this.props,\n onClick = _props2.onClick,\n disableClick = _props2.disableClick;\n\n if (!disableClick) {\n evt.stopPropagation();\n\n if (onClick) {\n onClick.call(this, evt);\n }\n\n // in IE11/Edge the file-browser dialog is blocking, ensure this is behind setTimeout\n // this is so react can handle state changes in the onClick prop above above\n // see: https://github.com/react-dropzone/react-dropzone/issues/450\n if (isIeOrEdge()) {\n setTimeout(this.open.bind(this), 0);\n } else {\n this.open();\n }\n }\n }\n }, {\n key: 'onInputElementClick',\n value: function onInputElementClick(evt) {\n evt.stopPropagation();\n if (this.props.inputProps && this.props.inputProps.onClick) {\n this.props.inputProps.onClick();\n }\n }\n }, {\n key: 'onFileDialogCancel',\n value: function onFileDialogCancel() {\n var _this5 = this;\n\n // timeout will not recognize context of this method\n var onFileDialogCancel = this.props.onFileDialogCancel;\n // execute the timeout only if the FileDialog is opened in the browser\n\n if (this.isFileDialogActive) {\n setTimeout(function () {\n if (_this5.fileInputEl != null) {\n // Returns an object as FileList\n var files = _this5.fileInputEl.files;\n\n\n if (!files.length) {\n _this5.isFileDialogActive = false;\n }\n }\n\n if (typeof onFileDialogCancel === 'function') {\n onFileDialogCancel();\n }\n }, 300);\n }\n }\n }, {\n key: 'setRef',\n value: function setRef(ref) {\n this.node = ref;\n }\n }, {\n key: 'setRefs',\n value: function setRefs(ref) {\n this.fileInputEl = ref;\n }\n /**\n * Open system file upload dialog.\n *\n * @public\n */\n\n }, {\n key: 'open',\n value: function open() {\n this.isFileDialogActive = true;\n this.fileInputEl.value = null;\n this.fileInputEl.click();\n }\n }, {\n key: 'render',\n value: function render() {\n var _props3 = this.props,\n accept = _props3.accept,\n acceptClassName = _props3.acceptClassName,\n activeClassName = _props3.activeClassName,\n children = _props3.children,\n disabled = _props3.disabled,\n disabledClassName = _props3.disabledClassName,\n inputProps = _props3.inputProps,\n multiple = _props3.multiple,\n name = _props3.name,\n rejectClassName = _props3.rejectClassName,\n rest = _objectWithoutProperties(_props3, ['accept', 'acceptClassName', 'activeClassName', 'children', 'disabled', 'disabledClassName', 'inputProps', 'multiple', 'name', 'rejectClassName']);\n\n var acceptStyle = rest.acceptStyle,\n activeStyle = rest.activeStyle,\n _rest$className = rest.className,\n className = _rest$className === undefined ? '' : _rest$className,\n disabledStyle = rest.disabledStyle,\n rejectStyle = rest.rejectStyle,\n style = rest.style,\n props = _objectWithoutProperties(rest, ['acceptStyle', 'activeStyle', 'className', 'disabledStyle', 'rejectStyle', 'style']);\n\n var _state = this.state,\n isDragActive = _state.isDragActive,\n draggedFiles = _state.draggedFiles;\n\n var filesCount = draggedFiles.length;\n var isMultipleAllowed = multiple || filesCount <= 1;\n var isDragAccept = filesCount > 0 && allFilesAccepted(draggedFiles, this.props.accept);\n var isDragReject = filesCount > 0 && (!isDragAccept || !isMultipleAllowed);\n var noStyles = !className && !style && !activeStyle && !acceptStyle && !rejectStyle && !disabledStyle;\n\n if (isDragActive && activeClassName) {\n className += ' ' + activeClassName;\n }\n if (isDragAccept && acceptClassName) {\n className += ' ' + acceptClassName;\n }\n if (isDragReject && rejectClassName) {\n className += ' ' + rejectClassName;\n }\n if (disabled && disabledClassName) {\n className += ' ' + disabledClassName;\n }\n\n if (noStyles) {\n style = styles.default;\n activeStyle = styles.active;\n acceptStyle = styles.active;\n rejectStyle = styles.rejected;\n disabledStyle = styles.disabled;\n }\n\n var appliedStyle = _extends({ position: 'relative' }, style);\n if (activeStyle && isDragActive) {\n appliedStyle = _extends({}, appliedStyle, activeStyle);\n }\n if (acceptStyle && isDragAccept) {\n appliedStyle = _extends({}, appliedStyle, acceptStyle);\n }\n if (rejectStyle && isDragReject) {\n appliedStyle = _extends({}, appliedStyle, rejectStyle);\n }\n if (disabledStyle && disabled) {\n appliedStyle = _extends({}, appliedStyle, disabledStyle);\n }\n\n var inputAttributes = {\n accept: accept,\n disabled: disabled,\n type: 'file',\n style: _extends({\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n opacity: 0.00001,\n pointerEvents: 'none'\n }, inputProps.style),\n multiple: supportMultiple && multiple,\n ref: this.setRefs,\n onChange: this.onDrop,\n autoComplete: 'off'\n };\n\n if (name && name.length) {\n inputAttributes.name = name;\n }\n\n // Destructure custom props away from props used for the div element\n\n var acceptedFiles = props.acceptedFiles,\n preventDropOnDocument = props.preventDropOnDocument,\n disablePreview = props.disablePreview,\n disableClick = props.disableClick,\n onDropAccepted = props.onDropAccepted,\n onDropRejected = props.onDropRejected,\n onFileDialogCancel = props.onFileDialogCancel,\n maxSize = props.maxSize,\n minSize = props.minSize,\n getDataTransferItems = props.getDataTransferItems,\n divProps = _objectWithoutProperties(props, ['acceptedFiles', 'preventDropOnDocument', 'disablePreview', 'disableClick', 'onDropAccepted', 'onDropRejected', 'onFileDialogCancel', 'maxSize', 'minSize', 'getDataTransferItems']);\n\n return React.createElement(\n 'div',\n _extends({\n className: className,\n style: appliedStyle\n }, divProps /* expand user provided props first so event handlers are never overridden */, {\n onClick: this.composeHandlers(this.onClick),\n onDragStart: this.composeHandlers(this.onDragStart),\n onDragEnter: this.composeHandlers(this.onDragEnter),\n onDragOver: this.composeHandlers(this.onDragOver),\n onDragLeave: this.composeHandlers(this.onDragLeave),\n onDrop: this.composeHandlers(this.onDrop),\n ref: this.setRef,\n 'aria-disabled': disabled\n }),\n this.renderChildren(children, isDragActive, isDragAccept, isDragReject),\n React.createElement('input', _extends({}, inputProps /* expand user provided inputProps first so inputAttributes override them */, inputAttributes))\n );\n }\n }]);\n\n return Dropzone;\n}(React.Component);\n\nexport default Dropzone;\n\nDropzone.propTypes = {\n /**\n * Allow specific types of files. See https://github.com/okonet/attr-accept for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all.\n * See: https://github.com/react-dropzone/react-dropzone/issues/276\n */\n accept: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n\n /**\n * Contents of the dropzone\n */\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n\n /**\n * Disallow clicking on the dropzone container to open file dialog\n */\n disableClick: PropTypes.bool,\n\n /**\n * Enable/disable the dropzone entirely\n */\n disabled: PropTypes.bool,\n\n /**\n * Enable/disable preview generation\n */\n disablePreview: PropTypes.bool,\n\n /**\n * If false, allow dropped items to take over the current browser window\n */\n preventDropOnDocument: PropTypes.bool,\n\n /**\n * Pass additional attributes to the `` tag\n */\n inputProps: PropTypes.object,\n\n /**\n * Allow dropping multiple files\n */\n multiple: PropTypes.bool,\n\n /**\n * `name` attribute for the input tag\n */\n name: PropTypes.string,\n\n /**\n * Maximum file size (in bytes)\n */\n maxSize: PropTypes.number,\n\n /**\n * Minimum file size (in bytes)\n */\n minSize: PropTypes.number,\n\n /**\n * className\n */\n className: PropTypes.string,\n\n /**\n * className to apply when drag is active\n */\n activeClassName: PropTypes.string,\n\n /**\n * className to apply when drop will be accepted\n */\n acceptClassName: PropTypes.string,\n\n /**\n * className to apply when drop will be rejected\n */\n rejectClassName: PropTypes.string,\n\n /**\n * className to apply when dropzone is disabled\n */\n disabledClassName: PropTypes.string,\n\n /**\n * CSS styles to apply\n */\n style: PropTypes.object,\n\n /**\n * CSS styles to apply when drag is active\n */\n activeStyle: PropTypes.object,\n\n /**\n * CSS styles to apply when drop will be accepted\n */\n acceptStyle: PropTypes.object,\n\n /**\n * CSS styles to apply when drop will be rejected\n */\n rejectStyle: PropTypes.object,\n\n /**\n * CSS styles to apply when dropzone is disabled\n */\n disabledStyle: PropTypes.object,\n\n /**\n * getDataTransferItems handler\n * @param {Event} event\n * @returns {Array} array of File objects\n */\n getDataTransferItems: PropTypes.func,\n\n /**\n * onClick callback\n * @param {Event} event\n */\n onClick: PropTypes.func,\n\n /**\n * onDrop callback\n */\n onDrop: PropTypes.func,\n\n /**\n * onDropAccepted callback\n */\n onDropAccepted: PropTypes.func,\n\n /**\n * onDropRejected callback\n */\n onDropRejected: PropTypes.func,\n\n /**\n * onDragStart callback\n */\n onDragStart: PropTypes.func,\n\n /**\n * onDragEnter callback\n */\n onDragEnter: PropTypes.func,\n\n /**\n * onDragOver callback\n */\n onDragOver: PropTypes.func,\n\n /**\n * onDragLeave callback\n */\n onDragLeave: PropTypes.func,\n\n /**\n * Provide a callback on clicking the cancel button of the file dialog\n */\n onFileDialogCancel: PropTypes.func\n};\n\nDropzone.defaultProps = {\n preventDropOnDocument: true,\n disabled: false,\n disablePreview: false,\n disableClick: false,\n inputProps: {},\n multiple: true,\n maxSize: Infinity,\n minSize: 0,\n getDataTransferItems: defaultGetDataTransferItem\n};","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.3\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","import PropTypes from 'prop-types';\nimport withSideEffect from 'react-side-effect';\nimport isEqual from 'react-fast-compare';\nimport React from 'react';\nimport objectAssign from 'object-assign';\n\nvar ATTRIBUTE_NAMES = {\n BODY: \"bodyAttributes\",\n HTML: \"htmlAttributes\",\n TITLE: \"titleAttributes\"\n};\n\nvar TAG_NAMES = {\n BASE: \"base\",\n BODY: \"body\",\n HEAD: \"head\",\n HTML: \"html\",\n LINK: \"link\",\n META: \"meta\",\n NOSCRIPT: \"noscript\",\n SCRIPT: \"script\",\n STYLE: \"style\",\n TITLE: \"title\"\n};\n\nvar VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(function (name) {\n return TAG_NAMES[name];\n});\n\nvar TAG_PROPERTIES = {\n CHARSET: \"charset\",\n CSS_TEXT: \"cssText\",\n HREF: \"href\",\n HTTPEQUIV: \"http-equiv\",\n INNER_HTML: \"innerHTML\",\n ITEM_PROP: \"itemprop\",\n NAME: \"name\",\n PROPERTY: \"property\",\n REL: \"rel\",\n SRC: \"src\",\n TARGET: \"target\"\n};\n\nvar REACT_TAG_MAP = {\n accesskey: \"accessKey\",\n charset: \"charSet\",\n class: \"className\",\n contenteditable: \"contentEditable\",\n contextmenu: \"contextMenu\",\n \"http-equiv\": \"httpEquiv\",\n itemprop: \"itemProp\",\n tabindex: \"tabIndex\"\n};\n\nvar HELMET_PROPS = {\n DEFAULT_TITLE: \"defaultTitle\",\n DEFER: \"defer\",\n ENCODE_SPECIAL_CHARACTERS: \"encodeSpecialCharacters\",\n ON_CHANGE_CLIENT_STATE: \"onChangeClientState\",\n TITLE_TEMPLATE: \"titleTemplate\"\n};\n\nvar HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key]] = key;\n return obj;\n}, {});\n\nvar SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];\n\nvar HELMET_ATTRIBUTE = \"data-react-helmet\";\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar objectWithoutProperties = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar encodeSpecialCharacters = function encodeSpecialCharacters(str) {\n var encode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (encode === false) {\n return String(str);\n }\n\n return String(str).replace(/&/g, \"&\").replace(//g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\");\n};\n\nvar getTitleFromPropsList = function getTitleFromPropsList(propsList) {\n var innermostTitle = getInnermostProperty(propsList, TAG_NAMES.TITLE);\n var innermostTemplate = getInnermostProperty(propsList, HELMET_PROPS.TITLE_TEMPLATE);\n\n if (innermostTemplate && innermostTitle) {\n // use function arg to avoid need to escape $ characters\n return innermostTemplate.replace(/%s/g, function () {\n return Array.isArray(innermostTitle) ? innermostTitle.join(\"\") : innermostTitle;\n });\n }\n\n var innermostDefaultTitle = getInnermostProperty(propsList, HELMET_PROPS.DEFAULT_TITLE);\n\n return innermostTitle || innermostDefaultTitle || undefined;\n};\n\nvar getOnChangeClientState = function getOnChangeClientState(propsList) {\n return getInnermostProperty(propsList, HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || function () {};\n};\n\nvar getAttributesFromPropsList = function getAttributesFromPropsList(tagType, propsList) {\n return propsList.filter(function (props) {\n return typeof props[tagType] !== \"undefined\";\n }).map(function (props) {\n return props[tagType];\n }).reduce(function (tagAttrs, current) {\n return _extends({}, tagAttrs, current);\n }, {});\n};\n\nvar getBaseTagFromPropsList = function getBaseTagFromPropsList(primaryAttributes, propsList) {\n return propsList.filter(function (props) {\n return typeof props[TAG_NAMES.BASE] !== \"undefined\";\n }).map(function (props) {\n return props[TAG_NAMES.BASE];\n }).reverse().reduce(function (innermostBaseTag, tag) {\n if (!innermostBaseTag.length) {\n var keys = Object.keys(tag);\n\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {\n return innermostBaseTag.concat(tag);\n }\n }\n }\n\n return innermostBaseTag;\n }, []);\n};\n\nvar getTagsFromPropsList = function getTagsFromPropsList(tagName, primaryAttributes, propsList) {\n // Calculate list of tags, giving priority innermost component (end of the propslist)\n var approvedSeenTags = {};\n\n return propsList.filter(function (props) {\n if (Array.isArray(props[tagName])) {\n return true;\n }\n if (typeof props[tagName] !== \"undefined\") {\n warn(\"Helmet: \" + tagName + \" should be of type \\\"Array\\\". Instead found type \\\"\" + _typeof(props[tagName]) + \"\\\"\");\n }\n return false;\n }).map(function (props) {\n return props[tagName];\n }).reverse().reduce(function (approvedTags, instanceTags) {\n var instanceSeenTags = {};\n\n instanceTags.filter(function (tag) {\n var primaryAttributeKey = void 0;\n var keys = Object.keys(tag);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === TAG_PROPERTIES.REL && tag[primaryAttributeKey].toLowerCase() === \"canonical\") && !(lowerCaseAttributeKey === TAG_PROPERTIES.REL && tag[lowerCaseAttributeKey].toLowerCase() === \"stylesheet\")) {\n primaryAttributeKey = lowerCaseAttributeKey;\n }\n // Special case for innerHTML which doesn't work lowercased\n if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === TAG_PROPERTIES.INNER_HTML || attributeKey === TAG_PROPERTIES.CSS_TEXT || attributeKey === TAG_PROPERTIES.ITEM_PROP)) {\n primaryAttributeKey = attributeKey;\n }\n }\n\n if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n return false;\n }\n\n var value = tag[primaryAttributeKey].toLowerCase();\n\n if (!approvedSeenTags[primaryAttributeKey]) {\n approvedSeenTags[primaryAttributeKey] = {};\n }\n\n if (!instanceSeenTags[primaryAttributeKey]) {\n instanceSeenTags[primaryAttributeKey] = {};\n }\n\n if (!approvedSeenTags[primaryAttributeKey][value]) {\n instanceSeenTags[primaryAttributeKey][value] = true;\n return true;\n }\n\n return false;\n }).reverse().forEach(function (tag) {\n return approvedTags.push(tag);\n });\n\n // Update seen tags with tags from this instance\n var keys = Object.keys(instanceSeenTags);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var tagUnion = objectAssign({}, approvedSeenTags[attributeKey], instanceSeenTags[attributeKey]);\n\n approvedSeenTags[attributeKey] = tagUnion;\n }\n\n return approvedTags;\n }, []).reverse();\n};\n\nvar getInnermostProperty = function getInnermostProperty(propsList, property) {\n for (var i = propsList.length - 1; i >= 0; i--) {\n var props = propsList[i];\n\n if (props.hasOwnProperty(property)) {\n return props[property];\n }\n }\n\n return null;\n};\n\nvar reducePropsToState = function reducePropsToState(propsList) {\n return {\n baseTag: getBaseTagFromPropsList([TAG_PROPERTIES.HREF, TAG_PROPERTIES.TARGET], propsList),\n bodyAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.BODY, propsList),\n defer: getInnermostProperty(propsList, HELMET_PROPS.DEFER),\n encode: getInnermostProperty(propsList, HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n htmlAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.HTML, propsList),\n linkTags: getTagsFromPropsList(TAG_NAMES.LINK, [TAG_PROPERTIES.REL, TAG_PROPERTIES.HREF], propsList),\n metaTags: getTagsFromPropsList(TAG_NAMES.META, [TAG_PROPERTIES.NAME, TAG_PROPERTIES.CHARSET, TAG_PROPERTIES.HTTPEQUIV, TAG_PROPERTIES.PROPERTY, TAG_PROPERTIES.ITEM_PROP], propsList),\n noscriptTags: getTagsFromPropsList(TAG_NAMES.NOSCRIPT, [TAG_PROPERTIES.INNER_HTML], propsList),\n onChangeClientState: getOnChangeClientState(propsList),\n scriptTags: getTagsFromPropsList(TAG_NAMES.SCRIPT, [TAG_PROPERTIES.SRC, TAG_PROPERTIES.INNER_HTML], propsList),\n styleTags: getTagsFromPropsList(TAG_NAMES.STYLE, [TAG_PROPERTIES.CSS_TEXT], propsList),\n title: getTitleFromPropsList(propsList),\n titleAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.TITLE, propsList)\n };\n};\n\nvar rafPolyfill = function () {\n var clock = Date.now();\n\n return function (callback) {\n var currentTime = Date.now();\n\n if (currentTime - clock > 16) {\n clock = currentTime;\n callback(currentTime);\n } else {\n setTimeout(function () {\n rafPolyfill(callback);\n }, 0);\n }\n };\n}();\n\nvar cafPolyfill = function cafPolyfill(id) {\n return clearTimeout(id);\n};\n\nvar requestAnimationFrame = typeof window !== \"undefined\" ? window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || rafPolyfill : global.requestAnimationFrame || rafPolyfill;\n\nvar cancelAnimationFrame = typeof window !== \"undefined\" ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || cafPolyfill : global.cancelAnimationFrame || cafPolyfill;\n\nvar warn = function warn(msg) {\n return console && typeof console.warn === \"function\" && console.warn(msg);\n};\n\nvar _helmetCallback = null;\n\nvar handleClientStateChange = function handleClientStateChange(newState) {\n if (_helmetCallback) {\n cancelAnimationFrame(_helmetCallback);\n }\n\n if (newState.defer) {\n _helmetCallback = requestAnimationFrame(function () {\n commitTagChanges(newState, function () {\n _helmetCallback = null;\n });\n });\n } else {\n commitTagChanges(newState);\n _helmetCallback = null;\n }\n};\n\nvar commitTagChanges = function commitTagChanges(newState, cb) {\n var baseTag = newState.baseTag,\n bodyAttributes = newState.bodyAttributes,\n htmlAttributes = newState.htmlAttributes,\n linkTags = newState.linkTags,\n metaTags = newState.metaTags,\n noscriptTags = newState.noscriptTags,\n onChangeClientState = newState.onChangeClientState,\n scriptTags = newState.scriptTags,\n styleTags = newState.styleTags,\n title = newState.title,\n titleAttributes = newState.titleAttributes;\n\n updateAttributes(TAG_NAMES.BODY, bodyAttributes);\n updateAttributes(TAG_NAMES.HTML, htmlAttributes);\n\n updateTitle(title, titleAttributes);\n\n var tagUpdates = {\n baseTag: updateTags(TAG_NAMES.BASE, baseTag),\n linkTags: updateTags(TAG_NAMES.LINK, linkTags),\n metaTags: updateTags(TAG_NAMES.META, metaTags),\n noscriptTags: updateTags(TAG_NAMES.NOSCRIPT, noscriptTags),\n scriptTags: updateTags(TAG_NAMES.SCRIPT, scriptTags),\n styleTags: updateTags(TAG_NAMES.STYLE, styleTags)\n };\n\n var addedTags = {};\n var removedTags = {};\n\n Object.keys(tagUpdates).forEach(function (tagType) {\n var _tagUpdates$tagType = tagUpdates[tagType],\n newTags = _tagUpdates$tagType.newTags,\n oldTags = _tagUpdates$tagType.oldTags;\n\n\n if (newTags.length) {\n addedTags[tagType] = newTags;\n }\n if (oldTags.length) {\n removedTags[tagType] = tagUpdates[tagType].oldTags;\n }\n });\n\n cb && cb();\n\n onChangeClientState(newState, addedTags, removedTags);\n};\n\nvar flattenArray = function flattenArray(possibleArray) {\n return Array.isArray(possibleArray) ? possibleArray.join(\"\") : possibleArray;\n};\n\nvar updateTitle = function updateTitle(title, attributes) {\n if (typeof title !== \"undefined\" && document.title !== title) {\n document.title = flattenArray(title);\n }\n\n updateAttributes(TAG_NAMES.TITLE, attributes);\n};\n\nvar updateAttributes = function updateAttributes(tagName, attributes) {\n var elementTag = document.getElementsByTagName(tagName)[0];\n\n if (!elementTag) {\n return;\n }\n\n var helmetAttributeString = elementTag.getAttribute(HELMET_ATTRIBUTE);\n var helmetAttributes = helmetAttributeString ? helmetAttributeString.split(\",\") : [];\n var attributesToRemove = [].concat(helmetAttributes);\n var attributeKeys = Object.keys(attributes);\n\n for (var i = 0; i < attributeKeys.length; i++) {\n var attribute = attributeKeys[i];\n var value = attributes[attribute] || \"\";\n\n if (elementTag.getAttribute(attribute) !== value) {\n elementTag.setAttribute(attribute, value);\n }\n\n if (helmetAttributes.indexOf(attribute) === -1) {\n helmetAttributes.push(attribute);\n }\n\n var indexToSave = attributesToRemove.indexOf(attribute);\n if (indexToSave !== -1) {\n attributesToRemove.splice(indexToSave, 1);\n }\n }\n\n for (var _i = attributesToRemove.length - 1; _i >= 0; _i--) {\n elementTag.removeAttribute(attributesToRemove[_i]);\n }\n\n if (helmetAttributes.length === attributesToRemove.length) {\n elementTag.removeAttribute(HELMET_ATTRIBUTE);\n } else if (elementTag.getAttribute(HELMET_ATTRIBUTE) !== attributeKeys.join(\",\")) {\n elementTag.setAttribute(HELMET_ATTRIBUTE, attributeKeys.join(\",\"));\n }\n};\n\nvar updateTags = function updateTags(type, tags) {\n var headElement = document.head || document.querySelector(TAG_NAMES.HEAD);\n var tagNodes = headElement.querySelectorAll(type + \"[\" + HELMET_ATTRIBUTE + \"]\");\n var oldTags = Array.prototype.slice.call(tagNodes);\n var newTags = [];\n var indexToDelete = void 0;\n\n if (tags && tags.length) {\n tags.forEach(function (tag) {\n var newElement = document.createElement(type);\n\n for (var attribute in tag) {\n if (tag.hasOwnProperty(attribute)) {\n if (attribute === TAG_PROPERTIES.INNER_HTML) {\n newElement.innerHTML = tag.innerHTML;\n } else if (attribute === TAG_PROPERTIES.CSS_TEXT) {\n if (newElement.styleSheet) {\n newElement.styleSheet.cssText = tag.cssText;\n } else {\n newElement.appendChild(document.createTextNode(tag.cssText));\n }\n } else {\n var value = typeof tag[attribute] === \"undefined\" ? \"\" : tag[attribute];\n newElement.setAttribute(attribute, value);\n }\n }\n }\n\n newElement.setAttribute(HELMET_ATTRIBUTE, \"true\");\n\n // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n if (oldTags.some(function (existingTag, index) {\n indexToDelete = index;\n return newElement.isEqualNode(existingTag);\n })) {\n oldTags.splice(indexToDelete, 1);\n } else {\n newTags.push(newElement);\n }\n });\n }\n\n oldTags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n newTags.forEach(function (tag) {\n return headElement.appendChild(tag);\n });\n\n return {\n oldTags: oldTags,\n newTags: newTags\n };\n};\n\nvar generateElementAttributesAsString = function generateElementAttributesAsString(attributes) {\n return Object.keys(attributes).reduce(function (str, key) {\n var attr = typeof attributes[key] !== \"undefined\" ? key + \"=\\\"\" + attributes[key] + \"\\\"\" : \"\" + key;\n return str ? str + \" \" + attr : attr;\n }, \"\");\n};\n\nvar generateTitleAsString = function generateTitleAsString(type, title, attributes, encode) {\n var attributeString = generateElementAttributesAsString(attributes);\n var flattenedTitle = flattenArray(title);\n return attributeString ? \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeString + \">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\" : \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\";\n};\n\nvar generateTagsAsString = function generateTagsAsString(type, tags, encode) {\n return tags.reduce(function (str, tag) {\n var attributeHtml = Object.keys(tag).filter(function (attribute) {\n return !(attribute === TAG_PROPERTIES.INNER_HTML || attribute === TAG_PROPERTIES.CSS_TEXT);\n }).reduce(function (string, attribute) {\n var attr = typeof tag[attribute] === \"undefined\" ? attribute : attribute + \"=\\\"\" + encodeSpecialCharacters(tag[attribute], encode) + \"\\\"\";\n return string ? string + \" \" + attr : attr;\n }, \"\");\n\n var tagContent = tag.innerHTML || tag.cssText || \"\";\n\n var isSelfClosing = SELF_CLOSING_TAGS.indexOf(type) === -1;\n\n return str + \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeHtml + (isSelfClosing ? \"/>\" : \">\" + tagContent + \"\");\n }, \"\");\n};\n\nvar convertElementAttributestoReactProps = function convertElementAttributestoReactProps(attributes) {\n var initProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return Object.keys(attributes).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key] || key] = attributes[key];\n return obj;\n }, initProps);\n};\n\nvar convertReactPropstoHtmlAttributes = function convertReactPropstoHtmlAttributes(props) {\n var initAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return Object.keys(props).reduce(function (obj, key) {\n obj[HTML_TAG_MAP[key] || key] = props[key];\n return obj;\n }, initAttributes);\n};\n\nvar generateTitleAsReactComponent = function generateTitleAsReactComponent(type, title, attributes) {\n var _initProps;\n\n // assigning into an array to define toString function on it\n var initProps = (_initProps = {\n key: title\n }, _initProps[HELMET_ATTRIBUTE] = true, _initProps);\n var props = convertElementAttributestoReactProps(attributes, initProps);\n\n return [React.createElement(TAG_NAMES.TITLE, props, title)];\n};\n\nvar generateTagsAsReactComponent = function generateTagsAsReactComponent(type, tags) {\n return tags.map(function (tag, i) {\n var _mappedTag;\n\n var mappedTag = (_mappedTag = {\n key: i\n }, _mappedTag[HELMET_ATTRIBUTE] = true, _mappedTag);\n\n Object.keys(tag).forEach(function (attribute) {\n var mappedAttribute = REACT_TAG_MAP[attribute] || attribute;\n\n if (mappedAttribute === TAG_PROPERTIES.INNER_HTML || mappedAttribute === TAG_PROPERTIES.CSS_TEXT) {\n var content = tag.innerHTML || tag.cssText;\n mappedTag.dangerouslySetInnerHTML = { __html: content };\n } else {\n mappedTag[mappedAttribute] = tag[attribute];\n }\n });\n\n return React.createElement(type, mappedTag);\n });\n};\n\nvar getMethodsForTag = function getMethodsForTag(type, tags, encode) {\n switch (type) {\n case TAG_NAMES.TITLE:\n return {\n toComponent: function toComponent() {\n return generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode);\n },\n toString: function toString() {\n return generateTitleAsString(type, tags.title, tags.titleAttributes, encode);\n }\n };\n case ATTRIBUTE_NAMES.BODY:\n case ATTRIBUTE_NAMES.HTML:\n return {\n toComponent: function toComponent() {\n return convertElementAttributestoReactProps(tags);\n },\n toString: function toString() {\n return generateElementAttributesAsString(tags);\n }\n };\n default:\n return {\n toComponent: function toComponent() {\n return generateTagsAsReactComponent(type, tags);\n },\n toString: function toString() {\n return generateTagsAsString(type, tags, encode);\n }\n };\n }\n};\n\nvar mapStateOnServer = function mapStateOnServer(_ref) {\n var baseTag = _ref.baseTag,\n bodyAttributes = _ref.bodyAttributes,\n encode = _ref.encode,\n htmlAttributes = _ref.htmlAttributes,\n linkTags = _ref.linkTags,\n metaTags = _ref.metaTags,\n noscriptTags = _ref.noscriptTags,\n scriptTags = _ref.scriptTags,\n styleTags = _ref.styleTags,\n _ref$title = _ref.title,\n title = _ref$title === undefined ? \"\" : _ref$title,\n titleAttributes = _ref.titleAttributes;\n return {\n base: getMethodsForTag(TAG_NAMES.BASE, baseTag, encode),\n bodyAttributes: getMethodsForTag(ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),\n htmlAttributes: getMethodsForTag(ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),\n link: getMethodsForTag(TAG_NAMES.LINK, linkTags, encode),\n meta: getMethodsForTag(TAG_NAMES.META, metaTags, encode),\n noscript: getMethodsForTag(TAG_NAMES.NOSCRIPT, noscriptTags, encode),\n script: getMethodsForTag(TAG_NAMES.SCRIPT, scriptTags, encode),\n style: getMethodsForTag(TAG_NAMES.STYLE, styleTags, encode),\n title: getMethodsForTag(TAG_NAMES.TITLE, { title: title, titleAttributes: titleAttributes }, encode)\n };\n};\n\nvar Helmet = function Helmet(Component) {\n var _class, _temp;\n\n return _temp = _class = function (_React$Component) {\n inherits(HelmetWrapper, _React$Component);\n\n function HelmetWrapper() {\n classCallCheck(this, HelmetWrapper);\n return possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n HelmetWrapper.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return !isEqual(this.props, nextProps);\n };\n\n HelmetWrapper.prototype.mapNestedChildrenToProps = function mapNestedChildrenToProps(child, nestedChildren) {\n if (!nestedChildren) {\n return null;\n }\n\n switch (child.type) {\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.NOSCRIPT:\n return {\n innerHTML: nestedChildren\n };\n\n case TAG_NAMES.STYLE:\n return {\n cssText: nestedChildren\n };\n }\n\n throw new Error(\"<\" + child.type + \" /> elements are self-closing and can not contain children. Refer to our API for more information.\");\n };\n\n HelmetWrapper.prototype.flattenArrayTypeChildren = function flattenArrayTypeChildren(_ref) {\n var _babelHelpers$extends;\n\n var child = _ref.child,\n arrayTypeChildren = _ref.arrayTypeChildren,\n newChildProps = _ref.newChildProps,\n nestedChildren = _ref.nestedChildren;\n\n return _extends({}, arrayTypeChildren, (_babelHelpers$extends = {}, _babelHelpers$extends[child.type] = [].concat(arrayTypeChildren[child.type] || [], [_extends({}, newChildProps, this.mapNestedChildrenToProps(child, nestedChildren))]), _babelHelpers$extends));\n };\n\n HelmetWrapper.prototype.mapObjectTypeChildren = function mapObjectTypeChildren(_ref2) {\n var _babelHelpers$extends2, _babelHelpers$extends3;\n\n var child = _ref2.child,\n newProps = _ref2.newProps,\n newChildProps = _ref2.newChildProps,\n nestedChildren = _ref2.nestedChildren;\n\n switch (child.type) {\n case TAG_NAMES.TITLE:\n return _extends({}, newProps, (_babelHelpers$extends2 = {}, _babelHelpers$extends2[child.type] = nestedChildren, _babelHelpers$extends2.titleAttributes = _extends({}, newChildProps), _babelHelpers$extends2));\n\n case TAG_NAMES.BODY:\n return _extends({}, newProps, {\n bodyAttributes: _extends({}, newChildProps)\n });\n\n case TAG_NAMES.HTML:\n return _extends({}, newProps, {\n htmlAttributes: _extends({}, newChildProps)\n });\n }\n\n return _extends({}, newProps, (_babelHelpers$extends3 = {}, _babelHelpers$extends3[child.type] = _extends({}, newChildProps), _babelHelpers$extends3));\n };\n\n HelmetWrapper.prototype.mapArrayTypeChildrenToProps = function mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n var newFlattenedProps = _extends({}, newProps);\n\n Object.keys(arrayTypeChildren).forEach(function (arrayChildName) {\n var _babelHelpers$extends4;\n\n newFlattenedProps = _extends({}, newFlattenedProps, (_babelHelpers$extends4 = {}, _babelHelpers$extends4[arrayChildName] = arrayTypeChildren[arrayChildName], _babelHelpers$extends4));\n });\n\n return newFlattenedProps;\n };\n\n HelmetWrapper.prototype.warnOnInvalidChildren = function warnOnInvalidChildren(child, nestedChildren) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!VALID_TAG_NAMES.some(function (name) {\n return child.type === name;\n })) {\n if (typeof child.type === \"function\") {\n return warn(\"You may be attempting to nest components within each other, which is not allowed. Refer to our API for more information.\");\n }\n\n return warn(\"Only elements types \" + VALID_TAG_NAMES.join(\", \") + \" are allowed. Helmet does not support rendering <\" + child.type + \"> elements. Refer to our API for more information.\");\n }\n\n if (nestedChildren && typeof nestedChildren !== \"string\" && (!Array.isArray(nestedChildren) || nestedChildren.some(function (nestedChild) {\n return typeof nestedChild !== \"string\";\n }))) {\n throw new Error(\"Helmet expects a string as a child of <\" + child.type + \">. Did you forget to wrap your children in braces? ( <\" + child.type + \">{``} ) Refer to our API for more information.\");\n }\n }\n\n return true;\n };\n\n HelmetWrapper.prototype.mapChildrenToProps = function mapChildrenToProps(children, newProps) {\n var _this2 = this;\n\n var arrayTypeChildren = {};\n\n React.Children.forEach(children, function (child) {\n if (!child || !child.props) {\n return;\n }\n\n var _child$props = child.props,\n nestedChildren = _child$props.children,\n childProps = objectWithoutProperties(_child$props, [\"children\"]);\n\n var newChildProps = convertReactPropstoHtmlAttributes(childProps);\n\n _this2.warnOnInvalidChildren(child, nestedChildren);\n\n switch (child.type) {\n case TAG_NAMES.LINK:\n case TAG_NAMES.META:\n case TAG_NAMES.NOSCRIPT:\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.STYLE:\n arrayTypeChildren = _this2.flattenArrayTypeChildren({\n child: child,\n arrayTypeChildren: arrayTypeChildren,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n\n default:\n newProps = _this2.mapObjectTypeChildren({\n child: child,\n newProps: newProps,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n }\n });\n\n newProps = this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n return newProps;\n };\n\n HelmetWrapper.prototype.render = function render() {\n var _props = this.props,\n children = _props.children,\n props = objectWithoutProperties(_props, [\"children\"]);\n\n var newProps = _extends({}, props);\n\n if (children) {\n newProps = this.mapChildrenToProps(children, newProps);\n }\n\n return React.createElement(Component, newProps);\n };\n\n createClass(HelmetWrapper, null, [{\n key: \"canUseDOM\",\n\n\n // Component.peek comes from react-side-effect:\n // For testing, you may use a static peek() method available on the returned component.\n // It lets you get the current state without resetting the mounted instance stack.\n // Don’t use it for anything other than testing.\n\n /**\n * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n * @param {Object} bodyAttributes: {\"className\": \"root\"}\n * @param {String} defaultTitle: \"Default Title\"\n * @param {Boolean} defer: true\n * @param {Boolean} encodeSpecialCharacters: true\n * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n * @param {Array} noscript: [{\"innerHTML\": \" console.log(newState)\"\n * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n * @param {Array} style: [{\"type\": \"text/css\", \"cssText\": \"div { display: block; color: blue; }\"}]\n * @param {String} title: \"Title\"\n * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n * @param {String} titleTemplate: \"MySite.com - %s\"\n */\n set: function set$$1(canUseDOM) {\n Component.canUseDOM = canUseDOM;\n }\n }]);\n return HelmetWrapper;\n }(React.Component), _class.propTypes = {\n base: PropTypes.object,\n bodyAttributes: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n defaultTitle: PropTypes.string,\n defer: PropTypes.bool,\n encodeSpecialCharacters: PropTypes.bool,\n htmlAttributes: PropTypes.object,\n link: PropTypes.arrayOf(PropTypes.object),\n meta: PropTypes.arrayOf(PropTypes.object),\n noscript: PropTypes.arrayOf(PropTypes.object),\n onChangeClientState: PropTypes.func,\n script: PropTypes.arrayOf(PropTypes.object),\n style: PropTypes.arrayOf(PropTypes.object),\n title: PropTypes.string,\n titleAttributes: PropTypes.object,\n titleTemplate: PropTypes.string\n }, _class.defaultProps = {\n defer: true,\n encodeSpecialCharacters: true\n }, _class.peek = Component.peek, _class.rewind = function () {\n var mappedState = Component.rewind();\n if (!mappedState) {\n // provide fallback if mappedState is undefined\n mappedState = mapStateOnServer({\n baseTag: [],\n bodyAttributes: {},\n encodeSpecialCharacters: true,\n htmlAttributes: {},\n linkTags: [],\n metaTags: [],\n noscriptTags: [],\n scriptTags: [],\n styleTags: [],\n title: \"\",\n titleAttributes: {}\n });\n }\n\n return mappedState;\n }, _temp;\n};\n\nvar NullComponent = function NullComponent() {\n return null;\n};\n\nvar HelmetSideEffects = withSideEffect(reducePropsToState, handleClientStateChange, mapStateOnServer)(NullComponent);\n\nvar HelmetExport = Helmet(HelmetSideEffects);\nHelmetExport.renderStatic = HelmetExport.rewind;\n\nexport default HelmetExport;\nexport { HelmetExport as Helmet };\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","import React from 'react';\nexport var ReactReduxContext = /*#__PURE__*/React.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n ReactReduxContext.displayName = 'ReactRedux';\n}\n\nexport default ReactReduxContext;","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n callback();\n}\n\nvar batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport var setBatch = function setBatch(newBatch) {\n return batch = newBatch;\n}; // Supply a getter just to skip dealing with ESM bindings\n\nexport var getBatch = function getBatch() {\n return batch;\n};","import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nfunction createListenerCollection() {\n var batch = getBatch();\n var first = null;\n var last = null;\n return {\n clear: function clear() {\n first = null;\n last = null;\n },\n notify: function notify() {\n batch(function () {\n var listener = first;\n\n while (listener) {\n listener.callback();\n listener = listener.next;\n }\n });\n },\n get: function get() {\n var listeners = [];\n var listener = first;\n\n while (listener) {\n listeners.push(listener);\n listener = listener.next;\n }\n\n return listeners;\n },\n subscribe: function subscribe(callback) {\n var isSubscribed = true;\n var listener = last = {\n callback: callback,\n next: null,\n prev: last\n };\n\n if (listener.prev) {\n listener.prev.next = listener;\n } else {\n first = listener;\n }\n\n return function unsubscribe() {\n if (!isSubscribed || first === null) return;\n isSubscribed = false;\n\n if (listener.next) {\n listener.next.prev = listener.prev;\n } else {\n last = listener.prev;\n }\n\n if (listener.prev) {\n listener.prev.next = listener.next;\n } else {\n first = listener.next;\n }\n };\n }\n };\n}\n\nvar nullListeners = {\n notify: function notify() {},\n get: function get() {\n return [];\n }\n};\nexport function createSubscription(store, parentSub) {\n var unsubscribe;\n var listeners = nullListeners;\n\n function addNestedSub(listener) {\n trySubscribe();\n return listeners.subscribe(listener);\n }\n\n function notifyNestedSubs() {\n listeners.notify();\n }\n\n function handleChangeWrapper() {\n if (subscription.onStateChange) {\n subscription.onStateChange();\n }\n }\n\n function isSubscribed() {\n return Boolean(unsubscribe);\n }\n\n function trySubscribe() {\n if (!unsubscribe) {\n unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n listeners = createListenerCollection();\n }\n }\n\n function tryUnsubscribe() {\n if (unsubscribe) {\n unsubscribe();\n unsubscribe = undefined;\n listeners.clear();\n listeners = nullListeners;\n }\n }\n\n var subscription = {\n addNestedSub: addNestedSub,\n notifyNestedSubs: notifyNestedSubs,\n handleChangeWrapper: handleChangeWrapper,\n isSubscribed: isSubscribed,\n trySubscribe: trySubscribe,\n tryUnsubscribe: tryUnsubscribe,\n getListeners: function getListeners() {\n return listeners;\n }\n };\n return subscription;\n}","import { useEffect, useLayoutEffect } from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactReduxContext } from './Context';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\n\nfunction Provider(_ref) {\n var store = _ref.store,\n context = _ref.context,\n children = _ref.children;\n var contextValue = useMemo(function () {\n var subscription = createSubscription(store);\n return {\n store: store,\n subscription: subscription\n };\n }, [store]);\n var previousState = useMemo(function () {\n return store.getState();\n }, [store]);\n useIsomorphicLayoutEffect(function () {\n var subscription = contextValue.subscription;\n subscription.onStateChange = subscription.notifyNestedSubs;\n subscription.trySubscribe();\n\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n\n return function () {\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n };\n }, [contextValue, previousState]);\n var Context = context || ReactReduxContext;\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\nif (process.env.NODE_ENV !== 'production') {\n Provider.propTypes = {\n store: PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n }),\n context: PropTypes.object,\n children: PropTypes.any\n };\n}\n\nexport default Provider;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\", \"forwardRef\", \"context\"],\n _excluded2 = [\"reactReduxForwardedRef\"];\nimport hoistStatics from 'hoist-non-react-statics';\nimport React, { useContext, useMemo, useRef, useReducer } from 'react';\nimport { isValidElementType, isContextConsumer } from 'react-is';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from './Context'; // Define some constant arrays just to avoid re-creating these\n\nvar EMPTY_ARRAY = [];\nvar NO_SUBSCRIPTION_ARRAY = [null, null];\n\nvar stringifyComponent = function stringifyComponent(Comp) {\n try {\n return JSON.stringify(Comp);\n } catch (err) {\n return String(Comp);\n }\n};\n\nfunction storeStateUpdatesReducer(state, action) {\n var updateCount = state[1];\n return [action.payload, updateCount + 1];\n}\n\nfunction useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {\n useIsomorphicLayoutEffect(function () {\n return effectFunc.apply(void 0, effectArgs);\n }, dependencies);\n}\n\nfunction captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs) {\n // We want to capture the wrapper props and child props we used for later comparisons\n lastWrapperProps.current = wrapperProps;\n lastChildProps.current = actualChildProps;\n renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update\n\n if (childPropsFromStoreUpdate.current) {\n childPropsFromStoreUpdate.current = null;\n notifyNestedSubs();\n }\n}\n\nfunction subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch) {\n // If we're not subscribed to the store, nothing to do here\n if (!shouldHandleStateChanges) return; // Capture values for checking if and when this component unmounts\n\n var didUnsubscribe = false;\n var lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n\n var checkForUpdates = function checkForUpdates() {\n if (didUnsubscribe) {\n // Don't run stale listeners.\n // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n return;\n }\n\n var latestStoreState = store.getState();\n var newChildProps, error;\n\n try {\n // Actually run the selector with the most recent store state and wrapper props\n // to determine what the child props should be\n newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n } catch (e) {\n error = e;\n lastThrownError = e;\n }\n\n if (!error) {\n lastThrownError = null;\n } // If the child props haven't changed, nothing to do here - cascade the subscription update\n\n\n if (newChildProps === lastChildProps.current) {\n if (!renderIsScheduled.current) {\n notifyNestedSubs();\n }\n } else {\n // Save references to the new child props. Note that we track the \"child props from store update\"\n // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n // been processed. If this went into useState/useReducer, we couldn't clear out the value without\n // forcing another re-render, which we don't want.\n lastChildProps.current = newChildProps;\n childPropsFromStoreUpdate.current = newChildProps;\n renderIsScheduled.current = true; // If the child props _did_ change (or we caught an error), this wrapper component needs to re-render\n\n forceComponentUpdateDispatch({\n type: 'STORE_UPDATED',\n payload: {\n error: error\n }\n });\n }\n }; // Actually subscribe to the nearest connected ancestor (or store)\n\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe(); // Pull data from the store after first render in case the store has\n // changed since we began.\n\n checkForUpdates();\n\n var unsubscribeWrapper = function unsubscribeWrapper() {\n didUnsubscribe = true;\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n\n if (lastThrownError) {\n // It's possible that we caught an error due to a bad mapState function, but the\n // parent re-rendered without this component and we're about to unmount.\n // This shouldn't happen as long as we do top-down subscriptions correctly, but\n // if we ever do those wrong, this throw will surface the error in our tests.\n // In that case, throw the error from here so it doesn't get lost.\n throw lastThrownError;\n }\n };\n\n return unsubscribeWrapper;\n}\n\nvar initStateUpdates = function initStateUpdates() {\n return [null, 0];\n};\n\nexport default function connectAdvanced(\n/*\r\n selectorFactory is a func that is responsible for returning the selector function used to\r\n compute new props from state, props, and dispatch. For example:\r\n export default connectAdvanced((dispatch, options) => (state, props) => ({\r\n thing: state.things[props.thingId],\r\n saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\r\n }))(YourComponent)\r\n Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\r\n outside of their selector as an optimization. Options passed to connectAdvanced are passed to\r\n the selectorFactory, along with displayName and WrappedComponent, as the second argument.\r\n Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\r\n props. Do not use connectAdvanced directly without memoizing results between calls to your\r\n selector, otherwise the Connect component will re-render on every state or props change.\r\n*/\nselectorFactory, // options object:\n_ref) {\n if (_ref === void 0) {\n _ref = {};\n }\n\n var _ref2 = _ref,\n _ref2$getDisplayName = _ref2.getDisplayName,\n getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n return \"ConnectAdvanced(\" + name + \")\";\n } : _ref2$getDisplayName,\n _ref2$methodName = _ref2.methodName,\n methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n _ref2$renderCountProp = _ref2.renderCountProp,\n renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n _ref2$storeKey = _ref2.storeKey,\n storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n _ref2$withRef = _ref2.withRef,\n withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n _ref2$forwardRef = _ref2.forwardRef,\n forwardRef = _ref2$forwardRef === void 0 ? false : _ref2$forwardRef,\n _ref2$context = _ref2.context,\n context = _ref2$context === void 0 ? ReactReduxContext : _ref2$context,\n connectOptions = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n if (process.env.NODE_ENV !== 'production') {\n if (renderCountProp !== undefined) {\n throw new Error(\"renderCountProp is removed. render counting is built into the latest React Dev Tools profiling extension\");\n }\n\n if (withRef) {\n throw new Error('withRef is removed. To access the wrapped instance, use a ref on the connected component');\n }\n\n var customStoreWarningMessage = 'To use a custom Redux store for specific components, create a custom React context with ' + \"React.createContext(), and pass the context object to React Redux's Provider and specific components\" + ' like: . ' + 'You may also pass a {context : MyContext} option to connect';\n\n if (storeKey !== 'store') {\n throw new Error('storeKey has been removed and does not do anything. ' + customStoreWarningMessage);\n }\n }\n\n var Context = context;\n return function wrapWithConnect(WrappedComponent) {\n if (process.env.NODE_ENV !== 'production' && !isValidElementType(WrappedComponent)) {\n throw new Error(\"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + stringifyComponent(WrappedComponent)));\n }\n\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n var displayName = getDisplayName(wrappedComponentName);\n\n var selectorFactoryOptions = _extends({}, connectOptions, {\n getDisplayName: getDisplayName,\n methodName: methodName,\n renderCountProp: renderCountProp,\n shouldHandleStateChanges: shouldHandleStateChanges,\n storeKey: storeKey,\n displayName: displayName,\n wrappedComponentName: wrappedComponentName,\n WrappedComponent: WrappedComponent\n });\n\n var pure = connectOptions.pure;\n\n function createChildSelector(store) {\n return selectorFactory(store.dispatch, selectorFactoryOptions);\n } // If we aren't running in \"pure\" mode, we don't want to memoize values.\n // To avoid conditionally calling hooks, we fall back to a tiny wrapper\n // that just executes the given callback immediately.\n\n\n var usePureOnlyMemo = pure ? useMemo : function (callback) {\n return callback();\n };\n\n function ConnectFunction(props) {\n var _useMemo = useMemo(function () {\n // Distinguish between actual \"data\" props that were passed to the wrapper component,\n // and values needed to control behavior (forwarded refs, alternate context instances).\n // To maintain the wrapperProps object reference, memoize this destructuring.\n var reactReduxForwardedRef = props.reactReduxForwardedRef,\n wrapperProps = _objectWithoutPropertiesLoose(props, _excluded2);\n\n return [props.context, reactReduxForwardedRef, wrapperProps];\n }, [props]),\n propsContext = _useMemo[0],\n reactReduxForwardedRef = _useMemo[1],\n wrapperProps = _useMemo[2];\n\n var ContextToUse = useMemo(function () {\n // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n // Memoize the check that determines which context instance we should use.\n return propsContext && propsContext.Consumer && isContextConsumer( /*#__PURE__*/React.createElement(propsContext.Consumer, null)) ? propsContext : Context;\n }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available\n\n var contextValue = useContext(ContextToUse); // The store _must_ exist as either a prop or in context.\n // We'll check to see if it _looks_ like a Redux store first.\n // This allows us to pass through a `store` prop that is just a plain value.\n\n var didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n var didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n\n if (process.env.NODE_ENV !== 'production' && !didStoreComeFromProps && !didStoreComeFromContext) {\n throw new Error(\"Could not find \\\"store\\\" in the context of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a , \") + \"or pass a custom React context provider to and the corresponding \" + (\"React context consumer to \" + displayName + \" in connect options.\"));\n } // Based on the previous check, one of these must be true\n\n\n var store = didStoreComeFromProps ? props.store : contextValue.store;\n var childPropsSelector = useMemo(function () {\n // The child props selector needs the store reference as an input.\n // Re-create this selector whenever the store changes.\n return createChildSelector(store);\n }, [store]);\n\n var _useMemo2 = useMemo(function () {\n if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n // This Subscription's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n var subscription = createSubscription(store, didStoreComeFromProps ? null : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `subscription` will then be null. This can\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\n // that have been unsubscribed in the middle of the notification loop.\n\n // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `subscription` will then be null. This can\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\n // that have been unsubscribed in the middle of the notification loop.\n var notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n return [subscription, notifyNestedSubs];\n }, [store, didStoreComeFromProps, contextValue]),\n subscription = _useMemo2[0],\n notifyNestedSubs = _useMemo2[1]; // Determine what {store, subscription} value should be put into nested context, if necessary,\n // and memoize that value to avoid unnecessary context updates.\n\n\n var overriddenContextValue = useMemo(function () {\n if (didStoreComeFromProps) {\n // This component is directly subscribed to a store from props.\n // We don't want descendants reading from this store - pass down whatever\n // the existing context value is from the nearest connected ancestor.\n return contextValue;\n } // Otherwise, put this component's subscription instance into context, so that\n // connected descendants won't update until after this component is done\n\n\n return _extends({}, contextValue, {\n subscription: subscription\n });\n }, [didStoreComeFromProps, contextValue, subscription]); // We need to force this wrapper component to re-render whenever a Redux store update\n // causes a change to the calculated child component props (or we caught an error in mapState)\n\n var _useReducer = useReducer(storeStateUpdatesReducer, EMPTY_ARRAY, initStateUpdates),\n _useReducer$ = _useReducer[0],\n previousStateUpdateResult = _useReducer$[0],\n forceComponentUpdateDispatch = _useReducer[1]; // Propagate any mapState/mapDispatch errors upwards\n\n\n if (previousStateUpdateResult && previousStateUpdateResult.error) {\n throw previousStateUpdateResult.error;\n } // Set up refs to coordinate values between the subscription effect and the render logic\n\n\n var lastChildProps = useRef();\n var lastWrapperProps = useRef(wrapperProps);\n var childPropsFromStoreUpdate = useRef();\n var renderIsScheduled = useRef(false);\n var actualChildProps = usePureOnlyMemo(function () {\n // Tricky logic here:\n // - This render may have been triggered by a Redux store update that produced new child props\n // - However, we may have gotten new wrapper props after that\n // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n return childPropsFromStoreUpdate.current;\n } // TODO We're reading the store directly in render() here. Bad idea?\n // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n // to determine what the child props should be.\n\n\n return childPropsSelector(store.getState(), wrapperProps);\n }, [store, previousStateUpdateResult, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns\n // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n // just useEffect instead to avoid the warning, since neither will run anyway.\n\n useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs]); // Our re-subscribe logic only runs when the store/subscription setup changes\n\n useIsomorphicLayoutEffectWithArgs(subscribeUpdates, [shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch], [store, subscription, childPropsSelector]); // Now that all that's done, we can finally try to actually render the child component.\n // We memoize the elements for the rendered child component as an optimization.\n\n var renderedWrappedComponent = useMemo(function () {\n return /*#__PURE__*/React.createElement(WrappedComponent, _extends({}, actualChildProps, {\n ref: reactReduxForwardedRef\n }));\n }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering\n // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n\n var renderedChild = useMemo(function () {\n if (shouldHandleStateChanges) {\n // If this component is subscribed to store updates, we need to pass its own\n // subscription instance down to our descendants. That means rendering the same\n // Context instance, and putting a different value into the context.\n return /*#__PURE__*/React.createElement(ContextToUse.Provider, {\n value: overriddenContextValue\n }, renderedWrappedComponent);\n }\n\n return renderedWrappedComponent;\n }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n return renderedChild;\n } // If we're in \"pure\" mode, ensure our wrapper component only re-renders when incoming props have changed.\n\n\n var Connect = pure ? React.memo(ConnectFunction) : ConnectFunction;\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = ConnectFunction.displayName = displayName;\n\n if (forwardRef) {\n var forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n return /*#__PURE__*/React.createElement(Connect, _extends({}, props, {\n reactReduxForwardedRef: ref\n }));\n });\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return hoistStatics(forwarded, WrappedComponent);\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n}","function is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nexport default function shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n\n for (var i = 0; i < keysA.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n return function initConstantSelector(dispatch, options) {\n var constant = getConstant(dispatch, options);\n\n function constantSelector() {\n return constant;\n }\n\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n//\n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n//\n// * Detects whether the mapToProps function being called depends on props, which\n// is used by selectorFactory to decide if it should reinvoke on props changes.\n//\n// * On first call, handles mapToProps if returns another function, and treats that\n// new function as the true mapToProps for subsequent calls.\n//\n// * On first call, verifies the first result is a plain object, in order to warn\n// the developer that their mapToProps function is not returning a valid result.\n//\n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, _ref) {\n var displayName = _ref.displayName;\n\n var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n }; // allow detectFactoryAndVerify to get ownProps\n\n\n proxy.dependsOnOwnProps = true;\n\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n var props = proxy(stateOrDispatch, ownProps);\n\n if (typeof props === 'function') {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n return props;\n };\n\n return proxy;\n };\n}","import bindActionCreators from '../utils/bindActionCreators';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n return {\n dispatch: dispatch\n };\n }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n return bindActionCreators(mapDispatchToProps, dispatch);\n }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","export default function bindActionCreators(actionCreators, dispatch) {\n var boundActionCreators = {};\n\n var _loop = function _loop(key) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = function () {\n return dispatch(actionCreator.apply(void 0, arguments));\n };\n }\n };\n\n for (var key in actionCreators) {\n _loop(key);\n }\n\n return boundActionCreators;\n}","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(function () {\n return {};\n }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, _ref) {\n var displayName = _ref.displayName,\n pure = _ref.pure,\n areMergedPropsEqual = _ref.areMergedPropsEqual;\n var hasRunOnce = false;\n var mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n if (hasRunOnce) {\n if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n }\n\n return mergedProps;\n };\n };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n return !mergeProps ? function () {\n return defaultMergeProps;\n } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"];\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n return function impureFinalPropsSelector(state, ownProps) {\n return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n var areStatesEqual = _ref.areStatesEqual,\n areOwnPropsEqual = _ref.areOwnPropsEqual,\n areStatePropsEqual = _ref.areStatePropsEqual;\n var hasRunAtLeastOnce = false;\n var state;\n var ownProps;\n var stateProps;\n var dispatchProps;\n var mergedProps;\n\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewState() {\n var nextStateProps = mapStateToProps(state, ownProps);\n var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleSubsequentCalls(nextState, nextOwnProps) {\n var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n var stateChanged = !areStatesEqual(nextState, state, nextOwnProps, ownProps);\n state = nextState;\n ownProps = nextOwnProps;\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n var initMapStateToProps = _ref2.initMapStateToProps,\n initMapDispatchToProps = _ref2.initMapDispatchToProps,\n initMergeProps = _ref2.initMergeProps,\n options = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n var mapStateToProps = initMapStateToProps(dispatch, options);\n var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n var mergeProps = initMergeProps(dispatch, options);\n\n if (process.env.NODE_ENV !== 'production') {\n verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n }\n\n var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"];\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\r\n connect is a facade over connectAdvanced. It turns its args into a compatible\r\n selectorFactory, which has the signature:\r\n\r\n (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\r\n \r\n connect passes its args to connectAdvanced as options, which will in turn pass them to\r\n selectorFactory each time a Connect component instance is instantiated or hot reloaded.\r\n\r\n selectorFactory returns a final props selector from its mapStateToProps,\r\n mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\r\n mergePropsFactories, and pure args.\r\n\r\n The resulting final props selector is called by the Connect component instance whenever\r\n it receives new props or store state.\r\n */\n\nfunction match(arg, factories, name) {\n for (var i = factories.length - 1; i >= 0; i--) {\n var result = factories[i](arg);\n if (result) return result;\n }\n\n return function (dispatch, options) {\n throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n };\n}\n\nfunction strictEqual(a, b) {\n return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$connectHOC = _ref.connectHOC,\n connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n _ref$mergePropsFactor = _ref.mergePropsFactories,\n mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n _ref$selectorFactory = _ref.selectorFactory,\n selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n if (_ref2 === void 0) {\n _ref2 = {};\n }\n\n var _ref3 = _ref2,\n _ref3$pure = _ref3.pure,\n pure = _ref3$pure === void 0 ? true : _ref3$pure,\n _ref3$areStatesEqual = _ref3.areStatesEqual,\n areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n extraOptions = _objectWithoutPropertiesLoose(_ref3, _excluded);\n\n var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n return connectHOC(selectorFactory, _extends({\n // used in error messages\n methodName: 'connect',\n // used to compute Connect's displayName from the wrapped component's displayName.\n getDisplayName: function getDisplayName(name) {\n return \"Connect(\" + name + \")\";\n },\n // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n shouldHandleStateChanges: Boolean(mapStateToProps),\n // passed through to selectorFactory\n initMapStateToProps: initMapStateToProps,\n initMapDispatchToProps: initMapDispatchToProps,\n initMergeProps: initMergeProps,\n pure: pure,\n areStatesEqual: areStatesEqual,\n areOwnPropsEqual: areOwnPropsEqual,\n areStatePropsEqual: areStatePropsEqual,\n areMergedPropsEqual: areMergedPropsEqual\n }, extraOptions));\n };\n}\nexport default /*#__PURE__*/createConnect();","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\n/**\r\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @returns {any} the value of the `ReactReduxContext`\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useReduxContext } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n * const { store } = useReduxContext()\r\n * return
{store.getState()}
\r\n * }\r\n */\n\nexport function useReduxContext() {\n var contextValue = useContext(ReactReduxContext);\n\n if (process.env.NODE_ENV !== 'production' && !contextValue) {\n throw new Error('could not find react-redux context value; please ensure the component is wrapped in a ');\n }\n\n return contextValue;\n}","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\n/**\r\n * Hook factory, which creates a `useStore` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useStore` hook bound to the specified context.\r\n */\n\nexport function createStoreHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useStore() {\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store;\n\n return store;\n };\n}\n/**\r\n * A hook to access the redux store.\r\n *\r\n * @returns {any} the redux store\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useStore } from 'react-redux'\r\n *\r\n * export const ExampleComponent = () => {\r\n * const store = useStore()\r\n * return
{store.getState()}
\r\n * }\r\n */\n\nexport var useStore = /*#__PURE__*/createStoreHook();","import { ReactReduxContext } from '../components/Context';\nimport { useStore as useDefaultStore, createStoreHook } from './useStore';\n/**\r\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useDispatch` hook bound to the specified context.\r\n */\n\nexport function createDispatchHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useStore = context === ReactReduxContext ? useDefaultStore : createStoreHook(context);\n return function useDispatch() {\n var store = useStore();\n return store.dispatch;\n };\n}\n/**\r\n * A hook to access the redux `dispatch` function.\r\n *\r\n * @returns {any|function} redux store's `dispatch` function\r\n *\r\n * @example\r\n *\r\n * import React, { useCallback } from 'react'\r\n * import { useDispatch } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n * const dispatch = useDispatch()\r\n * const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\r\n * return (\r\n *
\r\n * {value}\r\n * \r\n *
\r\n * )\r\n * }\r\n */\n\nexport var useDispatch = /*#__PURE__*/createDispatchHook();","import { useReducer, useRef, useMemo, useContext, useDebugValue } from 'react';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from '../components/Context';\n\nvar refEquality = function refEquality(a, b) {\n return a === b;\n};\n\nfunction useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub) {\n var _useReducer = useReducer(function (s) {\n return s + 1;\n }, 0),\n forceRender = _useReducer[1];\n\n var subscription = useMemo(function () {\n return createSubscription(store, contextSub);\n }, [store, contextSub]);\n var latestSubscriptionCallbackError = useRef();\n var latestSelector = useRef();\n var latestStoreState = useRef();\n var latestSelectedState = useRef();\n var storeState = store.getState();\n var selectedState;\n\n try {\n if (selector !== latestSelector.current || storeState !== latestStoreState.current || latestSubscriptionCallbackError.current) {\n var newSelectedState = selector(storeState); // ensure latest selected state is reused so that a custom equality function can result in identical references\n\n if (latestSelectedState.current === undefined || !equalityFn(newSelectedState, latestSelectedState.current)) {\n selectedState = newSelectedState;\n } else {\n selectedState = latestSelectedState.current;\n }\n } else {\n selectedState = latestSelectedState.current;\n }\n } catch (err) {\n if (latestSubscriptionCallbackError.current) {\n err.message += \"\\nThe error may be correlated with this previous error:\\n\" + latestSubscriptionCallbackError.current.stack + \"\\n\\n\";\n }\n\n throw err;\n }\n\n useIsomorphicLayoutEffect(function () {\n latestSelector.current = selector;\n latestStoreState.current = storeState;\n latestSelectedState.current = selectedState;\n latestSubscriptionCallbackError.current = undefined;\n });\n useIsomorphicLayoutEffect(function () {\n function checkForUpdates() {\n try {\n var newStoreState = store.getState(); // Avoid calling selector multiple times if the store's state has not changed\n\n if (newStoreState === latestStoreState.current) {\n return;\n }\n\n var _newSelectedState = latestSelector.current(newStoreState);\n\n if (equalityFn(_newSelectedState, latestSelectedState.current)) {\n return;\n }\n\n latestSelectedState.current = _newSelectedState;\n latestStoreState.current = newStoreState;\n } catch (err) {\n // we ignore all errors here, since when the component\n // is re-rendered, the selectors are called again, and\n // will throw again, if neither props nor store state\n // changed\n latestSubscriptionCallbackError.current = err;\n }\n\n forceRender();\n }\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe();\n checkForUpdates();\n return function () {\n return subscription.tryUnsubscribe();\n };\n }, [store, subscription]);\n return selectedState;\n}\n/**\r\n * Hook factory, which creates a `useSelector` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useSelector` hook bound to the specified context.\r\n */\n\n\nexport function createSelectorHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useSelector(selector, equalityFn) {\n if (equalityFn === void 0) {\n equalityFn = refEquality;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (!selector) {\n throw new Error(\"You must pass a selector to useSelector\");\n }\n\n if (typeof selector !== 'function') {\n throw new Error(\"You must pass a function as a selector to useSelector\");\n }\n\n if (typeof equalityFn !== 'function') {\n throw new Error(\"You must pass a function as an equality function to useSelector\");\n }\n }\n\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store,\n contextSub = _useReduxContext.subscription;\n\n var selectedState = useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub);\n useDebugValue(selectedState);\n return selectedState;\n };\n}\n/**\r\n * A hook to access the redux store's state. This hook takes a selector function\r\n * as an argument. The selector is called with the store state.\r\n *\r\n * This hook takes an optional equality comparison function as the second parameter\r\n * that allows you to customize the way the selected state is compared to determine\r\n * whether the component needs to be re-rendered.\r\n *\r\n * @param {Function} selector the selector function\r\n * @param {Function=} equalityFn the function that will be used to determine equality\r\n *\r\n * @returns {any} the selected state\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n * const counter = useSelector(state => state.counter)\r\n * return
{counter}
\r\n * }\r\n */\n\nexport var useSelector = /*#__PURE__*/createSelectorHook();","export * from './exports';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport { setBatch } from './utils/batch'; // Enable batched updates in our subscriptions for use\n// with standard React renderers (ReactDOM, React Native)\n\nsetBatch(batch);\nexport { batch };","/** @license React v17.0.2\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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'use strict';var b=60103,c=60106,d=60107,e=60108,f=60114,g=60109,h=60110,k=60112,l=60113,m=60120,n=60115,p=60116,q=60121,r=60122,u=60117,v=60129,w=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var x=Symbol.for;b=x(\"react.element\");c=x(\"react.portal\");d=x(\"react.fragment\");e=x(\"react.strict_mode\");f=x(\"react.profiler\");g=x(\"react.provider\");h=x(\"react.context\");k=x(\"react.forward_ref\");l=x(\"react.suspense\");m=x(\"react.suspense_list\");n=x(\"react.memo\");p=x(\"react.lazy\");q=x(\"react.block\");r=x(\"react.server.block\");u=x(\"react.fundamental\");v=x(\"react.debug_trace_mode\");w=x(\"react.legacy_hidden\")}\nfunction y(a){if(\"object\"===typeof a&&null!==a){var t=a.$$typeof;switch(t){case b:switch(a=a.type,a){case d:case f:case e:case l:case m:return a;default:switch(a=a&&a.$$typeof,a){case h:case k:case p:case n:case g:return a;default:return t}}case c:return t}}}var z=g,A=b,B=k,C=d,D=p,E=n,F=c,G=f,H=e,I=l;exports.ContextConsumer=h;exports.ContextProvider=z;exports.Element=A;exports.ForwardRef=B;exports.Fragment=C;exports.Lazy=D;exports.Memo=E;exports.Portal=F;exports.Profiler=G;exports.StrictMode=H;\nexports.Suspense=I;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return y(a)===h};exports.isContextProvider=function(a){return y(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return y(a)===k};exports.isFragment=function(a){return y(a)===d};exports.isLazy=function(a){return y(a)===p};exports.isMemo=function(a){return y(a)===n};\nexports.isPortal=function(a){return y(a)===c};exports.isProfiler=function(a){return y(a)===f};exports.isStrictMode=function(a){return y(a)===e};exports.isSuspense=function(a){return y(a)===l};exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===v||a===e||a===l||a===m||a===w||\"object\"===typeof a&&null!==a&&(a.$$typeof===p||a.$$typeof===n||a.$$typeof===g||a.$$typeof===h||a.$$typeof===k||a.$$typeof===u||a.$$typeof===q||a[0]===r)?!0:!1};\nexports.typeOf=y;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * @remix-run/router v1.16.0\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n/**\n * Actions represent the type of change to a location value.\n */\nvar Action;\n(function (Action) {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Action[\"Pop\"] = \"POP\";\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Action[\"Push\"] = \"PUSH\";\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Action[\"Replace\"] = \"REPLACE\";\n})(Action || (Action = {}));\nconst PopStateEventType = \"popstate\";\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nfunction createMemoryHistory(options) {\n if (options === void 0) {\n options = {};\n }\n let {\n initialEntries = [\"/\"],\n initialIndex,\n v5Compat = false\n } = options;\n let entries; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) => createMemoryLocation(entry, typeof entry === \"string\" ? null : entry.state, index === 0 ? \"default\" : undefined));\n let index = clampIndex(initialIndex == null ? entries.length - 1 : initialIndex);\n let action = Action.Pop;\n let listener = null;\n function clampIndex(n) {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation() {\n return entries[index];\n }\n function createMemoryLocation(to, state, key) {\n if (state === void 0) {\n state = null;\n }\n let location = createLocation(entries ? getCurrentLocation().pathname : \"/\", to, state, key);\n warning(location.pathname.charAt(0) === \"/\", \"relative pathnames are not supported in memory history: \" + JSON.stringify(to));\n return location;\n }\n function createHref(to) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n let history = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\"\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({\n action,\n location: nextLocation,\n delta: 1\n });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({\n action,\n location: nextLocation,\n delta: 0\n });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({\n action,\n location: nextLocation,\n delta\n });\n }\n },\n listen(fn) {\n listener = fn;\n return () => {\n listener = null;\n };\n }\n };\n return history;\n}\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nfunction createBrowserHistory(options) {\n if (options === void 0) {\n options = {};\n }\n function createBrowserLocation(window, globalHistory) {\n let {\n pathname,\n search,\n hash\n } = window.location;\n return createLocation(\"\", {\n pathname,\n search,\n hash\n },\n // state defaults to `null` because `window.history.state` does\n globalHistory.state && globalHistory.state.usr || null, globalHistory.state && globalHistory.state.key || \"default\");\n }\n function createBrowserHref(window, to) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n return getUrlBasedHistory(createBrowserLocation, createBrowserHref, null, options);\n}\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nfunction createHashHistory(options) {\n if (options === void 0) {\n options = {};\n }\n function createHashLocation(window, globalHistory) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\"\n } = parsePath(window.location.hash.substr(1));\n // Hash URL should always have a leading / just like window.location.pathname\n // does, so if an app ends up at a route like /#something then we add a\n // leading slash so all of our path-matching behaves the same as if it would\n // in a browser router. This is particularly important when there exists a\n // root splat route () since that matches internally against\n // \"/*\" and we'd expect /#something to 404 in a hash router app.\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n return createLocation(\"\", {\n pathname,\n search,\n hash\n },\n // state defaults to `null` because `window.history.state` does\n globalHistory.state && globalHistory.state.usr || null, globalHistory.state && globalHistory.state.key || \"default\");\n }\n function createHashHref(window, to) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n function validateHashLocation(location, to) {\n warning(location.pathname.charAt(0) === \"/\", \"relative pathnames are not supported in hash history.push(\" + JSON.stringify(to) + \")\");\n }\n return getUrlBasedHistory(createHashLocation, createHashHref, validateHashLocation, options);\n}\nfunction invariant(value, message) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\nfunction warning(cond, message) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience, so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location, index) {\n return {\n usr: location.state,\n key: location.key,\n idx: index\n };\n}\n/**\n * Creates a Location object with a unique key from the given Path\n */\nfunction createLocation(current, to, state, key) {\n if (state === void 0) {\n state = null;\n }\n let location = _extends({\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\"\n }, typeof to === \"string\" ? parsePath(to) : to, {\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: to && to.key || key || createKey()\n });\n return location;\n}\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nfunction createPath(_ref) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\"\n } = _ref;\n if (search && search !== \"?\") pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\") pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nfunction parsePath(path) {\n let parsedPath = {};\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n if (path) {\n parsedPath.pathname = path;\n }\n }\n return parsedPath;\n}\nfunction getUrlBasedHistory(getLocation, createHref, validateLocation, options) {\n if (options === void 0) {\n options = {};\n }\n let {\n window = document.defaultView,\n v5Compat = false\n } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener = null;\n let index = getIndex();\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState(_extends({}, globalHistory.state, {\n idx: index\n }), \"\");\n }\n function getIndex() {\n let state = globalHistory.state || {\n idx: null\n };\n return state.idx;\n }\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({\n action,\n location: history.location,\n delta\n });\n }\n }\n function push(to, state) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n if (v5Compat && listener) {\n listener({\n action,\n location: history.location,\n delta: 1\n });\n }\n }\n function replace(to, state) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n if (v5Compat && listener) {\n listener({\n action,\n location: history.location,\n delta: 0\n });\n }\n }\n function createURL(to) {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base = window.location.origin !== \"null\" ? window.location.origin : window.location.href;\n let href = typeof to === \"string\" ? to : createPath(to);\n // Treating this as a full URL will strip any trailing spaces so we need to\n // pre-encode them since they might be part of a matching splat param from\n // an ancestor route\n href = href.replace(/ $/, \"%20\");\n invariant(base, \"No window.location.(origin|href) available to create URL for href: \" + href);\n return new URL(href, base);\n }\n let history = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n }\n };\n return history;\n}\n//#endregion\n\nvar ResultType;\n(function (ResultType) {\n ResultType[\"data\"] = \"data\";\n ResultType[\"deferred\"] = \"deferred\";\n ResultType[\"redirect\"] = \"redirect\";\n ResultType[\"error\"] = \"error\";\n})(ResultType || (ResultType = {}));\nconst immutableRouteKeys = new Set([\"lazy\", \"caseSensitive\", \"path\", \"id\", \"index\", \"children\"]);\nfunction isIndexRoute(route) {\n return route.index === true;\n}\n// Walk the route tree generating unique IDs where necessary, so we are working\n// solely with AgnosticDataRouteObject's within the Router\nfunction convertRoutesToDataRoutes(routes, mapRouteProperties, parentPath, manifest) {\n if (parentPath === void 0) {\n parentPath = [];\n }\n if (manifest === void 0) {\n manifest = {};\n }\n return routes.map((route, index) => {\n let treePath = [...parentPath, index];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(route.index !== true || !route.children, \"Cannot specify children on an index route\");\n invariant(!manifest[id], \"Found a route id collision on id \\\"\" + id + \"\\\". Route \" + \"id's must be globally unique within Data Router usages\");\n if (isIndexRoute(route)) {\n let indexRoute = _extends({}, route, mapRouteProperties(route), {\n id\n });\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute = _extends({}, route, mapRouteProperties(route), {\n id,\n children: undefined\n });\n manifest[id] = pathOrLayoutRoute;\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(route.children, mapRouteProperties, treePath, manifest);\n }\n return pathOrLayoutRoute;\n }\n });\n}\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nfunction matchRoutes(routes, locationArg, basename) {\n if (basename === void 0) {\n basename = \"/\";\n }\n let location = typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n let pathname = stripBasename(location.pathname || \"/\", basename);\n if (pathname == null) {\n return null;\n }\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n let decoded = decodePath(pathname);\n matches = matchRouteBranch(branches[i], decoded);\n }\n return matches;\n}\nfunction convertRouteMatchToUiMatch(match, loaderData) {\n let {\n route,\n pathname,\n params\n } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id],\n handle: route.handle\n };\n}\nfunction flattenRoutes(routes, branches, parentsMeta, parentPath) {\n if (branches === void 0) {\n branches = [];\n }\n if (parentsMeta === void 0) {\n parentsMeta = [];\n }\n if (parentPath === void 0) {\n parentPath = \"\";\n }\n let flattenRoute = (route, index, relativePath) => {\n let meta = {\n relativePath: relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route\n };\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(meta.relativePath.startsWith(parentPath), \"Absolute route path \\\"\" + meta.relativePath + \"\\\" nested under path \" + (\"\\\"\" + parentPath + \"\\\" is not valid. An absolute child route path \") + \"must start with the combined path of all its parent routes.\");\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n // Add the children before adding this route to the array, so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true, \"Index routes must not have child routes. Please remove \" + (\"all child routes from route path \\\"\" + path + \"\\\".\"));\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta\n });\n };\n routes.forEach((route, index) => {\n var _route$path;\n // coarse-grain check for optional params\n if (route.path === \"\" || !((_route$path = route.path) != null && _route$path.includes(\"?\"))) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n return branches;\n}\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path) {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n let [first, ...rest] = segments;\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n let result = [];\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children, so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explode _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(...restExploded.map(subpath => subpath === \"\" ? required : [required, subpath].join(\"/\")));\n // Then, if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n // for absolute paths, ensure `/` instead of empty segment\n return result.map(exploded => path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded);\n}\nfunction rankRouteBranches(branches) {\n branches.sort((a, b) => a.score !== b.score ? b.score - a.score // Higher score first\n : compareIndexes(a.routesMeta.map(meta => meta.childrenIndex), b.routesMeta.map(meta => meta.childrenIndex)));\n}\nconst paramRe = /^:[\\w-]+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = s => s === \"*\";\nfunction computeScore(path, index) {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n if (index) {\n initialScore += indexRouteValue;\n }\n return segments.filter(s => !isSplat(s)).reduce((score, segment) => score + (paramRe.test(segment) ? dynamicSegmentValue : segment === \"\" ? emptySegmentValue : staticSegmentValue), initialScore);\n}\nfunction compareIndexes(a, b) {\n let siblings = a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n return siblings ?\n // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1] :\n // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\nfunction matchRouteBranch(branch, pathname) {\n let {\n routesMeta\n } = branch;\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname = matchedPathname === \"/\" ? pathname : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath({\n path: meta.relativePath,\n caseSensitive: meta.caseSensitive,\n end\n }, remainingPathname);\n if (!match) return null;\n Object.assign(matchedParams, match.params);\n let route = meta.route;\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(joinPaths([matchedPathname, match.pathnameBase])),\n route\n });\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n return matches;\n}\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nfunction generatePath(originalPath, params) {\n if (params === void 0) {\n params = {};\n }\n let path = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(false, \"Route path \\\"\" + path + \"\\\" will be treated as if it were \" + (\"\\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\" because the `*` character must \") + \"always follow a `/` in the pattern. To get rid of this warning, \" + (\"please change the route path to \\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\".\"));\n path = path.replace(/\\*$/, \"/*\");\n }\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n const stringify = p => p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n const segments = path.split(/\\/+/).map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\";\n // Apply the splat\n return stringify(params[star]);\n }\n const keyMatch = segment.match(/^:([\\w-]+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key];\n invariant(optional === \"?\" || param != null, \"Missing \\\":\" + key + \"\\\" param\");\n return stringify(param);\n }\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter(segment => !!segment);\n return prefix + segments.join(\"/\");\n}\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\nfunction matchPath(pattern, pathname) {\n if (typeof pattern === \"string\") {\n pattern = {\n path: pattern,\n caseSensitive: false,\n end: true\n };\n }\n let [matcher, compiledParams] = compilePath(pattern.path, pattern.caseSensitive, pattern.end);\n let match = pathname.match(matcher);\n if (!match) return null;\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params = compiledParams.reduce((memo, _ref, index) => {\n let {\n paramName,\n isOptional\n } = _ref;\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname.slice(0, matchedPathname.length - splatValue.length).replace(/(.)\\/+$/, \"$1\");\n }\n const value = captureGroups[index];\n if (isOptional && !value) {\n memo[paramName] = undefined;\n } else {\n memo[paramName] = (value || \"\").replace(/%2F/g, \"/\");\n }\n return memo;\n }, {});\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern\n };\n}\nfunction compilePath(path, caseSensitive, end) {\n if (caseSensitive === void 0) {\n caseSensitive = false;\n }\n if (end === void 0) {\n end = true;\n }\n warning(path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"), \"Route path \\\"\" + path + \"\\\" will be treated as if it were \" + (\"\\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\" because the `*` character must \") + \"always follow a `/` in the pattern. To get rid of this warning, \" + (\"please change the route path to \\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\".\"));\n let params = [];\n let regexpSource = \"^\" + path.replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(/\\/:([\\w-]+)(\\?)?/g, (_, paramName, isOptional) => {\n params.push({\n paramName,\n isOptional: isOptional != null\n });\n return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n });\n if (path.endsWith(\"*\")) {\n params.push({\n paramName: \"*\"\n });\n regexpSource += path === \"*\" || path === \"/*\" ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex, so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else ;\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n return [matcher, params];\n}\nfunction decodePath(value) {\n try {\n return value.split(\"/\").map(v => decodeURIComponent(v).replace(/\\//g, \"%2F\")).join(\"/\");\n } catch (error) {\n warning(false, \"The URL path \\\"\" + value + \"\\\" could not be decoded because it is is a \" + \"malformed URL segment. This is probably due to a bad percent \" + (\"encoding (\" + error + \").\"));\n return value;\n }\n}\n/**\n * @private\n */\nfunction stripBasename(pathname, basename) {\n if (basename === \"/\") return pathname;\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\") ? basename.length - 1 : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n return pathname.slice(startIndex) || \"/\";\n}\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nfunction resolvePath(to, fromPathname) {\n if (fromPathname === void 0) {\n fromPathname = \"/\";\n }\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\"\n } = typeof to === \"string\" ? parsePath(to) : to;\n let pathname = toPathname ? toPathname.startsWith(\"/\") ? toPathname : resolvePathname(toPathname, fromPathname) : fromPathname;\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash)\n };\n}\nfunction resolvePathname(relativePath, fromPathname) {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n relativeSegments.forEach(segment => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\nfunction getInvalidPathError(char, field, dest, path) {\n return \"Cannot include a '\" + char + \"' character in a manually specified \" + (\"`to.\" + field + \"` field [\" + JSON.stringify(path) + \"]. Please separate it out to the \") + (\"`to.\" + dest + \"` field. Alternatively you may provide the full path as \") + \"a string in and the router will parse it for you.\";\n}\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nfunction getPathContributingMatches(matches) {\n return matches.filter((match, index) => index === 0 || match.route.path && match.route.path.length > 0);\n}\n// Return the array of pathnames for the current route matches - used to\n// generate the routePathnames input for resolveTo()\nfunction getResolveToMatches(matches, v7_relativeSplatPath) {\n let pathMatches = getPathContributingMatches(matches);\n // When v7_relativeSplatPath is enabled, use the full pathname for the leaf\n // match so we include splat values for \".\" links. See:\n // https://github.com/remix-run/react-router/issues/11052#issuecomment-1836589329\n if (v7_relativeSplatPath) {\n return pathMatches.map((match, idx) => idx === matches.length - 1 ? match.pathname : match.pathnameBase);\n }\n return pathMatches.map(match => match.pathnameBase);\n}\n/**\n * @private\n */\nfunction resolveTo(toArg, routePathnames, locationPathname, isPathRelative) {\n if (isPathRelative === void 0) {\n isPathRelative = false;\n }\n let to;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = _extends({}, toArg);\n invariant(!to.pathname || !to.pathname.includes(\"?\"), getInvalidPathError(\"?\", \"pathname\", \"search\", to));\n invariant(!to.pathname || !to.pathname.includes(\"#\"), getInvalidPathError(\"#\", \"pathname\", \"hash\", to));\n invariant(!to.search || !to.search.includes(\"#\"), getInvalidPathError(\"#\", \"search\", \"hash\", to));\n }\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n let from;\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n // With relative=\"route\" (the default), each leading .. segment means\n // \"go up one route\" instead of \"go up one URL segment\". This is a key\n // difference from how works and a major reason we call this a\n // \"to\" value instead of a \"href\".\n if (!isPathRelative && toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n to.pathname = toSegments.join(\"/\");\n }\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n let path = resolvePath(to, from);\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash = toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash = (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (!path.pathname.endsWith(\"/\") && (hasExplicitTrailingSlash || hasCurrentTrailingSlash)) {\n path.pathname += \"/\";\n }\n return path;\n}\n/**\n * @private\n */\nfunction getToPathname(to) {\n // Empty strings should be treated the same as / paths\n return to === \"\" || to.pathname === \"\" ? \"/\" : typeof to === \"string\" ? parsePath(to).pathname : to.pathname;\n}\n/**\n * @private\n */\nconst joinPaths = paths => paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n/**\n * @private\n */\nconst normalizePathname = pathname => pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n/**\n * @private\n */\nconst normalizeSearch = search => !search || search === \"?\" ? \"\" : search.startsWith(\"?\") ? search : \"?\" + search;\n/**\n * @private\n */\nconst normalizeHash = hash => !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nconst json = function json(data, init) {\n if (init === void 0) {\n init = {};\n }\n let responseInit = typeof init === \"number\" ? {\n status: init\n } : init;\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n return new Response(JSON.stringify(data), _extends({}, responseInit, {\n headers\n }));\n};\nclass AbortedDeferredError extends Error {}\nclass DeferredData {\n constructor(data, responseInit) {\n this.pendingKeysSet = new Set();\n this.subscribers = new Set();\n this.deferredKeys = [];\n invariant(data && typeof data === \"object\" && !Array.isArray(data), \"defer() only accepts plain objects\");\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject;\n this.abortPromise = new Promise((_, r) => reject = r);\n this.controller = new AbortController();\n let onAbort = () => reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () => this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n this.data = Object.entries(data).reduce((acc, _ref2) => {\n let [key, value] = _ref2;\n return Object.assign(acc, {\n [key]: this.trackPromise(key, value)\n });\n }, {});\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n this.init = responseInit;\n }\n trackPromise(key, value) {\n if (!(value instanceof Promise)) {\n return value;\n }\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise = Promise.race([value, this.abortPromise]).then(data => this.onSettle(promise, key, undefined, data), error => this.onSettle(promise, key, error));\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n Object.defineProperty(promise, \"_tracked\", {\n get: () => true\n });\n return promise;\n }\n onSettle(promise, key, error, data) {\n if (this.controller.signal.aborted && error instanceof AbortedDeferredError) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", {\n get: () => error\n });\n return Promise.reject(error);\n }\n this.pendingKeysSet.delete(key);\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\"Deferred data for key \\\"\" + key + \"\\\" resolved/rejected with `undefined`, \" + \"you must resolve/reject with a value or `null`.\");\n Object.defineProperty(promise, \"_error\", {\n get: () => undefinedError\n });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", {\n get: () => error\n });\n this.emit(false, key);\n return Promise.reject(error);\n }\n Object.defineProperty(promise, \"_data\", {\n get: () => data\n });\n this.emit(false, key);\n return data;\n }\n emit(aborted, settledKey) {\n this.subscribers.forEach(subscriber => subscriber(aborted, settledKey));\n }\n subscribe(fn) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n async resolveData(signal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise(resolve => {\n this.subscribe(aborted => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n get unwrappedData() {\n invariant(this.data !== null && this.done, \"Can only unwrap data on initialized and settled deferreds\");\n return Object.entries(this.data).reduce((acc, _ref3) => {\n let [key, value] = _ref3;\n return Object.assign(acc, {\n [key]: unwrapTrackedPromise(value)\n });\n }, {});\n }\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\nfunction isTrackedPromise(value) {\n return value instanceof Promise && value._tracked === true;\n}\nfunction unwrapTrackedPromise(value) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\nconst defer = function defer(data, init) {\n if (init === void 0) {\n init = {};\n }\n let responseInit = typeof init === \"number\" ? {\n status: init\n } : init;\n return new DeferredData(data, responseInit);\n};\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nconst redirect = function redirect(url, init) {\n if (init === void 0) {\n init = 302;\n }\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = {\n status: responseInit\n };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n return new Response(null, _extends({}, responseInit, {\n headers\n }));\n};\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nconst redirectDocument = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n *\n * We don't export the class for public use since it's an implementation\n * detail, but we export the interface above so folks can build their own\n * abstractions around instances via isRouteErrorResponse()\n */\nclass ErrorResponseImpl {\n constructor(status, statusText, data, internal) {\n if (internal === void 0) {\n internal = false;\n }\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nfunction isRouteErrorResponse(error) {\n return error != null && typeof error.status === \"number\" && typeof error.statusText === \"string\" && typeof error.internal === \"boolean\" && \"data\" in error;\n}\n\nconst validMutationMethodsArr = [\"post\", \"put\", \"patch\", \"delete\"];\nconst validMutationMethods = new Set(validMutationMethodsArr);\nconst validRequestMethodsArr = [\"get\", ...validMutationMethodsArr];\nconst validRequestMethods = new Set(validRequestMethodsArr);\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\nconst IDLE_NAVIGATION = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined\n};\nconst IDLE_FETCHER = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined\n};\nconst IDLE_BLOCKER = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined\n};\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\nconst defaultMapRouteProperties = route => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary)\n});\nconst TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\n//#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n/**\n * Create a router and listen to history POP navigations\n */\nfunction createRouter(init) {\n const routerWindow = init.window ? init.window : typeof window !== \"undefined\" ? window : undefined;\n const isBrowser = typeof routerWindow !== \"undefined\" && typeof routerWindow.document !== \"undefined\" && typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n invariant(init.routes.length > 0, \"You must provide a non-empty routes array to createRouter\");\n let mapRouteProperties;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = route => ({\n hasErrorBoundary: detectErrorBoundary(route)\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Routes keyed by ID\n let manifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(init.routes, mapRouteProperties, undefined, manifest);\n let inFlightDataRoutes;\n let basename = init.basename || \"/\";\n let dataStrategyImpl = init.unstable_dataStrategy || defaultDataStrategy;\n // Config driven behavior flags\n let future = _extends({\n v7_fetcherPersist: false,\n v7_normalizeFormMethod: false,\n v7_partialHydration: false,\n v7_prependBasename: false,\n v7_relativeSplatPath: false,\n unstable_skipActionErrorRevalidation: false\n }, init.future);\n // Cleanup function for history\n let unlistenHistory = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialErrors = null;\n if (initialMatches == null) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname\n });\n let {\n matches,\n route\n } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = {\n [route.id]: error\n };\n }\n let initialized;\n let hasLazyRoutes = initialMatches.some(m => m.route.lazy);\n let hasLoaders = initialMatches.some(m => m.route.loader);\n if (hasLazyRoutes) {\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n initialized = false;\n } else if (!hasLoaders) {\n // If we've got no loaders to run, then we're good to go\n initialized = true;\n } else if (future.v7_partialHydration) {\n // If partial hydration is enabled, we're initialized so long as we were\n // provided with hydrationData for every route with a loader, and no loaders\n // were marked for explicit hydration\n let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n let errors = init.hydrationData ? init.hydrationData.errors : null;\n let isRouteInitialized = m => {\n // No loader, nothing to initialize\n if (!m.route.loader) {\n return true;\n }\n // Explicitly opting-in to running on hydration\n if (typeof m.route.loader === \"function\" && m.route.loader.hydrate === true) {\n return false;\n }\n // Otherwise, initialized if hydrated with data or an error\n return loaderData && loaderData[m.route.id] !== undefined || errors && errors[m.route.id] !== undefined;\n };\n // If errors exist, don't consider routes below the boundary\n if (errors) {\n let idx = initialMatches.findIndex(m => errors[m.route.id] !== undefined);\n initialized = initialMatches.slice(0, idx + 1).every(isRouteInitialized);\n } else {\n initialized = initialMatches.every(isRouteInitialized);\n }\n } else {\n // Without partial hydration - we're initialized if we were provided any\n // hydrationData - which is expected to be complete\n initialized = init.hydrationData != null;\n }\n let router;\n let state = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: init.hydrationData && init.hydrationData.loaderData || {},\n actionData: init.hydrationData && init.hydrationData.actionData || null,\n errors: init.hydrationData && init.hydrationData.errors || initialErrors,\n fetchers: new Map(),\n blockers: new Map()\n };\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction = Action.Pop;\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n // AbortController for the active navigation\n let pendingNavigationController;\n // Should the current navigation enable document.startViewTransition?\n let pendingViewTransitionEnabled = false;\n // Store applied view transitions so we can apply them on POP\n let appliedViewTransitions = new Map();\n // Cleanup function for persisting applied transitions to sessionStorage\n let removePageHideEventListener = null;\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes = [];\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads = [];\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set();\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n // Ref-count mounted fetchers so we know when it's ok to clean them up\n let activeFetchers = new Map();\n // Fetchers that have requested a delete when using v7_fetcherPersist,\n // they'll be officially removed after they return to idle\n let deletedFetchers = new Set();\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let ignoreNextHistoryUpdate = false;\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(_ref => {\n let {\n action: historyAction,\n location,\n delta\n } = _ref;\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (ignoreNextHistoryUpdate) {\n ignoreNextHistoryUpdate = false;\n return;\n }\n warning(blockerFunctions.size === 0 || delta != null, \"You are trying to use a blocker on a POP navigation to a location \" + \"that was not created by @remix-run/router. This will fail silently in \" + \"production. This can happen if you are navigating outside the router \" + \"via `window.history.pushState`/`window.location.hash` instead of using \" + \"router navigation APIs. This can also happen if you are using \" + \"createHashRouter and the user manually changes the URL.\");\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction\n });\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n ignoreNextHistoryUpdate = true;\n init.history.go(delta * -1);\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location\n });\n // Re-do the same POP navigation we just blocked\n init.history.go(delta);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey, IDLE_BLOCKER);\n updateState({\n blockers\n });\n }\n });\n return;\n }\n return startNavigation(historyAction, location);\n });\n if (isBrowser) {\n // FIXME: This feels gross. How can we cleanup the lines between\n // scrollRestoration/appliedTransitions persistance?\n restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n let _saveAppliedTransitions = () => persistAppliedTransitions(routerWindow, appliedViewTransitions);\n routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n removePageHideEventListener = () => routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n }\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(Action.Pop, state.location, {\n initialHydration: true\n });\n }\n return router;\n }\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n if (removePageHideEventListener) {\n removePageHideEventListener();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n // Subscribe to state updates for the router\n function subscribe(fn) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n // Update our state and notify the calling context of the change\n function updateState(newState, opts) {\n if (opts === void 0) {\n opts = {};\n }\n state = _extends({}, state, newState);\n // Prep fetcher cleanup so we can tell the UI which fetcher data entries\n // can be removed\n let completedFetchers = [];\n let deletedFetchersKeys = [];\n if (future.v7_fetcherPersist) {\n state.fetchers.forEach((fetcher, key) => {\n if (fetcher.state === \"idle\") {\n if (deletedFetchers.has(key)) {\n // Unmounted from the UI and can be totally removed\n deletedFetchersKeys.push(key);\n } else {\n // Returned to idle but still mounted in the UI, so semi-remains for\n // revalidations and such\n completedFetchers.push(key);\n }\n }\n });\n }\n // Iterate over a local copy so that if flushSync is used and we end up\n // removing and adding a new subscriber due to the useCallback dependencies,\n // we don't get ourselves into a loop calling the new subscriber immediately\n [...subscribers].forEach(subscriber => subscriber(state, {\n deletedFetchers: deletedFetchersKeys,\n unstable_viewTransitionOpts: opts.viewTransitionOpts,\n unstable_flushSync: opts.flushSync === true\n }));\n // Remove idle fetchers from state since we only care about in-flight fetchers.\n if (future.v7_fetcherPersist) {\n completedFetchers.forEach(key => state.fetchers.delete(key));\n deletedFetchersKeys.forEach(key => deleteFetcher(key));\n }\n }\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(location, newState, _temp) {\n var _location$state, _location$state2;\n let {\n flushSync\n } = _temp === void 0 ? {} : _temp;\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload = state.actionData != null && state.navigation.formMethod != null && isMutationMethod(state.navigation.formMethod) && state.navigation.state === \"loading\" && ((_location$state = location.state) == null ? void 0 : _location$state._isRedirect) !== true;\n let actionData;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData ? mergeLoaderData(state.loaderData, newState.loaderData, newState.matches || [], newState.errors) : state.loaderData;\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset = pendingPreventScrollReset === true || state.navigation.formMethod != null && isMutationMethod(state.navigation.formMethod) && ((_location$state2 = location.state) == null ? void 0 : _location$state2._isRedirect) !== true;\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n if (isUninterruptedRevalidation) ; else if (pendingAction === Action.Pop) ; else if (pendingAction === Action.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === Action.Replace) {\n init.history.replace(location, location.state);\n }\n let viewTransitionOpts;\n // On POP, enable transitions if they were enabled on the original navigation\n if (pendingAction === Action.Pop) {\n // Forward takes precedence so they behave like the original navigation\n let priorPaths = appliedViewTransitions.get(state.location.pathname);\n if (priorPaths && priorPaths.has(location.pathname)) {\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location\n };\n } else if (appliedViewTransitions.has(location.pathname)) {\n // If we don't have a previous forward nav, assume we're popping back to\n // the new location and enable if that location previously enabled\n viewTransitionOpts = {\n currentLocation: location,\n nextLocation: state.location\n };\n }\n } else if (pendingViewTransitionEnabled) {\n // Store the applied transition on PUSH/REPLACE\n let toPaths = appliedViewTransitions.get(state.location.pathname);\n if (toPaths) {\n toPaths.add(location.pathname);\n } else {\n toPaths = new Set([location.pathname]);\n appliedViewTransitions.set(state.location.pathname, toPaths);\n }\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location\n };\n }\n updateState(_extends({}, newState, {\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(location, newState.matches || state.matches),\n preventScrollReset,\n blockers\n }), {\n viewTransitionOpts,\n flushSync: flushSync === true\n });\n // Reset stateful navigation vars\n pendingAction = Action.Pop;\n pendingPreventScrollReset = false;\n pendingViewTransitionEnabled = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n cancelledFetcherLoads = [];\n }\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(to, opts) {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n let normalizedPath = normalizeTo(state.location, state.matches, basename, future.v7_prependBasename, to, future.v7_relativeSplatPath, opts == null ? void 0 : opts.fromRouteId, opts == null ? void 0 : opts.relative);\n let {\n path,\n submission,\n error\n } = normalizeNavigateOptions(future.v7_normalizeFormMethod, false, normalizedPath, opts);\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = _extends({}, nextLocation, init.history.encodeLocation(nextLocation));\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n let historyAction = Action.Push;\n if (userReplace === true) {\n historyAction = Action.Replace;\n } else if (userReplace === false) ; else if (submission != null && isMutationMethod(submission.formMethod) && submission.formAction === state.location.pathname + state.location.search) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = Action.Replace;\n }\n let preventScrollReset = opts && \"preventScrollReset\" in opts ? opts.preventScrollReset === true : undefined;\n let flushSync = (opts && opts.unstable_flushSync) === true;\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction\n });\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey, IDLE_BLOCKER);\n updateState({\n blockers\n });\n }\n });\n return;\n }\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n enableViewTransition: opts && opts.unstable_viewTransition,\n flushSync\n });\n }\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({\n revalidation: \"loading\"\n });\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true\n });\n return;\n }\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(pendingAction || state.historyAction, state.navigation.location, {\n overrideNavigation: state.navigation\n });\n }\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(historyAction, location, opts) {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation = (opts && opts.startUninterruptedRevalidation) === true;\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, basename);\n let flushSync = (opts && opts.flushSync) === true;\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let error = getInternalRouterError(404, {\n pathname: location.pathname\n });\n let {\n matches: notFoundMatches,\n route\n } = getShortCircuitMatches(routesToUse);\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n completeNavigation(location, {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error\n }\n }, {\n flushSync\n });\n return;\n }\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial load will always\n // be \"same hash\". For example, on /page#hash and submit a
\n // which will default to a navigation to /page\n if (state.initialized && !isRevalidationRequired && isHashChangeOnly(state.location, location) && !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))) {\n completeNavigation(location, {\n matches\n }, {\n flushSync\n });\n return;\n }\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(init.history, location, pendingNavigationController.signal, opts && opts.submission);\n let pendingActionResult;\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingActionResult = [findNearestBoundary(matches).route.id, {\n type: ResultType.error,\n error: opts.pendingError\n }];\n } else if (opts && opts.submission && isMutationMethod(opts.submission.formMethod)) {\n // Call action if we received an action submission\n let actionResult = await handleAction(request, location, opts.submission, matches, {\n replace: opts.replace,\n flushSync\n });\n if (actionResult.shortCircuited) {\n return;\n }\n pendingActionResult = actionResult.pendingActionResult;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n flushSync = false;\n // Create a GET request for the loaders\n request = createClientSideRequest(init.history, request.url, request.signal);\n }\n // Call loaders\n let {\n shortCircuited,\n loaderData,\n errors\n } = await handleLoaders(request, location, matches, loadingNavigation, opts && opts.submission, opts && opts.fetcherSubmission, opts && opts.replace, opts && opts.initialHydration === true, flushSync, pendingActionResult);\n if (shortCircuited) {\n return;\n }\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n completeNavigation(location, _extends({\n matches\n }, getActionDataForCommit(pendingActionResult), {\n loaderData,\n errors\n }));\n }\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(request, location, submission, matches, opts) {\n if (opts === void 0) {\n opts = {};\n }\n interruptActiveLoads();\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({\n navigation\n }, {\n flushSync: opts.flushSync === true\n });\n // Call our action and get the result\n let result;\n let actionMatch = getTargetMatch(matches, location);\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id\n })\n };\n } else {\n let results = await callDataStrategy(\"action\", request, [actionMatch], matches);\n result = results[0];\n if (request.signal.aborted) {\n return {\n shortCircuited: true\n };\n }\n }\n if (isRedirectResult(result)) {\n let replace;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n let location = normalizeRedirectLocation(result.response.headers.get(\"Location\"), new URL(request.url), basename);\n replace = location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(request, result, {\n submission,\n replace\n });\n return {\n shortCircuited: true\n };\n }\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, {\n type: \"defer-action\"\n });\n }\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n // By default, all submissions are REPLACE navigations, but if the\n // action threw an error that'll be rendered in an errorElement, we fall\n // back to PUSH so that the user can use the back button to get back to\n // the pre-submission form location to try again\n if ((opts && opts.replace) !== true) {\n pendingAction = Action.Push;\n }\n return {\n pendingActionResult: [boundaryMatch.route.id, result]\n };\n }\n return {\n pendingActionResult: [actionMatch.route.id, result]\n };\n }\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(request, location, matches, overrideNavigation, submission, fetcherSubmission, replace, initialHydration, flushSync, pendingActionResult) {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation = overrideNavigation || getLoadingNavigation(location, submission);\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission = submission || fetcherSubmission || getSubmissionFromNavigation(loadingNavigation);\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(init.history, state, matches, activeSubmission, location, future.v7_partialHydration && initialHydration === true, future.unstable_skipActionErrorRevalidation, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, deletedFetchers, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, pendingActionResult);\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(routeId => !(matches && matches.some(m => m.route.id === routeId)) || matchesToLoad && matchesToLoad.some(m => m.route.id === routeId));\n pendingNavigationLoadId = ++incrementingLoadId;\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers = markFetchRedirectsDone();\n completeNavigation(location, _extends({\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors: pendingActionResult && isErrorResult(pendingActionResult[1]) ? {\n [pendingActionResult[0]]: pendingActionResult[1].error\n } : null\n }, getActionDataForCommit(pendingActionResult), updatedFetchers ? {\n fetchers: new Map(state.fetchers)\n } : {}), {\n flushSync\n });\n return {\n shortCircuited: true\n };\n }\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n // If we have partialHydration enabled, then don't update the state for the\n // initial data load since it's not a \"navigation\"\n if (!isUninterruptedRevalidation && (!future.v7_partialHydration || !initialHydration)) {\n revalidatingFetchers.forEach(rf => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(undefined, fetcher ? fetcher.data : undefined);\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n let actionData;\n if (pendingActionResult && !isErrorResult(pendingActionResult[1])) {\n // This is cast to `any` currently because `RouteData`uses any and it\n // would be a breaking change to use any.\n // TODO: v7 - change `RouteData` to use `unknown` instead of `any`\n actionData = {\n [pendingActionResult[0]]: pendingActionResult[1].data\n };\n } else if (state.actionData) {\n if (Object.keys(state.actionData).length === 0) {\n actionData = null;\n } else {\n actionData = state.actionData;\n }\n }\n updateState(_extends({\n navigation: loadingNavigation\n }, actionData !== undefined ? {\n actionData\n } : {}, revalidatingFetchers.length > 0 ? {\n fetchers: new Map(state.fetchers)\n } : {}), {\n flushSync\n });\n }\n revalidatingFetchers.forEach(rf => {\n if (fetchControllers.has(rf.key)) {\n abortFetcher(rf.key);\n }\n if (rf.controller) {\n // Fetchers use an independent AbortController so that aborting a fetcher\n // (via deleteFetcher) does not abort the triggering navigation that\n // triggered the revalidation\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n // Proxy navigation abort through to revalidation fetchers\n let abortPendingFetchRevalidations = () => revalidatingFetchers.forEach(f => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\"abort\", abortPendingFetchRevalidations);\n }\n let {\n loaderResults,\n fetcherResults\n } = await callLoadersAndMaybeResolveData(state.matches, matches, matchesToLoad, revalidatingFetchers, request);\n if (request.signal.aborted) {\n return {\n shortCircuited: true\n };\n }\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\"abort\", abortPendingFetchRevalidations);\n }\n revalidatingFetchers.forEach(rf => fetchControllers.delete(rf.key));\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect([...loaderResults, ...fetcherResults]);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey = revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n await startRedirectNavigation(request, redirect.result, {\n replace\n });\n return {\n shortCircuited: true\n };\n }\n // Process and commit output from loaders\n let {\n loaderData,\n errors\n } = processLoaderData(state, matches, matchesToLoad, loaderResults, pendingActionResult, revalidatingFetchers, fetcherResults, activeDeferreds);\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe(aborted => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n // During partial hydration, preserve SSR errors for routes that don't re-run\n if (future.v7_partialHydration && initialHydration && state.errors) {\n Object.entries(state.errors).filter(_ref2 => {\n let [id] = _ref2;\n return !matchesToLoad.some(m => m.route.id === id);\n }).forEach(_ref3 => {\n let [routeId, error] = _ref3;\n errors = Object.assign(errors || {}, {\n [routeId]: error\n });\n });\n }\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers = updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n return _extends({\n loaderData,\n errors\n }, shouldUpdateFetchers ? {\n fetchers: new Map(state.fetchers)\n } : {});\n }\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(key, routeId, href, opts) {\n if (isServer) {\n throw new Error(\"router.fetch() was called during the server render, but it shouldn't be. \" + \"You are likely calling a useFetcher() method in the body of your component. \" + \"Try moving it to a useEffect or a callback.\");\n }\n if (fetchControllers.has(key)) abortFetcher(key);\n let flushSync = (opts && opts.unstable_flushSync) === true;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(state.location, state.matches, basename, future.v7_prependBasename, href, future.v7_relativeSplatPath, routeId, opts == null ? void 0 : opts.relative);\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n if (!matches) {\n setFetcherError(key, routeId, getInternalRouterError(404, {\n pathname: normalizedPath\n }), {\n flushSync\n });\n return;\n }\n let {\n path,\n submission,\n error\n } = normalizeNavigateOptions(future.v7_normalizeFormMethod, true, normalizedPath, opts);\n if (error) {\n setFetcherError(key, routeId, error, {\n flushSync\n });\n return;\n }\n let match = getTargetMatch(matches, path);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(key, routeId, path, match, matches, flushSync, submission);\n return;\n }\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, {\n routeId,\n path\n });\n handleFetcherLoader(key, routeId, path, match, matches, flushSync, submission);\n }\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(key, routeId, path, match, requestMatches, flushSync, submission) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n if (!match.route.action && !match.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId\n });\n setFetcherError(key, routeId, error, {\n flushSync\n });\n return;\n }\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n flushSync\n });\n // Call the action for the fetcher\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(init.history, path, abortController.signal, submission);\n fetchControllers.set(key, abortController);\n let originatingLoadId = incrementingLoadId;\n let actionResults = await callDataStrategy(\"action\", fetchRequest, [match], requestMatches);\n let actionResult = actionResults[0];\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n // When using v7_fetcherPersist, we don't want errors bubbling up to the UI\n // or redirects processed for unmounted fetchers so we just revert them to\n // idle\n if (future.v7_fetcherPersist && deletedFetchers.has(key)) {\n if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n // Let SuccessResult's fall through for revalidation\n } else {\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our action started, so that\n // should take precedence over this redirect navigation. We already\n // set isRevalidationRequired so all loaders for the new route should\n // fire unless opted out via shouldRevalidate\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n updateFetcherState(key, getLoadingFetcher(submission));\n return startRedirectNavigation(fetchRequest, actionResult, {\n fetcherSubmission: submission\n });\n }\n }\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n }\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, {\n type: \"defer-action\"\n });\n }\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(init.history, nextLocation, abortController.signal);\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches = state.navigation.state !== \"idle\" ? matchRoutes(routesToUse, state.navigation.location, basename) : state.matches;\n invariant(matches, \"Didn't find any matches after fetcher action\");\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(init.history, state, matches, submission, nextLocation, false, future.unstable_skipActionErrorRevalidation, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, deletedFetchers, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, [match.route.id, actionResult]);\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers.filter(rf => rf.key !== key).forEach(rf => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(undefined, existingFetcher ? existingFetcher.data : undefined);\n state.fetchers.set(staleKey, revalidatingFetcher);\n if (fetchControllers.has(staleKey)) {\n abortFetcher(staleKey);\n }\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n updateState({\n fetchers: new Map(state.fetchers)\n });\n let abortPendingFetchRevalidations = () => revalidatingFetchers.forEach(rf => abortFetcher(rf.key));\n abortController.signal.addEventListener(\"abort\", abortPendingFetchRevalidations);\n let {\n loaderResults,\n fetcherResults\n } = await callLoadersAndMaybeResolveData(state.matches, matches, matchesToLoad, revalidatingFetchers, revalidationRequest);\n if (abortController.signal.aborted) {\n return;\n }\n abortController.signal.removeEventListener(\"abort\", abortPendingFetchRevalidations);\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach(r => fetchControllers.delete(r.key));\n let redirect = findRedirect([...loaderResults, ...fetcherResults]);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey = revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n return startRedirectNavigation(revalidationRequest, redirect.result);\n }\n // Process and commit output from loaders\n let {\n loaderData,\n errors\n } = processLoaderData(state, state.matches, matchesToLoad, loaderResults, undefined, revalidatingFetchers, fetcherResults, activeDeferreds);\n // Since we let revalidations complete even if the submitting fetcher was\n // deleted, only put it back to idle if it hasn't been deleted\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n abortStaleFetchLoads(loadId);\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (state.navigation.state === \"loading\" && loadId > pendingNavigationLoadId) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers)\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(state.loaderData, loaderData, matches, errors),\n fetchers: new Map(state.fetchers)\n });\n isRevalidationRequired = false;\n }\n }\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(key, routeId, path, match, matches, flushSync, submission) {\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getLoadingFetcher(submission, existingFetcher ? existingFetcher.data : undefined), {\n flushSync\n });\n // Call the loader for this fetcher route match\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(init.history, path, abortController.signal);\n fetchControllers.set(key, abortController);\n let originatingLoadId = incrementingLoadId;\n let results = await callDataStrategy(\"loader\", fetchRequest, [match], matches);\n let result = results[0];\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result = (await resolveDeferredData(result, fetchRequest.signal, true)) || result;\n }\n // We can delete this so long as we weren't aborted by our our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n if (fetchRequest.signal.aborted) {\n return;\n }\n // We don't want errors bubbling up or redirects followed for unmounted\n // fetchers, so short circuit here if it was removed from the UI\n if (deletedFetchers.has(key)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our loader started, so that\n // should take precedence over this redirect navigation\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(fetchRequest, result);\n return;\n }\n }\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n setFetcherError(key, routeId, result.error);\n return;\n }\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n // Put the fetcher back into an idle state\n updateFetcherState(key, getDoneFetcher(result.data));\n }\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(request, redirect, _temp2) {\n let {\n submission,\n fetcherSubmission,\n replace\n } = _temp2 === void 0 ? {} : _temp2;\n if (redirect.response.headers.has(\"X-Remix-Revalidate\")) {\n isRevalidationRequired = true;\n }\n let location = redirect.response.headers.get(\"Location\");\n invariant(location, \"Expected a Location header on the redirect Response\");\n location = normalizeRedirectLocation(location, new URL(request.url), basename);\n let redirectLocation = createLocation(state.location, location, {\n _isRedirect: true\n });\n if (isBrowser) {\n let isDocumentReload = false;\n if (redirect.response.headers.has(\"X-Remix-Reload-Document\")) {\n // Hard reload if the response contained X-Remix-Reload-Document\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(location)) {\n const url = init.history.createURL(location);\n isDocumentReload =\n // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin ||\n // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n if (isDocumentReload) {\n if (replace) {\n routerWindow.location.replace(location);\n } else {\n routerWindow.location.assign(location);\n }\n return;\n }\n }\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n let redirectHistoryAction = replace === true ? Action.Replace : Action.Push;\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let {\n formMethod,\n formAction,\n formEncType\n } = state.navigation;\n if (!submission && !fetcherSubmission && formMethod && formAction && formEncType) {\n submission = getSubmissionFromNavigation(state.navigation);\n }\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n let activeSubmission = submission || fetcherSubmission;\n if (redirectPreserveMethodStatusCodes.has(redirect.response.status) && activeSubmission && isMutationMethod(activeSubmission.formMethod)) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: _extends({}, activeSubmission, {\n formAction: location\n }),\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset\n });\n } else {\n // If we have a navigation submission, we will preserve it through the\n // redirect navigation\n let overrideNavigation = getLoadingNavigation(redirectLocation, submission);\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation,\n // Send fetcher submissions through for shouldRevalidate\n fetcherSubmission,\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset\n });\n }\n }\n // Utility wrapper for calling dataStrategy client-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(type, request, matchesToLoad, matches) {\n try {\n let results = await callDataStrategyImpl(dataStrategyImpl, type, request, matchesToLoad, matches, manifest, mapRouteProperties);\n return await Promise.all(results.map((result, i) => {\n if (isRedirectHandlerResult(result)) {\n let response = result.result;\n return {\n type: ResultType.redirect,\n response: normalizeRelativeRoutingRedirectResponse(response, request, matchesToLoad[i].route.id, matches, basename, future.v7_relativeSplatPath)\n };\n }\n return convertHandlerResultToDataResult(result);\n }));\n } catch (e) {\n // If the outer dataStrategy method throws, just return the error for all\n // matches - and it'll naturally bubble to the root\n return matchesToLoad.map(() => ({\n type: ResultType.error,\n error: e\n }));\n }\n }\n async function callLoadersAndMaybeResolveData(currentMatches, matches, matchesToLoad, fetchersToLoad, request) {\n let [loaderResults, ...fetcherResults] = await Promise.all([matchesToLoad.length ? callDataStrategy(\"loader\", request, matchesToLoad, matches) : [], ...fetchersToLoad.map(f => {\n if (f.matches && f.match && f.controller) {\n let fetcherRequest = createClientSideRequest(init.history, f.path, f.controller.signal);\n return callDataStrategy(\"loader\", fetcherRequest, [f.match], f.matches).then(r => r[0]);\n } else {\n return Promise.resolve({\n type: ResultType.error,\n error: getInternalRouterError(404, {\n pathname: f.path\n })\n });\n }\n })]);\n await Promise.all([resolveDeferredResults(currentMatches, matchesToLoad, loaderResults, loaderResults.map(() => request.signal), false, state.loaderData), resolveDeferredResults(currentMatches, fetchersToLoad.map(f => f.match), fetcherResults, fetchersToLoad.map(f => f.controller ? f.controller.signal : null), true)]);\n return {\n loaderResults,\n fetcherResults\n };\n }\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.push(key);\n abortFetcher(key);\n }\n });\n }\n function updateFetcherState(key, fetcher, opts) {\n if (opts === void 0) {\n opts = {};\n }\n state.fetchers.set(key, fetcher);\n updateState({\n fetchers: new Map(state.fetchers)\n }, {\n flushSync: (opts && opts.flushSync) === true\n });\n }\n function setFetcherError(key, routeId, error, opts) {\n if (opts === void 0) {\n opts = {};\n }\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState({\n errors: {\n [boundaryMatch.route.id]: error\n },\n fetchers: new Map(state.fetchers)\n }, {\n flushSync: (opts && opts.flushSync) === true\n });\n }\n function getFetcher(key) {\n if (future.v7_fetcherPersist) {\n activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n // If this fetcher was previously marked for deletion, unmark it since we\n // have a new instance\n if (deletedFetchers.has(key)) {\n deletedFetchers.delete(key);\n }\n }\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n function deleteFetcher(key) {\n let fetcher = state.fetchers.get(key);\n // Don't abort the controller if this is a deletion of a fetcher.submit()\n // in it's loading phase since - we don't want to abort the corresponding\n // revalidation and want them to complete and land\n if (fetchControllers.has(key) && !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n deletedFetchers.delete(key);\n state.fetchers.delete(key);\n }\n function deleteFetcherAndUpdateState(key) {\n if (future.v7_fetcherPersist) {\n let count = (activeFetchers.get(key) || 0) - 1;\n if (count <= 0) {\n activeFetchers.delete(key);\n deletedFetchers.add(key);\n } else {\n activeFetchers.set(key, count);\n }\n } else {\n deleteFetcher(key);\n }\n updateState({\n fetchers: new Map(state.fetchers)\n });\n }\n function abortFetcher(key) {\n let controller = fetchControllers.get(key);\n invariant(controller, \"Expected fetch controller: \" + key);\n controller.abort();\n fetchControllers.delete(key);\n }\n function markFetchersDone(keys) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n function markFetchRedirectsDone() {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, \"Expected fetcher: \" + key);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n function abortStaleFetchLoads(landedId) {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, \"Expected fetcher: \" + key);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n function getBlocker(key, fn) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n return blocker;\n }\n function deleteBlocker(key) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key, newBlocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(blocker.state === \"unblocked\" && newBlocker.state === \"blocked\" || blocker.state === \"blocked\" && newBlocker.state === \"blocked\" || blocker.state === \"blocked\" && newBlocker.state === \"proceeding\" || blocker.state === \"blocked\" && newBlocker.state === \"unblocked\" || blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\", \"Invalid blocker state transition: \" + blocker.state + \" -> \" + newBlocker.state);\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({\n blockers\n });\n }\n function shouldBlockNavigation(_ref4) {\n let {\n currentLocation,\n nextLocation,\n historyAction\n } = _ref4;\n if (blockerFunctions.size === 0) {\n return;\n }\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({\n currentLocation,\n nextLocation,\n historyAction\n })) {\n return blockerKey;\n }\n }\n function cancelActiveDeferreds(predicate) {\n let cancelledRouteIds = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(positions, getPosition, getKey) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || null;\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({\n restoreScrollPosition: y\n });\n }\n }\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n function getScrollKey(location, matches) {\n if (getScrollRestorationKey) {\n let key = getScrollRestorationKey(location, matches.map(m => convertRouteMatchToUiMatch(m, state.loaderData)));\n return key || location.key;\n }\n return location.key;\n }\n function saveScrollPosition(location, matches) {\n if (savedScrollPositions && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n function getSavedScrollPosition(location, matches) {\n if (savedScrollPositions) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n function _internalSetRoutes(newRoutes) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(newRoutes, mapRouteProperties, undefined, manifest);\n }\n router = {\n get basename() {\n return basename;\n },\n get future() {\n return future;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return routerWindow;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: to => init.history.createHref(to),\n encodeLocation: to => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher: deleteFetcherAndUpdateState,\n dispose,\n getBlocker,\n deleteBlocker,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes\n };\n return router;\n}\n//#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\nconst UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\nfunction createStaticHandler(routes, opts) {\n invariant(routes.length > 0, \"You must provide a non-empty routes array to createStaticHandler\");\n let manifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties;\n if (opts != null && opts.mapRouteProperties) {\n mapRouteProperties = opts.mapRouteProperties;\n } else if (opts != null && opts.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = opts.detectErrorBoundary;\n mapRouteProperties = route => ({\n hasErrorBoundary: detectErrorBoundary(route)\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Config driven behavior flags\n let future = _extends({\n v7_relativeSplatPath: false,\n v7_throwAbortReason: false\n }, opts ? opts.future : null);\n let dataRoutes = convertRoutesToDataRoutes(routes, mapRouteProperties, undefined, manifest);\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n *\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n * - `opts.skipLoaderErrorBubbling` is an optional parameter that will prevent\n * the bubbling of errors which allows single-fetch-type implementations\n * where the client will handle the bubbling and we may need to return data\n * for the handling route\n */\n async function query(request, _temp3) {\n let {\n requestContext,\n skipLoaderErrorBubbling,\n unstable_dataStrategy\n } = _temp3 === void 0 ? {} : _temp3;\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, {\n method\n });\n let {\n matches: methodNotAllowedMatches,\n route\n } = getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, {\n pathname: location.pathname\n });\n let {\n matches: notFoundMatches,\n route\n } = getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null\n };\n }\n let result = await queryImpl(request, location, matches, requestContext, unstable_dataStrategy || null, skipLoaderErrorBubbling === true, null);\n if (isResponse(result)) {\n return result;\n }\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return _extends({\n location,\n basename\n }, result);\n }\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n *\n * - `opts.routeId` allows you to specify the specific route handler to call.\n * If not provided the handler will determine the proper route by matching\n * against `request.url`\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n */\n async function queryRoute(request, _temp4) {\n let {\n routeId,\n requestContext\n } = _temp4 === void 0 ? {} : _temp4;\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, {\n method\n });\n } else if (!matches) {\n throw getInternalRouterError(404, {\n pathname: location.pathname\n });\n }\n let match = routeId ? matches.find(m => m.route.id === routeId) : getTargetMatch(matches, location);\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, {\n pathname: location.pathname\n });\n }\n let result = await queryImpl(request, location, matches, requestContext, null, false, match);\n if (isResponse(result)) {\n return result;\n }\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n if (result.loaderData) {\n var _result$activeDeferre;\n let data = Object.values(result.loaderData)[0];\n if ((_result$activeDeferre = result.activeDeferreds) != null && _result$activeDeferre[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n return undefined;\n }\n async function queryImpl(request, location, matches, requestContext, unstable_dataStrategy, skipLoaderErrorBubbling, routeMatch) {\n invariant(request.signal, \"query()/queryRoute() requests must contain an AbortController signal\");\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(request, matches, routeMatch || getTargetMatch(matches, location), requestContext, unstable_dataStrategy, skipLoaderErrorBubbling, routeMatch != null);\n return result;\n }\n let result = await loadRouteData(request, matches, requestContext, unstable_dataStrategy, skipLoaderErrorBubbling, routeMatch);\n return isResponse(result) ? result : _extends({}, result, {\n actionData: null,\n actionHeaders: {}\n });\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction for a\n // `queryRoute` call, we throw the `HandlerResult` to bail out early\n // and then return or throw the raw Response here accordingly\n if (isHandlerResult(e) && isResponse(e.result)) {\n if (e.type === ResultType.error) {\n throw e.result;\n }\n return e.result;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n async function submit(request, matches, actionMatch, requestContext, unstable_dataStrategy, skipLoaderErrorBubbling, isRouteRequest) {\n let result;\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error\n };\n } else {\n let results = await callDataStrategy(\"action\", request, [actionMatch], matches, isRouteRequest, requestContext, unstable_dataStrategy);\n result = results[0];\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n }\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.response.status,\n headers: {\n Location: result.response.headers.get(\"Location\")\n }\n });\n }\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, {\n type: \"defer-action\"\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error\n };\n }\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: {\n [actionMatch.route.id]: result.data\n },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null\n };\n }\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal\n });\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = skipLoaderErrorBubbling ? actionMatch : findNearestBoundary(matches, actionMatch.route.id);\n let context = await loadRouteData(loaderRequest, matches, requestContext, unstable_dataStrategy, skipLoaderErrorBubbling, null, [boundaryMatch.route.id, result]);\n // action status codes take precedence over loader status codes\n return _extends({}, context, {\n statusCode: isRouteErrorResponse(result.error) ? result.error.status : result.statusCode != null ? result.statusCode : 500,\n actionData: null,\n actionHeaders: _extends({}, result.headers ? {\n [actionMatch.route.id]: result.headers\n } : {})\n });\n }\n let context = await loadRouteData(loaderRequest, matches, requestContext, unstable_dataStrategy, skipLoaderErrorBubbling, null);\n return _extends({}, context, {\n actionData: {\n [actionMatch.route.id]: result.data\n }\n }, result.statusCode ? {\n statusCode: result.statusCode\n } : {}, {\n actionHeaders: result.headers ? {\n [actionMatch.route.id]: result.headers\n } : {}\n });\n }\n async function loadRouteData(request, matches, requestContext, unstable_dataStrategy, skipLoaderErrorBubbling, routeMatch, pendingActionResult) {\n let isRouteRequest = routeMatch != null;\n // Short circuit if we have no loaders to run (queryRoute())\n if (isRouteRequest && !(routeMatch != null && routeMatch.route.loader) && !(routeMatch != null && routeMatch.route.lazy)) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch == null ? void 0 : routeMatch.route.id\n });\n }\n let requestMatches = routeMatch ? [routeMatch] : pendingActionResult && isErrorResult(pendingActionResult[1]) ? getLoaderMatchesUntilBoundary(matches, pendingActionResult[0]) : matches;\n let matchesToLoad = requestMatches.filter(m => m.route.loader || m.route.lazy);\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce((acc, m) => Object.assign(acc, {\n [m.route.id]: null\n }), {}),\n errors: pendingActionResult && isErrorResult(pendingActionResult[1]) ? {\n [pendingActionResult[0]]: pendingActionResult[1].error\n } : null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null\n };\n }\n let results = await callDataStrategy(\"loader\", request, matchesToLoad, matches, isRouteRequest, requestContext, unstable_dataStrategy);\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(matches, matchesToLoad, results, pendingActionResult, activeDeferreds, skipLoaderErrorBubbling);\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(matchesToLoad.map(match => match.route.id));\n matches.forEach(match => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n return _extends({}, context, {\n matches,\n activeDeferreds: activeDeferreds.size > 0 ? Object.fromEntries(activeDeferreds.entries()) : null\n });\n }\n // Utility wrapper for calling dataStrategy server-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(type, request, matchesToLoad, matches, isRouteRequest, requestContext, unstable_dataStrategy) {\n let results = await callDataStrategyImpl(unstable_dataStrategy || defaultDataStrategy, type, request, matchesToLoad, matches, manifest, mapRouteProperties, requestContext);\n return await Promise.all(results.map((result, i) => {\n if (isRedirectHandlerResult(result)) {\n let response = result.result;\n // Throw redirects and let the server handle them with an HTTP redirect\n throw normalizeRelativeRoutingRedirectResponse(response, request, matchesToLoad[i].route.id, matches, basename, future.v7_relativeSplatPath);\n }\n if (isResponse(result.result) && isRouteRequest) {\n // For SSR single-route requests, we want to hand Responses back\n // directly without unwrapping\n throw result;\n }\n return convertHandlerResultToDataResult(result);\n }));\n }\n return {\n dataRoutes,\n query,\n queryRoute\n };\n}\n//#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nfunction getStaticContextFromError(routes, context, error) {\n let newContext = _extends({}, context, {\n statusCode: isRouteErrorResponse(error) ? error.status : 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error\n }\n });\n return newContext;\n}\nfunction throwStaticHandlerAbortedError(request, isRouteRequest, future) {\n if (future.v7_throwAbortReason && request.signal.reason !== undefined) {\n throw request.signal.reason;\n }\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(method + \"() call aborted: \" + request.method + \" \" + request.url);\n}\nfunction isSubmissionNavigation(opts) {\n return opts != null && (\"formData\" in opts && opts.formData != null || \"body\" in opts && opts.body !== undefined);\n}\nfunction normalizeTo(location, matches, basename, prependBasename, to, v7_relativeSplatPath, fromRouteId, relative) {\n let contextualMatches;\n let activeRouteMatch;\n if (fromRouteId) {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n // Resolve the relative path\n let path = resolveTo(to ? to : \".\", getResolveToMatches(contextualMatches, v7_relativeSplatPath), stripBasename(location.pathname, basename) || location.pathname, relative === \"path\");\n // When `to` is not specified we inherit search/hash from the current\n // location, unlike when to=\".\" and we just inherit the path.\n // See https://github.com/remix-run/remix/issues/927\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n // Add an ?index param for matched index routes if we don't already have one\n if ((to == null || to === \"\" || to === \".\") && activeRouteMatch && activeRouteMatch.route.index && !hasNakedIndexQuery(path.search)) {\n path.search = path.search ? path.search.replace(/^\\?/, \"?index&\") : \"?index\";\n }\n // If we're operating within a basename, prepend it to the pathname. If\n // this is a root navigation, then just use the raw basename which allows\n // the basename to have full control over the presence of a trailing slash\n // on root actions\n if (prependBasename && basename !== \"/\") {\n path.pathname = path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n return createPath(path);\n}\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(normalizeFormMethod, isFetcher, path, opts) {\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return {\n path\n };\n }\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, {\n method: opts.formMethod\n })\n };\n }\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, {\n type: \"invalid-body\"\n })\n });\n // Create a Submission on non-GET navigations\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = normalizeFormMethod ? rawFormMethod.toUpperCase() : rawFormMethod.toLowerCase();\n let formAction = stripHashFromPath(path);\n if (opts.body !== undefined) {\n if (opts.formEncType === \"text/plain\") {\n // text only support POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n let text = typeof opts.body === \"string\" ? opts.body : opts.body instanceof FormData || opts.body instanceof URLSearchParams ?\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce((acc, _ref5) => {\n let [name, value] = _ref5;\n return \"\" + acc + name + \"=\" + value + \"\\n\";\n }, \"\") : String(opts.body);\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json: undefined,\n text\n }\n };\n } else if (opts.formEncType === \"application/json\") {\n // json only supports POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n try {\n let json = typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json,\n text: undefined\n }\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n invariant(typeof FormData === \"function\", \"FormData is not available in this environment\");\n let searchParams;\n let formData;\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n let submission = {\n formMethod,\n formAction,\n formEncType: opts && opts.formEncType || \"application/x-www-form-urlencoded\",\n formData,\n json: undefined,\n text: undefined\n };\n if (isMutationMethod(submission.formMethod)) {\n return {\n path,\n submission\n };\n }\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n // On GET navigation submissions we can drop the ?index param from the\n // resulting location since all loaders will run. But fetcher GET submissions\n // only run a single loader so we need to preserve any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = \"?\" + searchParams;\n return {\n path: createPath(parsedPath),\n submission\n };\n}\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(matches, boundaryId) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex(m => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\nfunction getMatchesToLoad(history, state, matches, submission, location, isInitialLoad, skipActionErrorRevalidation, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, deletedFetchers, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, pendingActionResult) {\n let actionResult = pendingActionResult ? isErrorResult(pendingActionResult[1]) ? pendingActionResult[1].error : pendingActionResult[1].data : undefined;\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryId = pendingActionResult && isErrorResult(pendingActionResult[1]) ? pendingActionResult[0] : undefined;\n let boundaryMatches = boundaryId ? getLoaderMatchesUntilBoundary(matches, boundaryId) : matches;\n // Don't revalidate loaders by default after action 4xx/5xx responses\n // when the flag is enabled. They can still opt-into revalidation via\n // `shouldRevalidate` via `actionResult`\n let actionStatus = pendingActionResult ? pendingActionResult[1].statusCode : undefined;\n let shouldSkipRevalidation = skipActionErrorRevalidation && actionStatus && actionStatus >= 400;\n let navigationMatches = boundaryMatches.filter((match, index) => {\n let {\n route\n } = match;\n if (route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n if (route.loader == null) {\n return false;\n }\n if (isInitialLoad) {\n if (typeof route.loader !== \"function\" || route.loader.hydrate) {\n return true;\n }\n return state.loaderData[route.id] === undefined && (\n // Don't re-run if the loader ran and threw an error\n !state.errors || state.errors[route.id] === undefined);\n }\n // Always call the loader on new route instances and pending defer cancellations\n if (isNewLoader(state.loaderData, state.matches[index], match) || cancelledDeferredRoutes.some(id => id === match.route.id)) {\n return true;\n }\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n return shouldRevalidateLoader(match, _extends({\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params\n }, submission, {\n actionResult,\n unstable_actionStatus: actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation ? false :\n // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired || currentUrl.pathname + currentUrl.search === nextUrl.pathname + nextUrl.search ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search || isNewRouteInstance(currentRouteMatch, nextRouteMatch)\n }));\n });\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate:\n // - on initial load (shouldn't be any fetchers then anyway)\n // - if fetcher won't be present in the subsequent render\n // - no longer matches the URL (v7_fetcherPersist=false)\n // - was unmounted but persisted due to v7_fetcherPersist=true\n if (isInitialLoad || !matches.some(m => m.route.id === f.routeId) || deletedFetchers.has(key)) {\n return;\n }\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData. Note this is\n // currently only a use-case for Remix HMR where the route tree can change\n // at runtime and remove a route previously loaded via a fetcher\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null\n });\n return;\n }\n // Revalidating fetchers are decoupled from the route matches since they\n // load from a static href. They revalidate based on explicit revalidation\n // (submission, useRevalidator, or X-Remix-Revalidate)\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n // Never trigger a revalidation of an actively redirecting fetcher\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.includes(key)) {\n // Always revalidate if the fetcher was cancelled\n shouldRevalidate = true;\n } else if (fetcher && fetcher.state !== \"idle\" && fetcher.data === undefined) {\n // If the fetcher hasn't ever completed loading yet, then this isn't a\n // revalidation, it would just be a brand new load if an explicit\n // revalidation is required\n shouldRevalidate = isRevalidationRequired;\n } else {\n // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n // to explicit revalidations only\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, _extends({\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params\n }, submission, {\n actionResult,\n unstable_actionStatus: actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation ? false : isRevalidationRequired\n }));\n }\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController()\n });\n }\n });\n return [navigationMatches, revalidatingFetchers];\n}\nfunction isNewLoader(currentLoaderData, currentMatch, match) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\nfunction isNewRouteInstance(currentMatch, match) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n currentPath != null && currentPath.endsWith(\"*\") && currentMatch.params[\"*\"] !== match.params[\"*\"]\n );\n}\nfunction shouldRevalidateLoader(loaderMatch, arg) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n return arg.defaultShouldRevalidate;\n}\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(route, mapRouteProperties, manifest) {\n if (!route.lazy) {\n return;\n }\n let lazyRoute = await route.lazy();\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue = routeToUpdate[lazyRouteProperty];\n let isPropertyStaticallyDefined = staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n warning(!isPropertyStaticallyDefined, \"Route \\\"\" + routeToUpdate.id + \"\\\" has a static property \\\"\" + lazyRouteProperty + \"\\\" \" + \"defined but its lazy function is also returning a value for this property. \" + (\"The lazy route property \\\"\" + lazyRouteProperty + \"\\\" will be ignored.\"));\n if (!isPropertyStaticallyDefined && !immutableRouteKeys.has(lazyRouteProperty)) {\n routeUpdates[lazyRouteProperty] = lazyRoute[lazyRouteProperty];\n }\n }\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to mapRouteProperties\n Object.assign(routeToUpdate, routeUpdates);\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, _extends({}, mapRouteProperties(routeToUpdate), {\n lazy: undefined\n }));\n}\n// Default implementation of `dataStrategy` which fetches all loaders in parallel\nfunction defaultDataStrategy(opts) {\n return Promise.all(opts.matches.map(m => m.resolve()));\n}\nasync function callDataStrategyImpl(dataStrategyImpl, type, request, matchesToLoad, matches, manifest, mapRouteProperties, requestContext) {\n let routeIdsToLoad = matchesToLoad.reduce((acc, m) => acc.add(m.route.id), new Set());\n let loadedMatches = new Set();\n // Send all matches here to allow for a middleware-type implementation.\n // handler will be a no-op for unneeded routes and we filter those results\n // back out below.\n let results = await dataStrategyImpl({\n matches: matches.map(match => {\n let shouldLoad = routeIdsToLoad.has(match.route.id);\n // `resolve` encapsulates the route.lazy, executing the\n // loader/action, and mapping return values/thrown errors to a\n // HandlerResult. Users can pass a callback to take fine-grained control\n // over the execution of the loader/action\n let resolve = handlerOverride => {\n loadedMatches.add(match.route.id);\n return shouldLoad ? callLoaderOrAction(type, request, match, manifest, mapRouteProperties, handlerOverride, requestContext) : Promise.resolve({\n type: ResultType.data,\n result: undefined\n });\n };\n return _extends({}, match, {\n shouldLoad,\n resolve\n });\n }),\n request,\n params: matches[0].params,\n context: requestContext\n });\n // Throw if any loadRoute implementations not called since they are what\n // ensures a route is fully loaded\n matches.forEach(m => invariant(loadedMatches.has(m.route.id), \"`match.resolve()` was not called for route id \\\"\" + m.route.id + \"\\\". \" + \"You must call `match.resolve()` on every match passed to \" + \"`dataStrategy` to ensure all routes are properly loaded.\"));\n // Filter out any middleware-only matches for which we didn't need to run handlers\n return results.filter((_, i) => routeIdsToLoad.has(matches[i].route.id));\n}\n// Default logic for calling a loader/action is the user has no specified a dataStrategy\nasync function callLoaderOrAction(type, request, match, manifest, mapRouteProperties, handlerOverride, staticContext) {\n let result;\n let onReject;\n let runHandler = handler => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject;\n // This will never resolve so safe to type it as Promise to\n // satisfy the function return value\n let abortPromise = new Promise((_, r) => reject = r);\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n let actualHandler = ctx => {\n if (typeof handler !== \"function\") {\n return Promise.reject(new Error(\"You cannot call the handler for a route which defines a boolean \" + (\"\\\"\" + type + \"\\\" [routeId: \" + match.route.id + \"]\")));\n }\n return handler({\n request,\n params: match.params,\n context: staticContext\n }, ...(ctx !== undefined ? [ctx] : []));\n };\n let handlerPromise;\n if (handlerOverride) {\n handlerPromise = handlerOverride(ctx => actualHandler(ctx));\n } else {\n handlerPromise = (async () => {\n try {\n let val = await actualHandler();\n return {\n type: \"data\",\n result: val\n };\n } catch (e) {\n return {\n type: \"error\",\n result: e\n };\n }\n })();\n }\n return Promise.race([handlerPromise, abortPromise]);\n };\n try {\n let handler = match.route[type];\n if (match.route.lazy) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let handlerError;\n let [value] = await Promise.all([\n // If the handler throws, don't let it immediately bubble out,\n // since we need to let the lazy() execution finish so we know if this\n // route has a boundary that can handle the error\n runHandler(handler).catch(e => {\n handlerError = e;\n }), loadLazyRouteModule(match.route, mapRouteProperties, manifest)]);\n if (handlerError !== undefined) {\n throw handlerError;\n }\n result = value;\n } else {\n // Load lazy route module, then run any returned handler\n await loadLazyRouteModule(match.route, mapRouteProperties, manifest);\n handler = match.route[type];\n if (handler) {\n // Handler still runs even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return {\n type: ResultType.data,\n result: undefined\n };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname\n });\n } else {\n result = await runHandler(handler);\n }\n invariant(result.result !== undefined, \"You defined \" + (type === \"action\" ? \"an action\" : \"a loader\") + \" for route \" + (\"\\\"\" + match.route.id + \"\\\" but didn't return anything from your `\" + type + \"` \") + \"function. Please return a value or `null`.\");\n } catch (e) {\n // We should already be catching and converting normal handler executions to\n // HandlerResults and returning them, so anything that throws here is an\n // unexpected error we still need to wrap\n return {\n type: ResultType.error,\n result: e\n };\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n return result;\n}\nasync function convertHandlerResultToDataResult(handlerResult) {\n let {\n result,\n type,\n status\n } = handlerResult;\n if (isResponse(result)) {\n let data;\n try {\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n if (result.body == null) {\n data = null;\n } else {\n data = await result.json();\n }\n } else {\n data = await result.text();\n }\n } catch (e) {\n return {\n type: ResultType.error,\n error: e\n };\n }\n if (type === ResultType.error) {\n return {\n type: ResultType.error,\n error: new ErrorResponseImpl(result.status, result.statusText, data),\n statusCode: result.status,\n headers: result.headers\n };\n }\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers\n };\n }\n if (type === ResultType.error) {\n return {\n type: ResultType.error,\n error: result,\n statusCode: isRouteErrorResponse(result) ? result.status : status\n };\n }\n if (isDeferredData(result)) {\n var _result$init, _result$init2;\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: (_result$init = result.init) == null ? void 0 : _result$init.status,\n headers: ((_result$init2 = result.init) == null ? void 0 : _result$init2.headers) && new Headers(result.init.headers)\n };\n }\n return {\n type: ResultType.data,\n data: result,\n statusCode: status\n };\n}\n// Support relative routing in internal redirects\nfunction normalizeRelativeRoutingRedirectResponse(response, request, routeId, matches, basename, v7_relativeSplatPath) {\n let location = response.headers.get(\"Location\");\n invariant(location, \"Redirects returned/thrown from loaders/actions must have a Location header\");\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n let trimmedMatches = matches.slice(0, matches.findIndex(m => m.route.id === routeId) + 1);\n location = normalizeTo(new URL(request.url), trimmedMatches, basename, true, location, v7_relativeSplatPath);\n response.headers.set(\"Location\", location);\n }\n return response;\n}\nfunction normalizeRedirectLocation(location, currentUrl, basename) {\n if (ABSOLUTE_URL_REGEX.test(location)) {\n // Strip off the protocol+origin for same-origin + same-basename absolute redirects\n let normalizedLocation = location;\n let url = normalizedLocation.startsWith(\"//\") ? new URL(currentUrl.protocol + normalizedLocation) : new URL(normalizedLocation);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n return url.pathname + url.search + url.hash;\n }\n }\n return location;\n}\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(history, location, signal, submission) {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init = {\n signal\n };\n if (submission && isMutationMethod(submission.formMethod)) {\n let {\n formMethod,\n formEncType\n } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n if (formEncType === \"application/json\") {\n init.headers = new Headers({\n \"Content-Type\": formEncType\n });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.text;\n } else if (formEncType === \"application/x-www-form-urlencoded\" && submission.formData) {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.formData;\n }\n }\n return new Request(url, init);\n}\nfunction convertFormDataToSearchParams(formData) {\n let searchParams = new URLSearchParams();\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n return searchParams;\n}\nfunction convertSearchParamsToFormData(searchParams) {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\nfunction processRouteLoaderData(matches, matchesToLoad, results, pendingActionResult, activeDeferreds, skipLoaderErrorBubbling) {\n // Fill in loaderData/errors from our loaders\n let loaderData = {};\n let errors = null;\n let statusCode;\n let foundError = false;\n let loaderHeaders = {};\n let pendingError = pendingActionResult && isErrorResult(pendingActionResult[1]) ? pendingActionResult[1].error : undefined;\n // Process loader results into state.loaderData/state.errors\n results.forEach((result, index) => {\n let id = matchesToLoad[index].route.id;\n invariant(!isRedirectResult(result), \"Cannot handle redirect results in processLoaderData\");\n if (isErrorResult(result)) {\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError !== undefined) {\n error = pendingError;\n pendingError = undefined;\n }\n errors = errors || {};\n if (skipLoaderErrorBubbling) {\n errors[id] = error;\n } else {\n // Look upwards from the matched route for the closest ancestor error\n // boundary, defaulting to the root match. Prefer higher error values\n // if lower errors bubble to the same boundary\n let boundaryMatch = findNearestBoundary(matches, id);\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n }\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error) ? result.error.status : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (result.statusCode != null && result.statusCode !== 200 && !foundError) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n loaderData[id] = result.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (result.statusCode && result.statusCode !== 200 && !foundError) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n }\n });\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError !== undefined && pendingActionResult) {\n errors = {\n [pendingActionResult[0]]: pendingError\n };\n loaderData[pendingActionResult[0]] = undefined;\n }\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders\n };\n}\nfunction processLoaderData(state, matches, matchesToLoad, results, pendingActionResult, revalidatingFetchers, fetcherResults, activeDeferreds) {\n let {\n loaderData,\n errors\n } = processRouteLoaderData(matches, matchesToLoad, results, pendingActionResult, activeDeferreds, false // This method is only called client side so we always want to bubble\n );\n // Process results from our revalidating fetchers\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let {\n key,\n match,\n controller\n } = revalidatingFetchers[index];\n invariant(fetcherResults !== undefined && fetcherResults[index] !== undefined, \"Did not find corresponding fetcher result\");\n let result = fetcherResults[index];\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n continue;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match == null ? void 0 : match.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = _extends({}, errors, {\n [boundaryMatch.route.id]: result.error\n });\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n return {\n loaderData,\n errors\n };\n}\nfunction mergeLoaderData(loaderData, newLoaderData, matches, errors) {\n let mergedLoaderData = _extends({}, newLoaderData);\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\nfunction getActionDataForCommit(pendingActionResult) {\n if (!pendingActionResult) {\n return {};\n }\n return isErrorResult(pendingActionResult[1]) ? {\n // Clear out prior actionData on errors\n actionData: {}\n } : {\n actionData: {\n [pendingActionResult[0]]: pendingActionResult[1].data\n }\n };\n}\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(matches, routeId) {\n let eligibleMatches = routeId ? matches.slice(0, matches.findIndex(m => m.route.id === routeId) + 1) : [...matches];\n return eligibleMatches.reverse().find(m => m.route.hasErrorBoundary === true) || matches[0];\n}\nfunction getShortCircuitMatches(routes) {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route = routes.length === 1 ? routes[0] : routes.find(r => r.index || !r.path || r.path === \"/\") || {\n id: \"__shim-error-route__\"\n };\n return {\n matches: [{\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route\n }],\n route\n };\n}\nfunction getInternalRouterError(status, _temp5) {\n let {\n pathname,\n routeId,\n method,\n type\n } = _temp5 === void 0 ? {} : _temp5;\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage = \"You made a \" + method + \" request to \\\"\" + pathname + \"\\\" but \" + (\"did not provide a `loader` for route \\\"\" + routeId + \"\\\", \") + \"so there is no way to handle the request.\";\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = \"Route \\\"\" + routeId + \"\\\" does not match URL \\\"\" + pathname + \"\\\"\";\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = \"No route matches URL \\\"\" + pathname + \"\\\"\";\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage = \"You made a \" + method.toUpperCase() + \" request to \\\"\" + pathname + \"\\\" but \" + (\"did not provide an `action` for route \\\"\" + routeId + \"\\\", \") + \"so there is no way to handle the request.\";\n } else if (method) {\n errorMessage = \"Invalid request method \\\"\" + method.toUpperCase() + \"\\\"\";\n }\n }\n return new ErrorResponseImpl(status || 500, statusText, new Error(errorMessage), true);\n}\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(results) {\n for (let i = results.length - 1; i >= 0; i--) {\n let result = results[i];\n if (isRedirectResult(result)) {\n return {\n result,\n idx: i\n };\n }\n }\n}\nfunction stripHashFromPath(path) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath(_extends({}, parsedPath, {\n hash: \"\"\n }));\n}\nfunction isHashChangeOnly(a, b) {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n if (a.hash === \"\") {\n // /page -> /page#hash\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n // /page#hash -> /page#hash\n return true;\n } else if (b.hash !== \"\") {\n // /page#hash -> /page#other\n return true;\n }\n // If the hash is removed the browser will re-perform a request to the server\n // /page#hash -> /page\n return false;\n}\nfunction isHandlerResult(result) {\n return result != null && typeof result === \"object\" && \"type\" in result && \"result\" in result && (result.type === ResultType.data || result.type === ResultType.error);\n}\nfunction isRedirectHandlerResult(result) {\n return isResponse(result.result) && redirectStatusCodes.has(result.result.status);\n}\nfunction isDeferredResult(result) {\n return result.type === ResultType.deferred;\n}\nfunction isErrorResult(result) {\n return result.type === ResultType.error;\n}\nfunction isRedirectResult(result) {\n return (result && result.type) === ResultType.redirect;\n}\nfunction isDeferredData(value) {\n let deferred = value;\n return deferred && typeof deferred === \"object\" && typeof deferred.data === \"object\" && typeof deferred.subscribe === \"function\" && typeof deferred.cancel === \"function\" && typeof deferred.resolveData === \"function\";\n}\nfunction isResponse(value) {\n return value != null && typeof value.status === \"number\" && typeof value.statusText === \"string\" && typeof value.headers === \"object\" && typeof value.body !== \"undefined\";\n}\nfunction isRedirectResponse(result) {\n if (!isResponse(result)) {\n return false;\n }\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\nfunction isValidMethod(method) {\n return validRequestMethods.has(method.toLowerCase());\n}\nfunction isMutationMethod(method) {\n return validMutationMethods.has(method.toLowerCase());\n}\nasync function resolveDeferredResults(currentMatches, matchesToLoad, results, signals, isFetcher, currentLoaderData) {\n for (let index = 0; index < results.length; index++) {\n let result = results[index];\n let match = matchesToLoad[index];\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n let currentMatch = currentMatches.find(m => m.route.id === match.route.id);\n let isRevalidatingLoader = currentMatch != null && !isNewRouteInstance(currentMatch, match) && (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n let signal = signals[index];\n invariant(signal, \"Expected an AbortSignal for revalidating fetcher deferred result\");\n await resolveDeferredData(result, signal, isFetcher).then(result => {\n if (result) {\n results[index] = result || results[index];\n }\n });\n }\n }\n}\nasync function resolveDeferredData(result, signal, unwrap) {\n if (unwrap === void 0) {\n unwrap = false;\n }\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e\n };\n }\n }\n return {\n type: ResultType.data,\n data: result.deferredData.data\n };\n}\nfunction hasNakedIndexQuery(search) {\n return new URLSearchParams(search).getAll(\"index\").some(v => v === \"\");\n}\nfunction getTargetMatch(matches, location) {\n let search = typeof location === \"string\" ? parsePath(location).search : location.search;\n if (matches[matches.length - 1].route.index && hasNakedIndexQuery(search || \"\")) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\nfunction getSubmissionFromNavigation(navigation) {\n let {\n formMethod,\n formAction,\n formEncType,\n text,\n formData,\n json\n } = navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json: undefined,\n text\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: undefined,\n text: undefined\n };\n } else if (json !== undefined) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json,\n text: undefined\n };\n }\n}\nfunction getLoadingNavigation(location, submission) {\n if (submission) {\n let navigation = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text\n };\n return navigation;\n } else {\n let navigation = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined\n };\n return navigation;\n }\n}\nfunction getSubmittingNavigation(location, submission) {\n let navigation = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text\n };\n return navigation;\n}\nfunction getLoadingFetcher(submission, data) {\n if (submission) {\n let fetcher = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data\n };\n return fetcher;\n } else {\n let fetcher = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data\n };\n return fetcher;\n }\n}\nfunction getSubmittingFetcher(submission, existingFetcher) {\n let fetcher = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : undefined\n };\n return fetcher;\n}\nfunction getDoneFetcher(data) {\n let fetcher = {\n state: \"idle\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data\n };\n return fetcher;\n}\nfunction restoreAppliedTransitions(_window, transitions) {\n try {\n let sessionPositions = _window.sessionStorage.getItem(TRANSITIONS_STORAGE_KEY);\n if (sessionPositions) {\n let json = JSON.parse(sessionPositions);\n for (let [k, v] of Object.entries(json || {})) {\n if (v && Array.isArray(v)) {\n transitions.set(k, new Set(v || []));\n }\n }\n }\n } catch (e) {\n // no-op, use default empty object\n }\n}\nfunction persistAppliedTransitions(_window, transitions) {\n if (transitions.size > 0) {\n let json = {};\n for (let [k, v] of transitions) {\n json[k] = [...v];\n }\n try {\n _window.sessionStorage.setItem(TRANSITIONS_STORAGE_KEY, JSON.stringify(json));\n } catch (error) {\n warning(false, \"Failed to save applied view transitions in sessionStorage (\" + error + \").\");\n }\n }\n}\n//#endregion\n\nexport { AbortedDeferredError, Action, IDLE_BLOCKER, IDLE_FETCHER, IDLE_NAVIGATION, UNSAFE_DEFERRED_SYMBOL, DeferredData as UNSAFE_DeferredData, ErrorResponseImpl as UNSAFE_ErrorResponseImpl, convertRouteMatchToUiMatch as UNSAFE_convertRouteMatchToUiMatch, convertRoutesToDataRoutes as UNSAFE_convertRoutesToDataRoutes, getResolveToMatches as UNSAFE_getResolveToMatches, invariant as UNSAFE_invariant, warning as UNSAFE_warning, createBrowserHistory, createHashHistory, createMemoryHistory, createPath, createRouter, createStaticHandler, defer, generatePath, getStaticContextFromError, getToPathname, isDeferredData, isRouteErrorResponse, joinPaths, json, matchPath, matchRoutes, normalizePathname, parsePath, redirect, redirectDocument, resolvePath, resolveTo, stripBasename };\n//# sourceMappingURL=router.js.map\n","/**\n * React Router DOM v6.23.0\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { UNSAFE_mapRouteProperties, UNSAFE_DataRouterContext, UNSAFE_DataRouterStateContext, Router, UNSAFE_useRoutesImpl, UNSAFE_NavigationContext, useHref, useResolvedPath, useLocation, useNavigate, createPath, UNSAFE_useRouteId, UNSAFE_RouteContext, useMatches, useNavigation, useBlocker } from 'react-router';\nexport { AbortedDeferredError, Await, MemoryRouter, Navigate, NavigationType, Outlet, Route, Router, Routes, UNSAFE_DataRouterContext, UNSAFE_DataRouterStateContext, UNSAFE_LocationContext, UNSAFE_NavigationContext, UNSAFE_RouteContext, UNSAFE_useRouteId, createMemoryRouter, createPath, createRoutesFromChildren, createRoutesFromElements, defer, generatePath, isRouteErrorResponse, json, matchPath, matchRoutes, parsePath, redirect, redirectDocument, renderMatches, resolvePath, useActionData, useAsyncError, useAsyncValue, useBlocker, useHref, useInRouterContext, useLoaderData, useLocation, useMatch, useMatches, useNavigate, useNavigation, useNavigationType, useOutlet, useOutletContext, useParams, useResolvedPath, useRevalidator, useRouteError, useRouteLoaderData, useRoutes } from 'react-router';\nimport { stripBasename, UNSAFE_warning, createRouter, createBrowserHistory, createHashHistory, UNSAFE_ErrorResponseImpl, UNSAFE_invariant, joinPaths, IDLE_FETCHER, matchPath } from '@remix-run/router';\nexport { UNSAFE_ErrorResponseImpl } from '@remix-run/router';\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\nconst defaultMethod = \"get\";\nconst defaultEncType = \"application/x-www-form-urlencoded\";\nfunction isHtmlElement(object) {\n return object != null && typeof object.tagName === \"string\";\n}\nfunction isButtonElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"button\";\n}\nfunction isFormElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"form\";\n}\nfunction isInputElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"input\";\n}\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\nfunction shouldProcessLinkClick(event, target) {\n return event.button === 0 && (\n // Ignore everything but left clicks\n !target || target === \"_self\") &&\n // Let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // Ignore clicks with modifier keys\n ;\n}\n/**\n * Creates a URLSearchParams object using the given initializer.\n *\n * This is identical to `new URLSearchParams(init)` except it also\n * supports arrays as values in the object form of the initializer\n * instead of just strings. This is convenient when you need multiple\n * values for a given key, but don't want to use an array initializer.\n *\n * For example, instead of:\n *\n * let searchParams = new URLSearchParams([\n * ['sort', 'name'],\n * ['sort', 'price']\n * ]);\n *\n * you can do:\n *\n * let searchParams = createSearchParams({\n * sort: ['name', 'price']\n * });\n */\nfunction createSearchParams(init) {\n if (init === void 0) {\n init = \"\";\n }\n return new URLSearchParams(typeof init === \"string\" || Array.isArray(init) || init instanceof URLSearchParams ? init : Object.keys(init).reduce((memo, key) => {\n let value = init[key];\n return memo.concat(Array.isArray(value) ? value.map(v => [key, v]) : [[key, value]]);\n }, []));\n}\nfunction getSearchParamsForLocation(locationSearch, defaultSearchParams) {\n let searchParams = createSearchParams(locationSearch);\n if (defaultSearchParams) {\n // Use `defaultSearchParams.forEach(...)` here instead of iterating of\n // `defaultSearchParams.keys()` to work-around a bug in Firefox related to\n // web extensions. Relevant Bugzilla tickets:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1414602\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1023984\n defaultSearchParams.forEach((_, key) => {\n if (!searchParams.has(key)) {\n defaultSearchParams.getAll(key).forEach(value => {\n searchParams.append(key, value);\n });\n }\n });\n }\n return searchParams;\n}\n// One-time check for submitter support\nlet _formDataSupportsSubmitter = null;\nfunction isFormDataSubmitterSupported() {\n if (_formDataSupportsSubmitter === null) {\n try {\n new FormData(document.createElement(\"form\"),\n // @ts-expect-error if FormData supports the submitter parameter, this will throw\n 0);\n _formDataSupportsSubmitter = false;\n } catch (e) {\n _formDataSupportsSubmitter = true;\n }\n }\n return _formDataSupportsSubmitter;\n}\nconst supportedFormEncTypes = new Set([\"application/x-www-form-urlencoded\", \"multipart/form-data\", \"text/plain\"]);\nfunction getFormEncType(encType) {\n if (encType != null && !supportedFormEncTypes.has(encType)) {\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(false, \"\\\"\" + encType + \"\\\" is not a valid `encType` for ``/`` \" + (\"and will default to \\\"\" + defaultEncType + \"\\\"\")) : void 0;\n return null;\n }\n return encType;\n}\nfunction getFormSubmissionInfo(target, basename) {\n let method;\n let action;\n let encType;\n let formData;\n let body;\n if (isFormElement(target)) {\n // When grabbing the action from the element, it will have had the basename\n // prefixed to ensure non-JS scenarios work, so strip it since we'll\n // re-prefix in the router\n let attr = target.getAttribute(\"action\");\n action = attr ? stripBasename(attr, basename) : null;\n method = target.getAttribute(\"method\") || defaultMethod;\n encType = getFormEncType(target.getAttribute(\"enctype\")) || defaultEncType;\n formData = new FormData(target);\n } else if (isButtonElement(target) || isInputElement(target) && (target.type === \"submit\" || target.type === \"image\")) {\n let form = target.form;\n if (form == null) {\n throw new Error(\"Cannot submit a