{"version":3,"file":"js/chunk-vendors-bf118816-legacy.150e9632.js","mappings":"0GAAA,IAAIA,EAAW,EAAQ,OAEnBC,EAAU,EAAQ,OAElBC,EAAQ,EAAQ,OAEhBC,EAAOD,EAAMC,KAOjB,SAASC,EAAWC,GAClB,OAAOC,SAASD,EAAK,GACvB,CAMA,SAASE,EAAWC,EAAMC,GACxBR,EAAQS,UACRC,KAAKH,KAAOA,EACZG,KAAKF,QAAUA,EACf,IAAIG,EAAcC,SAASC,cAAc,OACrCC,EAAUF,SAASC,cAAc,OACrCF,EAAYI,MAAMC,QAAU,mFAC5BF,EAAQC,MAAMC,QAAU,kCACxBT,EAAKU,YAAYN,GACjBD,KAAKQ,SAAWJ,EAChBJ,KAAKS,aAAeR,EACpBD,KAAKU,SAEL,IAAIC,EAAoBb,EAAQc,eAC5BC,EAAkBf,EAAQgB,aAE9BhB,EAAQc,eAAiB,SAAUG,GACjCJ,EAAkBK,KAAKlB,EAASiB,GAE5BA,GACFA,EAAGE,UAAYF,EAAGE,SAASb,EAE/B,EAEAN,EAAQgB,aAAe,SAAUC,GAE/BA,EAAGG,OAASH,EAAGG,MAAMd,GACrBS,EAAgBG,KAAKlB,EAASiB,EAChC,EAEAf,KAAKmB,aAAc,CACrB,CA+GA,SAASC,EAAuBC,GAC9B,OAAO,WACLhC,EAAS,iDAAmDgC,EAAS,IACvE,CACF,CAjHAzB,EAAW0B,UAAY,CACrBC,YAAa3B,EACb4B,QAAS,WACP,MAAO,KACT,EAKAC,gBAAiB,WACf,OAAOzB,KAAKS,YACd,EACAiB,sBAAuB,WACrB,IAAIC,EAAe3B,KAAKyB,kBAExB,GAAIE,EACF,MAAO,CACLC,WAAYD,EAAaC,YAAc,EACvCC,UAAWF,EAAaE,WAAa,EAG3C,EAKAC,QAAS,WACP,IAAIC,EAAO/B,KAAKF,QAAQkC,gBAAe,GAAM,GAE7ChC,KAAKiC,WAAWF,EAClB,EACAE,WAAY,SAAUF,GAGpB,IAFA,IAAI3B,EAAUJ,KAAKQ,SAEV0B,EAAI,EAAGA,EAAIH,EAAKI,OAAQD,IAAK,CACpC,IAAInB,EAAKgB,EAAKG,GAEVnB,EAAGqB,WAAarB,EAAGsB,QAChBtB,EAAGuB,qBACNvB,EAAGE,SAASb,GAIdW,EAAGuB,qBAAsB,IAErBvB,EAAGuB,qBACLvB,EAAGG,MAAMd,GAGXW,EAAGuB,qBAAsB,EAErBvB,EAAGwB,UACLxB,EAAGyB,aAAezB,EAAGyB,eACpBzB,EAAG0B,UAAY1B,EAAG2B,OAAO1B,KAAKD,EAAIX,GACnCW,EAAG4B,YAAc5B,EAAG4B,eAIxB5B,EAAGwB,SAAU,CACf,CAEIvC,KAAKmB,cAIPnB,KAAKS,aAAaF,YAAYH,GAE9BJ,KAAKmB,aAAc,EAEvB,EACAT,OAAQ,SAAUkC,EAAOC,GACnBD,EAAiB,MAATA,EAAgB5C,KAAK8C,YAAcF,EAC3CC,EAAmB,MAAVA,EAAiB7C,KAAK+C,aAAeF,EAElD,GAAI7C,KAAKgD,SAAWJ,GAAS5C,KAAKiD,UAAYJ,EAAQ,CACpD7C,KAAKgD,OAASJ,EACd5C,KAAKiD,QAAUJ,EACf,IAAIK,EAAmBlD,KAAKS,aAAaJ,MACzC6C,EAAiBN,MAAQA,EAAQ,KACjCM,EAAiBL,OAASA,EAAS,IACrC,CACF,EACAM,QAAS,WACPnD,KAAKH,KAAKuD,UAAY,GACtBpD,KAAKQ,SAAWR,KAAKS,aAAeT,KAAKF,QAAU,IACrD,EACAuD,SAAU,WACR,OAAOrD,KAAKgD,MACd,EACAM,UAAW,WACT,OAAOtD,KAAKiD,OACd,EACAM,MAAO,WACDvD,KAAKS,cACPT,KAAKH,KAAK2D,YAAYxD,KAAKS,aAE/B,EACAqC,UAAW,WACT,IAAIjD,EAAOG,KAAKH,KACZ4D,EAAM5D,EAAK6D,aACf,OAAQ7D,EAAK8D,aAAelE,EAAWgE,EAAIb,QAAUnD,EAAWgE,EAAIG,aAAenE,EAAWgE,EAAII,cAAgB,CACpH,EACAd,WAAY,WACV,IAAIlD,EAAOG,KAAKH,KACZ4D,EAAM5D,EAAK6D,aACf,OAAQ7D,EAAKiE,cAAgBrE,EAAWgE,EAAIZ,SAAWpD,EAAWgE,EAAIM,YAActE,EAAWgE,EAAIO,eAAiB,CACtH,GAUFxE,EAAK,CAAC,WAAY,cAAe,YAAa,mBAAoB,iBAAkB,YAAa,WAAY,WAAY,aAAc,YAAa,gBAAgB,SAAUyE,GAC5KrE,EAAW0B,UAAU2C,GAAQ7C,EAAuB6C,EACtD,IACA,IAAIC,EAAWtE,EACfuE,EAAOC,QAAUF,C,wBC9KjB,IAYIG,EAZAC,EAAM,EAAQ,OAEdC,EAAM,gCACNC,EAAwB,qBAAXC,OAAyB,KAAOA,OAC7CC,GAAY,EACZC,EAAMH,GAAOA,EAAItE,SAErB,SAAS0E,EAAWC,GAClB,OAAOR,EAAaQ,EACtB,CAKA,GAAIF,IAAQL,EAAIQ,gBACd,KACGH,EAAII,WAAWC,OAASL,EAAII,WAAWE,IAAI,QAASV,GAErDF,EAAe,SAAUQ,GACvB,OAAOF,EAAIxE,cAAc,UAAY0E,EAAU,kBACjD,CACF,CAAE,MAAOK,GACPb,EAAe,SAAUQ,GACvB,OAAOF,EAAIxE,cAAc,IAAM0E,EAAU,WAAaN,EAAM,mBAC9D,CACF,CAIF,SAASxE,IACP,IAAI2E,GAAcC,EAAlB,CAIAD,GAAY,EACZ,IAAIS,EAAcR,EAAIQ,YAElBA,EAAYhD,OAAS,GACvBwC,EAAIS,mBAAmBC,QAAQ,SAAU,8BAGzCF,EAAY,GAAGE,QAAQ,SAAU,6BATnC,CAWF,CAEAjB,EAAQO,IAAMA,EACdP,EAAQQ,WAAaA,EACrBR,EAAQrE,QAAUA,C,wBC/ClB,IAAIuE,EAAM,EAAQ,OAEdgB,EAAU,EAAQ,OAElBC,EAAiBD,EAAQC,eAEzBC,EAAe,EAAQ,OAEvBC,EAAY,EAAQ,OAEpBC,EAAc,EAAQ,OAEtBC,EAAa,EAAQ,OAErBC,EAAW,EAAQ,OAEnBC,EAAc,EAAQ,OAEtBC,EAAS,EAAQ,MAEjBC,EAAO,EAAQ,OAEfC,EAAO,EAAQ,OAEfC,EAAY,EAAQ,OAEpBC,EAAW,EAAQ,OAEnB5G,EAAU,EAAQ,OAIlB6G,EAAMF,EAAUE,IAChBC,EAAQC,KAAKD,MACbE,EAAOD,KAAKC,KACZC,EAAMF,KAAKE,IACXC,EAAMH,KAAKG,IACXC,EAAMJ,KAAKI,IACXC,EAAUL,KAAKM,IAEnB,IAAKrC,EAAIQ,gBAAiB,CACxB,IAAI8B,EAAQ,IACRC,EAAuB,oCACvBC,EAAI,MACJC,EAAKD,EAAI,EACTE,EAAc,IACdC,EAAS,IAETC,EAAkB,SAAUnG,GAC9BA,EAAGV,MAAMC,QAAU,uDACnBS,EAAGoG,UAAYL,EAAI,IAAMA,EACzB/F,EAAGqG,YAAc,KACnB,EAEIC,EAAsB,SAAUC,GAClC,OAAOC,OAAOD,GAAGE,QAAQ,KAAM,SAASA,QAAQ,KAAM,SACxD,EAEIC,EAAU,SAAUC,EAAGC,EAAGC,GAC5B,MAAO,OAAS,CAACF,EAAGC,EAAGC,GAAGC,KAAK,KAAO,GACxC,EAEIC,EAAS,SAAUC,EAAQC,GACzBA,GAASD,GAAUC,EAAMC,aAAeF,GAC1CA,EAAOxH,YAAYyH,EAEvB,EAEIE,EAAS,SAAUH,EAAQC,GACzBA,GAASD,GAAUC,EAAMC,aAAeF,GAC1CA,EAAOvE,YAAYwE,EAEvB,EAEIG,EAAY,SAAUC,EAAQC,EAAGC,GAEnC,OAAQC,WAAWH,IAAW,GAAKpB,GAAeuB,WAAWF,IAAM,GAAKpB,EAASqB,CACnF,EAEIE,EAAe7C,EAAW6C,aAK1BC,EAAqB,SAAU1H,EAAI2H,EAAOC,GAC5C,IAAIC,EAAWnD,EAAUoD,MAAMH,GAC/BC,GAAWA,EAEPG,MAAMH,KACRA,EAAU,GAGRC,IACF7H,EAAG2H,MAAQjB,EAAQmB,EAAS,GAAIA,EAAS,GAAIA,EAAS,IACtD7H,EAAG4H,QAAUA,EAAUC,EAAS,GAEpC,EAEIG,EAAmB,SAAUL,GAC/B,IAAIE,EAAWnD,EAAUoD,MAAMH,GAC/B,MAAO,CAACjB,EAAQmB,EAAS,GAAIA,EAAS,GAAIA,EAAS,IAAKA,EAAS,GACnE,EAEII,EAAiB,SAAUjI,EAAIV,EAAO4I,GAExC,IAAIC,EAAO7I,EAAM6I,KAEjB,GAAY,MAARA,EAEF,GAAIA,aAAgBhD,EAAU,CAC5B,IAAIiD,EACAC,EAAQ,EACRC,EAAQ,CAAC,EAAG,GAEZC,EAAQ,EAERC,EAAY,EACZC,EAAOP,EAAKQ,kBACZC,EAAYF,EAAK5G,MACjB+G,EAAaH,EAAK3G,OAEtB,GAAkB,WAAdqG,EAAKU,KAAmB,CAC1BT,EAAe,WACf,IAAIU,EAAYZ,EAAKY,UACjBC,EAAK,CAACZ,EAAKa,EAAIL,EAAWR,EAAKc,EAAIL,GACnCM,EAAK,CAACf,EAAKgB,GAAKR,EAAWR,EAAKiB,GAAKR,GAErCE,IACFtE,EAAeuE,EAAIA,EAAID,GACvBtE,EAAe0E,EAAIA,EAAIJ,IAGzB,IAAIO,EAAKH,EAAG,GAAKH,EAAG,GAChBO,EAAKJ,EAAG,GAAKH,EAAG,GACpBV,EAA6B,IAArB/C,KAAKiE,MAAMF,EAAIC,GAAYhE,KAAKkE,GAEpCnB,EAAQ,IACVA,GAAS,KAKPA,EAAQ,OACVA,EAAQ,EAEZ,KAAO,CACLD,EAAe,iBACXW,EAAK,CAACZ,EAAKa,EAAIL,EAAWR,EAAKc,EAAIL,GACnCE,EAAYZ,EAAKY,UADrB,IAEIW,EAAQvB,EAAKuB,MACb5H,EAAQ8G,EACR7G,EAAS8G,EACbN,EAAQ,EACPS,EAAG,GAAKN,EAAKO,GAAKnH,GAAQkH,EAAG,GAAKN,EAAKQ,GAAKnH,GAEzCgH,GACFtE,EAAeuE,EAAIA,EAAID,GAGzBjH,GAAS4H,EAAM,GAAK1D,EACpBjE,GAAU2H,EAAM,GAAK1D,EACrB,IAAI2D,EAAY/D,EAAQ9D,EAAOC,GAC/ByG,EAAQ,EAAQmB,EAChBlB,EAAY,EAAIL,EAAKxB,EAAI+C,EAAYnB,CACvC,CAIA,IAAIoB,EAAQxB,EAAKyB,WAAWC,QAC5BF,EAAMG,MAAK,SAAUC,EAAKC,GACxB,OAAOD,EAAIE,OAASD,EAAIC,MAC1B,IAMA,IALA,IAAI7I,EAASuI,EAAMvI,OAEf8I,EAAoB,GACpBC,EAAS,GAEJhJ,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC/B,IAAIiJ,EAAOT,EAAMxI,GACbkJ,EAAgBrC,EAAiBoC,EAAKzC,OAC1CwC,EAAOG,KAAKF,EAAKH,OAASzB,EAAYD,EAAQ,IAAM8B,EAAc,IAExD,IAANlJ,GAAWA,IAAMC,EAAS,GAC5B8I,EAAkBI,KAAKD,EAE3B,CAEA,GAAIjJ,GAAU,EAAG,CACf,IAAImJ,EAASL,EAAkB,GAAG,GAC9BM,EAASN,EAAkB,GAAG,GAC9BO,EAAWP,EAAkB,GAAG,GAAK5K,EAAMsI,QAC3C8C,EAAWR,EAAkB,GAAG,GAAK5K,EAAMsI,QAC/C5H,EAAG6I,KAAOT,EACVpI,EAAGM,OAAS,OACZN,EAAGsI,MAAQ,OACXtI,EAAGqI,MAAQA,EACXrI,EAAG2H,MAAQ4C,EACXvK,EAAGwK,OAASA,EACZxK,EAAGmK,OAASA,EAAOrD,KAAK,KAGxB9G,EAAG4H,QAAU8C,EAEb1K,EAAG0K,SAAWD,CAChB,CAEqB,WAAjBrC,IACFpI,EAAG2K,cAAgBrC,EAAMxB,KAAK,KAElC,MAEEY,EAAmB1H,EAAImI,EAAM7I,EAAMsI,QAGzC,EAEIgD,EAAmB,SAAU5K,EAAIV,GAU/BA,EAAMuL,WACR7K,EAAG8K,UAAYxL,EAAMuL,SAAS/D,KAAK,MAGjB,MAAhBxH,EAAMyL,QAAoBzL,EAAMyL,kBAAkB5F,GACpDuC,EAAmB1H,EAAIV,EAAMyL,OAAQzL,EAAMsI,QAE/C,EAEIoD,EAAsB,SAAUC,EAAOpC,EAAMvJ,EAAO4I,GACtD,IAAIgD,EAAkB,SAATrC,EACT7I,EAAKiL,EAAME,qBAAqBtC,GAAM,GAEvB,MAAfvJ,EAAMuJ,IAAiC,SAAhBvJ,EAAMuJ,KAAqBqC,IAAWA,GAAU5L,EAAM8L,YAC/EH,EAAMC,EAAS,SAAW,WAAa,OAEnC5L,EAAMuJ,aAAiB1D,GACzBgC,EAAO8D,EAAOjL,GAGXA,IACHA,EAAKzB,EAAQsF,WAAWgF,IAG1BqC,EAASjD,EAAejI,EAAIV,EAAO4I,GAAQ0C,EAAiB5K,EAAIV,GAChEyH,EAAOkE,EAAOjL,KAEdiL,EAAMC,EAAS,SAAW,WAAa,QACvC/D,EAAO8D,EAAOjL,GAElB,EAEIqL,EAAS,CAAC,GAAI,GAAI,IAElBC,EAAmB,SAAUC,EAAMC,GACrC,IAMIC,EACAC,EACAC,EACAxK,EACAyK,EACAC,EAXAC,EAAI1G,EAAI0G,EACRC,EAAI3G,EAAI2G,EACRC,EAAI5G,EAAI4G,EACRC,EAAI7G,EAAI6G,EACRC,EAAI9G,EAAI8G,EACRC,EAAM,GAONC,EAAOb,EAAKa,KACZC,EAAad,EAAKe,MAEtB,IAAKnL,EAAI,EAAGA,EAAIkL,GAAa,CAK3B,OAJAV,EAAMS,EAAKjL,KACXuK,EAAS,GACTD,EAAS,EAEDE,GACN,KAAKG,EACHJ,EAAS,MACTD,EAAS,EACTG,EAAKQ,EAAKjL,KACV0K,EAAKO,EAAKjL,KACVkK,EAAO,GAAG,GAAKO,EACfP,EAAO,GAAG,GAAKQ,EACf,MAEF,KAAKG,EACHN,EAAS,MACTD,EAAS,EACTG,EAAKQ,EAAKjL,KACV0K,EAAKO,EAAKjL,KACVkK,EAAO,GAAG,GAAKO,EACfP,EAAO,GAAG,GAAKQ,EACf,MAEF,KAAKK,EACL,KAAKH,EACHL,EAAS,MACTD,EAAS,EACT,IAIIc,EACAC,EALAC,EAAKL,EAAKjL,KACVuL,EAAKN,EAAKjL,KACVgI,EAAKiD,EAAKjL,KACViI,EAAKgD,EAAKjL,KAIVwK,IAAQO,GAEVK,EAAKpD,EACLqD,EAAKpD,EACLD,GAAMA,EAAK,EAAIsD,GAAM,EACrBrD,GAAMA,EAAK,EAAIsD,GAAM,EACrBD,GAAMb,EAAK,EAAIa,GAAM,EACrBC,GAAMb,EAAK,EAAIa,GAAM,IAErBH,EAAKH,EAAKjL,KACVqL,EAAKJ,EAAKjL,MAGZkK,EAAO,GAAG,GAAKoB,EACfpB,EAAO,GAAG,GAAKqB,EACfrB,EAAO,GAAG,GAAKlC,EACfkC,EAAO,GAAG,GAAKjC,EACfiC,EAAO,GAAG,GAAKkB,EACflB,EAAO,GAAG,GAAKmB,EACfZ,EAAKW,EACLV,EAAKW,EACL,MAEF,KAAKP,EACH,IAAIjD,EAAI,EACJC,EAAI,EACJ0D,EAAK,EACLC,EAAK,EACLvE,EAAQ,EAERmD,IAEFxC,EAAIwC,EAAE,GACNvC,EAAIuC,EAAE,GACNmB,EAAKpH,EAAKiG,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IACjCoB,EAAKrH,EAAKiG,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IACjCnD,EAAQ/C,KAAKiE,OAAOiC,EAAE,GAAKoB,EAAIpB,EAAE,GAAKmB,IAGxC,IAAIE,EAAKT,EAAKjL,KACV2L,EAAKV,EAAKjL,KACV4L,EAAKX,EAAKjL,KACV6L,EAAKZ,EAAKjL,KACV8L,EAAab,EAAKjL,KAAOkH,EACzB6E,EAAWd,EAAKjL,KAAO8L,EAAa5E,EAGxClH,IACA,IAAIgM,EAAYf,EAAKjL,KACjBiM,EAAKP,EAAKpH,EAAIwH,GAAcF,EAC5BM,EAAKP,EAAKpH,EAAIuH,GAAcD,EAG5BnE,GAFA4D,EAAKI,EAAKpH,EAAIyH,GAAYH,EAC1BL,EAAKI,EAAKpH,EAAIwH,GAAYF,EACnBG,EAAY,OAAS,QAE5B7H,KAAKE,IAAI4H,EAAKX,GAAM,OAElBnH,KAAKE,IAAI0H,EAAWD,GAAc,IAGhCE,IACFC,GAAM,IAAMrH,GAIVT,KAAKE,IAAI6H,EAAKP,GAAM,KAClBK,GAAaC,EAAKP,IAAOM,GAAaC,EAAKP,EAC7CH,GAAM,IAAM3G,EAEZ2G,GAAM,IAAM3G,EAELoH,GAAaE,EAAKP,IAAOK,GAAaE,EAAKP,EACpDL,GAAM,IAAM1G,EAEZ0G,GAAM,IAAM1G,GAKlBoG,EAAI7B,KAAKzB,EAAMxD,IAAQwH,EAAKE,GAAMJ,EAAK3D,GAAKjD,EAAIC,GAAKH,EAAOR,IAAQyH,EAAKE,GAAMJ,EAAK3D,GAAKlD,EAAIC,GAAKH,EAAOR,IAAQwH,EAAKE,GAAMJ,EAAK3D,GAAKjD,EAAIC,GAAKH,EAAOR,IAAQyH,EAAKE,GAAMJ,EAAK3D,GAAKlD,EAAIC,GAAKH,EAAOR,GAAO+H,EAAKT,EAAK3D,GAAKjD,EAAIC,GAAKH,EAAOR,GAAOgI,EAAKT,EAAK3D,GAAKlD,EAAIC,GAAKH,EAAOR,GAAOoH,EAAKE,EAAK3D,GAAKjD,EAAIC,GAAKH,EAAOR,GAAOqH,EAAKE,EAAK3D,GAAKlD,EAAIC,IAC/U4F,EAAKa,EACLZ,EAAKa,EACL,MAEF,KAAKtH,EAAIkI,EACP,IAAIvE,EAAKsC,EAAO,GACZnC,EAAKmC,EAAO,GAEhBtC,EAAG,GAAKqD,EAAKjL,KACb4H,EAAG,GAAKqD,EAAKjL,KAEb+H,EAAG,GAAKH,EAAG,GAAKqD,EAAKjL,KACrB+H,EAAG,GAAKH,EAAG,GAAKqD,EAAKjL,KAEjBqK,IACFhH,EAAeuE,EAAIA,EAAIyC,GACvBhH,EAAe0E,EAAIA,EAAIsC,IAGzBzC,EAAG,GAAK1D,EAAM0D,EAAG,GAAKhD,EAAIC,GAC1BkD,EAAG,GAAK7D,EAAM6D,EAAG,GAAKnD,EAAIC,GAC1B+C,EAAG,GAAK1D,EAAM0D,EAAG,GAAKhD,EAAIC,GAC1BkD,EAAG,GAAK7D,EAAM6D,EAAG,GAAKnD,EAAIC,GAC1BmG,EAAI7B,KACJ,MAAOvB,EAAG,GAAIlD,EAAOkD,EAAG,GACxB,MAAOG,EAAG,GAAIrD,EAAOkD,EAAG,GACxB,MAAOG,EAAG,GAAIrD,EAAOqD,EAAG,GACxB,MAAOH,EAAG,GAAIlD,EAAOqD,EAAG,IACxB,MAEF,KAAK9D,EAAIW,EAEPoG,EAAI7B,KAAK,OAGb,GAAImB,EAAS,EAAG,CACdU,EAAI7B,KAAKoB,GAET,IAAK,IAAI6B,EAAI,EAAGA,EAAI9B,EAAQ8B,IAAK,CAC/B,IAAIC,EAAInC,EAAOkC,GACf/B,GAAKhH,EAAegJ,EAAGA,EAAGhC,GAE1BW,EAAI7B,KAAKjF,EAAMmI,EAAE,GAAKzH,EAAIC,GAAKH,EAAOR,EAAMmI,EAAE,GAAKzH,EAAIC,GAAKuH,EAAI9B,EAAS,EAAI5F,EAAQ,GACvF,CACF,CACF,CAEA,OAAOsG,EAAIrF,KAAK,GAClB,EAGA7B,EAAK1E,UAAUmB,SAAW,SAAUrC,GAClC,IAAIC,EAAQL,KAAKK,MACb2L,EAAQhM,KAAKwO,OAEZxC,IACHA,EAAQ1M,EAAQsF,WAAW,SAC3BsC,EAAgB8E,GAChBhM,KAAKwO,OAASxC,GAGhBD,EAAoBC,EAAO,OAAQ3L,EAAOL,MAC1C+L,EAAoBC,EAAO,SAAU3L,EAAOL,MAC5C,IAAIuM,EAAIvM,KAAK6J,UACT4E,EAAqB,MAALlC,EAChBmC,EAAW1C,EAAME,qBAAqB,UAAU,GAEpD,GAAIwC,EAAU,CACZ,IAAIvC,EAAY9L,EAAM8L,UAKtB,GAAIsC,IAAkBpO,EAAMsO,cAAe,CACzC,IAAIC,EAAMrC,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GACjCJ,GAAa7F,EAAKC,EAAIqI,GACxB,CAEAF,EAASG,OAAS1C,EAAY,IAChC,CAEA,IAAIG,EAAOtM,KAAKsM,OAAStM,KAAKsM,KAAO,IAAIrG,GAErCjG,KAAK8O,cACPxC,EAAKyC,YACLzC,EAAK0C,kBAAmB,EACxBhP,KAAKiP,UAAU3C,EAAMtM,KAAKkP,OAC1B5C,EAAK6C,WACLnP,KAAK8O,aAAc,GAGrB9C,EAAMM,KAAOD,EAAiBC,EAAMtM,KAAK6J,WACzCmC,EAAM3L,MAAM+O,OAASjH,EAAUnI,KAAKoI,OAAQpI,KAAKqI,EAAGrI,KAAKsI,IAEzDR,EAAO1H,EAAS4L,GAEE,MAAd3L,EAAMgP,KACRrP,KAAKsP,aAAalP,EAASJ,KAAKyJ,mBAEhCzJ,KAAKuP,eAAenP,EAExB,EAEA4F,EAAK1E,UAAUL,SAAW,SAAUb,GAClC8H,EAAO9H,EAASJ,KAAKwO,QACrBxO,KAAKuP,eAAenP,EACtB,EAEA4F,EAAK1E,UAAUJ,MAAQ,SAAUd,GAC/B0H,EAAO1H,EAASJ,KAAKwO,QACrBxO,KAAKwP,eAAepP,EACtB,EAMA,IAAIqP,EAAU,SAAUC,GAEtB,MAAsB,kBAARA,GAAoBA,EAAI7K,SAAyC,QAA9B6K,EAAI7K,QAAQ8K,aAC/D,EAGA7J,EAAOxE,UAAUmB,SAAW,SAAUrC,GACpC,IAGIwP,EACAC,EAJAxP,EAAQL,KAAKK,MACbyP,EAAQzP,EAAMyP,MAKlB,GAAIL,EAAQK,GAAQ,CAClB,IAAIC,EAAMD,EAAMC,IAEhB,GAAIA,IAAQ/P,KAAKgQ,UACfJ,EAAK5P,KAAKiQ,YACVJ,EAAK7P,KAAKkQ,iBACL,CACL,IAAIC,EAAoBL,EAAMM,aAC1BC,EAAkBF,EAAkBvN,MACpC0N,EAAmBH,EAAkBtN,OACzCsN,EAAkBvN,MAAQ,OAC1BuN,EAAkBtN,OAAS,OAE3B+M,EAAKE,EAAMlN,MACXiN,EAAKC,EAAMjN,OAEXsN,EAAkBvN,MAAQyN,EAC1BF,EAAkBtN,OAASyN,EAE3BtQ,KAAKgQ,UAAYD,EACjB/P,KAAKiQ,YAAcL,EACnB5P,KAAKkQ,aAAeL,CACtB,CAEAC,EAAQC,CACV,MACMD,IAAU9P,KAAKgQ,YACjBJ,EAAK5P,KAAKiQ,YACVJ,EAAK7P,KAAKkQ,cAId,GAAKJ,EAAL,CAIA,IAAI/F,EAAI1J,EAAM0J,GAAK,EACfC,EAAI3J,EAAM2J,GAAK,EACfuG,EAAKlQ,EAAMuC,MACX4N,EAAKnQ,EAAMwC,OACX4N,EAAKpQ,EAAMqQ,OACXC,EAAKtQ,EAAMuQ,QACXlD,EAAKrN,EAAMqN,IAAM,EACjBC,EAAKtN,EAAMsN,IAAM,EACjBkD,EAAUJ,GAAME,EAChB3E,EAAQhM,KAAKwO,OAEZxC,IAGHA,EAAQ1M,EAAQqF,IAAIxE,cAAc,OAClC+G,EAAgB8E,GAChBhM,KAAKwO,OAASxC,GAGhB,IAEIO,EAFAuE,EAAa9E,EAAM3L,MACnB0Q,GAAc,EAEdC,EAAS,EACTC,EAAS,EASb,GAPIjR,KAAK6J,YACP0C,EAAIvM,KAAK6J,UACTmH,EAAS1K,EAAKiG,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IACrC0E,EAAS3K,EAAKiG,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IACrCwE,EAAcxE,EAAE,IAAMA,EAAE,IAGtBwE,EAAa,CAMf,IAAIjH,EAAK,CAACC,EAAGC,GACTC,EAAK,CAACF,EAAIwG,EAAIvG,GACdkH,EAAK,CAACnH,EAAGC,EAAIwG,GACbW,EAAK,CAACpH,EAAIwG,EAAIvG,EAAIwG,GACtBjL,EAAeuE,EAAIA,EAAIyC,GACvBhH,EAAe0E,EAAIA,EAAIsC,GACvBhH,EAAe2L,EAAIA,EAAI3E,GACvBhH,EAAe4L,EAAIA,EAAI5E,GACvB,IAAI6E,EAAO1K,EAAQoD,EAAG,GAAIG,EAAG,GAAIiH,EAAG,GAAIC,EAAG,IACvCE,EAAO3K,EAAQoD,EAAG,GAAIG,EAAG,GAAIiH,EAAG,GAAIC,EAAG,IACvCG,EAAkB,GACtBA,EAAgBjG,KAAK,OAAQkB,EAAE,GAAKyE,EAAQpK,EAAO,OAAQ2F,EAAE,GAAK0E,EAAQrK,EAAO,OAAQ2F,EAAE,GAAKyE,EAAQpK,EAAO,OAAQ2F,EAAE,GAAK0E,EAAQrK,EAAO,MAAOR,EAAM2D,EAAIiH,EAASzE,EAAE,IAAK3F,EAAO,MAAOR,EAAM4D,EAAIiH,EAAS1E,EAAE,KACjNuE,EAAWS,QAAU,KAAOnL,EAAMgL,GAAQ,MAAQhL,EAAMiL,GAAQ,OAEhEP,EAAWU,OAAS3K,EAAuB,WAAayK,EAAgBzJ,KAAK,IAAM,sBACrF,MACM0E,IACFxC,EAAIA,EAAIiH,EAASzE,EAAE,GACnBvC,EAAIA,EAAIiH,EAAS1E,EAAE,IAGrBuE,EAAWU,OAAS,GACpBV,EAAWW,KAAOrL,EAAM2D,GAAK,KAC7B+G,EAAWY,IAAMtL,EAAM4D,GAAK,KAG9B,IAAI2H,EAAU3R,KAAK4R,SACfC,EAAS7R,KAAK8R,QAEbH,IACHA,EAAUrS,EAAQqF,IAAIxE,cAAc,OACpCH,KAAK4R,SAAWD,GAGlB,IAAII,EAAeJ,EAAQtR,MAE3B,GAAIwQ,EAAS,CAEX,GAAMjB,GAAMC,EAmBVkC,EAAanP,MAAQwD,EAAM4K,EAASpB,EAAKW,EAAKE,GAAM,KACpDsB,EAAalP,OAASuD,EAAM6K,EAASpB,EAAKW,EAAKG,GAAM,SApBtC,CACf,IAAIqB,EAAW,IAAIC,MACfC,EAAOlS,KAEXgS,EAASG,OAAS,WAChBH,EAASG,OAAS,KAClBvC,EAAKoC,EAASpP,MACdiN,EAAKmC,EAASnP,OAEdkP,EAAanP,MAAQwD,EAAM4K,EAASpB,EAAKW,EAAKE,GAAM,KACpDsB,EAAalP,OAASuD,EAAM6K,EAASpB,EAAKW,EAAKG,GAAM,KAErDuB,EAAKjC,YAAcL,EACnBsC,EAAKhC,aAAeL,EACpBqC,EAAKlC,UAAYF,CACnB,EAEAkC,EAASjC,IAAMD,CACjB,CAKK+B,IACHA,EAASvS,EAAQqF,IAAIxE,cAAc,OACnC0R,EAAOxR,MAAM+R,SAAW,SACxBpS,KAAK8R,QAAUD,GAGjB,IAAIQ,EAAcR,EAAOxR,MACzBgS,EAAYzP,MAAQwD,GAAOmK,EAAK7C,EAAK6C,EAAKE,GAAMO,GAChDqB,EAAYxP,OAASuD,GAAOoK,EAAK7C,EAAK6C,EAAKG,GAAMM,GACjDoB,EAAYb,OAAS3K,EAAuB,eAAiB6G,EAAK6C,EAAKE,EAAKO,EAAS,QAAUrD,EAAK6C,EAAKG,EAAKM,EAAS,IAElHY,EAAO5J,YACV+D,EAAMzL,YAAYsR,GAGhBF,EAAQ1J,aAAe4J,GACzBA,EAAOtR,YAAYoR,EAEvB,MACEI,EAAanP,MAAQwD,EAAM4K,EAAST,GAAM,KAC1CwB,EAAalP,OAASuD,EAAM6K,EAAST,GAAM,KAC3CxE,EAAMzL,YAAYoR,GAEdE,GAAUA,EAAO5J,aACnB+D,EAAMxI,YAAYqO,GAClB7R,KAAK8R,QAAU,MAInB,IAAIQ,EAAY,GACZC,EAAQlS,EAAMsI,QAEd4J,EAAQ,IACVD,GAAa,kBAAoBlM,EAAc,IAARmM,GAAe,MAGxDD,GAAazL,EAAuB,yBAA2BiJ,EAAQ,wBACvEiC,EAAaP,OAASc,EACtBtG,EAAM3L,MAAM+O,OAASjH,EAAUnI,KAAKoI,OAAQpI,KAAKqI,EAAGrI,KAAKsI,IAEzDR,EAAO1H,EAAS4L,GAEE,MAAd3L,EAAMgP,MACRrP,KAAKsP,aAAalP,EAASJ,KAAKyJ,kBAhJlC,CAkJF,EAEA3D,EAAOxE,UAAUL,SAAW,SAAUb,GACpC8H,EAAO9H,EAASJ,KAAKwO,QACrBxO,KAAKwO,OAAS,KACdxO,KAAK8R,QAAU,KACf9R,KAAK4R,SAAW,KAChB5R,KAAKuP,eAAenP,EACtB,EAEA0F,EAAOxE,UAAUJ,MAAQ,SAAUd,GACjC0H,EAAO1H,EAASJ,KAAKwO,QACrBxO,KAAKwP,eAAepP,EACtB,EAMA,IAsCIoS,EAtCAC,EAAuB,SACvBC,EAAiB,CAAC,EAClBC,EAAsB,EACtBC,EAAsB,IACtBC,EAAS3S,SAASC,cAAc,OAEhC2S,EAAe,SAAUC,GAC3B,IAAIC,EAAYN,EAAeK,GAE/B,IAAKC,EAAW,CAEVL,EAAsBC,IACxBD,EAAsB,EACtBD,EAAiB,CAAC,GAGpB,IACIO,EADA5S,EAAQwS,EAAOxS,MAGnB,IACEA,EAAM6S,KAAOH,EACbE,EAAa5S,EAAM4S,WAAWE,MAAM,KAAK,EAC3C,CAAE,MAAOjO,GAAI,CAEb8N,EAAY,CACV3S,MAAOA,EAAM2S,WAAaP,EAC1BW,QAAS/S,EAAMgT,aAAeZ,EAC9B5D,OAAQxO,EAAMiT,YAAcb,EAC5Bc,KAAyC,EAAnChL,WAAWlI,EAAMmT,UAAY,IACnCC,OAAQR,GAAc,mBAExBP,EAAeK,GAAcC,EAC7BL,GACF,CAEA,OAAOK,CACT,EAIAtN,EAAYgO,UAAU,eAAe,SAAUrE,EAAMsE,GACnD,IAAIhP,EAAMrF,EAAQqF,IAEb6N,IACHA,EAAgB7N,EAAIxE,cAAc,OAClCqS,EAAcnS,MAAMC,QAAU,wFAC9BhB,EAAQqF,IAAIiP,KAAKrT,YAAYiS,IAG/B,IACEA,EAAcnS,MAAM6S,KAAOS,CAC7B,CAAE,MAAOE,GACT,CAKA,OAHArB,EAAcpP,UAAY,GAE1BoP,EAAcjS,YAAYoE,EAAImP,eAAezE,IACtC,CACLzM,MAAO4P,EAAcuB,YAEzB,IAiMA,IAhMA,IAAIC,EAAU,IAAIxO,EAEd8J,GAAe,SAAUlP,EAASoJ,EAAMyK,EAAUC,GACpD,IAAI7T,EAAQL,KAAKK,MAEjBL,KAAKuC,SAAWoD,EAAWwO,mBAAmB9T,GAAO,GACrD,IAAIgP,EAAOhP,EAAMgP,KAIjB,GAFQ,MAARA,IAAiBA,GAAQ,IAEpBA,EAAL,CAMA,GAAIhP,EAAM+T,KAAM,CACd,IAAIC,EAAe3O,EAAY4O,cAAcjF,EAAMhP,GACnDgP,EAAO,GAEP,IAAK,IAAInN,EAAI,EAAGA,EAAImS,EAAaE,MAAMpS,OAAQD,IAAK,CAIlD,IAHA,IAAIsS,EAASH,EAAaE,MAAMrS,GAAGsS,OAC/BC,EAAW,GAENC,EAAI,EAAGA,EAAIF,EAAOrS,OAAQuS,IACjCD,EAASpJ,KAAKmJ,EAAOE,GAAGrF,MAG1BA,EAAKhE,KAAKoJ,EAAS5M,KAAK,IAC1B,CAEAwH,EAAOA,EAAKxH,KAAK,KACnB,CAEA,IAAIkC,EACAC,EACA2K,EAAQtU,EAAMuU,UACdC,EAAgBxU,EAAMyU,kBACtB9B,EAAYF,EAAazS,EAAM6S,MAE/BA,EAAOF,EAAU3S,MAAQ,IAAM2S,EAAUI,QAAU,IAAMJ,EAAUnE,OAAS,IAAMmE,EAAUO,KAAO,OAASP,EAAUS,OAAS,IACnIQ,EAAWA,GAAYvO,EAAY+D,gBAAgB4F,EAAM6D,EAAMyB,EAAOE,EAAexU,EAAM0U,YAAa1U,EAAM2U,gBAE9G,IAAIzI,EAAIvM,KAAK6J,UAQb,GANI0C,IAAM2H,IACRF,EAAQiB,KAAKzL,GACbwK,EAAQzO,eAAegH,GACvB/C,EAAOwK,GAGJE,EAgBHnK,EAAIP,EAAKO,EACTC,EAAIR,EAAKQ,MAjBM,CACf,IAAIkL,EAAe7U,EAAM6U,aAEzB,GAAIA,aAAwBC,MAC1BpL,EAAIP,EAAKO,EAAIvB,EAAa0M,EAAa,GAAI1L,EAAK5G,OAChDoH,EAAIR,EAAKQ,EAAIxB,EAAa0M,EAAa,GAAI1L,EAAK3G,QAChD8R,EAAQA,GAAS,WACZ,CACL,IAAIS,EAAMpV,KAAKqV,sBAAwBrV,KAAKqV,sBAAsB,CAAC,EAAGhV,EAAOmJ,GAAQ9D,EAAY2P,sBAAsB,CAAC,EAAGhV,EAAOmJ,GAClIO,EAAIqL,EAAIrL,EACRC,EAAIoL,EAAIpL,EAER2K,EAAQA,GAASS,EAAIR,UACrBC,EAAgBA,GAAiBO,EAAIN,iBACvC,CACF,CAKA/K,EAAIrE,EAAY4P,YAAYvL,EAAGkK,EAASrR,MAAO+R,GAC/C3K,EAAItE,EAAY6P,YAAYvL,EAAGiK,EAASpR,OAAQgS,GAEhD7K,GAAKiK,EAASpR,OAAS,EAoCvB,IAEI2S,EACAC,EACAC,EAJA9Q,EAAatF,EAAQsF,WACrB+Q,EAAY3V,KAAK4V,WAKhBD,GAmBHD,EAASC,EAAUE,WACnBL,EAASE,EAAOI,YAChBL,EAAaD,EAAOM,cApBpBH,EAAY/Q,EAAW,QACvB4Q,EAAS5Q,EAAW,QACpB6Q,EAAa7Q,EAAW,YACxB8Q,EAAS9Q,EAAW,QAGpB6Q,EAAWpV,MAAM,gBAAkB,OACnC6G,EAAgByO,GAChBH,EAAOO,YAAa,EACpBN,EAAWO,IAAK,EAChBL,EAAUM,KAAO,MACjBN,EAAUO,GAAK,YACfpO,EAAO6N,EAAWD,GAClB5N,EAAO6N,EAAWH,GAClB1N,EAAO6N,EAAWF,GAClBzV,KAAK4V,WAAaD,GAQpB,IAAIQ,EAAS,CAACpM,EAAGC,GACboM,EAAiBT,EAAUtV,MAE3BkM,GAAK2H,GACP3O,EAAe4Q,EAAQA,EAAQ5J,GAC/BmJ,EAAOM,IAAK,EACZN,EAAOW,OAAS9J,EAAE,GAAG+J,QAAQ,GAAK1P,EAAQ2F,EAAE,GAAG+J,QAAQ,GAAK1P,EAAQ2F,EAAE,GAAG+J,QAAQ,GAAK1P,EAAQ2F,EAAE,GAAG+J,QAAQ,GAAK,OAEhHZ,EAAO1K,QAAU5E,EAAM+P,EAAO,KAAO,GAAK,KAAO/P,EAAM+P,EAAO,KAAO,GAErET,EAAOa,OAAS,MAChBH,EAAe3E,KAAO,MACtB2E,EAAe1E,IAAM,QAErBgE,EAAOM,IAAK,EACZI,EAAe3E,KAAOrL,EAAM2D,GAAK,KACjCqM,EAAe1E,IAAMtL,EAAM4D,GAAK,MAGlCyL,EAAWe,OAASnP,EAAoBgI,GAExC,IACEoG,EAAWpV,MAAM6S,KAAOA,CAC1B,CACA,MAAOhO,GAAI,CAEX6G,EAAoB4J,EAAW,OAAQ,CACrCzM,KAAM7I,EAAMoW,SACZ9N,QAAStI,EAAMsI,SACd3I,MACH+L,EAAoB4J,EAAW,SAAU,CACvC7J,OAAQzL,EAAMqW,WACd/N,QAAStI,EAAMsI,QACfiD,SAAUvL,EAAMuL,UAAY,MAE3B5L,MACH2V,EAAUtV,MAAM+O,OAASjH,EAAUnI,KAAKoI,OAAQpI,KAAKqI,EAAGrI,KAAKsI,IAE7DR,EAAO1H,EAASuV,EAtKhB,CAuKF,EAEIpG,GAAiB,SAAUnP,GAC7B8H,EAAO9H,EAASJ,KAAK4V,YACrB5V,KAAK4V,WAAa,IACpB,EAEIpG,GAAiB,SAAUpP,GAC7B0H,EAAO1H,EAASJ,KAAK4V,WACvB,EAEI7T,GAAO,CAAC6D,EAAUC,EAAaC,EAAQE,EAAMD,GAExC7D,GAAI,EAAGA,GAAIH,GAAKI,OAAQD,KAAK,CACpC,IAAIyU,GAAQ5U,GAAKG,IAAGZ,UACpBqV,GAAMrH,aAAeA,GACrBqH,GAAMpH,eAAiBA,GACvBoH,GAAMnH,eAAiBA,EACzB,CAEAzJ,EAAKzE,UAAUmB,SAAW,SAAUrC,GAClC,IAAIC,EAAQL,KAAKK,MAEC,MAAdA,EAAMgP,KACRrP,KAAKsP,aAAalP,EAAS,CACzB2J,EAAG1J,EAAM0J,GAAK,EACdC,EAAG3J,EAAM2J,GAAK,EACdpH,MAAO,EACPC,OAAQ,GACP7C,KAAKyJ,mBAAmB,GAE3BzJ,KAAKuP,eAAenP,EAExB,EAEA2F,EAAKzE,UAAUL,SAAW,SAAUb,GAClCJ,KAAKuP,eAAenP,EACtB,EAEA2F,EAAKzE,UAAUJ,MAAQ,SAAUd,GAC/BJ,KAAKwP,eAAepP,EACtB,CACF,C,wBC1+BA,EAAQ,OAER,IAAIwW,EAAW,EAAQ,OAEnBC,EAAkBD,EAASC,gBAE3BC,EAAU,EAAQ,OAEtBD,EAAgB,MAAOC,E,wBCRvB,IAAIC,EAAO,EAAQ,MAEfzS,EAAM,EAAQ,OAEd0S,EAAS,EAAQ,OAEjBC,EAAU,EAAQ,OAElBC,EAAU,EAAQ,OAElBJ,EAAU,EAAQ,OAElBK,EAAY,EAAQ,MAEpBC,EAAe,EAAQ,OAWvBC,GAAU/S,EAAIQ,gBACdwS,EAAe,CACjBC,OAAQT,GAENU,EAAY,CAAC,EAMbC,EAAU,QAYd,SAASC,EAAKC,EAAKC,GACjB,IAAIC,EAAK,IAAIC,EAAQf,IAAQY,EAAKC,GAElC,OADAJ,EAAUK,EAAGE,IAAMF,EACZA,CACT,CAOA,SAAS1U,EAAQ0U,GACf,GAAIA,EACFA,EAAG1U,cACE,CACL,IAAK,IAAI6U,KAAOR,EACVA,EAAUS,eAAeD,IAC3BR,EAAUQ,GAAK7U,UAInBqU,EAAY,CAAC,CACf,CAEA,OAAOxX,IACT,CAQA,SAASkY,EAAYH,GACnB,OAAOP,EAAUO,EACnB,CAEA,SAASlB,EAAgB5S,EAAMkU,GAC7Bb,EAAarT,GAAQkU,CACvB,CAEA,SAASC,EAAYL,UACZP,EAAUO,EACnB,CAkBA,IAAID,EAAU,SAAUC,EAAIJ,EAAKC,GAC/BA,EAAOA,GAAQ,CAAC,EAKhB5X,KAAK2X,IAAMA,EAKX3X,KAAK+X,GAAKA,EACV,IAAI7F,EAAOlS,KACPF,EAAU,IAAIoX,EACdmB,EAAeT,EAAKU,SAExB,GAAIjB,EAAQ,CACV,IAAKC,EAAaiB,IAChB,MAAM,IAAIC,MAAM,wDAGlBH,EAAe,KACjB,MAAYA,GAAiBf,EAAae,KACxCA,EAAe,UAGjB,IAAII,EAAU,IAAInB,EAAae,GAAcV,EAAK7X,EAAS8X,EAAMG,GACjE/X,KAAKF,QAAUA,EACfE,KAAKyY,QAAUA,EACf,IAAIC,EAAepU,EAAIqU,MAASrU,EAAIsU,OAAqE,KAA5D,IAAIxB,EAAaqB,EAAQhX,kBAAmBgX,EAAQ5Y,MACjGG,KAAK6Y,QAAU,IAAI5B,EAAQnX,EAAS2Y,EAASC,EAAaD,EAAQ5Y,MAKlEG,KAAK8Y,UAAY,IAAI3B,EAAU,CAC7B4B,MAAO,CACLC,OAAQhC,EAAOiC,KAAKjZ,KAAKkZ,MAAOlZ,SAGpCA,KAAK8Y,UAAUK,QAMfnZ,KAAKoZ,cAGL,IAAIzY,EAAoBb,EAAQc,eAC5BC,EAAkBf,EAAQgB,aAE9BhB,EAAQc,eAAiB,SAAUG,GACjCJ,EAAkBK,KAAKlB,EAASiB,GAChCA,GAAMA,EAAGsY,iBAAiBnH,EAC5B,EAEApS,EAAQgB,aAAe,SAAUC,GAC/BF,EAAgBG,KAAKlB,EAASiB,GAC9BA,EAAGuY,YAAYpH,EACjB,CACF,EAEA4F,EAAQxW,UAAY,CAClBC,YAAauW,EAMbyB,MAAO,WACL,OAAOvZ,KAAK+X,EACd,EAMA9S,IAAK,SAAUlE,GACbf,KAAKF,QAAQ0Z,QAAQzY,GACrBf,KAAKoZ,eAAgB,CACvB,EAMAlR,OAAQ,SAAUnH,GAChBf,KAAKF,QAAQ2Z,QAAQ1Y,GACrBf,KAAKoZ,eAAgB,CACvB,EAUAM,YAAa,SAAUC,EAAQC,GACzB5Z,KAAKyY,QAAQiB,aACf1Z,KAAKyY,QAAQiB,YAAYC,EAAQC,GAGnC5Z,KAAKoZ,eAAgB,CACvB,EAMAS,mBAAoB,SAAUC,GACxB9Z,KAAKyY,QAAQoB,oBACf7Z,KAAKyY,QAAQoB,mBAAmBC,GAGlC9Z,KAAKoZ,eAAgB,CACvB,EAKAW,mBAAoB,WAIlB/Z,KAAKoZ,cAAgBpZ,KAAKga,oBAAqB,EAC/Cha,KAAKyY,QAAQ3W,UAEb9B,KAAKoZ,cAAgBpZ,KAAKga,oBAAqB,CAKjD,EAKAlY,QAAS,WACP9B,KAAKoZ,eAAgB,CACvB,EAKAF,MAAO,WACL,IAAIe,EAEAja,KAAKoZ,gBACPa,GAAkB,EAClBja,KAAK+Z,sBAGH/Z,KAAKga,qBACPC,GAAkB,EAClBja,KAAKka,2BAGPD,GAAmBja,KAAKma,QAAQ,WAClC,EAOAC,SAAU,SAAUrZ,EAAIV,GACtB,GAAIL,KAAKyY,QAAQ2B,SAAU,CACzB,IAAIC,EAAWra,KAAKyY,QAAQ2B,SAASrZ,EAAIV,GAEzC,OADAL,KAAKsa,eACED,CACT,CACF,EAMAE,YAAa,SAAUxZ,GACjBf,KAAKyY,QAAQ8B,cACfva,KAAKyY,QAAQ8B,YAAYxZ,GACzBf,KAAKsa,eAET,EAMAE,WAAY,WACNxa,KAAKyY,QAAQ+B,aACfxa,KAAKyY,QAAQ+B,aACbxa,KAAKsa,eAET,EAKAA,aAAc,WACZta,KAAKga,oBAAqB,CAC5B,EAKAE,wBAAyB,WACvBla,KAAKga,oBAAqB,EAC1Bha,KAAKyY,QAAQ6B,cAAgBta,KAAKyY,QAAQ6B,cAC5C,EASA5Z,OAAQ,SAAUkX,GAChBA,EAAOA,GAAQ,CAAC,EAChB5X,KAAKyY,QAAQ/X,OAAOkX,EAAKhV,MAAOgV,EAAK/U,QACrC7C,KAAK6Y,QAAQnY,QACf,EAKA+Z,eAAgB,WACdza,KAAK8Y,UAAUvV,OACjB,EAKAF,SAAU,WACR,OAAOrD,KAAKyY,QAAQpV,UACtB,EAKAC,UAAW,WACT,OAAOtD,KAAKyY,QAAQnV,WACtB,EAqBAoX,YAAa,SAAUxV,EAAGyV,GACxB,OAAO3a,KAAKyY,QAAQiC,YAAYxV,EAAGyV,EACrC,EAMAC,eAAgB,SAAUC,GACxB7a,KAAK6Y,QAAQ+B,eAAeC,EAC9B,EAQAC,UAAW,SAAU/Q,EAAGC,GACtB,OAAOhK,KAAK6Y,QAAQiC,UAAU/Q,EAAGC,EACnC,EASAgM,GAAI,SAAU+E,EAAWC,EAAcC,GACrCjb,KAAK6Y,QAAQ7C,GAAG+E,EAAWC,EAAcC,EAC3C,EAOAC,IAAK,SAAUH,EAAWC,GACxBhb,KAAK6Y,QAAQqC,IAAIH,EAAWC,EAC9B,EAQAb,QAAS,SAAUY,EAAWI,GAC5Bnb,KAAK6Y,QAAQsB,QAAQY,EAAWI,EAClC,EAKA5X,MAAO,WACLvD,KAAKF,QAAQ2Z,UACbzZ,KAAKyY,QAAQlV,OACf,EAKAJ,QAAS,WACPnD,KAAK8Y,UAAU3N,OACfnL,KAAKuD,QACLvD,KAAKF,QAAQqD,UACbnD,KAAKyY,QAAQtV,UACbnD,KAAK6Y,QAAQ1V,UACbnD,KAAK8Y,UAAY9Y,KAAKF,QAAUE,KAAKyY,QAAUzY,KAAK6Y,QAAU,KAC9DT,EAAYpY,KAAK+X,GACnB,GAEF3T,EAAQqT,QAAUA,EAClBrT,EAAQsT,KAAOA,EACftT,EAAQjB,QAAUA,EAClBiB,EAAQ8T,YAAcA,EACtB9T,EAAQyS,gBAAkBA,C","sources":["webpack://i4proportal/./node_modules/zrender/lib/vml/Painter.js","webpack://i4proportal/./node_modules/zrender/lib/vml/core.js","webpack://i4proportal/./node_modules/zrender/lib/vml/graphic.js","webpack://i4proportal/./node_modules/zrender/lib/vml/vml.js","webpack://i4proportal/./node_modules/zrender/lib/zrender.js"],"sourcesContent":["var logError = require(\"../core/log\");\n\nvar vmlCore = require(\"./core\");\n\nvar _util = require(\"../core/util\");\n\nvar each = _util.each;\n\n/**\n * VML Painter.\n *\n * @module zrender/vml/Painter\n */\nfunction parseInt10(val) {\n return parseInt(val, 10);\n}\n/**\n * @alias module:zrender/vml/Painter\n */\n\n\nfunction VMLPainter(root, storage) {\n vmlCore.initVML();\n this.root = root;\n this.storage = storage;\n var vmlViewport = document.createElement('div');\n var vmlRoot = document.createElement('div');\n vmlViewport.style.cssText = 'display:inline-block;overflow:hidden;position:relative;width:300px;height:150px;';\n vmlRoot.style.cssText = 'position:absolute;left:0;top:0;';\n root.appendChild(vmlViewport);\n this._vmlRoot = vmlRoot;\n this._vmlViewport = vmlViewport;\n this.resize(); // Modify storage\n\n var oldDelFromStorage = storage.delFromStorage;\n var oldAddToStorage = storage.addToStorage;\n\n storage.delFromStorage = function (el) {\n oldDelFromStorage.call(storage, el);\n\n if (el) {\n el.onRemove && el.onRemove(vmlRoot);\n }\n };\n\n storage.addToStorage = function (el) {\n // Displayable already has a vml node\n el.onAdd && el.onAdd(vmlRoot);\n oldAddToStorage.call(storage, el);\n };\n\n this._firstPaint = true;\n}\n\nVMLPainter.prototype = {\n constructor: VMLPainter,\n getType: function () {\n return 'vml';\n },\n\n /**\n * @return {HTMLDivElement}\n */\n getViewportRoot: function () {\n return this._vmlViewport;\n },\n getViewportRootOffset: function () {\n var viewportRoot = this.getViewportRoot();\n\n if (viewportRoot) {\n return {\n offsetLeft: viewportRoot.offsetLeft || 0,\n offsetTop: viewportRoot.offsetTop || 0\n };\n }\n },\n\n /**\n * 刷新\n */\n refresh: function () {\n var list = this.storage.getDisplayList(true, true);\n\n this._paintList(list);\n },\n _paintList: function (list) {\n var vmlRoot = this._vmlRoot;\n\n for (var i = 0; i < list.length; i++) {\n var el = list[i];\n\n if (el.invisible || el.ignore) {\n if (!el.__alreadyNotVisible) {\n el.onRemove(vmlRoot);\n } // Set as already invisible\n\n\n el.__alreadyNotVisible = true;\n } else {\n if (el.__alreadyNotVisible) {\n el.onAdd(vmlRoot);\n }\n\n el.__alreadyNotVisible = false;\n\n if (el.__dirty) {\n el.beforeBrush && el.beforeBrush();\n (el.brushVML || el.brush).call(el, vmlRoot);\n el.afterBrush && el.afterBrush();\n }\n }\n\n el.__dirty = false;\n }\n\n if (this._firstPaint) {\n // Detached from document at first time\n // to avoid page refreshing too many times\n // FIXME 如果每次都先 removeChild 可能会导致一些填充和描边的效果改变\n this._vmlViewport.appendChild(vmlRoot);\n\n this._firstPaint = false;\n }\n },\n resize: function (width, height) {\n var width = width == null ? this._getWidth() : width;\n var height = height == null ? this._getHeight() : height;\n\n if (this._width !== width || this._height !== height) {\n this._width = width;\n this._height = height;\n var vmlViewportStyle = this._vmlViewport.style;\n vmlViewportStyle.width = width + 'px';\n vmlViewportStyle.height = height + 'px';\n }\n },\n dispose: function () {\n this.root.innerHTML = '';\n this._vmlRoot = this._vmlViewport = this.storage = null;\n },\n getWidth: function () {\n return this._width;\n },\n getHeight: function () {\n return this._height;\n },\n clear: function () {\n if (this._vmlViewport) {\n this.root.removeChild(this._vmlViewport);\n }\n },\n _getWidth: function () {\n var root = this.root;\n var stl = root.currentStyle;\n return (root.clientWidth || parseInt10(stl.width)) - parseInt10(stl.paddingLeft) - parseInt10(stl.paddingRight) | 0;\n },\n _getHeight: function () {\n var root = this.root;\n var stl = root.currentStyle;\n return (root.clientHeight || parseInt10(stl.height)) - parseInt10(stl.paddingTop) - parseInt10(stl.paddingBottom) | 0;\n }\n}; // Not supported methods\n\nfunction createMethodNotSupport(method) {\n return function () {\n logError('In IE8.0 VML mode painter not support method \"' + method + '\"');\n };\n} // Unsupported methods\n\n\neach(['getLayer', 'insertLayer', 'eachLayer', 'eachBuiltinLayer', 'eachOtherLayer', 'getLayers', 'modLayer', 'delLayer', 'clearLayer', 'toDataURL', 'pathToImage'], function (name) {\n VMLPainter.prototype[name] = createMethodNotSupport(name);\n});\nvar _default = VMLPainter;\nmodule.exports = _default;","var env = require(\"../core/env\");\n\nvar urn = 'urn:schemas-microsoft-com:vml';\nvar win = typeof window === 'undefined' ? null : window;\nvar vmlInited = false;\nvar doc = win && win.document;\n\nfunction createNode(tagName) {\n return doCreateNode(tagName);\n} // Avoid assign to an exported variable, for transforming to cjs.\n\n\nvar doCreateNode;\n\nif (doc && !env.canvasSupported) {\n try {\n !doc.namespaces.zrvml && doc.namespaces.add('zrvml', urn);\n\n doCreateNode = function (tagName) {\n return doc.createElement('');\n };\n } catch (e) {\n doCreateNode = function (tagName) {\n return doc.createElement('<' + tagName + ' xmlns=\"' + urn + '\" class=\"zrvml\">');\n };\n }\n} // From raphael\n\n\nfunction initVML() {\n if (vmlInited || !doc) {\n return;\n }\n\n vmlInited = true;\n var styleSheets = doc.styleSheets;\n\n if (styleSheets.length < 31) {\n doc.createStyleSheet().addRule('.zrvml', 'behavior:url(#default#VML)');\n } else {\n // http://msdn.microsoft.com/en-us/library/ms531194%28VS.85%29.aspx\n styleSheets[0].addRule('.zrvml', 'behavior:url(#default#VML)');\n }\n}\n\nexports.doc = doc;\nexports.createNode = createNode;\nexports.initVML = initVML;","var env = require(\"../core/env\");\n\nvar _vector = require(\"../core/vector\");\n\nvar applyTransform = _vector.applyTransform;\n\nvar BoundingRect = require(\"../core/BoundingRect\");\n\nvar colorTool = require(\"../tool/color\");\n\nvar textContain = require(\"../contain/text\");\n\nvar textHelper = require(\"../graphic/helper/text\");\n\nvar RectText = require(\"../graphic/mixin/RectText\");\n\nvar Displayable = require(\"../graphic/Displayable\");\n\nvar ZImage = require(\"../graphic/Image\");\n\nvar Text = require(\"../graphic/Text\");\n\nvar Path = require(\"../graphic/Path\");\n\nvar PathProxy = require(\"../core/PathProxy\");\n\nvar Gradient = require(\"../graphic/Gradient\");\n\nvar vmlCore = require(\"./core\");\n\n// http://www.w3.org/TR/NOTE-VML\n// TODO Use proxy like svg instead of overwrite brush methods\nvar CMD = PathProxy.CMD;\nvar round = Math.round;\nvar sqrt = Math.sqrt;\nvar abs = Math.abs;\nvar cos = Math.cos;\nvar sin = Math.sin;\nvar mathMax = Math.max;\n\nif (!env.canvasSupported) {\n var comma = ',';\n var imageTransformPrefix = 'progid:DXImageTransform.Microsoft';\n var Z = 21600;\n var Z2 = Z / 2;\n var ZLEVEL_BASE = 100000;\n var Z_BASE = 1000;\n\n var initRootElStyle = function (el) {\n el.style.cssText = 'position:absolute;left:0;top:0;width:1px;height:1px;';\n el.coordsize = Z + ',' + Z;\n el.coordorigin = '0,0';\n };\n\n var encodeHtmlAttribute = function (s) {\n return String(s).replace(/&/g, '&').replace(/\"/g, '"');\n };\n\n var rgb2Str = function (r, g, b) {\n return 'rgb(' + [r, g, b].join(',') + ')';\n };\n\n var append = function (parent, child) {\n if (child && parent && child.parentNode !== parent) {\n parent.appendChild(child);\n }\n };\n\n var remove = function (parent, child) {\n if (child && parent && child.parentNode === parent) {\n parent.removeChild(child);\n }\n };\n\n var getZIndex = function (zlevel, z, z2) {\n // z 的取值范围为 [0, 1000]\n return (parseFloat(zlevel) || 0) * ZLEVEL_BASE + (parseFloat(z) || 0) * Z_BASE + z2;\n };\n\n var parsePercent = textHelper.parsePercent;\n /***************************************************\n * PATH\n **************************************************/\n\n var setColorAndOpacity = function (el, color, opacity) {\n var colorArr = colorTool.parse(color);\n opacity = +opacity;\n\n if (isNaN(opacity)) {\n opacity = 1;\n }\n\n if (colorArr) {\n el.color = rgb2Str(colorArr[0], colorArr[1], colorArr[2]);\n el.opacity = opacity * colorArr[3];\n }\n };\n\n var getColorAndAlpha = function (color) {\n var colorArr = colorTool.parse(color);\n return [rgb2Str(colorArr[0], colorArr[1], colorArr[2]), colorArr[3]];\n };\n\n var updateFillNode = function (el, style, zrEl) {\n // TODO pattern\n var fill = style.fill;\n\n if (fill != null) {\n // Modified from excanvas\n if (fill instanceof Gradient) {\n var gradientType;\n var angle = 0;\n var focus = [0, 0]; // additional offset\n\n var shift = 0; // scale factor for offset\n\n var expansion = 1;\n var rect = zrEl.getBoundingRect();\n var rectWidth = rect.width;\n var rectHeight = rect.height;\n\n if (fill.type === 'linear') {\n gradientType = 'gradient';\n var transform = zrEl.transform;\n var p0 = [fill.x * rectWidth, fill.y * rectHeight];\n var p1 = [fill.x2 * rectWidth, fill.y2 * rectHeight];\n\n if (transform) {\n applyTransform(p0, p0, transform);\n applyTransform(p1, p1, transform);\n }\n\n var dx = p1[0] - p0[0];\n var dy = p1[1] - p0[1];\n angle = Math.atan2(dx, dy) * 180 / Math.PI; // The angle should be a non-negative number.\n\n if (angle < 0) {\n angle += 360;\n } // Very small angles produce an unexpected result because they are\n // converted to a scientific notation string.\n\n\n if (angle < 1e-6) {\n angle = 0;\n }\n } else {\n gradientType = 'gradientradial';\n var p0 = [fill.x * rectWidth, fill.y * rectHeight];\n var transform = zrEl.transform;\n var scale = zrEl.scale;\n var width = rectWidth;\n var height = rectHeight;\n focus = [// Percent in bounding rect\n (p0[0] - rect.x) / width, (p0[1] - rect.y) / height];\n\n if (transform) {\n applyTransform(p0, p0, transform);\n }\n\n width /= scale[0] * Z;\n height /= scale[1] * Z;\n var dimension = mathMax(width, height);\n shift = 2 * 0 / dimension;\n expansion = 2 * fill.r / dimension - shift;\n } // We need to sort the color stops in ascending order by offset,\n // otherwise IE won't interpret it correctly.\n\n\n var stops = fill.colorStops.slice();\n stops.sort(function (cs1, cs2) {\n return cs1.offset - cs2.offset;\n });\n var length = stops.length; // Color and alpha list of first and last stop\n\n var colorAndAlphaList = [];\n var colors = [];\n\n for (var i = 0; i < length; i++) {\n var stop = stops[i];\n var colorAndAlpha = getColorAndAlpha(stop.color);\n colors.push(stop.offset * expansion + shift + ' ' + colorAndAlpha[0]);\n\n if (i === 0 || i === length - 1) {\n colorAndAlphaList.push(colorAndAlpha);\n }\n }\n\n if (length >= 2) {\n var color1 = colorAndAlphaList[0][0];\n var color2 = colorAndAlphaList[1][0];\n var opacity1 = colorAndAlphaList[0][1] * style.opacity;\n var opacity2 = colorAndAlphaList[1][1] * style.opacity;\n el.type = gradientType;\n el.method = 'none';\n el.focus = '100%';\n el.angle = angle;\n el.color = color1;\n el.color2 = color2;\n el.colors = colors.join(','); // When colors attribute is used, the meanings of opacity and o:opacity2\n // are reversed.\n\n el.opacity = opacity2; // FIXME g_o_:opacity ?\n\n el.opacity2 = opacity1;\n }\n\n if (gradientType === 'radial') {\n el.focusposition = focus.join(',');\n }\n } else {\n // FIXME Change from Gradient fill to color fill\n setColorAndOpacity(el, fill, style.opacity);\n }\n }\n };\n\n var updateStrokeNode = function (el, style) {\n // if (style.lineJoin != null) {\n // el.joinstyle = style.lineJoin;\n // }\n // if (style.miterLimit != null) {\n // el.miterlimit = style.miterLimit * Z;\n // }\n // if (style.lineCap != null) {\n // el.endcap = style.lineCap;\n // }\n if (style.lineDash) {\n el.dashstyle = style.lineDash.join(' ');\n }\n\n if (style.stroke != null && !(style.stroke instanceof Gradient)) {\n setColorAndOpacity(el, style.stroke, style.opacity);\n }\n };\n\n var updateFillAndStroke = function (vmlEl, type, style, zrEl) {\n var isFill = type === 'fill';\n var el = vmlEl.getElementsByTagName(type)[0]; // Stroke must have lineWidth\n\n if (style[type] != null && style[type] !== 'none' && (isFill || !isFill && style.lineWidth)) {\n vmlEl[isFill ? 'filled' : 'stroked'] = 'true'; // FIXME Remove before updating, or set `colors` will throw error\n\n if (style[type] instanceof Gradient) {\n remove(vmlEl, el);\n }\n\n if (!el) {\n el = vmlCore.createNode(type);\n }\n\n isFill ? updateFillNode(el, style, zrEl) : updateStrokeNode(el, style);\n append(vmlEl, el);\n } else {\n vmlEl[isFill ? 'filled' : 'stroked'] = 'false';\n remove(vmlEl, el);\n }\n };\n\n var points = [[], [], []];\n\n var pathDataToString = function (path, m) {\n var M = CMD.M;\n var C = CMD.C;\n var L = CMD.L;\n var A = CMD.A;\n var Q = CMD.Q;\n var str = [];\n var nPoint;\n var cmdStr;\n var cmd;\n var i;\n var xi;\n var yi;\n var data = path.data;\n var dataLength = path.len();\n\n for (i = 0; i < dataLength;) {\n cmd = data[i++];\n cmdStr = '';\n nPoint = 0;\n\n switch (cmd) {\n case M:\n cmdStr = ' m ';\n nPoint = 1;\n xi = data[i++];\n yi = data[i++];\n points[0][0] = xi;\n points[0][1] = yi;\n break;\n\n case L:\n cmdStr = ' l ';\n nPoint = 1;\n xi = data[i++];\n yi = data[i++];\n points[0][0] = xi;\n points[0][1] = yi;\n break;\n\n case Q:\n case C:\n cmdStr = ' c ';\n nPoint = 3;\n var x1 = data[i++];\n var y1 = data[i++];\n var x2 = data[i++];\n var y2 = data[i++];\n var x3;\n var y3;\n\n if (cmd === Q) {\n // Convert quadratic to cubic using degree elevation\n x3 = x2;\n y3 = y2;\n x2 = (x2 + 2 * x1) / 3;\n y2 = (y2 + 2 * y1) / 3;\n x1 = (xi + 2 * x1) / 3;\n y1 = (yi + 2 * y1) / 3;\n } else {\n x3 = data[i++];\n y3 = data[i++];\n }\n\n points[0][0] = x1;\n points[0][1] = y1;\n points[1][0] = x2;\n points[1][1] = y2;\n points[2][0] = x3;\n points[2][1] = y3;\n xi = x3;\n yi = y3;\n break;\n\n case A:\n var x = 0;\n var y = 0;\n var sx = 1;\n var sy = 1;\n var angle = 0;\n\n if (m) {\n // Extract SRT from matrix\n x = m[4];\n y = m[5];\n sx = sqrt(m[0] * m[0] + m[1] * m[1]);\n sy = sqrt(m[2] * m[2] + m[3] * m[3]);\n angle = Math.atan2(-m[1] / sy, m[0] / sx);\n }\n\n var cx = data[i++];\n var cy = data[i++];\n var rx = data[i++];\n var ry = data[i++];\n var startAngle = data[i++] + angle;\n var endAngle = data[i++] + startAngle + angle; // FIXME\n // var psi = data[i++];\n\n i++;\n var clockwise = data[i++];\n var x0 = cx + cos(startAngle) * rx;\n var y0 = cy + sin(startAngle) * ry;\n var x1 = cx + cos(endAngle) * rx;\n var y1 = cy + sin(endAngle) * ry;\n var type = clockwise ? ' wa ' : ' at ';\n\n if (Math.abs(x0 - x1) < 1e-4) {\n // IE won't render arches drawn counter clockwise if x0 == x1.\n if (Math.abs(endAngle - startAngle) > 1e-2) {\n // Offset x0 by 1/80 of a pixel. Use something\n // that can be represented in binary\n if (clockwise) {\n x0 += 270 / Z;\n }\n } else {\n // Avoid case draw full circle\n if (Math.abs(y0 - cy) < 1e-4) {\n if (clockwise && x0 < cx || !clockwise && x0 > cx) {\n y1 -= 270 / Z;\n } else {\n y1 += 270 / Z;\n }\n } else if (clockwise && y0 < cy || !clockwise && y0 > cy) {\n x1 += 270 / Z;\n } else {\n x1 -= 270 / Z;\n }\n }\n }\n\n str.push(type, round(((cx - rx) * sx + x) * Z - Z2), comma, round(((cy - ry) * sy + y) * Z - Z2), comma, round(((cx + rx) * sx + x) * Z - Z2), comma, round(((cy + ry) * sy + y) * Z - Z2), comma, round((x0 * sx + x) * Z - Z2), comma, round((y0 * sy + y) * Z - Z2), comma, round((x1 * sx + x) * Z - Z2), comma, round((y1 * sy + y) * Z - Z2));\n xi = x1;\n yi = y1;\n break;\n\n case CMD.R:\n var p0 = points[0];\n var p1 = points[1]; // x0, y0\n\n p0[0] = data[i++];\n p0[1] = data[i++]; // x1, y1\n\n p1[0] = p0[0] + data[i++];\n p1[1] = p0[1] + data[i++];\n\n if (m) {\n applyTransform(p0, p0, m);\n applyTransform(p1, p1, m);\n }\n\n p0[0] = round(p0[0] * Z - Z2);\n p1[0] = round(p1[0] * Z - Z2);\n p0[1] = round(p0[1] * Z - Z2);\n p1[1] = round(p1[1] * Z - Z2);\n str.push( // x0, y0\n ' m ', p0[0], comma, p0[1], // x1, y0\n ' l ', p1[0], comma, p0[1], // x1, y1\n ' l ', p1[0], comma, p1[1], // x0, y1\n ' l ', p0[0], comma, p1[1]);\n break;\n\n case CMD.Z:\n // FIXME Update xi, yi\n str.push(' x ');\n }\n\n if (nPoint > 0) {\n str.push(cmdStr);\n\n for (var k = 0; k < nPoint; k++) {\n var p = points[k];\n m && applyTransform(p, p, m); // 不 round 会非常慢\n\n str.push(round(p[0] * Z - Z2), comma, round(p[1] * Z - Z2), k < nPoint - 1 ? comma : '');\n }\n }\n }\n\n return str.join('');\n }; // Rewrite the original path method\n\n\n Path.prototype.brushVML = function (vmlRoot) {\n var style = this.style;\n var vmlEl = this._vmlEl;\n\n if (!vmlEl) {\n vmlEl = vmlCore.createNode('shape');\n initRootElStyle(vmlEl);\n this._vmlEl = vmlEl;\n }\n\n updateFillAndStroke(vmlEl, 'fill', style, this);\n updateFillAndStroke(vmlEl, 'stroke', style, this);\n var m = this.transform;\n var needTransform = m != null;\n var strokeEl = vmlEl.getElementsByTagName('stroke')[0];\n\n if (strokeEl) {\n var lineWidth = style.lineWidth; // Get the line scale.\n // Determinant of this.m_ means how much the area is enlarged by the\n // transformation. So its square root can be used as a scale factor\n // for width.\n\n if (needTransform && !style.strokeNoScale) {\n var det = m[0] * m[3] - m[1] * m[2];\n lineWidth *= sqrt(abs(det));\n }\n\n strokeEl.weight = lineWidth + 'px';\n }\n\n var path = this.path || (this.path = new PathProxy());\n\n if (this.__dirtyPath) {\n path.beginPath();\n path.subPixelOptimize = false;\n this.buildPath(path, this.shape);\n path.toStatic();\n this.__dirtyPath = false;\n }\n\n vmlEl.path = pathDataToString(path, this.transform);\n vmlEl.style.zIndex = getZIndex(this.zlevel, this.z, this.z2); // Append to root\n\n append(vmlRoot, vmlEl); // Text\n\n if (style.text != null) {\n this.drawRectText(vmlRoot, this.getBoundingRect());\n } else {\n this.removeRectText(vmlRoot);\n }\n };\n\n Path.prototype.onRemove = function (vmlRoot) {\n remove(vmlRoot, this._vmlEl);\n this.removeRectText(vmlRoot);\n };\n\n Path.prototype.onAdd = function (vmlRoot) {\n append(vmlRoot, this._vmlEl);\n this.appendRectText(vmlRoot);\n };\n /***************************************************\n * IMAGE\n **************************************************/\n\n\n var isImage = function (img) {\n // FIXME img instanceof Image 如果 img 是一个字符串的时候,IE8 下会报错\n return typeof img === 'object' && img.tagName && img.tagName.toUpperCase() === 'IMG'; // return img instanceof Image;\n }; // Rewrite the original path method\n\n\n ZImage.prototype.brushVML = function (vmlRoot) {\n var style = this.style;\n var image = style.image; // Image original width, height\n\n var ow;\n var oh;\n\n if (isImage(image)) {\n var src = image.src;\n\n if (src === this._imageSrc) {\n ow = this._imageWidth;\n oh = this._imageHeight;\n } else {\n var imageRuntimeStyle = image.runtimeStyle;\n var oldRuntimeWidth = imageRuntimeStyle.width;\n var oldRuntimeHeight = imageRuntimeStyle.height;\n imageRuntimeStyle.width = 'auto';\n imageRuntimeStyle.height = 'auto'; // get the original size\n\n ow = image.width;\n oh = image.height; // and remove overides\n\n imageRuntimeStyle.width = oldRuntimeWidth;\n imageRuntimeStyle.height = oldRuntimeHeight; // Caching image original width, height and src\n\n this._imageSrc = src;\n this._imageWidth = ow;\n this._imageHeight = oh;\n }\n\n image = src;\n } else {\n if (image === this._imageSrc) {\n ow = this._imageWidth;\n oh = this._imageHeight;\n }\n }\n\n if (!image) {\n return;\n }\n\n var x = style.x || 0;\n var y = style.y || 0;\n var dw = style.width;\n var dh = style.height;\n var sw = style.sWidth;\n var sh = style.sHeight;\n var sx = style.sx || 0;\n var sy = style.sy || 0;\n var hasCrop = sw && sh;\n var vmlEl = this._vmlEl;\n\n if (!vmlEl) {\n // FIXME 使用 group 在 left, top 都不是 0 的时候就无法显示了。\n // vmlEl = vmlCore.createNode('group');\n vmlEl = vmlCore.doc.createElement('div');\n initRootElStyle(vmlEl);\n this._vmlEl = vmlEl;\n }\n\n var vmlElStyle = vmlEl.style;\n var hasRotation = false;\n var m;\n var scaleX = 1;\n var scaleY = 1;\n\n if (this.transform) {\n m = this.transform;\n scaleX = sqrt(m[0] * m[0] + m[1] * m[1]);\n scaleY = sqrt(m[2] * m[2] + m[3] * m[3]);\n hasRotation = m[1] || m[2];\n }\n\n if (hasRotation) {\n // If filters are necessary (rotation exists), create them\n // filters are bog-slow, so only create them if abbsolutely necessary\n // The following check doesn't account for skews (which don't exist\n // in the canvas spec (yet) anyway.\n // From excanvas\n var p0 = [x, y];\n var p1 = [x + dw, y];\n var p2 = [x, y + dh];\n var p3 = [x + dw, y + dh];\n applyTransform(p0, p0, m);\n applyTransform(p1, p1, m);\n applyTransform(p2, p2, m);\n applyTransform(p3, p3, m);\n var maxX = mathMax(p0[0], p1[0], p2[0], p3[0]);\n var maxY = mathMax(p0[1], p1[1], p2[1], p3[1]);\n var transformFilter = [];\n transformFilter.push('M11=', m[0] / scaleX, comma, 'M12=', m[2] / scaleY, comma, 'M21=', m[1] / scaleX, comma, 'M22=', m[3] / scaleY, comma, 'Dx=', round(x * scaleX + m[4]), comma, 'Dy=', round(y * scaleY + m[5]));\n vmlElStyle.padding = '0 ' + round(maxX) + 'px ' + round(maxY) + 'px 0'; // FIXME DXImageTransform 在 IE11 的兼容模式下不起作用\n\n vmlElStyle.filter = imageTransformPrefix + '.Matrix(' + transformFilter.join('') + ', SizingMethod=clip)';\n } else {\n if (m) {\n x = x * scaleX + m[4];\n y = y * scaleY + m[5];\n }\n\n vmlElStyle.filter = '';\n vmlElStyle.left = round(x) + 'px';\n vmlElStyle.top = round(y) + 'px';\n }\n\n var imageEl = this._imageEl;\n var cropEl = this._cropEl;\n\n if (!imageEl) {\n imageEl = vmlCore.doc.createElement('div');\n this._imageEl = imageEl;\n }\n\n var imageELStyle = imageEl.style;\n\n if (hasCrop) {\n // Needs know image original width and height\n if (!(ow && oh)) {\n var tmpImage = new Image();\n var self = this;\n\n tmpImage.onload = function () {\n tmpImage.onload = null;\n ow = tmpImage.width;\n oh = tmpImage.height; // Adjust image width and height to fit the ratio destinationSize / sourceSize\n\n imageELStyle.width = round(scaleX * ow * dw / sw) + 'px';\n imageELStyle.height = round(scaleY * oh * dh / sh) + 'px'; // Caching image original width, height and src\n\n self._imageWidth = ow;\n self._imageHeight = oh;\n self._imageSrc = image;\n };\n\n tmpImage.src = image;\n } else {\n imageELStyle.width = round(scaleX * ow * dw / sw) + 'px';\n imageELStyle.height = round(scaleY * oh * dh / sh) + 'px';\n }\n\n if (!cropEl) {\n cropEl = vmlCore.doc.createElement('div');\n cropEl.style.overflow = 'hidden';\n this._cropEl = cropEl;\n }\n\n var cropElStyle = cropEl.style;\n cropElStyle.width = round((dw + sx * dw / sw) * scaleX);\n cropElStyle.height = round((dh + sy * dh / sh) * scaleY);\n cropElStyle.filter = imageTransformPrefix + '.Matrix(Dx=' + -sx * dw / sw * scaleX + ',Dy=' + -sy * dh / sh * scaleY + ')';\n\n if (!cropEl.parentNode) {\n vmlEl.appendChild(cropEl);\n }\n\n if (imageEl.parentNode !== cropEl) {\n cropEl.appendChild(imageEl);\n }\n } else {\n imageELStyle.width = round(scaleX * dw) + 'px';\n imageELStyle.height = round(scaleY * dh) + 'px';\n vmlEl.appendChild(imageEl);\n\n if (cropEl && cropEl.parentNode) {\n vmlEl.removeChild(cropEl);\n this._cropEl = null;\n }\n }\n\n var filterStr = '';\n var alpha = style.opacity;\n\n if (alpha < 1) {\n filterStr += '.Alpha(opacity=' + round(alpha * 100) + ') ';\n }\n\n filterStr += imageTransformPrefix + '.AlphaImageLoader(src=' + image + ', SizingMethod=scale)';\n imageELStyle.filter = filterStr;\n vmlEl.style.zIndex = getZIndex(this.zlevel, this.z, this.z2); // Append to root\n\n append(vmlRoot, vmlEl); // Text\n\n if (style.text != null) {\n this.drawRectText(vmlRoot, this.getBoundingRect());\n }\n };\n\n ZImage.prototype.onRemove = function (vmlRoot) {\n remove(vmlRoot, this._vmlEl);\n this._vmlEl = null;\n this._cropEl = null;\n this._imageEl = null;\n this.removeRectText(vmlRoot);\n };\n\n ZImage.prototype.onAdd = function (vmlRoot) {\n append(vmlRoot, this._vmlEl);\n this.appendRectText(vmlRoot);\n };\n /***************************************************\n * TEXT\n **************************************************/\n\n\n var DEFAULT_STYLE_NORMAL = 'normal';\n var fontStyleCache = {};\n var fontStyleCacheCount = 0;\n var MAX_FONT_CACHE_SIZE = 100;\n var fontEl = document.createElement('div');\n\n var getFontStyle = function (fontString) {\n var fontStyle = fontStyleCache[fontString];\n\n if (!fontStyle) {\n // Clear cache\n if (fontStyleCacheCount > MAX_FONT_CACHE_SIZE) {\n fontStyleCacheCount = 0;\n fontStyleCache = {};\n }\n\n var style = fontEl.style;\n var fontFamily;\n\n try {\n style.font = fontString;\n fontFamily = style.fontFamily.split(',')[0];\n } catch (e) {}\n\n fontStyle = {\n style: style.fontStyle || DEFAULT_STYLE_NORMAL,\n variant: style.fontVariant || DEFAULT_STYLE_NORMAL,\n weight: style.fontWeight || DEFAULT_STYLE_NORMAL,\n size: parseFloat(style.fontSize || 12) | 0,\n family: fontFamily || 'Microsoft YaHei'\n };\n fontStyleCache[fontString] = fontStyle;\n fontStyleCacheCount++;\n }\n\n return fontStyle;\n };\n\n var textMeasureEl; // Overwrite measure text method\n\n textContain.$override('measureText', function (text, textFont) {\n var doc = vmlCore.doc;\n\n if (!textMeasureEl) {\n textMeasureEl = doc.createElement('div');\n textMeasureEl.style.cssText = 'position:absolute;top:-20000px;left:0;' + 'padding:0;margin:0;border:none;white-space:pre;';\n vmlCore.doc.body.appendChild(textMeasureEl);\n }\n\n try {\n textMeasureEl.style.font = textFont;\n } catch (ex) {// Ignore failures to set to invalid font.\n }\n\n textMeasureEl.innerHTML = ''; // Don't use innerHTML or innerText because they allow markup/whitespace.\n\n textMeasureEl.appendChild(doc.createTextNode(text));\n return {\n width: textMeasureEl.offsetWidth\n };\n });\n var tmpRect = new BoundingRect();\n\n var drawRectText = function (vmlRoot, rect, textRect, fromTextEl) {\n var style = this.style; // Optimize, avoid normalize every time.\n\n this.__dirty && textHelper.normalizeTextStyle(style, true);\n var text = style.text; // Convert to string\n\n text != null && (text += '');\n\n if (!text) {\n return;\n } // Convert rich text to plain text. Rich text is not supported in\n // IE8-, but tags in rich text template will be removed.\n\n\n if (style.rich) {\n var contentBlock = textContain.parseRichText(text, style);\n text = [];\n\n for (var i = 0; i < contentBlock.lines.length; i++) {\n var tokens = contentBlock.lines[i].tokens;\n var textLine = [];\n\n for (var j = 0; j < tokens.length; j++) {\n textLine.push(tokens[j].text);\n }\n\n text.push(textLine.join(''));\n }\n\n text = text.join('\\n');\n }\n\n var x;\n var y;\n var align = style.textAlign;\n var verticalAlign = style.textVerticalAlign;\n var fontStyle = getFontStyle(style.font); // FIXME encodeHtmlAttribute ?\n\n var font = fontStyle.style + ' ' + fontStyle.variant + ' ' + fontStyle.weight + ' ' + fontStyle.size + 'px \"' + fontStyle.family + '\"';\n textRect = textRect || textContain.getBoundingRect(text, font, align, verticalAlign, style.textPadding, style.textLineHeight); // Transform rect to view space\n\n var m = this.transform; // Ignore transform for text in other element\n\n if (m && !fromTextEl) {\n tmpRect.copy(rect);\n tmpRect.applyTransform(m);\n rect = tmpRect;\n }\n\n if (!fromTextEl) {\n var textPosition = style.textPosition; // Text position represented by coord\n\n if (textPosition instanceof Array) {\n x = rect.x + parsePercent(textPosition[0], rect.width);\n y = rect.y + parsePercent(textPosition[1], rect.height);\n align = align || 'left';\n } else {\n var res = this.calculateTextPosition ? this.calculateTextPosition({}, style, rect) : textContain.calculateTextPosition({}, style, rect);\n x = res.x;\n y = res.y; // Default align and baseline when has textPosition\n\n align = align || res.textAlign;\n verticalAlign = verticalAlign || res.textVerticalAlign;\n }\n } else {\n x = rect.x;\n y = rect.y;\n }\n\n x = textContain.adjustTextX(x, textRect.width, align);\n y = textContain.adjustTextY(y, textRect.height, verticalAlign); // Force baseline 'middle'\n\n y += textRect.height / 2; // var fontSize = fontStyle.size;\n // 1.75 is an arbitrary number, as there is no info about the text baseline\n // switch (baseline) {\n // case 'hanging':\n // case 'top':\n // y += fontSize / 1.75;\n // break;\n // case 'middle':\n // break;\n // default:\n // // case null:\n // // case 'alphabetic':\n // // case 'ideographic':\n // // case 'bottom':\n // y -= fontSize / 2.25;\n // break;\n // }\n // switch (align) {\n // case 'left':\n // break;\n // case 'center':\n // x -= textRect.width / 2;\n // break;\n // case 'right':\n // x -= textRect.width;\n // break;\n // case 'end':\n // align = elementStyle.direction == 'ltr' ? 'right' : 'left';\n // break;\n // case 'start':\n // align = elementStyle.direction == 'rtl' ? 'right' : 'left';\n // break;\n // default:\n // align = 'left';\n // }\n\n var createNode = vmlCore.createNode;\n var textVmlEl = this._textVmlEl;\n var pathEl;\n var textPathEl;\n var skewEl;\n\n if (!textVmlEl) {\n textVmlEl = createNode('line');\n pathEl = createNode('path');\n textPathEl = createNode('textpath');\n skewEl = createNode('skew'); // FIXME Why here is not cammel case\n // Align 'center' seems wrong\n\n textPathEl.style['v-text-align'] = 'left';\n initRootElStyle(textVmlEl);\n pathEl.textpathok = true;\n textPathEl.on = true;\n textVmlEl.from = '0 0';\n textVmlEl.to = '1000 0.05';\n append(textVmlEl, skewEl);\n append(textVmlEl, pathEl);\n append(textVmlEl, textPathEl);\n this._textVmlEl = textVmlEl;\n } else {\n // 这里是在前面 appendChild 保证顺序的前提下\n skewEl = textVmlEl.firstChild;\n pathEl = skewEl.nextSibling;\n textPathEl = pathEl.nextSibling;\n }\n\n var coords = [x, y];\n var textVmlElStyle = textVmlEl.style; // Ignore transform for text in other element\n\n if (m && fromTextEl) {\n applyTransform(coords, coords, m);\n skewEl.on = true;\n skewEl.matrix = m[0].toFixed(3) + comma + m[2].toFixed(3) + comma + m[1].toFixed(3) + comma + m[3].toFixed(3) + ',0,0'; // Text position\n\n skewEl.offset = (round(coords[0]) || 0) + ',' + (round(coords[1]) || 0); // Left top point as origin\n\n skewEl.origin = '0 0';\n textVmlElStyle.left = '0px';\n textVmlElStyle.top = '0px';\n } else {\n skewEl.on = false;\n textVmlElStyle.left = round(x) + 'px';\n textVmlElStyle.top = round(y) + 'px';\n }\n\n textPathEl.string = encodeHtmlAttribute(text); // TODO\n\n try {\n textPathEl.style.font = font;\n } // Error font format\n catch (e) {}\n\n updateFillAndStroke(textVmlEl, 'fill', {\n fill: style.textFill,\n opacity: style.opacity\n }, this);\n updateFillAndStroke(textVmlEl, 'stroke', {\n stroke: style.textStroke,\n opacity: style.opacity,\n lineDash: style.lineDash || null // style.lineDash can be `false`.\n\n }, this);\n textVmlEl.style.zIndex = getZIndex(this.zlevel, this.z, this.z2); // Attached to root\n\n append(vmlRoot, textVmlEl);\n };\n\n var removeRectText = function (vmlRoot) {\n remove(vmlRoot, this._textVmlEl);\n this._textVmlEl = null;\n };\n\n var appendRectText = function (vmlRoot) {\n append(vmlRoot, this._textVmlEl);\n };\n\n var list = [RectText, Displayable, ZImage, Path, Text]; // In case Displayable has been mixed in RectText\n\n for (var i = 0; i < list.length; i++) {\n var proto = list[i].prototype;\n proto.drawRectText = drawRectText;\n proto.removeRectText = removeRectText;\n proto.appendRectText = appendRectText;\n }\n\n Text.prototype.brushVML = function (vmlRoot) {\n var style = this.style;\n\n if (style.text != null) {\n this.drawRectText(vmlRoot, {\n x: style.x || 0,\n y: style.y || 0,\n width: 0,\n height: 0\n }, this.getBoundingRect(), true);\n } else {\n this.removeRectText(vmlRoot);\n }\n };\n\n Text.prototype.onRemove = function (vmlRoot) {\n this.removeRectText(vmlRoot);\n };\n\n Text.prototype.onAdd = function (vmlRoot) {\n this.appendRectText(vmlRoot);\n };\n}","require(\"./graphic\");\n\nvar _zrender = require(\"../zrender\");\n\nvar registerPainter = _zrender.registerPainter;\n\nvar Painter = require(\"./Painter\");\n\nregisterPainter('vml', Painter);","var guid = require(\"./core/guid\");\n\nvar env = require(\"./core/env\");\n\nvar zrUtil = require(\"./core/util\");\n\nvar Handler = require(\"./Handler\");\n\nvar Storage = require(\"./Storage\");\n\nvar Painter = require(\"./Painter\");\n\nvar Animation = require(\"./animation/Animation\");\n\nvar HandlerProxy = require(\"./dom/HandlerProxy\");\n\n/*!\n* ZRender, a high performance 2d drawing library.\n*\n* Copyright (c) 2013, Baidu Inc.\n* All rights reserved.\n*\n* LICENSE\n* https://github.com/ecomfe/zrender/blob/master/LICENSE.txt\n*/\nvar useVML = !env.canvasSupported;\nvar painterCtors = {\n canvas: Painter\n};\nvar instances = {}; // ZRender实例map索引\n\n/**\n * @type {string}\n */\n\nvar version = '4.3.2';\n/**\n * Initializing a zrender instance\n * @param {HTMLElement} dom\n * @param {Object} [opts]\n * @param {string} [opts.renderer='canvas'] 'canvas' or 'svg'\n * @param {number} [opts.devicePixelRatio]\n * @param {number|string} [opts.width] Can be 'auto' (the same as null/undefined)\n * @param {number|string} [opts.height] Can be 'auto' (the same as null/undefined)\n * @return {module:zrender/ZRender}\n */\n\nfunction init(dom, opts) {\n var zr = new ZRender(guid(), dom, opts);\n instances[zr.id] = zr;\n return zr;\n}\n/**\n * Dispose zrender instance\n * @param {module:zrender/ZRender} zr\n */\n\n\nfunction dispose(zr) {\n if (zr) {\n zr.dispose();\n } else {\n for (var key in instances) {\n if (instances.hasOwnProperty(key)) {\n instances[key].dispose();\n }\n }\n\n instances = {};\n }\n\n return this;\n}\n/**\n * Get zrender instance by id\n * @param {string} id zrender instance id\n * @return {module:zrender/ZRender}\n */\n\n\nfunction getInstance(id) {\n return instances[id];\n}\n\nfunction registerPainter(name, Ctor) {\n painterCtors[name] = Ctor;\n}\n\nfunction delInstance(id) {\n delete instances[id];\n}\n/**\n * @module zrender/ZRender\n */\n\n/**\n * @constructor\n * @alias module:zrender/ZRender\n * @param {string} id\n * @param {HTMLElement} dom\n * @param {Object} opts\n * @param {string} [opts.renderer='canvas'] 'canvas' or 'svg'\n * @param {number} [opts.devicePixelRatio]\n * @param {number} [opts.width] Can be 'auto' (the same as null/undefined)\n * @param {number} [opts.height] Can be 'auto' (the same as null/undefined)\n */\n\n\nvar ZRender = function (id, dom, opts) {\n opts = opts || {};\n /**\n * @type {HTMLDomElement}\n */\n\n this.dom = dom;\n /**\n * @type {string}\n */\n\n this.id = id;\n var self = this;\n var storage = new Storage();\n var rendererType = opts.renderer; // TODO WebGL\n\n if (useVML) {\n if (!painterCtors.vml) {\n throw new Error('You need to require \\'zrender/vml/vml\\' to support IE8');\n }\n\n rendererType = 'vml';\n } else if (!rendererType || !painterCtors[rendererType]) {\n rendererType = 'canvas';\n }\n\n var painter = new painterCtors[rendererType](dom, storage, opts, id);\n this.storage = storage;\n this.painter = painter;\n var handerProxy = !env.node && !env.worker ? new HandlerProxy(painter.getViewportRoot(), painter.root) : null;\n this.handler = new Handler(storage, painter, handerProxy, painter.root);\n /**\n * @type {module:zrender/animation/Animation}\n */\n\n this.animation = new Animation({\n stage: {\n update: zrUtil.bind(this.flush, this)\n }\n });\n this.animation.start();\n /**\n * @type {boolean}\n * @private\n */\n\n this._needsRefresh; // 修改 storage.delFromStorage, 每次删除元素之前删除动画\n // FIXME 有点ugly\n\n var oldDelFromStorage = storage.delFromStorage;\n var oldAddToStorage = storage.addToStorage;\n\n storage.delFromStorage = function (el) {\n oldDelFromStorage.call(storage, el);\n el && el.removeSelfFromZr(self);\n };\n\n storage.addToStorage = function (el) {\n oldAddToStorage.call(storage, el);\n el.addSelfToZr(self);\n };\n};\n\nZRender.prototype = {\n constructor: ZRender,\n\n /**\n * 获取实例唯一标识\n * @return {string}\n */\n getId: function () {\n return this.id;\n },\n\n /**\n * 添加元素\n * @param {module:zrender/Element} el\n */\n add: function (el) {\n this.storage.addRoot(el);\n this._needsRefresh = true;\n },\n\n /**\n * 删除元素\n * @param {module:zrender/Element} el\n */\n remove: function (el) {\n this.storage.delRoot(el);\n this._needsRefresh = true;\n },\n\n /**\n * Change configuration of layer\n * @param {string} zLevel\n * @param {Object} config\n * @param {string} [config.clearColor=0] Clear color\n * @param {string} [config.motionBlur=false] If enable motion blur\n * @param {number} [config.lastFrameAlpha=0.7] Motion blur factor. Larger value cause longer trailer\n */\n configLayer: function (zLevel, config) {\n if (this.painter.configLayer) {\n this.painter.configLayer(zLevel, config);\n }\n\n this._needsRefresh = true;\n },\n\n /**\n * Set background color\n * @param {string} backgroundColor\n */\n setBackgroundColor: function (backgroundColor) {\n if (this.painter.setBackgroundColor) {\n this.painter.setBackgroundColor(backgroundColor);\n }\n\n this._needsRefresh = true;\n },\n\n /**\n * Repaint the canvas immediately\n */\n refreshImmediately: function () {\n // var start = new Date();\n // Clear needsRefresh ahead to avoid something wrong happens in refresh\n // Or it will cause zrender refreshes again and again.\n this._needsRefresh = this._needsRefreshHover = false;\n this.painter.refresh(); // Avoid trigger zr.refresh in Element#beforeUpdate hook\n\n this._needsRefresh = this._needsRefreshHover = false; // var end = new Date();\n // var log = document.getElementById('log');\n // if (log) {\n // log.innerHTML = log.innerHTML + '
' + (end - start);\n // }\n },\n\n /**\n * Mark and repaint the canvas in the next frame of browser\n */\n refresh: function () {\n this._needsRefresh = true;\n },\n\n /**\n * Perform all refresh\n */\n flush: function () {\n var triggerRendered;\n\n if (this._needsRefresh) {\n triggerRendered = true;\n this.refreshImmediately();\n }\n\n if (this._needsRefreshHover) {\n triggerRendered = true;\n this.refreshHoverImmediately();\n }\n\n triggerRendered && this.trigger('rendered');\n },\n\n /**\n * Add element to hover layer\n * @param {module:zrender/Element} el\n * @param {Object} style\n */\n addHover: function (el, style) {\n if (this.painter.addHover) {\n var elMirror = this.painter.addHover(el, style);\n this.refreshHover();\n return elMirror;\n }\n },\n\n /**\n * Add element from hover layer\n * @param {module:zrender/Element} el\n */\n removeHover: function (el) {\n if (this.painter.removeHover) {\n this.painter.removeHover(el);\n this.refreshHover();\n }\n },\n\n /**\n * Clear all hover elements in hover layer\n * @param {module:zrender/Element} el\n */\n clearHover: function () {\n if (this.painter.clearHover) {\n this.painter.clearHover();\n this.refreshHover();\n }\n },\n\n /**\n * Refresh hover in next frame\n */\n refreshHover: function () {\n this._needsRefreshHover = true;\n },\n\n /**\n * Refresh hover immediately\n */\n refreshHoverImmediately: function () {\n this._needsRefreshHover = false;\n this.painter.refreshHover && this.painter.refreshHover();\n },\n\n /**\n * Resize the canvas.\n * Should be invoked when container size is changed\n * @param {Object} [opts]\n * @param {number|string} [opts.width] Can be 'auto' (the same as null/undefined)\n * @param {number|string} [opts.height] Can be 'auto' (the same as null/undefined)\n */\n resize: function (opts) {\n opts = opts || {};\n this.painter.resize(opts.width, opts.height);\n this.handler.resize();\n },\n\n /**\n * Stop and clear all animation immediately\n */\n clearAnimation: function () {\n this.animation.clear();\n },\n\n /**\n * Get container width\n */\n getWidth: function () {\n return this.painter.getWidth();\n },\n\n /**\n * Get container height\n */\n getHeight: function () {\n return this.painter.getHeight();\n },\n\n /**\n * Export the canvas as Base64 URL\n * @param {string} type\n * @param {string} [backgroundColor='#fff']\n * @return {string} Base64 URL\n */\n // toDataURL: function(type, backgroundColor) {\n // return this.painter.getRenderedCanvas({\n // backgroundColor: backgroundColor\n // }).toDataURL(type);\n // },\n\n /**\n * Converting a path to image.\n * It has much better performance of drawing image rather than drawing a vector path.\n * @param {module:zrender/graphic/Path} e\n * @param {number} width\n * @param {number} height\n */\n pathToImage: function (e, dpr) {\n return this.painter.pathToImage(e, dpr);\n },\n\n /**\n * Set default cursor\n * @param {string} [cursorStyle='default'] 例如 crosshair\n */\n setCursorStyle: function (cursorStyle) {\n this.handler.setCursorStyle(cursorStyle);\n },\n\n /**\n * Find hovered element\n * @param {number} x\n * @param {number} y\n * @return {Object} {target, topTarget}\n */\n findHover: function (x, y) {\n return this.handler.findHover(x, y);\n },\n\n /**\n * Bind event\n *\n * @param {string} eventName Event name\n * @param {Function} eventHandler Handler function\n * @param {Object} [context] Context object\n */\n on: function (eventName, eventHandler, context) {\n this.handler.on(eventName, eventHandler, context);\n },\n\n /**\n * Unbind event\n * @param {string} eventName Event name\n * @param {Function} [eventHandler] Handler function\n */\n off: function (eventName, eventHandler) {\n this.handler.off(eventName, eventHandler);\n },\n\n /**\n * Trigger event manually\n *\n * @param {string} eventName Event name\n * @param {event=} event Event object\n */\n trigger: function (eventName, event) {\n this.handler.trigger(eventName, event);\n },\n\n /**\n * Clear all objects and the canvas.\n */\n clear: function () {\n this.storage.delRoot();\n this.painter.clear();\n },\n\n /**\n * Dispose self.\n */\n dispose: function () {\n this.animation.stop();\n this.clear();\n this.storage.dispose();\n this.painter.dispose();\n this.handler.dispose();\n this.animation = this.storage = this.painter = this.handler = null;\n delInstance(this.id);\n }\n};\nexports.version = version;\nexports.init = init;\nexports.dispose = dispose;\nexports.getInstance = getInstance;\nexports.registerPainter = registerPainter;"],"names":["logError","vmlCore","_util","each","parseInt10","val","parseInt","VMLPainter","root","storage","initVML","this","vmlViewport","document","createElement","vmlRoot","style","cssText","appendChild","_vmlRoot","_vmlViewport","resize","oldDelFromStorage","delFromStorage","oldAddToStorage","addToStorage","el","call","onRemove","onAdd","_firstPaint","createMethodNotSupport","method","prototype","constructor","getType","getViewportRoot","getViewportRootOffset","viewportRoot","offsetLeft","offsetTop","refresh","list","getDisplayList","_paintList","i","length","invisible","ignore","__alreadyNotVisible","__dirty","beforeBrush","brushVML","brush","afterBrush","width","height","_getWidth","_getHeight","_width","_height","vmlViewportStyle","dispose","innerHTML","getWidth","getHeight","clear","removeChild","stl","currentStyle","clientWidth","paddingLeft","paddingRight","clientHeight","paddingTop","paddingBottom","name","_default","module","exports","doCreateNode","env","urn","win","window","vmlInited","doc","createNode","tagName","canvasSupported","namespaces","zrvml","add","e","styleSheets","createStyleSheet","addRule","_vector","applyTransform","BoundingRect","colorTool","textContain","textHelper","RectText","Displayable","ZImage","Text","Path","PathProxy","Gradient","CMD","round","Math","sqrt","abs","cos","sin","mathMax","max","comma","imageTransformPrefix","Z","Z2","ZLEVEL_BASE","Z_BASE","initRootElStyle","coordsize","coordorigin","encodeHtmlAttribute","s","String","replace","rgb2Str","r","g","b","join","append","parent","child","parentNode","remove","getZIndex","zlevel","z","z2","parseFloat","parsePercent","setColorAndOpacity","color","opacity","colorArr","parse","isNaN","getColorAndAlpha","updateFillNode","zrEl","fill","gradientType","angle","focus","shift","expansion","rect","getBoundingRect","rectWidth","rectHeight","type","transform","p0","x","y","p1","x2","y2","dx","dy","atan2","PI","scale","dimension","stops","colorStops","slice","sort","cs1","cs2","offset","colorAndAlphaList","colors","stop","colorAndAlpha","push","color1","color2","opacity1","opacity2","focusposition","updateStrokeNode","lineDash","dashstyle","stroke","updateFillAndStroke","vmlEl","isFill","getElementsByTagName","lineWidth","points","pathDataToString","path","m","nPoint","cmdStr","cmd","xi","yi","M","C","L","A","Q","str","data","dataLength","len","x3","y3","x1","y1","sx","sy","cx","cy","rx","ry","startAngle","endAngle","clockwise","x0","y0","R","k","p","_vmlEl","needTransform","strokeEl","strokeNoScale","det","weight","__dirtyPath","beginPath","subPixelOptimize","buildPath","shape","toStatic","zIndex","text","drawRectText","removeRectText","appendRectText","isImage","img","toUpperCase","ow","oh","image","src","_imageSrc","_imageWidth","_imageHeight","imageRuntimeStyle","runtimeStyle","oldRuntimeWidth","oldRuntimeHeight","dw","dh","sw","sWidth","sh","sHeight","hasCrop","vmlElStyle","hasRotation","scaleX","scaleY","p2","p3","maxX","maxY","transformFilter","padding","filter","left","top","imageEl","_imageEl","cropEl","_cropEl","imageELStyle","tmpImage","Image","self","onload","overflow","cropElStyle","filterStr","alpha","textMeasureEl","DEFAULT_STYLE_NORMAL","fontStyleCache","fontStyleCacheCount","MAX_FONT_CACHE_SIZE","fontEl","getFontStyle","fontString","fontStyle","fontFamily","font","split","variant","fontVariant","fontWeight","size","fontSize","family","$override","textFont","body","ex","createTextNode","offsetWidth","tmpRect","textRect","fromTextEl","normalizeTextStyle","rich","contentBlock","parseRichText","lines","tokens","textLine","j","align","textAlign","verticalAlign","textVerticalAlign","textPadding","textLineHeight","copy","textPosition","Array","res","calculateTextPosition","adjustTextX","adjustTextY","pathEl","textPathEl","skewEl","textVmlEl","_textVmlEl","firstChild","nextSibling","textpathok","on","from","to","coords","textVmlElStyle","matrix","toFixed","origin","string","textFill","textStroke","proto","_zrender","registerPainter","Painter","guid","zrUtil","Handler","Storage","Animation","HandlerProxy","useVML","painterCtors","canvas","instances","version","init","dom","opts","zr","ZRender","id","key","hasOwnProperty","getInstance","Ctor","delInstance","rendererType","renderer","vml","Error","painter","handerProxy","node","worker","handler","animation","stage","update","bind","flush","start","_needsRefresh","removeSelfFromZr","addSelfToZr","getId","addRoot","delRoot","configLayer","zLevel","config","setBackgroundColor","backgroundColor","refreshImmediately","_needsRefreshHover","triggerRendered","refreshHoverImmediately","trigger","addHover","elMirror","refreshHover","removeHover","clearHover","clearAnimation","pathToImage","dpr","setCursorStyle","cursorStyle","findHover","eventName","eventHandler","context","off","event"],"sourceRoot":""}