{"version":3,"file":"Scripts/main.js","mappings":";;;;;;;;;;;;;;AAAA;;AACA;;AAeA;;AACA;;;;;;;;;;;;AAEAA,aAAMC,QAAN,CACCC,iBADD,EAECC,iBAFD,EAGCC,oBAHD,EAICC,oBAJD,EAKCC,yBALD,EAMCC,aAND,EAOCC,kBAPD,EAQCC,kBARD,EASCC,qBATD,EAUCC,mBAVD,EAWCC,YAXD,EAYCC,cAZD,EAaCC,8BAbD;;AAeA,IAAMC,UAAU,GAAGC,gBAAgB,CAACC,QAAQ,CAACC,IAAV,CAAnC;AACAlB,aAAMmB,QAAN,CAAeC,IAAf,GAAsB;AACrBC,EAAAA,MAAM,EAAEN,UAAU,CAACO,UADE;AAErBC,EAAAA,IAAI,EAAEC,QAAQ,CAACT,UAAU,CAACU,QAAZ,CAFO;AAGrBC,EAAAA,MAAM,EAAEX,UAAU,CAACY;AAHE,CAAtB;IAOaC,yBADZ,0BAAU;AAAEC,EAAAA,SAAS,EAAE;AAAb,CAAV;AAUA,0BAAoBC,OAApB,EAAgD;AAAA;;AAAA;;AAAA,SAA5BA,OAA4B,GAA5BA,OAA4B;AAC/C,QAAMC,eAAoB,GACzB,KAAKD,OAAL,CAAaE,YAAb,CAA0B,mBAA1B,KAAkD,MAAlD,IACA,KAAKF,OAAL,CAAaE,YAAb,CAA0B,mBAA1B,KAAkD,MAFnD;AAGA,QAAMC,IAAS,GAAG,KAAKH,OAAL,CAAaE,YAAb,CAA0B,WAA1B,CAAlB;AACA,QAAME,SAAS,GACd,KAAKJ,OAAL,CAAaE,YAAb,CAA0B,iBAA1B,KAAgD,MADjD;AAEA,QAAMG,MAAM,GAAGC,IAAI,CAACC,KAAL,CAAW,KAAKP,OAAL,CAAaE,YAAb,CAA0B,aAA1B,CAAX,CAAf;AACA,QAAMM,QAAe,GAAGF,IAAI,CAACC,KAAL,CACvB,KAAKP,OAAL,CAAaE,YAAb,CAA0B,eAA1B,CADuB,CAAxB;AAIA,QAAIO,KAAK,GAAGC,SAAZ;;AACA,QAAIF,QAAQ,CAACG,MAAT,IAAmB,CAAvB,EAA0B;AACzBF,MAAAA,KAAK,GAAG;AACPG,QAAAA,OAAO,EAAE,IADF;AAEPC,QAAAA,IAAI,EAAEL,QAAQ,CAAC,CAAD,CAAR,CAAYM;AAFX,OAAR;AAIA;;AAED,QAAIC,MAAM,GAAGL,SAAb;;AACA,QAAIN,SAAS,IAAI,KAAjB,EAAwB;AACvBW,MAAAA,MAAM,GAAGP,QAAQ,CAACQ,MAAT,CAAgB,UAACC,GAAD,EAAMC,OAAN,EAAeC,CAAf,EAAqB;AAC7C,YAAMC,MAAM,GAAG,MAAMD,CAArB;AACAD,QAAAA,OAAO,CAACG,OAAR,GAAkBD,MAAlB;AACAH,QAAAA,GAAG,CAACG,MAAD,CAAH,GAAc;AACbjB,UAAAA,IAAI,EAAE,QADO;AAEbmB,UAAAA,QAAQ,EAAEH,CAAC,GAAG,CAAJ,IAAS,CAAT,GAAa,MAAb,GAAsB,OAFnB;AAGbI,UAAAA,IAAI,EAAE;AACLC,YAAAA,eAAe,EAAEL,CAAC,IAAI;AADjB;AAHO,SAAd;AAOA,eAAOF,GAAP;AACA,OAXQ,EAWN,EAXM,CAAT;AAYA;;AAEDT,IAAAA,QAAQ,CAACS,GAAT,CAAa,UAACC,OAAD,EAAUC,CAAV,EAAgB;AAC5B,UAAIhB,IAAI,IAAI,UAAZ,EAAwB;AACvBe,QAAAA,OAAO,CAACO,eAAR,GAA0B,KAAI,CAACC,SAAL,CACzB,oBAAM5B,cAAc,CAAC6B,MAAf,CAAsB,CAAtB,CAAN,CADyB,EAEzBtB,MAAM,CAACM,MAFkB,CAA1B;AAIA,OALD,MAKO;AACNO,QAAAA,OAAO,CAACO,eAAR,GAA0B,KAAI,CAACG,QAAL,CAAcT,CAAd,CAA1B;AACAD,QAAAA,OAAO,CAACW,WAAR,GAAsB,EAAtB;AACA;AACD,KAVD;AAYA,QAAMC,KAAK,GAAG,IAAI5D,YAAJ,CAAU,KAAK8B,OAAf,EAAwB;AACrCG,MAAAA,IAAI,EAAJA,IADqC;AAErC4B,MAAAA,IAAI,EAAE;AACL1B,QAAAA,MAAM,EAANA,MADK;AAELG,QAAAA,QAAQ,EAARA;AAFK,OAF+B;AAMrCwB,MAAAA,OAAO,EAAE;AACRjB,QAAAA,MAAM,EAANA,MADQ;AAERkB,QAAAA,OAAO,EAAE;AACRxB,UAAAA,KAAK,EAALA,KADQ;AAERyB,UAAAA,MAAM,EAAE;AACPZ,YAAAA,QAAQ,EAAE;AADH,WAFA;AAKRa,UAAAA,OAAO,EAAE;AACRC,YAAAA,OAAO,EAAE,CAACnC;AADF,WALD;AAQRoC,UAAAA,QAAQ,EAAE;AACTC,YAAAA,OAAO,EAAE;AADA;AARF;AAFD;AAN4B,KAAxB,CAAd;AAsBA;;;;WAED,kBAAiBC,KAAjB,EAAgC;AAC/B,aAAOzC,cAAc,CAAC6B,MAAf,CAAsBY,KAAK,GAAGzC,cAAc,CAAC6B,MAAf,CAAsBhB,MAApD,CAAP;AACA;;;WAED,mBAAkB6B,UAAlB,EAA8B/C,IAA9B,EAA4C;AAC3C,UAAMgD,WAAW,GAAGD,UAAU,CAACE,GAA/B;AACA,UAAMC,SAAS,GAAGH,UAAU,CAACI,OAAX,CAAmB,CAAnB,EAAsBF,GAAxC;AACA,UAAMG,MAAM,GAAG,EAAf;;AACA,WAAK,IAAIN,KAAK,GAAG,CAAjB,EAAoBA,KAAK,GAAG9C,IAA5B,EAAkC8C,KAAK,EAAvC,EAA2C;AAC1C,YAAIO,CAAC,GAAG,KAAKC,WAAL,CAAiBN,WAAW,CAACK,CAA7B,EAAgCH,SAAS,CAACG,CAA1C,EAA6CrD,IAA7C,EAAmD8C,KAAnD,CAAR;AACA,YAAIS,CAAC,GAAG,KAAKD,WAAL,CAAiBN,WAAW,CAACO,CAA7B,EAAgCL,SAAS,CAACK,CAA1C,EAA6CvD,IAA7C,EAAmD8C,KAAnD,CAAR;AACA,YAAIU,CAAC,GAAG,KAAKF,WAAL,CAAiBN,WAAW,CAACQ,CAA7B,EAAgCN,SAAS,CAACM,CAA1C,EAA6CxD,IAA7C,EAAmD8C,KAAnD,CAAR;AACAM,QAAAA,MAAM,CAACK,IAAP,eAAmBJ,CAAnB,eAAyBE,CAAzB,eAA+BC,CAA/B;AACA;;AACD,aAAOJ,MAAP;AACA;;;WAED,qBAAoBM,KAApB,EAA2BC,GAA3B,EAAgCC,KAAhC,EAAuCC,KAAvC,EAA8C;AAC7C,UAAIC,CAAC,GAAGJ,KAAR;AAAA,UACCK,CAAC,GAAGJ,GADL;AAAA,UAECK,KAAK,GAAGF,CAAC,GAAI,CAACC,CAAC,GAAGD,CAAL,IAAUF,KAAX,GAAoBC,KAFjC;AAGA,aAAOI,IAAI,CAACC,KAAL,CAAWF,KAAX,CAAP;AACA;;;;aAtGc9B,SAAS,CACvB,SADuB,EAEvB,MAFuB,EAGvB,SAHuB,EAIvB,SAJuB,EAKvB,SALuB;;;;;;;;;;;;;;;AC3CzB;;AACA;;;;;;;;;;IAGaiC,gCADZ,0BAAU;AAAE7D,EAAAA,SAAS,EAAE;AAAb,CAAV;AAKA,iCAAoB8D,OAApB,EAA0C;AAAA;;AAAA;;AAAA,SAAtBA,OAAsB,GAAtBA,OAAsB;AACzC,SAAK7D,OAAL,GAAe,KAAK6D,OAAL,CAAaC,QAAb,CAAsBC,IAAtB,CAA2B,CAA3B,CAAf;AACA,SAAKC,MAAL,GAAc,KAAKH,OAAL,CAAaI,aAA3B;;AAEA,QAAI,KAAKJ,OAAL,IAAgB,KAAK7D,OAArB,IAAgC,KAAKgE,MAAzC,EAAiD;AAChD,WAAKE,SAAL;AAEAC,MAAAA,MAAM,CAACC,gBAAP,CACC,QADD,EAEC,wBAAS;AAAA,eAAM,KAAI,CAACF,SAAL,EAAN;AAAA,OAAT,EAAiC,GAAjC,CAFD;AAIAC,MAAAA,MAAM,CAACC,gBAAP,CACC,mBADD,EAEC,wBAAS;AAAA,eAAM,KAAI,CAACF,SAAL,EAAN;AAAA,OAAT,EAAiC,GAAjC,CAFD;AAIA;AACD;;;;WAED,qBAAY;AACX,UAAMG,KAAK,GAAG,KAAKrE,OAAL,CAAasE,WAAb,GAA2B,KAAKtE,OAAL,CAAauE,YAAtD;AACA,UAAMC,WAAW,GAAG,KAAKR,MAAL,CAAYM,WAAZ,GAA0B,KAAKN,MAAL,CAAYO,YAA1D;AAEA,UAAIE,GAAG,GAAG,CAAV;AACA,UAAIC,MAAM,GAAG,CAAb;AACA,UAAIC,IAAI,GAAG,CAAX;AACA,UAAIC,KAAK,GAAG,CAAZ;;AAEA,UAAIJ,WAAW,GAAGH,KAAlB,EAAyB;AACxB,YAAMQ,MAAM,GAAG,KAAKb,MAAL,CAAYM,WAAZ,GAA0BD,KAAzC;AACAI,QAAAA,GAAG,GAAGC,MAAM,GAAG,CAAC,CAAD,IAAM,CAACG,MAAM,GAAG,KAAKb,MAAL,CAAYO,YAAtB,IAAsC,CAA5C,CAAf;AACA,OAHD,MAGO,IAAIC,WAAW,GAAGH,KAAlB,EAAyB;AAC/B,YAAMS,KAAK,GAAG,KAAKd,MAAL,CAAYO,YAAZ,GAA2BF,KAAzC;AACAM,QAAAA,IAAI,GAAGC,KAAK,GAAG,CAAC,CAAD,IAAM,CAACE,KAAK,GAAG,KAAKd,MAAL,CAAYM,WAArB,IAAoC,CAA1C,CAAf;AACA;;AAED,WAAKT,OAAL,CAAakB,KAAb,CAAmBN,GAAnB,GAAyBA,GAAG,GAAG,IAA/B;AACA,WAAKZ,OAAL,CAAakB,KAAb,CAAmBL,MAAnB,GAA4BA,MAAM,GAAG,IAArC;AACA,WAAKb,OAAL,CAAakB,KAAb,CAAmBJ,IAAnB,GAA0BA,IAAI,GAAG,IAAjC;AACA,WAAKd,OAAL,CAAakB,KAAb,CAAmBH,KAAnB,GAA2BA,KAAK,GAAG,IAAnC;AACA;;;;;;;;;;;;;;;;;;;AC/CF;;AACA;;AACA;;AACA;;;;;;;;;;IAGaI,gCADZ,0BAAU;AAAEjF,EAAAA,SAAS,EAAE;AAAb,CAAV;AAIA,iCAAoBC,OAApB,EAA0C;AAAA;;AAAA;;AAAA,SAAtBA,OAAsB,GAAtBA,OAAsB;AACzC,SAAKiF,SAAL,GAAiB,KAAKjF,OAAL,CAAaE,YAAb,CAA0B,iBAA1B,CAAjB;;AACA,QAAI,CAAC,KAAK+E,SAAV,EAAqB;AACpB,WAAKA,SAAL,GAAiB,iBAAjB;AACA;;AAED,QAAI,oBAAU,KAAKA,SAAf,MAA8B,MAAlC,EAA0C;AACzCC,MAAAA,KAAK,CAACC,IAAN,CAAW,KAAKnF,OAAL,CAAaoF,gBAAb,CAA8B,4BAA9B,CAAX,EACEC,OADF,CACU,UAACC,GAAD;AAAA,eAASA,GAAG,CAAClB,gBAAJ,CAAqB,OAArB,EAA8B,UAACZ,CAAD,EAAO;AACtDA,UAAAA,CAAC,CAAC+B,cAAF;;AACA,eAAI,CAACC,MAAL;AACA,SAHiB,CAAT;AAAA,OADV;AAKA,KAND,MAMO;AACN,WAAKC,IAAL;AACA;AACD;;;;WAED,kBAAiB;AAChB,0BAAU,KAAKR,SAAf,EAA0B,MAA1B,EAAkCS,QAAlC,EAA4C,GAA5C;AACA,WAAKD,IAAL;AACA;;;WAED,gBAAe;AACd,oCAAY,KAAKzF,OAAjB,EAA0B,SAA1B;AACA;;;;;;;;;;;;;;;;;;;ACjCF;;AACA;;AACA;;AACA;;;;;;;;;;IAGa2F,gCADZ,0BAAU;AAAE5F,EAAAA,SAAS,EAAE;AAAb,CAAV;AAKA,iCAAoBC,OAApB,EAA0C;AAAA;;AAAA;;AAAA,SAAtBA,OAAsB,GAAtBA,OAAsB;AACzC,SAAK4F,QAAL,GAAgBzG,QAAQ,CAAC0G,aAAT,CAAuB,KAAvB,CAAhB;AACA,4BAAS,KAAKD,QAAd,EAAwB,iBAAxB;AAEA,SAAKE,KAAL,GAAa3G,QAAQ,CAAC0G,aAAT,CAAuB,KAAvB,CAAb;AACA,SAAKD,QAAL,CAAcG,WAAd,CAA0B,KAAKD,KAA/B;AACA,SAAK9F,OAAL,CAAaiE,aAAb,CAA2B+B,YAA3B,CAAwC,KAAKJ,QAA7C,EAAuD,KAAK5F,OAA5D;AAEA,SAAKiG,MAAL;AACA,SAAKL,QAAL,CAAcxB,gBAAd,CACC,QADD,EAEC,wBAAS;AAAA,aAAM,KAAI,CAAC6B,MAAL,EAAN;AAAA,KAAT,EAA8B,EAA9B,CAFD;AAKA,SAAKL,QAAL,CAAcxB,gBAAd,CAA+B,QAA/B,EAAyC,UAAAZ,CAAC,EAAI;AAC7C,WAAI,CAACxD,OAAL,CAAakG,UAAb,GAA0B,KAAI,CAACN,QAAL,CAAcM,UAAxC;AACA,KAFD;AAGA,SAAKlG,OAAL,CAAaoE,gBAAb,CAA8B,QAA9B,EAAwC,UAAAZ,CAAC,EAAI;AAC5C,WAAI,CAACoC,QAAL,CAAcM,UAAd,GAA2B,KAAI,CAAClG,OAAL,CAAakG,UAAxC;AACA,KAFD;AAGA;;;;WAED,kBAAiB;AAChB,WAAKJ,KAAL,CAAWf,KAAX,CAAiBD,KAAjB,GACC,KAAK9E,OAAL,CAAamG,iBAAb,CAA+B7B,WAA/B,GAA6C,IAD9C;AAEA,oCACC,KAAKsB,QADN,EAEC,YAFD,EAGC,KAAK5F,OAAL,CAAaoG,WAAb,GAA2B,KAAKpG,OAAL,CAAasE,WAHzC;AAKA;;;;;;;;;;;;;;;;;;;ACxCF;;AACA;;;;;;;;;;;;IAGa+B,2BADZ,0BAAU;AAAEtG,EAAAA,SAAS,EAAE;AAAb,CAAV,2CAEA,0BAAoBC,OAApB,EAA0C;AAAA;;AAAA,OAAtBA,OAAsB,GAAtBA,OAAsB;AACzC,sBAAM,KAAKA,OAAX;AACA;;;;;;;;;;;;;;;;;ACPF;;AAEA;;;;;;;;;;;;;;AAGAsG,gBAAOC,GAAP,CAAW,CAACC,gBAAD,EAAWC,kBAAX,EAAuBC,sBAAvB,EAAuCC,gBAAvC,CAAX;;IAGaC,iCADZ,0BAAU;AAAE7G,EAAAA,SAAS,EAAE;AAAb,CAAV,2CAIA,gCAAoBC,OAApB,EAA0C;AAAA;;AAAA,OAAtBA,OAAsB,GAAtBA,OAAsB;AACnC,MAAM6G,QAAQ,GAAG,KAAK7G,OAAL,CAAakB,OAAb,CAAqB2F,QAAtC;AACN,OAAKC,MAAL,GAAc,IAAIR,eAAJ,CAAW,KAAKtG,OAAhB,EAAyB;AAC7B+G,IAAAA,QAAQ,EAAE;AACNC,MAAAA,KAAK,EAAEtH,QAAQ,CAACmH,QAAD;AADT,KADmB;AAI7BI,IAAAA,IAAI,EAAE,IAJuB;AAKtCC,IAAAA,KAAK,EAAE;AAL+B,GAAzB,CAAd;AAOA;;;;;;;;;;;;;;;ACpBF;;AACA;;AACA;;AACA;;;;;;;;;;IAGaC,0BADZ,0BAAU;AAAEpH,EAAAA,SAAS,EAAE;AAAb,CAAV,2CAKA,yBAAoBC,OAApB,EAA0C;AAAA;;AAAA,OAAtBA,OAAsB,GAAtBA,OAAsB;AACzC,OAAKoH,MAAL,GAAc,KAAKpH,OAAL,CAAaqH,aAAb,CAA2B,mBAA3B,CAAd;AACA,OAAKC,QAAL,GAAgB,KAAKtH,OAAL,CAAaqH,aAAb,CAA2B,qBAA3B,CAAhB;AAEA,OAAKD,MAAL,CAAYhD,gBAAZ,CAA6B,OAA7B,EAAsC,UAAAZ,CAAC,EAAI;AAC1CA,IAAAA,CAAC,CAAC+B,cAAF;;AACA,QAAIgC,sBAAeC,KAAf,EAAJ,EAA4B;AAC3B;AACA;;AACD,kCAAYrI,QAAQ,CAACC,IAArB,EAA2B,gBAA3B;AACA,GAND;AAQA,OAAKkI,QAAL,CAAclD,gBAAd,CAA+B,OAA/B,EAAwC,UAAAZ,CAAC,EAAI;AAC5CA,IAAAA,CAAC,CAAC+B,cAAF;AACA,kCAAYpG,QAAQ,CAACC,IAArB,EAA2B,gBAA3B;AACA,GAHD;AAIA;;;;;;;;;;;;;;;AC1BF;;;;;;;;IAQaqI;AAUZ,wBAAoBzH,OAApB,EAA0CgC,OAA1C,EAAyE;AAAA;;AAAA;;AAAA,SAArDhC,OAAqD,GAArDA,OAAqD;AACxE,SAAKgC,OAAL,GAAe,yBAAayF,YAAb,EAA2BzF,OAA3B,EAAoChC,OAApC,CAAf;AAEA,SAAK0H,MAAL,GAAc1H,OAAO,CAACqH,aAAR,YACT,KAAKrF,OAAL,CAAa2F,oBADJ,EAAd;AAIA,SAAKC,MAAL,GAAc5H,OAAO,CAACqH,aAAR,CAAsB,QAAtB,CAAd;;AAEA,QAAI,KAAKK,MAAT,EAAiB;AAChB,WAAKA,MAAL,CAAYtD,gBAAZ,CAA6B,OAA7B,EAAsC;AAAA,eAAM,KAAI,CAACyD,IAAL,EAAN;AAAA,OAAtC,EAAyD;AACxDC,QAAAA,IAAI,EAAE;AADkD,OAAzD;AAGA;AACD;;;;WAED,gBAAO;AAAA;;AACN,UAAI,KAAKF,MAAT,EAAiB;AACP,YAAI,KAAKA,MAAL,CAAYG,GAAZ,CAAgBC,OAAhB,CAAwB,UAAxB,MAAwC,CAAC,CAA7C,EAAgD;AAC5C,eAAKJ,MAAL,CAAYG,GAAZ,IACI,KAAKH,MAAL,CAAYG,GAAZ,CAAgBC,OAAhB,CAAwB,GAAxB,MAAiC,CAAC,CAAlC,GACM,aADN,GAEM,aAHV;AAIH,SALD,MAKO;AACH,eAAKJ,MAAL,CAAYG,GAAZ,GAAkB,KAAKH,MAAL,CAAYG,GAAZ,CAAgBE,OAAhB,CACd,YADc,EAEd,YAFc,CAAlB;AAIH;;AACDC,QAAAA,UAAU,CAAC,YAAK;AACZ,gBAAI,CAAClI,OAAL,CAAamI,SAAb,CAAuBC,GAAvB,CAA2B,MAAI,CAACpG,OAAL,CAAaqG,gBAAxC;AACH,SAFS,EAEP,IAFO,CAAV;AAGT;AACD;;;WAED,mBAAU;AAAA;;AACT,2BAAKT,MAAL,8DAAaU,YAAb,CAA0B,KAA1B,EAAiC,EAAjC;AACA;;;;;;;AA/CWb,aAKLzF,UAA+B;AACrC2F,EAAAA,oBAAoB,EAAE,iBADe;AAErCU,EAAAA,gBAAgB,EAAE;AAFmB;;;;;;;;;;;;;;ACbvC;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;IAIaE,4BADZ,0BAAU;AAAExI,EAAAA,SAAS,EAAE;AAAb,CAAV;AAOA,6BAAoBC,OAApB,EAA0C;AAAA;;AAAA;;AAAA,SAAtBA,OAAsB,GAAtBA,OAAsB;;AACzCwI,uCAAiBC,YAAjB,CAA8BC,SAA9B,CAAwC;AAAA,aAAM,KAAI,CAACC,IAAL,CAAU,IAAV,CAAN;AAAA,KAAxC;;AACA,SAAKA,IAAL;;AAEA,QAAI,CAAC,KAAKC,KAAV,EAAiB;AAChB,WAAKA,KAAL,GAAaC,WAAW,CAAC,YAAM;AAC9B,YAAI,KAAI,CAACC,MAAL,IAAe,KAAI,CAACA,MAAL,CAAYnI,MAAZ,GAAqB,CAAxC,EAA2C;AAC1C,eAAI,CAACmI,MAAL,CAAYzD,OAAZ,CAAoB,gBAAwB;AAAA,gBAArB0D,KAAqB,QAArBA,KAAqB;AAAA,gBAAdC,OAAc,QAAdA,OAAc;;AAC3C,gBAAID,KAAK,CAACE,KAAN,MAAiB,QAArB,EAA+B;AAC9B,mBAAI,CAACC,cAAL,CAAoBF,OAApB;AACA;AACD,WAJD;AAKA;AACD,OARuB,EAQrB,IARqB,CAAxB;AASA;AACD;;;;WAED,cAAaG,OAAb,EAAgC;AAAA;;AAC/B,UAAI,KAAKL,MAAL,IAAe,KAAKA,MAAL,CAAYnI,MAAZ,GAAqB,CAAxC,EAA2C;AAC1C,aAAKmI,MAAL,CAAYzD,OAAZ,CAAoB,iBAAe;AAAA,cAAZ0D,KAAY,SAAZA,KAAY;AAClC;AACAA,UAAAA,KAAK,CAACK,OAAN,CAAc,KAAd;AACA,SAHD;AAIA;;AAED,WAAKN,MAAL,GAAc,EAAd;AACA,WAAKO,QAAL,GAAgBnE,KAAK,CAACC,IAAN,CACfhG,QAAQ,CAACiG,gBAAT,CAA0B,qBAA1B,CADe,CAAhB;AAIA,WAAKiE,QAAL,CAAchE,OAAd,CAAsB,UAAA2D,OAAO,EAAI;AAChC,YAAMD,KAAK,GAAG,IAAIO,WAAW,CAACC,KAAhB,CAAsB;AACnCC,UAAAA,cAAc,EAAER,OADmB;AAEnCS,UAAAA,WAAW,EAAE,SAFsB;AAGnCC,UAAAA,MAAM,EAAG,YAAM;AACd,gBAAMC,IAAI,GAAG,MAAI,CAAC3J,OAAL,CAAa4J,qBAAb,EAAb;;AACA,mBAAO,CAACD,IAAI,CAAClF,GAAL,GAAWkF,IAAI,CAAC9E,MAAL,GAAc,CAA1B,IAA+B,CAAC,CAAvC;AACA,WAHO,EAH2B;AAOnCgC,UAAAA,QAAQ,EAAE,oBAAM;AACf,mBAAOmC,OAAO,CAACzE,YAAf;AACA;AATkC,SAAtB,EAWZsF,EAXY,CAWT,aAXS,EAWM,YAAM;AACxB,cAAId,KAAK,CAACE,KAAN,MAAiB,QAArB,EAA+B;AAC9B,kBAAI,CAACC,cAAL,CAAoBF,OAApB;AACA;AACD,SAfY,EAgBb;AAhBa,SAiBZc,KAjBY,CAiBNd,OAAO,CAACe,OAAR,CAAgB,WAAhB,IAA+BC,gCAA/B,GAA4DC,2BAjBtD,CAAd;;AAkBA,YAAId,OAAJ,EAAa;AACZJ,UAAAA,KAAK,CAACI,OAAN;AACA;;AACD,cAAI,CAACL,MAAL,CAAY5F,IAAZ,CAAiB;AAAE6F,UAAAA,KAAK,EAALA,KAAF;AAASC,UAAAA,OAAO,EAAPA;AAAT,SAAjB;AACA,OAvBD;AAwBA;;;WAED,wBAAuBA,OAAvB,EAAgC;AAC/B,UAAMkB,WAAW,GAAG,wBAAS/K,QAAQ,CAACC,IAAlB,EAAwB,eAAxB,CAApB;AACA,UAAM+K,aAAa,GAAG,wBAAShL,QAAQ,CAACC,IAAlB,EAAwB,iBAAxB,CAAtB;;AACA,UACC4J,OAAO,CAACoB,YAAR,IAAwB,CAAxB,IACCF,WAAW,IAAI,CAAClB,OAAO,CAACe,OAAR,CAAgB,WAAhB,CADjB,IAECG,WAAW,IAAI,KAAf,IAAwBlB,OAAO,CAACe,OAAR,CAAgB,WAAhB,CAFzB,IAGCI,aAAa,IAAID,WAAW,IAAI,KAAhC,IAAyC,CAAClB,OAAO,CAACe,OAAR,CAAgB,oBAAhB,CAJ5C,EAKE;AACD;AACA;;AACD,oCACC,KAAK/J,OADN,EAEC,aAFD,EAGCgJ,OAAO,CAAC9I,YAAR,CAAqB,aAArB,EAAoCmK,WAApC,MAAqD,MAHtD;AAKA;;;;;;;;;;;;;;;;;;;ACtFF;;AACA;;AACA;;;;;;;;;;IAGaC,mCADZ,0BAAU;AAAEvK,EAAAA,SAAS,EAAE;AAAb,CAAV,2CAEA,kCAAoBC,OAApB,EAA0C;AAAA;;AAAA;;AAAA,OAAtBA,OAAsB,GAAtBA,OAAsB;AACzC,MAAMuK,QAAQ,GAAG,IAAIC,oBAAJ,CAAyB,UAAUC,OAAV,EAAmBF,QAAnB,EAA6B;AACtEE,IAAAA,OAAO,CAACpF,OAAR,CAAgB,UAAUqF,KAAV,EAAiB;AAChC,UAAIA,KAAK,CAACC,cAAV,EAA0B;AACzBC,QAAAA,MAAM,CAAC/C,IAAP;AACA,OAFD,MAEO;AACN+C,QAAAA,MAAM,CAACC,IAAP;AACA;AACD,KAND,EAMG,EANH;AAOA,GARgB,CAAjB;AAUA,MAAMhE,QAAQ,GAAGnH,QAAQ,CACxBM,OAAO,CAACE,YAAR,CAAqB,eAArB,KAAyC,MADjB,CAAzB;AAGA,MAAI0K,MAAM,GAAG,IAAIE,MAAJ,CAAW9K,OAAX,EAAoB;AAChC+K,IAAAA,gBAAgB,EAAElE,QADc;AAEhCmE,IAAAA,QAAQ,EAAE;AACTC,MAAAA,SAAS,EAAE;AAAEC,QAAAA,KAAK,EAAE,GAAT;AAAc/K,QAAAA,IAAI,EAAE,GAApB;AAAyBgL,QAAAA,GAAG,EAAE,CAA9B;AAAiCC,QAAAA,GAAG,EAAE;AAAtC;AADF,KAFsB;AAKhCC,IAAAA,QAAQ;AALwB,GAApB,CAAb;AAgCAT,EAAAA,MAAM,CAACjC,IAAP,GAAc2C,IAAd,CAAmB,YAAM;AACxBf,IAAAA,QAAQ,CAACgB,OAAT,CAAiB,KAAI,CAACvL,OAAtB;AACA,GAFD;;AAGAwI,qCAAiBC,YAAjB,CAA8BC,SAA9B,CAAwC;AAAA,WAAMkC,MAAM,CAACC,IAAP,EAAN;AAAA,GAAxC;AACA;;;IAMIC;AAUL;AAgBA,kBAAoBU,SAApB,EAA4CC,IAA5C,EAAuD;AAAA;;AAAA,SAAnCD,SAAmC,GAAnCA,SAAmC;AACtD,SAAKzC,KAAL,GAAa,IAAI2C,KAAK,CAACnC,KAAV,EAAb;AACA,SAAKoC,MAAL;AACA,SAAKZ,gBAAL,GAAwBU,IAAI,CAACV,gBAA7B;AACA,SAAKM,QAAL,GAAgBI,IAAI,CAACJ,QAArB;AACA,SAAKL,QAAL,GAAgBS,IAAI,CAACT,QAArB;AACA,SAAKY,QAAL,GAAgB,IAAIF,KAAK,CAACG,aAAV,EAAhB;AACA,SAAK/G,KAAL,GAAa,KAAK0G,SAAL,CAAeM,WAA5B;AACA,SAAKjH,MAAL,GAAc,KAAK2G,SAAL,CAAepB,YAA7B;AACA,SAAKwB,QAAL,CAAcG,aAAd,CAA4B5H,MAAM,CAAC6H,gBAAnC;AACA,SAAKJ,QAAL,CAAcK,OAAd,CAAsB,KAAKnH,KAA3B,EAAkC,KAAKD,MAAvC;AACA,SAAK+G,QAAL,CAAcM,aAAd,CAA4B,QAA5B,EAAsC,CAAtC;AACA,SAAKrF,QAAL,GAAgB4E,IAAI,CAAC5E,QAAL,IAAiB,CAAjC;AACA,SAAKsF,MAAL,GAAcV,IAAI,CAACU,MAAL,IAAe,WAA7B;AAEA,SAAKC,MAAL,GAAc9L,IAAI,CAACC,KAAL,CAAW,KAAKiL,SAAL,CAAetL,YAAf,CAA4B,aAA5B,CAAX,CAAd;AACA,SAAKsL,SAAL,CAAezF,WAAf,CAA2B,KAAK6F,QAAL,CAAcS,UAAzC;AAEA,SAAKC,MAAL,GAAc,IAAIZ,KAAK,CAACa,iBAAV,CACb,EADa,EAEbpI,MAAM,CAACqI,UAAP,GAAoBrI,MAAM,CAACsI,WAFd,EAGb,KAHa,EAIb,IAJa,CAAd;AAOA,SAAKH,MAAL,CAAYhL,QAAZ,CAAqBoL,GAArB,CAAyB,CAAzB,EAA4B,CAA5B,EAA+B,CAA/B;AACA,SAAKC,IAAL,GAAY,CAAZ;AACA,SAAKC,OAAL,GAAe,CAAf;AACA,SAAKC,QAAL,GAAgB,EAAhB;AAEA,SAAKC,MAAL,GAAc,IAAd;AACA;;;;WAED,gBAAO;AAAA;;AACN,aAAO,IAAIC,OAAJ,CAAkB,UAAAC,OAAO,EAAI;AACnC,cAAI,CAACC,QAAL,CAAc,YAAM;AACnB,gBAAI,CAACC,WAAL;;AACA,gBAAI,CAACC,WAAL;;AACA,gBAAI,CAACC,UAAL;;AACA,gBAAI,CAACnH,MAAL;;AACA,gBAAI,CAACoH,UAAL;;AACA,gBAAI,CAACxF,IAAL;;AACAmF,UAAAA,OAAO;AACP,SARD;AASA,OAVM,CAAP;AAWA;;;WAED,kBAAiBM,EAAjB,EAAqB;AAAA;;AACpB,UAAMC,QAAQ,GAAG,EAAjB;AACA,WAAKnB,MAAL,CAAY/G,OAAZ,CAAoB,UAACmI,GAAD,EAAMrM,CAAN,EAAY;AAC/B,YAAIsM,OAAO,GAAG,IAAIV,OAAJ,CAAY,UAAAC,OAAO,EAAI;AACpC,gBAAI,CAACH,QAAL,CAAc1L,CAAd,IAAmB,IAAIuK,KAAK,CAACgC,aAAV,GAA0BC,IAA1B,CAA+BH,GAA/B,EAAoCR,OAApC,CAAnB;AACA,SAFa,CAAd;AAGAO,QAAAA,QAAQ,CAACrK,IAAT,CAAcuK,OAAd;AACA,OALD;AAOAV,MAAAA,OAAO,CAACa,GAAR,CAAYL,QAAZ,EAAsBjC,IAAtB,CAA2B,YAAM;AAChCgC,QAAAA,EAAE;AACF,OAFD;AAGA;;;WAED,sBAAa;AAAA;;AACZ,WAAK9B,SAAL,CAAepH,gBAAf,CAAgC,OAAhC,EAAyC,YAAM;AAC9C,cAAI,CAACyJ,IAAL;AACA,OAFD;AAGA;;;WACD,uBAAc;AAAA;;AACb,WAAKC,QAAL,GAAgB;AAAEC,QAAAA,QAAQ,EAAE;AAAZ,OAAhB;AACAC,MAAAA,MAAM,CAACC,IAAP,CAAY,KAAKjD,QAAjB,EAA2B3F,OAA3B,CAAmC,UAAAtB,IAAI,EAAI;AAC1C,cAAI,CAAC+J,QAAL,CAAc/J,IAAd,IAAsB,MAAI,CAACiH,QAAL,CAAcjH,IAAd,EAAoBmH,KAA1C;AACA,OAFD;AAGA;;;WAED,uBAAc;AAAA;;AACb,UAAIgD,cAAJ,CAAmB,wBAAS;AAAA,eAAM,MAAI,CAACjI,MAAL,EAAN;AAAA,OAAT,EAA8B,EAA9B,CAAnB,EAAsDsF,OAAtD,CACC,KAAKC,SADN;AAGA;;;WAED,kBAAS;AACR,WAAK1G,KAAL,GAAa,KAAK0G,SAAL,CAAeM,WAA5B;AACA,WAAKjH,MAAL,GAAc,KAAK2G,SAAL,CAAepB,YAA7B;AACA,WAAKwB,QAAL,CAAcK,OAAd,CAAsB,KAAKnH,KAA3B,EAAkC,KAAKD,MAAvC;AACA,WAAKyH,MAAL,CAAY6B,MAAZ,GAAqB,KAAKrJ,KAAL,GAAa,KAAKD,MAAvC,CAJQ,CAMR;;AACA,WAAKuJ,WAAL,GACC,KAAKvB,QAAL,CAAc,CAAd,EAAiBwB,KAAjB,CAAuBxJ,MAAvB,GAAgC,KAAKgI,QAAL,CAAc,CAAd,EAAiBwB,KAAjB,CAAuBvJ,KADxD;AAEA,UAAIwJ,EAAJ;AACA,UAAIC,EAAJ;;AACA,UAAI,KAAK1J,MAAL,GAAc,KAAKC,KAAnB,GAA2B,KAAKsJ,WAApC,EAAiD;AAChDE,QAAAA,EAAE,GAAI,KAAKxJ,KAAL,GAAa,KAAKD,MAAnB,GAA6B,KAAKuJ,WAAvC;AACAG,QAAAA,EAAE,GAAG,CAAL;AACA,OAHD,MAGO;AACND,QAAAA,EAAE,GAAG,CAAL;AACAC,QAAAA,EAAE,GAAG,KAAK1J,MAAL,GAAc,KAAKC,KAAnB,GAA2B,KAAKsJ,WAArC;AACA;;AAED,WAAKI,QAAL,CAAcxD,QAAd,CAAuByD,UAAvB,CAAkCvD,KAAlC,CAAwCwD,CAAxC,GAA4C,KAAK5J,KAAjD;AACA,WAAK0J,QAAL,CAAcxD,QAAd,CAAuByD,UAAvB,CAAkCvD,KAAlC,CAAwCyD,CAAxC,GAA4C,KAAK9J,MAAjD;AACA,WAAK2J,QAAL,CAAcxD,QAAd,CAAuByD,UAAvB,CAAkCvD,KAAlC,CAAwC0D,CAAxC,GAA4CN,EAA5C;AACA,WAAKE,QAAL,CAAcxD,QAAd,CAAuByD,UAAvB,CAAkCvD,KAAlC,CAAwC2D,CAAxC,GAA4CN,EAA5C;AAEA,UAAMO,IAAI,GAAG,KAAKxC,MAAL,CAAYhL,QAAZ,CAAqBsN,CAAlC;AACA,UAAM/J,MAAM,GAAG,CAAf;AACA,WAAKyH,MAAL,CAAYyC,GAAZ,GAAkB,KAAK,MAAMrL,IAAI,CAACsL,EAAhB,IAAsBtL,IAAI,CAACuL,IAAL,CAAUpK,MAAM,IAAI,IAAIiK,IAAR,CAAhB,CAAxC;AAEA,WAAKI,KAAL,CAAWC,KAAX,CAAiBT,CAAjB,GAAqB,KAAKpC,MAAL,CAAY6B,MAAjC;AACA,WAAKe,KAAL,CAAWC,KAAX,CAAiBR,CAAjB,GAAqB,CAArB;AAEA,WAAKrC,MAAL,CAAY8C,sBAAZ;AACA;;;WAED,sBAAa;AACZ,WAAKZ,QAAL,GAAgB,IAAI9C,KAAK,CAAC2D,cAAV,CAAyB;AACxCC,QAAAA,UAAU,EAAE;AACXC,UAAAA,WAAW,EAAE;AADF,SAD4B;AAIxCC,QAAAA,IAAI,EAAE9D,KAAK,CAAC+D,UAJ4B;AAKxCzE,QAAAA,QAAQ,EAAE;AACT2B,UAAAA,IAAI,EAAE;AAAExM,YAAAA,IAAI,EAAE,GAAR;AAAa+K,YAAAA,KAAK,EAAE;AAApB,WADG;AAET6C,UAAAA,QAAQ,EAAE;AAAE5N,YAAAA,IAAI,EAAE,GAAR;AAAa+K,YAAAA,KAAK,EAAE;AAApB,WAFD;AAGTwE,UAAAA,MAAM,EAAE;AAAEvP,YAAAA,IAAI,EAAE,GAAR;AAAa+K,YAAAA,KAAK,EAAE;AAApB,WAHC;AAITD,UAAAA,SAAS,EAAE;AAAE9K,YAAAA,IAAI,EAAE,GAAR;AAAa+K,YAAAA,KAAK,EAAE;AAApB,WAJF;AAKTyE,UAAAA,MAAM,EAAE;AAAExP,YAAAA,IAAI,EAAE,GAAR;AAAa+K,YAAAA,KAAK,EAAE;AAApB,WALC;AAMT0E,UAAAA,MAAM,EAAE;AAAEzP,YAAAA,IAAI,EAAE,GAAR;AAAa+K,YAAAA,KAAK,EAAE;AAApB,WANC;AAOT2E,UAAAA,UAAU,EAAE;AAAE1P,YAAAA,IAAI,EAAE,GAAR;AAAa+K,YAAAA,KAAK,EAAE;AAApB,WAPH;AAQT4E,UAAAA,KAAK,EAAE;AAAE3P,YAAAA,IAAI,EAAE,GAAR;AAAa+K,YAAAA,KAAK,EAAE;AAApB,WARE;AASTpG,UAAAA,KAAK,EAAE;AAAE3E,YAAAA,IAAI,EAAE,GAAR;AAAa+K,YAAAA,KAAK,EAAE;AAApB,WATE;AAUT6E,UAAAA,MAAM,EAAE;AAAE5P,YAAAA,IAAI,EAAE,GAAR;AAAa+K,YAAAA,KAAK,EAAE;AAApB,WAVC;AAWT8E,UAAAA,QAAQ,EAAE;AAAE7P,YAAAA,IAAI,EAAE,GAAR;AAAa+K,YAAAA,KAAK,EAAE,KAAK2B,QAAL,CAAc,CAAd;AAApB,WAXD;AAYToD,UAAAA,QAAQ,EAAE;AAAE9P,YAAAA,IAAI,EAAE,GAAR;AAAa+K,YAAAA,KAAK,EAAE,KAAK2B,QAAL,CAAc,CAAd;AAApB,WAZD;AAaTqD,UAAAA,YAAY,EAAE;AACb/P,YAAAA,IAAI,EAAE,GADO,CAEb;;AAFa,WAbL;AAiBTsO,UAAAA,UAAU,EAAE;AAAEtO,YAAAA,IAAI,EAAE,IAAR;AAAc+K,YAAAA,KAAK,EAAE,IAAIQ,KAAK,CAACyE,OAAV;AAArB;AAjBH,SAL8B;AAwBxC;AACAC,QAAAA,YAAY,EAAE,KAAKzE,MAzBqB;AA0BxC0E,QAAAA,cAAc,EAAE,KAAKhF;AA1BmB,OAAzB,CAAhB;AA6BA,WAAKiF,QAAL,GAAgB,IAAI5E,KAAK,CAAC6E,aAAV,CAAwB,CAAxB,EAA2B,CAA3B,EAA8B,CAA9B,EAAiC,CAAjC,CAAhB;AAEA,WAAKrB,KAAL,GAAa,IAAIxD,KAAK,CAAC8E,IAAV,CAAe,KAAKF,QAApB,EAA8B,KAAK9B,QAAnC,CAAb;AACA,WAAKzF,KAAL,CAAWX,GAAX,CAAe,KAAK8G,KAApB;AACA;;;WAED,gBAAO;AACN,WAAKpC,MAAL,GAAc,IAAd;AACA2D,MAAAA,aAAa,CAAC,KAAKC,QAAN,CAAb;AACA,WAAK9E,QAAL,CAAc+E,IAAd,CAAmBC,KAAnB;AACA,WAAKhF,QAAL,CAAciF,OAAd;AACA;;;WAED,gBAAO;AAAA;;AACN,WAAK/D,MAAL,GAAc,KAAd;AACA,WAAKgE,MAAL;AACAL,MAAAA,aAAa,CAAC,KAAKC,QAAN,CAAb;AACA,WAAKA,QAAL,GAAgB7H,WAAW,CAAC,YAAM;AACjC,cAAI,CAACgF,IAAL;AACA,OAF0B,EAExB,KAAK9C,gBAFmB,CAA3B;AAGA;;;WAED,gBAAO;AAAA;;AACN,UAAI,KAAKgG,SAAT,EAAoB;AACpB,WAAKA,SAAL,GAAiB,IAAjB;AACAN,MAAAA,aAAa,CAAC,KAAKC,QAAN,CAAb;AACA,WAAKA,QAAL,GAAgB7H,WAAW,CAAC,YAAM;AACjC,cAAI,CAACgF,IAAL;AACA,OAF0B,EAExB,KAAK9C,gBAFmB,CAA3B;AAGA,UAAIiG,GAAG,GAAG,KAAKnE,QAAL,CAAclM,MAAxB;AACA,UAAIsQ,WAAW,GAAG,KAAKpE,QAAL,CAAc,CAAC,KAAKD,OAAL,GAAe,CAAhB,IAAqBoE,GAAnC,CAAlB;AACA,WAAKxC,QAAL,CAAcxD,QAAd,CAAuBiF,QAAvB,CAAgC/E,KAAhC,GAAwC+F,WAAxC;AACA,UAAIC,EAAE,GAAG,IAAIC,WAAJ,EAAT;AACAD,MAAAA,EAAE,CAACE,EAAH,CAAM,KAAK5C,QAAL,CAAcxD,QAAd,CAAuB+C,QAA7B,EAAuC,KAAKlH,QAA5C,EAAsD;AACrDqE,QAAAA,KAAK,EAAE,CAD8C;AAErDmG,QAAAA,IAAI,EAAEC,MAAM,CAAC,KAAKnF,MAAN,CAFyC;AAGrDoF,QAAAA,UAAU,EAAE,sBAAM;AACjB,gBAAI,CAAC3E,OAAL,GAAe,CAAC,MAAI,CAACA,OAAL,GAAe,CAAhB,IAAqBoE,GAApC;AACA,gBAAI,CAACxC,QAAL,CAAcxD,QAAd,CAAuBgF,QAAvB,CAAgC9E,KAAhC,GAAwC+F,WAAxC;AACA,gBAAI,CAACzC,QAAL,CAAcxD,QAAd,CAAuB+C,QAAvB,CAAgC7C,KAAhC,GAAwC,CAAxC;AACA,gBAAI,CAAC6F,SAAL,GAAiB,KAAjB;AACA;AARoD,OAAtD;AAUA;;;WACD,kBAAS;AAAA;;AACR,UAAI,KAAKjE,MAAT,EAAiB;AACjB,WAAKH,IAAL,IAAa,IAAb;AACA,WAAK6B,QAAL,CAAcxD,QAAd,CAAuB2B,IAAvB,CAA4BzB,KAA5B,GAAoC,KAAKyB,IAAzC,CAHQ,CAIR;;AAEAqB,MAAAA,MAAM,CAACC,IAAP,CAAY,KAAKjD,QAAjB,EAA2B3F,OAA3B,CAAmC,UAAAtB,IAAI,EAAI;AAC1C,cAAI,CAACyK,QAAL,CAAcxD,QAAd,CAAuBjH,IAAvB,EAA6BmH,KAA7B,GAAqC,MAAI,CAAC4C,QAAL,CAAc/J,IAAd,CAArC;AACA,OAFD,EANQ,CAUR;AACA;AACA;;AAEAyN,MAAAA,qBAAqB,CAAC,KAAKV,MAAL,CAAYW,IAAZ,CAAiB,IAAjB,CAAD,CAArB;AACA,WAAK7F,QAAL,CAAckF,MAAd,CAAqB,KAAK/H,KAA1B,EAAiC,KAAKuD,MAAtC;AACA;;;;;;;;;;;;;;;;;;;;;;;;ACnSK,SAASoF,YAAT,CACNC,SADM,EAEN3P,OAFM,EAGNhC,OAHM,EAIF;AACJ,uDACI2R,SAAS,CAAC3P,OADd,GAEIA,OAFJ,GAGKhC,OAAO,SAAP,IAAAA,OAAO,WAAP,IAAAA,OAAO,CAAEkB,OAAT,GACD8M,MAAM,CAACC,IAAP,CAAYjO,OAAO,CAACkB,OAApB,EAA6BF,MAA7B,CAAoC,UAAC4Q,GAAD,EAAMC,GAAN,EAAc;AAClD,QAAIC,GAA0C,GAAG9R,OAAO,CAACkB,OAAR,CAAgB2Q,GAAhB,CAAjD;;AACA,QAAIC,GAAJ,EAAS;AACR,UAAIA,GAAG,KAAK,MAAZ,EAAoB;AACnBA,QAAAA,GAAG,GAAG,IAAN;AACA,OAFD,MAEO,IAAIA,GAAG,KAAK,OAAZ,EAAqB;AAC3BA,QAAAA,GAAG,GAAG,KAAN;AACA,OAFM,MAEA,IAAIC,SAAS,CAACD,GAAD,CAAb,EAAoB;AAC1BA,QAAAA,GAAG,GAAGE,UAAU,CAACF,GAAD,CAAhB;AACA;;AACDF,MAAAA,GAAG,CAACC,GAAD,CAAH,GAAWC,GAAX;AACA;;AACD,WAAOF,GAAP;AACC,GAbD,EAaG,EAbH,CADC,GAeA,EAlBL;AAoBA;;AAED,SAASG,SAAT,CAAmBE,GAAnB,EAA6B;AAC5B,SAAO,CAACC,KAAK,CAACD,GAAD,CAAN,IAAe,CAACC,KAAK,CAACF,UAAU,CAACC,GAAD,CAAX,CAA5B;AACA;;;;;;;;;;;;;;AC7BD;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;IAGa1K,yBADZ,0BAAU;AAAExH,EAAAA,SAAS,EAAE;AAAb,CAAV;AAUA,0BAAoBC,OAApB,EAA0C;AAAA;;AAAA;;AAAA,SAFlCmS,QAEkC,GAFvB,EAEuB;AAAA,SAAtBnS,OAAsB,GAAtBA,OAAsB;AACzC,SAAKoS,gBAAL,GAAwBjT,QAAQ,CAACkI,aAAT,CACvB,uBADuB,CAAxB;AAGAE,IAAAA,cAAc,CAAC8K,YAAf,GAA8B,KAAKrS,OAAL,CAAaqH,aAAb,CAC7B,iBAD6B,CAA9B;AAGAE,IAAAA,cAAc,CAAC+K,gBAAf,GAAkC,IAAI9J,kCAAJ,CACjCjB,cAAc,CAAC8K,YADkB,EAEjC,iBAFiC,CAAlC;;AAIA7J,uCAAiBC,YAAjB,CAA8BC,SAA9B,CAAwC;AAAA,aAAM,KAAI,CAACC,IAAL,EAAN;AAAA,KAAxC;;AACA,SAAKA,IAAL;AACA;;;;WAaD,gBAAe;AAAA;;AACd,WAAK4J,KAAL,GAAarN,KAAK,CAACC,IAAN,CACZhG,QAAQ,CAACiG,gBAAT,CAA0B,qBAA1B,CADY,CAAb;AAIA,WAAK+M,QAAL,CAAc9M,OAAd,CAAsB,UAAAmN,OAAO,EAAI;AAChCA,QAAAA,OAAO,CAACzO,IAAR,CAAa0O,mBAAb,CAAiC,OAAjC,EAA0CD,OAAO,CAACE,IAAlD;AACA,OAFD;AAGA,WAAKP,QAAL,GAAgB,EAAhB;AAEA,WAAKI,KAAL,CAAWlN,OAAX,CAAmB,UAAAtB,IAAI,EAAI;AAC1B,YAAM4O,WAAW,GAAG,MAAI,CAACC,sBAAL,CAA4BnB,IAA5B,CAAiC,MAAjC,EAAuC1N,IAAvC,CAApB;;AACA,cAAI,CAACoO,QAAL,CAAcjP,IAAd,CAAmB;AAAEa,UAAAA,IAAI,EAAJA,IAAF;AAAQ2O,UAAAA,IAAI,EAAEC;AAAd,SAAnB;;AACA5O,QAAAA,IAAI,CAACK,gBAAL,CAAsB,OAAtB,EAA+BuO,WAA/B;AACA,OAJD;AAKA;;;WAED,gCAA+B5O,IAA/B,EAAkDP,CAAlD,EAAiE;AAAA;;AAChEA,MAAAA,CAAC,CAAC+B,cAAF;AACA,8BAASpG,QAAQ,CAACC,IAAlB,EAAwB,mBAAxB;AACA8I,MAAAA,UAAU,CAAC,YAAM;AAChB,YAAMsF,GAAG,GAAGzJ,IAAI,CAAC7D,YAAL,CAAkB,UAAlB,CAAZ;AACA,gCAASf,QAAQ,CAACC,IAAlB,EAAwB,eAAxB;AACAmI,QAAAA,cAAc,CAAC8K,YAAf,CAA4BQ,eAA5B,CAA4C,iBAA5C;AACAtL,QAAAA,cAAc,CAAC+K,gBAAf,CACEQ,KADF,CACQtF,GADR,EAEElC,IAFF,CAEO,gBAA2B;AAAA,cAAxByH,GAAwB,QAAxBA,GAAwB;AAAA,cAAnBV,YAAmB,QAAnBA,YAAmB;AAChC,cAAMW,MAAM,GAAGD,GAAG,CAAC1L,aAAJ,CAAkB,uBAAlB,CAAf;AACA,wCACClI,QAAQ,CAACC,IADV,EAEC,uBAFD,EAGC4T,MAAM,IAAIA,MAAM,CAACC,SAAP,CAAiBtS,MAAjB,GAA0B,EAHrC;;AAKA,cAAIqS,MAAJ,EAAY;AACX,kBAAI,CAACZ,gBAAL,CAAsBa,SAAtB,GAAkCD,MAAM,CAACC,SAAzC;;AACAzK,+CAAiBC,YAAjB,CAA8ByK,QAA9B,CACC,MAAI,CAACd,gBADN;AAGA,WALD,MAKO;AACN,kBAAI,CAACA,gBAAL,CAAsBa,SAAtB,GAAkC,EAAlC;AACA;AACD,SAjBF,EAkBEE,KAlBF,CAkBQ,UAAAC,KAAK,EAAI,CAAE,CAlBnB,EAmBEC,OAnBF,CAmBU,YAAM;AACd,wCAAYlU,QAAQ,CAACC,IAArB,EAA2B,mBAA3B;AACA,SArBF;AAsBA,OA1BS,EA0BP,IA1BO,CAAV;AA2BA;;;WA1DD,iBAAe;AACd,UAAI,wBAASD,QAAQ,CAACC,IAAlB,EAAwB,eAAxB,CAAJ,EAA8C;AAC7C,sCAAYD,QAAQ,CAACC,IAArB,EAA2B,eAA3B;AACA,aAAKkT,gBAAL,CAAsB9K,KAAtB,CACC,KAAK6K,YAAL,CAAkBnS,YAAlB,CAA+B,iBAA/B,CADD;AAGA,eAAO,IAAP;AACA;;AACD,aAAO,KAAP;AACA;;;;;;;;;;;;;;;;;;;ACzCF;;AACA;;AACA;;;;;;;;IAEasI;AAMZ,4BACS6J,YADT,EAESiB,aAFT,EAGE;AAAA;;AAAA,SALeC,sBAKf,GALwC,iCAKxC;AAAA,SAFOlB,YAEP,GAFOA,YAEP;AAAA,SADOiB,aACP,GADOA,aACP;AACD,SAAKE,cAAL,GAAsBrU,QAAQ,CAACkI,aAAT,CACrB,KAAKkM,sBADgB,CAAtB;AAGA,4BAASpU,QAAQ,CAACC,IAAlB,EAAwB,kBAAxB;AACA;;;;;;;;;;;;;;MAED,UAAaoO,GAAb,EAA0B;AAAA;;AACzBhF,MAAAA,gBAAgB,CAACiL,OAAjB,GAA2BjL,gBAAgB,CAACkL,UAAjB,EAA3B;AACA,aAAO,IAAI3G,OAAJ,CAAwD,UAACC,OAAD,EAAU2G,MAAV,EAAqB;AACnF,YACC,KAAI,CAACtB,YAAL,CAAkBnS,YAAlB,CAA+B,UAA/B,KAA8CsN,GAA9C,IACA,KAAI,CAAC6E,YAAL,CAAkBY,SAFnB,EAGE;AACD,cAAIzK,gBAAgB,CAACkL,UAAjB,MAAiClG,GAArC,EAA0C;AACzCrJ,YAAAA,MAAM,CAACyP,OAAP,CAAeC,SAAf,CAAyB,IAAzB,EAA+B,IAA/B,EAAqCrG,GAArC;AACA;;AACD,iBAAOR,OAAO,CAAC,IAAD,CAAd;AACA;;AACD,sCAAY7N,QAAQ,CAACC,IAArB,EAA2B,kBAA3B;AACA,aAAI,CAACiT,YAAL,CAAkBY,SAAlB,GAA8B,EAA9B;AACAH,QAAAA,KAAK,CAACtF,GAAD,CAAL,CACElC,IADF,CACO,UAAAwI,QAAQ;AAAA,iBAAIA,QAAQ,CAACjT,IAAT,EAAJ;AAAA,SADf,EAEEyK,IAFF,CAEO,UAAAyI,IAAI,EAAI;AACb,cAAMhB,GAAG,GAAG,IAAIiB,SAAJ,GAAgBC,eAAhB,CACXF,IADW,EAEX,WAFW,CAAZ;;AAKA,cAAI,KAAI,CAACP,cAAT,EAAyB;AACxB,gBAAMU,iBAAiB,GAAGnB,GAAG,CAAC1L,aAAJ,CACzB,KAAI,CAACkM,sBADoB,CAA1B;AAGA,iBAAI,CAACC,cAAL,CAAoBP,SAApB,GACCiB,iBAAiB,CAACjB,SADnB;AAEA;;AAED,cAAMkB,UAAU,GAAGpB,GAAG,CAAC1L,aAAJ,CAClB,KAAI,CAACiM,aADa,CAAnB;;AAGA,eAAI,CAACjB,YAAL,CAAkB/J,YAAlB,CAA+B,UAA/B,EAA2CkF,GAA3C;;AACA,eAAI,CAAC6E,YAAL,CAAkBY,SAAlB,GAA8BkB,UAAU,CAAClB,SAAzC;AACAzK,UAAAA,gBAAgB,CAACC,YAAjB,CAA8ByK,QAA9B,CAAuC,KAAI,CAACb,YAA5C;AAEAlO,UAAAA,MAAM,CAACyP,OAAP,CAAeC,SAAf,CAAyB,IAAzB,EAA+B,IAA/B,EAAqCrG,GAArC;AACArJ,UAAAA,MAAM,CAAChF,QAAP,CAAgBsB,KAAhB,GAAwBsS,GAAG,CAACtS,KAA5B;AACA,iBAAOuM,OAAO,CAAC;AAAE+F,YAAAA,GAAG,EAAHA,GAAF;AAAOV,YAAAA,YAAY,EAAE,KAAI,CAACA;AAA1B,WAAD,CAAd;AACA,SA1BF,EA2BEc,KA3BF,CA2BQ,UAAAC,KAAK,EAAI;AACf;AACAjP,UAAAA,MAAM,CAACiQ,QAAP,CAAgBC,IAAhB,GAAuB7G,GAAvB;AACA,iBAAOmG,MAAM,EAAb;AACA,SA/BF,EAgCEN,OAhCF,CAgCU,YAAM;AACd,kCAASlU,QAAQ,CAACC,IAAlB,EAAwB,kBAAxB;AACA,SAlCF;AAmCA,OA/CM,CAAP;AAgDA;;;WAED,iBAAe;AACdoJ,MAAAA,gBAAgB,CAACiL,OAAjB,GAA2B/S,SAA3B;AACA,WAAK2R,YAAL,CAAkBY,SAAlB,GAA8B,EAA9B;AACA;;;WAED,eAAaQ,OAAb,EAA+Ba,SAA/B,EAAmD;AAClD,UAAIb,OAAJ,EAAa;AACZjL,QAAAA,gBAAgB,CAACiL,OAAjB,GAA2BA,OAA3B;AACA;;AACD,UACCjL,gBAAgB,CAACiL,OAAjB,IACAjL,gBAAgB,CAACiL,OAAjB,IAA4BjL,gBAAgB,CAACkL,UAAjB,EAF7B,EAGE;AACDvP,QAAAA,MAAM,CAACyP,OAAP,CAAeC,SAAf,CAAyB,IAAzB,EAA+B,IAA/B,EAAqCrL,gBAAgB,CAACiL,OAAtD;;AACA,YAAIa,SAAJ,EAAe;AACdnV,UAAAA,QAAQ,CAACsB,KAAT,GAAiB6T,SAAjB;AACA;;AACD9L,QAAAA,gBAAgB,CAACiL,OAAjB,GAA2B/S,SAA3B;AACA;AACD;;;WAED,sBAA2B;AAC1B,aACCyD,MAAM,CAACiQ,QAAP,CAAgBG,QAAhB,GACApQ,MAAM,CAACiQ,QAAP,CAAgBI,IADhB,GAEArQ,MAAM,CAACiQ,QAAP,CAAgBK,MAHjB;AAKA;;;;;;;AA/FWjM,iBACLC,eAAe,IAAIiM,gCAAJ;;;;;;;;;;;;;;ACLvB;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AAEA,IAAMC,kBAAkB,GAAG,cAA3B;IAEaC,gCADZ,0BAAU;AAAE7U,EAAAA,SAAS,EAAE;AAAb,CAAV;AAKA,iCAAoBC,OAApB,EAA0C;AAAA;;AAAA;;AAAA,SAAtBA,OAAsB,GAAtBA,OAAsB;AACzC,SAAK6U,MAAL,GAAc,IAAIpN,oBAAJ,CAAiB,KAAKzH,OAAtB,CAAd;AACA,SAAK8U,aAAL,GAAqB,KAAK9U,OAAL,CAAa+U,oBAAb,CAAkC,QAAlC,EAA4C,CAA5C,CAArB;;AACA,QAAI,wBAAS,KAAK/U,OAAd,EAAuB,UAAvB,CAAJ,EAAwC;AACvC,UAAI,KAAK8U,aAAL,CAAmB/M,GAAnB,CAAuBC,OAAvB,CAA+B,YAA/B,KAAgD,CAAC,CAArD,EAAwD;AACvD,aAAKH,IAAL;AACA,OAFD,MAEO;AACNK,QAAAA,UAAU,CAAC,YAAM;AAChB,eAAI,CAACL,IAAL;AACA,SAFS,EAEP,IAFO,CAAV;AAGA;AACD;;AACD,SAAK7H,OAAL,CAAa2U,kBAAb,IAAmC,IAAnC;AACA;;;;WAOD,gBAAO;AAAA;;AACN,UAAI,KAAKG,aAAL,CAAmB/M,GAAnB,CAAuBC,OAAvB,CAA+B,UAA/B,MAA+C,CAAC,CAApD,EAAuD;AACtD,aAAK8M,aAAL,CAAmB/M,GAAnB,IACC,KAAK+M,aAAL,CAAmB/M,GAAnB,CAAuBC,OAAvB,CAA+B,GAA/B,MAAwC,CAAC,CAAzC,GACG,aADH,GAEG,aAHJ;AAIA,OALD,MAKO;AACN,aAAK8M,aAAL,CAAmB/M,GAAnB,GAAyB,KAAK+M,aAAL,CAAmB/M,GAAnB,CAAuBE,OAAvB,CACxB,YADwB,EAExB,YAFwB,CAAzB;AAIA;;AACDC,MAAAA,UAAU,CAAC,YAAM;AAChB,gCAAS,MAAI,CAAClI,OAAd,EAAuB,YAAvB;AACA,OAFS,EAEP,IAFO,CAAV;AAGA;;;WAED,iBAAQ;AACP,UAAI,KAAK8U,aAAL,CAAmB/M,GAAnB,CAAuBC,OAAvB,CAA+B,UAA/B,MAA+C,CAAC,CAApD,EAAuD;AACtD,aAAK8M,aAAL,CAAmB/M,GAAnB,IACC,KAAK+M,aAAL,CAAmB/M,GAAnB,CAAuBC,OAAvB,CAA+B,GAA/B,MAAwC,CAAC,CAAzC,GACG,aADH,GAEG,aAHJ;AAIA,OALD,MAKO;AACN,aAAK8M,aAAL,CAAmB/M,GAAnB,GAAyB,KAAK+M,aAAL,CAAmB/M,GAAnB,CAAuBE,OAAvB,CACxB,YADwB,EAExB,YAFwB,CAAzB;AAIA;;AACD,oCAAY,KAAKjI,OAAjB,EAA0B,YAA1B;AACA;;;WAnCD,qBAAmBA,OAAnB,EAAyC;AACxC,UAAI,CAACA,OAAL,EAAc;AACd,aAAOA,OAAO,CAAC2U,kBAAD,CAAd;AACA;;;;;;;;;;;;;;;;;;;AC9BF;;AACA;;;;;;;;;;IAGaK,yCADZ,0BAAU;AAAEjV,EAAAA,SAAS,EAAE;AAAb,CAAV;AAEA,0CAAoBC,OAApB,EAA0C;AAAA;;AAAA;;AAAA,SAAtBA,OAAsB,GAAtBA,OAAsB;AACzC,SAAKiV,oBAAL;AACA9Q,IAAAA,MAAM,CAACC,gBAAP,CAAwB,QAAxB,EAAkC;AAAA,aAAM,KAAI,CAAC6Q,oBAAL,EAAN;AAAA,KAAlC;;AACAzM,uCAAiBC,YAAjB,CAA8BC,SAA9B,CAAwC;AAAA,aAAM,KAAI,CAACuM,oBAAL,EAAN;AAAA,KAAxC;AACA;;;;WAED,gCAAqC;AACpC,UAAMC,cAAc,GAAG/Q,MAAM,CAACgR,OAA9B;AACA,UAAItQ,MAAM,GACT1F,QAAQ,CAACiW,eAAT,CAAyBC,YAAzB,GACAlW,QAAQ,CAACiW,eAAT,CAAyB7Q,YAF1B;AAGA,UAAI+Q,QAAQ,GAAIJ,cAAc,GAAGrQ,MAAlB,GAA4B,GAA3C;AACA1F,MAAAA,QAAQ,CAACiW,eAAT,CAAyBrQ,KAAzB,CAA+BwQ,WAA/B,CAA2C,mBAA3C,YAAmED,QAAnE;AACA;;;;;;;;;;;;;;;;;;;AClBF;;AACA;;AACA;;AACA;;;;;;;;IAEaE;AAWZ,+BAAmBxV,OAAnB,EAAyC;AAAA;;AAAA;;AAAA,SATzCyV,WASyC,GATlB,KASkB;AAAA,SARzCC,MAQyC,GARvB,KAQuB;AAAA,SANxBC,sBAMwB,GANS,GAMT;AAAA,SALjCC,SAKiC,GALbzR,MAAM,CAACgR,OAKM;AAAA,SAAtBnV,OAAsB,GAAtBA,OAAsB;AACxC,SAAK6V,KAAL,GAAa,KAAK7V,OAAL,CAAaqH,aAAb,CAA2B,OAA3B,CAAb;AACA,SAAKyO,WAAL,GAAmB,KAAK9V,OAAL,CAAaqH,aAAb,CAClB,yBADkB,CAAnB;AAIA,SAAK0O,cAAL,CAAoBrW,QAAQ,CAAC,KAAKmW,KAAL,CAAW3K,KAAZ,CAA5B,EAAgD,KAAhD;AACA,SAAK2K,KAAL,CAAWzR,gBAAX,CAA4B,QAA5B,EAAsC,UAACZ,CAAD;AAAA,aACrC,KAAI,CAACuS,cAAL,CAAoBvS,CAAC,CAACwS,MAAF,CAAS9K,KAA7B,CADqC;AAAA,KAAtC;AAGA,SAAK2K,KAAL,CAAWzR,gBAAX,CAA4B,OAA5B,EAAqC,UAACZ,CAAD;AAAA,aACpC,KAAI,CAACyS,aAAL,CAAmBzS,CAAC,CAACwS,MAAF,CAAS9K,KAA5B,CADoC;AAAA,KAArC;AAIA,KAAC,YAAD,EAAe,YAAf,EAA6B7F,OAA7B,CAAqC,UAAAlF,IAAI;AAAA,aACxC,KAAI,CAAC0V,KAAL,CAAWzR,gBAAX,CACCjE,IADD,EAEC,UAACqD,CAAD;AAAA,eAAa,KAAI,CAACoS,SAAL,GAAiBzR,MAAM,CAACgR,OAArC;AAAA,OAFD,CADwC;AAAA,KAAzC;AAMA;;;;WAED,uBAAsBe,WAAtB,EAAiD;AAChD,WAAKT,WAAL,GAAmB,IAAnB;AACA,WAAKU,WAAL,CAAiBD,WAAjB;AACA,WAAKE,cAAL,CAAoBF,WAApB;AACA;;;WAED,wBAAuBA,WAAvB,EAAqE;AAAA,UAAzBG,UAAyB,uEAAZ,IAAY;AACpE,UAAIC,QAAa,GAAG,CAApB;;AACA,UAAIJ,WAAW,GAAG,EAAlB,EAAsB;AACrBI,QAAAA,QAAQ,GAAG,GAAX;AACA;;AAED,WAAKT,KAAL,CAAW3K,KAAX,GAAmBoL,QAAnB;AACA,WAAKH,WAAL,CAAiBG,QAAjB;AACA,WAAKF,cAAL,CAAoBE,QAApB;;AAEA,UAAIA,QAAQ,IAAI,CAAhB,EAAmB;AAClB,aAAKC,oBAAL,CAA0BF,UAA1B;AACA,OAFD,MAEO,IAAIC,QAAQ,IAAI,GAAhB,EAAqB;AAC3B,aAAKE,mBAAL,CAAyBH,UAAzB;AACA;;AACD,WAAKZ,WAAL,GAAmB,KAAnB;AACA;;;WAED,qBAAoBS,WAApB,EAAuC;AACtC,oCAAY/W,QAAQ,CAACC,IAArB,EAA2B,iBAA3B,EAA8C8W,WAAW,GAAG,CAA5D;AACA,oCAAY,KAAKlW,OAAjB,EAA0B,WAA1B,EAAuCkW,WAAW,GAAG,EAArD;AACA,WAAKJ,WAAL,CAAiB/Q,KAAjB,CAAuBJ,IAAvB,aAAiCuR,WAAjC;AACA;;;WAED,wBAAuBA,WAAvB,EAAkD;AACjD/R,MAAAA,MAAM,CAACsS,QAAP,CAAgB;AACfhS,QAAAA,GAAG,EACF,KAAKmR,SAAL,IAAkB,CAAlB,GACGM,WAAW,GAAG,GAAd,GAAoB,KAAKP,sBAD5B,GAEI,KAAKC,SAAL,GAAiBM,WAAlB,GAAiC,GAJtB;AAKfQ,QAAAA,QAAQ,EAAE;AALK,OAAhB;AAOA;;;WAED,+BAAqD;AAAA,UAAzBL,UAAyB,uEAAZ,IAAY;AACpD,WAAKX,MAAL,GAAc,IAAd;;AACA,UAAIW,UAAJ,EAAgB;AACfb,QAAAA,mBAAmB,CAACmB,aAApB,CAAkCzD,QAAlC,CAA2C,KAAKwC,MAAhD;AACA;AACD;;;WAED,gCAAsD;AAAA,UAAzBW,UAAyB,uEAAZ,IAAY;AACrD,WAAKX,MAAL,GAAc,KAAd;;AACA,UAAIW,UAAJ,EAAgB;AACfb,QAAAA,mBAAmB,CAACmB,aAApB,CAAkCzD,QAAlC,CAA2C,KAAKwC,MAAhD;AACA;AACD;;;WAED,cAAYkB,MAAZ,EAA8B;AAAA;;AAC7B,aAAO,IAAI7J,OAAJ,CAAkB,UAACC,OAAD,EAAU2G,MAAV,EAAqB;AAC7C,YAAI,MAAI,CAAC8B,WAAT,EAAsB;AACrB,iBAAO9B,MAAM,EAAb;AACA;;AACD,YAAIxP,MAAM,CAACgR,OAAP,IAAkB,CAAlB,IAAuB,MAAI,CAACO,MAAL,IAAe,KAA1C,EAAiD;AAChD,gBAAI,CAACD,WAAL,GAAmB,IAAnB;AACAtR,UAAAA,MAAM,CAACsS,QAAP,CAAgB;AACfhS,YAAAA,GAAG,EAAE,MAAI,CAACkR,sBADK;AAEfe,YAAAA,QAAQ,EAAEE,MAAM,GAAG,QAAH,GAAc;AAFf,WAAhB;AAIA1O,UAAAA,UAAU,CAAC,YAAM;AAChB,kBAAI,CAAC6N,cAAL,CAAoB,GAApB;;AACA,kBAAI,CAACN,WAAL,GAAmB,KAAnB;AACA,kBAAI,CAACG,SAAL,GAAiB,MAAI,CAACD,sBAAtB;AACA3I,YAAAA,OAAO;AACP,WALS,EAKP,GALO,CAAV;AAMA,SAZD,MAYO;AACNA,UAAAA,OAAO;AACP;AACD,OAnBM,CAAP;AAoBA;;;WAED,eAAa4J,MAAb,EAA+B;AAAA;;AAC9BC;AACA,aAAO,IAAI9J,OAAJ,CAAkB,UAACC,OAAD,EAAU2G,MAAV,EAAqB;AAC7C,YAAI,MAAI,CAAC8B,WAAT,EAAsB;AACrB,iBAAO9B,MAAM,EAAb;AACA;;AACD,YAAIxP,MAAM,CAACgR,OAAP,GAAiB,CAAjB,IAAsB,MAAI,CAACO,MAA/B,EAAuC;AACtClN,6CAAiBiL,OAAjB,GAA2B/S,SAA3B;AACA,gBAAI,CAAC+U,WAAL,GAAmB,IAAnB;AACAtR,UAAAA,MAAM,CAACsS,QAAP,CAAgB;AACfhS,YAAAA,GAAG,EAAE,CADU;AAEfiS,YAAAA,QAAQ,EAAEE,MAAM,GAAG,QAAH,GAAc;AAFf,WAAhB;AAIA1O,UAAAA,UAAU,CAAC,YAAM;AAChB,kBAAI,CAAC6N,cAAL,CAAoB,CAApB;;AACA,kBAAI,CAACN,WAAL,GAAmB,KAAnB;AACA,kBAAI,CAACG,SAAL,GAAiB,CAAjB;AACA5I,YAAAA,OAAO;AACP,WALS,EAKP,GALO,CAAV;AAMA,SAbD,MAaO;AACNA,UAAAA,OAAO;AACP;AACD,OApBM,CAAP;AAqBA;;;;;;;AArIWwI,oBACLmB,gBAAgB,IAAIjC,gCAAJ;;;;;;;;;;;;;;ACNxB;;AACA;;AACA;;AACA;;;;;;;;;;IAWaoC,iCADZ,0BAAU;AAAE/W,EAAAA,SAAS,EAAE;AAAb,CAAV;AAKA,kCAAoBC,OAApB,EAA0C;AAAA;;AAAA;;AAAA,SAFlC8I,MAEkC,GAFzB,EAEyB;AAAA,SAAtB9I,OAAsB,GAAtBA,OAAsB;AACzC,SAAKqJ,QAAL,GAAgBnE,KAAK,CAACC,IAAN,CACfnF,OAAO,CAACoF,gBAAR,CAAyB,yBAAzB,CADe,CAAhB;AAIA,SAAKuD,IAAL;AAEAxE,IAAAA,MAAM,CAACC,gBAAP,CACC,QADD,EAEC,wBAAS;AAAA,aAAM,KAAI,CAACuE,IAAL,EAAN;AAAA,KAAT,EAA4B,GAA5B,CAFD;AAIA;;;;WAED,gBAAe;AAAA;;AACd,UAAI,KAAKG,MAAL,IAAe,KAAKA,MAAL,CAAYnI,MAAZ,GAAqB,CAAxC,EAA2C;AAC1C,aAAKmI,MAAL,CAAYzD,OAAZ,CAAoB,gBAAsC;AAAA,cAAnC0D,KAAmC,QAAnCA,KAAmC;AAAA,cAA5BS,cAA4B,QAA5BA,cAA4B;AAAA,cAAZuN,KAAY,QAAZA,KAAY;;AACzD,cAAIA,KAAJ,EAAW;AACVC,YAAAA,QAAQ,CAACtK,GAAT,CAAalD,cAAb,EAA6B;AAAEyN,cAAAA,UAAU,EAAE;AAAd,aAA7B;AACAlO,YAAAA,KAAK,CAACmO,WAAN,CAAkB,IAAlB;AACA;;AACDnO,UAAAA,KAAK,CAACK,OAAN,CAAc,IAAd;AACA,SAND;AAOA,aAAKN,MAAL,GAAc,EAAd;AACA;;AACD,UAAI,KAAKO,QAAL,IAAiB,KAAKA,QAAL,CAAc1I,MAAd,GAAuB,CAA5C,EAA+C;AAC9C,YAAMwW,gBAAgB,GAAG,IAAI7N,WAAW,CAACC,KAAhB,CAAsB;AAC9CC,UAAAA,cAAc,EAAE,KAAKxJ,OADyB;AAE9CyJ,UAAAA,WAAW,EAAE,SAFiC;AAG9C5C,UAAAA,QAAQ,EAAE,oBAAM;AACf,mBAAO,MAAI,CAAC7G,OAAL,CAAauE,YAApB;AACA;AAL6C,SAAtB,EAOxB;AAPwB,SAQvB6S,cARuB,CAQR,KAAKpX,OARG,EAQM,WARN,CAAzB;AASA,aAAK8I,MAAL,CAAY5F,IAAZ,CAAiB;AAChBsG,UAAAA,cAAc,EAAE,KAAKxJ,OADL;AAEhBqX,UAAAA,cAAc,EAAE,IAFA;AAGhBtO,UAAAA,KAAK,EAAEoO;AAHS,SAAjB;AAMA,aAAK9N,QAAL,CAAchE,OAAd,CAAsB,UAAC2D,OAAD,EAAU7H,CAAV,EAAgB;AACrC,cAAMmW,eAAe,GAAG,wBACvBtO,OADuB,EAEvB,8BAFuB,CAAxB;AAIA,cAAMuO,MAAM,GAAGrS,KAAK,CAACC,IAAN,CACd6D,OAAO,CAAC5D,gBAAR,CAAyB,0BAAzB,CADc,CAAf;;AAGA,cAAImS,MAAM,IAAIA,MAAM,CAAC5W,MAAP,GAAgB,CAA9B,EAAiC;AAChC4W,YAAAA,MAAM,CAAClS,OAAP,CAAe,UAACmS,KAAD,EAAQrW,CAAR,EAAc;AAAA;;AAC5B,kBAAIgD,MAAM,CAACqI,UAAP,IAAqB,GAAzB,EAA8B;AAC7B,oBAAMiL,UAAU,GAAG,IAAInO,WAAW,CAACC,KAAhB,CAAsB;AACxCC,kBAAAA,cAAc,EAAER,OADwB;AAExCS,kBAAAA,WAAW,EAAE,SAF2B;AAGxC5C,kBAAAA,QAAQ,EAAE,oBAAM;AACf,2BAAOmC,OAAO,CAACzE,YAAf;AACA;AALuC,iBAAtB,EAOlB;AAPkB,iBAQjBmT,MARiB,CAQVF,KARU,EAQH;AAAEG,kBAAAA,aAAa,EAAE;AAAjB,iBARG,CAAnB;;AASA,sBAAI,CAAC7O,MAAL,CAAY5F,IAAZ,CAAiB;AAChBsG,kBAAAA,cAAc,EAAER,OADA;AAEhBqO,kBAAAA,cAAc,EAAE,KAFA;AAGhBtO,kBAAAA,KAAK,EAAE0O;AAHS,iBAAjB;AAKA;;AAED,kBAAMG,OAAO,GAAGN,eAAe,GAC5B,IAD4B,YAG5BE,KAAK,CAACzN,OAAN,CAAc,eAAd,EACE8N,kBADF,IAEAL,KAAK,CAACzN,OAAN,CAAc,eAAd,EACE+N,sBAN0B,0CAE5B,MAKG3R,iBAPN;;AAQA,kBAAIyR,OAAJ,EAAa;AACZ,oBAAInY,IAAI,GAAG0E,MAAM,CAACsI,WAAP,GAAqB,GAAhC;;AACA,oBAAImL,OAAO,CAACrT,YAAR,GAAuByE,OAAO,CAACzE,YAAnC,EAAiD;AAChD9E,kBAAAA,IAAI,IAAImY,OAAO,CAACrT,YAAR,GAAuB,CAA/B;AACA;;AACD,oBAAI9E,IAAI,GAAG,GAAX,EAAgB;AACfA,kBAAAA,IAAI,GAAG,GAAP;AACA;;AACD,oBAAMsX,KAAK,GAAGC,QAAQ,CAACe,MAAT,CACbH,OADa,EAEb,CAFa,EAGb;AACCjJ,kBAAAA,CAAC,EAAElP,IADJ;AAEC4R,kBAAAA,IAAI,EAAE2G,MAAM,CAACC;AAFd,iBAHa,EAOb;AACCtJ,kBAAAA,CAAC,EAAElP,IAAI,GAAG,GAAP,GAAa,CAAb,GAAiBA,IAAI,GAAG,CAAC,CAD7B;AAEC4R,kBAAAA,IAAI,EAAE2G,MAAM,CAACC;AAFd,iBAPa,CAAd;AAYA,oBAAMC,YAAY,GAAG,IAAI5O,WAAW,CAACC,KAAhB,CAAsB;AAC1CC,kBAAAA,cAAc,EAAEoO,OAD0B;AAE1CnO,kBAAAA,WAAW,EAAE,UAF6B;AAG1C5C,kBAAAA,QAAQ,EAAE,oBAAM;AACf,2BAAO+Q,OAAO,CAACrT,YAAR,GAAuB,GAAvB,GACNyE,OAAO,CAACzE,YADF,GAEJqT,OAAO,CAACrT,YAFJ,GAGJyE,OAAO,CAACzE,YAHX;AAIA;AARyC,iBAAtB,EAUpB;AAVoB,iBAWnB4T,QAXmB,CAWVpB,KAXU,CAArB;;AAYA,sBAAI,CAACjO,MAAL,CAAY5F,IAAZ,CAAiB;AAChBsG,kBAAAA,cAAc,EAAEoO,OADA;AAEhBP,kBAAAA,cAAc,EAAE,IAFA;AAGhBtO,kBAAAA,KAAK,EAAEmP,YAHS;AAIhBnB,kBAAAA,KAAK,EAALA;AAJgB,iBAAjB;AAMA;AACD,aAjED;AAkEA;;AAED,cAAMqB,YAAY,GAAG,IAAI9O,WAAW,CAACC,KAAhB,CAAsB;AAC1CC,YAAAA,cAAc,EAAER,OAD0B;AAE1CS,YAAAA,WAAW,EAAE,CAF6B;AAG1C5C,YAAAA,QAAQ,EAAE,oBAAM;AACf,qBAAOmC,OAAO,CAACzE,YAAf;AACA;AALyC,WAAtB,EAOpB;AAPoB,WAQnB6S,cARmB,CAQJpO,OARI,EAQK,aARL,CAArB;;AAUA,gBAAI,CAACF,MAAL,CAAY5F,IAAZ,CAAiB;AAChBsG,YAAAA,cAAc,EAAER,OADA;AAEhBqO,YAAAA,cAAc,EAAE,IAFA;AAGhBtO,YAAAA,KAAK,EAAEqP;AAHS,WAAjB;;AAMA,cAAMC,aAAa,GAAG,IAAI/O,WAAW,CAACC,KAAhB,CAAsB;AAC3CC,YAAAA,cAAc,EAAER,OAD2B;AAE3CS,YAAAA,WAAW,EAAE,GAF8B;AAG3C5C,YAAAA,QAAQ,EAAE,oBAAM;AACf,qBAAOmC,OAAO,CAACzE,YAAf;AACA;AAL0C,WAAtB,EAOrB;AAPqB,WAQpB6S,cARoB,CAQLpO,OARK,EAQI,cARJ,CAAtB;;AAUA,gBAAI,CAACF,MAAL,CAAY5F,IAAZ,CAAiB;AAChBsG,YAAAA,cAAc,EAAER,OADA;AAEhBqO,YAAAA,cAAc,EAAE,IAFA;AAGhBtO,YAAAA,KAAK,EAAEsP;AAHS,WAAjB;AAKA,SA5GD;AA8GA,aAAKC,YAAL;AACA;AACD;;;WAED,wBAAuB;AACtB,UAAI,KAAKxP,MAAL,CAAYnI,MAAZ,GAAqB,CAAzB,EAA4B;AAC3B,aAAKmI,MAAL,CAAYzD,OAAZ,CAAoB,iBAA+C;AAAA,cAA5CmE,cAA4C,SAA5CA,cAA4C;AAAA,cAA5B6N,cAA4B,SAA5BA,cAA4B;AAAA,cAAZtO,KAAY,SAAZA,KAAY;;AAClE,cAAIsO,cAAJ,EAAoB;AACnBtO,YAAAA,KAAK,CAACe,KAAN,CACCN,cAAc,CAACO,OAAf,CAAuB,WAAvB,IACGC,gCADH,GAEGC,2BAHJ;AAKA,WAND,MAMO;AACNlB,YAAAA,KAAK,CAACe,KAAN,CACCN,cAAc,CAACO,OAAf,CAAuB,WAAvB,IACGwO,uCADH,GAEGC,kCAHJ;AAKA;AACD,SAdD;AAeA;AACD;;;;;;;;;;;;;;;;;;;;;AC9LF;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;AAEAlS,gBAAOC,GAAP,CAAW,CAACC,gBAAD,EAAWC,kBAAX,EAAuBC,sBAAvB,CAAX;;IAGa+R,iCADZ,0BAAU;AAAE1Y,EAAAA,SAAS,EAAE;AAAb,CAAV;AAQA,kCAAoBC,OAApB,EAA0C;AAAA;;AAAA;;AAAA,SAAtBA,OAAsB,GAAtBA,OAAsB;AACzC,QAAM0Y,MAAM,GAAG,KAAK1Y,OAAL,CAAaqH,aAAb,CACd,yBADc,CAAf;AAGA,QAAMvB,KAAK,GAAG,KAAK9F,OAAL,CAAaqH,aAAb,CACb,0BADa,CAAd;AAGA,SAAKgL,YAAL,GAAoBvM,KAAK,CAACuB,aAAN,CACnB,kCADmB,CAApB;AAGA,QAAMiL,gBAAgB,GAAG,IAAI9J,kCAAJ,CACxB,KAAK6J,YADmB,EAExB,kCAFwB,CAAzB;AAIA,QAAMsG,YAAY,GAAG,IAAInD,wCAAJ,CACpBrW,QAAQ,CAACkI,aAAT,CAAuB,mBAAvB,CADoB,CAArB;AAGA,SAAKuR,GAAL,GAAWzZ,QAAQ,CAACkI,aAAT,CACV,wBADU,CAAX;AAGA,SAAKwR,QAAL,GAAgB3T,KAAK,CAACC,IAAN,CACf,KAAKyT,GAAL,CAASxT,gBAAT,CAA0B,6BAA1B,CADe,CAAhB;AAGA,SAAK0T,UAAL,GAAkB,KAAKF,GAAL,CAASvR,aAAT,CACjB,gCADiB,CAAlB;AAGA,QAAM0R,OAAO,GAAG,KAAK/Y,OAAL,CAAaE,YAAb,CAA0B,UAA1B,CAAhB;AACA,QAAM8Y,SAAS,GAAG,KAAKhZ,OAAL,CAAaE,YAAb,CAA0B,YAA1B,CAAlB;AACA,QAAI+Y,SAAS,GAAGvZ,QAAQ,CAACgZ,MAAM,CAACxY,YAAP,CAAoB,WAApB,CAAD,CAAxB;;AACA,QAAI+Y,SAAS,GAAG,CAAhB,EAAmB;AAClBA,MAAAA,SAAS,GAAG,CAAZ;AACA;;AAED,SAAKnS,MAAL,GAAc,IAAIR,eAAJ,CAAWoS,MAAX,EAAmB;AAChCQ,MAAAA,YAAY,EAAED,SADkB;AAEhCE,MAAAA,SAAS,EAAE,UAFqB;AAGhCC,MAAAA,cAAc,EAAE;AACfC,QAAAA,YAAY,EAAE,KADC;AAEfC,QAAAA,UAAU,EAAE;AAFG,OAHgB;AAOhCC,MAAAA,UAAU,EAAE,IAPoB;AAQhCrS,MAAAA,KAAK,EAAE,IARyB;AAShCsS,MAAAA,mBAAmB,EAAE,IATW;AAUhCC,MAAAA,UAAU,EAAE;AACXC,QAAAA,cAAc,EAAE;AADL,OAVoB;AAahCC,MAAAA,QAAQ,EAAE;AACTvX,QAAAA,OAAO,EAAE,IADA;AAETwX,QAAAA,cAAc,EAAE;AAFP,OAbsB;AAiBhC/P,MAAAA,EAAE,EAAE;AACHgQ,QAAAA,SAAS,EAAE,mBAAA/S,MAAM,EAAI;AACpB,cAAMgT,YAAY,GAAGhT,MAAM,CAACiT,MAAP,CAAcjT,MAAM,CAACkT,WAArB,CAArB;;AACA,eAAI,CAACC,gBAAL,CAAsBnT,MAAtB;;AACA,kCAASgT,YAAT,EAAuB,UAAvB;;AACA,cAAI,CAACA,YAAY,CAAC5Z,YAAb,CAA0B,UAA1B,CAAL,EAA4C;AAC3C,oCAASyY,YAAY,CAAC3Y,OAAtB,EAA+B,WAA/B;AACA;AACD,SARE;AASHka,QAAAA,eAAe,EAAE,yBAAApT,MAAM,EAAI;AAC1BA,UAAAA,MAAM,CAACiT,MAAP,CAAc1U,OAAd,CAAsB,UAAA8U,KAAK,EAAI;AAC9B,0CAAYA,KAAZ,EAAmB,UAAnB;;AACA,gBAAMvS,MAAM,GAAGgN,8BAAsBwF,WAAtB,CACdD,KAAK,CAAC9S,aAAN,CAAoB,YAApB,CADc,CAAf;;AAGA,gBAAIO,MAAJ,EAAY;AACXA,cAAAA,MAAM,CAACyS,KAAP;AACA;AACD,WARD;AASA,kCAAS1B,YAAY,CAAC3Y,OAAtB,EAA+B,WAA/B;AACA,SApBE;AAqBHsa,QAAAA,aAAa,EAAE,uBAAAxT,MAAM,EAAI;AACxB,cAAMgT,YAAY,GAAGhT,MAAM,CAACiT,MAAP,CAAcjT,MAAM,CAACkT,WAArB,CAArB;;AACA,eAAI,CAACC,gBAAL,CAAsBnT,MAAtB;;AACA,kCAASgT,YAAT,EAAuB,UAAvB;;AACA,cAAMlS,MAAM,GAAGgN,8BAAsBwF,WAAtB,CACdN,YAAY,CAACzS,aAAb,CAA2B,YAA3B,CADc,CAAf;;AAGA,cAAIO,MAAJ,EAAY;AACXA,YAAAA,MAAM,CAACC,IAAP;AACA;;AACD,cAAIiS,YAAY,CAAC5Z,YAAb,CAA0B,UAA1B,CAAJ,EAA2C;AAC1C,0CAAYyY,YAAY,CAAC3Y,OAAzB,EAAkC,WAAlC;AACA;AACD;AAlCE;AAjB4B,KAAnB,CAAd;;AAuDA,QAAI,KAAK6Y,QAAL,IAAiB,KAAKA,QAAL,CAAclY,MAAd,GAAuB,CAA5C,EAA+C;AAC9C,WAAKkY,QAAL,CAAcxT,OAAd,CAAsB,UAAAtB,IAAI,EAAI;AAC7B,YAAIwW,UAAU,GAAG7a,QAAQ,CAACqE,IAAI,CAAC7D,YAAL,CAAkB,YAAlB,CAAD,CAAzB;AACA6D,QAAAA,IAAI,CAACK,gBAAL,CAAsB,OAAtB,EAA+B,UAAAZ,CAAC,EAAI;AACnCA,UAAAA,CAAC,CAAC+B,cAAF;AACA,wCAAYpG,QAAQ,CAACC,IAArB,EAA2B,gBAA3B;;AACA,cAAI8S,KAAK,CAACqI,UAAD,CAAL,IAAqB,KAAzB,EAAgC;AAC/B5B,YAAAA,YAAY,CAACnR,KAAb,CAAmB,IAAnB,EAAyB8D,IAAzB,CACC,YAAM;AACL;AACA,mBAAI,CAACxE,MAAL,CAAY0T,OAAZ,CAAoBD,UAApB;AACA,aAJF,EAKC,YAAM;AACL;AACA,mBAAI,CAACzT,MAAL,CAAY0T,OAAZ,CAAoBD,UAApB;AACA,aARF;AAUA;AACD,SAfD;AAgBA,OAlBD;AAmBA;;AAED,QAAIpW,MAAM,CAACgR,OAAP,GAAiB,CAArB,EAAwB;AACvB,UAAI,wBAAShW,QAAQ,CAACC,IAAlB,EAAwB,iBAAxB,KAA8C,KAAlD,EAAyD;AACxD+E,QAAAA,MAAM,CAACsS,QAAP,CAAgB;AACfhS,UAAAA,GAAG,EAAE,CADU;AAEfiS,UAAAA,QAAQ,EAAE;AAFK,SAAhB;AAIA,OALD,MAKO;AACN,aAAK5P,MAAL,CAAY2T,OAAZ;AACA;AACD;;AAEDtW,IAAAA,MAAM,CAACC,gBAAP,CAAwB,QAAxB,EAAkC,YAAM;AACvC,UAAMwR,SAAS,GAAGlS,IAAI,CAAC0H,GAAL,CACjBjM,QAAQ,CAACiW,eAAT,CAAyBQ,SADR,EAEjBzW,QAAQ,CAACC,IAAT,CAAcwW,SAFG,EAGjBzR,MAAM,CAACgR,OAHU,CAAlB;AAKA,oCAAYhW,QAAQ,CAACC,IAArB,EAA2B,cAA3B,EAA2CwW,SAAS,GAAG,CAAvD;;AACA,UAAI+C,YAAY,CAACjD,MAAb,IAAuB,KAA3B,EAAkC;AACjC,YAAIE,SAAS,GAAG,CAAhB,EAAmB;AAClB,eAAI,CAAC9O,MAAL,CAAY2T,OAAZ;AACA,SAFD,MAEO;AACN,eAAI,CAAC3T,MAAL,CAAY4T,MAAZ;AACA;AACD,OAbsC,CAcvC;;;AACA,UACC/B,YAAY,CAACjD,MAAb,IACA,wBAASvW,QAAQ,CAACC,IAAlB,EAAwB,kBAAxB,CADA,IAEAwW,SAAS,GAAG,CAFZ,IAGAlS,IAAI,CAAC0H,GAAL,CACCjM,QAAQ,CAACiW,eAAT,CAAyBC,YAD1B,EAEClW,QAAQ,CAACC,IAAT,CAAciW,YAFf,KAICO,SAAS,GAAGzR,MAAM,CAACsI,WAAnB,GAAiC,EARnC,EASE;AACD,YAAItN,QAAQ,CAACkI,aAAT,CAAuB,yBAAvB,CAAJ,EAAuD;AACtD,cAAMsT,SAAS,GAAG,KAAI,CAAC7T,MAAL,CAAYkT,WAAZ,GAA0B,CAA5C;;AACA,eAAI,CAAClT,MAAL,CAAY4T,MAAZ;;AACA,eAAI,CAAC5T,MAAL,CAAY0T,OAAZ,CAAoBG,SAApB,EAA+B,CAA/B,EAAkC,KAAlC;;AACAhC,UAAAA,YAAY,CAACnR,KAAb,GAAqB8D,IAArB,CACC,YAAM,CACL;AACA;AACA;AACA,WALF,EAMC,YAAM,CACL;AACA;AACA;AACA,WAVF;AAYA;AACD;AACD,KA3CD;AA6CAqN,IAAAA,YAAY,CAAC9C,KAAb,CAAmBzR,gBAAnB,CAAoC,OAApC,EAA6C,UAACZ,CAAD,EAAY;AACxD,UAAMgK,GAAG,GACR,KAAI,CAAC1G,MAAL,CAAYiT,MAAZ,CAAmB,KAAI,CAACjT,MAAL,CAAYkT,WAA/B,EAA4C9Z,YAA5C,CACC,UADD,CADD;;AAIA,UACCyY,YAAY,CAACjD,MAAb,IAAuB,KAAvB,IACAlS,CAAC,CAACwS,MAAF,CAAS9K,KAAT,GAAiB,CADjB,IAEA,KAAI,CAACmH,YAAL,CAAkBnS,YAAlB,CAA+B,UAA/B,KAA8CsN,GAH/C,EAIE;AACD8E,QAAAA,gBAAgB,CAACsI,KAAjB;AACA;AACD,KAZD;;AAcApF,6CAAoBmB,aAApB,CAAkCjO,SAAlC,CAA4C,UAAAgN,MAAM,EAAI;AACrD,UAAIA,MAAJ,EAAY;AACX,aAAI,CAAC5O,MAAL,CAAY2T,OAAZ;;AACA,YAAMjN,GAAG,GACR,KAAI,CAAC1G,MAAL,CAAYiT,MAAZ,CAAmB,KAAI,CAACjT,MAAL,CAAYkT,WAA/B,EAA4C9Z,YAA5C,CACC,UADD,CADD;;AAIAoS,QAAAA,gBAAgB,CACdQ,KADF,CACQtF,GADR,EAEElC,IAFF,CAEO,UAAA6I,UAAU,EAAI,CAAE,CAFvB,EAGEhB,KAHF,CAGQ,UAAAC,KAAK,EAAI,CAAE,CAHnB,EAIEC,OAJF,CAIU,YAAM,CAAE,CAJlB;AAKA,OAXD,MAWO;AACN,YAAMwH,SAAS,GACd,KAAI,CAAC/T,MAAL,CAAYiT,MAAZ,CAAmB,KAAI,CAACjT,MAAL,CAAYkT,WAA/B,EAA4C9Z,YAA5C,CACC,WADD,CADD;;AAIAoS,QAAAA,gBAAgB,CAAC9K,KAAjB,CAAuBuR,OAAO,GAAG,GAAV,GAAgB8B,SAAvC,EAAkD7B,SAAlD;;AACA,aAAI,CAAClS,MAAL,CAAY4T,MAAZ;AACA;AACD,KApBD;;AAsBA,QAAII,UAAU,GAAG5V,KAAK,CAACC,IAAN,CAChBhG,QAAQ,CAACiG,gBAAT,CAAuC,kBAAvC,CADgB,CAAjB;AAIAjG,IAAAA,QAAQ,CAACiF,gBAAT,CACC,QADD,EAEC,wBAAS,YAAM;AACd,UAAI2W,gBAAgB,GAAG,KAAvB;AACAD,MAAAA,UAAU,CAACzV,OAAX,CAAmB,UAAAuC,MAAM,EAAI;AAC5B,YAAIoT,iBAAiB,GAAGrC,YAAY,CAAC3Y,OAAb,CAAqB4J,qBAArB,EAAxB;;AACA,YAAIX,KAAK,GAAG,KAAI,CAACgS,eAAL,CAAqBD,iBAArB,EAAwCpT,MAAxC,CAAZ;;AACA,YAAIqB,KAAJ,EAAW;AACV8R,UAAAA,gBAAgB,GAAG,IAAnB;AACA;AACD,OAND;;AAOA,UAAI,KAAI,CAACG,YAAL,CAAkB,KAAI,CAACpU,MAAvB,CAAJ,EAAoC;AACnC,YAAIiU,gBAAJ,EAAsB;AACrB,cAAI,CAAC,wBAASpC,YAAY,CAAC3Y,OAAtB,EAA+B,WAA/B,CAAL,EAAkD;AACjD2Y,YAAAA,YAAY,CAAC3Y,OAAb,CAAqBmI,SAArB,CAA+BC,GAA/B,CAAmC,WAAnC;AACA;AACD,SAJD,MAIO;AACN,cAAI,wBAASuQ,YAAY,CAAC3Y,OAAtB,EAA+B,WAA/B,CAAJ,EAAiD;AAChD2Y,YAAAA,YAAY,CAAC3Y,OAAb,CAAqBmI,SAArB,CAA+BgT,MAA/B,CAAsC,WAAtC;AACA;AACD;AACD;AACD,KApBD,EAoBG,GApBH,CAFD;AAwBA;;;;WAED,sBAAqBrU,MAArB,EAAqC;AACpC,aAAOA,MAAM,CAACiT,MAAP,CAAcjT,MAAM,CAACkT,WAArB,EAAkC9Z,YAAlC,CACN,UADM,CAAP;AAGA;;;WAED,yBAAwBkb,KAAxB,EAA+BC,GAA/B,EAAoC;AACnC,UAAIC,KAAK,GAAGD,GAAG,CAACzR,qBAAJ,EAAZ;AAEA,aAAO,EACNwR,KAAK,CAAC3W,GAAN,GAAY6W,KAAK,CAAC5W,MAAlB,IACA0W,KAAK,CAACxW,KAAN,GAAc0W,KAAK,CAAC3W,IADpB,IAEAyW,KAAK,CAAC1W,MAAN,GAAe4W,KAAK,CAAC7W,GAFrB,IAGA2W,KAAK,CAACzW,IAAN,GAAa2W,KAAK,CAAC1W,KAJb,CAAP;AAMA;;;WAED,0BAAyBkC,MAAzB,EAAyC;AACxC,oCAAY3H,QAAQ,CAACC,IAArB,EAA2B,aAA3B,EAA0C0H,MAAM,CAACkT,WAAP,IAAsB,CAAhE;AACA,oCACC7a,QAAQ,CAACC,IADV,EAEC,WAFD,EAGC0H,MAAM,CAACkT,WAAP,IAAsBlT,MAAM,CAACiT,MAAP,CAAcpZ,MAAd,GAAuB,CAH9C;AAKA,WAAKmY,UAAL,CAAgB7F,SAAhB,GAA4B,CAACnM,MAAM,CAACkT,WAAP,GAAqB,CAAtB,EAC1BuB,QAD0B,GAE1BC,QAF0B,CAEjB,CAFiB,EAEd,GAFc,CAA5B;;AAGA,UAAI,KAAK3C,QAAL,IAAiB,KAAKA,QAAL,CAAclY,MAAd,GAAuB,CAA5C,EAA+C;AAC9C,aAAKkY,QAAL,CAAcxT,OAAd,CAAsB,UAAAtB,IAAI;AAAA,iBAAI,8BAAYA,IAAZ,EAAkB,WAAlB,CAAJ;AAAA,SAA1B;AACA,YAAM0X,UAAU,GAAG,KAAK5C,QAAL,CAAc/R,MAAM,CAACkT,WAArB,CAAnB;AACA,gCAASyB,UAAT,EAAqB,WAArB;AACA;AACD;;;;;;;;;;;;;;;;;;;AC7RF;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;IAGaC,wBADZ,0BAAU;AAAE3b,EAAAA,SAAS,EAAE;AAAb,CAAV,2CAKA,uBAAoBC,OAApB,EAA0C;AAAA;;AAAA;;AAAA,OAAtBA,OAAsB,GAAtBA,OAAsB;AACzC,OAAKuS,KAAL,GAAarN,KAAK,CAACC,IAAN,CACZ,KAAKnF,OAAL,CAAaoF,gBAAb,CAA8B,cAA9B,CADY,CAAb;AAGA,OAAKiN,YAAL,GAAoB,KAAKrS,OAAL,CAAaqH,aAAb,CACnB,eADmB,CAApB;AAIA,MAAMiL,gBAAgB,GAAG,IAAI9J,kCAAJ,CACxB,KAAK6J,YADmB,EAExB,eAFwB,CAAzB;AAKA,OAAKE,KAAL,CAAWlN,OAAX,CAAmB,UAAAtB,IAAI,EAAI;AAC1BA,IAAAA,IAAI,CAACK,gBAAL,CAAsB,OAAtB,EAA+B,UAAAZ,CAAC,EAAI;AACnCA,MAAAA,CAAC,CAAC+B,cAAF;AAEA,0CAAe,KAAI,CAAC8M,YAAL,CAAkBzI,qBAAlB,GAA0CnF,GAA1C,GAAgD,GAA/D;AAEAyD,MAAAA,UAAU,CAAC,YAAM;AAChB,aAAI,CAACqK,KAAL,CAAWlN,OAAX,CAAmB,UAAAsW,CAAC;AAAA,iBAAI,8BAAYA,CAAZ,EAAe,WAAf,CAAJ;AAAA,SAApB;;AACA,gCAAS5X,IAAT,EAAe,WAAf;AAEA,YAAMyJ,GAAG,GAAGzJ,IAAI,CAAC7D,YAAL,CAAkB,UAAlB,CAAZ;AACAoS,QAAAA,gBAAgB,CACdQ,KADF,CACQtF,GADR,EAEElC,IAFF,CAEO,UAAA6I,UAAU,EAAI,CAAE,CAFvB,EAGEhB,KAHF,CAGQ,UAAAC,KAAK,EAAI,CAAE,CAHnB,EAIEC,OAJF,CAIU,YAAM,CAAE,CAJlB;AAKA,OAVS,EAUP,GAVO,CAAV;AAWA,KAhBD;AAiBA,GAlBD;AAmBA;;;;;;;;;;;;;;;AC3CF;;AACA;;AACA;;;;;;;;;;IAMauI,uCADZ,0BAAU;AAAE7b,EAAAA,SAAS,EAAE;AAAb,CAAV;AAKA,wCAAoBC,OAApB,EAA0C;AAAA;;AAAA;;AAAA,SAAtBA,OAAsB,GAAtBA,OAAsB;AACzC,SAAK8F,KAAL,GAAa,KAAK9F,OAAL,CAAaqH,aAAb,CACZ,kCADY,CAAb;AAIA,SAAKwU,WAAL;AACA1X,IAAAA,MAAM,CAACC,gBAAP,CACC,QADD,EAEC,wBAAS,YAAM;AACd,WAAI,CAACyX,WAAL;AACA,KAFD,EAEG,GAFH,CAFD;AAMA;;;;WAED,uBAAsB;AAAA;;AACrB,UAAI1X,MAAM,CAACqI,UAAP,IAAqB,GAAzB,EAA8B;AAC7B,YAAI,CAAC,KAAKzD,KAAV,EAAiB;AAChB,eAAKA,KAAL,GAAa,IAAIO,WAAW,CAACC,KAAhB,CAAsB;AAClCC,YAAAA,cAAc,EAAE,KAAKxJ,OADa;AAElCyJ,YAAAA,WAAW,EAAE,SAFqB;AAGlCC,YAAAA,MAAM,EAAEvF,MAAM,CAACsI,WAAP,GAAqB,CAAC,GAHI;AAGC;AACnC5F,YAAAA,QAAQ,EAAE,oBAAM;AACf,qBAAO,MAAI,CAAC7G,OAAL,CAAauE,YAApB;AACA;AANiC,WAAtB,EAQX4T,QARW,CASXnB,QAAQ,CAAC7R,IAAT,CAAc,KAAKW,KAAnB,EAA0B,CAA1B,EAA6B;AAC5BhB,YAAAA,KAAK,EAAE,OADqB;AAE5BD,YAAAA,MAAM,EAAE,OAFoB;AAG5BF,YAAAA,IAAI,EACH,KAAK3E,OAAL,CAAa4J,qBAAb,GAAqCjF,IAArC,GACC,EADD,IAEAR,MAAM,CAACqI,UAAP,GAAoB,CAFpB,GAGG,OAHH,GAIG,GARwB;AAS5B/H,YAAAA,GAAG,EAAE,QATuB;AASb;AACf4M,YAAAA,IAAI,EAAE2G,MAAM,CAACC;AAVe,WAA7B,CATW,EAsBZ;AAtBY,WAuBXnO,KAvBW,CAwBX,KAAK9J,OAAL,CAAa+J,OAAb,CAAqB,WAArB,IACGC,gCADH,GAEGC,2BA1BQ,CAAb;AA4BA;;AACD,aAAKlB,KAAL,CAAW+S,MAAX,CAAkB,IAAlB;AACA,OAhCD,MAgCO;AACN,YAAI,KAAK/S,KAAT,EAAgB;AACfiO,UAAAA,QAAQ,CAACtK,GAAT,CAAa,KAAK1M,OAAlB,EAA2B;AAAEiX,YAAAA,UAAU,EAAE;AAAd,WAA3B;AACA,eAAKlO,KAAL,CAAWmO,WAAX,CAAuB,IAAvB;AACA,eAAKnO,KAAL,CAAWK,OAAX,CAAmB,IAAnB;AACA;;AACD,aAAKL,KAAL,GAAarI,SAAb;AACA;AACD;;;;;;;;;;;;;;;;;;;ACnEF;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAGO,IAAMuJ,qBAAqB,GAAG,IAAIX,WAAW,CAACyS,UAAhB,EAA9B;;AACP,IAAMC,KAAK,GAAG7c,QAAQ,CAACkI,aAAT,CAAuB,iBAAvB,CAAd;AACO,IAAM2C,0BAA0B,GAAG,IAAIV,WAAW,CAACyS,UAAhB,CAA2B;AACpEvQ,EAAAA,SAAS,EAAEwQ,KAAK,IAAI7X;AADgD,CAA3B,CAAnC;;AAGA,IAAMoU,iCAAiC,GAAG,IAAIjP,WAAW,CAACyS,UAAhB,CAA2B;AAC3EvQ,EAAAA,SAAS,EAAEwQ,KAAK,IAAI7X;AADuD,CAA3B,CAA1C;;AAGA,IAAMqU,4BAA4B,GAAG,IAAIlP,WAAW,CAACyS,UAAhB,EAArC;;AACP,CAACxD,iCAAD,EAAoCC,4BAApC,EAAkEnT,OAAlE,CACC,UAAA4W,UAAU;AAAA,SACTA,UAAU,CAACC,SAAX,CAAqB,YAAM;AAC1B,QAAI/X,MAAM,CAACqI,UAAP,IAAqB,GAAzB,EAA8B;AAC7B,aACCyP,UAAU,CAACtL,IAAX,GAAkBnF,SAAlB,CAA4B2J,OAA5B,IACA8G,UAAU,CAACtL,IAAX,GAAkBnF,SAAlB,CAA4BoK,SAF7B;AAIA,KALD,MAKO;AACN,aAAO,CAAP;AACA;AACD,GATD,CADS;AAAA,CADX;AAcA,IAAMuG,UAAU,GAAG,sBAAQ,CAC1BC,2BAD0B,EAE1B7T,2BAF0B,EAG1BvD,mCAH0B,EAI1BmC,uBAJ0B,EAK1BsR,qCAL0B,EAM1B3B,qCAN0B,EAO1B9B,qDAP0B,EAQ1B0G,mBAR0B,EAS1BnU,qBAT0B,EAU1B+C,yCAV0B,EAW1BxK,qBAX0B,EAY1B8b,+CAZ0B,EAa1BhH,6BAb0B,EAc1BhO,qCAd0B,EAe1BjB,mCAf0B,EAgB1BU,yBAhB0B,EAiB1BzC,mCAjB0B,CAAR,CAAnB;AAoBAuY,UAAU,CAAChd,QAAQ,CAACC,IAAV,CAAV;;AAEAoJ,mCAAiBC,YAAjB,CAA8BC,SAA9B,CAAwC,UAAAyL,UAAU,EAAI;AACrDgI,EAAAA,UAAU,CAAChI,UAAD,CAAV;AACA,CAFD;;AAIA,IAAIhQ,MAAM,CAACiQ,QAAP,CAAgBI,IAApB,EAA0B;AACzB,MAAM6H,IAAI,GAAGld,QAAQ,CAACmd,cAAT,CAAwBnY,MAAM,CAACiQ,QAAP,CAAgBI,IAAhB,CAAqB+H,SAArB,CAA+B,CAA/B,CAAxB,CAAb;;AACA,MAAIF,IAAJ,EAAU;AACT,QAAMxY,OAAO,GACXwY,IAAI,CAACtS,OAAL,CAAa,iBAAb,CAAD,IAAoD5F,MADrD;AAEA,wCACCN,OAAO,YAAY2Y,WAAnB,GACGH,IAAI,CAACzS,qBAAL,GAA6BnF,GAA7B,GACAZ,OAAO,CAAC+F,qBAAR,GAAgCnF,GAFnC,GAGG4X,IAAI,CAACzS,qBAAL,GAA6BnF,GAJjC,EAKC/D,SALD,EAMCA,SAND,EAOCA,SAPD,EAQCmD,OARD;AAUA;AACD;;;;;;;;;;;;;;ACvFM,SAAS4Y,WAAT,CACNC,WADM,EAENvZ,KAFM,EAGNwZ,QAHM,EAIN9V,QAJM,EAKL;AACD,SAAQ8V,QAAQ,GAAGD,WAAZ,GAA2B7V,QAA3B,GAAsC1D,KAA7C;AACA;;;;;;;;;;;;;;ACPD;;AACA;;;;;;;;;;IAGaiZ,4BADZ,0BAAU;AAAErc,EAAAA,SAAS,EAAE;AAAb,CAAV,2CAGA,2BAAoBC,OAApB,EAA0C;AAAA;;AAAA,OAAtBA,OAAsB,GAAtBA,OAAsB;AACzC,OAAK4c,QAAL,GAAgB,IAAIC,qBAAJ,CAAa7c,OAAb,EAAsB,EAAtB,CAAhB;AACA;;;;;;;;;;;;;;;;ACRF;;AACA;;AACA;;AAEA;;AACA;;AAEA;;;;;;;;;;;;;;AAEA,IAAM8c,cAAc,GAAG,UAAvB;;IAsBaD;AAMZ,oBAAmB7c,OAAnB,EAAyCgC,OAAzC,EAAoE;AAAA;;AAAA;;AAAA,SAgB5DA,OAhB4D,GAgBjC;AAClC+a,MAAAA,WAAW,EAAE,WADqB;AAElCC,MAAAA,iBAAiB,EAAE,WAFe;AAGlCC,MAAAA,WAAW,EAAE,QAHqB;AAIlCC,MAAAA,eAAe,EAAE,sBAJiB;AAKlCC,MAAAA,cAAc,EAAE,UALkB;AAMlCC,MAAAA,SAAS,EAAE,gBANuB;AAOlCC,MAAAA,gBAAgB,EAAE,mBAPgB;AAQlCC,MAAAA,YAAY,EAAE,IARoB;AASlCC,MAAAA,kBAAkB,EAAE,GATc;AAUlCC,MAAAA,UAAU,EAAE,IAVsB;AAWlCC,MAAAA,aAAa,EAAE,IAXmB;AAYlCC,MAAAA,mBAAmB,EAAE,KAZa;AAalCC,MAAAA,kBAAkB,EAAE,aAbc;AAclCC,MAAAA,kBAAkB,EAAE,aAdc;AAelCC,MAAAA,kBAAkB,EAAE,aAfc;AAgBlCC,MAAAA,YAAY,EAAE;AAhBoB,KAhBiC;AAAA,SAuC5DC,eAvC4D,GAuC1C,KAvC0C;AAAA,SA0C5DC,gBA1C4D,GA0CzC,kDAAsB,gBAAtB,CA1CyC;;AAAA,SAkM5DC,WAlM4D,GAkM9C,UAACC,KAAD,EAAkB;AACvC;AACA,UAAMC,OAAO,GAAGD,KAAK,IAAKA,KAAK,CAACE,aAAhC;;AACA,UAAID,OAAO,IAAIA,OAAO,CAACE,OAAR,KAAoB,GAAnC,EAAwC;AACvCH,QAAAA,KAAK,CAAC3Y,cAAN;AACA;;AAED,UAAMyQ,MAAM,GAAG,kEACdmI,OADc,EAEd,KAAI,CAACnc,OAAL,CAAa4b,kBAFC,CAAf;AAIA,UAAI7b,IAAI,GAAGiU,MAAM,CAAC8G,cAAD,CAAjB;;AAEA,UAAI,CAAC/a,IAAL,EAAW;AACVA,QAAAA,IAAI,GAAGoc,OAAO,CAACrB,cAAD,CAAd;AACA;;AAED,UAAI9G,MAAJ,EAAY;AACX6G,QAAAA,QAAQ,CAACzC,WAAT,CAAqBpE,MAArB,EAA6BjU,IAAI,CAACC,OAAlC,EAA2CoF,MAA3C;AACA;AACD,KAtNmE;;AAAA,SAAjDpH,OAAiD,GAAjDA,OAAiD;AACnE,SAAKgC,OAAL,mCACI,KAAKA,OADT,GAEIA,OAFJ;;AAKA,QAAI,CAAC,KAAKA,OAAL,CAAaiC,aAAlB,EAAiC;AAChC,WAAKjC,OAAL,CAAaiC,aAAb,GAA6B,kEAC5BjE,OAD4B,EAE5B,KAAKgC,OAAL,CAAa2b,kBAFe,EAG5B,KAH4B,CAA7B;AAKA;;AAED,SAAKhV,IAAL;AACA;;;;SApBD;AACA,mBAA6B;AAC5B,aAAO,KAAK2V,QAAZ;AACA;;;WA4DD,kBAAkB;AACjB,UACC,KAAKtc,OAAL,CAAa0b,mBAAb,IACAvZ,MAAM,CAACoa,UAAP,IAAqB,KAAKvc,OAAL,CAAasb,YADlC,IAEA,wBAAS,KAAKtd,OAAd,EAAuB,KAAKgC,OAAL,CAAaqb,gBAApC,CAHD,EAIE;AACD,gCAAS,KAAKrd,OAAd,EAAuB,KAAKgC,OAAL,CAAaob,SAApC;AACA;;AACD,oCAAY,KAAKpd,OAAjB,EAA0B,KAAKgC,OAAL,CAAaqb,gBAAvC;AACA,aAAO,wBAAS,KAAKrd,OAAd,EAAuB,KAAKgC,OAAL,CAAaob,SAApC,CAAP;AACA;;;WAED,kBAAS;AACR,UAAI,KAAK1H,MAAL,EAAJ,EAAmB;AAClB,YAAI,KAAK1T,OAAL,CAAawb,UAAjB,EAA6B;AAC5B,eAAK/X,IAAL;AACA;AACD,OAJD,MAIO;AACN,aAAK+Y,IAAL;AACA;AACD;;;WAED,gBAAO;AAAA;;AACN,UAAI,KAAKT,eAAL,IAAwB,KAAKrI,MAAL,EAA5B,EAA2C;AAC1C;AACA;;AAED,UAAI,KAAK1T,OAAL,CAAayb,aAAb,IAA8B,KAAKzZ,MAAvC,EAA+C;AAC9C,YAAMya,QAAQ,cAAO,KAAKzc,OAAL,CAAa2b,kBAApB,iBAA4C,KAAK3Z,MAAL,CAAY0a,EAAxD,QAAd;AACA,YAAMC,OAAO,GAAGzZ,KAAK,CAACC,IAAN,CACf,KAAKnB,MAAL,CAAYoB,gBAAZ,WACIqZ,QADJ,cACgB,KAAKzc,OAAL,CAAaob,SAD7B,eAC2CqB,QAD3C,cACuD,KAAKzc,OAAL,CAAakb,eADpE,EADe,EAId0B,MAJc,CAIP,UAACC,MAAD;AAAA,iBAAYA,MAAM,KAAK,MAAI,CAAC7I,MAA5B;AAAA,SAJO,CAAhB;;AAMA,YAAI2I,OAAO,IAAIA,OAAO,CAAChe,MAAvB,EAA+B;AAC9B,cAAMme,gBAAgB,GAAGH,OAAO,CAACC,MAAR,CAAe,UAACC,MAAD,EAAY;AACnD,gBAAME,gBAAgB,GAAGF,MAAM,CAAC/B,cAAD,CAA/B;AACA,mBAAOiC,gBAAgB,IAAIA,gBAAgB,CAAChB,eAA5C;AACA,WAHwB,CAAzB;;AAKA,cAAIe,gBAAgB,CAACne,MAArB,EAA6B;AAC5B;AACA;;AAEDge,UAAAA,OAAO,CAACtZ,OAAR,CAAgB,UAACwZ,MAAD;AAAA,mBACfhC,QAAQ,CAACzC,WAAT,CAAqByE,MAArB,EAA4CpZ,IAA5C,EADe;AAAA,WAAhB;AAGA;AACD;;AAED,WAAKuZ,WAAL,CAAiB,KAAKhf,OAAtB,EAA+B,KAAKse,QAApC;AACA;;;WAED,gBAAO;AACN,UAAI,KAAKP,eAAL,IAAwB,CAAC,KAAKrI,MAAL,EAA7B,EAA4C;AAC3C;AACA;;AAED,WAAKuJ,YAAL,CAAkB,KAAKjf,OAAvB,EAAgC,KAAKse,QAArC;AACA;;;WAED,mBAAU;AACT,UAAMte,OAAO,GAAG,KAAKA,OAArB;;AAEA,UAAIA,OAAO,CAAC8c,cAAD,CAAX,EAA6B;AAC5B9c,QAAAA,OAAO,CAAC8c,cAAD,CAAP,GAA0B,IAA1B;AAEA,sCAAY9c,OAAZ,EAAqB,KAAKgC,OAAL,CAAamb,cAAlC;AACA,sCAAYnd,OAAZ,EAAqB,KAAKgC,OAAL,CAAakb,eAAlC;AACA,sCAAYld,OAAZ,EAAqB,KAAKgC,OAAL,CAAaob,SAAlC;;AAEA,YAAI,KAAKpb,OAAL,CAAaib,WAAjB,EAA8B;AAC7Bjd,UAAAA,OAAO,CAAC+E,KAAR,CAAc,KAAK/C,OAAL,CAAaib,WAA3B,IAA0C,IAA1C;AACA;AACD;AACD;;;WAED,gBAAe;AAAA;;AACd;AACA,WAAKqB,QAAL,GAAgBpZ,KAAK,CAACC,IAAN,CACfhG,QAAQ,CAACiG,gBAAT,YACK,KAAKpD,OAAL,CAAa8b,YADlB,iBACoC,KAAK9d,OAAL,CAAa0e,EADjD,mBAC2D,KAAK1c,OAAL,CAAa4b,kBADxE,iBACgG,KAAK5d,OAAL,CAAa0e,EAD7G,SADe,CAAhB,CAFc,CAQd;;AACA,UAAMQ,OAAO,GAAGha,KAAK,CAACC,IAAN,CACfhG,QAAQ,CAACiG,gBAAT,YACK,KAAKpD,OAAL,CAAa6b,kBADlB,oBADe,CAAhB;;AAKA,kCAAqBqB,OAArB,8BAA8B;AAAzB,YAAM9X,MAAM,eAAZ;AACJ,YAAM4O,MAAM,GAAG,kEACd5O,MADc,EAEd,KAAKpF,OAAL,CAAa4b,kBAFC,CAAf;;AAIA,YAAI5H,MAAM,KAAK,IAAX,IAAmBA,MAAM,KAAK,KAAKhW,OAAvC,EAAgD;AAC/C,eAAKgW,MAAL,GAAcA,MAAd;AACA,eAAKsI,QAAL,CAAcpb,IAAd,CAAmBkE,MAAnB;AACA;AACD;;AAED,WAAKpD,MAAL,GAAc,KAAKhC,OAAL,CAAaiC,aAA3B,CAzBc,CA2Bd;;AACA,UAAI,EAAE6Y,cAAc,IAAI,KAAK9c,OAAzB,CAAJ,EAAuC;AACtC;AACA,aAAKse,QAAL,CAAcjZ,OAAd,CAAsB,UAAC8Y,OAAD;AAAA,iBACrBA,OAAO,CAAC/Z,gBAAR,CAAyB,OAAzB,EAAkC,MAAI,CAAC6Z,WAAvC,EAAoD,KAApD,CADqB;AAAA,SAAtB;AAGA;;AAED,UAAI,KAAKja,MAAT,EAAiB;AAChBkB,QAAAA,KAAK,CAACC,IAAN,CACC,KAAKnB,MAAL,CAAYoB,gBAAZ,YACK,KAAKpD,OAAL,CAAa6b,kBADlB,4BACoD,KAAK7b,OAAL,CAAa2b,kBADjE,iBACyF,KAAK3Z,MAAL,CAAY0a,EADrG,SADD,EAIErZ,OAJF,CAIU,UAACrF,OAAD,EAAa;AACtB,gBAAI,CAACmf,yBAAL,CACC,kEACCnf,OADD,EAEC,MAAI,CAACgC,OAAL,CAAa4b,kBAFd,CADD,EAKC,CAAC5d,OAAD,CALD;AAOA,SAZD;AAaA,OAdD,MAcO;AACN,aAAKmf,yBAAL,CAA+B,KAAKnf,OAApC,EAA6C,KAAKse,QAAlD;AACA;;AAED,8BAAS,KAAKte,OAAd,EAAuB,KAAKgC,OAAL,CAAamb,cAApC;AAEA,WAAKnd,OAAL,CAAa8c,cAAb,IAA+B,IAA/B;AACA;;;WAwBD,qBAAoBsC,eAApB,EAAkDd,QAAlD,EAAwE;AAAA;;AACvE,WAAKN,gBAAL,CAAsBoB,eAAtB,EAAuC,MAAvC;AAEA,oCAAYA,eAAZ,EAA6B,KAAKpd,OAAL,CAAamb,cAA1C;AACA,8BAASiC,eAAT,EAA0B,KAAKpd,OAAL,CAAakb,eAAvC;;AACA,UAAI,KAAKlb,OAAL,CAAaib,WAAjB,EAA8B;AAC7BmC,QAAAA,eAAe,CAACra,KAAhB,CAAsB,KAAK/C,OAAL,CAAaib,WAAnC,IACCmC,eAAe,CAAC/J,YAAhB,GAA+B,IADhC;AAEA;;AAED,UAAIiJ,QAAQ,IAAIA,QAAQ,CAAC3d,MAAzB,EAAiC;AAChC2d,QAAAA,QAAQ,CAACjZ,OAAT,CAAiB,UAAC8Y,OAAD,EAAa;AAC7B,kCAASA,OAAT,EAAkB,MAAI,CAACnc,OAAL,CAAa+a,WAA/B;AACAoB,UAAAA,OAAO,CAAC7V,YAAR,CAAqB,eAArB,EAAsC,MAAtC;AACA,SAHD;AAIA;;AAED,UAAI,KAAKtE,MAAT,EAAiB;AAChB,gCAAS,KAAKA,MAAd,EAAsB,KAAKhC,OAAL,CAAa+a,WAAnC;AACA;;AAED,WAAKgB,eAAL,GAAuB,IAAvB;AAEA,8DACCqB,eADD,EAEC,YAAM;AACL,sCAAYA,eAAZ,EAA6B,MAAI,CAACpd,OAAL,CAAakb,eAA1C;AACA,gCAASkC,eAAT,EAA0B,MAAI,CAACpd,OAAL,CAAamb,cAAvC;AACA,gCAASiC,eAAT,EAA0B,MAAI,CAACpd,OAAL,CAAaob,SAAvC;AAEA,cAAI,CAACW,eAAL,GAAuB,KAAvB;;AACA,YAAI,MAAI,CAAC/b,OAAL,CAAaib,WAAjB,EAA8B;AAC7BmC,UAAAA,eAAe,CAACra,KAAhB,CAAsB,MAAI,CAAC/C,OAAL,CAAaib,WAAnC,IAAkD,IAAlD;AACA;;AAED,cAAI,CAACe,gBAAL,CAAsBoB,eAAtB,EAAuC,OAAvC;AACA,OAbF,EAcC,KAAKpd,OAAL,CAAaub,kBAdd;AAgBA;;;WAED,sBAAqB6B,eAArB,EAAmDd,QAAnD,EAAyE;AAAA;;AACxE,WAAKN,gBAAL,CAAsBoB,eAAtB,EAAuC,MAAvC;;AAEA,UAAI,KAAKpd,OAAL,CAAaib,WAAjB,EAA8B;AAC7BmC,QAAAA,eAAe,CAACra,KAAhB,CAAsB,KAAK/C,OAAL,CAAaib,WAAnC,IACCmC,eAAe,CAAC/J,YAAhB,GAA+B,IADhC;AAEA;;AAED,8BAAS+J,eAAT,EAA0B,KAAKpd,OAAL,CAAakb,eAAvC;AACA,oCAAYkC,eAAZ,EAA6B,KAAKpd,OAAL,CAAamb,cAA1C;AACA,oCAAYiC,eAAZ,EAA6B,KAAKpd,OAAL,CAAaob,SAA1C,EAVwE,CAWxE;;AACAgC,MAAAA,eAAe,CAACtT,WAAhB,CAZwE,CAY3C;;AAE7B,UAAIwS,QAAQ,IAAIA,QAAQ,CAAC3d,MAAzB,EAAiC;AAChC2d,QAAAA,QAAQ,CAACjZ,OAAT,CAAiB,UAAC8Y,OAAD,EAAa;AAC7B,cAAMnI,MAAM,GAAG,kEACdmI,OADc,EAEd,MAAI,CAACnc,OAAL,CAAa4b,kBAFC,CAAf;;AAKA,cAAI5H,MAAM,KAAK,IAAf,EAAqB;AACpB,gBAAI,CAAC,wBAASA,MAAT,EAAiB,MAAI,CAAChU,OAAL,CAAaob,SAA9B,CAAL,EAA+C;AAC9C,4CAAYe,OAAZ,EAAqB,MAAI,CAACnc,OAAL,CAAa+a,WAAlC;AACAoB,cAAAA,OAAO,CAAC7V,YAAR,CAAqB,eAArB,EAAsC,OAAtC;AACA;AACD;AACD,SAZD;AAaA;;AAED,UAAI,KAAKtE,MAAT,EAAiB;AAChB,YAAMya,QAAQ,cAAO,KAAKzc,OAAL,CAAa2b,kBAApB,iBAA4C,KAAK3Z,MAAL,CAAY0a,EAAxD,QAAd;AACA,YAAMC,OAAO,GAAGzZ,KAAK,CAACC,IAAN,CACf,KAAKnB,MAAL,CAAYoB,gBAAZ,WACIqZ,QADJ,cACgB,KAAKzc,OAAL,CAAaob,SAD7B,eAC2CqB,QAD3C,cACuD,KAAKzc,OAAL,CAAakb,eADpE,EADe,EAId0B,MAJc,CAIP,UAACjD,CAAD;AAAA,iBAAOA,CAAC,KAAKyD,eAAb;AAAA,SAJO,CAAhB;;AAMA,YAAI,KAAKpb,MAAL,IAAe2a,OAAO,CAAChe,MAAR,KAAmB,CAAtC,EAAyC;AACxC,wCAAY,KAAKqD,MAAjB,EAAyB,KAAKhC,OAAL,CAAagb,iBAAtC;AACA;AACD;;AAED,WAAKe,eAAL,GAAuB,IAAvB;;AACA,UAAI,KAAK/b,OAAL,CAAaib,WAAjB,EAA8B;AAC7BmC,QAAAA,eAAe,CAACra,KAAhB,CAAsB,KAAK/C,OAAL,CAAaib,WAAnC,IAAkD,IAAlD;AACA;;AAED,8DACCmC,eADD,EAEC,YAAM;AACL,cAAI,CAACrB,eAAL,GAAuB,KAAvB;AAEA,sCAAYqB,eAAZ,EAA6B,MAAI,CAACpd,OAAL,CAAakb,eAA1C;AACA,gCAASkC,eAAT,EAA0B,MAAI,CAACpd,OAAL,CAAamb,cAAvC;;AAEA,YAAI,MAAI,CAACnb,OAAL,CAAaib,WAAjB,EAA8B;AAC7BmC,UAAAA,eAAe,CAACra,KAAhB,CAAsB,MAAI,CAAC/C,OAAL,CAAaib,WAAnC,IAAkD,IAAlD;AACA;;AAED,cAAI,CAACe,gBAAL,CAAsBoB,eAAtB,EAAuC,QAAvC;AACA,OAbF,EAcC,KAAKpd,OAAL,CAAaub,kBAdd;AAgBA;;;WAED,mCAAkCvd,OAAlC,EAAoDse,QAApD,EAAyE;AAAA;;AACxE,UAAIte,OAAJ,EAAa;AACZ,YAAM0V,MAAM,GAAG,wBAAS1V,OAAT,EAAkB,KAAKgC,OAAL,CAAaob,SAA/B,CAAf;;AAEA,YAAIkB,QAAQ,IAAIA,QAAQ,CAAC3d,MAAzB,EAAiC;AAChC2d,UAAAA,QAAQ,CAACjZ,OAAT,CAAiB,UAAC8Y,OAAD,EAAa;AAC7BzI,YAAAA,MAAM,GACH,wBAASyI,OAAT,EAAkB,MAAI,CAACnc,OAAL,CAAa+a,WAA/B,CADG,GAEH,8BAAYoB,OAAZ,EAAqB,MAAI,CAACnc,OAAL,CAAa+a,WAAlC,CAFH;AAIAoB,YAAAA,OAAO,CAAC7V,YAAR,CACC,eADD,EAECoN,MAAM,CAAC6F,QAAP,GAAkBlR,WAAlB,EAFD;AAIA,WATD;AAUA;AACD;AACD;;;WAxSD,qBACCrK,OADD,EAECgC,OAFD,EAIE;AAAA,UADDqd,MACC,uEADQ,IACR;AACD,UAAItd,IAAI,GAAG/B,OAAO,CAAC8c,cAAD,CAAlB;;AAEA,UAAI,CAAC/a,IAAD,IAASsd,MAAb,EAAqB;AACpBtd,QAAAA,IAAI,GAAG,IAAI8a,QAAJ,CAAa7c,OAAb,EAAsBgC,OAAtB,CAAP;AACA;;AAED,aAAOD,IAAP;AACA;;;;;;;;AA+RK,SAAS6a,QAAT,CACN5c,OADM,EAENgC,OAFM,EAGK;AACXsd,EAAAA,OAAO,CAAClM,KAAR,CACC,mIADD;AAGA,MAAIrR,IAAI,GAAG/B,OAAO,CAAC8c,cAAD,CAAlB;;AAEA,MAAI,CAAC/a,IAAL,EAAW;AACVA,IAAAA,IAAI,GAAG,IAAI8a,QAAJ,CAAa7c,OAAb,EAAsBgC,OAAtB,CAAP;AACA;;AAED,SAAOD,IAAP;AACA;;;;;;;;;;;;;;AC1YD;;AACA;;AACA;;AAEA;;AAEA;;AACA;;AAEA;AACA,IAAMwd,SAAS,GAAG,IAAIC,oBAAJ,EAAlB;AACA,IAAMC,QAAQ,GAAG,IAAIC,kBAAJ,CAAaH,SAAb,CAAjB;AACA,IAAMI,QAAQ,GAAG,IAAIC,UAAJ,CAAaH,QAAb,CAAjB;;AAEO,SAASI,OAAT,CAAiBC,UAAjB,EAAoC;AAC1C,SAAO,UAACC,WAAD,EAA8B;AACpC,QAAMC,WAAW,GAAG,IAAIC,GAAJ,EAApB;AACAH,IAAAA,UAAU,CAACza,OAAX,CAAmB,UAAC6a,aAAD,EAAmB;AACrC;AACA;AACA,UAAMC,SAAS,GAAGV,QAAQ,CAACzS,OAAT,CAAiBkT,aAAjB,CAAlB;;AAEA,UAAIC,SAAJ,EAAe;AACd,YAAMC,eAAe,GACpBL,WAAW,KAAK5gB,QAAQ,CAACC,IAAzB,GAAgCD,QAAhC,GAA2C4gB,WAD5C;AAEA7a,QAAAA,KAAK,CAACC,IAAN,CACCib,eAAe,CAACC,sBAAhB,CAAuCF,SAAS,CAACpgB,SAAjD,CADD,EAEEsF,OAFF,CAEU,UAACib,IAAD;AAAA,iBACTX,QAAQ,CAACY,OAAT,CAAiBJ,SAAjB,EAA4BG,IAA5B,EAAiDJ,aAAjD,CADS;AAAA,SAFV;;AAMA,YAAIC,SAAS,CAAC5U,OAAd,EAAuB;AACtByU,UAAAA,WAAW,CAACtT,GAAZ,CAAgByT,SAAhB,EAA2BD,aAA3B;AACA;AACD,OAZD,MAYO;AACN,cAAM,IAAIM,KAAJ,wCAEJN,aAAa,GAAGA,aAAa,CAACO,IAAjB,GAAwBP,aAFjC,aAAN;AAKA;AACD,KAxBD;;AA0BA,QAAIF,WAAW,CAACvgB,IAAhB,EAAsB;AACrB,UAAIihB,gBAAJ,CAAqB,UAACC,SAAD,EAAe;AACnC,YAAMC,oBAAoB,GAAG,IAAIX,GAAJ,EAA7B;AAEAU,QAAAA,SAAS,CAACtb,OAAV,CAAkB,UAACwb,QAAD,EAAc;AAC/Bb,UAAAA,WAAW,CAAC3a,OAAZ,CAAoB,UAAC6F,KAAD,EAAQ2G,GAAR;AAAA,mBACnB3M,KAAK,CAACC,IAAN,CAAW0b,QAAQ,CAACC,UAApB,EACElC,MADF,CACS,UAAC0B,IAAD;AAAA,qBAAU,kCAAcA,IAAd,CAAV;AAAA,aADT,EAEErf,GAFF,CAEM,UAACqf,IAAD;AAAA,qBAAU,kCAAcA,IAAd,CAAV;AAAA,aAFN,EAGEjb,OAHF,CAGU,UAACib,IAAD,EAAU;AAClB,kBAAMS,KAAK,GAAG7b,KAAK,CAACC,IAAN,CACbmb,IAAI,CAACD,sBAAL,CAA4BxO,GAAG,CAAC9R,SAAhC,CADa,CAAd;;AAGA,kBAAI,wBAASugB,IAAT,EAAezO,GAAG,CAAC9R,SAAnB,CAAJ,EAAmC;AAClCghB,gBAAAA,KAAK,CAAC7d,IAAN,CAAWod,IAAX;AACA;;AACDS,cAAAA,KAAK,CAAC1b,OAAN,CAAc,UAAC8a,SAAD,EAAe;AAC5BS,gBAAAA,oBAAoB,CAAClU,GAArB,CAAyByT,SAAzB,EAAmD;AAAA,yBAClDR,QAAQ,CAACY,OAAT,CAAiB1O,GAAjB,EAAsBsO,SAAtB,EAAgDjV,KAAhD,CADkD;AAAA,iBAAnD;AAGA,eAJD;AAKA,aAfF,CADmB;AAAA,WAApB;AAkBA,SAnBD;AAqBA0V,QAAAA,oBAAoB,CAACvb,OAArB,CAA6B,UAAC2b,CAAD;AAAA,iBAAOA,CAAC,EAAR;AAAA,SAA7B;AACA,OAzBD,EAyBGzV,OAzBH,CAyBWpM,QAAQ,CAACC,IAzBpB,EAyB0B;AACzB6hB,QAAAA,SAAS,EAAE,IADc;AAEzBC,QAAAA,OAAO,EAAE;AAFgB,OAzB1B;AA6BA;AACD,GA3DD;AA4DA;;;;;;;;;;;;;;ACvED;;;;;;;;AAEA;IACatB;AAGZ,oBAAoBH,QAApB,EAAwC;AAAA;;AAAA,SAFhC0B,cAEgC,GAFf,IAAIlB,GAAJ,EAEe;AAAA,SAApBR,QAAoB,GAApBA,QAAoB;AAAE;;;;WAE1C,iBACCU,SADD,EAECG,IAFD,EAGCJ,aAHD,EAIE;AAAA;;AACD;AAEA;AACA,UAAMkB,WAAW,GAAG,IAAIlB,aAAJ,CAAkBI,IAAlB,CAApB;;AAEA,UAAI,KAAKa,cAAL,CAAoBE,GAApB,CAAwBf,IAAxB,CAAJ,EAAmC;AAClC,aAAKa,cAAL,CAAoBG,GAApB,CAAwBhB,IAAxB,EAA8Bpd,IAA9B,CAAmCke,WAAnC;AACA,OAFD,MAEO;AACN,aAAKD,cAAL,CAAoBzU,GAApB,CAAwB4T,IAAxB,EAA8B,CAACc,WAAD,CAA9B;AACA;;AAEDpT,MAAAA,MAAM,CAACC,IAAP,CAAYkS,SAAS,CAACoB,OAAtB,EAA+Blc,OAA/B,CAAuC,UAACmc,QAAD,EAAc;AACpD,YAAMC,KAAY,GAAGtB,SAAS,CAACoB,OAAV,CAAkBC,QAAlB,CAArB,CADoD,CAGpD;AACA;;AACA,YAAMxL,MAAM,GAAG,KAAI,CAACyJ,QAAL,CAAczS,OAAd,CAAsByU,KAAK,CAAChD,QAA5B,CAAf;;AAEA,YAAIzI,MAAJ,EAAY;AACX,cAAM0L,UAAU,GAAGD,KAAK,CAACE,WAAN,GAAoBrB,IAApB,GAA2BnhB,QAA9C;AACA,cAAMyiB,KAAK,GAAGF,UAAU,CAACrB,sBAAX,CAAkCrK,MAAM,CAACjW,SAAzC,CAAd;AAEA,cAAM8hB,KAAK,GAAG3c,KAAK,CAACC,IAAN,CAAWyc,KAAX,EACZhD,MADY,CACL,UAACjD,CAAD;AAAA,mBAAQ8F,KAAK,CAAC7C,MAAN,GAAe6C,KAAK,CAAC7C,MAAN,CAAajD,CAAb,CAAf,GAAiC,IAAzC;AAAA,WADK,EAEZ1a,GAFY,CAER,UAACuC,CAAD;AAAA,mBAAO,KAAI,CAAC2d,cAAL,CAAoBG,GAApB,CAAwB9d,CAAxB,CAAP;AAAA,WAFQ,EAGZob,MAHY,CAGL,UAACpb,CAAD;AAAA,mBAAOA,CAAC,KAAK9C,SAAN,IAAmB8C,CAAC,KAAK,IAAhC;AAAA,WAHK,EAIZxC,MAJY,CAIL,UAAC4Q,GAAD,EAAME,GAAN;AAAA,mBAAcF,GAAG,CAACkQ,MAAJ,CAAWhQ,GAAX,CAAd;AAAA,WAJK,EAI0B,EAJ1B,EAKZ8M,MALY,CAKL,UAACmD,CAAD;AAAA,mBAAOA,CAAC,CAACX,WAAF,KAAkBK,KAAK,CAAChD,QAA/B;AAAA,WALK,CAAd;AAOA2C,UAAAA,WAAW,CAACI,QAAD,CAAX,GAAwBC,KAAK,CAACO,KAAN,GAAcH,KAAK,CAAC,CAAD,CAAnB,GAAyBA,KAAjD;AACA;AACD,OApBD;;AAsBA,UAAI,kBAAOT,WAAW,CAACa,MAAnB,CAAJ,EAAgC;AAC9Bb,QAAAA,WAAD,CAAwBa,MAAxB;AACA;AACD;;;;;;;;;;;;;;;;;;;;ACrDF;;AACA;;;;;;;;AAaA;AACO,IAAMC,SAA6B,GAAG,+BAC5C,WAD4C,EAE5C;AAAA,MAAClB,CAAD,uEAAgB,EAAhB;AAAA,2BAA6BA,CAA7B;AAAA,CAF4C,CAAtC;;AAKA,IAAMmB,eAA2C,GACvD,oCAA+B,WAA/B,EAA4C;AAAA,MAACnB,CAAD,uEAAgB,EAAhB;AAAA,2BACxCA,CADwC;AAAA,CAA5C,CADM;;;;;;;;;;;;;;;ACpBP;;AACA;;;;;;;;;;;;;;;;;;;;AAEA;IACaxB;;;;;;;WACZ,qBAAY4C,UAAZ,EAA0C;AACzC,UAAI,CAAC,kBAAOA,UAAP,CAAL,EAAyB;AACxB,eAAO,EAAP;AACA;;AACD,UAAMC,UAAU,GAAGC,aAAa,CAACF,UAAD,CAAhC;AACA,UAAMG,cAAc,GAAG,KAAKC,eAAL,CAAqBJ,UAArB,EAAiCC,UAAjC,KAAgD,EAAvE;AACA,UAAMI,iBAAiB,GACtBJ,UAAU,KAAKrU,MAAf,GAAwB,KAAK0U,WAAL,CAAiBL,UAAjB,CAAxB,GAAuD,EADxD;AAEA,aAAOI,iBAAiB,CAACX,MAAlB,CAAyBS,cAAzB,CAAP;AACA;;;WAED,sBAAaH,UAAb,EAAwD;AACvD,UAAI,CAAC,kBAAOA,UAAP,CAAL,EAAyB;AACxB,eAAO,EAAP;AACA;;AACD,UAAMC,UAAU,GAAGC,aAAa,CAACF,UAAD,CAAhC;AACA,UAAMO,YAAsC,GAAG,EAA/C;;AACA,UAAIN,UAAU,KAAKrU,MAAnB,EAA2B;AAC1B,YAAM4U,kBAAkB,GAAG,KAAKD,YAAL,CAAkBN,UAAlB,CAA3B;AACArU,QAAAA,MAAM,CAACC,IAAP,CAAY2U,kBAAZ,EAAgCvd,OAAhC,CAAwC,UAACmc,QAAD,EAAc;AACrDmB,UAAAA,YAAY,CAACnB,QAAD,CAAZ,GAAyBoB,kBAAkB,CAACpB,QAAD,CAA3C;AACA,SAFD;AAGA;;AACD,UAAMqB,eAAe,GAAG,KAAKC,gBAAL,CAAsBV,UAAtB,EAAkCC,UAAlC,CAAxB;;AACA,UAAIQ,eAAJ,EAAqB;AACpB7U,QAAAA,MAAM,CAACC,IAAP,CAAY4U,eAAZ,EAA6Bxd,OAA7B,CAAqC,UAACmc,QAAD,EAAc;AAClD,cAAMuB,UAAiB,GAAG,EAA1B;;AACA,cAAIJ,YAAY,CAACK,cAAb,CAA4BxB,QAA5B,CAAJ,EAA2C;AAC1CuB,YAAAA,UAAU,CAAC7f,IAAX,OAAA6f,UAAU,qBAASJ,YAAY,CAACnB,QAAD,CAArB,EAAV;AACA;;AACDuB,UAAAA,UAAU,CAAC7f,IAAX,OAAA6f,UAAU,qBAASF,eAAe,CAACrB,QAAD,CAAxB,EAAV;AACAmB,UAAAA,YAAY,CAACnB,QAAD,CAAZ,GAAyBuB,UAAzB;AACA,SAPD;AAQA;;AACD,aAAOJ,YAAP;AACA;;;WAED,yBACCP,UADD,EAECC,UAFD,EAGgB;AACf;AACA,UAAID,UAAU,CAACY,cAAX,CAA0BC,uBAA1B,CAAJ,EAA4C;AAC3C,eAAQb,UAAD,CAAoBa,uBAApB,CAAP;AACA;;AACD,aAAO,IAAP;AACA;;;WAED,0BACCb,UADD,EAECC,UAFD,EAGmC;AAClC;AACA,UAAID,UAAU,CAACY,cAAX,CAA0BE,yBAA1B,CAAJ,EAA8C;AAC7C,eAAQd,UAAD,CAAoBc,yBAApB,CAAP;AACA;;AACD,aAAO,IAAP;AACA;;;;;;;;AAGF,SAASZ,aAAT,CAAuBa,IAAvB,EAAmD;AAClD,MAAMC,WAAW,GAAGpV,MAAM,CAACqV,cAAP,CAAsBF,IAAI,CAACG,SAA3B,CAApB;AACA,MAAMjB,UAAU,GAAGe,WAAW,GAAGA,WAAW,CAAChC,WAAf,GAA6B,IAA3D,CAFkD,CAGlD;AACA;;AACA,SAAOiB,UAAU,IAAIrU,MAArB;AACA;;;;;;;;;;;;;;ACvED;;;;;;;;;;;;;;AAIA,IAAMuV,0BAA0B,GAAG,CAClC,cADkC,EAElC,eAFkC,EAGlC,UAHkC,EAIlC,aAJkC,CAAnC,EAOA;;IACa7D;AACZ,oBAAoBH,SAApB,EAA0C;AAAA;;AAAA,SAAtBA,SAAsB,GAAtBA,SAAsB;AAAE,IAE5C;;;;;WAEA,iBAAQpf,IAAR,EAA8C;AAC7C,UAAMqjB,YAAY,GAAG,KAAKjE,SAAL,CAAemD,WAAf,CAA2BviB,IAA3B,CAArB;;AAEA,UAAIqjB,YAAJ,EAAkB;AACjB,YAAMC,QAAQ,GAAGC,QAAQ,CACxBF,YADwB,EAExB,UAACxC,CAAD;AAAA,iBAAOA,CAAC,IAAIA,CAAC,CAAC2C,YAAF,KAAmB,WAA/B;AAAA,SAFwB,CAAzB;;AAKA,YAAIF,QAAJ,EAAc;AACb,cAAMG,gBAAgB,GAAG,KAAKrE,SAAL,CAAeoD,YAAf,CAA4BxiB,IAA5B,CAAzB;AAEA,iBAAO,KAAK0jB,0BAAL,CACNJ,QADM,EAENG,gBAFM,EAGNzjB,IAHM,CAAP;AAKA;AACD;;AAED,aAAO,IAAP;AACA;;;WAED,oCACCggB,SADD,EAECyD,gBAFD,EAGC1D,aAHD,EAIa;AACZ,UAAMqB,OAA+B,GAAG,EAAxC;AAEAvT,MAAAA,MAAM,CAACC,IAAP,CAAY2V,gBAAZ,EAA8Bve,OAA9B,CAAsC,UAACmc,QAAD,EAAsB;AAC3D,YAAMC,KAAK,GAAGiC,QAAQ,CAACE,gBAAgB,CAACpC,QAAD,CAAjB,EAA6B,UAACsC,CAAD;AAAA,iBAClDP,0BAA0B,CAACQ,IAA3B,CAAgC,UAAC5iB,CAAD;AAAA,mBAAOA,CAAC,IAAIA,CAAC,KAAK2iB,CAAC,CAACH,YAApB;AAAA,WAAhC,CADkD;AAAA,SAA7B,CAAtB;;AAIA,YAAIlC,KAAJ,EAAW;AACVF,UAAAA,OAAO,CAACC,QAAD,CAAP,GAAoBC,KAApB;AACA;AACD,OARD;AAUA,aAAO,KAAKuC,MAAL,CAAY7D,SAAZ,EAAuBoB,OAAvB,EAAgCrB,aAAhC,CAAP;AACA;;;WAED,gBACCC,SADD,EAECoB,OAFD,EAGCrB,aAHD,EAIa;AACZ,UAAM+D,aAAa,GAAG9D,SAAS,CAACoB,OAAV,mCACdpB,SAAS,CAACoB,OADI,GACQA,OADR,IAEnBA,OAFH;AAIA,aAAO,gCAAgB;AACtBxhB,QAAAA,SAAS,EAAEogB,SAAS,CAACpgB,SADC;AAEtBwL,QAAAA,OAAO,EAAE4U,SAAS,CAAC5U,OAFG;AAGtBgW,QAAAA,OAAO,EAAE0C;AAHa,OAAhB,CAAP;AAKA;;;WAED,6BAA4B1C,OAA5B,EAAsE;AAAA;;AACrE,UAAM2C,GAAU,GAAG,EAAnB;AAEAlW,MAAAA,MAAM,CAACC,IAAP,CAAYsT,OAAZ,EAAqBlc,OAArB,CAA6B,UAAC8e,YAAD,EAA0B;AACtD,YAAM1C,KAAK,GAAGF,OAAO,CAAC4C,YAAD,CAArB;AACAD,QAAAA,GAAG,CAAChhB,IAAJ,CAAS,KAAI,CAACkhB,iBAAL,CAAuB3C,KAAvB,EAA8B0C,YAA9B,CAAT;AACA,OAHD;AAKA,aAAOD,GAAP;AACA;;;WAED,2BAA0BG,CAA1B,EAAoCF,YAApC,EAA+D;AAC9D,aAAO;AACNxC,QAAAA,WAAW,EAAE0C,CAAC,CAAC1C,WADT;AAENK,QAAAA,KAAK,EAAEqC,CAAC,CAACrC,KAFH;AAGNmC,QAAAA,YAAY,EAAZA,YAHM;AAING,QAAAA,IAAI,EAAE,KAJA;AAKN7F,QAAAA,QAAQ,EAAE4F,CAAC,CAAC5F;AALN,OAAP;AAOA;;;;;;;;AAGF,SAASiF,QAAT,CAAqBa,GAArB,EAA+BC,SAA/B,EAA2E;AAC1E,OAAK,IAAIrjB,CAAC,GAAGojB,GAAG,CAAC5jB,MAAJ,GAAa,CAA1B,EAA6BQ,CAAC,IAAI,CAAlC,EAAqCA,CAAC,EAAtC,EAA0C;AACzC,QAAIqjB,SAAS,CAACD,GAAG,CAACpjB,CAAD,CAAJ,CAAb,EAAuB;AACtB,aAAOojB,GAAG,CAACpjB,CAAD,CAAV;AACA;AACD;;AACD,SAAO,IAAP;AACA;;;;;;;;;;;;;;;;;;;;;;ACvGM,IAAM8hB,WAAW,GAAG,iBAApB;;AACA,IAAMC,aAAa,GAAG,oBAAtB;;;AAiBA,SAASuB,aAAT,CACNhE,IADM,EAENiE,KAFM,EAGNC,WAHM,EAINC,OAJM,EAKNC,MALM,EAUJ;AACF,MAAMC,QAAQ,GAAGC,gBAAgB,CAACL,KAAD,CAAjC,CADE,CAGF;;AACA,WAASM,gBAAT,GAA6D;AAAA,sCAAhCC,IAAgC;AAAhCA,MAAAA,IAAgC;AAAA;;AAC5D,QAAI,gBAAgBD,gBAApB,EAAsC;AACrCF,MAAAA,QAAQ,CAACI,IAAT,OAAAJ,QAAQ,GAAM,IAAN,SAAeG,IAAf,EAAR;AACA,aAAO,IAAP;AACA;;AAED,QAAME,kBAAkB,cAAQH,gBAAR,EAAoCC,IAApC,CAAxB;;AACA,QAAMG,aAA4B,GAAG,SAA/BA,aAA+B,CAACC,GAAD,EAAoB;AACxD,UAAIR,MAAJ,EAAY;AACXA,QAAAA,MAAM,MAAN,UAAOQ,GAAP,SAAeJ,IAAf;AACA,OAHuD,CAIxD;AACA;;;AACA,UAAMvC,WAAW,GAAG2C,GAAG,CAACrC,cAAJ,CAAmBC,WAAnB,IAChBoC,GAAD,CAAapC,WAAb,CADiB,GAEjBjV,MAAM,CAACsX,cAAP,CAAsBD,GAAtB,EAA2BpC,WAA3B,EAAwC;AAAE/X,QAAAA,KAAK,EAAE;AAAT,OAAxC,EAAuD+X,WAAvD,CAFH;AAGAP,MAAAA,WAAW,CAACxf,IAAZ,CAAiBiiB,kBAAjB;AACA,aAAOE,GAAP;AACA,KAXD;;AAYA,QAAIT,OAAJ,EAAa;AACZA,MAAAA,OAAO,CAACQ,aAAD,CAAP;AACA;;AACD,WAAOA,aAAP;AACA;;AAED,MAAIT,WAAJ,EAAiB;AAChBK,IAAAA,gBAAgB,CAAC1B,SAAjB,GAA6BtV,MAAM,CAACqR,MAAP,CAAcsF,WAAW,CAACrB,SAA1B,CAA7B;AACA;;AAED0B,EAAAA,gBAAgB,CAAC1B,SAAjB,CAA2BK,YAA3B,GAA0ClD,IAA1C;AACA,SAAOuE,gBAAP;AACA;;AAED,SAASD,gBAAT,CAA0BL,KAA1B,EAAgE;AAC/D,SAAO,SAASvB,IAAT,GAA8B;AACpC,QAAIuB,KAAJ,EAAW;AACV,UAAMa,MAAM,GAAGb,KAAK,MAAL,mBAAf;;AACA,WAAK,IAAMlD,QAAX,IAAuB+D,MAAvB,EAA+B;AAC9B,YAAIA,MAAM,CAACvC,cAAP,CAAsBxB,QAAtB,CAAJ,EAAqC;AACpC,eAAKA,QAAL,IAAiB+D,MAAM,CAAC/D,QAAD,CAAvB;AACA;AACD;AACD;AACD,GATD;AAUA;;AAEM,SAASgE,iBAAT,CACN/E,IADM,EAENiE,KAFM,EAGNC,WAHM,EAIA;AACN,MAAMG,QAAQ,GAAGC,gBAAgB,CAACL,KAAD,CAAjC,CADM,CAGN;;AACA,WAASe,oBAAT,GAAmD;AAAA,uCAAlBR,IAAkB;AAAlBA,MAAAA,IAAkB;AAAA;;AAClD,QAAI,gBAAgBQ,oBAApB,EAA0C;AACzCX,MAAAA,QAAQ,CAACY,KAAT,CAAe,IAAf,EAAqBT,IAArB;AACA,aAAO,IAAP;AACA;;AAED,QAAMU,iBAAiB,cAAQF,oBAAR,EAAwCR,IAAxC,CAAvB,CANkD,CAQlD;;;AACA,WAAO,SAASW,aAAT,CAAuB5P,MAAvB,EAAoC6P,QAApC,EAAsD;AAC5D,UAAMzE,WAAW,GAAGpL,MAAM,CAACoL,WAA3B,CAD4D,CAE5D;AACA;;AACA,UAAM0E,IAAI,GAAG1E,WAAW,CAAC4B,cAAZ,CAA2BE,aAA3B,IACT9B,WAAD,CAAqB8B,aAArB,CADU,GAEVlV,MAAM,CAACsX,cAAP,CAAsBlE,WAAtB,EAAmC8B,aAAnC,EAAkD;AACnDhY,QAAAA,KAAK,EAAE;AAD4C,OAAlD,EAEGgY,aAFH,CAFH;AAKA4C,MAAAA,IAAI,CAACD,QAAD,CAAJ,GAAkBC,IAAI,CAAC9C,cAAL,CAAoB6C,QAApB,KAAiCC,IAAI,CAACD,QAAD,CAAtC,IAAqD,EAAtE;AACAC,MAAAA,IAAI,CAACD,QAAD,CAAJ,CAAeE,OAAf,CAAuBJ,iBAAvB;AACA,KAXD;AAYA;;AAED,MAAIhB,WAAJ,EAAiB;AAChBc,IAAAA,oBAAoB,CAACnC,SAArB,GAAiCtV,MAAM,CAACqR,MAAP,CAAcsF,WAAW,CAACrB,SAA1B,CAAjC;AACA;;AAEDmC,EAAAA,oBAAoB,CAACnC,SAArB,CAA+BK,YAA/B,GAA8ClD,IAA9C;AACA,SAAOgF,oBAAP;AACA;;;;;;;;;;;;;;;;;;;;AC/GM,SAASO,mBAAT,CACNvF,IADM,EAENiE,KAFM,EAGe;AACrB,MAAM7E,OAAY,GAAG,SAAfA,OAAe,GAAoB;AACxC,QAAM0F,MAAM,GAAGb,KAAK,GAAGA,KAAK,MAAL,mBAAH,GAAoB,EAAxC;AACA;AACCf,MAAAA,YAAY,EAAElD;AADf,OAEI8E,MAFJ;AAIA,GAND;;AAOA1F,EAAAA,OAAO,CAACoG,QAAR,GAAmB,UAACC,GAAD;AAAA,WAAcA,GAAG,IAAIA,GAAG,CAACvC,YAAJ,KAAqBlD,IAA1C;AAAA,GAAnB;;AACAZ,EAAAA,OAAO,CAAC8D,YAAR,GAAuBlD,IAAvB;AACA,SAAOZ,OAAP;AACA;;;;;;;;;;;;;;ACpBD;AACO,IAAMsG,IAAI,GAAGC,QAAb;;;AAEA,SAASC,MAAT,CAAgBC,CAAhB,EAAwC;AAC9C,SAAO,OAAOA,CAAP,KAAa,UAApB;AACA;;;;;;;;;;;;;;ACLM,SAASC,SAAT,CAAmB1U,GAAnB,EAAgC;AACtC,MAAI,CAACA,GAAL,EAAU;AACT,WAAO,IAAP;AACA;;AAED,SACC2U,kBAAkB,CACjBrnB,QAAQ,CAACsnB,MAAT,CAAgBxe,OAAhB,CACC,IAAIye,MAAJ,2BACoBC,kBAAkB,CAAC9U,GAAD,CAAlB,CAAwB5J,OAAxB,CAClB,aADkB,EAElB,MAFkB,CADpB,iCADD,EAOC,IAPD,CADiB,CAAlB,IAUK,IAXN;AAaA;;;;;;;;;;;;;;AClBM,SAAS2e,SAAT,CACN/U,GADM,EAEN3G,KAFM,EAGN9H,GAHM,EAOL;AAAA,MAHDyjB,IAGC,uEAHM,GAGN;AAAA,MAFDC,MAEC,uEAFQ,EAER;AAAA,MADDC,MACC,uEADQ,KACR;;AACD,MAAI,CAAClV,GAAD,IAAQ,6CAA6CmV,IAA7C,CAAkDnV,GAAlD,CAAZ,EAAoE;AACnE,WAAO,KAAP;AACA;;AACD,MAAIoV,OAAO,GAAG,EAAd;;AACA,MAAI7jB,GAAJ,EAAS;AACR,YAAQA,GAAG,CAACge,WAAZ;AACC,WAAK8F,MAAL;AACCD,QAAAA,OAAO,GACN7jB,GAAG,KAAKsC,QAAR,GACG,yCADH,GAEG,eAAetC,GAHnB;AAIA;;AACD,WAAK+jB,MAAL;AACCF,QAAAA,OAAO,uBAAgB7jB,GAAhB,CAAP;AACA;;AACD,WAAKgkB,IAAL;AACCH,QAAAA,OAAO,uBAAiB7jB,GAAD,CAAcikB,WAAd,EAAhB,CAAP;AACA;;AACD;AACCJ,QAAAA,OAAO,GAAG,EAAV;AAdF;AAgBA;;AACD,MAAMK,MAAM,GAAGX,kBAAkB,CAAC9U,GAAD,CAAjC;AACA,MAAM0V,QAAQ,GAAGZ,kBAAkB,CAACzb,KAAD,CAAnC;AACA,MAAMsc,SAAS,aAAMV,MAAM,sBAAeA,MAAf,IAA0B,EAAtC,CAAf;AACA,MAAMW,OAAO,aAAMZ,IAAI,oBAAaA,IAAb,IAAsB,EAAhC,CAAb;AACA,MAAMa,SAAS,aAAMX,MAAM,GAAG,UAAH,GAAgB,EAA5B,CAAf;AACA5nB,EAAAA,QAAQ,CAACsnB,MAAT,aAAqBa,MAArB,cAA+BC,QAA/B,SAA0CN,OAA1C,SAAoDO,SAApD,SAAgEC,OAAhE,SAA0EC,SAA1E;AAEA,SAAO,IAAP;AACA;;;;;;;;;;;;;;ACtCD;;AACA;;AAEO,SAASC,QAAT,CAAkB3nB,OAAlB,EAAoCD,SAApC,EAAuD;AAC7D,MAAIC,OAAO,IAAI,CAAC,wBAASA,OAAT,EAAkBD,SAAlB,CAAhB,EAA8C;AAC7CC,IAAAA,OAAO,CAACsI,YAAR,CAAqB,OAArB,EAA8B,wBAAStI,OAAT,EAAkB4nB,IAAlB,KAA2B,GAA3B,GAAiC7nB,SAA/D;AACA;AACD;;;;;;;;;;;;;;ACPD;;AAEO,SAAS8nB,aAAT,CAAuBlM,CAAvB,EAA4C;AAClD,MAAI,kCAAcA,CAAd,CAAJ,EAAsB;AACrB,WAAOA,CAAP;AACA;;AACD,SAAO,IAAP;AACA;;;;;;;;;;;;;;ACPD;;AACA;;AAEO,SAASmM,WAAT,CAAqB9nB,OAArB,EAAuCD,SAAvC,EAAsE;AAAA,MAAZqI,GAAY,uEAAN,IAAM;;AAC5E,MAAIA,GAAJ,EAAS;AACR,4BAASpI,OAAT,EAAkBD,SAAlB;AACA,GAFD,MAEO;AACN,kCAAYC,OAAZ,EAAqBD,SAArB;AACA;AACD;;;;;;;;;;;;;ACTD,IAAMgoB,eAAe,GAAG,EAAxB;;AACO,SAASC,UAAT,CAAoBjoB,SAApB,EAA+C;AACrD,MAAI,CAACgoB,eAAe,CAAChoB,SAAD,CAApB,EAAiC;AAChCgoB,IAAAA,eAAe,CAAChoB,SAAD,CAAf,GAA6B,IAAI2mB,MAAJ,CAAW,YAAY3mB,SAAZ,GAAwB,SAAnC,CAA7B;AACA;;AACD,SAAOgoB,eAAe,CAAChoB,SAAD,CAAtB;AACA;;;;;;;;;;;;;;ACNM,SAASkoB,QAAT,CAAkBjoB,OAAlB,EAAoC;AAC1C,SAAOA,OAAO,CAACE,YAAR,CAAqB,OAArB,KAAiC,EAAxC;AACA;;;;;;;;;;;;;;ACFD;;AAEO,SAASgoB,6BAAT,CACNloB,OADM,EAIQ;AAAA,MAFdmoB,SAEc,uEAFF,aAEE;AAAA,MADdC,YACc,uEADC,IACD;AACd,MAAM3J,QAAQ,GAAG,oDAAuBze,OAAvB,EAAgCmoB,SAAhC,EAA2CC,YAA3C,CAAjB;;AAEA,MAAI3J,QAAQ,IAAIA,QAAQ,CAACzW,OAAT,CAAiB,GAAjB,MAA0B,CAA1C,EAA6C;AAC5C,WAAO7I,QAAQ,CAACmd,cAAT,CAAwBmC,QAAQ,CAAC4J,MAAT,CAAgB,CAAhB,EAAmB5J,QAAQ,CAAC9d,MAAT,GAAkB,CAArC,CAAxB,CAAP;AACA;;AAED,SAAO,IAAP;AACA;;;;;;;;;;;;;;ACdM,SAAS2nB,sBAAT,CACNtoB,OADM,EAIG;AAAA,MAFTmoB,SAES,uEAFG,aAEH;AAAA,MADTC,YACS,uEADM,IACN;AACT,MAAI3J,QAAQ,GAAGze,OAAO,CAACE,YAAR,CAAqBioB,SAArB,CAAf;;AAEA,MAAI,CAAC1J,QAAD,IAAa2J,YAAjB,EAA+B;AAC9B3J,IAAAA,QAAQ,GAAGze,OAAO,CAACE,YAAR,CAAqB,MAArB,KAAgC,EAA3C;AACAue,IAAAA,QAAQ,GAAG,QAAQuI,IAAR,CAAavI,QAAb,IAAyBA,QAAzB,GAAoC,IAA/C;AACA;;AAED,SAAOA,QAAP;AACA;;;;;;;;;;;;;;ACbM,SAAS8J,kBAAT,GAA8B;AACpC,SAAOpkB,MAAM,CAACqkB,WAAP,KAAuB9nB,SAAvB,GACJyD,MAAM,CAACqkB,WADH,GAEJ,CACArpB,QAAQ,CAACiW,eAAT,IACCjW,QAAQ,CAACC,IAAT,CAAcqpB,UADf,IAECtpB,QAAQ,CAACC,IAHV,EAIEwW,SANL;AAOA;;;;;;;;;;;;;;ACRD;;AACA;;AAEO,SAAS8S,QAAT,CAAkB1oB,OAAlB,EAAoCD,SAApC,EAAgE;AACtE,SAAOC,OAAO,IAAI,4BAAWD,SAAX,EAAsBinB,IAAtB,CAA2B,wBAAShnB,OAAT,CAA3B,CAAlB;AACA;;;;;;;;;;;;;;;;ACLM,SAAS2oB,aAAT,CAAuBhN,CAAvB,EAA+B;AACrC,SAAO,QAAOa,WAAP,yCAAOA,WAAP,OAAuB,QAAvB,GACJb,CAAC,YAAYa,WADT,GAEJb,CAAC,IACD,QAAOA,CAAP,MAAa,QADb,IAEAA,CAAC,KAAK,IAFN,IAGAA,CAAC,CAACiN,QAAF,KAAe,CAHf,IAIA,OAAOjN,CAAC,CAACkN,QAAT,KAAsB,QANzB;AAOA;;;;;;;;;;;;;;;;ACRD;;AACA;;AACA;;AAEO,SAASC,WAAT,CAAqB9oB,OAArB,EAAuCD,SAAvC,EAA0D;AAChE,MAAIC,OAAO,IAAI,wBAASA,OAAT,EAAkBD,SAAlB,CAAf,EAA6C;AAC5C,QAAMgpB,KAAK,GAAG,4BAAWhpB,SAAX,CAAd;AACAC,IAAAA,OAAO,CAACsI,YAAR,CAAqB,OAArB,EAA8B,wBAAStI,OAAT,EAAkBiI,OAAlB,CAA0B8gB,KAA1B,EAAiC,GAAjC,EAAsCnB,IAAtC,EAA9B;AACA;AACD;;AAEM,SAASoB,kBAAT,CAA4BjpB,SAA5B,EAA+C;AACrD,SAAO,UAACC,OAAD,EAAsB;AAC5B8oB,IAAAA,WAAW,CAAC9oB,OAAD,EAAUD,SAAV,CAAX;AACA,GAFD;AAGA;;AAEM,SAASkpB,uBAAT,CACNC,QADM,EAENnpB,SAFM,EAGL;AACDmpB,EAAAA,QAAQ,CAAC7jB,OAAT,CAAiB2jB,kBAAkB,CAACjpB,SAAD,CAAnC;AACA;;;;;;;;;;;;;;ACtBD;;AACA;;AAEO,SAASopB,WAAT,CACNnpB,OADM,EAEND,SAFM,EAGNkJ,KAHM,EAIL;AACD,gCACCjJ,OADD,EAECD,SAFD,EAGCkJ,KAAK,KAAKvI,SAAV,GAAsB,CAAC,wBAASV,OAAT,EAAkBD,SAAlB,CAAvB,GAAsDkJ,KAHvD;AAKA;;;;;;;;;;;;;;ACbM,SAASmgB,mBAAT,CAA6BppB,OAA7B,EAAmDqpB,SAAnD,EAAsE;AAC5E,MAAMnL,KAAK,GAAG,IAAIoL,WAAJ,CAAgBD,SAAhB,CAAd;AACArpB,EAAAA,OAAO,CAACupB,aAAR,CAAsBrL,KAAtB;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ICDKsL;AAGL,wBAAmBhX,OAAnB,EAAyDiX,MAAzD,EAA0E;AAAA;;AAAA,SAF1EC,UAE0E,GAF7D,KAE6D;AAAA,SAAvDlX,OAAuD,GAAvDA,OAAuD;AAAA,SAAjBiX,MAAiB,GAAjBA,MAAiB;AAAE;;;;WAE5E,iBAAQxE,IAAR,EAAqB;AACpB,UAAI,CAAC,KAAKwE,MAAN,IAAgB,CAAC,KAAKC,UAA1B,EAAsC;AACrC,aAAKA,UAAL,GAAkB,IAAlB;AACA,aAAKlX,OAAL,CAAayS,IAAb;AACA;AACD;;;;;;IAGWvQ;;;;SACJiV,gBAAuC;;;;;WAE/C,kBAAS1E,IAAT,EAA4B;AAC3B,iDAAsB,KAAK0E,aAA3B,2BAA2C;AAAtC,YAAMC,GAAG,WAAT;AACJA,QAAAA,GAAG,CAACC,OAAJ,CAAY5E,IAAZ;AACA,aAAK6E,OAAL,CAAaF,GAAb;AACA;AACD;;;WAED,mBAAUG,EAAV,EAAoC;AACnC,UAAIA,EAAJ,EAAQ;AACP,aAAKJ,aAAL,CAAmBzmB,IAAnB,CAAwB,IAAIsmB,YAAJ,CAAwBO,EAAxB,EAA4B,KAA5B,CAAxB;AACA;;AACD,aAAO,IAAP;AACA;;;WAED,aAAIA,EAAJ,EAA8B;AAC7B,UAAIA,EAAJ,EAAQ;AACP,aAAKJ,aAAL,CAAmBzmB,IAAnB,CAAwB,IAAIsmB,YAAJ,CAAwBO,EAAxB,EAA4B,IAA5B,CAAxB;AACA;;AACD,aAAO,IAAP;AACA;;;WAED,aAAIA,EAAJ,EAAuC;AACtC,UAAI,CAACA,EAAL,EAAS;AACR,eAAO,KAAP;AACA;;AACD,aAAO,KAAKJ,aAAL,CAAmB5F,IAAnB,CAAwB,UAAC6F,GAAD;AAAA,eAASA,GAAG,CAACpX,OAAJ,KAAgBuX,EAAzB;AAAA,OAAxB,CAAP;AACA;;;WAED,qBAAYA,EAAZ,EAAsC;AACrC,UAAI,CAACA,EAAL,EAAS;AACR;AACA;;AAED,WAAK,IAAI5oB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKwoB,aAAL,CAAmBhpB,MAAvC,EAA+CQ,CAAC,EAAhD,EAAoD;AACnD,YAAI,KAAKwoB,aAAL,CAAmBxoB,CAAnB,EAAsBqR,OAAtB,KAAkCuX,EAAtC,EAA0C;AACzC,eAAKJ,aAAL,CAAmBK,MAAnB,CAA0B7oB,CAA1B,EAA6B,CAA7B;AACA;AACA;AACD;;AAED,aAAO,IAAP;AACA;;;WAED,iBAAc;AACb,WAAKwoB,aAAL,CAAmBK,MAAnB,CAA0B,CAA1B,EAA6B,KAAKL,aAAL,CAAmBhpB,MAAhD;AACA;;;WAED,iBAAgBipB,GAAhB,EAA0C;AACzC,UAAIA,GAAG,CAACH,MAAJ,IAAcG,GAAG,CAACF,UAAtB,EAAkC;AACjC,YAAMvoB,CAAC,GAAG,KAAKwoB,aAAL,CAAmB3hB,OAAnB,CAA2B4hB,GAA3B,CAAV;;AACA,YAAIzoB,CAAC,GAAG,CAAC,CAAT,EAAY;AACX,eAAKwoB,aAAL,CAAmBK,MAAnB,CAA0B7oB,CAA1B,EAA6B,CAA7B;AACA;AACD;AACD;;;;;;;;;;;;;;;;;;;;ACxEF;;AAEO,SAAS8oB,qBAAT,CAA+BC,SAA/B,EAAkD;AACxD,SAAO,UAAClqB,OAAD,EAAuBqpB,SAAvB;AAAA,WACN,8CAAoBrpB,OAApB,EAA6BqpB,SAAS,GAAG,GAAZ,GAAkBa,SAA/C,CADM;AAAA,GAAP;AAEA;;;;;;;;;;;;;;ACLM,SAASrT,QAAT,CAAkBnE,IAAlB,EAAkCyX,IAAlC,EAAgDC,SAAhD,EAAqE;AAC3E,MAAIC,OAAJ;AACA,MAAIC,MAAJ;AACA,SAAO,SAASC,UAAT,GAAsB;AAC5B,QAAMC,OAAO,GAAG,IAAhB;AACA,QAAMvF,IAAI,GAAGwF,SAAb;;AACA,QAAMC,KAAK,GAAG,SAARA,KAAQ,GAAM;AACnBL,MAAAA,OAAO,GAAG,IAAV;;AACA,UAAI,CAACD,SAAL,EAAgB;AACfE,QAAAA,MAAM,GAAG5X,IAAI,CAACgT,KAAL,CAAW8E,OAAX,EAAoBvF,IAApB,CAAT;AACA;AACD,KALD;;AAMA,QAAM0F,OAAO,GAAGP,SAAS,IAAI,CAACC,OAA9B;AACAO,IAAAA,YAAY,CAACP,OAAD,CAAZ;AACAA,IAAAA,OAAO,GAAGniB,UAAU,CAACwiB,KAAD,EAAQP,IAAR,CAApB;;AACA,QAAIQ,OAAJ,EAAa;AACZL,MAAAA,MAAM,GAAG5X,IAAI,CAACgT,KAAL,CAAW8E,OAAX,EAAoBvF,IAApB,CAAT;AACA;;AACD,WAAOqF,MAAP;AACA,GAhBD;AAiBA;;;;;;;;;;;;;;ACnBD;;AACA;;AAEO,SAASO,cAAT,CACNlO,QADM,EAML;AAAA,MAJDmO,iBAIC,uEAJsCrO,wBAItC;AAAA,MAHD5V,QAGC,uEAHU,GAGV;AAAA,MAFD6C,MAEC,uEAFQ,CAER;AAAA,MADD7F,OACC,uEAD+BM,MAC/B;AACD,0BAASwY,QAAQ,GAAGjT,MAApB,EAA4BohB,iBAA5B,EAA+CjkB,QAA/C,EAAyDhD,OAAzD;AACA;;;;;;;;;;;;;;ACXD;;AAEO,SAAS4S,QAAT,CACNkG,QADM,EAKL;AAAA,MAHDmO,iBAGC,uEAHsC,UAACC,CAAD,EAAI9nB,CAAJ,EAAO+d,CAAP,EAAUgK,CAAV;AAAA,WAAiBhK,CAAC,GAAG+J,CAAL,GAAUC,CAAV,GAAc/nB,CAA9B;AAAA,GAGtC;AAAA,MAFD4D,QAEC,uEAFU,GAEV;AAAA,MADDhD,OACC,uEAD+BM,MAC/B;AACD,MAAIhB,KAAK,GAAG,6CAAZ;AACA,MAAI8nB,SAAJ;AACA,MAAIvO,WAAJ;;AAEA,MAAI7Y,OAAO,YAAY2Y,WAAvB,EAAoC;AACnCrZ,IAAAA,KAAK,GAAGU,OAAO,CAAC+R,SAAhB;AACA;;AAEDpE,EAAAA,qBAAqB,CAAC0T,IAAtB,CAA2B/gB,MAA3B,EAAmC,UAACwI,IAAD,EAAU;AAC5Cse,IAAAA,SAAS,GAAGte,IAAZ;AACA1F,IAAAA,IAAI,CAAC0F,IAAD,CAAJ;AACA,GAHD;;AAKA,WAAS1F,IAAT,CAAc0F,IAAd,EAAoB;AACnB+P,IAAAA,WAAW,GAAG/P,IAAI,GAAGse,SAArB;;AAEA,QAAIpnB,OAAO,YAAYqnB,MAAvB,EAA+B;AAC9BrnB,MAAAA,OAAO,CAAC4S,QAAR,CACC,CADD,EAECqU,iBAAiB,CAACpO,WAAD,EAAcvZ,KAAd,EAAqBwZ,QAArB,EAA+B9V,QAA/B,CAFlB;;AAKA,UAAI6V,WAAW,GAAG7V,QAAlB,EAA4B;AAC3B2K,QAAAA,qBAAqB,CAAC0T,IAAtB,CAA2B/gB,MAA3B,EAAmC8C,IAAnC;AACA,OAFD,MAEO;AACNpD,QAAAA,OAAO,CAAC4S,QAAR,CAAiB,CAAjB,EAAoBtT,KAAK,GAAGwZ,QAA5B;AACA;AACD,KAXD,MAWO;AACN9Y,MAAAA,OAAO,CAAC+R,SAAR,GAAoBkV,iBAAiB,CACpCpO,WADoC,EAEpCvZ,KAFoC,EAGpCwZ,QAHoC,EAIpC9V,QAJoC,CAArC;;AAOA,UAAI6V,WAAW,GAAG7V,QAAlB,EAA4B;AAC3B2K,QAAAA,qBAAqB,CAAC0T,IAAtB,CAA2B/gB,MAA3B,EAAmC8C,IAAnC;AACA,OAFD,MAEO;AACNpD,QAAAA,OAAO,CAAC+R,SAAR,GAAoBzS,KAAK,GAAGwZ,QAA5B;AACA;AACD;AACD;AACD;;;;;;;;;;;;;;ACnDD;;AACA;;AAEA,IAAMwO,sBAAsB,GAAG,2DAA/B;;AAEO,SAASC,wBAAT,CACNprB,OADM,EAENqrB,QAFM,EAKC;AAAA,MAFPC,gBAEO,uEAFY,CAEZ;AAAA,MADPnQ,MACO,uEADE,IACF;AACP,MAAIoQ,MAAM,GAAG,KAAb;;AACA,MAAMC,QAAQ,GAAG,SAAXA,QAAW,CAACtN,KAAD,EAAkB;AAClCqN,IAAAA,MAAM,GAAG,IAAT;;AACA,QAAIpQ,MAAJ,EAAY;AACXnb,MAAAA,OAAO,CAACyS,mBAAR,CAA4B0Y,sBAA5B,EAA8DK,QAA9D;AACA;;AACDH,IAAAA,QAAQ;AACR,GAND;;AAQA,MAAIF,sBAAsB,KAAK,KAA/B,EAAsC;AACrCjjB,IAAAA,UAAU,CAAC,YAAM;AAChBmjB,MAAAA,QAAQ;AACR,KAFS,EAEPC,gBAFO,CAAV;AAGA,GAJD,MAIO;AACNtrB,IAAAA,OAAO,CAACoE,gBAAR,CAAyB+mB,sBAAzB,EAAiDK,QAAjD,EADM,CAEN;;AACA,QAAIF,gBAAJ,EAAsB;AACrBpjB,MAAAA,UAAU,CAAC,YAAM;AAChB,YAAI,CAACqjB,MAAL,EAAa;AACZ,wDAAoBvrB,OAApB,EAA6BmrB,sBAA7B;AACA;AACD,OAJS,EAIPG,gBAJO,CAAV;AAKA;AACD;AACD;;;;;;;;;;;;;;ACnCM,SAASG,yBAAT,GAAqD;AAC3D,MAAMzrB,OAAO,GAAGb,QAAQ,CAAC0G,aAAT,CAAuB,GAAvB,CAAhB;AACA,MAAM6lB,WAAW,GAAG;AACnB;AACAC,IAAAA,gBAAgB,EAAE,qBAFC;AAGnB9b,IAAAA,UAAU,EAAE;AAHO,GAApB;;AAMA,OAAK,IAAMA,UAAX,IAAyB6b,WAAzB,EAAsC;AACrC,QAAI1rB,OAAO,CAAC+E,KAAR,CAAc8K,UAAd,MAA8BnP,SAAlC,EAA6C;AAC5C,aAAOgrB,WAAW,CAAC7b,UAAD,CAAlB;AACA;AACD;;AAED,SAAO,KAAP;AACA;;;;;;;;;;;;;;;;;;;;;;;ACTD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAGM+b;AACJ,sBAAc;AAAA;;AACZ,SAAKC,QAAL,GAAgB,IAAhB;AACA,SAAKC,OAAL,GAAe,IAAI7L,GAAJ,EAAf;AACA,SAAK8L,QAAL,GAAgB,KAAhB;AACA,SAAKC,SAAL,GAAiBtrB,SAAjB;AACD;;;;WACD,iBAAQoB,KAAR,EAAemqB,KAAf,EAAsBC,IAAtB,EAA4B/rB,IAA5B,EAAkC;AAChC,UAAMgsB,SAAS,GAAGF,KAAK,CAACG,SAAN,CAAgBjsB,IAAhB,CAAlB;AACA,UAAMksB,QAAQ,GAAGJ,KAAK,CAACplB,QAAvB;AACAslB,MAAAA,SAAS,CAAC9mB,OAAV,CAAkB,UAAA0kB,EAAE;AAAA,eAAIA,EAAE,CAAC;AACzBjoB,UAAAA,KAAK,EAALA,KADyB;AAEzBwqB,UAAAA,OAAO,EAAEL,KAAK,CAACK,OAFU;AAGzBD,UAAAA,QAAQ,EAARA,QAHyB;AAIzBE,UAAAA,WAAW,EAAE7oB,IAAI,CAACyH,GAAL,CAAS+gB,IAAI,GAAGD,KAAK,CAAC9oB,KAAtB,EAA6BkpB,QAA7B;AAJY,SAAD,CAAN;AAAA,OAApB;AAMD;;;WACD,oBAAW;AAAA;;AACT,UAAI,KAAKR,QAAT,EAAmB;AACjB;AACD;;AACD,WAAKE,QAAL,GAAgB,IAAhB;AACA,WAAKF,QAAL,GAAgBW,kBAAiBtH,IAAjB,CAAsB/gB,MAAtB,EAA8B,YAAM;AAClD,aAAI,CAACsoB,OAAL;;AACA,aAAI,CAACZ,QAAL,GAAgB,IAAhB;;AACA,YAAI,KAAI,CAACE,QAAT,EAAmB;AACjB,eAAI,CAACW,QAAL;AACD;AACF,OANe,CAAhB;AAOD;;;WACD,mBAA2B;AAAA;;AAAA,UAAnBR,IAAmB,uEAAZ9E,IAAI,CAACuF,GAAL,EAAY;AACzB,UAAIC,SAAS,GAAG,CAAhB;;AACA,WAAKd,OAAL,CAAazmB,OAAb,CAAqB,UAAC4mB,KAAD,EAAQnqB,KAAR,EAAkB;AACrC,YAAI,CAACmqB,KAAK,CAACY,OAAP,IAAkB,CAACZ,KAAK,CAAC1Z,KAAN,CAAY5R,MAAnC,EAA2C;AACzC;AACD;;AACD,YAAM4R,KAAK,GAAG0Z,KAAK,CAAC1Z,KAApB;AACA,YAAIpR,CAAC,GAAGoR,KAAK,CAAC5R,MAAN,GAAe,CAAvB;AACA,YAAImsB,IAAI,GAAG,KAAX;AACA,YAAI/oB,IAAJ;;AACA,eAAO5C,CAAC,IAAI,CAAZ,EAAe,EAAEA,CAAjB,EAAoB;AAClB4C,UAAAA,IAAI,GAAGwO,KAAK,CAACpR,CAAD,CAAZ;;AACA,cAAI4C,IAAI,CAACgpB,OAAT,EAAkB;AAChB,gBAAIhpB,IAAI,CAACipB,MAAL,GAAcf,KAAK,CAACplB,QAAxB,EAAkC;AAChColB,cAAAA,KAAK,CAACplB,QAAN,GAAiB9C,IAAI,CAACipB,MAAtB;AACD;;AACDjpB,YAAAA,IAAI,CAACkpB,IAAL,CAAUf,IAAV;AACAY,YAAAA,IAAI,GAAG,IAAP;AACD,WAND,MAMO;AACLva,YAAAA,KAAK,CAACpR,CAAD,CAAL,GAAWoR,KAAK,CAACA,KAAK,CAAC5R,MAAN,GAAe,CAAhB,CAAhB;AACA4R,YAAAA,KAAK,CAAC2a,GAAN;AACD;AACF;;AACD,YAAIJ,IAAJ,EAAU;AACRhrB,UAAAA,KAAK,CAACgrB,IAAN;;AACA,gBAAI,CAACK,OAAL,CAAarrB,KAAb,EAAoBmqB,KAApB,EAA2BC,IAA3B,EAAiC,UAAjC;AACD;;AACD,YAAI,CAAC3Z,KAAK,CAAC5R,MAAX,EAAmB;AACjBsrB,UAAAA,KAAK,CAACY,OAAN,GAAgB,KAAhB;;AACA,gBAAI,CAACM,OAAL,CAAarrB,KAAb,EAAoBmqB,KAApB,EAA2BC,IAA3B,EAAiC,UAAjC;;AACAD,UAAAA,KAAK,CAACK,OAAN,GAAgB,KAAhB;AACD;;AACDM,QAAAA,SAAS,IAAIra,KAAK,CAAC5R,MAAnB;AACD,OA/BD;;AAgCA,WAAKqrB,SAAL,GAAiBE,IAAjB;;AACA,UAAIU,SAAS,KAAK,CAAlB,EAAqB;AACnB,aAAKb,QAAL,GAAgB,KAAhB;AACD;AACF;;;WACD,mBAAUjqB,KAAV,EAAiB;AACf,UAAMsrB,MAAM,GAAG,KAAKtB,OAApB;AACA,UAAIG,KAAK,GAAGmB,MAAM,CAAC9L,GAAP,CAAWxf,KAAX,CAAZ;;AACA,UAAI,CAACmqB,KAAL,EAAY;AACVA,QAAAA,KAAK,GAAG;AACNY,UAAAA,OAAO,EAAE,KADH;AAENP,UAAAA,OAAO,EAAE,IAFH;AAGN/Z,UAAAA,KAAK,EAAE,EAHD;AAIN6Z,UAAAA,SAAS,EAAE;AACTiB,YAAAA,QAAQ,EAAE,EADD;AAETtf,YAAAA,QAAQ,EAAE;AAFD;AAJL,SAAR;AASAqf,QAAAA,MAAM,CAAC1gB,GAAP,CAAW5K,KAAX,EAAkBmqB,KAAlB;AACD;;AACD,aAAOA,KAAP;AACD;;;WACD,gBAAOnqB,KAAP,EAAcoc,KAAd,EAAqB5Q,EAArB,EAAyB;AACvB,WAAKggB,SAAL,CAAexrB,KAAf,EAAsBsqB,SAAtB,CAAgClO,KAAhC,EAAuChb,IAAvC,CAA4CoK,EAA5C;AACD;;;WACD,aAAIxL,KAAJ,EAAWyQ,KAAX,EAAkB;AAAA;;AAChB,UAAI,CAACA,KAAD,IAAU,CAACA,KAAK,CAAC5R,MAArB,EAA6B;AAC3B;AACD;;AACD,oCAAK2sB,SAAL,CAAexrB,KAAf,EAAsByQ,KAAtB,EAA4BrP,IAA5B,iDAAoCqP,KAApC;AACD;;;WACD,aAAIzQ,KAAJ,EAAW;AACT,aAAO,KAAKwrB,SAAL,CAAexrB,KAAf,EAAsByQ,KAAtB,CAA4B5R,MAA5B,GAAqC,CAA5C;AACD;;;WACD,eAAMmB,KAAN,EAAa;AACX,UAAMmqB,KAAK,GAAG,KAAKH,OAAL,CAAaxK,GAAb,CAAiBxf,KAAjB,CAAd;;AACA,UAAI,CAACmqB,KAAL,EAAY;AACV;AACD;;AACDA,MAAAA,KAAK,CAACY,OAAN,GAAgB,IAAhB;AACAZ,MAAAA,KAAK,CAAC9oB,KAAN,GAAcikB,IAAI,CAACuF,GAAL,EAAd;AACAV,MAAAA,KAAK,CAACplB,QAAN,GAAiBolB,KAAK,CAAC1Z,KAAN,CAAYvR,MAAZ,CAAmB,UAAC4Q,GAAD,EAAM2b,GAAN;AAAA,eAAc7pB,IAAI,CAAC0H,GAAL,CAASwG,GAAT,EAAc2b,GAAG,CAACC,SAAlB,CAAd;AAAA,OAAnB,EAA+D,CAA/D,CAAjB;;AACA,WAAKd,QAAL;AACD;;;WACD,iBAAQ5qB,KAAR,EAAe;AACb,UAAI,CAAC,KAAKiqB,QAAV,EAAoB;AAClB,eAAO,KAAP;AACD;;AACD,UAAME,KAAK,GAAG,KAAKH,OAAL,CAAaxK,GAAb,CAAiBxf,KAAjB,CAAd;;AACA,UAAI,CAACmqB,KAAD,IAAU,CAACA,KAAK,CAACY,OAAjB,IAA4B,CAACZ,KAAK,CAAC1Z,KAAN,CAAY5R,MAA7C,EAAqD;AACnD,eAAO,KAAP;AACD;;AACD,aAAO,IAAP;AACD;;;WACD,cAAKmB,KAAL,EAAY;AACV,UAAMmqB,KAAK,GAAG,KAAKH,OAAL,CAAaxK,GAAb,CAAiBxf,KAAjB,CAAd;;AACA,UAAI,CAACmqB,KAAD,IAAU,CAACA,KAAK,CAAC1Z,KAAN,CAAY5R,MAA3B,EAAmC;AACjC;AACD;;AACD,UAAM4R,KAAK,GAAG0Z,KAAK,CAAC1Z,KAApB;AACA,UAAIpR,CAAC,GAAGoR,KAAK,CAAC5R,MAAN,GAAe,CAAvB;;AACA,aAAOQ,CAAC,IAAI,CAAZ,EAAe,EAAEA,CAAjB,EAAoB;AAClBoR,QAAAA,KAAK,CAACpR,CAAD,CAAL,CAASssB,MAAT;AACD;;AACDxB,MAAAA,KAAK,CAAC1Z,KAAN,GAAc,EAAd;;AACA,WAAK4a,OAAL,CAAarrB,KAAb,EAAoBmqB,KAApB,EAA2B7E,IAAI,CAACuF,GAAL,EAA3B,EAAuC,UAAvC;AACD;;;WACD,gBAAO7qB,KAAP,EAAc;AACZ,aAAO,KAAKgqB,OAAL,CAAa4B,MAAb,CAAoB5rB,KAApB,CAAP;AACD;;;;;;AAEH,IAAI6rB,QAAQ,GAAG,IAAI/B,QAAJ,EAAf;;AAEA,IAAMgC,WAAW,GAAG,aAApB;AACA,IAAMC,aAAa,GAAG;AACpBC,EAAAA,OADoB,mBACZ3oB,IADY,EACNiM,EADM,EACF2c,MADE,EACM;AACxB,WAAOA,MAAM,GAAG,GAAT,GAAe3c,EAAf,GAAoBjM,IAA3B;AACD,GAHmB;AAIpB6oB,EAAAA,KAJoB,iBAId7oB,IAJc,EAIRiM,EAJQ,EAIJ2c,MAJI,EAII;AACtB,QAAME,EAAE,GAAG,uBAAM9oB,IAAI,IAAIyoB,WAAd,CAAX;AACA,QAAMM,EAAE,GAAGD,EAAE,CAACE,KAAH,IAAY,uBAAM/c,EAAE,IAAIwc,WAAZ,CAAvB;AACA,WAAOM,EAAE,IAAIA,EAAE,CAACC,KAAT,GACHD,EAAE,CAACE,GAAH,CAAOH,EAAP,EAAWF,MAAX,EAAmBM,SAAnB,EADG,GAEHjd,EAFJ;AAGD,GAVmB;AAWpBkd,EAAAA,MAXoB,kBAWbnpB,IAXa,EAWPiM,EAXO,EAWH2c,MAXG,EAWK;AACvB,WAAO5oB,IAAI,GAAG,CAACiM,EAAE,GAAGjM,IAAN,IAAc4oB,MAA5B;AACD;AAbmB,CAAtB;;IAeMQ;AACJ,qBAAYC,GAAZ,EAAiBxY,MAAjB,EAAyByY,IAAzB,EAA+Brd,EAA/B,EAAmC;AAAA;;AACjC,QAAMsd,YAAY,GAAG1Y,MAAM,CAACyY,IAAD,CAA3B;AACArd,IAAAA,EAAE,GAAG,uBAAQ,CAACod,GAAG,CAACpd,EAAL,EAASA,EAAT,EAAasd,YAAb,EAA2BF,GAAG,CAACrpB,IAA/B,CAAR,CAAL;AACA,QAAMA,IAAI,GAAG,uBAAQ,CAACqpB,GAAG,CAACrpB,IAAL,EAAWupB,YAAX,EAAyBtd,EAAzB,CAAR,CAAb;AACA,SAAK2b,OAAL,GAAe,IAAf;AACA,SAAK4B,GAAL,GAAWH,GAAG,CAACzE,EAAJ,IAAU8D,aAAa,CAACW,GAAG,CAACruB,IAAJ,YAAmBgF,IAAnB,CAAD,CAAlC;AACA,SAAKypB,OAAL,GAAeC,kBAAQL,GAAG,CAACriB,MAAZ,KAAuB0iB,kBAAQC,MAA9C;AACA,SAAKC,MAAL,GAAcrrB,IAAI,CAACC,KAAL,CAAWyjB,IAAI,CAACuF,GAAL,MAAc6B,GAAG,CAACxnB,KAAJ,IAAa,CAA3B,CAAX,CAAd;AACA,SAAKwmB,SAAL,GAAiB,KAAKR,MAAL,GAActpB,IAAI,CAACC,KAAL,CAAW6qB,GAAG,CAAC3nB,QAAf,CAA/B;AACA,SAAKmoB,KAAL,GAAa,CAAC,CAACR,GAAG,CAACvnB,IAAnB;AACA,SAAKgoB,OAAL,GAAejZ,MAAf;AACA,SAAKkZ,KAAL,GAAaT,IAAb;AACA,SAAKU,KAAL,GAAahqB,IAAb;AACA,SAAKiqB,GAAL,GAAWhe,EAAX;AACA,SAAKie,SAAL,GAAiB3uB,SAAjB;AACD;;;;WACD,kBAAS;AACP,aAAO,KAAKqsB,OAAZ;AACD;;;WACD,gBAAOyB,GAAP,EAAYpd,EAAZ,EAAgB8a,IAAhB,EAAsB;AACpB,UAAI,KAAKa,OAAT,EAAkB;AAChB,aAAKI,OAAL,CAAa,KAAb;;AACA,YAAMuB,YAAY,GAAG,KAAKO,OAAL,CAAa,KAAKC,KAAlB,CAArB;AACA,YAAMI,OAAO,GAAGpD,IAAI,GAAG,KAAK6C,MAA5B;AACA,YAAMQ,MAAM,GAAG,KAAK/B,SAAL,GAAiB8B,OAAhC;AACA,aAAKP,MAAL,GAAc7C,IAAd;AACA,aAAKsB,SAAL,GAAiB9pB,IAAI,CAACC,KAAL,CAAWD,IAAI,CAAC0H,GAAL,CAASmkB,MAAT,EAAiBf,GAAG,CAAC3nB,QAArB,CAAX,CAAjB;AACA,aAAKmmB,MAAL,IAAesC,OAAf;AACA,aAAKN,KAAL,GAAa,CAAC,CAACR,GAAG,CAACvnB,IAAnB;AACA,aAAKmoB,GAAL,GAAW,uBAAQ,CAACZ,GAAG,CAACpd,EAAL,EAASA,EAAT,EAAasd,YAAb,EAA2BF,GAAG,CAACrpB,IAA/B,CAAR,CAAX;AACA,aAAKgqB,KAAL,GAAa,uBAAQ,CAACX,GAAG,CAACrpB,IAAL,EAAWupB,YAAX,EAAyBtd,EAAzB,CAAR,CAAb;AACD;AACF;;;WACD,kBAAS;AACP,UAAI,KAAK2b,OAAT,EAAkB;AAChB,aAAKE,IAAL,CAAU7F,IAAI,CAACuF,GAAL,EAAV;AACA,aAAKI,OAAL,GAAe,KAAf;;AACA,aAAKI,OAAL,CAAa,KAAb;AACD;AACF;;;WACD,cAAKjB,IAAL,EAAW;AACT,UAAMoD,OAAO,GAAGpD,IAAI,GAAG,KAAK6C,MAA5B;AACA,UAAMloB,QAAQ,GAAG,KAAK2mB,SAAtB;AACA,UAAMiB,IAAI,GAAG,KAAKS,KAAlB;AACA,UAAM/pB,IAAI,GAAG,KAAKgqB,KAAlB;AACA,UAAMloB,IAAI,GAAG,KAAK+nB,KAAlB;AACA,UAAM5d,EAAE,GAAG,KAAKge,GAAhB;AACA,UAAIrB,MAAJ;AACA,WAAKhB,OAAL,GAAe5nB,IAAI,KAAKiM,EAAT,KAAgBnK,IAAI,IAAKqoB,OAAO,GAAGzoB,QAAnC,CAAf;;AACA,UAAI,CAAC,KAAKkmB,OAAV,EAAmB;AACjB,aAAKkC,OAAL,CAAaR,IAAb,IAAqBrd,EAArB;;AACA,aAAK+b,OAAL,CAAa,IAAb;;AACA;AACD;;AACD,UAAImC,OAAO,GAAG,CAAd,EAAiB;AACf,aAAKL,OAAL,CAAaR,IAAb,IAAqBtpB,IAArB;AACA;AACD;;AACD4oB,MAAAA,MAAM,GAAIuB,OAAO,GAAGzoB,QAAX,GAAuB,CAAhC;AACAknB,MAAAA,MAAM,GAAG9mB,IAAI,IAAI8mB,MAAM,GAAG,CAAjB,GAAqB,IAAIA,MAAzB,GAAkCA,MAA3C;AACAA,MAAAA,MAAM,GAAG,KAAKa,OAAL,CAAalrB,IAAI,CAACyH,GAAL,CAAS,CAAT,EAAYzH,IAAI,CAAC0H,GAAL,CAAS,CAAT,EAAY2iB,MAAZ,CAAZ,CAAb,CAAT;AACA,WAAKkB,OAAL,CAAaR,IAAb,IAAqB,KAAKE,GAAL,CAASxpB,IAAT,EAAeiM,EAAf,EAAmB2c,MAAnB,CAArB;AACD;;;WACD,gBAAO;AACL,UAAMxgB,QAAQ,GAAG,KAAK8hB,SAAL,KAAmB,KAAKA,SAAL,GAAiB,EAApC,CAAjB;AACA,aAAO,IAAItiB,OAAJ,CAAY,UAACmX,GAAD,EAAMsL,GAAN,EAAc;AAC/BjiB,QAAAA,QAAQ,CAACrK,IAAT,CAAc;AAACghB,UAAAA,GAAG,EAAHA,GAAD;AAAMsL,UAAAA,GAAG,EAAHA;AAAN,SAAd;AACD,OAFM,CAAP;AAGD;;;WACD,iBAAQC,QAAR,EAAkB;AAChB,UAAMC,MAAM,GAAGD,QAAQ,GAAG,KAAH,GAAW,KAAlC;AACA,UAAMliB,QAAQ,GAAG,KAAK8hB,SAAL,IAAkB,EAAnC;;AACA,WAAK,IAAIluB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGoM,QAAQ,CAAC5M,MAA7B,EAAqCQ,CAAC,EAAtC,EAA0C;AACxCoM,QAAAA,QAAQ,CAACpM,CAAD,CAAR,CAAYuuB,MAAZ;AACD;AACF;;;;;;;AAGH,IAAMC,OAAO,GAAG,CAAC,GAAD,EAAM,GAAN,EAAW,aAAX,EAA0B,QAA1B,EAAoC,SAApC,CAAhB;AACA,IAAM9sB,MAAM,GAAG,CAAC,OAAD,EAAU,aAAV,EAAyB,iBAAzB,CAAf;;AACAxD,kBAASqN,GAAT,CAAa,WAAb,EAA0B;AACxB1F,EAAAA,KAAK,EAAEtG,SADiB;AAExBmG,EAAAA,QAAQ,EAAE,IAFc;AAGxBsF,EAAAA,MAAM,EAAE,cAHgB;AAIxB4d,EAAAA,EAAE,EAAErpB,SAJoB;AAKxByE,EAAAA,IAAI,EAAEzE,SALkB;AAMxBuG,EAAAA,IAAI,EAAEvG,SANkB;AAOxB0Q,EAAAA,EAAE,EAAE1Q,SAPoB;AAQxBP,EAAAA,IAAI,EAAEO;AARkB,CAA1B;;AAUA,IAAMkvB,gBAAgB,GAAG5hB,MAAM,CAACC,IAAP,CAAY5O,kBAASwwB,SAArB,CAAzB;;AACAxwB,kBAASywB,QAAT,CAAkB,WAAlB,EAA+B;AAC7BC,EAAAA,SAAS,EAAE,KADkB;AAE7BC,EAAAA,UAAU,EAAE,KAFiB;AAG7BC,EAAAA,WAAW,EAAE,qBAACxP,IAAD;AAAA,WAAUA,IAAI,KAAK,YAAT,IAAyBA,IAAI,KAAK,YAAlC,IAAkDA,IAAI,KAAK,IAArE;AAAA;AAHgB,CAA/B;;AAKAphB,kBAASqN,GAAT,CAAa,YAAb,EAA2B;AACzB7J,EAAAA,MAAM,EAAE;AACN1C,IAAAA,IAAI,EAAE,OADA;AAEN+vB,IAAAA,UAAU,EAAErtB;AAFN,GADiB;AAKzB8sB,EAAAA,OAAO,EAAE;AACPxvB,IAAAA,IAAI,EAAE,QADC;AAEP+vB,IAAAA,UAAU,EAAEP;AAFL;AALgB,CAA3B;;AAUAtwB,kBAASywB,QAAT,CAAkB,YAAlB,EAAgC;AAC9BC,EAAAA,SAAS,EAAE;AADmB,CAAhC;;AAGA1wB,kBAASqN,GAAT,CAAa,aAAb,EAA4B;AAC1BmS,EAAAA,MAAM,EAAE;AACNgR,IAAAA,SAAS,EAAE;AACThpB,MAAAA,QAAQ,EAAE;AADD;AADL,GADkB;AAM1BZ,EAAAA,MAAM,EAAE;AACN4pB,IAAAA,SAAS,EAAE;AACThpB,MAAAA,QAAQ,EAAE;AADD;AADL,GANkB;AAW1B2X,EAAAA,IAAI,EAAE;AACJ2R,IAAAA,UAAU,EAAE;AACVttB,MAAAA,MAAM,EAAE;AACNsC,QAAAA,IAAI,EAAE;AADA,OADE;AAIVirB,MAAAA,OAAO,EAAE;AACPjwB,QAAAA,IAAI,EAAE,SADC;AAEP0G,QAAAA,QAAQ,EAAE;AAFH;AAJC;AADR,GAXoB;AAsB1BpB,EAAAA,IAAI,EAAE;AACJ0qB,IAAAA,UAAU,EAAE;AACVttB,MAAAA,MAAM,EAAE;AACNuO,QAAAA,EAAE,EAAE;AADE,OADE;AAIVgf,MAAAA,OAAO,EAAE;AACPjwB,QAAAA,IAAI,EAAE,SADC;AAEPgM,QAAAA,MAAM,EAAE,QAFD;AAGP4d,QAAAA,EAAE,EAAE,YAAAzD,CAAC;AAAA,iBAAIA,CAAC,GAAG,CAAR;AAAA;AAHE;AAJC;AADR;AAtBoB,CAA5B;;IAmCM+J;AACJ,sBAAYvuB,KAAZ,EAAmBwuB,MAAnB,EAA2B;AAAA;;AACzB,SAAKC,MAAL,GAAczuB,KAAd;AACA,SAAK0uB,WAAL,GAAmB,IAAIvQ,GAAJ,EAAnB;AACA,SAAKwQ,SAAL,CAAeH,MAAf;AACD;;;;WACD,mBAAUA,MAAV,EAAkB;AAChB,UAAI,CAAC,uBAASA,MAAT,CAAL,EAAuB;AACrB;AACD;;AACD,UAAMI,aAAa,GAAG,KAAKF,WAA3B;AACAxiB,MAAAA,MAAM,CAAC2iB,mBAAP,CAA2BL,MAA3B,EAAmCjrB,OAAnC,CAA2C,UAAAwM,GAAG,EAAI;AAChD,YAAM2c,GAAG,GAAG8B,MAAM,CAACze,GAAD,CAAlB;;AACA,YAAI,CAAC,uBAAS2c,GAAT,CAAL,EAAoB;AAClB;AACD;;AACD,YAAMiB,QAAQ,GAAG,EAAjB;;AALgD,mDAM3BG,gBAN2B;AAAA;;AAAA;AAMhD,8DAAuC;AAAA,gBAA5BgB,MAA4B;AACrCnB,YAAAA,QAAQ,CAACmB,MAAD,CAAR,GAAmBpC,GAAG,CAACoC,MAAD,CAAtB;AACD;AAR+C;AAAA;AAAA;AAAA;AAAA;;AAShD,SAAC,uBAAQpC,GAAG,CAAC0B,UAAZ,KAA2B1B,GAAG,CAAC0B,UAA/B,IAA6C,CAACre,GAAD,CAA9C,EAAqDxM,OAArD,CAA6D,UAACopB,IAAD,EAAU;AACrE,cAAIA,IAAI,KAAK5c,GAAT,IAAgB,CAAC6e,aAAa,CAACrP,GAAd,CAAkBoN,IAAlB,CAArB,EAA8C;AAC5CiC,YAAAA,aAAa,CAAChkB,GAAd,CAAkB+hB,IAAlB,EAAwBgB,QAAxB;AACD;AACF,SAJD;AAKD,OAdD;AAeD;;;WACD,yBAAgBzZ,MAAhB,EAAwBuP,MAAxB,EAAgC;AAC9B,UAAMsL,UAAU,GAAGtL,MAAM,CAACvjB,OAA1B;AACA,UAAMA,OAAO,GAAG8uB,oBAAoB,CAAC9a,MAAD,EAAS6a,UAAT,CAApC;;AACA,UAAI,CAAC7uB,OAAL,EAAc;AACZ,eAAO,EAAP;AACD;;AACD,UAAMmuB,UAAU,GAAG,KAAKY,iBAAL,CAAuB/uB,OAAvB,EAAgC6uB,UAAhC,CAAnB;;AACA,UAAIA,UAAU,CAACG,OAAf,EAAwB;AACtBC,QAAAA,QAAQ,CAACjb,MAAM,CAAChU,OAAP,CAAekvB,WAAhB,EAA6BL,UAA7B,CAAR,CAAiDvlB,IAAjD,CAAsD,YAAM;AAC1D0K,UAAAA,MAAM,CAAChU,OAAP,GAAiB6uB,UAAjB;AACD,SAFD,EAEG,YAAM,CACR,CAHD;AAID;;AACD,aAAOV,UAAP;AACD;;;WACD,2BAAkBna,MAAlB,EAA0BuP,MAA1B,EAAkC;AAChC,UAAMmL,aAAa,GAAG,KAAKF,WAA3B;AACA,UAAML,UAAU,GAAG,EAAnB;AACA,UAAMtD,OAAO,GAAG7W,MAAM,CAACkb,WAAP,KAAuBlb,MAAM,CAACkb,WAAP,GAAqB,EAA5C,CAAhB;AACA,UAAMxM,KAAK,GAAG1W,MAAM,CAACC,IAAP,CAAYsX,MAAZ,CAAd;AACA,UAAM2G,IAAI,GAAG9E,IAAI,CAACuF,GAAL,EAAb;AACA,UAAIxrB,CAAJ;;AACA,WAAKA,CAAC,GAAGujB,KAAK,CAAC/jB,MAAN,GAAe,CAAxB,EAA2BQ,CAAC,IAAI,CAAhC,EAAmC,EAAEA,CAArC,EAAwC;AACtC,YAAMstB,IAAI,GAAG/J,KAAK,CAACvjB,CAAD,CAAlB;;AACA,YAAIstB,IAAI,CAAC0C,MAAL,CAAY,CAAZ,MAAmB,GAAvB,EAA4B;AAC1B;AACD;;AACD,YAAI1C,IAAI,KAAK,SAAb,EAAwB;AACtB0B,UAAAA,UAAU,CAACjtB,IAAX,OAAAitB,UAAU,qBAAS,KAAKiB,eAAL,CAAqBpb,MAArB,EAA6BuP,MAA7B,CAAT,EAAV;AACA;AACD;;AACD,YAAMra,KAAK,GAAGqa,MAAM,CAACkJ,IAAD,CAApB;AACA,YAAIoB,SAAS,GAAGhD,OAAO,CAAC4B,IAAD,CAAvB;AACA,YAAMD,GAAG,GAAGkC,aAAa,CAACpP,GAAd,CAAkBmN,IAAlB,CAAZ;;AACA,YAAIoB,SAAJ,EAAe;AACb,cAAIrB,GAAG,IAAIqB,SAAS,CAAChR,MAAV,EAAX,EAA+B;AAC7BgR,YAAAA,SAAS,CAAC/T,MAAV,CAAiB0S,GAAjB,EAAsBtjB,KAAtB,EAA6BghB,IAA7B;AACA;AACD,WAHD,MAGO;AACL2D,YAAAA,SAAS,CAACpC,MAAV;AACD;AACF;;AACD,YAAI,CAACe,GAAD,IAAQ,CAACA,GAAG,CAAC3nB,QAAjB,EAA2B;AACzBmP,UAAAA,MAAM,CAACyY,IAAD,CAAN,GAAevjB,KAAf;AACA;AACD;;AACD2hB,QAAAA,OAAO,CAAC4B,IAAD,CAAP,GAAgBoB,SAAS,GAAG,IAAItB,SAAJ,CAAcC,GAAd,EAAmBxY,MAAnB,EAA2ByY,IAA3B,EAAiCvjB,KAAjC,CAA5B;AACAilB,QAAAA,UAAU,CAACjtB,IAAX,CAAgB2sB,SAAhB;AACD;;AACD,aAAOM,UAAP;AACD;;;WACD,gBAAOna,MAAP,EAAeuP,MAAf,EAAuB;AACrB,UAAI,KAAKiL,WAAL,CAAiB/wB,IAAjB,KAA0B,CAA9B,EAAiC;AAC/B,iBAAcuW,MAAd,EAAsBuP,MAAtB;;AACA;AACD;;AACD,UAAM4K,UAAU,GAAG,KAAKY,iBAAL,CAAuB/a,MAAvB,EAA+BuP,MAA/B,CAAnB;;AACA,UAAI4K,UAAU,CAACxvB,MAAf,EAAuB;AACrBgtB,QAAAA,QAAQ,CAACvlB,GAAT,CAAa,KAAKmoB,MAAlB,EAA0BJ,UAA1B;AACA,eAAO,IAAP;AACD;AACF;;;;;;;;AAEH,SAASc,QAAT,CAAkBd,UAAlB,EAA8BD,UAA9B,EAA0C;AACxC,MAAMrD,OAAO,GAAG,EAAhB;AACA,MAAM5e,IAAI,GAAGD,MAAM,CAACC,IAAP,CAAYiiB,UAAZ,CAAb;;AACA,OAAK,IAAI/uB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8M,IAAI,CAACtN,MAAzB,EAAiCQ,CAAC,EAAlC,EAAsC;AACpC,QAAMkwB,IAAI,GAAGlB,UAAU,CAACliB,IAAI,CAAC9M,CAAD,CAAL,CAAvB;;AACA,QAAIkwB,IAAI,IAAIA,IAAI,CAACxS,MAAL,EAAZ,EAA2B;AACzBgO,MAAAA,OAAO,CAAC3pB,IAAR,CAAamuB,IAAI,CAAClH,IAAL,EAAb;AACD;AACF;;AACD,SAAOpd,OAAO,CAACa,GAAR,CAAYif,OAAZ,CAAP;AACD;;AACD,SAASiE,oBAAT,CAA8B9a,MAA9B,EAAsC6a,UAAtC,EAAkD;AAChD,MAAI,CAACA,UAAL,EAAiB;AACf;AACD;;AACD,MAAI7uB,OAAO,GAAGgU,MAAM,CAAChU,OAArB;;AACA,MAAI,CAACA,OAAL,EAAc;AACZgU,IAAAA,MAAM,CAAChU,OAAP,GAAiB6uB,UAAjB;AACA;AACD;;AACD,MAAI7uB,OAAO,CAACgvB,OAAZ,EAAqB;AACnBhb,IAAAA,MAAM,CAAChU,OAAP,GAAiBA,OAAO,GAAG,SAAc,EAAd,EAAkBA,OAAlB,EAA2B;AAACgvB,MAAAA,OAAO,EAAE,KAAV;AAAiBE,MAAAA,WAAW,EAAE;AAA9B,KAA3B,CAA3B;AACD;;AACD,SAAOlvB,OAAP;AACD;;AAED,SAASsvB,SAAT,CAAmBniB,KAAnB,EAA0BoiB,eAA1B,EAA2C;AACzC,MAAM9lB,IAAI,GAAG0D,KAAK,IAAIA,KAAK,CAACnN,OAAf,IAA0B,EAAvC;AACA,MAAMwvB,OAAO,GAAG/lB,IAAI,CAAC+lB,OAArB;AACA,MAAMrmB,GAAG,GAAGM,IAAI,CAACN,GAAL,KAAazK,SAAb,GAAyB6wB,eAAzB,GAA2C,CAAvD;AACA,MAAMnmB,GAAG,GAAGK,IAAI,CAACL,GAAL,KAAa1K,SAAb,GAAyB6wB,eAAzB,GAA2C,CAAvD;AACA,SAAO;AACLpuB,IAAAA,KAAK,EAAEquB,OAAO,GAAGpmB,GAAH,GAASD,GADlB;AAEL/H,IAAAA,GAAG,EAAEouB,OAAO,GAAGrmB,GAAH,GAASC;AAFhB,GAAP;AAID;;AACD,SAASqmB,WAAT,CAAqBC,MAArB,EAA6BC,MAA7B,EAAqCJ,eAArC,EAAsD;AACpD,MAAIA,eAAe,KAAK,KAAxB,EAA+B;AAC7B,WAAO,KAAP;AACD;;AACD,MAAM7iB,CAAC,GAAG4iB,SAAS,CAACI,MAAD,EAASH,eAAT,CAAnB;AACA,MAAM5iB,CAAC,GAAG2iB,SAAS,CAACK,MAAD,EAASJ,eAAT,CAAnB;AACA,SAAO;AACL9sB,IAAAA,GAAG,EAAEkK,CAAC,CAACvL,GADF;AAELwB,IAAAA,KAAK,EAAE8J,CAAC,CAACtL,GAFJ;AAGLsB,IAAAA,MAAM,EAAEiK,CAAC,CAACxL,KAHL;AAILwB,IAAAA,IAAI,EAAE+J,CAAC,CAACvL;AAJH,GAAP;AAMD;;AACD,SAASyuB,MAAT,CAAgB1mB,KAAhB,EAAuB;AACrB,MAAI6f,CAAJ,EAAOjoB,CAAP,EAAUG,CAAV,EAAa4uB,CAAb;;AACA,MAAI,uBAAS3mB,KAAT,CAAJ,EAAqB;AACnB6f,IAAAA,CAAC,GAAG7f,KAAK,CAACzG,GAAV;AACA3B,IAAAA,CAAC,GAAGoI,KAAK,CAACtG,KAAV;AACA3B,IAAAA,CAAC,GAAGiI,KAAK,CAACxG,MAAV;AACAmtB,IAAAA,CAAC,GAAG3mB,KAAK,CAACvG,IAAV;AACD,GALD,MAKO;AACLomB,IAAAA,CAAC,GAAGjoB,CAAC,GAAGG,CAAC,GAAG4uB,CAAC,GAAG3mB,KAAhB;AACD;;AACD,SAAO;AACLzG,IAAAA,GAAG,EAAEsmB,CADA;AAELnmB,IAAAA,KAAK,EAAE9B,CAFF;AAGL4B,IAAAA,MAAM,EAAEzB,CAHH;AAIL0B,IAAAA,IAAI,EAAEktB,CAJD;AAKLC,IAAAA,QAAQ,EAAE5mB,KAAK,KAAK;AALf,GAAP;AAOD;;AACD,SAAS6mB,uBAAT,CAAiCjwB,KAAjC,EAAwCkwB,aAAxC,EAAuD;AACrD,MAAM/jB,IAAI,GAAG,EAAb;;AACA,MAAMgkB,QAAQ,GAAGnwB,KAAK,CAACowB,sBAAN,CAA6BF,aAA7B,CAAjB;;AACA,MAAI7wB,CAAJ,EAAOgxB,IAAP;;AACA,OAAKhxB,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAGF,QAAQ,CAACtxB,MAA5B,EAAoCQ,CAAC,GAAGgxB,IAAxC,EAA8C,EAAEhxB,CAAhD,EAAmD;AACjD8M,IAAAA,IAAI,CAAC/K,IAAL,CAAU+uB,QAAQ,CAAC9wB,CAAD,CAAR,CAAYoB,KAAtB;AACD;;AACD,SAAO0L,IAAP;AACD;;AACD,SAASmkB,WAAT,CAAoBC,KAApB,EAA2BnnB,KAA3B,EAAkConB,OAAlC,EAAyD;AAAA,MAAdtwB,OAAc,uEAAJ,EAAI;AACvD,MAAMiM,IAAI,GAAGokB,KAAK,CAACpkB,IAAnB;AACA,MAAMskB,UAAU,GAAGvwB,OAAO,CAACwwB,IAAR,KAAiB,QAApC;AACA,MAAIrxB,CAAJ,EAAOgxB,IAAP,EAAaM,YAAb,EAA2BC,UAA3B;;AACA,MAAIxnB,KAAK,KAAK,IAAd,EAAoB;AAClB;AACD;;AACD,OAAK/J,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAGlkB,IAAI,CAACtN,MAAxB,EAAgCQ,CAAC,GAAGgxB,IAApC,EAA0C,EAAEhxB,CAA5C,EAA+C;AAC7CsxB,IAAAA,YAAY,GAAG,CAACxkB,IAAI,CAAC9M,CAAD,CAApB;;AACA,QAAIsxB,YAAY,KAAKH,OAArB,EAA8B;AAC5B,UAAItwB,OAAO,CAAC4L,GAAZ,EAAiB;AACf;AACD;;AACD;AACD;;AACD8kB,IAAAA,UAAU,GAAGL,KAAK,CAAC9M,MAAN,CAAakN,YAAb,CAAb;;AACA,QAAI,uBAAeC,UAAf,MAA+BH,UAAU,IAAKrnB,KAAK,KAAK,CAAV,IAAe,uBAAKA,KAAL,MAAgB,uBAAKwnB,UAAL,CAA7E,CAAJ,EAAqG;AACnGxnB,MAAAA,KAAK,IAAIwnB,UAAT;AACD;AACF;;AACD,SAAOxnB,KAAP;AACD;;AACD,SAASynB,wBAAT,CAAkC5wB,IAAlC,EAAwC;AACtC,MAAMkM,IAAI,GAAGD,MAAM,CAACC,IAAP,CAAYlM,IAAZ,CAAb;AACA,MAAM6wB,KAAK,GAAG,IAAI1tB,KAAJ,CAAU+I,IAAI,CAACtN,MAAf,CAAd;AACA,MAAIQ,CAAJ,EAAOgxB,IAAP,EAAatgB,GAAb;;AACA,OAAK1Q,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAGlkB,IAAI,CAACtN,MAAxB,EAAgCQ,CAAC,GAAGgxB,IAApC,EAA0C,EAAEhxB,CAA5C,EAA+C;AAC7C0Q,IAAAA,GAAG,GAAG5D,IAAI,CAAC9M,CAAD,CAAV;AACAyxB,IAAAA,KAAK,CAACzxB,CAAD,CAAL,GAAW;AACTuN,MAAAA,CAAC,EAAEmD,GADM;AAETlD,MAAAA,CAAC,EAAE5M,IAAI,CAAC8P,GAAD;AAFE,KAAX;AAID;;AACD,SAAO+gB,KAAP;AACD;;AACD,SAASC,SAAT,CAAmB1jB,KAAnB,EAA0B2W,IAA1B,EAAgC;AAC9B,MAAMgN,OAAO,GAAG3jB,KAAK,IAAIA,KAAK,CAACnN,OAAN,CAAc8wB,OAAvC;AACA,SAAOA,OAAO,IAAKA,OAAO,KAAKpyB,SAAZ,IAAyBolB,IAAI,CAACuM,KAAL,KAAe3xB,SAA3D;AACD;;AACD,SAASqyB,WAAT,CAAqBC,UAArB,EAAiCC,UAAjC,EAA6CnN,IAA7C,EAAmD;AACjD,mBAAUkN,UAAU,CAACtU,EAArB,cAA2BuU,UAAU,CAACvU,EAAtC,cAA4CoH,IAAI,CAACuM,KAAL,IAAcvM,IAAI,CAAC3lB,IAA/D;AACD;;AACD,SAAS+yB,aAAT,CAAuB/jB,KAAvB,EAA8B;AAC5B,6BAA2CA,KAAK,CAAC+jB,aAAN,EAA3C;AAAA,MAAO/nB,GAAP,wBAAOA,GAAP;AAAA,MAAYC,GAAZ,wBAAYA,GAAZ;AAAA,MAAiB+nB,UAAjB,wBAAiBA,UAAjB;AAAA,MAA6BC,UAA7B,wBAA6BA,UAA7B;;AACA,SAAO;AACLjoB,IAAAA,GAAG,EAAEgoB,UAAU,GAAGhoB,GAAH,GAAS+b,MAAM,CAACmM,iBAD1B;AAELjoB,IAAAA,GAAG,EAAEgoB,UAAU,GAAGhoB,GAAH,GAAS8b,MAAM,CAACoM;AAF1B,GAAP;AAID;;AACD,SAASC,gBAAT,CAA0BC,MAA1B,EAAkCC,QAAlC,EAA4CC,UAA5C,EAAwD;AACtD,MAAMC,QAAQ,GAAGH,MAAM,CAACC,QAAD,CAAN,KAAqBD,MAAM,CAACC,QAAD,CAAN,GAAmB,EAAxC,CAAjB;AACA,SAAOE,QAAQ,CAACD,UAAD,CAAR,KAAyBC,QAAQ,CAACD,UAAD,CAAR,GAAuB,EAAhD,CAAP;AACD;;AACD,SAASE,mBAAT,CAA6BvB,KAA7B,EAAoCwB,MAApC,EAA4CC,QAA5C,EAAsD3zB,IAAtD,EAA4D;AAAA,8CACvC0zB,MAAM,CAACE,uBAAP,CAA+B5zB,IAA/B,EAAqCqxB,OAArC,EADuC;AAAA;;AAAA;AAC1D,2DAAmE;AAAA,UAAxD1L,IAAwD;AACjE,UAAM5a,KAAK,GAAGmnB,KAAK,CAACvM,IAAI,CAACvjB,KAAN,CAAnB;;AACA,UAAKuxB,QAAQ,IAAI5oB,KAAK,GAAG,CAArB,IAA4B,CAAC4oB,QAAD,IAAa5oB,KAAK,GAAG,CAArD,EAAyD;AACvD,eAAO4a,IAAI,CAACvjB,KAAZ;AACD;AACF;AANyD;AAAA;AAAA;AAAA;AAAA;;AAO1D,SAAO,IAAP;AACD;;AACD,SAASyxB,YAAT,CAAsB/X,UAAtB,EAAkCgY,MAAlC,EAA0C;AACxC,MAAOnyB,KAAP,GAAmCma,UAAnC,CAAOna,KAAP;AAAA,MAA2BgkB,IAA3B,GAAmC7J,UAAnC,CAAciY,WAAd;AACA,MAAMV,MAAM,GAAG1xB,KAAK,CAACqyB,OAAN,KAAkBryB,KAAK,CAACqyB,OAAN,GAAgB,EAAlC,CAAf;AACA,MAAOC,MAAP,GAA8CtO,IAA9C,CAAOsO,MAAP;AAAA,MAAeP,MAAf,GAA8C/N,IAA9C,CAAe+N,MAAf;AAAA,MAA8BpB,YAA9B,GAA8C3M,IAA9C,CAAuBvjB,KAAvB;AACA,MAAM8xB,KAAK,GAAGD,MAAM,CAACE,IAArB;AACA,MAAMC,KAAK,GAAGV,MAAM,CAACS,IAArB;AACA,MAAMziB,GAAG,GAAGkhB,WAAW,CAACqB,MAAD,EAASP,MAAT,EAAiB/N,IAAjB,CAAvB;AACA,MAAMqM,IAAI,GAAG8B,MAAM,CAACtzB,MAApB;AACA,MAAI0xB,KAAJ;;AACA,OAAK,IAAIlxB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgxB,IAApB,EAA0B,EAAEhxB,CAA5B,EAA+B;AAC7B,QAAM4C,IAAI,GAAGkwB,MAAM,CAAC9yB,CAAD,CAAnB;AACA,QAAgBoB,KAAhB,GAAyCwB,IAAzC,CAAQswB,KAAR;AAAA,QAAgCnpB,KAAhC,GAAyCnH,IAAzC,CAAwBwwB,KAAxB;AACA,QAAMC,UAAU,GAAGzwB,IAAI,CAACowB,OAAL,KAAiBpwB,IAAI,CAACowB,OAAL,GAAe,EAAhC,CAAnB;AACA9B,IAAAA,KAAK,GAAGmC,UAAU,CAACD,KAAD,CAAV,GAAoBhB,gBAAgB,CAACC,MAAD,EAAS3hB,GAAT,EAActP,KAAd,CAA5C;AACA8vB,IAAAA,KAAK,CAACI,YAAD,CAAL,GAAsBvnB,KAAtB;AACAmnB,IAAAA,KAAK,CAACoC,IAAN,GAAab,mBAAmB,CAACvB,KAAD,EAAQwB,MAAR,EAAgB,IAAhB,EAAsB/N,IAAI,CAAC3lB,IAA3B,CAAhC;AACAkyB,IAAAA,KAAK,CAACqC,OAAN,GAAgBd,mBAAmB,CAACvB,KAAD,EAAQwB,MAAR,EAAgB,KAAhB,EAAuB/N,IAAI,CAAC3lB,IAA5B,CAAnC;AACD;AACF;;AACD,SAASw0B,eAAT,CAAyB7yB,KAAzB,EAAgCwyB,IAAhC,EAAsC;AACpC,MAAMvzB,MAAM,GAAGe,KAAK,CAACf,MAArB;AACA,SAAOiN,MAAM,CAACC,IAAP,CAAYlN,MAAZ,EAAoB6d,MAApB,CAA2B,UAAA/M,GAAG;AAAA,WAAI9Q,MAAM,CAAC8Q,GAAD,CAAN,CAAYyiB,IAAZ,KAAqBA,IAAzB;AAAA,GAA9B,EAA6DM,KAA7D,EAAP;AACD;;AACD,SAASC,oBAAT,CAA8B7wB,MAA9B,EAAsCzB,KAAtC,EAA6C;AAC3C,SAAO,uBAAcyB,MAAd,EACL;AACE6a,IAAAA,MAAM,EAAE,KADV;AAEE3d,IAAAA,OAAO,EAAER,SAFX;AAGE+xB,IAAAA,YAAY,EAAElwB,KAHhB;AAIEA,IAAAA,KAAK,EAALA,KAJF;AAKEiwB,IAAAA,IAAI,EAAE,SALR;AAMEryB,IAAAA,IAAI,EAAE;AANR,GADK,CAAP;AAUD;;AACD,SAAS20B,iBAAT,CAA2B9wB,MAA3B,EAAmCzB,KAAnC,EAA0CvC,OAA1C,EAAmD;AACjD,SAAO,uBAAcgE,MAAd,EAAsB;AAC3B6a,IAAAA,MAAM,EAAE,KADmB;AAE3BkW,IAAAA,SAAS,EAAExyB,KAFgB;AAG3B0xB,IAAAA,MAAM,EAAEvzB,SAHmB;AAI3Bs0B,IAAAA,GAAG,EAAEt0B,SAJsB;AAK3BV,IAAAA,OAAO,EAAPA,OAL2B;AAM3BuC,IAAAA,KAAK,EAALA,KAN2B;AAO3BiwB,IAAAA,IAAI,EAAE,SAPqB;AAQ3BryB,IAAAA,IAAI,EAAE;AARqB,GAAtB,CAAP;AAUD;;AACD,SAAS80B,WAAT,CAAqBnP,IAArB,EAA2BvT,KAA3B,EAAkC;AAChC,MAAMkgB,YAAY,GAAG3M,IAAI,CAAC7J,UAAL,CAAgB1Z,KAArC;AACA,MAAM+xB,IAAI,GAAGxO,IAAI,CAAC+N,MAAL,IAAe/N,IAAI,CAAC+N,MAAL,CAAYS,IAAxC;;AACA,MAAI,CAACA,IAAL,EAAW;AACT;AACD;;AACD/hB,EAAAA,KAAK,GAAGA,KAAK,IAAIuT,IAAI,CAACoP,OAAtB;;AANgC,8CAOX3iB,KAPW;AAAA;;AAAA;AAOhC,2DAA4B;AAAA,UAAjB0hB,MAAiB;AAC1B,UAAMT,MAAM,GAAGS,MAAM,CAACE,OAAtB;;AACA,UAAI,CAACX,MAAD,IAAWA,MAAM,CAACc,IAAD,CAAN,KAAiB5zB,SAA5B,IAAyC8yB,MAAM,CAACc,IAAD,CAAN,CAAa7B,YAAb,MAA+B/xB,SAA5E,EAAuF;AACrF;AACD;;AACD,aAAO8yB,MAAM,CAACc,IAAD,CAAN,CAAa7B,YAAb,CAAP;AACD;AAb+B;AAAA;AAAA;AAAA;AAAA;AAcjC;;AACD,IAAM0C,kBAAkB,GAAG,SAArBA,kBAAqB,CAAC3C,IAAD;AAAA,SAAUA,IAAI,KAAK,OAAT,IAAoBA,IAAI,KAAK,MAAvC;AAAA,CAA3B;;AACA,IAAM4C,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,MAAD,EAASC,MAAT;AAAA,SAAoBA,MAAM,GAAGD,MAAH,GAAY,SAAc,EAAd,EAAkBA,MAAlB,CAAtC;AAAA,CAAzB;;AACA,IAAME,WAAW,GAAG,SAAdA,WAAc,CAACC,QAAD,EAAW1P,IAAX,EAAiBhkB,KAAjB;AAAA,SAA2B0zB,QAAQ,IAAI,CAAC1P,IAAI,CAAC2P,MAAlB,IAA4B3P,IAAI,CAAC4P,QAAjC,IAC1C;AAACznB,IAAAA,IAAI,EAAE8jB,uBAAuB,CAACjwB,KAAD,EAAQ,IAAR,CAA9B;AAA6CyjB,IAAAA,MAAM,EAAE;AAArD,GADe;AAAA,CAApB;;IAEMoQ;AACJ,6BAAY7zB,KAAZ,EAAmB2wB,YAAnB,EAAiC;AAAA;;AAC/B,SAAK3wB,KAAL,GAAaA,KAAb;AACA,SAAK8zB,IAAL,GAAY9zB,KAAK,CAAC+zB,GAAlB;AACA,SAAKtzB,KAAL,GAAakwB,YAAb;AACA,SAAKqD,eAAL,GAAuB,EAAvB;AACA,SAAK5B,WAAL,GAAmB,KAAK6B,OAAL,EAAnB;AACA,SAAKC,KAAL,GAAa,KAAK9B,WAAL,CAAiB/zB,IAA9B;AACA,SAAK6B,OAAL,GAAetB,SAAf;AACA,SAAKu1B,QAAL,GAAgB,KAAhB;AACA,SAAKC,KAAL,GAAax1B,SAAb;AACA,SAAKy1B,WAAL,GAAmBz1B,SAAnB;AACA,SAAK01B,cAAL,GAAsB11B,SAAtB;AACA,SAAK21B,UAAL,GAAkB31B,SAAlB;AACA,SAAK41B,UAAL,GAAkB51B,SAAlB;AACA,SAAK61B,mBAAL,GAA2B,KAA3B;AACA,SAAKC,QAAL,GAAgB91B,SAAhB;AACA,SAAK+1B,SAAL,GAAiB,EAAjB;AACA,SAAKta,UAAL;AACD;;;;WACD,sBAAa;AACX,UAAM2J,IAAI,GAAG,KAAKoO,WAAlB;AACA,WAAKzD,SAAL;AACA,WAAKiG,UAAL;AACA5Q,MAAAA,IAAI,CAAC4P,QAAL,GAAgB7C,SAAS,CAAC/M,IAAI,CAAC+N,MAAN,EAAc/N,IAAd,CAAzB;AACA,WAAK6Q,WAAL;AACD;;;WACD,qBAAYlE,YAAZ,EAA0B;AACxB,UAAI,KAAKlwB,KAAL,KAAekwB,YAAnB,EAAiC;AAC/BwC,QAAAA,WAAW,CAAC,KAAKf,WAAN,CAAX;AACD;;AACD,WAAK3xB,KAAL,GAAakwB,YAAb;AACD;;;WACD,sBAAa;AACX,UAAM3wB,KAAK,GAAG,KAAKA,KAAnB;AACA,UAAMgkB,IAAI,GAAG,KAAKoO,WAAlB;AACA,UAAMhzB,OAAO,GAAG,KAAK01B,UAAL,EAAhB;;AACA,UAAMC,QAAQ,GAAG,SAAXA,QAAW,CAACvC,IAAD,EAAO5lB,CAAP,EAAUC,CAAV,EAAa7L,CAAb;AAAA,eAAmBwxB,IAAI,KAAK,GAAT,GAAe5lB,CAAf,GAAmB4lB,IAAI,KAAK,GAAT,GAAexxB,CAAf,GAAmB6L,CAAzD;AAAA,OAAjB;;AACA,UAAMmoB,GAAG,GAAGhR,IAAI,CAACiR,OAAL,GAAe,uBAAe71B,OAAO,CAAC61B,OAAvB,EAAgCpC,eAAe,CAAC7yB,KAAD,EAAQ,GAAR,CAA/C,CAA3B;AACA,UAAMk1B,GAAG,GAAGlR,IAAI,CAACzkB,OAAL,GAAe,uBAAeH,OAAO,CAACG,OAAvB,EAAgCszB,eAAe,CAAC7yB,KAAD,EAAQ,GAAR,CAA/C,CAA3B;AACA,UAAMm1B,GAAG,GAAGnR,IAAI,CAACoR,OAAL,GAAe,uBAAeh2B,OAAO,CAACg2B,OAAvB,EAAgCvC,eAAe,CAAC7yB,KAAD,EAAQ,GAAR,CAA/C,CAA3B;AACA,UAAMq1B,SAAS,GAAGrR,IAAI,CAACqR,SAAvB;AACA,UAAMC,GAAG,GAAGtR,IAAI,CAACuR,OAAL,GAAeR,QAAQ,CAACM,SAAD,EAAYL,GAAZ,EAAiBE,GAAjB,EAAsBC,GAAtB,CAAnC;AACA,UAAMK,GAAG,GAAGxR,IAAI,CAACyR,OAAL,GAAeV,QAAQ,CAACM,SAAD,EAAYH,GAAZ,EAAiBF,GAAjB,EAAsBG,GAAtB,CAAnC;AACAnR,MAAAA,IAAI,CAAC4L,MAAL,GAAc,KAAK8F,aAAL,CAAmBV,GAAnB,CAAd;AACAhR,MAAAA,IAAI,CAAC6L,MAAL,GAAc,KAAK6F,aAAL,CAAmBR,GAAnB,CAAd;AACAlR,MAAAA,IAAI,CAAC2R,MAAL,GAAc,KAAKD,aAAL,CAAmBP,GAAnB,CAAd;AACAnR,MAAAA,IAAI,CAACsO,MAAL,GAAc,KAAKoD,aAAL,CAAmBJ,GAAnB,CAAd;AACAtR,MAAAA,IAAI,CAAC+N,MAAL,GAAc,KAAK2D,aAAL,CAAmBF,GAAnB,CAAd;AACD;;;WACD,sBAAa;AACX,aAAO,KAAKx1B,KAAL,CAAWC,IAAX,CAAgBvB,QAAhB,CAAyB,KAAK+B,KAA9B,CAAP;AACD;;;WACD,mBAAU;AACR,aAAO,KAAKT,KAAL,CAAW41B,cAAX,CAA0B,KAAKn1B,KAA/B,CAAP;AACD;;;WACD,uBAAco1B,OAAd,EAAuB;AACrB,aAAO,KAAK71B,KAAL,CAAWf,MAAX,CAAkB42B,OAAlB,CAAP;AACD;;;WACD,wBAAexoB,KAAf,EAAsB;AACpB,UAAM2W,IAAI,GAAG,KAAKoO,WAAlB;AACA,aAAO/kB,KAAK,KAAK2W,IAAI,CAACsO,MAAf,GACHtO,IAAI,CAAC+N,MADF,GAEH/N,IAAI,CAACsO,MAFT;AAGD;;;WACD,iBAAQ;AACN,WAAK3H,OAAL,CAAa,OAAb;AACD;;;WACD,oBAAW;AACT,UAAM3G,IAAI,GAAG,KAAKoO,WAAlB;;AACA,UAAI,KAAKgC,KAAT,EAAgB;AACd,+BAAoB,KAAKA,KAAzB,EAAgC,IAAhC;AACD;;AACD,UAAIpQ,IAAI,CAAC4P,QAAT,EAAmB;AACjBT,QAAAA,WAAW,CAACnP,IAAD,CAAX;AACD;AACF;;;WACD,sBAAa;AACX,UAAM5kB,OAAO,GAAG,KAAK01B,UAAL,EAAhB;AACA,UAAM70B,IAAI,GAAGb,OAAO,CAACa,IAAR,KAAiBb,OAAO,CAACa,IAAR,GAAe,EAAhC,CAAb;AACA,UAAMm0B,KAAK,GAAG,KAAKA,KAAnB;;AACA,UAAI,uBAASn0B,IAAT,CAAJ,EAAoB;AAClB,aAAKm0B,KAAL,GAAavD,wBAAwB,CAAC5wB,IAAD,CAArC;AACD,OAFD,MAEO,IAAIm0B,KAAK,KAAKn0B,IAAd,EAAoB;AACzB,YAAIm0B,KAAJ,EAAW;AACT,iCAAoBA,KAApB,EAA2B,IAA3B;AACA,cAAMpQ,IAAI,GAAG,KAAKoO,WAAlB;AACAe,UAAAA,WAAW,CAACnP,IAAD,CAAX;AACAA,UAAAA,IAAI,CAACoP,OAAL,GAAe,EAAf;AACD;;AACD,YAAInzB,IAAI,IAAIiM,MAAM,CAAC4pB,YAAP,CAAoB71B,IAApB,CAAZ,EAAuC;AACrC,iCAAkBA,IAAlB,EAAwB,IAAxB;AACD;;AACD,aAAK00B,SAAL,GAAiB,EAAjB;AACA,aAAKP,KAAL,GAAan0B,IAAb;AACD;AACF;;;WACD,uBAAc;AACZ,UAAM+jB,IAAI,GAAG,KAAKoO,WAAlB;;AACA,WAAK2D,UAAL;;AACA,UAAI,KAAKC,kBAAT,EAA6B;AAC3BhS,QAAAA,IAAI,CAAC5kB,OAAL,GAAe,IAAI,KAAK42B,kBAAT,EAAf;AACD;AACF;;;WACD,+BAAsBC,gBAAtB,EAAwC;AACtC,UAAMjS,IAAI,GAAG,KAAKoO,WAAlB;AACA,UAAMhzB,OAAO,GAAG,KAAK01B,UAAL,EAAhB;AACA,UAAIoB,YAAY,GAAG,KAAnB;;AACA,WAAKH,UAAL;;AACA,UAAMI,UAAU,GAAGnS,IAAI,CAAC4P,QAAxB;AACA5P,MAAAA,IAAI,CAAC4P,QAAL,GAAgB7C,SAAS,CAAC/M,IAAI,CAAC+N,MAAN,EAAc/N,IAAd,CAAzB;;AACA,UAAIA,IAAI,CAACuM,KAAL,KAAenxB,OAAO,CAACmxB,KAA3B,EAAkC;AAChC2F,QAAAA,YAAY,GAAG,IAAf;AACA/C,QAAAA,WAAW,CAACnP,IAAD,CAAX;AACAA,QAAAA,IAAI,CAACuM,KAAL,GAAanxB,OAAO,CAACmxB,KAArB;AACD;;AACD,WAAK6F,eAAL,CAAqBH,gBAArB;;AACA,UAAIC,YAAY,IAAIC,UAAU,KAAKnS,IAAI,CAAC4P,QAAxC,EAAkD;AAChD1B,QAAAA,YAAY,CAAC,IAAD,EAAOlO,IAAI,CAACoP,OAAZ,CAAZ;AACD;AACF;;;WACD,qBAAY;AACV,UAAM5E,MAAM,GAAG,KAAKxuB,KAAL,CAAWwuB,MAA1B;AACA,UAAM6H,SAAS,GAAG7H,MAAM,CAAC8H,gBAAP,CAAwB,KAAKpC,KAA7B,CAAlB;AACA,UAAMqC,MAAM,GAAG/H,MAAM,CAACgI,eAAP,CAAuB,KAAK1B,UAAL,EAAvB,EAA0CuB,SAA1C,EAAqD,IAArD,CAAf;AACA,WAAKn2B,OAAL,GAAesuB,MAAM,CAACiI,cAAP,CAAsBF,MAAtB,EAA8B,KAAKG,UAAL,EAA9B,CAAf;AACA,WAAKvC,QAAL,GAAgB,KAAKj0B,OAAL,CAAay2B,OAA7B;AACA,WAAK3C,eAAL,GAAuB,EAAvB;AACD;;;WACD,eAAM3yB,KAAN,EAAaG,KAAb,EAAoB;AAClB,UAAoBwiB,IAApB,GAAyC,IAAzC,CAAOoO,WAAP;AAAA,UAAiCnyB,IAAjC,GAAyC,IAAzC,CAA0Bm0B,KAA1B;AACA,UAAO9B,MAAP,GAA2BtO,IAA3B,CAAOsO,MAAP;AAAA,UAAesB,QAAf,GAA2B5P,IAA3B,CAAe4P,QAAf;AACA,UAAMrB,KAAK,GAAGD,MAAM,CAACE,IAArB;AACA,UAAIoE,MAAM,GAAGv1B,KAAK,KAAK,CAAV,IAAeG,KAAK,KAAKvB,IAAI,CAACpB,MAA9B,GAAuC,IAAvC,GAA8CmlB,IAAI,CAAC6S,OAAhE;AACA,UAAIC,IAAI,GAAGz1B,KAAK,GAAG,CAAR,IAAa2iB,IAAI,CAACoP,OAAL,CAAa/xB,KAAK,GAAG,CAArB,CAAxB;AACA,UAAIhC,CAAJ,EAAOosB,GAAP,EAAY0G,MAAZ;;AACA,UAAI,KAAKgC,QAAL,KAAkB,KAAtB,EAA6B;AAC3BnQ,QAAAA,IAAI,CAACoP,OAAL,GAAenzB,IAAf;AACA+jB,QAAAA,IAAI,CAAC6S,OAAL,GAAe,IAAf;AACA1E,QAAAA,MAAM,GAAGlyB,IAAT;AACD,OAJD,MAIO;AACL,YAAI,uBAAQA,IAAI,CAACoB,KAAD,CAAZ,CAAJ,EAA0B;AACxB8wB,UAAAA,MAAM,GAAG,KAAK4E,cAAL,CAAoB/S,IAApB,EAA0B/jB,IAA1B,EAAgCoB,KAAhC,EAAuCG,KAAvC,CAAT;AACD,SAFD,MAEO,IAAI,uBAASvB,IAAI,CAACoB,KAAD,CAAb,CAAJ,EAA2B;AAChC8wB,UAAAA,MAAM,GAAG,KAAK6E,eAAL,CAAqBhT,IAArB,EAA2B/jB,IAA3B,EAAiCoB,KAAjC,EAAwCG,KAAxC,CAAT;AACD,SAFM,MAEA;AACL2wB,UAAAA,MAAM,GAAG,KAAK8E,kBAAL,CAAwBjT,IAAxB,EAA8B/jB,IAA9B,EAAoCoB,KAApC,EAA2CG,KAA3C,CAAT;AACD;;AACD,YAAM01B,0BAA0B,GAAG,SAA7BA,0BAA6B;AAAA,iBAAMzL,GAAG,CAAC8G,KAAD,CAAH,KAAe,IAAf,IAAwBuE,IAAI,IAAIrL,GAAG,CAAC8G,KAAD,CAAH,GAAauE,IAAI,CAACvE,KAAD,CAAvD;AAAA,SAAnC;;AACA,aAAKlzB,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGmC,KAAhB,EAAuB,EAAEnC,CAAzB,EAA4B;AAC1B2kB,UAAAA,IAAI,CAACoP,OAAL,CAAa/zB,CAAC,GAAGgC,KAAjB,IAA0BoqB,GAAG,GAAG0G,MAAM,CAAC9yB,CAAD,CAAtC;;AACA,cAAIu3B,MAAJ,EAAY;AACV,gBAAIM,0BAA0B,EAA9B,EAAkC;AAChCN,cAAAA,MAAM,GAAG,KAAT;AACD;;AACDE,YAAAA,IAAI,GAAGrL,GAAP;AACD;AACF;;AACDzH,QAAAA,IAAI,CAAC6S,OAAL,GAAeD,MAAf;AACD;;AACD,UAAIhD,QAAJ,EAAc;AACZ1B,QAAAA,YAAY,CAAC,IAAD,EAAOC,MAAP,CAAZ;AACD;AACF;;;WACD,4BAAmBnO,IAAnB,EAAyB/jB,IAAzB,EAA+BoB,KAA/B,EAAsCG,KAAtC,EAA6C;AAC3C,UAAO8wB,MAAP,GAAyBtO,IAAzB,CAAOsO,MAAP;AAAA,UAAeP,MAAf,GAAyB/N,IAAzB,CAAe+N,MAAf;AACA,UAAMQ,KAAK,GAAGD,MAAM,CAACE,IAArB;AACA,UAAMC,KAAK,GAAGV,MAAM,CAACS,IAArB;AACA,UAAMj0B,MAAM,GAAG+zB,MAAM,CAAC6E,SAAP,EAAf;AACA,UAAMC,WAAW,GAAG9E,MAAM,KAAKP,MAA/B;AACA,UAAMI,MAAM,GAAG,IAAI/uB,KAAJ,CAAU5B,KAAV,CAAf;AACA,UAAInC,CAAJ,EAAOgxB,IAAP,EAAa5vB,KAAb;;AACA,WAAKpB,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAG7uB,KAAnB,EAA0BnC,CAAC,GAAGgxB,IAA9B,EAAoC,EAAEhxB,CAAtC,EAAyC;AAAA;;AACvCoB,QAAAA,KAAK,GAAGpB,CAAC,GAAGgC,KAAZ;AACA8wB,QAAAA,MAAM,CAAC9yB,CAAD,CAAN,+CACGkzB,KADH,EACW6E,WAAW,IAAI9E,MAAM,CAAC7zB,KAAP,CAAaF,MAAM,CAACkC,KAAD,CAAnB,EAA4BA,KAA5B,CAD1B,8BAEGgyB,KAFH,EAEWV,MAAM,CAACtzB,KAAP,CAAawB,IAAI,CAACQ,KAAD,CAAjB,EAA0BA,KAA1B,CAFX;AAID;;AACD,aAAO0xB,MAAP;AACD;;;WACD,wBAAenO,IAAf,EAAqB/jB,IAArB,EAA2BoB,KAA3B,EAAkCG,KAAlC,EAAyC;AACvC,UAAOouB,MAAP,GAAyB5L,IAAzB,CAAO4L,MAAP;AAAA,UAAeC,MAAf,GAAyB7L,IAAzB,CAAe6L,MAAf;AACA,UAAMsC,MAAM,GAAG,IAAI/uB,KAAJ,CAAU5B,KAAV,CAAf;AACA,UAAInC,CAAJ,EAAOgxB,IAAP,EAAa5vB,KAAb,EAAoBwB,IAApB;;AACA,WAAK5C,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAG7uB,KAAnB,EAA0BnC,CAAC,GAAGgxB,IAA9B,EAAoC,EAAEhxB,CAAtC,EAAyC;AACvCoB,QAAAA,KAAK,GAAGpB,CAAC,GAAGgC,KAAZ;AACAY,QAAAA,IAAI,GAAGhC,IAAI,CAACQ,KAAD,CAAX;AACA0xB,QAAAA,MAAM,CAAC9yB,CAAD,CAAN,GAAY;AACVuN,UAAAA,CAAC,EAAEgjB,MAAM,CAACnxB,KAAP,CAAawD,IAAI,CAAC,CAAD,CAAjB,EAAsBxB,KAAtB,CADO;AAEVoM,UAAAA,CAAC,EAAEgjB,MAAM,CAACpxB,KAAP,CAAawD,IAAI,CAAC,CAAD,CAAjB,EAAsBxB,KAAtB;AAFO,SAAZ;AAID;;AACD,aAAO0xB,MAAP;AACD;;;WACD,yBAAgBnO,IAAhB,EAAsB/jB,IAAtB,EAA4BoB,KAA5B,EAAmCG,KAAnC,EAA0C;AACxC,UAAOouB,MAAP,GAAyB5L,IAAzB,CAAO4L,MAAP;AAAA,UAAeC,MAAf,GAAyB7L,IAAzB,CAAe6L,MAAf;AACA,2BAAyC,KAAKsE,QAA9C;AAAA,iDAAOkD,QAAP;AAAA,UAAOA,QAAP,sCAAkB,GAAlB;AAAA,iDAAuBC,QAAvB;AAAA,UAAuBA,QAAvB,sCAAkC,GAAlC;AACA,UAAMnF,MAAM,GAAG,IAAI/uB,KAAJ,CAAU5B,KAAV,CAAf;AACA,UAAInC,CAAJ,EAAOgxB,IAAP,EAAa5vB,KAAb,EAAoBwB,IAApB;;AACA,WAAK5C,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAG7uB,KAAnB,EAA0BnC,CAAC,GAAGgxB,IAA9B,EAAoC,EAAEhxB,CAAtC,EAAyC;AACvCoB,QAAAA,KAAK,GAAGpB,CAAC,GAAGgC,KAAZ;AACAY,QAAAA,IAAI,GAAGhC,IAAI,CAACQ,KAAD,CAAX;AACA0xB,QAAAA,MAAM,CAAC9yB,CAAD,CAAN,GAAY;AACVuN,UAAAA,CAAC,EAAEgjB,MAAM,CAACnxB,KAAP,CAAa,uBAAiBwD,IAAjB,EAAuBo1B,QAAvB,CAAb,EAA+C52B,KAA/C,CADO;AAEVoM,UAAAA,CAAC,EAAEgjB,MAAM,CAACpxB,KAAP,CAAa,uBAAiBwD,IAAjB,EAAuBq1B,QAAvB,CAAb,EAA+C72B,KAA/C;AAFO,SAAZ;AAID;;AACD,aAAO0xB,MAAP;AACD;;;WACD,mBAAU1xB,KAAV,EAAiB;AACf,aAAO,KAAK2xB,WAAL,CAAiBgB,OAAjB,CAAyB3yB,KAAzB,CAAP;AACD;;;WACD,wBAAeA,KAAf,EAAsB;AACpB,aAAO,KAAK2xB,WAAL,CAAiBnyB,IAAjB,CAAsBQ,KAAtB,CAAP;AACD;;;WACD,oBAAW4M,KAAX,EAAkB8kB,MAAlB,EAA0BzB,IAA1B,EAAgC;AAC9B,UAAM1wB,KAAK,GAAG,KAAKA,KAAnB;AACA,UAAMgkB,IAAI,GAAG,KAAKoO,WAAlB;AACA,UAAMhpB,KAAK,GAAG+oB,MAAM,CAAC9kB,KAAK,CAACmlB,IAAP,CAApB;AACA,UAAMjC,KAAK,GAAG;AACZpkB,QAAAA,IAAI,EAAE8jB,uBAAuB,CAACjwB,KAAD,EAAQ,IAAR,CADjB;AAEZyjB,QAAAA,MAAM,EAAE0O,MAAM,CAACE,OAAP,CAAehlB,KAAK,CAACmlB,IAArB;AAFI,OAAd;AAIA,aAAOlC,WAAU,CAACC,KAAD,EAAQnnB,KAAR,EAAe4a,IAAI,CAACvjB,KAApB,EAA2B;AAACiwB,QAAAA,IAAI,EAAJA;AAAD,OAA3B,CAAjB;AACD;;;WACD,+BAAsB6G,KAAtB,EAA6BlqB,KAA7B,EAAoC8kB,MAApC,EAA4C5B,KAA5C,EAAmD;AACjD,UAAMiH,WAAW,GAAGrF,MAAM,CAAC9kB,KAAK,CAACmlB,IAAP,CAA1B;AACA,UAAIppB,KAAK,GAAGouB,WAAW,KAAK,IAAhB,GAAuBC,GAAvB,GAA6BD,WAAzC;AACA,UAAM/T,MAAM,GAAG8M,KAAK,IAAI4B,MAAM,CAACE,OAAP,CAAehlB,KAAK,CAACmlB,IAArB,CAAxB;;AACA,UAAIjC,KAAK,IAAI9M,MAAb,EAAqB;AACnB8M,QAAAA,KAAK,CAAC9M,MAAN,GAAeA,MAAf;AACAra,QAAAA,KAAK,GAAGknB,WAAU,CAACC,KAAD,EAAQiH,WAAR,EAAqB,KAAKpF,WAAL,CAAiB3xB,KAAtC,CAAlB;AACD;;AACD82B,MAAAA,KAAK,CAACluB,GAAN,GAAYzH,IAAI,CAACyH,GAAL,CAASkuB,KAAK,CAACluB,GAAf,EAAoBD,KAApB,CAAZ;AACAmuB,MAAAA,KAAK,CAACjuB,GAAN,GAAY1H,IAAI,CAAC0H,GAAL,CAASiuB,KAAK,CAACjuB,GAAf,EAAoBF,KAApB,CAAZ;AACD;;;WACD,mBAAUiE,KAAV,EAAiBqmB,QAAjB,EAA2B;AACzB,UAAM1P,IAAI,GAAG,KAAKoO,WAAlB;AACA,UAAMgB,OAAO,GAAGpP,IAAI,CAACoP,OAArB;AACA,UAAMwD,MAAM,GAAG5S,IAAI,CAAC6S,OAAL,IAAgBxpB,KAAK,KAAK2W,IAAI,CAACsO,MAA9C;AACA,UAAMjC,IAAI,GAAG+C,OAAO,CAACv0B,MAArB;;AACA,UAAM64B,UAAU,GAAG,KAAKC,cAAL,CAAoBtqB,KAApB,CAAnB;;AACA,UAAMkjB,KAAK,GAAGkD,WAAW,CAACC,QAAD,EAAW1P,IAAX,EAAiB,KAAKhkB,KAAtB,CAAzB;AACA,UAAMu3B,KAAK,GAAG;AAACluB,QAAAA,GAAG,EAAE+b,MAAM,CAACoM,iBAAb;AAAgCloB,QAAAA,GAAG,EAAE8b,MAAM,CAACmM;AAA5C,OAAd;;AACA,2BAAuCH,aAAa,CAACsG,UAAD,CAApD;AAAA,UAAYE,QAAZ,kBAAOvuB,GAAP;AAAA,UAA2BwuB,QAA3B,kBAAsBvuB,GAAtB;;AACA,UAAIjK,CAAJ,EAAO8yB,MAAP;;AACA,eAAS2F,KAAT,GAAiB;AACf3F,QAAAA,MAAM,GAAGiB,OAAO,CAAC/zB,CAAD,CAAhB;AACA,YAAMuxB,UAAU,GAAGuB,MAAM,CAACuF,UAAU,CAAClF,IAAZ,CAAzB;AACA,eAAO,CAAC,uBAAeL,MAAM,CAAC9kB,KAAK,CAACmlB,IAAP,CAArB,CAAD,IAAuCoF,QAAQ,GAAGhH,UAAlD,IAAgEiH,QAAQ,GAAGjH,UAAlF;AACD;;AACD,WAAKvxB,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgxB,IAAhB,EAAsB,EAAEhxB,CAAxB,EAA2B;AACzB,YAAIy4B,KAAK,EAAT,EAAa;AACX;AACD;;AACD,aAAKC,qBAAL,CAA2BR,KAA3B,EAAkClqB,KAAlC,EAAyC8kB,MAAzC,EAAiD5B,KAAjD;;AACA,YAAIqG,MAAJ,EAAY;AACV;AACD;AACF;;AACD,UAAIA,MAAJ,EAAY;AACV,aAAKv3B,CAAC,GAAGgxB,IAAI,GAAG,CAAhB,EAAmBhxB,CAAC,IAAI,CAAxB,EAA2B,EAAEA,CAA7B,EAAgC;AAC9B,cAAIy4B,KAAK,EAAT,EAAa;AACX;AACD;;AACD,eAAKC,qBAAL,CAA2BR,KAA3B,EAAkClqB,KAAlC,EAAyC8kB,MAAzC,EAAiD5B,KAAjD;AACA;AACD;AACF;;AACD,aAAOgH,KAAP;AACD;;;WACD,4BAAmBlqB,KAAnB,EAA0B;AACxB,UAAM8kB,MAAM,GAAG,KAAKC,WAAL,CAAiBgB,OAAhC;AACA,UAAM3P,MAAM,GAAG,EAAf;AACA,UAAIpkB,CAAJ,EAAOgxB,IAAP,EAAajnB,KAAb;;AACA,WAAK/J,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAG8B,MAAM,CAACtzB,MAA1B,EAAkCQ,CAAC,GAAGgxB,IAAtC,EAA4C,EAAEhxB,CAA9C,EAAiD;AAC/C+J,QAAAA,KAAK,GAAG+oB,MAAM,CAAC9yB,CAAD,CAAN,CAAUgO,KAAK,CAACmlB,IAAhB,CAAR;;AACA,YAAI,uBAAeppB,KAAf,CAAJ,EAA2B;AACzBqa,UAAAA,MAAM,CAACriB,IAAP,CAAYgI,KAAZ;AACD;AACF;;AACD,aAAOqa,MAAP;AACD;;;WACD,0BAAiB;AACf,aAAO,KAAP;AACD;;;WACD,0BAAiBhjB,KAAjB,EAAwB;AACtB,UAAMujB,IAAI,GAAG,KAAKoO,WAAlB;AACA,UAAME,MAAM,GAAGtO,IAAI,CAACsO,MAApB;AACA,UAAMP,MAAM,GAAG/N,IAAI,CAAC+N,MAApB;AACA,UAAMI,MAAM,GAAG,KAAK6F,SAAL,CAAev3B,KAAf,CAAf;AACA,aAAO;AACLzB,QAAAA,KAAK,EAAEszB,MAAM,GAAG,KAAKA,MAAM,CAAC2F,gBAAP,CAAwB9F,MAAM,CAACG,MAAM,CAACE,IAAR,CAA9B,CAAR,GAAuD,EAD/D;AAELppB,QAAAA,KAAK,EAAE2oB,MAAM,GAAG,KAAKA,MAAM,CAACkG,gBAAP,CAAwB9F,MAAM,CAACJ,MAAM,CAACS,IAAR,CAA9B,CAAR,GAAuD;AAF/D,OAAP;AAID;;;WACD,iBAAQ9B,IAAR,EAAc;AACZ,UAAM1M,IAAI,GAAG,KAAKoO,WAAlB;AACA,WAAKpY,MAAL,CAAY0W,IAAI,IAAI,SAApB;AACA1M,MAAAA,IAAI,CAACkU,KAAL,GAAapI,MAAM,CAAC,uBAAe,KAAK5vB,OAAL,CAAai4B,IAA5B,EAAkCxI,WAAW,CAAC3L,IAAI,CAAC4L,MAAN,EAAc5L,IAAI,CAAC6L,MAAnB,EAA2B,KAAKuI,cAAL,EAA3B,CAA7C,CAAD,CAAnB;AACD;;;WACD,gBAAO1H,IAAP,EAAa,CAAE;;;WACf,gBAAO;AACL,UAAMqD,GAAG,GAAG,KAAKD,IAAjB;AACA,UAAM9zB,KAAK,GAAG,KAAKA,KAAnB;AACA,UAAMgkB,IAAI,GAAG,KAAKoO,WAAlB;AACA,UAAMhL,QAAQ,GAAGpD,IAAI,CAAC/jB,IAAL,IAAa,EAA9B;AACA,UAAMo4B,IAAI,GAAGr4B,KAAK,CAACs4B,SAAnB;AACA,UAAMvb,MAAM,GAAG,EAAf;AACA,UAAM1b,KAAK,GAAG,KAAKkzB,UAAL,IAAmB,CAAjC;AACA,UAAM/yB,KAAK,GAAG,KAAKgzB,UAAL,IAAoBpN,QAAQ,CAACvoB,MAAT,GAAkBwC,KAApD;AACA,UAAMk3B,uBAAuB,GAAG,KAAKr4B,OAAL,CAAaq4B,uBAA7C;AACA,UAAIl5B,CAAJ;;AACA,UAAI2kB,IAAI,CAAC5kB,OAAT,EAAkB;AAChB4kB,QAAAA,IAAI,CAAC5kB,OAAL,CAAa4rB,IAAb,CAAkB+I,GAAlB,EAAuBsE,IAAvB,EAA6Bh3B,KAA7B,EAAoCG,KAApC;AACD;;AACD,WAAKnC,CAAC,GAAGgC,KAAT,EAAgBhC,CAAC,GAAGgC,KAAK,GAAGG,KAA5B,EAAmC,EAAEnC,CAArC,EAAwC;AACtC,YAAMnB,OAAO,GAAGkpB,QAAQ,CAAC/nB,CAAD,CAAxB;;AACA,YAAInB,OAAO,CAACy1B,MAAZ,EAAoB;AAClB;AACD;;AACD,YAAIz1B,OAAO,CAAC6e,MAAR,IAAkBwb,uBAAtB,EAA+C;AAC7Cxb,UAAAA,MAAM,CAAC3b,IAAP,CAAYlD,OAAZ;AACD,SAFD,MAEO;AACLA,UAAAA,OAAO,CAAC8sB,IAAR,CAAa+I,GAAb,EAAkBsE,IAAlB;AACD;AACF;;AACD,WAAKh5B,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG0d,MAAM,CAACle,MAAvB,EAA+B,EAAEQ,CAAjC,EAAoC;AAClC0d,QAAAA,MAAM,CAAC1d,CAAD,CAAN,CAAU2rB,IAAV,CAAe+I,GAAf,EAAoBsE,IAApB;AACD;AACF;;;WACD,kBAAS53B,KAAT,EAAgBsc,MAAhB,EAAwB;AACtB,UAAM2T,IAAI,GAAG3T,MAAM,GAAG,QAAH,GAAc,SAAjC;AACA,aAAOtc,KAAK,KAAK7B,SAAV,IAAuB,KAAKwzB,WAAL,CAAiBhzB,OAAxC,GACH,KAAKo5B,4BAAL,CAAkC9H,IAAlC,CADG,GAEH,KAAK+H,yBAAL,CAA+Bh4B,KAAK,IAAI,CAAxC,EAA2CiwB,IAA3C,CAFJ;AAGD;;;WACD,oBAAWjwB,KAAX,EAAkBsc,MAAlB,EAA0B2T,IAA1B,EAAgC;AAC9B,UAAMtxB,OAAO,GAAG,KAAK01B,UAAL,EAAhB;AACA,UAAIpM,OAAJ;;AACA,UAAIjoB,KAAK,IAAI,CAAT,IAAcA,KAAK,GAAG,KAAK2xB,WAAL,CAAiBnyB,IAAjB,CAAsBpB,MAAhD,EAAwD;AACtD,YAAMX,OAAO,GAAG,KAAKk0B,WAAL,CAAiBnyB,IAAjB,CAAsBQ,KAAtB,CAAhB;AACAioB,QAAAA,OAAO,GAAGxqB,OAAO,CAACw2B,QAAR,KACPx2B,OAAO,CAACw2B,QAAR,GAAmB1B,iBAAiB,CAAC,KAAK0D,UAAL,EAAD,EAAoBj2B,KAApB,EAA2BvC,OAA3B,CAD7B,CAAV;AAEAwqB,QAAAA,OAAO,CAACyJ,MAAR,GAAiB,KAAK6F,SAAL,CAAev3B,KAAf,CAAjB;AACAioB,QAAAA,OAAO,CAACwK,GAAR,GAAc9zB,OAAO,CAACa,IAAR,CAAaQ,KAAb,CAAd;AACAioB,QAAAA,OAAO,CAACjoB,KAAR,GAAgBioB,OAAO,CAACuK,SAAR,GAAoBxyB,KAApC;AACD,OAPD,MAOO;AACLioB,QAAAA,OAAO,GAAG,KAAKgM,QAAL,KACP,KAAKA,QAAL,GAAgB3B,oBAAoB,CAAC,KAAK/yB,KAAL,CAAW02B,UAAX,EAAD,EAA0B,KAAKj2B,KAA/B,CAD7B,CAAV;AAEAioB,QAAAA,OAAO,CAACtpB,OAAR,GAAkBA,OAAlB;AACAspB,QAAAA,OAAO,CAACjoB,KAAR,GAAgBioB,OAAO,CAACiI,YAAR,GAAuB,KAAKlwB,KAA5C;AACD;;AACDioB,MAAAA,OAAO,CAAC3L,MAAR,GAAiB,CAAC,CAACA,MAAnB;AACA2L,MAAAA,OAAO,CAACgI,IAAR,GAAeA,IAAf;AACA,aAAOhI,OAAP;AACD;;;WACD,sCAA6BgI,IAA7B,EAAmC;AACjC,aAAO,KAAKgI,sBAAL,CAA4B,KAAK1C,kBAAL,CAAwBpZ,EAApD,EAAwD8T,IAAxD,CAAP;AACD;;;WACD,mCAA0BjwB,KAA1B,EAAiCiwB,IAAjC,EAAuC;AACrC,aAAO,KAAKgI,sBAAL,CAA4B,KAAKC,eAAL,CAAqB/b,EAAjD,EAAqD8T,IAArD,EAA2DjwB,KAA3D,CAAP;AACD;;;WACD,gCAAuBm4B,WAAvB,EAA6D;AAAA;;AAAA,UAAzBlI,IAAyB,uEAAlB,SAAkB;AAAA,UAAPjwB,KAAO;AAC3D,UAAMsc,MAAM,GAAG2T,IAAI,KAAK,QAAxB;AACA,UAAM3Q,KAAK,GAAG,KAAKiU,eAAnB;AACA,UAAM6E,QAAQ,GAAGD,WAAW,GAAG,GAAd,GAAoBlI,IAArC;AACA,UAAM6C,MAAM,GAAGxT,KAAK,CAAC8Y,QAAD,CAApB;AACA,UAAMC,OAAO,GAAG,KAAKrE,mBAAL,IAA4B,uBAAQh0B,KAAR,CAA5C;;AACA,UAAI8yB,MAAJ,EAAY;AACV,eAAOD,gBAAgB,CAACC,MAAD,EAASuF,OAAT,CAAvB;AACD;;AACD,UAAMtK,MAAM,GAAG,KAAKxuB,KAAL,CAAWwuB,MAA1B;AACA,UAAM6H,SAAS,GAAG7H,MAAM,CAACuK,uBAAP,CAA+B,KAAK7E,KAApC,EAA2C0E,WAA3C,CAAlB;AACA,UAAMI,QAAQ,GAAGjc,MAAM,GAAG,WAAI6b,WAAJ,YAAwB,OAAxB,EAAiCA,WAAjC,EAA8C,EAA9C,CAAH,GAAuD,CAACA,WAAD,EAAc,EAAd,CAA9E;AACA,UAAMrC,MAAM,GAAG/H,MAAM,CAACgI,eAAP,CAAuB,KAAK1B,UAAL,EAAvB,EAA0CuB,SAA1C,CAAf;AACA,UAAM4C,KAAK,GAAG/sB,MAAM,CAACC,IAAP,CAAY5O,kBAAS6pB,QAAT,CAAkBwR,WAAlB,CAAZ,CAAd;;AACA,UAAMlQ,OAAO,GAAG,SAAVA,OAAU;AAAA,eAAM,MAAI,CAACgO,UAAL,CAAgBj2B,KAAhB,EAAuBsc,MAAvB,CAAN;AAAA,OAAhB;;AACA,UAAM0G,MAAM,GAAG+K,MAAM,CAAC0K,mBAAP,CAA2B3C,MAA3B,EAAmC0C,KAAnC,EAA0CvQ,OAA1C,EAAmDsQ,QAAnD,CAAf;;AACA,UAAIvV,MAAM,CAACyL,OAAX,EAAoB;AAClBzL,QAAAA,MAAM,CAACyL,OAAP,GAAiB4J,OAAjB;AACA/Y,QAAAA,KAAK,CAAC8Y,QAAD,CAAL,GAAkB3sB,MAAM,CAACitB,MAAP,CAAc7F,gBAAgB,CAAC7P,MAAD,EAASqV,OAAT,CAA9B,CAAlB;AACD;;AACD,aAAOrV,MAAP;AACD;;;WACD,4BAAmBhjB,KAAnB,EAA0BsN,UAA1B,EAAsCgP,MAAtC,EAA8C;AAC5C,UAAM/c,KAAK,GAAG,KAAKA,KAAnB;AACA,UAAM+f,KAAK,GAAG,KAAKiU,eAAnB;AACA,UAAM6E,QAAQ,uBAAgB9qB,UAAhB,CAAd;AACA,UAAMwlB,MAAM,GAAGxT,KAAK,CAAC8Y,QAAD,CAApB;;AACA,UAAItF,MAAJ,EAAY;AACV,eAAOA,MAAP;AACD;;AACD,UAAIrzB,OAAJ;;AACA,UAAIF,KAAK,CAACE,OAAN,CAAc6tB,SAAd,KAA4B,KAAhC,EAAuC;AACrC,YAAMS,MAAM,GAAG,KAAKxuB,KAAL,CAAWwuB,MAA1B;AACA,YAAM6H,SAAS,GAAG7H,MAAM,CAAC4K,yBAAP,CAAiC,KAAKlF,KAAtC,EAA6CnmB,UAA7C,CAAlB;AACA,YAAMwoB,MAAM,GAAG/H,MAAM,CAACgI,eAAP,CAAuB,KAAK1B,UAAL,EAAvB,EAA0CuB,SAA1C,CAAf;AACAn2B,QAAAA,OAAO,GAAGsuB,MAAM,CAACiI,cAAP,CAAsBF,MAAtB,EAA8B,KAAKG,UAAL,CAAgBj2B,KAAhB,EAAuBsc,MAAvB,EAA+BhP,UAA/B,CAA9B,CAAV;AACD;;AACD,UAAMsgB,UAAU,GAAG,IAAIE,UAAJ,CAAevuB,KAAf,EAAsBE,OAAO,IAAIA,OAAO,CAACmuB,UAAzC,CAAnB;;AACA,UAAInuB,OAAO,IAAIA,OAAO,CAACm5B,UAAvB,EAAmC;AACjCtZ,QAAAA,KAAK,CAAC8Y,QAAD,CAAL,GAAkB3sB,MAAM,CAACitB,MAAP,CAAc9K,UAAd,CAAlB;AACD;;AACD,aAAOA,UAAP;AACD;;;WACD,0BAAiBnuB,OAAjB,EAA0B;AACxB,UAAI,CAACA,OAAO,CAACgvB,OAAb,EAAsB;AACpB;AACD;;AACD,aAAO,KAAKoF,cAAL,KAAwB,KAAKA,cAAL,GAAsB,SAAc,EAAd,EAAkBp0B,OAAlB,CAA9C,CAAP;AACD;;;WACD,wBAAewwB,IAAf,EAAqB4I,aAArB,EAAoC;AAClC,aAAO,CAACA,aAAD,IAAkBjG,kBAAkB,CAAC3C,IAAD,CAApC,IAA8C,KAAK1wB,KAAL,CAAWu5B,mBAAhE;AACD;;;WACD,uBAAcr7B,OAAd,EAAuBuC,KAAvB,EAA8B2tB,UAA9B,EAA0CsC,IAA1C,EAAgD;AAC9C,UAAI2C,kBAAkB,CAAC3C,IAAD,CAAtB,EAA8B;AAC5B,iBAAcxyB,OAAd,EAAuBkwB,UAAvB;AACD,OAFD,MAEO;AACL,aAAKoL,kBAAL,CAAwB/4B,KAAxB,EAA+BiwB,IAA/B,EAAqC1W,MAArC,CAA4C9b,OAA5C,EAAqDkwB,UAArD;AACD;AACF;;;WACD,6BAAoBkL,aAApB,EAAmC5I,IAAnC,EAAyC3B,UAAzC,EAAqD;AACnD,UAAIuK,aAAa,IAAI,CAACjG,kBAAkB,CAAC3C,IAAD,CAAxC,EAAgD;AAC9C,aAAK8I,kBAAL,CAAwB56B,SAAxB,EAAmC8xB,IAAnC,EAAyC1W,MAAzC,CAAgDsf,aAAhD,EAA+DvK,UAA/D;AACD;AACF;;;WACD,mBAAU7wB,OAAV,EAAmBuC,KAAnB,EAA0BiwB,IAA1B,EAAgC3T,MAAhC,EAAwC;AACtC7e,MAAAA,OAAO,CAAC6e,MAAR,GAAiBA,MAAjB;AACA,UAAM7c,OAAO,GAAG,KAAKu5B,QAAL,CAAch5B,KAAd,EAAqBsc,MAArB,CAAhB;;AACA,WAAKyc,kBAAL,CAAwB/4B,KAAxB,EAA+BiwB,IAA/B,EAAqC3T,MAArC,EAA6C/C,MAA7C,CAAoD9b,OAApD,EAA6D;AAC3DgC,QAAAA,OAAO,EAAG,CAAC6c,MAAD,IAAW,KAAK2c,gBAAL,CAAsBx5B,OAAtB,CAAZ,IAA+CA;AADG,OAA7D;AAGD;;;WACD,0BAAiBhC,OAAjB,EAA0ByyB,YAA1B,EAAwClwB,KAAxC,EAA+C;AAC7C,WAAKk5B,SAAL,CAAez7B,OAAf,EAAwBuC,KAAxB,EAA+B,QAA/B,EAAyC,KAAzC;AACD;;;WACD,uBAAcvC,OAAd,EAAuByyB,YAAvB,EAAqClwB,KAArC,EAA4C;AAC1C,WAAKk5B,SAAL,CAAez7B,OAAf,EAAwBuC,KAAxB,EAA+B,QAA/B,EAAyC,IAAzC;AACD;;;WACD,oCAA2B;AACzB,UAAMvC,OAAO,GAAG,KAAKk0B,WAAL,CAAiBhzB,OAAjC;;AACA,UAAIlB,OAAJ,EAAa;AACX,aAAKy7B,SAAL,CAAez7B,OAAf,EAAwBU,SAAxB,EAAmC,QAAnC,EAA6C,KAA7C;AACD;AACF;;;WACD,iCAAwB;AACtB,UAAMV,OAAO,GAAG,KAAKk0B,WAAL,CAAiBhzB,OAAjC;;AACA,UAAIlB,OAAJ,EAAa;AACX,aAAKy7B,SAAL,CAAez7B,OAAf,EAAwBU,SAAxB,EAAmC,QAAnC,EAA6C,IAA7C;AACD;AACF;;;WACD,yBAAgBq3B,gBAAhB,EAAkC;AAChC,UAAMh2B,IAAI,GAAG,KAAKm0B,KAAlB;AACA,UAAMhN,QAAQ,GAAG,KAAKgL,WAAL,CAAiBnyB,IAAlC;;AAFgC,kDAGG,KAAK00B,SAHR;AAAA;;AAAA;AAGhC,+DAAmD;AAAA;AAAA,cAAvC/G,MAAuC;AAAA,cAA/BgM,IAA+B;AAAA,cAAzBC,IAAyB;;AACjD,eAAKjM,MAAL,EAAagM,IAAb,EAAmBC,IAAnB;AACD;AAL+B;AAAA;AAAA;AAAA;AAAA;;AAMhC,WAAKlF,SAAL,GAAiB,EAAjB;AACA,UAAMmF,OAAO,GAAG1S,QAAQ,CAACvoB,MAAzB;AACA,UAAMk7B,OAAO,GAAG95B,IAAI,CAACpB,MAArB;AACA,UAAM2C,KAAK,GAAGI,IAAI,CAACyH,GAAL,CAAS0wB,OAAT,EAAkBD,OAAlB,CAAd;;AACA,UAAIt4B,KAAJ,EAAW;AACT,aAAK/C,KAAL,CAAW,CAAX,EAAc+C,KAAd;AACD;;AACD,UAAIu4B,OAAO,GAAGD,OAAd,EAAuB;AACrB,aAAKE,eAAL,CAAqBF,OAArB,EAA8BC,OAAO,GAAGD,OAAxC,EAAiD7D,gBAAjD;AACD,OAFD,MAEO,IAAI8D,OAAO,GAAGD,OAAd,EAAuB;AAC5B,aAAKG,eAAL,CAAqBF,OAArB,EAA8BD,OAAO,GAAGC,OAAxC;AACD;AACF;;;WACD,yBAAgB14B,KAAhB,EAAuBG,KAAvB,EAAuD;AAAA,UAAzBy0B,gBAAyB,uEAAN,IAAM;AACrD,UAAMjS,IAAI,GAAG,KAAKoO,WAAlB;AACA,UAAMnyB,IAAI,GAAG+jB,IAAI,CAAC/jB,IAAlB;AACA,UAAMqB,GAAG,GAAGD,KAAK,GAAGG,KAApB;AACA,UAAInC,CAAJ;;AACA,UAAM66B,IAAI,GAAG,SAAPA,IAAO,CAACzX,GAAD,EAAS;AACpBA,QAAAA,GAAG,CAAC5jB,MAAJ,IAAc2C,KAAd;;AACA,aAAKnC,CAAC,GAAGojB,GAAG,CAAC5jB,MAAJ,GAAa,CAAtB,EAAyBQ,CAAC,IAAIiC,GAA9B,EAAmCjC,CAAC,EAApC,EAAwC;AACtCojB,UAAAA,GAAG,CAACpjB,CAAD,CAAH,GAASojB,GAAG,CAACpjB,CAAC,GAAGmC,KAAL,CAAZ;AACD;AACF,OALD;;AAMA04B,MAAAA,IAAI,CAACj6B,IAAD,CAAJ;;AACA,WAAKZ,CAAC,GAAGgC,KAAT,EAAgBhC,CAAC,GAAGiC,GAApB,EAAyB,EAAEjC,CAA3B,EAA8B;AAC5BY,QAAAA,IAAI,CAACZ,CAAD,CAAJ,GAAU,IAAI,KAAKs5B,eAAT,EAAV;AACD;;AACD,UAAI,KAAKxE,QAAT,EAAmB;AACjB+F,QAAAA,IAAI,CAAClW,IAAI,CAACoP,OAAN,CAAJ;AACD;;AACD,WAAK30B,KAAL,CAAW4C,KAAX,EAAkBG,KAAlB;;AACA,UAAIy0B,gBAAJ,EAAsB;AACpB,aAAKkE,cAAL,CAAoBl6B,IAApB,EAA0BoB,KAA1B,EAAiCG,KAAjC,EAAwC,OAAxC;AACD;AACF;;;WACD,wBAAetD,OAAf,EAAwBmD,KAAxB,EAA+BG,KAA/B,EAAsCkvB,IAAtC,EAA4C,CAAE;;;WAC9C,yBAAgBrvB,KAAhB,EAAuBG,KAAvB,EAA8B;AAC5B,UAAMwiB,IAAI,GAAG,KAAKoO,WAAlB;;AACA,UAAI,KAAK+B,QAAT,EAAmB;AACjB,YAAMiG,OAAO,GAAGpW,IAAI,CAACoP,OAAL,CAAalL,MAAb,CAAoB7mB,KAApB,EAA2BG,KAA3B,CAAhB;;AACA,YAAIwiB,IAAI,CAAC4P,QAAT,EAAmB;AACjBT,UAAAA,WAAW,CAACnP,IAAD,EAAOoW,OAAP,CAAX;AACD;AACF;;AACDpW,MAAAA,IAAI,CAAC/jB,IAAL,CAAUioB,MAAV,CAAiB7mB,KAAjB,EAAwBG,KAAxB;AACD;;;WACD,eAAM2hB,IAAN,EAAY;AACV,UAAI,KAAKgR,QAAT,EAAmB;AACjB,aAAKQ,SAAL,CAAevzB,IAAf,CAAoB+hB,IAApB;AACD,OAFD,MAEO;AACL,oCAA6BA,IAA7B;AAAA,YAAOyK,MAAP;AAAA,YAAegM,IAAf;AAAA,YAAqBC,IAArB;;AACA,aAAKjM,MAAL,EAAagM,IAAb,EAAmBC,IAAnB;AACD;;AACD,WAAK75B,KAAL,CAAWq6B,YAAX,CAAwBj5B,IAAxB,EAA8B,KAAKX,KAAnC,4BAA6C0iB,IAA7C;AACD;;;WACD,uBAAc;AACZ,UAAM3hB,KAAK,GAAGmnB,SAAS,CAAC9pB,MAAxB;;AACA,WAAKy7B,KAAL,CAAW,CAAC,iBAAD,EAAoB,KAAKxF,UAAL,GAAkB70B,IAAlB,CAAuBpB,MAAvB,GAAgC2C,KAApD,EAA2DA,KAA3D,CAAX;AACD;;;WACD,sBAAa;AACX,WAAK84B,KAAL,CAAW,CAAC,iBAAD,EAAoB,KAAKlI,WAAL,CAAiBnyB,IAAjB,CAAsBpB,MAAtB,GAA+B,CAAnD,EAAsD,CAAtD,CAAX;AACD;;;WACD,wBAAe;AACb,WAAKy7B,KAAL,CAAW,CAAC,iBAAD,EAAoB,CAApB,EAAuB,CAAvB,CAAX;AACD;;;WACD,uBAAcj5B,KAAd,EAAqBG,KAArB,EAA4B;AAC1B,UAAIA,KAAJ,EAAW;AACT,aAAK84B,KAAL,CAAW,CAAC,iBAAD,EAAoBj5B,KAApB,EAA2BG,KAA3B,CAAX;AACD;;AACD,UAAM+4B,QAAQ,GAAG5R,SAAS,CAAC9pB,MAAV,GAAmB,CAApC;;AACA,UAAI07B,QAAJ,EAAc;AACZ,aAAKD,KAAL,CAAW,CAAC,iBAAD,EAAoBj5B,KAApB,EAA2Bk5B,QAA3B,CAAX;AACD;AACF;;;WACD,0BAAiB;AACf,WAAKD,KAAL,CAAW,CAAC,iBAAD,EAAoB,CAApB,EAAuB3R,SAAS,CAAC9pB,MAAjC,CAAX;AACD;;;;;;;AAEHg1B,iBAAiB,CAACt2B,QAAlB,GAA6B,EAA7B;AACAs2B,iBAAiB,CAACrS,SAAlB,CAA4BwU,kBAA5B,GAAiD,IAAjD;AACAnC,iBAAiB,CAACrS,SAAlB,CAA4BmX,eAA5B,GAA8C,IAA9C;;AAEA,SAAS6B,iBAAT,CAA2BntB,KAA3B,EAAkChP,IAAlC,EAAwC;AACtC,MAAI,CAACgP,KAAK,CAACotB,MAAN,CAAaC,IAAlB,EAAwB;AACtB,QAAMC,YAAY,GAAGttB,KAAK,CAAC4kB,uBAAN,CAA8B5zB,IAA9B,CAArB;AACA,QAAIolB,MAAM,GAAG,EAAb;;AACA,SAAK,IAAIpkB,CAAC,GAAG,CAAR,EAAWgxB,IAAI,GAAGsK,YAAY,CAAC97B,MAApC,EAA4CQ,CAAC,GAAGgxB,IAAhD,EAAsDhxB,CAAC,EAAvD,EAA2D;AACzDokB,MAAAA,MAAM,GAAGA,MAAM,CAACzD,MAAP,CAAc2a,YAAY,CAACt7B,CAAD,CAAZ,CAAgB8a,UAAhB,CAA2BygB,kBAA3B,CAA8CvtB,KAA9C,CAAd,CAAT;AACD;;AACDA,IAAAA,KAAK,CAACotB,MAAN,CAAaC,IAAb,GAAoB,uBAAajX,MAAM,CAACoX,IAAP,CAAY,UAAC7Y,CAAD,EAAI7gB,CAAJ;AAAA,aAAU6gB,CAAC,GAAG7gB,CAAd;AAAA,KAAZ,CAAb,CAApB;AACD;;AACD,SAAOkM,KAAK,CAACotB,MAAN,CAAaC,IAApB;AACD;;AACD,SAASI,oBAAT,CAA8B9W,IAA9B,EAAoC;AAClC,MAAM3W,KAAK,GAAG2W,IAAI,CAACsO,MAAnB;AACA,MAAM7O,MAAM,GAAG+W,iBAAiB,CAACntB,KAAD,EAAQ2W,IAAI,CAAC3lB,IAAb,CAAhC;AACA,MAAIgL,GAAG,GAAGgE,KAAK,CAAC0tB,OAAhB;AACA,MAAI17B,CAAJ,EAAOgxB,IAAP,EAAa2K,IAAb,EAAmBlE,IAAnB;;AACA,MAAMmE,gBAAgB,GAAG,SAAnBA,gBAAmB,GAAM;AAC7B,QAAID,IAAI,KAAK,KAAT,IAAkBA,IAAI,KAAK,CAAC,KAAhC,EAAuC;AACrC;AACD;;AACD,QAAI,uBAAQlE,IAAR,CAAJ,EAAmB;AACjBztB,MAAAA,GAAG,GAAGzH,IAAI,CAACyH,GAAL,CAASA,GAAT,EAAczH,IAAI,CAACs5B,GAAL,CAASF,IAAI,GAAGlE,IAAhB,KAAyBztB,GAAvC,CAAN;AACD;;AACDytB,IAAAA,IAAI,GAAGkE,IAAP;AACD,GARD;;AASA,OAAK37B,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAG5M,MAAM,CAAC5kB,MAA1B,EAAkCQ,CAAC,GAAGgxB,IAAtC,EAA4C,EAAEhxB,CAA9C,EAAiD;AAC/C27B,IAAAA,IAAI,GAAG3tB,KAAK,CAAC8tB,gBAAN,CAAuB1X,MAAM,CAACpkB,CAAD,CAA7B,CAAP;AACA47B,IAAAA,gBAAgB;AACjB;;AACDnE,EAAAA,IAAI,GAAGl4B,SAAP;;AACA,OAAKS,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAGhjB,KAAK,CAAC+tB,KAAN,CAAYv8B,MAA/B,EAAuCQ,CAAC,GAAGgxB,IAA3C,EAAiD,EAAEhxB,CAAnD,EAAsD;AACpD27B,IAAAA,IAAI,GAAG3tB,KAAK,CAACguB,eAAN,CAAsBh8B,CAAtB,CAAP;AACA47B,IAAAA,gBAAgB;AACjB;;AACD,SAAO5xB,GAAP;AACD;;AACD,SAASiyB,wBAAT,CAAkC76B,KAAlC,EAAyC86B,KAAzC,EAAgDr7B,OAAhD,EAAyDs7B,UAAzD,EAAqE;AACnE,MAAMC,SAAS,GAAGv7B,OAAO,CAACw7B,YAA1B;AACA,MAAI/9B,IAAJ,EAAU4E,KAAV;;AACA,MAAI,uBAAck5B,SAAd,CAAJ,EAA8B;AAC5B99B,IAAAA,IAAI,GAAG49B,KAAK,CAAClyB,GAAN,GAAYnJ,OAAO,CAACy7B,kBAA3B;AACAp5B,IAAAA,KAAK,GAAGrC,OAAO,CAAC07B,aAAhB;AACD,GAHD,MAGO;AACLj+B,IAAAA,IAAI,GAAG89B,SAAS,GAAGD,UAAnB;AACAj5B,IAAAA,KAAK,GAAG,CAAR;AACD;;AACD,SAAO;AACLs5B,IAAAA,KAAK,EAAEl+B,IAAI,GAAG69B,UADT;AAELj5B,IAAAA,KAAK,EAALA,KAFK;AAGLlB,IAAAA,KAAK,EAAEk6B,KAAK,CAACO,MAAN,CAAar7B,KAAb,IAAuB9C,IAAI,GAAG;AAHhC,GAAP;AAKD;;AACD,SAASo+B,yBAAT,CAAmCt7B,KAAnC,EAA0C86B,KAA1C,EAAiDr7B,OAAjD,EAA0Ds7B,UAA1D,EAAsE;AACpE,MAAMM,MAAM,GAAGP,KAAK,CAACO,MAArB;AACA,MAAMd,IAAI,GAAGc,MAAM,CAACr7B,KAAD,CAAnB;AACA,MAAIq2B,IAAI,GAAGr2B,KAAK,GAAG,CAAR,GAAYq7B,MAAM,CAACr7B,KAAK,GAAG,CAAT,CAAlB,GAAgC,IAA3C;AACA,MAAIsL,IAAI,GAAGtL,KAAK,GAAGq7B,MAAM,CAACj9B,MAAP,GAAgB,CAAxB,GAA4Bi9B,MAAM,CAACr7B,KAAK,GAAG,CAAT,CAAlC,GAAgD,IAA3D;AACA,MAAMu7B,OAAO,GAAG97B,OAAO,CAACy7B,kBAAxB;;AACA,MAAI7E,IAAI,KAAK,IAAb,EAAmB;AACjBA,IAAAA,IAAI,GAAGkE,IAAI,IAAIjvB,IAAI,KAAK,IAAT,GAAgBwvB,KAAK,CAACj6B,GAAN,GAAYi6B,KAAK,CAACl6B,KAAlC,GAA0C0K,IAAI,GAAGivB,IAArD,CAAX;AACD;;AACD,MAAIjvB,IAAI,KAAK,IAAb,EAAmB;AACjBA,IAAAA,IAAI,GAAGivB,IAAI,GAAGA,IAAP,GAAclE,IAArB;AACD;;AACD,MAAMz1B,KAAK,GAAG25B,IAAI,GAAG,CAACA,IAAI,GAAGp5B,IAAI,CAACyH,GAAL,CAASytB,IAAT,EAAe/qB,IAAf,CAAR,IAAgC,CAAhC,GAAoCiwB,OAAzD;AACA,MAAMr+B,IAAI,GAAGiE,IAAI,CAACs5B,GAAL,CAASnvB,IAAI,GAAG+qB,IAAhB,IAAwB,CAAxB,GAA4BkF,OAAzC;AACA,SAAO;AACLH,IAAAA,KAAK,EAAEl+B,IAAI,GAAG69B,UADT;AAELj5B,IAAAA,KAAK,EAAErC,OAAO,CAAC07B,aAFV;AAGLv6B,IAAAA,KAAK,EAALA;AAHK,GAAP;AAKD;;AACD,SAAS46B,aAAT,CAAuBrzB,KAAvB,EAA8B3G,IAA9B,EAAoC8vB,MAApC,EAA4C1yB,CAA5C,EAA+C;AAC7C,MAAM68B,UAAU,GAAGnK,MAAM,CAACtzB,KAAP,CAAamK,KAAK,CAAC,CAAD,CAAlB,EAAuBvJ,CAAvB,CAAnB;AACA,MAAM88B,QAAQ,GAAGpK,MAAM,CAACtzB,KAAP,CAAamK,KAAK,CAAC,CAAD,CAAlB,EAAuBvJ,CAAvB,CAAjB;AACA,MAAMgK,GAAG,GAAGzH,IAAI,CAACyH,GAAL,CAAS6yB,UAAT,EAAqBC,QAArB,CAAZ;AACA,MAAM7yB,GAAG,GAAG1H,IAAI,CAAC0H,GAAL,CAAS4yB,UAAT,EAAqBC,QAArB,CAAZ;AACA,MAAIC,QAAQ,GAAG/yB,GAAf;AACA,MAAIgzB,MAAM,GAAG/yB,GAAb;;AACA,MAAI1H,IAAI,CAACs5B,GAAL,CAAS7xB,GAAT,IAAgBzH,IAAI,CAACs5B,GAAL,CAAS5xB,GAAT,CAApB,EAAmC;AACjC8yB,IAAAA,QAAQ,GAAG9yB,GAAX;AACA+yB,IAAAA,MAAM,GAAGhzB,GAAT;AACD;;AACDpH,EAAAA,IAAI,CAAC8vB,MAAM,CAACS,IAAR,CAAJ,GAAoB6J,MAApB;AACAp6B,EAAAA,IAAI,CAACq6B,OAAL,GAAe;AACbF,IAAAA,QAAQ,EAARA,QADa;AAEbC,IAAAA,MAAM,EAANA,MAFa;AAGbh7B,IAAAA,KAAK,EAAE66B,UAHM;AAIb56B,IAAAA,GAAG,EAAE66B,QAJQ;AAKb9yB,IAAAA,GAAG,EAAHA,GALa;AAMbC,IAAAA,GAAG,EAAHA;AANa,GAAf;AAQD;;AACD,SAASizB,UAAT,CAAoB3zB,KAApB,EAA2B3G,IAA3B,EAAiC8vB,MAAjC,EAAyC1yB,CAAzC,EAA4C;AAC1C,MAAI,uBAAQuJ,KAAR,CAAJ,EAAoB;AAClBqzB,IAAAA,aAAa,CAACrzB,KAAD,EAAQ3G,IAAR,EAAc8vB,MAAd,EAAsB1yB,CAAtB,CAAb;AACD,GAFD,MAEO;AACL4C,IAAAA,IAAI,CAAC8vB,MAAM,CAACS,IAAR,CAAJ,GAAoBT,MAAM,CAACtzB,KAAP,CAAamK,KAAb,EAAoBvJ,CAApB,CAApB;AACD;;AACD,SAAO4C,IAAP;AACD;;AACD,SAASu6B,qBAAT,CAA+BxY,IAA/B,EAAqC/jB,IAArC,EAA2CoB,KAA3C,EAAkDG,KAAlD,EAAyD;AACvD,MAAM8wB,MAAM,GAAGtO,IAAI,CAACsO,MAApB;AACA,MAAMP,MAAM,GAAG/N,IAAI,CAAC+N,MAApB;AACA,MAAMxzB,MAAM,GAAG+zB,MAAM,CAAC6E,SAAP,EAAf;AACA,MAAMC,WAAW,GAAG9E,MAAM,KAAKP,MAA/B;AACA,MAAMI,MAAM,GAAG,EAAf;AACA,MAAI9yB,CAAJ,EAAOgxB,IAAP,EAAapuB,IAAb,EAAmB2G,KAAnB;;AACA,OAAKvJ,CAAC,GAAGgC,KAAJ,EAAWgvB,IAAI,GAAGhvB,KAAK,GAAGG,KAA/B,EAAsCnC,CAAC,GAAGgxB,IAA1C,EAAgD,EAAEhxB,CAAlD,EAAqD;AACnDuJ,IAAAA,KAAK,GAAG3I,IAAI,CAACZ,CAAD,CAAZ;AACA4C,IAAAA,IAAI,GAAG,EAAP;AACAA,IAAAA,IAAI,CAACqwB,MAAM,CAACE,IAAR,CAAJ,GAAoB4E,WAAW,IAAI9E,MAAM,CAAC7zB,KAAP,CAAaF,MAAM,CAACc,CAAD,CAAnB,EAAwBA,CAAxB,CAAnC;AACA8yB,IAAAA,MAAM,CAAC/wB,IAAP,CAAYm7B,UAAU,CAAC3zB,KAAD,EAAQ3G,IAAR,EAAc8vB,MAAd,EAAsB1yB,CAAtB,CAAtB;AACD;;AACD,SAAO8yB,MAAP;AACD;;AACD,SAASsK,UAAT,CAAoBC,MAApB,EAA4B;AAC1B,SAAOA,MAAM,IAAIA,MAAM,CAACN,QAAP,KAAoBx9B,SAA9B,IAA2C89B,MAAM,CAACL,MAAP,KAAkBz9B,SAApE;AACD;;AACD,SAAS+9B,OAAT,CAAiBh/B,IAAjB,EAAuBo0B,MAAvB,EAA+B6K,UAA/B,EAA2C;AACzC,MAAIj/B,IAAI,KAAK,CAAb,EAAgB;AACd,WAAO,uBAAKA,IAAL,CAAP;AACD;;AACD,SAAO,CAACo0B,MAAM,CAAC8K,YAAP,KAAwB,CAAxB,GAA4B,CAAC,CAA9B,KAAoC9K,MAAM,CAAC1oB,GAAP,IAAcuzB,UAAd,GAA2B,CAA3B,GAA+B,CAAC,CAApE,CAAP;AACD;;AACD,SAASE,WAAT,CAAqB1O,UAArB,EAAiC;AAC/B,MAAIsB,OAAJ,EAAaruB,KAAb,EAAoBC,GAApB,EAAyBqB,GAAzB,EAA8BC,MAA9B;;AACA,MAAIwrB,UAAU,CAAC2O,UAAf,EAA2B;AACzBrN,IAAAA,OAAO,GAAGtB,UAAU,CAAC4O,IAAX,GAAkB5O,UAAU,CAACxhB,CAAvC;AACAvL,IAAAA,KAAK,GAAG,MAAR;AACAC,IAAAA,GAAG,GAAG,OAAN;AACD,GAJD,MAIO;AACLouB,IAAAA,OAAO,GAAGtB,UAAU,CAAC4O,IAAX,GAAkB5O,UAAU,CAACvhB,CAAvC;AACAxL,IAAAA,KAAK,GAAG,QAAR;AACAC,IAAAA,GAAG,GAAG,KAAN;AACD;;AACD,MAAIouB,OAAJ,EAAa;AACX/sB,IAAAA,GAAG,GAAG,KAAN;AACAC,IAAAA,MAAM,GAAG,OAAT;AACD,GAHD,MAGO;AACLD,IAAAA,GAAG,GAAG,OAAN;AACAC,IAAAA,MAAM,GAAG,KAAT;AACD;;AACD,SAAO;AAACvB,IAAAA,KAAK,EAALA,KAAD;AAAQC,IAAAA,GAAG,EAAHA,GAAR;AAAaouB,IAAAA,OAAO,EAAPA,OAAb;AAAsB/sB,IAAAA,GAAG,EAAHA,GAAtB;AAA2BC,IAAAA,MAAM,EAANA;AAA3B,GAAP;AACD;;AACD,SAASq6B,gBAAT,CAA0B7O,UAA1B,EAAsCluB,OAAtC,EAA+CqwB,KAA/C,EAAsD9vB,KAAtD,EAA6D;AAC3D,MAAIy8B,IAAI,GAAGh9B,OAAO,CAACi9B,aAAnB;AACA,MAAM/a,GAAG,GAAG,EAAZ;;AACA,MAAI,CAAC8a,IAAL,EAAW;AACT9O,IAAAA,UAAU,CAAC+O,aAAX,GAA2B/a,GAA3B;AACA;AACD;;AACD,qBAA2C0a,WAAW,CAAC1O,UAAD,CAAtD;AAAA,MAAO/sB,KAAP,gBAAOA,KAAP;AAAA,MAAcC,GAAd,gBAAcA,GAAd;AAAA,MAAmBouB,OAAnB,gBAAmBA,OAAnB;AAAA,MAA4B/sB,GAA5B,gBAA4BA,GAA5B;AAAA,MAAiCC,MAAjC,gBAAiCA,MAAjC;;AACA,MAAIs6B,IAAI,KAAK,QAAT,IAAqB3M,KAAzB,EAAgC;AAC9BnC,IAAAA,UAAU,CAACgP,kBAAX,GAAgC,IAAhC;;AACA,QAAI,CAAC7M,KAAK,CAACoC,IAAN,IAAc,CAAf,MAAsBlyB,KAA1B,EAAiC;AAC/By8B,MAAAA,IAAI,GAAGv6B,GAAP;AACD,KAFD,MAEO,IAAI,CAAC4tB,KAAK,CAACqC,OAAN,IAAiB,CAAlB,MAAyBnyB,KAA7B,EAAoC;AACzCy8B,MAAAA,IAAI,GAAGt6B,MAAP;AACD,KAFM,MAEA;AACLwf,MAAAA,GAAG,CAACib,SAAS,CAACz6B,MAAD,EAASvB,KAAT,EAAgBC,GAAhB,EAAqBouB,OAArB,CAAV,CAAH,GAA8C,IAA9C;AACAwN,MAAAA,IAAI,GAAGv6B,GAAP;AACD;AACF;;AACDyf,EAAAA,GAAG,CAACib,SAAS,CAACH,IAAD,EAAO77B,KAAP,EAAcC,GAAd,EAAmBouB,OAAnB,CAAV,CAAH,GAA4C,IAA5C;AACAtB,EAAAA,UAAU,CAAC+O,aAAX,GAA2B/a,GAA3B;AACD;;AACD,SAASib,SAAT,CAAmBH,IAAnB,EAAyBlb,CAAzB,EAA4B7gB,CAA5B,EAA+BuuB,OAA/B,EAAwC;AACtC,MAAIA,OAAJ,EAAa;AACXwN,IAAAA,IAAI,GAAGI,IAAI,CAACJ,IAAD,EAAOlb,CAAP,EAAU7gB,CAAV,CAAX;AACA+7B,IAAAA,IAAI,GAAGK,QAAQ,CAACL,IAAD,EAAO/7B,CAAP,EAAU6gB,CAAV,CAAf;AACD,GAHD,MAGO;AACLkb,IAAAA,IAAI,GAAGK,QAAQ,CAACL,IAAD,EAAOlb,CAAP,EAAU7gB,CAAV,CAAf;AACD;;AACD,SAAO+7B,IAAP;AACD;;AACD,SAASI,IAAT,CAAcE,IAAd,EAAoBC,EAApB,EAAwBC,EAAxB,EAA4B;AAC1B,SAAOF,IAAI,KAAKC,EAAT,GAAcC,EAAd,GAAmBF,IAAI,KAAKE,EAAT,GAAcD,EAAd,GAAmBD,IAA7C;AACD;;AACD,SAASD,QAAT,CAAkB/Y,CAAlB,EAAqBnjB,KAArB,EAA4BC,GAA5B,EAAiC;AAC/B,SAAOkjB,CAAC,KAAK,OAAN,GAAgBnjB,KAAhB,GAAwBmjB,CAAC,KAAK,KAAN,GAAcljB,GAAd,GAAoBkjB,CAAnD;AACD;;AACD,SAASmZ,gBAAT,CAA0BvP,UAA1B,QAAuD7rB,KAAvD,EAA8D;AAAA,MAAvBq7B,aAAuB,QAAvBA,aAAuB;AAC5DxP,EAAAA,UAAU,CAACwP,aAAX,GAA2BA,aAAa,KAAK,MAAlB,GACvBr7B,KAAK,KAAK,CAAV,GAAc,IAAd,GAAqB,CADE,GAEvBq7B,aAFJ;AAGD;;IACKphC;;;;;;;;;;;;;WACJ,4BAAmBwnB,IAAnB,EAAyB/jB,IAAzB,EAA+BoB,KAA/B,EAAsCG,KAAtC,EAA6C;AAC3C,aAAOg7B,qBAAqB,CAACxY,IAAD,EAAO/jB,IAAP,EAAaoB,KAAb,EAAoBG,KAApB,CAA5B;AACD;;;WACD,wBAAewiB,IAAf,EAAqB/jB,IAArB,EAA2BoB,KAA3B,EAAkCG,KAAlC,EAAyC;AACvC,aAAOg7B,qBAAqB,CAACxY,IAAD,EAAO/jB,IAAP,EAAaoB,KAAb,EAAoBG,KAApB,CAA5B;AACD;;;WACD,yBAAgBwiB,IAAhB,EAAsB/jB,IAAtB,EAA4BoB,KAA5B,EAAmCG,KAAnC,EAA0C;AACxC,UAAO8wB,MAAP,GAAyBtO,IAAzB,CAAOsO,MAAP;AAAA,UAAeP,MAAf,GAAyB/N,IAAzB,CAAe+N,MAAf;AACA,4BAAyC,KAAKoC,QAA9C;AAAA,kDAAOkD,QAAP;AAAA,UAAOA,QAAP,sCAAkB,GAAlB;AAAA,kDAAuBC,QAAvB;AAAA,UAAuBA,QAAvB,sCAAkC,GAAlC;AACA,UAAMuG,QAAQ,GAAGvL,MAAM,CAACE,IAAP,KAAgB,GAAhB,GAAsB6E,QAAtB,GAAiCC,QAAlD;AACA,UAAMwG,QAAQ,GAAG/L,MAAM,CAACS,IAAP,KAAgB,GAAhB,GAAsB6E,QAAtB,GAAiCC,QAAlD;AACA,UAAMnF,MAAM,GAAG,EAAf;AACA,UAAI9yB,CAAJ,EAAOgxB,IAAP,EAAapuB,IAAb,EAAmBmiB,GAAnB;;AACA,WAAK/kB,CAAC,GAAGgC,KAAJ,EAAWgvB,IAAI,GAAGhvB,KAAK,GAAGG,KAA/B,EAAsCnC,CAAC,GAAGgxB,IAA1C,EAAgD,EAAEhxB,CAAlD,EAAqD;AACnD+kB,QAAAA,GAAG,GAAGnkB,IAAI,CAACZ,CAAD,CAAV;AACA4C,QAAAA,IAAI,GAAG,EAAP;AACAA,QAAAA,IAAI,CAACqwB,MAAM,CAACE,IAAR,CAAJ,GAAoBF,MAAM,CAAC7zB,KAAP,CAAa,uBAAiB2lB,GAAjB,EAAsByZ,QAAtB,CAAb,EAA8Cx+B,CAA9C,CAApB;AACA8yB,QAAAA,MAAM,CAAC/wB,IAAP,CAAYm7B,UAAU,CAAC,uBAAiBnY,GAAjB,EAAsB0Z,QAAtB,CAAD,EAAkC77B,IAAlC,EAAwC8vB,MAAxC,EAAgD1yB,CAAhD,CAAtB;AACD;;AACD,aAAO8yB,MAAP;AACD;;;WACD,+BAAsBoF,KAAtB,EAA6BlqB,KAA7B,EAAoC8kB,MAApC,EAA4C5B,KAA5C,EAAmD;AACjD,+FAA4BgH,KAA5B,EAAmClqB,KAAnC,EAA0C8kB,MAA1C,EAAkD5B,KAAlD;;AACA,UAAMmM,MAAM,GAAGvK,MAAM,CAACmK,OAAtB;;AACA,UAAII,MAAM,IAAIrvB,KAAK,KAAK,KAAK+kB,WAAL,CAAiBL,MAAzC,EAAiD;AAC/CwF,QAAAA,KAAK,CAACluB,GAAN,GAAYzH,IAAI,CAACyH,GAAL,CAASkuB,KAAK,CAACluB,GAAf,EAAoBqzB,MAAM,CAACrzB,GAA3B,CAAZ;AACAkuB,QAAAA,KAAK,CAACjuB,GAAN,GAAY1H,IAAI,CAAC0H,GAAL,CAASiuB,KAAK,CAACjuB,GAAf,EAAoBozB,MAAM,CAACpzB,GAA3B,CAAZ;AACD;AACF;;;WACD,0BAAiB;AACf,aAAO,CAAP;AACD;;;WACD,0BAAiB7I,KAAjB,EAAwB;AACtB,UAAMujB,IAAI,GAAG,KAAKoO,WAAlB;AACA,UAAOE,MAAP,GAAyBtO,IAAzB,CAAOsO,MAAP;AAAA,UAAeP,MAAf,GAAyB/N,IAAzB,CAAe+N,MAAf;AACA,UAAMI,MAAM,GAAG,KAAK6F,SAAL,CAAev3B,KAAf,CAAf;AACA,UAAMi8B,MAAM,GAAGvK,MAAM,CAACmK,OAAtB;AACA,UAAMlzB,KAAK,GAAGqzB,UAAU,CAACC,MAAD,CAAV,GACV,MAAMA,MAAM,CAACr7B,KAAb,GAAqB,IAArB,GAA4Bq7B,MAAM,CAACp7B,GAAnC,GAAyC,GAD/B,GAEV,KAAKywB,MAAM,CAACkG,gBAAP,CAAwB9F,MAAM,CAACJ,MAAM,CAACS,IAAR,CAA9B,CAFT;AAGA,aAAO;AACLxzB,QAAAA,KAAK,EAAE,KAAKszB,MAAM,CAAC2F,gBAAP,CAAwB9F,MAAM,CAACG,MAAM,CAACE,IAAR,CAA9B,CADP;AAELppB,QAAAA,KAAK,EAALA;AAFK,OAAP;AAID;;;WACD,sBAAa;AACX,WAAKqrB,mBAAL,GAA2B,IAA3B;;AACA;;AACA,UAAMzQ,IAAI,GAAG,KAAKoO,WAAlB;AACApO,MAAAA,IAAI,CAACuM,KAAL,GAAa,KAAKuE,UAAL,GAAkBvE,KAA/B;AACD;;;WACD,gBAAOG,IAAP,EAAa;AACX,UAAM1M,IAAI,GAAG,KAAKoO,WAAlB;AACA,WAAK+H,cAAL,CAAoBnW,IAAI,CAAC/jB,IAAzB,EAA+B,CAA/B,EAAkC+jB,IAAI,CAAC/jB,IAAL,CAAUpB,MAA5C,EAAoD6xB,IAApD;AACD;;;WACD,wBAAeqN,IAAf,EAAqB18B,KAArB,EAA4BG,KAA5B,EAAmCkvB,IAAnC,EAAyC;AACvC,UAAM5hB,KAAK,GAAG4hB,IAAI,KAAK,OAAvB;AACA,UAAOjwB,KAAP,GAAuC,IAAvC,CAAOA,KAAP;AAAA,UAA4BsxB,MAA5B,GAAuC,IAAvC,CAAcK,WAAd,CAA4BL,MAA5B;AACA,UAAMiL,IAAI,GAAGjL,MAAM,CAACiM,YAAP,EAAb;AACA,UAAMjB,UAAU,GAAGhL,MAAM,CAAC8K,YAAP,EAAnB;;AACA,UAAMtB,KAAK,GAAG,KAAK0C,SAAL,EAAd;;AACA,UAAMC,SAAS,GAAG,KAAKzF,yBAAL,CAA+Bp3B,KAA/B,EAAsCqvB,IAAtC,CAAlB;AACA,UAAM4I,aAAa,GAAG,KAAKI,gBAAL,CAAsBwE,SAAtB,CAAtB;AACA,UAAMC,cAAc,GAAG,KAAKA,cAAL,CAAoBzN,IAApB,EAA0B4I,aAA1B,CAAvB;AACA,WAAK8E,mBAAL,CAAyB9E,aAAzB,EAAwC5I,IAAxC,EAA8CwN,SAA9C;;AACA,WAAK,IAAI7+B,CAAC,GAAGgC,KAAb,EAAoBhC,CAAC,GAAGgC,KAAK,GAAGG,KAAhC,EAAuCnC,CAAC,EAAxC,EAA4C;AAC1C,YAAM8yB,MAAM,GAAG,KAAK6F,SAAL,CAAe34B,CAAf,CAAf;AACA,YAAMg/B,OAAO,GAAGvvB,KAAK,IAAI,uBAAcqjB,MAAM,CAACJ,MAAM,CAACS,IAAR,CAApB,CAAT,GAA8C;AAACwK,UAAAA,IAAI,EAAJA,IAAD;AAAOsB,UAAAA,IAAI,EAAEtB;AAAb,SAA9C,GAAmE,KAAKuB,wBAAL,CAA8Bl/B,CAA9B,CAAnF;;AACA,YAAMm/B,OAAO,GAAG,KAAKC,wBAAL,CAA8Bp/B,CAA9B,EAAiCk8B,KAAjC,CAAhB;;AACA,YAAMhL,KAAK,GAAG,CAAC4B,MAAM,CAACE,OAAP,IAAkB,EAAnB,EAAuBN,MAAM,CAACS,IAA9B,CAAd;AACA,YAAMpE,UAAU,GAAG;AACjB2O,UAAAA,UAAU,EAAVA,UADiB;AAEjBC,UAAAA,IAAI,EAAEqB,OAAO,CAACrB,IAFG;AAGjBI,UAAAA,kBAAkB,EAAE,CAAC7M,KAAD,IAAUkM,UAAU,CAACtK,MAAM,CAACmK,OAAR,CAApB,IAAyC77B,KAAK,KAAK8vB,KAAK,CAACoC,IAAhB,IAAwBlyB,KAAK,KAAK8vB,KAAK,CAACqC,OAHpF;AAIjBhmB,UAAAA,CAAC,EAAEmwB,UAAU,GAAGsB,OAAO,CAACC,IAAX,GAAkBE,OAAO,CAACE,MAJtB;AAKjB7xB,UAAAA,CAAC,EAAEkwB,UAAU,GAAGyB,OAAO,CAACE,MAAX,GAAoBL,OAAO,CAACC,IALxB;AAMjBv7B,UAAAA,MAAM,EAAEg6B,UAAU,GAAGyB,OAAO,CAAC7gC,IAAX,GAAkBiE,IAAI,CAACs5B,GAAL,CAASmD,OAAO,CAAC1gC,IAAjB,CANnB;AAOjBqF,UAAAA,KAAK,EAAE+5B,UAAU,GAAGn7B,IAAI,CAACs5B,GAAL,CAASmD,OAAO,CAAC1gC,IAAjB,CAAH,GAA4B6gC,OAAO,CAAC7gC;AAPpC,SAAnB;;AASA,YAAIwgC,cAAJ,EAAoB;AAClB/P,UAAAA,UAAU,CAACluB,OAAX,GAAqBo5B,aAAa,IAAI,KAAKb,yBAAL,CAA+Bp5B,CAA/B,EAAkC0+B,IAAI,CAAC1+B,CAAD,CAAJ,CAAQ0d,MAAR,GAAiB,QAAjB,GAA4B2T,IAA9D,CAAtC;AACD;;AACD,YAAMxwB,OAAO,GAAGkuB,UAAU,CAACluB,OAAX,IAAsB69B,IAAI,CAAC1+B,CAAD,CAAJ,CAAQa,OAA9C;AACA+8B,QAAAA,gBAAgB,CAAC7O,UAAD,EAAaluB,OAAb,EAAsBqwB,KAAtB,EAA6B9vB,KAA7B,CAAhB;AACAk9B,QAAAA,gBAAgB,CAACvP,UAAD,EAAaluB,OAAb,EAAsBq7B,KAAK,CAACh5B,KAA5B,CAAhB;AACA,aAAKo8B,aAAL,CAAmBZ,IAAI,CAAC1+B,CAAD,CAAvB,EAA4BA,CAA5B,EAA+B+uB,UAA/B,EAA2CsC,IAA3C;AACD;AACF;;;WACD,oBAAWkO,IAAX,EAAiB3L,SAAjB,EAA4B;AAC1B,UAAMjP,IAAI,GAAG,KAAKoO,WAAlB;AACA,UAAME,MAAM,GAAGtO,IAAI,CAACsO,MAApB;AACA,UAAMnC,QAAQ,GAAGmC,MAAM,CAACL,uBAAP,CAA+B,KAAKiC,KAApC,CAAjB;AACA,UAAMlD,OAAO,GAAGsB,MAAM,CAACpyB,OAAP,CAAe8wB,OAA/B;AACA,UAAMX,IAAI,GAAGF,QAAQ,CAACtxB,MAAtB;AACA,UAAM6yB,MAAM,GAAG,EAAf;AACA,UAAIryB,CAAJ,EAAO4C,IAAP;;AACA,WAAK5C,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgxB,IAAhB,EAAsB,EAAEhxB,CAAxB,EAA2B;AACzB4C,QAAAA,IAAI,GAAGkuB,QAAQ,CAAC9wB,CAAD,CAAf;;AACA,YAAI,CAAC4C,IAAI,CAACkY,UAAL,CAAgBja,OAAhB,CAAwB2+B,OAA7B,EAAsC;AACpC;AACD;;AACD,YAAI,OAAO5L,SAAP,KAAqB,WAAzB,EAAsC;AACpC,cAAMjjB,GAAG,GAAG/N,IAAI,CAACkY,UAAL,CAAgB6d,SAAhB,CAA0B/E,SAA1B,EACVhxB,IAAI,CAACkY,UAAL,CAAgBiY,WAAhB,CAA4BL,MAA5B,CAAmCS,IADzB,CAAZ;;AAGA,cAAI,uBAAcxiB,GAAd,KAAsBI,KAAK,CAACJ,GAAD,CAA/B,EAAsC;AACpC;AACD;AACF;;AACD,YAAIghB,OAAO,KAAK,KAAZ,IAAqBU,MAAM,CAACxrB,OAAP,CAAejE,IAAI,CAACsuB,KAApB,MAA+B,CAAC,CAArD,IACLS,OAAO,KAAKpyB,SAAZ,IAAyBqD,IAAI,CAACsuB,KAAL,KAAe3xB,SADvC,EACmD;AACjD8yB,UAAAA,MAAM,CAACtwB,IAAP,CAAYa,IAAI,CAACsuB,KAAjB;AACD;;AACD,YAAItuB,IAAI,CAACxB,KAAL,KAAem+B,IAAnB,EAAyB;AACvB;AACD;AACF;;AACD,UAAI,CAAClN,MAAM,CAAC7yB,MAAZ,EAAoB;AAClB6yB,QAAAA,MAAM,CAACtwB,IAAP,CAAYxC,SAAZ;AACD;;AACD,aAAO8yB,MAAP;AACD;;;WACD,wBAAejxB,KAAf,EAAsB;AACpB,aAAO,KAAKq+B,UAAL,CAAgBlgC,SAAhB,EAA2B6B,KAA3B,EAAkC5B,MAAzC;AACD;;;WACD,wBAAe8xB,YAAf,EAA6BhS,IAA7B,EAAmCsU,SAAnC,EAA8C;AAC5C,UAAMvB,MAAM,GAAG,KAAKoN,UAAL,CAAgBnO,YAAhB,EAA8BsC,SAA9B,CAAf;;AACA,UAAMxyB,KAAK,GAAIke,IAAI,KAAK/f,SAAV,GACV8yB,MAAM,CAACxrB,OAAP,CAAeyY,IAAf,CADU,GAEV,CAAC,CAFL;AAGA,aAAQle,KAAK,KAAK,CAAC,CAAZ,GACHixB,MAAM,CAAC7yB,MAAP,GAAgB,CADb,GAEH4B,KAFJ;AAGD;;;WACD,qBAAY;AACV,UAAMkJ,IAAI,GAAG,KAAKzJ,OAAlB;AACA,UAAM8jB,IAAI,GAAG,KAAKoO,WAAlB;AACA,UAAME,MAAM,GAAGtO,IAAI,CAACsO,MAApB;AACA,UAAMwJ,MAAM,GAAG,EAAf;AACA,UAAIz8B,CAAJ,EAAOgxB,IAAP;;AACA,WAAKhxB,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAGrM,IAAI,CAAC/jB,IAAL,CAAUpB,MAA7B,EAAqCQ,CAAC,GAAGgxB,IAAzC,EAA+C,EAAEhxB,CAAjD,EAAoD;AAClDy8B,QAAAA,MAAM,CAAC16B,IAAP,CAAYkxB,MAAM,CAAC6I,gBAAP,CAAwB,KAAKnD,SAAL,CAAe34B,CAAf,EAAkBizB,MAAM,CAACE,IAAzB,CAAxB,EAAwDnzB,CAAxD,CAAZ;AACD;;AACD,UAAMq8B,YAAY,GAAG/xB,IAAI,CAAC+xB,YAA1B;AACA,UAAMryB,GAAG,GAAGqyB,YAAY,IAAIZ,oBAAoB,CAAC9W,IAAD,CAAhD;AACA,aAAO;AACL3a,QAAAA,GAAG,EAAHA,GADK;AAELyyB,QAAAA,MAAM,EAANA,MAFK;AAGLz6B,QAAAA,KAAK,EAAEixB,MAAM,CAACyM,WAHT;AAILz9B,QAAAA,GAAG,EAAEgxB,MAAM,CAAC0M,SAJP;AAKLxD,QAAAA,UAAU,EAAE,KAAKyD,cAAL,EALP;AAML5xB,QAAAA,KAAK,EAAEilB,MANF;AAOLuM,QAAAA,OAAO,EAAEl1B,IAAI,CAACk1B,OAPT;AAQLt8B,QAAAA,KAAK,EAAEm5B,YAAY,GAAG,CAAH,GAAO/xB,IAAI,CAACgyB,kBAAL,GAA0BhyB,IAAI,CAACiyB;AARpD,OAAP;AAUD;;;WACD,kCAAyBn7B,KAAzB,EAAgC;AAC9B,8BAAoF,IAApF,CAAO2xB,WAAP;AAAA,UAAqBL,MAArB,qBAAqBA,MAArB;AAAA,UAA6B6B,QAA7B,qBAA6BA,QAA7B;AAAA,0BAAoF,IAApF,CAAwC1zB,OAAxC;AAAA,UAAwDg/B,SAAxD,iBAAkDlC,IAAlD;AAAA,UAAmEmC,YAAnE,iBAAmEA,YAAnE;AACA,UAAMvC,UAAU,GAAGsC,SAAS,IAAI,CAAhC;AACA,UAAM/M,MAAM,GAAG,KAAK6F,SAAL,CAAev3B,KAAf,CAAf;AACA,UAAMi8B,MAAM,GAAGvK,MAAM,CAACmK,OAAtB;AACA,UAAM8C,QAAQ,GAAG3C,UAAU,CAACC,MAAD,CAA3B;AACA,UAAItzB,KAAK,GAAG+oB,MAAM,CAACJ,MAAM,CAACS,IAAR,CAAlB;AACA,UAAInxB,KAAK,GAAG,CAAZ;AACA,UAAIxC,MAAM,GAAG+0B,QAAQ,GAAG,KAAKtD,UAAL,CAAgByB,MAAhB,EAAwBI,MAAxB,EAAgCyB,QAAhC,CAAH,GAA+CxqB,KAApE;AACA,UAAIk1B,IAAJ,EAAU3gC,IAAV;;AACA,UAAIkB,MAAM,KAAKuK,KAAf,EAAsB;AACpB/H,QAAAA,KAAK,GAAGxC,MAAM,GAAGuK,KAAjB;AACAvK,QAAAA,MAAM,GAAGuK,KAAT;AACD;;AACD,UAAIg2B,QAAJ,EAAc;AACZh2B,QAAAA,KAAK,GAAGszB,MAAM,CAACN,QAAf;AACAv9B,QAAAA,MAAM,GAAG69B,MAAM,CAACL,MAAP,GAAgBK,MAAM,CAACN,QAAhC;;AACA,YAAIhzB,KAAK,KAAK,CAAV,IAAe,uBAAKA,KAAL,MAAgB,uBAAKszB,MAAM,CAACL,MAAZ,CAAnC,EAAwD;AACtDh7B,UAAAA,KAAK,GAAG,CAAR;AACD;;AACDA,QAAAA,KAAK,IAAI+H,KAAT;AACD;;AACD,UAAM8yB,UAAU,GAAG,CAAC,uBAAcgD,SAAd,CAAD,IAA6B,CAACE,QAA9B,GAAyCF,SAAzC,GAAqD79B,KAAxE;AACA,UAAI27B,IAAI,GAAGjL,MAAM,CAACoJ,gBAAP,CAAwBe,UAAxB,CAAX;;AACA,UAAI,KAAKl8B,KAAL,CAAWq/B,iBAAX,CAA6B5+B,KAA7B,CAAJ,EAAyC;AACvC69B,QAAAA,IAAI,GAAGvM,MAAM,CAACoJ,gBAAP,CAAwB95B,KAAK,GAAGxC,MAAhC,CAAP;AACD,OAFD,MAEO;AACLy/B,QAAAA,IAAI,GAAGtB,IAAP;AACD;;AACDr/B,MAAAA,IAAI,GAAG2gC,IAAI,GAAGtB,IAAd;;AACA,UAAIp7B,IAAI,CAACs5B,GAAL,CAASv9B,IAAT,IAAiBwhC,YAArB,EAAmC;AACjCxhC,QAAAA,IAAI,GAAGg/B,OAAO,CAACh/B,IAAD,EAAOo0B,MAAP,EAAe6K,UAAf,CAAP,GAAoCuC,YAA3C;;AACA,YAAI/1B,KAAK,KAAKwzB,UAAd,EAA0B;AACxBI,UAAAA,IAAI,IAAIr/B,IAAI,GAAG,CAAf;AACD;;AACD2gC,QAAAA,IAAI,GAAGtB,IAAI,GAAGr/B,IAAd;AACD;;AACD,UAAIq/B,IAAI,KAAKjL,MAAM,CAACoJ,gBAAP,CAAwByB,UAAxB,CAAb,EAAkD;AAChD,YAAM0C,QAAQ,GAAG,uBAAK3hC,IAAL,IAAao0B,MAAM,CAACwN,oBAAP,CAA4B3C,UAA5B,CAAb,GAAuD,CAAxE;AACAI,QAAAA,IAAI,IAAIsC,QAAR;AACA3hC,QAAAA,IAAI,IAAI2hC,QAAR;AACD;;AACD,aAAO;AACL3hC,QAAAA,IAAI,EAAJA,IADK;AAELq/B,QAAAA,IAAI,EAAJA,IAFK;AAGLsB,QAAAA,IAAI,EAAJA,IAHK;AAILI,QAAAA,MAAM,EAAEJ,IAAI,GAAG3gC,IAAI,GAAG;AAJjB,OAAP;AAMD;;;WACD,kCAAyB8C,KAAzB,EAAgC86B,KAAhC,EAAuC;AACrC,UAAMluB,KAAK,GAAGkuB,KAAK,CAACluB,KAApB;AACA,UAAMnN,OAAO,GAAG,KAAKA,OAArB;AACA,UAAMs/B,QAAQ,GAAGt/B,OAAO,CAACs/B,QAAzB;AACA,UAAMC,eAAe,GAAG,uBAAev/B,OAAO,CAACu/B,eAAvB,EAAwC77B,QAAxC,CAAxB;AACA,UAAI86B,MAAJ,EAAY/gC,IAAZ;;AACA,UAAI49B,KAAK,CAACsD,OAAV,EAAmB;AACjB,YAAMrD,UAAU,GAAGgE,QAAQ,GAAG,KAAKP,cAAL,CAAoBx+B,KAApB,CAAH,GAAgC86B,KAAK,CAACC,UAAjE;AACA,YAAMjE,KAAK,GAAGr3B,OAAO,CAACw7B,YAAR,KAAyB,MAAzB,GACVK,yBAAyB,CAACt7B,KAAD,EAAQ86B,KAAR,EAAer7B,OAAf,EAAwBs7B,UAAxB,CADf,GAEVF,wBAAwB,CAAC76B,KAAD,EAAQ86B,KAAR,EAAer7B,OAAf,EAAwBs7B,UAAxB,CAF5B;;AAGA,YAAMkE,UAAU,GAAG,KAAKC,cAAL,CAAoB,KAAKl/B,KAAzB,EAAgC,KAAK2xB,WAAL,CAAiB7B,KAAjD,EAAwDiP,QAAQ,GAAG/+B,KAAH,GAAW7B,SAA3E,CAAnB;;AACA8/B,QAAAA,MAAM,GAAGnH,KAAK,CAACl2B,KAAN,GAAek2B,KAAK,CAACsE,KAAN,GAAc6D,UAA7B,GAA4CnI,KAAK,CAACsE,KAAN,GAAc,CAAnE;AACAl+B,QAAAA,IAAI,GAAGiE,IAAI,CAACyH,GAAL,CAASo2B,eAAT,EAA0BlI,KAAK,CAACsE,KAAN,GAActE,KAAK,CAACh1B,KAA9C,CAAP;AACD,OARD,MAQO;AACLm8B,QAAAA,MAAM,GAAGrxB,KAAK,CAAC8tB,gBAAN,CAAuB,KAAKnD,SAAL,CAAev3B,KAAf,EAAsB4M,KAAK,CAACmlB,IAA5B,CAAvB,EAA0D/xB,KAA1D,CAAT;AACA9C,QAAAA,IAAI,GAAGiE,IAAI,CAACyH,GAAL,CAASo2B,eAAT,EAA0BlE,KAAK,CAAClyB,GAAN,GAAYkyB,KAAK,CAACh5B,KAA5C,CAAP;AACD;;AACD,aAAO;AACLy6B,QAAAA,IAAI,EAAE0B,MAAM,GAAG/gC,IAAI,GAAG,CADjB;AAEL2gC,QAAAA,IAAI,EAAEI,MAAM,GAAG/gC,IAAI,GAAG,CAFjB;AAGL+gC,QAAAA,MAAM,EAANA,MAHK;AAIL/gC,QAAAA,IAAI,EAAJA;AAJK,OAAP;AAMD;;;WACD,gBAAO;AACL,UAAMqmB,IAAI,GAAG,KAAKoO,WAAlB;AACA,UAAML,MAAM,GAAG/N,IAAI,CAAC+N,MAApB;AACA,UAAM6N,KAAK,GAAG5b,IAAI,CAAC/jB,IAAnB;AACA,UAAMowB,IAAI,GAAGuP,KAAK,CAAC/gC,MAAnB;AACA,UAAIQ,CAAC,GAAG,CAAR;;AACA,aAAOA,CAAC,GAAGgxB,IAAX,EAAiB,EAAEhxB,CAAnB,EAAsB;AACpB,YAAI,KAAK24B,SAAL,CAAe34B,CAAf,EAAkB0yB,MAAM,CAACS,IAAzB,MAAmC,IAAvC,EAA6C;AAC3CoN,UAAAA,KAAK,CAACvgC,CAAD,CAAL,CAAS2rB,IAAT,CAAc,KAAK8I,IAAnB;AACD;AACF;AACF;;;;EAlPyBD;;;AAoP5Br3B,aAAa,CAACogB,EAAd,GAAmB,KAAnB;AACApgB,aAAa,CAACe,QAAd,GAAyB;AACvBy4B,EAAAA,kBAAkB,EAAE,KADG;AAEvB2C,EAAAA,eAAe,EAAE,KAFM;AAGvBgD,EAAAA,kBAAkB,EAAE,GAHG;AAIvBC,EAAAA,aAAa,EAAE,GAJQ;AAKvBiD,EAAAA,OAAO,EAAE,IALc;AAMvBxQ,EAAAA,UAAU,EAAE;AACVR,IAAAA,OAAO,EAAE;AACPxvB,MAAAA,IAAI,EAAE,QADC;AAEP+vB,MAAAA,UAAU,EAAE,CAAC,GAAD,EAAM,GAAN,EAAW,MAAX,EAAmB,OAAnB,EAA4B,QAA5B;AAFL;AADC;AANW,CAAzB;AAaA5xB,aAAa,CAACqjC,SAAd,GAA0B;AACxB5gC,EAAAA,MAAM,EAAE;AACN6gC,IAAAA,OAAO,EAAE;AACPzhC,MAAAA,IAAI,EAAE,UADC;AAEPuJ,MAAAA,MAAM,EAAE,IAFD;AAGPnI,MAAAA,IAAI,EAAE;AACJmI,QAAAA,MAAM,EAAE;AADJ;AAHC,KADH;AAQNm4B,IAAAA,OAAO,EAAE;AACP1hC,MAAAA,IAAI,EAAE,QADC;AAEP2hC,MAAAA,WAAW,EAAE;AAFN;AARH;AADgB,CAA1B;;IAgBMC;;;;;;;;;;;;;WACJ,sBAAa;AACX,WAAKxL,mBAAL,GAA2B,IAA3B;;AACA;AACD;;;WACD,4BAAmBzQ,IAAnB,EAAyB/jB,IAAzB,EAA+BoB,KAA/B,EAAsCG,KAAtC,EAA6C;AAC3C,UAAM2wB,MAAM,4FAA4BnO,IAA5B,EAAkC/jB,IAAlC,EAAwCoB,KAAxC,EAA+CG,KAA/C,CAAZ;;AACA,WAAK,IAAInC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8yB,MAAM,CAACtzB,MAA3B,EAAmCQ,CAAC,EAApC,EAAwC;AACtC8yB,QAAAA,MAAM,CAAC9yB,CAAD,CAAN,CAAUi9B,OAAV,GAAoB,KAAK7D,yBAAL,CAA+Bp5B,CAAC,GAAGgC,KAAnC,EAA0C4M,MAA9D;AACD;;AACD,aAAOkkB,MAAP;AACD;;;WACD,wBAAenO,IAAf,EAAqB/jB,IAArB,EAA2BoB,KAA3B,EAAkCG,KAAlC,EAAyC;AACvC,UAAM2wB,MAAM,wFAAwBnO,IAAxB,EAA8B/jB,IAA9B,EAAoCoB,KAApC,EAA2CG,KAA3C,CAAZ;;AACA,WAAK,IAAInC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8yB,MAAM,CAACtzB,MAA3B,EAAmCQ,CAAC,EAApC,EAAwC;AACtC,YAAM4C,IAAI,GAAGhC,IAAI,CAACoB,KAAK,GAAGhC,CAAT,CAAjB;AACA8yB,QAAAA,MAAM,CAAC9yB,CAAD,CAAN,CAAUi9B,OAAV,GAAoB,uBAAer6B,IAAI,CAAC,CAAD,CAAnB,EAAwB,KAAKw2B,yBAAL,CAA+Bp5B,CAAC,GAAGgC,KAAnC,EAA0C4M,MAAlE,CAApB;AACD;;AACD,aAAOkkB,MAAP;AACD;;;WACD,yBAAgBnO,IAAhB,EAAsB/jB,IAAtB,EAA4BoB,KAA5B,EAAmCG,KAAnC,EAA0C;AACxC,UAAM2wB,MAAM,yFAAyBnO,IAAzB,EAA+B/jB,IAA/B,EAAqCoB,KAArC,EAA4CG,KAA5C,CAAZ;;AACA,WAAK,IAAInC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8yB,MAAM,CAACtzB,MAA3B,EAAmCQ,CAAC,EAApC,EAAwC;AACtC,YAAM4C,IAAI,GAAGhC,IAAI,CAACoB,KAAK,GAAGhC,CAAT,CAAjB;AACA8yB,QAAAA,MAAM,CAAC9yB,CAAD,CAAN,CAAUi9B,OAAV,GAAoB,uBAAer6B,IAAI,IAAIA,IAAI,CAACjB,CAAb,IAAkB,CAACiB,IAAI,CAACjB,CAAvC,EAA0C,KAAKy3B,yBAAL,CAA+Bp5B,CAAC,GAAGgC,KAAnC,EAA0C4M,MAApF,CAApB;AACD;;AACD,aAAOkkB,MAAP;AACD;;;WACD,0BAAiB;AACf,UAAMlyB,IAAI,GAAG,KAAKmyB,WAAL,CAAiBnyB,IAA9B;AACA,UAAIqJ,GAAG,GAAG,CAAV;;AACA,WAAK,IAAIjK,CAAC,GAAGY,IAAI,CAACpB,MAAL,GAAc,CAA3B,EAA8BQ,CAAC,IAAI,CAAnC,EAAsC,EAAEA,CAAxC,EAA2C;AACzCiK,QAAAA,GAAG,GAAG1H,IAAI,CAAC0H,GAAL,CAASA,GAAT,EAAcrJ,IAAI,CAACZ,CAAD,CAAJ,CAAQ1B,IAAR,CAAa,KAAK86B,yBAAL,CAA+Bp5B,CAA/B,CAAb,IAAkD,CAAhE,CAAN;AACD;;AACD,aAAOiK,GAAG,GAAG,CAAN,IAAWA,GAAlB;AACD;;;WACD,0BAAiB7I,KAAjB,EAAwB;AACtB,UAAMujB,IAAI,GAAG,KAAKoO,WAAlB;AACA,UAAOxC,MAAP,GAAyB5L,IAAzB,CAAO4L,MAAP;AAAA,UAAeC,MAAf,GAAyB7L,IAAzB,CAAe6L,MAAf;AACA,UAAMsC,MAAM,GAAG,KAAK6F,SAAL,CAAev3B,KAAf,CAAf;AACA,UAAMmM,CAAC,GAAGgjB,MAAM,CAACqI,gBAAP,CAAwB9F,MAAM,CAACvlB,CAA/B,CAAV;AACA,UAAMC,CAAC,GAAGgjB,MAAM,CAACoI,gBAAP,CAAwB9F,MAAM,CAACtlB,CAA/B,CAAV;AACA,UAAM7L,CAAC,GAAGmxB,MAAM,CAACmK,OAAjB;AACA,aAAO;AACLt9B,QAAAA,KAAK,EAAEglB,IAAI,CAAChlB,KADP;AAELoK,QAAAA,KAAK,EAAE,MAAMwD,CAAN,GAAU,IAAV,GAAiBC,CAAjB,IAAsB7L,CAAC,GAAG,OAAOA,CAAV,GAAc,EAArC,IAA2C;AAF7C,OAAP;AAID;;;WACD,gBAAO0vB,IAAP,EAAa;AACX,UAAMwP,MAAM,GAAG,KAAK9N,WAAL,CAAiBnyB,IAAhC;AACA,WAAKk6B,cAAL,CAAoB+F,MAApB,EAA4B,CAA5B,EAA+BA,MAAM,CAACrhC,MAAtC,EAA8C6xB,IAA9C;AACD;;;WACD,wBAAewP,MAAf,EAAuB7+B,KAAvB,EAA8BG,KAA9B,EAAqCkvB,IAArC,EAA2C;AACzC,UAAM5hB,KAAK,GAAG4hB,IAAI,KAAK,OAAvB;AACA,+BAAyB,KAAK0B,WAA9B;AAAA,UAAOE,MAAP,sBAAOA,MAAP;AAAA,UAAeP,MAAf,sBAAeA,MAAf;AACA,UAAMmM,SAAS,GAAG,KAAKzF,yBAAL,CAA+Bp3B,KAA/B,EAAsCqvB,IAAtC,CAAlB;AACA,UAAM4I,aAAa,GAAG,KAAKI,gBAAL,CAAsBwE,SAAtB,CAAtB;AACA,UAAMC,cAAc,GAAG,KAAKA,cAAL,CAAoBzN,IAApB,EAA0B4I,aAA1B,CAAvB;AACA,UAAM/G,KAAK,GAAGD,MAAM,CAACE,IAArB;AACA,UAAMC,KAAK,GAAGV,MAAM,CAACS,IAArB;;AACA,WAAK,IAAInzB,CAAC,GAAGgC,KAAb,EAAoBhC,CAAC,GAAGgC,KAAK,GAAGG,KAAhC,EAAuCnC,CAAC,EAAxC,EAA4C;AAC1C,YAAM8gC,KAAK,GAAGD,MAAM,CAAC7gC,CAAD,CAApB;AACA,YAAM8yB,MAAM,GAAG,CAACrjB,KAAD,IAAU,KAAKkpB,SAAL,CAAe34B,CAAf,CAAzB;AACA,YAAM+uB,UAAU,GAAG,EAAnB;AACA,YAAMgS,MAAM,GAAGhS,UAAU,CAACmE,KAAD,CAAV,GAAoBzjB,KAAK,GAAGwjB,MAAM,CAAC+N,kBAAP,CAA0B,GAA1B,CAAH,GAAoC/N,MAAM,CAAC6I,gBAAP,CAAwBhJ,MAAM,CAACI,KAAD,CAA9B,CAA5E;AACA,YAAM+N,MAAM,GAAGlS,UAAU,CAACqE,KAAD,CAAV,GAAoB3jB,KAAK,GAAGijB,MAAM,CAACiM,YAAP,EAAH,GAA2BjM,MAAM,CAACoJ,gBAAP,CAAwBhJ,MAAM,CAACM,KAAD,CAA9B,CAAnE;AACArE,QAAAA,UAAU,CAACmS,IAAX,GAAkBnwB,KAAK,CAACgwB,MAAD,CAAL,IAAiBhwB,KAAK,CAACkwB,MAAD,CAAxC;;AACA,YAAInC,cAAJ,EAAoB;AAClB/P,UAAAA,UAAU,CAACluB,OAAX,GAAqB,KAAKu4B,yBAAL,CAA+Bp5B,CAA/B,EAAkC8gC,KAAK,CAACpjB,MAAN,GAAe,QAAf,GAA0B2T,IAA5D,CAArB;;AACA,cAAI5hB,KAAJ,EAAW;AACTsf,YAAAA,UAAU,CAACluB,OAAX,CAAmB+N,MAAnB,GAA4B,CAA5B;AACD;AACF;;AACD,aAAK0wB,aAAL,CAAmBwB,KAAnB,EAA0B9gC,CAA1B,EAA6B+uB,UAA7B,EAAyCsC,IAAzC;AACD;;AACD,WAAK0N,mBAAL,CAAyB9E,aAAzB,EAAwC5I,IAAxC,EAA8CwN,SAA9C;AACD;;;WACD,mCAA0Bz9B,KAA1B,EAAiCiwB,IAAjC,EAAuC;AACrC,UAAMyB,MAAM,GAAG,KAAK6F,SAAL,CAAev3B,KAAf,CAAf;;AACA,UAAIgjB,MAAM,mGAAmChjB,KAAnC,EAA0CiwB,IAA1C,CAAV;;AACA,UAAIjN,MAAM,CAACyL,OAAX,EAAoB;AAClBzL,QAAAA,MAAM,GAAG,SAAc,EAAd,EAAkBA,MAAlB,EAA0B;AAACyL,UAAAA,OAAO,EAAE;AAAV,SAA1B,CAAT;AACD;;AACD,UAAMjhB,MAAM,GAAGwV,MAAM,CAACxV,MAAtB;;AACA,UAAIyiB,IAAI,KAAK,QAAb,EAAuB;AACrBjN,QAAAA,MAAM,CAACxV,MAAP,GAAgB,CAAhB;AACD;;AACDwV,MAAAA,MAAM,CAACxV,MAAP,IAAiB,uBAAekkB,MAAM,IAAIA,MAAM,CAACmK,OAAhC,EAAyCruB,MAAzC,CAAjB;AACA,aAAOwV,MAAP;AACD;;;;EAzF4BoQ;;;AA2F/BoM,gBAAgB,CAACrjB,EAAjB,GAAsB,QAAtB;AACAqjB,gBAAgB,CAAC1iC,QAAjB,GAA4B;AAC1By4B,EAAAA,kBAAkB,EAAE,KADM;AAE1B2C,EAAAA,eAAe,EAAE,OAFS;AAG1BtK,EAAAA,UAAU,EAAE;AACVR,IAAAA,OAAO,EAAE;AACPxvB,MAAAA,IAAI,EAAE,QADC;AAEP+vB,MAAAA,UAAU,EAAE,CAAC,GAAD,EAAM,GAAN,EAAW,aAAX,EAA0B,QAA1B;AAFL;AADC;AAHc,CAA5B;AAUA6R,gBAAgB,CAACJ,SAAjB,GAA6B;AAC3B5gC,EAAAA,MAAM,EAAE;AACN2N,IAAAA,CAAC,EAAE;AACDvO,MAAAA,IAAI,EAAE;AADL,KADG;AAINwO,IAAAA,CAAC,EAAE;AACDxO,MAAAA,IAAI,EAAE;AADL;AAJG,GADmB;AAS3B8B,EAAAA,OAAO,EAAE;AACPE,IAAAA,OAAO,EAAE;AACPgqB,MAAAA,SAAS,EAAE;AACT1rB,QAAAA,KADS,mBACD;AACN,iBAAO,EAAP;AACD;AAHQ;AADJ;AADF;AATkB,CAA7B;;AAoBA,SAAS6hC,iBAAT,CAA2BC,QAA3B,EAAqCC,aAArC,EAAoDC,MAApD,EAA4D;AAC1D,MAAIC,MAAM,GAAG,CAAb;AACA,MAAIC,MAAM,GAAG,CAAb;AACA,MAAIC,OAAO,GAAG,CAAd;AACA,MAAIC,OAAO,GAAG,CAAd;;AACA,MAAIL,aAAa,GAAGM,iBAApB,EAAyB;AACvB,QAAMC,UAAU,GAAGR,QAAnB;AACA,QAAMS,QAAQ,GAAGD,UAAU,GAAGP,aAA9B;AACA,QAAMS,MAAM,GAAGv/B,IAAI,CAACw/B,GAAL,CAASH,UAAT,CAAf;AACA,QAAMI,MAAM,GAAGz/B,IAAI,CAAC0/B,GAAL,CAASL,UAAT,CAAf;AACA,QAAMM,IAAI,GAAG3/B,IAAI,CAACw/B,GAAL,CAASF,QAAT,CAAb;AACA,QAAMM,IAAI,GAAG5/B,IAAI,CAAC0/B,GAAL,CAASJ,QAAT,CAAb;;AACA,QAAMO,OAAO,GAAG,SAAVA,OAAU,CAACC,KAAD,EAAQ1f,CAAR,EAAW7gB,CAAX;AAAA,aAAiB,uBAAcugC,KAAd,EAAqBT,UAArB,EAAiCC,QAAjC,EAA2C,IAA3C,IAAmD,CAAnD,GAAuDt/B,IAAI,CAAC0H,GAAL,CAAS0Y,CAAT,EAAYA,CAAC,GAAG2e,MAAhB,EAAwBx/B,CAAxB,EAA2BA,CAAC,GAAGw/B,MAA/B,CAAxE;AAAA,KAAhB;;AACA,QAAMgB,OAAO,GAAG,SAAVA,OAAU,CAACD,KAAD,EAAQ1f,CAAR,EAAW7gB,CAAX;AAAA,aAAiB,uBAAcugC,KAAd,EAAqBT,UAArB,EAAiCC,QAAjC,EAA2C,IAA3C,IAAmD,CAAC,CAApD,GAAwDt/B,IAAI,CAACyH,GAAL,CAAS2Y,CAAT,EAAYA,CAAC,GAAG2e,MAAhB,EAAwBx/B,CAAxB,EAA2BA,CAAC,GAAGw/B,MAA/B,CAAzE;AAAA,KAAhB;;AACA,QAAMiB,IAAI,GAAGH,OAAO,CAAC,CAAD,EAAIN,MAAJ,EAAYI,IAAZ,CAApB;AACA,QAAMM,IAAI,GAAGJ,OAAO,CAACK,iBAAD,EAAUT,MAAV,EAAkBG,IAAlB,CAApB;AACA,QAAMO,IAAI,GAAGJ,OAAO,CAACz0B,iBAAD,EAAKi0B,MAAL,EAAaI,IAAb,CAApB;AACA,QAAMS,IAAI,GAAGL,OAAO,CAACz0B,oBAAK40B,iBAAN,EAAeT,MAAf,EAAuBG,IAAvB,CAApB;AACAZ,IAAAA,MAAM,GAAG,CAACgB,IAAI,GAAGG,IAAR,IAAgB,CAAzB;AACAlB,IAAAA,MAAM,GAAG,CAACgB,IAAI,GAAGG,IAAR,IAAgB,CAAzB;AACAlB,IAAAA,OAAO,GAAG,EAAEc,IAAI,GAAGG,IAAT,IAAiB,CAA3B;AACAhB,IAAAA,OAAO,GAAG,EAAEc,IAAI,GAAGG,IAAT,IAAiB,CAA3B;AACD;;AACD,SAAO;AAACpB,IAAAA,MAAM,EAANA,MAAD;AAASC,IAAAA,MAAM,EAANA,MAAT;AAAiBC,IAAAA,OAAO,EAAPA,OAAjB;AAA0BC,IAAAA,OAAO,EAAPA;AAA1B,GAAP;AACD;;IACKrkC;;;;;AACJ,8BAAYsD,KAAZ,EAAmB2wB,YAAnB,EAAiC;AAAA;;AAAA;;AAC/B,gCAAM3wB,KAAN,EAAa2wB,YAAb;AACA,WAAK8D,mBAAL,GAA2B,IAA3B;AACA,WAAKwN,WAAL,GAAmBrjC,SAAnB;AACA,WAAKsjC,WAAL,GAAmBtjC,SAAnB;AACA,WAAKkiC,OAAL,GAAeliC,SAAf;AACA,WAAKmiC,OAAL,GAAeniC,SAAf;AAN+B;AAOhC;;;;WACD,sBAAa,CAAE;;;WACf,eAAMyC,KAAN,EAAaG,KAAb,EAAoB;AAClB,UAAMvB,IAAI,GAAG,KAAK60B,UAAL,GAAkB70B,IAA/B;AACA,UAAM+jB,IAAI,GAAG,KAAKoO,WAAlB;;AACA,UAAI,KAAK+B,QAAL,KAAkB,KAAtB,EAA6B;AAC3BnQ,QAAAA,IAAI,CAACoP,OAAL,GAAenzB,IAAf;AACD,OAFD,MAEO;AACL,YAAIkiC,MAAM,GAAG,gBAAC9iC,CAAD;AAAA,iBAAO,CAACY,IAAI,CAACZ,CAAD,CAAZ;AAAA,SAAb;;AACA,YAAI,uBAASY,IAAI,CAACoB,KAAD,CAAb,CAAJ,EAA2B;AACzB,mCAAwB,KAAK8yB,QAA7B,CAAOpkB,GAAP;AAAA,cAAOA,GAAP,mCAAa,OAAb;;AACAoyB,UAAAA,MAAM,GAAG,gBAAC9iC,CAAD;AAAA,mBAAO,CAAC,uBAAiBY,IAAI,CAACZ,CAAD,CAArB,EAA0B0Q,GAA1B,CAAR;AAAA,WAAT;AACD;;AACD,YAAI1Q,CAAJ,EAAOgxB,IAAP;;AACA,aAAKhxB,CAAC,GAAGgC,KAAJ,EAAWgvB,IAAI,GAAGhvB,KAAK,GAAGG,KAA/B,EAAsCnC,CAAC,GAAGgxB,IAA1C,EAAgD,EAAEhxB,CAAlD,EAAqD;AACnD2kB,UAAAA,IAAI,CAACoP,OAAL,CAAa/zB,CAAb,IAAkB8iC,MAAM,CAAC9iC,CAAD,CAAxB;AACD;AACF;AACF;;;WACD,wBAAe;AACb,aAAO,uBAAU,KAAKa,OAAL,CAAaugC,QAAb,GAAwB,EAAlC,CAAP;AACD;;;WACD,6BAAoB;AAClB,aAAO,uBAAU,KAAKvgC,OAAL,CAAawgC,aAAvB,CAAP;AACD;;;WACD,+BAAsB;AACpB,UAAIr3B,GAAG,GAAG23B,iBAAV;AACA,UAAI13B,GAAG,GAAG,CAAC03B,iBAAX;;AACA,WAAK,IAAI3hC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKW,KAAL,CAAWC,IAAX,CAAgBvB,QAAhB,CAAyBG,MAA7C,EAAqD,EAAEQ,CAAvD,EAA0D;AACxD,YAAI,KAAKW,KAAL,CAAWoiC,gBAAX,CAA4B/iC,CAA5B,CAAJ,EAAoC;AAClC,cAAM8a,UAAU,GAAG,KAAKna,KAAL,CAAW41B,cAAX,CAA0Bv2B,CAA1B,EAA6B8a,UAAhD;;AACA,cAAMsmB,QAAQ,GAAGtmB,UAAU,CAACkoB,YAAX,EAAjB;;AACA,cAAM3B,aAAa,GAAGvmB,UAAU,CAACmoB,iBAAX,EAAtB;;AACAj5B,UAAAA,GAAG,GAAGzH,IAAI,CAACyH,GAAL,CAASA,GAAT,EAAco3B,QAAd,CAAN;AACAn3B,UAAAA,GAAG,GAAG1H,IAAI,CAAC0H,GAAL,CAASA,GAAT,EAAcm3B,QAAQ,GAAGC,aAAzB,CAAN;AACD;AACF;;AACD,aAAO;AACLD,QAAAA,QAAQ,EAAEp3B,GADL;AAELq3B,QAAAA,aAAa,EAAEp3B,GAAG,GAAGD;AAFhB,OAAP;AAID;;;WACD,gBAAOqnB,IAAP,EAAa;AACX,UAAM1wB,KAAK,GAAG,KAAKA,KAAnB;AACA,UAAOs4B,SAAP,GAAoBt4B,KAApB,CAAOs4B,SAAP;AACA,UAAMtU,IAAI,GAAG,KAAKoO,WAAlB;AACA,UAAMmQ,IAAI,GAAGve,IAAI,CAAC/jB,IAAlB;AACA,UAAMuiC,OAAO,GAAG,KAAKC,iBAAL,KAA2B,KAAKC,YAAL,CAAkBH,IAAlB,CAA3B,GAAqD,KAAKriC,OAAL,CAAasiC,OAAlF;AACA,UAAMG,OAAO,GAAG/gC,IAAI,CAAC0H,GAAL,CAAS,CAAC1H,IAAI,CAACyH,GAAL,CAASivB,SAAS,CAACt1B,KAAnB,EAA0Bs1B,SAAS,CAACv1B,MAApC,IAA8Cy/B,OAA/C,IAA0D,CAAnE,EAAsE,CAAtE,CAAhB;AACA,UAAM7B,MAAM,GAAG/+B,IAAI,CAACyH,GAAL,CAAS,uBAAa,KAAKnJ,OAAL,CAAaygC,MAA1B,EAAkCgC,OAAlC,CAAT,EAAqD,CAArD,CAAf;;AACA,UAAMC,WAAW,GAAG,KAAKC,cAAL,CAAoB,KAAKpiC,KAAzB,CAApB;;AACA,kCAAkC,KAAKqiC,mBAAL,EAAlC;AAAA,UAAOpC,aAAP,yBAAOA,aAAP;AAAA,UAAsBD,QAAtB,yBAAsBA,QAAtB;;AACA,+BAA2CD,iBAAiB,CAACC,QAAD,EAAWC,aAAX,EAA0BC,MAA1B,CAA5D;AAAA,UAAOC,MAAP,sBAAOA,MAAP;AAAA,UAAeC,MAAf,sBAAeA,MAAf;AAAA,UAAuBC,OAAvB,sBAAuBA,OAAvB;AAAA,UAAgCC,OAAhC,sBAAgCA,OAAhC;;AACA,UAAMgC,QAAQ,GAAG,CAACzK,SAAS,CAACt1B,KAAV,GAAkBw/B,OAAnB,IAA8B5B,MAA/C;AACA,UAAMoC,SAAS,GAAG,CAAC1K,SAAS,CAACv1B,MAAV,GAAmBy/B,OAApB,IAA+B3B,MAAjD;AACA,UAAMoC,SAAS,GAAGrhC,IAAI,CAAC0H,GAAL,CAAS1H,IAAI,CAACyH,GAAL,CAAS05B,QAAT,EAAmBC,SAAnB,IAAgC,CAAzC,EAA4C,CAA5C,CAAlB;AACA,UAAMd,WAAW,GAAG,uBAAY,KAAKhiC,OAAL,CAAa+N,MAAzB,EAAiCg1B,SAAjC,CAApB;AACA,UAAMhB,WAAW,GAAGrgC,IAAI,CAAC0H,GAAL,CAAS44B,WAAW,GAAGvB,MAAvB,EAA+B,CAA/B,CAApB;;AACA,UAAMuC,YAAY,GAAG,CAAChB,WAAW,GAAGD,WAAf,IAA8B,KAAKkB,6BAAL,EAAnD;;AACA,WAAKrC,OAAL,GAAeA,OAAO,GAAGoB,WAAzB;AACA,WAAKnB,OAAL,GAAeA,OAAO,GAAGmB,WAAzB;AACAle,MAAAA,IAAI,CAACof,KAAL,GAAa,KAAKC,cAAL,EAAb;AACA,WAAKnB,WAAL,GAAmBA,WAAW,GAAGgB,YAAY,GAAG,KAAKI,oBAAL,CAA0B,KAAK7iC,KAA/B,CAAhD;AACA,WAAKwhC,WAAL,GAAmBrgC,IAAI,CAAC0H,GAAL,CAAS,KAAK44B,WAAL,GAAmBgB,YAAY,GAAGN,WAA3C,EAAwD,CAAxD,CAAnB;AACA,WAAKzI,cAAL,CAAoBoI,IAApB,EAA0B,CAA1B,EAA6BA,IAAI,CAAC1jC,MAAlC,EAA0C6xB,IAA1C;AACD;;;WACD,wBAAerxB,CAAf,EAAkByP,KAAlB,EAAyB;AACvB,UAAMnF,IAAI,GAAG,KAAKzJ,OAAlB;AACA,UAAM8jB,IAAI,GAAG,KAAKoO,WAAlB;;AACA,UAAMsO,aAAa,GAAG,KAAK4B,iBAAL,EAAtB;;AACA,UAAKxzB,KAAK,IAAInF,IAAI,CAACokB,SAAL,CAAewV,aAAzB,IAA2C,CAAC,KAAKvjC,KAAL,CAAWq/B,iBAAX,CAA6BhgC,CAA7B,CAA5C,IAA+E2kB,IAAI,CAACoP,OAAL,CAAa/zB,CAAb,MAAoB,IAAnG,IAA2G2kB,IAAI,CAAC/jB,IAAL,CAAUZ,CAAV,EAAas0B,MAA5H,EAAoI;AAClI,eAAO,CAAP;AACD;;AACD,aAAO,KAAK6P,sBAAL,CAA4Bxf,IAAI,CAACoP,OAAL,CAAa/zB,CAAb,IAAkBqhC,aAAlB,GAAkCM,iBAA9D,CAAP;AACD;;;WACD,wBAAeuB,IAAf,EAAqBlhC,KAArB,EAA4BG,KAA5B,EAAmCkvB,IAAnC,EAAyC;AACvC,UAAM5hB,KAAK,GAAG4hB,IAAI,KAAK,OAAvB;AACA,UAAM1wB,KAAK,GAAG,KAAKA,KAAnB;AACA,UAAMs4B,SAAS,GAAGt4B,KAAK,CAACs4B,SAAxB;AACA,UAAM3uB,IAAI,GAAG3J,KAAK,CAACE,OAAnB;AACA,UAAMujC,aAAa,GAAG95B,IAAI,CAACokB,SAA3B;AACA,UAAM2V,OAAO,GAAG,CAACpL,SAAS,CAACz1B,IAAV,GAAiBy1B,SAAS,CAACx1B,KAA5B,IAAqC,CAArD;AACA,UAAM6gC,OAAO,GAAG,CAACrL,SAAS,CAAC31B,GAAV,GAAgB21B,SAAS,CAAC11B,MAA3B,IAAqC,CAArD;AACA,UAAMghC,YAAY,GAAG90B,KAAK,IAAI20B,aAAa,CAACG,YAA5C;AACA,UAAM3B,WAAW,GAAG2B,YAAY,GAAG,CAAH,GAAO,KAAK3B,WAA5C;AACA,UAAMC,WAAW,GAAG0B,YAAY,GAAG,CAAH,GAAO,KAAK1B,WAA5C;AACA,UAAMhE,SAAS,GAAG,KAAKzF,yBAAL,CAA+Bp3B,KAA/B,EAAsCqvB,IAAtC,CAAlB;AACA,UAAM4I,aAAa,GAAG,KAAKI,gBAAL,CAAsBwE,SAAtB,CAAtB;AACA,UAAMC,cAAc,GAAG,KAAKA,cAAL,CAAoBzN,IAApB,EAA0B4I,aAA1B,CAAvB;;AACA,UAAI2H,UAAU,GAAG,KAAKoB,YAAL,EAAjB;;AACA,UAAIhjC,CAAJ;;AACA,WAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgC,KAAhB,EAAuB,EAAEhC,CAAzB,EAA4B;AAC1B4hC,QAAAA,UAAU,IAAI,KAAK4C,cAAL,CAAoBxkC,CAApB,EAAuByP,KAAvB,CAAd;AACD;;AACD,WAAKzP,CAAC,GAAGgC,KAAT,EAAgBhC,CAAC,GAAGgC,KAAK,GAAGG,KAA5B,EAAmC,EAAEnC,CAArC,EAAwC;AACtC,YAAMqhC,aAAa,GAAG,KAAKmD,cAAL,CAAoBxkC,CAApB,EAAuByP,KAAvB,CAAtB;;AACA,YAAMg1B,GAAG,GAAGvB,IAAI,CAACljC,CAAD,CAAhB;AACA,YAAM+uB,UAAU,GAAG;AACjBxhB,UAAAA,CAAC,EAAE82B,OAAO,GAAG,KAAK5C,OADD;AAEjBj0B,UAAAA,CAAC,EAAE82B,OAAO,GAAG,KAAK5C,OAFD;AAGjBE,UAAAA,UAAU,EAAVA,UAHiB;AAIjBC,UAAAA,QAAQ,EAAED,UAAU,GAAGP,aAJN;AAKjBA,UAAAA,aAAa,EAAbA,aALiB;AAMjBwB,UAAAA,WAAW,EAAXA,WANiB;AAOjBD,UAAAA,WAAW,EAAXA;AAPiB,SAAnB;;AASA,YAAI9D,cAAJ,EAAoB;AAClB/P,UAAAA,UAAU,CAACluB,OAAX,GAAqBo5B,aAAa,IAAI,KAAKb,yBAAL,CAA+Bp5B,CAA/B,EAAkCykC,GAAG,CAAC/mB,MAAJ,GAAa,QAAb,GAAwB2T,IAA1D,CAAtC;AACD;;AACDuQ,QAAAA,UAAU,IAAIP,aAAd;AACA,aAAK/B,aAAL,CAAmBmF,GAAnB,EAAwBzkC,CAAxB,EAA2B+uB,UAA3B,EAAuCsC,IAAvC;AACD;;AACD,WAAK0N,mBAAL,CAAyB9E,aAAzB,EAAwC5I,IAAxC,EAA8CwN,SAA9C;AACD;;;WACD,0BAAiB;AACf,UAAMla,IAAI,GAAG,KAAKoO,WAAlB;AACA,UAAM2R,QAAQ,GAAG/f,IAAI,CAAC/jB,IAAtB;AACA,UAAImjC,KAAK,GAAG,CAAZ;AACA,UAAI/jC,CAAJ;;AACA,WAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG0kC,QAAQ,CAACllC,MAAzB,EAAiCQ,CAAC,EAAlC,EAAsC;AACpC,YAAM+J,KAAK,GAAG4a,IAAI,CAACoP,OAAL,CAAa/zB,CAAb,CAAd;;AACA,YAAI+J,KAAK,KAAK,IAAV,IAAkB,CAACgH,KAAK,CAAChH,KAAD,CAAxB,IAAmC,KAAKpJ,KAAL,CAAWq/B,iBAAX,CAA6BhgC,CAA7B,CAAnC,IAAsE,CAAC0kC,QAAQ,CAAC1kC,CAAD,CAAR,CAAYs0B,MAAvF,EAA+F;AAC7FyP,UAAAA,KAAK,IAAIxhC,IAAI,CAACs5B,GAAL,CAAS9xB,KAAT,CAAT;AACD;AACF;;AACD,aAAOg6B,KAAP;AACD;;;WACD,gCAAuBh6B,KAAvB,EAA8B;AAC5B,UAAMg6B,KAAK,GAAG,KAAKhR,WAAL,CAAiBgR,KAA/B;;AACA,UAAIA,KAAK,GAAG,CAAR,IAAa,CAAChzB,KAAK,CAAChH,KAAD,CAAvB,EAAgC;AAC9B,eAAO43B,qBAAOp/B,IAAI,CAACs5B,GAAL,CAAS9xB,KAAT,IAAkBg6B,KAAzB,CAAP;AACD;;AACD,aAAO,CAAP;AACD;;;WACD,0BAAiB3iC,KAAjB,EAAwB;AACtB,UAAMujB,IAAI,GAAG,KAAKoO,WAAlB;AACA,UAAMpyB,KAAK,GAAG,KAAKA,KAAnB;AACA,UAAMzB,MAAM,GAAGyB,KAAK,CAACC,IAAN,CAAW1B,MAAX,IAAqB,EAApC;AACA,UAAM6K,KAAK,GAAG,uBAAa4a,IAAI,CAACoP,OAAL,CAAa3yB,KAAb,CAAb,EAAkCT,KAAK,CAACE,OAAN,CAAc8jC,MAAhD,CAAd;AACA,aAAO;AACLhlC,QAAAA,KAAK,EAAET,MAAM,CAACkC,KAAD,CAAN,IAAiB,EADnB;AAEL2I,QAAAA,KAAK,EAALA;AAFK,OAAP;AAID;;;WACD,2BAAkBm5B,IAAlB,EAAwB;AACtB,UAAIj5B,GAAG,GAAG,CAAV;AACA,UAAMtJ,KAAK,GAAG,KAAKA,KAAnB;AACA,UAAIX,CAAJ,EAAOgxB,IAAP,EAAarM,IAAb,EAAmB7J,UAAnB,EAA+Bja,OAA/B;;AACA,UAAI,CAACqiC,IAAL,EAAW;AACT,aAAKljC,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAGrwB,KAAK,CAACC,IAAN,CAAWvB,QAAX,CAAoBG,MAAvC,EAA+CQ,CAAC,GAAGgxB,IAAnD,EAAyD,EAAEhxB,CAA3D,EAA8D;AAC5D,cAAIW,KAAK,CAACoiC,gBAAN,CAAuB/iC,CAAvB,CAAJ,EAA+B;AAC7B2kB,YAAAA,IAAI,GAAGhkB,KAAK,CAAC41B,cAAN,CAAqBv2B,CAArB,CAAP;AACAkjC,YAAAA,IAAI,GAAGve,IAAI,CAAC/jB,IAAZ;AACAka,YAAAA,UAAU,GAAG6J,IAAI,CAAC7J,UAAlB;AACA;AACD;AACF;AACF;;AACD,UAAI,CAACooB,IAAL,EAAW;AACT,eAAO,CAAP;AACD;;AACD,WAAKljC,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAGkS,IAAI,CAAC1jC,MAAxB,EAAgCQ,CAAC,GAAGgxB,IAApC,EAA0C,EAAEhxB,CAA5C,EAA+C;AAC7Ca,QAAAA,OAAO,GAAGia,UAAU,CAACse,yBAAX,CAAqCp5B,CAArC,CAAV;;AACA,YAAIa,OAAO,CAAC+jC,WAAR,KAAwB,OAA5B,EAAqC;AACnC36B,UAAAA,GAAG,GAAG1H,IAAI,CAAC0H,GAAL,CAASA,GAAT,EAAcpJ,OAAO,CAACgkC,WAAR,IAAuB,CAArC,EAAwChkC,OAAO,CAACikC,gBAAR,IAA4B,CAApE,CAAN;AACD;AACF;;AACD,aAAO76B,GAAP;AACD;;;WACD,sBAAai5B,IAAb,EAAmB;AACjB,UAAIj5B,GAAG,GAAG,CAAV;;AACA,WAAK,IAAIjK,CAAC,GAAG,CAAR,EAAWgxB,IAAI,GAAGkS,IAAI,CAAC1jC,MAA5B,EAAoCQ,CAAC,GAAGgxB,IAAxC,EAA8C,EAAEhxB,CAAhD,EAAmD;AACjD,YAAMa,OAAO,GAAG,KAAKu4B,yBAAL,CAA+Bp5B,CAA/B,CAAhB;AACAiK,QAAAA,GAAG,GAAG1H,IAAI,CAAC0H,GAAL,CAASA,GAAT,EAAcpJ,OAAO,CAAC0H,MAAR,IAAkB,CAAhC,EAAmC1H,OAAO,CAACkkC,WAAR,IAAuB,CAA1D,CAAN;AACD;;AACD,aAAO96B,GAAP;AACD;;;WACD,8BAAqBqnB,YAArB,EAAmC;AACjC,UAAI0T,gBAAgB,GAAG,CAAvB;;AACA,WAAK,IAAIhlC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGsxB,YAApB,EAAkC,EAAEtxB,CAApC,EAAuC;AACrC,YAAI,KAAKW,KAAL,CAAWoiC,gBAAX,CAA4B/iC,CAA5B,CAAJ,EAAoC;AAClCglC,UAAAA,gBAAgB,IAAI,KAAKxB,cAAL,CAAoBxjC,CAApB,CAApB;AACD;AACF;;AACD,aAAOglC,gBAAP;AACD;;;WACD,wBAAe1T,YAAf,EAA6B;AAC3B,aAAO/uB,IAAI,CAAC0H,GAAL,CAAS,uBAAe,KAAKtJ,KAAL,CAAWC,IAAX,CAAgBvB,QAAhB,CAAyBiyB,YAAzB,EAAuC7yB,MAAtD,EAA8D,CAA9D,CAAT,EAA2E,CAA3E,CAAP;AACD;;;WACD,yCAAgC;AAC9B,aAAO,KAAKwlC,oBAAL,CAA0B,KAAKtjC,KAAL,CAAWC,IAAX,CAAgBvB,QAAhB,CAAyBG,MAAnD,KAA8D,CAArE;AACD;;;;EAvM8Bg1B;;;AAyMjCn3B,kBAAkB,CAACkgB,EAAnB,GAAwB,UAAxB;AACAlgB,kBAAkB,CAACa,QAAnB,GAA8B;AAC5By4B,EAAAA,kBAAkB,EAAE,KADQ;AAE5B2C,EAAAA,eAAe,EAAE,KAFW;AAG5B5K,EAAAA,SAAS,EAAE;AACTwV,IAAAA,aAAa,EAAE,IADN;AAETK,IAAAA,YAAY,EAAE;AAFL,GAHiB;AAO5BvV,EAAAA,UAAU,EAAE;AACVR,IAAAA,OAAO,EAAE;AACPxvB,MAAAA,IAAI,EAAE,QADC;AAEP+vB,MAAAA,UAAU,EAAE,CAAC,eAAD,EAAkB,UAAlB,EAA8B,aAA9B,EAA6C,aAA7C,EAA4D,YAA5D,EAA0E,GAA1E,EAA+E,GAA/E,EAAoF,QAApF,EAA8F,aAA9F,EAA6G,SAA7G;AAFL;AADC,GAPgB;AAa5BuS,EAAAA,MAAM,EAAE,KAboB;AAc5BF,EAAAA,QAAQ,EAAE,CAdkB;AAe5BC,EAAAA,aAAa,EAAE,GAfa;AAgB5BzyB,EAAAA,MAAM,EAAE,MAhBoB;AAiB5Bu0B,EAAAA,OAAO,EAAE,CAjBmB;AAkB5BnN,EAAAA,SAAS,EAAE;AAlBiB,CAA9B;AAoBA34B,kBAAkB,CAAC4nC,WAAnB,GAAiC;AAC/BnW,EAAAA,WAAW,EAAE,qBAACxP,IAAD;AAAA,WAAUA,IAAI,KAAK,SAAnB;AAAA,GADkB;AAE/BuP,EAAAA,UAAU,EAAE,oBAACvP,IAAD;AAAA,WAAUA,IAAI,KAAK,SAAnB;AAAA;AAFmB,CAAjC;AAIAjiB,kBAAkB,CAACmjC,SAAnB,GAA+B;AAC7B0E,EAAAA,WAAW,EAAE,CADgB;AAE7BpkC,EAAAA,OAAO,EAAE;AACPC,IAAAA,MAAM,EAAE;AACN7B,MAAAA,MAAM,EAAE;AACNimC,QAAAA,cADM,0BACSxkC,KADT,EACgB;AACpB,cAAMC,IAAI,GAAGD,KAAK,CAACC,IAAnB;;AACA,cAAIA,IAAI,CAAC1B,MAAL,CAAYM,MAAZ,IAAsBoB,IAAI,CAACvB,QAAL,CAAcG,MAAxC,EAAgD;AAC9C,gBAAgB4lC,UAAhB,GAA+BzkC,KAAK,CAACI,MAAN,CAAaF,OAA5C,CAAO3B,MAAP,CAAgBkmC,UAAhB;AACA,mBAAOxkC,IAAI,CAAC1B,MAAL,CAAYY,GAAZ,CAAgB,UAACH,KAAD,EAAQK,CAAR,EAAc;AACnC,kBAAM2kB,IAAI,GAAGhkB,KAAK,CAAC41B,cAAN,CAAqB,CAArB,CAAb;AACA,kBAAM3yB,KAAK,GAAG+gB,IAAI,CAAC7J,UAAL,CAAgBsf,QAAhB,CAAyBp6B,CAAzB,CAAd;AACA,qBAAO;AACLN,gBAAAA,IAAI,EAAEC,KADD;AAEL0lC,gBAAAA,SAAS,EAAEzhC,KAAK,CAACtD,eAFZ;AAGLglC,gBAAAA,WAAW,EAAE1hC,KAAK,CAAC2hC,WAHd;AAILC,gBAAAA,SAAS,EAAE5hC,KAAK,CAACihC,WAJZ;AAKLO,gBAAAA,UAAU,EAAEA,UALP;AAML9Q,gBAAAA,MAAM,EAAE,CAAC3zB,KAAK,CAACq/B,iBAAN,CAAwBhgC,CAAxB,CANJ;AAOLoB,gBAAAA,KAAK,EAAEpB;AAPF,eAAP;AASD,aAZM,CAAP;AAaD;;AACD,iBAAO,EAAP;AACD;AApBK,OADF;AAuBNylC,MAAAA,OAvBM,mBAuBEpjC,CAvBF,EAuBKqjC,UAvBL,EAuBiB3kC,MAvBjB,EAuByB;AAC7BA,QAAAA,MAAM,CAACJ,KAAP,CAAaglC,oBAAb,CAAkCD,UAAU,CAACtkC,KAA7C;AACAL,QAAAA,MAAM,CAACJ,KAAP,CAAaga,MAAb;AACD;AA1BK,KADD;AA6BP3Z,IAAAA,OAAO,EAAE;AACPgqB,MAAAA,SAAS,EAAE;AACT1rB,QAAAA,KADS,mBACD;AACN,iBAAO,EAAP;AACD,SAHQ;AAITK,QAAAA,KAJS,iBAIHimC,WAJG,EAIU;AACjB,cAAIC,SAAS,GAAGD,WAAW,CAACjmC,KAA5B;AACA,cAAMoK,KAAK,GAAG,OAAO67B,WAAW,CAACE,cAAjC;;AACA,cAAI,uBAAQD,SAAR,CAAJ,EAAwB;AACtBA,YAAAA,SAAS,GAAGA,SAAS,CAACE,KAAV,EAAZ;AACAF,YAAAA,SAAS,CAAC,CAAD,CAAT,IAAgB97B,KAAhB;AACD,WAHD,MAGO;AACL87B,YAAAA,SAAS,IAAI97B,KAAb;AACD;;AACD,iBAAO87B,SAAP;AACD;AAdQ;AADJ;AA7BF;AAFoB,CAA/B;;IAoDMpoC;;;;;;;;;;;;;WACJ,sBAAa;AACX,WAAK23B,mBAAL,GAA2B,IAA3B;;AACA;AACD;;;WACD,gBAAO/D,IAAP,EAAa;AACX,UAAM1M,IAAI,GAAG,KAAKoO,WAAlB;AACA,UAAgBiT,IAAhB,GAAqDrhB,IAArD,CAAO5kB,OAAP;AAAA,uBAAqD4kB,IAArD,CAAsB/jB,IAAtB;AAAA,UAA4BigC,MAA5B,2BAAqC,EAArC;AAAA,UAAyCoF,QAAzC,GAAqDthB,IAArD,CAAyCshB,QAAzC;AACA,UAAMC,kBAAkB,GAAG,KAAKvlC,KAAL,CAAWu5B,mBAAtC;;AACA,kCAAqBiM,+BAA+B,CAACxhB,IAAD,EAAOkc,MAAP,EAAeqF,kBAAf,CAApD;AAAA,UAAKlkC,KAAL,yBAAKA,KAAL;AAAA,UAAYG,KAAZ,yBAAYA,KAAZ;;AACA,WAAK+yB,UAAL,GAAkBlzB,KAAlB;AACA,WAAKmzB,UAAL,GAAkBhzB,KAAlB;;AACA,UAAIikC,kBAAkB,CAACzhB,IAAD,CAAtB,EAA8B;AAC5B3iB,QAAAA,KAAK,GAAG,CAAR;AACAG,QAAAA,KAAK,GAAG0+B,MAAM,CAACrhC,MAAf;AACD;;AACDwmC,MAAAA,IAAI,CAAC5W,MAAL,GAAc,KAAKzuB,KAAnB;AACAqlC,MAAAA,IAAI,CAACK,aAAL,GAAqB,KAAKjlC,KAA1B;AACA4kC,MAAAA,IAAI,CAACM,UAAL,GAAkB,CAAC,CAACL,QAAQ,CAACK,UAA7B;AACAN,MAAAA,IAAI,CAACnF,MAAL,GAAcA,MAAd;AACA,UAAMhgC,OAAO,GAAG,KAAKs4B,4BAAL,CAAkC9H,IAAlC,CAAhB;;AACA,UAAI,CAAC,KAAKxwB,OAAL,CAAa0lC,QAAlB,EAA4B;AAC1B1lC,QAAAA,OAAO,CAACgkC,WAAR,GAAsB,CAAtB;AACD;;AACDhkC,MAAAA,OAAO,CAAC2lC,OAAR,GAAkB,KAAK3lC,OAAL,CAAa2lC,OAA/B;AACA,WAAKlH,aAAL,CAAmB0G,IAAnB,EAAyBzmC,SAAzB,EAAoC;AAClCknC,QAAAA,QAAQ,EAAE,CAACP,kBADuB;AAElCrlC,QAAAA,OAAO,EAAPA;AAFkC,OAApC,EAGGwwB,IAHH;AAIA,WAAKyJ,cAAL,CAAoB+F,MAApB,EAA4B7+B,KAA5B,EAAmCG,KAAnC,EAA0CkvB,IAA1C;AACD;;;WACD,wBAAewP,MAAf,EAAuB7+B,KAAvB,EAA8BG,KAA9B,EAAqCkvB,IAArC,EAA2C;AACzC,UAAM5hB,KAAK,GAAG4hB,IAAI,KAAK,OAAvB;AACA,+BAA6C,KAAK0B,WAAlD;AAAA,UAAOE,MAAP,sBAAOA,MAAP;AAAA,UAAeP,MAAf,sBAAeA,MAAf;AAAA,UAAuB6B,QAAvB,sBAAuBA,QAAvB;AAAA,UAAiC0R,QAAjC,sBAAiCA,QAAjC;AACA,UAAMpH,SAAS,GAAG,KAAKzF,yBAAL,CAA+Bp3B,KAA/B,EAAsCqvB,IAAtC,CAAlB;AACA,UAAM4I,aAAa,GAAG,KAAKI,gBAAL,CAAsBwE,SAAtB,CAAtB;AACA,UAAMC,cAAc,GAAG,KAAKA,cAAL,CAAoBzN,IAApB,EAA0B4I,aAA1B,CAAvB;AACA,UAAM/G,KAAK,GAAGD,MAAM,CAACE,IAArB;AACA,UAAMC,KAAK,GAAGV,MAAM,CAACS,IAArB;AACA,2BAA4B,KAAKtyB,OAAjC;AAAA,UAAO6lC,QAAP,kBAAOA,QAAP;AAAA,UAAiBF,OAAjB,kBAAiBA,OAAjB;AACA,UAAMG,YAAY,GAAG,uBAASD,QAAT,IAAqBA,QAArB,GAAgC3gB,MAAM,CAACoM,iBAA5D;AACA,UAAMyU,YAAY,GAAG,KAAKjmC,KAAL,CAAWu5B,mBAAX,IAAkCzqB,KAAlC,IAA2C4hB,IAAI,KAAK,MAAzE;AACA,UAAIwV,UAAU,GAAG7kC,KAAK,GAAG,CAAR,IAAa,KAAK22B,SAAL,CAAe32B,KAAK,GAAG,CAAvB,CAA9B;;AACA,WAAK,IAAIhC,CAAC,GAAGgC,KAAb,EAAoBhC,CAAC,GAAGgC,KAAK,GAAGG,KAAhC,EAAuC,EAAEnC,CAAzC,EAA4C;AAC1C,YAAM8gC,KAAK,GAAGD,MAAM,CAAC7gC,CAAD,CAApB;AACA,YAAM8yB,MAAM,GAAG,KAAK6F,SAAL,CAAe34B,CAAf,CAAf;AACA,YAAM+uB,UAAU,GAAG6X,YAAY,GAAG9F,KAAH,GAAW,EAA1C;AACA,YAAMgG,QAAQ,GAAG,uBAAchU,MAAM,CAACM,KAAD,CAApB,CAAjB;AACA,YAAM2N,MAAM,GAAGhS,UAAU,CAACmE,KAAD,CAAV,GAAoBD,MAAM,CAAC6I,gBAAP,CAAwBhJ,MAAM,CAACI,KAAD,CAA9B,EAAuClzB,CAAvC,CAAnC;AACA,YAAMihC,MAAM,GAAGlS,UAAU,CAACqE,KAAD,CAAV,GAAoB3jB,KAAK,IAAIq3B,QAAT,GAAoBpU,MAAM,CAACiM,YAAP,EAApB,GAA4CjM,MAAM,CAACoJ,gBAAP,CAAwBvH,QAAQ,GAAG,KAAKtD,UAAL,CAAgByB,MAAhB,EAAwBI,MAAxB,EAAgCyB,QAAhC,CAAH,GAA+CzB,MAAM,CAACM,KAAD,CAArF,EAA8FpzB,CAA9F,CAA/E;AACA+uB,QAAAA,UAAU,CAACmS,IAAX,GAAkBnwB,KAAK,CAACgwB,MAAD,CAAL,IAAiBhwB,KAAK,CAACkwB,MAAD,CAAtB,IAAkC6F,QAApD;AACA/X,QAAAA,UAAU,CAACrlB,IAAX,GAAkB1J,CAAC,GAAG,CAAJ,IAAU8yB,MAAM,CAACI,KAAD,CAAN,GAAgB2T,UAAU,CAAC3T,KAAD,CAA3B,GAAsCyT,YAAjE;;AACA,YAAIH,OAAJ,EAAa;AACXzX,UAAAA,UAAU,CAAC+D,MAAX,GAAoBA,MAApB;AACA/D,UAAAA,UAAU,CAAC8E,GAAX,GAAiBoS,QAAQ,CAACrlC,IAAT,CAAcZ,CAAd,CAAjB;AACD;;AACD,YAAI8+B,cAAJ,EAAoB;AAClB/P,UAAAA,UAAU,CAACluB,OAAX,GAAqBo5B,aAAa,IAAI,KAAKb,yBAAL,CAA+Bp5B,CAA/B,EAAkC8gC,KAAK,CAACpjB,MAAN,GAAe,QAAf,GAA0B2T,IAA5D,CAAtC;AACD;;AACD,YAAI,CAACuV,YAAL,EAAmB;AACjB,eAAKtH,aAAL,CAAmBwB,KAAnB,EAA0B9gC,CAA1B,EAA6B+uB,UAA7B,EAAyCsC,IAAzC;AACD;;AACDwV,QAAAA,UAAU,GAAG/T,MAAb;AACD;;AACD,WAAKiM,mBAAL,CAAyB9E,aAAzB,EAAwC5I,IAAxC,EAA8CwN,SAA9C;AACD;;;WACD,0BAAiB;AACf,UAAMla,IAAI,GAAG,KAAKoO,WAAlB;AACA,UAAMhzB,OAAO,GAAG4kB,IAAI,CAAC5kB,OAArB;AACA,UAAMwO,MAAM,GAAGxO,OAAO,CAACc,OAAR,IAAmBd,OAAO,CAACc,OAAR,CAAgBgkC,WAAnC,IAAkD,CAAjE;AACA,UAAMjkC,IAAI,GAAG+jB,IAAI,CAAC/jB,IAAL,IAAa,EAA1B;;AACA,UAAI,CAACA,IAAI,CAACpB,MAAV,EAAkB;AAChB,eAAO+O,MAAP;AACD;;AACD,UAAMw4B,UAAU,GAAGnmC,IAAI,CAAC,CAAD,CAAJ,CAAQtC,IAAR,CAAa,KAAK86B,yBAAL,CAA+B,CAA/B,CAAb,CAAnB;AACA,UAAM4N,SAAS,GAAGpmC,IAAI,CAACA,IAAI,CAACpB,MAAL,GAAc,CAAf,CAAJ,CAAsBlB,IAAtB,CAA2B,KAAK86B,yBAAL,CAA+Bx4B,IAAI,CAACpB,MAAL,GAAc,CAA7C,CAA3B,CAAlB;AACA,aAAO+C,IAAI,CAAC0H,GAAL,CAASsE,MAAT,EAAiBw4B,UAAjB,EAA6BC,SAA7B,IAA0C,CAAjD;AACD;;;WACD,gBAAO;AACL,UAAMriB,IAAI,GAAG,KAAKoO,WAAlB;AACApO,MAAAA,IAAI,CAAC5kB,OAAL,CAAaknC,mBAAb,CAAiC,KAAKtmC,KAAL,CAAWs4B,SAA5C,EAAuDtU,IAAI,CAACsO,MAAL,CAAYE,IAAnE;;AACA;AACD;;;;EAlF0BqB;;;AAoF7B/2B,cAAc,CAAC8f,EAAf,GAAoB,MAApB;AACA9f,cAAc,CAACS,QAAf,GAA0B;AACxBy4B,EAAAA,kBAAkB,EAAE,MADI;AAExB2C,EAAAA,eAAe,EAAE,OAFO;AAGxBiN,EAAAA,QAAQ,EAAE,IAHc;AAIxBG,EAAAA,QAAQ,EAAE;AAJc,CAA1B;AAMAjpC,cAAc,CAAC+iC,SAAf,GAA2B;AACzB5gC,EAAAA,MAAM,EAAE;AACN6gC,IAAAA,OAAO,EAAE;AACPzhC,MAAAA,IAAI,EAAE;AADC,KADH;AAIN0hC,IAAAA,OAAO,EAAE;AACP1hC,MAAAA,IAAI,EAAE;AADC;AAJH;AADiB,CAA3B;;AAUA,SAASmnC,+BAAT,CAAyCxhB,IAAzC,EAA+Ckc,MAA/C,EAAuDqF,kBAAvD,EAA2E;AACzE,MAAMgB,UAAU,GAAGrG,MAAM,CAACrhC,MAA1B;AACA,MAAIwC,KAAK,GAAG,CAAZ;AACA,MAAIG,KAAK,GAAG+kC,UAAZ;;AACA,MAAIviB,IAAI,CAAC6S,OAAT,EAAkB;AAChB,QAAOvE,MAAP,GAA0BtO,IAA1B,CAAOsO,MAAP;AAAA,QAAec,OAAf,GAA0BpP,IAA1B,CAAeoP,OAAf;AACA,QAAMZ,IAAI,GAAGF,MAAM,CAACE,IAApB;;AACA,gCAA2CF,MAAM,CAAClB,aAAP,EAA3C;AAAA,QAAO/nB,GAAP,yBAAOA,GAAP;AAAA,QAAYC,GAAZ,yBAAYA,GAAZ;AAAA,QAAiB+nB,UAAjB,yBAAiBA,UAAjB;AAAA,QAA6BC,UAA7B,yBAA6BA,UAA7B;;AACA,QAAID,UAAJ,EAAgB;AACdhwB,MAAAA,KAAK,GAAG,uBAAYO,IAAI,CAACyH,GAAL,CAClB,uBAAa+pB,OAAb,EAAsBd,MAAM,CAACE,IAA7B,EAAmCnpB,GAAnC,EAAwCm9B,EADtB,EAElBjB,kBAAkB,GAAGgB,UAAH,GAAgB,uBAAarG,MAAb,EAAqB1N,IAArB,EAA2BF,MAAM,CAAC6I,gBAAP,CAAwB9xB,GAAxB,CAA3B,EAAyDm9B,EAFzE,CAAZ,EAGR,CAHQ,EAGLD,UAAU,GAAG,CAHR,CAAR;AAID;;AACD,QAAIjV,UAAJ,EAAgB;AACd9vB,MAAAA,KAAK,GAAG,uBAAYI,IAAI,CAAC0H,GAAL,CAClB,uBAAa8pB,OAAb,EAAsBd,MAAM,CAACE,IAA7B,EAAmClpB,GAAnC,EAAwCm9B,EAAxC,GAA6C,CAD3B,EAElBlB,kBAAkB,GAAG,CAAH,GAAO,uBAAarF,MAAb,EAAqB1N,IAArB,EAA2BF,MAAM,CAAC6I,gBAAP,CAAwB7xB,GAAxB,CAA3B,EAAyDm9B,EAAzD,GAA8D,CAFrE,CAAZ,EAGRplC,KAHQ,EAGDklC,UAHC,IAGallC,KAHrB;AAID,KALD,MAKO;AACLG,MAAAA,KAAK,GAAG+kC,UAAU,GAAGllC,KAArB;AACD;AACF;;AACD,SAAO;AAACA,IAAAA,KAAK,EAALA,KAAD;AAAQG,IAAAA,KAAK,EAALA;AAAR,GAAP;AACD;;AACD,SAASikC,kBAAT,CAA4BzhB,IAA5B,EAAkC;AAChC,MAAO4L,MAAP,GAAuC5L,IAAvC,CAAO4L,MAAP;AAAA,MAAeC,MAAf,GAAuC7L,IAAvC,CAAe6L,MAAf;AAAA,MAAuB6W,YAAvB,GAAuC1iB,IAAvC,CAAuB0iB,YAAvB;AACA,MAAMC,SAAS,GAAG;AAChBC,IAAAA,IAAI,EAAEhX,MAAM,CAACvmB,GADG;AAEhBw9B,IAAAA,IAAI,EAAEjX,MAAM,CAACtmB,GAFG;AAGhBw9B,IAAAA,IAAI,EAAEjX,MAAM,CAACxmB,GAHG;AAIhB09B,IAAAA,IAAI,EAAElX,MAAM,CAACvmB;AAJG,GAAlB;;AAMA,MAAI,CAACo9B,YAAL,EAAmB;AACjB1iB,IAAAA,IAAI,CAAC0iB,YAAL,GAAoBC,SAApB;AACA,WAAO,IAAP;AACD;;AACD,MAAMK,OAAO,GAAGN,YAAY,CAACE,IAAb,KAAsBhX,MAAM,CAACvmB,GAA7B,IACbq9B,YAAY,CAACG,IAAb,KAAsBjX,MAAM,CAACtmB,GADhB,IAEbo9B,YAAY,CAACI,IAAb,KAAsBjX,MAAM,CAACxmB,GAFhB,IAGbq9B,YAAY,CAACK,IAAb,KAAsBlX,MAAM,CAACvmB,GAHhC;;AAIA,WAAco9B,YAAd,EAA4BC,SAA5B;;AACA,SAAOK,OAAP;AACD;;IAEKC;;;;;AACJ,+BAAYjnC,KAAZ,EAAmB2wB,YAAnB,EAAiC;AAAA;;AAAA;;AAC/B,gCAAM3wB,KAAN,EAAa2wB,YAAb;AACA,WAAKsR,WAAL,GAAmBrjC,SAAnB;AACA,WAAKsjC,WAAL,GAAmBtjC,SAAnB;AAH+B;AAIhC;;;;WACD,0BAAiB6B,KAAjB,EAAwB;AACtB,UAAMujB,IAAI,GAAG,KAAKoO,WAAlB;AACA,UAAMpyB,KAAK,GAAG,KAAKA,KAAnB;AACA,UAAMzB,MAAM,GAAGyB,KAAK,CAACC,IAAN,CAAW1B,MAAX,IAAqB,EAApC;AACA,UAAM6K,KAAK,GAAG,uBAAa4a,IAAI,CAACoP,OAAL,CAAa3yB,KAAb,EAAoBO,CAAjC,EAAoChB,KAAK,CAACE,OAAN,CAAc8jC,MAAlD,CAAd;AACA,aAAO;AACLhlC,QAAAA,KAAK,EAAET,MAAM,CAACkC,KAAD,CAAN,IAAiB,EADnB;AAEL2I,QAAAA,KAAK,EAALA;AAFK,OAAP;AAID;;;WACD,gBAAOsnB,IAAP,EAAa;AACX,UAAM6R,IAAI,GAAG,KAAKnQ,WAAL,CAAiBnyB,IAA9B;;AACA,WAAKinC,aAAL;;AACA,WAAK/M,cAAL,CAAoBoI,IAApB,EAA0B,CAA1B,EAA6BA,IAAI,CAAC1jC,MAAlC,EAA0C6xB,IAA1C;AACD;;;WACD,yBAAgB;AACd,UAAM1wB,KAAK,GAAG,KAAKA,KAAnB;AACA,UAAMs4B,SAAS,GAAGt4B,KAAK,CAACs4B,SAAxB;AACA,UAAM3uB,IAAI,GAAG3J,KAAK,CAACE,OAAnB;AACA,UAAMinC,OAAO,GAAGvlC,IAAI,CAACyH,GAAL,CAASivB,SAAS,CAACx1B,KAAV,GAAkBw1B,SAAS,CAACz1B,IAArC,EAA2Cy1B,SAAS,CAAC11B,MAAV,GAAmB01B,SAAS,CAAC31B,GAAxE,CAAhB;AACA,UAAMu/B,WAAW,GAAGtgC,IAAI,CAAC0H,GAAL,CAAS69B,OAAO,GAAG,CAAnB,EAAsB,CAAtB,CAApB;AACA,UAAMlF,WAAW,GAAGrgC,IAAI,CAAC0H,GAAL,CAASK,IAAI,CAACy9B,gBAAL,GAAyBlF,WAAW,GAAG,GAAf,GAAuBv4B,IAAI,CAACy9B,gBAApD,GAAwE,CAAjF,EAAoF,CAApF,CAApB;AACA,UAAMlE,YAAY,GAAG,CAAChB,WAAW,GAAGD,WAAf,IAA8BjiC,KAAK,CAACqnC,sBAAN,EAAnD;AACA,WAAKnF,WAAL,GAAmBA,WAAW,GAAIgB,YAAY,GAAG,KAAKziC,KAAtD;AACA,WAAKwhC,WAAL,GAAmB,KAAKC,WAAL,GAAmBgB,YAAtC;AACD;;;WACD,wBAAeX,IAAf,EAAqBlhC,KAArB,EAA4BG,KAA5B,EAAmCkvB,IAAnC,EAAyC;AACvC,UAAM5hB,KAAK,GAAG4hB,IAAI,KAAK,OAAvB;AACA,UAAM1wB,KAAK,GAAG,KAAKA,KAAnB;AACA,UAAMZ,OAAO,GAAG,KAAK01B,UAAL,EAAhB;AACA,UAAMnrB,IAAI,GAAG3J,KAAK,CAACE,OAAnB;AACA,UAAMujC,aAAa,GAAG95B,IAAI,CAACokB,SAA3B;AACA,UAAM1gB,KAAK,GAAG,KAAK+kB,WAAL,CAAiBuD,MAA/B;AACA,UAAM+N,OAAO,GAAGr2B,KAAK,CAACi6B,OAAtB;AACA,UAAM3D,OAAO,GAAGt2B,KAAK,CAACk6B,OAAtB;;AACA,UAAMC,iBAAiB,GAAGn6B,KAAK,CAACo6B,aAAN,CAAoB,CAApB,IAAyB,MAAMv6B,iBAAzD;;AACA,UAAIw0B,KAAK,GAAG8F,iBAAZ;AACA,UAAInoC,CAAJ;AACA,UAAMqoC,YAAY,GAAG,MAAM,KAAKC,oBAAL,EAA3B;;AACA,WAAKtoC,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgC,KAAhB,EAAuB,EAAEhC,CAAzB,EAA4B;AAC1BqiC,QAAAA,KAAK,IAAI,KAAKkG,aAAL,CAAmBvoC,CAAnB,EAAsBqxB,IAAtB,EAA4BgX,YAA5B,CAAT;AACD;;AACD,WAAKroC,CAAC,GAAGgC,KAAT,EAAgBhC,CAAC,GAAGgC,KAAK,GAAGG,KAA5B,EAAmCnC,CAAC,EAApC,EAAwC;AACtC,YAAMykC,GAAG,GAAGvB,IAAI,CAACljC,CAAD,CAAhB;AACA,YAAI4hC,UAAU,GAAGS,KAAjB;;AACA,YAAIR,QAAQ,GAAGQ,KAAK,GAAG,KAAKkG,aAAL,CAAmBvoC,CAAnB,EAAsBqxB,IAAtB,EAA4BgX,YAA5B,CAAvB;;AACA,YAAIxF,WAAW,GAAGliC,KAAK,CAACq/B,iBAAN,CAAwBhgC,CAAxB,IAA6BgO,KAAK,CAACw6B,6BAAN,CAAoCzoC,OAAO,CAACa,IAAR,CAAaZ,CAAb,CAApC,CAA7B,GAAoF,CAAtG;AACAqiC,QAAAA,KAAK,GAAGR,QAAR;;AACA,YAAIpyB,KAAJ,EAAW;AACT,cAAI20B,aAAa,CAACG,YAAlB,EAAgC;AAC9B1B,YAAAA,WAAW,GAAG,CAAd;AACD;;AACD,cAAIuB,aAAa,CAACF,aAAlB,EAAiC;AAC/BtC,YAAAA,UAAU,GAAGC,QAAQ,GAAGsG,iBAAxB;AACD;AACF;;AACD,YAAMpZ,UAAU,GAAG;AACjBxhB,UAAAA,CAAC,EAAE82B,OADc;AAEjB72B,UAAAA,CAAC,EAAE82B,OAFc;AAGjB1B,UAAAA,WAAW,EAAE,CAHI;AAIjBC,UAAAA,WAAW,EAAXA,WAJiB;AAKjBjB,UAAAA,UAAU,EAAVA,UALiB;AAMjBC,UAAAA,QAAQ,EAARA,QANiB;AAOjBhhC,UAAAA,OAAO,EAAE,KAAKu4B,yBAAL,CAA+Bp5B,CAA/B,EAAkCykC,GAAG,CAAC/mB,MAAJ,GAAa,QAAb,GAAwB2T,IAA1D;AAPQ,SAAnB;AASA,aAAKiO,aAAL,CAAmBmF,GAAnB,EAAwBzkC,CAAxB,EAA2B+uB,UAA3B,EAAuCsC,IAAvC;AACD;AACF;;;WACD,gCAAuB;AAAA;;AACrB,UAAMtxB,OAAO,GAAG,KAAK01B,UAAL,EAAhB;AACA,UAAM9Q,IAAI,GAAG,KAAKoO,WAAlB;AACA,UAAI5wB,KAAK,GAAG,CAAZ;AACAwiB,MAAAA,IAAI,CAAC/jB,IAAL,CAAUsD,OAAV,CAAkB,UAACrF,OAAD,EAAUuC,KAAV,EAAoB;AACpC,YAAI,CAAC2P,KAAK,CAAChR,OAAO,CAACa,IAAR,CAAaQ,KAAb,CAAD,CAAN,IAA+B,MAAI,CAACT,KAAL,CAAWq/B,iBAAX,CAA6B5+B,KAA7B,CAAnC,EAAwE;AACtEe,UAAAA,KAAK;AACN;AACF,OAJD;AAKA,aAAOA,KAAP;AACD;;;WACD,uBAAcf,KAAd,EAAqBiwB,IAArB,EAA2BgX,YAA3B,EAAyC;AACvC,aAAO,KAAK1nC,KAAL,CAAWq/B,iBAAX,CAA6B5+B,KAA7B,IACH,uBAAU,KAAKg4B,yBAAL,CAA+Bh4B,KAA/B,EAAsCiwB,IAAtC,EAA4CgR,KAA5C,IAAqDgG,YAA/D,CADG,GAEH,CAFJ;AAGD;;;;EAzF+B7T;;;AA2FlCoT,mBAAmB,CAACrqB,EAApB,GAAyB,WAAzB;AACAqqB,mBAAmB,CAAC1pC,QAApB,GAA+B;AAC7Bo7B,EAAAA,eAAe,EAAE,KADY;AAE7B5K,EAAAA,SAAS,EAAE;AACTwV,IAAAA,aAAa,EAAE,IADN;AAETK,IAAAA,YAAY,EAAE;AAFL,GAFkB;AAM7BvV,EAAAA,UAAU,EAAE;AACVR,IAAAA,OAAO,EAAE;AACPxvB,MAAAA,IAAI,EAAE,QADC;AAEP+vB,MAAAA,UAAU,EAAE,CAAC,GAAD,EAAM,GAAN,EAAW,YAAX,EAAyB,UAAzB,EAAqC,aAArC,EAAoD,aAApD;AAFL;AADC,GANiB;AAY7BiH,EAAAA,SAAS,EAAE,GAZkB;AAa7B4L,EAAAA,UAAU,EAAE;AAbiB,CAA/B;AAeAgG,mBAAmB,CAACpH,SAApB,GAAgC;AAC9B0E,EAAAA,WAAW,EAAE,CADiB;AAE9BpkC,EAAAA,OAAO,EAAE;AACPC,IAAAA,MAAM,EAAE;AACN7B,MAAAA,MAAM,EAAE;AACNimC,QAAAA,cADM,0BACSxkC,KADT,EACgB;AACpB,cAAMC,IAAI,GAAGD,KAAK,CAACC,IAAnB;;AACA,cAAIA,IAAI,CAAC1B,MAAL,CAAYM,MAAZ,IAAsBoB,IAAI,CAACvB,QAAL,CAAcG,MAAxC,EAAgD;AAC9C,gBAAgB4lC,UAAhB,GAA+BzkC,KAAK,CAACI,MAAN,CAAaF,OAA5C,CAAO3B,MAAP,CAAgBkmC,UAAhB;AACA,mBAAOxkC,IAAI,CAAC1B,MAAL,CAAYY,GAAZ,CAAgB,UAACH,KAAD,EAAQK,CAAR,EAAc;AACnC,kBAAM2kB,IAAI,GAAGhkB,KAAK,CAAC41B,cAAN,CAAqB,CAArB,CAAb;AACA,kBAAM3yB,KAAK,GAAG+gB,IAAI,CAAC7J,UAAL,CAAgBsf,QAAhB,CAAyBp6B,CAAzB,CAAd;AACA,qBAAO;AACLN,gBAAAA,IAAI,EAAEC,KADD;AAEL0lC,gBAAAA,SAAS,EAAEzhC,KAAK,CAACtD,eAFZ;AAGLglC,gBAAAA,WAAW,EAAE1hC,KAAK,CAAC2hC,WAHd;AAILC,gBAAAA,SAAS,EAAE5hC,KAAK,CAACihC,WAJZ;AAKLO,gBAAAA,UAAU,EAAEA,UALP;AAML9Q,gBAAAA,MAAM,EAAE,CAAC3zB,KAAK,CAACq/B,iBAAN,CAAwBhgC,CAAxB,CANJ;AAOLoB,gBAAAA,KAAK,EAAEpB;AAPF,eAAP;AASD,aAZM,CAAP;AAaD;;AACD,iBAAO,EAAP;AACD;AApBK,OADF;AAuBNylC,MAAAA,OAvBM,mBAuBEpjC,CAvBF,EAuBKqjC,UAvBL,EAuBiB3kC,MAvBjB,EAuByB;AAC7BA,QAAAA,MAAM,CAACJ,KAAP,CAAaglC,oBAAb,CAAkCD,UAAU,CAACtkC,KAA7C;AACAL,QAAAA,MAAM,CAACJ,KAAP,CAAaga,MAAb;AACD;AA1BK,KADD;AA6BP3Z,IAAAA,OAAO,EAAE;AACPgqB,MAAAA,SAAS,EAAE;AACT1rB,QAAAA,KADS,mBACD;AACN,iBAAO,EAAP;AACD,SAHQ;AAITK,QAAAA,KAJS,iBAIH0pB,OAJG,EAIM;AACb,iBAAOA,OAAO,CAAC1oB,KAAR,CAAcC,IAAd,CAAmB1B,MAAnB,CAA0BmqB,OAAO,CAACuK,SAAlC,IAA+C,IAA/C,GAAsDvK,OAAO,CAACyc,cAArE;AACD;AANQ;AADJ;AA7BF,GAFqB;AA0C9BlmC,EAAAA,MAAM,EAAE;AACN+B,IAAAA,CAAC,EAAE;AACD3C,MAAAA,IAAI,EAAE,cADL;AAEDypC,MAAAA,UAAU,EAAE;AACVhpC,QAAAA,OAAO,EAAE;AADC,OAFX;AAKDkhC,MAAAA,WAAW,EAAE,IALZ;AAMDvgC,MAAAA,IAAI,EAAE;AACJsoC,QAAAA,QAAQ,EAAE;AADN,OANL;AASDC,MAAAA,WAAW,EAAE;AACXlpC,QAAAA,OAAO,EAAE;AADE,OATZ;AAYDmiC,MAAAA,UAAU,EAAE;AAZX;AADG;AA1CsB,CAAhC;;IA4DMgH;;;;;;;;;;;;EAAsBvrC;;;AAE5BurC,aAAa,CAACrrB,EAAd,GAAmB,KAAnB;AACAqrB,aAAa,CAAC1qC,QAAd,GAAyB;AACvBojC,EAAAA,MAAM,EAAE,CADe;AAEvBF,EAAAA,QAAQ,EAAE,CAFa;AAGvBC,EAAAA,aAAa,EAAE,GAHQ;AAIvBzyB,EAAAA,MAAM,EAAE;AAJe,CAAzB;;IAOMi6B;;;;;;;;;;;;;WACJ,0BAAiBznC,KAAjB,EAAwB;AACtB,UAAMsxB,MAAM,GAAG,KAAKK,WAAL,CAAiBL,MAAhC;AACA,UAAMI,MAAM,GAAG,KAAK6F,SAAL,CAAev3B,KAAf,CAAf;AACA,aAAO;AACLzB,QAAAA,KAAK,EAAE+yB,MAAM,CAACoF,SAAP,GAAmB12B,KAAnB,CADF;AAEL2I,QAAAA,KAAK,EAAE,KAAK2oB,MAAM,CAACkG,gBAAP,CAAwB9F,MAAM,CAACJ,MAAM,CAACS,IAAR,CAA9B;AAFP,OAAP;AAID;;;WACD,gBAAO9B,IAAP,EAAa;AACX,UAAM1M,IAAI,GAAG,KAAKoO,WAAlB;AACA,UAAMiT,IAAI,GAAGrhB,IAAI,CAAC5kB,OAAlB;AACA,UAAM8gC,MAAM,GAAGlc,IAAI,CAAC/jB,IAAL,IAAa,EAA5B;AACA,UAAM1B,MAAM,GAAGylB,IAAI,CAACsO,MAAL,CAAY6E,SAAZ,EAAf;AACAkO,MAAAA,IAAI,CAACnF,MAAL,GAAcA,MAAd;;AACA,UAAIxP,IAAI,KAAK,QAAb,EAAuB;AACrB,YAAMxwB,OAAO,GAAG,KAAKs4B,4BAAL,CAAkC9H,IAAlC,CAAhB;;AACA,YAAI,CAAC,KAAKxwB,OAAL,CAAa0lC,QAAlB,EAA4B;AAC1B1lC,UAAAA,OAAO,CAACgkC,WAAR,GAAsB,CAAtB;AACD;;AACD,YAAM9V,UAAU,GAAG;AACjBlB,UAAAA,KAAK,EAAE,IADU;AAEjBib,UAAAA,SAAS,EAAE5pC,MAAM,CAACM,MAAP,KAAkBqhC,MAAM,CAACrhC,MAFnB;AAGjBqB,UAAAA,OAAO,EAAPA;AAHiB,SAAnB;AAKA,aAAKy+B,aAAL,CAAmB0G,IAAnB,EAAyBzmC,SAAzB,EAAoCwvB,UAApC,EAAgDsC,IAAhD;AACD;;AACD,WAAKyJ,cAAL,CAAoB+F,MAApB,EAA4B,CAA5B,EAA+BA,MAAM,CAACrhC,MAAtC,EAA8C6xB,IAA9C;AACD;;;WACD,wBAAewP,MAAf,EAAuB7+B,KAAvB,EAA8BG,KAA9B,EAAqCkvB,IAArC,EAA2C;AACzC,UAAMtxB,OAAO,GAAG,KAAK01B,UAAL,EAAhB;AACA,UAAMznB,KAAK,GAAG,KAAK+kB,WAAL,CAAiBuD,MAA/B;AACA,UAAM7mB,KAAK,GAAG4hB,IAAI,KAAK,OAAvB;;AACA,WAAK,IAAIrxB,CAAC,GAAGgC,KAAb,EAAoBhC,CAAC,GAAGgC,KAAK,GAAGG,KAAhC,EAAuCnC,CAAC,EAAxC,EAA4C;AAC1C,YAAM8gC,KAAK,GAAGD,MAAM,CAAC7gC,CAAD,CAApB;AACA,YAAMa,OAAO,GAAG,KAAKu4B,yBAAL,CAA+Bp5B,CAA/B,EAAkC8gC,KAAK,CAACpjB,MAAN,GAAe,QAAf,GAA0B2T,IAA5D,CAAhB;AACA,YAAM0X,aAAa,GAAG/6B,KAAK,CAACg7B,wBAAN,CAA+BhpC,CAA/B,EAAkCD,OAAO,CAACa,IAAR,CAAaZ,CAAb,CAAlC,CAAtB;AACA,YAAMuN,CAAC,GAAGkC,KAAK,GAAGzB,KAAK,CAACi6B,OAAT,GAAmBc,aAAa,CAACx7B,CAAhD;AACA,YAAMC,CAAC,GAAGiC,KAAK,GAAGzB,KAAK,CAACk6B,OAAT,GAAmBa,aAAa,CAACv7B,CAAhD;AACA,YAAMuhB,UAAU,GAAG;AACjBxhB,UAAAA,CAAC,EAADA,CADiB;AAEjBC,UAAAA,CAAC,EAADA,CAFiB;AAGjB60B,UAAAA,KAAK,EAAE0G,aAAa,CAAC1G,KAHJ;AAIjBnB,UAAAA,IAAI,EAAEnwB,KAAK,CAACxD,CAAD,CAAL,IAAYwD,KAAK,CAACvD,CAAD,CAJN;AAKjB3M,UAAAA,OAAO,EAAPA;AALiB,SAAnB;AAOA,aAAKy+B,aAAL,CAAmBwB,KAAnB,EAA0B9gC,CAA1B,EAA6B+uB,UAA7B,EAAyCsC,IAAzC;AACD;AACF;;;;EAhD2BmD;;;AAkD9BqU,eAAe,CAACtrB,EAAhB,GAAqB,OAArB;AACAsrB,eAAe,CAAC3qC,QAAhB,GAA2B;AACzBy4B,EAAAA,kBAAkB,EAAE,MADK;AAEzB2C,EAAAA,eAAe,EAAE,OAFQ;AAGzBtD,EAAAA,SAAS,EAAE,GAHc;AAIzBuQ,EAAAA,QAAQ,EAAE,IAJe;AAKzBxe,EAAAA,QAAQ,EAAE;AACRie,IAAAA,IAAI,EAAE;AACJiD,MAAAA,IAAI,EAAE;AADF;AADE;AALe,CAA3B;AAWAJ,eAAe,CAACrI,SAAhB,GAA4B;AAC1B0E,EAAAA,WAAW,EAAE,CADa;AAE1BtlC,EAAAA,MAAM,EAAE;AACN+B,IAAAA,CAAC,EAAE;AACD3C,MAAAA,IAAI,EAAE;AADL;AADG;AAFkB,CAA5B;;IASMkqC;;;;;;;;;;;;EAA0BzrC;;;AAEhCyrC,iBAAiB,CAAC3rB,EAAlB,GAAuB,SAAvB;AACA2rB,iBAAiB,CAAChrC,QAAlB,GAA6B;AAC3BqoC,EAAAA,QAAQ,EAAE,KADiB;AAE3B0C,EAAAA,IAAI,EAAE;AAFqB,CAA7B;AAIAC,iBAAiB,CAAC1I,SAAlB,GAA8B;AAC5B2I,EAAAA,WAAW,EAAE;AACX9X,IAAAA,IAAI,EAAE;AADK,GADe;AAI5BvwB,EAAAA,OAAO,EAAE;AACPE,IAAAA,OAAO,EAAE;AACPgqB,MAAAA,SAAS,EAAE;AACT1rB,QAAAA,KADS,mBACD;AACN,iBAAO,EAAP;AACD,SAHQ;AAITK,QAAAA,KAJS,iBAIHiD,IAJG,EAIG;AACV,iBAAO,MAAMA,IAAI,CAACjD,KAAX,GAAmB,IAAnB,GAA0BiD,IAAI,CAACkjC,cAA/B,GAAgD,GAAvD;AACD;AANQ;AADJ;AADF,GAJmB;AAgB5BlmC,EAAAA,MAAM,EAAE;AACN2N,IAAAA,CAAC,EAAE;AACDvO,MAAAA,IAAI,EAAE;AADL,KADG;AAINwO,IAAAA,CAAC,EAAE;AACDxO,MAAAA,IAAI,EAAE;AADL;AAJG;AAhBoB,CAA9B;AA0BA,IAAIoqC,WAAW,GAAG,aAAav8B,MAAM,CAACitB,MAAP,CAAc;AAC7CuP,EAAAA,SAAS,EAAE,IADkC;AAE7ClsC,EAAAA,aAAa,EAAEA,aAF8B;AAG7CyjC,EAAAA,gBAAgB,EAAEA,gBAH2B;AAI7CvjC,EAAAA,kBAAkB,EAAEA,kBAJyB;AAK7CI,EAAAA,cAAc,EAAEA,cAL6B;AAM7CmqC,EAAAA,mBAAmB,EAAEA,mBANwB;AAO7CgB,EAAAA,aAAa,EAAEA,aAP8B;AAQ7CC,EAAAA,eAAe,EAAEA,eAR4B;AAS7CK,EAAAA,iBAAiB,EAAEA;AAT0B,CAAd,CAA/B;;;AAYA,SAASI,QAAT,GAAoB;AAClB,QAAM,IAAIjqB,KAAJ,CAAU,iFAAV,CAAN;AACD;;IACKkqB;AACJ,uBAAY1oC,OAAZ,EAAqB;AAAA;;AACnB,SAAKA,OAAL,GAAeA,OAAO,IAAI,EAA1B;AACD;;;;WACD,mBAAU;AACR,aAAOyoC,QAAQ,EAAf;AACD;;;WACD,eAAMv/B,KAAN,EAAay/B,MAAb,EAAqB;AACnB,aAAOF,QAAQ,EAAf;AACD;;;WACD,gBAAOG,SAAP,EAAkBD,OAAlB,EAA0B;AACxB,aAAOF,QAAQ,EAAf;AACD;;;WACD,aAAIG,SAAJ,EAAeC,MAAf,EAAuBC,IAAvB,EAA6B;AAC3B,aAAOL,QAAQ,EAAf;AACD;;;WACD,cAAK3mB,CAAL,EAAQ7gB,CAAR,EAAW6nC,IAAX,EAAiB;AACf,aAAOL,QAAQ,EAAf;AACD;;;WACD,iBAAQG,SAAR,EAAmBE,IAAnB,EAAyBC,OAAzB,EAAkC;AAChC,aAAON,QAAQ,EAAf;AACD;;;WACD,eAAMG,SAAN,EAAiBE,IAAjB,EAAuB;AACrB,aAAOL,QAAQ,EAAf;AACD;;;;;;AAEHC,WAAW,CAACM,QAAZ,GAAuB,UAASC,OAAT,EAAkB;AACvC,WAAcP,WAAW,CAACpnB,SAA1B,EAAqC2nB,OAArC;AACD,CAFD;;AAGA,IAAIC,QAAQ,GAAG;AACbC,EAAAA,KAAK,EAAET;AADM,CAAf;;;AAIA,SAASU,mBAAT,CAA6B5nC,CAA7B,EAAgC1B,KAAhC,EAAuC;AACrC,MAAI,YAAY0B,CAAhB,EAAmB;AACjB,WAAO;AACLkL,MAAAA,CAAC,EAAElL,CAAC,CAACkL,CADA;AAELC,MAAAA,CAAC,EAAEnL,CAAC,CAACmL;AAFA,KAAP;AAID;;AACD,SAAO,uBAAsBnL,CAAtB,EAAyB1B,KAAzB,CAAP;AACD;;AACD,SAASupC,uBAAT,CAAiCvpC,KAAjC,EAAwC0Q,OAAxC,EAAiD;AAC/C,MAAMyf,QAAQ,GAAGnwB,KAAK,CAACwpC,4BAAN,EAAjB;AACA,MAAI/oC,KAAJ,EAAWR,IAAX,EAAiB/B,OAAjB;;AACA,OAAK,IAAImB,CAAC,GAAG,CAAR,EAAWgxB,IAAI,GAAGF,QAAQ,CAACtxB,MAAhC,EAAwCQ,CAAC,GAAGgxB,IAA5C,EAAkD,EAAEhxB,CAApD,EAAuD;AAAA,sBACpC8wB,QAAQ,CAAC9wB,CAAD,CAD4B;AACnDoB,IAAAA,KADmD,eACnDA,KADmD;AAC5CR,IAAAA,IAD4C,eAC5CA,IAD4C;;AAErD,SAAK,IAAIwpC,CAAC,GAAG,CAAR,EAAWC,IAAI,GAAGzpC,IAAI,CAACpB,MAA5B,EAAoC4qC,CAAC,GAAGC,IAAxC,EAA8C,EAAED,CAAhD,EAAmD;AACjDvrC,MAAAA,OAAO,GAAG+B,IAAI,CAACwpC,CAAD,CAAd;;AACA,UAAI,CAACvrC,OAAO,CAACqiC,IAAb,EAAmB;AACjB7vB,QAAAA,OAAO,CAACxS,OAAD,EAAUuC,KAAV,EAAiBgpC,CAAjB,CAAP;AACD;AACF;AACF;AACF;;AACD,SAASE,YAAT,CAAsBC,OAAtB,EAA+BpX,IAA/B,EAAqCppB,KAArC,EAA4CygC,SAA5C,EAAuD;AACrD,MAAO1vB,UAAP,GAAoCyvB,OAApC,CAAOzvB,UAAP;AAAA,MAAmBla,IAAnB,GAAoC2pC,OAApC,CAAmB3pC,IAAnB;AAAA,MAAyB42B,OAAzB,GAAoC+S,OAApC,CAAyB/S,OAAzB;AACA,MAAMvE,MAAM,GAAGnY,UAAU,CAACiY,WAAX,CAAuBE,MAAtC;;AACA,MAAIA,MAAM,IAAIE,IAAI,KAAKF,MAAM,CAACE,IAA1B,IAAkCA,IAAI,KAAK,GAA3C,IAAkDqE,OAAlD,IAA6D52B,IAAI,CAACpB,MAAtE,EAA8E;AAC5E,QAAMirC,YAAY,GAAGxX,MAAM,CAACyX,cAAP,GAAwBC,iBAAxB,GAAwCC,iBAA7D;;AACA,QAAI,CAACJ,SAAL,EAAgB;AACd,aAAOC,YAAY,CAAC7pC,IAAD,EAAOuyB,IAAP,EAAappB,KAAb,CAAnB;AACD,KAFD,MAEO,IAAI+Q,UAAU,CAACma,cAAf,EAA+B;AACpC,UAAM4V,EAAE,GAAGjqC,IAAI,CAAC,CAAD,CAAf;AACA,UAAMs3B,KAAK,GAAG,OAAO2S,EAAE,CAACC,QAAV,KAAuB,UAAvB,IAAqCD,EAAE,CAACC,QAAH,CAAY3X,IAAZ,CAAnD;;AACA,UAAI+E,KAAJ,EAAW;AACT,YAAMl2B,KAAK,GAAGyoC,YAAY,CAAC7pC,IAAD,EAAOuyB,IAAP,EAAappB,KAAK,GAAGmuB,KAArB,CAA1B;AACA,YAAMj2B,GAAG,GAAGwoC,YAAY,CAAC7pC,IAAD,EAAOuyB,IAAP,EAAappB,KAAK,GAAGmuB,KAArB,CAAxB;AACA,eAAO;AAACiP,UAAAA,EAAE,EAAEnlC,KAAK,CAACmlC,EAAX;AAAeC,UAAAA,EAAE,EAAEnlC,GAAG,CAACmlC;AAAvB,SAAP;AACD;AACF;AACF;;AACD,SAAO;AAACD,IAAAA,EAAE,EAAE,CAAL;AAAQC,IAAAA,EAAE,EAAExmC,IAAI,CAACpB,MAAL,GAAc;AAA1B,GAAP;AACD;;AACD,SAASurC,sBAAT,CAAgCpqC,KAAhC,EAAuCwyB,IAAvC,EAA6ChzB,QAA7C,EAAuDkR,OAAvD,EAAgEm5B,SAAhE,EAA2E;AACzE,MAAM1Z,QAAQ,GAAGnwB,KAAK,CAACwpC,4BAAN,EAAjB;AACA,MAAMpgC,KAAK,GAAG5J,QAAQ,CAACgzB,IAAD,CAAtB;;AACA,OAAK,IAAInzB,CAAC,GAAG,CAAR,EAAWgxB,IAAI,GAAGF,QAAQ,CAACtxB,MAAhC,EAAwCQ,CAAC,GAAGgxB,IAA5C,EAAkD,EAAEhxB,CAApD,EAAuD;AACrD,uBAAsB8wB,QAAQ,CAAC9wB,CAAD,CAA9B;AAAA,QAAOoB,KAAP,gBAAOA,KAAP;AAAA,QAAcR,IAAd,gBAAcA,IAAd;;AACA,wBAAiB0pC,YAAY,CAACxZ,QAAQ,CAAC9wB,CAAD,CAAT,EAAcmzB,IAAd,EAAoBppB,KAApB,EAA2BygC,SAA3B,CAA7B;AAAA,QAAOrD,EAAP,iBAAOA,EAAP;AAAA,QAAWC,EAAX,iBAAWA,EAAX;;AACA,SAAK,IAAIgD,CAAC,GAAGjD,EAAb,EAAiBiD,CAAC,IAAIhD,EAAtB,EAA0B,EAAEgD,CAA5B,EAA+B;AAC7B,UAAMvrC,OAAO,GAAG+B,IAAI,CAACwpC,CAAD,CAApB;;AACA,UAAI,CAACvrC,OAAO,CAACqiC,IAAb,EAAmB;AACjB7vB,QAAAA,OAAO,CAACxS,OAAD,EAAUuC,KAAV,EAAiBgpC,CAAjB,CAAP;AACD;AACF;AACF;AACF;;AACD,SAASY,wBAAT,CAAkC7X,IAAlC,EAAwC;AACtC,MAAM8X,IAAI,GAAG9X,IAAI,CAACtsB,OAAL,CAAa,GAAb,MAAsB,CAAC,CAApC;AACA,MAAMqkC,IAAI,GAAG/X,IAAI,CAACtsB,OAAL,CAAa,GAAb,MAAsB,CAAC,CAApC;AACA,SAAO,UAASskC,GAAT,EAAcC,GAAd,EAAmB;AACxB,QAAMC,MAAM,GAAGJ,IAAI,GAAG1oC,IAAI,CAACs5B,GAAL,CAASsP,GAAG,CAAC59B,CAAJ,GAAQ69B,GAAG,CAAC79B,CAArB,CAAH,GAA6B,CAAhD;AACA,QAAM+9B,MAAM,GAAGJ,IAAI,GAAG3oC,IAAI,CAACs5B,GAAL,CAASsP,GAAG,CAAC39B,CAAJ,GAAQ49B,GAAG,CAAC59B,CAArB,CAAH,GAA6B,CAAhD;AACA,WAAOjL,IAAI,CAACgpC,IAAL,CAAUhpC,IAAI,CAACipC,GAAL,CAASH,MAAT,EAAiB,CAAjB,IAAsB9oC,IAAI,CAACipC,GAAL,CAASF,MAAT,EAAiB,CAAjB,CAAhC,CAAP;AACD,GAJD;AAKD;;AACD,SAASG,iBAAT,CAA2B9qC,KAA3B,EAAkCR,QAAlC,EAA4CgzB,IAA5C,EAAkDuY,gBAAlD,EAAoE;AAClE,MAAMt6B,KAAK,GAAG,EAAd;;AACA,MAAI,CAAC,uBAAejR,QAAf,EAAyBQ,KAAK,CAACs4B,SAA/B,EAA0Ct4B,KAAK,CAACgrC,WAAhD,CAAL,EAAmE;AACjE,WAAOv6B,KAAP;AACD;;AACD,MAAMw6B,cAAc,GAAG,SAAjBA,cAAiB,CAAS/sC,OAAT,EAAkByyB,YAAlB,EAAgClwB,KAAhC,EAAuC;AAC5D,QAAIvC,OAAO,CAACgtC,OAAR,CAAgB1rC,QAAQ,CAACoN,CAAzB,EAA4BpN,QAAQ,CAACqN,CAArC,EAAwCk+B,gBAAxC,CAAJ,EAA+D;AAC7Dt6B,MAAAA,KAAK,CAACrP,IAAN,CAAW;AAAClD,QAAAA,OAAO,EAAPA,OAAD;AAAUyyB,QAAAA,YAAY,EAAZA,YAAV;AAAwBlwB,QAAAA,KAAK,EAALA;AAAxB,OAAX;AACD;AACF,GAJD;;AAKA2pC,EAAAA,sBAAsB,CAACpqC,KAAD,EAAQwyB,IAAR,EAAchzB,QAAd,EAAwByrC,cAAxB,EAAwC,IAAxC,CAAtB;AACA,SAAOx6B,KAAP;AACD;;AACD,SAAS06B,qBAAT,CAA+BnrC,KAA/B,EAAsCR,QAAtC,EAAgDgzB,IAAhD,EAAsDuY,gBAAtD,EAAwE;AACtE,MAAIt6B,KAAK,GAAG,EAAZ;;AACA,WAASw6B,cAAT,CAAwB/sC,OAAxB,EAAiCyyB,YAAjC,EAA+ClwB,KAA/C,EAAsD;AACpD,4BAA+BvC,OAAO,CAACktC,QAAR,CAAiB,CAAC,YAAD,EAAe,UAAf,CAAjB,EAA6CL,gBAA7C,CAA/B;AAAA,QAAO9J,UAAP,qBAAOA,UAAP;AAAA,QAAmBC,QAAnB,qBAAmBA,QAAnB;;AACA,6BAAgB,uBAAkBhjC,OAAlB,EAA2B;AAAC0O,MAAAA,CAAC,EAAEpN,QAAQ,CAACoN,CAAb;AAAgBC,MAAAA,CAAC,EAAErN,QAAQ,CAACqN;AAA5B,KAA3B,CAAhB;AAAA,QAAO60B,KAAP,sBAAOA,KAAP;;AACA,QAAI,uBAAcA,KAAd,EAAqBT,UAArB,EAAiCC,QAAjC,CAAJ,EAAgD;AAC9CzwB,MAAAA,KAAK,CAACrP,IAAN,CAAW;AAAClD,QAAAA,OAAO,EAAPA,OAAD;AAAUyyB,QAAAA,YAAY,EAAZA,YAAV;AAAwBlwB,QAAAA,KAAK,EAALA;AAAxB,OAAX;AACD;AACF;;AACD2pC,EAAAA,sBAAsB,CAACpqC,KAAD,EAAQwyB,IAAR,EAAchzB,QAAd,EAAwByrC,cAAxB,CAAtB;AACA,SAAOx6B,KAAP;AACD;;AACD,SAAS46B,wBAAT,CAAkCrrC,KAAlC,EAAyCR,QAAzC,EAAmDgzB,IAAnD,EAAyDqX,SAAzD,EAAoEkB,gBAApE,EAAsF;AACpF,MAAIt6B,KAAK,GAAG,EAAZ;AACA,MAAM66B,cAAc,GAAGjB,wBAAwB,CAAC7X,IAAD,CAA/C;AACA,MAAI+Y,WAAW,GAAGnmB,MAAM,CAACoM,iBAAzB;;AACA,WAASyZ,cAAT,CAAwB/sC,OAAxB,EAAiCyyB,YAAjC,EAA+ClwB,KAA/C,EAAsD;AACpD,QAAMyqC,OAAO,GAAGhtC,OAAO,CAACgtC,OAAR,CAAgB1rC,QAAQ,CAACoN,CAAzB,EAA4BpN,QAAQ,CAACqN,CAArC,EAAwCk+B,gBAAxC,CAAhB;;AACA,QAAIlB,SAAS,IAAI,CAACqB,OAAlB,EAA2B;AACzB;AACD;;AACD,QAAMxM,MAAM,GAAGxgC,OAAO,CAACstC,cAAR,CAAuBT,gBAAvB,CAAf;AACA,QAAMU,WAAW,GAAG,uBAAe/M,MAAf,EAAuB1+B,KAAK,CAACs4B,SAA7B,EAAwCt4B,KAAK,CAACgrC,WAA9C,CAApB;;AACA,QAAI,CAACS,WAAD,IAAgB,CAACP,OAArB,EAA8B;AAC5B;AACD;;AACD,QAAMrwB,QAAQ,GAAGywB,cAAc,CAAC9rC,QAAD,EAAWk/B,MAAX,CAA/B;;AACA,QAAI7jB,QAAQ,GAAG0wB,WAAf,EAA4B;AAC1B96B,MAAAA,KAAK,GAAG,CAAC;AAACvS,QAAAA,OAAO,EAAPA,OAAD;AAAUyyB,QAAAA,YAAY,EAAZA,YAAV;AAAwBlwB,QAAAA,KAAK,EAALA;AAAxB,OAAD,CAAR;AACA8qC,MAAAA,WAAW,GAAG1wB,QAAd;AACD,KAHD,MAGO,IAAIA,QAAQ,KAAK0wB,WAAjB,EAA8B;AACnC96B,MAAAA,KAAK,CAACrP,IAAN,CAAW;AAAClD,QAAAA,OAAO,EAAPA,OAAD;AAAUyyB,QAAAA,YAAY,EAAZA,YAAV;AAAwBlwB,QAAAA,KAAK,EAALA;AAAxB,OAAX;AACD;AACF;;AACD2pC,EAAAA,sBAAsB,CAACpqC,KAAD,EAAQwyB,IAAR,EAAchzB,QAAd,EAAwByrC,cAAxB,CAAtB;AACA,SAAOx6B,KAAP;AACD;;AACD,SAASi7B,eAAT,CAAyB1rC,KAAzB,EAAgCR,QAAhC,EAA0CgzB,IAA1C,EAAgDqX,SAAhD,EAA2DkB,gBAA3D,EAA6E;AAC3E,MAAI,CAAC,uBAAevrC,QAAf,EAAyBQ,KAAK,CAACs4B,SAA/B,EAA0Ct4B,KAAK,CAACgrC,WAAhD,CAAL,EAAmE;AACjE,WAAO,EAAP;AACD;;AACD,SAAOxY,IAAI,KAAK,GAAT,IAAgB,CAACqX,SAAjB,GACHsB,qBAAqB,CAACnrC,KAAD,EAAQR,QAAR,EAAkBgzB,IAAlB,EAAwBuY,gBAAxB,CADlB,GAEHM,wBAAwB,CAACrrC,KAAD,EAAQR,QAAR,EAAkBgzB,IAAlB,EAAwBqX,SAAxB,EAAmCkB,gBAAnC,CAF5B;AAGD;;AACD,SAASY,YAAT,CAAsB3rC,KAAtB,EAA6B0B,CAA7B,EAAgCxB,OAAhC,EAAyC6qC,gBAAzC,EAA2D;AACzD,MAAMvrC,QAAQ,GAAG8pC,mBAAmB,CAAC5nC,CAAD,EAAI1B,KAAJ,CAApC;AACA,MAAMyQ,KAAK,GAAG,EAAd;AACA,MAAM+hB,IAAI,GAAGtyB,OAAO,CAACsyB,IAArB;AACA,MAAMoZ,WAAW,GAAGpZ,IAAI,KAAK,GAAT,GAAe,UAAf,GAA4B,UAAhD;AACA,MAAIqZ,cAAc,GAAG,KAArB;AACAtC,EAAAA,uBAAuB,CAACvpC,KAAD,EAAQ,UAAC9B,OAAD,EAAUyyB,YAAV,EAAwBlwB,KAAxB,EAAkC;AAC/D,QAAIvC,OAAO,CAAC0tC,WAAD,CAAP,CAAqBpsC,QAAQ,CAACgzB,IAAD,CAA7B,EAAqCuY,gBAArC,CAAJ,EAA4D;AAC1Dt6B,MAAAA,KAAK,CAACrP,IAAN,CAAW;AAAClD,QAAAA,OAAO,EAAPA,OAAD;AAAUyyB,QAAAA,YAAY,EAAZA,YAAV;AAAwBlwB,QAAAA,KAAK,EAALA;AAAxB,OAAX;AACD;;AACD,QAAIvC,OAAO,CAACgtC,OAAR,CAAgB1rC,QAAQ,CAACoN,CAAzB,EAA4BpN,QAAQ,CAACqN,CAArC,EAAwCk+B,gBAAxC,CAAJ,EAA+D;AAC7Dc,MAAAA,cAAc,GAAG,IAAjB;AACD;AACF,GAPsB,CAAvB;;AAQA,MAAI3rC,OAAO,CAAC2pC,SAAR,IAAqB,CAACgC,cAA1B,EAA0C;AACxC,WAAO,EAAP;AACD;;AACD,SAAOp7B,KAAP;AACD;;AACD,IAAIq7B,WAAW,GAAG;AAChBC,EAAAA,KAAK,EAAE;AACLtrC,IAAAA,KADK,iBACCT,KADD,EACQ0B,CADR,EACWxB,OADX,EACoB6qC,gBADpB,EACsC;AACzC,UAAMvrC,QAAQ,GAAG8pC,mBAAmB,CAAC5nC,CAAD,EAAI1B,KAAJ,CAApC;AACA,UAAMwyB,IAAI,GAAGtyB,OAAO,CAACsyB,IAAR,IAAgB,GAA7B;AACA,UAAM/hB,KAAK,GAAGvQ,OAAO,CAAC2pC,SAAR,GACViB,iBAAiB,CAAC9qC,KAAD,EAAQR,QAAR,EAAkBgzB,IAAlB,EAAwBuY,gBAAxB,CADP,GAEVW,eAAe,CAAC1rC,KAAD,EAAQR,QAAR,EAAkBgzB,IAAlB,EAAwB,KAAxB,EAA+BuY,gBAA/B,CAFnB;AAGA,UAAM3jB,QAAQ,GAAG,EAAjB;;AACA,UAAI,CAAC3W,KAAK,CAAC5R,MAAX,EAAmB;AACjB,eAAO,EAAP;AACD;;AACDmB,MAAAA,KAAK,CAACwpC,4BAAN,GAAqCjmC,OAArC,CAA6C,UAACygB,IAAD,EAAU;AACrD,YAAMvjB,KAAK,GAAGgQ,KAAK,CAAC,CAAD,CAAL,CAAShQ,KAAvB;AACA,YAAMvC,OAAO,GAAG8lB,IAAI,CAAC/jB,IAAL,CAAUQ,KAAV,CAAhB;;AACA,YAAIvC,OAAO,IAAI,CAACA,OAAO,CAACqiC,IAAxB,EAA8B;AAC5BnZ,UAAAA,QAAQ,CAAChmB,IAAT,CAAc;AAAClD,YAAAA,OAAO,EAAPA,OAAD;AAAUyyB,YAAAA,YAAY,EAAE3M,IAAI,CAACvjB,KAA7B;AAAoCA,YAAAA,KAAK,EAALA;AAApC,WAAd;AACD;AACF,OAND;AAOA,aAAO2mB,QAAP;AACD,KAnBI;AAoBLhoB,IAAAA,OApBK,mBAoBGY,KApBH,EAoBU0B,CApBV,EAoBaxB,OApBb,EAoBsB6qC,gBApBtB,EAoBwC;AAC3C,UAAMvrC,QAAQ,GAAG8pC,mBAAmB,CAAC5nC,CAAD,EAAI1B,KAAJ,CAApC;AACA,UAAMwyB,IAAI,GAAGtyB,OAAO,CAACsyB,IAAR,IAAgB,IAA7B;AACA,UAAI/hB,KAAK,GAAGvQ,OAAO,CAAC2pC,SAAR,GACRiB,iBAAiB,CAAC9qC,KAAD,EAAQR,QAAR,EAAkBgzB,IAAlB,EAAwBuY,gBAAxB,CADT,GAEVW,eAAe,CAAC1rC,KAAD,EAAQR,QAAR,EAAkBgzB,IAAlB,EAAwB,KAAxB,EAA+BuY,gBAA/B,CAFjB;;AAGA,UAAIt6B,KAAK,CAAC5R,MAAN,GAAe,CAAnB,EAAsB;AACpB,YAAM8xB,YAAY,GAAGlgB,KAAK,CAAC,CAAD,CAAL,CAASkgB,YAA9B;AACA,YAAM1wB,IAAI,GAAGD,KAAK,CAAC41B,cAAN,CAAqBjF,YAArB,EAAmC1wB,IAAhD;AACAwQ,QAAAA,KAAK,GAAG,EAAR;;AACA,aAAK,IAAIpR,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGY,IAAI,CAACpB,MAAzB,EAAiC,EAAEQ,CAAnC,EAAsC;AACpCoR,UAAAA,KAAK,CAACrP,IAAN,CAAW;AAAClD,YAAAA,OAAO,EAAE+B,IAAI,CAACZ,CAAD,CAAd;AAAmBsxB,YAAAA,YAAY,EAAZA,YAAnB;AAAiClwB,YAAAA,KAAK,EAAEpB;AAAxC,WAAX;AACD;AACF;;AACD,aAAOoR,KAAP;AACD,KAnCI;AAoCL0vB,IAAAA,KApCK,iBAoCCngC,KApCD,EAoCQ0B,CApCR,EAoCWxB,OApCX,EAoCoB6qC,gBApCpB,EAoCsC;AACzC,UAAMvrC,QAAQ,GAAG8pC,mBAAmB,CAAC5nC,CAAD,EAAI1B,KAAJ,CAApC;AACA,UAAMwyB,IAAI,GAAGtyB,OAAO,CAACsyB,IAAR,IAAgB,IAA7B;AACA,aAAOsY,iBAAiB,CAAC9qC,KAAD,EAAQR,QAAR,EAAkBgzB,IAAlB,EAAwBuY,gBAAxB,CAAxB;AACD,KAxCI;AAyCLiB,IAAAA,OAzCK,mBAyCGhsC,KAzCH,EAyCU0B,CAzCV,EAyCaxB,OAzCb,EAyCsB6qC,gBAzCtB,EAyCwC;AAC3C,UAAMvrC,QAAQ,GAAG8pC,mBAAmB,CAAC5nC,CAAD,EAAI1B,KAAJ,CAApC;AACA,UAAMwyB,IAAI,GAAGtyB,OAAO,CAACsyB,IAAR,IAAgB,IAA7B;AACA,aAAOkZ,eAAe,CAAC1rC,KAAD,EAAQR,QAAR,EAAkBgzB,IAAlB,EAAwBtyB,OAAO,CAAC2pC,SAAhC,EAA2CkB,gBAA3C,CAAtB;AACD,KA7CI;AA8CLn+B,IAAAA,CA9CK,aA8CH5M,KA9CG,EA8CI0B,CA9CJ,EA8COxB,OA9CP,EA8CgB6qC,gBA9ChB,EA8CkC;AACrC,aAAOY,YAAY,CAAC3rC,KAAD,EAAQ0B,CAAR,EAAW;AAAC8wB,QAAAA,IAAI,EAAE,GAAP;AAAYqX,QAAAA,SAAS,EAAE3pC,OAAO,CAAC2pC;AAA/B,OAAX,EAAsDkB,gBAAtD,CAAnB;AACD,KAhDI;AAiDLl+B,IAAAA,CAjDK,aAiDH7M,KAjDG,EAiDI0B,CAjDJ,EAiDOxB,OAjDP,EAiDgB6qC,gBAjDhB,EAiDkC;AACrC,aAAOY,YAAY,CAAC3rC,KAAD,EAAQ0B,CAAR,EAAW;AAAC8wB,QAAAA,IAAI,EAAE,GAAP;AAAYqX,QAAAA,SAAS,EAAE3pC,OAAO,CAAC2pC;AAA/B,OAAX,EAAsDkB,gBAAtD,CAAnB;AACD;AAnDI;AADS,CAAlB;;AAwDA,IAAMkB,gBAAgB,GAAG,CAAC,MAAD,EAAS,KAAT,EAAgB,OAAhB,EAAyB,QAAzB,CAAzB;;AACA,SAASC,gBAAT,CAA0BC,KAA1B,EAAiC3sC,QAAjC,EAA2C;AACzC,SAAO2sC,KAAK,CAACrvB,MAAN,CAAa,UAAA0H,CAAC;AAAA,WAAIA,CAAC,CAAC4nB,GAAF,KAAU5sC,QAAd;AAAA,GAAd,CAAP;AACD;;AACD,SAAS6sC,2BAAT,CAAqCF,KAArC,EAA4C3Z,IAA5C,EAAkD;AAChD,SAAO2Z,KAAK,CAACrvB,MAAN,CAAa,UAAA0H,CAAC;AAAA,WAAIynB,gBAAgB,CAAC/lC,OAAjB,CAAyBse,CAAC,CAAC4nB,GAA3B,MAAoC,CAAC,CAArC,IAA0C5nB,CAAC,CAAC8nB,GAAF,CAAM9Z,IAAN,KAAeA,IAA7D;AAAA,GAAd,CAAP;AACD;;AACD,SAAS+Z,YAAT,CAAsBJ,KAAtB,EAA6Bzc,OAA7B,EAAsC;AACpC,SAAOyc,KAAK,CAACtR,IAAN,CAAW,UAAC7Y,CAAD,EAAI7gB,CAAJ,EAAU;AAC1B,QAAMqrC,EAAE,GAAG9c,OAAO,GAAGvuB,CAAH,GAAO6gB,CAAzB;AACA,QAAMyb,EAAE,GAAG/N,OAAO,GAAG1N,CAAH,GAAO7gB,CAAzB;AACA,WAAOqrC,EAAE,CAAC1uC,MAAH,KAAc2/B,EAAE,CAAC3/B,MAAjB,GACL0uC,EAAE,CAAC/rC,KAAH,GAAWg9B,EAAE,CAACh9B,KADT,GAEL+rC,EAAE,CAAC1uC,MAAH,GAAY2/B,EAAE,CAAC3/B,MAFjB;AAGD,GANM,CAAP;AAOD;;AACD,SAAS2uC,SAAT,CAAmBC,KAAnB,EAA0B;AACxB,MAAMC,WAAW,GAAG,EAApB;AACA,MAAIttC,CAAJ,EAAOgxB,IAAP,EAAaic,GAAb,EAAkBF,GAAlB,EAAuB7b,KAAvB,EAA8Bqc,WAA9B;;AACA,OAAKvtC,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAG,CAACqc,KAAK,IAAI,EAAV,EAAc7tC,MAAjC,EAAyCQ,CAAC,GAAGgxB,IAA7C,EAAmD,EAAEhxB,CAArD,EAAwD;AACtDitC,IAAAA,GAAG,GAAGI,KAAK,CAACrtC,CAAD,CAAX;AADsD,eAEAitC,GAFA;AAE1CF,IAAAA,GAF0C,QAEpD5sC,QAFoD;AAAA,4BAErCU,OAFqC;AAE3BqwB,IAAAA,KAF2B,gBAE3BA,KAF2B;AAAA,6CAEpBqc,WAFoB;AAEpBA,IAAAA,WAFoB,sCAEN,CAFM;AAGtDD,IAAAA,WAAW,CAACvrC,IAAZ,CAAiB;AACfX,MAAAA,KAAK,EAAEpB,CADQ;AAEfitC,MAAAA,GAAG,EAAHA,GAFe;AAGfF,MAAAA,GAAG,EAAHA,GAHe;AAIfrP,MAAAA,UAAU,EAAEuP,GAAG,CAACzP,YAAJ,EAJG;AAKf/+B,MAAAA,MAAM,EAAEwuC,GAAG,CAACxuC,MALG;AAMfyyB,MAAAA,KAAK,EAAEA,KAAK,IAAK6b,GAAG,GAAG7b,KANR;AAOfqc,MAAAA,WAAW,EAAXA;AAPe,KAAjB;AASD;;AACD,SAAOD,WAAP;AACD;;AACD,SAASE,WAAT,CAAqBC,OAArB,EAA8B;AAC5B,MAAMpb,MAAM,GAAG,EAAf;;AAD4B,8CAETob,OAFS;AAAA;;AAAA;AAE5B,2DAA4B;AAAA,UAAjBC,IAAiB;AAC1B,UAAOxc,KAAP,GAAkCwc,IAAlC,CAAOxc,KAAP;AAAA,UAAc6b,GAAd,GAAkCW,IAAlC,CAAcX,GAAd;AAAA,UAAmBQ,WAAnB,GAAkCG,IAAlC,CAAmBH,WAAnB;;AACA,UAAI,CAACrc,KAAD,IAAU,CAAC0b,gBAAgB,CAACe,QAAjB,CAA0BZ,GAA1B,CAAf,EAA+C;AAC7C;AACD;;AACD,UAAMa,MAAM,GAAGvb,MAAM,CAACnB,KAAD,CAAN,KAAkBmB,MAAM,CAACnB,KAAD,CAAN,GAAgB;AAAC/uB,QAAAA,KAAK,EAAE,CAAR;AAAW0rC,QAAAA,MAAM,EAAE,CAAnB;AAAsBpvC,QAAAA,MAAM,EAAE,CAA9B;AAAiCH,QAAAA,IAAI,EAAE;AAAvC,OAAlC,CAAf;;AACAsvC,MAAAA,MAAM,CAACzrC,KAAP;AACAyrC,MAAAA,MAAM,CAACnvC,MAAP,IAAiB8uC,WAAjB;AACD;AAV2B;AAAA;AAAA;AAAA;AAAA;;AAW5B,SAAOlb,MAAP;AACD;;AACD,SAASyb,aAAT,CAAuBL,OAAvB,EAAgCM,MAAhC,EAAwC;AACtC,MAAM1b,MAAM,GAAGmb,WAAW,CAACC,OAAD,CAA1B;AACA,MAAOO,YAAP,GAAsCD,MAAtC,CAAOC,YAAP;AAAA,MAAqBC,aAArB,GAAsCF,MAAtC,CAAqBE,aAArB;AACA,MAAIjuC,CAAJ,EAAOgxB,IAAP,EAAakd,MAAb;;AACA,OAAKluC,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAGyc,OAAO,CAACjuC,MAA3B,EAAmCQ,CAAC,GAAGgxB,IAAvC,EAA6C,EAAEhxB,CAA/C,EAAkD;AAChDkuC,IAAAA,MAAM,GAAGT,OAAO,CAACztC,CAAD,CAAhB;AACA,QAAOmuC,QAAP,GAAmBD,MAAM,CAACjB,GAA1B,CAAOkB,QAAP;AACA,QAAMjd,KAAK,GAAGmB,MAAM,CAAC6b,MAAM,CAAChd,KAAR,CAApB;AACA,QAAMtE,MAAM,GAAGsE,KAAK,IAAIgd,MAAM,CAACX,WAAP,GAAqBrc,KAAK,CAACzyB,MAAnD;;AACA,QAAIyvC,MAAM,CAACxQ,UAAX,EAAuB;AACrBwQ,MAAAA,MAAM,CAACvqC,KAAP,GAAeipB,MAAM,GAAGA,MAAM,GAAGohB,YAAZ,GAA2BG,QAAQ,IAAIJ,MAAM,CAACK,cAAnE;AACAF,MAAAA,MAAM,CAACxqC,MAAP,GAAgBuqC,aAAhB;AACD,KAHD,MAGO;AACLC,MAAAA,MAAM,CAACvqC,KAAP,GAAeqqC,YAAf;AACAE,MAAAA,MAAM,CAACxqC,MAAP,GAAgBkpB,MAAM,GAAGA,MAAM,GAAGqhB,aAAZ,GAA4BE,QAAQ,IAAIJ,MAAM,CAACM,eAArE;AACD;AACF;;AACD,SAAOhc,MAAP;AACD;;AACD,SAASic,gBAAT,CAA0BjB,KAA1B,EAAiC;AAC/B,MAAMC,WAAW,GAAGF,SAAS,CAACC,KAAD,CAA7B;AACA,MAAMc,QAAQ,GAAGjB,YAAY,CAACI,WAAW,CAAC7vB,MAAZ,CAAmB,UAAAiwB,IAAI;AAAA,WAAIA,IAAI,CAACT,GAAL,CAASkB,QAAb;AAAA,GAAvB,CAAD,EAAgD,IAAhD,CAA7B;AACA,MAAM3qC,IAAI,GAAG0pC,YAAY,CAACL,gBAAgB,CAACS,WAAD,EAAc,MAAd,CAAjB,EAAwC,IAAxC,CAAzB;AACA,MAAM7pC,KAAK,GAAGypC,YAAY,CAACL,gBAAgB,CAACS,WAAD,EAAc,OAAd,CAAjB,CAA1B;AACA,MAAMhqC,GAAG,GAAG4pC,YAAY,CAACL,gBAAgB,CAACS,WAAD,EAAc,KAAd,CAAjB,EAAuC,IAAvC,CAAxB;AACA,MAAM/pC,MAAM,GAAG2pC,YAAY,CAACL,gBAAgB,CAACS,WAAD,EAAc,QAAd,CAAjB,CAA3B;AACA,MAAMiB,gBAAgB,GAAGvB,2BAA2B,CAACM,WAAD,EAAc,GAAd,CAApD;AACA,MAAMkB,cAAc,GAAGxB,2BAA2B,CAACM,WAAD,EAAc,GAAd,CAAlD;AACA,SAAO;AACLa,IAAAA,QAAQ,EAARA,QADK;AAELM,IAAAA,UAAU,EAAEjrC,IAAI,CAACmd,MAAL,CAAYrd,GAAZ,CAFP;AAGLorC,IAAAA,cAAc,EAAEjrC,KAAK,CAACkd,MAAN,CAAa6tB,cAAb,EAA6B7tB,MAA7B,CAAoCpd,MAApC,EAA4Cod,MAA5C,CAAmD4tB,gBAAnD,CAHX;AAILtV,IAAAA,SAAS,EAAE4T,gBAAgB,CAACS,WAAD,EAAc,WAAd,CAJtB;AAKLqB,IAAAA,QAAQ,EAAEnrC,IAAI,CAACmd,MAAL,CAAYld,KAAZ,EAAmBkd,MAAnB,CAA0B6tB,cAA1B,CALL;AAML9Q,IAAAA,UAAU,EAAEp6B,GAAG,CAACqd,MAAJ,CAAWpd,MAAX,EAAmBod,MAAnB,CAA0B4tB,gBAA1B;AANP,GAAP;AAQD;;AACD,SAASK,cAAT,CAAwBC,UAAxB,EAAoC5V,SAApC,EAA+CtW,CAA/C,EAAkD7gB,CAAlD,EAAqD;AACnD,SAAOS,IAAI,CAAC0H,GAAL,CAAS4kC,UAAU,CAAClsB,CAAD,CAAnB,EAAwBsW,SAAS,CAACtW,CAAD,CAAjC,IAAwCpgB,IAAI,CAAC0H,GAAL,CAAS4kC,UAAU,CAAC/sC,CAAD,CAAnB,EAAwBm3B,SAAS,CAACn3B,CAAD,CAAjC,CAA/C;AACD;;AACD,SAASgtC,gBAAT,CAA0BD,UAA1B,EAAsCE,UAAtC,EAAkD;AAChDF,EAAAA,UAAU,CAACvrC,GAAX,GAAiBf,IAAI,CAAC0H,GAAL,CAAS4kC,UAAU,CAACvrC,GAApB,EAAyByrC,UAAU,CAACzrC,GAApC,CAAjB;AACAurC,EAAAA,UAAU,CAACrrC,IAAX,GAAkBjB,IAAI,CAAC0H,GAAL,CAAS4kC,UAAU,CAACrrC,IAApB,EAA0BurC,UAAU,CAACvrC,IAArC,CAAlB;AACAqrC,EAAAA,UAAU,CAACtrC,MAAX,GAAoBhB,IAAI,CAAC0H,GAAL,CAAS4kC,UAAU,CAACtrC,MAApB,EAA4BwrC,UAAU,CAACxrC,MAAvC,CAApB;AACAsrC,EAAAA,UAAU,CAACprC,KAAX,GAAmBlB,IAAI,CAAC0H,GAAL,CAAS4kC,UAAU,CAACprC,KAApB,EAA2BsrC,UAAU,CAACtrC,KAAtC,CAAnB;AACD;;AACD,SAASurC,UAAT,CAAoB/V,SAApB,EAA+B8U,MAA/B,EAAuCG,MAAvC,EAA+C7b,MAA/C,EAAuD;AACrD,MAAO0a,GAAP,GAAmBmB,MAAnB,CAAOnB,GAAP;AAAA,MAAYE,GAAZ,GAAmBiB,MAAnB,CAAYjB,GAAZ;AACA,MAAM4B,UAAU,GAAG5V,SAAS,CAAC4V,UAA7B;;AACA,MAAI,CAAC,uBAAS9B,GAAT,CAAL,EAAoB;AAClB,QAAImB,MAAM,CAAC5vC,IAAX,EAAiB;AACf26B,MAAAA,SAAS,CAAC8T,GAAD,CAAT,IAAkBmB,MAAM,CAAC5vC,IAAzB;AACD;;AACD,QAAM4yB,KAAK,GAAGmB,MAAM,CAAC6b,MAAM,CAAChd,KAAR,CAAN,IAAwB;AAAC5yB,MAAAA,IAAI,EAAE,CAAP;AAAU6D,MAAAA,KAAK,EAAE;AAAjB,KAAtC;AACA+uB,IAAAA,KAAK,CAAC5yB,IAAN,GAAaiE,IAAI,CAAC0H,GAAL,CAASinB,KAAK,CAAC5yB,IAAf,EAAqB4vC,MAAM,CAACxQ,UAAP,GAAoBuP,GAAG,CAACvpC,MAAxB,GAAiCupC,GAAG,CAACtpC,KAA1D,CAAb;AACAuqC,IAAAA,MAAM,CAAC5vC,IAAP,GAAc4yB,KAAK,CAAC5yB,IAAN,GAAa4yB,KAAK,CAAC/uB,KAAjC;AACA82B,IAAAA,SAAS,CAAC8T,GAAD,CAAT,IAAkBmB,MAAM,CAAC5vC,IAAzB;AACD;;AACD,MAAI2uC,GAAG,CAACgC,UAAR,EAAoB;AAClBH,IAAAA,gBAAgB,CAACD,UAAD,EAAa5B,GAAG,CAACgC,UAAJ,EAAb,CAAhB;AACD;;AACD,MAAMC,QAAQ,GAAG3sC,IAAI,CAAC0H,GAAL,CAAS,CAAT,EAAY8jC,MAAM,CAAC3wB,UAAP,GAAoBwxB,cAAc,CAACC,UAAD,EAAa5V,SAAb,EAAwB,MAAxB,EAAgC,OAAhC,CAA9C,CAAjB;AACA,MAAMkW,SAAS,GAAG5sC,IAAI,CAAC0H,GAAL,CAAS,CAAT,EAAY8jC,MAAM,CAACqB,WAAP,GAAqBR,cAAc,CAACC,UAAD,EAAa5V,SAAb,EAAwB,KAAxB,EAA+B,QAA/B,CAA/C,CAAlB;AACA,MAAMoW,YAAY,GAAGH,QAAQ,KAAKjW,SAAS,CAACvrB,CAA5C;AACA,MAAM4hC,aAAa,GAAGH,SAAS,KAAKlW,SAAS,CAACsW,CAA9C;AACAtW,EAAAA,SAAS,CAACvrB,CAAV,GAAcwhC,QAAd;AACAjW,EAAAA,SAAS,CAACsW,CAAV,GAAcJ,SAAd;AACA,SAAOjB,MAAM,CAACxQ,UAAP,GACH;AAAC8R,IAAAA,IAAI,EAAEH,YAAP;AAAqBI,IAAAA,KAAK,EAAEH;AAA5B,GADG,GAEH;AAACE,IAAAA,IAAI,EAAEF,aAAP;AAAsBG,IAAAA,KAAK,EAAEJ;AAA7B,GAFJ;AAGD;;AACD,SAASK,gBAAT,CAA0BzW,SAA1B,EAAqC;AACnC,MAAM4V,UAAU,GAAG5V,SAAS,CAAC4V,UAA7B;;AACA,WAASc,SAAT,CAAmB5C,GAAnB,EAAwB;AACtB,QAAM6C,MAAM,GAAGrtC,IAAI,CAAC0H,GAAL,CAAS4kC,UAAU,CAAC9B,GAAD,CAAV,GAAkB9T,SAAS,CAAC8T,GAAD,CAApC,EAA2C,CAA3C,CAAf;AACA9T,IAAAA,SAAS,CAAC8T,GAAD,CAAT,IAAkB6C,MAAlB;AACA,WAAOA,MAAP;AACD;;AACD3W,EAAAA,SAAS,CAACzrB,CAAV,IAAemiC,SAAS,CAAC,KAAD,CAAxB;AACA1W,EAAAA,SAAS,CAAC1rB,CAAV,IAAeoiC,SAAS,CAAC,MAAD,CAAxB;AACAA,EAAAA,SAAS,CAAC,OAAD,CAAT;AACAA,EAAAA,SAAS,CAAC,QAAD,CAAT;AACD;;AACD,SAASE,UAAT,CAAoBnS,UAApB,EAAgCzE,SAAhC,EAA2C;AACzC,MAAM4V,UAAU,GAAG5V,SAAS,CAAC4V,UAA7B;;AACA,WAASiB,kBAAT,CAA4BC,SAA5B,EAAuC;AACrC,QAAMC,MAAM,GAAG;AAACxsC,MAAAA,IAAI,EAAE,CAAP;AAAUF,MAAAA,GAAG,EAAE,CAAf;AAAkBG,MAAAA,KAAK,EAAE,CAAzB;AAA4BF,MAAAA,MAAM,EAAE;AAApC,KAAf;AACAwsC,IAAAA,SAAS,CAAC7rC,OAAV,CAAkB,UAAC6oC,GAAD,EAAS;AACzBiD,MAAAA,MAAM,CAACjD,GAAD,CAAN,GAAcxqC,IAAI,CAAC0H,GAAL,CAASgvB,SAAS,CAAC8T,GAAD,CAAlB,EAAyB8B,UAAU,CAAC9B,GAAD,CAAnC,CAAd;AACD,KAFD;AAGA,WAAOiD,MAAP;AACD;;AACD,SAAOtS,UAAU,GACboS,kBAAkB,CAAC,CAAC,MAAD,EAAS,OAAT,CAAD,CADL,GAEbA,kBAAkB,CAAC,CAAC,KAAD,EAAQ,QAAR,CAAD,CAFtB;AAGD;;AACD,SAASG,QAAT,CAAkB5C,KAAlB,EAAyBpU,SAAzB,EAAoC8U,MAApC,EAA4C1b,MAA5C,EAAoD;AAClD,MAAM6d,UAAU,GAAG,EAAnB;AACA,MAAIlwC,CAAJ,EAAOgxB,IAAP,EAAakd,MAAb,EAAqBjB,GAArB,EAA0BkD,KAA1B,EAAiCxI,OAAjC;;AACA,OAAK3nC,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAGqc,KAAK,CAAC7tC,MAApB,EAA4B2wC,KAAK,GAAG,CAAzC,EAA4CnwC,CAAC,GAAGgxB,IAAhD,EAAsD,EAAEhxB,CAAxD,EAA2D;AACzDkuC,IAAAA,MAAM,GAAGb,KAAK,CAACrtC,CAAD,CAAd;AACAitC,IAAAA,GAAG,GAAGiB,MAAM,CAACjB,GAAb;AACAA,IAAAA,GAAG,CAACtyB,MAAJ,CACEuzB,MAAM,CAACvqC,KAAP,IAAgBs1B,SAAS,CAACvrB,CAD5B,EAEEwgC,MAAM,CAACxqC,MAAP,IAAiBu1B,SAAS,CAACsW,CAF7B,EAGEM,UAAU,CAAC3B,MAAM,CAACxQ,UAAR,EAAoBzE,SAApB,CAHZ;;AAKA,sBAAsB+V,UAAU,CAAC/V,SAAD,EAAY8U,MAAZ,EAAoBG,MAApB,EAA4B7b,MAA5B,CAAhC;AAAA,QAAOmd,IAAP,eAAOA,IAAP;AAAA,QAAaC,KAAb,eAAaA,KAAb;;AACAU,IAAAA,KAAK,IAAIX,IAAI,IAAIU,UAAU,CAAC1wC,MAA5B;AACAmoC,IAAAA,OAAO,GAAGA,OAAO,IAAI8H,KAArB;;AACA,QAAI,CAACxC,GAAG,CAACkB,QAAT,EAAmB;AACjB+B,MAAAA,UAAU,CAACnuC,IAAX,CAAgBmsC,MAAhB;AACD;AACF;;AACD,SAAOiC,KAAK,IAAIF,QAAQ,CAACC,UAAD,EAAajX,SAAb,EAAwB8U,MAAxB,EAAgC1b,MAAhC,CAAjB,IAA4DsV,OAAnE;AACD;;AACD,SAASyI,UAAT,CAAoBnD,GAApB,EAAyBzpC,IAAzB,EAA+BF,GAA/B,EAAoCK,KAApC,EAA2CD,MAA3C,EAAmD;AACjDupC,EAAAA,GAAG,CAAC3pC,GAAJ,GAAUA,GAAV;AACA2pC,EAAAA,GAAG,CAACzpC,IAAJ,GAAWA,IAAX;AACAypC,EAAAA,GAAG,CAACxpC,KAAJ,GAAYD,IAAI,GAAGG,KAAnB;AACAspC,EAAAA,GAAG,CAAC1pC,MAAJ,GAAaD,GAAG,GAAGI,MAAnB;AACAupC,EAAAA,GAAG,CAACtpC,KAAJ,GAAYA,KAAZ;AACAspC,EAAAA,GAAG,CAACvpC,MAAJ,GAAaA,MAAb;AACD;;AACD,SAAS2sC,UAAT,CAAoBhD,KAApB,EAA2BpU,SAA3B,EAAsC8U,MAAtC,EAA8C1b,MAA9C,EAAsD;AACpD,MAAMie,WAAW,GAAGvC,MAAM,CAACwC,OAA3B;AACA,MAAKhjC,CAAL,GAAa0rB,SAAb,CAAK1rB,CAAL;AAAA,MAAQC,CAAR,GAAayrB,SAAb,CAAQzrB,CAAR;;AAFoD,8CAG/B6/B,KAH+B;AAAA;;AAAA;AAGpD,2DAA4B;AAAA,UAAjBa,MAAiB;AAC1B,UAAMjB,GAAG,GAAGiB,MAAM,CAACjB,GAAnB;AACA,UAAM/b,KAAK,GAAGmB,MAAM,CAAC6b,MAAM,CAAChd,KAAR,CAAN,IAAwB;AAAC/uB,QAAAA,KAAK,EAAE,CAAR;AAAW0rC,QAAAA,MAAM,EAAE,CAAnB;AAAsBpvC,QAAAA,MAAM,EAAE;AAA9B,OAAtC;AACA,UAAMA,MAAM,GAAIyvC,MAAM,CAACX,WAAP,GAAqBrc,KAAK,CAACzyB,MAA5B,IAAuC,CAAtD;;AACA,UAAIyvC,MAAM,CAACxQ,UAAX,EAAuB;AACrB,YAAM/5B,KAAK,GAAGs1B,SAAS,CAACvrB,CAAV,GAAcjP,MAA5B;AACA,YAAMiF,MAAM,GAAGwtB,KAAK,CAAC5yB,IAAN,IAAc2uC,GAAG,CAACvpC,MAAjC;;AACA,YAAI,uBAAQwtB,KAAK,CAAClvB,KAAd,CAAJ,EAA0B;AACxBwL,UAAAA,CAAC,GAAG0jB,KAAK,CAAClvB,KAAV;AACD;;AACD,YAAIirC,GAAG,CAACkB,QAAR,EAAkB;AAChBiC,UAAAA,UAAU,CAACnD,GAAD,EAAMqD,WAAW,CAAC9sC,IAAlB,EAAwBgK,CAAxB,EAA2BugC,MAAM,CAAC3wB,UAAP,GAAoBkzB,WAAW,CAAC7sC,KAAhC,GAAwC6sC,WAAW,CAAC9sC,IAA/E,EAAqFE,MAArF,CAAV;AACD,SAFD,MAEO;AACL0sC,UAAAA,UAAU,CAACnD,GAAD,EAAMhU,SAAS,CAACz1B,IAAV,GAAiB0tB,KAAK,CAAC2c,MAA7B,EAAqCrgC,CAArC,EAAwC7J,KAAxC,EAA+CD,MAA/C,CAAV;AACD;;AACDwtB,QAAAA,KAAK,CAAClvB,KAAN,GAAcwL,CAAd;AACA0jB,QAAAA,KAAK,CAAC2c,MAAN,IAAgBlqC,KAAhB;AACA6J,QAAAA,CAAC,GAAGy/B,GAAG,CAAC1pC,MAAR;AACD,OAdD,MAcO;AACL,YAAMG,OAAM,GAAGu1B,SAAS,CAACsW,CAAV,GAAc9wC,MAA7B;;AACA,YAAMkF,MAAK,GAAGutB,KAAK,CAAC5yB,IAAN,IAAc2uC,GAAG,CAACtpC,KAAhC;;AACA,YAAI,uBAAQutB,KAAK,CAAClvB,KAAd,CAAJ,EAA0B;AACxBuL,UAAAA,CAAC,GAAG2jB,KAAK,CAAClvB,KAAV;AACD;;AACD,YAAIirC,GAAG,CAACkB,QAAR,EAAkB;AAChBiC,UAAAA,UAAU,CAACnD,GAAD,EAAM1/B,CAAN,EAAS+iC,WAAW,CAAChtC,GAArB,EAA0BK,MAA1B,EAAiCoqC,MAAM,CAACqB,WAAP,GAAqBkB,WAAW,CAAC/sC,MAAjC,GAA0C+sC,WAAW,CAAChtC,GAAvF,CAAV;AACD,SAFD,MAEO;AACL8sC,UAAAA,UAAU,CAACnD,GAAD,EAAM1/B,CAAN,EAAS0rB,SAAS,CAAC31B,GAAV,GAAgB4tB,KAAK,CAAC2c,MAA/B,EAAuClqC,MAAvC,EAA8CD,OAA9C,CAAV;AACD;;AACDwtB,QAAAA,KAAK,CAAClvB,KAAN,GAAcuL,CAAd;AACA2jB,QAAAA,KAAK,CAAC2c,MAAN,IAAgBnqC,OAAhB;AACA6J,QAAAA,CAAC,GAAG0/B,GAAG,CAACxpC,KAAR;AACD;AACF;AApCmD;AAAA;AAAA;AAAA;AAAA;;AAqCpDw1B,EAAAA,SAAS,CAAC1rB,CAAV,GAAcA,CAAd;AACA0rB,EAAAA,SAAS,CAACzrB,CAAV,GAAcA,CAAd;AACD;;AACDtP,kBAASqN,GAAT,CAAa,QAAb,EAAuB;AACrBilC,EAAAA,WAAW,EAAE,IADQ;AAErBD,EAAAA,OAAO,EAAE;AACPjtC,IAAAA,GAAG,EAAE,CADE;AAEPG,IAAAA,KAAK,EAAE,CAFA;AAGPF,IAAAA,MAAM,EAAE,CAHD;AAIPC,IAAAA,IAAI,EAAE;AAJC;AAFY,CAAvB;;AASA,IAAIiqC,OAAO,GAAG;AACZgD,EAAAA,MADY,kBACL9vC,KADK,EACEiC,IADF,EACQ;AAClB,QAAI,CAACjC,KAAK,CAAC0sC,KAAX,EAAkB;AAChB1sC,MAAAA,KAAK,CAAC0sC,KAAN,GAAc,EAAd;AACD;;AACDzqC,IAAAA,IAAI,CAACurC,QAAL,GAAgBvrC,IAAI,CAACurC,QAAL,IAAiB,KAAjC;AACAvrC,IAAAA,IAAI,CAACzC,QAAL,GAAgByC,IAAI,CAACzC,QAAL,IAAiB,KAAjC;AACAyC,IAAAA,IAAI,CAACnE,MAAL,GAAcmE,IAAI,CAACnE,MAAL,IAAe,CAA7B;;AACAmE,IAAAA,IAAI,CAAC8tC,OAAL,GAAe9tC,IAAI,CAAC8tC,OAAL,IAAgB,YAAW;AACxC,aAAO,CAAC;AACNjjC,QAAAA,CAAC,EAAE,CADG;AAENke,QAAAA,IAFM,gBAEDsN,SAFC,EAEU;AACdr2B,UAAAA,IAAI,CAAC+oB,IAAL,CAAUsN,SAAV;AACD;AAJK,OAAD,CAAP;AAMD,KAPD;;AAQAt4B,IAAAA,KAAK,CAAC0sC,KAAN,CAAYtrC,IAAZ,CAAiBa,IAAjB;AACD,GAjBW;AAkBZ+tC,EAAAA,SAlBY,qBAkBFhwC,KAlBE,EAkBKiwC,UAlBL,EAkBiB;AAC3B,QAAMxvC,KAAK,GAAGT,KAAK,CAAC0sC,KAAN,GAAc1sC,KAAK,CAAC0sC,KAAN,CAAYxmC,OAAZ,CAAoB+pC,UAApB,CAAd,GAAgD,CAAC,CAA/D;;AACA,QAAIxvC,KAAK,KAAK,CAAC,CAAf,EAAkB;AAChBT,MAAAA,KAAK,CAAC0sC,KAAN,CAAYxkB,MAAZ,CAAmBznB,KAAnB,EAA0B,CAA1B;AACD;AACF,GAvBW;AAwBZkuB,EAAAA,SAxBY,qBAwBF3uB,KAxBE,EAwBKiC,IAxBL,EAwBW/B,OAxBX,EAwBoB;AAC9B+B,IAAAA,IAAI,CAACurC,QAAL,GAAgBttC,OAAO,CAACstC,QAAxB;AACAvrC,IAAAA,IAAI,CAACzC,QAAL,GAAgBU,OAAO,CAACV,QAAxB;AACAyC,IAAAA,IAAI,CAACnE,MAAL,GAAcoC,OAAO,CAACpC,MAAtB;AACD,GA5BW;AA6BZkc,EAAAA,MA7BY,kBA6BLha,KA7BK,EA6BEgD,KA7BF,EA6BSD,MA7BT,EA6BiBmtC,UA7BjB,EA6B6B;AACvC,QAAI,CAAClwC,KAAL,EAAY;AACV;AACD;;AACD,QAAM4vC,OAAO,GAAG,uBAAU5vC,KAAK,CAACE,OAAN,CAAcqtC,MAAd,CAAqBqC,OAA/B,CAAhB;AACA,QAAMnC,cAAc,GAAG7rC,IAAI,CAAC0H,GAAL,CAAStG,KAAK,GAAG4sC,OAAO,CAAC5sC,KAAzB,EAAgC,CAAhC,CAAvB;AACA,QAAM0qC,eAAe,GAAG9rC,IAAI,CAAC0H,GAAL,CAASvG,MAAM,GAAG6sC,OAAO,CAAC7sC,MAA1B,EAAkC,CAAlC,CAAxB;AACA,QAAM2pC,KAAK,GAAGiB,gBAAgB,CAAC3tC,KAAK,CAAC0sC,KAAP,CAA9B;AACA,QAAMyD,aAAa,GAAGzD,KAAK,CAACsB,QAA5B;AACA,QAAMoC,eAAe,GAAG1D,KAAK,CAAC3P,UAA9B;AACA,2BAAK/8B,KAAK,CAAC0sC,KAAX,EAAkB,UAAAJ,GAAG,EAAI;AACvB,UAAI,OAAOA,GAAG,CAAC+D,YAAX,KAA4B,UAAhC,EAA4C;AAC1C/D,QAAAA,GAAG,CAAC+D,YAAJ;AACD;AACF,KAJD;AAKA,QAAMC,uBAAuB,GAAGH,aAAa,CAACjxC,MAAd,CAAqB,UAACkkC,KAAD,EAAQ2J,IAAR;AAAA,aACnDA,IAAI,CAACT,GAAL,CAASpsC,OAAT,IAAoB6sC,IAAI,CAACT,GAAL,CAASpsC,OAAT,CAAiBpB,OAAjB,KAA6B,KAAjD,GAAyDskC,KAAzD,GAAiEA,KAAK,GAAG,CADtB;AAAA,KAArB,EAC8C,CAD9C,KACoD,CADpF;AAEA,QAAMgK,MAAM,GAAGlhC,MAAM,CAACitB,MAAP,CAAc;AAC3B1c,MAAAA,UAAU,EAAEzZ,KADe;AAE3ByrC,MAAAA,WAAW,EAAE1rC,MAFc;AAG3B6sC,MAAAA,OAAO,EAAPA,OAH2B;AAI3BnC,MAAAA,cAAc,EAAdA,cAJ2B;AAK3BC,MAAAA,eAAe,EAAfA,eAL2B;AAM3BL,MAAAA,YAAY,EAAEI,cAAc,GAAG,CAAjB,GAAqB6C,uBANR;AAO3BhD,MAAAA,aAAa,EAAEI,eAAe,GAAG;AAPN,KAAd,CAAf;;AASA,QAAMQ,UAAU,GAAG,SAAc,EAAd,EAAkB0B,OAAlB,CAAnB;;AACAzB,IAAAA,gBAAgB,CAACD,UAAD,EAAa,uBAAUgC,UAAV,CAAb,CAAhB;;AACA,QAAM5X,SAAS,GAAG,SAAc;AAC9B4V,MAAAA,UAAU,EAAVA,UAD8B;AAE9BnhC,MAAAA,CAAC,EAAE0gC,cAF2B;AAG9BmB,MAAAA,CAAC,EAAElB,eAH2B;AAI9B9gC,MAAAA,CAAC,EAAEgjC,OAAO,CAAC/sC,IAJmB;AAK9BgK,MAAAA,CAAC,EAAE+iC,OAAO,CAACjtC;AALmB,KAAd,EAMfitC,OANe,CAAlB;;AAOA,QAAMle,MAAM,GAAGyb,aAAa,CAACgD,aAAa,CAACnwB,MAAd,CAAqBowB,eAArB,CAAD,EAAwChD,MAAxC,CAA5B;AACAkC,IAAAA,QAAQ,CAAC5C,KAAK,CAACc,QAAP,EAAiBlV,SAAjB,EAA4B8U,MAA5B,EAAoC1b,MAApC,CAAR;AACA4d,IAAAA,QAAQ,CAACa,aAAD,EAAgB7X,SAAhB,EAA2B8U,MAA3B,EAAmC1b,MAAnC,CAAR;;AACA,QAAI4d,QAAQ,CAACc,eAAD,EAAkB9X,SAAlB,EAA6B8U,MAA7B,EAAqC1b,MAArC,CAAZ,EAA0D;AACxD4d,MAAAA,QAAQ,CAACa,aAAD,EAAgB7X,SAAhB,EAA2B8U,MAA3B,EAAmC1b,MAAnC,CAAR;AACD;;AACDqd,IAAAA,gBAAgB,CAACzW,SAAD,CAAhB;AACAoX,IAAAA,UAAU,CAAChD,KAAK,CAACoB,UAAP,EAAmBxV,SAAnB,EAA8B8U,MAA9B,EAAsC1b,MAAtC,CAAV;AACA4G,IAAAA,SAAS,CAAC1rB,CAAV,IAAe0rB,SAAS,CAACvrB,CAAzB;AACAurB,IAAAA,SAAS,CAACzrB,CAAV,IAAeyrB,SAAS,CAACsW,CAAzB;AACAc,IAAAA,UAAU,CAAChD,KAAK,CAACqB,cAAP,EAAuBzV,SAAvB,EAAkC8U,MAAlC,EAA0C1b,MAA1C,CAAV;AACA1xB,IAAAA,KAAK,CAACs4B,SAAN,GAAkB;AAChBz1B,MAAAA,IAAI,EAAEy1B,SAAS,CAACz1B,IADA;AAEhBF,MAAAA,GAAG,EAAE21B,SAAS,CAAC31B,GAFC;AAGhBG,MAAAA,KAAK,EAAEw1B,SAAS,CAACz1B,IAAV,GAAiBy1B,SAAS,CAACvrB,CAHlB;AAIhBnK,MAAAA,MAAM,EAAE01B,SAAS,CAAC31B,GAAV,GAAgB21B,SAAS,CAACsW,CAJlB;AAKhB7rC,MAAAA,MAAM,EAAEu1B,SAAS,CAACsW,CALF;AAMhB5rC,MAAAA,KAAK,EAAEs1B,SAAS,CAACvrB;AAND,KAAlB;AAQA,2BAAK2/B,KAAK,CAACpU,SAAX,EAAsB,UAACiV,MAAD,EAAY;AAChC,UAAMjB,GAAG,GAAGiB,MAAM,CAACjB,GAAnB;;AACA,eAAcA,GAAd,EAAmBtsC,KAAK,CAACs4B,SAAzB;;AACAgU,MAAAA,GAAG,CAACtyB,MAAJ,CAAWse,SAAS,CAACvrB,CAArB,EAAwBurB,SAAS,CAACsW,CAAlC,EAAqC;AAAC/rC,QAAAA,IAAI,EAAE,CAAP;AAAUF,QAAAA,GAAG,EAAE,CAAf;AAAkBG,QAAAA,KAAK,EAAE,CAAzB;AAA4BF,QAAAA,MAAM,EAAE;AAApC,OAArC;AACD,KAJD;AAKD;AAxFW,CAAd;;;IA2FM2tC;;;;;;;WACJ,wBAAeC,MAAf,EAAuBjM,WAAvB,EAAoC,CAAE;;;WACtC,wBAAe7b,OAAf,EAAwB;AACtB,aAAO,KAAP;AACD;;;WACD,0BAAiB1oB,KAAjB,EAAwB3B,IAAxB,EAA8BqrB,QAA9B,EAAwC,CAAE;;;WAC1C,6BAAoB1pB,KAApB,EAA2B3B,IAA3B,EAAiCqrB,QAAjC,EAA2C,CAAE;;;WAC7C,+BAAsB;AACpB,aAAO,CAAP;AACD;;;WACD,wBAAexrB,OAAf,EAAwB8E,KAAxB,EAA+BD,MAA/B,EAAuCwhC,WAAvC,EAAoD;AAClDvhC,MAAAA,KAAK,GAAGpB,IAAI,CAAC0H,GAAL,CAAS,CAAT,EAAYtG,KAAK,IAAI9E,OAAO,CAAC8E,KAA7B,CAAR;AACAD,MAAAA,MAAM,GAAGA,MAAM,IAAI7E,OAAO,CAAC6E,MAA3B;AACA,aAAO;AACLC,QAAAA,KAAK,EAALA,KADK;AAELD,QAAAA,MAAM,EAAEnB,IAAI,CAAC0H,GAAL,CAAS,CAAT,EAAYi7B,WAAW,GAAG3iC,IAAI,CAACC,KAAL,CAAWmB,KAAK,GAAGuhC,WAAnB,CAAH,GAAqCxhC,MAA5D;AAFH,OAAP;AAID;;;WACD,oBAAWytC,MAAX,EAAmB;AACjB,aAAO,IAAP;AACD;;;WACD,sBAAahiB,MAAb,EAAqB,CACpB;;;;;;;;IAGGiiB;;;;;;;;;;;;;WACJ,wBAAexuC,IAAf,EAAqB;AACnB,aAAOA,IAAI,IAAIA,IAAI,CAACy0B,UAAb,IAA2Bz0B,IAAI,CAACy0B,UAAL,CAAgB,IAAhB,CAA3B,IAAoD,IAA3D;AACD;;;WACD,sBAAalI,MAAb,EAAqB;AACnBA,MAAAA,MAAM,CAACtuB,OAAP,CAAe6tB,SAAf,GAA2B,KAA3B;AACD;;;;EANyBwiB;;;AAS5B,IAAMG,WAAW,GAAG,UAApB;AACA,IAAMC,WAAW,GAAG;AAClBC,EAAAA,UAAU,EAAE,WADM;AAElBC,EAAAA,SAAS,EAAE,WAFO;AAGlBC,EAAAA,QAAQ,EAAE,SAHQ;AAIlBC,EAAAA,YAAY,EAAE,YAJI;AAKlBC,EAAAA,WAAW,EAAE,WALK;AAMlBC,EAAAA,WAAW,EAAE,WANK;AAOlBC,EAAAA,SAAS,EAAE,SAPO;AAQlBC,EAAAA,YAAY,EAAE,UARI;AASlBC,EAAAA,UAAU,EAAE;AATM,CAApB;;AAWA,IAAMC,aAAa,GAAG,SAAhBA,aAAgB,CAAAjoC,KAAK;AAAA,SAAIA,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAK,EAAhC;AAAA,CAA3B;;AACA,SAASkoC,UAAT,CAAoBd,MAApB,EAA4BjM,WAA5B,EAAyC;AACvC,MAAMthC,KAAK,GAAGutC,MAAM,CAACvtC,KAArB;AACA,MAAMsuC,YAAY,GAAGf,MAAM,CAACpyC,YAAP,CAAoB,QAApB,CAArB;AACA,MAAMozC,WAAW,GAAGhB,MAAM,CAACpyC,YAAP,CAAoB,OAApB,CAApB;AACAoyC,EAAAA,MAAM,CAACE,WAAD,CAAN,GAAsB;AACpBlmB,IAAAA,OAAO,EAAE;AACPznB,MAAAA,MAAM,EAAEwuC,YADD;AAEPvuC,MAAAA,KAAK,EAAEwuC,WAFA;AAGPvuC,MAAAA,KAAK,EAAE;AACLnE,QAAAA,OAAO,EAAEmE,KAAK,CAACnE,OADV;AAELiE,QAAAA,MAAM,EAAEE,KAAK,CAACF,MAFT;AAGLC,QAAAA,KAAK,EAAEC,KAAK,CAACD;AAHR;AAHA;AADW,GAAtB;AAWAC,EAAAA,KAAK,CAACnE,OAAN,GAAgBmE,KAAK,CAACnE,OAAN,IAAiB,OAAjC;AACAmE,EAAAA,KAAK,CAACwuC,SAAN,GAAkBxuC,KAAK,CAACwuC,SAAN,IAAmB,YAArC;;AACA,MAAIJ,aAAa,CAACG,WAAD,CAAjB,EAAgC;AAC9B,QAAME,YAAY,GAAG,uBAAalB,MAAb,EAAqB,OAArB,CAArB;;AACA,QAAIkB,YAAY,KAAK9yC,SAArB,EAAgC;AAC9B4xC,MAAAA,MAAM,CAACxtC,KAAP,GAAe0uC,YAAf;AACD;AACF;;AACD,MAAIL,aAAa,CAACE,YAAD,CAAjB,EAAiC;AAC/B,QAAIf,MAAM,CAACvtC,KAAP,CAAaF,MAAb,KAAwB,EAA5B,EAAgC;AAC9BytC,MAAAA,MAAM,CAACztC,MAAP,GAAgBytC,MAAM,CAACxtC,KAAP,IAAgBuhC,WAAW,IAAI,CAA/B,CAAhB;AACD,KAFD,MAEO;AACL,UAAMoN,aAAa,GAAG,uBAAanB,MAAb,EAAqB,QAArB,CAAtB;;AACA,UAAImB,aAAa,KAAK/yC,SAAtB,EAAiC;AAC/B4xC,QAAAA,MAAM,CAACztC,MAAP,GAAgB4uC,aAAhB;AACD;AACF;AACF;;AACD,SAAOnB,MAAP;AACD;;AACD,IAAMoB,oBAAoB,GAAGC,oBAA+B;AAACC,EAAAA,OAAO,EAAE;AAAV,CAA/B,GAAiD,KAA9E;;AACA,SAASC,WAAT,CAAqBvzB,IAArB,EAA2BngB,IAA3B,EAAiCqrB,QAAjC,EAA2C;AACzClL,EAAAA,IAAI,CAAClc,gBAAL,CAAsBjE,IAAtB,EAA4BqrB,QAA5B,EAAsCkoB,oBAAtC;AACD;;AACD,SAASI,cAAT,CAAwBhyC,KAAxB,EAA+B3B,IAA/B,EAAqCqrB,QAArC,EAA+C;AAC7C1pB,EAAAA,KAAK,CAACwwC,MAAN,CAAa7/B,mBAAb,CAAiCtS,IAAjC,EAAuCqrB,QAAvC,EAAiDkoB,oBAAjD;AACD;;AACD,SAASK,eAAT,CAAyB71B,KAAzB,EAAgCpc,KAAhC,EAAuC;AACrC,MAAM3B,IAAI,GAAGsyC,WAAW,CAACv0B,KAAK,CAAC/d,IAAP,CAAX,IAA2B+d,KAAK,CAAC/d,IAA9C;;AACA,8BAAe,uBAAsB+d,KAAtB,EAA6Bpc,KAA7B,CAAf;AAAA,MAAO4M,CAAP,yBAAOA,CAAP;AAAA,MAAUC,CAAV,yBAAUA,CAAV;;AACA,SAAO;AACLxO,IAAAA,IAAI,EAAJA,IADK;AAEL2B,IAAAA,KAAK,EAALA,KAFK;AAGLkyC,IAAAA,MAAM,EAAE91B,KAHH;AAILxP,IAAAA,CAAC,EAAEA,CAAC,KAAKhO,SAAN,GAAkBgO,CAAlB,GAAsB,IAJpB;AAKLC,IAAAA,CAAC,EAAEA,CAAC,KAAKjO,SAAN,GAAkBiO,CAAlB,GAAsB;AALpB,GAAP;AAOD;;AACD,SAASslC,gBAAT,CAA0BC,QAA1B,EAAoC5B,MAApC,EAA4C;AAAA,8CACvB4B,QADuB;AAAA;;AAAA;AAC1C,2DAA6B;AAAA,UAAlB5zB,IAAkB;;AAC3B,UAAIA,IAAI,KAAKgyB,MAAT,IAAmBhyB,IAAI,CAAC6zB,QAAL,CAAc7B,MAAd,CAAvB,EAA8C;AAC5C,eAAO,IAAP;AACD;AACF;AALyC;AAAA;AAAA;AAAA;AAAA;AAM3C;;AACD,SAAS8B,oBAAT,CAA8BtyC,KAA9B,EAAqC3B,IAArC,EAA2CqrB,QAA3C,EAAqD;AACnD,MAAM8mB,MAAM,GAAGxwC,KAAK,CAACwwC,MAArB;AACA,MAAM/nC,QAAQ,GAAG,IAAImW,gBAAJ,CAAqB,UAAAjW,OAAO,EAAI;AAC/C,QAAI0T,OAAO,GAAG,KAAd;;AAD+C,gDAE3B1T,OAF2B;AAAA;;AAAA;AAE/C,6DAA6B;AAAA,YAAlBC,KAAkB;AAC3ByT,QAAAA,OAAO,GAAGA,OAAO,IAAI81B,gBAAgB,CAACvpC,KAAK,CAACoW,UAAP,EAAmBwxB,MAAnB,CAArC;AACAn0B,QAAAA,OAAO,GAAGA,OAAO,IAAI,CAAC81B,gBAAgB,CAACvpC,KAAK,CAAC2pC,YAAP,EAAqB/B,MAArB,CAAtC;AACD;AAL8C;AAAA;AAAA;AAAA;AAAA;;AAM/C,QAAIn0B,OAAJ,EAAa;AACXqN,MAAAA,QAAQ;AACT;AACF,GATgB,CAAjB;AAUAjhB,EAAAA,QAAQ,CAACgB,OAAT,CAAiBpM,QAAjB,EAA2B;AAAC8hB,IAAAA,SAAS,EAAE,IAAZ;AAAkBC,IAAAA,OAAO,EAAE;AAA3B,GAA3B;AACA,SAAO3W,QAAP;AACD;;AACD,SAAS+pC,oBAAT,CAA8BxyC,KAA9B,EAAqC3B,IAArC,EAA2CqrB,QAA3C,EAAqD;AACnD,MAAM8mB,MAAM,GAAGxwC,KAAK,CAACwwC,MAArB;AACA,MAAM/nC,QAAQ,GAAG,IAAImW,gBAAJ,CAAqB,UAAAjW,OAAO,EAAI;AAC/C,QAAI0T,OAAO,GAAG,KAAd;;AAD+C,gDAE3B1T,OAF2B;AAAA;;AAAA;AAE/C,6DAA6B;AAAA,YAAlBC,KAAkB;AAC3ByT,QAAAA,OAAO,GAAGA,OAAO,IAAI81B,gBAAgB,CAACvpC,KAAK,CAAC2pC,YAAP,EAAqB/B,MAArB,CAArC;AACAn0B,QAAAA,OAAO,GAAGA,OAAO,IAAI,CAAC81B,gBAAgB,CAACvpC,KAAK,CAACoW,UAAP,EAAmBwxB,MAAnB,CAAtC;AACD;AAL8C;AAAA;AAAA;AAAA;AAAA;;AAM/C,QAAIn0B,OAAJ,EAAa;AACXqN,MAAAA,QAAQ;AACT;AACF,GATgB,CAAjB;AAUAjhB,EAAAA,QAAQ,CAACgB,OAAT,CAAiBpM,QAAjB,EAA2B;AAAC8hB,IAAAA,SAAS,EAAE,IAAZ;AAAkBC,IAAAA,OAAO,EAAE;AAA3B,GAA3B;AACA,SAAO3W,QAAP;AACD;;AACD,IAAMgqC,kBAAkB,GAAG,IAAIt0B,GAAJ,EAA3B;AACA,IAAIu0B,mBAAmB,GAAG,CAA1B;;AACA,SAASC,cAAT,GAA0B;AACxB,MAAMC,GAAG,GAAGvwC,MAAM,CAAC6H,gBAAnB;;AACA,MAAI0oC,GAAG,KAAKF,mBAAZ,EAAiC;AAC/B;AACD;;AACDA,EAAAA,mBAAmB,GAAGE,GAAtB;AACAH,EAAAA,kBAAkB,CAAClvC,OAAnB,CAA2B,UAACY,MAAD,EAASnE,KAAT,EAAmB;AAC5C,QAAIA,KAAK,CAAC6yC,uBAAN,KAAkCD,GAAtC,EAA2C;AACzCzuC,MAAAA,MAAM;AACP;AACF,GAJD;AAKD;;AACD,SAAS2uC,6BAAT,CAAuC9yC,KAAvC,EAA8CmE,MAA9C,EAAsD;AACpD,MAAI,CAACsuC,kBAAkB,CAAC90C,IAAxB,EAA8B;AAC5B0E,IAAAA,MAAM,CAACC,gBAAP,CAAwB,QAAxB,EAAkCqwC,cAAlC;AACD;;AACDF,EAAAA,kBAAkB,CAAC7nC,GAAnB,CAAuB5K,KAAvB,EAA8BmE,MAA9B;AACD;;AACD,SAAS4uC,+BAAT,CAAyC/yC,KAAzC,EAAgD;AAC9CyyC,EAAAA,kBAAkB,CAAC7mB,MAAnB,CAA0B5rB,KAA1B;;AACA,MAAI,CAACyyC,kBAAkB,CAAC90C,IAAxB,EAA8B;AAC5B0E,IAAAA,MAAM,CAACsO,mBAAP,CAA2B,QAA3B,EAAqCgiC,cAArC;AACD;AACF;;AACD,SAASK,oBAAT,CAA8BhzC,KAA9B,EAAqC3B,IAArC,EAA2CqrB,QAA3C,EAAqD;AACnD,MAAM8mB,MAAM,GAAGxwC,KAAK,CAACwwC,MAArB;AACA,MAAM9mC,SAAS,GAAG8mC,MAAM,IAAI,uBAAeA,MAAf,CAA5B;;AACA,MAAI,CAAC9mC,SAAL,EAAgB;AACd;AACD;;AACD,MAAMvF,MAAM,GAAG,uBAAU,UAACnB,KAAD,EAAQD,MAAR,EAAmB;AAC1C,QAAMgK,CAAC,GAAGrD,SAAS,CAAClH,WAApB;AACAknB,IAAAA,QAAQ,CAAC1mB,KAAD,EAAQD,MAAR,CAAR;;AACA,QAAIgK,CAAC,GAAGrD,SAAS,CAAClH,WAAlB,EAA+B;AAC7BknB,MAAAA,QAAQ;AACT;AACF,GANc,EAMZrnB,MANY,CAAf;AAOA,MAAMoG,QAAQ,GAAG,IAAI2D,cAAJ,CAAmB,UAAAzD,OAAO,EAAI;AAC7C,QAAMC,KAAK,GAAGD,OAAO,CAAC,CAAD,CAArB;AACA,QAAM3F,KAAK,GAAG4F,KAAK,CAACqqC,WAAN,CAAkBjwC,KAAhC;AACA,QAAMD,MAAM,GAAG6F,KAAK,CAACqqC,WAAN,CAAkBlwC,MAAjC;;AACA,QAAIC,KAAK,KAAK,CAAV,IAAeD,MAAM,KAAK,CAA9B,EAAiC;AAC/B;AACD;;AACDoB,IAAAA,MAAM,CAACnB,KAAD,EAAQD,MAAR,CAAN;AACD,GARgB,CAAjB;AASA0F,EAAAA,QAAQ,CAACgB,OAAT,CAAiBC,SAAjB;AACAopC,EAAAA,6BAA6B,CAAC9yC,KAAD,EAAQmE,MAAR,CAA7B;AACA,SAAOsE,QAAP;AACD;;AACD,SAASyqC,eAAT,CAAyBlzC,KAAzB,EAAgC3B,IAAhC,EAAsCoK,QAAtC,EAAgD;AAC9C,MAAIA,QAAJ,EAAc;AACZA,IAAAA,QAAQ,CAAC0qC,UAAT;AACD;;AACD,MAAI90C,IAAI,KAAK,QAAb,EAAuB;AACrB00C,IAAAA,+BAA+B,CAAC/yC,KAAD,CAA/B;AACD;AACF;;AACD,SAASozC,oBAAT,CAA8BpzC,KAA9B,EAAqC3B,IAArC,EAA2CqrB,QAA3C,EAAqD;AACnD,MAAM8mB,MAAM,GAAGxwC,KAAK,CAACwwC,MAArB;AACA,MAAM6C,KAAK,GAAG,uBAAU,UAACj3B,KAAD,EAAW;AACjC,QAAIpc,KAAK,CAAC+zB,GAAN,KAAc,IAAlB,EAAwB;AACtBrK,MAAAA,QAAQ,CAACuoB,eAAe,CAAC71B,KAAD,EAAQpc,KAAR,CAAhB,CAAR;AACD;AACF,GAJa,EAIXA,KAJW,EAIJ,UAACmjB,IAAD,EAAU;AAClB,QAAM/G,KAAK,GAAG+G,IAAI,CAAC,CAAD,CAAlB;AACA,WAAO,CAAC/G,KAAD,EAAQA,KAAK,CAAC0kB,OAAd,EAAuB1kB,KAAK,CAAC2kB,OAA7B,CAAP;AACD,GAPa,CAAd;AAQAgR,EAAAA,WAAW,CAACvB,MAAD,EAASnyC,IAAT,EAAeg1C,KAAf,CAAX;AACA,SAAOA,KAAP;AACD;;IACKC;;;;;;;;;;;;;WACJ,wBAAe9C,MAAf,EAAuBjM,WAAvB,EAAoC;AAClC,UAAM7b,OAAO,GAAG8nB,MAAM,IAAIA,MAAM,CAAC9Z,UAAjB,IAA+B8Z,MAAM,CAAC9Z,UAAP,CAAkB,IAAlB,CAA/C;;AACA,UAAIhO,OAAO,IAAIA,OAAO,CAAC8nB,MAAR,KAAmBA,MAAlC,EAA0C;AACxCc,QAAAA,UAAU,CAACd,MAAD,EAASjM,WAAT,CAAV;AACA,eAAO7b,OAAP;AACD;;AACD,aAAO,IAAP;AACD;;;WACD,wBAAeA,OAAf,EAAwB;AACtB,UAAM8nB,MAAM,GAAG9nB,OAAO,CAAC8nB,MAAvB;;AACA,UAAI,CAACA,MAAM,CAACE,WAAD,CAAX,EAA0B;AACxB,eAAO,KAAP;AACD;;AACD,UAAMlmB,OAAO,GAAGgmB,MAAM,CAACE,WAAD,CAAN,CAAoBlmB,OAApC;AACA,OAAC,QAAD,EAAW,OAAX,EAAoBjnB,OAApB,CAA4B,UAACopB,IAAD,EAAU;AACpC,YAAMvjB,KAAK,GAAGohB,OAAO,CAACmC,IAAD,CAArB;;AACA,YAAI,uBAAcvjB,KAAd,CAAJ,EAA0B;AACxBonC,UAAAA,MAAM,CAACz/B,eAAP,CAAuB4b,IAAvB;AACD,SAFD,MAEO;AACL6jB,UAAAA,MAAM,CAAChqC,YAAP,CAAoBmmB,IAApB,EAA0BvjB,KAA1B;AACD;AACF,OAPD;AAQA,UAAMnG,KAAK,GAAGunB,OAAO,CAACvnB,KAAR,IAAiB,EAA/B;AACAiJ,MAAAA,MAAM,CAACC,IAAP,CAAYlJ,KAAZ,EAAmBM,OAAnB,CAA2B,UAACwM,GAAD,EAAS;AAClCygC,QAAAA,MAAM,CAACvtC,KAAP,CAAa8M,GAAb,IAAoB9M,KAAK,CAAC8M,GAAD,CAAzB;AACD,OAFD;AAGAygC,MAAAA,MAAM,CAACxtC,KAAP,GAAewtC,MAAM,CAACxtC,KAAtB;AACA,aAAOwtC,MAAM,CAACE,WAAD,CAAb;AACA,aAAO,IAAP;AACD;;;WACD,0BAAiB1wC,KAAjB,EAAwB3B,IAAxB,EAA8BqrB,QAA9B,EAAwC;AACtC,WAAK/Y,mBAAL,CAAyB3Q,KAAzB,EAAgC3B,IAAhC;AACA,UAAMk1C,OAAO,GAAGvzC,KAAK,CAACwzC,QAAN,KAAmBxzC,KAAK,CAACwzC,QAAN,GAAiB,EAApC,CAAhB;AACA,UAAMnjC,QAAQ,GAAG;AACfojC,QAAAA,MAAM,EAAEnB,oBADO;AAEfoB,QAAAA,MAAM,EAAElB,oBAFO;AAGfruC,QAAAA,MAAM,EAAE6uC;AAHO,OAAjB;AAKA,UAAMtiC,OAAO,GAAGL,QAAQ,CAAChS,IAAD,CAAR,IAAkB+0C,oBAAlC;AACAG,MAAAA,OAAO,CAACl1C,IAAD,CAAP,GAAgBqS,OAAO,CAAC1Q,KAAD,EAAQ3B,IAAR,EAAcqrB,QAAd,CAAvB;AACD;;;WACD,6BAAoB1pB,KAApB,EAA2B3B,IAA3B,EAAiC;AAC/B,UAAMk1C,OAAO,GAAGvzC,KAAK,CAACwzC,QAAN,KAAmBxzC,KAAK,CAACwzC,QAAN,GAAiB,EAApC,CAAhB;AACA,UAAMH,KAAK,GAAGE,OAAO,CAACl1C,IAAD,CAArB;;AACA,UAAI,CAACg1C,KAAL,EAAY;AACV;AACD;;AACD,UAAMhjC,QAAQ,GAAG;AACfojC,QAAAA,MAAM,EAAEP,eADO;AAEfQ,QAAAA,MAAM,EAAER,eAFO;AAGf/uC,QAAAA,MAAM,EAAE+uC;AAHO,OAAjB;AAKA,UAAMxiC,OAAO,GAAGL,QAAQ,CAAChS,IAAD,CAAR,IAAkB2zC,cAAlC;AACAthC,MAAAA,OAAO,CAAC1Q,KAAD,EAAQ3B,IAAR,EAAcg1C,KAAd,CAAP;AACAE,MAAAA,OAAO,CAACl1C,IAAD,CAAP,GAAgBO,SAAhB;AACD;;;WACD,+BAAsB;AACpB,aAAOyD,MAAM,CAAC6H,gBAAd;AACD;;;WACD,wBAAesmC,MAAf,EAAuBxtC,KAAvB,EAA8BD,MAA9B,EAAsCwhC,WAAtC,EAAmD;AACjD,aAAO,uBAAeiM,MAAf,EAAuBxtC,KAAvB,EAA8BD,MAA9B,EAAsCwhC,WAAtC,CAAP;AACD;;;WACD,oBAAWiM,MAAX,EAAmB;AACjB,UAAM9mC,SAAS,GAAG,uBAAe8mC,MAAf,CAAlB;AACA,aAAO,CAAC,EAAE9mC,SAAS,IAAIA,SAAS,CAACiqC,WAAzB,CAAR;AACD;;;;EAlEuBpD;;;;AAqE1B,SAASqD,eAAT,CAAyBpD,MAAzB,EAAiC;AAC/B,MAAI,CAAC,wBAAD,IAAuB,OAAOqD,eAAP,KAA2B,WAA3B,IAA0CrD,MAAM,YAAYqD,eAAvF,EAAyG;AACvG,WAAOpD,aAAP;AACD;;AACD,SAAO6C,WAAP;AACD;;IAEKQ;AACJ,qBAAc;AAAA;;AACZ,SAAKlnC,CAAL,GAAShO,SAAT;AACA,SAAKiO,CAAL,GAASjO,SAAT;AACA,SAAKme,MAAL,GAAc,KAAd;AACA,SAAK7c,OAAL,GAAetB,SAAf;AACA,SAAKwwB,WAAL,GAAmBxwB,SAAnB;AACD;;;;WACD,yBAAgBmsC,gBAAhB,EAAkC;AAChC,2BAAe,KAAKK,QAAL,CAAc,CAAC,GAAD,EAAM,GAAN,CAAd,EAA0BL,gBAA1B,CAAf;AAAA,UAAOn+B,CAAP,kBAAOA,CAAP;AAAA,UAAUC,CAAV,kBAAUA,CAAV;;AACA,aAAO;AAACD,QAAAA,CAAC,EAADA,CAAD;AAAIC,QAAAA,CAAC,EAADA;AAAJ,OAAP;AACD;;;WACD,oBAAW;AACT,aAAO,uBAAS,KAAKD,CAAd,KAAoB,uBAAS,KAAKC,CAAd,CAA3B;AACD;;;WACD,kBAAS+V,KAAT,EAAgBjhB,KAAhB,EAAuB;AAAA;;AACrB,UAAMwoB,KAAK,GAAG,KAAKiF,WAAnB;;AACA,UAAI,CAACztB,KAAD,IAAU,CAACwoB,KAAf,EAAsB;AACpB,eAAO,IAAP;AACD;;AACD,UAAM4pB,GAAG,GAAG,EAAZ;AACAnxB,MAAAA,KAAK,CAACrf,OAAN,CAAc,UAAAopB,IAAI,EAAI;AACpBonB,QAAAA,GAAG,CAACpnB,IAAD,CAAH,GAAYxC,KAAK,CAACwC,IAAD,CAAL,IAAexC,KAAK,CAACwC,IAAD,CAAL,CAAY5P,MAAZ,EAAf,GAAsCoN,KAAK,CAACwC,IAAD,CAAL,CAAYW,GAAlD,GAAwD,MAAI,CAACX,IAAD,CAAxE;AACD,OAFD;AAGA,aAAOonB,GAAP;AACD;;;;;;;AAEHD,OAAO,CAACv2C,QAAR,GAAmB,EAAnB;AACAu2C,OAAO,CAACE,aAAR,GAAwBp1C,SAAxB;AAEA,IAAMq1C,UAAU,GAAG;AACjBxwB,EAAAA,MADiB,kBACVra,KADU,EACH;AACZ,WAAO,uBAAQA,KAAR,IAAiBA,KAAjB,GAAyB,KAAKA,KAArC;AACD,GAHgB;AAIjB8qC,EAAAA,OAJiB,mBAITC,SAJS,EAIE1zC,KAJF,EAIS26B,KAJT,EAIgB;AAC/B,QAAI+Y,SAAS,KAAK,CAAlB,EAAqB;AACnB,aAAO,GAAP;AACD;;AACD,QAAMnQ,MAAM,GAAG,KAAKhkC,KAAL,CAAWE,OAAX,CAAmB8jC,MAAlC;AACA,QAAIoQ,QAAJ;AACA,QAAIC,KAAK,GAAGF,SAAZ;;AACA,QAAI/Y,KAAK,CAACv8B,MAAN,GAAe,CAAnB,EAAsB;AACpB,UAAMy1C,OAAO,GAAG1yC,IAAI,CAAC0H,GAAL,CAAS1H,IAAI,CAACs5B,GAAL,CAASE,KAAK,CAAC,CAAD,CAAL,CAAShyB,KAAlB,CAAT,EAAmCxH,IAAI,CAACs5B,GAAL,CAASE,KAAK,CAACA,KAAK,CAACv8B,MAAN,GAAe,CAAhB,CAAL,CAAwBuK,KAAjC,CAAnC,CAAhB;;AACA,UAAIkrC,OAAO,GAAG,IAAV,IAAkBA,OAAO,GAAG,KAAhC,EAAuC;AACrCF,QAAAA,QAAQ,GAAG,YAAX;AACD;;AACDC,MAAAA,KAAK,GAAGE,cAAc,CAACJ,SAAD,EAAY/Y,KAAZ,CAAtB;AACD;;AACD,QAAMoZ,QAAQ,GAAG,uBAAM5yC,IAAI,CAACs5B,GAAL,CAASmZ,KAAT,CAAN,CAAjB;AACA,QAAMI,UAAU,GAAG7yC,IAAI,CAAC0H,GAAL,CAAS1H,IAAI,CAACyH,GAAL,CAAS,CAAC,CAAD,GAAKzH,IAAI,CAACC,KAAL,CAAW2yC,QAAX,CAAd,EAAoC,EAApC,CAAT,EAAkD,CAAlD,CAAnB;AACA,QAAMt0C,OAAO,GAAG;AAACk0C,MAAAA,QAAQ,EAARA,QAAD;AAAWM,MAAAA,qBAAqB,EAAED,UAAlC;AAA8CE,MAAAA,qBAAqB,EAAEF;AAArE,KAAhB;;AACA,aAAcv0C,OAAd,EAAuB,KAAKA,OAAL,CAAak7B,KAAb,CAAmByN,MAA1C;;AACA,WAAO,uBAAasL,SAAb,EAAwBnQ,MAAxB,EAAgC9jC,OAAhC,CAAP;AACD,GAvBgB;AAwBjB00C,EAAAA,WAxBiB,uBAwBLT,SAxBK,EAwBM1zC,KAxBN,EAwBa26B,KAxBb,EAwBoB;AACnC,QAAI+Y,SAAS,KAAK,CAAlB,EAAqB;AACnB,aAAO,GAAP;AACD;;AACD,QAAM1mB,MAAM,GAAG0mB,SAAS,GAAIvyC,IAAI,CAACipC,GAAL,CAAS,EAAT,EAAajpC,IAAI,CAACC,KAAL,CAAW,uBAAMsyC,SAAN,CAAX,CAAb,CAA5B;;AACA,QAAI1mB,MAAM,KAAK,CAAX,IAAgBA,MAAM,KAAK,CAA3B,IAAgCA,MAAM,KAAK,CAA/C,EAAkD;AAChD,aAAOwmB,UAAU,CAACC,OAAX,CAAmB9wB,IAAnB,CAAwB,IAAxB,EAA8B+wB,SAA9B,EAAyC1zC,KAAzC,EAAgD26B,KAAhD,CAAP;AACD;;AACD,WAAO,EAAP;AACD;AAjCgB,CAAnB;;AAmCA,SAASmZ,cAAT,CAAwBJ,SAAxB,EAAmC/Y,KAAnC,EAA0C;AACxC,MAAIiZ,KAAK,GAAGjZ,KAAK,CAACv8B,MAAN,GAAe,CAAf,GAAmBu8B,KAAK,CAAC,CAAD,CAAL,CAAShyB,KAAT,GAAiBgyB,KAAK,CAAC,CAAD,CAAL,CAAShyB,KAA7C,GAAqDgyB,KAAK,CAAC,CAAD,CAAL,CAAShyB,KAAT,GAAiBgyB,KAAK,CAAC,CAAD,CAAL,CAAShyB,KAA3F;;AACA,MAAIxH,IAAI,CAACs5B,GAAL,CAASmZ,KAAT,KAAmB,CAAnB,IAAwBF,SAAS,KAAKvyC,IAAI,CAACC,KAAL,CAAWsyC,SAAX,CAA1C,EAAiE;AAC/DE,IAAAA,KAAK,GAAGF,SAAS,GAAGvyC,IAAI,CAACC,KAAL,CAAWsyC,SAAX,CAApB;AACD;;AACD,SAAOE,KAAP;AACD;;AACD,IAAIQ,KAAK,GAAG;AAACZ,EAAAA,UAAU,EAAVA;AAAD,CAAZ;;;AAEA12C,kBAASqN,GAAT,CAAa,OAAb,EAAsB;AACpB9L,EAAAA,OAAO,EAAE,IADW;AAEpB8I,EAAAA,MAAM,EAAE,KAFY;AAGpB8nB,EAAAA,OAAO,EAAE,KAHW;AAIpBsQ,EAAAA,WAAW,EAAE,KAJO;AAKpB8U,EAAAA,MAAM,EAAE,OALY;AAMpBC,EAAAA,KAAK,EAAE,CANa;AAOpBt1C,EAAAA,IAAI,EAAE;AACJX,IAAAA,OAAO,EAAE,IADL;AAEJ+lC,IAAAA,SAAS,EAAE,CAFP;AAGJmQ,IAAAA,UAAU,EAAE,IAHR;AAIJt1C,IAAAA,eAAe,EAAE,IAJb;AAKJu1C,IAAAA,SAAS,EAAE,IALP;AAMJC,IAAAA,UAAU,EAAE,CANR;AAOJC,IAAAA,SAAS,EAAE,mBAACrhB,IAAD,EAAO5zB,OAAP;AAAA,aAAmBA,OAAO,CAAC2kC,SAA3B;AAAA,KAPP;AAQJuQ,IAAAA,SAAS,EAAE,mBAACthB,IAAD,EAAO5zB,OAAP;AAAA,aAAmBA,OAAO,CAACgsB,KAA3B;AAAA,KARP;AASJtkB,IAAAA,MAAM,EAAE,KATJ;AAUJytC,IAAAA,UAAU,EAAE,EAVR;AAWJC,IAAAA,gBAAgB,EAAE,GAXd;AAYJpR,IAAAA,WAAW,EAAE;AAZT,GAPc;AAqBpBvlC,EAAAA,KAAK,EAAE;AACLG,IAAAA,OAAO,EAAE,KADJ;AAELC,IAAAA,IAAI,EAAE,EAFD;AAGL6wC,IAAAA,OAAO,EAAE;AACPjtC,MAAAA,GAAG,EAAE,CADE;AAEPC,MAAAA,MAAM,EAAE;AAFD;AAHJ,GArBa;AA6BpBw4B,EAAAA,KAAK,EAAE;AACLma,IAAAA,WAAW,EAAE,CADR;AAELC,IAAAA,WAAW,EAAE,EAFR;AAGLC,IAAAA,MAAM,EAAE,KAHH;AAILC,IAAAA,eAAe,EAAE,CAJZ;AAKLC,IAAAA,eAAe,EAAE,EALZ;AAML/F,IAAAA,OAAO,EAAE,CANJ;AAOL9wC,IAAAA,OAAO,EAAE,IAPJ;AAQL82C,IAAAA,QAAQ,EAAE,IARL;AASLC,IAAAA,eAAe,EAAE,CATZ;AAULC,IAAAA,WAAW,EAAE,CAVR;AAWLvsB,IAAAA,QAAQ,EAAEsrB,KAAK,CAACZ,UAAN,CAAiBxwB,MAXtB;AAYLsyB,IAAAA,KAAK,EAAE,EAZF;AAaLC,IAAAA,KAAK,EAAE,EAbF;AAcLC,IAAAA,KAAK,EAAE,QAdF;AAeLC,IAAAA,UAAU,EAAE,MAfP;AAgBLC,IAAAA,iBAAiB,EAAE,KAhBd;AAiBLC,IAAAA,aAAa,EAAE,2BAjBV;AAkBLC,IAAAA,eAAe,EAAE;AAlBZ;AA7Ba,CAAtB;;AAkDA94C,kBAAS+4C,KAAT,CAAe,aAAf,EAA8B,OAA9B,EAAuC,EAAvC,EAA2C,OAA3C;;AACA/4C,kBAAS+4C,KAAT,CAAe,YAAf,EAA6B,OAA7B,EAAsC,EAAtC,EAA0C,aAA1C;;AACA/4C,kBAAS+4C,KAAT,CAAe,YAAf,EAA6B,aAA7B,EAA4C,EAA5C,EAAgD,aAAhD;;AACA/4C,kBAAS+4C,KAAT,CAAe,aAAf,EAA8B,OAA9B,EAAuC,EAAvC,EAA2C,OAA3C;;AACA/4C,kBAASywB,QAAT,CAAkB,OAAlB,EAA2B;AACzBC,EAAAA,SAAS,EAAE,KADc;AAEzBE,EAAAA,WAAW,EAAE,qBAACxP,IAAD;AAAA,WAAU,CAACA,IAAI,CAAC43B,UAAL,CAAgB,QAAhB,CAAD,IAA8B,CAAC53B,IAAI,CAAC43B,UAAL,CAAgB,OAAhB,CAA/B,IAA2D53B,IAAI,KAAK,UAApE,IAAkFA,IAAI,KAAK,QAArG;AAAA,GAFY;AAGzBuP,EAAAA,UAAU,EAAE,oBAACvP,IAAD;AAAA,WAAUA,IAAI,KAAK,YAAT,IAAyBA,IAAI,KAAK,gBAA5C;AAAA;AAHa,CAA3B;;AAKAphB,kBAASywB,QAAT,CAAkB,QAAlB,EAA4B;AAC1BC,EAAAA,SAAS,EAAE;AADe,CAA5B;;AAGA1wB,kBAASywB,QAAT,CAAkB,aAAlB,EAAiC;AAC/BG,EAAAA,WAAW,EAAE,qBAACxP,IAAD;AAAA,WAAUA,IAAI,KAAK,iBAAT,IAA8BA,IAAI,KAAK,UAAjD;AAAA,GADkB;AAE/BuP,EAAAA,UAAU,EAAE,oBAACvP,IAAD;AAAA,WAAUA,IAAI,KAAK,iBAAnB;AAAA;AAFmB,CAAjC;;AAKA,SAASi3B,QAAT,CAAkBvoC,KAAlB,EAAyB+tB,KAAzB,EAAgC;AAC9B,MAAMob,QAAQ,GAAGnpC,KAAK,CAACnN,OAAN,CAAck7B,KAA/B;AACA,MAAMqb,UAAU,GAAGD,QAAQ,CAACE,aAAT,IAA0BC,iBAAiB,CAACtpC,KAAD,CAA9D;AACA,MAAMupC,YAAY,GAAGJ,QAAQ,CAACR,KAAT,CAAe11C,OAAf,GAAyBu2C,eAAe,CAACzb,KAAD,CAAxC,GAAkD,EAAvE;AACA,MAAM0b,eAAe,GAAGF,YAAY,CAAC/3C,MAArC;AACA,MAAMqhB,KAAK,GAAG02B,YAAY,CAAC,CAAD,CAA1B;AACA,MAAMhY,IAAI,GAAGgY,YAAY,CAACE,eAAe,GAAG,CAAnB,CAAzB;AACA,MAAMC,QAAQ,GAAG,EAAjB;;AACA,MAAID,eAAe,GAAGL,UAAtB,EAAkC;AAChCO,IAAAA,UAAU,CAAC5b,KAAD,EAAQ2b,QAAR,EAAkBH,YAAlB,EAAgCE,eAAe,GAAGL,UAAlD,CAAV;AACA,WAAOM,QAAP;AACD;;AACD,MAAMvU,OAAO,GAAGyU,gBAAgB,CAACL,YAAD,EAAexb,KAAf,EAAsBqb,UAAtB,CAAhC;;AACA,MAAIK,eAAe,GAAG,CAAtB,EAAyB;AACvB,QAAIz3C,CAAJ,EAAOgxB,IAAP;AACA,QAAM6mB,eAAe,GAAGJ,eAAe,GAAG,CAAlB,GAAsBl1C,IAAI,CAACu1C,KAAL,CAAW,CAACvY,IAAI,GAAG1e,KAAR,KAAkB42B,eAAe,GAAG,CAApC,CAAX,CAAtB,GAA2E,IAAnG;AACAvW,IAAAA,IAAI,CAACnF,KAAD,EAAQ2b,QAAR,EAAkBvU,OAAlB,EAA2B,uBAAc0U,eAAd,IAAiC,CAAjC,GAAqCh3B,KAAK,GAAGg3B,eAAxE,EAAyFh3B,KAAzF,CAAJ;;AACA,SAAK7gB,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAGymB,eAAe,GAAG,CAArC,EAAwCz3C,CAAC,GAAGgxB,IAA5C,EAAkDhxB,CAAC,EAAnD,EAAuD;AACrDkhC,MAAAA,IAAI,CAACnF,KAAD,EAAQ2b,QAAR,EAAkBvU,OAAlB,EAA2BoU,YAAY,CAACv3C,CAAD,CAAvC,EAA4Cu3C,YAAY,CAACv3C,CAAC,GAAG,CAAL,CAAxD,CAAJ;AACD;;AACDkhC,IAAAA,IAAI,CAACnF,KAAD,EAAQ2b,QAAR,EAAkBvU,OAAlB,EAA2B5D,IAA3B,EAAiC,uBAAcsY,eAAd,IAAiC9b,KAAK,CAACv8B,MAAvC,GAAgD+/B,IAAI,GAAGsY,eAAxF,CAAJ;AACA,WAAOH,QAAP;AACD;;AACDxW,EAAAA,IAAI,CAACnF,KAAD,EAAQ2b,QAAR,EAAkBvU,OAAlB,CAAJ;AACA,SAAOuU,QAAP;AACD;;AACD,SAASJ,iBAAT,CAA2BtpC,KAA3B,EAAkC;AAChC,MAAMzF,MAAM,GAAGyF,KAAK,CAACnN,OAAN,CAAc0H,MAA7B;;AACA,MAAMstC,UAAU,GAAG7nC,KAAK,CAAC+pC,SAAN,EAAnB;;AACA,MAAMC,QAAQ,GAAGhqC,KAAK,CAAC0tB,OAAN,GAAgBma,UAAhB,IAA8BttC,MAAM,GAAG,CAAH,GAAO,CAA3C,CAAjB;AACA,MAAM0vC,QAAQ,GAAGjqC,KAAK,CAACkqC,UAAN,GAAmBrC,UAApC;AACA,SAAOtzC,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACyH,GAAL,CAASguC,QAAT,EAAmBC,QAAnB,CAAX,CAAP;AACD;;AACD,SAASL,gBAAT,CAA0BL,YAA1B,EAAwCxb,KAAxC,EAA+Cqb,UAA/C,EAA2D;AACzD,MAAMe,gBAAgB,GAAGC,cAAc,CAACb,YAAD,CAAvC;AACA,MAAMpU,OAAO,GAAGpH,KAAK,CAACv8B,MAAN,GAAe43C,UAA/B;;AACA,MAAI,CAACe,gBAAL,EAAuB;AACrB,WAAO51C,IAAI,CAAC0H,GAAL,CAASk5B,OAAT,EAAkB,CAAlB,CAAP;AACD;;AACD,MAAMkV,OAAO,GAAG,uBAAWF,gBAAX,CAAhB;;AACA,OAAK,IAAIn4C,CAAC,GAAG,CAAR,EAAWgxB,IAAI,GAAGqnB,OAAO,CAAC74C,MAAR,GAAiB,CAAxC,EAA2CQ,CAAC,GAAGgxB,IAA/C,EAAqDhxB,CAAC,EAAtD,EAA0D;AACxD,QAAM4sB,MAAM,GAAGyrB,OAAO,CAACr4C,CAAD,CAAtB;;AACA,QAAI4sB,MAAM,GAAGuW,OAAb,EAAsB;AACpB,aAAOvW,MAAP;AACD;AACF;;AACD,SAAOrqB,IAAI,CAAC0H,GAAL,CAASk5B,OAAT,EAAkB,CAAlB,CAAP;AACD;;AACD,SAASqU,eAAT,CAAyBzb,KAAzB,EAAgC;AAC9B,MAAM5S,MAAM,GAAG,EAAf;AACA,MAAInpB,CAAJ,EAAOgxB,IAAP;;AACA,OAAKhxB,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAG+K,KAAK,CAACv8B,MAAzB,EAAiCQ,CAAC,GAAGgxB,IAArC,EAA2ChxB,CAAC,EAA5C,EAAgD;AAC9C,QAAI+7B,KAAK,CAAC/7B,CAAD,CAAL,CAAS22C,KAAb,EAAoB;AAClBxtB,MAAAA,MAAM,CAACpnB,IAAP,CAAY/B,CAAZ;AACD;AACF;;AACD,SAAOmpB,MAAP;AACD;;AACD,SAASwuB,UAAT,CAAoB5b,KAApB,EAA2B2b,QAA3B,EAAqCH,YAArC,EAAmDpU,OAAnD,EAA4D;AAC1D,MAAIhhC,KAAK,GAAG,CAAZ;AACA,MAAIuK,IAAI,GAAG6qC,YAAY,CAAC,CAAD,CAAvB;AACA,MAAIv3C,CAAJ;AACAmjC,EAAAA,OAAO,GAAG5gC,IAAI,CAAC+1C,IAAL,CAAUnV,OAAV,CAAV;;AACA,OAAKnjC,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG+7B,KAAK,CAACv8B,MAAtB,EAA8BQ,CAAC,EAA/B,EAAmC;AACjC,QAAIA,CAAC,KAAK0M,IAAV,EAAgB;AACdgrC,MAAAA,QAAQ,CAAC31C,IAAT,CAAcg6B,KAAK,CAAC/7B,CAAD,CAAnB;AACAmC,MAAAA,KAAK;AACLuK,MAAAA,IAAI,GAAG6qC,YAAY,CAACp1C,KAAK,GAAGghC,OAAT,CAAnB;AACD;AACF;AACF;;AACD,SAASjC,IAAT,CAAcnF,KAAd,EAAqB2b,QAArB,EAA+BvU,OAA/B,EAAwCoV,UAAxC,EAAoDC,QAApD,EAA8D;AAC5D,MAAMx2C,KAAK,GAAG,uBAAeu2C,UAAf,EAA2B,CAA3B,CAAd;AACA,MAAMt2C,GAAG,GAAGM,IAAI,CAACyH,GAAL,CAAS,uBAAewuC,QAAf,EAAyBzc,KAAK,CAACv8B,MAA/B,CAAT,EAAiDu8B,KAAK,CAACv8B,MAAvD,CAAZ;AACA,MAAI2C,KAAK,GAAG,CAAZ;AACA,MAAI3C,MAAJ,EAAYQ,CAAZ,EAAe0M,IAAf;AACAy2B,EAAAA,OAAO,GAAG5gC,IAAI,CAAC+1C,IAAL,CAAUnV,OAAV,CAAV;;AACA,MAAIqV,QAAJ,EAAc;AACZh5C,IAAAA,MAAM,GAAGg5C,QAAQ,GAAGD,UAApB;AACApV,IAAAA,OAAO,GAAG3jC,MAAM,GAAG+C,IAAI,CAACC,KAAL,CAAWhD,MAAM,GAAG2jC,OAApB,CAAnB;AACD;;AACDz2B,EAAAA,IAAI,GAAG1K,KAAP;;AACA,SAAO0K,IAAI,GAAG,CAAd,EAAiB;AACfvK,IAAAA,KAAK;AACLuK,IAAAA,IAAI,GAAGnK,IAAI,CAACu1C,KAAL,CAAW91C,KAAK,GAAGG,KAAK,GAAGghC,OAA3B,CAAP;AACD;;AACD,OAAKnjC,CAAC,GAAGuC,IAAI,CAAC0H,GAAL,CAASjI,KAAT,EAAgB,CAAhB,CAAT,EAA6BhC,CAAC,GAAGiC,GAAjC,EAAsCjC,CAAC,EAAvC,EAA2C;AACzC,QAAIA,CAAC,KAAK0M,IAAV,EAAgB;AACdgrC,MAAAA,QAAQ,CAAC31C,IAAT,CAAcg6B,KAAK,CAAC/7B,CAAD,CAAnB;AACAmC,MAAAA,KAAK;AACLuK,MAAAA,IAAI,GAAGnK,IAAI,CAACu1C,KAAL,CAAW91C,KAAK,GAAGG,KAAK,GAAGghC,OAA3B,CAAP;AACD;AACF;AACF;;AACD,SAASiV,cAAT,CAAwBh1B,GAAxB,EAA6B;AAC3B,MAAMvT,GAAG,GAAGuT,GAAG,CAAC5jB,MAAhB;AACA,MAAIQ,CAAJ,EAAOy4C,IAAP;;AACA,MAAI5oC,GAAG,GAAG,CAAV,EAAa;AACX,WAAO,KAAP;AACD;;AACD,OAAK4oC,IAAI,GAAGr1B,GAAG,CAAC,CAAD,CAAV,EAAepjB,CAAC,GAAG,CAAxB,EAA2BA,CAAC,GAAG6P,GAA/B,EAAoC,EAAE7P,CAAtC,EAAyC;AACvC,QAAIojB,GAAG,CAACpjB,CAAD,CAAH,GAASojB,GAAG,CAACpjB,CAAC,GAAG,CAAL,CAAZ,KAAwBy4C,IAA5B,EAAkC;AAChC,aAAO,KAAP;AACD;AACF;;AACD,SAAOA,IAAP;AACD;;AAED,IAAMC,YAAY,GAAG,SAAfA,YAAe,CAAC9B,KAAD;AAAA,SAAWA,KAAK,KAAK,MAAV,GAAmB,OAAnB,GAA6BA,KAAK,KAAK,OAAV,GAAoB,MAApB,GAA6BA,KAArE;AAAA,CAArB;;AACA,IAAM+B,cAAc,GAAG,SAAjBA,cAAiB,CAAC3qC,KAAD,EAAQ6vB,IAAR,EAAct1B,MAAd;AAAA,SAAyBs1B,IAAI,KAAK,KAAT,IAAkBA,IAAI,KAAK,MAA3B,GAAoC7vB,KAAK,CAAC6vB,IAAD,CAAL,GAAct1B,MAAlD,GAA2DyF,KAAK,CAAC6vB,IAAD,CAAL,GAAct1B,MAAlG;AAAA,CAAvB;;AACA,SAASqwC,MAAT,CAAgBx1B,GAAhB,EAAqBy1B,QAArB,EAA+B;AAC7B,MAAM1vB,MAAM,GAAG,EAAf;AACA,MAAM2vB,SAAS,GAAG11B,GAAG,CAAC5jB,MAAJ,GAAaq5C,QAA/B;AACA,MAAMhpC,GAAG,GAAGuT,GAAG,CAAC5jB,MAAhB;AACA,MAAIQ,CAAC,GAAG,CAAR;;AACA,SAAOA,CAAC,GAAG6P,GAAX,EAAgB7P,CAAC,IAAI84C,SAArB,EAAgC;AAC9B3vB,IAAAA,MAAM,CAACpnB,IAAP,CAAYqhB,GAAG,CAAC7gB,IAAI,CAACC,KAAL,CAAWxC,CAAX,CAAD,CAAf;AACD;;AACD,SAAOmpB,MAAP;AACD;;AACD,SAAS4vB,mBAAT,CAA6B/qC,KAA7B,EAAoC5M,KAApC,EAA2C43C,eAA3C,EAA4D;AAC1D,MAAMx5C,MAAM,GAAGwO,KAAK,CAAC+tB,KAAN,CAAYv8B,MAA3B;AACA,MAAMy5C,UAAU,GAAG12C,IAAI,CAACyH,GAAL,CAAS5I,KAAT,EAAgB5B,MAAM,GAAG,CAAzB,CAAnB;AACA,MAAMwC,KAAK,GAAGgM,KAAK,CAAC0xB,WAApB;AACA,MAAMz9B,GAAG,GAAG+L,KAAK,CAAC2xB,SAAlB;AACA,MAAMuZ,OAAO,GAAG,IAAhB;AACA,MAAIC,SAAS,GAAGnrC,KAAK,CAACguB,eAAN,CAAsBid,UAAtB,CAAhB;AACA,MAAI1wC,MAAJ;;AACA,MAAIywC,eAAJ,EAAqB;AACnB,QAAIx5C,MAAM,KAAK,CAAf,EAAkB;AAChB+I,MAAAA,MAAM,GAAGhG,IAAI,CAAC0H,GAAL,CAASkvC,SAAS,GAAGn3C,KAArB,EAA4BC,GAAG,GAAGk3C,SAAlC,CAAT;AACD,KAFD,MAEO,IAAI/3C,KAAK,KAAK,CAAd,EAAiB;AACtBmH,MAAAA,MAAM,GAAG,CAACyF,KAAK,CAACguB,eAAN,CAAsB,CAAtB,IAA2Bmd,SAA5B,IAAyC,CAAlD;AACD,KAFM,MAEA;AACL5wC,MAAAA,MAAM,GAAG,CAAC4wC,SAAS,GAAGnrC,KAAK,CAACguB,eAAN,CAAsBid,UAAU,GAAG,CAAnC,CAAb,IAAsD,CAA/D;AACD;;AACDE,IAAAA,SAAS,IAAIF,UAAU,GAAG73C,KAAb,GAAqBmH,MAArB,GAA8B,CAACA,MAA5C;;AACA,QAAI4wC,SAAS,GAAGn3C,KAAK,GAAGk3C,OAApB,IAA+BC,SAAS,GAAGl3C,GAAG,GAAGi3C,OAArD,EAA8D;AAC5D;AACD;AACF;;AACD,SAAOC,SAAP;AACD;;AACD,SAASC,cAAT,CAAwBC,MAAxB,EAAgC75C,MAAhC,EAAwC;AACtC,yBAAK65C,MAAL,EAAa,UAAC34B,KAAD,EAAW;AACtB,QAAM44B,EAAE,GAAG54B,KAAK,CAAC44B,EAAjB;AACA,QAAMC,KAAK,GAAGD,EAAE,CAAC95C,MAAH,GAAY,CAA1B;AACA,QAAIQ,CAAJ;;AACA,QAAIu5C,KAAK,GAAG/5C,MAAZ,EAAoB;AAClB,WAAKQ,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGu5C,KAAhB,EAAuB,EAAEv5C,CAAzB,EAA4B;AAC1B,eAAO0gB,KAAK,CAAC9f,IAAN,CAAW04C,EAAE,CAACt5C,CAAD,CAAb,CAAP;AACD;;AACDs5C,MAAAA,EAAE,CAACzwB,MAAH,CAAU,CAAV,EAAa0wB,KAAb;AACD;AACF,GAVD;AAWD;;AACD,SAASC,iBAAT,CAA2B34C,OAA3B,EAAoC;AAClC,SAAOA,OAAO,CAAC+0C,SAAR,GAAoB/0C,OAAO,CAACg1C,UAA5B,GAAyC,CAAhD;AACD;;AACD,SAAS4D,cAAT,CAAwB54C,OAAxB,EAAiC64C,QAAjC,EAA2C;AACzC,MAAI,CAAC74C,OAAO,CAACpB,OAAb,EAAsB;AACpB,WAAO,CAAP;AACD;;AACD,MAAMtB,IAAI,GAAG,uBAAO0C,OAAO,CAAC1C,IAAf,EAAqBu7C,QAArB,CAAb;AACA,MAAMnJ,OAAO,GAAG,uBAAU1vC,OAAO,CAAC0vC,OAAlB,CAAhB;AACA,MAAMoJ,KAAK,GAAG,uBAAQ94C,OAAO,CAACnB,IAAhB,IAAwBmB,OAAO,CAACnB,IAAR,CAAaF,MAArC,GAA8C,CAA5D;AACA,SAAQm6C,KAAK,GAAGx7C,IAAI,CAACy7C,UAAd,GAA4BrJ,OAAO,CAAC7sC,MAA3C;AACD;;AACD,SAASm2C,kBAAT,CAA4Bh3C,MAA5B,EAAoCmL,KAApC,EAA2C;AACzC,SAAO,uBAAcnL,MAAd,EAAsB;AAC3BmL,IAAAA,KAAK,EAALA,KAD2B;AAE3BhP,IAAAA,IAAI,EAAE;AAFqB,GAAtB,CAAP;AAID;;AACD,SAAS86C,iBAAT,CAA2Bj3C,MAA3B,EAAmCzB,KAAnC,EAA0C0qB,IAA1C,EAAgD;AAC9C,SAAO,uBAAcjpB,MAAd,EAAsB;AAC3BipB,IAAAA,IAAI,EAAJA,IAD2B;AAE3B1qB,IAAAA,KAAK,EAALA,KAF2B;AAG3BpC,IAAAA,IAAI,EAAE;AAHqB,GAAtB,CAAP;AAKD;;AACD,SAAS+6C,UAAT,CAAoBnD,KAApB,EAA2Bz2C,QAA3B,EAAqCkwB,OAArC,EAA8C;AAC5C,MAAIqkB,GAAG,GAAG,uBAAmBkC,KAAnB,CAAV;;AACA,MAAKvmB,OAAO,IAAIlwB,QAAQ,KAAK,OAAzB,IAAsC,CAACkwB,OAAD,IAAYlwB,QAAQ,KAAK,OAAnE,EAA6E;AAC3Eu0C,IAAAA,GAAG,GAAGgE,YAAY,CAAChE,GAAD,CAAlB;AACD;;AACD,SAAOA,GAAP;AACD;;AACD,SAASsF,SAAT,CAAmBhsC,KAAnB,EAA0BzF,MAA1B,EAAkCpI,QAAlC,EAA4Cy2C,KAA5C,EAAmD;AACjD,MAAOtzC,GAAP,GAA0C0K,KAA1C,CAAO1K,GAAP;AAAA,MAAYE,IAAZ,GAA0CwK,KAA1C,CAAYxK,IAAZ;AAAA,MAAkBD,MAAlB,GAA0CyK,KAA1C,CAAkBzK,MAAlB;AAAA,MAA0BE,KAA1B,GAA0CuK,KAA1C,CAA0BvK,KAA1B;AAAA,MAAiC9C,KAAjC,GAA0CqN,KAA1C,CAAiCrN,KAAjC;AACA,MAAOs4B,SAAP,GAA4Bt4B,KAA5B,CAAOs4B,SAAP;AAAA,MAAkBr5B,MAAlB,GAA4Be,KAA5B,CAAkBf,MAAlB;AACA,MAAIwhC,QAAQ,GAAG,CAAf;AACA,MAAIsC,QAAJ,EAAcuW,MAAd,EAAsBC,MAAtB;AACA,MAAMx2C,MAAM,GAAGH,MAAM,GAAGD,GAAxB;AACA,MAAMK,KAAK,GAAGF,KAAK,GAAGD,IAAtB;;AACA,MAAIwK,KAAK,CAACwvB,YAAN,EAAJ,EAA0B;AACxByc,IAAAA,MAAM,GAAG,wBAAerD,KAAf,EAAsBpzC,IAAtB,EAA4BC,KAA5B,CAAT;;AACA,QAAI,uBAAStD,QAAT,CAAJ,EAAwB;AACtB,UAAMg6C,cAAc,GAAGttC,MAAM,CAACC,IAAP,CAAY3M,QAAZ,EAAsB,CAAtB,CAAvB;AACA,UAAM4J,KAAK,GAAG5J,QAAQ,CAACg6C,cAAD,CAAtB;AACAD,MAAAA,MAAM,GAAGt6C,MAAM,CAACu6C,cAAD,CAAN,CAAuBre,gBAAvB,CAAwC/xB,KAAxC,IAAiDrG,MAAjD,GAA0D6E,MAAnE;AACD,KAJD,MAIO,IAAIpI,QAAQ,KAAK,QAAjB,EAA2B;AAChC+5C,MAAAA,MAAM,GAAG,CAACjhB,SAAS,CAAC11B,MAAV,GAAmB01B,SAAS,CAAC31B,GAA9B,IAAqC,CAArC,GAAyCI,MAAzC,GAAkD6E,MAA3D;AACD,KAFM,MAEA;AACL2xC,MAAAA,MAAM,GAAGvB,cAAc,CAAC3qC,KAAD,EAAQ7N,QAAR,EAAkBoI,MAAlB,CAAvB;AACD;;AACDm7B,IAAAA,QAAQ,GAAGjgC,KAAK,GAAGD,IAAnB;AACD,GAZD,MAYO;AACL,QAAI,uBAASrD,QAAT,CAAJ,EAAwB;AACtB,UAAMg6C,eAAc,GAAGttC,MAAM,CAACC,IAAP,CAAY3M,QAAZ,EAAsB,CAAtB,CAAvB;AACA,UAAM4J,MAAK,GAAG5J,QAAQ,CAACg6C,eAAD,CAAtB;AACAF,MAAAA,MAAM,GAAGr6C,MAAM,CAACu6C,eAAD,CAAN,CAAuBre,gBAAvB,CAAwC/xB,MAAxC,IAAiDpG,KAAjD,GAAyD4E,MAAlE;AACD,KAJD,MAIO,IAAIpI,QAAQ,KAAK,QAAjB,EAA2B;AAChC85C,MAAAA,MAAM,GAAG,CAAChhB,SAAS,CAACz1B,IAAV,GAAiBy1B,SAAS,CAACx1B,KAA5B,IAAqC,CAArC,GAAyCE,KAAzC,GAAiD4E,MAA1D;AACD,KAFM,MAEA;AACL0xC,MAAAA,MAAM,GAAGtB,cAAc,CAAC3qC,KAAD,EAAQ7N,QAAR,EAAkBoI,MAAlB,CAAvB;AACD;;AACD2xC,IAAAA,MAAM,GAAG,wBAAetD,KAAf,EAAsBrzC,MAAtB,EAA8BD,GAA9B,CAAT;AACA89B,IAAAA,QAAQ,GAAGjhC,QAAQ,KAAK,MAAb,GAAsB,CAACsiC,iBAAvB,GAAiCA,iBAA5C;AACD;;AACD,SAAO;AAACwX,IAAAA,MAAM,EAANA,MAAD;AAASC,IAAAA,MAAM,EAANA,MAAT;AAAiBxW,IAAAA,QAAQ,EAARA,QAAjB;AAA2BtC,IAAAA,QAAQ,EAARA;AAA3B,GAAP;AACD;;IACKgZ;;;;;AACJ,iBAAY/sB,GAAZ,EAAiB;AAAA;;AAAA;;AACf;AACA,WAAK9P,EAAL,GAAU8P,GAAG,CAAC9P,EAAd;AACA,WAAKve,IAAL,GAAYquB,GAAG,CAACruB,IAAhB;AACA,WAAK6B,OAAL,GAAetB,SAAf;AACA,WAAKm1B,GAAL,GAAWrH,GAAG,CAACqH,GAAf;AACA,WAAK/zB,KAAL,GAAa0sB,GAAG,CAAC1sB,KAAjB;AACA,WAAK2C,GAAL,GAAW/D,SAAX;AACA,WAAKgE,MAAL,GAAchE,SAAd;AACA,WAAKiE,IAAL,GAAYjE,SAAZ;AACA,WAAKkE,KAAL,GAAalE,SAAb;AACA,WAAKoE,KAAL,GAAapE,SAAb;AACA,WAAKmE,MAAL,GAAcnE,SAAd;AACA,WAAK86C,QAAL,GAAgB;AACd72C,MAAAA,IAAI,EAAE,CADQ;AAEdC,MAAAA,KAAK,EAAE,CAFO;AAGdH,MAAAA,GAAG,EAAE,CAHS;AAIdC,MAAAA,MAAM,EAAE;AAJM,KAAhB;AAMA,WAAKmgC,QAAL,GAAgBnkC,SAAhB;AACA,WAAKokC,SAAL,GAAiBpkC,SAAjB;AACA,WAAK+6C,UAAL,GAAkB/6C,SAAlB;AACA,WAAKg7C,aAAL,GAAqBh7C,SAArB;AACA,WAAKi7C,WAAL,GAAmBj7C,SAAnB;AACA,WAAKk7C,YAAL,GAAoBl7C,SAApB;AACA,WAAK4zB,IAAL,GAAY5zB,SAAZ;AACA,WAAKm7C,aAAL,GAAqBn7C,SAArB;AACA,WAAKyK,GAAL,GAAWzK,SAAX;AACA,WAAK0K,GAAL,GAAW1K,SAAX;AACA,WAAKo7C,MAAL,GAAcp7C,SAAd;AACA,WAAKw8B,KAAL,GAAa,EAAb;AACA,WAAK6e,cAAL,GAAsB,IAAtB;AACA,WAAKC,WAAL,GAAmB,IAAnB;AACA,WAAKC,WAAL,GAAmB,IAAnB;AACA,WAAKpf,OAAL,GAAe,CAAf;AACA,WAAKwc,UAAL,GAAkB,CAAlB;AACA,WAAK6C,iBAAL,GAAyB,EAAzB;AACA,WAAKrb,WAAL,GAAmBngC,SAAnB;AACA,WAAKogC,SAAL,GAAiBpgC,SAAjB;AACA,WAAKmrC,cAAL,GAAsB,KAAtB;AACA,WAAKsQ,QAAL,GAAgBz7C,SAAhB;AACA,WAAK07C,QAAL,GAAgB17C,SAAhB;AACA,WAAK27C,aAAL,GAAqB37C,SAArB;AACA,WAAK47C,aAAL,GAAqB57C,SAArB;AACA,WAAK67C,YAAL,GAAoB,CAApB;AACA,WAAKC,YAAL,GAAoB,CAApB;AACA,WAAKjgB,MAAL,GAAc,EAAd;AACA,WAAKkgB,iBAAL,GAAyB,KAAzB;AACA,WAAKjmB,QAAL,GAAgB91B,SAAhB;AAhDe;AAiDhB;;;;WACD,cAAKsB,OAAL,EAAc;AACZ,WAAKA,OAAL,GAAeA,OAAO,CAAC06C,UAAR,CAAmB,KAAKlkB,UAAL,EAAnB,CAAf;AACA,WAAKlE,IAAL,GAAYtyB,OAAO,CAACsyB,IAApB;AACA,WAAK8nB,QAAL,GAAgB,KAAK77C,KAAL,CAAWyB,OAAO,CAACmJ,GAAnB,CAAhB;AACA,WAAKgxC,QAAL,GAAgB,KAAK57C,KAAL,CAAWyB,OAAO,CAACoJ,GAAnB,CAAhB;AACA,WAAKkxC,aAAL,GAAqB,KAAK/7C,KAAL,CAAWyB,OAAO,CAAC26C,YAAnB,CAArB;AACA,WAAKN,aAAL,GAAqB,KAAK97C,KAAL,CAAWyB,OAAO,CAAC46C,YAAnB,CAArB;AACD;;;WACD,eAAM5nB,GAAN,EAAWzyB,KAAX,EAAkB;AAChB,aAAOyyB,GAAP;AACD;;;WACD,yBAAgB;AACd,UAAKonB,QAAL,GAAyD,IAAzD,CAAKA,QAAL;AAAA,UAAeD,QAAf,GAAyD,IAAzD,CAAeA,QAAf;AAAA,UAAyBG,aAAzB,GAAyD,IAAzD,CAAyBA,aAAzB;AAAA,UAAwCD,aAAxC,GAAyD,IAAzD,CAAwCA,aAAxC;AACAD,MAAAA,QAAQ,GAAG,uBAAgBA,QAAhB,EAA0Bl1B,MAAM,CAACoM,iBAAjC,CAAX;AACA6oB,MAAAA,QAAQ,GAAG,uBAAgBA,QAAhB,EAA0Bj1B,MAAM,CAACmM,iBAAjC,CAAX;AACAipB,MAAAA,aAAa,GAAG,uBAAgBA,aAAhB,EAA+Bp1B,MAAM,CAACoM,iBAAtC,CAAhB;AACA+oB,MAAAA,aAAa,GAAG,uBAAgBA,aAAhB,EAA+Bn1B,MAAM,CAACmM,iBAAtC,CAAhB;AACA,aAAO;AACLloB,QAAAA,GAAG,EAAE,uBAAgBixC,QAAhB,EAA0BE,aAA1B,CADA;AAELlxC,QAAAA,GAAG,EAAE,uBAAgB+wC,QAAhB,EAA0BE,aAA1B,CAFA;AAGLlpB,QAAAA,UAAU,EAAE,uBAAeipB,QAAf,CAHP;AAILhpB,QAAAA,UAAU,EAAE,uBAAe+oB,QAAf;AAJP,OAAP;AAMD;;;WACD,mBAAU3mB,QAAV,EAAoB;AAClB,gCAAyC,KAAKtC,aAAL,EAAzC;AAAA,UAAK/nB,GAAL,uBAAKA,GAAL;AAAA,UAAUC,GAAV,uBAAUA,GAAV;AAAA,UAAe+nB,UAAf,uBAAeA,UAAf;AAAA,UAA2BC,UAA3B,uBAA2BA,UAA3B;;AACA,UAAIiG,KAAJ;;AACA,UAAIlG,UAAU,IAAIC,UAAlB,EAA8B;AAC5B,eAAO;AAACjoB,UAAAA,GAAG,EAAHA,GAAD;AAAMC,UAAAA,GAAG,EAAHA;AAAN,SAAP;AACD;;AACD,UAAMyxC,KAAK,GAAG,KAAK9oB,uBAAL,EAAd;;AACA,WAAK,IAAI5yB,CAAC,GAAG,CAAR,EAAWgxB,IAAI,GAAG0qB,KAAK,CAACl8C,MAA7B,EAAqCQ,CAAC,GAAGgxB,IAAzC,EAA+C,EAAEhxB,CAAjD,EAAoD;AAClDk4B,QAAAA,KAAK,GAAGwjB,KAAK,CAAC17C,CAAD,CAAL,CAAS8a,UAAT,CAAoB6gC,SAApB,CAA8B,IAA9B,EAAoCtnB,QAApC,CAAR;;AACA,YAAI,CAACrC,UAAL,EAAiB;AACfhoB,UAAAA,GAAG,GAAGzH,IAAI,CAACyH,GAAL,CAASA,GAAT,EAAckuB,KAAK,CAACluB,GAApB,CAAN;AACD;;AACD,YAAI,CAACioB,UAAL,EAAiB;AACfhoB,UAAAA,GAAG,GAAG1H,IAAI,CAAC0H,GAAL,CAASA,GAAT,EAAciuB,KAAK,CAACjuB,GAApB,CAAN;AACD;AACF;;AACDD,MAAAA,GAAG,GAAGioB,UAAU,IAAIjoB,GAAG,GAAGC,GAApB,GAA0BA,GAA1B,GAAgCD,GAAtC;AACAC,MAAAA,GAAG,GAAG+nB,UAAU,IAAIhoB,GAAG,GAAGC,GAApB,GAA0BD,GAA1B,GAAgCC,GAAtC;AACA,aAAO;AACLD,QAAAA,GAAG,EAAE,uBAAgBA,GAAhB,EAAqB,uBAAgBC,GAAhB,EAAqBD,GAArB,CAArB,CADA;AAELC,QAAAA,GAAG,EAAE,uBAAgBA,GAAhB,EAAqB,uBAAgBD,GAAhB,EAAqBC,GAArB,CAArB;AAFA,OAAP;AAID;;;WACD,sBAAa;AACX,aAAO;AACLzG,QAAAA,IAAI,EAAE,KAAKg3C,WAAL,IAAoB,CADrB;AAELl3C,QAAAA,GAAG,EAAE,KAAKg3C,UAAL,IAAmB,CAFnB;AAGL72C,QAAAA,KAAK,EAAE,KAAKg3C,YAAL,IAAqB,CAHvB;AAILl3C,QAAAA,MAAM,EAAE,KAAKg3C,aAAL,IAAsB;AAJzB,OAAP;AAMD;;;WACD,oBAAW;AACT,aAAO,KAAKxe,KAAZ;AACD;;;WACD,qBAAY;AACV,UAAMn7B,IAAI,GAAG,KAAKD,KAAL,CAAWC,IAAxB;AACA,aAAO,KAAKC,OAAL,CAAa3B,MAAb,KAAwB,KAAKs+B,YAAL,KAAsB58B,IAAI,CAACg7C,OAA3B,GAAqCh7C,IAAI,CAACi7C,OAAlE,KAA8Ej7C,IAAI,CAAC1B,MAAnF,IAA6F,EAApG;AACD;;;WACD,wBAAe;AACb,WAAKk8B,MAAL,GAAc,EAAd;AACA,WAAKkgB,iBAAL,GAAyB,KAAzB;AACD;;;WACD,wBAAe;AACb,6BAAS,KAAKz6C,OAAL,CAAai7C,YAAtB,EAAoC,CAAC,IAAD,CAApC;AACD;;;WACD,gBAAOpY,QAAP,EAAiBC,SAAjB,EAA4BoY,OAA5B,EAAqC;AACnC,2BAA8C,KAAKl7C,OAAnD;AAAA,UAAO8/B,WAAP,kBAAOA,WAAP;AAAA,UAAoB+U,KAApB,kBAAoBA,KAApB;AAAA,UAAkCyB,QAAlC,kBAA2Bpb,KAA3B;AACA,UAAMigB,UAAU,GAAG7E,QAAQ,CAAC6E,UAA5B;AACA,WAAKF,YAAL;AACA,WAAKpY,QAAL,GAAgBA,QAAhB;AACA,WAAKC,SAAL,GAAiBA,SAAjB;AACA,WAAK0W,QAAL,GAAgB0B,OAAO,GAAG,SAAc;AACtCv4C,QAAAA,IAAI,EAAE,CADgC;AAEtCC,QAAAA,KAAK,EAAE,CAF+B;AAGtCH,QAAAA,GAAG,EAAE,CAHiC;AAItCC,QAAAA,MAAM,EAAE;AAJ8B,OAAd,EAKvBw4C,OALuB,CAA1B;AAMA,WAAKhgB,KAAL,GAAa,IAAb;AACA,WAAK+e,WAAL,GAAmB,IAAnB;AACA,WAAKF,cAAL,GAAsB,IAAtB;AACA,WAAKC,WAAL,GAAmB,IAAnB;AACA,WAAKoB,mBAAL;AACA,WAAKC,aAAL;AACA,WAAKC,kBAAL;AACA,WAAKjE,UAAL,GAAkB,KAAK1a,YAAL,KACd,KAAK75B,KAAL,GAAao4C,OAAO,CAACv4C,IAArB,GAA4Bu4C,OAAO,CAACt4C,KADtB,GAEd,KAAKC,MAAL,GAAcq4C,OAAO,CAACz4C,GAAtB,GAA4By4C,OAAO,CAACx4C,MAFxC;;AAGA,UAAI,CAAC,KAAK+3C,iBAAV,EAA6B;AAC3B,aAAKc,gBAAL;AACA,aAAKC,mBAAL;AACA,aAAKC,eAAL;AACA,aAAK3B,MAAL,GAAc,uBAAU,IAAV,EAAgBjF,KAAhB,EAAuB/U,WAAvB,CAAd;AACA,aAAK2a,iBAAL,GAAyB,IAAzB;AACD;;AACD,WAAKiB,gBAAL;AACA,WAAKxgB,KAAL,GAAa,KAAKygB,UAAL,MAAqB,EAAlC;AACA,WAAKC,eAAL;AACA,UAAMC,eAAe,GAAGV,UAAU,GAAG,KAAKjgB,KAAL,CAAWv8B,MAAhD;;AACA,WAAKm9C,qBAAL,CAA2BD,eAAe,GAAG9D,MAAM,CAAC,KAAK7c,KAAN,EAAaigB,UAAb,CAAT,GAAoC,KAAKjgB,KAAnF;;AACA,WAAKzM,SAAL;AACA,WAAKstB,4BAAL;AACA,WAAKC,sBAAL;AACA,WAAKC,2BAAL;;AACA,UAAI3F,QAAQ,CAAC13C,OAAT,KAAqB03C,QAAQ,CAACZ,QAAT,IAAqBY,QAAQ,CAAC4F,MAAT,KAAoB,MAA9D,CAAJ,EAA2E;AACzE,aAAKhhB,KAAL,GAAawa,QAAQ,CAAC,IAAD,EAAO,KAAKxa,KAAZ,CAArB;AACA,aAAK+e,WAAL,GAAmB,IAAnB;AACD;;AACD,UAAI4B,eAAJ,EAAqB;AACnB,aAAKC,qBAAL,CAA2B,KAAK5gB,KAAhC;AACD;;AACD,WAAKihB,SAAL;AACA,WAAKC,GAAL;AACA,WAAKC,QAAL;AACA,WAAKC,WAAL;AACD;;;WACD,qBAAY;AACV,UAAIC,aAAa,GAAG,KAAKv8C,OAAL,CAAawvB,OAAjC;AACA,UAAIgtB,UAAJ,EAAgBC,QAAhB;;AACA,UAAI,KAAK9f,YAAL,EAAJ,EAAyB;AACvB6f,QAAAA,UAAU,GAAG,KAAK75C,IAAlB;AACA85C,QAAAA,QAAQ,GAAG,KAAK75C,KAAhB;AACD,OAHD,MAGO;AACL45C,QAAAA,UAAU,GAAG,KAAK/5C,GAAlB;AACAg6C,QAAAA,QAAQ,GAAG,KAAK/5C,MAAhB;AACA65C,QAAAA,aAAa,GAAG,CAACA,aAAjB;AACD;;AACD,WAAK1d,WAAL,GAAmB2d,UAAnB;AACA,WAAK1d,SAAL,GAAiB2d,QAAjB;AACA,WAAK5S,cAAL,GAAsB0S,aAAtB;AACA,WAAK1hB,OAAL,GAAe4hB,QAAQ,GAAGD,UAA1B;AACA,WAAKE,cAAL,GAAsB,KAAK18C,OAAL,CAAa28C,aAAnC;AACD;;;WACD,uBAAc;AACZ,6BAAS,KAAK38C,OAAL,CAAas8C,WAAtB,EAAmC,CAAC,IAAD,CAAnC;AACD;;;WACD,+BAAsB;AACpB,6BAAS,KAAKt8C,OAAL,CAAao7C,mBAAtB,EAA2C,CAAC,IAAD,CAA3C;AACD;;;WACD,yBAAgB;AACd,UAAI,KAAKze,YAAL,EAAJ,EAAyB;AACvB,aAAK75B,KAAL,GAAa,KAAK+/B,QAAlB;AACA,aAAKlgC,IAAL,GAAY,CAAZ;AACA,aAAKC,KAAL,GAAa,KAAKE,KAAlB;AACD,OAJD,MAIO;AACL,aAAKD,MAAL,GAAc,KAAKigC,SAAnB;AACA,aAAKrgC,GAAL,GAAW,CAAX;AACA,aAAKC,MAAL,GAAc,KAAKG,MAAnB;AACD;;AACD,WAAK82C,WAAL,GAAmB,CAAnB;AACA,WAAKF,UAAL,GAAkB,CAAlB;AACA,WAAKG,YAAL,GAAoB,CAApB;AACA,WAAKF,aAAL,GAAqB,CAArB;AACD;;;WACD,8BAAqB;AACnB,6BAAS,KAAK15C,OAAL,CAAas7C,kBAAtB,EAA0C,CAAC,IAAD,CAA1C;AACD;;;WACD,oBAAW78B,IAAX,EAAiB;AACf,WAAK3e,KAAL,CAAW88C,aAAX,CAAyBn+B,IAAzB,EAA+B,KAAK+X,UAAL,EAA/B;AACA,6BAAS,KAAKx2B,OAAL,CAAaye,IAAb,CAAT,EAA6B,CAAC,IAAD,CAA7B;AACD;;;WACD,4BAAmB;AACjB,WAAKo+B,UAAL,CAAgB,kBAAhB;AACD;;;WACD,+BAAsB,CAAE;;;WACxB,2BAAkB;AAChB,WAAKA,UAAL,CAAgB,iBAAhB;AACD;;;WACD,4BAAmB;AACjB,WAAKA,UAAL,CAAgB,kBAAhB;AACD;;;WACD,sBAAa;AACX,aAAO,EAAP;AACD;;;WACD,2BAAkB;AAChB,WAAKA,UAAL,CAAgB,iBAAhB;AACD;;;WACD,uCAA8B;AAC5B,6BAAS,KAAK78C,OAAL,CAAa88C,2BAAtB,EAAmD,CAAC,IAAD,CAAnD;AACD;;;WACD,4BAAmB5hB,KAAnB,EAA0B;AACxB,UAAMob,QAAQ,GAAG,KAAKt2C,OAAL,CAAak7B,KAA9B;AACA,UAAI/7B,CAAJ,EAAOgxB,IAAP,EAAalF,IAAb;;AACA,WAAK9rB,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAG+K,KAAK,CAACv8B,MAAzB,EAAiCQ,CAAC,GAAGgxB,IAArC,EAA2ChxB,CAAC,EAA5C,EAAgD;AAC9C8rB,QAAAA,IAAI,GAAGiQ,KAAK,CAAC/7B,CAAD,CAAZ;AACA8rB,QAAAA,IAAI,CAACnsB,KAAL,GAAa,uBAASw3C,QAAQ,CAACjtB,QAAlB,EAA4B,CAAC4B,IAAI,CAAC/hB,KAAN,EAAa/J,CAAb,EAAgB+7B,KAAhB,CAA5B,EAAoD,IAApD,CAAb;AACD;AACF;;;WACD,sCAA6B;AAC3B,6BAAS,KAAKl7B,OAAL,CAAa+8C,0BAAtB,EAAkD,CAAC,IAAD,CAAlD;AACD;;;WACD,wCAA+B;AAC7B,6BAAS,KAAK/8C,OAAL,CAAa+7C,4BAAtB,EAAoD,CAAC,IAAD,CAApD;AACD;;;WACD,kCAAyB;AACvB,UAAM/7C,OAAO,GAAG,KAAKA,OAArB;AACA,UAAMs2C,QAAQ,GAAGt2C,OAAO,CAACk7B,KAAzB;AACA,UAAM8hB,QAAQ,GAAG,KAAK9hB,KAAL,CAAWv8B,MAA5B;AACA,UAAM02C,WAAW,GAAGiB,QAAQ,CAACjB,WAAT,IAAwB,CAA5C;AACA,UAAMC,WAAW,GAAGgB,QAAQ,CAAChB,WAA7B;AACA,UAAIuE,aAAa,GAAGxE,WAApB;AACA,UAAIJ,SAAJ,EAAenS,SAAf,EAA0Bma,gBAA1B;;AACA,UAAI,CAAC,KAAKC,UAAL,EAAD,IAAsB,CAAC5G,QAAQ,CAAC13C,OAAhC,IAA2Cy2C,WAAW,IAAIC,WAA1D,IAAyE0H,QAAQ,IAAI,CAArF,IAA0F,CAAC,KAAKrgB,YAAL,EAA/F,EAAoH;AAClH,aAAKkd,aAAL,GAAqBxE,WAArB;AACA;AACD;;AACD,UAAM8H,UAAU,GAAG,KAAKC,cAAL,EAAnB;;AACA,UAAMC,aAAa,GAAGF,UAAU,CAACG,MAAX,CAAkBx6C,KAAxC;AACA,UAAMy6C,cAAc,GAAGJ,UAAU,CAACK,OAAX,CAAmB36C,MAA1C;AACA,UAAMggC,QAAQ,GAAG,uBAAY,KAAK/iC,KAAL,CAAWgD,KAAX,GAAmBu6C,aAA/B,EAA8C,CAA9C,EAAiD,KAAKxa,QAAtD,CAAjB;AACAoS,MAAAA,SAAS,GAAGj1C,OAAO,CAAC0H,MAAR,GAAiB,KAAKm7B,QAAL,GAAgBma,QAAjC,GAA4Cna,QAAQ,IAAIma,QAAQ,GAAG,CAAf,CAAhE;;AACA,UAAIK,aAAa,GAAG,CAAhB,GAAoBpI,SAAxB,EAAmC;AACjCA,QAAAA,SAAS,GAAGpS,QAAQ,IAAIma,QAAQ,IAAIh9C,OAAO,CAAC0H,MAAR,GAAiB,GAAjB,GAAuB,CAA3B,CAAZ,CAApB;AACAo7B,QAAAA,SAAS,GAAG,KAAKA,SAAL,GAAiB6V,iBAAiB,CAAC34C,OAAO,CAACT,IAAT,CAAlC,GACZ+2C,QAAQ,CAAC5G,OADG,GACOkJ,cAAc,CAAC54C,OAAO,CAACvB,KAAT,EAAgB,KAAKqB,KAAL,CAAWE,OAAX,CAAmB1C,IAAnC,CADjC;AAEA2/C,QAAAA,gBAAgB,GAAGv7C,IAAI,CAACgpC,IAAL,CAAU2S,aAAa,GAAGA,aAAhB,GAAgCE,cAAc,GAAGA,cAA3D,CAAnB;AACA1D,QAAAA,aAAa,GAAG,uBAAUn4C,IAAI,CAACyH,GAAL,CACxBzH,IAAI,CAAC+7C,IAAL,CAAU,uBAAY,CAACN,UAAU,CAACK,OAAX,CAAmB36C,MAAnB,GAA4B,CAA7B,IAAkCoyC,SAA9C,EAAyD,CAAC,CAA1D,EAA6D,CAA7D,CAAV,CADwB,EAExBvzC,IAAI,CAAC+7C,IAAL,CAAU,uBAAY3a,SAAS,GAAGma,gBAAxB,EAA0C,CAAC,CAA3C,EAA8C,CAA9C,CAAV,IAA8Dv7C,IAAI,CAAC+7C,IAAL,CAAU,uBAAYF,cAAc,GAAGN,gBAA7B,EAA+C,CAAC,CAAhD,EAAmD,CAAnD,CAAV,CAFtC,CAAV,CAAhB;AAIApD,QAAAA,aAAa,GAAGn4C,IAAI,CAAC0H,GAAL,CAASisC,WAAT,EAAsB3zC,IAAI,CAACyH,GAAL,CAASmsC,WAAT,EAAsBuE,aAAtB,CAAtB,CAAhB;AACD;;AACD,WAAKA,aAAL,GAAqBA,aAArB;AACD;;;WACD,uCAA8B;AAC5B,6BAAS,KAAK75C,OAAL,CAAai8C,2BAAtB,EAAmD,CAAC,IAAD,CAAnD;AACD;;;WACD,qBAAY;AACV,6BAAS,KAAKj8C,OAAL,CAAam8C,SAAtB,EAAiC,CAAC,IAAD,CAAjC;AACD;;;WACD,eAAM;AACJ,UAAMlV,OAAO,GAAG;AACdnkC,QAAAA,KAAK,EAAE,CADO;AAEdD,QAAAA,MAAM,EAAE;AAFM,OAAhB;AAIA,UAAO/C,KAAP,GAA8E,IAA9E,CAAOA,KAAP;AAAA,2BAA8E,IAA9E,CAAcE,OAAd;AAAA,UAA+Bs2C,QAA/B,kBAAwBpb,KAAxB;AAAA,UAAgDwiB,SAAhD,kBAAyCj/C,KAAzC;AAAA,UAAiEk/C,QAAjE,kBAA2Dp+C,IAA3D;;AACA,UAAMX,OAAO,GAAG,KAAKs+C,UAAL,EAAhB;;AACA,UAAMvgB,YAAY,GAAG,KAAKA,YAAL,EAArB;;AACA,UAAI/9B,OAAJ,EAAa;AACX,YAAMg/C,WAAW,GAAGhF,cAAc,CAAC8E,SAAD,EAAY59C,KAAK,CAACE,OAAN,CAAc1C,IAA1B,CAAlC;;AACA,YAAIq/B,YAAJ,EAAkB;AAChBsK,UAAAA,OAAO,CAACnkC,KAAR,GAAgB,KAAK+/B,QAArB;AACAoE,UAAAA,OAAO,CAACpkC,MAAR,GAAiB81C,iBAAiB,CAACgF,QAAD,CAAjB,GAA8BC,WAA/C;AACD,SAHD,MAGO;AACL3W,UAAAA,OAAO,CAACpkC,MAAR,GAAiB,KAAKigC,SAAtB;AACAmE,UAAAA,OAAO,CAACnkC,KAAR,GAAgB61C,iBAAiB,CAACgF,QAAD,CAAjB,GAA8BC,WAA9C;AACD;;AACD,YAAItH,QAAQ,CAAC13C,OAAT,IAAoB,KAAKs8B,KAAL,CAAWv8B,MAAnC,EAA2C;AACzC,qCAAuC,KAAKy+C,cAAL,EAAvC;AAAA,cAAOp9B,KAAP,wBAAOA,KAAP;AAAA,cAAc0e,IAAd,wBAAcA,IAAd;AAAA,cAAoB4e,MAApB,wBAAoBA,MAApB;AAAA,cAA4BE,OAA5B,wBAA4BA,OAA5B;;AACA,cAAMK,WAAW,GAAGvH,QAAQ,CAAC5G,OAAT,GAAmB,CAAvC;AACA,cAAMoO,YAAY,GAAG,uBAAU,KAAKjE,aAAf,CAArB;AACA,cAAM3Y,GAAG,GAAGx/B,IAAI,CAACw/B,GAAL,CAAS4c,YAAT,CAAZ;AACA,cAAM1c,GAAG,GAAG1/B,IAAI,CAAC0/B,GAAL,CAAS0c,YAAT,CAAZ;;AACA,cAAInhB,YAAJ,EAAkB;AAChB,gBAAMohB,WAAW,GAAGzH,QAAQ,CAACf,MAAT,GAAkB,CAAlB,GAAsBnU,GAAG,GAAGkc,MAAM,CAACx6C,KAAb,GAAqBo+B,GAAG,GAAGsc,OAAO,CAAC36C,MAA7E;AACAokC,YAAAA,OAAO,CAACpkC,MAAR,GAAiBnB,IAAI,CAACyH,GAAL,CAAS,KAAK25B,SAAd,EAAyBmE,OAAO,CAACpkC,MAAR,GAAiBk7C,WAAjB,GAA+BF,WAAxD,CAAjB;AACD,WAHD,MAGO;AACL,gBAAMG,UAAU,GAAG1H,QAAQ,CAACf,MAAT,GAAkB,CAAlB,GAAsBrU,GAAG,GAAGoc,MAAM,CAACx6C,KAAb,GAAqBs+B,GAAG,GAAGoc,OAAO,CAAC36C,MAA5E;AACAokC,YAAAA,OAAO,CAACnkC,KAAR,GAAgBpB,IAAI,CAACyH,GAAL,CAAS,KAAK05B,QAAd,EAAwBoE,OAAO,CAACnkC,KAAR,GAAgBk7C,UAAhB,GAA6BH,WAArD,CAAhB;AACD;;AACD,eAAKI,iBAAL,CAAuBj+B,KAAvB,EAA8B0e,IAA9B,EAAoC0C,GAApC,EAAyCF,GAAzC;AACD;AACF;;AACD,WAAKgd,cAAL;;AACA,UAAIvhB,YAAJ,EAAkB;AAChB,aAAK75B,KAAL,GAAa,KAAK+3B,OAAL,GAAe/6B,KAAK,CAACgD,KAAN,GAAc,KAAK02C,QAAL,CAAc72C,IAA5B,GAAmC,KAAK62C,QAAL,CAAc52C,KAA7E;AACA,aAAKC,MAAL,GAAcokC,OAAO,CAACpkC,MAAtB;AACD,OAHD,MAGO;AACL,aAAKC,KAAL,GAAamkC,OAAO,CAACnkC,KAArB;AACA,aAAKD,MAAL,GAAc,KAAKg4B,OAAL,GAAe/6B,KAAK,CAAC+C,MAAN,GAAe,KAAK22C,QAAL,CAAc/2C,GAA7B,GAAmC,KAAK+2C,QAAL,CAAc92C,MAA9E;AACD;AACF;;;WACD,2BAAkBsd,KAAlB,EAAyB0e,IAAzB,EAA+B0C,GAA/B,EAAoCF,GAApC,EAAyC;AACvC,2BAA4C,KAAKlhC,OAAjD;AAAA,gDAAOk7B,KAAP;AAAA,UAAe6a,KAAf,wBAAeA,KAAf;AAAA,UAAsBrG,OAAtB,wBAAsBA,OAAtB;AAAA,UAAgCpwC,QAAhC,kBAAgCA,QAAhC;AACA,UAAM6+C,SAAS,GAAG,KAAKtE,aAAL,KAAuB,CAAzC;AACA,UAAMuE,gBAAgB,GAAG9+C,QAAQ,KAAK,KAAb,IAAsB,KAAKgzB,IAAL,KAAc,GAA7D;;AACA,UAAI,KAAKqK,YAAL,EAAJ,EAAyB;AACvB,YAAM0hB,UAAU,GAAG,KAAKljB,eAAL,CAAqB,CAArB,IAA0B,KAAKx4B,IAAlD;AACA,YAAM27C,WAAW,GAAG,KAAK17C,KAAL,GAAa,KAAKu4B,eAAL,CAAqB,KAAKD,KAAL,CAAWv8B,MAAX,GAAoB,CAAzC,CAAjC;AACA,YAAIg7C,WAAW,GAAG,CAAlB;AACA,YAAIC,YAAY,GAAG,CAAnB;;AACA,YAAIuE,SAAJ,EAAe;AACb,cAAIC,gBAAJ,EAAsB;AACpBzE,YAAAA,WAAW,GAAGzY,GAAG,GAAGlhB,KAAK,CAACld,KAA1B;AACA82C,YAAAA,YAAY,GAAGxY,GAAG,GAAG1C,IAAI,CAAC77B,MAA1B;AACD,WAHD,MAGO;AACL82C,YAAAA,WAAW,GAAGvY,GAAG,GAAGphB,KAAK,CAACnd,MAA1B;AACA+2C,YAAAA,YAAY,GAAG1Y,GAAG,GAAGxC,IAAI,CAAC57B,KAA1B;AACD;AACF,SARD,MAQO,IAAIizC,KAAK,KAAK,OAAd,EAAuB;AAC5B6D,UAAAA,YAAY,GAAGlb,IAAI,CAAC57B,KAApB;AACD,SAFM,MAEA,IAAIizC,KAAK,KAAK,KAAd,EAAqB;AAC1B4D,UAAAA,WAAW,GAAG35B,KAAK,CAACld,KAApB;AACD,SAFM,MAEA;AACL62C,UAAAA,WAAW,GAAG35B,KAAK,CAACld,KAAN,GAAc,CAA5B;AACA82C,UAAAA,YAAY,GAAGlb,IAAI,CAAC57B,KAAL,GAAa,CAA5B;AACD;;AACD,aAAK62C,WAAL,GAAmBj4C,IAAI,CAAC0H,GAAL,CAAS,CAACuwC,WAAW,GAAG0E,UAAd,GAA2B3O,OAA5B,IAAuC,KAAK5sC,KAA5C,IAAqD,KAAKA,KAAL,GAAau7C,UAAlE,CAAT,EAAwF,CAAxF,CAAnB;AACA,aAAKzE,YAAL,GAAoBl4C,IAAI,CAAC0H,GAAL,CAAS,CAACwwC,YAAY,GAAG0E,WAAf,GAA6B5O,OAA9B,IAAyC,KAAK5sC,KAA9C,IAAuD,KAAKA,KAAL,GAAaw7C,WAApE,CAAT,EAA2F,CAA3F,CAApB;AACD,OAvBD,MAuBO;AACL,YAAI7E,UAAU,GAAG/a,IAAI,CAAC77B,MAAL,GAAc,CAA/B;AACA,YAAI62C,aAAa,GAAG15B,KAAK,CAACnd,MAAN,GAAe,CAAnC;;AACA,YAAIkzC,KAAK,KAAK,OAAd,EAAuB;AACrB0D,UAAAA,UAAU,GAAG,CAAb;AACAC,UAAAA,aAAa,GAAG15B,KAAK,CAACnd,MAAtB;AACD,SAHD,MAGO,IAAIkzC,KAAK,KAAK,KAAd,EAAqB;AAC1B0D,UAAAA,UAAU,GAAG/a,IAAI,CAAC77B,MAAlB;AACA62C,UAAAA,aAAa,GAAG,CAAhB;AACD;;AACD,aAAKD,UAAL,GAAkBA,UAAU,GAAG/J,OAA/B;AACA,aAAKgK,aAAL,GAAqBA,aAAa,GAAGhK,OAArC;AACD;AACF;;;WACD,0BAAiB;AACf,UAAI,KAAK8J,QAAT,EAAmB;AACjB,aAAKA,QAAL,CAAc72C,IAAd,GAAqBjB,IAAI,CAAC0H,GAAL,CAAS,KAAKuwC,WAAd,EAA2B,KAAKH,QAAL,CAAc72C,IAAzC,CAArB;AACA,aAAK62C,QAAL,CAAc/2C,GAAd,GAAoBf,IAAI,CAAC0H,GAAL,CAAS,KAAKqwC,UAAd,EAA0B,KAAKD,QAAL,CAAc/2C,GAAxC,CAApB;AACA,aAAK+2C,QAAL,CAAc52C,KAAd,GAAsBlB,IAAI,CAAC0H,GAAL,CAAS,KAAKwwC,YAAd,EAA4B,KAAKJ,QAAL,CAAc52C,KAA1C,CAAtB;AACA,aAAK42C,QAAL,CAAc92C,MAAd,GAAuBhB,IAAI,CAAC0H,GAAL,CAAS,KAAKswC,aAAd,EAA6B,KAAKF,QAAL,CAAc92C,MAA3C,CAAvB;AACD;AACF;;;WACD,oBAAW;AACT,6BAAS,KAAK1C,OAAL,CAAaq8C,QAAtB,EAAgC,CAAC,IAAD,CAAhC;AACD;;;WACD,wBAAe;AACb,2BAAyB,KAAKr8C,OAA9B;AAAA,UAAOsyB,IAAP,kBAAOA,IAAP;AAAA,UAAahzB,QAAb,kBAAaA,QAAb;AACA,aAAOA,QAAQ,KAAK,KAAb,IAAsBA,QAAQ,KAAK,QAAnC,IAA+CgzB,IAAI,KAAK,GAA/D;AACD;;;WACD,sBAAa;AACX,aAAO,KAAKtyB,OAAL,CAAastC,QAApB;AACD;;;WACD,+BAAsBpS,KAAtB,EAA6B;AAC3B,WAAK4hB,2BAAL;AACA,WAAKyB,kBAAL,CAAwBrjB,KAAxB;AACA,UAAI/7B,CAAJ,EAAOgxB,IAAP;;AACA,WAAKhxB,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAG+K,KAAK,CAACv8B,MAAzB,EAAiCQ,CAAC,GAAGgxB,IAArC,EAA2ChxB,CAAC,EAA5C,EAAgD;AAC9C,YAAI,uBAAc+7B,KAAK,CAAC/7B,CAAD,CAAL,CAASL,KAAvB,CAAJ,EAAmC;AACjCo8B,UAAAA,KAAK,CAAClT,MAAN,CAAa7oB,CAAb,EAAgB,CAAhB;AACAgxB,UAAAA,IAAI;AACJhxB,UAAAA,CAAC;AACF;AACF;;AACD,WAAK49C,0BAAL;AACD;;;WACD,0BAAiB;AACf,UAAII,UAAU,GAAG,KAAKlD,WAAtB;;AACA,UAAI,CAACkD,UAAL,EAAiB;AACf,YAAMhC,UAAU,GAAG,KAAKn7C,OAAL,CAAak7B,KAAb,CAAmBigB,UAAtC;AACA,YAAIjgB,KAAK,GAAG,KAAKA,KAAjB;;AACA,YAAIigB,UAAU,GAAGjgB,KAAK,CAACv8B,MAAvB,EAA+B;AAC7Bu8B,UAAAA,KAAK,GAAG6c,MAAM,CAAC7c,KAAD,EAAQigB,UAAR,CAAd;AACD;;AACD,aAAKlB,WAAL,GAAmBkD,UAAU,GAAG,KAAKqB,kBAAL,CAAwBtjB,KAAxB,EAA+BA,KAAK,CAACv8B,MAArC,CAAhC;AACD;;AACD,aAAOw+C,UAAP;AACD;;;WACD,4BAAmBjiB,KAAnB,EAA0Bv8B,MAA1B,EAAkC;AAChC,UAAOk1B,GAAP,GAAyC,IAAzC,CAAOA,GAAP;AAAA,UAA+B2kB,MAA/B,GAAyC,IAAzC,CAAY0B,iBAAZ;AACA,UAAMuE,MAAM,GAAG,EAAf;AACA,UAAMC,OAAO,GAAG,EAAhB;AACA,UAAIC,eAAe,GAAG,CAAtB;AACA,UAAIC,gBAAgB,GAAG,CAAvB;AACA,UAAIz/C,CAAJ,EAAOoqC,CAAP,EAAUC,IAAV,EAAgB1qC,KAAhB,EAAuB+/C,QAAvB,EAAiCC,UAAjC,EAA6Cj/B,KAA7C,EAAoDk5B,UAApD,EAAgEj2C,KAAhE,EAAuED,MAAvE,EAA+Ek8C,WAA/E;;AACA,WAAK5/C,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGR,MAAhB,EAAwB,EAAEQ,CAA1B,EAA6B;AAC3BL,QAAAA,KAAK,GAAGo8B,KAAK,CAAC/7B,CAAD,CAAL,CAASL,KAAjB;AACA+/C,QAAAA,QAAQ,GAAG,KAAKG,uBAAL,CAA6B7/C,CAA7B,CAAX;AACA00B,QAAAA,GAAG,CAACv2B,IAAJ,GAAWwhD,UAAU,GAAGD,QAAQ,CAACI,MAAjC;AACAp/B,QAAAA,KAAK,GAAG24B,MAAM,CAACsG,UAAD,CAAN,GAAqBtG,MAAM,CAACsG,UAAD,CAAN,IAAsB;AAAC/+C,UAAAA,IAAI,EAAE,EAAP;AAAW04C,UAAAA,EAAE,EAAE;AAAf,SAAnD;AACAM,QAAAA,UAAU,GAAG8F,QAAQ,CAAC9F,UAAtB;AACAj2C,QAAAA,KAAK,GAAGD,MAAM,GAAG,CAAjB;;AACA,YAAI,CAAC,uBAAc/D,KAAd,CAAD,IAAyB,CAAC,uBAAQA,KAAR,CAA9B,EAA8C;AAC5CgE,UAAAA,KAAK,GAAG,uBAAa+wB,GAAb,EAAkBhU,KAAK,CAAC9f,IAAxB,EAA8B8f,KAAK,CAAC44B,EAApC,EAAwC31C,KAAxC,EAA+ChE,KAA/C,CAAR;AACA+D,UAAAA,MAAM,GAAGk2C,UAAT;AACD,SAHD,MAGO,IAAI,uBAAQj6C,KAAR,CAAJ,EAAoB;AACzB,eAAKyqC,CAAC,GAAG,CAAJ,EAAOC,IAAI,GAAG1qC,KAAK,CAACH,MAAzB,EAAiC4qC,CAAC,GAAGC,IAArC,EAA2C,EAAED,CAA7C,EAAgD;AAC9CwV,YAAAA,WAAW,GAAGjgD,KAAK,CAACyqC,CAAD,CAAnB;;AACA,gBAAI,CAAC,uBAAcwV,WAAd,CAAD,IAA+B,CAAC,uBAAQA,WAAR,CAApC,EAA0D;AACxDj8C,cAAAA,KAAK,GAAG,uBAAa+wB,GAAb,EAAkBhU,KAAK,CAAC9f,IAAxB,EAA8B8f,KAAK,CAAC44B,EAApC,EAAwC31C,KAAxC,EAA+Ci8C,WAA/C,CAAR;AACAl8C,cAAAA,MAAM,IAAIk2C,UAAV;AACD;AACF;AACF;;AACD0F,QAAAA,MAAM,CAACv9C,IAAP,CAAY4B,KAAZ;AACA47C,QAAAA,OAAO,CAACx9C,IAAR,CAAa2B,MAAb;AACA87C,QAAAA,eAAe,GAAGj9C,IAAI,CAAC0H,GAAL,CAAStG,KAAT,EAAgB67C,eAAhB,CAAlB;AACAC,QAAAA,gBAAgB,GAAGl9C,IAAI,CAAC0H,GAAL,CAASvG,MAAT,EAAiB+7C,gBAAjB,CAAnB;AACD;;AACDrG,MAAAA,cAAc,CAACC,MAAD,EAAS75C,MAAT,CAAd;AACA,UAAM2+C,MAAM,GAAGmB,MAAM,CAACz4C,OAAP,CAAe24C,eAAf,CAAf;AACA,UAAMnB,OAAO,GAAGkB,OAAO,CAAC14C,OAAR,CAAgB44C,gBAAhB,CAAhB;;AACA,UAAMM,OAAO,GAAG,SAAVA,OAAU,CAACC,GAAD;AAAA,eAAU;AAACr8C,UAAAA,KAAK,EAAE27C,MAAM,CAACU,GAAD,CAAN,IAAe,CAAvB;AAA0Bt8C,UAAAA,MAAM,EAAE67C,OAAO,CAACS,GAAD,CAAP,IAAgB;AAAlD,SAAV;AAAA,OAAhB;;AACA,aAAO;AACLn/B,QAAAA,KAAK,EAAEk/B,OAAO,CAAC,CAAD,CADT;AAELxgB,QAAAA,IAAI,EAAEwgB,OAAO,CAACvgD,MAAM,GAAG,CAAV,CAFR;AAGL2+C,QAAAA,MAAM,EAAE4B,OAAO,CAAC5B,MAAD,CAHV;AAILE,QAAAA,OAAO,EAAE0B,OAAO,CAAC1B,OAAD,CAJX;AAKLiB,QAAAA,MAAM,EAANA,MALK;AAMLC,QAAAA,OAAO,EAAPA;AANK,OAAP;AAQD;;;WACD,0BAAiBx1C,KAAjB,EAAwB;AACtB,aAAOA,KAAP;AACD;;;WACD,0BAAiBA,KAAjB,EAAwB3I,KAAxB,EAA+B;AAC7B,aAAOg3B,GAAP;AACD;;;WACD,0BAAiB6nB,KAAjB,EAAwB,CAAE;;;WAC1B,yBAAgB7+C,KAAhB,EAAuB;AACrB,UAAM26B,KAAK,GAAG,KAAKA,KAAnB;;AACA,UAAI36B,KAAK,GAAG,CAAR,IAAaA,KAAK,GAAG26B,KAAK,CAACv8B,MAAN,GAAe,CAAxC,EAA2C;AACzC,eAAO,IAAP;AACD;;AACD,aAAO,KAAKs8B,gBAAL,CAAsBC,KAAK,CAAC36B,KAAD,CAAL,CAAa2I,KAAnC,CAAP;AACD;;;WACD,4BAAmBm2C,OAAnB,EAA4B;AAC1B,UAAI,KAAKxV,cAAT,EAAyB;AACvBwV,QAAAA,OAAO,GAAG,IAAIA,OAAd;AACD;;AACD,UAAMD,KAAK,GAAG,KAAKvgB,WAAL,GAAmBwgB,OAAO,GAAG,KAAKxkB,OAAhD;AACA,aAAO,uBAAY,KAAK6hB,cAAL,GAAsB,uBAAY,KAAK58C,KAAjB,EAAwBs/C,KAAxB,EAA+B,CAA/B,CAAtB,GAA0DA,KAAtE,CAAP;AACD;;;WACD,4BAAmBA,KAAnB,EAA0B;AACxB,UAAMC,OAAO,GAAG,CAACD,KAAK,GAAG,KAAKvgB,WAAd,IAA6B,KAAKhE,OAAlD;AACA,aAAO,KAAKgP,cAAL,GAAsB,IAAIwV,OAA1B,GAAoCA,OAA3C;AACD;;;WACD,wBAAe;AACb,aAAO,KAAKpkB,gBAAL,CAAsB,KAAKqkB,YAAL,EAAtB,CAAP;AACD;;;WACD,wBAAe;AACb,UAAOn2C,GAAP,GAAmB,IAAnB,CAAOA,GAAP;AAAA,UAAYC,GAAZ,GAAmB,IAAnB,CAAYA,GAAZ;AACA,aAAOD,GAAG,GAAG,CAAN,IAAWC,GAAG,GAAG,CAAjB,GAAqBA,GAArB,GACLD,GAAG,GAAG,CAAN,IAAWC,GAAG,GAAG,CAAjB,GAAqBD,GAArB,GACA,CAFF;AAGD;;;WACD,oBAAW5I,KAAX,EAAkB;AAChB,UAAM26B,KAAK,GAAG,KAAKA,KAAL,IAAc,EAA5B;;AACA,UAAI36B,KAAK,IAAI,CAAT,IAAcA,KAAK,GAAG26B,KAAK,CAACv8B,MAAhC,EAAwC;AACtC,YAAMssB,IAAI,GAAGiQ,KAAK,CAAC36B,KAAD,CAAlB;AACA,eAAO0qB,IAAI,CAACuJ,QAAL,KACRvJ,IAAI,CAACuJ,QAAL,GAAgBykB,iBAAiB,CAAC,KAAKziB,UAAL,EAAD,EAAoBj2B,KAApB,EAA2B0qB,IAA3B,CADzB,CAAP;AAED;;AACD,aAAO,KAAKuJ,QAAL,KACP,KAAKA,QAAL,GAAgBwkB,kBAAkB,CAAC,KAAKl5C,KAAL,CAAW02B,UAAX,EAAD,EAA0B,IAA1B,CAD3B,CAAP;AAED;;;WACD,qBAAY;AACV,UAAM+oB,WAAW,GAAG,KAAKv/C,OAAL,CAAak7B,KAAjC;AACA,UAAMskB,GAAG,GAAG,uBAAU,KAAK3F,aAAf,CAAZ;AACA,UAAM3Y,GAAG,GAAGx/B,IAAI,CAACs5B,GAAL,CAASt5B,IAAI,CAACw/B,GAAL,CAASse,GAAT,CAAT,CAAZ;AACA,UAAMpe,GAAG,GAAG1/B,IAAI,CAACs5B,GAAL,CAASt5B,IAAI,CAAC0/B,GAAL,CAASoe,GAAT,CAAT,CAAZ;;AACA,UAAMrC,UAAU,GAAG,KAAKC,cAAL,EAAnB;;AACA,UAAM1N,OAAO,GAAG6P,WAAW,CAAC5J,eAAZ,IAA+B,CAA/C;AACA,UAAM9oC,CAAC,GAAGswC,UAAU,GAAGA,UAAU,CAACG,MAAX,CAAkBx6C,KAAlB,GAA0B4sC,OAA7B,GAAuC,CAA3D;AACA,UAAMhB,CAAC,GAAGyO,UAAU,GAAGA,UAAU,CAACK,OAAX,CAAmB36C,MAAnB,GAA4B6sC,OAA/B,GAAyC,CAA7D;AACA,aAAO,KAAK/S,YAAL,KACH+R,CAAC,GAAGxN,GAAJ,GAAUr0B,CAAC,GAAGu0B,GAAd,GAAoBv0B,CAAC,GAAGq0B,GAAxB,GAA8BwN,CAAC,GAAGtN,GAD/B,GAEHsN,CAAC,GAAGtN,GAAJ,GAAUv0B,CAAC,GAAGq0B,GAAd,GAAoBwN,CAAC,GAAGxN,GAAxB,GAA8Br0B,CAAC,GAAGu0B,GAFtC;AAGD;;;WACD,sBAAa;AACX,UAAMxiC,OAAO,GAAG,KAAKoB,OAAL,CAAapB,OAA7B;;AACA,UAAIA,OAAO,KAAK,MAAhB,EAAwB;AACtB,eAAO,CAAC,CAACA,OAAT;AACD;;AACD,aAAO,KAAKmzB,uBAAL,GAA+BpzB,MAA/B,GAAwC,CAA/C;AACD;;;WACD,+BAAsBy5B,SAAtB,EAAiC;AAC/B,UAAM9F,IAAI,GAAG,KAAKA,IAAlB;AACA,UAAMxyB,KAAK,GAAG,KAAKA,KAAnB;AACA,UAAME,OAAO,GAAG,KAAKA,OAArB;AACA,UAAOT,IAAP,GAAyBS,OAAzB,CAAOT,IAAP;AAAA,UAAaD,QAAb,GAAyBU,OAAzB,CAAaV,QAAb;AACA,UAAMoI,MAAM,GAAGnI,IAAI,CAACmI,MAApB;AACA,UAAMi1B,YAAY,GAAG,KAAKA,YAAL,EAArB;AACA,UAAMzB,KAAK,GAAG,KAAKA,KAAnB;AACA,UAAMukB,WAAW,GAAGvkB,KAAK,CAACv8B,MAAN,IAAgB+I,MAAM,GAAG,CAAH,GAAO,CAA7B,CAApB;AACA,UAAMwH,EAAE,GAAGypC,iBAAiB,CAACp5C,IAAD,CAA5B;AACA,UAAMgR,KAAK,GAAG,EAAd;AACA,UAAMmvC,UAAU,GAAGngD,IAAI,CAACm7C,UAAL,CAAgB,KAAKlkB,UAAL,EAAhB,CAAnB;AACA,UAAMmpB,SAAS,GAAGD,UAAU,CAAC5K,UAAX,GAAwB4K,UAAU,CAAC1b,WAAnC,GAAiD,CAAnE;AACA,UAAM4b,aAAa,GAAGD,SAAS,GAAG,CAAlC;;AACA,UAAME,gBAAgB,GAAG,SAAnBA,gBAAmB,CAAST,KAAT,EAAgB;AACvC,eAAO,uBAAYt/C,KAAZ,EAAmBs/C,KAAnB,EAA0BO,SAA1B,CAAP;AACD,OAFD;;AAGA,UAAIG,WAAJ,EAAiB3gD,CAAjB,EAAoBm5C,SAApB,EAA+ByH,gBAA/B;AACA,UAAIC,GAAJ,EAASC,GAAT,EAAcC,GAAd,EAAmBC,GAAnB,EAAwBC,EAAxB,EAA4BC,EAA5B,EAAgCC,EAAhC,EAAoCC,EAApC;;AACA,UAAIjhD,QAAQ,KAAK,KAAjB,EAAwB;AACtBwgD,QAAAA,WAAW,GAAGD,gBAAgB,CAAC,KAAKn9C,MAAN,CAA9B;AACAu9C,QAAAA,GAAG,GAAG,KAAKv9C,MAAL,GAAcwM,EAApB;AACAixC,QAAAA,GAAG,GAAGL,WAAW,GAAGF,aAApB;AACAS,QAAAA,EAAE,GAAGR,gBAAgB,CAACznB,SAAS,CAAC31B,GAAX,CAAhB,GAAkCm9C,aAAvC;AACAW,QAAAA,EAAE,GAAGnoB,SAAS,CAAC11B,MAAf;AACD,OAND,MAMO,IAAIpD,QAAQ,KAAK,QAAjB,EAA2B;AAChCwgD,QAAAA,WAAW,GAAGD,gBAAgB,CAAC,KAAKp9C,GAAN,CAA9B;AACA49C,QAAAA,EAAE,GAAGjoB,SAAS,CAAC31B,GAAf;AACA89C,QAAAA,EAAE,GAAGV,gBAAgB,CAACznB,SAAS,CAAC11B,MAAX,CAAhB,GAAqCk9C,aAA1C;AACAK,QAAAA,GAAG,GAAGH,WAAW,GAAGF,aAApB;AACAO,QAAAA,GAAG,GAAG,KAAK19C,GAAL,GAAWyM,EAAjB;AACD,OANM,MAMA,IAAI5P,QAAQ,KAAK,MAAjB,EAAyB;AAC9BwgD,QAAAA,WAAW,GAAGD,gBAAgB,CAAC,KAAKj9C,KAAN,CAA9B;AACAo9C,QAAAA,GAAG,GAAG,KAAKp9C,KAAL,GAAasM,EAAnB;AACAgxC,QAAAA,GAAG,GAAGJ,WAAW,GAAGF,aAApB;AACAQ,QAAAA,EAAE,GAAGP,gBAAgB,CAACznB,SAAS,CAACz1B,IAAX,CAAhB,GAAmCi9C,aAAxC;AACAU,QAAAA,EAAE,GAAGloB,SAAS,CAACx1B,KAAf;AACD,OANM,MAMA,IAAItD,QAAQ,KAAK,OAAjB,EAA0B;AAC/BwgD,QAAAA,WAAW,GAAGD,gBAAgB,CAAC,KAAKl9C,IAAN,CAA9B;AACAy9C,QAAAA,EAAE,GAAGhoB,SAAS,CAACz1B,IAAf;AACA29C,QAAAA,EAAE,GAAGT,gBAAgB,CAACznB,SAAS,CAACx1B,KAAX,CAAhB,GAAoCg9C,aAAzC;AACAI,QAAAA,GAAG,GAAGF,WAAW,GAAGF,aAApB;AACAM,QAAAA,GAAG,GAAG,KAAKv9C,IAAL,GAAYuM,EAAlB;AACD,OANM,MAMA,IAAIojB,IAAI,KAAK,GAAb,EAAkB;AACvB,YAAIhzB,QAAQ,KAAK,QAAjB,EAA2B;AACzBwgD,UAAAA,WAAW,GAAGD,gBAAgB,CAAC,CAACznB,SAAS,CAAC31B,GAAV,GAAgB21B,SAAS,CAAC11B,MAA3B,IAAqC,CAArC,GAAyC,GAA1C,CAA9B;AACD,SAFD,MAEO,IAAI,uBAASpD,QAAT,CAAJ,EAAwB;AAC7B,cAAMg6C,cAAc,GAAGttC,MAAM,CAACC,IAAP,CAAY3M,QAAZ,EAAsB,CAAtB,CAAvB;AACA,cAAM4J,KAAK,GAAG5J,QAAQ,CAACg6C,cAAD,CAAtB;AACAwG,UAAAA,WAAW,GAAGD,gBAAgB,CAAC,KAAK//C,KAAL,CAAWf,MAAX,CAAkBu6C,cAAlB,EAAkCre,gBAAlC,CAAmD/xB,KAAnD,CAAD,CAA9B;AACD;;AACDm3C,QAAAA,EAAE,GAAGjoB,SAAS,CAAC31B,GAAf;AACA89C,QAAAA,EAAE,GAAGnoB,SAAS,CAAC11B,MAAf;AACAu9C,QAAAA,GAAG,GAAGH,WAAW,GAAGF,aAApB;AACAO,QAAAA,GAAG,GAAGF,GAAG,GAAG/wC,EAAZ;AACD,OAZM,MAYA,IAAIojB,IAAI,KAAK,GAAb,EAAkB;AACvB,YAAIhzB,QAAQ,KAAK,QAAjB,EAA2B;AACzBwgD,UAAAA,WAAW,GAAGD,gBAAgB,CAAC,CAACznB,SAAS,CAACz1B,IAAV,GAAiBy1B,SAAS,CAACx1B,KAA5B,IAAqC,CAAtC,CAA9B;AACD,SAFD,MAEO,IAAI,uBAAStD,QAAT,CAAJ,EAAwB;AAC7B,cAAMg6C,gBAAc,GAAGttC,MAAM,CAACC,IAAP,CAAY3M,QAAZ,EAAsB,CAAtB,CAAvB;AACA,cAAM4J,OAAK,GAAG5J,QAAQ,CAACg6C,gBAAD,CAAtB;AACAwG,UAAAA,WAAW,GAAGD,gBAAgB,CAAC,KAAK//C,KAAL,CAAWf,MAAX,CAAkBu6C,gBAAlB,EAAkCre,gBAAlC,CAAmD/xB,OAAnD,CAAD,CAA9B;AACD;;AACD82C,QAAAA,GAAG,GAAGF,WAAW,GAAGF,aAApB;AACAM,QAAAA,GAAG,GAAGF,GAAG,GAAG9wC,EAAZ;AACAkxC,QAAAA,EAAE,GAAGhoB,SAAS,CAACz1B,IAAf;AACA29C,QAAAA,EAAE,GAAGloB,SAAS,CAACx1B,KAAf;AACD;;AACD,UAAM49C,KAAK,GAAG,uBAAexgD,OAAO,CAACk7B,KAAR,CAAcsb,aAA7B,EAA4CiJ,WAA5C,CAAd;AACA,UAAMgB,IAAI,GAAG/+C,IAAI,CAAC0H,GAAL,CAAS,CAAT,EAAY1H,IAAI,CAAC+1C,IAAL,CAAUgI,WAAW,GAAGe,KAAxB,CAAZ,CAAb;;AACA,WAAKrhD,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGsgD,WAAhB,EAA6BtgD,CAAC,IAAIshD,IAAlC,EAAwC;AACtC,YAAMC,WAAW,GAAGnhD,IAAI,CAACm7C,UAAL,CAAgB,KAAKlkB,UAAL,CAAgBr3B,CAAhB,CAAhB,CAApB;AACA,YAAMwlC,SAAS,GAAG+b,WAAW,CAAC/b,SAA9B;AACA,YAAMgc,SAAS,GAAGD,WAAW,CAAC10B,KAA9B;AACA,YAAMmpB,UAAU,GAAG51C,IAAI,CAAC41C,UAAL,IAAmB,EAAtC;AACA,YAAMC,gBAAgB,GAAGsL,WAAW,CAACtL,gBAArC;AACA,YAAMH,SAAS,GAAGyL,WAAW,CAACzL,SAA9B;AACA,YAAMC,SAAS,GAAGwL,WAAW,CAACxL,SAA9B;AACA,YAAM0L,cAAc,GAAGF,WAAW,CAACE,cAAZ,IAA8B,EAArD;AACA,YAAMC,oBAAoB,GAAGH,WAAW,CAACG,oBAAzC;AACAvI,QAAAA,SAAS,GAAGJ,mBAAmB,CAAC,IAAD,EAAO/4C,CAAP,EAAUuI,MAAV,CAA/B;;AACA,YAAI4wC,SAAS,KAAK55C,SAAlB,EAA6B;AAC3B;AACD;;AACDqhD,QAAAA,gBAAgB,GAAG,uBAAYjgD,KAAZ,EAAmBw4C,SAAnB,EAA8B3T,SAA9B,CAAnB;;AACA,YAAIhI,YAAJ,EAAkB;AAChBqjB,UAAAA,GAAG,GAAGE,GAAG,GAAGE,EAAE,GAAGE,EAAE,GAAGP,gBAAtB;AACD,SAFD,MAEO;AACLE,UAAAA,GAAG,GAAGE,GAAG,GAAGE,EAAE,GAAGE,EAAE,GAAGR,gBAAtB;AACD;;AACDxvC,QAAAA,KAAK,CAACrP,IAAN,CAAW;AACT8+C,UAAAA,GAAG,EAAHA,GADS;AAETC,UAAAA,GAAG,EAAHA,GAFS;AAGTC,UAAAA,GAAG,EAAHA,GAHS;AAITC,UAAAA,GAAG,EAAHA,GAJS;AAKTC,UAAAA,EAAE,EAAFA,EALS;AAMTC,UAAAA,EAAE,EAAFA,EANS;AAOTC,UAAAA,EAAE,EAAFA,EAPS;AAQTC,UAAAA,EAAE,EAAFA,EARS;AASTz9C,UAAAA,KAAK,EAAE6hC,SATE;AAUT3Y,UAAAA,KAAK,EAAE20B,SAVE;AAWTxL,UAAAA,UAAU,EAAVA,UAXS;AAYTC,UAAAA,gBAAgB,EAAhBA,gBAZS;AAaTH,UAAAA,SAAS,EAATA,SAbS;AAcTC,UAAAA,SAAS,EAATA,SAdS;AAeT0L,UAAAA,cAAc,EAAdA,cAfS;AAgBTC,UAAAA,oBAAoB,EAApBA;AAhBS,SAAX;AAkBD;;AACD,WAAKtG,YAAL,GAAoBkF,WAApB;AACA,WAAKjF,YAAL,GAAoBsF,WAApB;AACA,aAAOvvC,KAAP;AACD;;;WACD,4BAAmB6nB,SAAnB,EAA8B;AAC5B,UAAM9F,IAAI,GAAG,KAAKA,IAAlB;AACA,UAAMtyB,OAAO,GAAG,KAAKA,OAArB;AACA,UAAOV,QAAP,GAAuCU,OAAvC,CAAOV,QAAP;AAAA,UAAwBigD,WAAxB,GAAuCv/C,OAAvC,CAAiBk7B,KAAjB;AACA,UAAMyB,YAAY,GAAG,KAAKA,YAAL,EAArB;AACA,UAAMzB,KAAK,GAAG,KAAKA,KAAnB;AACA,UAAO6a,KAAP,GAA6CwJ,WAA7C,CAAOxJ,KAAP;AAAA,UAAcC,UAAd,GAA6CuJ,WAA7C,CAAcvJ,UAAd;AAAA,UAA0BtG,OAA1B,GAA6C6P,WAA7C,CAA0B7P,OAA1B;AAAA,UAAmC6F,MAAnC,GAA6CgK,WAA7C,CAAmChK,MAAnC;AACA,UAAMrmC,EAAE,GAAGypC,iBAAiB,CAAC34C,OAAO,CAACT,IAAT,CAA5B;AACA,UAAMuhD,cAAc,GAAG5xC,EAAE,GAAGwgC,OAA5B;AACA,UAAMqR,eAAe,GAAGxL,MAAM,GAAG,CAAC7F,OAAJ,GAAcoR,cAA5C;AACA,UAAMvgB,QAAQ,GAAG,CAAC,uBAAU,KAAKsZ,aAAf,CAAlB;AACA,UAAMtpC,KAAK,GAAG,EAAd;AACA,UAAIpR,CAAJ,EAAOgxB,IAAP,EAAalF,IAAb,EAAmBnsB,KAAnB,EAA0B4N,CAA1B,EAA6BC,CAA7B,EAAgCq0C,SAAhC,EAA2C5B,KAA3C,EAAkD9hD,IAAlD,EAAwDy7C,UAAxD,EAAoEkI,SAApE,EAA+EC,UAA/E;AACA,UAAIC,YAAY,GAAG,QAAnB;;AACA,UAAI7hD,QAAQ,KAAK,KAAjB,EAAwB;AACtBqN,QAAAA,CAAC,GAAG,KAAKjK,MAAL,GAAcq+C,eAAlB;AACAC,QAAAA,SAAS,GAAG,KAAKI,uBAAL,EAAZ;AACD,OAHD,MAGO,IAAI9hD,QAAQ,KAAK,QAAjB,EAA2B;AAChCqN,QAAAA,CAAC,GAAG,KAAKlK,GAAL,GAAWs+C,eAAf;AACAC,QAAAA,SAAS,GAAG,KAAKI,uBAAL,EAAZ;AACD,OAHM,MAGA,IAAI9hD,QAAQ,KAAK,MAAjB,EAAyB;AAC9B,YAAMu0C,GAAG,GAAG,KAAKwN,uBAAL,CAA6BnyC,EAA7B,CAAZ;;AACA8xC,QAAAA,SAAS,GAAGnN,GAAG,CAACmN,SAAhB;AACAt0C,QAAAA,CAAC,GAAGmnC,GAAG,CAACnnC,CAAR;AACD,OAJM,MAIA,IAAIpN,QAAQ,KAAK,OAAjB,EAA0B;AAC/B,YAAMu0C,IAAG,GAAG,KAAKwN,uBAAL,CAA6BnyC,EAA7B,CAAZ;;AACA8xC,QAAAA,SAAS,GAAGnN,IAAG,CAACmN,SAAhB;AACAt0C,QAAAA,CAAC,GAAGmnC,IAAG,CAACnnC,CAAR;AACD,OAJM,MAIA,IAAI4lB,IAAI,KAAK,GAAb,EAAkB;AACvB,YAAIhzB,QAAQ,KAAK,QAAjB,EAA2B;AACzBqN,UAAAA,CAAC,GAAI,CAACyrB,SAAS,CAAC31B,GAAV,GAAgB21B,SAAS,CAAC11B,MAA3B,IAAqC,CAAtC,GAA2Co+C,cAA/C;AACD,SAFD,MAEO,IAAI,uBAASxhD,QAAT,CAAJ,EAAwB;AAC7B,cAAMg6C,cAAc,GAAGttC,MAAM,CAACC,IAAP,CAAY3M,QAAZ,EAAsB,CAAtB,CAAvB;AACA,cAAM4J,KAAK,GAAG5J,QAAQ,CAACg6C,cAAD,CAAtB;AACA3sC,UAAAA,CAAC,GAAG,KAAK7M,KAAL,CAAWf,MAAX,CAAkBu6C,cAAlB,EAAkCre,gBAAlC,CAAmD/xB,KAAnD,IAA4D43C,cAAhE;AACD;;AACDE,QAAAA,SAAS,GAAG,KAAKI,uBAAL,EAAZ;AACD,OATM,MASA,IAAI9uB,IAAI,KAAK,GAAb,EAAkB;AACvB,YAAIhzB,QAAQ,KAAK,QAAjB,EAA2B;AACzBoN,UAAAA,CAAC,GAAI,CAAC0rB,SAAS,CAACz1B,IAAV,GAAiBy1B,SAAS,CAACx1B,KAA5B,IAAqC,CAAtC,GAA2Ck+C,cAA/C;AACD,SAFD,MAEO,IAAI,uBAASxhD,QAAT,CAAJ,EAAwB;AAC7B,cAAMg6C,gBAAc,GAAGttC,MAAM,CAACC,IAAP,CAAY3M,QAAZ,EAAsB,CAAtB,CAAvB;AACA,cAAM4J,OAAK,GAAG5J,QAAQ,CAACg6C,gBAAD,CAAtB;AACA5sC,UAAAA,CAAC,GAAG,KAAK5M,KAAL,CAAWf,MAAX,CAAkBu6C,gBAAlB,EAAkCre,gBAAlC,CAAmD/xB,OAAnD,CAAJ;AACD;;AACD83C,QAAAA,SAAS,GAAG,KAAKK,uBAAL,CAA6BnyC,EAA7B,EAAiC8xC,SAA7C;AACD;;AACD,UAAI1uB,IAAI,KAAK,GAAb,EAAkB;AAChB,YAAIyjB,KAAK,KAAK,OAAd,EAAuB;AACrBoL,UAAAA,YAAY,GAAG,KAAf;AACD,SAFD,MAEO,IAAIpL,KAAK,KAAK,KAAd,EAAqB;AAC1BoL,UAAAA,YAAY,GAAG,QAAf;AACD;AACF;;AACD,UAAMhE,UAAU,GAAG,KAAKC,cAAL,EAAnB;;AACA,WAAKj+C,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAG+K,KAAK,CAACv8B,MAAzB,EAAiCQ,CAAC,GAAGgxB,IAArC,EAA2C,EAAEhxB,CAA7C,EAAgD;AAC9C8rB,QAAAA,IAAI,GAAGiQ,KAAK,CAAC/7B,CAAD,CAAZ;AACAL,QAAAA,KAAK,GAAGmsB,IAAI,CAACnsB,KAAb;AACA,YAAM4hD,WAAW,GAAGnB,WAAW,CAAC7E,UAAZ,CAAuB,KAAKlkB,UAAL,CAAgBr3B,CAAhB,CAAvB,CAApB;AACAigD,QAAAA,KAAK,GAAG,KAAKjkB,eAAL,CAAqBh8B,CAArB,IAA0BogD,WAAW,CAAC3J,WAA9C;AACAt4C,QAAAA,IAAI,GAAG,KAAK0hD,uBAAL,CAA6B7/C,CAA7B,CAAP;AACA45C,QAAAA,UAAU,GAAGz7C,IAAI,CAACy7C,UAAlB;AACAkI,QAAAA,SAAS,GAAG,uBAAQniD,KAAR,IAAiBA,KAAK,CAACH,MAAvB,GAAgC,CAA5C;AACA,YAAM2iD,SAAS,GAAGL,SAAS,GAAG,CAA9B;AACA,YAAMj1B,KAAK,GAAG00B,WAAW,CAAC10B,KAA1B;AACA,YAAMu1B,WAAW,GAAGb,WAAW,CAACjL,eAAhC;AACA,YAAM+L,WAAW,GAAGd,WAAW,CAAClL,eAAhC;;AACA,YAAI7Y,YAAJ,EAAkB;AAChBjwB,UAAAA,CAAC,GAAG0yC,KAAJ;;AACA,cAAI9/C,QAAQ,KAAK,KAAjB,EAAwB;AACtB,gBAAI02C,UAAU,KAAK,MAAf,IAAyBzV,QAAQ,KAAK,CAA1C,EAA6C;AAC3C2gB,cAAAA,UAAU,GAAG,CAACD,SAAD,GAAalI,UAAb,GAA0BA,UAAU,GAAG,CAApD;AACD,aAFD,MAEO,IAAI/C,UAAU,KAAK,QAAnB,EAA6B;AAClCkL,cAAAA,UAAU,GAAG,CAAC/D,UAAU,CAACK,OAAX,CAAmB36C,MAApB,GAA6B,CAA7B,GAAiCy+C,SAAS,GAAGvI,UAA7C,GAA0DA,UAAvE;AACD,aAFM,MAEA;AACLmI,cAAAA,UAAU,GAAG,CAAC/D,UAAU,CAACK,OAAX,CAAmB36C,MAApB,GAA6Bk2C,UAAU,GAAG,CAAvD;AACD;AACF,WARD,MAQO;AACL,gBAAI/C,UAAU,KAAK,MAAf,IAAyBzV,QAAQ,KAAK,CAA1C,EAA6C;AAC3C2gB,cAAAA,UAAU,GAAGnI,UAAU,GAAG,CAA1B;AACD,aAFD,MAEO,IAAI/C,UAAU,KAAK,QAAnB,EAA6B;AAClCkL,cAAAA,UAAU,GAAG/D,UAAU,CAACK,OAAX,CAAmB36C,MAAnB,GAA4B,CAA5B,GAAgCy+C,SAAS,GAAGvI,UAAzD;AACD,aAFM,MAEA;AACLmI,cAAAA,UAAU,GAAG/D,UAAU,CAACK,OAAX,CAAmB36C,MAAnB,GAA4Bo+C,SAAS,GAAGlI,UAArD;AACD;AACF;;AACD,cAAIxD,MAAJ,EAAY;AACV2L,YAAAA,UAAU,IAAI,CAAC,CAAf;AACD;AACF,SAtBD,MAsBO;AACLv0C,UAAAA,CAAC,GAAGyyC,KAAJ;AACA8B,UAAAA,UAAU,GAAG,CAAC,IAAID,SAAL,IAAkBlI,UAAlB,GAA+B,CAA5C;AACD;;AACD,YAAIzzC,QAAQ,SAAZ;;AACA,YAAIo7C,WAAW,CAACzK,iBAAhB,EAAmC;AACjC,cAAMwL,YAAY,GAAG,uBAAUf,WAAW,CAACvK,eAAtB,CAArB;AACA,cAAMtzC,MAAM,GAAGs6C,UAAU,CAACuB,OAAX,CAAmBv/C,CAAnB,CAAf;AACA,cAAM2D,KAAK,GAAGq6C,UAAU,CAACsB,MAAX,CAAkBt/C,CAAlB,CAAd;AACA,cAAIsD,GAAG,GAAGkK,CAAC,GAAGu0C,UAAJ,GAAiBO,YAAY,CAACh/C,GAAxC;AACA,cAAIE,IAAI,GAAG+J,CAAC,GAAG+0C,YAAY,CAAC9+C,IAA5B;;AACA,kBAAQw+C,YAAR;AACA,iBAAK,QAAL;AACE1+C,cAAAA,GAAG,IAAII,MAAM,GAAG,CAAhB;AACA;;AACF,iBAAK,QAAL;AACEJ,cAAAA,GAAG,IAAII,MAAP;AACA;AANF;;AAQA,kBAAQm+C,SAAR;AACA,iBAAK,QAAL;AACEr+C,cAAAA,IAAI,IAAIG,KAAK,GAAG,CAAhB;AACA;;AACF,iBAAK,OAAL;AACEH,cAAAA,IAAI,IAAIG,KAAR;AACA;AANF;;AAQAwC,UAAAA,QAAQ,GAAG;AACT3C,YAAAA,IAAI,EAAJA,IADS;AAETF,YAAAA,GAAG,EAAHA,GAFS;AAGTK,YAAAA,KAAK,EAAEA,KAAK,GAAG2+C,YAAY,CAAC3+C,KAHnB;AAITD,YAAAA,MAAM,EAAEA,MAAM,GAAG4+C,YAAY,CAAC5+C,MAJrB;AAKTmpB,YAAAA,KAAK,EAAE00B,WAAW,CAACxK;AALV,WAAX;AAOD;;AACD3lC,QAAAA,KAAK,CAACrP,IAAN,CAAW;AACTq/B,UAAAA,QAAQ,EAARA,QADS;AAETzhC,UAAAA,KAAK,EAALA,KAFS;AAGTxB,UAAAA,IAAI,EAAJA,IAHS;AAIT0uB,UAAAA,KAAK,EAALA,KAJS;AAKTu1B,UAAAA,WAAW,EAAXA,WALS;AAMTC,UAAAA,WAAW,EAAXA,WANS;AAOTN,UAAAA,UAAU,EAAVA,UAPS;AAQTF,UAAAA,SAAS,EAATA,SARS;AASTG,UAAAA,YAAY,EAAZA,YATS;AAUTO,UAAAA,WAAW,EAAE,CAACh1C,CAAD,EAAIC,CAAJ,CAVJ;AAWTrH,UAAAA,QAAQ,EAARA;AAXS,SAAX;AAaD;;AACD,aAAOiL,KAAP;AACD;;;WACD,mCAA0B;AACxB,2BAA0B,KAAKvQ,OAA/B;AAAA,UAAOV,QAAP,kBAAOA,QAAP;AAAA,UAAiB47B,KAAjB,kBAAiBA,KAAjB;AACA,UAAMqF,QAAQ,GAAG,CAAC,uBAAU,KAAKsZ,aAAf,CAAlB;;AACA,UAAItZ,QAAJ,EAAc;AACZ,eAAOjhC,QAAQ,KAAK,KAAb,GAAqB,MAArB,GAA8B,OAArC;AACD;;AACD,UAAIy2C,KAAK,GAAG,QAAZ;;AACA,UAAI7a,KAAK,CAAC6a,KAAN,KAAgB,OAApB,EAA6B;AAC3BA,QAAAA,KAAK,GAAG,MAAR;AACD,OAFD,MAEO,IAAI7a,KAAK,CAAC6a,KAAN,KAAgB,KAApB,EAA2B;AAChCA,QAAAA,KAAK,GAAG,OAAR;AACD;;AACD,aAAOA,KAAP;AACD;;;WACD,iCAAwB7mC,EAAxB,EAA4B;AAC1B,2BAAyD,KAAKlP,OAA9D;AAAA,UAAOV,QAAP,kBAAOA,QAAP;AAAA,gDAAiB47B,KAAjB;AAAA,UAAyB8a,UAAzB,wBAAyBA,UAAzB;AAAA,UAAqCT,MAArC,wBAAqCA,MAArC;AAAA,UAA6C7F,OAA7C,wBAA6CA,OAA7C;;AACA,UAAMyN,UAAU,GAAG,KAAKC,cAAL,EAAnB;;AACA,UAAM0D,cAAc,GAAG5xC,EAAE,GAAGwgC,OAA5B;AACA,UAAM4N,MAAM,GAAGH,UAAU,CAACG,MAAX,CAAkBx6C,KAAjC;AACA,UAAIk+C,SAAJ;AACA,UAAIt0C,CAAJ;;AACA,UAAIpN,QAAQ,KAAK,MAAjB,EAAyB;AACvB,YAAIi2C,MAAJ,EAAY;AACV7oC,UAAAA,CAAC,GAAG,KAAK9J,KAAL,GAAa8sC,OAAjB;;AACA,cAAIsG,UAAU,KAAK,MAAnB,EAA2B;AACzBgL,YAAAA,SAAS,GAAG,MAAZ;AACD,WAFD,MAEO,IAAIhL,UAAU,KAAK,QAAnB,EAA6B;AAClCgL,YAAAA,SAAS,GAAG,QAAZ;AACAt0C,YAAAA,CAAC,IAAK4wC,MAAM,GAAG,CAAf;AACD,WAHM,MAGA;AACL0D,YAAAA,SAAS,GAAG,OAAZ;AACAt0C,YAAAA,CAAC,IAAI4wC,MAAL;AACD;AACF,SAXD,MAWO;AACL5wC,UAAAA,CAAC,GAAG,KAAK9J,KAAL,GAAak+C,cAAjB;;AACA,cAAI9K,UAAU,KAAK,MAAnB,EAA2B;AACzBgL,YAAAA,SAAS,GAAG,OAAZ;AACD,WAFD,MAEO,IAAIhL,UAAU,KAAK,QAAnB,EAA6B;AAClCgL,YAAAA,SAAS,GAAG,QAAZ;AACAt0C,YAAAA,CAAC,IAAK4wC,MAAM,GAAG,CAAf;AACD,WAHM,MAGA;AACL0D,YAAAA,SAAS,GAAG,MAAZ;AACAt0C,YAAAA,CAAC,GAAG,KAAK/J,IAAT;AACD;AACF;AACF,OAxBD,MAwBO,IAAIrD,QAAQ,KAAK,OAAjB,EAA0B;AAC/B,YAAIi2C,MAAJ,EAAY;AACV7oC,UAAAA,CAAC,GAAG,KAAK/J,IAAL,GAAY+sC,OAAhB;;AACA,cAAIsG,UAAU,KAAK,MAAnB,EAA2B;AACzBgL,YAAAA,SAAS,GAAG,OAAZ;AACD,WAFD,MAEO,IAAIhL,UAAU,KAAK,QAAnB,EAA6B;AAClCgL,YAAAA,SAAS,GAAG,QAAZ;AACAt0C,YAAAA,CAAC,IAAK4wC,MAAM,GAAG,CAAf;AACD,WAHM,MAGA;AACL0D,YAAAA,SAAS,GAAG,MAAZ;AACAt0C,YAAAA,CAAC,IAAI4wC,MAAL;AACD;AACF,SAXD,MAWO;AACL5wC,UAAAA,CAAC,GAAG,KAAK/J,IAAL,GAAYm+C,cAAhB;;AACA,cAAI9K,UAAU,KAAK,MAAnB,EAA2B;AACzBgL,YAAAA,SAAS,GAAG,MAAZ;AACD,WAFD,MAEO,IAAIhL,UAAU,KAAK,QAAnB,EAA6B;AAClCgL,YAAAA,SAAS,GAAG,QAAZ;AACAt0C,YAAAA,CAAC,IAAI4wC,MAAM,GAAG,CAAd;AACD,WAHM,MAGA;AACL0D,YAAAA,SAAS,GAAG,OAAZ;AACAt0C,YAAAA,CAAC,GAAG,KAAK9J,KAAT;AACD;AACF;AACF,OAxBM,MAwBA;AACLo+C,QAAAA,SAAS,GAAG,OAAZ;AACD;;AACD,aAAO;AAACA,QAAAA,SAAS,EAATA,SAAD;AAAYt0C,QAAAA,CAAC,EAADA;AAAZ,OAAP;AACD;;;WACD,6BAAoB;AAClB,UAAI,KAAK1M,OAAL,CAAak7B,KAAb,CAAmBqa,MAAvB,EAA+B;AAC7B;AACD;;AACD,UAAMz1C,KAAK,GAAG,KAAKA,KAAnB;AACA,UAAMR,QAAQ,GAAG,KAAKU,OAAL,CAAaV,QAA9B;;AACA,UAAIA,QAAQ,KAAK,MAAb,IAAuBA,QAAQ,KAAK,OAAxC,EAAiD;AAC/C,eAAO;AAACmD,UAAAA,GAAG,EAAE,CAAN;AAASE,UAAAA,IAAI,EAAE,KAAKA,IAApB;AAA0BD,UAAAA,MAAM,EAAE5C,KAAK,CAAC+C,MAAxC;AAAgDD,UAAAA,KAAK,EAAE,KAAKA;AAA5D,SAAP;AACD;;AAAC,UAAItD,QAAQ,KAAK,KAAb,IAAsBA,QAAQ,KAAK,QAAvC,EAAiD;AACjD,eAAO;AAACmD,UAAAA,GAAG,EAAE,KAAKA,GAAX;AAAgBE,UAAAA,IAAI,EAAE,CAAtB;AAAyBD,UAAAA,MAAM,EAAE,KAAKA,MAAtC;AAA8CE,UAAAA,KAAK,EAAE9C,KAAK,CAACgD;AAA3D,SAAP;AACD;AACF;;;WACD,0BAAiB;AACf,UAAO+wB,GAAP,GAAoE,IAApE,CAAOA,GAAP;AAAA,UAAsBp0B,eAAtB,GAAoE,IAApE,CAAYO,OAAZ,CAAsBP,eAAtB;AAAA,UAAwCkD,IAAxC,GAAoE,IAApE,CAAwCA,IAAxC;AAAA,UAA8CF,GAA9C,GAAoE,IAApE,CAA8CA,GAA9C;AAAA,UAAmDK,KAAnD,GAAoE,IAApE,CAAmDA,KAAnD;AAAA,UAA0DD,MAA1D,GAAoE,IAApE,CAA0DA,MAA1D;;AACA,UAAIpD,eAAJ,EAAqB;AACnBo0B,QAAAA,GAAG,CAAC8tB,IAAJ;AACA9tB,QAAAA,GAAG,CAAC2Q,SAAJ,GAAgB/kC,eAAhB;AACAo0B,QAAAA,GAAG,CAAC+tB,QAAJ,CAAaj/C,IAAb,EAAmBF,GAAnB,EAAwBK,KAAxB,EAA+BD,MAA/B;AACAgxB,QAAAA,GAAG,CAACguB,OAAJ;AACD;AACF;;;WACD,8BAAqB34C,KAArB,EAA4B;AAC1B,UAAM3J,IAAI,GAAG,KAAKS,OAAL,CAAaT,IAA1B;;AACA,UAAI,CAAC,KAAK29C,UAAL,EAAD,IAAsB,CAAC39C,IAAI,CAACX,OAAhC,EAAyC;AACvC,eAAO,CAAP;AACD;;AACD,UAAMs8B,KAAK,GAAG,KAAKA,KAAnB;AACA,UAAM36B,KAAK,GAAG26B,KAAK,CAAC4mB,SAAN,CAAgB,UAAA/4B,CAAC;AAAA,eAAIA,CAAC,CAAC7f,KAAF,KAAYA,KAAhB;AAAA,OAAjB,CAAd;;AACA,UAAI3I,KAAK,IAAI,CAAb,EAAgB;AACd,YAAMkJ,IAAI,GAAGlK,IAAI,CAACm7C,UAAL,CAAgB,KAAKlkB,UAAL,CAAgBj2B,KAAhB,CAAhB,CAAb;AACA,eAAOkJ,IAAI,CAACk7B,SAAZ;AACD;;AACD,aAAO,CAAP;AACD;;;WACD,kBAASvM,SAAT,EAAoB;AAClB,UAAM74B,IAAI,GAAG,KAAKS,OAAL,CAAaT,IAA1B;AACA,UAAMs0B,GAAG,GAAG,KAAKA,GAAjB;;AACA,UAAMtjB,KAAK,GAAG,KAAKwpC,cAAL,KAAwB,KAAKA,cAAL,GAAsB,KAAKgI,qBAAL,CAA2B3pB,SAA3B,CAA9C,CAAd;;AACA,UAAIj5B,CAAJ,EAAOgxB,IAAP;;AACA,UAAM6xB,QAAQ,GAAG,SAAXA,QAAW,CAACC,EAAD,EAAKC,EAAL,EAASn/C,KAAT,EAAmB;AAClC,YAAI,CAACA,KAAK,CAACD,KAAP,IAAgB,CAACC,KAAK,CAACipB,KAA3B,EAAkC;AAChC;AACD;;AACD6H,QAAAA,GAAG,CAAC8tB,IAAJ;AACA9tB,QAAAA,GAAG,CAAC8Q,SAAJ,GAAgB5hC,KAAK,CAACD,KAAtB;AACA+wB,QAAAA,GAAG,CAAC4Q,WAAJ,GAAkB1hC,KAAK,CAACipB,KAAxB;AACA6H,QAAAA,GAAG,CAACsuB,WAAJ,CAAgBp/C,KAAK,CAACoyC,UAAN,IAAoB,EAApC;AACAthB,QAAAA,GAAG,CAACuuB,cAAJ,GAAqBr/C,KAAK,CAACqyC,gBAA3B;AACAvhB,QAAAA,GAAG,CAACwuB,SAAJ;AACAxuB,QAAAA,GAAG,CAACyuB,MAAJ,CAAWL,EAAE,CAACv1C,CAAd,EAAiBu1C,EAAE,CAACt1C,CAApB;AACAknB,QAAAA,GAAG,CAAC0uB,MAAJ,CAAWL,EAAE,CAACx1C,CAAd,EAAiBw1C,EAAE,CAACv1C,CAApB;AACAknB,QAAAA,GAAG,CAAC2uB,MAAJ;AACA3uB,QAAAA,GAAG,CAACguB,OAAJ;AACD,OAdD;;AAeA,UAAItiD,IAAI,CAACX,OAAT,EAAkB;AAChB,aAAKO,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAG5f,KAAK,CAAC5R,MAAzB,EAAiCQ,CAAC,GAAGgxB,IAArC,EAA2C,EAAEhxB,CAA7C,EAAgD;AAC9C,cAAM4C,IAAI,GAAGwO,KAAK,CAACpR,CAAD,CAAlB;;AACA,cAAII,IAAI,CAACC,eAAT,EAA0B;AACxBwiD,YAAAA,QAAQ,CACN;AAACt1C,cAAAA,CAAC,EAAE3K,IAAI,CAACq+C,EAAT;AAAazzC,cAAAA,CAAC,EAAE5K,IAAI,CAACs+C;AAArB,aADM,EAEN;AAAC3zC,cAAAA,CAAC,EAAE3K,IAAI,CAACu+C,EAAT;AAAa3zC,cAAAA,CAAC,EAAE5K,IAAI,CAACw+C;AAArB,aAFM,EAGNx+C,IAHM,CAAR;AAKD;;AACD,cAAIxC,IAAI,CAACw1C,SAAT,EAAoB;AAClBiN,YAAAA,QAAQ,CACN;AAACt1C,cAAAA,CAAC,EAAE3K,IAAI,CAACi+C,GAAT;AAAcrzC,cAAAA,CAAC,EAAE5K,IAAI,CAACk+C;AAAtB,aADM,EAEN;AAACvzC,cAAAA,CAAC,EAAE3K,IAAI,CAACm+C,GAAT;AAAcvzC,cAAAA,CAAC,EAAE5K,IAAI,CAACo+C;AAAtB,aAFM,EAGN;AACEn0B,cAAAA,KAAK,EAAEjqB,IAAI,CAACmzC,SADd;AAEEpyC,cAAAA,KAAK,EAAEf,IAAI,CAACkzC,SAFd;AAGEE,cAAAA,UAAU,EAAEpzC,IAAI,CAAC6+C,cAHnB;AAIExL,cAAAA,gBAAgB,EAAErzC,IAAI,CAAC8+C;AAJzB,aAHM,CAAR;AAUD;AACF;AACF;AACF;;;WACD,sBAAa;AACX,UAAO/gD,KAAP,GAAsC,IAAtC,CAAOA,KAAP;AAAA,UAAc+zB,GAAd,GAAsC,IAAtC,CAAcA,GAAd;AAAA,UAA6Bt0B,IAA7B,GAAsC,IAAtC,CAAmBS,OAAnB,CAA6BT,IAA7B;AACA,UAAMmgD,UAAU,GAAGngD,IAAI,CAACm7C,UAAL,CAAgB,KAAKlkB,UAAL,EAAhB,CAAnB;AACA,UAAMmpB,SAAS,GAAGpgD,IAAI,CAACu1C,UAAL,GAAkB4K,UAAU,CAAC1b,WAA7B,GAA2C,CAA7D;;AACA,UAAI,CAAC2b,SAAL,EAAgB;AACd;AACD;;AACD,UAAM8C,aAAa,GAAGljD,IAAI,CAACm7C,UAAL,CAAgB,KAAKlkB,UAAL,CAAgB,CAAhB,CAAhB,EAAoCmO,SAA1D;AACA,UAAMmb,WAAW,GAAG,KAAKtF,YAAzB;AACA,UAAI4F,EAAJ,EAAQE,EAAR,EAAYD,EAAZ,EAAgBE,EAAhB;;AACA,UAAI,KAAK5jB,YAAL,EAAJ,EAAyB;AACvByjB,QAAAA,EAAE,GAAG,uBAAYtgD,KAAZ,EAAmB,KAAK6C,IAAxB,EAA8Bg9C,SAA9B,IAA2CA,SAAS,GAAG,CAA5D;AACAW,QAAAA,EAAE,GAAG,uBAAYxgD,KAAZ,EAAmB,KAAK8C,KAAxB,EAA+B6/C,aAA/B,IAAgDA,aAAa,GAAG,CAArE;AACApC,QAAAA,EAAE,GAAGE,EAAE,GAAGT,WAAV;AACD,OAJD,MAIO;AACLO,QAAAA,EAAE,GAAG,uBAAYvgD,KAAZ,EAAmB,KAAK2C,GAAxB,EAA6Bk9C,SAA7B,IAA0CA,SAAS,GAAG,CAA3D;AACAY,QAAAA,EAAE,GAAG,uBAAYzgD,KAAZ,EAAmB,KAAK4C,MAAxB,EAAgC+/C,aAAhC,IAAiDA,aAAa,GAAG,CAAtE;AACArC,QAAAA,EAAE,GAAGE,EAAE,GAAGR,WAAV;AACD;;AACDjsB,MAAAA,GAAG,CAAC8tB,IAAJ;AACA9tB,MAAAA,GAAG,CAAC8Q,SAAJ,GAAgB+a,UAAU,CAAC1b,WAA3B;AACAnQ,MAAAA,GAAG,CAAC4Q,WAAJ,GAAkBib,UAAU,CAAChb,WAA7B;AACA7Q,MAAAA,GAAG,CAACwuB,SAAJ;AACAxuB,MAAAA,GAAG,CAACyuB,MAAJ,CAAWlC,EAAX,EAAeC,EAAf;AACAxsB,MAAAA,GAAG,CAAC0uB,MAAJ,CAAWjC,EAAX,EAAeC,EAAf;AACA1sB,MAAAA,GAAG,CAAC2uB,MAAJ;AACA3uB,MAAAA,GAAG,CAACguB,OAAJ;AACD;;;WACD,oBAAWzpB,SAAX,EAAsB;AACpB,UAAMmnB,WAAW,GAAG,KAAKv/C,OAAL,CAAak7B,KAAjC;;AACA,UAAI,CAACqkB,WAAW,CAAC3gD,OAAjB,EAA0B;AACxB;AACD;;AACD,UAAMi1B,GAAG,GAAG,KAAKA,GAAjB;;AACA,UAAMsE,IAAI,GAAG,KAAKuqB,iBAAL,EAAb;;AACA,UAAIvqB,IAAJ,EAAU;AACR,+BAAStE,GAAT,EAAcsE,IAAd;AACD;;AACD,UAAM5nB,KAAK,GAAG,KAAKypC,WAAL,KAAqB,KAAKA,WAAL,GAAmB,KAAK2I,kBAAL,CAAwBvqB,SAAxB,CAAxC,CAAd;;AACA,UAAIj5B,CAAJ,EAAOgxB,IAAP;;AACA,WAAKhxB,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAG5f,KAAK,CAAC5R,MAAzB,EAAiCQ,CAAC,GAAGgxB,IAArC,EAA2C,EAAEhxB,CAA7C,EAAgD;AAC9C,YAAM4C,IAAI,GAAGwO,KAAK,CAACpR,CAAD,CAAlB;AACA,YAAM0/C,QAAQ,GAAG98C,IAAI,CAACzE,IAAtB;AACA,YAAMwB,KAAK,GAAGiD,IAAI,CAACjD,KAAnB;;AACA,YAAIiD,IAAI,CAACuD,QAAT,EAAmB;AACjBuuB,UAAAA,GAAG,CAAC2Q,SAAJ,GAAgBziC,IAAI,CAACuD,QAAL,CAAc0mB,KAA9B;AACA6H,UAAAA,GAAG,CAAC+tB,QAAJ,CAAa7/C,IAAI,CAACuD,QAAL,CAAc3C,IAA3B,EAAiCZ,IAAI,CAACuD,QAAL,CAAc7C,GAA/C,EAAoDV,IAAI,CAACuD,QAAL,CAAcxC,KAAlE,EAAyEf,IAAI,CAACuD,QAAL,CAAczC,MAAvF;AACD;;AACD,YAAI8J,CAAC,GAAG5K,IAAI,CAACm/C,UAAb;AACA,+BAAWrtB,GAAX,EAAgB/0B,KAAhB,EAAuB,CAAvB,EAA0B6N,CAA1B,EAA6BkyC,QAA7B,EAAuC98C,IAAvC;AACD;;AACD,UAAIo2B,IAAJ,EAAU;AACR,+BAAWtE,GAAX;AACD;AACF;;;WACD,qBAAY;AACV,UAAOA,GAAP,GAAmD,IAAnD,CAAOA,GAAP;AAAA,2BAAmD,IAAnD,CAAY7zB,OAAZ;AAAA,UAAsBV,QAAtB,kBAAsBA,QAAtB;AAAA,UAAgCb,KAAhC,kBAAgCA,KAAhC;AAAA,UAAuC+wB,OAAvC,kBAAuCA,OAAvC;;AACA,UAAI,CAAC/wB,KAAK,CAACG,OAAX,EAAoB;AAClB;AACD;;AACD,UAAMtB,IAAI,GAAG,uBAAOmB,KAAK,CAACnB,IAAb,CAAb;AACA,UAAMoyC,OAAO,GAAG,uBAAUjxC,KAAK,CAACixC,OAAhB,CAAhB;AACA,UAAMqG,KAAK,GAAGt3C,KAAK,CAACs3C,KAApB;AACA,UAAIruC,MAAM,GAAGpK,IAAI,CAACy7C,UAAL,GAAkB,CAA/B;;AACA,UAAIz5C,QAAQ,KAAK,QAAb,IAAyBA,QAAQ,KAAK,QAAtC,IAAkD,uBAASA,QAAT,CAAtD,EAA0E;AACxEoI,QAAAA,MAAM,IAAIgoC,OAAO,CAAChtC,MAAlB;;AACA,YAAI,uBAAQjE,KAAK,CAACI,IAAd,CAAJ,EAAyB;AACvB6I,UAAAA,MAAM,IAAIpK,IAAI,CAACy7C,UAAL,IAAmBt6C,KAAK,CAACI,IAAN,CAAWF,MAAX,GAAoB,CAAvC,CAAV;AACD;AACF,OALD,MAKO;AACL+I,QAAAA,MAAM,IAAIgoC,OAAO,CAACjtC,GAAlB;AACD;;AACD,uBAA6C02C,SAAS,CAAC,IAAD,EAAOzxC,MAAP,EAAepI,QAAf,EAAyBy2C,KAAzB,CAAtD;AAAA,UAAOqD,MAAP,cAAOA,MAAP;AAAA,UAAeC,MAAf,cAAeA,MAAf;AAAA,UAAuBxW,QAAvB,cAAuBA,QAAvB;AAAA,UAAiCtC,QAAjC,cAAiCA,QAAjC;;AACA,6BAAW1M,GAAX,EAAgBp1B,KAAK,CAACI,IAAtB,EAA4B,CAA5B,EAA+B,CAA/B,EAAkCvB,IAAlC,EAAwC;AACtC0uB,QAAAA,KAAK,EAAEvtB,KAAK,CAACutB,KADyB;AAEtC6W,QAAAA,QAAQ,EAARA,QAFsC;AAGtCtC,QAAAA,QAAQ,EAARA,QAHsC;AAItCygB,QAAAA,SAAS,EAAE9H,UAAU,CAACnD,KAAD,EAAQz2C,QAAR,EAAkBkwB,OAAlB,CAJiB;AAKtC2xB,QAAAA,YAAY,EAAE,QALwB;AAMtCO,QAAAA,WAAW,EAAE,CAACtI,MAAD,EAASC,MAAT;AANyB,OAAxC;AAQD;;;WACD,cAAKjhB,SAAL,EAAgB;AACd,UAAI,CAAC,KAAK8kB,UAAL,EAAL,EAAwB;AACtB;AACD;;AACD,WAAK0F,cAAL;AACA,WAAKC,QAAL,CAAczqB,SAAd;AACA,WAAK0c,UAAL;AACA,WAAKgO,SAAL;AACA,WAAKC,UAAL,CAAgB3qB,SAAhB;AACD;;;WACD,mBAAU;AAAA;;AACR,UAAM3uB,IAAI,GAAG,KAAKzJ,OAAlB;AACA,UAAMgjD,EAAE,GAAGv5C,IAAI,CAACyxB,KAAL,IAAczxB,IAAI,CAACyxB,KAAL,CAAWtuB,CAAzB,IAA8B,CAAzC;AACA,UAAMq2C,EAAE,GAAG,uBAAex5C,IAAI,CAAClK,IAAL,IAAakK,IAAI,CAAClK,IAAL,CAAUqN,CAAtC,EAAyC,CAAC,CAA1C,CAAX;;AACA,UAAI,CAAC,KAAKswC,UAAL,EAAD,IAAsB,KAAKpyB,IAAL,KAAcyuB,KAAK,CAACj4B,SAAN,CAAgBwJ,IAAxD,EAA8D;AAC5D,eAAO,CAAC;AACNle,UAAAA,CAAC,EAAEo2C,EADG;AAENl4B,UAAAA,IAAI,EAAE,cAACsN,SAAD,EAAe;AACnB,kBAAI,CAACtN,IAAL,CAAUsN,SAAV;AACD;AAJK,SAAD,CAAP;AAMD;;AACD,aAAO,CAAC;AACNxrB,QAAAA,CAAC,EAAEq2C,EADG;AAENn4B,QAAAA,IAAI,EAAE,cAACsN,SAAD,EAAe;AACnB,gBAAI,CAACwqB,cAAL;;AACA,gBAAI,CAACC,QAAL,CAAczqB,SAAd;;AACA,gBAAI,CAAC0qB,SAAL;AACD;AANK,OAAD,EAOJ;AACDl2C,QAAAA,CAAC,EAAEq2C,EAAE,GAAG,CADP;AAEDn4B,QAAAA,IAAI,EAAE,gBAAM;AACV,gBAAI,CAACgqB,UAAL;AACD;AAJA,OAPI,EAYJ;AACDloC,QAAAA,CAAC,EAAEo2C,EADF;AAEDl4B,QAAAA,IAAI,EAAE,cAACsN,SAAD,EAAe;AACnB,gBAAI,CAAC2qB,UAAL,CAAgB3qB,SAAhB;AACD;AAJA,OAZI,CAAP;AAkBD;;;WACD,iCAAwBj6B,IAAxB,EAA8B;AAC5B,UAAM08C,KAAK,GAAG,KAAK/6C,KAAL,CAAWwpC,4BAAX,EAAd;AACA,UAAM4Z,MAAM,GAAG,KAAK5wB,IAAL,GAAY,QAA3B;AACA,UAAMhK,MAAM,GAAG,EAAf;AACA,UAAInpB,CAAJ,EAAOgxB,IAAP;;AACA,WAAKhxB,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAG0qB,KAAK,CAACl8C,MAAzB,EAAiCQ,CAAC,GAAGgxB,IAArC,EAA2C,EAAEhxB,CAA7C,EAAgD;AAC9C,YAAM2kB,IAAI,GAAG+2B,KAAK,CAAC17C,CAAD,CAAlB;;AACA,YAAI2kB,IAAI,CAACo/B,MAAD,CAAJ,KAAiB,KAAKxmC,EAAtB,KAA6B,CAACve,IAAD,IAAS2lB,IAAI,CAAC3lB,IAAL,KAAcA,IAApD,CAAJ,EAA+D;AAC7DmqB,UAAAA,MAAM,CAACpnB,IAAP,CAAY4iB,IAAZ;AACD;AACF;;AACD,aAAOwE,MAAP;AACD;;;WACD,iCAAwB/nB,KAAxB,EAA+B;AAC7B,UAAMkJ,IAAI,GAAG,KAAKzJ,OAAL,CAAak7B,KAAb,CAAmBwf,UAAnB,CAA8B,KAAKlkB,UAAL,CAAgBj2B,KAAhB,CAA9B,CAAb;AACA,aAAO,uBAAOkJ,IAAI,CAACnM,IAAZ,CAAP;AACD;;;WACD,sBAAa;AACX,UAAMK,QAAQ,GAAG,KAAKqhD,uBAAL,CAA6B,CAA7B,EAAgCjG,UAAjD;;AACA,aAAO,CAAC,KAAKpc,YAAL,KAAsB,KAAK75B,KAA3B,GAAmC,KAAKD,MAAzC,IAAmDlF,QAA1D;AACD;;;;EA3iCiBi2C;;;;IA8iCduP;AACJ,yBAAYhlD,IAAZ,EAAkBilD,KAAlB,EAAyBpa,QAAzB,EAAmC;AAAA;;AACjC,SAAK7qC,IAAL,GAAYA,IAAZ;AACA,SAAKilD,KAAL,GAAaA,KAAb;AACA,SAAKpa,QAAL,GAAgBA,QAAhB;AACA,SAAKz4B,KAAL,GAAavE,MAAM,CAACqR,MAAP,CAAc,IAAd,CAAb;AACD;;;;WACD,mBAAUlf,IAAV,EAAgB;AACd,aAAO6N,MAAM,CAACsV,SAAP,CAAiB+hC,aAAjB,CAA+BngC,IAA/B,CAAoC,KAAK/kB,IAAL,CAAUmjB,SAA9C,EAAyDnjB,IAAI,CAACmjB,SAA9D,CAAP;AACD;;;WACD,kBAASvf,IAAT,EAAe;AACb,UAAMuhD,KAAK,GAAGt3C,MAAM,CAACqV,cAAP,CAAsBtf,IAAtB,CAAd;AACA,UAAIwhD,WAAJ;;AACA,UAAIC,iBAAiB,CAACF,KAAD,CAArB,EAA8B;AAC5BC,QAAAA,WAAW,GAAG,KAAKpnD,QAAL,CAAcmnD,KAAd,CAAd;AACD;;AACD,UAAM/yC,KAAK,GAAG,KAAKA,KAAnB;AACA,UAAMmM,EAAE,GAAG3a,IAAI,CAAC2a,EAAhB;AACA,UAAM0mC,KAAK,GAAG,KAAKA,KAAL,GAAa,GAAb,GAAmB1mC,EAAjC;;AACA,UAAI,CAACA,EAAL,EAAS;AACP,cAAM,IAAI8B,KAAJ,CAAU,6BAA6Bzc,IAAvC,CAAN;AACD;;AACD,UAAI2a,EAAE,IAAInM,KAAV,EAAiB;AACf,eAAO6yC,KAAP;AACD;;AACD7yC,MAAAA,KAAK,CAACmM,EAAD,CAAL,GAAY3a,IAAZ;AACA0hD,MAAAA,gBAAgB,CAAC1hD,IAAD,EAAOqhD,KAAP,EAAcG,WAAd,CAAhB;;AACA,UAAI,KAAKva,QAAT,EAAmB;AACjB3rC,0BAAS2rC,QAAT,CAAkBjnC,IAAI,CAAC2a,EAAvB,EAA2B3a,IAAI,CAAC49B,SAAhC;AACD;;AACD,aAAOyjB,KAAP;AACD;;;WACD,aAAI1mC,EAAJ,EAAQ;AACN,aAAO,KAAKnM,KAAL,CAAWmM,EAAX,CAAP;AACD;;;WACD,oBAAW3a,IAAX,EAAiB;AACf,UAAMwO,KAAK,GAAG,KAAKA,KAAnB;AACA,UAAMmM,EAAE,GAAG3a,IAAI,CAAC2a,EAAhB;AACA,UAAM0mC,KAAK,GAAG,KAAKA,KAAnB;;AACA,UAAI1mC,EAAE,IAAInM,KAAV,EAAiB;AACf,eAAOA,KAAK,CAACmM,EAAD,CAAZ;AACD;;AACD,UAAI0mC,KAAK,IAAI1mC,EAAE,IAAIrf,kBAAS+lD,KAAT,CAAnB,EAAoC;AAClC,eAAO/lD,kBAAS+lD,KAAT,EAAgB1mC,EAAhB,CAAP;;AACA,YAAI,KAAKssB,QAAT,EAAmB;AACjB,iBAAOrJ,mBAAUjjB,EAAV,CAAP;AACD;AACF;AACF;;;;;;AAEH,SAAS+mC,gBAAT,CAA0B1hD,IAA1B,EAAgCqhD,KAAhC,EAAuCG,WAAvC,EAAoD;AAClD,MAAMG,YAAY,GAAG,wBAAM13C,MAAM,CAACqR,MAAP,CAAc,IAAd,CAAN,EAA2B,CAC9CkmC,WAAW,GAAGlmD,kBAASiiB,GAAT,CAAaikC,WAAb,CAAH,GAA+B,EADI,EAE9ClmD,kBAASiiB,GAAT,CAAa8jC,KAAb,CAF8C,EAG9CrhD,IAAI,CAAC1E,QAHyC,CAA3B,CAArB;;AAKAA,oBAASqN,GAAT,CAAa04C,KAAb,EAAoBM,YAApB;;AACA,MAAI3hD,IAAI,CAAC+xC,aAAT,EAAwB;AACtB6P,IAAAA,aAAa,CAACP,KAAD,EAAQrhD,IAAI,CAAC+xC,aAAb,CAAb;AACD;;AACD,MAAI/xC,IAAI,CAACqiC,WAAT,EAAsB;AACpB/mC,sBAASywB,QAAT,CAAkBs1B,KAAlB,EAAyBrhD,IAAI,CAACqiC,WAA9B;AACD;AACF;;AACD,SAASuf,aAAT,CAAuBP,KAAvB,EAA8BQ,MAA9B,EAAsC;AACpC53C,EAAAA,MAAM,CAACC,IAAP,CAAY23C,MAAZ,EAAoBvgD,OAApB,CAA4B,UAAAwgD,QAAQ,EAAI;AACtC,QAAMC,aAAa,GAAGD,QAAQ,CAACE,KAAT,CAAe,GAAf,CAAtB;AACA,QAAMC,UAAU,GAAGF,aAAa,CAAC54B,GAAd,EAAnB;AACA,QAAM+4B,WAAW,GAAG,CAACb,KAAD,EAAQtjC,MAAR,CAAegkC,aAAf,EAA8BI,IAA9B,CAAmC,GAAnC,CAApB;AACA,QAAMC,KAAK,GAAGP,MAAM,CAACC,QAAD,CAAN,CAAiBE,KAAjB,CAAuB,GAAvB,CAAd;AACA,QAAMK,UAAU,GAAGD,KAAK,CAACj5B,GAAN,EAAnB;AACA,QAAMm5B,WAAW,GAAGF,KAAK,CAACD,IAAN,CAAW,GAAX,CAApB;;AACA7mD,sBAAS+4C,KAAT,CAAe6N,WAAf,EAA4BD,UAA5B,EAAwCK,WAAxC,EAAqDD,UAArD;AACD,GARD;AASD;;AACD,SAASZ,iBAAT,CAA2BF,KAA3B,EAAkC;AAChC,SAAO,QAAQA,KAAR,IAAiB,cAAcA,KAAtC;AACD;;IAEKgB;AACJ,sBAAc;AAAA;;AACZ,SAAK/b,WAAL,GAAmB,IAAI4a,aAAJ,CAAkBxvB,iBAAlB,EAAqC,UAArC,EAAiD,IAAjD,CAAnB;AACA,SAAKzM,QAAL,GAAgB,IAAIi8B,aAAJ,CAAkBvP,OAAlB,EAA2B,UAA3B,CAAhB;AACA,SAAK3zC,OAAL,GAAe,IAAIkjD,aAAJ,CAAkBn3C,MAAlB,EAA0B,SAA1B,CAAf;AACA,SAAKjN,MAAL,GAAc,IAAIokD,aAAJ,CAAkB5J,KAAlB,EAAyB,QAAzB,CAAd;AACA,SAAKgL,gBAAL,GAAwB,CAAC,KAAKhc,WAAN,EAAmB,KAAKxpC,MAAxB,EAAgC,KAAKmoB,QAArC,CAAxB;AACD;;;;WACD,eAAa;AAAA,wCAANjE,IAAM;AAANA,QAAAA,IAAM;AAAA;;AACX,WAAKuhC,KAAL,CAAW,UAAX,EAAuBvhC,IAAvB;AACD;;;WACD,kBAAgB;AAAA,yCAANA,IAAM;AAANA,QAAAA,IAAM;AAAA;;AACd,WAAKuhC,KAAL,CAAW,YAAX,EAAyBvhC,IAAzB;AACD;;;WACD,0BAAwB;AAAA,yCAANA,IAAM;AAANA,QAAAA,IAAM;AAAA;;AACtB,WAAKuhC,KAAL,CAAW,UAAX,EAAuBvhC,IAAvB,EAA6B,KAAKslB,WAAlC;AACD;;;WACD,uBAAqB;AAAA,yCAANtlB,IAAM;AAANA,QAAAA,IAAM;AAAA;;AACnB,WAAKuhC,KAAL,CAAW,UAAX,EAAuBvhC,IAAvB,EAA6B,KAAKiE,QAAlC;AACD;;;WACD,sBAAoB;AAAA,yCAANjE,IAAM;AAANA,QAAAA,IAAM;AAAA;;AAClB,WAAKuhC,KAAL,CAAW,UAAX,EAAuBvhC,IAAvB,EAA6B,KAAKhjB,OAAlC;AACD;;;WACD,qBAAmB;AAAA,yCAANgjB,IAAM;AAANA,QAAAA,IAAM;AAAA;;AACjB,WAAKuhC,KAAL,CAAW,UAAX,EAAuBvhC,IAAvB,EAA6B,KAAKlkB,MAAlC;AACD;;;WACD,uBAAc2d,EAAd,EAAkB;AAChB,aAAO,KAAK+nC,IAAL,CAAU/nC,EAAV,EAAc,KAAK6rB,WAAnB,EAAgC,YAAhC,CAAP;AACD;;;WACD,oBAAW7rB,EAAX,EAAe;AACb,aAAO,KAAK+nC,IAAL,CAAU/nC,EAAV,EAAc,KAAKwK,QAAnB,EAA6B,SAA7B,CAAP;AACD;;;WACD,mBAAUxK,EAAV,EAAc;AACZ,aAAO,KAAK+nC,IAAL,CAAU/nC,EAAV,EAAc,KAAKzc,OAAnB,EAA4B,QAA5B,CAAP;AACD;;;WACD,kBAASyc,EAAT,EAAa;AACX,aAAO,KAAK+nC,IAAL,CAAU/nC,EAAV,EAAc,KAAK3d,MAAnB,EAA2B,OAA3B,CAAP;AACD;;;WACD,6BAA2B;AAAA,yCAANkkB,IAAM;AAANA,QAAAA,IAAM;AAAA;;AACzB,WAAKuhC,KAAL,CAAW,YAAX,EAAyBvhC,IAAzB,EAA+B,KAAKslB,WAApC;AACD;;;WACD,0BAAwB;AAAA,yCAANtlB,IAAM;AAANA,QAAAA,IAAM;AAAA;;AACtB,WAAKuhC,KAAL,CAAW,YAAX,EAAyBvhC,IAAzB,EAA+B,KAAKiE,QAApC;AACD;;;WACD,yBAAuB;AAAA,yCAANjE,IAAM;AAANA,QAAAA,IAAM;AAAA;;AACrB,WAAKuhC,KAAL,CAAW,YAAX,EAAyBvhC,IAAzB,EAA+B,KAAKhjB,OAApC;AACD;;;WACD,wBAAsB;AAAA,0CAANgjB,IAAM;AAANA,QAAAA,IAAM;AAAA;;AACpB,WAAKuhC,KAAL,CAAW,YAAX,EAAyBvhC,IAAzB,EAA+B,KAAKlkB,MAApC;AACD;;;WACD,eAAM2uB,MAAN,EAAczK,IAAd,EAAoByhC,aAApB,EAAmC;AAAA;;AACjC,yBAAIzhC,IAAJ,EAAU5f,OAAV,CAAkB,UAAAshD,GAAG,EAAI;AACvB,YAAMC,GAAG,GAAGF,aAAa,IAAI,OAAI,CAACG,mBAAL,CAAyBF,GAAzB,CAA7B;;AACA,YAAID,aAAa,IAAIE,GAAG,CAACE,SAAJ,CAAcH,GAAd,CAAjB,IAAwCC,GAAG,KAAK,OAAI,CAAC3kD,OAAb,IAAwB0kD,GAAG,CAACjoC,EAAxE,EAA6E;AAC3E,iBAAI,CAACqoC,KAAL,CAAWr3B,MAAX,EAAmBk3B,GAAnB,EAAwBD,GAAxB;AACD,SAFD,MAEO;AACL,iCAAKA,GAAL,EAAU,UAAA5iD,IAAI,EAAI;AAChB,gBAAMijD,OAAO,GAAGN,aAAa,IAAI,OAAI,CAACG,mBAAL,CAAyB9iD,IAAzB,CAAjC;;AACA,mBAAI,CAACgjD,KAAL,CAAWr3B,MAAX,EAAmBs3B,OAAnB,EAA4BjjD,IAA5B;AACD,WAHD;AAID;AACF,OAVD;AAWD;;;WACD,eAAM2rB,MAAN,EAAcu3B,QAAd,EAAwB9mC,SAAxB,EAAmC;AACjC,UAAM+mC,WAAW,GAAG,wBAAYx3B,MAAZ,CAApB;AACA,6BAASvP,SAAS,CAAC,WAAW+mC,WAAZ,CAAlB,EAA4C,EAA5C,EAAgD/mC,SAAhD;AACA8mC,MAAAA,QAAQ,CAACv3B,MAAD,CAAR,CAAiBvP,SAAjB;AACA,6BAASA,SAAS,CAAC,UAAU+mC,WAAX,CAAlB,EAA2C,EAA3C,EAA+C/mC,SAA/C;AACD;;;WACD,6BAAoBhgB,IAApB,EAA0B;AACxB,WAAK,IAAIgB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKolD,gBAAL,CAAsB5lD,MAA1C,EAAkDQ,CAAC,EAAnD,EAAuD;AACrD,YAAMylD,GAAG,GAAG,KAAKL,gBAAL,CAAsBplD,CAAtB,CAAZ;;AACA,YAAIylD,GAAG,CAACE,SAAJ,CAAc3mD,IAAd,CAAJ,EAAyB;AACvB,iBAAOymD,GAAP;AACD;AACF;;AACD,aAAO,KAAK3kD,OAAZ;AACD;;;WACD,cAAKyc,EAAL,EAASgoC,aAAT,EAAwBvmD,IAAxB,EAA8B;AAC5B,UAAM4D,IAAI,GAAG2iD,aAAa,CAACplC,GAAd,CAAkB5C,EAAlB,CAAb;;AACA,UAAI3a,IAAI,KAAKrD,SAAb,EAAwB;AACtB,cAAM,IAAI8f,KAAJ,CAAU,MAAM9B,EAAN,GAAW,wBAAX,GAAsCve,IAAtC,GAA6C,GAAvD,CAAN;AACD;;AACD,aAAO4D,IAAP;AACD;;;;;;AAEH,IAAIkjD,QAAQ,GAAG,IAAIX,QAAJ,EAAf;;;IAEMa;AACJ,2BAAc;AAAA;;AACZ,SAAKC,KAAL,GAAa,EAAb;AACD;;;;WACD,gBAAOtlD,KAAP,EAAculD,IAAd,EAAoBpiC,IAApB,EAA0BrG,MAA1B,EAAkC;AAChC,UAAIyoC,IAAI,KAAK,YAAb,EAA2B;AACzB,aAAKD,KAAL,GAAa,KAAKE,kBAAL,CAAwBxlD,KAAxB,EAA+B,IAA/B,CAAb;;AACA,aAAKqrB,OAAL,CAAa,KAAKi6B,KAAlB,EAAyBtlD,KAAzB,EAAgC,SAAhC;AACD;;AACD,UAAMskC,WAAW,GAAGxnB,MAAM,GAAG,KAAK2oC,YAAL,CAAkBzlD,KAAlB,EAAyB8c,MAAzB,CAAgCA,MAAhC,CAAH,GAA6C,KAAK2oC,YAAL,CAAkBzlD,KAAlB,CAAvE;;AACA,UAAMwoB,MAAM,GAAG,KAAK6C,OAAL,CAAaiZ,WAAb,EAA0BtkC,KAA1B,EAAiCulD,IAAjC,EAAuCpiC,IAAvC,CAAf;;AACA,UAAIoiC,IAAI,KAAK,cAAb,EAA6B;AAC3B,aAAKl6B,OAAL,CAAaiZ,WAAb,EAA0BtkC,KAA1B,EAAiC,MAAjC;;AACA,aAAKqrB,OAAL,CAAa,KAAKi6B,KAAlB,EAAyBtlD,KAAzB,EAAgC,WAAhC;AACD;;AACD,aAAOwoB,MAAP;AACD;;;WACD,iBAAQ8b,WAAR,EAAqBtkC,KAArB,EAA4BulD,IAA5B,EAAkCpiC,IAAlC,EAAwC;AACtCA,MAAAA,IAAI,GAAGA,IAAI,IAAI,EAAf;;AADsC,mDAEbmhB,WAFa;AAAA;;AAAA;AAEtC,kEAAsC;AAAA,cAA3BohB,UAA2B;AACpC,cAAMC,MAAM,GAAGD,UAAU,CAACC,MAA1B;AACA,cAAM/3B,MAAM,GAAG+3B,MAAM,CAACJ,IAAD,CAArB;AACA,cAAMnY,MAAM,GAAG,CAACptC,KAAD,EAAQmjB,IAAR,EAAcuiC,UAAU,CAACxlD,OAAzB,CAAf;;AACA,cAAI,uBAAS0tB,MAAT,EAAiBwf,MAAjB,EAAyBuY,MAAzB,MAAqC,KAArC,IAA8CxiC,IAAI,CAACyiC,UAAvD,EAAmE;AACjE,mBAAO,KAAP;AACD;AACF;AATqC;AAAA;AAAA;AAAA;AAAA;;AAUtC,aAAO,IAAP;AACD;;;WACD,sBAAa;AACX,UAAI,CAAC,uBAAc,KAAKnrB,MAAnB,CAAL,EAAiC;AAC/B,aAAKorB,SAAL,GAAiB,KAAKprB,MAAtB;AACA,aAAKA,MAAL,GAAc77B,SAAd;AACD;AACF;;;WACD,sBAAaoB,KAAb,EAAoB;AAClB,UAAI,KAAKy6B,MAAT,EAAiB;AACf,eAAO,KAAKA,MAAZ;AACD;;AACD,UAAM6J,WAAW,GAAG,KAAK7J,MAAL,GAAc,KAAK+qB,kBAAL,CAAwBxlD,KAAxB,CAAlC;;AACA,WAAK8lD,mBAAL,CAAyB9lD,KAAzB;;AACA,aAAOskC,WAAP;AACD;;;WACD,4BAAmBtkC,KAAnB,EAA0B8L,GAA1B,EAA+B;AAC7B,UAAM0iB,MAAM,GAAGxuB,KAAK,IAAIA,KAAK,CAACwuB,MAA9B;AACA,UAAMtuB,OAAO,GAAG,uBAAesuB,MAAM,CAACtuB,OAAP,IAAkBsuB,MAAM,CAACtuB,OAAP,CAAeC,OAAhD,EAAyD,EAAzD,CAAhB;AACA,UAAMA,OAAO,GAAG4lD,UAAU,CAACv3B,MAAD,CAA1B;AACA,aAAOtuB,OAAO,KAAK,KAAZ,IAAqB,CAAC4L,GAAtB,GAA4B,EAA5B,GAAiCk6C,iBAAiB,CAAChmD,KAAD,EAAQG,OAAR,EAAiBD,OAAjB,EAA0B4L,GAA1B,CAAzD;AACD;;;WACD,6BAAoB9L,KAApB,EAA2B;AACzB,UAAMimD,mBAAmB,GAAG,KAAKJ,SAAL,IAAkB,EAA9C;AACA,UAAMvhB,WAAW,GAAG,KAAK7J,MAAzB;;AACA,UAAMqd,IAAI,GAAG,SAAPA,IAAO,CAAC91B,CAAD,EAAI7gB,CAAJ;AAAA,eAAU6gB,CAAC,CAAClF,MAAF,CAAS,UAAAlQ,CAAC;AAAA,iBAAI,CAACzL,CAAC,CAAC8gB,IAAF,CAAO,UAAApV,CAAC;AAAA,mBAAID,CAAC,CAAC+4C,MAAF,CAAS/oC,EAAT,KAAgB/P,CAAC,CAAC84C,MAAF,CAAS/oC,EAA7B;AAAA,WAAR,CAAL;AAAA,SAAV,CAAV;AAAA,OAAb;;AACA,WAAKyO,OAAL,CAAaysB,IAAI,CAACmO,mBAAD,EAAsB3hB,WAAtB,CAAjB,EAAqDtkC,KAArD,EAA4D,MAA5D;;AACA,WAAKqrB,OAAL,CAAaysB,IAAI,CAACxT,WAAD,EAAc2hB,mBAAd,CAAjB,EAAqDjmD,KAArD,EAA4D,OAA5D;AACD;;;;;;AAEH,SAAS+lD,UAAT,CAAoBv3B,MAApB,EAA4B;AAC1B,MAAMruB,OAAO,GAAG,EAAhB;AACA,MAAMgM,IAAI,GAAGD,MAAM,CAACC,IAAP,CAAYg5C,QAAQ,CAAChlD,OAAT,CAAiBsQ,KAA7B,CAAb;;AACA,OAAK,IAAIpR,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8M,IAAI,CAACtN,MAAzB,EAAiCQ,CAAC,EAAlC,EAAsC;AACpCc,IAAAA,OAAO,CAACiB,IAAR,CAAa+jD,QAAQ,CAACe,SAAT,CAAmB/5C,IAAI,CAAC9M,CAAD,CAAvB,CAAb;AACD;;AACD,MAAM8mD,KAAK,GAAG33B,MAAM,CAACruB,OAAP,IAAkB,EAAhC;;AACA,OAAK,IAAId,GAAC,GAAG,CAAb,EAAgBA,GAAC,GAAG8mD,KAAK,CAACtnD,MAA1B,EAAkCQ,GAAC,EAAnC,EAAuC;AACrC,QAAMsmD,MAAM,GAAGQ,KAAK,CAAC9mD,GAAD,CAApB;;AACA,QAAIc,OAAO,CAAC+F,OAAR,CAAgBy/C,MAAhB,MAA4B,CAAC,CAAjC,EAAoC;AAClCxlD,MAAAA,OAAO,CAACiB,IAAR,CAAaukD,MAAb;AACD;AACF;;AACD,SAAOxlD,OAAP;AACD;;AACD,SAASimD,OAAT,CAAiBlmD,OAAjB,EAA0B4L,GAA1B,EAA+B;AAC7B,MAAI,CAACA,GAAD,IAAQ5L,OAAO,KAAK,KAAxB,EAA+B;AAC7B,WAAO,IAAP;AACD;;AACD,MAAIA,OAAO,KAAK,IAAhB,EAAsB;AACpB,WAAO,EAAP;AACD;;AACD,SAAOA,OAAP;AACD;;AACD,SAAS8lD,iBAAT,CAA2BhmD,KAA3B,EAAkCG,OAAlC,EAA2CD,OAA3C,EAAoD4L,GAApD,EAAyD;AACvD,MAAM0c,MAAM,GAAG,EAAf;AACA,MAAME,OAAO,GAAG1oB,KAAK,CAAC02B,UAAN,EAAhB;;AACA,OAAK,IAAIr3B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGc,OAAO,CAACtB,MAA5B,EAAoCQ,CAAC,EAArC,EAAyC;AACvC,QAAMsmD,MAAM,GAAGxlD,OAAO,CAACd,CAAD,CAAtB;AACA,QAAMud,EAAE,GAAG+oC,MAAM,CAAC/oC,EAAlB;AACA,QAAMjT,IAAI,GAAGy8C,OAAO,CAAClmD,OAAO,CAAC0c,EAAD,CAAR,EAAc9Q,GAAd,CAApB;;AACA,QAAInC,IAAI,KAAK,IAAb,EAAmB;AACjB;AACD;;AACD6e,IAAAA,MAAM,CAACpnB,IAAP,CAAY;AACVukD,MAAAA,MAAM,EAANA,MADU;AAEVzlD,MAAAA,OAAO,EAAEmmD,UAAU,CAACrmD,KAAK,CAACwuB,MAAP,EAAem3B,MAAf,EAAuBh8C,IAAvB,EAA6B+e,OAA7B;AAFT,KAAZ;AAID;;AACD,SAAOF,MAAP;AACD;;AACD,SAAS69B,UAAT,CAAoB73B,MAApB,EAA4Bm3B,MAA5B,EAAoCh8C,IAApC,EAA0C+e,OAA1C,EAAmD;AACjD,MAAMvc,IAAI,GAAGqiB,MAAM,CAAC83B,eAAP,CAAuBX,MAAvB,CAAb;AACA,MAAMpvB,MAAM,GAAG/H,MAAM,CAACgI,eAAP,CAAuB7sB,IAAvB,EAA6BwC,IAA7B,CAAf;AACA,SAAOqiB,MAAM,CAACiI,cAAP,CAAsBF,MAAtB,EAA8B7N,OAA9B,EAAuC,CAAC,EAAD,CAAvC,EAA6C;AAAC69B,IAAAA,UAAU,EAAE,KAAb;AAAoBC,IAAAA,SAAS,EAAE,KAA/B;AAAsCC,IAAAA,OAAO,EAAE;AAA/C,GAA7C,CAAP;AACD;;AAED,SAASC,YAAT,CAAsBroD,IAAtB,EAA4B6B,OAA5B,EAAqC;AACnC,MAAMymD,eAAe,GAAGppD,kBAASmB,QAAT,CAAkBL,IAAlB,KAA2B,EAAnD;AACA,MAAMuoD,cAAc,GAAG,CAAC1mD,OAAO,CAACxB,QAAR,IAAoB,EAArB,EAAyBL,IAAzB,KAAkC,EAAzD;AACA,SAAOuoD,cAAc,CAACvxB,SAAf,IAA4Bn1B,OAAO,CAACm1B,SAApC,IAAiDsxB,eAAe,CAACtxB,SAAjE,IAA8E,GAArF;AACD;;AACD,SAASwxB,yBAAT,CAAmCjqC,EAAnC,EAAuCyY,SAAvC,EAAkD;AAChD,MAAI7C,IAAI,GAAG5V,EAAX;;AACA,MAAIA,EAAE,KAAK,SAAX,EAAsB;AACpB4V,IAAAA,IAAI,GAAG6C,SAAP;AACD,GAFD,MAEO,IAAIzY,EAAE,KAAK,SAAX,EAAsB;AAC3B4V,IAAAA,IAAI,GAAG6C,SAAS,KAAK,GAAd,GAAoB,GAApB,GAA0B,GAAjC;AACD;;AACD,SAAO7C,IAAP;AACD;;AACD,SAASs0B,yBAAT,CAAmCt0B,IAAnC,EAAyC6C,SAAzC,EAAoD;AAClD,SAAO7C,IAAI,KAAK6C,SAAT,GAAqB,SAArB,GAAiC,SAAxC;AACD;;AACD,SAAS0xB,gBAAT,CAA0BvnD,QAA1B,EAAoC;AAClC,MAAIA,QAAQ,KAAK,KAAb,IAAsBA,QAAQ,KAAK,QAAvC,EAAiD;AAC/C,WAAO,GAAP;AACD;;AACD,MAAIA,QAAQ,KAAK,MAAb,IAAuBA,QAAQ,KAAK,OAAxC,EAAiD;AAC/C,WAAO,GAAP;AACD;AACF;;AACD,SAASwnD,aAAT,CAAuBpqC,EAAvB,EAA2BqqC,YAA3B,EAAyC;AACvC,MAAIrqC,EAAE,KAAK,GAAP,IAAcA,EAAE,KAAK,GAAzB,EAA8B;AAC5B,WAAOA,EAAP;AACD;;AACD,SAAOqqC,YAAY,CAACz0B,IAAb,IAAqBu0B,gBAAgB,CAACE,YAAY,CAACznD,QAAd,CAArC,IAAgEod,EAAE,CAACyS,MAAH,CAAU,CAAV,EAAa9mB,WAAb,EAAvE;AACD;;AACD,SAAS2+C,gBAAT,CAA0B14B,MAA1B,EAAkCtuB,OAAlC,EAA2C;AACzC,MAAMinD,aAAa,GAAGtnB,mBAAUrR,MAAM,CAACnwB,IAAjB,KAA0B;AAACY,IAAAA,MAAM,EAAE;AAAT,GAAhD;AACA,MAAMmoD,YAAY,GAAGlnD,OAAO,CAACjB,MAAR,IAAkB,EAAvC;AACA,MAAMooD,cAAc,GAAGX,YAAY,CAACl4B,MAAM,CAACnwB,IAAR,EAAc6B,OAAd,CAAnC;AACA,MAAMonD,QAAQ,GAAGp7C,MAAM,CAACqR,MAAP,CAAc,IAAd,CAAjB;AACA,MAAMte,MAAM,GAAGiN,MAAM,CAACqR,MAAP,CAAc,IAAd,CAAf;AACArR,EAAAA,MAAM,CAACC,IAAP,CAAYi7C,YAAZ,EAA0B7jD,OAA1B,CAAkC,UAAAqZ,EAAE,EAAI;AACtC,QAAM2qC,SAAS,GAAGH,YAAY,CAACxqC,EAAD,CAA9B;;AACA,QAAI,CAAC,uBAAS2qC,SAAT,CAAL,EAA0B;AACxB,aAAO/pC,OAAO,CAAClM,KAAR,kDAAwDsL,EAAxD,EAAP;AACD;;AACD,QAAI2qC,SAAS,CAACC,MAAd,EAAsB;AACpB,aAAOhqC,OAAO,CAACiqC,IAAR,0DAA+D7qC,EAA/D,EAAP;AACD;;AACD,QAAM4V,IAAI,GAAGw0B,aAAa,CAACpqC,EAAD,EAAK2qC,SAAL,CAA1B;AACA,QAAMG,SAAS,GAAGZ,yBAAyB,CAACt0B,IAAD,EAAO60B,cAAP,CAA3C;AACA,QAAMM,mBAAmB,GAAGR,aAAa,CAACloD,MAAd,IAAwB,EAApD;AACAqoD,IAAAA,QAAQ,CAAC90B,IAAD,CAAR,GAAiB80B,QAAQ,CAAC90B,IAAD,CAAR,IAAkB5V,EAAnC;AACA3d,IAAAA,MAAM,CAAC2d,EAAD,CAAN,GAAa,wBAAQ1Q,MAAM,CAACqR,MAAP,CAAc,IAAd,CAAR,EAA6B,CAAC;AAACiV,MAAAA,IAAI,EAAJA;AAAD,KAAD,EAAS+0B,SAAT,EAAoBI,mBAAmB,CAACn1B,IAAD,CAAvC,EAA+Cm1B,mBAAmB,CAACD,SAAD,CAAlE,CAA7B,CAAb;AACD,GAbD;AAcAl5B,EAAAA,MAAM,CAACvuB,IAAP,CAAYvB,QAAZ,CAAqB6E,OAArB,CAA6B,UAAAnE,OAAO,EAAI;AACtC,QAAMf,IAAI,GAAGe,OAAO,CAACf,IAAR,IAAgBmwB,MAAM,CAACnwB,IAApC;AACA,QAAMg3B,SAAS,GAAGj2B,OAAO,CAACi2B,SAAR,IAAqBqxB,YAAY,CAACroD,IAAD,EAAO6B,OAAP,CAAnD;AACA,QAAMymD,eAAe,GAAG9mB,mBAAUxhC,IAAV,KAAmB,EAA3C;AACA,QAAMspD,mBAAmB,GAAGhB,eAAe,CAAC1nD,MAAhB,IAA0B,EAAtD;AACAiN,IAAAA,MAAM,CAACC,IAAP,CAAYw7C,mBAAZ,EAAiCpkD,OAAjC,CAAyC,UAAAqkD,SAAS,EAAI;AACpD,UAAMp1B,IAAI,GAAGq0B,yBAAyB,CAACe,SAAD,EAAYvyB,SAAZ,CAAtC;AACA,UAAMzY,EAAE,GAAGxd,OAAO,CAACozB,IAAI,GAAG,QAAR,CAAP,IAA4B80B,QAAQ,CAAC90B,IAAD,CAApC,IAA8CA,IAAzD;AACAvzB,MAAAA,MAAM,CAAC2d,EAAD,CAAN,GAAa3d,MAAM,CAAC2d,EAAD,CAAN,IAAc1Q,MAAM,CAACqR,MAAP,CAAc,IAAd,CAA3B;AACA,8BAAQte,MAAM,CAAC2d,EAAD,CAAd,EAAoB,CAAC;AAAC4V,QAAAA,IAAI,EAAJA;AAAD,OAAD,EAAS40B,YAAY,CAACxqC,EAAD,CAArB,EAA2B+qC,mBAAmB,CAACC,SAAD,CAA9C,CAApB;AACD,KALD;AAMD,GAXD;AAYA17C,EAAAA,MAAM,CAACC,IAAP,CAAYlN,MAAZ,EAAoBsE,OAApB,CAA4B,UAAAwM,GAAG,EAAI;AACjC,QAAM1C,KAAK,GAAGpO,MAAM,CAAC8Q,GAAD,CAApB;AACA,4BAAQ1C,KAAR,EAAe,CAAC9P,kBAAS0B,MAAT,CAAgBoO,KAAK,CAAChP,IAAtB,CAAD,EAA8Bd,kBAAS8P,KAAvC,CAAf;AACD,GAHD;AAIA,SAAOpO,MAAP;AACD;;AACD,SAAS4oD,WAAT,CAAqBr5B,MAArB,EAA6B;AAC3B,MAAMtuB,OAAO,GAAGsuB,MAAM,CAACtuB,OAAP,KAAmBsuB,MAAM,CAACtuB,OAAP,GAAiB,EAApC,CAAhB;AACAA,EAAAA,OAAO,CAACC,OAAR,GAAkB,uBAAeD,OAAO,CAACC,OAAvB,EAAgC,EAAhC,CAAlB;AACAD,EAAAA,OAAO,CAACjB,MAAR,GAAiBioD,gBAAgB,CAAC14B,MAAD,EAAStuB,OAAT,CAAjC;AACD;;AACD,SAAS4nD,QAAT,CAAkB7nD,IAAlB,EAAwB;AACtBA,EAAAA,IAAI,GAAGA,IAAI,IAAI,EAAf;AACAA,EAAAA,IAAI,CAACvB,QAAL,GAAgBuB,IAAI,CAACvB,QAAL,IAAiB,EAAjC;AACAuB,EAAAA,IAAI,CAAC1B,MAAL,GAAc0B,IAAI,CAAC1B,MAAL,IAAe,EAA7B;AACA,SAAO0B,IAAP;AACD;;AACD,SAAS8nD,UAAT,CAAoBv5B,MAApB,EAA4B;AAC1BA,EAAAA,MAAM,GAAGA,MAAM,IAAI,EAAnB;AACAA,EAAAA,MAAM,CAACvuB,IAAP,GAAc6nD,QAAQ,CAACt5B,MAAM,CAACvuB,IAAR,CAAtB;AACA4nD,EAAAA,WAAW,CAACr5B,MAAD,CAAX;AACA,SAAOA,MAAP;AACD;;AACD,IAAMw5B,QAAQ,GAAG,IAAI7pC,GAAJ,EAAjB;AACA,IAAM8pC,UAAU,GAAG,IAAIC,GAAJ,EAAnB;;AACA,SAASC,UAAT,CAAoBtvB,QAApB,EAA8BuvB,QAA9B,EAAwC;AACtC,MAAIj8C,IAAI,GAAG67C,QAAQ,CAACxoC,GAAT,CAAaqZ,QAAb,CAAX;;AACA,MAAI,CAAC1sB,IAAL,EAAW;AACTA,IAAAA,IAAI,GAAGi8C,QAAQ,EAAf;AACAJ,IAAAA,QAAQ,CAACp9C,GAAT,CAAaiuB,QAAb,EAAuB1sB,IAAvB;AACA87C,IAAAA,UAAU,CAAC3hD,GAAX,CAAe6F,IAAf;AACD;;AACD,SAAOA,IAAP;AACD;;AACD,IAAMk8C,UAAU,GAAG,SAAbA,UAAa,CAACz9C,GAAD,EAAMwZ,GAAN,EAAWrU,GAAX,EAAmB;AACpC,MAAMpG,IAAI,GAAG,uBAAiBya,GAAjB,EAAsBrU,GAAtB,CAAb;;AACA,MAAIpG,IAAI,KAAK/K,SAAb,EAAwB;AACtBgM,IAAAA,GAAG,CAACtE,GAAJ,CAAQqD,IAAR;AACD;AACF,CALD;;IAMM2+C;AACJ,kBAAY95B,MAAZ,EAAoB;AAAA;;AAClB,SAAK+5B,OAAL,GAAeR,UAAU,CAACv5B,MAAD,CAAzB;AACA,SAAKg6B,WAAL,GAAmB,IAAIrqC,GAAJ,EAAnB;AACA,SAAKsqC,cAAL,GAAsB,IAAItqC,GAAJ,EAAtB;AACD;;;;SACD,eAAe;AACb,aAAO,KAAKoqC,OAAL,CAAaG,QAApB;AACD;;;SACD,eAAW;AACT,aAAO,KAAKH,OAAL,CAAalqD,IAApB;AACD;SACD,aAASA,IAAT,EAAe;AACb,WAAKkqD,OAAL,CAAalqD,IAAb,GAAoBA,IAApB;AACD;;;SACD,eAAW;AACT,aAAO,KAAKkqD,OAAL,CAAatoD,IAApB;AACD;SACD,aAASA,IAAT,EAAe;AACb,WAAKsoD,OAAL,CAAatoD,IAAb,GAAoB6nD,QAAQ,CAAC7nD,IAAD,CAA5B;AACD;;;SACD,eAAc;AACZ,aAAO,KAAKsoD,OAAL,CAAaroD,OAApB;AACD;SACD,aAAYA,OAAZ,EAAqB;AACnB,WAAKqoD,OAAL,CAAaroD,OAAb,GAAuBA,OAAvB;AACD;;;SACD,eAAc;AACZ,aAAO,KAAKqoD,OAAL,CAAapoD,OAApB;AACD;;;WACD,kBAAS;AACP,UAAMquB,MAAM,GAAG,KAAK+5B,OAApB;AACA,WAAKI,UAAL;AACAd,MAAAA,WAAW,CAACr5B,MAAD,CAAX;AACD;;;WACD,sBAAa;AACX,WAAKg6B,WAAL,CAAiB1vC,KAAjB;;AACA,WAAK2vC,cAAL,CAAoB3vC,KAApB;AACD;;;WACD,0BAAiB8vC,WAAjB,EAA8B;AAC5B,aAAOT,UAAU,CAACS,WAAD,EACf;AAAA,eAAM,CAAC,oBACOA,WADP,GAEL,EAFK,CAAD,CAAN;AAAA,OADe,CAAjB;AAKD;;;WACD,mCAA0BA,WAA1B,EAAuC76C,UAAvC,EAAmD;AACjD,aAAOo6C,UAAU,WAAIS,WAAJ,yBAA8B76C,UAA9B,GACf;AAAA,eAAM,CACJ,oBACc66C,WADd,0BACyC76C,UADzC,yBAEiBA,UAFjB,EADI,EAKJ,oBACc66C,WADd,GAEE,EAFF,CALI,CAAN;AAAA,OADe,CAAjB;AAWD;;;WACD,iCAAwBA,WAAxB,EAAqChwB,WAArC,EAAkD;AAChD,aAAOuvB,UAAU,WAAIS,WAAJ,cAAmBhwB,WAAnB,GACf;AAAA,eAAM,CAAC,oBACOgwB,WADP,uBAC+BhwB,WAD/B,sBAEOgwB,WAFP,sBAGOhwB,WAHP,GAIL,EAJK,CAAD,CAAN;AAAA,OADe,CAAjB;AAOD;;;WACD,yBAAgB+sB,MAAhB,EAAwB;AACtB,UAAM/oC,EAAE,GAAG+oC,MAAM,CAAC/oC,EAAlB;AACA,UAAMve,IAAI,GAAG,KAAKA,IAAlB;AACA,aAAO8pD,UAAU,WAAI9pD,IAAJ,qBAAmBue,EAAnB,GACf;AAAA,eAAM,oBACOA,EADP,6BAED+oC,MAAM,CAACkD,sBAAP,IAAiC,EAFhC,GAAN;AAAA,OADe,CAAjB;AAKD;;;WACD,uBAAcC,SAAd,EAAyBC,UAAzB,EAAqC;AACnC,UAAMP,WAAW,GAAG,KAAKA,WAAzB;;AACA,UAAIzoC,KAAK,GAAGyoC,WAAW,CAAChpC,GAAZ,CAAgBspC,SAAhB,CAAZ;;AACA,UAAI,CAAC/oC,KAAD,IAAUgpC,UAAd,EAA0B;AACxBhpC,QAAAA,KAAK,GAAG,IAAI5B,GAAJ,EAAR;;AACAqqC,QAAAA,WAAW,CAAC59C,GAAZ,CAAgBk+C,SAAhB,EAA2B/oC,KAA3B;AACD;;AACD,aAAOA,KAAP;AACD;;;WACD,yBAAgB+oC,SAAhB,EAA2BE,QAA3B,EAAqCD,UAArC,EAAiD;AAC/C,UAAO7oD,OAAP,GAAwB,IAAxB,CAAOA,OAAP;AAAA,UAAgB7B,IAAhB,GAAwB,IAAxB,CAAgBA,IAAhB;;AACA,UAAM0hB,KAAK,GAAG,KAAKkpC,aAAL,CAAmBH,SAAnB,EAA8BC,UAA9B,CAAd;;AACA,UAAMx1B,MAAM,GAAGxT,KAAK,CAACP,GAAN,CAAUwpC,QAAV,CAAf;;AACA,UAAIz1B,MAAJ,EAAY;AACV,eAAOA,MAAP;AACD;;AACD,UAAMgD,MAAM,GAAG,IAAI2xB,GAAJ,EAAf;AACAc,MAAAA,QAAQ,CAACzlD,OAAT,CAAiB,UAAA4I,IAAI,EAAI;AACvB,YAAI28C,SAAJ,EAAe;AACbvyB,UAAAA,MAAM,CAACjwB,GAAP,CAAWwiD,SAAX;AACA38C,UAAAA,IAAI,CAAC5I,OAAL,CAAa,UAAAwM,GAAG;AAAA,mBAAIs4C,UAAU,CAAC9xB,MAAD,EAASuyB,SAAT,EAAoB/4C,GAApB,CAAd;AAAA,WAAhB;AACD;;AACD5D,QAAAA,IAAI,CAAC5I,OAAL,CAAa,UAAAwM,GAAG;AAAA,iBAAIs4C,UAAU,CAAC9xB,MAAD,EAASr2B,OAAT,EAAkB6P,GAAlB,CAAd;AAAA,SAAhB;AACA5D,QAAAA,IAAI,CAAC5I,OAAL,CAAa,UAAAwM,GAAG;AAAA,iBAAIs4C,UAAU,CAAC9xB,MAAD,EAASsJ,mBAAUxhC,IAAV,KAAmB,EAA5B,EAAgC0R,GAAhC,CAAd;AAAA,SAAhB;AACA5D,QAAAA,IAAI,CAAC5I,OAAL,CAAa,UAAAwM,GAAG;AAAA,iBAAIs4C,UAAU,CAAC9xB,MAAD,EAASh5B,iBAAT,EAAmBwS,GAAnB,CAAd;AAAA,SAAhB;AACA5D,QAAAA,IAAI,CAAC5I,OAAL,CAAa,UAAAwM,GAAG;AAAA,iBAAIs4C,UAAU,CAAC9xB,MAAD,EAAS+N,kBAAT,EAAsBv0B,GAAtB,CAAd;AAAA,SAAhB;AACD,OATD;AAUA,UAAMo8B,KAAK,GAAG/oC,KAAK,CAACC,IAAN,CAAWkzB,MAAX,CAAd;;AACA,UAAI4V,KAAK,CAACttC,MAAN,KAAiB,CAArB,EAAwB;AACtBstC,QAAAA,KAAK,CAAC/qC,IAAN,CAAW8K,MAAM,CAACqR,MAAP,CAAc,IAAd,CAAX;AACD;;AACD,UAAI0qC,UAAU,CAAC1oC,GAAX,CAAeypC,QAAf,CAAJ,EAA8B;AAC5BjpC,QAAAA,KAAK,CAACnV,GAAN,CAAUo+C,QAAV,EAAoB7c,KAApB;AACD;;AACD,aAAOA,KAAP;AACD;;;WACD,6BAAoB;AAClB,UAAOjsC,OAAP,GAAwB,IAAxB,CAAOA,OAAP;AAAA,UAAgB7B,IAAhB,GAAwB,IAAxB,CAAgBA,IAAhB;AACA,aAAO,CACL6B,OADK,EAEL2/B,mBAAUxhC,IAAV,KAAmB,EAFd,EAGLd,kBAASmB,QAAT,CAAkBL,IAAlB,KAA2B,EAHtB,EAIL;AAACA,QAAAA,IAAI,EAAJA;AAAD,OAJK,EAKLd,iBALK,EAML+mC,kBANK,CAAP;AAQD;;;WACD,6BAAoB/N,MAApB,EAA4B0C,KAA5B,EAAmCvQ,OAAnC,EAA6D;AAAA,UAAjBsQ,QAAiB,uEAAN,CAAC,EAAD,CAAM;AAC3D,UAAMxQ,MAAM,GAAG;AAAC0G,QAAAA,OAAO,EAAE;AAAV,OAAf;;AACA,yBAAgCg6B,WAAW,CAAC,KAAKT,cAAN,EAAsBlyB,MAAtB,EAA8ByC,QAA9B,CAA3C;AAAA,UAAOrb,QAAP,gBAAOA,QAAP;AAAA,UAAiBwrC,WAAjB,gBAAiBA,WAAjB;;AACA,UAAIjpD,OAAO,GAAGyd,QAAd;;AACA,UAAIyrC,WAAW,CAACzrC,QAAD,EAAWsb,KAAX,CAAf,EAAkC;AAChCzQ,QAAAA,MAAM,CAAC0G,OAAP,GAAiB,KAAjB;AACAxG,QAAAA,OAAO,GAAG,wBAAWA,OAAX,IAAsBA,OAAO,EAA7B,GAAkCA,OAA5C;AACA,YAAM2gC,WAAW,GAAG,KAAK5yB,cAAL,CAAoBF,MAApB,EAA4B7N,OAA5B,EAAqCygC,WAArC,CAApB;AACAjpD,QAAAA,OAAO,GAAG,wBAAeyd,QAAf,EAAyB+K,OAAzB,EAAkC2gC,WAAlC,CAAV;AACD;;AAT0D,mDAUxCpwB,KAVwC;AAAA;;AAAA;AAU3D,kEAA0B;AAAA,cAAftM,IAAe;AACxBnE,UAAAA,MAAM,CAACmE,IAAD,CAAN,GAAezsB,OAAO,CAACysB,IAAD,CAAtB;AACD;AAZ0D;AAAA;AAAA;AAAA;AAAA;;AAa3D,aAAOnE,MAAP;AACD;;;WACD,wBAAe+N,MAAf,EAAuB7N,OAAvB,EAAqE;AAAA,UAArCsQ,QAAqC,uEAA1B,CAAC,EAAD,CAA0B;AAAA,UAApBswB,kBAAoB;;AACnE,0BAAmBJ,WAAW,CAAC,KAAKT,cAAN,EAAsBlyB,MAAtB,EAA8ByC,QAA9B,CAA9B;AAAA,UAAOrb,QAAP,iBAAOA,QAAP;;AACA,aAAO,uBAAS+K,OAAT,IACH,wBAAe/K,QAAf,EAAyB+K,OAAzB,EAAkC9pB,SAAlC,EAA6C0qD,kBAA7C,CADG,GAEH3rC,QAFJ;AAGD;;;;;;AAEH,SAASurC,WAAT,CAAqBK,aAArB,EAAoChzB,MAApC,EAA4CyC,QAA5C,EAAsD;AACpD,MAAIjZ,KAAK,GAAGwpC,aAAa,CAAC/pC,GAAd,CAAkB+W,MAAlB,CAAZ;;AACA,MAAI,CAACxW,KAAL,EAAY;AACVA,IAAAA,KAAK,GAAG,IAAI5B,GAAJ,EAAR;AACAorC,IAAAA,aAAa,CAAC3+C,GAAd,CAAkB2rB,MAAlB,EAA0BxW,KAA1B;AACD;;AACD,MAAM8Y,QAAQ,GAAGG,QAAQ,CAACorB,IAAT,EAAjB;AACA,MAAI7wB,MAAM,GAAGxT,KAAK,CAACP,GAAN,CAAUqZ,QAAV,CAAb;;AACA,MAAI,CAACtF,MAAL,EAAa;AACX,QAAM5V,QAAQ,GAAG,wBAAgB4Y,MAAhB,EAAwByC,QAAxB,CAAjB;AACAzF,IAAAA,MAAM,GAAG;AACP5V,MAAAA,QAAQ,EAARA,QADO;AAEPwrC,MAAAA,WAAW,EAAEnwB,QAAQ,CAAClc,MAAT,CAAgB,UAAA0sC,CAAC;AAAA,eAAI,CAACA,CAAC,CAACjhD,WAAF,GAAgBykC,QAAhB,CAAyB,OAAzB,CAAL;AAAA,OAAjB;AAFN,KAAT;AAIAjtB,IAAAA,KAAK,CAACnV,GAAN,CAAUiuB,QAAV,EAAoBtF,MAApB;AACD;;AACD,SAAOA,MAAP;AACD;;AACD,IAAMk2B,WAAW,GAAG,SAAdA,WAAc,CAAArgD,KAAK;AAAA,SAAI,uBAASA,KAAT,KACxB8C,MAAM,CAAC2iB,mBAAP,CAA2BzlB,KAA3B,EAAkClK,MAAlC,CAAyC,UAAC4Q,GAAD,EAAMC,GAAN;AAAA,WAAcD,GAAG,IAAI,wBAAW1G,KAAK,CAAC2G,GAAD,CAAhB,CAArB;AAAA,GAAzC,EAAsF,KAAtF,CADoB;AAAA,CAAzB;;AAEA,SAASq5C,WAAT,CAAqB/V,KAArB,EAA4Bpa,KAA5B,EAAmC;AACjC,sBAAoC,wBAAaoa,KAAb,CAApC;AAAA,MAAOqW,YAAP,iBAAOA,YAAP;AAAA,MAAqBC,WAArB,iBAAqBA,WAArB;;AADiC,+CAEd1wB,KAFc;AAAA;;AAAA;AAEjC,8DAA0B;AAAA,UAAftM,IAAe;AACxB,UAAM45B,UAAU,GAAGmD,YAAY,CAAC/8B,IAAD,CAA/B;AACA,UAAM65B,SAAS,GAAGmD,WAAW,CAACh9B,IAAD,CAA7B;AACA,UAAMvjB,KAAK,GAAG,CAACo9C,SAAS,IAAID,UAAd,KAA6BlT,KAAK,CAAC1mB,IAAD,CAAhD;;AACA,UAAK45B,UAAU,KAAK,wBAAWn9C,KAAX,KAAqBqgD,WAAW,CAACrgD,KAAD,CAArC,CAAX,IACEo9C,SAAS,IAAI,uBAAQp9C,KAAR,CADnB,EACoC;AAClC,eAAO,IAAP;AACD;AACF;AAVgC;AAAA;AAAA;AAAA;AAAA;;AAWjC,SAAO,KAAP;AACD;;AAED,IAAIwgD,OAAO,GAAG,OAAd;AAEA,IAAMC,eAAe,GAAG,CAAC,KAAD,EAAQ,QAAR,EAAkB,MAAlB,EAA0B,OAA1B,EAAmC,WAAnC,CAAxB;;AACA,SAASC,oBAAT,CAA8BtqD,QAA9B,EAAwCgzB,IAAxC,EAA8C;AAC5C,SAAOhzB,QAAQ,KAAK,KAAb,IAAsBA,QAAQ,KAAK,QAAnC,IAAgDqqD,eAAe,CAAC3jD,OAAhB,CAAwB1G,QAAxB,MAAsC,CAAC,CAAvC,IAA4CgzB,IAAI,KAAK,GAA5G;AACD;;AACD,SAASu3B,aAAT,CAAuBC,EAAvB,EAA2BC,EAA3B,EAA+B;AAC7B,SAAO,UAASjoC,CAAT,EAAY7gB,CAAZ,EAAe;AACpB,WAAO6gB,CAAC,CAACgoC,EAAD,CAAD,KAAU7oD,CAAC,CAAC6oD,EAAD,CAAX,GACHhoC,CAAC,CAACioC,EAAD,CAAD,GAAQ9oD,CAAC,CAAC8oD,EAAD,CADN,GAEHjoC,CAAC,CAACgoC,EAAD,CAAD,GAAQ7oD,CAAC,CAAC6oD,EAAD,CAFb;AAGD,GAJD;AAKD;;AACD,SAASE,oBAAT,CAA8BxhC,OAA9B,EAAuC;AACrC,MAAM1oB,KAAK,GAAG0oB,OAAO,CAAC1oB,KAAtB;AACA,MAAM8tB,gBAAgB,GAAG9tB,KAAK,CAACE,OAAN,CAAc6tB,SAAvC;AACA/tB,EAAAA,KAAK,CAAC88C,aAAN,CAAoB,aAApB;AACA,yBAAShvB,gBAAgB,IAAIA,gBAAgB,CAACre,UAA9C,EAA0D,CAACiZ,OAAD,CAA1D,EAAqE1oB,KAArE;AACD;;AACD,SAASmqD,mBAAT,CAA6BzhC,OAA7B,EAAsC;AACpC,MAAM1oB,KAAK,GAAG0oB,OAAO,CAAC1oB,KAAtB;AACA,MAAM8tB,gBAAgB,GAAG9tB,KAAK,CAACE,OAAN,CAAc6tB,SAAvC;AACA,yBAASD,gBAAgB,IAAIA,gBAAgB,CAACs8B,UAA9C,EAA0D,CAAC1hC,OAAD,CAA1D,EAAqE1oB,KAArE;AACD;;AACD,SAASqqD,SAAT,CAAmBpoD,IAAnB,EAAyB;AACvB,MAAI,4BAAqB,OAAOA,IAAP,KAAgB,QAAzC,EAAmD;AACjDA,IAAAA,IAAI,GAAG5E,QAAQ,CAACmd,cAAT,CAAwBvY,IAAxB,CAAP;AACD,GAFD,MAEO,IAAIA,IAAI,IAAIA,IAAI,CAACpD,MAAjB,EAAyB;AAC9BoD,IAAAA,IAAI,GAAGA,IAAI,CAAC,CAAD,CAAX;AACD;;AACD,MAAIA,IAAI,IAAIA,IAAI,CAACuuC,MAAjB,EAAyB;AACvBvuC,IAAAA,IAAI,GAAGA,IAAI,CAACuuC,MAAZ;AACD;;AACD,SAAOvuC,IAAP;AACD;;AACD,IAAMqoD,SAAS,GAAG,EAAlB;;AACA,IAAMC,QAAQ,GAAG,SAAXA,QAAW,CAACx6C,GAAD,EAAS;AACxB,MAAMygC,MAAM,GAAG6Z,SAAS,CAACt6C,GAAD,CAAxB;AACA,SAAO7D,MAAM,CAACuX,MAAP,CAAc6mC,SAAd,EAAyBxtC,MAAzB,CAAgC,UAACoC,CAAD;AAAA,WAAOA,CAAC,CAACsxB,MAAF,KAAaA,MAApB;AAAA,GAAhC,EAA4DplB,GAA5D,EAAP;AACD,CAHD;;AAIA,SAASo/B,eAAT,CAAyBpmC,GAAzB,EAA8B/iB,KAA9B,EAAqC64B,IAArC,EAA2C;AACzC,MAAM/tB,IAAI,GAAGD,MAAM,CAACC,IAAP,CAAYiY,GAAZ,CAAb;;AACA,4BAAkBjY,IAAlB,6BAAwB;AAAnB,QAAM4D,GAAG,aAAT;AACH,QAAM06C,MAAM,GAAG,CAAC16C,GAAhB;;AACA,QAAI06C,MAAM,IAAIppD,KAAd,EAAqB;AACnB,UAAM+H,KAAK,GAAGgb,GAAG,CAACrU,GAAD,CAAjB;AACA,aAAOqU,GAAG,CAACrU,GAAD,CAAV;;AACA,UAAImqB,IAAI,GAAG,CAAP,IAAYuwB,MAAM,GAAGppD,KAAzB,EAAgC;AAC9B+iB,QAAAA,GAAG,CAACqmC,MAAM,GAAGvwB,IAAV,CAAH,GAAqB9wB,KAArB;AACD;AACF;AACF;AACF;;AACD,SAASshD,kBAAT,CAA4BhpD,CAA5B,EAA+BipD,SAA/B,EAA0CC,WAA1C,EAAuDC,OAAvD,EAAgE;AAC9D,MAAI,CAACD,WAAD,IAAgBlpD,CAAC,CAACrD,IAAF,KAAW,UAA/B,EAA2C;AACzC,WAAO,IAAP;AACD;;AACD,MAAIwsD,OAAJ,EAAa;AACX,WAAOF,SAAP;AACD;;AACD,SAAOjpD,CAAP;AACD;;IACKtF;AACJ,iBAAY6F,IAAZ,EAAkB6oD,UAAlB,EAA8B;AAAA;;AAAA;;AAC5B,QAAMt8B,MAAM,GAAG,KAAKA,MAAL,GAAc,IAAI85B,MAAJ,CAAWwC,UAAX,CAA7B;AACA,QAAMC,aAAa,GAAGV,SAAS,CAACpoD,IAAD,CAA/B;AACA,QAAM+oD,aAAa,GAAGT,QAAQ,CAACQ,aAAD,CAA9B;;AACA,QAAIC,aAAJ,EAAmB;AACjB,YAAM,IAAItsC,KAAJ,CACJ,+CAA+CssC,aAAa,CAACpuC,EAA7D,GAAkE,IAAlE,GACJ,qDAFQ,CAAN;AAID;;AACD,QAAM1c,OAAO,GAAGsuB,MAAM,CAACiI,cAAP,CAAsBjI,MAAM,CAACy8B,iBAAP,EAAtB,EAAkD,KAAKv0B,UAAL,EAAlD,CAAhB;AACA,SAAKgyB,QAAL,GAAgB,KAAKl6B,MAAM,CAACk6B,QAAP,IAAmB9U,eAAe,CAACmX,aAAD,CAAvC,GAAhB;AACA,SAAKrC,QAAL,CAAcwC,YAAd,CAA2B18B,MAA3B;AACA,QAAM9F,OAAO,GAAG,KAAKggC,QAAL,CAAcyC,cAAd,CAA6BJ,aAA7B,EAA4C7qD,OAAO,CAACqkC,WAApD,CAAhB;AACA,QAAMiM,MAAM,GAAG9nB,OAAO,IAAIA,OAAO,CAAC8nB,MAAlC;AACA,QAAMztC,MAAM,GAAGytC,MAAM,IAAIA,MAAM,CAACztC,MAAhC;AACA,QAAMC,KAAK,GAAGwtC,MAAM,IAAIA,MAAM,CAACxtC,KAA/B;AACA,SAAK4Z,EAAL,GAAU,yBAAV;AACA,SAAKmX,GAAL,GAAWrL,OAAX;AACA,SAAK8nB,MAAL,GAAcA,MAAd;AACA,SAAKxtC,KAAL,GAAaA,KAAb;AACA,SAAKD,MAAL,GAAcA,MAAd;AACA,SAAKqoD,QAAL,GAAgBlrD,OAAhB;AACA,SAAKmrD,YAAL,GAAoB,KAAK9mB,WAAzB;AACA,SAAKwL,OAAL,GAAe,EAAf;AACA,SAAKub,SAAL,GAAiB,EAAjB;AACA,SAAKj5B,OAAL,GAAezzB,SAAf;AACA,SAAK8tC,KAAL,GAAa,EAAb;AACA,SAAKmG,uBAAL,GAA+Bj0C,SAA/B;AACA,SAAK05B,SAAL,GAAiB15B,SAAjB;AACA,SAAKqsB,OAAL,GAAe,EAAf;AACA,SAAKsgC,UAAL,GAAkB3sD,SAAlB;AACA,SAAK4sD,UAAL,GAAkB,EAAlB;AACA,SAAKC,oBAAL,GAA4B7sD,SAA5B;AACA,SAAK8sD,eAAL,GAAuB,EAAvB;AACA,SAAKzsD,MAAL,GAAc,EAAd;AACA,SAAK0sD,QAAL,GAAgB,IAAItG,aAAJ,EAAhB;AACA,SAAK7R,QAAL,GAAgB,EAAhB;AACA,SAAKoY,cAAL,GAAsB,EAAtB;AACA,SAAKC,QAAL,GAAgB,KAAhB;AACA,SAAKtyB,mBAAL,GAA2B36B,SAA3B;AACA,SAAK81B,QAAL,GAAgB91B,SAAhB;AACA,SAAKktD,SAAL,GAAiB,wBAAS,UAAAp7B,IAAI;AAAA,aAAI,OAAI,CAAC1W,MAAL,CAAY0W,IAAZ,CAAJ;AAAA,KAAb,EAAoCxwB,OAAO,CAAC6rD,WAAR,IAAuB,CAA3D,CAAjB;AACA,SAAK1xB,YAAL,GAAoB,EAApB;AACAiwB,IAAAA,SAAS,CAAC,KAAK1tC,EAAN,CAAT,GAAqB,IAArB;;AACA,QAAI,CAAC8L,OAAD,IAAY,CAAC8nB,MAAjB,EAAyB;AACvBhzB,MAAAA,OAAO,CAAClM,KAAR,CAAc,mEAAd;AACA;AACD;;AACDua,IAAAA,QAAQ,CAACmgC,MAAT,CAAgB,IAAhB,EAAsB,UAAtB,EAAkC9B,oBAAlC;AACAr+B,IAAAA,QAAQ,CAACmgC,MAAT,CAAgB,IAAhB,EAAsB,UAAtB,EAAkC7B,mBAAlC;;AACA,SAAK8B,WAAL;;AACA,QAAI,KAAKJ,QAAT,EAAmB;AACjB,WAAK7xC,MAAL;AACD;AACF;;;;SACD,eAAkB;AAChB,4BAAmF,IAAnF,CAAO9Z,OAAP;AAAA,UAAiBqkC,WAAjB,mBAAiBA,WAAjB;AAAA,UAA8B2nB,mBAA9B,mBAA8BA,mBAA9B;AAAA,UAAoDlpD,KAApD,GAAmF,IAAnF,CAAoDA,KAApD;AAAA,UAA2DD,MAA3D,GAAmF,IAAnF,CAA2DA,MAA3D;AAAA,UAAmEsoD,YAAnE,GAAmF,IAAnF,CAAmEA,YAAnE;;AACA,UAAI,CAAC,uBAAc9mB,WAAd,CAAL,EAAiC;AAC/B,eAAOA,WAAP;AACD;;AACD,UAAI2nB,mBAAmB,IAAIb,YAA3B,EAAyC;AACvC,eAAOA,YAAP;AACD;;AACD,aAAOtoD,MAAM,GAAGC,KAAK,GAAGD,MAAX,GAAoB,IAAjC;AACD;;;SACD,eAAW;AACT,aAAO,KAAKyrB,MAAL,CAAYvuB,IAAnB;AACD;SACD,aAASA,IAAT,EAAe;AACb,WAAKuuB,MAAL,CAAYvuB,IAAZ,GAAmBA,IAAnB;AACD;;;SACD,eAAc;AACZ,aAAO,KAAKmrD,QAAZ;AACD;SACD,aAAYlrD,OAAZ,EAAqB;AACnB,WAAKsuB,MAAL,CAAYtuB,OAAZ,GAAsBA,OAAtB;AACD;;;WACD,uBAAc;AACZ,WAAK48C,aAAL,CAAmB,YAAnB;;AACA,UAAI,KAAK58C,OAAL,CAAaisD,UAAjB,EAA6B;AAC3B,aAAKhoD,MAAL;AACD,OAFD,MAEO;AACL,gCAAY,IAAZ,EAAkB,KAAKjE,OAAL,CAAagK,gBAA/B;AACD;;AACD,WAAKkiD,UAAL;AACA,WAAKtP,aAAL,CAAmB,WAAnB;AACA,aAAO,IAAP;AACD;;;WACD,iBAAQ;AACN,8BAAY,KAAKtM,MAAjB,EAAyB,KAAKzc,GAA9B;AACA,aAAO,IAAP;AACD;;;WACD,gBAAO;AACLlI,MAAAA,QAAQ,CAAC9iB,IAAT,CAAc,IAAd;AACA,aAAO,IAAP;AACD;;;WACD,gBAAO/F,KAAP,EAAcD,MAAd,EAAsB;AACpB,UAAI,CAAC8oB,QAAQ,CAACd,OAAT,CAAiB,IAAjB,CAAL,EAA6B;AAC3B,aAAKshC,OAAL,CAAarpD,KAAb,EAAoBD,MAApB;AACD,OAFD,MAEO;AACL,aAAKupD,iBAAL,GAAyB;AAACtpD,UAAAA,KAAK,EAALA,KAAD;AAAQD,UAAAA,MAAM,EAANA;AAAR,SAAzB;AACD;AACF;;;WACD,iBAAQC,KAAR,EAAeD,MAAf,EAAuB;AACrB,UAAM7C,OAAO,GAAG,KAAKA,OAArB;AACA,UAAMswC,MAAM,GAAG,KAAKA,MAApB;AACA,UAAMjM,WAAW,GAAGrkC,OAAO,CAACgsD,mBAAR,IAA+B,KAAK3nB,WAAxD;AACA,UAAMgoB,OAAO,GAAG,KAAK7D,QAAL,CAAc8D,cAAd,CAA6Bhc,MAA7B,EAAqCxtC,KAArC,EAA4CD,MAA5C,EAAoDwhC,WAApD,CAAhB;AACA,UAAMkoB,QAAQ,GAAGvsD,OAAO,CAACgK,gBAAR,IAA4B,KAAKw+C,QAAL,CAAcgE,mBAAd,EAA7C;AACA,UAAMh8B,IAAI,GAAG,KAAK1tB,KAAL,GAAa,QAAb,GAAwB,QAArC;AACA,WAAKA,KAAL,GAAaupD,OAAO,CAACvpD,KAArB;AACA,WAAKD,MAAL,GAAcwpD,OAAO,CAACxpD,MAAtB;AACA,WAAKsoD,YAAL,GAAoB,KAAK9mB,WAAzB;;AACA,UAAI,CAAC,wBAAY,IAAZ,EAAkBkoB,QAAlB,EAA4B,IAA5B,CAAL,EAAwC;AACtC;AACD;;AACD,WAAK3P,aAAL,CAAmB,QAAnB,EAA6B;AAACn/C,QAAAA,IAAI,EAAE4uD;AAAP,OAA7B;AACA,6BAASrsD,OAAO,CAACysD,QAAjB,EAA2B,CAAC,IAAD,EAAOJ,OAAP,CAA3B,EAA4C,IAA5C;;AACA,UAAI,KAAKV,QAAT,EAAmB;AACjB,YAAI,KAAKC,SAAL,CAAep7B,IAAf,CAAJ,EAA0B;AACxB,eAAK1hB,MAAL;AACD;AACF;AACF;;;WACD,+BAAsB;AACpB,UAAM9O,OAAO,GAAG,KAAKA,OAArB;AACA,UAAM0sD,aAAa,GAAG1sD,OAAO,CAACjB,MAAR,IAAkB,EAAxC;AACA,6BAAK2tD,aAAL,EAAoB,UAACC,WAAD,EAAczJ,MAAd,EAAyB;AAC3CyJ,QAAAA,WAAW,CAACjwC,EAAZ,GAAiBwmC,MAAjB;AACD,OAFD;AAGD;;;WACD,+BAAsB;AAAA;;AACpB,UAAMljD,OAAO,GAAG,KAAKA,OAArB;AACA,UAAM4sD,SAAS,GAAG5sD,OAAO,CAACjB,MAA1B;AACA,UAAMA,MAAM,GAAG,KAAKA,MAApB;AACA,UAAM8tD,OAAO,GAAG7gD,MAAM,CAACC,IAAP,CAAYlN,MAAZ,EAAoBC,MAApB,CAA2B,UAACklB,GAAD,EAAMxH,EAAN,EAAa;AACtDwH,QAAAA,GAAG,CAACxH,EAAD,CAAH,GAAU,KAAV;AACA,eAAOwH,GAAP;AACD,OAHe,EAGb,EAHa,CAAhB;AAIA,UAAI3T,KAAK,GAAG,EAAZ;;AACA,UAAIq8C,SAAJ,EAAe;AACbr8C,QAAAA,KAAK,GAAGA,KAAK,CAACuP,MAAN,CACN9T,MAAM,CAACC,IAAP,CAAY2gD,SAAZ,EAAuB3tD,GAAvB,CAA2B,UAACyd,EAAD,EAAQ;AACjC,cAAMqqC,YAAY,GAAG6F,SAAS,CAAClwC,EAAD,CAA9B;AACA,cAAM4V,IAAI,GAAGw0B,aAAa,CAACpqC,EAAD,EAAKqqC,YAAL,CAA1B;AACA,cAAM+F,QAAQ,GAAGx6B,IAAI,KAAK,GAA1B;AACA,cAAMqK,YAAY,GAAGrK,IAAI,KAAK,GAA9B;AACA,iBAAO;AACLtyB,YAAAA,OAAO,EAAE+mD,YADJ;AAELgG,YAAAA,SAAS,EAAED,QAAQ,GAAG,WAAH,GAAiBnwB,YAAY,GAAG,QAAH,GAAc,MAFzD;AAGLqwB,YAAAA,KAAK,EAAEF,QAAQ,GAAG,cAAH,GAAoBnwB,YAAY,GAAG,UAAH,GAAgB;AAH1D,WAAP;AAKD,SAVD,CADM,CAAR;AAaD;;AACD,6BAAKpsB,KAAL,EAAY,UAACxO,IAAD,EAAU;AACpB,YAAMglD,YAAY,GAAGhlD,IAAI,CAAC/B,OAA1B;AACA,YAAM0c,EAAE,GAAGqqC,YAAY,CAACrqC,EAAxB;AACA,YAAM4V,IAAI,GAAGw0B,aAAa,CAACpqC,EAAD,EAAKqqC,YAAL,CAA1B;AACA,YAAMkG,SAAS,GAAG,uBAAelG,YAAY,CAAC5oD,IAA5B,EAAkC4D,IAAI,CAACirD,KAAvC,CAAlB;;AACA,YAAIjG,YAAY,CAACznD,QAAb,KAA0BZ,SAA1B,IAAuCkrD,oBAAoB,CAAC7C,YAAY,CAACznD,QAAd,EAAwBgzB,IAAxB,CAApB,KAAsDs3B,oBAAoB,CAAC7nD,IAAI,CAACgrD,SAAN,CAArH,EAAuI;AACrIhG,UAAAA,YAAY,CAACznD,QAAb,GAAwByC,IAAI,CAACgrD,SAA7B;AACD;;AACDF,QAAAA,OAAO,CAACnwC,EAAD,CAAP,GAAc,IAAd;AACA,YAAIvP,KAAK,GAAG,IAAZ;;AACA,YAAIuP,EAAE,IAAI3d,MAAN,IAAgBA,MAAM,CAAC2d,EAAD,CAAN,CAAWve,IAAX,KAAoB8uD,SAAxC,EAAmD;AACjD9/C,UAAAA,KAAK,GAAGpO,MAAM,CAAC2d,EAAD,CAAd;AACD,SAFD,MAEO;AACL,cAAMwwC,UAAU,GAAGjI,QAAQ,CAACkI,QAAT,CAAkBF,SAAlB,CAAnB;AACA9/C,UAAAA,KAAK,GAAG,IAAI+/C,UAAJ,CAAe;AACrBxwC,YAAAA,EAAE,EAAFA,EADqB;AAErBve,YAAAA,IAAI,EAAE8uD,SAFe;AAGrBp5B,YAAAA,GAAG,EAAE,OAAI,CAACA,GAHW;AAIrB/zB,YAAAA,KAAK,EAAE;AAJc,WAAf,CAAR;AAMAf,UAAAA,MAAM,CAACoO,KAAK,CAACuP,EAAP,CAAN,GAAmBvP,KAAnB;AACD;;AACDA,QAAAA,KAAK,CAACxG,IAAN,CAAWogD,YAAX,EAAyB/mD,OAAzB;AACD,OAvBD;AAwBA,6BAAK6sD,OAAL,EAAc,UAACO,UAAD,EAAa1wC,EAAb,EAAoB;AAChC,YAAI,CAAC0wC,UAAL,EAAiB;AACf,iBAAOruD,MAAM,CAAC2d,EAAD,CAAb;AACD;AACF,OAJD;AAKA,6BAAK3d,MAAL,EAAa,UAACoO,KAAD,EAAW;AACtBy/B,QAAAA,OAAO,CAACne,SAAR,CAAkB,OAAlB,EAAwBthB,KAAxB,EAA+BA,KAAK,CAACnN,OAArC;AACA4sC,QAAAA,OAAO,CAACgD,MAAR,CAAe,OAAf,EAAqBziC,KAArB;AACD,OAHD;AAID;;;WACD,2BAAkB;AAChB,UAAM8iB,QAAQ,GAAG,KAAKm7B,SAAtB;AACA,UAAMvxB,OAAO,GAAG,KAAK95B,IAAL,CAAUvB,QAAV,CAAmBG,MAAnC;AACA,UAAMi7B,OAAO,GAAG3J,QAAQ,CAACtxB,MAAzB;AACAsxB,MAAAA,QAAQ,CAAC0K,IAAT,CAAc,UAAC7Y,CAAD,EAAI7gB,CAAJ;AAAA,eAAU6gB,CAAC,CAACvhB,KAAF,GAAUU,CAAC,CAACV,KAAtB;AAAA,OAAd;;AACA,UAAIq5B,OAAO,GAAGC,OAAd,EAAuB;AACrB,aAAK,IAAI16B,CAAC,GAAG06B,OAAb,EAAsB16B,CAAC,GAAGy6B,OAA1B,EAAmC,EAAEz6B,CAArC,EAAwC;AACtC,eAAKkuD,mBAAL,CAAyBluD,CAAzB;AACD;;AACD8wB,QAAAA,QAAQ,CAACjI,MAAT,CAAgB6R,OAAhB,EAAyBD,OAAO,GAAGC,OAAnC;AACD;;AACD,WAAK2xB,eAAL,GAAuBv7B,QAAQ,CAACiV,KAAT,CAAe,CAAf,EAAkBvK,IAAlB,CAAuBkvB,aAAa,CAAC,OAAD,EAAU,OAAV,CAApC,CAAvB;AACD;;;WACD,uCAA8B;AAAA;;AAC5B,UAAkB55B,QAAlB,GAAgD,IAAhD,CAAOm7B,SAAP;AAAA,UAAmC5sD,QAAnC,GAAgD,IAAhD,CAA4BuB,IAA5B,CAAmCvB,QAAnC;;AACA,UAAIyxB,QAAQ,CAACtxB,MAAT,GAAkBH,QAAQ,CAACG,MAA/B,EAAuC;AACrC,eAAO,KAAKwzB,OAAZ;AACD;;AACDlC,MAAAA,QAAQ,CAAC5sB,OAAT,CAAiB,UAACygB,IAAD,EAAOvjB,KAAP,EAAiB;AAChC,YAAI/B,QAAQ,CAACoe,MAAT,CAAgB,UAAAlQ,CAAC;AAAA,iBAAIA,CAAC,KAAKoX,IAAI,CAACshB,QAAf;AAAA,SAAjB,EAA0CzmC,MAA1C,KAAqD,CAAzD,EAA4D;AAC1D,iBAAI,CAAC0uD,mBAAL,CAAyB9sD,KAAzB;AACD;AACF,OAJD;AAKD;;;WACD,oCAA2B;AACzB,UAAM+sD,cAAc,GAAG,EAAvB;AACA,UAAM9uD,QAAQ,GAAG,KAAKuB,IAAL,CAAUvB,QAA3B;AACA,UAAIW,CAAJ,EAAOgxB,IAAP;;AACA,WAAKo9B,2BAAL;;AACA,WAAKpuD,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAG3xB,QAAQ,CAACG,MAA5B,EAAoCQ,CAAC,GAAGgxB,IAAxC,EAA8ChxB,CAAC,EAA/C,EAAmD;AACjD,YAAMD,OAAO,GAAGV,QAAQ,CAACW,CAAD,CAAxB;AACA,YAAI2kB,IAAI,GAAG,KAAK4R,cAAL,CAAoBv2B,CAApB,CAAX;AACA,YAAMhB,IAAI,GAAGe,OAAO,CAACf,IAAR,IAAgB,KAAKmwB,MAAL,CAAYnwB,IAAzC;;AACA,YAAI2lB,IAAI,CAAC3lB,IAAL,IAAa2lB,IAAI,CAAC3lB,IAAL,KAAcA,IAA/B,EAAqC;AACnC,eAAKkvD,mBAAL,CAAyBluD,CAAzB;;AACA2kB,UAAAA,IAAI,GAAG,KAAK4R,cAAL,CAAoBv2B,CAApB,CAAP;AACD;;AACD2kB,QAAAA,IAAI,CAAC3lB,IAAL,GAAYA,IAAZ;AACA2lB,QAAAA,IAAI,CAACqR,SAAL,GAAiBj2B,OAAO,CAACi2B,SAAR,IAAqBqxB,YAAY,CAACroD,IAAD,EAAO,KAAK6B,OAAZ,CAAlD;AACA8jB,QAAAA,IAAI,CAAC0pC,KAAL,GAAatuD,OAAO,CAACsuD,KAAR,IAAiB,CAA9B;AACA1pC,QAAAA,IAAI,CAACvjB,KAAL,GAAapB,CAAb;AACA2kB,QAAAA,IAAI,CAAChlB,KAAL,GAAa,KAAKI,OAAO,CAACJ,KAA1B;AACAglB,QAAAA,IAAI,CAACsK,OAAL,GAAe,KAAK8T,gBAAL,CAAsB/iC,CAAtB,CAAf;;AACA,YAAI2kB,IAAI,CAAC7J,UAAT,EAAqB;AACnB6J,UAAAA,IAAI,CAAC7J,UAAL,CAAgBwzC,WAAhB,CAA4BtuD,CAA5B;AACA2kB,UAAAA,IAAI,CAAC7J,UAAL,CAAgBya,UAAhB;AACD,SAHD,MAGO;AACL,cAAMg5B,eAAe,GAAGzI,QAAQ,CAAC0I,aAAT,CAAuBxvD,IAAvB,CAAxB;AACA,sCAA8Cd,kBAASmB,QAAT,CAAkBL,IAAlB,CAA9C;AAAA,cAAO23B,kBAAP,yBAAOA,kBAAP;AAAA,cAA2B2C,eAA3B,yBAA2BA,eAA3B;;AACA,mBAAci1B,eAAe,CAACpsC,SAA9B,EAAyC;AACvCmX,YAAAA,eAAe,EAAEwsB,QAAQ,CAAC2I,UAAT,CAAoBn1B,eAApB,CADsB;AAEvC3C,YAAAA,kBAAkB,EAAEA,kBAAkB,IAAImvB,QAAQ,CAAC2I,UAAT,CAAoB93B,kBAApB;AAFH,WAAzC;;AAIAhS,UAAAA,IAAI,CAAC7J,UAAL,GAAkB,IAAIyzC,eAAJ,CAAoB,IAApB,EAA0BvuD,CAA1B,CAAlB;AACAmuD,UAAAA,cAAc,CAACpsD,IAAf,CAAoB4iB,IAAI,CAAC7J,UAAzB;AACD;AACF;;AACD,WAAK4zC,eAAL;;AACA,aAAOP,cAAP;AACD;;;WACD,0BAAiB;AAAA;;AACf,6BAAK,KAAKvtD,IAAL,CAAUvB,QAAf,EAAyB,UAACU,OAAD,EAAUuxB,YAAV,EAA2B;AAClD,eAAI,CAACiF,cAAL,CAAoBjF,YAApB,EAAkCxW,UAAlC,CAA6CrL,KAA7C;AACD,OAFD,EAEG,IAFH;AAGD;;;WACD,iBAAQ;AACN,WAAKk/C,cAAL;;AACA,WAAKlR,aAAL,CAAmB,OAAnB;AACD;;;WACD,gBAAOpsB,IAAP,EAAa;AACX,UAAMlC,MAAM,GAAG,KAAKA,MAApB;AACAA,MAAAA,MAAM,CAACxU,MAAP;AACA,UAAM9Z,OAAO,GAAG,KAAKkrD,QAAL,GAAgB58B,MAAM,CAACiI,cAAP,CAAsBjI,MAAM,CAACy8B,iBAAP,EAAtB,EAAkD,KAAKv0B,UAAL,EAAlD,CAAhC;AACA,UAAMu3B,aAAa,GAAG,KAAK10B,mBAAL,GAA2B,CAACr5B,OAAO,CAAC6tB,SAA1D;;AACA,WAAKmgC,aAAL;;AACA,WAAKC,mBAAL;;AACA,WAAKC,oBAAL;;AACA,WAAKzC,QAAL,CAAc0C,UAAd;;AACA,UAAI,KAAKvR,aAAL,CAAmB,cAAnB,EAAmC;AAACpsB,QAAAA,IAAI,EAAJA,IAAD;AAAOk1B,QAAAA,UAAU,EAAE;AAAnB,OAAnC,MAAiE,KAArE,EAA4E;AAC1E;AACD;;AACD,UAAM4H,cAAc,GAAG,KAAKc,wBAAL,EAAvB;AACA,WAAKxR,aAAL,CAAmB,sBAAnB;AACA,UAAI5M,UAAU,GAAG,CAAjB;;AACA,WAAK,IAAI7wC,CAAC,GAAG,CAAR,EAAWgxB,IAAI,GAAG,KAAKpwB,IAAL,CAAUvB,QAAV,CAAmBG,MAA1C,EAAkDQ,CAAC,GAAGgxB,IAAtD,EAA4DhxB,CAAC,EAA7D,EAAiE;AAC/D,mCAAqB,KAAKu2B,cAAL,CAAoBv2B,CAApB,CAArB;AAAA,YAAO8a,UAAP,wBAAOA,UAAP;;AACA,YAAMrL,KAAK,GAAG,CAACm/C,aAAD,IAAkBT,cAAc,CAACtnD,OAAf,CAAuBiU,UAAvB,MAAuC,CAAC,CAAxE;AACAA,QAAAA,UAAU,CAACo0C,qBAAX,CAAiCz/C,KAAjC;AACAohC,QAAAA,UAAU,GAAGtuC,IAAI,CAAC0H,GAAL,CAAS,CAAC6Q,UAAU,CAACie,cAAX,EAAV,EAAuC8X,UAAvC,CAAb;AACD;;AACDA,MAAAA,UAAU,GAAG,KAAKlF,WAAL,GAAmB9qC,OAAO,CAACqtC,MAAR,CAAesC,WAAf,GAA6BK,UAA7B,GAA0C,CAA1E;;AACA,WAAKse,aAAL,CAAmBte,UAAnB;;AACA,UAAI,CAAC+d,aAAL,EAAoB;AAClB,+BAAKT,cAAL,EAAqB,UAACrzC,UAAD,EAAgB;AACnCA,UAAAA,UAAU,CAACrL,KAAX;AACD,SAFD;AAGD;;AACD,WAAK2/C,eAAL,CAAqB/9B,IAArB;;AACA,WAAKosB,aAAL,CAAmB,aAAnB,EAAkC;AAACpsB,QAAAA,IAAI,EAAJA;AAAD,OAAlC;;AACA,WAAKqf,OAAL,CAAalV,IAAb,CAAkBkvB,aAAa,CAAC,GAAD,EAAM,MAAN,CAA/B;;AACA,UAAO9+B,OAAP,GAA8B,IAA9B,CAAOA,OAAP;AAAA,UAAgBsgC,UAAhB,GAA8B,IAA9B,CAAgBA,UAAhB;;AACA,UAAIA,UAAJ,EAAgB;AACd,aAAKmD,aAAL,CAAmBnD,UAAnB,EAA+B,IAA/B;AACD,OAFD,MAEO,IAAItgC,OAAO,CAACpsB,MAAZ,EAAoB;AACzB,aAAK8vD,kBAAL,CAAwB1jC,OAAxB,EAAiCA,OAAjC,EAA0C,IAA1C;AACD;;AACD,WAAKjc,MAAL;AACD;;;WACD,yBAAgB;AAAA;;AACd,6BAAK,KAAK/P,MAAV,EAAkB,UAACoO,KAAD,EAAW;AAC3By/B,QAAAA,OAAO,CAACkD,SAAR,CAAkB,OAAlB,EAAwB3iC,KAAxB;AACD,OAFD;AAGA,WAAKuhD,mBAAL;AACA,WAAKC,mBAAL;AACD;;;WACD,+BAAsB;AACpB,UAAM3uD,OAAO,GAAG,KAAKA,OAArB;AACA,UAAM4uD,cAAc,GAAG,IAAI5G,GAAJ,CAAQh8C,MAAM,CAACC,IAAP,CAAY,KAAKq/C,UAAjB,CAAR,CAAvB;AACA,UAAMuD,SAAS,GAAG,IAAI7G,GAAJ,CAAQhoD,OAAO,CAAC8uD,MAAhB,CAAlB;;AACA,UAAI,CAAC,wBAAUF,cAAV,EAA0BC,SAA1B,CAAD,IAAyC,CAAC,CAAC,KAAKtD,oBAAP,KAAgCvrD,OAAO,CAACisD,UAArF,EAAiG;AAC/F,aAAK8C,YAAL;AACA,aAAK7C,UAAL;AACD;AACF;;;WACD,gCAAuB;AACrB,UAAOR,cAAP,GAAyB,IAAzB,CAAOA,cAAP;AACA,UAAMsD,OAAO,GAAG,KAAKC,sBAAL,MAAiC,EAAjD;;AAFqB,mDAGgBD,OAHhB;AAAA;;AAAA;AAGrB,kEAA8C;AAAA;AAAA,cAAlCthC,MAAkC,iBAAlCA,MAAkC;AAAA,cAA1BvsB,KAA0B,iBAA1BA,KAA0B;AAAA,cAAnBG,KAAmB,iBAAnBA,KAAmB;AAC5C,cAAM04B,IAAI,GAAGtM,MAAM,KAAK,iBAAX,GAA+B,CAACpsB,KAAhC,GAAwCA,KAArD;AACAgpD,UAAAA,eAAe,CAACoB,cAAD,EAAiBvqD,KAAjB,EAAwB64B,IAAxB,CAAf;AACD;AANoB;AAAA;AAAA;AAAA;AAAA;AAOtB;;;WACD,kCAAyB;AACvB,UAAMG,YAAY,GAAG,KAAKA,YAA1B;;AACA,UAAI,CAACA,YAAD,IAAiB,CAACA,YAAY,CAACx7B,MAAnC,EAA2C;AACzC;AACD;;AACD,WAAKw7B,YAAL,GAAoB,EAApB;AACA,UAAM+0B,YAAY,GAAG,KAAKnvD,IAAL,CAAUvB,QAAV,CAAmBG,MAAxC;;AACA,UAAMwwD,OAAO,GAAG,SAAVA,OAAU,CAAChQ,GAAD;AAAA,eAAS,IAAI6I,GAAJ,CACvB7tB,YAAY,CACTvd,MADH,CACU,UAAAoC,CAAC;AAAA,iBAAIA,CAAC,CAAC,CAAD,CAAD,KAASmgC,GAAb;AAAA,SADX,EAEGlgD,GAFH,CAEO,UAAC+f,CAAD,EAAI7f,CAAJ;AAAA,iBAAUA,CAAC,GAAG,GAAJ,GAAU6f,CAAC,CAACgJ,MAAF,CAAS,CAAT,EAAYk8B,IAAZ,CAAiB,GAAjB,CAApB;AAAA,SAFP,CADuB,CAAT;AAAA,OAAhB;;AAKA,UAAMkL,SAAS,GAAGD,OAAO,CAAC,CAAD,CAAzB;;AACA,WAAK,IAAIhwD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+vD,YAApB,EAAkC/vD,CAAC,EAAnC,EAAuC;AACrC,YAAI,CAAC,wBAAUiwD,SAAV,EAAqBD,OAAO,CAAChwD,CAAD,CAA5B,CAAL,EAAuC;AACrC;AACD;AACF;;AACD,aAAO+D,KAAK,CAACC,IAAN,CAAWisD,SAAX,EACJnwD,GADI,CACA,UAAA+f,CAAC;AAAA,eAAIA,CAAC,CAAC+kC,KAAF,CAAQ,GAAR,CAAJ;AAAA,OADD,EAEJ9kD,GAFI,CAEA,UAAA6iB,CAAC;AAAA,eAAK;AAAC4L,UAAAA,MAAM,EAAE5L,CAAC,CAAC,CAAD,CAAV;AAAe3gB,UAAAA,KAAK,EAAE,CAAC2gB,CAAC,CAAC,CAAD,CAAxB;AAA6BxgB,UAAAA,KAAK,EAAE,CAACwgB,CAAC,CAAC,CAAD;AAAtC,SAAL;AAAA,OAFD,CAAP;AAGD;;;WACD,uBAAckuB,UAAd,EAA0B;AAAA;;AACxB,UAAI,KAAK4M,aAAL,CAAmB,cAAnB,EAAmC;AAAC8I,QAAAA,UAAU,EAAE;AAAb,OAAnC,MAA2D,KAA/D,EAAsE;AACpE;AACD;;AACD9Y,MAAAA,OAAO,CAAC9yB,MAAR,CAAe,IAAf,EAAqB,KAAKhX,KAA1B,EAAiC,KAAKD,MAAtC,EAA8CmtC,UAA9C;AACA,UAAM7X,IAAI,GAAG,KAAKC,SAAlB;AACA,UAAMi3B,MAAM,GAAGl3B,IAAI,CAACr1B,KAAL,IAAc,CAAd,IAAmBq1B,IAAI,CAACt1B,MAAL,IAAe,CAAjD;AACA,WAAKgtC,OAAL,GAAe,EAAf;AACA,6BAAK,KAAKrD,KAAV,EAAiB,UAACJ,GAAD,EAAS;AAAA;;AACxB,YAAIijB,MAAM,IAAIjjB,GAAG,CAAC9sC,QAAJ,KAAiB,WAA/B,EAA4C;AAC1C;AACD;;AACD,YAAI8sC,GAAG,CAAC3d,SAAR,EAAmB;AACjB2d,UAAAA,GAAG,CAAC3d,SAAJ;AACD;;AACD,kCAAI,CAACohB,OAAL,EAAa3uC,IAAb,2CAAqBkrC,GAAG,CAACyD,OAAJ,EAArB;AACD,OARD,EAQG,IARH;;AASA,WAAKA,OAAL,CAAaxsC,OAAb,CAAqB,UAACtB,IAAD,EAAOxB,KAAP,EAAiB;AACpCwB,QAAAA,IAAI,CAACutD,IAAL,GAAY/uD,KAAZ;AACD,OAFD;;AAGA,WAAKq8C,aAAL,CAAmB,aAAnB;AACD;;;WACD,yBAAgBpsB,IAAhB,EAAsB;AACpB,UAAI,KAAKosB,aAAL,CAAmB,sBAAnB,EAA2C;AAACpsB,QAAAA,IAAI,EAAJA,IAAD;AAAOk1B,QAAAA,UAAU,EAAE;AAAnB,OAA3C,MAAyE,KAA7E,EAAoF;AAClF;AACD;;AACD,WAAK,IAAIvmD,CAAC,GAAG,CAAR,EAAWgxB,IAAI,GAAG,KAAKpwB,IAAL,CAAUvB,QAAV,CAAmBG,MAA1C,EAAkDQ,CAAC,GAAGgxB,IAAtD,EAA4D,EAAEhxB,CAA9D,EAAiE;AAC/D,aAAKu2B,cAAL,CAAoBv2B,CAApB,EAAuB8a,UAAvB,CAAkCwU,SAAlC;AACD;;AACD,WAAK,IAAItvB,GAAC,GAAG,CAAR,EAAWgxB,KAAI,GAAG,KAAKpwB,IAAL,CAAUvB,QAAV,CAAmBG,MAA1C,EAAkDQ,GAAC,GAAGgxB,KAAtD,EAA4D,EAAEhxB,GAA9D,EAAiE;AAC/D,aAAKowD,cAAL,CAAoBpwD,GAApB,EAAuB,wBAAWqxB,IAAX,IAAmBA,IAAI,CAAC;AAACC,UAAAA,YAAY,EAAEtxB;AAAf,SAAD,CAAvB,GAA6CqxB,IAApE;AACD;;AACD,WAAKosB,aAAL,CAAmB,qBAAnB,EAA0C;AAACpsB,QAAAA,IAAI,EAAJA;AAAD,OAA1C;AACD;;;WACD,wBAAejwB,KAAf,EAAsBiwB,IAAtB,EAA4B;AAC1B,UAAM1M,IAAI,GAAG,KAAK4R,cAAL,CAAoBn1B,KAApB,CAAb;AACA,UAAM0iB,IAAI,GAAG;AAACa,QAAAA,IAAI,EAAJA,IAAD;AAAOvjB,QAAAA,KAAK,EAALA,KAAP;AAAciwB,QAAAA,IAAI,EAAJA,IAAd;AAAoBk1B,QAAAA,UAAU,EAAE;AAAhC,OAAb;;AACA,UAAI,KAAK9I,aAAL,CAAmB,qBAAnB,EAA0C35B,IAA1C,MAAoD,KAAxD,EAA+D;AAC7D;AACD;;AACDa,MAAAA,IAAI,CAAC7J,UAAL,CAAgBwQ,OAAhB,CAAwB+F,IAAxB;;AACAvN,MAAAA,IAAI,CAACyiC,UAAL,GAAkB,KAAlB;AACA,WAAK9I,aAAL,CAAmB,oBAAnB,EAAyC35B,IAAzC;AACD;;;WACD,kBAAS;AACP,UAAI,KAAK25B,aAAL,CAAmB,cAAnB,EAAmC;AAAC8I,QAAAA,UAAU,EAAE;AAAb,OAAnC,MAA2D,KAA/D,EAAsE;AACpE;AACD;;AACD,UAAI/5B,QAAQ,CAACtM,GAAT,CAAa,IAAb,CAAJ,EAAwB;AACtB,YAAI,KAAKssC,QAAL,IAAiB,CAAChgC,QAAQ,CAACd,OAAT,CAAiB,IAAjB,CAAtB,EAA8C;AAC5Cc,UAAAA,QAAQ,CAACxqB,KAAT,CAAe,IAAf;AACD;AACF,OAJD,MAIO;AACL,aAAK2pB,IAAL;AACAk/B,QAAAA,oBAAoB,CAAC;AAAClqD,UAAAA,KAAK,EAAE;AAAR,SAAD,CAApB;AACD;AACF;;;WACD,gBAAO;AACL,UAAIX,CAAJ;;AACA,UAAI,KAAKitD,iBAAT,EAA4B;AAC1B,oCAAwB,KAAKA,iBAA7B;AAAA,YAAOtpD,KAAP,yBAAOA,KAAP;AAAA,YAAcD,MAAd,yBAAcA,MAAd;;AACA,aAAKspD,OAAL,CAAarpD,KAAb,EAAoBD,MAApB;;AACA,aAAKupD,iBAAL,GAAyB,IAAzB;AACD;;AACD,WAAKxzC,KAAL;;AACA,UAAI,KAAK9V,KAAL,IAAc,CAAd,IAAmB,KAAKD,MAAL,IAAe,CAAtC,EAAyC;AACvC;AACD;;AACD,UAAI,KAAK+5C,aAAL,CAAmB,YAAnB,EAAiC;AAAC8I,QAAAA,UAAU,EAAE;AAAb,OAAjC,MAAyD,KAA7D,EAAoE;AAClE;AACD;;AACD,UAAM8J,MAAM,GAAG,KAAK3f,OAApB;;AACA,WAAK1wC,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGqwD,MAAM,CAAC7wD,MAAX,IAAqB6wD,MAAM,CAACrwD,CAAD,CAAN,CAAUyN,CAAV,IAAe,CAAhD,EAAmD,EAAEzN,CAArD,EAAwD;AACtDqwD,QAAAA,MAAM,CAACrwD,CAAD,CAAN,CAAU2rB,IAAV,CAAe,KAAKsN,SAApB;AACD;;AACD,WAAKq3B,aAAL;;AACA,aAAOtwD,CAAC,GAAGqwD,MAAM,CAAC7wD,MAAlB,EAA0B,EAAEQ,CAA5B,EAA+B;AAC7BqwD,QAAAA,MAAM,CAACrwD,CAAD,CAAN,CAAU2rB,IAAV,CAAe,KAAKsN,SAApB;AACD;;AACD,WAAKwkB,aAAL,CAAmB,WAAnB;AACD;;;WACD,gCAAuB5sB,aAAvB,EAAsC;AACpC,UAAMC,QAAQ,GAAG,KAAKu7B,eAAtB;AACA,UAAMljC,MAAM,GAAG,EAAf;AACA,UAAInpB,CAAJ,EAAOgxB,IAAP;;AACA,WAAKhxB,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAGF,QAAQ,CAACtxB,MAA5B,EAAoCQ,CAAC,GAAGgxB,IAAxC,EAA8C,EAAEhxB,CAAhD,EAAmD;AACjD,YAAM2kB,IAAI,GAAGmM,QAAQ,CAAC9wB,CAAD,CAArB;;AACA,YAAI,CAAC6wB,aAAD,IAAkBlM,IAAI,CAACsK,OAA3B,EAAoC;AAClC9F,UAAAA,MAAM,CAACpnB,IAAP,CAAY4iB,IAAZ;AACD;AACF;;AACD,aAAOwE,MAAP;AACD;;;WACD,wCAA+B;AAC7B,aAAO,KAAK4H,sBAAL,CAA4B,IAA5B,CAAP;AACD;;;WACD,yBAAgB;AACd,UAAI,KAAK0sB,aAAL,CAAmB,oBAAnB,EAAyC;AAAC8I,QAAAA,UAAU,EAAE;AAAb,OAAzC,MAAiE,KAArE,EAA4E;AAC1E;AACD;;AACD,UAAMz1B,QAAQ,GAAG,KAAKqZ,4BAAL,EAAjB;;AACA,WAAK,IAAInqC,CAAC,GAAG8wB,QAAQ,CAACtxB,MAAT,GAAkB,CAA/B,EAAkCQ,CAAC,IAAI,CAAvC,EAA0C,EAAEA,CAA5C,EAA+C;AAC7C,aAAKuwD,YAAL,CAAkBz/B,QAAQ,CAAC9wB,CAAD,CAA1B;AACD;;AACD,WAAKy9C,aAAL,CAAmB,mBAAnB;AACD;;;WACD,sBAAa94B,IAAb,EAAmB;AACjB,UAAM+P,GAAG,GAAG,KAAKA,GAAjB;AACA,UAAMoE,IAAI,GAAGnU,IAAI,CAACkU,KAAlB;AACA,UAAM23B,OAAO,GAAG,CAAC13B,IAAI,CAACnI,QAAtB;AACA,UAAMqI,IAAI,GAAG,KAAKC,SAAlB;AACA,UAAMnV,IAAI,GAAG;AACXa,QAAAA,IAAI,EAAJA,IADW;AAEXvjB,QAAAA,KAAK,EAAEujB,IAAI,CAACvjB,KAFD;AAGXmlD,QAAAA,UAAU,EAAE;AAHD,OAAb;;AAKA,UAAI,KAAK9I,aAAL,CAAmB,mBAAnB,EAAwC35B,IAAxC,MAAkD,KAAtD,EAA6D;AAC3D;AACD;;AACD,UAAI0sC,OAAJ,EAAa;AACX,+BAAS97B,GAAT,EAAc;AACZlxB,UAAAA,IAAI,EAAEs1B,IAAI,CAACt1B,IAAL,KAAc,KAAd,GAAsB,CAAtB,GAA0Bw1B,IAAI,CAACx1B,IAAL,GAAYs1B,IAAI,CAACt1B,IADrC;AAEZC,UAAAA,KAAK,EAAEq1B,IAAI,CAACr1B,KAAL,KAAe,KAAf,GAAuB,KAAKE,KAA5B,GAAoCq1B,IAAI,CAACv1B,KAAL,GAAaq1B,IAAI,CAACr1B,KAFjD;AAGZH,UAAAA,GAAG,EAAEw1B,IAAI,CAACx1B,GAAL,KAAa,KAAb,GAAqB,CAArB,GAAyB01B,IAAI,CAAC11B,GAAL,GAAWw1B,IAAI,CAACx1B,GAHlC;AAIZC,UAAAA,MAAM,EAAEu1B,IAAI,CAACv1B,MAAL,KAAgB,KAAhB,GAAwB,KAAKG,MAA7B,GAAsCs1B,IAAI,CAACz1B,MAAL,GAAcu1B,IAAI,CAACv1B;AAJrD,SAAd;AAMD;;AACDohB,MAAAA,IAAI,CAAC7J,UAAL,CAAgB6Q,IAAhB;;AACA,UAAI6kC,OAAJ,EAAa;AACX,+BAAW97B,GAAX;AACD;;AACD5Q,MAAAA,IAAI,CAACyiC,UAAL,GAAkB,KAAlB;AACA,WAAK9I,aAAL,CAAmB,kBAAnB,EAAuC35B,IAAvC;AACD;;;WACD,mCAA0BzhB,CAA1B,EAA6BgvB,IAA7B,EAAmCxwB,OAAnC,EAA4C6qC,gBAA5C,EAA8D;AAC5D,UAAMnd,MAAM,GAAGke,WAAW,CAACC,KAAZ,CAAkBrb,IAAlB,CAAf;;AACA,UAAI,OAAO9C,MAAP,KAAkB,UAAtB,EAAkC;AAChC,eAAOA,MAAM,CAAC,IAAD,EAAOlsB,CAAP,EAAUxB,OAAV,EAAmB6qC,gBAAnB,CAAb;AACD;;AACD,aAAO,EAAP;AACD;;;WACD,wBAAepa,YAAf,EAA6B;AAC3B,UAAMvxB,OAAO,GAAG,KAAKa,IAAL,CAAUvB,QAAV,CAAmBiyB,YAAnB,CAAhB;AACA,UAAMR,QAAQ,GAAG,KAAKm7B,SAAtB;AACA,UAAItnC,IAAI,GAAGmM,QAAQ,CAACrT,MAAT,CAAgB,UAAAlQ,CAAC;AAAA,eAAIA,CAAC,IAAIA,CAAC,CAAC04B,QAAF,KAAelmC,OAAxB;AAAA,OAAjB,EAAkDgsB,GAAlD,EAAX;;AACA,UAAI,CAACpH,IAAL,EAAW;AACTA,QAAAA,IAAI,GAAG;AACL3lB,UAAAA,IAAI,EAAE,IADD;AAEL4B,UAAAA,IAAI,EAAE,EAFD;AAGLb,UAAAA,OAAO,EAAE,IAHJ;AAIL+a,UAAAA,UAAU,EAAE,IAJP;AAKLwZ,UAAAA,MAAM,EAAE,IALH;AAMLsB,UAAAA,OAAO,EAAE,IANJ;AAOL11B,UAAAA,OAAO,EAAE,IAPJ;AAQLmuD,UAAAA,KAAK,EAAEtuD,OAAO,IAAIA,OAAO,CAACsuD,KAAnB,IAA4B,CAR9B;AASLjtD,UAAAA,KAAK,EAAEkwB,YATF;AAUL2U,UAAAA,QAAQ,EAAElmC,OAVL;AAWLg0B,UAAAA,OAAO,EAAE,EAXJ;AAYLyD,UAAAA,OAAO,EAAE;AAZJ,SAAP;AAcA1G,QAAAA,QAAQ,CAAC/uB,IAAT,CAAc4iB,IAAd;AACD;;AACD,aAAOA,IAAP;AACD;;;WACD,sBAAa;AACX,aAAO,KAAK0Q,QAAL,KAAkB,KAAKA,QAAL,GAAgB,uBAAc,IAAd,EAAoB;AAAC10B,QAAAA,KAAK,EAAE,IAAR;AAAc3B,QAAAA,IAAI,EAAE;AAApB,OAApB,CAAlC,CAAP;AACD;;;WACD,kCAAyB;AACvB,aAAO,KAAKmrC,4BAAL,GAAoC3qC,MAA3C;AACD;;;WACD,0BAAiB8xB,YAAjB,EAA+B;AAC7B,UAAMvxB,OAAO,GAAG,KAAKa,IAAL,CAAUvB,QAAV,CAAmBiyB,YAAnB,CAAhB;;AACA,UAAI,CAACvxB,OAAL,EAAc;AACZ,eAAO,KAAP;AACD;;AACD,UAAM4kB,IAAI,GAAG,KAAK4R,cAAL,CAAoBjF,YAApB,CAAb;AACA,aAAO,OAAO3M,IAAI,CAAC2P,MAAZ,KAAuB,SAAvB,GAAmC,CAAC3P,IAAI,CAAC2P,MAAzC,GAAkD,CAACv0B,OAAO,CAACu0B,MAAlE;AACD;;;WACD,8BAAqBhD,YAArB,EAAmCrC,OAAnC,EAA4C;AAC1C,UAAMtK,IAAI,GAAG,KAAK4R,cAAL,CAAoBjF,YAApB,CAAb;AACA3M,MAAAA,IAAI,CAAC2P,MAAL,GAAc,CAACrF,OAAf;AACD;;;WACD,8BAAqB7tB,KAArB,EAA4B;AAC1B,WAAKmrD,cAAL,CAAoBnrD,KAApB,IAA6B,CAAC,KAAKmrD,cAAL,CAAoBnrD,KAApB,CAA9B;AACD;;;WACD,2BAAkBA,KAAlB,EAAyB;AACvB,aAAO,CAAC,KAAKmrD,cAAL,CAAoBnrD,KAApB,CAAR;AACD;;;WACD,2BAAkBkwB,YAAlB,EAAgCsC,SAAhC,EAA2C3E,OAA3C,EAAoD;AAClD,UAAMoC,IAAI,GAAGpC,OAAO,GAAG,MAAH,GAAY,MAAhC;AACA,UAAMtK,IAAI,GAAG,KAAK4R,cAAL,CAAoBjF,YAApB,CAAb;;AACA,UAAMxG,KAAK,GAAGnG,IAAI,CAAC7J,UAAL,CAAgBqf,kBAAhB,CAAmC56B,SAAnC,EAA8C8xB,IAA9C,CAAd;;AACA,UAAI,uBAAQuC,SAAR,CAAJ,EAAwB;AACtBjP,QAAAA,IAAI,CAAC/jB,IAAL,CAAUgzB,SAAV,EAAqBU,MAArB,GAA8B,CAACrF,OAA/B;AACA,aAAKtU,MAAL;AACD,OAHD,MAGO;AACL,aAAK81C,oBAAL,CAA0Bn/B,YAA1B,EAAwCrC,OAAxC;AACAnE,QAAAA,KAAK,CAACnQ,MAAN,CAAagK,IAAb,EAAmB;AAACsK,UAAAA,OAAO,EAAPA;AAAD,SAAnB;AACA,aAAKtU,MAAL,CAAY,UAAC+Z,GAAD;AAAA,iBAASA,GAAG,CAACpD,YAAJ,KAAqBA,YAArB,GAAoCD,IAApC,GAA2C9xB,SAApD;AAAA,SAAZ;AACD;AACF;;;WACD,cAAK+xB,YAAL,EAAmBsC,SAAnB,EAA8B;AAC5B,WAAK88B,iBAAL,CAAuBp/B,YAAvB,EAAqCsC,SAArC,EAAgD,KAAhD;AACD;;;WACD,cAAKtC,YAAL,EAAmBsC,SAAnB,EAA8B;AAC5B,WAAK88B,iBAAL,CAAuBp/B,YAAvB,EAAqCsC,SAArC,EAAgD,IAAhD;AACD;;;WACD,6BAAoBtC,YAApB,EAAkC;AAChC,UAAM3M,IAAI,GAAG,KAAKsnC,SAAL,CAAe36B,YAAf,CAAb;;AACA,UAAI3M,IAAI,IAAIA,IAAI,CAAC7J,UAAjB,EAA6B;AAC3B6J,QAAAA,IAAI,CAAC7J,UAAL,CAAgB61C,QAAhB;AACD;;AACD,aAAO,KAAK1E,SAAL,CAAe36B,YAAf,CAAP;AACD;;;WACD,iBAAQ;AACN,UAAItxB,CAAJ,EAAOgxB,IAAP;AACA,WAAKtnB,IAAL;AACA8iB,MAAAA,QAAQ,CAACxS,MAAT,CAAgB,IAAhB;;AACA,WAAKha,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAG,KAAKpwB,IAAL,CAAUvB,QAAV,CAAmBG,MAAtC,EAA8CQ,CAAC,GAAGgxB,IAAlD,EAAwD,EAAEhxB,CAA1D,EAA6D;AAC3D,aAAKkuD,mBAAL,CAAyBluD,CAAzB;AACD;AACF;;;WACD,mBAAU;AACR,WAAKy9C,aAAL,CAAmB,eAAnB;AACA,UAAOtM,MAAP,GAAsB,IAAtB,CAAOA,MAAP;AAAA,UAAezc,GAAf,GAAsB,IAAtB,CAAeA,GAAf;;AACA,WAAKk8B,KAAL;;AACA,WAAKzhC,MAAL,CAAYm6B,UAAZ;;AACA,UAAInY,MAAJ,EAAY;AACV,aAAKye,YAAL;AACA,gCAAYze,MAAZ,EAAoBzc,GAApB;AACA,aAAK20B,QAAL,CAAcwH,cAAd,CAA6Bn8B,GAA7B;AACA,aAAKyc,MAAL,GAAc,IAAd;AACA,aAAKzc,GAAL,GAAW,IAAX;AACD;;AACD,WAAK+oB,aAAL,CAAmB,SAAnB;AACA,aAAOwN,SAAS,CAAC,KAAK1tC,EAAN,CAAhB;AACA,WAAKkgC,aAAL,CAAmB,cAAnB;AACD;;;WACD,yBAAuB;AAAA;;AACrB,aAAO,qBAAKtM,MAAL,EAAY2f,SAAZ,+BAAP;AACD;;;WACD,sBAAa;AACX,WAAKC,cAAL;;AACA,UAAI,KAAKlwD,OAAL,CAAaisD,UAAjB,EAA6B;AAC3B,aAAKkE,oBAAL;AACD,OAFD,MAEO;AACL,aAAKxE,QAAL,GAAgB,IAAhB;AACD;AACF;;;WACD,0BAAiB;AAAA;;AACf,UAAMvhC,SAAS,GAAG,KAAKkhC,UAAvB;AACA,UAAM9C,QAAQ,GAAG,KAAKA,QAAtB;;AACA,UAAM4H,IAAI,GAAG,SAAPA,IAAO,CAACjyD,IAAD,EAAOqrB,QAAP,EAAoB;AAC/Bg/B,QAAAA,QAAQ,CAACpmD,gBAAT,CAA0B,OAA1B,EAAgCjE,IAAhC,EAAsCqrB,QAAtC;AACAY,QAAAA,SAAS,CAACjsB,IAAD,CAAT,GAAkBqrB,QAAlB;AACD,OAHD;;AAIA,UAAMA,QAAQ,GAAG,SAAXA,QAAW,CAAChoB,CAAD,EAAIkL,CAAJ,EAAOC,CAAP,EAAa;AAC5BnL,QAAAA,CAAC,CAACo/B,OAAF,GAAYl0B,CAAZ;AACAlL,QAAAA,CAAC,CAACq/B,OAAF,GAAYl0B,CAAZ;;AACA,eAAI,CAAC6hD,aAAL,CAAmBhtD,CAAnB;AACD,OAJD;;AAKA,6BAAK,KAAKxB,OAAL,CAAa8uD,MAAlB,EAA0B,UAAC3wD,IAAD;AAAA,eAAUiyD,IAAI,CAACjyD,IAAD,EAAOqrB,QAAP,CAAd;AAAA,OAA1B;AACD;;;WACD,gCAAuB;AAAA;;AACrB,UAAI,CAAC,KAAK+hC,oBAAV,EAAgC;AAC9B,aAAKA,oBAAL,GAA4B,EAA5B;AACD;;AACD,UAAMnhC,SAAS,GAAG,KAAKmhC,oBAAvB;AACA,UAAM/C,QAAQ,GAAG,KAAKA,QAAtB;;AACA,UAAM4H,IAAI,GAAG,SAAPA,IAAO,CAACjyD,IAAD,EAAOqrB,QAAP,EAAoB;AAC/Bg/B,QAAAA,QAAQ,CAACpmD,gBAAT,CAA0B,OAA1B,EAAgCjE,IAAhC,EAAsCqrB,QAAtC;AACAY,QAAAA,SAAS,CAACjsB,IAAD,CAAT,GAAkBqrB,QAAlB;AACD,OAHD;;AAIA,UAAM6mC,OAAO,GAAG,SAAVA,OAAU,CAAClyD,IAAD,EAAOqrB,QAAP,EAAoB;AAClC,YAAIY,SAAS,CAACjsB,IAAD,CAAb,EAAqB;AACnBqqD,UAAAA,QAAQ,CAAC/3C,mBAAT,CAA6B,OAA7B,EAAmCtS,IAAnC,EAAyCqrB,QAAzC;AACA,iBAAOY,SAAS,CAACjsB,IAAD,CAAhB;AACD;AACF,OALD;;AAMA,UAAMqrB,QAAQ,GAAG,SAAXA,QAAW,CAAC1mB,KAAD,EAAQD,MAAR,EAAmB;AAClC,YAAI,OAAI,CAACytC,MAAT,EAAiB;AACf,iBAAI,CAACrsC,MAAL,CAAYnB,KAAZ,EAAmBD,MAAnB;AACD;AACF,OAJD;;AAKA,UAAIytD,QAAJ;;AACA,UAAM3E,QAAQ,GAAG,SAAXA,QAAW,GAAM;AACrB0E,QAAAA,OAAO,CAAC,QAAD,EAAW1E,QAAX,CAAP;;AACA,eAAI,CAACA,QAAL,GAAgB,IAAhB;;AACA,eAAI,CAAC1nD,MAAL;;AACAmsD,QAAAA,IAAI,CAAC,QAAD,EAAW5mC,QAAX,CAAJ;;AACA4mC,QAAAA,IAAI,CAAC,QAAD,EAAWE,QAAX,CAAJ;AACD,OAND;;AAOAA,MAAAA,QAAQ,GAAG,oBAAM;AACf,eAAI,CAAC3E,QAAL,GAAgB,KAAhB;;AACA0E,QAAAA,OAAO,CAAC,QAAD,EAAW7mC,QAAX,CAAP;;AACA,eAAI,CAACumC,KAAL;;AACA,eAAI,CAAC5D,OAAL,CAAa,CAAb,EAAgB,CAAhB;;AACAiE,QAAAA,IAAI,CAAC,QAAD,EAAWzE,QAAX,CAAJ;AACD,OAND;;AAOA,UAAInD,QAAQ,CAAC+H,UAAT,CAAoB,KAAKjgB,MAAzB,CAAJ,EAAsC;AACpCqb,QAAAA,QAAQ;AACT,OAFD,MAEO;AACL2E,QAAAA,QAAQ;AACT;AACF;;;WACD,wBAAe;AAAA;;AACb,6BAAK,KAAKhF,UAAV,EAAsB,UAAC9hC,QAAD,EAAWrrB,IAAX,EAAoB;AACxC,eAAI,CAACqqD,QAAL,CAAc/3C,mBAAd,CAAkC,OAAlC,EAAwCtS,IAAxC,EAA8CqrB,QAA9C;AACD,OAFD;AAGA,WAAK8hC,UAAL,GAAkB,EAAlB;AACA,6BAAK,KAAKC,oBAAV,EAAgC,UAAC/hC,QAAD,EAAWrrB,IAAX,EAAoB;AAClD,eAAI,CAACqqD,QAAL,CAAc/3C,mBAAd,CAAkC,OAAlC,EAAwCtS,IAAxC,EAA8CqrB,QAA9C;AACD,OAFD;AAGA,WAAK+hC,oBAAL,GAA4B7sD,SAA5B;AACD;;;WACD,0BAAiB6R,KAAjB,EAAwBigB,IAAxB,EAA8BpwB,OAA9B,EAAuC;AACrC,UAAMowD,MAAM,GAAGpwD,OAAO,GAAG,KAAH,GAAW,QAAjC;AACA,UAAI0jB,IAAJ,EAAU/hB,IAAV,EAAgB5C,CAAhB,EAAmBgxB,IAAnB;;AACA,UAAIK,IAAI,KAAK,SAAb,EAAwB;AACtB1M,QAAAA,IAAI,GAAG,KAAK4R,cAAL,CAAoBnlB,KAAK,CAAC,CAAD,CAAL,CAASkgB,YAA7B,CAAP;AACA3M,QAAAA,IAAI,CAAC7J,UAAL,CAAgB,MAAMu2C,MAAN,GAAe,mBAA/B;AACD;;AACD,WAAKrxD,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAG5f,KAAK,CAAC5R,MAAzB,EAAiCQ,CAAC,GAAGgxB,IAArC,EAA2C,EAAEhxB,CAA7C,EAAgD;AAC9C4C,QAAAA,IAAI,GAAGwO,KAAK,CAACpR,CAAD,CAAZ;AACA,YAAM8a,UAAU,GAAGlY,IAAI,IAAI,KAAK2zB,cAAL,CAAoB3zB,IAAI,CAAC0uB,YAAzB,EAAuCxW,UAAlE;;AACA,YAAIA,UAAJ,EAAgB;AACdA,UAAAA,UAAU,CAACu2C,MAAM,GAAG,YAAV,CAAV,CAAkCzuD,IAAI,CAAC/D,OAAvC,EAAgD+D,IAAI,CAAC0uB,YAArD,EAAmE1uB,IAAI,CAACxB,KAAxE;AACD;AACF;AACF;;;WACD,6BAAoB;AAClB,aAAO,KAAKwqB,OAAL,IAAgB,EAAvB;AACD;;;WACD,2BAAkB0lC,cAAlB,EAAkC;AAAA;;AAChC,UAAMC,UAAU,GAAG,KAAK3lC,OAAL,IAAgB,EAAnC;AACA,UAAMlO,MAAM,GAAG4zC,cAAc,CAACxxD,GAAf,CAAmB,iBAA2B;AAAA,YAAzBwxB,YAAyB,SAAzBA,YAAyB;AAAA,YAAXlwB,KAAW,SAAXA,KAAW;;AAC3D,YAAMujB,IAAI,GAAG,OAAI,CAAC4R,cAAL,CAAoBjF,YAApB,CAAb;;AACA,YAAI,CAAC3M,IAAL,EAAW;AACT,gBAAM,IAAItF,KAAJ,CAAU,+BAA+BiS,YAAzC,CAAN;AACD;;AACD,eAAO;AACLA,UAAAA,YAAY,EAAZA,YADK;AAELzyB,UAAAA,OAAO,EAAE8lB,IAAI,CAAC/jB,IAAL,CAAUQ,KAAV,CAFJ;AAGLA,UAAAA,KAAK,EAALA;AAHK,SAAP;AAKD,OAVc,CAAf;AAWA,UAAMumC,OAAO,GAAG,CAAC,wBAAejqB,MAAf,EAAuB6zC,UAAvB,CAAjB;;AACA,UAAI5pB,OAAJ,EAAa;AACX,aAAK/b,OAAL,GAAelO,MAAf;AACA,aAAKwuC,UAAL,GAAkB,IAAlB;;AACA,aAAKoD,kBAAL,CAAwB5xC,MAAxB,EAAgC6zC,UAAhC;AACD;AACF;;;WACD,uBAAcrL,IAAd,EAAoBpiC,IAApB,EAA0BrG,MAA1B,EAAkC;AAChC,aAAO,KAAK6uC,QAAL,CAAckF,MAAd,CAAqB,IAArB,EAA2BtL,IAA3B,EAAiCpiC,IAAjC,EAAuCrG,MAAvC,CAAP;AACD;;;WACD,4BAAmBC,MAAnB,EAA2B6zC,UAA3B,EAAuCE,MAAvC,EAA+C;AAC7C,UAAMC,YAAY,GAAG,KAAK7wD,OAAL,CAAa8wD,KAAlC;;AACA,UAAMlZ,IAAI,GAAG,SAAPA,IAAO,CAAC91B,CAAD,EAAI7gB,CAAJ;AAAA,eAAU6gB,CAAC,CAAClF,MAAF,CAAS,UAAAlQ,CAAC;AAAA,iBAAI,CAACzL,CAAC,CAAC8gB,IAAF,CAAO,UAAApV,CAAC;AAAA,mBAAID,CAAC,CAAC+jB,YAAF,KAAmB9jB,CAAC,CAAC8jB,YAArB,IAAqC/jB,CAAC,CAACnM,KAAF,KAAYoM,CAAC,CAACpM,KAAvD;AAAA,WAAR,CAAL;AAAA,SAAV,CAAV;AAAA,OAAb;;AACA,UAAMwwD,WAAW,GAAGnZ,IAAI,CAAC8Y,UAAD,EAAa7zC,MAAb,CAAxB;AACA,UAAMm0C,SAAS,GAAGJ,MAAM,GAAG/zC,MAAH,GAAY+6B,IAAI,CAAC/6B,MAAD,EAAS6zC,UAAT,CAAxC;;AACA,UAAIK,WAAW,CAACpyD,MAAhB,EAAwB;AACtB,aAAKsyD,gBAAL,CAAsBF,WAAtB,EAAmCF,YAAY,CAACrgC,IAAhD,EAAsD,KAAtD;AACD;;AACD,UAAIwgC,SAAS,CAACryD,MAAV,IAAoBkyD,YAAY,CAACrgC,IAArC,EAA2C;AACzC,aAAKygC,gBAAL,CAAsBD,SAAtB,EAAiCH,YAAY,CAACrgC,IAA9C,EAAoD,IAApD;AACD;AACF;;;WACD,uBAAchvB,CAAd,EAAiBovD,MAAjB,EAAyB;AAAA;;AACvB,UAAM3tC,IAAI,GAAG;AACX/G,QAAAA,KAAK,EAAE1a,CADI;AAEXovD,QAAAA,MAAM,EAANA,MAFW;AAGXlL,QAAAA,UAAU,EAAE,IAHD;AAIXgF,QAAAA,WAAW,EAAE,uBAAelpD,CAAf,EAAkB,KAAK42B,SAAvB,EAAkC,KAAK0S,WAAvC;AAJF,OAAb;;AAMA,UAAMomB,WAAW,GAAG,SAAdA,WAAc,CAACzL,MAAD;AAAA,eAAY,CAACA,MAAM,CAACzlD,OAAP,CAAe8uD,MAAf,IAAyB,OAAI,CAAC9uD,OAAL,CAAa8uD,MAAvC,EAA+ChiB,QAA/C,CAAwDtrC,CAAC,CAACwwC,MAAF,CAAS7zC,IAAjE,CAAZ;AAAA,OAApB;;AACA,UAAI,KAAKy+C,aAAL,CAAmB,aAAnB,EAAkC35B,IAAlC,EAAwCiuC,WAAxC,MAAyD,KAA7D,EAAoE;AAClE;AACD;;AACD,UAAMpqB,OAAO,GAAG,KAAKqqB,YAAL,CAAkB3vD,CAAlB,EAAqBovD,MAArB,EAA6B3tC,IAAI,CAACynC,WAAlC,CAAhB;;AACAznC,MAAAA,IAAI,CAACyiC,UAAL,GAAkB,KAAlB;AACA,WAAK9I,aAAL,CAAmB,YAAnB,EAAiC35B,IAAjC,EAAuCiuC,WAAvC;;AACA,UAAIpqB,OAAO,IAAI7jB,IAAI,CAAC6jB,OAApB,EAA6B;AAC3B,aAAKh4B,MAAL;AACD;;AACD,aAAO,IAAP;AACD;;;WACD,sBAAatN,CAAb,EAAgBovD,MAAhB,EAAwBlG,WAAxB,EAAqC;AACnC,0BAA4C,IAA5C,CAAO3/B,OAAP;AAAA,UAAgB2lC,UAAhB,8BAA6B,EAA7B;AAAA,UAAiC1wD,OAAjC,GAA4C,IAA5C,CAAiCA,OAAjC;AACA,UAAM6qC,gBAAgB,GAAG+lB,MAAzB;;AACA,UAAM/zC,MAAM,GAAG,KAAKu0C,kBAAL,CAAwB5vD,CAAxB,EAA2BkvD,UAA3B,EAAuChG,WAAvC,EAAoD7f,gBAApD,CAAf;;AACA,UAAM8f,OAAO,GAAG,wBAAcnpD,CAAd,CAAhB;AACA,UAAMipD,SAAS,GAAGD,kBAAkB,CAAChpD,CAAD,EAAI,KAAK6pD,UAAT,EAAqBX,WAArB,EAAkCC,OAAlC,CAApC;;AACA,UAAID,WAAJ,EAAiB;AACf,aAAKW,UAAL,GAAkB,IAAlB;AACA,+BAASrrD,OAAO,CAACqxD,OAAjB,EAA0B,CAAC7vD,CAAD,EAAIqb,MAAJ,EAAY,IAAZ,CAA1B,EAA6C,IAA7C;;AACA,YAAI8tC,OAAJ,EAAa;AACX,iCAAS3qD,OAAO,CAAC4kC,OAAjB,EAA0B,CAACpjC,CAAD,EAAIqb,MAAJ,EAAY,IAAZ,CAA1B,EAA6C,IAA7C;AACD;AACF;;AACD,UAAMiqB,OAAO,GAAG,CAAC,wBAAejqB,MAAf,EAAuB6zC,UAAvB,CAAjB;;AACA,UAAI5pB,OAAO,IAAI8pB,MAAf,EAAuB;AACrB,aAAK7lC,OAAL,GAAelO,MAAf;;AACA,aAAK4xC,kBAAL,CAAwB5xC,MAAxB,EAAgC6zC,UAAhC,EAA4CE,MAA5C;AACD;;AACD,WAAKvF,UAAL,GAAkBZ,SAAlB;AACA,aAAO3jB,OAAP;AACD;;;WACD,4BAAmBtlC,CAAnB,EAAsBkvD,UAAtB,EAAkChG,WAAlC,EAA+C7f,gBAA/C,EAAiE;AAC/D,UAAIrpC,CAAC,CAACrD,IAAF,KAAW,UAAf,EAA2B;AACzB,eAAO,EAAP;AACD;;AACD,UAAI,CAACusD,WAAL,EAAkB;AAChB,eAAOgG,UAAP;AACD;;AACD,UAAMG,YAAY,GAAG,KAAK7wD,OAAL,CAAa8wD,KAAlC;AACA,aAAO,KAAKQ,yBAAL,CAA+B9vD,CAA/B,EAAkCqvD,YAAY,CAACrgC,IAA/C,EAAqDqgC,YAArD,EAAmEhmB,gBAAnE,CAAP;AACD;;;;;;;;AAEH,IAAM0mB,iBAAiB,GAAG,SAApBA,iBAAoB;AAAA,SAAM,uBAAKr1D,KAAK,CAACkuD,SAAX,EAAsB,UAACtqD,KAAD;AAAA,WAAWA,KAAK,CAAC2rD,QAAN,CAAe0C,UAAf,EAAX;AAAA,GAAtB,CAAN;AAAA,CAA1B;;AACA,IAAMqD,UAAU,GAAG,IAAnB;AACAxlD,MAAM,CAACylD,gBAAP,CAAwBv1D,KAAxB,EAA+B;AAC7BmB,EAAAA,QAAQ,EAAE;AACRm0D,IAAAA,UAAU,EAAVA,UADQ;AAERtoD,IAAAA,KAAK,EAAE7L;AAFC,GADmB;AAK7B+sD,EAAAA,SAAS,EAAE;AACToH,IAAAA,UAAU,EAAVA,UADS;AAETtoD,IAAAA,KAAK,EAAEkhD;AAFE,GALkB;AAS7BzqB,EAAAA,SAAS,EAAE;AACT6xB,IAAAA,UAAU,EAAVA,UADS;AAETtoD,IAAAA,KAAK,EAAEy2B;AAFE,GATkB;AAa7BslB,EAAAA,QAAQ,EAAE;AACRuM,IAAAA,UAAU,EAAVA,UADQ;AAERtoD,IAAAA,KAAK,EAAE+7C;AAFC,GAbmB;AAiB7ByE,EAAAA,OAAO,EAAE;AACP8H,IAAAA,UAAU,EAAVA,UADO;AAEPtoD,IAAAA,KAAK,EAAEwgD;AAFA,GAjBoB;AAqB7BW,EAAAA,QAAQ,EAAE;AACRmH,IAAAA,UAAU,EAAVA,UADQ;AAERtoD,IAAAA,KAAK,EAAEmhD;AAFC,GArBmB;AAyB7BluD,EAAAA,QAAQ,EAAE;AACRq1D,IAAAA,UAAU,EAAVA,UADQ;AAERtoD,IAAAA,KAAK,EAAE,iBAAc;AACnB+7C,MAAAA,QAAQ,CAAC7+C,GAAT,OAAA6+C,QAAQ,YAAR;AACAsM,MAAAA,iBAAiB;AAClB;AALO,GAzBmB;AAgC7BG,EAAAA,UAAU,EAAE;AACVF,IAAAA,UAAU,EAAVA,UADU;AAEVtoD,IAAAA,KAAK,EAAE,iBAAc;AACnB+7C,MAAAA,QAAQ,CAAC9rC,MAAT,OAAA8rC,QAAQ,YAAR;AACAsM,MAAAA,iBAAiB;AAClB;AALS;AAhCiB,CAA/B;;AAyCA,SAASI,OAAT,CAAiB99B,GAAjB,EAAsB71B,OAAtB,EAA+BgjC,QAA/B,EAAyC;AACvC,MAAOD,UAAP,GAAkE/iC,OAAlE,CAAO+iC,UAAP;AAAA,MAAmB6wB,WAAnB,GAAkE5zD,OAAlE,CAAmB4zD,WAAnB;AAAA,MAAgCllD,CAAhC,GAAkE1O,OAAlE,CAAgC0O,CAAhC;AAAA,MAAmCC,CAAnC,GAAkE3O,OAAlE,CAAmC2O,CAAnC;AAAA,MAAsCq1B,WAAtC,GAAkEhkC,OAAlE,CAAsCgkC,WAAtC;AAAA,MAAmDD,WAAnD,GAAkE/jC,OAAlE,CAAmD+jC,WAAnD;AACA,MAAI8vB,WAAW,GAAGD,WAAW,GAAG5vB,WAAhC;AACAnO,EAAAA,GAAG,CAACwuB,SAAJ;AACAxuB,EAAAA,GAAG,CAAC+P,GAAJ,CAAQl3B,CAAR,EAAWC,CAAX,EAAcq1B,WAAd,EAA2BjB,UAAU,GAAG8wB,WAAxC,EAAqD7wB,QAAQ,GAAG6wB,WAAhE;;AACA,MAAI9vB,WAAW,GAAG6vB,WAAlB,EAA+B;AAC7BC,IAAAA,WAAW,GAAGD,WAAW,GAAG7vB,WAA5B;AACAlO,IAAAA,GAAG,CAAC+P,GAAJ,CAAQl3B,CAAR,EAAWC,CAAX,EAAco1B,WAAd,EAA2Bf,QAAQ,GAAG6wB,WAAtC,EAAmD9wB,UAAU,GAAG8wB,WAAhE,EAA6E,IAA7E;AACD,GAHD,MAGO;AACLh+B,IAAAA,GAAG,CAAC+P,GAAJ,CAAQl3B,CAAR,EAAWC,CAAX,EAAcilD,WAAd,EAA2B5wB,QAAQ,GAAGY,iBAAtC,EAA+Cb,UAAU,GAAGa,iBAA5D;AACD;;AACD/N,EAAAA,GAAG,CAACi+B,SAAJ;AACAj+B,EAAAA,GAAG,CAACoE,IAAJ;AACD;;AACD,SAAS85B,eAAT,CAAyB7oD,KAAzB,EAAgC;AAC9B,SAAO,wBAAkBA,KAAlB,EAAyB,CAAC,YAAD,EAAe,UAAf,EAA2B,YAA3B,EAAyC,UAAzC,CAAzB,CAAP;AACD;;AACD,SAAS8oD,mBAAT,CAA6BpuB,GAA7B,EAAkC7B,WAAlC,EAA+CC,WAA/C,EAA4DiwB,UAA5D,EAAwE;AACtE,MAAMt4C,CAAC,GAAGo4C,eAAe,CAACnuB,GAAG,CAAC5jC,OAAJ,CAAYkyD,YAAb,CAAzB;AACA,MAAMC,aAAa,GAAG,CAACnwB,WAAW,GAAGD,WAAf,IAA8B,CAApD;AACA,MAAMqwB,UAAU,GAAG1wD,IAAI,CAACyH,GAAL,CAASgpD,aAAT,EAAwBF,UAAU,GAAGlwB,WAAb,GAA2B,CAAnD,CAAnB;;AACA,MAAMswB,iBAAiB,GAAG,SAApBA,iBAAoB,CAACviD,GAAD,EAAS;AACjC,QAAMwiD,aAAa,GAAG,CAACtwB,WAAW,GAAGtgC,IAAI,CAACyH,GAAL,CAASgpD,aAAT,EAAwBriD,GAAxB,CAAf,IAA+CmiD,UAA/C,GAA4D,CAAlF;AACA,WAAO,uBAAYniD,GAAZ,EAAiB,CAAjB,EAAoBpO,IAAI,CAACyH,GAAL,CAASgpD,aAAT,EAAwBG,aAAxB,CAApB,CAAP;AACD,GAHD;;AAIA,SAAO;AACLC,IAAAA,UAAU,EAAEF,iBAAiB,CAAC14C,CAAC,CAAC44C,UAAH,CADxB;AAELC,IAAAA,QAAQ,EAAEH,iBAAiB,CAAC14C,CAAC,CAAC64C,QAAH,CAFtB;AAGLC,IAAAA,UAAU,EAAE,uBAAY94C,CAAC,CAAC84C,UAAd,EAA0B,CAA1B,EAA6BL,UAA7B,CAHP;AAILM,IAAAA,QAAQ,EAAE,uBAAY/4C,CAAC,CAAC+4C,QAAd,EAAwB,CAAxB,EAA2BN,UAA3B;AAJL,GAAP;AAMD;;AACD,SAASO,UAAT,CAAoB7xD,CAApB,EAAuB8xD,KAAvB,EAA8BlmD,CAA9B,EAAiCC,CAAjC,EAAoC;AAClC,SAAO;AACLD,IAAAA,CAAC,EAAEA,CAAC,GAAG5L,CAAC,GAAGY,IAAI,CAACw/B,GAAL,CAAS0xB,KAAT,CADN;AAELjmD,IAAAA,CAAC,EAAEA,CAAC,GAAG7L,CAAC,GAAGY,IAAI,CAAC0/B,GAAL,CAASwxB,KAAT;AAFN,GAAP;AAID;;AACD,SAASC,OAAT,CAAiBh/B,GAAjB,EAAsB71B,OAAtB,EAA+B0J,MAA/B,EAAuC46B,OAAvC,EAAgDlhC,GAAhD,EAAqD;AACnD,MAAOsL,CAAP,GAAoE1O,OAApE,CAAO0O,CAAP;AAAA,MAAUC,CAAV,GAAoE3O,OAApE,CAAU2O,CAAV;AAAA,MAAyBxL,KAAzB,GAAoEnD,OAApE,CAAa+iC,UAAb;AAAA,MAAgC6wB,WAAhC,GAAoE5zD,OAApE,CAAgC4zD,WAAhC;AAAA,MAA0DkB,MAA1D,GAAoE90D,OAApE,CAA6C+jC,WAA7C;AACA,MAAMC,WAAW,GAAGtgC,IAAI,CAAC0H,GAAL,CAASpL,OAAO,CAACgkC,WAAR,GAAsBM,OAAtB,GAAgC56B,MAAhC,GAAyCkqD,WAAlD,EAA+D,CAA/D,CAApB;AACA,MAAM7vB,WAAW,GAAG+wB,MAAM,GAAG,CAAT,GAAaA,MAAM,GAAGxwB,OAAT,GAAmB56B,MAAnB,GAA4BkqD,WAAzC,GAAuD,CAA3E;AACA,MAAImB,aAAa,GAAG,CAApB;AACA,MAAMC,KAAK,GAAG5xD,GAAG,GAAGD,KAApB;;AACA,MAAImhC,OAAJ,EAAa;AACX,QAAM2wB,oBAAoB,GAAGH,MAAM,GAAG,CAAT,GAAaA,MAAM,GAAGxwB,OAAtB,GAAgC,CAA7D;AACA,QAAM4wB,oBAAoB,GAAGlxB,WAAW,GAAG,CAAd,GAAkBA,WAAW,GAAGM,OAAhC,GAA0C,CAAvE;AACA,QAAM6wB,kBAAkB,GAAG,CAACF,oBAAoB,GAAGC,oBAAxB,IAAgD,CAA3E;AACA,QAAME,aAAa,GAAGD,kBAAkB,KAAK,CAAvB,GAA4BH,KAAK,GAAGG,kBAAT,IAAgCA,kBAAkB,GAAG7wB,OAArD,CAA3B,GAA2F0wB,KAAjH;AACAD,IAAAA,aAAa,GAAG,CAACC,KAAK,GAAGI,aAAT,IAA0B,CAA1C;AACD;;AACD,MAAMC,IAAI,GAAG3xD,IAAI,CAAC0H,GAAL,CAAS,KAAT,EAAgB4pD,KAAK,GAAGhxB,WAAR,GAAsBt6B,MAAM,GAAGsF,iBAA/C,IAAqDg1B,WAAlE;AACA,MAAMsxB,WAAW,GAAG,CAACN,KAAK,GAAGK,IAAT,IAAiB,CAArC;AACA,MAAMtyB,UAAU,GAAG5/B,KAAK,GAAGmyD,WAAR,GAAsBP,aAAzC;AACA,MAAM/xB,QAAQ,GAAG5/B,GAAG,GAAGkyD,WAAN,GAAoBP,aAArC;;AACA,4BAAqDf,mBAAmB,CAACh0D,OAAD,EAAU+jC,WAAV,EAAuBC,WAAvB,EAAoChB,QAAQ,GAAGD,UAA/C,CAAxE;AAAA,MAAOwxB,UAAP,uBAAOA,UAAP;AAAA,MAAmBC,QAAnB,uBAAmBA,QAAnB;AAAA,MAA6BC,UAA7B,uBAA6BA,UAA7B;AAAA,MAAyCC,QAAzC,uBAAyCA,QAAzC;;AACA,MAAMa,wBAAwB,GAAGvxB,WAAW,GAAGuwB,UAA/C;AACA,MAAMiB,sBAAsB,GAAGxxB,WAAW,GAAGwwB,QAA7C;AACA,MAAMiB,uBAAuB,GAAG1yB,UAAU,GAAGwxB,UAAU,GAAGgB,wBAA1D;AACA,MAAMG,qBAAqB,GAAG1yB,QAAQ,GAAGwxB,QAAQ,GAAGgB,sBAApD;AACA,MAAMG,wBAAwB,GAAG5xB,WAAW,GAAG0wB,UAA/C;AACA,MAAMmB,sBAAsB,GAAG7xB,WAAW,GAAG2wB,QAA7C;AACA,MAAMmB,uBAAuB,GAAG9yB,UAAU,GAAG0xB,UAAU,GAAGkB,wBAA1D;AACA,MAAMG,qBAAqB,GAAG9yB,QAAQ,GAAG0xB,QAAQ,GAAGkB,sBAApD;AACA//B,EAAAA,GAAG,CAACwuB,SAAJ;AACAxuB,EAAAA,GAAG,CAAC+P,GAAJ,CAAQl3B,CAAR,EAAWC,CAAX,EAAcq1B,WAAd,EAA2ByxB,uBAA3B,EAAoDC,qBAApD;;AACA,MAAIlB,QAAQ,GAAG,CAAf,EAAkB;AAChB,QAAMuB,OAAO,GAAGpB,UAAU,CAACa,sBAAD,EAAyBE,qBAAzB,EAAgDhnD,CAAhD,EAAmDC,CAAnD,CAA1B;AACAknB,IAAAA,GAAG,CAAC+P,GAAJ,CAAQmwB,OAAO,CAACrnD,CAAhB,EAAmBqnD,OAAO,CAACpnD,CAA3B,EAA8B6lD,QAA9B,EAAwCkB,qBAAxC,EAA+D1yB,QAAQ,GAAGY,iBAA1E;AACD;;AACD,MAAMoyB,EAAE,GAAGrB,UAAU,CAACiB,sBAAD,EAAyB5yB,QAAzB,EAAmCt0B,CAAnC,EAAsCC,CAAtC,CAArB;AACAknB,EAAAA,GAAG,CAAC0uB,MAAJ,CAAWyR,EAAE,CAACtnD,CAAd,EAAiBsnD,EAAE,CAACrnD,CAApB;;AACA,MAAI+lD,QAAQ,GAAG,CAAf,EAAkB;AAChB,QAAMqB,QAAO,GAAGpB,UAAU,CAACiB,sBAAD,EAAyBE,qBAAzB,EAAgDpnD,CAAhD,EAAmDC,CAAnD,CAA1B;;AACAknB,IAAAA,GAAG,CAAC+P,GAAJ,CAAQmwB,QAAO,CAACrnD,CAAhB,EAAmBqnD,QAAO,CAACpnD,CAA3B,EAA8B+lD,QAA9B,EAAwC1xB,QAAQ,GAAGY,iBAAnD,EAA4DkyB,qBAAqB,GAAGpyD,IAAI,CAACsL,EAAzF;AACD;;AACD6mB,EAAAA,GAAG,CAAC+P,GAAJ,CAAQl3B,CAAR,EAAWC,CAAX,EAAco1B,WAAd,EAA2Bf,QAAQ,GAAI0xB,QAAQ,GAAG3wB,WAAlD,EAAgEhB,UAAU,GAAI0xB,UAAU,GAAG1wB,WAA3F,EAAyG,IAAzG;;AACA,MAAI0wB,UAAU,GAAG,CAAjB,EAAoB;AAClB,QAAMsB,SAAO,GAAGpB,UAAU,CAACgB,wBAAD,EAA2BE,uBAA3B,EAAoDnnD,CAApD,EAAuDC,CAAvD,CAA1B;;AACAknB,IAAAA,GAAG,CAAC+P,GAAJ,CAAQmwB,SAAO,CAACrnD,CAAhB,EAAmBqnD,SAAO,CAACpnD,CAA3B,EAA8B8lD,UAA9B,EAA0CoB,uBAAuB,GAAGnyD,IAAI,CAACsL,EAAzE,EAA6E+zB,UAAU,GAAGa,iBAA1F;AACD;;AACD,MAAMqyB,EAAE,GAAGtB,UAAU,CAACY,wBAAD,EAA2BxyB,UAA3B,EAAuCr0B,CAAvC,EAA0CC,CAA1C,CAArB;AACAknB,EAAAA,GAAG,CAAC0uB,MAAJ,CAAW0R,EAAE,CAACvnD,CAAd,EAAiBunD,EAAE,CAACtnD,CAApB;;AACA,MAAI4lD,UAAU,GAAG,CAAjB,EAAoB;AAClB,QAAMwB,SAAO,GAAGpB,UAAU,CAACY,wBAAD,EAA2BE,uBAA3B,EAAoD/mD,CAApD,EAAuDC,CAAvD,CAA1B;;AACAknB,IAAAA,GAAG,CAAC+P,GAAJ,CAAQmwB,SAAO,CAACrnD,CAAhB,EAAmBqnD,SAAO,CAACpnD,CAA3B,EAA8B4lD,UAA9B,EAA0CxxB,UAAU,GAAGa,iBAAvD,EAAgE6xB,uBAAhE;AACD;;AACD5/B,EAAAA,GAAG,CAACi+B,SAAJ;AACD;;AACD,SAASoC,OAAT,CAAiBrgC,GAAjB,EAAsB71B,OAAtB,EAA+B0J,MAA/B,EAAuC46B,OAAvC,EAAgD;AAC9C,MAAO6xB,WAAP,GAAiDn2D,OAAjD,CAAOm2D,WAAP;AAAA,MAAoBpzB,UAApB,GAAiD/iC,OAAjD,CAAoB+iC,UAApB;AAAA,MAAgCP,aAAhC,GAAiDxiC,OAAjD,CAAgCwiC,aAAhC;AACA,MAAIQ,QAAQ,GAAGhjC,OAAO,CAACgjC,QAAvB;;AACA,MAAImzB,WAAJ,EAAiB;AACftB,IAAAA,OAAO,CAACh/B,GAAD,EAAM71B,OAAN,EAAe0J,MAAf,EAAuB46B,OAAvB,EAAgCvB,UAAU,GAAGD,iBAA7C,CAAP;;AACA,SAAK,IAAI3hC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGg1D,WAApB,EAAiC,EAAEh1D,CAAnC,EAAsC;AACpC00B,MAAAA,GAAG,CAACuU,IAAJ;AACD;;AACD,QAAI,CAACl4B,KAAK,CAACswB,aAAD,CAAV,EAA2B;AACzBQ,MAAAA,QAAQ,GAAGD,UAAU,GAAGP,aAAa,GAAGM,iBAAxC;;AACA,UAAIN,aAAa,GAAGM,iBAAhB,KAAwB,CAA5B,EAA+B;AAC7BE,QAAAA,QAAQ,IAAIF,iBAAZ;AACD;AACF;AACF;;AACD+xB,EAAAA,OAAO,CAACh/B,GAAD,EAAM71B,OAAN,EAAe0J,MAAf,EAAuB46B,OAAvB,EAAgCtB,QAAhC,CAAP;AACAnN,EAAAA,GAAG,CAACuU,IAAJ;AACA,SAAOpH,QAAP;AACD;;AACD,SAASozB,qBAAT,CAA+BvgC,GAA/B,EAAoC71B,OAApC,EAA6C8F,KAA7C,EAAoD;AAClD,MAAO4I,CAAP,GAAqD1O,OAArD,CAAO0O,CAAP;AAAA,MAAUC,CAAV,GAAqD3O,OAArD,CAAU2O,CAAV;AAAA,MAAao0B,UAAb,GAAqD/iC,OAArD,CAAa+iC,UAAb;AAAA,MAAyB6wB,WAAzB,GAAqD5zD,OAArD,CAAyB4zD,WAAzB;AAAA,MAAsCuC,WAAtC,GAAqDn2D,OAArD,CAAsCm2D,WAAtC;AACA,MAAMnyB,WAAW,GAAGtgC,IAAI,CAAC0H,GAAL,CAASpL,OAAO,CAACgkC,WAAR,GAAsB4vB,WAA/B,EAA4C,CAA5C,CAApB;AACA,MAAM7vB,WAAW,GAAG/jC,OAAO,CAAC+jC,WAAR,GAAsB6vB,WAA1C;AACA,MAAIzyD,CAAJ;;AACA,MAAI2E,KAAJ,EAAW;AACT6tD,IAAAA,OAAO,CAAC99B,GAAD,EAAM71B,OAAN,EAAe+iC,UAAU,GAAGD,iBAA5B,CAAP;AACD;;AACDjN,EAAAA,GAAG,CAACwuB,SAAJ;AACAxuB,EAAAA,GAAG,CAAC+P,GAAJ,CAAQl3B,CAAR,EAAWC,CAAX,EAAco1B,WAAd,EAA2BhB,UAAU,GAAGD,iBAAxC,EAA6CC,UAA7C,EAAyD,IAAzD;;AACA,OAAK5hC,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGg1D,WAAhB,EAA6B,EAAEh1D,CAA/B,EAAkC;AAChC00B,IAAAA,GAAG,CAAC2uB,MAAJ;AACD;;AACD3uB,EAAAA,GAAG,CAACwuB,SAAJ;AACAxuB,EAAAA,GAAG,CAAC+P,GAAJ,CAAQl3B,CAAR,EAAWC,CAAX,EAAcq1B,WAAd,EAA2BjB,UAA3B,EAAuCA,UAAU,GAAGD,iBAApD;;AACA,OAAK3hC,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGg1D,WAAhB,EAA6B,EAAEh1D,CAA/B,EAAkC;AAChC00B,IAAAA,GAAG,CAAC2uB,MAAJ;AACD;AACF;;AACD,SAAS1N,UAAT,CAAoBjhB,GAApB,EAAyB71B,OAAzB,EAAkC0J,MAAlC,EAA0C46B,OAA1C,EAAmDtB,QAAnD,EAA6D;AAC3D,MAAOhhC,OAAP,GAAkBhC,OAAlB,CAAOgC,OAAP;AACA,MAAOgkC,WAAP,GAAuChkC,OAAvC,CAAOgkC,WAAP;AAAA,MAAoBqwB,eAApB,GAAuCr0D,OAAvC,CAAoBq0D,eAApB;AACA,MAAMvwD,KAAK,GAAG9D,OAAO,CAAC+jC,WAAR,KAAwB,OAAtC;;AACA,MAAI,CAACC,WAAL,EAAkB;AAChB;AACD;;AACD,MAAIlgC,KAAJ,EAAW;AACT+vB,IAAAA,GAAG,CAAC8Q,SAAJ,GAAgBX,WAAW,GAAG,CAA9B;AACAnQ,IAAAA,GAAG,CAACygC,QAAJ,GAAeD,eAAe,IAAI,OAAlC;AACD,GAHD,MAGO;AACLxgC,IAAAA,GAAG,CAAC8Q,SAAJ,GAAgBX,WAAhB;AACAnQ,IAAAA,GAAG,CAACygC,QAAJ,GAAeD,eAAe,IAAI,OAAlC;AACD;;AACD,MAAIr2D,OAAO,CAACm2D,WAAZ,EAAyB;AACvBC,IAAAA,qBAAqB,CAACvgC,GAAD,EAAM71B,OAAN,EAAe8F,KAAf,CAArB;AACD;;AACD,MAAIA,KAAJ,EAAW;AACT6tD,IAAAA,OAAO,CAAC99B,GAAD,EAAM71B,OAAN,EAAegjC,QAAf,CAAP;AACD;;AACD6xB,EAAAA,OAAO,CAACh/B,GAAD,EAAM71B,OAAN,EAAe0J,MAAf,EAAuB46B,OAAvB,EAAgCtB,QAAhC,CAAP;AACAnN,EAAAA,GAAG,CAAC2uB,MAAJ;AACD;;IACKpmD;;;;;AACJ,sBAAYowB,GAAZ,EAAiB;AAAA;;AAAA;;AACf;AACA,YAAKxsB,OAAL,GAAetB,SAAf;AACA,YAAK8hC,aAAL,GAAqB9hC,SAArB;AACA,YAAKqiC,UAAL,GAAkBriC,SAAlB;AACA,YAAKsiC,QAAL,GAAgBtiC,SAAhB;AACA,YAAKqjC,WAAL,GAAmBrjC,SAAnB;AACA,YAAKsjC,WAAL,GAAmBtjC,SAAnB;AACA,YAAKkzD,WAAL,GAAmB,CAAnB;AACA,YAAKuC,WAAL,GAAmB,CAAnB;;AACA,QAAI3nC,GAAJ,EAAS;AACP,gDAAoBA,GAApB;AACD;;AAZc;AAahB;;;;WACD,iBAAQ+nC,MAAR,EAAgBC,MAAhB,EAAwB3pB,gBAAxB,EAA0C;AACxC,UAAM5K,KAAK,GAAG,KAAKiL,QAAL,CAAc,CAAC,GAAD,EAAM,GAAN,CAAd,EAA0BL,gBAA1B,CAAd;;AACA,gCAA0B,uBAAkB5K,KAAlB,EAAyB;AAACvzB,QAAAA,CAAC,EAAE6nD,MAAJ;AAAY5nD,QAAAA,CAAC,EAAE6nD;AAAf,OAAzB,CAA1B;AAAA,UAAOhzB,KAAP,uBAAOA,KAAP;AAAA,UAAc7mB,QAAd,uBAAcA,QAAd;;AACA,4BAAwE,KAAKuwB,QAAL,CAAc,CACpF,YADoF,EAEpF,UAFoF,EAGpF,aAHoF,EAIpF,aAJoF,EAKpF,eALoF,CAAd,EAMrEL,gBANqE,CAAxE;AAAA,UAAO9J,UAAP,mBAAOA,UAAP;AAAA,UAAmBC,QAAnB,mBAAmBA,QAAnB;AAAA,UAA6Be,WAA7B,mBAA6BA,WAA7B;AAAA,UAA0CC,WAA1C,mBAA0CA,WAA1C;AAAA,UAAuDxB,aAAvD,mBAAuDA,aAAvD;;AAOA,UAAMi0B,OAAO,GAAG,KAAKz0D,OAAL,CAAasiC,OAAb,GAAuB,CAAvC;;AACA,UAAMqB,cAAc,GAAG,uBAAenD,aAAf,EAA8BQ,QAAQ,GAAGD,UAAzC,CAAvB;;AACA,UAAM2zB,aAAa,GAAG/wB,cAAc,IAAI7C,iBAAlB,IAAyB,uBAAcU,KAAd,EAAqBT,UAArB,EAAiCC,QAAjC,CAA/C;AACA,UAAM2zB,YAAY,GAAG,wBAAWh6C,QAAX,EAAqBonB,WAAW,GAAG0yB,OAAnC,EAA4CzyB,WAAW,GAAGyyB,OAA1D,CAArB;AACA,aAAQC,aAAa,IAAIC,YAAzB;AACD;;;WACD,wBAAe9pB,gBAAf,EAAiC;AAC/B,4BAA+D,KAAKK,QAAL,CAAc,CAC3E,GAD2E,EAE3E,GAF2E,EAG3E,YAH2E,EAI3E,UAJ2E,EAK3E,aAL2E,EAM3E,aAN2E,EAO3E,eAP2E,CAAd,EAQ5DL,gBAR4D,CAA/D;AAAA,UAAOn+B,CAAP,mBAAOA,CAAP;AAAA,UAAUC,CAAV,mBAAUA,CAAV;AAAA,UAAao0B,UAAb,mBAAaA,UAAb;AAAA,UAAyBC,QAAzB,mBAAyBA,QAAzB;AAAA,UAAmCe,WAAnC,mBAAmCA,WAAnC;AAAA,UAAgDC,WAAhD,mBAAgDA,WAAhD;;AASA,4BAA0B,KAAKhiC,OAA/B;AAAA,UAAO0H,MAAP,mBAAOA,MAAP;AAAA,UAAe46B,OAAf,mBAAeA,OAAf;AACA,UAAMsyB,SAAS,GAAG,CAAC7zB,UAAU,GAAGC,QAAd,IAA0B,CAA5C;AACA,UAAM6zB,UAAU,GAAG,CAAC9yB,WAAW,GAAGC,WAAd,GAA4BM,OAA5B,GAAsC56B,MAAvC,IAAiD,CAApE;AACA,aAAO;AACLgF,QAAAA,CAAC,EAAEA,CAAC,GAAGhL,IAAI,CAACw/B,GAAL,CAAS0zB,SAAT,IAAsBC,UADxB;AAELloD,QAAAA,CAAC,EAAEA,CAAC,GAAGjL,IAAI,CAAC0/B,GAAL,CAASwzB,SAAT,IAAsBC;AAFxB,OAAP;AAID;;;WACD,yBAAgBhqB,gBAAhB,EAAkC;AAChC,aAAO,KAAKS,cAAL,CAAoBT,gBAApB,CAAP;AACD;;;WACD,cAAKhX,GAAL,EAAU;AACR,UAAO7zB,OAAP,GAAiC,IAAjC,CAAOA,OAAP;AAAA,UAAgBwgC,aAAhB,GAAiC,IAAjC,CAAgBA,aAAhB;AACA,UAAM94B,MAAM,GAAG,CAAC1H,OAAO,CAAC0H,MAAR,IAAkB,CAAnB,IAAwB,CAAvC;AACA,UAAM46B,OAAO,GAAG,CAACtiC,OAAO,CAACsiC,OAAR,IAAmB,CAApB,IAAyB,CAAzC;AACA,WAAKsvB,WAAL,GAAoB5xD,OAAO,CAAC+jC,WAAR,KAAwB,OAAzB,GAAoC,IAApC,GAA2C,CAA9D;AACA,WAAKowB,WAAL,GAAmB3zB,aAAa,GAAGM,iBAAhB,GAAsBp/B,IAAI,CAACC,KAAL,CAAW6+B,aAAa,GAAGM,iBAA3B,CAAtB,GAAwD,CAA3E;;AACA,UAAIN,aAAa,KAAK,CAAlB,IAAuB,KAAKuB,WAAL,GAAmB,CAA1C,IAA+C,KAAKC,WAAL,GAAmB,CAAtE,EAAyE;AACvE;AACD;;AACDnO,MAAAA,GAAG,CAAC8tB,IAAJ;AACA,UAAImT,YAAY,GAAG,CAAnB;;AACA,UAAIptD,MAAJ,EAAY;AACVotD,QAAAA,YAAY,GAAGptD,MAAM,GAAG,CAAxB;AACA,YAAMktD,SAAS,GAAG,CAAC,KAAK7zB,UAAL,GAAkB,KAAKC,QAAxB,IAAoC,CAAtD;AACAnN,QAAAA,GAAG,CAACkhC,SAAJ,CAAcrzD,IAAI,CAACw/B,GAAL,CAAS0zB,SAAT,IAAsBE,YAApC,EAAkDpzD,IAAI,CAAC0/B,GAAL,CAASwzB,SAAT,IAAsBE,YAAxE;;AACA,YAAI,KAAKt0B,aAAL,IAAsBxzB,iBAA1B,EAA8B;AAC5B8nD,UAAAA,YAAY,GAAGptD,MAAf;AACD;AACF;;AACDmsB,MAAAA,GAAG,CAAC2Q,SAAJ,GAAgBxkC,OAAO,CAACP,eAAxB;AACAo0B,MAAAA,GAAG,CAAC4Q,WAAJ,GAAkBzkC,OAAO,CAAC0kC,WAA1B;AACA,UAAM1D,QAAQ,GAAGkzB,OAAO,CAACrgC,GAAD,EAAM,IAAN,EAAYihC,YAAZ,EAA0BxyB,OAA1B,CAAxB;AACAwS,MAAAA,UAAU,CAACjhB,GAAD,EAAM,IAAN,EAAYihC,YAAZ,EAA0BxyB,OAA1B,EAAmCtB,QAAnC,CAAV;AACAnN,MAAAA,GAAG,CAACguB,OAAJ;AACD;;;;EA5EsBjO;;;AA8EzBx3C,UAAU,CAACsgB,EAAX,GAAgB,KAAhB;AACAtgB,UAAU,CAACiB,QAAX,GAAsB;AACpB0mC,EAAAA,WAAW,EAAE,QADO;AAEpBW,EAAAA,WAAW,EAAE,MAFO;AAGpB2vB,EAAAA,eAAe,EAAE31D,SAHG;AAIpBwzD,EAAAA,YAAY,EAAE,CAJM;AAKpBluB,EAAAA,WAAW,EAAE,CALO;AAMpBt8B,EAAAA,MAAM,EAAE,CANY;AAOpB46B,EAAAA,OAAO,EAAE,CAPW;AAQpBd,EAAAA,KAAK,EAAE9iC;AARa,CAAtB;AAUAtC,UAAU,CAAC03C,aAAX,GAA2B;AACzBr0C,EAAAA,eAAe,EAAE;AADQ,CAA3B;;AAIA,SAASu1D,QAAT,CAAkBnhC,GAAlB,EAAuB7zB,OAAvB,EAAiD;AAAA,MAAjB+C,KAAiB,uEAAT/C,OAAS;AAC/C6zB,EAAAA,GAAG,CAACohC,OAAJ,GAAc,uBAAelyD,KAAK,CAACmyD,cAArB,EAAqCl1D,OAAO,CAACk1D,cAA7C,CAAd;AACArhC,EAAAA,GAAG,CAACsuB,WAAJ,CAAgB,uBAAep/C,KAAK,CAACoyC,UAArB,EAAiCn1C,OAAO,CAACm1C,UAAzC,CAAhB;AACAthB,EAAAA,GAAG,CAACuuB,cAAJ,GAAqB,uBAAer/C,KAAK,CAACqyC,gBAArB,EAAuCp1C,OAAO,CAACo1C,gBAA/C,CAArB;AACAvhB,EAAAA,GAAG,CAACygC,QAAJ,GAAe,uBAAevxD,KAAK,CAACsxD,eAArB,EAAsCr0D,OAAO,CAACq0D,eAA9C,CAAf;AACAxgC,EAAAA,GAAG,CAAC8Q,SAAJ,GAAgB,uBAAe5hC,KAAK,CAACihC,WAArB,EAAkChkC,OAAO,CAACgkC,WAA1C,CAAhB;AACAnQ,EAAAA,GAAG,CAAC4Q,WAAJ,GAAkB,uBAAe1hC,KAAK,CAAC2hC,WAArB,EAAkC1kC,OAAO,CAAC0kC,WAA1C,CAAlB;AACD;;AACD,SAAS6d,MAAT,CAAgB1uB,GAAhB,EAAqBshC,QAArB,EAA+BnhD,MAA/B,EAAuC;AACrC6f,EAAAA,GAAG,CAAC0uB,MAAJ,CAAWvuC,MAAM,CAACtH,CAAlB,EAAqBsH,MAAM,CAACrH,CAA5B;AACD;;AACD,SAASyoD,aAAT,CAAuBp1D,OAAvB,EAAgC;AAC9B,MAAIA,OAAO,CAACq1D,OAAZ,EAAqB;AACnB,WAAOC,kBAAP;AACD;;AACD,MAAIt1D,OAAO,CAACu1D,OAAR,IAAmBv1D,OAAO,CAACw1D,sBAAR,KAAmC,UAA1D,EAAsE;AACpE,WAAOC,kBAAP;AACD;;AACD,SAAOlT,MAAP;AACD;;AACD,SAASmT,QAAT,CAAkB11B,MAAlB,EAA0B2F,OAA1B,EAAgD;AAAA,MAAbuH,MAAa,uEAAJ,EAAI;AAC9C,MAAM5rC,KAAK,GAAG0+B,MAAM,CAACrhC,MAArB;AACA,sBAA6DuuC,MAA7D,CAAO/rC,KAAP;AAAA,MAAcw0D,WAAd,8BAA4B,CAA5B;AAAA,oBAA6DzoB,MAA7D,CAA+B9rC,GAA/B;AAAA,MAAoCw0D,SAApC,4BAAgDt0D,KAAK,GAAG,CAAxD;AACA,MAAcu0D,YAAd,GAA+ClwB,OAA/C,CAAOxkC,KAAP;AAAA,MAAiC20D,UAAjC,GAA+CnwB,OAA/C,CAA4BvkC,GAA5B;AACA,MAAMD,KAAK,GAAGO,IAAI,CAAC0H,GAAL,CAASusD,WAAT,EAAsBE,YAAtB,CAAd;AACA,MAAMz0D,GAAG,GAAGM,IAAI,CAACyH,GAAL,CAASysD,SAAT,EAAoBE,UAApB,CAAZ;AACA,MAAMC,OAAO,GAAGJ,WAAW,GAAGE,YAAd,IAA8BD,SAAS,GAAGC,YAA1C,IAA0DF,WAAW,GAAGG,UAAd,IAA4BF,SAAS,GAAGE,UAAlH;AACA,SAAO;AACLx0D,IAAAA,KAAK,EAALA,KADK;AAELH,IAAAA,KAAK,EAALA,KAFK;AAGL8D,IAAAA,IAAI,EAAE0gC,OAAO,CAAC1gC,IAHT;AAILkrB,IAAAA,IAAI,EAAE/uB,GAAG,GAAGD,KAAN,IAAe,CAAC40D,OAAhB,GAA0Bz0D,KAAK,GAAGF,GAAR,GAAcD,KAAxC,GAAgDC,GAAG,GAAGD;AAJvD,GAAP;AAMD;;AACD,SAAS60D,WAAT,CAAqBniC,GAArB,EAA0BsR,IAA1B,EAAgCQ,OAAhC,EAAyCuH,MAAzC,EAAiD;AAC/C,MAAOlN,MAAP,GAA0BmF,IAA1B,CAAOnF,MAAP;AAAA,MAAehgC,OAAf,GAA0BmlC,IAA1B,CAAenlC,OAAf;;AACA,kBAAmC01D,QAAQ,CAAC11B,MAAD,EAAS2F,OAAT,EAAkBuH,MAAlB,CAA3C;AAAA,MAAO5rC,KAAP,aAAOA,KAAP;AAAA,MAAcH,KAAd,aAAcA,KAAd;AAAA,MAAqB8D,IAArB,aAAqBA,IAArB;AAAA,MAA2BkrB,IAA3B,aAA2BA,IAA3B;;AACA,MAAM8lC,UAAU,GAAGb,aAAa,CAACp1D,OAAD,CAAhC;;AACA,cAA6BktC,MAAM,IAAI,EAAvC;AAAA,yBAAKlT,IAAL;AAAA,MAAKA,IAAL,2BAAY,IAAZ;AAAA,MAAkBxK,OAAlB,SAAkBA,OAAlB;;AACA,MAAIrwB,CAAJ,EAAO8gC,KAAP,EAAcrJ,IAAd;;AACA,OAAKz3B,CAAC,GAAG,CAAT,EAAYA,CAAC,IAAIgxB,IAAjB,EAAuB,EAAEhxB,CAAzB,EAA4B;AAC1B8gC,IAAAA,KAAK,GAAGD,MAAM,CAAC,CAAC7+B,KAAK,IAAIquB,OAAO,GAAGW,IAAI,GAAGhxB,CAAV,GAAcA,CAAzB,CAAN,IAAqCmC,KAAtC,CAAd;;AACA,QAAI2+B,KAAK,CAACI,IAAV,EAAgB;AACd;AACD,KAFD,MAEO,IAAIrG,IAAJ,EAAU;AACfnG,MAAAA,GAAG,CAACyuB,MAAJ,CAAWriB,KAAK,CAACvzB,CAAjB,EAAoBuzB,KAAK,CAACtzB,CAA1B;AACAqtB,MAAAA,IAAI,GAAG,KAAP;AACD,KAHM,MAGA;AACLi8B,MAAAA,UAAU,CAACpiC,GAAD,EAAM+C,IAAN,EAAYqJ,KAAZ,EAAmBzQ,OAAnB,EAA4BxvB,OAAO,CAACq1D,OAApC,CAAV;AACD;;AACDz+B,IAAAA,IAAI,GAAGqJ,KAAP;AACD;;AACD,MAAIh7B,IAAJ,EAAU;AACRg7B,IAAAA,KAAK,GAAGD,MAAM,CAAC,CAAC7+B,KAAK,IAAIquB,OAAO,GAAGW,IAAH,GAAU,CAArB,CAAN,IAAiC7uB,KAAlC,CAAd;AACA20D,IAAAA,UAAU,CAACpiC,GAAD,EAAM+C,IAAN,EAAYqJ,KAAZ,EAAmBzQ,OAAnB,EAA4BxvB,OAAO,CAACq1D,OAApC,CAAV;AACD;;AACD,SAAO,CAAC,CAACpwD,IAAT;AACD;;AACD,SAASixD,eAAT,CAAyBriC,GAAzB,EAA8BsR,IAA9B,EAAoCQ,OAApC,EAA6CuH,MAA7C,EAAqD;AACnD,MAAMlN,MAAM,GAAGmF,IAAI,CAACnF,MAApB;;AACA,mBAA6B01B,QAAQ,CAAC11B,MAAD,EAAS2F,OAAT,EAAkBuH,MAAlB,CAArC;AAAA,MAAO5rC,KAAP,cAAOA,KAAP;AAAA,MAAcH,KAAd,cAAcA,KAAd;AAAA,MAAqBgvB,IAArB,cAAqBA,IAArB;;AACA,cAA+B+c,MAAM,IAAI,EAAzC;AAAA,yBAAOlT,IAAP;AAAA,MAAOA,IAAP,2BAAc,IAAd;AAAA,MAAoBxK,OAApB,SAAoBA,OAApB;;AACA,MAAI2mC,IAAI,GAAG,CAAX;AACA,MAAIC,MAAM,GAAG,CAAb;AACA,MAAIj3D,CAAJ,EAAO8gC,KAAP,EAAco2B,KAAd,EAAqBv0B,IAArB,EAA2BH,IAA3B,EAAiC20B,KAAjC;;AACA,MAAMC,UAAU,GAAG,SAAbA,UAAa,CAACh2D,KAAD;AAAA,WAAW,CAACY,KAAK,IAAIquB,OAAO,GAAGW,IAAI,GAAG5vB,KAAV,GAAkBA,KAA7B,CAAN,IAA6Ce,KAAxD;AAAA,GAAnB;;AACA,MAAMk1D,KAAK,GAAG,SAARA,KAAQ,GAAM;AAClB,QAAI10B,IAAI,KAAKH,IAAb,EAAmB;AACjB9N,MAAAA,GAAG,CAAC0uB,MAAJ,CAAW4T,IAAX,EAAiBx0B,IAAjB;AACA9N,MAAAA,GAAG,CAAC0uB,MAAJ,CAAW4T,IAAX,EAAiBr0B,IAAjB;AACAjO,MAAAA,GAAG,CAAC0uB,MAAJ,CAAW4T,IAAX,EAAiBG,KAAjB;AACD;AACF,GAND;;AAOA,MAAIt8B,IAAJ,EAAU;AACRiG,IAAAA,KAAK,GAAGD,MAAM,CAACu2B,UAAU,CAAC,CAAD,CAAX,CAAd;AACA1iC,IAAAA,GAAG,CAACyuB,MAAJ,CAAWriB,KAAK,CAACvzB,CAAjB,EAAoBuzB,KAAK,CAACtzB,CAA1B;AACD;;AACD,OAAKxN,CAAC,GAAG,CAAT,EAAYA,CAAC,IAAIgxB,IAAjB,EAAuB,EAAEhxB,CAAzB,EAA4B;AAC1B8gC,IAAAA,KAAK,GAAGD,MAAM,CAACu2B,UAAU,CAACp3D,CAAD,CAAX,CAAd;;AACA,QAAI8gC,KAAK,CAACI,IAAV,EAAgB;AACd;AACD;;AACD,QAAM3zB,CAAC,GAAGuzB,KAAK,CAACvzB,CAAhB;AACA,QAAMC,CAAC,GAAGszB,KAAK,CAACtzB,CAAhB;AACA,QAAM8pD,MAAM,GAAG/pD,CAAC,GAAG,CAAnB;;AACA,QAAI+pD,MAAM,KAAKJ,KAAf,EAAsB;AACpB,UAAI1pD,CAAC,GAAGm1B,IAAR,EAAc;AACZA,QAAAA,IAAI,GAAGn1B,CAAP;AACD,OAFD,MAEO,IAAIA,CAAC,GAAGg1B,IAAR,EAAc;AACnBA,QAAAA,IAAI,GAAGh1B,CAAP;AACD;;AACDwpD,MAAAA,IAAI,GAAG,CAACC,MAAM,GAAGD,IAAT,GAAgBzpD,CAAjB,IAAsB,EAAE0pD,MAA/B;AACD,KAPD,MAOO;AACLI,MAAAA,KAAK;AACL3iC,MAAAA,GAAG,CAAC0uB,MAAJ,CAAW71C,CAAX,EAAcC,CAAd;AACA0pD,MAAAA,KAAK,GAAGI,MAAR;AACAL,MAAAA,MAAM,GAAG,CAAT;AACAt0B,MAAAA,IAAI,GAAGH,IAAI,GAAGh1B,CAAd;AACD;;AACD2pD,IAAAA,KAAK,GAAG3pD,CAAR;AACD;;AACD6pD,EAAAA,KAAK;AACN;;AACD,SAASE,iBAAT,CAA2BvxB,IAA3B,EAAiC;AAC/B,MAAM17B,IAAI,GAAG07B,IAAI,CAACnlC,OAAlB;AACA,MAAMm1C,UAAU,GAAG1rC,IAAI,CAAC0rC,UAAL,IAAmB1rC,IAAI,CAAC0rC,UAAL,CAAgBx2C,MAAtD;AACA,MAAMg4D,WAAW,GAAG,CAACxxB,IAAI,CAACM,UAAN,IAAoB,CAACN,IAAI,CAACnY,KAA1B,IAAmC,CAACvjB,IAAI,CAAC8rD,OAAzC,IAAoD9rD,IAAI,CAAC+rD,sBAAL,KAAgC,UAApF,IAAkG,CAAC/rD,IAAI,CAAC4rD,OAAxG,IAAmH,CAAClgB,UAAxI;AACA,SAAOwhB,WAAW,GAAGT,eAAH,GAAqBF,WAAvC;AACD;;AACD,SAASY,uBAAT,CAAiC52D,OAAjC,EAA0C;AACxC,MAAIA,OAAO,CAACq1D,OAAZ,EAAqB;AACnB,WAAOwB,kBAAP;AACD;;AACD,MAAI72D,OAAO,CAACu1D,OAAR,IAAmBv1D,OAAO,CAACw1D,sBAAR,KAAmC,UAA1D,EAAsE;AACpE,WAAOsB,kBAAP;AACD;;AACD,SAAOC,kBAAP;AACD;;AACD,SAASC,mBAAT,CAA6BnjC,GAA7B,EAAkCsR,IAAlC,EAAwChkC,KAAxC,EAA+CG,KAA/C,EAAsD;AACpD,MAAIujB,IAAI,GAAGsgB,IAAI,CAAC8xB,KAAhB;;AACA,MAAI,CAACpyC,IAAL,EAAW;AACTA,IAAAA,IAAI,GAAGsgB,IAAI,CAAC8xB,KAAL,GAAa,IAAIC,MAAJ,EAApB;;AACA,QAAI/xB,IAAI,CAACtgB,IAAL,CAAUA,IAAV,EAAgB1jB,KAAhB,EAAuBG,KAAvB,CAAJ,EAAmC;AACjCujB,MAAAA,IAAI,CAACitC,SAAL;AACD;AACF;;AACDkD,EAAAA,QAAQ,CAACnhC,GAAD,EAAMsR,IAAI,CAACnlC,OAAX,CAAR;AACA6zB,EAAAA,GAAG,CAAC2uB,MAAJ,CAAW39B,IAAX;AACD;;AACD,SAASsyC,gBAAT,CAA0BtjC,GAA1B,EAA+BsR,IAA/B,EAAqChkC,KAArC,EAA4CG,KAA5C,EAAmD;AACjD,MAAO81D,QAAP,GAA4BjyB,IAA5B,CAAOiyB,QAAP;AAAA,MAAiBp3D,OAAjB,GAA4BmlC,IAA5B,CAAiBnlC,OAAjB;;AACA,MAAMq3D,aAAa,GAAGX,iBAAiB,CAACvxB,IAAD,CAAvC;;AAFiD,+CAG3BiyB,QAH2B;AAAA;;AAAA;AAGjD,8DAAgC;AAAA,UAArBzxB,OAAqB;AAC9BqvB,MAAAA,QAAQ,CAACnhC,GAAD,EAAM7zB,OAAN,EAAe2lC,OAAO,CAAC5iC,KAAvB,CAAR;AACA8wB,MAAAA,GAAG,CAACwuB,SAAJ;;AACA,UAAIgV,aAAa,CAACxjC,GAAD,EAAMsR,IAAN,EAAYQ,OAAZ,EAAqB;AAACxkC,QAAAA,KAAK,EAALA,KAAD;AAAQC,QAAAA,GAAG,EAAED,KAAK,GAAGG,KAAR,GAAgB;AAA7B,OAArB,CAAjB,EAAwE;AACtEuyB,QAAAA,GAAG,CAACi+B,SAAJ;AACD;;AACDj+B,MAAAA,GAAG,CAAC2uB,MAAJ;AACD;AAVgD;AAAA;AAAA;AAAA;AAAA;AAWlD;;AACD,IAAM8U,SAAS,GAAG,OAAOJ,MAAP,KAAkB,UAApC;;AACA,SAASpsC,KAAT,CAAc+I,GAAd,EAAmBsR,IAAnB,EAAyBhkC,KAAzB,EAAgCG,KAAhC,EAAuC;AACrC,MAAIg2D,SAAS,IAAI,CAACnyB,IAAI,CAACnlC,OAAL,CAAa2lC,OAA/B,EAAwC;AACtCqxB,IAAAA,mBAAmB,CAACnjC,GAAD,EAAMsR,IAAN,EAAYhkC,KAAZ,EAAmBG,KAAnB,CAAnB;AACD,GAFD,MAEO;AACL61D,IAAAA,gBAAgB,CAACtjC,GAAD,EAAMsR,IAAN,EAAYhkC,KAAZ,EAAmBG,KAAnB,CAAhB;AACD;AACF;;IACK3E;;;;;AACJ,uBAAY6vB,GAAZ,EAAiB;AAAA;;AAAA;;AACf;AACA,YAAKoZ,QAAL,GAAgB,IAAhB;AACA,YAAK5lC,OAAL,GAAetB,SAAf;AACA,YAAK6vB,MAAL,GAAc7vB,SAAd;AACA,YAAKsuB,KAAL,GAAatuB,SAAb;AACA,YAAKupC,SAAL,GAAiBvpC,SAAjB;AACA,YAAKu4D,KAAL,GAAav4D,SAAb;AACA,YAAK64D,OAAL,GAAe74D,SAAf;AACA,YAAK84D,SAAL,GAAiB94D,SAAjB;AACA,YAAK+mC,UAAL,GAAkB,KAAlB;AACA,YAAKgyB,cAAL,GAAsB,KAAtB;AACA,YAAKjyB,aAAL,GAAqB9mC,SAArB;;AACA,QAAI8tB,GAAJ,EAAS;AACP,gDAAoBA,GAApB;AACD;;AAfc;AAgBhB;;;;WACD,6BAAoB4L,SAApB,EAA+BjD,SAA/B,EAA0C;AACxC,UAAMn1B,OAAO,GAAG,KAAKA,OAArB;;AACA,UAAI,CAACA,OAAO,CAACu1D,OAAR,IAAmBv1D,OAAO,CAACw1D,sBAAR,KAAmC,UAAvD,KAAsE,CAACx1D,OAAO,CAACq1D,OAA/E,IAA0F,CAAC,KAAKoC,cAApG,EAAoH;AAClH,YAAMxyD,IAAI,GAAGjF,OAAO,CAAC6lC,QAAR,GAAmB,KAAK7Y,KAAxB,GAAgC,KAAKib,SAAlD;AACA,gCAA2B,KAAKsvB,OAAhC,EAAyCv3D,OAAzC,EAAkDo4B,SAAlD,EAA6DnzB,IAA7D,EAAmEkwB,SAAnE;AACA,aAAKsiC,cAAL,GAAsB,IAAtB;AACD;AACF;;;SAOD,eAAa;AACX,aAAO,KAAKF,OAAZ;AACD;SARD,aAAWv3B,MAAX,EAAmB;AACjB,WAAKu3B,OAAL,GAAev3B,MAAf;AACA,aAAO,KAAKw3B,SAAZ;AACA,aAAO,KAAKP,KAAZ;AACA,WAAKQ,cAAL,GAAsB,KAAtB;AACD;;;SAID,eAAe;AACb,aAAO,KAAKD,SAAL,KAAmB,KAAKA,SAAL,GAAiB,wBAAiB,IAAjB,EAAuB,KAAKx3D,OAAL,CAAa2lC,OAApC,CAApC,CAAP;AACD;;;WACD,iBAAQ;AACN,UAAMyxB,QAAQ,GAAG,KAAKA,QAAtB;AACA,UAAMp3B,MAAM,GAAG,KAAKA,MAApB;AACA,aAAOo3B,QAAQ,CAACz4D,MAAT,IAAmBqhC,MAAM,CAACo3B,QAAQ,CAAC,CAAD,CAAR,CAAYj2D,KAAb,CAAhC;AACD;;;WACD,gBAAO;AACL,UAAMi2D,QAAQ,GAAG,KAAKA,QAAtB;AACA,UAAMp3B,MAAM,GAAG,KAAKA,MAApB;AACA,UAAM1+B,KAAK,GAAG81D,QAAQ,CAACz4D,MAAvB;AACA,aAAO2C,KAAK,IAAI0+B,MAAM,CAACo3B,QAAQ,CAAC91D,KAAK,GAAG,CAAT,CAAR,CAAoBF,GAArB,CAAtB;AACD;;;WACD,qBAAY6+B,KAAZ,EAAmB4jB,QAAnB,EAA6B;AAC3B,UAAM7jD,OAAO,GAAG,KAAKA,OAArB;AACA,UAAMkJ,KAAK,GAAG+2B,KAAK,CAAC4jB,QAAD,CAAnB;AACA,UAAM7jB,MAAM,GAAG,KAAKA,MAApB;AACA,UAAMo3B,QAAQ,GAAG,wBAAe,IAAf,EAAqB;AAACvT,QAAAA,QAAQ,EAARA,QAAD;AAAW1iD,QAAAA,KAAK,EAAE+H,KAAlB;AAAyB9H,QAAAA,GAAG,EAAE8H;AAA9B,OAArB,CAAjB;;AACA,UAAI,CAACkuD,QAAQ,CAACz4D,MAAd,EAAsB;AACpB;AACD;;AACD,UAAM2pB,MAAM,GAAG,EAAf;;AACA,UAAMovC,YAAY,GAAGd,uBAAuB,CAAC52D,OAAD,CAA5C;;AACA,UAAIb,CAAJ,EAAOgxB,IAAP;;AACA,WAAKhxB,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAGinC,QAAQ,CAACz4D,MAA5B,EAAoCQ,CAAC,GAAGgxB,IAAxC,EAA8C,EAAEhxB,CAAhD,EAAmD;AACjD,0BAAqBi4D,QAAQ,CAACj4D,CAAD,CAA7B;AAAA,YAAOgC,KAAP,eAAOA,KAAP;AAAA,YAAcC,GAAd,eAAcA,GAAd;AACA,YAAM6gD,EAAE,GAAGjiB,MAAM,CAAC7+B,KAAD,CAAjB;AACA,YAAM+gD,EAAE,GAAGliB,MAAM,CAAC5+B,GAAD,CAAjB;;AACA,YAAI6gD,EAAE,KAAKC,EAAX,EAAe;AACb55B,UAAAA,MAAM,CAACpnB,IAAP,CAAY+gD,EAAZ;AACA;AACD;;AACD,YAAMl5B,CAAC,GAAGrnB,IAAI,CAACs5B,GAAL,CAAS,CAAC9xB,KAAK,GAAG+4C,EAAE,CAAC4B,QAAD,CAAX,KAA0B3B,EAAE,CAAC2B,QAAD,CAAF,GAAe5B,EAAE,CAAC4B,QAAD,CAA3C,CAAT,CAAV;;AACA,YAAM8T,YAAY,GAAGD,YAAY,CAACzV,EAAD,EAAKC,EAAL,EAASn5B,CAAT,EAAY/oB,OAAO,CAACq1D,OAApB,CAAjC;;AACAsC,QAAAA,YAAY,CAAC9T,QAAD,CAAZ,GAAyB5jB,KAAK,CAAC4jB,QAAD,CAA9B;AACAv7B,QAAAA,MAAM,CAACpnB,IAAP,CAAYy2D,YAAZ;AACD;;AACD,aAAOrvC,MAAM,CAAC3pB,MAAP,KAAkB,CAAlB,GAAsB2pB,MAAM,CAAC,CAAD,CAA5B,GAAkCA,MAAzC;AACD;;;WACD,qBAAYuL,GAAZ,EAAiB8R,OAAjB,EAA0BuH,MAA1B,EAAkC;AAChC,UAAMmqB,aAAa,GAAGX,iBAAiB,CAAC,IAAD,CAAvC;;AACA,aAAOW,aAAa,CAACxjC,GAAD,EAAM,IAAN,EAAY8R,OAAZ,EAAqBuH,MAArB,CAApB;AACD;;;WACD,cAAKrZ,GAAL,EAAU1yB,KAAV,EAAiBG,KAAjB,EAAwB;AACtB,UAAM81D,QAAQ,GAAG,KAAKA,QAAtB;;AACA,UAAMC,aAAa,GAAGX,iBAAiB,CAAC,IAAD,CAAvC;;AACA,UAAIzxD,IAAI,GAAG,KAAK+nB,KAAhB;AACA7rB,MAAAA,KAAK,GAAGA,KAAK,IAAI,CAAjB;AACAG,MAAAA,KAAK,GAAGA,KAAK,IAAK,KAAK0+B,MAAL,CAAYrhC,MAAZ,GAAqBwC,KAAvC;;AALsB,mDAMAi2D,QANA;AAAA;;AAAA;AAMtB,kEAAgC;AAAA,cAArBzxB,OAAqB;AAC9B1gC,UAAAA,IAAI,IAAIoyD,aAAa,CAACxjC,GAAD,EAAM,IAAN,EAAY8R,OAAZ,EAAqB;AAACxkC,YAAAA,KAAK,EAALA,KAAD;AAAQC,YAAAA,GAAG,EAAED,KAAK,GAAGG,KAAR,GAAgB;AAA7B,WAArB,CAArB;AACD;AARqB;AAAA;AAAA;AAAA;AAAA;;AAStB,aAAO,CAAC,CAAC2D,IAAT;AACD;;;WACD,cAAK4uB,GAAL,EAAUuE,SAAV,EAAqBj3B,KAArB,EAA4BG,KAA5B,EAAmC;AACjC,UAAMtB,OAAO,GAAG,KAAKA,OAAL,IAAgB,EAAhC;AACA,UAAMggC,MAAM,GAAG,KAAKA,MAAL,IAAe,EAA9B;;AACA,UAAIA,MAAM,CAACrhC,MAAP,IAAiBqB,OAAO,CAACgkC,WAA7B,EAA0C;AACxCnQ,QAAAA,GAAG,CAAC8tB,IAAJ;;AACA72B,QAAAA,KAAI,CAAC+I,GAAD,EAAM,IAAN,EAAY1yB,KAAZ,EAAmBG,KAAnB,CAAJ;;AACAuyB,QAAAA,GAAG,CAACguB,OAAJ;AACD;;AACD,UAAI,KAAKjc,QAAT,EAAmB;AACjB,aAAK6xB,cAAL,GAAsB,KAAtB;AACA,aAAKR,KAAL,GAAav4D,SAAb;AACD;AACF;;;;EAtGuBk1C;;;AAwG1Bj3C,WAAW,CAAC+f,EAAZ,GAAiB,MAAjB;AACA/f,WAAW,CAACU,QAAZ,GAAuB;AACrB63D,EAAAA,cAAc,EAAE,MADK;AAErB/f,EAAAA,UAAU,EAAE,EAFS;AAGrBC,EAAAA,gBAAgB,EAAE,CAHG;AAIrBif,EAAAA,eAAe,EAAE,OAJI;AAKrBrwB,EAAAA,WAAW,EAAE,CALQ;AAMrB4zB,EAAAA,eAAe,EAAE,IANI;AAOrBpC,EAAAA,sBAAsB,EAAE,SAPH;AAQrBptB,EAAAA,IAAI,EAAE,KARe;AASrBvC,EAAAA,QAAQ,EAAE,KATW;AAUrBwvB,EAAAA,OAAO,EAAE,KAVY;AAWrBE,EAAAA,OAAO,EAAE;AAXY,CAAvB;AAaA54D,WAAW,CAACm3C,aAAZ,GAA4B;AAC1Br0C,EAAAA,eAAe,EAAE,iBADS;AAE1BilC,EAAAA,WAAW,EAAE;AAFa,CAA5B;AAIA/nC,WAAW,CAACynC,WAAZ,GAA0B;AACxBnW,EAAAA,WAAW,EAAE,IADW;AAExBD,EAAAA,UAAU,EAAE,oBAACvP,IAAD;AAAA,WAAUA,IAAI,KAAK,YAAT,IAAyBA,IAAI,KAAK,MAA5C;AAAA;AAFY,CAA1B;;AAKA,SAASo5C,SAAT,CAAmB7tB,EAAnB,EAAuBkC,GAAvB,EAA4B5Z,IAA5B,EAAkCuY,gBAAlC,EAAoD;AAClD,MAAM7qC,OAAO,GAAGgqC,EAAE,CAAChqC,OAAnB;;AACA,qBAAwBgqC,EAAE,CAACkB,QAAH,CAAY,CAAC5Y,IAAD,CAAZ,EAAoBuY,gBAApB,CAAxB;AAAA,MAAe3hC,KAAf,gBAAQopB,IAAR;;AACA,SAAQ5wB,IAAI,CAACs5B,GAAL,CAASkR,GAAG,GAAGhjC,KAAf,IAAwBlJ,OAAO,CAAC+N,MAAR,GAAiB/N,OAAO,CAAC83D,SAAzD;AACD;;IACKj7D;;;;;AACJ,wBAAY2vB,GAAZ,EAAiB;AAAA;;AAAA;;AACf;AACA,YAAKxsB,OAAL,GAAetB,SAAf;AACA,YAAKuzB,MAAL,GAAcvzB,SAAd;AACA,YAAK2hC,IAAL,GAAY3hC,SAAZ;AACA,YAAKmK,IAAL,GAAYnK,SAAZ;;AACA,QAAI8tB,GAAJ,EAAS;AACP,gDAAoBA,GAApB;AACD;;AARc;AAShB;;;;WACD,iBAAQurC,MAAR,EAAgBC,MAAhB,EAAwBntB,gBAAxB,EAA0C;AACxC,UAAM7qC,OAAO,GAAG,KAAKA,OAArB;;AACA,4BAAe,KAAKkrC,QAAL,CAAc,CAAC,GAAD,EAAM,GAAN,CAAd,EAA0BL,gBAA1B,CAAf;AAAA,UAAOn+B,CAAP,mBAAOA,CAAP;AAAA,UAAUC,CAAV,mBAAUA,CAAV;;AACA,aAASjL,IAAI,CAACipC,GAAL,CAASotB,MAAM,GAAGrrD,CAAlB,EAAqB,CAArB,IAA0BhL,IAAI,CAACipC,GAAL,CAASqtB,MAAM,GAAGrrD,CAAlB,EAAqB,CAArB,CAA3B,GAAsDjL,IAAI,CAACipC,GAAL,CAAS3qC,OAAO,CAAC83D,SAAR,GAAoB93D,OAAO,CAAC+N,MAArC,EAA6C,CAA7C,CAA9D;AACD;;;WACD,kBAASgqD,MAAT,EAAiBltB,gBAAjB,EAAmC;AACjC,aAAOgtB,SAAS,CAAC,IAAD,EAAOE,MAAP,EAAe,GAAf,EAAoBltB,gBAApB,CAAhB;AACD;;;WACD,kBAASmtB,MAAT,EAAiBntB,gBAAjB,EAAmC;AACjC,aAAOgtB,SAAS,CAAC,IAAD,EAAOG,MAAP,EAAe,GAAf,EAAoBntB,gBAApB,CAAhB;AACD;;;WACD,wBAAeA,gBAAf,EAAiC;AAC/B,4BAAe,KAAKK,QAAL,CAAc,CAAC,GAAD,EAAM,GAAN,CAAd,EAA0BL,gBAA1B,CAAf;AAAA,UAAOn+B,CAAP,mBAAOA,CAAP;AAAA,UAAUC,CAAV,mBAAUA,CAAV;;AACA,aAAO;AAACD,QAAAA,CAAC,EAADA,CAAD;AAAIC,QAAAA,CAAC,EAADA;AAAJ,OAAP;AACD;;;WACD,cAAK3M,OAAL,EAAc;AACZA,MAAAA,OAAO,GAAGA,OAAO,IAAI,KAAKA,OAAhB,IAA2B,EAArC;AACA,UAAI+N,MAAM,GAAG/N,OAAO,CAAC+N,MAAR,IAAkB,CAA/B;AACAA,MAAAA,MAAM,GAAGrM,IAAI,CAAC0H,GAAL,CAAS2E,MAAT,EAAiBA,MAAM,IAAI/N,OAAO,CAACi4D,WAAlB,IAAiC,CAAlD,CAAT;AACA,UAAMj0B,WAAW,GAAGj2B,MAAM,IAAI/N,OAAO,CAACgkC,WAAlB,IAAiC,CAArD;AACA,aAAO,CAACj2B,MAAM,GAAGi2B,WAAV,IAAyB,CAAhC;AACD;;;WACD,cAAKnQ,GAAL,EAAUsE,IAAV,EAAgB;AACd,UAAMn4B,OAAO,GAAG,KAAKA,OAArB;;AACA,UAAI,KAAKqgC,IAAL,IAAargC,OAAO,CAAC+N,MAAR,GAAiB,GAA9B,IAAqC,CAAC,uBAAe,IAAf,EAAqBoqB,IAArB,EAA2B,KAAK16B,IAAL,CAAUuC,OAAV,IAAqB,CAAhD,CAA1C,EAA8F;AAC5F;AACD;;AACD6zB,MAAAA,GAAG,CAAC4Q,WAAJ,GAAkBzkC,OAAO,CAAC0kC,WAA1B;AACA7Q,MAAAA,GAAG,CAAC8Q,SAAJ,GAAgB3kC,OAAO,CAACgkC,WAAxB;AACAnQ,MAAAA,GAAG,CAAC2Q,SAAJ,GAAgBxkC,OAAO,CAACP,eAAxB;AACA,8BAAUo0B,GAAV,EAAe7zB,OAAf,EAAwB,KAAK0M,CAA7B,EAAgC,KAAKC,CAArC;AACD;;;WACD,oBAAW;AACT,UAAM3M,OAAO,GAAG,KAAKA,OAAL,IAAgB,EAAhC;AACA,aAAOA,OAAO,CAAC+N,MAAR,GAAiB/N,OAAO,CAAC83D,SAAhC;AACD;;;;EA9CwBlkB;;;AAgD3B/2C,YAAY,CAAC6f,EAAb,GAAkB,OAAlB;AACA7f,YAAY,CAACQ,QAAb,GAAwB;AACtB2mC,EAAAA,WAAW,EAAE,CADS;AAEtB8zB,EAAAA,SAAS,EAAE,CAFW;AAGtB7zB,EAAAA,gBAAgB,EAAE,CAHI;AAItBg0B,EAAAA,WAAW,EAAE,CAJS;AAKtB1zB,EAAAA,UAAU,EAAE,QALU;AAMtBx2B,EAAAA,MAAM,EAAE,CANc;AAOtBwyB,EAAAA,QAAQ,EAAE;AAPY,CAAxB;AASA1jC,YAAY,CAACi3C,aAAb,GAA6B;AAC3Br0C,EAAAA,eAAe,EAAE,iBADU;AAE3BilC,EAAAA,WAAW,EAAE;AAFc,CAA7B;;AAKA,SAASwzB,YAAT,CAAsBC,GAAtB,EAA2BttB,gBAA3B,EAA6C;AAC3C,sBAAoCstB,GAAG,CAACjtB,QAAJ,CAAa,CAAC,GAAD,EAAM,GAAN,EAAW,MAAX,EAAmB,OAAnB,EAA4B,QAA5B,CAAb,EAAoDL,gBAApD,CAApC;AAAA,MAAOn+B,CAAP,iBAAOA,CAAP;AAAA,MAAUC,CAAV,iBAAUA,CAAV;AAAA,MAAamwB,IAAb,iBAAaA,IAAb;AAAA,MAAmBh6B,KAAnB,iBAAmBA,KAAnB;AAAA,MAA0BD,MAA1B,iBAA0BA,MAA1B;;AACA,MAAIF,IAAJ,EAAUC,KAAV,EAAiBH,GAAjB,EAAsBC,MAAtB,EAA8B01D,IAA9B;;AACA,MAAID,GAAG,CAACt7B,UAAR,EAAoB;AAClBu7B,IAAAA,IAAI,GAAGv1D,MAAM,GAAG,CAAhB;AACAF,IAAAA,IAAI,GAAGjB,IAAI,CAACyH,GAAL,CAASuD,CAAT,EAAYowB,IAAZ,CAAP;AACAl6B,IAAAA,KAAK,GAAGlB,IAAI,CAAC0H,GAAL,CAASsD,CAAT,EAAYowB,IAAZ,CAAR;AACAr6B,IAAAA,GAAG,GAAGkK,CAAC,GAAGyrD,IAAV;AACA11D,IAAAA,MAAM,GAAGiK,CAAC,GAAGyrD,IAAb;AACD,GAND,MAMO;AACLA,IAAAA,IAAI,GAAGt1D,KAAK,GAAG,CAAf;AACAH,IAAAA,IAAI,GAAG+J,CAAC,GAAG0rD,IAAX;AACAx1D,IAAAA,KAAK,GAAG8J,CAAC,GAAG0rD,IAAZ;AACA31D,IAAAA,GAAG,GAAGf,IAAI,CAACyH,GAAL,CAASwD,CAAT,EAAYmwB,IAAZ,CAAN;AACAp6B,IAAAA,MAAM,GAAGhB,IAAI,CAAC0H,GAAL,CAASuD,CAAT,EAAYmwB,IAAZ,CAAT;AACD;;AACD,SAAO;AAACn6B,IAAAA,IAAI,EAAJA,IAAD;AAAOF,IAAAA,GAAG,EAAHA,GAAP;AAAYG,IAAAA,KAAK,EAALA,KAAZ;AAAmBF,IAAAA,MAAM,EAANA;AAAnB,GAAP;AACD;;AACD,SAAS21D,WAAT,CAAqBh4B,IAArB,EAA2Bn3B,KAA3B,EAAkCC,GAAlC,EAAuCC,GAAvC,EAA4C;AAC1C,SAAOi3B,IAAI,GAAG,CAAH,GAAO,uBAAYn3B,KAAZ,EAAmBC,GAAnB,EAAwBC,GAAxB,CAAlB;AACD;;AACD,SAASkvD,gBAAT,CAA0BH,GAA1B,EAA+BI,IAA/B,EAAqCC,IAArC,EAA2C;AACzC,MAAMtvD,KAAK,GAAGivD,GAAG,CAACn4D,OAAJ,CAAYgkC,WAA1B;AACA,MAAM3D,IAAI,GAAG83B,GAAG,CAACl7B,aAAjB;AACA,MAAMtjB,CAAC,GAAG,wBAAOzQ,KAAP,CAAV;AACA,SAAO;AACL6f,IAAAA,CAAC,EAAEsvC,WAAW,CAACh4B,IAAI,CAAC59B,GAAN,EAAWkX,CAAC,CAAClX,GAAb,EAAkB,CAAlB,EAAqB+1D,IAArB,CADT;AAEL13D,IAAAA,CAAC,EAAEu3D,WAAW,CAACh4B,IAAI,CAACz9B,KAAN,EAAa+W,CAAC,CAAC/W,KAAf,EAAsB,CAAtB,EAAyB21D,IAAzB,CAFT;AAGLt3D,IAAAA,CAAC,EAAEo3D,WAAW,CAACh4B,IAAI,CAAC39B,MAAN,EAAciX,CAAC,CAACjX,MAAhB,EAAwB,CAAxB,EAA2B81D,IAA3B,CAHT;AAIL3oC,IAAAA,CAAC,EAAEwoC,WAAW,CAACh4B,IAAI,CAAC19B,IAAN,EAAYgX,CAAC,CAAChX,IAAd,EAAoB,CAApB,EAAuB41D,IAAvB;AAJT,GAAP;AAMD;;AACD,SAASE,iBAAT,CAA2BN,GAA3B,EAAgCI,IAAhC,EAAsCC,IAAtC,EAA4C;AAC1C,uBAA6BL,GAAG,CAACjtB,QAAJ,CAAa,CAAC,oBAAD,CAAb,CAA7B;AAAA,MAAOhO,kBAAP,kBAAOA,kBAAP;;AACA,MAAMh0B,KAAK,GAAGivD,GAAG,CAACn4D,OAAJ,CAAYkyD,YAA1B;AACA,MAAMv4C,CAAC,GAAG,wBAAczQ,KAAd,CAAV;AACA,MAAMwvD,IAAI,GAAGh3D,IAAI,CAACyH,GAAL,CAASovD,IAAT,EAAeC,IAAf,CAAb;AACA,MAAMn4B,IAAI,GAAG83B,GAAG,CAACl7B,aAAjB;AACA,MAAM07B,YAAY,GAAGz7B,kBAAkB,IAAI,uBAASh0B,KAAT,CAA3C;AACA,SAAO;AACL0vD,IAAAA,OAAO,EAAEP,WAAW,CAAC,CAACM,YAAD,IAAiBt4B,IAAI,CAAC59B,GAAtB,IAA6B49B,IAAI,CAAC19B,IAAnC,EAAyCgX,CAAC,CAACi/C,OAA3C,EAAoD,CAApD,EAAuDF,IAAvD,CADf;AAELG,IAAAA,QAAQ,EAAER,WAAW,CAAC,CAACM,YAAD,IAAiBt4B,IAAI,CAAC59B,GAAtB,IAA6B49B,IAAI,CAACz9B,KAAnC,EAA0C+W,CAAC,CAACk/C,QAA5C,EAAsD,CAAtD,EAAyDH,IAAzD,CAFhB;AAGLI,IAAAA,UAAU,EAAET,WAAW,CAAC,CAACM,YAAD,IAAiBt4B,IAAI,CAAC39B,MAAtB,IAAgC29B,IAAI,CAAC19B,IAAtC,EAA4CgX,CAAC,CAACm/C,UAA9C,EAA0D,CAA1D,EAA6DJ,IAA7D,CAHlB;AAILK,IAAAA,WAAW,EAAEV,WAAW,CAAC,CAACM,YAAD,IAAiBt4B,IAAI,CAAC39B,MAAtB,IAAgC29B,IAAI,CAACz9B,KAAtC,EAA6C+W,CAAC,CAACo/C,WAA/C,EAA4D,CAA5D,EAA+DL,IAA/D;AAJnB,GAAP;AAMD;;AACD,SAASM,aAAT,CAAuBb,GAAvB,EAA4B;AAC1B,MAAMvjB,MAAM,GAAGsjB,YAAY,CAACC,GAAD,CAA3B;AACA,MAAMr1D,KAAK,GAAG8xC,MAAM,CAAChyC,KAAP,GAAegyC,MAAM,CAACjyC,IAApC;AACA,MAAME,MAAM,GAAG+xC,MAAM,CAAClyC,MAAP,GAAgBkyC,MAAM,CAACnyC,GAAtC;AACA,MAAMiL,MAAM,GAAG4qD,gBAAgB,CAACH,GAAD,EAAMr1D,KAAK,GAAG,CAAd,EAAiBD,MAAM,GAAG,CAA1B,CAA/B;AACA,MAAMkL,MAAM,GAAG0qD,iBAAiB,CAACN,GAAD,EAAMr1D,KAAK,GAAG,CAAd,EAAiBD,MAAM,GAAG,CAA1B,CAAhC;AACA,SAAO;AACLo2D,IAAAA,KAAK,EAAE;AACLvsD,MAAAA,CAAC,EAAEkoC,MAAM,CAACjyC,IADL;AAELgK,MAAAA,CAAC,EAAEioC,MAAM,CAACnyC,GAFL;AAGLoK,MAAAA,CAAC,EAAE/J,KAHE;AAIL4rC,MAAAA,CAAC,EAAE7rC,MAJE;AAKLkL,MAAAA,MAAM,EAANA;AALK,KADF;AAQLjK,IAAAA,KAAK,EAAE;AACL4I,MAAAA,CAAC,EAAEkoC,MAAM,CAACjyC,IAAP,GAAc+K,MAAM,CAACmiB,CADnB;AAELljB,MAAAA,CAAC,EAAEioC,MAAM,CAACnyC,GAAP,GAAaiL,MAAM,CAACqb,CAFlB;AAGLlc,MAAAA,CAAC,EAAE/J,KAAK,GAAG4K,MAAM,CAACmiB,CAAf,GAAmBniB,MAAM,CAAC5M,CAHxB;AAIL4tC,MAAAA,CAAC,EAAE7rC,MAAM,GAAG6K,MAAM,CAACqb,CAAhB,GAAoBrb,MAAM,CAACzM,CAJzB;AAKL8M,MAAAA,MAAM,EAAE;AACN6qD,QAAAA,OAAO,EAAEl3D,IAAI,CAAC0H,GAAL,CAAS,CAAT,EAAY2E,MAAM,CAAC6qD,OAAP,GAAiBl3D,IAAI,CAAC0H,GAAL,CAASsE,MAAM,CAACqb,CAAhB,EAAmBrb,MAAM,CAACmiB,CAA1B,CAA7B,CADH;AAENgpC,QAAAA,QAAQ,EAAEn3D,IAAI,CAAC0H,GAAL,CAAS,CAAT,EAAY2E,MAAM,CAAC8qD,QAAP,GAAkBn3D,IAAI,CAAC0H,GAAL,CAASsE,MAAM,CAACqb,CAAhB,EAAmBrb,MAAM,CAAC5M,CAA1B,CAA9B,CAFJ;AAGNg4D,QAAAA,UAAU,EAAEp3D,IAAI,CAAC0H,GAAL,CAAS,CAAT,EAAY2E,MAAM,CAAC+qD,UAAP,GAAoBp3D,IAAI,CAAC0H,GAAL,CAASsE,MAAM,CAACzM,CAAhB,EAAmByM,MAAM,CAACmiB,CAA1B,CAAhC,CAHN;AAINkpC,QAAAA,WAAW,EAAEr3D,IAAI,CAAC0H,GAAL,CAAS,CAAT,EAAY2E,MAAM,CAACgrD,WAAP,GAAqBr3D,IAAI,CAAC0H,GAAL,CAASsE,MAAM,CAACzM,CAAhB,EAAmByM,MAAM,CAAC5M,CAA1B,CAAjC;AAJP;AALH;AARF,GAAP;AAqBD;;AACD,SAASkqC,QAAT,CAAiBmtB,GAAjB,EAAsBzrD,CAAtB,EAAyBC,CAAzB,EAA4Bk+B,gBAA5B,EAA8C;AAC5C,MAAMquB,KAAK,GAAGxsD,CAAC,KAAK,IAApB;AACA,MAAMysD,KAAK,GAAGxsD,CAAC,KAAK,IAApB;AACA,MAAMysD,QAAQ,GAAGF,KAAK,IAAIC,KAA1B;AACA,MAAMvkB,MAAM,GAAGujB,GAAG,IAAI,CAACiB,QAAR,IAAoBlB,YAAY,CAACC,GAAD,EAAMttB,gBAAN,CAA/C;AACA,SAAO+J,MAAM,KACTskB,KAAK,IAAI,wBAAWxsD,CAAX,EAAckoC,MAAM,CAACjyC,IAArB,EAA2BiyC,MAAM,CAAChyC,KAAlC,CADA,CAAN,KAEHu2D,KAAK,IAAI,wBAAWxsD,CAAX,EAAcioC,MAAM,CAACnyC,GAArB,EAA0BmyC,MAAM,CAAClyC,MAAjC,CAFN,CAAP;AAGD;;AACD,SAAS22D,SAAT,CAAmBtrD,MAAnB,EAA2B;AACzB,SAAOA,MAAM,CAAC6qD,OAAP,IAAkB7qD,MAAM,CAAC8qD,QAAzB,IAAqC9qD,MAAM,CAAC+qD,UAA5C,IAA0D/qD,MAAM,CAACgrD,WAAxE;AACD;;AACD,SAASO,iBAAT,CAA2BzlC,GAA3B,EAAgClsB,IAAhC,EAAsC;AACpCksB,EAAAA,GAAG,CAAClsB,IAAJ,CAASA,IAAI,CAAC+E,CAAd,EAAiB/E,IAAI,CAACgF,CAAtB,EAAyBhF,IAAI,CAACkF,CAA9B,EAAiClF,IAAI,CAAC+mC,CAAtC;AACD;;AACD,SAAS6qB,WAAT,CAAqB5xD,IAArB,EAA2BkhC,MAA3B,EAAiD;AAAA,MAAd2wB,OAAc,uEAAJ,EAAI;AAC/C,MAAM9sD,CAAC,GAAG/E,IAAI,CAAC+E,CAAL,KAAW8sD,OAAO,CAAC9sD,CAAnB,GAAuB,CAACm8B,MAAxB,GAAiC,CAA3C;AACA,MAAMl8B,CAAC,GAAGhF,IAAI,CAACgF,CAAL,KAAW6sD,OAAO,CAAC7sD,CAAnB,GAAuB,CAACk8B,MAAxB,GAAiC,CAA3C;AACA,MAAMh8B,CAAC,GAAG,CAAClF,IAAI,CAAC+E,CAAL,GAAS/E,IAAI,CAACkF,CAAd,KAAoB2sD,OAAO,CAAC9sD,CAAR,GAAY8sD,OAAO,CAAC3sD,CAAxC,GAA4Cg8B,MAA5C,GAAqD,CAAtD,IAA2Dn8B,CAArE;AACA,MAAMgiC,CAAC,GAAG,CAAC/mC,IAAI,CAACgF,CAAL,GAAShF,IAAI,CAAC+mC,CAAd,KAAoB8qB,OAAO,CAAC7sD,CAAR,GAAY6sD,OAAO,CAAC9qB,CAAxC,GAA4C7F,MAA5C,GAAqD,CAAtD,IAA2Dl8B,CAArE;AACA,SAAO;AACLD,IAAAA,CAAC,EAAE/E,IAAI,CAAC+E,CAAL,GAASA,CADP;AAELC,IAAAA,CAAC,EAAEhF,IAAI,CAACgF,CAAL,GAASA,CAFP;AAGLE,IAAAA,CAAC,EAAElF,IAAI,CAACkF,CAAL,GAASA,CAHP;AAIL6hC,IAAAA,CAAC,EAAE/mC,IAAI,CAAC+mC,CAAL,GAASA,CAJP;AAKL3gC,IAAAA,MAAM,EAAEpG,IAAI,CAACoG;AALR,GAAP;AAOD;;IACK1R;;;;;AACJ,sBAAYmwB,GAAZ,EAAiB;AAAA;;AAAA;;AACf;AACA,YAAKxsB,OAAL,GAAetB,SAAf;AACA,YAAKm+B,UAAL,GAAkBn+B,SAAlB;AACA,YAAKo+B,IAAL,GAAYp+B,SAAZ;AACA,YAAKoE,KAAL,GAAapE,SAAb;AACA,YAAKmE,MAAL,GAAcnE,SAAd;AACA,YAAKg/B,aAAL,GAAqBh/B,SAArB;;AACA,QAAI8tB,GAAJ,EAAS;AACP,gDAAoBA,GAApB;AACD;;AAVc;AAWhB;;;;WACD,cAAKqH,GAAL,EAAU;AACR,UAAO6J,aAAP,GAAiE,IAAjE,CAAOA,aAAP;AAAA,4BAAiE,IAAjE,CAAsB19B,OAAtB;AAAA,UAAgC0kC,WAAhC,mBAAgCA,WAAhC;AAAA,UAA6CjlC,eAA7C,mBAA6CA,eAA7C;;AACA,2BAAuBu5D,aAAa,CAAC,IAAD,CAApC;AAAA,UAAOl1D,KAAP,kBAAOA,KAAP;AAAA,UAAcm1D,KAAd,kBAAcA,KAAd;;AACA,UAAMQ,WAAW,GAAGJ,SAAS,CAACJ,KAAK,CAAClrD,MAAP,CAAT,GAA0B2rD,kBAA1B,GAA+CJ,iBAAnE;AACAzlC,MAAAA,GAAG,CAAC8tB,IAAJ;;AACA,UAAIsX,KAAK,CAACpsD,CAAN,KAAY/I,KAAK,CAAC+I,CAAlB,IAAuBosD,KAAK,CAACvqB,CAAN,KAAY5qC,KAAK,CAAC4qC,CAA7C,EAAgD;AAC9C7a,QAAAA,GAAG,CAACwuB,SAAJ;AACAoX,QAAAA,WAAW,CAAC5lC,GAAD,EAAM0lC,WAAW,CAACN,KAAD,EAAQv7B,aAAR,EAAuB55B,KAAvB,CAAjB,CAAX;AACA+vB,QAAAA,GAAG,CAACoE,IAAJ;AACAwhC,QAAAA,WAAW,CAAC5lC,GAAD,EAAM0lC,WAAW,CAACz1D,KAAD,EAAQ,CAAC45B,aAAT,EAAwBu7B,KAAxB,CAAjB,CAAX;AACAplC,QAAAA,GAAG,CAAC2Q,SAAJ,GAAgBE,WAAhB;AACA7Q,QAAAA,GAAG,CAACuU,IAAJ,CAAS,SAAT;AACD;;AACDvU,MAAAA,GAAG,CAACwuB,SAAJ;AACAoX,MAAAA,WAAW,CAAC5lC,GAAD,EAAM0lC,WAAW,CAACz1D,KAAD,EAAQ45B,aAAR,CAAjB,CAAX;AACA7J,MAAAA,GAAG,CAAC2Q,SAAJ,GAAgB/kC,eAAhB;AACAo0B,MAAAA,GAAG,CAACuU,IAAJ;AACAvU,MAAAA,GAAG,CAACguB,OAAJ;AACD;;;WACD,iBAAQkW,MAAR,EAAgBC,MAAhB,EAAwBntB,gBAAxB,EAA0C;AACxC,aAAOG,QAAO,CAAC,IAAD,EAAO+sB,MAAP,EAAeC,MAAf,EAAuBntB,gBAAvB,CAAd;AACD;;;WACD,kBAASktB,MAAT,EAAiBltB,gBAAjB,EAAmC;AACjC,aAAOG,QAAO,CAAC,IAAD,EAAO+sB,MAAP,EAAe,IAAf,EAAqBltB,gBAArB,CAAd;AACD;;;WACD,kBAASmtB,MAAT,EAAiBntB,gBAAjB,EAAmC;AACjC,aAAOG,QAAO,CAAC,IAAD,EAAO,IAAP,EAAagtB,MAAb,EAAqBntB,gBAArB,CAAd;AACD;;;WACD,wBAAeA,gBAAf,EAAiC;AAC/B,4BAAiC,KAAKK,QAAL,CAAc,CAAC,GAAD,EAAM,GAAN,EAAW,MAAX,EAAmB,YAAnB,CAAd,EAAgDL,gBAAhD,CAAjC;AAAA,UAAOn+B,CAAP,mBAAOA,CAAP;AAAA,UAAUC,CAAV,mBAAUA,CAAV;AAAA,UAAamwB,IAAb,mBAAaA,IAAb;AAAA,UAAmBD,UAAnB,mBAAmBA,UAAnB;;AACA,aAAO;AACLnwB,QAAAA,CAAC,EAAEmwB,UAAU,GAAG,CAACnwB,CAAC,GAAGowB,IAAL,IAAa,CAAhB,GAAoBpwB,CAD5B;AAELC,QAAAA,CAAC,EAAEkwB,UAAU,GAAGlwB,CAAH,GAAO,CAACA,CAAC,GAAGmwB,IAAL,IAAa;AAF5B,OAAP;AAID;;;WACD,kBAASxK,IAAT,EAAe;AACb,aAAOA,IAAI,KAAK,GAAT,GAAe,KAAKxvB,KAAL,GAAa,CAA5B,GAAgC,KAAKD,MAAL,GAAc,CAArD;AACD;;;;EAlDsB+wC;;;AAoDzBv3C,UAAU,CAACqgB,EAAX,GAAgB,KAAhB;AACArgB,UAAU,CAACgB,QAAX,GAAsB;AACpB4/B,EAAAA,aAAa,EAAE,OADK;AAEpB+G,EAAAA,WAAW,EAAE,CAFO;AAGpBkuB,EAAAA,YAAY,EAAE,CAHM;AAIpBx0B,EAAAA,aAAa,EAAE,MAJK;AAKpB6G,EAAAA,UAAU,EAAE7lC;AALQ,CAAtB;AAOArC,UAAU,CAACy3C,aAAX,GAA2B;AACzBr0C,EAAAA,eAAe,EAAE,iBADQ;AAEzBilC,EAAAA,WAAW,EAAE;AAFY,CAA3B;AAKA,IAAIxd,QAAQ,GAAG,aAAalb,MAAM,CAACitB,MAAP,CAAc;AAC1CuP,EAAAA,SAAS,EAAE,IAD+B;AAE1CpsC,EAAAA,UAAU,EAAEA,UAF8B;AAG1CO,EAAAA,WAAW,EAAEA,WAH6B;AAI1CE,EAAAA,YAAY,EAAEA,YAJ4B;AAK1CR,EAAAA,UAAU,EAAEA;AAL8B,CAAd,CAA5B;;;AAQA,SAASs9D,cAAT,CAAwB55D,IAAxB,EAA8BoB,KAA9B,EAAqCG,KAArC,EAA4CisC,cAA5C,EAA4DvtC,OAA5D,EAAqE;AACnE,MAAM45D,OAAO,GAAG55D,OAAO,CAAC45D,OAAR,IAAmBrsB,cAAnC;;AACA,MAAIqsB,OAAO,IAAIt4D,KAAf,EAAsB;AACpB,WAAOvB,IAAI,CAACmlC,KAAL,CAAW/jC,KAAX,EAAkBA,KAAK,GAAGG,KAA1B,CAAP;AACD;;AACD,MAAMu4D,SAAS,GAAG,EAAlB;AACA,MAAMC,WAAW,GAAG,CAACx4D,KAAK,GAAG,CAAT,KAAes4D,OAAO,GAAG,CAAzB,CAApB;AACA,MAAIG,YAAY,GAAG,CAAnB;AACA,MAAMC,QAAQ,GAAG74D,KAAK,GAAGG,KAAR,GAAgB,CAAjC;AACA,MAAIwgB,CAAC,GAAG3gB,KAAR;AACA,MAAIhC,CAAJ,EAAO86D,YAAP,EAAqBC,OAArB,EAA8B/hC,IAA9B,EAAoCgiC,KAApC;AACAN,EAAAA,SAAS,CAACE,YAAY,EAAb,CAAT,GAA4Bh6D,IAAI,CAAC+hB,CAAD,CAAhC;;AACA,OAAK3iB,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGy6D,OAAO,GAAG,CAA1B,EAA6Bz6D,CAAC,EAA9B,EAAkC;AAChC,QAAIg3D,IAAI,GAAG,CAAX;AACA,QAAIiE,IAAI,GAAG,CAAX;AACA,QAAI7wB,CAAC,SAAL;AACA,QAAM8wB,aAAa,GAAG34D,IAAI,CAACC,KAAL,CAAW,CAACxC,CAAC,GAAG,CAAL,IAAU26D,WAArB,IAAoC,CAApC,GAAwC34D,KAA9D;AACA,QAAMm5D,WAAW,GAAG54D,IAAI,CAACyH,GAAL,CAASzH,IAAI,CAACC,KAAL,CAAW,CAACxC,CAAC,GAAG,CAAL,IAAU26D,WAArB,IAAoC,CAA7C,EAAgDx4D,KAAhD,IAAyDH,KAA7E;AACA,QAAMo5D,cAAc,GAAGD,WAAW,GAAGD,aAArC;;AACA,SAAK9wB,CAAC,GAAG8wB,aAAT,EAAwB9wB,CAAC,GAAG+wB,WAA5B,EAAyC/wB,CAAC,EAA1C,EAA8C;AAC5C4sB,MAAAA,IAAI,IAAIp2D,IAAI,CAACwpC,CAAD,CAAJ,CAAQ78B,CAAhB;AACA0tD,MAAAA,IAAI,IAAIr6D,IAAI,CAACwpC,CAAD,CAAJ,CAAQ58B,CAAhB;AACD;;AACDwpD,IAAAA,IAAI,IAAIoE,cAAR;AACAH,IAAAA,IAAI,IAAIG,cAAR;AACA,QAAMC,SAAS,GAAG94D,IAAI,CAACC,KAAL,CAAWxC,CAAC,GAAG26D,WAAf,IAA8B,CAA9B,GAAkC34D,KAApD;AACA,QAAMs5D,OAAO,GAAG/4D,IAAI,CAACyH,GAAL,CAASzH,IAAI,CAACC,KAAL,CAAW,CAACxC,CAAC,GAAG,CAAL,IAAU26D,WAArB,IAAoC,CAA7C,EAAgDx4D,KAAhD,IAAyDH,KAAzE;AACA,kBAAiCpB,IAAI,CAAC+hB,CAAD,CAArC;AAAA,QAAU44C,OAAV,WAAOhuD,CAAP;AAAA,QAAsBiuD,OAAtB,WAAmBhuD,CAAnB;AACAutD,IAAAA,OAAO,GAAG/hC,IAAI,GAAG,CAAC,CAAlB;;AACA,SAAKoR,CAAC,GAAGixB,SAAT,EAAoBjxB,CAAC,GAAGkxB,OAAxB,EAAiClxB,CAAC,EAAlC,EAAsC;AACpCpR,MAAAA,IAAI,GAAG,MAAMz2B,IAAI,CAACs5B,GAAL,CACX,CAAC0/B,OAAO,GAAGvE,IAAX,KAAoBp2D,IAAI,CAACwpC,CAAD,CAAJ,CAAQ58B,CAAR,GAAYguD,OAAhC,IACA,CAACD,OAAO,GAAG36D,IAAI,CAACwpC,CAAD,CAAJ,CAAQ78B,CAAnB,KAAyB0tD,IAAI,GAAGO,OAAhC,CAFW,CAAb;;AAIA,UAAIxiC,IAAI,GAAG+hC,OAAX,EAAoB;AAClBA,QAAAA,OAAO,GAAG/hC,IAAV;AACA8hC,QAAAA,YAAY,GAAGl6D,IAAI,CAACwpC,CAAD,CAAnB;AACA4wB,QAAAA,KAAK,GAAG5wB,CAAR;AACD;AACF;;AACDswB,IAAAA,SAAS,CAACE,YAAY,EAAb,CAAT,GAA4BE,YAA5B;AACAn4C,IAAAA,CAAC,GAAGq4C,KAAJ;AACD;;AACDN,EAAAA,SAAS,CAACE,YAAY,EAAb,CAAT,GAA4Bh6D,IAAI,CAACi6D,QAAD,CAAhC;AACA,SAAOH,SAAP;AACD;;AACD,SAASe,gBAAT,CAA0B76D,IAA1B,EAAgCoB,KAAhC,EAAuCG,KAAvC,EAA8CisC,cAA9C,EAA8D;AAC5D,MAAI4oB,IAAI,GAAG,CAAX;AACA,MAAIC,MAAM,GAAG,CAAb;AACA,MAAIj3D,CAAJ,EAAO8gC,KAAP,EAAcvzB,CAAd,EAAiBC,CAAjB,EAAoB0pD,KAApB,EAA2BwE,QAA3B,EAAqCC,QAArC,EAA+CC,UAA/C,EAA2Dj5B,IAA3D,EAAiEH,IAAjE;AACA,MAAMk4B,SAAS,GAAG,EAAlB;AACA,MAAMG,QAAQ,GAAG74D,KAAK,GAAGG,KAAR,GAAgB,CAAjC;AACA,MAAM05D,IAAI,GAAGj7D,IAAI,CAACoB,KAAD,CAAJ,CAAYuL,CAAzB;AACA,MAAMuuD,IAAI,GAAGl7D,IAAI,CAACi6D,QAAD,CAAJ,CAAettD,CAA5B;AACA,MAAMwuD,EAAE,GAAGD,IAAI,GAAGD,IAAlB;;AACA,OAAK77D,CAAC,GAAGgC,KAAT,EAAgBhC,CAAC,GAAGgC,KAAK,GAAGG,KAA5B,EAAmC,EAAEnC,CAArC,EAAwC;AACtC8gC,IAAAA,KAAK,GAAGlgC,IAAI,CAACZ,CAAD,CAAZ;AACAuN,IAAAA,CAAC,GAAG,CAACuzB,KAAK,CAACvzB,CAAN,GAAUsuD,IAAX,IAAmBE,EAAnB,GAAwB3tB,cAA5B;AACA5gC,IAAAA,CAAC,GAAGszB,KAAK,CAACtzB,CAAV;AACA,QAAM8pD,MAAM,GAAG/pD,CAAC,GAAG,CAAnB;;AACA,QAAI+pD,MAAM,KAAKJ,KAAf,EAAsB;AACpB,UAAI1pD,CAAC,GAAGm1B,IAAR,EAAc;AACZA,QAAAA,IAAI,GAAGn1B,CAAP;AACAkuD,QAAAA,QAAQ,GAAG17D,CAAX;AACD,OAHD,MAGO,IAAIwN,CAAC,GAAGg1B,IAAR,EAAc;AACnBA,QAAAA,IAAI,GAAGh1B,CAAP;AACAmuD,QAAAA,QAAQ,GAAG37D,CAAX;AACD;;AACDg3D,MAAAA,IAAI,GAAG,CAACC,MAAM,GAAGD,IAAT,GAAgBl2B,KAAK,CAACvzB,CAAvB,IAA4B,EAAE0pD,MAArC;AACD,KATD,MASO;AACL,UAAM+E,SAAS,GAAGh8D,CAAC,GAAG,CAAtB;;AACA,UAAI,CAAC,uBAAc07D,QAAd,CAAD,IAA4B,CAAC,uBAAcC,QAAd,CAAjC,EAA0D;AACxD,YAAMM,kBAAkB,GAAG15D,IAAI,CAACyH,GAAL,CAAS0xD,QAAT,EAAmBC,QAAnB,CAA3B;AACA,YAAMO,kBAAkB,GAAG35D,IAAI,CAAC0H,GAAL,CAASyxD,QAAT,EAAmBC,QAAnB,CAA3B;;AACA,YAAIM,kBAAkB,KAAKL,UAAvB,IAAqCK,kBAAkB,KAAKD,SAAhE,EAA2E;AACzEtB,UAAAA,SAAS,CAAC34D,IAAV,iCACKnB,IAAI,CAACq7D,kBAAD,CADT;AAEE1uD,YAAAA,CAAC,EAAEypD;AAFL;AAID;;AACD,YAAIkF,kBAAkB,KAAKN,UAAvB,IAAqCM,kBAAkB,KAAKF,SAAhE,EAA2E;AACzEtB,UAAAA,SAAS,CAAC34D,IAAV,iCACKnB,IAAI,CAACs7D,kBAAD,CADT;AAEE3uD,YAAAA,CAAC,EAAEypD;AAFL;AAID;AACF;;AACD,UAAIh3D,CAAC,GAAG,CAAJ,IAASg8D,SAAS,KAAKJ,UAA3B,EAAuC;AACrClB,QAAAA,SAAS,CAAC34D,IAAV,CAAenB,IAAI,CAACo7D,SAAD,CAAnB;AACD;;AACDtB,MAAAA,SAAS,CAAC34D,IAAV,CAAe++B,KAAf;AACAo2B,MAAAA,KAAK,GAAGI,MAAR;AACAL,MAAAA,MAAM,GAAG,CAAT;AACAt0B,MAAAA,IAAI,GAAGH,IAAI,GAAGh1B,CAAd;AACAkuD,MAAAA,QAAQ,GAAGC,QAAQ,GAAGC,UAAU,GAAG57D,CAAnC;AACD;AACF;;AACD,SAAO06D,SAAP;AACD;;AACD,SAASyB,qBAAT,CAA+Bp8D,OAA/B,EAAwC;AACtC,MAAIA,OAAO,CAACumC,UAAZ,EAAwB;AACtB,QAAM1lC,IAAI,GAAGb,OAAO,CAACg1B,KAArB;AACA,WAAOh1B,OAAO,CAACumC,UAAf;AACA,WAAOvmC,OAAO,CAACg1B,KAAf;AACAloB,IAAAA,MAAM,CAACsX,cAAP,CAAsBpkB,OAAtB,EAA+B,MAA/B,EAAuC;AAACgK,MAAAA,KAAK,EAAEnJ;AAAR,KAAvC;AACD;AACF;;AACD,SAASw7D,kBAAT,CAA4Bz7D,KAA5B,EAAmC;AACjCA,EAAAA,KAAK,CAACC,IAAN,CAAWvB,QAAX,CAAoB6E,OAApB,CAA4B,UAACnE,OAAD,EAAa;AACvCo8D,IAAAA,qBAAqB,CAACp8D,OAAD,CAArB;AACD,GAFD;AAGD;;AACD,SAASs8D,yCAAT,CAAmD13C,IAAnD,EAAyDkc,MAAzD,EAAiE;AAC/D,MAAMqG,UAAU,GAAGrG,MAAM,CAACrhC,MAA1B;AACA,MAAIwC,KAAK,GAAG,CAAZ;AACA,MAAIG,KAAJ;AACA,MAAO8wB,MAAP,GAAiBtO,IAAjB,CAAOsO,MAAP;;AACA,+BAA2CA,MAAM,CAAClB,aAAP,EAA3C;AAAA,MAAO/nB,GAAP,0BAAOA,GAAP;AAAA,MAAYC,GAAZ,0BAAYA,GAAZ;AAAA,MAAiB+nB,UAAjB,0BAAiBA,UAAjB;AAAA,MAA6BC,UAA7B,0BAA6BA,UAA7B;;AACA,MAAID,UAAJ,EAAgB;AACdhwB,IAAAA,KAAK,GAAG,uBAAY,uBAAa6+B,MAAb,EAAqB5N,MAAM,CAACE,IAA5B,EAAkCnpB,GAAlC,EAAuCm9B,EAAnD,EAAuD,CAAvD,EAA0DD,UAAU,GAAG,CAAvE,CAAR;AACD;;AACD,MAAIjV,UAAJ,EAAgB;AACd9vB,IAAAA,KAAK,GAAG,uBAAY,uBAAa0+B,MAAb,EAAqB5N,MAAM,CAACE,IAA5B,EAAkClpB,GAAlC,EAAuCm9B,EAAvC,GAA4C,CAAxD,EAA2DplC,KAA3D,EAAkEklC,UAAlE,IAAgFllC,KAAxF;AACD,GAFD,MAEO;AACLG,IAAAA,KAAK,GAAG+kC,UAAU,GAAGllC,KAArB;AACD;;AACD,SAAO;AAACA,IAAAA,KAAK,EAALA,KAAD;AAAQG,IAAAA,KAAK,EAALA;AAAR,GAAP;AACD;;AACD,IAAIm6D,iBAAiB,GAAG;AACtB/+C,EAAAA,EAAE,EAAE,YADkB;AAEtBrf,EAAAA,QAAQ,EAAE;AACRq+D,IAAAA,SAAS,EAAE,SADH;AAERt7D,IAAAA,OAAO,EAAE;AAFD,GAFY;AAMtBu7D,EAAAA,oBAAoB,EAAE,8BAAC77D,KAAD,EAAQmjB,IAAR,EAAcjjB,OAAd,EAA0B;AAC9C,QAAI,CAACA,OAAO,CAACI,OAAb,EAAsB;AACpBm7D,MAAAA,kBAAkB,CAACz7D,KAAD,CAAlB;AACA;AACD;;AACD,QAAMytC,cAAc,GAAGztC,KAAK,CAACgD,KAA7B;AACAhD,IAAAA,KAAK,CAACC,IAAN,CAAWvB,QAAX,CAAoB6E,OAApB,CAA4B,UAACnE,OAAD,EAAUuxB,YAAV,EAA2B;AACrD,UAAOyD,KAAP,GAA2Bh1B,OAA3B,CAAOg1B,KAAP;AAAA,UAAciB,SAAd,GAA2Bj2B,OAA3B,CAAci2B,SAAd;AACA,UAAMrR,IAAI,GAAGhkB,KAAK,CAAC41B,cAAN,CAAqBjF,YAArB,CAAb;AACA,UAAM1wB,IAAI,GAAGm0B,KAAK,IAAIh1B,OAAO,CAACa,IAA9B;;AACA,UAAI,uBAAQ,CAACo1B,SAAD,EAAYr1B,KAAK,CAACE,OAAN,CAAcm1B,SAA1B,CAAR,MAAkD,GAAtD,EAA2D;AACzD;AACD;;AACD,UAAIrR,IAAI,CAAC3lB,IAAL,KAAc,MAAlB,EAA0B;AACxB;AACD;;AACD,UAAMy9D,KAAK,GAAG97D,KAAK,CAACf,MAAN,CAAa+kB,IAAI,CAACiR,OAAlB,CAAd;;AACA,UAAI6mC,KAAK,CAACz9D,IAAN,KAAe,QAAf,IAA2By9D,KAAK,CAACz9D,IAAN,KAAe,MAA9C,EAAsD;AACpD;AACD;;AACD,UAAI2B,KAAK,CAACE,OAAN,CAAcy2B,OAAlB,EAA2B;AACzB;AACD;;AACD,mCAAqB+kC,yCAAyC,CAAC13C,IAAD,EAAO/jB,IAAP,CAA9D;AAAA,UAAKoB,KAAL,0BAAKA,KAAL;AAAA,UAAYG,KAAZ,0BAAYA,KAAZ;;AACA,UAAMu6D,SAAS,GAAG77D,OAAO,CAAC67D,SAAR,IAAqB,IAAItuB,cAA3C;;AACA,UAAIjsC,KAAK,IAAIu6D,SAAb,EAAwB;AACtBP,QAAAA,qBAAqB,CAACp8D,OAAD,CAArB;AACA;AACD;;AACD,UAAI,uBAAcg1B,KAAd,CAAJ,EAA0B;AACxBh1B,QAAAA,OAAO,CAACg1B,KAAR,GAAgBn0B,IAAhB;AACA,eAAOb,OAAO,CAACa,IAAf;AACAiM,QAAAA,MAAM,CAACsX,cAAP,CAAsBpkB,OAAtB,EAA+B,MAA/B,EAAuC;AACrC48D,UAAAA,YAAY,EAAE,IADuB;AAErCtK,UAAAA,UAAU,EAAE,IAFyB;AAGrClyC,UAAAA,GAAG,EAAE,eAAW;AACd,mBAAO,KAAKmmB,UAAZ;AACD,WALoC;AAMrC/6B,UAAAA,GAAG,EAAE,aAASse,CAAT,EAAY;AACf,iBAAKkL,KAAL,GAAalL,CAAb;AACD;AARoC,SAAvC;AAUD;;AACD,UAAI6wC,SAAJ;;AACA,cAAQ75D,OAAO,CAAC07D,SAAhB;AACA,aAAK,MAAL;AACE7B,UAAAA,SAAS,GAAGF,cAAc,CAAC55D,IAAD,EAAOoB,KAAP,EAAcG,KAAd,EAAqBisC,cAArB,EAAqCvtC,OAArC,CAA1B;AACA;;AACF,aAAK,SAAL;AACE65D,UAAAA,SAAS,GAAGe,gBAAgB,CAAC76D,IAAD,EAAOoB,KAAP,EAAcG,KAAd,EAAqBisC,cAArB,CAA5B;AACA;;AACF;AACE,gBAAM,IAAI/uB,KAAJ,6CAA+Cxe,OAAO,CAAC07D,SAAvD,OAAN;AARF;;AAUAx8D,MAAAA,OAAO,CAACumC,UAAR,GAAqBo0B,SAArB;AACD,KAjDD;AAkDD,GA9DqB;AA+DtBzyD,EAAAA,OA/DsB,mBA+DdtH,KA/Dc,EA+DP;AACby7D,IAAAA,kBAAkB,CAACz7D,KAAD,CAAlB;AACD;AAjEqB,CAAxB;;;AAoEA,SAASi8D,cAAT,CAAwBj8D,KAAxB,EAA+BS,KAA/B,EAAsC;AACpC,MAAMujB,IAAI,GAAGhkB,KAAK,CAAC41B,cAAN,CAAqBn1B,KAArB,CAAb;AACA,MAAM6tB,OAAO,GAAGtK,IAAI,IAAIhkB,KAAK,CAACoiC,gBAAN,CAAuB3hC,KAAvB,CAAxB;AACA,SAAO6tB,OAAO,GAAGtK,IAAI,CAAC5kB,OAAR,GAAkB,IAAhC;AACD;;AACD,SAAS88D,eAAT,CAAyB72B,IAAzB,EAA+B;AAC7B,MAAMnlC,OAAO,GAAGmlC,IAAI,CAACnlC,OAArB;AACA,MAAMi8D,UAAU,GAAGj8D,OAAO,CAACooC,IAA3B;AACA,MAAIA,IAAI,GAAG,uBAAe6zB,UAAU,IAAIA,UAAU,CAACjoD,MAAxC,EAAgDioD,UAAhD,CAAX;;AACA,MAAI7zB,IAAI,KAAK1pC,SAAb,EAAwB;AACtB0pC,IAAAA,IAAI,GAAG,CAAC,CAACpoC,OAAO,CAACP,eAAjB;AACD;;AACD,MAAI2oC,IAAI,KAAK,KAAT,IAAkBA,IAAI,KAAK,IAA/B,EAAqC;AACnC,WAAO,KAAP;AACD;;AACD,MAAIA,IAAI,KAAK,IAAb,EAAmB;AACjB,WAAO,QAAP;AACD;;AACD,SAAOA,IAAP;AACD;;AACD,SAAS8zB,UAAT,CAAoB/2B,IAApB,EAA0B5kC,KAA1B,EAAiCe,KAAjC,EAAwC;AACtC,MAAM8mC,IAAI,GAAG4zB,eAAe,CAAC72B,IAAD,CAA5B;;AACA,MAAI,uBAASiD,IAAT,CAAJ,EAAoB;AAClB,WAAOl4B,KAAK,CAACk4B,IAAI,CAACl/B,KAAN,CAAL,GAAoB,KAApB,GAA4Bk/B,IAAnC;AACD;;AACD,MAAIp0B,MAAM,GAAGhE,UAAU,CAACo4B,IAAD,CAAvB;;AACA,MAAI,uBAAep0B,MAAf,KAA0BtS,IAAI,CAACC,KAAL,CAAWqS,MAAX,MAAuBA,MAArD,EAA6D;AAC3D,QAAIo0B,IAAI,CAAC,CAAD,CAAJ,KAAY,GAAZ,IAAmBA,IAAI,CAAC,CAAD,CAAJ,KAAY,GAAnC,EAAwC;AACtCp0B,MAAAA,MAAM,GAAGzT,KAAK,GAAGyT,MAAjB;AACD;;AACD,QAAIA,MAAM,KAAKzT,KAAX,IAAoByT,MAAM,GAAG,CAA7B,IAAkCA,MAAM,IAAI1S,KAAhD,EAAuD;AACrD,aAAO,KAAP;AACD;;AACD,WAAO0S,MAAP;AACD;;AACD,SAAO,CAAC,QAAD,EAAW,OAAX,EAAoB,KAApB,EAA2B,OAA3B,EAAoC,OAApC,EAA6ChO,OAA7C,CAAqDoiC,IAArD,KAA8D,CAA9D,IAAmEA,IAA1E;AACD;;AACD,SAAS+zB,qBAAT,CAA+BjgB,MAA/B,EAAuC;AACrC,sBAA2BA,MAA3B,CAAO/uC,KAAP;AAAA,MAAOA,KAAP,8BAAe,EAAf;AAAA,MAAmBi7B,IAAnB,GAA2B8T,MAA3B,CAAmB9T,IAAnB;AACA,MAAIp0B,MAAM,GAAG,IAAb;AACA,MAAI6oB,UAAJ;;AACA,MAAIuL,IAAI,KAAK,OAAb,EAAsB;AACpBp0B,IAAAA,MAAM,GAAG7G,KAAK,CAACzK,MAAf;AACD,GAFD,MAEO,IAAI0lC,IAAI,KAAK,KAAb,EAAoB;AACzBp0B,IAAAA,MAAM,GAAG7G,KAAK,CAAC1K,GAAf;AACD,GAFM,MAEA,IAAI,uBAAS2lC,IAAT,CAAJ,EAAoB;AACzBp0B,IAAAA,MAAM,GAAG7G,KAAK,CAAC8tB,gBAAN,CAAuBmN,IAAI,CAACl/B,KAA5B,CAAT;AACD,GAFM,MAEA,IAAIiE,KAAK,CAAC2wB,YAAV,EAAwB;AAC7B9pB,IAAAA,MAAM,GAAG7G,KAAK,CAAC2wB,YAAN,EAAT;AACD;;AACD,MAAI,uBAAe9pB,MAAf,CAAJ,EAA4B;AAC1B6oB,IAAAA,UAAU,GAAG1vB,KAAK,CAACwvB,YAAN,EAAb;AACA,WAAO;AACLjwB,MAAAA,CAAC,EAAEmwB,UAAU,GAAG7oB,MAAH,GAAY,IADpB;AAELrH,MAAAA,CAAC,EAAEkwB,UAAU,GAAG,IAAH,GAAU7oB;AAFlB,KAAP;AAID;;AACD,SAAO,IAAP;AACD;;IACKooD;AACJ,qBAAY3yD,IAAZ,EAAkB;AAAA;;AAChB,SAAKiD,CAAL,GAASjD,IAAI,CAACiD,CAAd;AACA,SAAKC,CAAL,GAASlD,IAAI,CAACkD,CAAd;AACA,SAAKoB,MAAL,GAActE,IAAI,CAACsE,MAAnB;AACD;;;;WACD,qBAAY8lB,GAAZ,EAAiB+gB,MAAjB,EAAyBnrC,IAAzB,EAA+B;AAC7B,UAAOiD,CAAP,GAAuB,IAAvB,CAAOA,CAAP;AAAA,UAAUC,CAAV,GAAuB,IAAvB,CAAUA,CAAV;AAAA,UAAaoB,MAAb,GAAuB,IAAvB,CAAaA,MAAb;AACA6mC,MAAAA,MAAM,GAAGA,MAAM,IAAI;AAACzzC,QAAAA,KAAK,EAAE,CAAR;AAAWC,QAAAA,GAAG,EAAE0/B;AAAhB,OAAnB;AACAjN,MAAAA,GAAG,CAAC+P,GAAJ,CAAQl3B,CAAR,EAAWC,CAAX,EAAcoB,MAAd,EAAsB6mC,MAAM,CAACxzC,GAA7B,EAAkCwzC,MAAM,CAACzzC,KAAzC,EAAgD,IAAhD;AACA,aAAO,CAACsI,IAAI,CAACmrC,MAAb;AACD;;;WACD,qBAAY3U,KAAZ,EAAmB;AACjB,UAAOvzB,CAAP,GAAuB,IAAvB,CAAOA,CAAP;AAAA,UAAUC,CAAV,GAAuB,IAAvB,CAAUA,CAAV;AAAA,UAAaoB,MAAb,GAAuB,IAAvB,CAAaA,MAAb;AACA,UAAMyzB,KAAK,GAAGvB,KAAK,CAACuB,KAApB;AACA,aAAO;AACL90B,QAAAA,CAAC,EAAEA,CAAC,GAAGhL,IAAI,CAACw/B,GAAL,CAASM,KAAT,IAAkBzzB,MADpB;AAELpB,QAAAA,CAAC,EAAEA,CAAC,GAAGjL,IAAI,CAAC0/B,GAAL,CAASI,KAAT,IAAkBzzB,MAFpB;AAGLyzB,QAAAA,KAAK,EAALA;AAHK,OAAP;AAKD;;;;;;AAEH,SAAS66B,uBAAT,CAAiCngB,MAAjC,EAAyC;AACvC,MAAO/uC,KAAP,GAAsB+uC,MAAtB,CAAO/uC,KAAP;AAAA,MAAci7B,IAAd,GAAsB8T,MAAtB,CAAc9T,IAAd;AACA,MAAMpoC,OAAO,GAAGmN,KAAK,CAACnN,OAAtB;AACA,MAAMrB,MAAM,GAAGwO,KAAK,CAAC8pB,SAAN,GAAkBt4B,MAAjC;AACA,MAAMqV,MAAM,GAAG,EAAf;AACA,MAAM7S,KAAK,GAAGnB,OAAO,CAACwvB,OAAR,GAAkBriB,KAAK,CAAC/D,GAAxB,GAA8B+D,KAAK,CAAChE,GAAlD;AACA,MAAM/H,GAAG,GAAGpB,OAAO,CAACwvB,OAAR,GAAkBriB,KAAK,CAAChE,GAAxB,GAA8BgE,KAAK,CAAC/D,GAAhD;AACA,MAAIjK,CAAJ,EAAOq/B,MAAP,EAAet1B,KAAf;;AACA,MAAIk/B,IAAI,KAAK,OAAb,EAAsB;AACpBl/B,IAAAA,KAAK,GAAG/H,KAAR;AACD,GAFD,MAEO,IAAIinC,IAAI,KAAK,KAAb,EAAoB;AACzBl/B,IAAAA,KAAK,GAAG9H,GAAR;AACD,GAFM,MAEA,IAAI,uBAASgnC,IAAT,CAAJ,EAAoB;AACzBl/B,IAAAA,KAAK,GAAGk/B,IAAI,CAACl/B,KAAb;AACD,GAFM,MAEA;AACLA,IAAAA,KAAK,GAAGiE,KAAK,CAACmyC,YAAN,EAAR;AACD;;AACD,MAAIt/C,OAAO,CAACT,IAAR,CAAasoC,QAAjB,EAA2B;AACzBrJ,IAAAA,MAAM,GAAGrxB,KAAK,CAACg7B,wBAAN,CAA+B,CAA/B,EAAkChnC,KAAlC,CAAT;AACA,WAAO,IAAIi7D,SAAJ,CAAc;AACnB1vD,MAAAA,CAAC,EAAE8xB,MAAM,CAAC9xB,CADS;AAEnBC,MAAAA,CAAC,EAAE6xB,MAAM,CAAC7xB,CAFS;AAGnBoB,MAAAA,MAAM,EAAEZ,KAAK,CAACw6B,6BAAN,CAAoCz+B,KAApC;AAHW,KAAd,CAAP;AAKD;;AACD,OAAK/J,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGR,MAAhB,EAAwB,EAAEQ,CAA1B,EAA6B;AAC3B6U,IAAAA,MAAM,CAAC9S,IAAP,CAAYiM,KAAK,CAACg7B,wBAAN,CAA+BhpC,CAA/B,EAAkC+J,KAAlC,CAAZ;AACD;;AACD,SAAO8K,MAAP;AACD;;AACD,SAASsoD,eAAT,CAAyBpgB,MAAzB,EAAiC;AAC/B,MAAM/uC,KAAK,GAAG+uC,MAAM,CAAC/uC,KAAP,IAAgB,EAA9B;;AACA,MAAIA,KAAK,CAACg7B,wBAAV,EAAoC;AAClC,WAAOk0B,uBAAuB,CAACngB,MAAD,CAA9B;AACD;;AACD,SAAOigB,qBAAqB,CAACjgB,MAAD,CAA5B;AACD;;AACD,SAASqgB,cAAT,CAAwBp7D,KAAxB,EAA+BC,GAA/B,EAAoC4+B,MAApC,EAA4C;AAC1C,SAAM5+B,GAAG,GAAGD,KAAZ,EAAmBC,GAAG,EAAtB,EAA0B;AACxB,QAAM6+B,KAAK,GAAGD,MAAM,CAAC5+B,GAAD,CAApB;;AACA,QAAI,CAAC8O,KAAK,CAAC+vB,KAAK,CAACvzB,CAAP,CAAN,IAAmB,CAACwD,KAAK,CAAC+vB,KAAK,CAACtzB,CAAP,CAA7B,EAAwC;AACtC;AACD;AACF;;AACD,SAAOvL,GAAP;AACD;;AACD,SAASo7D,kBAAT,CAA4BC,QAA5B,EAAsCt3B,IAAtC,EAA4C;AAC1C,cAA6Bs3B,QAAQ,IAAI,EAAzC;AAAA,sBAAO/vD,CAAP;AAAA,MAAOA,CAAP,wBAAW,IAAX;AAAA,sBAAiBC,CAAjB;AAAA,MAAiBA,CAAjB,wBAAqB,IAArB;;AACA,MAAM+vD,UAAU,GAAGv3B,IAAI,CAACnF,MAAxB;AACA,MAAMA,MAAM,GAAG,EAAf;AACAmF,EAAAA,IAAI,CAACiyB,QAAL,CAAc/zD,OAAd,CAAsB,iBAAkB;AAAA,QAAhBlC,KAAgB,SAAhBA,KAAgB;AAAA,QAATC,GAAS,SAATA,GAAS;AACtCA,IAAAA,GAAG,GAAGm7D,cAAc,CAACp7D,KAAD,EAAQC,GAAR,EAAas7D,UAAb,CAApB;AACA,QAAM18C,KAAK,GAAG08C,UAAU,CAACv7D,KAAD,CAAxB;AACA,QAAMu9B,IAAI,GAAGg+B,UAAU,CAACt7D,GAAD,CAAvB;;AACA,QAAIuL,CAAC,KAAK,IAAV,EAAgB;AACdqzB,MAAAA,MAAM,CAAC9+B,IAAP,CAAY;AAACwL,QAAAA,CAAC,EAAEsT,KAAK,CAACtT,CAAV;AAAaC,QAAAA,CAAC,EAADA;AAAb,OAAZ;AACAqzB,MAAAA,MAAM,CAAC9+B,IAAP,CAAY;AAACwL,QAAAA,CAAC,EAAEgyB,IAAI,CAAChyB,CAAT;AAAYC,QAAAA,CAAC,EAADA;AAAZ,OAAZ;AACD,KAHD,MAGO,IAAID,CAAC,KAAK,IAAV,EAAgB;AACrBszB,MAAAA,MAAM,CAAC9+B,IAAP,CAAY;AAACwL,QAAAA,CAAC,EAADA,CAAD;AAAIC,QAAAA,CAAC,EAAEqT,KAAK,CAACrT;AAAb,OAAZ;AACAqzB,MAAAA,MAAM,CAAC9+B,IAAP,CAAY;AAACwL,QAAAA,CAAC,EAADA,CAAD;AAAIC,QAAAA,CAAC,EAAE+xB,IAAI,CAAC/xB;AAAZ,OAAZ;AACD;AACF,GAXD;AAYA,SAAOqzB,MAAP;AACD;;AACD,SAAS28B,cAAT,CAAwBzgB,MAAxB,EAAgC;AAC9B,MAAO/uC,KAAP,GAA6B+uC,MAA7B,CAAO/uC,KAAP;AAAA,MAAc5M,KAAd,GAA6B27C,MAA7B,CAAc37C,KAAd;AAAA,MAAqB4kC,IAArB,GAA6B+W,MAA7B,CAAqB/W,IAArB;AACA,MAAMnF,MAAM,GAAG,EAAf;AACA,MAAMo3B,QAAQ,GAAGjyB,IAAI,CAACiyB,QAAtB;AACA,MAAMwF,YAAY,GAAGz3B,IAAI,CAACnF,MAA1B;AACA,MAAM68B,UAAU,GAAGC,aAAa,CAAC3vD,KAAD,EAAQ5M,KAAR,CAAhC;AACAs8D,EAAAA,UAAU,CAAC37D,IAAX,CAAgB67D,kBAAkB,CAAC;AAACrwD,IAAAA,CAAC,EAAE,IAAJ;AAAUC,IAAAA,CAAC,EAAEQ,KAAK,CAACzK;AAAnB,GAAD,EAA6ByiC,IAA7B,CAAlC;;AACA,OAAK,IAAIhmC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGi4D,QAAQ,CAACz4D,MAA7B,EAAqCQ,CAAC,EAAtC,EAA0C;AACxC,QAAMwmC,OAAO,GAAGyxB,QAAQ,CAACj4D,CAAD,CAAxB;;AACA,SAAK,IAAIoqC,CAAC,GAAG5D,OAAO,CAACxkC,KAArB,EAA4BooC,CAAC,IAAI5D,OAAO,CAACvkC,GAAzC,EAA8CmoC,CAAC,EAA/C,EAAmD;AACjDyzB,MAAAA,cAAc,CAACh9B,MAAD,EAAS48B,YAAY,CAACrzB,CAAD,CAArB,EAA0BszB,UAA1B,CAAd;AACD;AACF;;AACD,SAAO,IAAIlgE,WAAJ,CAAgB;AAACqjC,IAAAA,MAAM,EAANA,MAAD;AAAShgC,IAAAA,OAAO,EAAE;AAAlB,GAAhB,CAAP;AACD;;AACD,SAAS88D,aAAT,CAAuB3vD,KAAvB,EAA8B5M,KAA9B,EAAqC;AACnC,MAAM08D,KAAK,GAAG,EAAd;AACA,MAAMpiB,KAAK,GAAG1tC,KAAK,CAAC4kB,uBAAN,CAA8B,MAA9B,CAAd;;AACA,OAAK,IAAI5yB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG07C,KAAK,CAACl8C,MAA1B,EAAkCQ,CAAC,EAAnC,EAAuC;AACrC,QAAM2kB,IAAI,GAAG+2B,KAAK,CAAC17C,CAAD,CAAlB;;AACA,QAAI2kB,IAAI,CAACvjB,KAAL,KAAeA,KAAnB,EAA0B;AACxB;AACD;;AACD,QAAI,CAACujB,IAAI,CAAC2P,MAAV,EAAkB;AAChBwpC,MAAAA,KAAK,CAACl5C,OAAN,CAAcD,IAAI,CAAC5kB,OAAnB;AACD;AACF;;AACD,SAAO+9D,KAAP;AACD;;AACD,SAASD,cAAT,CAAwBh9B,MAAxB,EAAgCk9B,WAAhC,EAA6CL,UAA7C,EAAyD;AACvD,MAAMM,SAAS,GAAG,EAAlB;;AACA,OAAK,IAAI5zB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGszB,UAAU,CAACl+D,MAA/B,EAAuC4qC,CAAC,EAAxC,EAA4C;AAC1C,QAAMpE,IAAI,GAAG03B,UAAU,CAACtzB,CAAD,CAAvB;;AACA,qBAA6B6zB,SAAS,CAACj4B,IAAD,EAAO+3B,WAAP,EAAoB,GAApB,CAAtC;AAAA,QAAOl9C,KAAP,cAAOA,KAAP;AAAA,QAAc0e,IAAd,cAAcA,IAAd;AAAA,QAAoBuB,KAApB,cAAoBA,KAApB;;AACA,QAAI,CAACA,KAAD,IAAWjgB,KAAK,IAAI0e,IAAxB,EAA+B;AAC7B;AACD;;AACD,QAAI1e,KAAJ,EAAW;AACTm9C,MAAAA,SAAS,CAACp5C,OAAV,CAAkBkc,KAAlB;AACD,KAFD,MAEO;AACLD,MAAAA,MAAM,CAAC9+B,IAAP,CAAY++B,KAAZ;;AACA,UAAI,CAACvB,IAAL,EAAW;AACT;AACD;AACF;AACF;;AACDsB,EAAAA,MAAM,CAAC9+B,IAAP,OAAA8+B,MAAM,EAASm9B,SAAT,CAAN;AACD;;AACD,SAASC,SAAT,CAAmBj4B,IAAnB,EAAyB+3B,WAAzB,EAAsCrZ,QAAtC,EAAgD;AAC9C,MAAM5jB,KAAK,GAAGkF,IAAI,CAACpkC,WAAL,CAAiBm8D,WAAjB,EAA8BrZ,QAA9B,CAAd;;AACA,MAAI,CAAC5jB,KAAL,EAAY;AACV,WAAO,EAAP;AACD;;AACD,MAAMo9B,UAAU,GAAGp9B,KAAK,CAAC4jB,QAAD,CAAxB;AACA,MAAMuT,QAAQ,GAAGjyB,IAAI,CAACiyB,QAAtB;AACA,MAAMsF,UAAU,GAAGv3B,IAAI,CAACnF,MAAxB;AACA,MAAIhgB,KAAK,GAAG,KAAZ;AACA,MAAI0e,IAAI,GAAG,KAAX;;AACA,OAAK,IAAIv/B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGi4D,QAAQ,CAACz4D,MAA7B,EAAqCQ,CAAC,EAAtC,EAA0C;AACxC,QAAMwmC,OAAO,GAAGyxB,QAAQ,CAACj4D,CAAD,CAAxB;AACA,QAAMm+D,UAAU,GAAGZ,UAAU,CAAC/2B,OAAO,CAACxkC,KAAT,CAAV,CAA0B0iD,QAA1B,CAAnB;AACA,QAAM0Z,SAAS,GAAGb,UAAU,CAAC/2B,OAAO,CAACvkC,GAAT,CAAV,CAAwByiD,QAAxB,CAAlB;;AACA,QAAI,wBAAWwZ,UAAX,EAAuBC,UAAvB,EAAmCC,SAAnC,CAAJ,EAAmD;AACjDv9C,MAAAA,KAAK,GAAGq9C,UAAU,KAAKC,UAAvB;AACA5+B,MAAAA,IAAI,GAAG2+B,UAAU,KAAKE,SAAtB;AACA;AACD;AACF;;AACD,SAAO;AAACv9C,IAAAA,KAAK,EAALA,KAAD;AAAQ0e,IAAAA,IAAI,EAAJA,IAAR;AAAcuB,IAAAA,KAAK,EAALA;AAAd,GAAP;AACD;;AACD,SAASu9B,SAAT,CAAmBthB,MAAnB,EAA2B;AACzB,MAAOp8C,KAAP,GAA4Bo8C,MAA5B,CAAOp8C,KAAP;AAAA,MAAcsoC,IAAd,GAA4B8T,MAA5B,CAAc9T,IAAd;AAAA,MAAoBjD,IAApB,GAA4B+W,MAA5B,CAAoB/W,IAApB;;AACA,MAAI,uBAAeiD,IAAf,CAAJ,EAA0B;AACxB,WAAO2zB,cAAc,CAACj8D,KAAD,EAAQsoC,IAAR,CAArB;AACD;;AACD,MAAIA,IAAI,KAAK,OAAb,EAAsB;AACpB,WAAOu0B,cAAc,CAACzgB,MAAD,CAArB;AACD;;AACD,MAAI9T,IAAI,KAAK,OAAb,EAAsB;AACpB,WAAO,IAAP;AACD;;AACD,MAAMq0B,QAAQ,GAAGH,eAAe,CAACpgB,MAAD,CAAhC;;AACA,MAAIugB,QAAQ,YAAYL,SAAxB,EAAmC;AACjC,WAAOK,QAAP;AACD;;AACD,SAAOM,kBAAkB,CAACN,QAAD,EAAWt3B,IAAX,CAAzB;AACD;;AACD,SAAS43B,kBAAT,CAA4BN,QAA5B,EAAsCt3B,IAAtC,EAA4C;AAC1C,MAAInF,MAAM,GAAG,EAAb;AACA,MAAIhT,KAAK,GAAG,KAAZ;;AACA,MAAI,uBAAQyvC,QAAR,CAAJ,EAAuB;AACrBzvC,IAAAA,KAAK,GAAG,IAAR;AACAgT,IAAAA,MAAM,GAAGy8B,QAAT;AACD,GAHD,MAGO;AACLz8B,IAAAA,MAAM,GAAGw8B,kBAAkB,CAACC,QAAD,EAAWt3B,IAAX,CAA3B;AACD;;AACD,SAAOnF,MAAM,CAACrhC,MAAP,GAAgB,IAAIhC,WAAJ,CAAgB;AACrCqjC,IAAAA,MAAM,EAANA,MADqC;AAErChgC,IAAAA,OAAO,EAAE;AAACu1D,MAAAA,OAAO,EAAE;AAAV,KAF4B;AAGrCvoC,IAAAA,KAAK,EAALA,KAHqC;AAIrCib,IAAAA,SAAS,EAAEjb;AAJ0B,GAAhB,CAAhB,GAKF,IALL;AAMD;;AACD,SAASywC,aAAT,CAAuBC,OAAvB,EAAgCn9D,KAAhC,EAAuCo9D,SAAvC,EAAkD;AAChD,MAAMzhB,MAAM,GAAGwhB,OAAO,CAACn9D,KAAD,CAAtB;AACA,MAAI6nC,IAAI,GAAG8T,MAAM,CAAC9T,IAAlB;AACA,MAAMw1B,OAAO,GAAG,CAACr9D,KAAD,CAAhB;AACA,MAAIyT,MAAJ;;AACA,MAAI,CAAC2pD,SAAL,EAAgB;AACd,WAAOv1B,IAAP;AACD;;AACD,SAAOA,IAAI,KAAK,KAAT,IAAkBw1B,OAAO,CAAC53D,OAAR,CAAgBoiC,IAAhB,MAA0B,CAAC,CAApD,EAAuD;AACrD,QAAI,CAAC,uBAAeA,IAAf,CAAL,EAA2B;AACzB,aAAOA,IAAP;AACD;;AACDp0B,IAAAA,MAAM,GAAG0pD,OAAO,CAACt1B,IAAD,CAAhB;;AACA,QAAI,CAACp0B,MAAL,EAAa;AACX,aAAO,KAAP;AACD;;AACD,QAAIA,MAAM,CAACoa,OAAX,EAAoB;AAClB,aAAOga,IAAP;AACD;;AACDw1B,IAAAA,OAAO,CAAC18D,IAAR,CAAaknC,IAAb;AACAA,IAAAA,IAAI,GAAGp0B,MAAM,CAACo0B,IAAd;AACD;;AACD,SAAO,KAAP;AACD;;AACD,SAASpQ,KAAT,CAAenE,GAAf,EAAoB7f,MAApB,EAA4B6pD,KAA5B,EAAmC;AACjC,MAAOzG,QAAP,GAA2BpjD,MAA3B,CAAOojD,QAAP;AAAA,MAAiBp3B,MAAjB,GAA2BhsB,MAA3B,CAAiBgsB,MAAjB;AACA,MAAIhgB,KAAK,GAAG,IAAZ;AACA,MAAI89C,QAAQ,GAAG,KAAf;AACAjqC,EAAAA,GAAG,CAACwuB,SAAJ;;AAJiC,+CAKX+U,QALW;AAAA;;AAAA;AAKjC,8DAAgC;AAAA,UAArBzxB,OAAqB;AAC9B,UAAOxkC,KAAP,GAAqBwkC,OAArB,CAAOxkC,KAAP;AAAA,UAAcC,GAAd,GAAqBukC,OAArB,CAAcvkC,GAAd;AACA,UAAM8kC,UAAU,GAAGlG,MAAM,CAAC7+B,KAAD,CAAzB;AACA,UAAMglC,SAAS,GAAGnG,MAAM,CAACu8B,cAAc,CAACp7D,KAAD,EAAQC,GAAR,EAAa4+B,MAAb,CAAf,CAAxB;;AACA,UAAIhgB,KAAJ,EAAW;AACT6T,QAAAA,GAAG,CAACyuB,MAAJ,CAAWpc,UAAU,CAACx5B,CAAtB,EAAyBw5B,UAAU,CAACv5B,CAApC;AACAqT,QAAAA,KAAK,GAAG,KAAR;AACD,OAHD,MAGO;AACL6T,QAAAA,GAAG,CAAC0uB,MAAJ,CAAWrc,UAAU,CAACx5B,CAAtB,EAAyBmxD,KAAzB;AACAhqC,QAAAA,GAAG,CAAC0uB,MAAJ,CAAWrc,UAAU,CAACx5B,CAAtB,EAAyBw5B,UAAU,CAACv5B,CAApC;AACD;;AACDmxD,MAAAA,QAAQ,GAAG,CAAC,CAAC9pD,MAAM,CAACgiD,WAAP,CAAmBniC,GAAnB,EAAwB8R,OAAxB,EAAiC;AAAC3L,QAAAA,IAAI,EAAE8jC;AAAP,OAAjC,CAAb;;AACA,UAAIA,QAAJ,EAAc;AACZjqC,QAAAA,GAAG,CAACi+B,SAAJ;AACD,OAFD,MAEO;AACLj+B,QAAAA,GAAG,CAAC0uB,MAAJ,CAAWpc,SAAS,CAACz5B,CAArB,EAAwBmxD,KAAxB;AACD;AACF;AAtBgC;AAAA;AAAA;AAAA;AAAA;;AAuBjChqC,EAAAA,GAAG,CAAC0uB,MAAJ,CAAWvuC,MAAM,CAACgM,KAAP,GAAetT,CAA1B,EAA6BmxD,KAA7B;AACAhqC,EAAAA,GAAG,CAACi+B,SAAJ;AACAj+B,EAAAA,GAAG,CAACoE,IAAJ;AACD;;AACD,SAAS8lC,SAAT,CAAmBla,QAAnB,EAA6B7jC,KAA7B,EAAoC0e,IAApC,EAA0Cz5B,IAA1C,EAAgD;AAC9C,MAAIA,IAAJ,EAAU;AACR;AACD;;AACD,MAAI9D,KAAK,GAAG6e,KAAK,CAAC6jC,QAAD,CAAjB;AACA,MAAIziD,GAAG,GAAGs9B,IAAI,CAACmlB,QAAD,CAAd;;AACA,MAAIA,QAAQ,KAAK,OAAjB,EAA0B;AACxB1iD,IAAAA,KAAK,GAAG,wBAAgBA,KAAhB,CAAR;AACAC,IAAAA,GAAG,GAAG,wBAAgBA,GAAhB,CAAN;AACD;;AACD,SAAO;AAACyiD,IAAAA,QAAQ,EAARA,QAAD;AAAW1iD,IAAAA,KAAK,EAALA,KAAX;AAAkBC,IAAAA,GAAG,EAAHA;AAAlB,GAAP;AACD;;AACD,SAAS48D,QAAT,CAAkBl8C,CAAlB,EAAqB7gB,CAArB,EAAwBwrB,IAAxB,EAA8B1E,EAA9B,EAAkC;AAChC,MAAIjG,CAAC,IAAI7gB,CAAT,EAAY;AACV,WAAO8mB,EAAE,CAACjG,CAAC,CAAC2K,IAAD,CAAF,EAAUxrB,CAAC,CAACwrB,IAAD,CAAX,CAAT;AACD;;AACD,SAAO3K,CAAC,GAAGA,CAAC,CAAC2K,IAAD,CAAJ,GAAaxrB,CAAC,GAAGA,CAAC,CAACwrB,IAAD,CAAJ,GAAa,CAAnC;AACD;;AACD,SAAS+qC,SAAT,CAAmBryB,IAAnB,EAAyBnxB,MAAzB,EAAiC6vC,QAAjC,EAA2C;AACzC,MAAMuT,QAAQ,GAAGjyB,IAAI,CAACiyB,QAAtB;AACA,MAAMp3B,MAAM,GAAGmF,IAAI,CAACnF,MAApB;AACA,MAAMi+B,OAAO,GAAGjqD,MAAM,CAACgsB,MAAvB;AACA,MAAMmkB,KAAK,GAAG,EAAd;;AAJyC,+CAKnBiT,QALmB;AAAA;;AAAA;AAKzC,8DAAgC;AAAA,UAArBzxB,OAAqB;AAC9B,UAAKxkC,KAAL,GAAmBwkC,OAAnB,CAAKxkC,KAAL;AAAA,UAAYC,GAAZ,GAAmBukC,OAAnB,CAAYvkC,GAAZ;AACAA,MAAAA,GAAG,GAAGm7D,cAAc,CAACp7D,KAAD,EAAQC,GAAR,EAAa4+B,MAAb,CAApB;AACA,UAAM4U,MAAM,GAAGmpB,SAAS,CAACla,QAAD,EAAW7jB,MAAM,CAAC7+B,KAAD,CAAjB,EAA0B6+B,MAAM,CAAC5+B,GAAD,CAAhC,EAAuCukC,OAAO,CAAC1gC,IAA/C,CAAxB;;AACA,UAAI,CAAC+O,MAAM,CAACojD,QAAZ,EAAsB;AACpBjT,QAAAA,KAAK,CAACjjD,IAAN,CAAW;AACTg7C,UAAAA,MAAM,EAAEvW,OADC;AAET3xB,UAAAA,MAAM,EAAE4gC,MAFC;AAGTzzC,UAAAA,KAAK,EAAE6+B,MAAM,CAAC7+B,KAAD,CAHJ;AAITC,UAAAA,GAAG,EAAE4+B,MAAM,CAAC5+B,GAAD;AAJF,SAAX;AAMA;AACD;;AACD,UAAM88D,cAAc,GAAG,wBAAelqD,MAAf,EAAuB4gC,MAAvB,CAAvB;;AAb8B,mDAcZspB,cAdY;AAAA;;AAAA;AAc9B,kEAAkC;AAAA,cAAvBC,GAAuB;AAChC,cAAMC,SAAS,GAAGL,SAAS,CAACla,QAAD,EAAWoa,OAAO,CAACE,GAAG,CAACh9D,KAAL,CAAlB,EAA+B88D,OAAO,CAACE,GAAG,CAAC/8D,GAAL,CAAtC,EAAiD+8D,GAAG,CAACl5D,IAArD,CAA3B;AACA,cAAMo5D,WAAW,GAAG,wBAAc14B,OAAd,EAAuB3F,MAAvB,EAA+Bo+B,SAA/B,CAApB;;AAFgC,uDAGPC,WAHO;AAAA;;AAAA;AAGhC,sEAAsC;AAAA,kBAA3BC,UAA2B;AACpCna,cAAAA,KAAK,CAACjjD,IAAN,CAAW;AACTg7C,gBAAAA,MAAM,EAAEoiB,UADC;AAETtqD,gBAAAA,MAAM,EAAEmqD,GAFC;AAGTh9D,gBAAAA,KAAK,sBACF0iD,QADE,EACSma,QAAQ,CAACppB,MAAD,EAASwpB,SAAT,EAAoB,OAApB,EAA6B18D,IAAI,CAAC0H,GAAlC,CADjB,CAHI;AAMThI,gBAAAA,GAAG,sBACAyiD,QADA,EACWma,QAAQ,CAACppB,MAAD,EAASwpB,SAAT,EAAoB,KAApB,EAA2B18D,IAAI,CAACyH,GAAhC,CADnB;AANM,eAAX;AAUD;AAd+B;AAAA;AAAA;AAAA;AAAA;AAejC;AA7B6B;AAAA;AAAA;AAAA;AAAA;AA8B/B;AAnCwC;AAAA;AAAA;AAAA;AAAA;;AAoCzC,SAAOg7C,KAAP;AACD;;AACD,SAASoa,UAAT,CAAoB1qC,GAApB,EAAyB1mB,KAAzB,EAAgCynC,MAAhC,EAAwC;AACtC,8BAAsBznC,KAAK,CAACrN,KAAN,CAAYs4B,SAAlC;AAAA,MAAO31B,GAAP,yBAAOA,GAAP;AAAA,MAAYC,MAAZ,yBAAYA,MAAZ;;AACA,cAA+BkyC,MAAM,IAAI,EAAzC;AAAA,MAAOiP,QAAP,SAAOA,QAAP;AAAA,MAAiB1iD,KAAjB,SAAiBA,KAAjB;AAAA,MAAwBC,GAAxB,SAAwBA,GAAxB;;AACA,MAAIyiD,QAAQ,KAAK,GAAjB,EAAsB;AACpBhwB,IAAAA,GAAG,CAACwuB,SAAJ;AACAxuB,IAAAA,GAAG,CAAClsB,IAAJ,CAASxG,KAAT,EAAgBsB,GAAhB,EAAqBrB,GAAG,GAAGD,KAA3B,EAAkCuB,MAAM,GAAGD,GAA3C;AACAoxB,IAAAA,GAAG,CAACoE,IAAJ;AACD;AACF;;AACD,SAASumC,kBAAT,CAA4B3qC,GAA5B,EAAiC7f,MAAjC,EAAyCisB,KAAzC,EAAgD4jB,QAAhD,EAA0D;AACxD,MAAM4a,iBAAiB,GAAGzqD,MAAM,CAACjT,WAAP,CAAmBk/B,KAAnB,EAA0B4jB,QAA1B,CAA1B;;AACA,MAAI4a,iBAAJ,EAAuB;AACrB5qC,IAAAA,GAAG,CAAC0uB,MAAJ,CAAWkc,iBAAiB,CAAC/xD,CAA7B,EAAgC+xD,iBAAiB,CAAC9xD,CAAlD;AACD;AACF;;AACD,SAAS+xD,KAAT,CAAe7qC,GAAf,EAAoBrH,GAApB,EAAyB;AACvB,MAAO2Y,IAAP,GAA+C3Y,GAA/C,CAAO2Y,IAAP;AAAA,MAAanxB,MAAb,GAA+CwY,GAA/C,CAAaxY,MAAb;AAAA,MAAqB6vC,QAArB,GAA+Cr3B,GAA/C,CAAqBq3B,QAArB;AAAA,MAA+B73B,KAA/B,GAA+CQ,GAA/C,CAA+BR,KAA/B;AAAA,MAAsC7e,KAAtC,GAA+Cqf,GAA/C,CAAsCrf,KAAtC;;AACA,MAAMiqD,QAAQ,GAAGI,SAAS,CAACryB,IAAD,EAAOnxB,MAAP,EAAe6vC,QAAf,CAA1B;;AAFuB,+CAG8BuT,QAH9B;AAAA;;AAAA;AAGvB,8DAA+D;AAAA;AAAA,UAA3CrxD,GAA2C,iBAAnDm2C,MAAmD;AAAA,UAA9BiiB,GAA8B,iBAAtCnqD,MAAsC;AAAA,UAAzB7S,KAAyB,iBAAzBA,KAAyB;AAAA,UAAlBC,GAAkB,iBAAlBA,GAAkB;AAC7D,uBAAgD2E,GAAhD,CAAOhD,KAAP;AAAA,2CAA0C,EAA1C;AAAA,6CAAetD,eAAf;AAAA,UAAeA,eAAf,sCAAiCusB,KAAjC;AACA,UAAM2yC,QAAQ,GAAG3qD,MAAM,KAAK,IAA5B;AACA6f,MAAAA,GAAG,CAAC8tB,IAAJ;AACA9tB,MAAAA,GAAG,CAAC2Q,SAAJ,GAAgB/kC,eAAhB;AACA8+D,MAAAA,UAAU,CAAC1qC,GAAD,EAAM1mB,KAAN,EAAawxD,QAAQ,IAAIZ,SAAS,CAACla,QAAD,EAAW1iD,KAAX,EAAkBC,GAAlB,CAAlC,CAAV;AACAyyB,MAAAA,GAAG,CAACwuB,SAAJ;AACA,UAAMyb,QAAQ,GAAG,CAAC,CAAC34B,IAAI,CAAC6wB,WAAL,CAAiBniC,GAAjB,EAAsB9tB,GAAtB,CAAnB;AACA,UAAId,IAAI,SAAR;;AACA,UAAI05D,QAAJ,EAAc;AACZ,YAAIb,QAAJ,EAAc;AACZjqC,UAAAA,GAAG,CAACi+B,SAAJ;AACD,SAFD,MAEO;AACL0M,UAAAA,kBAAkB,CAAC3qC,GAAD,EAAM7f,MAAN,EAAc5S,GAAd,EAAmByiD,QAAnB,CAAlB;AACD;;AACD,YAAM+a,UAAU,GAAG,CAAC,CAAC5qD,MAAM,CAACgiD,WAAP,CAAmBniC,GAAnB,EAAwBsqC,GAAxB,EAA6B;AAACnkC,UAAAA,IAAI,EAAE8jC,QAAP;AAAiBtuC,UAAAA,OAAO,EAAE;AAA1B,SAA7B,CAArB;AACAvqB,QAAAA,IAAI,GAAG64D,QAAQ,IAAIc,UAAnB;;AACA,YAAI,CAAC35D,IAAL,EAAW;AACTu5D,UAAAA,kBAAkB,CAAC3qC,GAAD,EAAM7f,MAAN,EAAc7S,KAAd,EAAqB0iD,QAArB,CAAlB;AACD;AACF;;AACDhwB,MAAAA,GAAG,CAACi+B,SAAJ;AACAj+B,MAAAA,GAAG,CAACuU,IAAJ,CAASnjC,IAAI,GAAG,SAAH,GAAe,SAA5B;AACA4uB,MAAAA,GAAG,CAACguB,OAAJ;AACD;AA3BsB;AAAA;AAAA;AAAA;AAAA;AA4BxB;;AACD,SAASgd,MAAT,CAAgBhrC,GAAhB,EAAqBrH,GAArB,EAA0B;AACxB,MAAO2Y,IAAP,GAAkD3Y,GAAlD,CAAO2Y,IAAP;AAAA,MAAanxB,MAAb,GAAkDwY,GAAlD,CAAaxY,MAAb;AAAA,MAAqB8qD,KAArB,GAAkDtyC,GAAlD,CAAqBsyC,KAArB;AAAA,MAA4B7B,KAA5B,GAAkDzwC,GAAlD,CAA4BywC,KAA5B;AAAA,MAAmC9kC,IAAnC,GAAkD3L,GAAlD,CAAmC2L,IAAnC;AAAA,MAAyChrB,KAAzC,GAAkDqf,GAAlD,CAAyCrf,KAAzC;AACA,MAAM02C,QAAQ,GAAG1e,IAAI,CAACnY,KAAL,GAAa,OAAb,GAAuBR,GAAG,CAAC8F,IAA5C;AACAuB,EAAAA,GAAG,CAAC8tB,IAAJ;;AACA,MAAIkC,QAAQ,KAAK,GAAb,IAAoBoZ,KAAK,KAAK6B,KAAlC,EAAyC;AACvC9mC,IAAAA,KAAK,CAACnE,GAAD,EAAM7f,MAAN,EAAcmkB,IAAI,CAAC11B,GAAnB,CAAL;;AACAi8D,IAAAA,KAAK,CAAC7qC,GAAD,EAAM;AAACsR,MAAAA,IAAI,EAAJA,IAAD;AAAOnxB,MAAAA,MAAM,EAANA,MAAP;AAAegY,MAAAA,KAAK,EAAE8yC,KAAtB;AAA6B3xD,MAAAA,KAAK,EAALA,KAA7B;AAAoC02C,MAAAA,QAAQ,EAARA;AAApC,KAAN,CAAL;;AACAhwB,IAAAA,GAAG,CAACguB,OAAJ;AACAhuB,IAAAA,GAAG,CAAC8tB,IAAJ;;AACA3pB,IAAAA,KAAK,CAACnE,GAAD,EAAM7f,MAAN,EAAcmkB,IAAI,CAACz1B,MAAnB,CAAL;AACD;;AACDg8D,EAAAA,KAAK,CAAC7qC,GAAD,EAAM;AAACsR,IAAAA,IAAI,EAAJA,IAAD;AAAOnxB,IAAAA,MAAM,EAANA,MAAP;AAAegY,IAAAA,KAAK,EAAEixC,KAAtB;AAA6B9vD,IAAAA,KAAK,EAALA,KAA7B;AAAoC02C,IAAAA,QAAQ,EAARA;AAApC,GAAN,CAAL;;AACAhwB,EAAAA,GAAG,CAACguB,OAAJ;AACD;;AACD,SAASkd,QAAT,CAAkBlrC,GAAlB,EAAuBqoB,MAAvB,EAA+B/jB,IAA/B,EAAqC;AACnC,MAAMnkB,MAAM,GAAGwpD,SAAS,CAACthB,MAAD,CAAxB;AACA,MAAO/W,IAAP,GAA4B+W,MAA5B,CAAO/W,IAAP;AAAA,MAAah4B,KAAb,GAA4B+uC,MAA5B,CAAa/uC,KAAb;AAAA,MAAoBmlB,IAApB,GAA4B4pB,MAA5B,CAAoB5pB,IAApB;AACA,MAAM0sC,QAAQ,GAAG75B,IAAI,CAACnlC,OAAtB;AACA,MAAMi8D,UAAU,GAAG+C,QAAQ,CAAC52B,IAA5B;AACA,MAAMpc,KAAK,GAAGgzC,QAAQ,CAACv/D,eAAvB;;AACA,cAAuCw8D,UAAU,IAAI,EAArD;AAAA,0BAAO6C,KAAP;AAAA,MAAOA,KAAP,4BAAe9yC,KAAf;AAAA,0BAAsBixC,KAAtB;AAAA,MAAsBA,KAAtB,4BAA8BjxC,KAA9B;;AACA,MAAIhY,MAAM,IAAImxB,IAAI,CAACnF,MAAL,CAAYrhC,MAA1B,EAAkC;AAChC,2BAASk1B,GAAT,EAAcsE,IAAd;AACA0mC,IAAAA,MAAM,CAAChrC,GAAD,EAAM;AAACsR,MAAAA,IAAI,EAAJA,IAAD;AAAOnxB,MAAAA,MAAM,EAANA,MAAP;AAAe8qD,MAAAA,KAAK,EAALA,KAAf;AAAsB7B,MAAAA,KAAK,EAALA,KAAtB;AAA6B9kC,MAAAA,IAAI,EAAJA,IAA7B;AAAmChrB,MAAAA,KAAK,EAALA,KAAnC;AAA0CmlB,MAAAA,IAAI,EAAJA;AAA1C,KAAN,CAAN;AACA,2BAAWuB,GAAX;AACD;AACF;;AACD,IAAIorC,aAAa,GAAG;AAClBviD,EAAAA,EAAE,EAAE,QADc;AAElBwiD,EAAAA,mBAFkB,+BAEEp/D,KAFF,EAESq/D,KAFT,EAEgBn/D,OAFhB,EAEyB;AACzC,QAAMsB,KAAK,GAAG,CAACxB,KAAK,CAACC,IAAN,CAAWvB,QAAX,IAAuB,EAAxB,EAA4BG,MAA1C;AACA,QAAM++D,OAAO,GAAG,EAAhB;AACA,QAAI55C,IAAJ,EAAU3kB,CAAV,EAAagmC,IAAb,EAAmB+W,MAAnB;;AACA,SAAK/8C,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGmC,KAAhB,EAAuB,EAAEnC,CAAzB,EAA4B;AAC1B2kB,MAAAA,IAAI,GAAGhkB,KAAK,CAAC41B,cAAN,CAAqBv2B,CAArB,CAAP;AACAgmC,MAAAA,IAAI,GAAGrhB,IAAI,CAAC5kB,OAAZ;AACAg9C,MAAAA,MAAM,GAAG,IAAT;;AACA,UAAI/W,IAAI,IAAIA,IAAI,CAACnlC,OAAb,IAAwBmlC,IAAI,YAAYxoC,WAA5C,EAAyD;AACvDu/C,QAAAA,MAAM,GAAG;AACP9tB,UAAAA,OAAO,EAAEtuB,KAAK,CAACoiC,gBAAN,CAAuB/iC,CAAvB,CADF;AAEPoB,UAAAA,KAAK,EAAEpB,CAFA;AAGPipC,UAAAA,IAAI,EAAE8zB,UAAU,CAAC/2B,IAAD,EAAOhmC,CAAP,EAAUmC,KAAV,CAHT;AAIPxB,UAAAA,KAAK,EAALA,KAJO;AAKPwyB,UAAAA,IAAI,EAAExO,IAAI,CAAC7J,UAAL,CAAgBja,OAAhB,CAAwBm1B,SALvB;AAMPhoB,UAAAA,KAAK,EAAE2W,IAAI,CAAC+N,MANL;AAOPsT,UAAAA,IAAI,EAAJA;AAPO,SAAT;AASD;;AACDrhB,MAAAA,IAAI,CAACs7C,OAAL,GAAeljB,MAAf;AACAwhB,MAAAA,OAAO,CAACx8D,IAAR,CAAag7C,MAAb;AACD;;AACD,SAAK/8C,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGmC,KAAhB,EAAuB,EAAEnC,CAAzB,EAA4B;AAC1B+8C,MAAAA,MAAM,GAAGwhB,OAAO,CAACv+D,CAAD,CAAhB;;AACA,UAAI,CAAC+8C,MAAD,IAAWA,MAAM,CAAC9T,IAAP,KAAgB,KAA/B,EAAsC;AACpC;AACD;;AACD8T,MAAAA,MAAM,CAAC9T,IAAP,GAAcq1B,aAAa,CAACC,OAAD,EAAUv+D,CAAV,EAAaa,OAAO,CAAC29D,SAArB,CAA3B;AACD;AACF,GA/BiB;AAgClB0B,EAAAA,UAhCkB,sBAgCPv/D,KAhCO,EAgCAq/D,KAhCA,EAgCOn/D,OAhCP,EAgCgB;AAChC,QAAM8qB,IAAI,GAAG9qB,OAAO,CAACs/D,QAAR,KAAqB,YAAlC;AACA,QAAMrvC,QAAQ,GAAGnwB,KAAK,CAACwpC,4BAAN,EAAjB;AACA,QAAMnR,IAAI,GAAGr4B,KAAK,CAACs4B,SAAnB;;AACA,SAAK,IAAIj5B,CAAC,GAAG8wB,QAAQ,CAACtxB,MAAT,GAAkB,CAA/B,EAAkCQ,CAAC,IAAI,CAAvC,EAA0C,EAAEA,CAA5C,EAA+C;AAC7C,UAAM+8C,MAAM,GAAGjsB,QAAQ,CAAC9wB,CAAD,CAAR,CAAYigE,OAA3B;;AACA,UAAI,CAACljB,MAAL,EAAa;AACX;AACD;;AACDA,MAAAA,MAAM,CAAC/W,IAAP,CAAYiB,mBAAZ,CAAgCjO,IAAhC,EAAsC+jB,MAAM,CAAC5pB,IAA7C;;AACA,UAAIxH,IAAJ,EAAU;AACRi0C,QAAAA,QAAQ,CAACj/D,KAAK,CAAC+zB,GAAP,EAAYqoB,MAAZ,EAAoB/jB,IAApB,CAAR;AACD;AACF;AACF,GA9CiB;AA+ClBonC,EAAAA,kBA/CkB,8BA+CCz/D,KA/CD,EA+CQq/D,KA/CR,EA+Cen/D,OA/Cf,EA+CwB;AACxC,QAAIA,OAAO,CAACs/D,QAAR,KAAqB,oBAAzB,EAA+C;AAC7C;AACD;;AACD,QAAMrvC,QAAQ,GAAGnwB,KAAK,CAACwpC,4BAAN,EAAjB;;AACA,SAAK,IAAInqC,CAAC,GAAG8wB,QAAQ,CAACtxB,MAAT,GAAkB,CAA/B,EAAkCQ,CAAC,IAAI,CAAvC,EAA0C,EAAEA,CAA5C,EAA+C;AAC7C,UAAM+8C,MAAM,GAAGjsB,QAAQ,CAAC9wB,CAAD,CAAR,CAAYigE,OAA3B;;AACA,UAAIljB,MAAJ,EAAY;AACV6iB,QAAAA,QAAQ,CAACj/D,KAAK,CAAC+zB,GAAP,EAAYqoB,MAAZ,EAAoBp8C,KAAK,CAACs4B,SAA1B,CAAR;AACD;AACF;AACF,GA1DiB;AA2DlBonC,EAAAA,iBA3DkB,6BA2DA1/D,KA3DA,EA2DOmjB,IA3DP,EA2DajjB,OA3Db,EA2DsB;AACtC,QAAMk8C,MAAM,GAAGj5B,IAAI,CAACa,IAAL,CAAUs7C,OAAzB;;AACA,QAAI,CAACljB,MAAD,IAAWA,MAAM,CAAC9T,IAAP,KAAgB,KAA3B,IAAoCpoC,OAAO,CAACs/D,QAAR,KAAqB,mBAA7D,EAAkF;AAChF;AACD;;AACDP,IAAAA,QAAQ,CAACj/D,KAAK,CAAC+zB,GAAP,EAAYqoB,MAAZ,EAAoBp8C,KAAK,CAACs4B,SAA1B,CAAR;AACD,GAjEiB;AAkElB/6B,EAAAA,QAAQ,EAAE;AACRsgE,IAAAA,SAAS,EAAE,IADH;AAER2B,IAAAA,QAAQ,EAAE;AAFF;AAlEQ,CAApB;;;AAwEA,IAAMG,UAAU,GAAG,SAAbA,UAAa,CAACC,SAAD,EAAY/hE,QAAZ,EAAyB;AAC1C,6BAAkD+hE,SAAlD,CAAKC,SAAL;AAAA,MAAKA,SAAL,qCAAiBhiE,QAAjB;AAAA,4BAAkD+hE,SAAlD,CAA2BE,QAA3B;AAAA,MAA2BA,QAA3B,oCAAsCjiE,QAAtC;;AACA,MAAI+hE,SAAS,CAACG,aAAd,EAA6B;AAC3BF,IAAAA,SAAS,GAAGj+D,IAAI,CAACyH,GAAL,CAASw2D,SAAT,EAAoBhiE,QAApB,CAAZ;AACAiiE,IAAAA,QAAQ,GAAGl+D,IAAI,CAACyH,GAAL,CAASy2D,QAAT,EAAmBjiE,QAAnB,CAAX;AACD;;AACD,SAAO;AACLiiE,IAAAA,QAAQ,EAARA,QADK;AAELD,IAAAA,SAAS,EAATA,SAFK;AAGLG,IAAAA,UAAU,EAAEp+D,IAAI,CAAC0H,GAAL,CAASzL,QAAT,EAAmBgiE,SAAnB;AAHP,GAAP;AAKD,CAXD;;AAYA,IAAMI,UAAU,GAAG,SAAbA,UAAa,CAACj+C,CAAD,EAAI7gB,CAAJ;AAAA,SAAU6gB,CAAC,KAAK,IAAN,IAAc7gB,CAAC,KAAK,IAApB,IAA4B6gB,CAAC,CAAC2O,YAAF,KAAmBxvB,CAAC,CAACwvB,YAAjD,IAAiE3O,CAAC,CAACvhB,KAAF,KAAYU,CAAC,CAACV,KAAzF;AAAA,CAAnB;;IACM9D;;;;;AACJ,kBAAY6xB,MAAZ,EAAoB;AAAA;;AAAA;;AAClB;AACA,YAAK0xC,MAAL,GAAc,KAAd;AACA,YAAKC,cAAL,GAAsB,EAAtB;AACA,YAAKC,YAAL,GAAoB,IAApB;AACA,YAAKC,YAAL,GAAoB,KAApB;AACA,YAAKrgE,KAAL,GAAawuB,MAAM,CAACxuB,KAApB;AACA,YAAKE,OAAL,GAAesuB,MAAM,CAACtuB,OAAtB;AACA,YAAK6zB,GAAL,GAAWvF,MAAM,CAACuF,GAAlB;AACA,YAAKusC,WAAL,GAAmB1hE,SAAnB;AACA,YAAK2hE,WAAL,GAAmB3hE,SAAnB;AACA,YAAK4hE,UAAL,GAAkB5hE,SAAlB;AACA,YAAKokC,SAAL,GAAiBpkC,SAAjB;AACA,YAAKmkC,QAAL,GAAgBnkC,SAAhB;AACA,YAAK+D,GAAL,GAAW/D,SAAX;AACA,YAAKgE,MAAL,GAAchE,SAAd;AACA,YAAKiE,IAAL,GAAYjE,SAAZ;AACA,YAAKkE,KAAL,GAAalE,SAAb;AACA,YAAKmE,MAAL,GAAcnE,SAAd;AACA,YAAKoE,KAAL,GAAapE,SAAb;AACA,YAAK86C,QAAL,GAAgB96C,SAAhB;AACA,YAAKY,QAAL,GAAgBZ,SAAhB;AACA,YAAKd,MAAL,GAAcc,SAAd;AACA,YAAK4uC,QAAL,GAAgB5uC,SAAhB;AAvBkB;AAwBnB;;;;WACD,gBAAOmkC,QAAP,EAAiBC,SAAjB,EAA4BoY,OAA5B,EAAqC;AACnC,WAAKrY,QAAL,GAAgBA,QAAhB;AACA,WAAKC,SAAL,GAAiBA,SAAjB;AACA,WAAK0W,QAAL,GAAgB0B,OAAhB;AACA,WAAKG,aAAL;AACA,WAAKklB,WAAL;AACA,WAAKnkB,GAAL;AACD;;;WACD,yBAAgB;AACd,UAAI,KAAKzf,YAAL,EAAJ,EAAyB;AACvB,aAAK75B,KAAL,GAAa,KAAK+/B,QAAlB;AACA,aAAKlgC,IAAL,GAAY,KAAK62C,QAAL,CAAc72C,IAA1B;AACA,aAAKC,KAAL,GAAa,KAAKE,KAAlB;AACD,OAJD,MAIO;AACL,aAAKD,MAAL,GAAc,KAAKigC,SAAnB;AACA,aAAKrgC,GAAL,GAAW,KAAK+2C,QAAL,CAAc/2C,GAAzB;AACA,aAAKC,MAAL,GAAc,KAAKG,MAAnB;AACD;AACF;;;WACD,uBAAc;AAAA;;AACZ,UAAM68D,SAAS,GAAG,KAAK1/D,OAAL,CAAa3B,MAAb,IAAuB,EAAzC;AACA,UAAI+hE,WAAW,GAAG,uBAASV,SAAS,CAACp7B,cAAnB,EAAmC,CAAC,KAAKxkC,KAAN,CAAnC,EAAiD,IAAjD,KAA0D,EAA5E;;AACA,UAAI4/D,SAAS,CAAC9iD,MAAd,EAAsB;AACpBwjD,QAAAA,WAAW,GAAGA,WAAW,CAACxjD,MAAZ,CAAmB,UAAC7a,IAAD;AAAA,iBAAU29D,SAAS,CAAC9iD,MAAV,CAAiB7a,IAAjB,EAAuB,OAAI,CAACjC,KAAL,CAAWC,IAAlC,CAAV;AAAA,SAAnB,CAAd;AACD;;AACD,UAAI2/D,SAAS,CAAC/kC,IAAd,EAAoB;AAClBylC,QAAAA,WAAW,GAAGA,WAAW,CAACzlC,IAAZ,CAAiB,UAAC7Y,CAAD,EAAI7gB,CAAJ;AAAA,iBAAUy+D,SAAS,CAAC/kC,IAAV,CAAe7Y,CAAf,EAAkB7gB,CAAlB,EAAqB,OAAI,CAACnB,KAAL,CAAWC,IAAhC,CAAV;AAAA,SAAjB,CAAd;AACD;;AACD,UAAI,KAAKC,OAAL,CAAawvB,OAAjB,EAA0B;AACxB4wC,QAAAA,WAAW,CAAC5wC,OAAZ;AACD;;AACD,WAAK4wC,WAAL,GAAmBA,WAAnB;AACD;;;WACD,eAAM;AACJ,UAAOpgE,OAAP,GAAuB,IAAvB,CAAOA,OAAP;AAAA,UAAgB6zB,GAAhB,GAAuB,IAAvB,CAAgBA,GAAhB;;AACA,UAAI,CAAC7zB,OAAO,CAACpB,OAAb,EAAsB;AACpB,aAAKkE,KAAL,GAAa,KAAKD,MAAL,GAAc,CAA3B;AACA;AACD;;AACD,UAAM68D,SAAS,GAAG1/D,OAAO,CAAC3B,MAA1B;AACA,UAAMmiE,SAAS,GAAG,uBAAOd,SAAS,CAACpiE,IAAjB,CAAlB;AACA,UAAMK,QAAQ,GAAG6iE,SAAS,CAAC/iE,IAA3B;;AACA,UAAMmgD,WAAW,GAAG,KAAK6iB,mBAAL,EAApB;;AACA,wBAA+BhB,UAAU,CAACC,SAAD,EAAY/hE,QAAZ,CAAzC;AAAA,UAAOiiE,QAAP,eAAOA,QAAP;AAAA,UAAiBE,UAAjB,eAAiBA,UAAjB;;AACA,UAAIh9D,KAAJ,EAAWD,MAAX;AACAgxB,MAAAA,GAAG,CAACv2B,IAAJ,GAAWkjE,SAAS,CAACvhB,MAArB;;AACA,UAAI,KAAKtiB,YAAL,EAAJ,EAAyB;AACvB75B,QAAAA,KAAK,GAAG,KAAK+/B,QAAb;AACAhgC,QAAAA,MAAM,GAAG,KAAK69D,QAAL,CAAc9iB,WAAd,EAA2BjgD,QAA3B,EAAqCiiE,QAArC,EAA+CE,UAA/C,IAA6D,EAAtE;AACD,OAHD,MAGO;AACLj9D,QAAAA,MAAM,GAAG,KAAKigC,SAAd;AACAhgC,QAAAA,KAAK,GAAG,KAAK69D,QAAL,CAAc/iB,WAAd,EAA2BjgD,QAA3B,EAAqCiiE,QAArC,EAA+CE,UAA/C,IAA6D,EAArE;AACD;;AACD,WAAKh9D,KAAL,GAAapB,IAAI,CAACyH,GAAL,CAASrG,KAAT,EAAgB9C,OAAO,CAAC6iC,QAAR,IAAoB,KAAKA,QAAzC,CAAb;AACA,WAAKhgC,MAAL,GAAcnB,IAAI,CAACyH,GAAL,CAAStG,MAAT,EAAiB7C,OAAO,CAAC8iC,SAAR,IAAqB,KAAKA,SAA3C,CAAd;AACD;;;WACD,kBAAS8a,WAAT,EAAsBjgD,QAAtB,EAAgCiiE,QAAhC,EAA0CE,UAA1C,EAAsD;AACpD,UAAOjsC,GAAP,GAAsD,IAAtD,CAAOA,GAAP;AAAA,UAAYgP,QAAZ,GAAsD,IAAtD,CAAYA,QAAZ;AAAA,UAAyC6M,OAAzC,GAAsD,IAAtD,CAAsB1vC,OAAtB,CAAgC3B,MAAhC,CAAyCqxC,OAAzC;AACA,UAAMkxB,QAAQ,GAAG,KAAKX,cAAL,GAAsB,EAAvC;AACA,UAAMK,UAAU,GAAG,KAAKA,UAAL,GAAkB,CAAC,CAAD,CAArC;AACA,UAAMvnB,UAAU,GAAG+mB,UAAU,GAAGpwB,OAAhC;AACA,UAAImxB,WAAW,GAAGjjB,WAAlB;AACA/pB,MAAAA,GAAG,CAACmtB,SAAJ,GAAgB,MAAhB;AACAntB,MAAAA,GAAG,CAACstB,YAAJ,GAAmB,QAAnB;AACA,UAAI2f,GAAG,GAAG,CAAC,CAAX;AACA,UAAIr+D,GAAG,GAAG,CAACs2C,UAAX;AACA,WAAKqnB,WAAL,CAAiB/8D,OAAjB,CAAyB,UAACwhC,UAAD,EAAa1lC,CAAb,EAAmB;AAC1C,YAAM4hE,SAAS,GAAGnB,QAAQ,GAAIjiE,QAAQ,GAAG,CAAvB,GAA4Bk2B,GAAG,CAACmtC,WAAJ,CAAgBn8B,UAAU,CAAChmC,IAA3B,EAAiCiE,KAA/E;;AACA,YAAI3D,CAAC,KAAK,CAAN,IAAWmhE,UAAU,CAACA,UAAU,CAAC3hE,MAAX,GAAoB,CAArB,CAAV,GAAoCoiE,SAApC,GAAgD,IAAIrxB,OAApD,GAA8D7M,QAA7E,EAAuF;AACrFg+B,UAAAA,WAAW,IAAI9nB,UAAf;AACAunB,UAAAA,UAAU,CAACA,UAAU,CAAC3hE,MAAX,IAAqBQ,CAAC,GAAG,CAAJ,GAAQ,CAAR,GAAY,CAAjC,CAAD,CAAV,GAAkD,CAAlD;AACAsD,UAAAA,GAAG,IAAIs2C,UAAP;AACA+nB,UAAAA,GAAG;AACJ;;AACDF,QAAAA,QAAQ,CAACzhE,CAAD,CAAR,GAAc;AAACwD,UAAAA,IAAI,EAAE,CAAP;AAAUF,UAAAA,GAAG,EAAHA,GAAV;AAAeq+D,UAAAA,GAAG,EAAHA,GAAf;AAAoBh+D,UAAAA,KAAK,EAAEi+D,SAA3B;AAAsCl+D,UAAAA,MAAM,EAAEi9D;AAA9C,SAAd;AACAQ,QAAAA,UAAU,CAACA,UAAU,CAAC3hE,MAAX,GAAoB,CAArB,CAAV,IAAqCoiE,SAAS,GAAGrxB,OAAjD;AACD,OAVD;AAWA,aAAOmxB,WAAP;AACD;;;WACD,kBAASjjB,WAAT,EAAsBjgD,QAAtB,EAAgCiiE,QAAhC,EAA0CE,UAA1C,EAAsD;AACpD,UAAOjsC,GAAP,GAAuD,IAAvD,CAAOA,GAAP;AAAA,UAAYiP,SAAZ,GAAuD,IAAvD,CAAYA,SAAZ;AAAA,UAA0C4M,OAA1C,GAAuD,IAAvD,CAAuB1vC,OAAvB,CAAiC3B,MAAjC,CAA0CqxC,OAA1C;AACA,UAAMkxB,QAAQ,GAAG,KAAKX,cAAL,GAAsB,EAAvC;AACA,UAAMI,WAAW,GAAG,KAAKA,WAAL,GAAmB,EAAvC;AACA,UAAMY,WAAW,GAAGn+B,SAAS,GAAG8a,WAAhC;AACA,UAAIsjB,UAAU,GAAGxxB,OAAjB;AACA,UAAIyxB,eAAe,GAAG,CAAtB;AACA,UAAIC,gBAAgB,GAAG,CAAvB;AACA,UAAIz+D,IAAI,GAAG,CAAX;AACA,UAAI0+D,GAAG,GAAG,CAAV;AACA,WAAKjB,WAAL,CAAiB/8D,OAAjB,CAAyB,UAACwhC,UAAD,EAAa1lC,CAAb,EAAmB;AAC1C,YAAM4hE,SAAS,GAAGnB,QAAQ,GAAIjiE,QAAQ,GAAG,CAAvB,GAA4Bk2B,GAAG,CAACmtC,WAAJ,CAAgBn8B,UAAU,CAAChmC,IAA3B,EAAiCiE,KAA/E;;AACA,YAAI3D,CAAC,GAAG,CAAJ,IAASiiE,gBAAgB,GAAGtB,UAAnB,GAAgC,IAAIpwB,OAApC,GAA8CuxB,WAA3D,EAAwE;AACtEC,UAAAA,UAAU,IAAIC,eAAe,GAAGzxB,OAAhC;AACA2wB,UAAAA,WAAW,CAACn/D,IAAZ,CAAiB;AAAC4B,YAAAA,KAAK,EAAEq+D,eAAR;AAAyBt+D,YAAAA,MAAM,EAAEu+D;AAAjC,WAAjB;AACAz+D,UAAAA,IAAI,IAAIw+D,eAAe,GAAGzxB,OAA1B;AACA2xB,UAAAA,GAAG;AACHF,UAAAA,eAAe,GAAGC,gBAAgB,GAAG,CAArC;AACD;;AACDR,QAAAA,QAAQ,CAACzhE,CAAD,CAAR,GAAc;AAACwD,UAAAA,IAAI,EAAJA,IAAD;AAAOF,UAAAA,GAAG,EAAE2+D,gBAAZ;AAA8BC,UAAAA,GAAG,EAAHA,GAA9B;AAAmCv+D,UAAAA,KAAK,EAAEi+D,SAA1C;AAAqDl+D,UAAAA,MAAM,EAAEi9D;AAA7D,SAAd;AACAqB,QAAAA,eAAe,GAAGz/D,IAAI,CAAC0H,GAAL,CAAS+3D,eAAT,EAA0BJ,SAA1B,CAAlB;AACAK,QAAAA,gBAAgB,IAAItB,UAAU,GAAGpwB,OAAjC;AACD,OAZD;AAaAwxB,MAAAA,UAAU,IAAIC,eAAd;AACAd,MAAAA,WAAW,CAACn/D,IAAZ,CAAiB;AAAC4B,QAAAA,KAAK,EAAEq+D,eAAR;AAAyBt+D,QAAAA,MAAM,EAAEu+D;AAAjC,OAAjB;AACA,aAAOF,UAAP;AACD;;;WACD,0BAAiB;AACf,UAAI,CAAC,KAAKlhE,OAAL,CAAapB,OAAlB,EAA2B;AACzB;AACD;;AACD,UAAMg/C,WAAW,GAAG,KAAK6iB,mBAAL,EAApB;;AACA,UAAuBG,QAAvB,GAA6E,IAA7E,CAAOX,cAAP;AAAA,4BAA6E,IAA7E,CAAiCjgE,OAAjC;AAAA,UAA2C+1C,KAA3C,mBAA2CA,KAA3C;AAAA,UAA2DrG,OAA3D,mBAAkDrxC,MAAlD,CAA2DqxC,OAA3D;AAAA,UAAqE4xB,GAArE,mBAAqEA,GAArE;AACA,UAAMC,SAAS,GAAG,wBAAcD,GAAd,EAAmB,KAAK3+D,IAAxB,EAA8B,KAAKG,KAAnC,CAAlB;;AACA,UAAI,KAAK65B,YAAL,EAAJ,EAAyB;AACvB,YAAImkC,GAAG,GAAG,CAAV;AACA,YAAIn+D,IAAI,GAAG,wBAAeozC,KAAf,EAAsB,KAAKpzC,IAAL,GAAY+sC,OAAlC,EAA2C,KAAK9sC,KAAL,GAAa,KAAK09D,UAAL,CAAgBQ,GAAhB,CAAxD,CAAX;;AAFuB,qDAGFF,QAHE;AAAA;;AAAA;AAGvB,oEAA+B;AAAA,gBAApBY,MAAoB;;AAC7B,gBAAIV,GAAG,KAAKU,MAAM,CAACV,GAAnB,EAAwB;AACtBA,cAAAA,GAAG,GAAGU,MAAM,CAACV,GAAb;AACAn+D,cAAAA,IAAI,GAAG,wBAAeozC,KAAf,EAAsB,KAAKpzC,IAAL,GAAY+sC,OAAlC,EAA2C,KAAK9sC,KAAL,GAAa,KAAK09D,UAAL,CAAgBQ,GAAhB,CAAxD,CAAP;AACD;;AACDU,YAAAA,MAAM,CAAC/+D,GAAP,IAAc,KAAKA,GAAL,GAAWm7C,WAAX,GAAyBlO,OAAvC;AACA8xB,YAAAA,MAAM,CAAC7+D,IAAP,GAAc4+D,SAAS,CAACE,UAAV,CAAqBF,SAAS,CAAC70D,CAAV,CAAY/J,IAAZ,CAArB,EAAwC6+D,MAAM,CAAC1+D,KAA/C,CAAd;AACAH,YAAAA,IAAI,IAAI6+D,MAAM,CAAC1+D,KAAP,GAAe4sC,OAAvB;AACD;AAXsB;AAAA;AAAA;AAAA;AAAA;AAYxB,OAZD,MAYO;AACL,YAAI2xB,GAAG,GAAG,CAAV;AACA,YAAI5+D,GAAG,GAAG,wBAAeszC,KAAf,EAAsB,KAAKtzC,GAAL,GAAWm7C,WAAX,GAAyBlO,OAA/C,EAAwD,KAAKhtC,MAAL,GAAc,KAAK29D,WAAL,CAAiBgB,GAAjB,EAAsBx+D,MAA5F,CAAV;;AAFK,qDAGgB+9D,QAHhB;AAAA;;AAAA;AAGL,oEAA+B;AAAA,gBAApBY,OAAoB;;AAC7B,gBAAIA,OAAM,CAACH,GAAP,KAAeA,GAAnB,EAAwB;AACtBA,cAAAA,GAAG,GAAGG,OAAM,CAACH,GAAb;AACA5+D,cAAAA,GAAG,GAAG,wBAAeszC,KAAf,EAAsB,KAAKtzC,GAAL,GAAWm7C,WAAX,GAAyBlO,OAA/C,EAAwD,KAAKhtC,MAAL,GAAc,KAAK29D,WAAL,CAAiBgB,GAAjB,EAAsBx+D,MAA5F,CAAN;AACD;;AACD2+D,YAAAA,OAAM,CAAC/+D,GAAP,GAAaA,GAAb;AACA++D,YAAAA,OAAM,CAAC7+D,IAAP,IAAe,KAAKA,IAAL,GAAY+sC,OAA3B;AACA8xB,YAAAA,OAAM,CAAC7+D,IAAP,GAAc4+D,SAAS,CAACE,UAAV,CAAqBF,SAAS,CAAC70D,CAAV,CAAY80D,OAAM,CAAC7+D,IAAnB,CAArB,EAA+C6+D,OAAM,CAAC1+D,KAAtD,CAAd;AACAL,YAAAA,GAAG,IAAI++D,OAAM,CAAC3+D,MAAP,GAAgB6sC,OAAvB;AACD;AAZI;AAAA;AAAA;AAAA;AAAA;AAaN;AACF;;;WACD,wBAAe;AACb,aAAO,KAAK1vC,OAAL,CAAaV,QAAb,KAA0B,KAA1B,IAAmC,KAAKU,OAAL,CAAaV,QAAb,KAA0B,QAApE;AACD;;;WACD,gBAAO;AACL,UAAI,KAAKU,OAAL,CAAapB,OAAjB,EAA0B;AACxB,YAAMi1B,GAAG,GAAG,KAAKA,GAAjB;AACA,+BAASA,GAAT,EAAc,IAAd;;AACA,aAAK6tC,KAAL;;AACA,+BAAW7tC,GAAX;AACD;AACF;;;WACD,iBAAQ;AAAA;;AACN,UAAgBpqB,IAAhB,GAAsD,IAAtD,CAAOzJ,OAAP;AAAA,UAAsBqgE,WAAtB,GAAsD,IAAtD,CAAsBA,WAAtB;AAAA,UAAmCC,UAAnC,GAAsD,IAAtD,CAAmCA,UAAnC;AAAA,UAA+CzsC,GAA/C,GAAsD,IAAtD,CAA+CA,GAA/C;AACA,UAAOkiB,KAAP,GAAmCtsC,IAAnC,CAAOssC,KAAP;AAAA,UAAsB2pB,SAAtB,GAAmCj2D,IAAnC,CAAcpL,MAAd;AACA,UAAMsjE,YAAY,GAAGtkE,kBAAS2uB,KAA9B;AACA,UAAMu1C,SAAS,GAAG,wBAAc93D,IAAI,CAAC63D,GAAnB,EAAwB,KAAK3+D,IAA7B,EAAmC,KAAKG,KAAxC,CAAlB;AACA,UAAM09D,SAAS,GAAG,uBAAOd,SAAS,CAACpiE,IAAjB,CAAlB;AACA,UAAcskE,SAAd,GAAoClC,SAApC,CAAO1zC,KAAP;AAAA,UAAyB0jB,OAAzB,GAAoCgwB,SAApC,CAAyBhwB,OAAzB;AACA,UAAM/xC,QAAQ,GAAG6iE,SAAS,CAAC/iE,IAA3B;AACA,UAAMokE,YAAY,GAAGlkE,QAAQ,GAAG,CAAhC;AACA,UAAImkE,MAAJ;AACA,WAAKhf,SAAL;AACAjvB,MAAAA,GAAG,CAACmtB,SAAJ,GAAgBugB,SAAS,CAACvgB,SAAV,CAAoB,MAApB,CAAhB;AACAntB,MAAAA,GAAG,CAACstB,YAAJ,GAAmB,QAAnB;AACAttB,MAAAA,GAAG,CAAC8Q,SAAJ,GAAgB,GAAhB;AACA9Q,MAAAA,GAAG,CAACv2B,IAAJ,GAAWkjE,SAAS,CAACvhB,MAArB;;AACA,yBAA0CwgB,UAAU,CAACC,SAAD,EAAY/hE,QAAZ,CAApD;AAAA,UAAOiiE,QAAP,gBAAOA,QAAP;AAAA,UAAiBD,SAAjB,gBAAiBA,SAAjB;AAAA,UAA4BG,UAA5B,gBAA4BA,UAA5B;;AACA,UAAMiC,aAAa,GAAG,SAAhBA,aAAgB,CAASr1D,CAAT,EAAYC,CAAZ,EAAek4B,UAAf,EAA2B;AAC/C,YAAI30B,KAAK,CAAC0vD,QAAD,CAAL,IAAmBA,QAAQ,IAAI,CAA/B,IAAoC1vD,KAAK,CAACyvD,SAAD,CAAzC,IAAwDA,SAAS,GAAG,CAAxE,EAA2E;AACzE;AACD;;AACD9rC,QAAAA,GAAG,CAAC8tB,IAAJ;AACA,YAAMhd,SAAS,GAAG,uBAAeE,UAAU,CAACF,SAA1B,EAAqC,CAArC,CAAlB;AACA9Q,QAAAA,GAAG,CAAC2Q,SAAJ,GAAgB,uBAAeK,UAAU,CAACL,SAA1B,EAAqCm9B,YAArC,CAAhB;AACA9tC,QAAAA,GAAG,CAACohC,OAAJ,GAAc,uBAAepwB,UAAU,CAACowB,OAA1B,EAAmC,MAAnC,CAAd;AACAphC,QAAAA,GAAG,CAACuuB,cAAJ,GAAqB,uBAAevd,UAAU,CAACud,cAA1B,EAA0C,CAA1C,CAArB;AACAvuB,QAAAA,GAAG,CAACygC,QAAJ,GAAe,uBAAezvB,UAAU,CAACyvB,QAA1B,EAAoC,OAApC,CAAf;AACAzgC,QAAAA,GAAG,CAAC8Q,SAAJ,GAAgBA,SAAhB;AACA9Q,QAAAA,GAAG,CAAC4Q,WAAJ,GAAkB,uBAAeI,UAAU,CAACJ,WAA1B,EAAuCk9B,YAAvC,CAAlB;AACA9tC,QAAAA,GAAG,CAACsuB,WAAJ,CAAgB,uBAAetd,UAAU,CAACm9B,QAA1B,EAAoC,EAApC,CAAhB;;AACA,YAAItC,SAAS,CAACG,aAAd,EAA6B;AAC3B,cAAMoC,WAAW,GAAG;AAClBl0D,YAAAA,MAAM,EAAE6xD,QAAQ,GAAGl+D,IAAI,CAACwgE,KAAhB,GAAwB,CADd;AAElB39B,YAAAA,UAAU,EAAEM,UAAU,CAACN,UAFL;AAGlBhE,YAAAA,QAAQ,EAAEsE,UAAU,CAACtE,QAHH;AAIlByD,YAAAA,WAAW,EAAEW;AAJK,WAApB;AAMA,cAAMnB,OAAO,GAAG+9B,SAAS,CAACY,KAAV,CAAgBz1D,CAAhB,EAAmBkzD,QAAQ,GAAG,CAA9B,CAAhB;AACA,cAAMn8B,OAAO,GAAG92B,CAAC,GAAGk1D,YAApB;AACA,kCAAUhuC,GAAV,EAAeouC,WAAf,EAA4Bz+B,OAA5B,EAAqCC,OAArC;AACD,SAVD,MAUO;AACL,cAAM2+B,OAAO,GAAGz1D,CAAC,GAAGjL,IAAI,CAAC0H,GAAL,CAAS,CAACzL,QAAQ,GAAGgiE,SAAZ,IAAyB,CAAlC,EAAqC,CAArC,CAApB;AACA,cAAM0C,QAAQ,GAAGd,SAAS,CAACE,UAAV,CAAqB/0D,CAArB,EAAwBkzD,QAAxB,CAAjB;AACA,cAAM1N,YAAY,GAAG,wBAAcrtB,UAAU,CAACqtB,YAAzB,CAArB;AACAr+B,UAAAA,GAAG,CAACwuB,SAAJ;;AACA,cAAIr2C,MAAM,CAACuX,MAAP,CAAc2uC,YAAd,EAA4BnwC,IAA5B,CAAiC,UAAAuC,CAAC;AAAA,mBAAIA,CAAC,KAAK,CAAV;AAAA,WAAlC,CAAJ,EAAoD;AAClD,oCAAmBuP,GAAnB,EAAwB;AACtBnnB,cAAAA,CAAC,EAAE21D,QADmB;AAEtB11D,cAAAA,CAAC,EAAEy1D,OAFmB;AAGtBv1D,cAAAA,CAAC,EAAE+yD,QAHmB;AAItBlxB,cAAAA,CAAC,EAAEixB,SAJmB;AAKtB5xD,cAAAA,MAAM,EAAEmkD;AALc,aAAxB;AAOD,WARD,MAQO;AACLr+B,YAAAA,GAAG,CAAClsB,IAAJ,CAAS06D,QAAT,EAAmBD,OAAnB,EAA4BxC,QAA5B,EAAsCD,SAAtC;AACD;;AACD9rC,UAAAA,GAAG,CAACuU,IAAJ;;AACA,cAAIzD,SAAS,KAAK,CAAlB,EAAqB;AACnB9Q,YAAAA,GAAG,CAAC2uB,MAAJ;AACD;AACF;;AACD3uB,QAAAA,GAAG,CAACguB,OAAJ;AACD,OA7CD;;AA8CA,UAAMygB,QAAQ,GAAG,SAAXA,QAAW,CAAS51D,CAAT,EAAYC,CAAZ,EAAek4B,UAAf,EAA2B;AAC1C,+BAAWhR,GAAX,EAAgBgR,UAAU,CAAChmC,IAA3B,EAAiC6N,CAAjC,EAAoCC,CAAC,GAAImzD,UAAU,GAAG,CAAtD,EAA0DU,SAA1D,EAAqE;AACnE+B,UAAAA,aAAa,EAAE19B,UAAU,CAACpR,MADyC;AAEnEutB,UAAAA,SAAS,EAAEugB,SAAS,CAACvgB,SAAV,CAAoBnc,UAAU,CAACmc,SAA/B;AAFwD,SAArE;AAID,OALD;;AAMA,UAAMrkB,YAAY,GAAG,KAAKA,YAAL,EAArB;;AACA,UAAMihB,WAAW,GAAG,KAAK6iB,mBAAL,EAApB;;AACA,UAAI9jC,YAAJ,EAAkB;AAChBmlC,QAAAA,MAAM,GAAG;AACPp1D,UAAAA,CAAC,EAAE,wBAAeqpC,KAAf,EAAsB,KAAKpzC,IAAL,GAAY+sC,OAAlC,EAA2C,KAAK9sC,KAAL,GAAa09D,UAAU,CAAC,CAAD,CAAlE,CADI;AAEP3zD,UAAAA,CAAC,EAAE,KAAKlK,GAAL,GAAWitC,OAAX,GAAqBkO,WAFjB;AAGPzY,UAAAA,IAAI,EAAE;AAHC,SAAT;AAKD,OAND,MAMO;AACL28B,QAAAA,MAAM,GAAG;AACPp1D,UAAAA,CAAC,EAAE,KAAK/J,IAAL,GAAY+sC,OADR;AAEP/iC,UAAAA,CAAC,EAAE,wBAAeopC,KAAf,EAAsB,KAAKtzC,GAAL,GAAWm7C,WAAX,GAAyBlO,OAA/C,EAAwD,KAAKhtC,MAAL,GAAc29D,WAAW,CAAC,CAAD,CAAX,CAAex9D,MAArF,CAFI;AAGPsiC,UAAAA,IAAI,EAAE;AAHC,SAAT;AAKD;;AACD,8BAAsB,KAAKtR,GAA3B,EAAgCpqB,IAAI,CAAC+4D,aAArC;AACA,UAAMzpB,UAAU,GAAG+mB,UAAU,GAAGpwB,OAAhC;AACA,WAAK0wB,WAAL,CAAiB/8D,OAAjB,CAAyB,UAACwhC,UAAD,EAAa1lC,CAAb,EAAmB;AAC1C00B,QAAAA,GAAG,CAAC4Q,WAAJ,GAAkBI,UAAU,CAAC+8B,SAAX,IAAwBA,SAA1C;AACA/tC,QAAAA,GAAG,CAAC2Q,SAAJ,GAAgBK,UAAU,CAAC+8B,SAAX,IAAwBA,SAAxC;AACA,YAAMa,SAAS,GAAG5uC,GAAG,CAACmtC,WAAJ,CAAgBn8B,UAAU,CAAChmC,IAA3B,EAAiCiE,KAAnD;AACA,YAAMk+C,SAAS,GAAGugB,SAAS,CAACvgB,SAAV,CAAoBnc,UAAU,CAACmc,SAAX,KAAyBnc,UAAU,CAACmc,SAAX,GAAuB0e,SAAS,CAAC1e,SAA1D,CAApB,CAAlB;AACA,YAAMl+C,KAAK,GAAG88D,QAAQ,GAAGiC,YAAX,GAA0BY,SAAxC;AACA,YAAI/1D,CAAC,GAAGo1D,MAAM,CAACp1D,CAAf;AACA,YAAIC,CAAC,GAAGm1D,MAAM,CAACn1D,CAAf;AACA40D,QAAAA,SAAS,CAACmB,QAAV,CAAmB,OAAI,CAAC5/D,KAAxB;;AACA,YAAI65B,YAAJ,EAAkB;AAChB,cAAIx9B,CAAC,GAAG,CAAJ,IAASuN,CAAC,GAAG5J,KAAJ,GAAY4sC,OAAZ,GAAsB,OAAI,CAAC9sC,KAAxC,EAA+C;AAC7C+J,YAAAA,CAAC,GAAGm1D,MAAM,CAACn1D,CAAP,IAAYosC,UAAhB;AACA+oB,YAAAA,MAAM,CAAC38B,IAAP;AACAz4B,YAAAA,CAAC,GAAGo1D,MAAM,CAACp1D,CAAP,GAAW,wBAAeqpC,KAAf,EAAsB,OAAI,CAACpzC,IAAL,GAAY+sC,OAAlC,EAA2C,OAAI,CAAC9sC,KAAL,GAAa09D,UAAU,CAACwB,MAAM,CAAC38B,IAAR,CAAlE,CAAf;AACD;AACF,SAND,MAMO,IAAIhmC,CAAC,GAAG,CAAJ,IAASwN,CAAC,GAAGosC,UAAJ,GAAiB,OAAI,CAACr2C,MAAnC,EAA2C;AAChDgK,UAAAA,CAAC,GAAGo1D,MAAM,CAACp1D,CAAP,GAAWA,CAAC,GAAG2zD,WAAW,CAACyB,MAAM,CAAC38B,IAAR,CAAX,CAAyBriC,KAA7B,GAAqC4sC,OAApD;AACAoyB,UAAAA,MAAM,CAAC38B,IAAP;AACAx4B,UAAAA,CAAC,GAAGm1D,MAAM,CAACn1D,CAAP,GAAW,wBAAeopC,KAAf,EAAsB,OAAI,CAACtzC,GAAL,GAAWm7C,WAAX,GAAyBlO,OAA/C,EAAwD,OAAI,CAAChtC,MAAL,GAAc29D,WAAW,CAACyB,MAAM,CAAC38B,IAAR,CAAX,CAAyBtiC,MAA/F,CAAf;AACD;;AACD,YAAM8/D,KAAK,GAAGpB,SAAS,CAAC70D,CAAV,CAAYA,CAAZ,CAAd;AACAq1D,QAAAA,aAAa,CAACY,KAAD,EAAQh2D,CAAR,EAAWk4B,UAAX,CAAb;AACAn4B,QAAAA,CAAC,GAAG,wBAAOs0C,SAAP,EAAkBt0C,CAAC,GAAGkzD,QAAJ,GAAeiC,YAAjC,EAA+CllC,YAAY,GAAGjwB,CAAC,GAAG5J,KAAP,GAAe,OAAI,CAACF,KAA/E,EAAsF6G,IAAI,CAAC63D,GAA3F,CAAJ;AACAgB,QAAAA,QAAQ,CAACf,SAAS,CAAC70D,CAAV,CAAYA,CAAZ,CAAD,EAAiBC,CAAjB,EAAoBk4B,UAApB,CAAR;;AACA,YAAIlI,YAAJ,EAAkB;AAChBmlC,UAAAA,MAAM,CAACp1D,CAAP,IAAY5J,KAAK,GAAG4sC,OAApB;AACD,SAFD,MAEO;AACLoyB,UAAAA,MAAM,CAACn1D,CAAP,IAAYosC,UAAZ;AACD;AACF,OA7BD;AA8BA,8BAAqB,KAAKllB,GAA1B,EAA+BpqB,IAAI,CAAC+4D,aAApC;AACD;;;WACD,qBAAY;AACV,UAAM/4D,IAAI,GAAG,KAAKzJ,OAAlB;AACA,UAAM09C,SAAS,GAAGj0C,IAAI,CAAChL,KAAvB;AACA,UAAMmkE,SAAS,GAAG,uBAAOllB,SAAS,CAACpgD,IAAjB,CAAlB;AACA,UAAMulE,YAAY,GAAG,uBAAUnlB,SAAS,CAAChO,OAApB,CAArB;;AACA,UAAI,CAACgO,SAAS,CAAC9+C,OAAf,EAAwB;AACtB;AACD;;AACD,UAAM2iE,SAAS,GAAG,wBAAc93D,IAAI,CAAC63D,GAAnB,EAAwB,KAAK3+D,IAA7B,EAAmC,KAAKG,KAAxC,CAAlB;AACA,UAAM+wB,GAAG,GAAG,KAAKA,GAAjB;AACA,UAAMv0B,QAAQ,GAAGo+C,SAAS,CAACp+C,QAA3B;AACA,UAAMuiE,YAAY,GAAGe,SAAS,CAACnlE,IAAV,GAAiB,CAAtC;AACA,UAAMqlE,0BAA0B,GAAGD,YAAY,CAACpgE,GAAb,GAAmBo/D,YAAtD;AACA,UAAIl1D,CAAJ;AACA,UAAIhK,IAAI,GAAG,KAAKA,IAAhB;AACA,UAAIkgC,QAAQ,GAAG,KAAK//B,KAApB;;AACA,UAAI,KAAK65B,YAAL,EAAJ,EAAyB;AACvBkG,QAAAA,QAAQ,GAAGnhC,IAAI,CAAC0H,GAAL,OAAA1H,IAAI,qBAAQ,KAAK4+D,UAAb,EAAf;AACA3zD,QAAAA,CAAC,GAAG,KAAKlK,GAAL,GAAWqgE,0BAAf;AACAngE,QAAAA,IAAI,GAAG,wBAAe8G,IAAI,CAACssC,KAApB,EAA2BpzC,IAA3B,EAAiC,KAAKC,KAAL,GAAaigC,QAA9C,CAAP;AACD,OAJD,MAIO;AACL,YAAMC,SAAS,GAAG,KAAKu9B,WAAL,CAAiBrhE,MAAjB,CAAwB,UAAC4Q,GAAD,EAAMnS,IAAN;AAAA,iBAAeiE,IAAI,CAAC0H,GAAL,CAASwG,GAAT,EAAcnS,IAAI,CAACoF,MAAnB,CAAf;AAAA,SAAxB,EAAmE,CAAnE,CAAlB;AACA8J,QAAAA,CAAC,GAAGm2D,0BAA0B,GAAG,wBAAer5D,IAAI,CAACssC,KAApB,EAA2B,KAAKtzC,GAAhC,EAAqC,KAAKC,MAAL,GAAcogC,SAAd,GAA0Br5B,IAAI,CAACpL,MAAL,CAAYqxC,OAAtC,GAAgD,KAAK+wB,mBAAL,EAArF,CAAjC;AACD;;AACD,UAAM/zD,CAAC,GAAG,wBAAepN,QAAf,EAAyBqD,IAAzB,EAA+BA,IAAI,GAAGkgC,QAAtC,CAAV;AACAhP,MAAAA,GAAG,CAACmtB,SAAJ,GAAgBugB,SAAS,CAACvgB,SAAV,CAAoB,uBAAmB1hD,QAAnB,CAApB,CAAhB;AACAu0B,MAAAA,GAAG,CAACstB,YAAJ,GAAmB,QAAnB;AACAttB,MAAAA,GAAG,CAAC4Q,WAAJ,GAAkBiZ,SAAS,CAAC1xB,KAA5B;AACA6H,MAAAA,GAAG,CAAC2Q,SAAJ,GAAgBkZ,SAAS,CAAC1xB,KAA1B;AACA6H,MAAAA,GAAG,CAACv2B,IAAJ,GAAWslE,SAAS,CAAC3jB,MAArB;AACA,6BAAWprB,GAAX,EAAgB6pB,SAAS,CAAC7+C,IAA1B,EAAgC6N,CAAhC,EAAmCC,CAAnC,EAAsCi2D,SAAtC;AACD;;;WACD,+BAAsB;AACpB,UAAMllB,SAAS,GAAG,KAAK19C,OAAL,CAAavB,KAA/B;AACA,UAAMmkE,SAAS,GAAG,uBAAOllB,SAAS,CAACpgD,IAAjB,CAAlB;AACA,UAAMulE,YAAY,GAAG,uBAAUnlB,SAAS,CAAChO,OAApB,CAArB;AACA,aAAOgO,SAAS,CAAC9+C,OAAV,GAAoBgkE,SAAS,CAAC7pB,UAAV,GAAuB8pB,YAAY,CAAChgE,MAAxD,GAAiE,CAAxE;AACD;;;WACD,0BAAiB6J,CAAjB,EAAoBC,CAApB,EAAuB;AACrB,UAAIxN,CAAJ,EAAO4jE,MAAP,EAAeC,EAAf;;AACA,UAAI,wBAAWt2D,CAAX,EAAc,KAAK/J,IAAnB,EAAyB,KAAKC,KAA9B,KACC,wBAAW+J,CAAX,EAAc,KAAKlK,GAAnB,EAAwB,KAAKC,MAA7B,CADL,EAC2C;AACzCsgE,QAAAA,EAAE,GAAG,KAAK/C,cAAV;;AACA,aAAK9gE,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG6jE,EAAE,CAACrkE,MAAnB,EAA2B,EAAEQ,CAA7B,EAAgC;AAC9B4jE,UAAAA,MAAM,GAAGC,EAAE,CAAC7jE,CAAD,CAAX;;AACA,cAAI,wBAAWuN,CAAX,EAAcq2D,MAAM,CAACpgE,IAArB,EAA2BogE,MAAM,CAACpgE,IAAP,GAAcogE,MAAM,CAACjgE,KAAhD,KACC,wBAAW6J,CAAX,EAAco2D,MAAM,CAACtgE,GAArB,EAA0BsgE,MAAM,CAACtgE,GAAP,GAAasgE,MAAM,CAAClgE,MAA9C,CADL,EAC4D;AAC1D,mBAAO,KAAKu9D,WAAL,CAAiBjhE,CAAjB,CAAP;AACD;AACF;AACF;;AACD,aAAO,IAAP;AACD;;;WACD,qBAAYqC,CAAZ,EAAe;AACb,UAAMiI,IAAI,GAAG,KAAKzJ,OAAlB;;AACA,UAAI,CAACijE,UAAU,CAACzhE,CAAC,CAACrD,IAAH,EAASsL,IAAT,CAAf,EAA+B;AAC7B;AACD;;AACD,UAAMy5D,WAAW,GAAG,KAAKC,gBAAL,CAAsB3hE,CAAC,CAACkL,CAAxB,EAA2BlL,CAAC,CAACmL,CAA7B,CAApB;;AACA,UAAInL,CAAC,CAACrD,IAAF,KAAW,WAAf,EAA4B;AAC1B,YAAMg3D,QAAQ,GAAG,KAAK+K,YAAtB;AACA,YAAMkD,QAAQ,GAAGrD,UAAU,CAAC5K,QAAD,EAAW+N,WAAX,CAA3B;;AACA,YAAI/N,QAAQ,IAAI,CAACiO,QAAjB,EAA2B;AACzB,iCAAS35D,IAAI,CAAC45D,OAAd,EAAuB,CAAC7hE,CAAD,EAAI2zD,QAAJ,EAAc,IAAd,CAAvB,EAA4C,IAA5C;AACD;;AACD,aAAK+K,YAAL,GAAoBgD,WAApB;;AACA,YAAIA,WAAW,IAAI,CAACE,QAApB,EAA8B;AAC5B,iCAAS35D,IAAI,CAAC4nD,OAAd,EAAuB,CAAC7vD,CAAD,EAAI0hE,WAAJ,EAAiB,IAAjB,CAAvB,EAA+C,IAA/C;AACD;AACF,OAVD,MAUO,IAAIA,WAAJ,EAAiB;AACtB,+BAASz5D,IAAI,CAACm7B,OAAd,EAAuB,CAACpjC,CAAD,EAAI0hE,WAAJ,EAAiB,IAAjB,CAAvB,EAA+C,IAA/C;AACD;AACF;;;;EA9WkBtvB;;AAgXrB,SAASqvB,UAAT,CAAoB9kE,IAApB,EAA0BsL,IAA1B,EAAgC;AAC9B,MAAItL,IAAI,KAAK,WAAT,KAAyBsL,IAAI,CAAC4nD,OAAL,IAAgB5nD,IAAI,CAAC45D,OAA9C,CAAJ,EAA4D;AAC1D,WAAO,IAAP;AACD;;AACD,MAAI55D,IAAI,CAACm7B,OAAL,KAAiBzmC,IAAI,KAAK,OAAT,IAAoBA,IAAI,KAAK,SAA9C,CAAJ,EAA8D;AAC5D,WAAO,IAAP;AACD;;AACD,SAAO,KAAP;AACD;;AACD,IAAImlE,aAAa,GAAG;AAClB5mD,EAAAA,EAAE,EAAE,QADc;AAElB6mD,EAAAA,QAAQ,EAAE9mE,MAFQ;AAGlB0E,EAAAA,KAHkB,iBAGZrB,KAHY,EAGLq/D,KAHK,EAGEn/D,OAHF,EAGW;AAC3B,QAAME,MAAM,GAAGJ,KAAK,CAACI,MAAN,GAAe,IAAIzD,MAAJ,CAAW;AAACo3B,MAAAA,GAAG,EAAE/zB,KAAK,CAAC+zB,GAAZ;AAAiB7zB,MAAAA,OAAO,EAAPA,OAAjB;AAA0BF,MAAAA,KAAK,EAALA;AAA1B,KAAX,CAA9B;AACA8sC,IAAAA,OAAO,CAACne,SAAR,CAAkB3uB,KAAlB,EAAyBI,MAAzB,EAAiCF,OAAjC;AACA4sC,IAAAA,OAAO,CAACgD,MAAR,CAAe9vC,KAAf,EAAsBI,MAAtB;AACD,GAPiB;AAQlB2I,EAAAA,IARkB,gBAQb/I,KARa,EAQN;AACV8sC,IAAAA,OAAO,CAACkD,SAAR,CAAkBhwC,KAAlB,EAAyBA,KAAK,CAACI,MAA/B;AACA,WAAOJ,KAAK,CAACI,MAAb;AACD,GAXiB;AAYlB+6C,EAAAA,YAZkB,wBAYLn7C,KAZK,EAYEq/D,KAZF,EAYSn/D,OAZT,EAYkB;AAClC,QAAME,MAAM,GAAGJ,KAAK,CAACI,MAArB;AACA0sC,IAAAA,OAAO,CAACne,SAAR,CAAkB3uB,KAAlB,EAAyBI,MAAzB,EAAiCF,OAAjC;AACAE,IAAAA,MAAM,CAACF,OAAP,GAAiBA,OAAjB;AACD,GAhBiB;AAiBlBs8C,EAAAA,WAjBkB,uBAiBNx8C,KAjBM,EAiBC;AACjB,QAAMI,MAAM,GAAGJ,KAAK,CAACI,MAArB;AACAA,IAAAA,MAAM,CAACqgE,WAAP;AACArgE,IAAAA,MAAM,CAACsjE,cAAP;AACD,GArBiB;AAsBlBC,EAAAA,UAtBkB,sBAsBP3jE,KAtBO,EAsBAmjB,IAtBA,EAsBM;AACtB,QAAI,CAACA,IAAI,CAAC2tC,MAAV,EAAkB;AAChB9wD,MAAAA,KAAK,CAACI,MAAN,CAAawjE,WAAb,CAAyBzgD,IAAI,CAAC/G,KAA9B;AACD;AACF,GA1BiB;AA2BlB7e,EAAAA,QAAQ,EAAE;AACRuB,IAAAA,OAAO,EAAE,IADD;AAERU,IAAAA,QAAQ,EAAE,KAFF;AAGRy2C,IAAAA,KAAK,EAAE,QAHC;AAIRzI,IAAAA,QAAQ,EAAE,IAJF;AAKR9d,IAAAA,OAAO,EAAE,KALD;AAMR5xB,IAAAA,MAAM,EAAE,IANA;AAORgnC,IAAAA,OAPQ,mBAOApjC,CAPA,EAOGqjC,UAPH,EAOe3kC,MAPf,EAOuB;AAC7B,UAAMK,KAAK,GAAGskC,UAAU,CAACpU,YAAzB;AACA,UAAMkzC,EAAE,GAAGzjE,MAAM,CAACJ,KAAlB;;AACA,UAAI6jE,EAAE,CAACzhC,gBAAH,CAAoB3hC,KAApB,CAAJ,EAAgC;AAC9BojE,QAAAA,EAAE,CAAClgE,IAAH,CAAQlD,KAAR;AACAskC,QAAAA,UAAU,CAACpR,MAAX,GAAoB,IAApB;AACD,OAHD,MAGO;AACLkwC,QAAAA,EAAE,CAACnnD,IAAH,CAAQjc,KAAR;AACAskC,QAAAA,UAAU,CAACpR,MAAX,GAAoB,KAApB;AACD;AACF,KAjBO;AAkBR49B,IAAAA,OAAO,EAAE,IAlBD;AAmBRgS,IAAAA,OAAO,EAAE,IAnBD;AAoBRhlE,IAAAA,MAAM,EAAE;AACN2tB,MAAAA,KAAK,EAAE,eAAC6H,GAAD;AAAA,eAASA,GAAG,CAAC/zB,KAAJ,CAAUE,OAAV,CAAkBgsB,KAA3B;AAAA,OADD;AAEN4zC,MAAAA,QAAQ,EAAE,EAFJ;AAGNlwB,MAAAA,OAAO,EAAE,EAHH;AAINpL,MAAAA,cAJM,0BAISxkC,KAJT,EAIgB;AACpB,YAAMtB,QAAQ,GAAGsB,KAAK,CAACC,IAAN,CAAWvB,QAA5B;AACA,oCAAgEsB,KAAK,CAACI,MAAN,CAAaF,OAA7E,CAAO3B,MAAP;AAAA,YAAgBwhE,aAAhB,yBAAgBA,aAAhB;AAAA,YAA+Bt7B,UAA/B,yBAA+BA,UAA/B;AAAA,YAA2Cyc,SAA3C,yBAA2CA,SAA3C;AAAA,YAAsDh1B,KAAtD,yBAAsDA,KAAtD;AACA,eAAOlsB,KAAK,CAACowB,sBAAN,GAA+BjxB,GAA/B,CAAmC,UAAC6kB,IAAD,EAAU;AAClD,cAAM/gB,KAAK,GAAG+gB,IAAI,CAAC7J,UAAL,CAAgBsf,QAAhB,CAAyBsmC,aAAa,GAAG,CAAH,GAAOnhE,SAA7C,CAAd;AACA,cAAMslC,WAAW,GAAG,uBAAUjhC,KAAK,CAACihC,WAAhB,CAApB;AACA,iBAAO;AACLnlC,YAAAA,IAAI,EAAEL,QAAQ,CAACslB,IAAI,CAACvjB,KAAN,CAAR,CAAqBzB,KADtB;AAEL0lC,YAAAA,SAAS,EAAEzhC,KAAK,CAACtD,eAFZ;AAGLmiE,YAAAA,SAAS,EAAE51C,KAHN;AAILyH,YAAAA,MAAM,EAAE,CAAC3P,IAAI,CAACsK,OAJT;AAKL6mC,YAAAA,OAAO,EAAElyD,KAAK,CAACmyD,cALV;AAML8M,YAAAA,QAAQ,EAAEj/D,KAAK,CAACoyC,UANX;AAOLiN,YAAAA,cAAc,EAAEr/C,KAAK,CAACqyC,gBAPjB;AAQLkf,YAAAA,QAAQ,EAAEvxD,KAAK,CAACsxD,eARX;AASL1vB,YAAAA,SAAS,EAAE,CAACX,WAAW,CAAClhC,KAAZ,GAAoBkhC,WAAW,CAACnhC,MAAjC,IAA2C,CATjD;AAUL4hC,YAAAA,WAAW,EAAE1hC,KAAK,CAAC2hC,WAVd;AAWLH,YAAAA,UAAU,EAAEA,UAAU,IAAIxhC,KAAK,CAACwhC,UAX3B;AAYLhE,YAAAA,QAAQ,EAAEx9B,KAAK,CAACw9B,QAZX;AAaLygB,YAAAA,SAAS,EAAEA,SAAS,IAAIj+C,KAAK,CAACi+C,SAbzB;AAcLkR,YAAAA,YAAY,EAAE,CAdT;AAeLzhC,YAAAA,YAAY,EAAE3M,IAAI,CAACvjB;AAfd,WAAP;AAiBD,SApBM,EAoBJ,IApBI,CAAP;AAqBD;AA5BK,KApBA;AAkDR9B,IAAAA,KAAK,EAAE;AACLutB,MAAAA,KAAK,EAAE,eAAC6H,GAAD;AAAA,eAASA,GAAG,CAAC/zB,KAAJ,CAAUE,OAAV,CAAkBgsB,KAA3B;AAAA,OADF;AAELptB,MAAAA,OAAO,EAAE,KAFJ;AAGLU,MAAAA,QAAQ,EAAE,QAHL;AAILT,MAAAA,IAAI,EAAE;AAJD;AAlDC,GA3BQ;AAoFlBulC,EAAAA,WAAW,EAAE;AACXnW,IAAAA,WAAW,EAAE,qBAACxP,IAAD;AAAA,aAAU,CAACA,IAAI,CAAC43B,UAAL,CAAgB,IAAhB,CAAX;AAAA,KADF;AAEXh4C,IAAAA,MAAM,EAAE;AACN4vB,MAAAA,WAAW,EAAE,qBAACxP,IAAD;AAAA,eAAU,CAAC,CAAC,gBAAD,EAAmB,QAAnB,EAA6B,MAA7B,EAAqCquB,QAArC,CAA8CruB,IAA9C,CAAX;AAAA;AADP;AAFG;AApFK,CAApB;;;IA4FM3hB;;;;;AACJ,iBAAYwxB,MAAZ,EAAoB;AAAA;;AAAA;;AAClB;AACA,YAAKxuB,KAAL,GAAawuB,MAAM,CAACxuB,KAApB;AACA,YAAKE,OAAL,GAAesuB,MAAM,CAACtuB,OAAtB;AACA,YAAK6zB,GAAL,GAAWvF,MAAM,CAACuF,GAAlB;AACA,YAAK+vC,QAAL,GAAgBllE,SAAhB;AACA,YAAK+D,GAAL,GAAW/D,SAAX;AACA,YAAKgE,MAAL,GAAchE,SAAd;AACA,YAAKiE,IAAL,GAAYjE,SAAZ;AACA,YAAKkE,KAAL,GAAalE,SAAb;AACA,YAAKoE,KAAL,GAAapE,SAAb;AACA,YAAKmE,MAAL,GAAcnE,SAAd;AACA,YAAKY,QAAL,GAAgBZ,SAAhB;AACA,YAAKd,MAAL,GAAcc,SAAd;AACA,YAAK4uC,QAAL,GAAgB5uC,SAAhB;AAdkB;AAenB;;;;WACD,gBAAOmkC,QAAP,EAAiBC,SAAjB,EAA4B;AAC1B,UAAMr5B,IAAI,GAAG,KAAKzJ,OAAlB;AACA,WAAK2C,IAAL,GAAY,CAAZ;AACA,WAAKF,GAAL,GAAW,CAAX;;AACA,UAAI,CAACgH,IAAI,CAAC7K,OAAV,EAAmB;AACjB,aAAKkE,KAAL,GAAa,KAAKD,MAAL,GAAc,KAAKD,KAAL,GAAa,KAAKF,MAAL,GAAc,CAAtD;AACA;AACD;;AACD,WAAKI,KAAL,GAAa,KAAKF,KAAL,GAAaigC,QAA1B;AACA,WAAKhgC,MAAL,GAAc,KAAKH,MAAL,GAAcogC,SAA5B;AACA,UAAMme,SAAS,GAAG,uBAAQx3C,IAAI,CAAC5K,IAAb,IAAqB4K,IAAI,CAAC5K,IAAL,CAAUF,MAA/B,GAAwC,CAA1D;AACA,WAAKilE,QAAL,GAAgB,uBAAUn6D,IAAI,CAACimC,OAAf,CAAhB;;AACA,UAAMm0B,QAAQ,GAAG5iB,SAAS,GAAG,uBAAOx3C,IAAI,CAACnM,IAAZ,EAAkBy7C,UAA9B,GAA2C,KAAK6qB,QAAL,CAAc/gE,MAA1E;;AACA,UAAI,KAAK85B,YAAL,EAAJ,EAAyB;AACvB,aAAK95B,MAAL,GAAcghE,QAAd;AACD,OAFD,MAEO;AACL,aAAK/gE,KAAL,GAAa+gE,QAAb;AACD;AACF;;;WACD,wBAAe;AACb,UAAM33B,GAAG,GAAG,KAAKlsC,OAAL,CAAaV,QAAzB;AACA,aAAO4sC,GAAG,KAAK,KAAR,IAAiBA,GAAG,KAAK,QAAhC;AACD;;;WACD,mBAAUxkC,MAAV,EAAkB;AAChB,UAAOjF,GAAP,GAA4C,IAA5C,CAAOA,GAAP;AAAA,UAAYE,IAAZ,GAA4C,IAA5C,CAAYA,IAAZ;AAAA,UAAkBD,MAAlB,GAA4C,IAA5C,CAAkBA,MAAlB;AAAA,UAA0BE,KAA1B,GAA4C,IAA5C,CAA0BA,KAA1B;AAAA,UAAiC5C,OAAjC,GAA4C,IAA5C,CAAiCA,OAAjC;AACA,UAAM+1C,KAAK,GAAG/1C,OAAO,CAAC+1C,KAAtB;AACA,UAAIxV,QAAQ,GAAG,CAAf;AACA,UAAIsC,QAAJ,EAAcuW,MAAd,EAAsBC,MAAtB;;AACA,UAAI,KAAK1c,YAAL,EAAJ,EAAyB;AACvByc,QAAAA,MAAM,GAAG,wBAAerD,KAAf,EAAsBpzC,IAAtB,EAA4BC,KAA5B,CAAT;AACAy2C,QAAAA,MAAM,GAAG52C,GAAG,GAAGiF,MAAf;AACAm7B,QAAAA,QAAQ,GAAGjgC,KAAK,GAAGD,IAAnB;AACD,OAJD,MAIO;AACL,YAAI3C,OAAO,CAACV,QAAR,KAAqB,MAAzB,EAAiC;AAC/B85C,UAAAA,MAAM,GAAGz2C,IAAI,GAAG+E,MAAhB;AACA2xC,UAAAA,MAAM,GAAG,wBAAetD,KAAf,EAAsBrzC,MAAtB,EAA8BD,GAA9B,CAAT;AACA89B,UAAAA,QAAQ,GAAGvzB,oBAAK,CAAC,GAAjB;AACD,SAJD,MAIO;AACLosC,UAAAA,MAAM,GAAGx2C,KAAK,GAAG8E,MAAjB;AACA2xC,UAAAA,MAAM,GAAG,wBAAetD,KAAf,EAAsBtzC,GAAtB,EAA2BC,MAA3B,CAAT;AACA69B,UAAAA,QAAQ,GAAGvzB,oBAAK,GAAhB;AACD;;AACD61B,QAAAA,QAAQ,GAAGngC,MAAM,GAAGD,GAApB;AACD;;AACD,aAAO;AAAC22C,QAAAA,MAAM,EAANA,MAAD;AAASC,QAAAA,MAAM,EAANA,MAAT;AAAiBxW,QAAAA,QAAQ,EAARA,QAAjB;AAA2BtC,QAAAA,QAAQ,EAARA;AAA3B,OAAP;AACD;;;WACD,gBAAO;AACL,UAAM1M,GAAG,GAAG,KAAKA,GAAjB;AACA,UAAMpqB,IAAI,GAAG,KAAKzJ,OAAlB;;AACA,UAAI,CAACyJ,IAAI,CAAC7K,OAAV,EAAmB;AACjB;AACD;;AACD,UAAMklE,QAAQ,GAAG,uBAAOr6D,IAAI,CAACnM,IAAZ,CAAjB;AACA,UAAMy7C,UAAU,GAAG+qB,QAAQ,CAAC/qB,UAA5B;AACA,UAAMrxC,MAAM,GAAGqxC,UAAU,GAAG,CAAb,GAAiB,KAAK6qB,QAAL,CAAcnhE,GAA9C;;AACA,4BAA6C,KAAKshE,SAAL,CAAer8D,MAAf,CAA7C;AAAA,UAAO0xC,MAAP,mBAAOA,MAAP;AAAA,UAAeC,MAAf,mBAAeA,MAAf;AAAA,UAAuBxW,QAAvB,mBAAuBA,QAAvB;AAAA,UAAiCtC,QAAjC,mBAAiCA,QAAjC;;AACA,6BAAW1M,GAAX,EAAgBpqB,IAAI,CAAC5K,IAArB,EAA2B,CAA3B,EAA8B,CAA9B,EAAiCilE,QAAjC,EAA2C;AACzC93C,QAAAA,KAAK,EAAEviB,IAAI,CAACuiB,KAD6B;AAEzC6W,QAAAA,QAAQ,EAARA,QAFyC;AAGzCtC,QAAAA,QAAQ,EAARA,QAHyC;AAIzCygB,QAAAA,SAAS,EAAE,uBAAmBv3C,IAAI,CAACssC,KAAxB,CAJ8B;AAKzCoL,QAAAA,YAAY,EAAE,QAL2B;AAMzCO,QAAAA,WAAW,EAAE,CAACtI,MAAD,EAASC,MAAT;AAN4B,OAA3C;AAQD;;;;EAjFiBzF;;AAmFpB,SAASowB,WAAT,CAAqBlkE,KAArB,EAA4B49C,SAA5B,EAAuC;AACrC,MAAMj/C,KAAK,GAAG,IAAI3B,KAAJ,CAAU;AACtB+2B,IAAAA,GAAG,EAAE/zB,KAAK,CAAC+zB,GADW;AAEtB7zB,IAAAA,OAAO,EAAE09C,SAFa;AAGtB59C,IAAAA,KAAK,EAALA;AAHsB,GAAV,CAAd;AAKA8sC,EAAAA,OAAO,CAACne,SAAR,CAAkB3uB,KAAlB,EAAyBrB,KAAzB,EAAgCi/C,SAAhC;AACA9Q,EAAAA,OAAO,CAACgD,MAAR,CAAe9vC,KAAf,EAAsBrB,KAAtB;AACAqB,EAAAA,KAAK,CAACmkE,UAAN,GAAmBxlE,KAAnB;AACD;;AACD,IAAIylE,YAAY,GAAG;AACjBxnD,EAAAA,EAAE,EAAE,OADa;AAEjB6mD,EAAAA,QAAQ,EAAEzmE,KAFO;AAGjBqE,EAAAA,KAHiB,iBAGXrB,KAHW,EAGJq/D,KAHI,EAGGn/D,OAHH,EAGY;AAC3BgkE,IAAAA,WAAW,CAAClkE,KAAD,EAAQE,OAAR,CAAX;AACD,GALgB;AAMjB6I,EAAAA,IANiB,gBAMZ/I,KANY,EAML;AACV,QAAMmkE,UAAU,GAAGnkE,KAAK,CAACmkE,UAAzB;AACAr3B,IAAAA,OAAO,CAACkD,SAAR,CAAkBhwC,KAAlB,EAAyBmkE,UAAzB;AACA,WAAOnkE,KAAK,CAACmkE,UAAb;AACD,GAVgB;AAWjBhpB,EAAAA,YAXiB,wBAWJn7C,KAXI,EAWGq/D,KAXH,EAWUn/D,OAXV,EAWmB;AAClC,QAAMvB,KAAK,GAAGqB,KAAK,CAACmkE,UAApB;AACAr3B,IAAAA,OAAO,CAACne,SAAR,CAAkB3uB,KAAlB,EAAyBrB,KAAzB,EAAgCuB,OAAhC;AACAvB,IAAAA,KAAK,CAACuB,OAAN,GAAgBA,OAAhB;AACD,GAfgB;AAgBjB3C,EAAAA,QAAQ,EAAE;AACR04C,IAAAA,KAAK,EAAE,QADC;AAERn3C,IAAAA,OAAO,EAAE,KAFD;AAGRtB,IAAAA,IAAI,EAAE;AACJM,MAAAA,MAAM,EAAE;AADJ,KAHE;AAMR0vC,IAAAA,QAAQ,EAAE,IANF;AAORoC,IAAAA,OAAO,EAAE,EAPD;AAQRpwC,IAAAA,QAAQ,EAAE,KARF;AASRT,IAAAA,IAAI,EAAE,EATE;AAURjB,IAAAA,MAAM,EAAE;AAVA,GAhBO;AA4BjBk2C,EAAAA,aAAa,EAAE;AACb9nB,IAAAA,KAAK,EAAE;AADM,GA5BE;AA+BjBoY,EAAAA,WAAW,EAAE;AACXnW,IAAAA,WAAW,EAAE,IADF;AAEXD,IAAAA,UAAU,EAAE;AAFD;AA/BI,CAAnB;;AAqCA,IAAM/uB,GAAG,GAAG,IAAIklE,OAAJ,EAAZ;AACA,IAAIC,eAAe,GAAG;AACpB1nD,EAAAA,EAAE,EAAE,UADgB;AAEpBvb,EAAAA,KAFoB,iBAEdrB,KAFc,EAEPq/D,KAFO,EAEAn/D,OAFA,EAES;AAC3B,QAAMvB,KAAK,GAAG,IAAI3B,KAAJ,CAAU;AACtB+2B,MAAAA,GAAG,EAAE/zB,KAAK,CAAC+zB,GADW;AAEtB7zB,MAAAA,OAAO,EAAPA,OAFsB;AAGtBF,MAAAA,KAAK,EAALA;AAHsB,KAAV,CAAd;AAKA8sC,IAAAA,OAAO,CAACne,SAAR,CAAkB3uB,KAAlB,EAAyBrB,KAAzB,EAAgCuB,OAAhC;AACA4sC,IAAAA,OAAO,CAACgD,MAAR,CAAe9vC,KAAf,EAAsBrB,KAAtB;AACAQ,IAAAA,GAAG,CAACyL,GAAJ,CAAQ5K,KAAR,EAAerB,KAAf;AACD,GAXmB;AAYpBoK,EAAAA,IAZoB,gBAYf/I,KAZe,EAYR;AACV8sC,IAAAA,OAAO,CAACkD,SAAR,CAAkBhwC,KAAlB,EAAyBb,GAAG,CAACqgB,GAAJ,CAAQxf,KAAR,CAAzB;AACAb,IAAAA,GAAG,CAACysB,MAAJ,CAAW5rB,KAAX;AACD,GAfmB;AAgBpBm7C,EAAAA,YAhBoB,wBAgBPn7C,KAhBO,EAgBAq/D,KAhBA,EAgBOn/D,OAhBP,EAgBgB;AAClC,QAAMvB,KAAK,GAAGQ,GAAG,CAACqgB,GAAJ,CAAQxf,KAAR,CAAd;AACA8sC,IAAAA,OAAO,CAACne,SAAR,CAAkB3uB,KAAlB,EAAyBrB,KAAzB,EAAgCuB,OAAhC;AACAvB,IAAAA,KAAK,CAACuB,OAAN,GAAgBA,OAAhB;AACD,GApBmB;AAqBpB3C,EAAAA,QAAQ,EAAE;AACR04C,IAAAA,KAAK,EAAE,QADC;AAERn3C,IAAAA,OAAO,EAAE,KAFD;AAGRtB,IAAAA,IAAI,EAAE;AACJM,MAAAA,MAAM,EAAE;AADJ,KAHE;AAMR0vC,IAAAA,QAAQ,EAAE,IANF;AAORoC,IAAAA,OAAO,EAAE,CAPD;AAQRpwC,IAAAA,QAAQ,EAAE,KARF;AASRT,IAAAA,IAAI,EAAE,EATE;AAURjB,IAAAA,MAAM,EAAE;AAVA,GArBU;AAiCpBk2C,EAAAA,aAAa,EAAE;AACb9nB,IAAAA,KAAK,EAAE;AADM,GAjCK;AAoCpBoY,EAAAA,WAAW,EAAE;AACXnW,IAAAA,WAAW,EAAE,IADF;AAEXD,IAAAA,UAAU,EAAE;AAFD;AApCO,CAAtB;;AA0CA,IAAMq2C,WAAW,GAAG;AAClBC,EAAAA,OADkB,mBACV/zD,KADU,EACH;AACb,QAAI,CAACA,KAAK,CAAC5R,MAAX,EAAmB;AACjB,aAAO,KAAP;AACD;;AACD,QAAIQ,CAAJ,EAAO6P,GAAP;AACA,QAAItC,CAAC,GAAG,CAAR;AACA,QAAIC,CAAC,GAAG,CAAR;AACA,QAAIrL,KAAK,GAAG,CAAZ;;AACA,SAAKnC,CAAC,GAAG,CAAJ,EAAO6P,GAAG,GAAGuB,KAAK,CAAC5R,MAAxB,EAAgCQ,CAAC,GAAG6P,GAApC,EAAyC,EAAE7P,CAA3C,EAA8C;AAC5C,UAAM6qC,EAAE,GAAGz5B,KAAK,CAACpR,CAAD,CAAL,CAASnB,OAApB;;AACA,UAAIgsC,EAAE,IAAIA,EAAE,CAACu6B,QAAH,EAAV,EAAyB;AACvB,YAAMr4B,GAAG,GAAGlC,EAAE,CAACw6B,eAAH,EAAZ;AACA93D,QAAAA,CAAC,IAAIw/B,GAAG,CAACx/B,CAAT;AACAC,QAAAA,CAAC,IAAIu/B,GAAG,CAACv/B,CAAT;AACA,UAAErL,KAAF;AACD;AACF;;AACD,WAAO;AACLoL,MAAAA,CAAC,EAAEA,CAAC,GAAGpL,KADF;AAELqL,MAAAA,CAAC,EAAEA,CAAC,GAAGrL;AAFF,KAAP;AAID,GAtBiB;AAuBlBwqC,EAAAA,OAvBkB,mBAuBVv7B,KAvBU,EAuBHk0D,aAvBG,EAuBY;AAC5B,QAAI,CAACl0D,KAAK,CAAC5R,MAAX,EAAmB;AACjB,aAAO,KAAP;AACD;;AACD,QAAI+N,CAAC,GAAG+3D,aAAa,CAAC/3D,CAAtB;AACA,QAAIC,CAAC,GAAG83D,aAAa,CAAC93D,CAAtB;AACA,QAAI0+B,WAAW,GAAGnmB,MAAM,CAACoM,iBAAzB;AACA,QAAInyB,CAAJ,EAAO6P,GAAP,EAAY01D,cAAZ;;AACA,SAAKvlE,CAAC,GAAG,CAAJ,EAAO6P,GAAG,GAAGuB,KAAK,CAAC5R,MAAxB,EAAgCQ,CAAC,GAAG6P,GAApC,EAAyC,EAAE7P,CAA3C,EAA8C;AAC5C,UAAM6qC,EAAE,GAAGz5B,KAAK,CAACpR,CAAD,CAAL,CAASnB,OAApB;;AACA,UAAIgsC,EAAE,IAAIA,EAAE,CAACu6B,QAAH,EAAV,EAAyB;AACvB,YAAM/lC,MAAM,GAAGwL,EAAE,CAACsB,cAAH,EAAf;AACA,YAAMtiB,CAAC,GAAG,wBAAsBy7C,aAAtB,EAAqCjmC,MAArC,CAAV;;AACA,YAAIxV,CAAC,GAAGqiB,WAAR,EAAqB;AACnBA,UAAAA,WAAW,GAAGriB,CAAd;AACA07C,UAAAA,cAAc,GAAG16B,EAAjB;AACD;AACF;AACF;;AACD,QAAI06B,cAAJ,EAAoB;AAClB,UAAMC,EAAE,GAAGD,cAAc,CAACF,eAAf,EAAX;AACA93D,MAAAA,CAAC,GAAGi4D,EAAE,CAACj4D,CAAP;AACAC,MAAAA,CAAC,GAAGg4D,EAAE,CAACh4D,CAAP;AACD;;AACD,WAAO;AACLD,MAAAA,CAAC,EAADA,CADK;AAELC,MAAAA,CAAC,EAADA;AAFK,KAAP;AAID;AAnDiB,CAApB;;AAqDA,SAASi4D,YAAT,CAAsB9nC,IAAtB,EAA4B+nC,MAA5B,EAAoC;AAClC,MAAIA,MAAJ,EAAY;AACV,QAAI,uBAAQA,MAAR,CAAJ,EAAqB;AACnB3hE,MAAAA,KAAK,CAACoe,SAAN,CAAgBpgB,IAAhB,CAAqBwiB,KAArB,CAA2BoZ,IAA3B,EAAiC+nC,MAAjC;AACD,KAFD,MAEO;AACL/nC,MAAAA,IAAI,CAAC57B,IAAL,CAAU2jE,MAAV;AACD;AACF;;AACD,SAAO/nC,IAAP;AACD;;AACD,SAASgoC,aAAT,CAAuB70D,GAAvB,EAA4B;AAC1B,MAAI,CAAC,OAAOA,GAAP,KAAe,QAAf,IAA2BA,GAAG,YAAYkV,MAA3C,KAAsDlV,GAAG,CAACjK,OAAJ,CAAY,IAAZ,IAAoB,CAAC,CAA/E,EAAkF;AAChF,WAAOiK,GAAG,CAAC8zC,KAAJ,CAAU,IAAV,CAAP;AACD;;AACD,SAAO9zC,GAAP;AACD;;AACD,SAAS80D,iBAAT,CAA2BjlE,KAA3B,EAAkCiC,IAAlC,EAAwC;AACtC,MAAO/D,OAAP,GAAuC+D,IAAvC,CAAO/D,OAAP;AAAA,MAAgByyB,YAAhB,GAAuC1uB,IAAvC,CAAgB0uB,YAAhB;AAAA,MAA8BlwB,KAA9B,GAAuCwB,IAAvC,CAA8BxB,KAA9B;AACA,MAAM0Z,UAAU,GAAGna,KAAK,CAAC41B,cAAN,CAAqBjF,YAArB,EAAmCxW,UAAtD;;AACA,8BAAuBA,UAAU,CAAC+qD,gBAAX,CAA4BzkE,KAA5B,CAAvB;AAAA,MAAOzB,KAAP,yBAAOA,KAAP;AAAA,MAAcoK,KAAd,yBAAcA,KAAd;;AACA,SAAO;AACLpJ,IAAAA,KAAK,EAALA,KADK;AAELhB,IAAAA,KAAK,EAALA,KAFK;AAGLmzB,IAAAA,MAAM,EAAEhY,UAAU,CAAC6d,SAAX,CAAqBv3B,KAArB,CAHH;AAILyyB,IAAAA,GAAG,EAAElzB,KAAK,CAACC,IAAN,CAAWvB,QAAX,CAAoBiyB,YAApB,EAAkC1wB,IAAlC,CAAuCQ,KAAvC,CAJA;AAKL0kC,IAAAA,cAAc,EAAE/7B,KALX;AAMLhK,IAAAA,OAAO,EAAE+a,UAAU,CAAC2a,UAAX,EANJ;AAOL7B,IAAAA,SAAS,EAAExyB,KAPN;AAQLkwB,IAAAA,YAAY,EAAZA,YARK;AASLzyB,IAAAA,OAAO,EAAPA;AATK,GAAP;AAWD;;AACD,SAASinE,cAAT,CAAwB9kE,OAAxB,EAAiCH,OAAjC,EAA0C;AACxC,MAAM6zB,GAAG,GAAG1zB,OAAO,CAACL,KAAR,CAAc+zB,GAA1B;AACA,MAAOz2B,IAAP,GAA8B+C,OAA9B,CAAO/C,IAAP;AAAA,MAAa8nE,MAAb,GAA8B/kE,OAA9B,CAAa+kE,MAAb;AAAA,MAAqBzmE,KAArB,GAA8B0B,OAA9B,CAAqB1B,KAArB;AACA,MAAOmhE,QAAP,GAA8B5/D,OAA9B,CAAO4/D,QAAP;AAAA,MAAiBD,SAAjB,GAA8B3/D,OAA9B,CAAiB2/D,SAAjB;AACA,MAAMwF,QAAQ,GAAG,uBAAOnlE,OAAO,CAACmlE,QAAf,CAAjB;AACA,MAAMvC,SAAS,GAAG,uBAAO5iE,OAAO,CAAC4iE,SAAf,CAAlB;AACA,MAAMwC,UAAU,GAAG,uBAAOplE,OAAO,CAAColE,UAAf,CAAnB;AACA,MAAMC,cAAc,GAAG5mE,KAAK,CAACE,MAA7B;AACA,MAAM2mE,eAAe,GAAGJ,MAAM,CAACvmE,MAA/B;AACA,MAAM4mE,iBAAiB,GAAGnoE,IAAI,CAACuB,MAA/B;AACA,MAAM+wC,OAAO,GAAG,uBAAU1vC,OAAO,CAAC0vC,OAAlB,CAAhB;AACA,MAAI7sC,MAAM,GAAG6sC,OAAO,CAAC7sC,MAArB;AACA,MAAIC,KAAK,GAAG,CAAZ;AACA,MAAI0iE,kBAAkB,GAAGpoE,IAAI,CAAC4B,MAAL,CAAY,UAACsC,KAAD,EAAQmkE,QAAR;AAAA,WAAqBnkE,KAAK,GAAGmkE,QAAQ,CAACC,MAAT,CAAgB/mE,MAAxB,GAAiC8mE,QAAQ,CAAC3sB,KAAT,CAAen6C,MAAhD,GAAyD8mE,QAAQ,CAACE,KAAT,CAAehnE,MAA7F;AAAA,GAAZ,EAAiH,CAAjH,CAAzB;AACA6mE,EAAAA,kBAAkB,IAAIrlE,OAAO,CAACylE,UAAR,CAAmBjnE,MAAnB,GAA4BwB,OAAO,CAAC0lE,SAAR,CAAkBlnE,MAApE;;AACA,MAAI0mE,cAAJ,EAAoB;AAClBxiE,IAAAA,MAAM,IAAIwiE,cAAc,GAAGzC,SAAS,CAAC7pB,UAA3B,GACT,CAACssB,cAAc,GAAG,CAAlB,IAAuBrlE,OAAO,CAAC8lE,YADtB,GAET9lE,OAAO,CAAC+lE,iBAFT;AAGD;;AACD,MAAIP,kBAAJ,EAAwB;AACtB,QAAMQ,cAAc,GAAGhmE,OAAO,CAACimE,aAAR,GAAwBvkE,IAAI,CAAC0H,GAAL,CAASu2D,SAAT,EAAoBwF,QAAQ,CAACpsB,UAA7B,CAAxB,GAAmEosB,QAAQ,CAACpsB,UAAnG;AACAl2C,IAAAA,MAAM,IAAI0iE,iBAAiB,GAAGS,cAApB,GACT,CAACR,kBAAkB,GAAGD,iBAAtB,IAA2CJ,QAAQ,CAACpsB,UAD3C,GAET,CAACysB,kBAAkB,GAAG,CAAtB,IAA2BxlE,OAAO,CAACkmE,WAFpC;AAGD;;AACD,MAAIZ,eAAJ,EAAqB;AACnBziE,IAAAA,MAAM,IAAI7C,OAAO,CAACmmE,eAAR,GACTb,eAAe,GAAGF,UAAU,CAACrsB,UADpB,GAET,CAACusB,eAAe,GAAG,CAAnB,IAAwBtlE,OAAO,CAAComE,aAFjC;AAGD;;AACD,MAAIC,YAAY,GAAG,CAAnB;;AACA,MAAMC,YAAY,GAAG,SAAfA,YAAe,CAASnhC,IAAT,EAAe;AAClCriC,IAAAA,KAAK,GAAGpB,IAAI,CAAC0H,GAAL,CAAStG,KAAT,EAAgB+wB,GAAG,CAACmtC,WAAJ,CAAgB77B,IAAhB,EAAsBriC,KAAtB,GAA8BujE,YAA9C,CAAR;AACD,GAFD;;AAGAxyC,EAAAA,GAAG,CAAC8tB,IAAJ;AACA9tB,EAAAA,GAAG,CAACv2B,IAAJ,GAAWslE,SAAS,CAAC3jB,MAArB;AACA,yBAAK9+C,OAAO,CAAC1B,KAAb,EAAoB6nE,YAApB;AACAzyC,EAAAA,GAAG,CAACv2B,IAAJ,GAAW6nE,QAAQ,CAAClmB,MAApB;AACA,yBAAK9+C,OAAO,CAACylE,UAAR,CAAmB9lD,MAAnB,CAA0B3f,OAAO,CAAC0lE,SAAlC,CAAL,EAAmDS,YAAnD;AACAD,EAAAA,YAAY,GAAGrmE,OAAO,CAACimE,aAAR,GAAyBrG,QAAQ,GAAG,CAAX,GAAe5/D,OAAO,CAACkuC,UAAhD,GAA8D,CAA7E;AACA,yBAAK9wC,IAAL,EAAW,UAACqoE,QAAD,EAAc;AACvB,2BAAKA,QAAQ,CAACC,MAAd,EAAsBY,YAAtB;AACA,2BAAKb,QAAQ,CAAC3sB,KAAd,EAAqBwtB,YAArB;AACA,2BAAKb,QAAQ,CAACE,KAAd,EAAqBW,YAArB;AACD,GAJD;AAKAD,EAAAA,YAAY,GAAG,CAAf;AACAxyC,EAAAA,GAAG,CAACv2B,IAAJ,GAAW8nE,UAAU,CAACnmB,MAAtB;AACA,yBAAK9+C,OAAO,CAAC+kE,MAAb,EAAqBoB,YAArB;AACAzyC,EAAAA,GAAG,CAACguB,OAAJ;AACA/+C,EAAAA,KAAK,IAAI4sC,OAAO,CAAC5sC,KAAjB;AACA,SAAO;AAACA,IAAAA,KAAK,EAALA,KAAD;AAAQD,IAAAA,MAAM,EAANA;AAAR,GAAP;AACD;;AACD,SAAS0jE,eAAT,CAAyBzmE,KAAzB,EAAgCrC,IAAhC,EAAsC;AACpC,MAAOkP,CAAP,GAAoBlP,IAApB,CAAOkP,CAAP;AAAA,MAAU9J,MAAV,GAAoBpF,IAApB,CAAUoF,MAAV;;AACA,MAAI8J,CAAC,GAAG9J,MAAM,GAAG,CAAjB,EAAoB;AAClB,WAAO,KAAP;AACD,GAFD,MAEO,IAAI8J,CAAC,GAAI7M,KAAK,CAAC+C,MAAN,GAAeA,MAAM,GAAG,CAAjC,EAAqC;AAC1C,WAAO,QAAP;AACD;;AACD,SAAO,QAAP;AACD;;AACD,SAAS2jE,mBAAT,CAA6BC,MAA7B,EAAqC3mE,KAArC,EAA4CE,OAA5C,EAAqDvC,IAArD,EAA2D;AACzD,MAAOiP,CAAP,GAAmBjP,IAAnB,CAAOiP,CAAP;AAAA,MAAU5J,KAAV,GAAmBrF,IAAnB,CAAUqF,KAAV;AACA,MAAM4jE,KAAK,GAAG1mE,OAAO,CAAC2mE,SAAR,GAAoB3mE,OAAO,CAAC4mE,YAA1C;;AACA,MAAIH,MAAM,KAAK,MAAX,IAAqB/5D,CAAC,GAAG5J,KAAJ,GAAY4jE,KAAZ,GAAoB5mE,KAAK,CAACgD,KAAnD,EAA0D;AACxD,WAAO,IAAP;AACD;;AACD,MAAI2jE,MAAM,KAAK,OAAX,IAAsB/5D,CAAC,GAAG5J,KAAJ,GAAY4jE,KAAZ,GAAoB,CAA9C,EAAiD;AAC/C,WAAO,IAAP;AACD;AACF;;AACD,SAASG,eAAT,CAAyB/mE,KAAzB,EAAgCE,OAAhC,EAAyCvC,IAAzC,EAA+CqpE,MAA/C,EAAuD;AACrD,MAAOp6D,CAAP,GAAmBjP,IAAnB,CAAOiP,CAAP;AAAA,MAAU5J,KAAV,GAAmBrF,IAAnB,CAAUqF,KAAV;AACA,MAAcikE,UAAd,GAAsDjnE,KAAtD,CAAOgD,KAAP;AAAA,yBAAsDhD,KAAtD,CAA0Bs4B,SAA1B;AAAA,MAAsCz1B,IAAtC,oBAAsCA,IAAtC;AAAA,MAA4CC,KAA5C,oBAA4CA,KAA5C;AACA,MAAI6jE,MAAM,GAAG,QAAb;;AACA,MAAIK,MAAM,KAAK,QAAf,EAAyB;AACvBL,IAAAA,MAAM,GAAG/5D,CAAC,IAAI,CAAC/J,IAAI,GAAGC,KAAR,IAAiB,CAAtB,GAA0B,MAA1B,GAAmC,OAA5C;AACD,GAFD,MAEO,IAAI8J,CAAC,IAAI5J,KAAK,GAAG,CAAjB,EAAoB;AACzB2jE,IAAAA,MAAM,GAAG,MAAT;AACD,GAFM,MAEA,IAAI/5D,CAAC,IAAIq6D,UAAU,GAAGjkE,KAAK,GAAG,CAA9B,EAAiC;AACtC2jE,IAAAA,MAAM,GAAG,OAAT;AACD;;AACD,MAAID,mBAAmB,CAACC,MAAD,EAAS3mE,KAAT,EAAgBE,OAAhB,EAAyBvC,IAAzB,CAAvB,EAAuD;AACrDgpE,IAAAA,MAAM,GAAG,QAAT;AACD;;AACD,SAAOA,MAAP;AACD;;AACD,SAASO,kBAAT,CAA4BlnE,KAA5B,EAAmCE,OAAnC,EAA4CvC,IAA5C,EAAkD;AAChD,MAAMqpE,MAAM,GAAGrpE,IAAI,CAACqpE,MAAL,IAAe9mE,OAAO,CAAC8mE,MAAvB,IAAiCP,eAAe,CAACzmE,KAAD,EAAQrC,IAAR,CAA/D;AACA,SAAO;AACLgpE,IAAAA,MAAM,EAAEhpE,IAAI,CAACgpE,MAAL,IAAezmE,OAAO,CAACymE,MAAvB,IAAiCI,eAAe,CAAC/mE,KAAD,EAAQE,OAAR,EAAiBvC,IAAjB,EAAuBqpE,MAAvB,CADnD;AAELA,IAAAA,MAAM,EAANA;AAFK,GAAP;AAID;;AACD,SAASG,MAAT,CAAgBxpE,IAAhB,EAAsBgpE,MAAtB,EAA8B;AAC5B,MAAK/5D,CAAL,GAAiBjP,IAAjB,CAAKiP,CAAL;AAAA,MAAQ5J,KAAR,GAAiBrF,IAAjB,CAAQqF,KAAR;;AACA,MAAI2jE,MAAM,KAAK,OAAf,EAAwB;AACtB/5D,IAAAA,CAAC,IAAI5J,KAAL;AACD,GAFD,MAEO,IAAI2jE,MAAM,KAAK,QAAf,EAAyB;AAC9B/5D,IAAAA,CAAC,IAAK5J,KAAK,GAAG,CAAd;AACD;;AACD,SAAO4J,CAAP;AACD;;AACD,SAASw6D,MAAT,CAAgBzpE,IAAhB,EAAsBqpE,MAAtB,EAA8BK,cAA9B,EAA8C;AAC5C,MAAKx6D,CAAL,GAAkBlP,IAAlB,CAAKkP,CAAL;AAAA,MAAQ9J,MAAR,GAAkBpF,IAAlB,CAAQoF,MAAR;;AACA,MAAIikE,MAAM,KAAK,KAAf,EAAsB;AACpBn6D,IAAAA,CAAC,IAAIw6D,cAAL;AACD,GAFD,MAEO,IAAIL,MAAM,KAAK,QAAf,EAAyB;AAC9Bn6D,IAAAA,CAAC,IAAI9J,MAAM,GAAGskE,cAAd;AACD,GAFM,MAEA;AACLx6D,IAAAA,CAAC,IAAK9J,MAAM,GAAG,CAAf;AACD;;AACD,SAAO8J,CAAP;AACD;;AACD,SAASy6D,kBAAT,CAA4BpnE,OAA5B,EAAqCvC,IAArC,EAA2C4pE,SAA3C,EAAsDvnE,KAAtD,EAA6D;AAC3D,MAAO6mE,SAAP,GAAgD3mE,OAAhD,CAAO2mE,SAAP;AAAA,MAAkBC,YAAlB,GAAgD5mE,OAAhD,CAAkB4mE,YAAlB;AAAA,MAAgCU,YAAhC,GAAgDtnE,OAAhD,CAAgCsnE,YAAhC;AACA,MAAOb,MAAP,GAAyBY,SAAzB,CAAOZ,MAAP;AAAA,MAAeK,MAAf,GAAyBO,SAAzB,CAAeP,MAAf;AACA,MAAMK,cAAc,GAAGR,SAAS,GAAGC,YAAnC;;AACA,uBAAqD,wBAAcU,YAAd,CAArD;AAAA,MAAO1O,OAAP,kBAAOA,OAAP;AAAA,MAAgBC,QAAhB,kBAAgBA,QAAhB;AAAA,MAA0BC,UAA1B,kBAA0BA,UAA1B;AAAA,MAAsCC,WAAtC,kBAAsCA,WAAtC;;AACA,MAAIrsD,CAAC,GAAGu6D,MAAM,CAACxpE,IAAD,EAAOgpE,MAAP,CAAd;AACA,MAAM95D,CAAC,GAAGu6D,MAAM,CAACzpE,IAAD,EAAOqpE,MAAP,EAAeK,cAAf,CAAhB;;AACA,MAAIL,MAAM,KAAK,QAAf,EAAyB;AACvB,QAAIL,MAAM,KAAK,MAAf,EAAuB;AACrB/5D,MAAAA,CAAC,IAAIy6D,cAAL;AACD,KAFD,MAEO,IAAIV,MAAM,KAAK,OAAf,EAAwB;AAC7B/5D,MAAAA,CAAC,IAAIy6D,cAAL;AACD;AACF,GAND,MAMO,IAAIV,MAAM,KAAK,MAAf,EAAuB;AAC5B/5D,IAAAA,CAAC,IAAIhL,IAAI,CAAC0H,GAAL,CAASwvD,OAAT,EAAkBE,UAAlB,IAAgC6N,SAArC;AACD,GAFM,MAEA,IAAIF,MAAM,KAAK,OAAf,EAAwB;AAC7B/5D,IAAAA,CAAC,IAAIhL,IAAI,CAAC0H,GAAL,CAASyvD,QAAT,EAAmBE,WAAnB,IAAkC4N,SAAvC;AACD;;AACD,SAAO;AACLj6D,IAAAA,CAAC,EAAE,uBAAYA,CAAZ,EAAe,CAAf,EAAkB5M,KAAK,CAACgD,KAAN,GAAcrF,IAAI,CAACqF,KAArC,CADE;AAEL6J,IAAAA,CAAC,EAAE,uBAAYA,CAAZ,EAAe,CAAf,EAAkB7M,KAAK,CAAC+C,MAAN,GAAepF,IAAI,CAACoF,MAAtC;AAFE,GAAP;AAID;;AACD,SAAS0kE,WAAT,CAAqBpnE,OAArB,EAA8B41C,KAA9B,EAAqC/1C,OAArC,EAA8C;AAC5C,MAAM0vC,OAAO,GAAG,uBAAU1vC,OAAO,CAAC0vC,OAAlB,CAAhB;AACA,SAAOqG,KAAK,KAAK,QAAV,GACH51C,OAAO,CAACuM,CAAR,GAAYvM,OAAO,CAAC2C,KAAR,GAAgB,CADzB,GAEHizC,KAAK,KAAK,OAAV,GACE51C,OAAO,CAACuM,CAAR,GAAYvM,OAAO,CAAC2C,KAApB,GAA4B4sC,OAAO,CAAC9sC,KADtC,GAEEzC,OAAO,CAACuM,CAAR,GAAYgjC,OAAO,CAAC/sC,IAJ1B;AAKD;;AACD,SAAS6kE,uBAAT,CAAiCn+C,QAAjC,EAA2C;AACzC,SAAOu7C,YAAY,CAAC,EAAD,EAAKE,aAAa,CAACz7C,QAAD,CAAlB,CAAnB;AACD;;AACD,SAASo+C,oBAAT,CAA8BzlE,MAA9B,EAAsC7B,OAAtC,EAA+CunE,YAA/C,EAA6D;AAC3D,SAAO,uBAAc1lE,MAAd,EAAsB;AAC3B7B,IAAAA,OAAO,EAAPA,OAD2B;AAE3BunE,IAAAA,YAAY,EAAZA,YAF2B;AAG3BvpE,IAAAA,IAAI,EAAE;AAHqB,GAAtB,CAAP;AAKD;;AACD,SAASwpE,iBAAT,CAA2Bx9C,SAA3B,EAAsC3B,OAAtC,EAA+C;AAC7C,MAAMwgB,QAAQ,GAAGxgB,OAAO,IAAIA,OAAO,CAACtpB,OAAnB,IAA8BspB,OAAO,CAACtpB,OAAR,CAAgBiB,OAA9C,IAAyDqoB,OAAO,CAACtpB,OAAR,CAAgBiB,OAAhB,CAAwBgqB,SAAlG;AACA,SAAO6e,QAAQ,GAAG7e,SAAS,CAAC6e,QAAV,CAAmBA,QAAnB,CAAH,GAAkC7e,SAAjD;AACD;;IACKptB;;;;;AACJ,mBAAYuxB,MAAZ,EAAoB;AAAA;;AAAA;;AAClB;AACA,YAAKs5C,OAAL,GAAe,CAAf;AACA,YAAK78C,OAAL,GAAe,EAAf;AACA,YAAK88C,cAAL,GAAsBnpE,SAAtB;AACA,YAAKopE,KAAL,GAAappE,SAAb;AACA,YAAKqpE,iBAAL,GAAyBrpE,SAAzB;AACA,YAAKspE,aAAL,GAAqB,EAArB;AACA,YAAK94C,WAAL,GAAmBxwB,SAAnB;AACA,YAAK81B,QAAL,GAAgB91B,SAAhB;AACA,YAAKoB,KAAL,GAAawuB,MAAM,CAACxuB,KAAP,IAAgBwuB,MAAM,CAACC,MAApC;AACA,YAAKA,MAAL,GAAc,QAAKzuB,KAAnB;AACA,YAAKE,OAAL,GAAesuB,MAAM,CAACtuB,OAAtB;AACA,YAAKioE,UAAL,GAAkBvpE,SAAlB;AACA,YAAKD,KAAL,GAAaC,SAAb;AACA,YAAKknE,UAAL,GAAkBlnE,SAAlB;AACA,YAAKtB,IAAL,GAAYsB,SAAZ;AACA,YAAKmnE,SAAL,GAAiBnnE,SAAjB;AACA,YAAKwmE,MAAL,GAAcxmE,SAAd;AACA,YAAK+nE,MAAL,GAAc/nE,SAAd;AACA,YAAKooE,MAAL,GAAcpoE,SAAd;AACA,YAAKgO,CAAL,GAAShO,SAAT;AACA,YAAKiO,CAAL,GAASjO,SAAT;AACA,YAAKmE,MAAL,GAAcnE,SAAd;AACA,YAAKoE,KAAL,GAAapE,SAAb;AACA,YAAKwpE,MAAL,GAAcxpE,SAAd;AACA,YAAKypE,MAAL,GAAczpE,SAAd;AACA,YAAK0pE,WAAL,GAAmB1pE,SAAnB;AACA,YAAK2pE,gBAAL,GAAwB3pE,SAAxB;AACA,YAAK4pE,eAAL,GAAuB5pE,SAAvB;AA7BkB;AA8BnB;;;;WACD,oBAAWsB,OAAX,EAAoB;AAClB,WAAKA,OAAL,GAAeA,OAAf;AACA,WAAK+nE,iBAAL,GAAyBrpE,SAAzB;AACA,WAAK81B,QAAL,GAAgB91B,SAAhB;AACD;;;WACD,8BAAqB;AACnB,UAAM20B,MAAM,GAAG,KAAK00C,iBAApB;;AACA,UAAI10C,MAAJ,EAAY;AACV,eAAOA,MAAP;AACD;;AACD,UAAMvzB,KAAK,GAAG,KAAKA,KAAnB;AACA,UAAME,OAAO,GAAG,KAAKA,OAAL,CAAa06C,UAAb,CAAwB,KAAKlkB,UAAL,EAAxB,CAAhB;AACA,UAAM/sB,IAAI,GAAGzJ,OAAO,CAACI,OAAR,IAAmBN,KAAK,CAACE,OAAN,CAAc6tB,SAAjC,IAA8C7tB,OAAO,CAACmuB,UAAnE;AACA,UAAMA,UAAU,GAAG,IAAIE,UAAJ,CAAe,KAAKvuB,KAApB,EAA2B2J,IAA3B,CAAnB;;AACA,UAAIA,IAAI,CAAC0vB,UAAT,EAAqB;AACnB,aAAK4uC,iBAAL,GAAyB/7D,MAAM,CAACitB,MAAP,CAAc9K,UAAd,CAAzB;AACD;;AACD,aAAOA,UAAP;AACD;;;WACD,sBAAa;AACX,aAAO,KAAKqG,QAAL,KACP,KAAKA,QAAL,GAAgBizC,oBAAoB,CAAC,KAAK3nE,KAAL,CAAW02B,UAAX,EAAD,EAA0B,IAA1B,EAAgC,KAAKwxC,aAArC,CAD7B,CAAP;AAED;;;WACD,kBAASx/C,OAAT,EAAkBxoB,OAAlB,EAA2B;AACzB,UAAOmqB,SAAP,GAAoBnqB,OAApB,CAAOmqB,SAAP;AACA,UAAMo+C,WAAW,GAAGp+C,SAAS,CAACo+C,WAAV,CAAsB7kD,KAAtB,CAA4B,IAA5B,EAAkC,CAAC8E,OAAD,CAAlC,CAApB;AACA,UAAM/pB,KAAK,GAAG0rB,SAAS,CAAC1rB,KAAV,CAAgBilB,KAAhB,CAAsB,IAAtB,EAA4B,CAAC8E,OAAD,CAA5B,CAAd;AACA,UAAMggD,UAAU,GAAGr+C,SAAS,CAACq+C,UAAV,CAAqB9kD,KAArB,CAA2B,IAA3B,EAAiC,CAAC8E,OAAD,CAAjC,CAAnB;AACA,UAAIswB,KAAK,GAAG,EAAZ;AACAA,MAAAA,KAAK,GAAG8rB,YAAY,CAAC9rB,KAAD,EAAQgsB,aAAa,CAACyD,WAAD,CAArB,CAApB;AACAzvB,MAAAA,KAAK,GAAG8rB,YAAY,CAAC9rB,KAAD,EAAQgsB,aAAa,CAACrmE,KAAD,CAArB,CAApB;AACAq6C,MAAAA,KAAK,GAAG8rB,YAAY,CAAC9rB,KAAD,EAAQgsB,aAAa,CAAC0D,UAAD,CAArB,CAApB;AACA,aAAO1vB,KAAP;AACD;;;WACD,uBAAc4uB,YAAd,EAA4B1nE,OAA5B,EAAqC;AACnC,aAAOwnE,uBAAuB,CAACxnE,OAAO,CAACmqB,SAAR,CAAkBy7C,UAAlB,CAA6BliD,KAA7B,CAAmC,IAAnC,EAAyC,CAACgkD,YAAD,CAAzC,CAAD,CAA9B;AACD;;;WACD,iBAAQA,YAAR,EAAsB1nE,OAAtB,EAA+B;AAAA;;AAC7B,UAAOmqB,SAAP,GAAoBnqB,OAApB,CAAOmqB,SAAP;AACA,UAAMs+C,SAAS,GAAG,EAAlB;AACA,6BAAKf,YAAL,EAAmB,UAACl/C,OAAD,EAAa;AAC9B,YAAMi9C,QAAQ,GAAG;AACfC,UAAAA,MAAM,EAAE,EADO;AAEf5sB,UAAAA,KAAK,EAAE,EAFQ;AAGf6sB,UAAAA,KAAK,EAAE;AAHQ,SAAjB;AAKA,YAAM+C,MAAM,GAAGf,iBAAiB,CAACx9C,SAAD,EAAY3B,OAAZ,CAAhC;AACAo8C,QAAAA,YAAY,CAACa,QAAQ,CAACC,MAAV,EAAkBZ,aAAa,CAAC4D,MAAM,CAACC,WAAP,CAAmBzlD,IAAnB,CAAwB,OAAxB,EAA8BsF,OAA9B,CAAD,CAA/B,CAAZ;AACAo8C,QAAAA,YAAY,CAACa,QAAQ,CAAC3sB,KAAV,EAAiB4vB,MAAM,CAAC5pE,KAAP,CAAaokB,IAAb,CAAkB,OAAlB,EAAwBsF,OAAxB,CAAjB,CAAZ;AACAo8C,QAAAA,YAAY,CAACa,QAAQ,CAACE,KAAV,EAAiBb,aAAa,CAAC4D,MAAM,CAACE,UAAP,CAAkB1lD,IAAlB,CAAuB,OAAvB,EAA6BsF,OAA7B,CAAD,CAA9B,CAAZ;AACAigD,QAAAA,SAAS,CAACvnE,IAAV,CAAeukE,QAAf;AACD,OAXD;AAYA,aAAOgD,SAAP;AACD;;;WACD,sBAAaf,YAAb,EAA2B1nE,OAA3B,EAAoC;AAClC,aAAOwnE,uBAAuB,CAACxnE,OAAO,CAACmqB,SAAR,CAAkB07C,SAAlB,CAA4BniD,KAA5B,CAAkC,IAAlC,EAAwC,CAACgkD,YAAD,CAAxC,CAAD,CAA9B;AACD;;;WACD,mBAAUA,YAAV,EAAwB1nE,OAAxB,EAAiC;AAC/B,UAAOmqB,SAAP,GAAoBnqB,OAApB,CAAOmqB,SAAP;AACA,UAAM0+C,YAAY,GAAG1+C,SAAS,CAAC0+C,YAAV,CAAuBnlD,KAAvB,CAA6B,IAA7B,EAAmC,CAACgkD,YAAD,CAAnC,CAArB;AACA,UAAMxC,MAAM,GAAG/6C,SAAS,CAAC+6C,MAAV,CAAiBxhD,KAAjB,CAAuB,IAAvB,EAA6B,CAACgkD,YAAD,CAA7B,CAAf;AACA,UAAMoB,WAAW,GAAG3+C,SAAS,CAAC2+C,WAAV,CAAsBplD,KAAtB,CAA4B,IAA5B,EAAkC,CAACgkD,YAAD,CAAlC,CAApB;AACA,UAAI5uB,KAAK,GAAG,EAAZ;AACAA,MAAAA,KAAK,GAAG8rB,YAAY,CAAC9rB,KAAD,EAAQgsB,aAAa,CAAC+D,YAAD,CAArB,CAApB;AACA/vB,MAAAA,KAAK,GAAG8rB,YAAY,CAAC9rB,KAAD,EAAQgsB,aAAa,CAACI,MAAD,CAArB,CAApB;AACApsB,MAAAA,KAAK,GAAG8rB,YAAY,CAAC9rB,KAAD,EAAQgsB,aAAa,CAACgE,WAAD,CAArB,CAApB;AACA,aAAOhwB,KAAP;AACD;;;WACD,sBAAa94C,OAAb,EAAsB;AAAA;;AACpB,UAAM6c,MAAM,GAAG,KAAKkO,OAApB;AACA,UAAMhrB,IAAI,GAAG,KAAKD,KAAL,CAAWC,IAAxB;AACA,UAAMqoE,WAAW,GAAG,EAApB;AACA,UAAMC,gBAAgB,GAAG,EAAzB;AACA,UAAMC,eAAe,GAAG,EAAxB;AACA,UAAIZ,YAAY,GAAG,EAAnB;AACA,UAAIvoE,CAAJ,EAAO6P,GAAP;;AACA,WAAK7P,CAAC,GAAG,CAAJ,EAAO6P,GAAG,GAAG6N,MAAM,CAACle,MAAzB,EAAiCQ,CAAC,GAAG6P,GAArC,EAA0C,EAAE7P,CAA5C,EAA+C;AAC7CuoE,QAAAA,YAAY,CAACxmE,IAAb,CAAkB6jE,iBAAiB,CAAC,KAAKjlE,KAAN,EAAa+c,MAAM,CAAC1d,CAAD,CAAnB,CAAnC;AACD;;AACD,UAAIa,OAAO,CAAC4c,MAAZ,EAAoB;AAClB8qD,QAAAA,YAAY,GAAGA,YAAY,CAAC9qD,MAAb,CAAoB,UAAC5e,OAAD,EAAUuC,KAAV,EAAiB0rC,KAAjB;AAAA,iBAA2BjsC,OAAO,CAAC4c,MAAR,CAAe5e,OAAf,EAAwBuC,KAAxB,EAA+B0rC,KAA/B,EAAsClsC,IAAtC,CAA3B;AAAA,SAApB,CAAf;AACD;;AACD,UAAIC,OAAO,CAAC+oE,QAAZ,EAAsB;AACpBrB,QAAAA,YAAY,GAAGA,YAAY,CAAC/sC,IAAb,CAAkB,UAAC7Y,CAAD,EAAI7gB,CAAJ;AAAA,iBAAUjB,OAAO,CAAC+oE,QAAR,CAAiBjnD,CAAjB,EAAoB7gB,CAApB,EAAuBlB,IAAvB,CAAV;AAAA,SAAlB,CAAf;AACD;;AACD,6BAAK2nE,YAAL,EAAmB,UAACl/C,OAAD,EAAa;AAC9B,YAAMkgD,MAAM,GAAGf,iBAAiB,CAAC3nE,OAAO,CAACmqB,SAAT,EAAoB3B,OAApB,CAAhC;AACA4/C,QAAAA,WAAW,CAAClnE,IAAZ,CAAiBwnE,MAAM,CAACM,UAAP,CAAkB9lD,IAAlB,CAAuB,OAAvB,EAA6BsF,OAA7B,CAAjB;AACA6/C,QAAAA,gBAAgB,CAACnnE,IAAjB,CAAsBwnE,MAAM,CAACO,eAAP,CAAuB/lD,IAAvB,CAA4B,OAA5B,EAAkCsF,OAAlC,CAAtB;AACA8/C,QAAAA,eAAe,CAACpnE,IAAhB,CAAqBwnE,MAAM,CAACQ,cAAP,CAAsBhmD,IAAtB,CAA2B,OAA3B,EAAiCsF,OAAjC,CAArB;AACD,OALD;AAMA,WAAK4/C,WAAL,GAAmBA,WAAnB;AACA,WAAKC,gBAAL,GAAwBA,gBAAxB;AACA,WAAKC,eAAL,GAAuBA,eAAvB;AACA,WAAKL,UAAL,GAAkBP,YAAlB;AACA,aAAOA,YAAP;AACD;;;WACD,gBAAO5gC,OAAP,EAAgB8pB,MAAhB,EAAwB;AACtB,UAAM5wD,OAAO,GAAG,KAAKA,OAAL,CAAa06C,UAAb,CAAwB,KAAKlkB,UAAL,EAAxB,CAAhB;AACA,UAAM3Z,MAAM,GAAG,KAAKkO,OAApB;AACA,UAAImD,UAAJ;AACA,UAAIw5C,YAAY,GAAG,EAAnB;;AACA,UAAI,CAAC7qD,MAAM,CAACle,MAAZ,EAAoB;AAClB,YAAI,KAAKipE,OAAL,KAAiB,CAArB,EAAwB;AACtB15C,UAAAA,UAAU,GAAG;AACX05C,YAAAA,OAAO,EAAE;AADE,WAAb;AAGD;AACF,OAND,MAMO;AACL,YAAMtoE,QAAQ,GAAG+kE,WAAW,CAACrkE,OAAO,CAACV,QAAT,CAAX,CAA8B4jB,IAA9B,CAAmC,IAAnC,EAAyCrG,MAAzC,EAAiD,KAAKgrD,cAAtD,CAAjB;AACAH,QAAAA,YAAY,GAAG,KAAKyB,YAAL,CAAkBnpE,OAAlB,CAAf;AACA,aAAKvB,KAAL,GAAa,KAAK2qE,QAAL,CAAc1B,YAAd,EAA4B1nE,OAA5B,CAAb;AACA,aAAK4lE,UAAL,GAAkB,KAAKyD,aAAL,CAAmB3B,YAAnB,EAAiC1nE,OAAjC,CAAlB;AACA,aAAK5C,IAAL,GAAY,KAAKksE,OAAL,CAAa5B,YAAb,EAA2B1nE,OAA3B,CAAZ;AACA,aAAK6lE,SAAL,GAAiB,KAAK0D,YAAL,CAAkB7B,YAAlB,EAAgC1nE,OAAhC,CAAjB;AACA,aAAKklE,MAAL,GAAc,KAAKsE,SAAL,CAAe9B,YAAf,EAA6B1nE,OAA7B,CAAd;AACA,YAAMvC,IAAI,GAAG,KAAKqqE,KAAL,GAAa7C,cAAc,CAAC,IAAD,EAAOjlE,OAAP,CAAxC;;AACA,YAAMypE,eAAe,GAAG,SAAc,EAAd,EAAkBnqE,QAAlB,EAA4B7B,IAA5B,CAAxB;;AACA,YAAM4pE,SAAS,GAAGL,kBAAkB,CAAC,KAAKlnE,KAAN,EAAaE,OAAb,EAAsBypE,eAAtB,CAApC;AACA,YAAMC,eAAe,GAAGtC,kBAAkB,CAACpnE,OAAD,EAAUypE,eAAV,EAA2BpC,SAA3B,EAAsC,KAAKvnE,KAA3C,CAA1C;AACA,aAAK2mE,MAAL,GAAcY,SAAS,CAACZ,MAAxB;AACA,aAAKK,MAAL,GAAcO,SAAS,CAACP,MAAxB;AACA54C,QAAAA,UAAU,GAAG;AACX05C,UAAAA,OAAO,EAAE,CADE;AAEXl7D,UAAAA,CAAC,EAAEg9D,eAAe,CAACh9D,CAFR;AAGXC,UAAAA,CAAC,EAAE+8D,eAAe,CAAC/8D,CAHR;AAIX7J,UAAAA,KAAK,EAAErF,IAAI,CAACqF,KAJD;AAKXD,UAAAA,MAAM,EAAEpF,IAAI,CAACoF,MALF;AAMXqlE,UAAAA,MAAM,EAAE5oE,QAAQ,CAACoN,CANN;AAOXy7D,UAAAA,MAAM,EAAE7oE,QAAQ,CAACqN;AAPN,SAAb;AASD;;AACD,WAAKq7D,aAAL,GAAqBN,YAArB;AACA,WAAKlzC,QAAL,GAAgB91B,SAAhB;;AACA,UAAIwvB,UAAJ,EAAgB;AACd,aAAKoL,kBAAL,GAA0Bxf,MAA1B,CAAiC,IAAjC,EAAuCoU,UAAvC;AACD;;AACD,UAAI4Y,OAAO,IAAI9mC,OAAO,CAAC2pE,QAAvB,EAAiC;AAC/B3pE,QAAAA,OAAO,CAAC2pE,QAAR,CAAiBzmD,IAAjB,CAAsB,IAAtB,EAA4B;AAACpjB,UAAAA,KAAK,EAAE,KAAKA,KAAb;AAAoBK,UAAAA,OAAO,EAAE,IAA7B;AAAmCywD,UAAAA,MAAM,EAANA;AAAnC,SAA5B;AACD;AACF;;;WACD,mBAAUgZ,YAAV,EAAwB/1C,GAAxB,EAA6Bp2B,IAA7B,EAAmCuC,OAAnC,EAA4C;AAC1C,UAAM6pE,aAAa,GAAG,KAAKC,gBAAL,CAAsBF,YAAtB,EAAoCnsE,IAApC,EAA0CuC,OAA1C,CAAtB;AACA6zB,MAAAA,GAAG,CAAC0uB,MAAJ,CAAWsnB,aAAa,CAACzpB,EAAzB,EAA6BypB,aAAa,CAACxpB,EAA3C;AACAxsB,MAAAA,GAAG,CAAC0uB,MAAJ,CAAWsnB,aAAa,CAACvpB,EAAzB,EAA6BupB,aAAa,CAACtpB,EAA3C;AACA1sB,MAAAA,GAAG,CAAC0uB,MAAJ,CAAWsnB,aAAa,CAACE,EAAzB,EAA6BF,aAAa,CAACG,EAA3C;AACD;;;WACD,0BAAiBJ,YAAjB,EAA+BnsE,IAA/B,EAAqCuC,OAArC,EAA8C;AAC5C,UAAOymE,MAAP,GAAyB,IAAzB,CAAOA,MAAP;AAAA,UAAeK,MAAf,GAAyB,IAAzB,CAAeA,MAAf;AACA,UAAOH,SAAP,GAAkC3mE,OAAlC,CAAO2mE,SAAP;AAAA,UAAkBW,YAAlB,GAAkCtnE,OAAlC,CAAkBsnE,YAAlB;;AACA,4BAAqD,wBAAcA,YAAd,CAArD;AAAA,UAAO1O,OAAP,mBAAOA,OAAP;AAAA,UAAgBC,QAAhB,mBAAgBA,QAAhB;AAAA,UAA0BC,UAA1B,mBAA0BA,UAA1B;AAAA,UAAsCC,WAAtC,mBAAsCA,WAAtC;;AACA,UAAUkR,GAAV,GAAyBL,YAAzB,CAAOl9D,CAAP;AAAA,UAAkBw9D,GAAlB,GAAyBN,YAAzB,CAAej9D,CAAf;AACA,UAAO7J,KAAP,GAAwBrF,IAAxB,CAAOqF,KAAP;AAAA,UAAcD,MAAd,GAAwBpF,IAAxB,CAAcoF,MAAd;AACA,UAAIu9C,EAAJ,EAAQE,EAAR,EAAYypB,EAAZ,EAAgB1pB,EAAhB,EAAoBE,EAApB,EAAwBypB,EAAxB;;AACA,UAAIlD,MAAM,KAAK,QAAf,EAAyB;AACvBvmB,QAAAA,EAAE,GAAG2pB,GAAG,GAAIrnE,MAAM,GAAG,CAArB;;AACA,YAAI4jE,MAAM,KAAK,MAAf,EAAuB;AACrBrmB,UAAAA,EAAE,GAAG6pB,GAAL;AACA3pB,UAAAA,EAAE,GAAGF,EAAE,GAAGumB,SAAV;AACAtmB,UAAAA,EAAE,GAAGE,EAAE,GAAGomB,SAAV;AACAqD,UAAAA,EAAE,GAAGzpB,EAAE,GAAGomB,SAAV;AACD,SALD,MAKO;AACLvmB,UAAAA,EAAE,GAAG6pB,GAAG,GAAGnnE,KAAX;AACAw9C,UAAAA,EAAE,GAAGF,EAAE,GAAGumB,SAAV;AACAtmB,UAAAA,EAAE,GAAGE,EAAE,GAAGomB,SAAV;AACAqD,UAAAA,EAAE,GAAGzpB,EAAE,GAAGomB,SAAV;AACD;;AACDoD,QAAAA,EAAE,GAAG3pB,EAAL;AACD,OAdD,MAcO;AACL,YAAIqmB,MAAM,KAAK,MAAf,EAAuB;AACrBnmB,UAAAA,EAAE,GAAG2pB,GAAG,GAAGvoE,IAAI,CAAC0H,GAAL,CAASwvD,OAAT,EAAkBE,UAAlB,CAAN,GAAuC6N,SAA5C;AACD,SAFD,MAEO,IAAIF,MAAM,KAAK,OAAf,EAAwB;AAC7BnmB,UAAAA,EAAE,GAAG2pB,GAAG,GAAGnnE,KAAN,GAAcpB,IAAI,CAAC0H,GAAL,CAASyvD,QAAT,EAAmBE,WAAnB,CAAd,GAAgD4N,SAArD;AACD,SAFM,MAEA;AACLrmB,UAAAA,EAAE,GAAG,KAAK4nB,MAAV;AACD;;AACD,YAAIpB,MAAM,KAAK,KAAf,EAAsB;AACpBzmB,UAAAA,EAAE,GAAG6pB,GAAL;AACA3pB,UAAAA,EAAE,GAAGF,EAAE,GAAGsmB,SAAV;AACAvmB,UAAAA,EAAE,GAAGE,EAAE,GAAGqmB,SAAV;AACAoD,UAAAA,EAAE,GAAGzpB,EAAE,GAAGqmB,SAAV;AACD,SALD,MAKO;AACLtmB,UAAAA,EAAE,GAAG6pB,GAAG,GAAGrnE,MAAX;AACA09C,UAAAA,EAAE,GAAGF,EAAE,GAAGsmB,SAAV;AACAvmB,UAAAA,EAAE,GAAGE,EAAE,GAAGqmB,SAAV;AACAoD,UAAAA,EAAE,GAAGzpB,EAAE,GAAGqmB,SAAV;AACD;;AACDqD,QAAAA,EAAE,GAAG3pB,EAAL;AACD;;AACD,aAAO;AAACD,QAAAA,EAAE,EAAFA,EAAD;AAAKE,QAAAA,EAAE,EAAFA,EAAL;AAASypB,QAAAA,EAAE,EAAFA,EAAT;AAAa1pB,QAAAA,EAAE,EAAFA,EAAb;AAAiBE,QAAAA,EAAE,EAAFA,EAAjB;AAAqBypB,QAAAA,EAAE,EAAFA;AAArB,OAAP;AACD;;;WACD,mBAAUG,EAAV,EAAct2C,GAAd,EAAmB7zB,OAAnB,EAA4B;AAC1B,UAAMvB,KAAK,GAAG,KAAKA,KAAnB;AACA,UAAME,MAAM,GAAGF,KAAK,CAACE,MAArB;AACA,UAAIikE,SAAJ,EAAekD,YAAf,EAA6B3mE,CAA7B;;AACA,UAAIR,MAAJ,EAAY;AACV,YAAM4iE,SAAS,GAAG,wBAAcvhE,OAAO,CAACshE,GAAtB,EAA2B,KAAK50D,CAAhC,EAAmC,KAAK5J,KAAxC,CAAlB;AACAqnE,QAAAA,EAAE,CAACz9D,CAAH,GAAO66D,WAAW,CAAC,IAAD,EAAOvnE,OAAO,CAACk5C,UAAf,EAA2Bl5C,OAA3B,CAAlB;AACA6zB,QAAAA,GAAG,CAACmtB,SAAJ,GAAgBugB,SAAS,CAACvgB,SAAV,CAAoBhhD,OAAO,CAACk5C,UAA5B,CAAhB;AACArlB,QAAAA,GAAG,CAACstB,YAAJ,GAAmB,QAAnB;AACAyhB,QAAAA,SAAS,GAAG,uBAAO5iE,OAAO,CAAC4iE,SAAf,CAAZ;AACAkD,QAAAA,YAAY,GAAG9lE,OAAO,CAAC8lE,YAAvB;AACAjyC,QAAAA,GAAG,CAAC2Q,SAAJ,GAAgBxkC,OAAO,CAACoqE,UAAxB;AACAv2C,QAAAA,GAAG,CAACv2B,IAAJ,GAAWslE,SAAS,CAAC3jB,MAArB;;AACA,aAAK9/C,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGR,MAAhB,EAAwB,EAAEQ,CAA1B,EAA6B;AAC3B00B,UAAAA,GAAG,CAACyuC,QAAJ,CAAa7jE,KAAK,CAACU,CAAD,CAAlB,EAAuBoiE,SAAS,CAAC70D,CAAV,CAAYy9D,EAAE,CAACz9D,CAAf,CAAvB,EAA0Cy9D,EAAE,CAACx9D,CAAH,GAAOi2D,SAAS,CAAC7pB,UAAV,GAAuB,CAAxE;AACAoxB,UAAAA,EAAE,CAACx9D,CAAH,IAAQi2D,SAAS,CAAC7pB,UAAV,GAAuB+sB,YAA/B;;AACA,cAAI3mE,CAAC,GAAG,CAAJ,KAAUR,MAAd,EAAsB;AACpBwrE,YAAAA,EAAE,CAACx9D,CAAH,IAAQ3M,OAAO,CAAC+lE,iBAAR,GAA4BD,YAApC;AACD;AACF;AACF;AACF;;;WACD,uBAAcjyC,GAAd,EAAmBs2C,EAAnB,EAAuBhrE,CAAvB,EAA0BoiE,SAA1B,EAAqCvhE,OAArC,EAA8C;AAC5C,UAAMooE,WAAW,GAAG,KAAKA,WAAL,CAAiBjpE,CAAjB,CAApB;AACA,UAAM8pE,eAAe,GAAG,KAAKZ,gBAAL,CAAsBlpE,CAAtB,CAAxB;AACA,UAAOwgE,SAAP,GAA0C3/D,OAA1C,CAAO2/D,SAAP;AAAA,UAAkBC,QAAlB,GAA0C5/D,OAA1C,CAAkB4/D,QAAlB;AAAA,UAA4B1xB,UAA5B,GAA0CluC,OAA1C,CAA4BkuC,UAA5B;AACA,UAAMi3B,QAAQ,GAAG,uBAAOnlE,OAAO,CAACmlE,QAAf,CAAjB;AACA,UAAMkF,MAAM,GAAG9C,WAAW,CAAC,IAAD,EAAO,MAAP,EAAevnE,OAAf,CAA1B;AACA,UAAMsqE,SAAS,GAAG/I,SAAS,CAAC70D,CAAV,CAAY29D,MAAZ,CAAlB;AACA,UAAME,OAAO,GAAG5K,SAAS,GAAGwF,QAAQ,CAACpsB,UAArB,GAAkC,CAACosB,QAAQ,CAACpsB,UAAT,GAAsB4mB,SAAvB,IAAoC,CAAtE,GAA0E,CAA1F;AACA,UAAM6K,MAAM,GAAGL,EAAE,CAACx9D,CAAH,GAAO49D,OAAtB;;AACA,UAAIvqE,OAAO,CAAC6/D,aAAZ,EAA2B;AACzB,YAAMoC,WAAW,GAAG;AAClBl0D,UAAAA,MAAM,EAAErM,IAAI,CAACyH,GAAL,CAASy2D,QAAT,EAAmBD,SAAnB,IAAgC,CADtB;AAElBp7B,UAAAA,UAAU,EAAE0kC,eAAe,CAAC1kC,UAFV;AAGlBhE,UAAAA,QAAQ,EAAE0oC,eAAe,CAAC1oC,QAHR;AAIlByD,UAAAA,WAAW,EAAE;AAJK,SAApB;AAMA,YAAMR,OAAO,GAAG+9B,SAAS,CAACE,UAAV,CAAqB6I,SAArB,EAAgC1K,QAAhC,IAA4CA,QAAQ,GAAG,CAAvE;AACA,YAAMn8B,OAAO,GAAG+mC,MAAM,GAAG7K,SAAS,GAAG,CAArC;AACA9rC,QAAAA,GAAG,CAAC4Q,WAAJ,GAAkBzkC,OAAO,CAACyqE,kBAA1B;AACA52C,QAAAA,GAAG,CAAC2Q,SAAJ,GAAgBxkC,OAAO,CAACyqE,kBAAxB;AACA,gCAAU52C,GAAV,EAAeouC,WAAf,EAA4Bz+B,OAA5B,EAAqCC,OAArC;AACA5P,QAAAA,GAAG,CAAC4Q,WAAJ,GAAkB2jC,WAAW,CAAC1jC,WAA9B;AACA7Q,QAAAA,GAAG,CAAC2Q,SAAJ,GAAgB4jC,WAAW,CAAC3oE,eAA5B;AACA,gCAAUo0B,GAAV,EAAeouC,WAAf,EAA4Bz+B,OAA5B,EAAqCC,OAArC;AACD,OAfD,MAeO;AACL5P,QAAAA,GAAG,CAAC8Q,SAAJ,GAAgByjC,WAAW,CAACpkC,WAAZ,IAA2B,CAA3C;AACAnQ,QAAAA,GAAG,CAAC4Q,WAAJ,GAAkB2jC,WAAW,CAAC1jC,WAA9B;AACA7Q,QAAAA,GAAG,CAACsuB,WAAJ,CAAgBimB,WAAW,CAACjzB,UAAZ,IAA0B,EAA1C;AACAthB,QAAAA,GAAG,CAACuuB,cAAJ,GAAqBgmB,WAAW,CAAChzB,gBAAZ,IAAgC,CAArD;AACA,YAAMs1B,MAAM,GAAGnJ,SAAS,CAACE,UAAV,CAAqB6I,SAArB,EAAgC1K,QAAQ,GAAG1xB,UAA3C,CAAf;AACA,YAAMy8B,MAAM,GAAGpJ,SAAS,CAACE,UAAV,CAAqBF,SAAS,CAACY,KAAV,CAAgBmI,SAAhB,EAA2B,CAA3B,CAArB,EAAoD1K,QAAQ,GAAG1xB,UAAX,GAAwB,CAA5E,CAAf;AACA,YAAMgkB,YAAY,GAAG,wBAAckW,WAAW,CAAClW,YAA1B,CAArB;;AACA,YAAIlmD,MAAM,CAACuX,MAAP,CAAc2uC,YAAd,EAA4BnwC,IAA5B,CAAiC,UAAAuC,CAAC;AAAA,iBAAIA,CAAC,KAAK,CAAV;AAAA,SAAlC,CAAJ,EAAoD;AAClDuP,UAAAA,GAAG,CAACwuB,SAAJ;AACAxuB,UAAAA,GAAG,CAAC2Q,SAAJ,GAAgBxkC,OAAO,CAACyqE,kBAAxB;AACA,kCAAmB52C,GAAnB,EAAwB;AACtBnnB,YAAAA,CAAC,EAAEg+D,MADmB;AAEtB/9D,YAAAA,CAAC,EAAE69D,MAFmB;AAGtB39D,YAAAA,CAAC,EAAE+yD,QAHmB;AAItBlxB,YAAAA,CAAC,EAAEixB,SAJmB;AAKtB5xD,YAAAA,MAAM,EAAEmkD;AALc,WAAxB;AAOAr+B,UAAAA,GAAG,CAACuU,IAAJ;AACAvU,UAAAA,GAAG,CAAC2uB,MAAJ;AACA3uB,UAAAA,GAAG,CAAC2Q,SAAJ,GAAgB4jC,WAAW,CAAC3oE,eAA5B;AACAo0B,UAAAA,GAAG,CAACwuB,SAAJ;AACA,kCAAmBxuB,GAAnB,EAAwB;AACtBnnB,YAAAA,CAAC,EAAEi+D,MADmB;AAEtBh+D,YAAAA,CAAC,EAAE69D,MAAM,GAAG,CAFU;AAGtB39D,YAAAA,CAAC,EAAE+yD,QAAQ,GAAG,CAHQ;AAItBlxB,YAAAA,CAAC,EAAEixB,SAAS,GAAG,CAJO;AAKtB5xD,YAAAA,MAAM,EAAEmkD;AALc,WAAxB;AAOAr+B,UAAAA,GAAG,CAACuU,IAAJ;AACD,SAtBD,MAsBO;AACLvU,UAAAA,GAAG,CAAC2Q,SAAJ,GAAgBxkC,OAAO,CAACyqE,kBAAxB;AACA52C,UAAAA,GAAG,CAAC+tB,QAAJ,CAAa8oB,MAAb,EAAqBF,MAArB,EAA6B5K,QAA7B,EAAuCD,SAAvC;AACA9rC,UAAAA,GAAG,CAAC+2C,UAAJ,CAAeF,MAAf,EAAuBF,MAAvB,EAA+B5K,QAA/B,EAAyCD,SAAzC;AACA9rC,UAAAA,GAAG,CAAC2Q,SAAJ,GAAgB4jC,WAAW,CAAC3oE,eAA5B;AACAo0B,UAAAA,GAAG,CAAC+tB,QAAJ,CAAa+oB,MAAb,EAAqBH,MAAM,GAAG,CAA9B,EAAiC5K,QAAQ,GAAG,CAA5C,EAA+CD,SAAS,GAAG,CAA3D;AACD;AACF;;AACD9rC,MAAAA,GAAG,CAAC2Q,SAAJ,GAAgB,KAAK8jC,eAAL,CAAqBnpE,CAArB,CAAhB;AACD;;;WACD,kBAASgrE,EAAT,EAAat2C,GAAb,EAAkB7zB,OAAlB,EAA2B;AACzB,UAAO5C,IAAP,GAAe,IAAf,CAAOA,IAAP;AACA,UAAO8oE,WAAP,GAAiFlmE,OAAjF,CAAOkmE,WAAP;AAAA,UAAoB2E,SAApB,GAAiF7qE,OAAjF,CAAoB6qE,SAApB;AAAA,UAA+B5E,aAA/B,GAAiFjmE,OAAjF,CAA+BimE,aAA/B;AAAA,UAA8CtG,SAA9C,GAAiF3/D,OAAjF,CAA8C2/D,SAA9C;AAAA,UAAyDC,QAAzD,GAAiF5/D,OAAjF,CAAyD4/D,QAAzD;AAAA,UAAmE1xB,UAAnE,GAAiFluC,OAAjF,CAAmEkuC,UAAnE;AACA,UAAMi3B,QAAQ,GAAG,uBAAOnlE,OAAO,CAACmlE,QAAf,CAAjB;AACA,UAAIa,cAAc,GAAGb,QAAQ,CAACpsB,UAA9B;AACA,UAAI+xB,YAAY,GAAG,CAAnB;AACA,UAAMvJ,SAAS,GAAG,wBAAcvhE,OAAO,CAACshE,GAAtB,EAA2B,KAAK50D,CAAhC,EAAmC,KAAK5J,KAAxC,CAAlB;;AACA,UAAMioE,cAAc,GAAG,SAAjBA,cAAiB,CAAS5lC,IAAT,EAAe;AACpCtR,QAAAA,GAAG,CAACyuC,QAAJ,CAAan9B,IAAb,EAAmBo8B,SAAS,CAAC70D,CAAV,CAAYy9D,EAAE,CAACz9D,CAAH,GAAOo+D,YAAnB,CAAnB,EAAqDX,EAAE,CAACx9D,CAAH,GAAOq5D,cAAc,GAAG,CAA7E;AACAmE,QAAAA,EAAE,CAACx9D,CAAH,IAAQq5D,cAAc,GAAGE,WAAzB;AACD,OAHD;;AAIA,UAAM8E,uBAAuB,GAAGzJ,SAAS,CAACvgB,SAAV,CAAoB6pB,SAApB,CAAhC;AACA,UAAIpF,QAAJ,EAAcwF,SAAd,EAAyBnyB,KAAzB,EAAgC35C,CAAhC,EAAmCoqC,CAAnC,EAAsCpZ,IAAtC,EAA4CqZ,IAA5C;AACA3V,MAAAA,GAAG,CAACmtB,SAAJ,GAAgB6pB,SAAhB;AACAh3C,MAAAA,GAAG,CAACstB,YAAJ,GAAmB,QAAnB;AACAttB,MAAAA,GAAG,CAACv2B,IAAJ,GAAW6nE,QAAQ,CAAClmB,MAApB;AACAkrB,MAAAA,EAAE,CAACz9D,CAAH,GAAO66D,WAAW,CAAC,IAAD,EAAOyD,uBAAP,EAAgChrE,OAAhC,CAAlB;AACA6zB,MAAAA,GAAG,CAAC2Q,SAAJ,GAAgBxkC,OAAO,CAACkrE,SAAxB;AACA,6BAAK,KAAKtF,UAAV,EAAsBmF,cAAtB;AACAD,MAAAA,YAAY,GAAG7E,aAAa,IAAI+E,uBAAuB,KAAK,OAA7C,GACXH,SAAS,KAAK,QAAd,GAA0BjL,QAAQ,GAAG,CAAX,GAAe1xB,UAAzC,GAAwD0xB,QAAQ,GAAG,CAAX,GAAe1xB,UAD5D,GAEX,CAFJ;;AAGA,WAAK/uC,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAG/yB,IAAI,CAACuB,MAAxB,EAAgCQ,CAAC,GAAGgxB,IAApC,EAA0C,EAAEhxB,CAA5C,EAA+C;AAC7CsmE,QAAAA,QAAQ,GAAGroE,IAAI,CAAC+B,CAAD,CAAf;AACA8rE,QAAAA,SAAS,GAAG,KAAK3C,eAAL,CAAqBnpE,CAArB,CAAZ;AACA00B,QAAAA,GAAG,CAAC2Q,SAAJ,GAAgBymC,SAAhB;AACA,+BAAKxF,QAAQ,CAACC,MAAd,EAAsBqF,cAAtB;AACAjyB,QAAAA,KAAK,GAAG2sB,QAAQ,CAAC3sB,KAAjB;;AACA,YAAImtB,aAAa,IAAIntB,KAAK,CAACn6C,MAA3B,EAAmC;AACjC,eAAKwsE,aAAL,CAAmBt3C,GAAnB,EAAwBs2C,EAAxB,EAA4BhrE,CAA5B,EAA+BoiE,SAA/B,EAA0CvhE,OAA1C;;AACAgmE,UAAAA,cAAc,GAAGtkE,IAAI,CAAC0H,GAAL,CAAS+7D,QAAQ,CAACpsB,UAAlB,EAA8B4mB,SAA9B,CAAjB;AACD;;AACD,aAAKp2B,CAAC,GAAG,CAAJ,EAAOC,IAAI,GAAGsP,KAAK,CAACn6C,MAAzB,EAAiC4qC,CAAC,GAAGC,IAArC,EAA2C,EAAED,CAA7C,EAAgD;AAC9CwhC,UAAAA,cAAc,CAACjyB,KAAK,CAACvP,CAAD,CAAN,CAAd;AACAy8B,UAAAA,cAAc,GAAGb,QAAQ,CAACpsB,UAA1B;AACD;;AACD,+BAAK0sB,QAAQ,CAACE,KAAd,EAAqBoF,cAArB;AACD;;AACDD,MAAAA,YAAY,GAAG,CAAf;AACA9E,MAAAA,cAAc,GAAGb,QAAQ,CAACpsB,UAA1B;AACA,6BAAK,KAAK8sB,SAAV,EAAqBkF,cAArB;AACAZ,MAAAA,EAAE,CAACx9D,CAAH,IAAQu5D,WAAR;AACD;;;WACD,oBAAWiE,EAAX,EAAet2C,GAAf,EAAoB7zB,OAApB,EAA6B;AAC3B,UAAMklE,MAAM,GAAG,KAAKA,MAApB;AACA,UAAMvmE,MAAM,GAAGumE,MAAM,CAACvmE,MAAtB;AACA,UAAIymE,UAAJ,EAAgBjmE,CAAhB;;AACA,UAAIR,MAAJ,EAAY;AACV,YAAM4iE,SAAS,GAAG,wBAAcvhE,OAAO,CAACshE,GAAtB,EAA2B,KAAK50D,CAAhC,EAAmC,KAAK5J,KAAxC,CAAlB;AACAqnE,QAAAA,EAAE,CAACz9D,CAAH,GAAO66D,WAAW,CAAC,IAAD,EAAOvnE,OAAO,CAACorE,WAAf,EAA4BprE,OAA5B,CAAlB;AACAmqE,QAAAA,EAAE,CAACx9D,CAAH,IAAQ3M,OAAO,CAACmmE,eAAhB;AACAtyC,QAAAA,GAAG,CAACmtB,SAAJ,GAAgBugB,SAAS,CAACvgB,SAAV,CAAoBhhD,OAAO,CAACorE,WAA5B,CAAhB;AACAv3C,QAAAA,GAAG,CAACstB,YAAJ,GAAmB,QAAnB;AACAikB,QAAAA,UAAU,GAAG,uBAAOplE,OAAO,CAAColE,UAAf,CAAb;AACAvxC,QAAAA,GAAG,CAAC2Q,SAAJ,GAAgBxkC,OAAO,CAACqrE,WAAxB;AACAx3C,QAAAA,GAAG,CAACv2B,IAAJ,GAAW8nE,UAAU,CAACnmB,MAAtB;;AACA,aAAK9/C,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGR,MAAhB,EAAwB,EAAEQ,CAA1B,EAA6B;AAC3B00B,UAAAA,GAAG,CAACyuC,QAAJ,CAAa4C,MAAM,CAAC/lE,CAAD,CAAnB,EAAwBoiE,SAAS,CAAC70D,CAAV,CAAYy9D,EAAE,CAACz9D,CAAf,CAAxB,EAA2Cy9D,EAAE,CAACx9D,CAAH,GAAOy4D,UAAU,CAACrsB,UAAX,GAAwB,CAA1E;AACAoxB,UAAAA,EAAE,CAACx9D,CAAH,IAAQy4D,UAAU,CAACrsB,UAAX,GAAwB/4C,OAAO,CAAComE,aAAxC;AACD;AACF;AACF;;;WACD,wBAAe+D,EAAf,EAAmBt2C,GAAnB,EAAwBy3C,WAAxB,EAAqCtrE,OAArC,EAA8C;AAC5C,UAAOymE,MAAP,GAAyB,IAAzB,CAAOA,MAAP;AAAA,UAAeK,MAAf,GAAyB,IAAzB,CAAeA,MAAf;AACA,UAAOp6D,CAAP,GAAey9D,EAAf,CAAOz9D,CAAP;AAAA,UAAUC,CAAV,GAAew9D,EAAf,CAAUx9D,CAAV;AACA,UAAO7J,KAAP,GAAwBwoE,WAAxB,CAAOxoE,KAAP;AAAA,UAAcD,MAAd,GAAwByoE,WAAxB,CAAczoE,MAAd;;AACA,4BAAqD,wBAAc7C,OAAO,CAACsnE,YAAtB,CAArD;AAAA,UAAO1O,OAAP,mBAAOA,OAAP;AAAA,UAAgBC,QAAhB,mBAAgBA,QAAhB;AAAA,UAA0BC,UAA1B,mBAA0BA,UAA1B;AAAA,UAAsCC,WAAtC,mBAAsCA,WAAtC;;AACAllC,MAAAA,GAAG,CAAC2Q,SAAJ,GAAgBxkC,OAAO,CAACP,eAAxB;AACAo0B,MAAAA,GAAG,CAAC4Q,WAAJ,GAAkBzkC,OAAO,CAAC0kC,WAA1B;AACA7Q,MAAAA,GAAG,CAAC8Q,SAAJ,GAAgB3kC,OAAO,CAACgkC,WAAxB;AACAnQ,MAAAA,GAAG,CAACwuB,SAAJ;AACAxuB,MAAAA,GAAG,CAACyuB,MAAJ,CAAW51C,CAAC,GAAGksD,OAAf,EAAwBjsD,CAAxB;;AACA,UAAIm6D,MAAM,KAAK,KAAf,EAAsB;AACpB,aAAKyE,SAAL,CAAepB,EAAf,EAAmBt2C,GAAnB,EAAwBy3C,WAAxB,EAAqCtrE,OAArC;AACD;;AACD6zB,MAAAA,GAAG,CAAC0uB,MAAJ,CAAW71C,CAAC,GAAG5J,KAAJ,GAAY+1D,QAAvB,EAAiClsD,CAAjC;AACAknB,MAAAA,GAAG,CAAC23C,gBAAJ,CAAqB9+D,CAAC,GAAG5J,KAAzB,EAAgC6J,CAAhC,EAAmCD,CAAC,GAAG5J,KAAvC,EAA8C6J,CAAC,GAAGksD,QAAlD;;AACA,UAAIiO,MAAM,KAAK,QAAX,IAAuBL,MAAM,KAAK,OAAtC,EAA+C;AAC7C,aAAK8E,SAAL,CAAepB,EAAf,EAAmBt2C,GAAnB,EAAwBy3C,WAAxB,EAAqCtrE,OAArC;AACD;;AACD6zB,MAAAA,GAAG,CAAC0uB,MAAJ,CAAW71C,CAAC,GAAG5J,KAAf,EAAsB6J,CAAC,GAAG9J,MAAJ,GAAak2D,WAAnC;AACAllC,MAAAA,GAAG,CAAC23C,gBAAJ,CAAqB9+D,CAAC,GAAG5J,KAAzB,EAAgC6J,CAAC,GAAG9J,MAApC,EAA4C6J,CAAC,GAAG5J,KAAJ,GAAYi2D,WAAxD,EAAqEpsD,CAAC,GAAG9J,MAAzE;;AACA,UAAIikE,MAAM,KAAK,QAAf,EAAyB;AACvB,aAAKyE,SAAL,CAAepB,EAAf,EAAmBt2C,GAAnB,EAAwBy3C,WAAxB,EAAqCtrE,OAArC;AACD;;AACD6zB,MAAAA,GAAG,CAAC0uB,MAAJ,CAAW71C,CAAC,GAAGosD,UAAf,EAA2BnsD,CAAC,GAAG9J,MAA/B;AACAgxB,MAAAA,GAAG,CAAC23C,gBAAJ,CAAqB9+D,CAArB,EAAwBC,CAAC,GAAG9J,MAA5B,EAAoC6J,CAApC,EAAuCC,CAAC,GAAG9J,MAAJ,GAAai2D,UAApD;;AACA,UAAIgO,MAAM,KAAK,QAAX,IAAuBL,MAAM,KAAK,MAAtC,EAA8C;AAC5C,aAAK8E,SAAL,CAAepB,EAAf,EAAmBt2C,GAAnB,EAAwBy3C,WAAxB,EAAqCtrE,OAArC;AACD;;AACD6zB,MAAAA,GAAG,CAAC0uB,MAAJ,CAAW71C,CAAX,EAAcC,CAAC,GAAGisD,OAAlB;AACA/kC,MAAAA,GAAG,CAAC23C,gBAAJ,CAAqB9+D,CAArB,EAAwBC,CAAxB,EAA2BD,CAAC,GAAGksD,OAA/B,EAAwCjsD,CAAxC;AACAknB,MAAAA,GAAG,CAACi+B,SAAJ;AACAj+B,MAAAA,GAAG,CAACuU,IAAJ;;AACA,UAAIpoC,OAAO,CAACgkC,WAAR,GAAsB,CAA1B,EAA6B;AAC3BnQ,QAAAA,GAAG,CAAC2uB,MAAJ;AACD;AACF;;;WACD,gCAAuBxiD,OAAvB,EAAgC;AAC9B,UAAMF,KAAK,GAAG,KAAKA,KAAnB;AACA,UAAMmqB,KAAK,GAAG,KAAKiF,WAAnB;AACA,UAAMu8C,KAAK,GAAGxhD,KAAK,IAAIA,KAAK,CAACvd,CAA7B;AACA,UAAMg/D,KAAK,GAAGzhD,KAAK,IAAIA,KAAK,CAACtd,CAA7B;;AACA,UAAI8+D,KAAK,IAAIC,KAAb,EAAoB;AAClB,YAAMpsE,QAAQ,GAAG+kE,WAAW,CAACrkE,OAAO,CAACV,QAAT,CAAX,CAA8B4jB,IAA9B,CAAmC,IAAnC,EAAyC,KAAK6H,OAA9C,EAAuD,KAAK88C,cAA5D,CAAjB;;AACA,YAAI,CAACvoE,QAAL,EAAe;AACb;AACD;;AACD,YAAM7B,IAAI,GAAG,KAAKqqE,KAAL,GAAa7C,cAAc,CAAC,IAAD,EAAOjlE,OAAP,CAAxC;;AACA,YAAMypE,eAAe,GAAG,SAAc,EAAd,EAAkBnqE,QAAlB,EAA4B,KAAKwoE,KAAjC,CAAxB;;AACA,YAAMT,SAAS,GAAGL,kBAAkB,CAAClnE,KAAD,EAAQE,OAAR,EAAiBypE,eAAjB,CAApC;AACA,YAAMxpC,KAAK,GAAGmnC,kBAAkB,CAACpnE,OAAD,EAAUypE,eAAV,EAA2BpC,SAA3B,EAAsCvnE,KAAtC,CAAhC;;AACA,YAAI2rE,KAAK,CAACr+C,GAAN,KAAc6S,KAAK,CAACvzB,CAApB,IAAyBg/D,KAAK,CAACt+C,GAAN,KAAc6S,KAAK,CAACtzB,CAAjD,EAAoD;AAClD,eAAK85D,MAAL,GAAcY,SAAS,CAACZ,MAAxB;AACA,eAAKK,MAAL,GAAcO,SAAS,CAACP,MAAxB;AACA,eAAKhkE,KAAL,GAAarF,IAAI,CAACqF,KAAlB;AACA,eAAKD,MAAL,GAAcpF,IAAI,CAACoF,MAAnB;AACA,eAAKqlE,MAAL,GAAc5oE,QAAQ,CAACoN,CAAvB;AACA,eAAKy7D,MAAL,GAAc7oE,QAAQ,CAACqN,CAAvB;;AACA,eAAK2sB,kBAAL,GAA0Bxf,MAA1B,CAAiC,IAAjC,EAAuCmmB,KAAvC;AACD;AACF;AACF;;;WACD,cAAKpM,GAAL,EAAU;AACR,UAAM7zB,OAAO,GAAG,KAAKA,OAAL,CAAa06C,UAAb,CAAwB,KAAKlkB,UAAL,EAAxB,CAAhB;AACA,UAAIoxC,OAAO,GAAG,KAAKA,OAAnB;;AACA,UAAI,CAACA,OAAL,EAAc;AACZ;AACD;;AACD,WAAK+D,sBAAL,CAA4B3rE,OAA5B;;AACA,UAAMsrE,WAAW,GAAG;AAClBxoE,QAAAA,KAAK,EAAE,KAAKA,KADM;AAElBD,QAAAA,MAAM,EAAE,KAAKA;AAFK,OAApB;AAIA,UAAMsnE,EAAE,GAAG;AACTz9D,QAAAA,CAAC,EAAE,KAAKA,CADC;AAETC,QAAAA,CAAC,EAAE,KAAKA;AAFC,OAAX;AAIAi7D,MAAAA,OAAO,GAAGlmE,IAAI,CAACs5B,GAAL,CAAS4sC,OAAT,IAAoB,IAApB,GAA2B,CAA3B,GAA+BA,OAAzC;AACA,UAAMl4B,OAAO,GAAG,uBAAU1vC,OAAO,CAAC0vC,OAAlB,CAAhB;AACA,UAAMk8B,iBAAiB,GAAG,KAAKntE,KAAL,CAAWE,MAAX,IAAqB,KAAKinE,UAAL,CAAgBjnE,MAArC,IAA+C,KAAKvB,IAAL,CAAUuB,MAAzD,IAAmE,KAAKknE,SAAL,CAAelnE,MAAlF,IAA4F,KAAKumE,MAAL,CAAYvmE,MAAlI;;AACA,UAAIqB,OAAO,CAACI,OAAR,IAAmBwrE,iBAAvB,EAA0C;AACxC/3C,QAAAA,GAAG,CAAC8tB,IAAJ;AACA9tB,QAAAA,GAAG,CAACg4C,WAAJ,GAAkBjE,OAAlB;AACA,aAAKhlB,cAAL,CAAoBunB,EAApB,EAAwBt2C,GAAxB,EAA6By3C,WAA7B,EAA0CtrE,OAA1C;AACA,gCAAsB6zB,GAAtB,EAA2B7zB,OAAO,CAACwiE,aAAnC;AACA2H,QAAAA,EAAE,CAACx9D,CAAH,IAAQ+iC,OAAO,CAACjtC,GAAhB;AACA,aAAKqgD,SAAL,CAAeqnB,EAAf,EAAmBt2C,GAAnB,EAAwB7zB,OAAxB;AACA,aAAK8rE,QAAL,CAAc3B,EAAd,EAAkBt2C,GAAlB,EAAuB7zB,OAAvB;AACA,aAAK+rE,UAAL,CAAgB5B,EAAhB,EAAoBt2C,GAApB,EAAyB7zB,OAAzB;AACA,gCAAqB6zB,GAArB,EAA0B7zB,OAAO,CAACwiE,aAAlC;AACA3uC,QAAAA,GAAG,CAACguB,OAAJ;AACD;AACF;;;WACD,6BAAoB;AAClB,aAAO,KAAK92B,OAAL,IAAgB,EAAvB;AACD;;;WACD,2BAAkB0lC,cAAlB,EAAkCgU,aAAlC,EAAiD;AAAA;;AAC/C,UAAM/T,UAAU,GAAG,KAAK3lC,OAAxB;AACA,UAAMlO,MAAM,GAAG4zC,cAAc,CAACxxD,GAAf,CAAmB,iBAA2B;AAAA,YAAzBwxB,YAAyB,SAAzBA,YAAyB;AAAA,YAAXlwB,KAAW,SAAXA,KAAW;;AAC3D,YAAMujB,IAAI,GAAG,OAAI,CAAChkB,KAAL,CAAW41B,cAAX,CAA0BjF,YAA1B,CAAb;;AACA,YAAI,CAAC3M,IAAL,EAAW;AACT,gBAAM,IAAItF,KAAJ,CAAU,oCAAoCiS,YAA9C,CAAN;AACD;;AACD,eAAO;AACLA,UAAAA,YAAY,EAAZA,YADK;AAELzyB,UAAAA,OAAO,EAAE8lB,IAAI,CAAC/jB,IAAL,CAAUQ,KAAV,CAFJ;AAGLA,UAAAA,KAAK,EAALA;AAHK,SAAP;AAKD,OAVc,CAAf;AAWA,UAAMumC,OAAO,GAAG,CAAC,wBAAe4pB,UAAf,EAA2B7zC,MAA3B,CAAjB;;AACA,UAAMmvD,eAAe,GAAG,KAAKC,gBAAL,CAAsBpvD,MAAtB,EAA8B4nD,aAA9B,CAAxB;;AACA,UAAI39B,OAAO,IAAIklC,eAAf,EAAgC;AAC9B,aAAKjhD,OAAL,GAAelO,MAAf;AACA,aAAKgrD,cAAL,GAAsBpD,aAAtB;AACA,aAAKyH,mBAAL,GAA2B,IAA3B;AACA,aAAKpyD,MAAL,CAAY,IAAZ;AACD;AACF;;;WACD,qBAAYtY,CAAZ,EAAeovD,MAAf,EAA2C;AAAA,UAApBlG,WAAoB,uEAAN,IAAM;;AACzC,UAAIkG,MAAM,IAAI,KAAKsb,mBAAnB,EAAwC;AACtC,eAAO,KAAP;AACD;;AACD,WAAKA,mBAAL,GAA2B,KAA3B;AACA,UAAMlsE,OAAO,GAAG,KAAKA,OAArB;AACA,UAAM0wD,UAAU,GAAG,KAAK3lC,OAAL,IAAgB,EAAnC;;AACA,UAAMlO,MAAM,GAAG,KAAKu0C,kBAAL,CAAwB5vD,CAAxB,EAA2BkvD,UAA3B,EAAuCE,MAAvC,EAA+ClG,WAA/C,CAAf;;AACA,UAAMshB,eAAe,GAAG,KAAKC,gBAAL,CAAsBpvD,MAAtB,EAA8Brb,CAA9B,CAAxB;;AACA,UAAMslC,OAAO,GAAG8pB,MAAM,IAAI,CAAC,wBAAe/zC,MAAf,EAAuB6zC,UAAvB,CAAX,IAAiDsb,eAAjE;;AACA,UAAIllC,OAAJ,EAAa;AACX,aAAK/b,OAAL,GAAelO,MAAf;;AACA,YAAI7c,OAAO,CAACI,OAAR,IAAmBJ,OAAO,CAAC2pE,QAA/B,EAAyC;AACvC,eAAK9B,cAAL,GAAsB;AACpBn7D,YAAAA,CAAC,EAAElL,CAAC,CAACkL,CADe;AAEpBC,YAAAA,CAAC,EAAEnL,CAAC,CAACmL;AAFe,WAAtB;AAIA,eAAKmN,MAAL,CAAY,IAAZ,EAAkB82C,MAAlB;AACD;AACF;;AACD,aAAO9pB,OAAP;AACD;;;WACD,4BAAmBtlC,CAAnB,EAAsBkvD,UAAtB,EAAkCE,MAAlC,EAA0ClG,WAA1C,EAAuD;AACrD,UAAM1qD,OAAO,GAAG,KAAKA,OAArB;;AACA,UAAIwB,CAAC,CAACrD,IAAF,KAAW,UAAf,EAA2B;AACzB,eAAO,EAAP;AACD;;AACD,UAAI,CAACusD,WAAL,EAAkB;AAChB,eAAOgG,UAAP;AACD;;AACD,UAAM7zC,MAAM,GAAG,KAAK/c,KAAL,CAAWwxD,yBAAX,CAAqC9vD,CAArC,EAAwCxB,OAAO,CAACwwB,IAAhD,EAAsDxwB,OAAtD,EAA+D4wD,MAA/D,CAAf;;AACA,UAAI5wD,OAAO,CAACwvB,OAAZ,EAAqB;AACnB3S,QAAAA,MAAM,CAAC2S,OAAP;AACD;;AACD,aAAO3S,MAAP;AACD;;;WACD,0BAAiBA,MAAjB,EAAyBrb,CAAzB,EAA4B;AAC1B,UAAO0mE,MAAP,GAAkC,IAAlC,CAAOA,MAAP;AAAA,UAAeC,MAAf,GAAkC,IAAlC,CAAeA,MAAf;AAAA,UAAuBnoE,OAAvB,GAAkC,IAAlC,CAAuBA,OAAvB;AACA,UAAMV,QAAQ,GAAG+kE,WAAW,CAACrkE,OAAO,CAACV,QAAT,CAAX,CAA8B4jB,IAA9B,CAAmC,IAAnC,EAAyCrG,MAAzC,EAAiDrb,CAAjD,CAAjB;AACA,aAAOlC,QAAQ,KAAK,KAAb,KAAuB4oE,MAAM,KAAK5oE,QAAQ,CAACoN,CAApB,IAAyBy7D,MAAM,KAAK7oE,QAAQ,CAACqN,CAApE,CAAP;AACD;;;;EAhhBmBinC;;AAkhBtB72C,OAAO,CAACsnE,WAAR,GAAsBA,WAAtB;AACA,IAAI8H,cAAc,GAAG;AACnBzvD,EAAAA,EAAE,EAAE,SADe;AAEnB6mD,EAAAA,QAAQ,EAAExmE,OAFS;AAGnBsnE,EAAAA,WAAW,EAAXA,WAHmB;AAInBxsD,EAAAA,SAJmB,qBAIT/X,KAJS,EAIFq/D,KAJE,EAIKn/D,OAJL,EAIc;AAC/B,QAAIA,OAAJ,EAAa;AACXF,MAAAA,KAAK,CAACK,OAAN,GAAgB,IAAIpD,OAAJ,CAAY;AAAC+C,QAAAA,KAAK,EAALA,KAAD;AAAQE,QAAAA,OAAO,EAAPA;AAAR,OAAZ,CAAhB;AACD;AACF,GARkB;AASnBi7C,EAAAA,YATmB,wBASNn7C,KATM,EASCq/D,KATD,EASQn/D,OATR,EASiB;AAClC,QAAIF,KAAK,CAACK,OAAV,EAAmB;AACjBL,MAAAA,KAAK,CAACK,OAAN,CAAcga,UAAd,CAAyBna,OAAzB;AACD;AACF,GAbkB;AAcnB4O,EAAAA,KAdmB,iBAcb9O,KAda,EAcNq/D,KAdM,EAcCn/D,OAdD,EAcU;AAC3B,QAAIF,KAAK,CAACK,OAAV,EAAmB;AACjBL,MAAAA,KAAK,CAACK,OAAN,CAAcga,UAAd,CAAyBna,OAAzB;AACD;AACF,GAlBkB;AAmBnBosE,EAAAA,SAnBmB,qBAmBTtsE,KAnBS,EAmBF;AACf,QAAMK,OAAO,GAAGL,KAAK,CAACK,OAAtB;AACA,QAAM8iB,IAAI,GAAG;AACX9iB,MAAAA,OAAO,EAAPA;AADW,KAAb;;AAGA,QAAIL,KAAK,CAAC88C,aAAN,CAAoB,mBAApB,EAAyC35B,IAAzC,MAAmD,KAAvD,EAA8D;AAC5D;AACD;;AACD,QAAI9iB,OAAJ,EAAa;AACXA,MAAAA,OAAO,CAAC2qB,IAAR,CAAahrB,KAAK,CAAC+zB,GAAnB;AACD;;AACD/zB,IAAAA,KAAK,CAAC88C,aAAN,CAAoB,kBAApB,EAAwC35B,IAAxC;AACD,GA/BkB;AAgCnBwgD,EAAAA,UAhCmB,sBAgCR3jE,KAhCQ,EAgCDmjB,IAhCC,EAgCK;AACtB,QAAInjB,KAAK,CAACK,OAAV,EAAmB;AACjB,UAAM0qC,gBAAgB,GAAG5nB,IAAI,CAAC2tC,MAA9B;;AACA,UAAI9wD,KAAK,CAACK,OAAN,CAAcujE,WAAd,CAA0BzgD,IAAI,CAAC/G,KAA/B,EAAsC2uB,gBAAtC,EAAwD5nB,IAAI,CAACynC,WAA7D,CAAJ,EAA+E;AAC7EznC,QAAAA,IAAI,CAAC6jB,OAAL,GAAe,IAAf;AACD;AACF;AACF,GAvCkB;AAwCnBzpC,EAAAA,QAAQ,EAAE;AACR+C,IAAAA,OAAO,EAAE,IADD;AAERupE,IAAAA,QAAQ,EAAE,IAFF;AAGRrqE,IAAAA,QAAQ,EAAE,SAHF;AAIRG,IAAAA,eAAe,EAAE,iBAJT;AAKR2qE,IAAAA,UAAU,EAAE,MALJ;AAMRxH,IAAAA,SAAS,EAAE;AACThlE,MAAAA,MAAM,EAAE;AADC,KANH;AASRkoE,IAAAA,YAAY,EAAE,CATN;AAURC,IAAAA,iBAAiB,EAAE,CAVX;AAWR7sB,IAAAA,UAAU,EAAE,MAXJ;AAYRgyB,IAAAA,SAAS,EAAE,MAZH;AAaRhF,IAAAA,WAAW,EAAE,CAbL;AAcRf,IAAAA,QAAQ,EAAE,EAdF;AAgBR0F,IAAAA,SAAS,EAAE,MAhBH;AAiBRQ,IAAAA,WAAW,EAAE,MAjBL;AAkBRjF,IAAAA,aAAa,EAAE,CAlBP;AAmBRD,IAAAA,eAAe,EAAE,CAnBT;AAoBRf,IAAAA,UAAU,EAAE;AACVxnE,MAAAA,MAAM,EAAE;AADE,KApBJ;AAuBRwtE,IAAAA,WAAW,EAAE,MAvBL;AAwBR17B,IAAAA,OAAO,EAAE,CAxBD;AAyBRk3B,IAAAA,YAAY,EAAE,CAzBN;AA0BRD,IAAAA,SAAS,EAAE,CA1BH;AA2BRW,IAAAA,YAAY,EAAE,CA3BN;AA4BR3H,IAAAA,SAAS,EAAE,mBAAC9rC,GAAD,EAAMpqB,IAAN;AAAA,aAAeA,IAAI,CAAC07D,QAAL,CAAc1nE,IAA7B;AAAA,KA5BH;AA6BRmiE,IAAAA,QAAQ,EAAE,kBAAC/rC,GAAD,EAAMpqB,IAAN;AAAA,aAAeA,IAAI,CAAC07D,QAAL,CAAc1nE,IAA7B;AAAA,KA7BF;AA8BRgtE,IAAAA,kBAAkB,EAAE,MA9BZ;AA+BRxE,IAAAA,aAAa,EAAE,IA/BP;AAgCR/3B,IAAAA,UAAU,EAAE,CAhCJ;AAiCRxJ,IAAAA,WAAW,EAAE,eAjCL;AAkCRV,IAAAA,WAAW,EAAE,CAlCL;AAmCRnW,IAAAA,SAAS,EAAE;AACThpB,MAAAA,QAAQ,EAAE,GADD;AAETsF,MAAAA,MAAM,EAAE;AAFC,KAnCH;AAuCRgkB,IAAAA,UAAU,EAAE;AACVR,MAAAA,OAAO,EAAE;AACPxvB,QAAAA,IAAI,EAAE,QADC;AAEP+vB,QAAAA,UAAU,EAAE,CAAC,GAAD,EAAM,GAAN,EAAW,OAAX,EAAoB,QAApB,EAA8B,QAA9B,EAAwC,QAAxC;AAFL,OADC;AAKV05C,MAAAA,OAAO,EAAE;AACPz9D,QAAAA,MAAM,EAAE,QADD;AAEPtF,QAAAA,QAAQ,EAAE;AAFH;AALC,KAvCJ;AAiDRslB,IAAAA,SAAS,EAAE;AACTo+C,MAAAA,WAAW,EAAE8D,kBADJ;AAET5tE,MAAAA,KAFS,iBAEHipE,YAFG,EAEW;AAClB,YAAIA,YAAY,CAAC/oE,MAAb,GAAsB,CAA1B,EAA6B;AAC3B,cAAMoD,IAAI,GAAG2lE,YAAY,CAAC,CAAD,CAAzB;AACA,cAAMrpE,MAAM,GAAG0D,IAAI,CAACjC,KAAL,CAAWC,IAAX,CAAgB1B,MAA/B;AACA,cAAMiuE,UAAU,GAAGjuE,MAAM,GAAGA,MAAM,CAACM,MAAV,GAAmB,CAA5C;;AACA,cAAI,QAAQ,KAAKqB,OAAb,IAAwB,KAAKA,OAAL,CAAawwB,IAAb,KAAsB,SAAlD,EAA6D;AAC3D,mBAAOzuB,IAAI,CAAC7C,OAAL,CAAaJ,KAAb,IAAsB,EAA7B;AACD,WAFD,MAEO,IAAIiD,IAAI,CAACjD,KAAT,EAAgB;AACrB,mBAAOiD,IAAI,CAACjD,KAAZ;AACD,WAFM,MAEA,IAAIwtE,UAAU,GAAG,CAAb,IAAkBvqE,IAAI,CAACgxB,SAAL,GAAiBu5C,UAAvC,EAAmD;AACxD,mBAAOjuE,MAAM,CAAC0D,IAAI,CAACgxB,SAAN,CAAb;AACD;AACF;;AACD,eAAO,EAAP;AACD,OAhBQ;AAiBTy1C,MAAAA,UAAU,EAAE6D,kBAjBH;AAkBTzG,MAAAA,UAAU,EAAEyG,kBAlBH;AAmBT1D,MAAAA,WAAW,EAAE0D,kBAnBJ;AAoBTvtE,MAAAA,KApBS,iBAoBHimC,WApBG,EAoBU;AACjB,YAAI,QAAQ,KAAK/kC,OAAb,IAAwB,KAAKA,OAAL,CAAawwB,IAAb,KAAsB,SAAlD,EAA6D;AAC3D,iBAAOuU,WAAW,CAACjmC,KAAZ,GAAoB,IAApB,GAA2BimC,WAAW,CAACE,cAAvC,IAAyDF,WAAW,CAACE,cAA5E;AACD;;AACD,YAAInmC,KAAK,GAAGimC,WAAW,CAAC7lC,OAAZ,CAAoBJ,KAApB,IAA6B,EAAzC;;AACA,YAAIA,KAAJ,EAAW;AACTA,UAAAA,KAAK,IAAI,IAAT;AACD;;AACD,YAAMoK,KAAK,GAAG67B,WAAW,CAACE,cAA1B;;AACA,YAAI,CAAC,uBAAc/7B,KAAd,CAAL,EAA2B;AACzBpK,UAAAA,KAAK,IAAIoK,KAAT;AACD;;AACD,eAAOpK,KAAP;AACD,OAjCQ;AAkCTkqE,MAAAA,UAlCS,sBAkCEjkC,WAlCF,EAkCe;AACtB,YAAMjhB,IAAI,GAAGihB,WAAW,CAACjlC,KAAZ,CAAkB41B,cAAlB,CAAiCqP,WAAW,CAACtU,YAA7C,CAAb;AACA,YAAMzwB,OAAO,GAAG8jB,IAAI,CAAC7J,UAAL,CAAgBsf,QAAhB,CAAyBwL,WAAW,CAAChS,SAArC,CAAhB;AACA,eAAO;AACL2R,UAAAA,WAAW,EAAE1kC,OAAO,CAAC0kC,WADhB;AAELjlC,UAAAA,eAAe,EAAEO,OAAO,CAACP,eAFpB;AAGLukC,UAAAA,WAAW,EAAEhkC,OAAO,CAACgkC,WAHhB;AAILmR,UAAAA,UAAU,EAAEn1C,OAAO,CAACm1C,UAJf;AAKLC,UAAAA,gBAAgB,EAAEp1C,OAAO,CAACo1C,gBALrB;AAML8c,UAAAA,YAAY,EAAE;AANT,SAAP;AAQD,OA7CQ;AA8CTgX,MAAAA,cA9CS,4BA8CQ;AACf,eAAO,KAAKlpE,OAAL,CAAakrE,SAApB;AACD,OAhDQ;AAiDTjC,MAAAA,eAjDS,2BAiDOlkC,WAjDP,EAiDoB;AAC3B,YAAMjhB,IAAI,GAAGihB,WAAW,CAACjlC,KAAZ,CAAkB41B,cAAlB,CAAiCqP,WAAW,CAACtU,YAA7C,CAAb;AACA,YAAMzwB,OAAO,GAAG8jB,IAAI,CAAC7J,UAAL,CAAgBsf,QAAhB,CAAyBwL,WAAW,CAAChS,SAArC,CAAhB;AACA,eAAO;AACLwR,UAAAA,UAAU,EAAEvkC,OAAO,CAACukC,UADf;AAELhE,UAAAA,QAAQ,EAAEvgC,OAAO,CAACugC;AAFb,SAAP;AAID,OAxDQ;AAyDTqoC,MAAAA,UAAU,EAAEyD,kBAzDH;AA0DTxG,MAAAA,SAAS,EAAEwG,kBA1DF;AA2DTxD,MAAAA,YAAY,EAAEwD,kBA3DL;AA4DTnH,MAAAA,MAAM,EAAEmH,kBA5DC;AA6DTvD,MAAAA,WAAW,EAAEuD;AA7DJ;AAjDH,GAxCS;AAyJnBv4B,EAAAA,aAAa,EAAE;AACbqxB,IAAAA,QAAQ,EAAE,MADG;AAEbC,IAAAA,UAAU,EAAE,MAFC;AAGbxC,IAAAA,SAAS,EAAE;AAHE,GAzJI;AA8JnBx+B,EAAAA,WAAW,EAAE;AACXnW,IAAAA,WAAW,EAAE,qBAACxP,IAAD;AAAA,aAAUA,IAAI,KAAK,QAAT,IAAqBA,IAAI,KAAK,UAA9B,IAA4CA,IAAI,KAAK,UAA/D;AAAA,KADF;AAEXuP,IAAAA,UAAU,EAAE,KAFD;AAGX7D,IAAAA,SAAS,EAAE;AACT8D,MAAAA,WAAW,EAAE,KADJ;AAETD,MAAAA,UAAU,EAAE;AAFH,KAHA;AAOXH,IAAAA,SAAS,EAAE;AACTE,MAAAA,SAAS,EAAE;AADF,KAPA;AAUXI,IAAAA,UAAU,EAAE;AACVJ,MAAAA,SAAS,EAAE;AADD;AAVD,GA9JM;AA4KnB46B,EAAAA,sBAAsB,EAAE,CAAC,aAAD;AA5KL,CAArB;;AA+KA,IAAI1oD,OAAO,GAAG,aAAa+L,MAAM,CAACitB,MAAP,CAAc;AACzCuP,EAAAA,SAAS,EAAE,IAD8B;AAEzC+jC,EAAAA,UAAU,EAAE9Q,iBAF6B;AAGzC+Q,EAAAA,MAAM,EAAEvN,aAHiC;AAIzCxiE,EAAAA,MAAM,EAAE6mE,aAJiC;AAKzCmJ,EAAAA,QAAQ,EAAErI,eAL+B;AAMzCtnE,EAAAA,KAAK,EAAEonE,YANkC;AAOzCnnE,EAAAA,OAAO,EAAEovE;AAPgC,CAAd,CAA3B;;;AAUA,IAAMO,WAAW,GAAG,SAAdA,WAAc,CAACruE,MAAD,EAAS20B,GAAT,EAAczyB,KAAd,EAAqBosE,WAArB,EAAqC;AACvD,MAAI,OAAO35C,GAAP,KAAe,QAAnB,EAA6B;AAC3BzyB,IAAAA,KAAK,GAAGlC,MAAM,CAAC6C,IAAP,CAAY8xB,GAAZ,IAAmB,CAA3B;AACA25C,IAAAA,WAAW,CAAC5oD,OAAZ,CAAoB;AAACxjB,MAAAA,KAAK,EAALA,KAAD;AAAQzB,MAAAA,KAAK,EAAEk0B;AAAf,KAApB;AACD,GAHD,MAGO,IAAI9iB,KAAK,CAAC8iB,GAAD,CAAT,EAAgB;AACrBzyB,IAAAA,KAAK,GAAG,IAAR;AACD;;AACD,SAAOA,KAAP;AACD,CARD;;AASA,SAASqsE,cAAT,CAAwBvuE,MAAxB,EAAgC20B,GAAhC,EAAqCzyB,KAArC,EAA4CosE,WAA5C,EAAyD;AACvD,MAAM3sD,KAAK,GAAG3hB,MAAM,CAAC2H,OAAP,CAAegtB,GAAf,CAAd;;AACA,MAAIhT,KAAK,KAAK,CAAC,CAAf,EAAkB;AAChB,WAAO0sD,WAAW,CAACruE,MAAD,EAAS20B,GAAT,EAAczyB,KAAd,EAAqBosE,WAArB,CAAlB;AACD;;AACD,MAAMjuC,IAAI,GAAGrgC,MAAM,CAACwuE,WAAP,CAAmB75C,GAAnB,CAAb;AACA,SAAOhT,KAAK,KAAK0e,IAAV,GAAiBn+B,KAAjB,GAAyByf,KAAhC;AACD;;AACD,IAAMo4B,UAAU,GAAG,SAAbA,UAAa,CAAC73C,KAAD,EAAQ6I,GAAR;AAAA,SAAgB7I,KAAK,KAAK,IAAV,GAAiB,IAAjB,GAAwB,uBAAYmB,IAAI,CAACu1C,KAAL,CAAW12C,KAAX,CAAZ,EAA+B,CAA/B,EAAkC6I,GAAlC,CAAxC;AAAA,CAAnB;;IACM7M;;;;;AACJ,yBAAYiwB,GAAZ,EAAiB;AAAA;;AAAA;;AACf,kCAAMA,GAAN;AACA,YAAKsgD,WAAL,GAAmBpuE,SAAnB;AACA,YAAKquE,WAAL,GAAmB,CAAnB;AACA,YAAKC,YAAL,GAAoB,EAApB;AAJe;AAKhB;;;;WACD,cAAKjmB,YAAL,EAAmB;AACjB,UAAMkmB,KAAK,GAAG,KAAKD,YAAnB;;AACA,UAAIC,KAAK,CAACtuE,MAAV,EAAkB;AAChB,YAAMN,MAAM,GAAG,KAAK44B,SAAL,EAAf;;AADgB,qDAEag2C,KAFb;AAAA;;AAAA;AAEhB,oEAAoC;AAAA;AAAA,gBAAxB1sE,KAAwB,iBAAxBA,KAAwB;AAAA,gBAAjBzB,KAAiB,iBAAjBA,KAAiB;;AAClC,gBAAIT,MAAM,CAACkC,KAAD,CAAN,KAAkBzB,KAAtB,EAA6B;AAC3BT,cAAAA,MAAM,CAAC2pB,MAAP,CAAcznB,KAAd,EAAqB,CAArB;AACD;AACF;AANe;AAAA;AAAA;AAAA;AAAA;;AAOhB,aAAKysE,YAAL,GAAoB,EAApB;AACD;;AACD,8EAAWjmB,YAAX;AACD;;;WACD,eAAM/zB,GAAN,EAAWzyB,KAAX,EAAkB;AAChB,UAAI,uBAAcyyB,GAAd,CAAJ,EAAwB;AACtB,eAAO,IAAP;AACD;;AACD,UAAM30B,MAAM,GAAG,KAAK44B,SAAL,EAAf;AACA12B,MAAAA,KAAK,GAAG2sE,QAAQ,CAAC3sE,KAAD,CAAR,IAAmBlC,MAAM,CAACkC,KAAD,CAAN,KAAkByyB,GAArC,GAA2CzyB,KAA3C,GACJqsE,cAAc,CAACvuE,MAAD,EAAS20B,GAAT,EAAc,uBAAezyB,KAAf,EAAsByyB,GAAtB,CAAd,EAA0C,KAAKg6C,YAA/C,CADlB;AAEA,aAAO50B,UAAU,CAAC73C,KAAD,EAAQlC,MAAM,CAACM,MAAP,GAAgB,CAAxB,CAAjB;AACD;;;WACD,+BAAsB;AACpB,iCAAiC,KAAKuyB,aAAL,EAAjC;AAAA,UAAOC,UAAP,wBAAOA,UAAP;AAAA,UAAmBC,UAAnB,wBAAmBA,UAAnB;;AACA,4BAAiB,KAAK0pB,SAAL,CAAe,IAAf,CAAjB;AAAA,UAAK3xC,GAAL,mBAAKA,GAAL;AAAA,UAAUC,GAAV,mBAAUA,GAAV;;AACA,UAAI,KAAKpJ,OAAL,CAAa40C,MAAb,KAAwB,OAA5B,EAAqC;AACnC,YAAI,CAACzjB,UAAL,EAAiB;AACfhoB,UAAAA,GAAG,GAAG,CAAN;AACD;;AACD,YAAI,CAACioB,UAAL,EAAiB;AACfhoB,UAAAA,GAAG,GAAG,KAAK6tB,SAAL,GAAiBt4B,MAAjB,GAA0B,CAAhC;AACD;AACF;;AACD,WAAKwK,GAAL,GAAWA,GAAX;AACA,WAAKC,GAAL,GAAWA,GAAX;AACD;;;WACD,sBAAa;AACX,UAAMD,GAAG,GAAG,KAAKA,GAAjB;AACA,UAAMC,GAAG,GAAG,KAAKA,GAAjB;AACA,UAAM1B,MAAM,GAAG,KAAK1H,OAAL,CAAa0H,MAA5B;AACA,UAAMwzB,KAAK,GAAG,EAAd;AACA,UAAI78B,MAAM,GAAG,KAAK44B,SAAL,EAAb;AACA54B,MAAAA,MAAM,GAAI8K,GAAG,KAAK,CAAR,IAAaC,GAAG,KAAK/K,MAAM,CAACM,MAAP,GAAgB,CAAtC,GAA2CN,MAA3C,GAAoDA,MAAM,CAAC6mC,KAAP,CAAa/7B,GAAb,EAAkBC,GAAG,GAAG,CAAxB,CAA7D;AACA,WAAK2jE,WAAL,GAAmBrrE,IAAI,CAAC0H,GAAL,CAAS/K,MAAM,CAACM,MAAP,IAAiB+I,MAAM,GAAG,CAAH,GAAO,CAA9B,CAAT,EAA2C,CAA3C,CAAnB;AACA,WAAKolE,WAAL,GAAmB,KAAK3jE,GAAL,IAAYzB,MAAM,GAAG,GAAH,GAAS,CAA3B,CAAnB;;AACA,WAAK,IAAIwB,KAAK,GAAGC,GAAjB,EAAsBD,KAAK,IAAIE,GAA/B,EAAoCF,KAAK,EAAzC,EAA6C;AAC3CgyB,QAAAA,KAAK,CAACh6B,IAAN,CAAW;AAACgI,UAAAA,KAAK,EAALA;AAAD,SAAX;AACD;;AACD,aAAOgyB,KAAP;AACD;;;WACD,0BAAiBhyB,KAAjB,EAAwB;AACtB,UAAM7K,MAAM,GAAG,KAAK44B,SAAL,EAAf;;AACA,UAAI/tB,KAAK,IAAI,CAAT,IAAcA,KAAK,GAAG7K,MAAM,CAACM,MAAjC,EAAyC;AACvC,eAAON,MAAM,CAAC6K,KAAD,CAAb;AACD;;AACD,aAAOA,KAAP;AACD;;;WACD,qBAAY;AACV;;AACA,UAAI,CAAC,KAAKyzB,YAAL,EAAL,EAA0B;AACxB,aAAKkN,cAAL,GAAsB,CAAC,KAAKA,cAA5B;AACD;AACF;;;WACD,0BAAiB3gC,KAAjB,EAAwB;AACtB,UAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AAC7BA,QAAAA,KAAK,GAAG,KAAK3K,KAAL,CAAW2K,KAAX,CAAR;AACD;;AACD,aAAOA,KAAK,KAAK,IAAV,GAAiBquB,GAAjB,GAAuB,KAAK4I,kBAAL,CAAwB,CAACj3B,KAAK,GAAG,KAAK4jE,WAAd,IAA6B,KAAKC,WAA1D,CAA9B;AACD;;;WACD,yBAAgBxsE,KAAhB,EAAuB;AACrB,UAAM26B,KAAK,GAAG,KAAKA,KAAnB;;AACA,UAAI36B,KAAK,GAAG,CAAR,IAAaA,KAAK,GAAG26B,KAAK,CAACv8B,MAAN,GAAe,CAAxC,EAA2C;AACzC,eAAO,IAAP;AACD;;AACD,aAAO,KAAKs8B,gBAAL,CAAsBC,KAAK,CAAC36B,KAAD,CAAL,CAAa2I,KAAnC,CAAP;AACD;;;WACD,0BAAiBk2C,KAAjB,EAAwB;AACtB,aAAO19C,IAAI,CAACu1C,KAAL,CAAW,KAAK61B,WAAL,GAAmB,KAAKK,kBAAL,CAAwB/tB,KAAxB,IAAiC,KAAK2tB,WAApE,CAAP;AACD;;;WACD,wBAAe;AACb,aAAO,KAAKrqE,MAAZ;AACD;;;;EAxFyB62C;;;AA0F5Bh9C,aAAa,CAACmgB,EAAd,GAAmB,UAAnB;AACAngB,aAAa,CAACc,QAAd,GAAyB;AACvB69B,EAAAA,KAAK,EAAE;AACL7R,IAAAA,QAAQ,EAAE9sB,aAAa,CAAC+kB,SAAd,CAAwByW;AAD7B;AADgB,CAAzB;;AAMA,SAASq1C,eAAT,CAAyBC,iBAAzB,EAA4CC,SAA5C,EAAuD;AACrD,MAAMpyC,KAAK,GAAG,EAAd;AACA,MAAMqyC,WAAW,GAAG,KAApB;AACA,MAAO34B,MAAP,GAAuFy4B,iBAAvF,CAAOz4B,MAAP;AAAA,MAAe6L,IAAf,GAAuF4sB,iBAAvF,CAAe5sB,IAAf;AAAA,MAAqBt3C,GAArB,GAAuFkkE,iBAAvF,CAAqBlkE,GAArB;AAAA,MAA0BC,GAA1B,GAAuFikE,iBAAvF,CAA0BjkE,GAA1B;AAAA,MAA+BokE,SAA/B,GAAuFH,iBAAvF,CAA+BG,SAA/B;AAAA,MAA0ClsE,KAA1C,GAAuF+rE,iBAAvF,CAA0C/rE,KAA1C;AAAA,MAAiDmsE,QAAjD,GAAuFJ,iBAAvF,CAAiDI,QAAjD;AAAA,MAA2DC,SAA3D,GAAuFL,iBAAvF,CAA2DK,SAA3D;AAAA,MAAsEC,aAAtE,GAAuFN,iBAAvF,CAAsEM,aAAtE;AACA,MAAM7kC,IAAI,GAAG2X,IAAI,IAAI,CAArB;AACA,MAAMmtB,SAAS,GAAGH,QAAQ,GAAG,CAA7B;AACA,MAAYI,IAAZ,GAA+BP,SAA/B,CAAOnkE,GAAP;AAAA,MAAuB2kE,IAAvB,GAA+BR,SAA/B,CAAkBlkE,GAAlB;AACA,MAAM+nB,UAAU,GAAG,CAAC,uBAAchoB,GAAd,CAApB;AACA,MAAMioB,UAAU,GAAG,CAAC,uBAAchoB,GAAd,CAApB;AACA,MAAM2kE,YAAY,GAAG,CAAC,uBAAczsE,KAAd,CAAtB;AACA,MAAM0sE,UAAU,GAAG,CAACF,IAAI,GAAGD,IAAR,KAAiBH,SAAS,GAAG,CAA7B,CAAnB;AACA,MAAIprC,OAAO,GAAG,wBAAQ,CAACwrC,IAAI,GAAGD,IAAR,IAAgBD,SAAhB,GAA4B9kC,IAApC,IAA4CA,IAA1D;AACA,MAAI/c,MAAJ,EAAYkiD,OAAZ,EAAqBC,OAArB,EAA8BC,SAA9B;;AACA,MAAI7rC,OAAO,GAAGirC,WAAV,IAAyB,CAACp8C,UAA1B,IAAwC,CAACC,UAA7C,EAAyD;AACvD,WAAO,CAAC;AAACloB,MAAAA,KAAK,EAAE2kE;AAAR,KAAD,EAAgB;AAAC3kE,MAAAA,KAAK,EAAE4kE;AAAR,KAAhB,CAAP;AACD;;AACDK,EAAAA,SAAS,GAAGzsE,IAAI,CAAC+1C,IAAL,CAAUq2B,IAAI,GAAGxrC,OAAjB,IAA4B5gC,IAAI,CAACC,KAAL,CAAWksE,IAAI,GAAGvrC,OAAlB,CAAxC;;AACA,MAAI6rC,SAAS,GAAGP,SAAhB,EAA2B;AACzBtrC,IAAAA,OAAO,GAAG,wBAAQ6rC,SAAS,GAAG7rC,OAAZ,GAAsBsrC,SAAtB,GAAkC9kC,IAA1C,IAAkDA,IAA5D;AACD;;AACD,MAAI,CAAC,uBAAc0kC,SAAd,CAAL,EAA+B;AAC7BzhD,IAAAA,MAAM,GAAGrqB,IAAI,CAACipC,GAAL,CAAS,EAAT,EAAa6iC,SAAb,CAAT;AACAlrC,IAAAA,OAAO,GAAG5gC,IAAI,CAAC+1C,IAAL,CAAUnV,OAAO,GAAGvW,MAApB,IAA8BA,MAAxC;AACD;;AACD,MAAI6oB,MAAM,KAAK,OAAf,EAAwB;AACtBq5B,IAAAA,OAAO,GAAGvsE,IAAI,CAACC,KAAL,CAAWksE,IAAI,GAAGvrC,OAAlB,IAA6BA,OAAvC;AACA4rC,IAAAA,OAAO,GAAGxsE,IAAI,CAAC+1C,IAAL,CAAUq2B,IAAI,GAAGxrC,OAAjB,IAA4BA,OAAtC;AACD,GAHD,MAGO;AACL2rC,IAAAA,OAAO,GAAGJ,IAAV;AACAK,IAAAA,OAAO,GAAGJ,IAAV;AACD;;AACD,MAAI38C,UAAU,IAAIC,UAAd,IAA4BqvB,IAA5B,IAAoC,wBAAY,CAACr3C,GAAG,GAAGD,GAAP,IAAcs3C,IAA1B,EAAgCne,OAAO,GAAG,IAA1C,CAAxC,EAAyF;AACvF6rC,IAAAA,SAAS,GAAGzsE,IAAI,CAACu1C,KAAL,CAAWv1C,IAAI,CAACyH,GAAL,CAAS,CAACC,GAAG,GAAGD,GAAP,IAAcm5B,OAAvB,EAAgCmrC,QAAhC,CAAX,CAAZ;AACAnrC,IAAAA,OAAO,GAAG,CAACl5B,GAAG,GAAGD,GAAP,IAAcglE,SAAxB;AACAF,IAAAA,OAAO,GAAG9kE,GAAV;AACA+kE,IAAAA,OAAO,GAAG9kE,GAAV;AACD,GALD,MAKO,IAAI2kE,YAAJ,EAAkB;AACvBE,IAAAA,OAAO,GAAG98C,UAAU,GAAGhoB,GAAH,GAAS8kE,OAA7B;AACAC,IAAAA,OAAO,GAAG98C,UAAU,GAAGhoB,GAAH,GAAS8kE,OAA7B;AACAC,IAAAA,SAAS,GAAG7sE,KAAK,GAAG,CAApB;AACAghC,IAAAA,OAAO,GAAG,CAAC4rC,OAAO,GAAGD,OAAX,IAAsBE,SAAhC;AACD,GALM,MAKA;AACLA,IAAAA,SAAS,GAAG,CAACD,OAAO,GAAGD,OAAX,IAAsB3rC,OAAlC;;AACA,QAAI,wBAAa6rC,SAAb,EAAwBzsE,IAAI,CAACu1C,KAAL,CAAWk3B,SAAX,CAAxB,EAA+C7rC,OAAO,GAAG,IAAzD,CAAJ,EAAoE;AAClE6rC,MAAAA,SAAS,GAAGzsE,IAAI,CAACu1C,KAAL,CAAWk3B,SAAX,CAAZ;AACD,KAFD,MAEO;AACLA,MAAAA,SAAS,GAAGzsE,IAAI,CAAC+1C,IAAL,CAAU02B,SAAV,CAAZ;AACD;AACF;;AACD,MAAMC,aAAa,GAAG1sE,IAAI,CAAC0H,GAAL,CACpB,wBAAek5B,OAAf,CADoB,EAEpB,wBAAe2rC,OAAf,CAFoB,CAAtB;AAIAliD,EAAAA,MAAM,GAAGrqB,IAAI,CAACipC,GAAL,CAAS,EAAT,EAAa,uBAAc6iC,SAAd,IAA2BY,aAA3B,GAA2CZ,SAAxD,CAAT;AACAS,EAAAA,OAAO,GAAGvsE,IAAI,CAACu1C,KAAL,CAAWg3B,OAAO,GAAGliD,MAArB,IAA+BA,MAAzC;AACAmiD,EAAAA,OAAO,GAAGxsE,IAAI,CAACu1C,KAAL,CAAWi3B,OAAO,GAAGniD,MAArB,IAA+BA,MAAzC;AACA,MAAIwd,CAAC,GAAG,CAAR;;AACA,MAAIpY,UAAJ,EAAgB;AACd,QAAIw8C,aAAa,IAAIM,OAAO,KAAK9kE,GAAjC,EAAsC;AACpC+xB,MAAAA,KAAK,CAACh6B,IAAN,CAAW;AAACgI,QAAAA,KAAK,EAAEC;AAAR,OAAX;;AACA,UAAI8kE,OAAO,GAAG9kE,GAAd,EAAmB;AACjBogC,QAAAA,CAAC;AACF;;AACD,UAAI,wBAAa7nC,IAAI,CAACu1C,KAAL,CAAW,CAACg3B,OAAO,GAAG1kC,CAAC,GAAGjH,OAAf,IAA0BvW,MAArC,IAA+CA,MAA5D,EAAoE5iB,GAApE,EAAyEklE,iBAAiB,CAACllE,GAAD,EAAM6kE,UAAN,EAAkBX,iBAAlB,CAA1F,CAAJ,EAAqI;AACnI9jC,QAAAA,CAAC;AACF;AACF,KARD,MAQO,IAAI0kC,OAAO,GAAG9kE,GAAd,EAAmB;AACxBogC,MAAAA,CAAC;AACF;AACF;;AACD,SAAOA,CAAC,GAAG4kC,SAAX,EAAsB,EAAE5kC,CAAxB,EAA2B;AACzBrO,IAAAA,KAAK,CAACh6B,IAAN,CAAW;AAACgI,MAAAA,KAAK,EAAExH,IAAI,CAACu1C,KAAL,CAAW,CAACg3B,OAAO,GAAG1kC,CAAC,GAAGjH,OAAf,IAA0BvW,MAArC,IAA+CA;AAAvD,KAAX;AACD;;AACD,MAAIqF,UAAU,IAAIu8C,aAAd,IAA+BO,OAAO,KAAK9kE,GAA/C,EAAoD;AAClD,QAAI8xB,KAAK,CAACv8B,MAAN,IAAgB,wBAAau8B,KAAK,CAACA,KAAK,CAACv8B,MAAN,GAAe,CAAhB,CAAL,CAAwBuK,KAArC,EAA4CE,GAA5C,EAAiDilE,iBAAiB,CAACjlE,GAAD,EAAM4kE,UAAN,EAAkBX,iBAAlB,CAAlE,CAApB,EAA6H;AAC3HnyC,MAAAA,KAAK,CAACA,KAAK,CAACv8B,MAAN,GAAe,CAAhB,CAAL,CAAwBuK,KAAxB,GAAgCE,GAAhC;AACD,KAFD,MAEO;AACL8xB,MAAAA,KAAK,CAACh6B,IAAN,CAAW;AAACgI,QAAAA,KAAK,EAAEE;AAAR,OAAX;AACD;AACF,GAND,MAMO,IAAI,CAACgoB,UAAD,IAAe88C,OAAO,KAAK9kE,GAA/B,EAAoC;AACzC8xB,IAAAA,KAAK,CAACh6B,IAAN,CAAW;AAACgI,MAAAA,KAAK,EAAEglE;AAAR,KAAX;AACD;;AACD,SAAOhzC,KAAP;AACD;;AACD,SAASmzC,iBAAT,CAA2BnlE,KAA3B,EAAkC8kE,UAAlC,UAAyE;AAAA,MAA1BnxC,UAA0B,UAA1BA,UAA0B;AAAA,MAAdwY,WAAc,UAAdA,WAAc;AACvE,MAAMi5B,GAAG,GAAG,uBAAUj5B,WAAV,CAAZ;AACA,MAAMhzC,KAAK,GAAG,CAACw6B,UAAU,GAAGn7B,IAAI,CAAC0/B,GAAL,CAASktC,GAAT,CAAH,GAAmB5sE,IAAI,CAACw/B,GAAL,CAASotC,GAAT,CAA9B,KAAgD,KAA9D;AACA,MAAM3vE,MAAM,GAAG,OAAOqvE,UAAP,GAAoB,CAAC,KAAK9kE,KAAN,EAAavK,MAAhD;AACA,SAAO+C,IAAI,CAACyH,GAAL,CAAS6kE,UAAU,GAAG3rE,KAAtB,EAA6B1D,MAA7B,CAAP;AACD;;IACK4vE;;;;;AACJ,2BAAY/hD,GAAZ,EAAiB;AAAA;;AAAA;;AACf,kCAAMA,GAAN;AACA,YAAKrrB,KAAL,GAAazC,SAAb;AACA,YAAK0C,GAAL,GAAW1C,SAAX;AACA,YAAKouE,WAAL,GAAmBpuE,SAAnB;AACA,YAAK8vE,SAAL,GAAiB9vE,SAAjB;AACA,YAAKquE,WAAL,GAAmB,CAAnB;AANe;AAOhB;;;;WACD,eAAM/5C,GAAN,EAAWzyB,KAAX,EAAkB;AAChB,UAAI,uBAAcyyB,GAAd,CAAJ,EAAwB;AACtB,eAAO,IAAP;AACD;;AACD,UAAI,CAAC,OAAOA,GAAP,KAAe,QAAf,IAA2BA,GAAG,YAAY9N,MAA3C,KAAsD,CAACgoD,QAAQ,CAAC,CAACl6C,GAAF,CAAnE,EAA2E;AACzE,eAAO,IAAP;AACD;;AACD,aAAO,CAACA,GAAR;AACD;;;WACD,kCAAyB;AACvB,UAAO8M,WAAP,GAAsB,KAAK9/B,OAA3B,CAAO8/B,WAAP;;AACA,iCAAiC,KAAK5O,aAAL,EAAjC;AAAA,UAAOC,UAAP,wBAAOA,UAAP;AAAA,UAAmBC,UAAnB,wBAAmBA,UAAnB;;AACA,UAAKjoB,GAAL,GAAiB,IAAjB,CAAKA,GAAL;AAAA,UAAUC,GAAV,GAAiB,IAAjB,CAAUA,GAAV;;AACA,UAAMqlE,MAAM,GAAG,SAATA,MAAS,CAAAnqD,CAAC;AAAA,eAAKnb,GAAG,GAAGgoB,UAAU,GAAGhoB,GAAH,GAASmb,CAA9B;AAAA,OAAhB;;AACA,UAAMoqD,MAAM,GAAG,SAATA,MAAS,CAAApqD,CAAC;AAAA,eAAKlb,GAAG,GAAGgoB,UAAU,GAAGhoB,GAAH,GAASkb,CAA9B;AAAA,OAAhB;;AACA,UAAIwb,WAAJ,EAAiB;AACf,YAAM6uC,OAAO,GAAG,uBAAKxlE,GAAL,CAAhB;AACA,YAAMylE,OAAO,GAAG,uBAAKxlE,GAAL,CAAhB;;AACA,YAAIulE,OAAO,GAAG,CAAV,IAAeC,OAAO,GAAG,CAA7B,EAAgC;AAC9BF,UAAAA,MAAM,CAAC,CAAD,CAAN;AACD,SAFD,MAEO,IAAIC,OAAO,GAAG,CAAV,IAAeC,OAAO,GAAG,CAA7B,EAAgC;AACrCH,UAAAA,MAAM,CAAC,CAAD,CAAN;AACD;AACF;;AACD,UAAItlE,GAAG,KAAKC,GAAZ,EAAiB;AACf,YAAI1B,MAAM,GAAG,CAAb;;AACA,YAAI0B,GAAG,IAAI8b,MAAM,CAAC2pD,gBAAd,IAAkC1lE,GAAG,IAAI+b,MAAM,CAAC4pD,gBAApD,EAAsE;AACpEpnE,UAAAA,MAAM,GAAGhG,IAAI,CAACs5B,GAAL,CAAS5xB,GAAG,GAAG,IAAf,CAAT;AACD;;AACDslE,QAAAA,MAAM,CAACtlE,GAAG,GAAG1B,MAAP,CAAN;;AACA,YAAI,CAACo4B,WAAL,EAAkB;AAChB2uC,UAAAA,MAAM,CAACtlE,GAAG,GAAGzB,MAAP,CAAN;AACD;AACF;;AACD,WAAKyB,GAAL,GAAWA,GAAX;AACA,WAAKC,GAAL,GAAWA,GAAX;AACD;;;WACD,wBAAe;AACb,UAAMktC,QAAQ,GAAG,KAAKt2C,OAAL,CAAak7B,KAA9B;AACA,UAAKsb,aAAL,GAAgCF,QAAhC,CAAKE,aAAL;AAAA,UAAoBu4B,QAApB,GAAgCz4B,QAAhC,CAAoBy4B,QAApB;AACA,UAAItB,QAAJ;;AACA,UAAIsB,QAAJ,EAAc;AACZtB,QAAAA,QAAQ,GAAG/rE,IAAI,CAAC+1C,IAAL,CAAU,KAAKruC,GAAL,GAAW2lE,QAArB,IAAiCrtE,IAAI,CAACC,KAAL,CAAW,KAAKwH,GAAL,GAAW4lE,QAAtB,CAAjC,GAAmE,CAA9E;;AACA,YAAItB,QAAQ,GAAG,IAAf,EAAqB;AACnBnwD,UAAAA,OAAO,CAACiqC,IAAR,kBAAuB,KAAK7qC,EAA5B,8BAAkDqyD,QAAlD,4CAA4FtB,QAA5F;AACAA,UAAAA,QAAQ,GAAG,IAAX;AACD;AACF,OAND,MAMO;AACLA,QAAAA,QAAQ,GAAG,KAAKuB,gBAAL,EAAX;AACAx4B,QAAAA,aAAa,GAAGA,aAAa,IAAI,EAAjC;AACD;;AACD,UAAIA,aAAJ,EAAmB;AACjBi3B,QAAAA,QAAQ,GAAG/rE,IAAI,CAACyH,GAAL,CAASqtC,aAAT,EAAwBi3B,QAAxB,CAAX;AACD;;AACD,aAAOA,QAAP;AACD;;;WACD,4BAAmB;AACjB,aAAOvoD,MAAM,CAACoM,iBAAd;AACD;;;WACD,sBAAa;AACX,UAAM7nB,IAAI,GAAG,KAAKzJ,OAAlB;AACA,UAAMs2C,QAAQ,GAAG7sC,IAAI,CAACyxB,KAAtB;AACA,UAAIuyC,QAAQ,GAAG,KAAKwB,YAAL,EAAf;AACAxB,MAAAA,QAAQ,GAAG/rE,IAAI,CAAC0H,GAAL,CAAS,CAAT,EAAYqkE,QAAZ,CAAX;AACA,UAAMyB,uBAAuB,GAAG;AAC9BzB,QAAAA,QAAQ,EAARA,QAD8B;AAE9B74B,QAAAA,MAAM,EAAEnrC,IAAI,CAACmrC,MAFiB;AAG9BzrC,QAAAA,GAAG,EAAEM,IAAI,CAACN,GAHoB;AAI9BC,QAAAA,GAAG,EAAEK,IAAI,CAACL,GAJoB;AAK9BokE,QAAAA,SAAS,EAAEl3B,QAAQ,CAACk3B,SALU;AAM9B/sB,QAAAA,IAAI,EAAEnK,QAAQ,CAACy4B,QANe;AAO9BztE,QAAAA,KAAK,EAAEg1C,QAAQ,CAACh1C,KAPc;AAQ9BosE,QAAAA,SAAS,EAAE,KAAKyB,UAAL,EARmB;AAS9BtyC,QAAAA,UAAU,EAAE,KAAKF,YAAL,EATkB;AAU9B0Y,QAAAA,WAAW,EAAEiB,QAAQ,CAACjB,WAAT,IAAwB,CAVP;AAW9Bs4B,QAAAA,aAAa,EAAEr3B,QAAQ,CAACq3B,aAAT,KAA2B;AAXZ,OAAhC;AAaA,UAAML,SAAS,GAAG,KAAKxzB,MAAL,IAAe,IAAjC;AACA,UAAM5e,KAAK,GAAGkyC,eAAe,CAAC8B,uBAAD,EAA0B5B,SAA1B,CAA7B;;AACA,UAAI7jE,IAAI,CAACmrC,MAAL,KAAgB,OAApB,EAA6B;AAC3B,gCAAmB1Z,KAAnB,EAA0B,IAA1B,EAAgC,OAAhC;AACD;;AACD,UAAIzxB,IAAI,CAAC+lB,OAAT,EAAkB;AAChB0L,QAAAA,KAAK,CAAC1L,OAAN;AACA,aAAKruB,KAAL,GAAa,KAAKiI,GAAlB;AACA,aAAKhI,GAAL,GAAW,KAAK+H,GAAhB;AACD,OAJD,MAIO;AACL,aAAKhI,KAAL,GAAa,KAAKgI,GAAlB;AACA,aAAK/H,GAAL,GAAW,KAAKgI,GAAhB;AACD;;AACD,aAAO8xB,KAAP;AACD;;;WACD,qBAAY;AACV,UAAMA,KAAK,GAAG,KAAKA,KAAnB;AACA,UAAI/5B,KAAK,GAAG,KAAKgI,GAAjB;AACA,UAAI/H,GAAG,GAAG,KAAKgI,GAAf;;AACA;;AACA,UAAI,KAAKpJ,OAAL,CAAa0H,MAAb,IAAuBwzB,KAAK,CAACv8B,MAAjC,EAAyC;AACvC,YAAM+I,MAAM,GAAG,CAACtG,GAAG,GAAGD,KAAP,IAAgBO,IAAI,CAAC0H,GAAL,CAAS8xB,KAAK,CAACv8B,MAAN,GAAe,CAAxB,EAA2B,CAA3B,CAAhB,GAAgD,CAA/D;AACAwC,QAAAA,KAAK,IAAIuG,MAAT;AACAtG,QAAAA,GAAG,IAAIsG,MAAP;AACD;;AACD,WAAKolE,WAAL,GAAmB3rE,KAAnB;AACA,WAAKqtE,SAAL,GAAiBptE,GAAjB;AACA,WAAK2rE,WAAL,GAAmB3rE,GAAG,GAAGD,KAAzB;AACD;;;WACD,0BAAiB+H,KAAjB,EAAwB;AACtB,aAAO,uBAAaA,KAAb,EAAoB,KAAKpJ,KAAL,CAAWE,OAAX,CAAmB8jC,MAAvC,EAA+C,KAAK9jC,OAAL,CAAak7B,KAAb,CAAmByN,MAAlE,CAAP;AACD;;;;EArH2B4Q;;IAwHxB78C;;;;;;;;;;;;;WACJ,+BAAsB;AACpB,6BAAmB,KAAKo+C,SAAL,CAAe,IAAf,CAAnB;AAAA,UAAO3xC,GAAP,oBAAOA,GAAP;AAAA,UAAYC,GAAZ,oBAAYA,GAAZ;;AACA,WAAKD,GAAL,GAAW,uBAAeA,GAAf,IAAsBA,GAAtB,GAA4B,CAAvC;AACA,WAAKC,GAAL,GAAW,uBAAeA,GAAf,IAAsBA,GAAtB,GAA4B,CAAvC;AACA,WAAKgmE,sBAAL;AACD;;;WACD,4BAAmB;AACjB,UAAMvyC,UAAU,GAAG,KAAKF,YAAL,EAAnB;AACA,UAAMh+B,MAAM,GAAGk+B,UAAU,GAAG,KAAK/5B,KAAR,GAAgB,KAAKD,MAA9C;AACA,UAAMwyC,WAAW,GAAG,uBAAU,KAAKr1C,OAAL,CAAak7B,KAAb,CAAmBma,WAA7B,CAApB;AACA,UAAMhzC,KAAK,GAAG,CAACw6B,UAAU,GAAGn7B,IAAI,CAAC0/B,GAAL,CAASiU,WAAT,CAAH,GAA2B3zC,IAAI,CAACw/B,GAAL,CAASmU,WAAT,CAAtC,KAAgE,KAA9E;;AACA,UAAMwJ,QAAQ,GAAG,KAAKG,uBAAL,CAA6B,CAA7B,CAAjB;;AACA,aAAOt9C,IAAI,CAAC+1C,IAAL,CAAU94C,MAAM,GAAG+C,IAAI,CAACyH,GAAL,CAAS,EAAT,EAAa01C,QAAQ,CAAC9F,UAAT,GAAsB12C,KAAnC,CAAnB,CAAP;AACD;;;WACD,0BAAiB6G,KAAjB,EAAwB;AACtB,aAAOA,KAAK,KAAK,IAAV,GAAiBquB,GAAjB,GAAuB,KAAK4I,kBAAL,CAAwB,CAACj3B,KAAK,GAAG,KAAK4jE,WAAd,IAA6B,KAAKC,WAA1D,CAA9B;AACD;;;WACD,0BAAiB3tB,KAAjB,EAAwB;AACtB,aAAO,KAAK0tB,WAAL,GAAmB,KAAKK,kBAAL,CAAwB/tB,KAAxB,IAAiC,KAAK2tB,WAAhE;AACD;;;;EApBuBwB;;;AAsB1B7xE,WAAW,CAACggB,EAAZ,GAAiB,QAAjB;AACAhgB,WAAW,CAACW,QAAZ,GAAuB;AACrB69B,EAAAA,KAAK,EAAE;AACL7R,IAAAA,QAAQ,EAAEsrB,KAAK,CAACZ,UAAN,CAAiBC;AADtB;AADc,CAAvB;;AAMA,SAASq7B,OAAT,CAAiBC,OAAjB,EAA0B;AACxB,MAAM/hD,MAAM,GAAG+hD,OAAO,GAAI5tE,IAAI,CAACipC,GAAL,CAAS,EAAT,EAAajpC,IAAI,CAACC,KAAL,CAAW,uBAAM2tE,OAAN,CAAX,CAAb,CAA1B;AACA,SAAO/hD,MAAM,KAAK,CAAlB;AACD;;AACD,SAASgiD,aAAT,CAAuBlC,iBAAvB,EAA0CC,SAA1C,EAAqD;AACnD,MAAMkC,MAAM,GAAG9tE,IAAI,CAACC,KAAL,CAAW,uBAAM2rE,SAAS,CAAClkE,GAAhB,CAAX,CAAf;AACA,MAAMqmE,cAAc,GAAG/tE,IAAI,CAAC+1C,IAAL,CAAU61B,SAAS,CAAClkE,GAAV,GAAgB1H,IAAI,CAACipC,GAAL,CAAS,EAAT,EAAa6kC,MAAb,CAA1B,CAAvB;AACA,MAAMt0C,KAAK,GAAG,EAAd;AACA,MAAIo0C,OAAO,GAAG,uBAAgBjC,iBAAiB,CAAClkE,GAAlC,EAAuCzH,IAAI,CAACipC,GAAL,CAAS,EAAT,EAAajpC,IAAI,CAACC,KAAL,CAAW,uBAAM2rE,SAAS,CAACnkE,GAAhB,CAAX,CAAb,CAAvC,CAAd;AACA,MAAIumE,GAAG,GAAGhuE,IAAI,CAACC,KAAL,CAAW,uBAAM2tE,OAAN,CAAX,CAAV;AACA,MAAIK,WAAW,GAAGjuE,IAAI,CAACC,KAAL,CAAW2tE,OAAO,GAAG5tE,IAAI,CAACipC,GAAL,CAAS,EAAT,EAAa+kC,GAAb,CAArB,CAAlB;AACA,MAAIlC,SAAS,GAAGkC,GAAG,GAAG,CAAN,GAAUhuE,IAAI,CAACipC,GAAL,CAAS,EAAT,EAAajpC,IAAI,CAACs5B,GAAL,CAAS00C,GAAT,CAAb,CAAV,GAAwC,CAAxD;;AACA,KAAG;AACDx0C,IAAAA,KAAK,CAACh6B,IAAN,CAAW;AAACgI,MAAAA,KAAK,EAAEomE,OAAR;AAAiBx5B,MAAAA,KAAK,EAAEu5B,OAAO,CAACC,OAAD;AAA/B,KAAX;AACA,MAAEK,WAAF;;AACA,QAAIA,WAAW,KAAK,EAApB,EAAwB;AACtBA,MAAAA,WAAW,GAAG,CAAd;AACA,QAAED,GAAF;AACAlC,MAAAA,SAAS,GAAGkC,GAAG,IAAI,CAAP,GAAW,CAAX,GAAelC,SAA3B;AACD;;AACD8B,IAAAA,OAAO,GAAG5tE,IAAI,CAACu1C,KAAL,CAAW04B,WAAW,GAAGjuE,IAAI,CAACipC,GAAL,CAAS,EAAT,EAAa+kC,GAAb,CAAd,GAAkClC,SAA7C,IAA0DA,SAApE;AACD,GATD,QASSkC,GAAG,GAAGF,MAAN,IAAiBE,GAAG,KAAKF,MAAR,IAAkBG,WAAW,GAAGF,cAT1D;;AAUA,MAAMG,QAAQ,GAAG,uBAAgBvC,iBAAiB,CAACjkE,GAAlC,EAAuCkmE,OAAvC,CAAjB;AACAp0C,EAAAA,KAAK,CAACh6B,IAAN,CAAW;AAACgI,IAAAA,KAAK,EAAE0mE,QAAR;AAAkB95B,IAAAA,KAAK,EAAEu5B,OAAO,CAACC,OAAD;AAAhC,GAAX;AACA,SAAOp0C,KAAP;AACD;;IACK20C;;;;;AACJ,4BAAYrjD,GAAZ,EAAiB;AAAA;;AAAA;;AACf,kCAAMA,GAAN;AACA,YAAKrrB,KAAL,GAAazC,SAAb;AACA,YAAK0C,GAAL,GAAW1C,SAAX;AACA,YAAKouE,WAAL,GAAmBpuE,SAAnB;AACA,YAAKquE,WAAL,GAAmB,CAAnB;AALe;AAMhB;;;;WACD,eAAM/5C,GAAN,EAAWzyB,KAAX,EAAkB;AAChB,UAAM2I,KAAK,GAAGqlE,eAAe,CAACjtD,SAAhB,CAA0B/iB,KAA1B,CAAgCmlB,KAAhC,CAAsC,IAAtC,EAA4C,CAACsP,GAAD,EAAMzyB,KAAN,CAA5C,CAAd;;AACA,UAAI2I,KAAK,KAAK,CAAd,EAAiB;AACf,aAAK4mE,KAAL,GAAa,IAAb;AACA,eAAOpxE,SAAP;AACD;;AACD,aAAO,uBAAewK,KAAf,KAAyBA,KAAK,GAAG,CAAjC,GAAqCA,KAArC,GAA6C,IAApD;AACD;;;WACD,+BAAsB;AACpB,6BAAmB,KAAK4xC,SAAL,CAAe,IAAf,CAAnB;AAAA,UAAO3xC,GAAP,oBAAOA,GAAP;AAAA,UAAYC,GAAZ,oBAAYA,GAAZ;;AACA,WAAKD,GAAL,GAAW,uBAAeA,GAAf,IAAsBzH,IAAI,CAAC0H,GAAL,CAAS,CAAT,EAAYD,GAAZ,CAAtB,GAAyC,IAApD;AACA,WAAKC,GAAL,GAAW,uBAAeA,GAAf,IAAsB1H,IAAI,CAAC0H,GAAL,CAAS,CAAT,EAAYA,GAAZ,CAAtB,GAAyC,IAApD;;AACA,UAAI,KAAKpJ,OAAL,CAAa8/B,WAAjB,EAA8B;AAC5B,aAAKgwC,KAAL,GAAa,IAAb;AACD;;AACD,WAAKV,sBAAL;AACD;;;WACD,kCAAyB;AACvB,iCAAiC,KAAKl+C,aAAL,EAAjC;AAAA,UAAOC,UAAP,wBAAOA,UAAP;AAAA,UAAmBC,UAAnB,wBAAmBA,UAAnB;;AACA,UAAIjoB,GAAG,GAAG,KAAKA,GAAf;AACA,UAAIC,GAAG,GAAG,KAAKA,GAAf;;AACA,UAAMqlE,MAAM,GAAG,SAATA,MAAS,CAAAnqD,CAAC;AAAA,eAAKnb,GAAG,GAAGgoB,UAAU,GAAGhoB,GAAH,GAASmb,CAA9B;AAAA,OAAhB;;AACA,UAAMoqD,MAAM,GAAG,SAATA,MAAS,CAAApqD,CAAC;AAAA,eAAKlb,GAAG,GAAGgoB,UAAU,GAAGhoB,GAAH,GAASkb,CAA9B;AAAA,OAAhB;;AACA,UAAMorD,GAAG,GAAG,SAANA,GAAM,CAACprD,CAAD,EAAIyrD,CAAJ;AAAA,eAAUruE,IAAI,CAACipC,GAAL,CAAS,EAAT,EAAajpC,IAAI,CAACC,KAAL,CAAW,uBAAM2iB,CAAN,CAAX,IAAuByrD,CAApC,CAAV;AAAA,OAAZ;;AACA,UAAI5mE,GAAG,KAAKC,GAAZ,EAAiB;AACf,YAAID,GAAG,IAAI,CAAX,EAAc;AACZslE,UAAAA,MAAM,CAAC,CAAD,CAAN;AACAC,UAAAA,MAAM,CAAC,EAAD,CAAN;AACD,SAHD,MAGO;AACLD,UAAAA,MAAM,CAACiB,GAAG,CAACvmE,GAAD,EAAM,CAAC,CAAP,CAAJ,CAAN;AACAulE,UAAAA,MAAM,CAACgB,GAAG,CAACtmE,GAAD,EAAM,CAAC,CAAP,CAAJ,CAAN;AACD;AACF;;AACD,UAAID,GAAG,IAAI,CAAX,EAAc;AACZslE,QAAAA,MAAM,CAACiB,GAAG,CAACtmE,GAAD,EAAM,CAAC,CAAP,CAAJ,CAAN;AACD;;AACD,UAAIA,GAAG,IAAI,CAAX,EAAc;AACZslE,QAAAA,MAAM,CAACgB,GAAG,CAACvmE,GAAD,EAAM,CAAC,CAAP,CAAJ,CAAN;AACD;;AACD,UAAI,KAAK2mE,KAAL,IAAc,KAAK3mE,GAAL,KAAa,KAAKmxC,aAAhC,IAAiDnxC,GAAG,KAAKumE,GAAG,CAAC,KAAKvmE,GAAN,EAAW,CAAX,CAAhE,EAA+E;AAC7EslE,QAAAA,MAAM,CAACiB,GAAG,CAACvmE,GAAD,EAAM,CAAC,CAAP,CAAJ,CAAN;AACD;;AACD,WAAKA,GAAL,GAAWA,GAAX;AACA,WAAKC,GAAL,GAAWA,GAAX;AACD;;;WACD,sBAAa;AACX,UAAMK,IAAI,GAAG,KAAKzJ,OAAlB;AACA,UAAMqtE,iBAAiB,GAAG;AACxBlkE,QAAAA,GAAG,EAAE,KAAKixC,QADc;AAExBhxC,QAAAA,GAAG,EAAE,KAAK+wC;AAFc,OAA1B;AAIA,UAAMjf,KAAK,GAAGq0C,aAAa,CAAClC,iBAAD,EAAoB,IAApB,CAA3B;;AACA,UAAI5jE,IAAI,CAACmrC,MAAL,KAAgB,OAApB,EAA6B;AAC3B,gCAAmB1Z,KAAnB,EAA0B,IAA1B,EAAgC,OAAhC;AACD;;AACD,UAAIzxB,IAAI,CAAC+lB,OAAT,EAAkB;AAChB0L,QAAAA,KAAK,CAAC1L,OAAN;AACA,aAAKruB,KAAL,GAAa,KAAKiI,GAAlB;AACA,aAAKhI,GAAL,GAAW,KAAK+H,GAAhB;AACD,OAJD,MAIO;AACL,aAAKhI,KAAL,GAAa,KAAKgI,GAAlB;AACA,aAAK/H,GAAL,GAAW,KAAKgI,GAAhB;AACD;;AACD,aAAO8xB,KAAP;AACD;;;WACD,0BAAiBhyB,KAAjB,EAAwB;AACtB,aAAOA,KAAK,KAAKxK,SAAV,GACH,GADG,GAEH,uBAAawK,KAAb,EAAoB,KAAKpJ,KAAL,CAAWE,OAAX,CAAmB8jC,MAAvC,EAA+C,KAAK9jC,OAAL,CAAak7B,KAAb,CAAmByN,MAAlE,CAFJ;AAGD;;;WACD,qBAAY;AACV,UAAMxnC,KAAK,GAAG,KAAKgI,GAAnB;;AACA;;AACA,WAAK2jE,WAAL,GAAmB,uBAAM3rE,KAAN,CAAnB;AACA,WAAK4rE,WAAL,GAAmB,uBAAM,KAAK3jE,GAAX,IAAkB,uBAAMjI,KAAN,CAArC;AACD;;;WACD,0BAAiB+H,KAAjB,EAAwB;AACtB,UAAIA,KAAK,KAAKxK,SAAV,IAAuBwK,KAAK,KAAK,CAArC,EAAwC;AACtCA,QAAAA,KAAK,GAAG,KAAKC,GAAb;AACD;;AACD,UAAID,KAAK,KAAK,IAAV,IAAkBgH,KAAK,CAAChH,KAAD,CAA3B,EAAoC;AAClC,eAAOquB,GAAP;AACD;;AACD,aAAO,KAAK4I,kBAAL,CAAwBj3B,KAAK,KAAK,KAAKC,GAAf,GAC3B,CAD2B,GAE3B,CAAC,uBAAMD,KAAN,IAAe,KAAK4jE,WAArB,IAAoC,KAAKC,WAFtC,CAAP;AAGD;;;WACD,0BAAiB3tB,KAAjB,EAAwB;AACtB,UAAMC,OAAO,GAAG,KAAK8tB,kBAAL,CAAwB/tB,KAAxB,CAAhB;AACA,aAAO19C,IAAI,CAACipC,GAAL,CAAS,EAAT,EAAa,KAAKmiC,WAAL,GAAmBztB,OAAO,GAAG,KAAK0tB,WAA/C,CAAP;AACD;;;;EAlG4BxzB;;;AAoG/Bs2B,gBAAgB,CAACnzD,EAAjB,GAAsB,aAAtB;AACAmzD,gBAAgB,CAACxyE,QAAjB,GAA4B;AAC1B69B,EAAAA,KAAK,EAAE;AACL7R,IAAAA,QAAQ,EAAEsrB,KAAK,CAACZ,UAAN,CAAiBW,WADtB;AAELoB,IAAAA,KAAK,EAAE;AACL11C,MAAAA,OAAO,EAAE;AADJ;AAFF;AADmB,CAA5B;;AASA,SAAS4vE,qBAAT,CAA+BvmE,IAA/B,EAAqC;AACnC,MAAM6sC,QAAQ,GAAG7sC,IAAI,CAACyxB,KAAtB;;AACA,MAAIob,QAAQ,CAAC13C,OAAT,IAAoB6K,IAAI,CAAC7K,OAA7B,EAAsC;AACpC,QAAM8wC,OAAO,GAAG,uBAAU4G,QAAQ,CAACH,eAAnB,CAAhB;AACA,WAAO,uBAAeG,QAAQ,CAACh5C,IAAT,IAAiBg5C,QAAQ,CAACh5C,IAAT,CAAcG,IAA9C,EAAoDJ,kBAASC,IAAT,CAAcG,IAAlE,IAA0EiyC,OAAO,CAAC7sC,MAAzF;AACD;;AACD,SAAO,CAAP;AACD;;AACD,SAASotE,gBAAT,CAA0Bp8C,GAA1B,EAA+Bv2B,IAA/B,EAAqCwB,KAArC,EAA4C;AAC1CA,EAAAA,KAAK,GAAG,uBAAQA,KAAR,IAAiBA,KAAjB,GAAyB,CAACA,KAAD,CAAjC;AACA,SAAO;AACL+N,IAAAA,CAAC,EAAE,wBAAagnB,GAAb,EAAkBv2B,IAAI,CAAC2hD,MAAvB,EAA+BngD,KAA/B,CADE;AAEL4vC,IAAAA,CAAC,EAAE5vC,KAAK,CAACH,MAAN,GAAerB,IAAI,CAACy7C;AAFlB,GAAP;AAID;;AACD,SAASm3B,eAAT,CAAyB1uC,KAAzB,EAAgC0K,GAAhC,EAAqCzuC,IAArC,EAA2C0L,GAA3C,EAAgDC,GAAhD,EAAqD;AACnD,MAAIo4B,KAAK,KAAKr4B,GAAV,IAAiBq4B,KAAK,KAAKp4B,GAA/B,EAAoC;AAClC,WAAO;AACLjI,MAAAA,KAAK,EAAE+qC,GAAG,GAAIzuC,IAAI,GAAG,CADhB;AAEL2D,MAAAA,GAAG,EAAE8qC,GAAG,GAAIzuC,IAAI,GAAG;AAFd,KAAP;AAID,GALD,MAKO,IAAI+jC,KAAK,GAAGr4B,GAAR,IAAeq4B,KAAK,GAAGp4B,GAA3B,EAAgC;AACrC,WAAO;AACLjI,MAAAA,KAAK,EAAE+qC,GAAG,GAAGzuC,IADR;AAEL2D,MAAAA,GAAG,EAAE8qC;AAFA,KAAP;AAID;;AACD,SAAO;AACL/qC,IAAAA,KAAK,EAAE+qC,GADF;AAEL9qC,IAAAA,GAAG,EAAE8qC,GAAG,GAAGzuC;AAFN,GAAP;AAID;;AACD,SAAS0yE,kBAAT,CAA4BhjE,KAA5B,EAAmC;AACjC,MAAMmwB,IAAI,GAAG;AACXzN,IAAAA,CAAC,EAAE1iB,KAAK,CAACxK,IAAN,GAAawK,KAAK,CAACy2D,QAAN,CAAejhE,IADpB;AAEX7B,IAAAA,CAAC,EAAEqM,KAAK,CAACvK,KAAN,GAAcuK,KAAK,CAACy2D,QAAN,CAAehhE,KAFrB;AAGXmmB,IAAAA,CAAC,EAAE5b,KAAK,CAAC1K,GAAN,GAAY0K,KAAK,CAACy2D,QAAN,CAAenhE,GAHnB;AAIXxB,IAAAA,CAAC,EAAEkM,KAAK,CAACzK,MAAN,GAAeyK,KAAK,CAACy2D,QAAN,CAAelhE;AAJtB,GAAb;;AAMA,MAAM0tE,MAAM,GAAG,SAAc,EAAd,EAAkB9yC,IAAlB,CAAf;;AACA,MAAM6f,UAAU,GAAG,EAAnB;AACA,MAAMzN,OAAO,GAAG,EAAhB;AACA,MAAM2gC,UAAU,GAAGljE,KAAK,CAACmjE,YAAN,CAAmB3xE,MAAtC;AACA,MAAM4xE,cAAc,GAAGpjE,KAAK,CAACnN,OAAN,CAAc8nC,WAArC;AACA,MAAM0oC,eAAe,GAAGD,cAAc,CAACE,iBAAf,GAAmCzjE,oBAAKqjE,UAAxC,GAAqD,CAA7E;;AACA,OAAK,IAAIlxE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkxE,UAApB,EAAgClxE,CAAC,EAAjC,EAAqC;AACnC,QAAMsK,IAAI,GAAG8mE,cAAc,CAAC71B,UAAf,CAA0BvtC,KAAK,CAACujE,oBAAN,CAA2BvxE,CAA3B,CAA1B,CAAb;AACAuwC,IAAAA,OAAO,CAACvwC,CAAD,CAAP,GAAasK,IAAI,CAACimC,OAAlB;AACA,QAAMxH,aAAa,GAAG/6B,KAAK,CAACwjE,gBAAN,CAAuBxxE,CAAvB,EAA0BgO,KAAK,CAACyjE,WAAN,GAAoBlhC,OAAO,CAACvwC,CAAD,CAArD,EAA0DqxE,eAA1D,CAAtB;AACA,QAAMK,MAAM,GAAG,uBAAOpnE,IAAI,CAACnM,IAAZ,CAAf;AACA,QAAMumE,QAAQ,GAAGoM,gBAAgB,CAAC9iE,KAAK,CAAC0mB,GAAP,EAAYg9C,MAAZ,EAAoB1jE,KAAK,CAACmjE,YAAN,CAAmBnxE,CAAnB,CAApB,CAAjC;AACAg+C,IAAAA,UAAU,CAACh+C,CAAD,CAAV,GAAgB0kE,QAAhB;AACA,QAAM/lB,YAAY,GAAG,wBAAgB3wC,KAAK,CAACo6B,aAAN,CAAoBpoC,CAApB,IAAyBqxE,eAAzC,CAArB;AACA,QAAMhvC,KAAK,GAAG9/B,IAAI,CAACu1C,KAAL,CAAW,uBAAU6G,YAAV,CAAX,CAAd;AACA,QAAMgzB,OAAO,GAAGZ,eAAe,CAAC1uC,KAAD,EAAQ0G,aAAa,CAACx7B,CAAtB,EAAyBm3D,QAAQ,CAACh3D,CAAlC,EAAqC,CAArC,EAAwC,GAAxC,CAA/B;AACA,QAAMkkE,OAAO,GAAGb,eAAe,CAAC1uC,KAAD,EAAQ0G,aAAa,CAACv7B,CAAtB,EAAyBk3D,QAAQ,CAACn1B,CAAlC,EAAqC,EAArC,EAAyC,GAAzC,CAA/B;AACAsiC,IAAAA,YAAY,CAACZ,MAAD,EAAS9yC,IAAT,EAAewgB,YAAf,EAA6BgzB,OAA7B,EAAsCC,OAAtC,CAAZ;AACD;;AACD5jE,EAAAA,KAAK,CAAC8jE,cAAN,CACE3zC,IAAI,CAACzN,CAAL,GAASugD,MAAM,CAACvgD,CADlB,EAEEugD,MAAM,CAACtvE,CAAP,GAAWw8B,IAAI,CAACx8B,CAFlB,EAGEw8B,IAAI,CAACvU,CAAL,GAASqnD,MAAM,CAACrnD,CAHlB,EAIEqnD,MAAM,CAACnvE,CAAP,GAAWq8B,IAAI,CAACr8B,CAJlB;AAMAkM,EAAAA,KAAK,CAAC+jE,gBAAN,GAAyBC,oBAAoB,CAAChkE,KAAD,EAAQgwC,UAAR,EAAoBzN,OAApB,CAA7C;AACD;;AACD,SAASshC,YAAT,CAAsBZ,MAAtB,EAA8B9yC,IAA9B,EAAoCkE,KAApC,EAA2CsvC,OAA3C,EAAoDC,OAApD,EAA6D;AAC3D,MAAM3vC,GAAG,GAAG1/B,IAAI,CAACs5B,GAAL,CAASt5B,IAAI,CAAC0/B,GAAL,CAASI,KAAT,CAAT,CAAZ;AACA,MAAMN,GAAG,GAAGx/B,IAAI,CAACs5B,GAAL,CAASt5B,IAAI,CAACw/B,GAAL,CAASM,KAAT,CAAT,CAAZ;AACA,MAAI90B,CAAC,GAAG,CAAR;AACA,MAAIC,CAAC,GAAG,CAAR;;AACA,MAAImkE,OAAO,CAAC3vE,KAAR,GAAgBm8B,IAAI,CAACzN,CAAzB,EAA4B;AAC1BnjB,IAAAA,CAAC,GAAG,CAAC4wB,IAAI,CAACzN,CAAL,GAASihD,OAAO,CAAC3vE,KAAlB,IAA2BigC,GAA/B;AACAgvC,IAAAA,MAAM,CAACvgD,CAAP,GAAWnuB,IAAI,CAACyH,GAAL,CAASinE,MAAM,CAACvgD,CAAhB,EAAmByN,IAAI,CAACzN,CAAL,GAASnjB,CAA5B,CAAX;AACD,GAHD,MAGO,IAAIokE,OAAO,CAAC1vE,GAAR,GAAck8B,IAAI,CAACx8B,CAAvB,EAA0B;AAC/B4L,IAAAA,CAAC,GAAG,CAACokE,OAAO,CAAC1vE,GAAR,GAAck8B,IAAI,CAACx8B,CAApB,IAAyBsgC,GAA7B;AACAgvC,IAAAA,MAAM,CAACtvE,CAAP,GAAWY,IAAI,CAAC0H,GAAL,CAASgnE,MAAM,CAACtvE,CAAhB,EAAmBw8B,IAAI,CAACx8B,CAAL,GAAS4L,CAA5B,CAAX;AACD;;AACD,MAAIqkE,OAAO,CAAC5vE,KAAR,GAAgBm8B,IAAI,CAACvU,CAAzB,EAA4B;AAC1Bpc,IAAAA,CAAC,GAAG,CAAC2wB,IAAI,CAACvU,CAAL,GAASgoD,OAAO,CAAC5vE,KAAlB,IAA2B+/B,GAA/B;AACAkvC,IAAAA,MAAM,CAACrnD,CAAP,GAAWrnB,IAAI,CAACyH,GAAL,CAASinE,MAAM,CAACrnD,CAAhB,EAAmBuU,IAAI,CAACvU,CAAL,GAASpc,CAA5B,CAAX;AACD,GAHD,MAGO,IAAIokE,OAAO,CAAC3vE,GAAR,GAAck8B,IAAI,CAACr8B,CAAvB,EAA0B;AAC/B0L,IAAAA,CAAC,GAAG,CAACokE,OAAO,CAAC3vE,GAAR,GAAck8B,IAAI,CAACr8B,CAApB,IAAyBigC,GAA7B;AACAkvC,IAAAA,MAAM,CAACnvE,CAAP,GAAWS,IAAI,CAAC0H,GAAL,CAASgnE,MAAM,CAACnvE,CAAhB,EAAmBq8B,IAAI,CAACr8B,CAAL,GAAS0L,CAA5B,CAAX;AACD;AACF;;AACD,SAASwkE,oBAAT,CAA8BhkE,KAA9B,EAAqCgwC,UAArC,EAAiDzN,OAAjD,EAA0D;AACxD,MAAMn/B,KAAK,GAAG,EAAd;AACA,MAAM8/D,UAAU,GAAGljE,KAAK,CAACmjE,YAAN,CAAmB3xE,MAAtC;AACA,MAAM8K,IAAI,GAAG0D,KAAK,CAACnN,OAAnB;AACA,MAAMoxE,KAAK,GAAGpB,qBAAqB,CAACvmE,IAAD,CAArB,GAA8B,CAA5C;AACA,MAAM4nE,aAAa,GAAGlkE,KAAK,CAACyjE,WAA5B;AACA,MAAMJ,eAAe,GAAG/mE,IAAI,CAACq+B,WAAL,CAAiB2oC,iBAAjB,GAAqCzjE,oBAAKqjE,UAA1C,GAAuD,CAA/E;;AACA,OAAK,IAAIlxE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkxE,UAApB,EAAgClxE,CAAC,EAAjC,EAAqC;AACnC,QAAMmyE,kBAAkB,GAAGnkE,KAAK,CAACwjE,gBAAN,CAAuBxxE,CAAvB,EAA0BkyE,aAAa,GAAGD,KAAhB,GAAwB1hC,OAAO,CAACvwC,CAAD,CAAzD,EAA8DqxE,eAA9D,CAA3B;AACA,QAAMhvC,KAAK,GAAG9/B,IAAI,CAACu1C,KAAL,CAAW,uBAAU,wBAAgBq6B,kBAAkB,CAAC9vC,KAAnB,GAA2BI,iBAA3C,CAAV,CAAX,CAAd;AACA,QAAMnkC,IAAI,GAAG0/C,UAAU,CAACh+C,CAAD,CAAvB;AACA,QAAMwN,CAAC,GAAG4kE,SAAS,CAACD,kBAAkB,CAAC3kE,CAApB,EAAuBlP,IAAI,CAACixC,CAA5B,EAA+BlN,KAA/B,CAAnB;AACA,QAAMwf,SAAS,GAAGwwB,oBAAoB,CAAChwC,KAAD,CAAtC;AACA,QAAM7+B,IAAI,GAAG8uE,gBAAgB,CAACH,kBAAkB,CAAC5kE,CAApB,EAAuBjP,IAAI,CAACoP,CAA5B,EAA+Bm0C,SAA/B,CAA7B;AACAzwC,IAAAA,KAAK,CAACrP,IAAN,CAAW;AACTwL,MAAAA,CAAC,EAAE4kE,kBAAkB,CAAC5kE,CADb;AAETC,MAAAA,CAAC,EAADA,CAFS;AAGTq0C,MAAAA,SAAS,EAATA,SAHS;AAITr+C,MAAAA,IAAI,EAAJA,IAJS;AAKTF,MAAAA,GAAG,EAAEkK,CALI;AAMT/J,MAAAA,KAAK,EAAED,IAAI,GAAGlF,IAAI,CAACoP,CANV;AAOTnK,MAAAA,MAAM,EAAEiK,CAAC,GAAGlP,IAAI,CAACixC;AAPR,KAAX;AASD;;AACD,SAAOn+B,KAAP;AACD;;AACD,SAASihE,oBAAT,CAA8BhwC,KAA9B,EAAqC;AACnC,MAAIA,KAAK,KAAK,CAAV,IAAeA,KAAK,KAAK,GAA7B,EAAkC;AAChC,WAAO,QAAP;AACD,GAFD,MAEO,IAAIA,KAAK,GAAG,GAAZ,EAAiB;AACtB,WAAO,MAAP;AACD;;AACD,SAAO,OAAP;AACD;;AACD,SAASiwC,gBAAT,CAA0B/kE,CAA1B,EAA6BG,CAA7B,EAAgCkpC,KAAhC,EAAuC;AACrC,MAAIA,KAAK,KAAK,OAAd,EAAuB;AACrBrpC,IAAAA,CAAC,IAAIG,CAAL;AACD,GAFD,MAEO,IAAIkpC,KAAK,KAAK,QAAd,EAAwB;AAC7BrpC,IAAAA,CAAC,IAAKG,CAAC,GAAG,CAAV;AACD;;AACD,SAAOH,CAAP;AACD;;AACD,SAAS6kE,SAAT,CAAmB5kE,CAAnB,EAAsB+hC,CAAtB,EAAyBlN,KAAzB,EAAgC;AAC9B,MAAIA,KAAK,KAAK,EAAV,IAAgBA,KAAK,KAAK,GAA9B,EAAmC;AACjC70B,IAAAA,CAAC,IAAK+hC,CAAC,GAAG,CAAV;AACD,GAFD,MAEO,IAAIlN,KAAK,GAAG,GAAR,IAAeA,KAAK,GAAG,EAA3B,EAA+B;AACpC70B,IAAAA,CAAC,IAAI+hC,CAAL;AACD;;AACD,SAAO/hC,CAAP;AACD;;AACD,SAAS+kE,eAAT,CAAyBvkE,KAAzB,EAAgCm/D,UAAhC,EAA4C;AAC1C,MAAOz4C,GAAP,GAAsC1mB,KAAtC,CAAO0mB,GAAP;AAAA,MAAsBiU,WAAtB,GAAsC36B,KAAtC,CAAYnN,OAAZ,CAAsB8nC,WAAtB;;AACA,OAAK,IAAI3oC,CAAC,GAAGmtE,UAAU,GAAG,CAA1B,EAA6BntE,CAAC,IAAI,CAAlC,EAAqCA,CAAC,EAAtC,EAA0C;AACxC,QAAMuhD,WAAW,GAAG5Y,WAAW,CAAC4S,UAAZ,CAAuBvtC,KAAK,CAACujE,oBAAN,CAA2BvxE,CAA3B,CAAvB,CAApB;AACA,QAAM0xE,MAAM,GAAG,uBAAOnwB,WAAW,CAACpjD,IAAnB,CAAf;AACA,gCAAoD6P,KAAK,CAAC+jE,gBAAN,CAAuB/xE,CAAvB,CAApD;AAAA,QAAOuN,CAAP,yBAAOA,CAAP;AAAA,QAAUC,CAAV,yBAAUA,CAAV;AAAA,QAAaq0C,SAAb,yBAAaA,SAAb;AAAA,QAAwBr+C,IAAxB,yBAAwBA,IAAxB;AAAA,QAA8BF,GAA9B,yBAA8BA,GAA9B;AAAA,QAAmCG,KAAnC,yBAAmCA,KAAnC;AAAA,QAA0CF,MAA1C,yBAA0CA,MAA1C;AACA,QAAOwzC,aAAP,GAAwBwK,WAAxB,CAAOxK,aAAP;;AACA,QAAI,CAAC,uBAAcA,aAAd,CAAL,EAAmC;AACjC,UAAMxG,OAAO,GAAG,uBAAUgR,WAAW,CAACvK,eAAtB,CAAhB;AACAtiB,MAAAA,GAAG,CAAC2Q,SAAJ,GAAgB0R,aAAhB;AACAriB,MAAAA,GAAG,CAAC+tB,QAAJ,CAAaj/C,IAAI,GAAG+sC,OAAO,CAAC/sC,IAA5B,EAAkCF,GAAG,GAAGitC,OAAO,CAACjtC,GAAhD,EAAqDG,KAAK,GAAGD,IAAR,GAAe+sC,OAAO,CAAC5sC,KAA5E,EAAmFJ,MAAM,GAAGD,GAAT,GAAeitC,OAAO,CAAC7sC,MAA1G;AACD;;AACD,2BACEgxB,GADF,EAEE1mB,KAAK,CAACmjE,YAAN,CAAmBnxE,CAAnB,CAFF,EAGEuN,CAHF,EAIEC,CAAC,GAAIkkE,MAAM,CAAC93B,UAAP,GAAoB,CAJ3B,EAKE83B,MALF,EAME;AACE7kD,MAAAA,KAAK,EAAE00B,WAAW,CAAC10B,KADrB;AAEEg1B,MAAAA,SAAS,EAAEA,SAFb;AAGEG,MAAAA,YAAY,EAAE;AAHhB,KANF;AAYD;AACF;;AACD,SAASwwB,cAAT,CAAwBxkE,KAAxB,EAA+BY,MAA/B,EAAuC85B,QAAvC,EAAiDykC,UAAjD,EAA6D;AAC3D,MAAOz4C,GAAP,GAAc1mB,KAAd,CAAO0mB,GAAP;;AACA,MAAIgU,QAAJ,EAAc;AACZhU,IAAAA,GAAG,CAAC+P,GAAJ,CAAQz2B,KAAK,CAACi6B,OAAd,EAAuBj6B,KAAK,CAACk6B,OAA7B,EAAsCt5B,MAAtC,EAA8C,CAA9C,EAAiD+yB,iBAAjD;AACD,GAFD,MAEO;AACL,QAAIoH,aAAa,GAAG/6B,KAAK,CAACwjE,gBAAN,CAAuB,CAAvB,EAA0B5iE,MAA1B,CAApB;AACA8lB,IAAAA,GAAG,CAACyuB,MAAJ,CAAWpa,aAAa,CAACx7B,CAAzB,EAA4Bw7B,aAAa,CAACv7B,CAA1C;;AACA,SAAK,IAAIxN,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmtE,UAApB,EAAgCntE,CAAC,EAAjC,EAAqC;AACnC+oC,MAAAA,aAAa,GAAG/6B,KAAK,CAACwjE,gBAAN,CAAuBxxE,CAAvB,EAA0B4O,MAA1B,CAAhB;AACA8lB,MAAAA,GAAG,CAAC0uB,MAAJ,CAAWra,aAAa,CAACx7B,CAAzB,EAA4Bw7B,aAAa,CAACv7B,CAA1C;AACD;AACF;AACF;;AACD,SAASilE,cAAT,CAAwBzkE,KAAxB,EAA+B0kE,YAA/B,EAA6C9jE,MAA7C,EAAqDu+D,UAArD,EAAiE;AAC/D,MAAMz4C,GAAG,GAAG1mB,KAAK,CAAC0mB,GAAlB;AACA,MAAMgU,QAAQ,GAAGgqC,YAAY,CAAChqC,QAA9B;AACA,MAAO7b,KAAP,GAA2B6lD,YAA3B,CAAO7lD,KAAP;AAAA,MAAc2Y,SAAd,GAA2BktC,YAA3B,CAAcltC,SAAd;;AACA,MAAK,CAACkD,QAAD,IAAa,CAACykC,UAAf,IAA8B,CAACtgD,KAA/B,IAAwC,CAAC2Y,SAAzC,IAAsD52B,MAAM,GAAG,CAAnE,EAAsE;AACpE;AACD;;AACD8lB,EAAAA,GAAG,CAAC8tB,IAAJ;AACA9tB,EAAAA,GAAG,CAAC4Q,WAAJ,GAAkBzY,KAAlB;AACA6H,EAAAA,GAAG,CAAC8Q,SAAJ,GAAgBA,SAAhB;AACA9Q,EAAAA,GAAG,CAACsuB,WAAJ,CAAgB0vB,YAAY,CAAC18B,UAA7B;AACAthB,EAAAA,GAAG,CAACuuB,cAAJ,GAAqByvB,YAAY,CAACz8B,gBAAlC;AACAvhB,EAAAA,GAAG,CAACwuB,SAAJ;AACAsvB,EAAAA,cAAc,CAACxkE,KAAD,EAAQY,MAAR,EAAgB85B,QAAhB,EAA0BykC,UAA1B,CAAd;AACAz4C,EAAAA,GAAG,CAACi+B,SAAJ;AACAj+B,EAAAA,GAAG,CAAC2uB,MAAJ;AACA3uB,EAAAA,GAAG,CAACguB,OAAJ;AACD;;AACD,SAASiwB,uBAAT,CAAiC9vE,MAAjC,EAAyCzB,KAAzC,EAAgDzB,KAAhD,EAAuD;AACrD,SAAO,uBAAckD,MAAd,EAAsB;AAC3BlD,IAAAA,KAAK,EAALA,KAD2B;AAE3ByB,IAAAA,KAAK,EAALA,KAF2B;AAG3BpC,IAAAA,IAAI,EAAE;AAHqB,GAAtB,CAAP;AAKD;;IACK4zE;;;;;AACJ,6BAAYvlD,GAAZ,EAAiB;AAAA;;AAAA;;AACf,kCAAMA,GAAN;AACA,YAAK4a,OAAL,GAAe1oC,SAAf;AACA,YAAK2oC,OAAL,GAAe3oC,SAAf;AACA,YAAKkyE,WAAL,GAAmBlyE,SAAnB;AACA,YAAK4xE,YAAL,GAAoB,EAApB;AACA,YAAKY,gBAAL,GAAwB,EAAxB;AANe;AAOhB;;;;WACD,yBAAgB;AACd,UAAMxhC,OAAO,GAAG,KAAKk0B,QAAL,GAAgB,uBAAUoM,qBAAqB,CAAC,KAAKhwE,OAAN,CAArB,GAAsC,CAAhD,CAAhC;AACA,UAAM6M,CAAC,GAAG,KAAK/J,KAAL,GAAa,KAAK+/B,QAAL,GAAgB6M,OAAO,CAAC5sC,KAA/C;AACA,UAAM4rC,CAAC,GAAG,KAAK7rC,MAAL,GAAc,KAAKigC,SAAL,GAAiB4M,OAAO,CAAC7sC,MAAjD;AACA,WAAKukC,OAAL,GAAe1lC,IAAI,CAACC,KAAL,CAAW,KAAKgB,IAAL,GAAYkK,CAAC,GAAG,CAAhB,GAAoB6iC,OAAO,CAAC/sC,IAAvC,CAAf;AACA,WAAK0kC,OAAL,GAAe3lC,IAAI,CAACC,KAAL,CAAW,KAAKc,GAAL,GAAWisC,CAAC,GAAG,CAAf,GAAmBgB,OAAO,CAACjtC,GAAtC,CAAf;AACA,WAAKmuE,WAAL,GAAmBlvE,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACyH,GAAL,CAAS0D,CAAT,EAAY6hC,CAAZ,IAAiB,CAA5B,CAAnB;AACD;;;WACD,+BAAsB;AACpB,6BAAmB,KAAKoM,SAAL,CAAe,KAAf,CAAnB;AAAA,UAAO3xC,GAAP,oBAAOA,GAAP;AAAA,UAAYC,GAAZ,oBAAYA,GAAZ;;AACA,WAAKD,GAAL,GAAW,uBAAeA,GAAf,KAAuB,CAAC+G,KAAK,CAAC/G,GAAD,CAA7B,GAAqCA,GAArC,GAA2C,CAAtD;AACA,WAAKC,GAAL,GAAW,uBAAeA,GAAf,KAAuB,CAAC8G,KAAK,CAAC9G,GAAD,CAA7B,GAAqCA,GAArC,GAA2C,CAAtD;AACA,WAAKgmE,sBAAL;AACD;;;WACD,4BAAmB;AACjB,aAAO1tE,IAAI,CAAC+1C,IAAL,CAAU,KAAKm5B,WAAL,GAAmBZ,qBAAqB,CAAC,KAAKhwE,OAAN,CAAlD,CAAP;AACD;;;WACD,4BAAmBk7B,KAAnB,EAA0B;AAAA;;AACxBqzC,MAAAA,eAAe,CAACjtD,SAAhB,CAA0Bi9B,kBAA1B,CAA6Cr7B,IAA7C,CAAkD,IAAlD,EAAwDgY,KAAxD;AACA,WAAKo1C,YAAL,GAAoB,KAAKr5C,SAAL,GACjBh4B,GADiB,CACb,UAACiK,KAAD,EAAQ3I,KAAR,EAAkB;AACrB,YAAMzB,KAAK,GAAG,uBAAS,OAAI,CAACkB,OAAL,CAAa8nC,WAAb,CAAyBze,QAAlC,EAA4C,CAACngB,KAAD,EAAQ3I,KAAR,CAA5C,EAA4D,OAA5D,CAAd;AACA,eAAOzB,KAAK,IAAIA,KAAK,KAAK,CAAnB,GAAuBA,KAAvB,GAA+B,EAAtC;AACD,OAJiB,EAKjB8d,MALiB,CAKV,UAAC0H,CAAD,EAAInlB,CAAJ;AAAA,eAAU,OAAI,CAACW,KAAL,CAAWq/B,iBAAX,CAA6BhgC,CAA7B,CAAV;AAAA,OALU,CAApB;AAMD;;;WACD,eAAM;AACJ,UAAMsK,IAAI,GAAG,KAAKzJ,OAAlB;;AACA,UAAIyJ,IAAI,CAAC7K,OAAL,IAAgB6K,IAAI,CAACq+B,WAAL,CAAiBlpC,OAArC,EAA8C;AAC5CuxE,QAAAA,kBAAkB,CAAC,IAAD,CAAlB;AACD,OAFD,MAEO;AACL,aAAKc,cAAL,CAAoB,CAApB,EAAuB,CAAvB,EAA0B,CAA1B,EAA6B,CAA7B;AACD;AACF;;;WACD,wBAAee,YAAf,EAA6BC,aAA7B,EAA4CC,WAA5C,EAAyDC,cAAzD,EAAyE;AACvE,WAAK/qC,OAAL,IAAgB1lC,IAAI,CAACC,KAAL,CAAW,CAACqwE,YAAY,GAAGC,aAAhB,IAAiC,CAA5C,CAAhB;AACA,WAAK5qC,OAAL,IAAgB3lC,IAAI,CAACC,KAAL,CAAW,CAACuwE,WAAW,GAAGC,cAAf,IAAiC,CAA5C,CAAhB;AACA,WAAKvB,WAAL,IAAoBlvE,IAAI,CAACyH,GAAL,CAAS,KAAKynE,WAAL,GAAmB,CAA5B,EAA+BlvE,IAAI,CAAC0H,GAAL,CAAS4oE,YAAT,EAAuBC,aAAvB,EAAsCC,WAAtC,EAAmDC,cAAnD,CAA/B,CAApB;AACD;;;WACD,uBAAc5xE,KAAd,EAAqB;AACnB,UAAM6xE,eAAe,GAAGtxC,qBAAO,KAAKwvC,YAAL,CAAkB3xE,MAAlB,IAA4B,CAAnC,CAAxB;AACA,UAAMoiC,UAAU,GAAG,KAAK/gC,OAAL,CAAa+gC,UAAb,IAA2B,CAA9C;AACA,aAAO,wBAAgBxgC,KAAK,GAAG6xE,eAAR,GAA0B,uBAAUrxC,UAAV,CAA1C,CAAP;AACD;;;WACD,uCAA8B73B,KAA9B,EAAqC;AACnC,UAAI,uBAAcA,KAAd,CAAJ,EAA0B;AACxB,eAAOquB,GAAP;AACD;;AACD,UAAM86C,aAAa,GAAG,KAAKzB,WAAL,IAAoB,KAAKxnE,GAAL,GAAW,KAAKD,GAApC,CAAtB;;AACA,UAAI,KAAKnJ,OAAL,CAAawvB,OAAjB,EAA0B;AACxB,eAAO,CAAC,KAAKpmB,GAAL,GAAWF,KAAZ,IAAqBmpE,aAA5B;AACD;;AACD,aAAO,CAACnpE,KAAK,GAAG,KAAKC,GAAd,IAAqBkpE,aAA5B;AACD;;;WACD,uCAA8B13D,QAA9B,EAAwC;AACtC,UAAI,uBAAcA,QAAd,CAAJ,EAA6B;AAC3B,eAAO4c,GAAP;AACD;;AACD,UAAM+6C,cAAc,GAAG33D,QAAQ,IAAI,KAAKi2D,WAAL,IAAoB,KAAKxnE,GAAL,GAAW,KAAKD,GAApC,CAAJ,CAA/B;AACA,aAAO,KAAKnJ,OAAL,CAAawvB,OAAb,GAAuB,KAAKpmB,GAAL,GAAWkpE,cAAlC,GAAmD,KAAKnpE,GAAL,GAAWmpE,cAArE;AACD;;;WACD,8BAAqB/xE,KAArB,EAA4B;AAC1B,UAAMunC,WAAW,GAAG,KAAKwoC,YAAL,IAAqB,EAAzC;;AACA,UAAI/vE,KAAK,IAAI,CAAT,IAAcA,KAAK,GAAGunC,WAAW,CAACnpC,MAAtC,EAA8C;AAC5C,YAAM4zE,UAAU,GAAGzqC,WAAW,CAACvnC,KAAD,CAA9B;AACA,eAAOuxE,uBAAuB,CAAC,KAAKt7C,UAAL,EAAD,EAAoBj2B,KAApB,EAA2BgyE,UAA3B,CAA9B;AACD;AACF;;;WACD,0BAAiBhyE,KAAjB,EAAwBiyE,kBAAxB,EAAiE;AAAA,UAArBhC,eAAqB,uEAAH,CAAG;AAC/D,UAAMhvC,KAAK,GAAG,KAAK+F,aAAL,CAAmBhnC,KAAnB,IAA4BqhC,iBAA5B,GAAsC4uC,eAApD;AACA,aAAO;AACL9jE,QAAAA,CAAC,EAAEhL,IAAI,CAACw/B,GAAL,CAASM,KAAT,IAAkBgxC,kBAAlB,GAAuC,KAAKprC,OAD1C;AAELz6B,QAAAA,CAAC,EAAEjL,IAAI,CAAC0/B,GAAL,CAASI,KAAT,IAAkBgxC,kBAAlB,GAAuC,KAAKnrC,OAF1C;AAGL7F,QAAAA,KAAK,EAALA;AAHK,OAAP;AAKD;;;WACD,kCAAyBjhC,KAAzB,EAAgC2I,KAAhC,EAAuC;AACrC,aAAO,KAAKynE,gBAAL,CAAsBpwE,KAAtB,EAA6B,KAAKonC,6BAAL,CAAmCz+B,KAAnC,CAA7B,CAAP;AACD;;;WACD,yBAAgB3I,KAAhB,EAAuB;AACrB,aAAO,KAAK4nC,wBAAL,CAA8B5nC,KAAK,IAAI,CAAvC,EAA0C,KAAK++C,YAAL,EAA1C,CAAP;AACD;;;WACD,+BAAsB/+C,KAAtB,EAA6B;AAC3B,kCAAmC,KAAK2wE,gBAAL,CAAsB3wE,KAAtB,CAAnC;AAAA,UAAOoC,IAAP,yBAAOA,IAAP;AAAA,UAAaF,GAAb,yBAAaA,GAAb;AAAA,UAAkBG,KAAlB,yBAAkBA,KAAlB;AAAA,UAAyBF,MAAzB,yBAAyBA,MAAzB;AACA,aAAO;AACLC,QAAAA,IAAI,EAAJA,IADK;AAELF,QAAAA,GAAG,EAAHA,GAFK;AAGLG,QAAAA,KAAK,EAALA,KAHK;AAILF,QAAAA,MAAM,EAANA;AAJK,OAAP;AAMD;;;WACD,0BAAiB;AACf,4BAA4C,KAAK1C,OAAjD;AAAA,UAAOP,eAAP,mBAAOA,eAAP;AAAA,UAA+BooC,QAA/B,mBAAwBtoC,IAAxB,CAA+BsoC,QAA/B;;AACA,UAAIpoC,eAAJ,EAAqB;AACnB,YAAMo0B,GAAG,GAAG,KAAKA,GAAjB;AACAA,QAAAA,GAAG,CAAC8tB,IAAJ;AACA9tB,QAAAA,GAAG,CAACwuB,SAAJ;AACAsvB,QAAAA,cAAc,CAAC,IAAD,EAAO,KAAKhqC,6BAAL,CAAmC,KAAK6mC,SAAxC,CAAP,EAA2D3mC,QAA3D,EAAqE,KAAKyoC,YAAL,CAAkB3xE,MAAvF,CAAd;AACAk1B,QAAAA,GAAG,CAACi+B,SAAJ;AACAj+B,QAAAA,GAAG,CAAC2Q,SAAJ,GAAgB/kC,eAAhB;AACAo0B,QAAAA,GAAG,CAACuU,IAAJ;AACAvU,QAAAA,GAAG,CAACguB,OAAJ;AACD;AACF;;;WACD,oBAAW;AAAA;;AACT,UAAMhuB,GAAG,GAAG,KAAKA,GAAjB;AACA,UAAMpqB,IAAI,GAAG,KAAKzJ,OAAlB;AACA,UAAO4nC,UAAP,GAA2Bn+B,IAA3B,CAAOm+B,UAAP;AAAA,UAAmBroC,IAAnB,GAA2BkK,IAA3B,CAAmBlK,IAAnB;AACA,UAAM+sE,UAAU,GAAG,KAAKgE,YAAL,CAAkB3xE,MAArC;AACA,UAAIQ,CAAJ,EAAOuI,MAAP,EAAepI,QAAf;;AACA,UAAImK,IAAI,CAACq+B,WAAL,CAAiBlpC,OAArB,EAA8B;AAC5B8yE,QAAAA,eAAe,CAAC,IAAD,EAAOpF,UAAP,CAAf;AACD;;AACD,UAAI/sE,IAAI,CAACX,OAAT,EAAkB;AAChB,aAAKs8B,KAAL,CAAW73B,OAAX,CAAmB,UAAC4nB,IAAD,EAAO1qB,KAAP,EAAiB;AAClC,cAAIA,KAAK,KAAK,CAAd,EAAiB;AACfmH,YAAAA,MAAM,GAAG,OAAI,CAACigC,6BAAL,CAAmC1c,IAAI,CAAC/hB,KAAxC,CAAT;AACA,gBAAMw3C,WAAW,GAAGnhD,IAAI,CAACm7C,UAAL,CAAgB,OAAI,CAAClkB,UAAL,CAAgBj2B,KAAK,GAAG,CAAxB,CAAhB,CAApB;AACAqxE,YAAAA,cAAc,CAAC,OAAD,EAAOlxB,WAAP,EAAoBh5C,MAApB,EAA4B4kE,UAA5B,CAAd;AACD;AACF,SAND;AAOD;;AACD,UAAI1kC,UAAU,CAAChpC,OAAf,EAAwB;AACtBi1B,QAAAA,GAAG,CAAC8tB,IAAJ;;AACA,aAAKxiD,CAAC,GAAGmtE,UAAU,GAAG,CAAtB,EAAyBntE,CAAC,IAAI,CAA9B,EAAiCA,CAAC,EAAlC,EAAsC;AACpC,cAAMuhD,WAAW,GAAG9Y,UAAU,CAAC8S,UAAX,CAAsB,KAAKg2B,oBAAL,CAA0BvxE,CAA1B,CAAtB,CAApB;AACA,cAAO6sB,KAAP,GAA2B00B,WAA3B,CAAO10B,KAAP;AAAA,cAAc2Y,SAAd,GAA2B+b,WAA3B,CAAc/b,SAAd;;AACA,cAAI,CAACA,SAAD,IAAc,CAAC3Y,KAAnB,EAA0B;AACxB;AACD;;AACD6H,UAAAA,GAAG,CAAC8Q,SAAJ,GAAgBA,SAAhB;AACA9Q,UAAAA,GAAG,CAAC4Q,WAAJ,GAAkBzY,KAAlB;AACA6H,UAAAA,GAAG,CAACsuB,WAAJ,CAAgBzB,WAAW,CAACvL,UAA5B;AACAthB,UAAAA,GAAG,CAACuuB,cAAJ,GAAqB1B,WAAW,CAACtL,gBAAjC;AACA1tC,UAAAA,MAAM,GAAG,KAAKigC,6BAAL,CAAmCl+B,IAAI,CAACyxB,KAAL,CAAW1L,OAAX,GAAqB,KAAKrmB,GAA1B,GAAgC,KAAKC,GAAxE,CAAT;AACA9J,UAAAA,QAAQ,GAAG,KAAKqxE,gBAAL,CAAsBxxE,CAAtB,EAAyBuI,MAAzB,CAAX;AACAmsB,UAAAA,GAAG,CAACwuB,SAAJ;AACAxuB,UAAAA,GAAG,CAACyuB,MAAJ,CAAW,KAAKlb,OAAhB,EAAyB,KAAKC,OAA9B;AACAxT,UAAAA,GAAG,CAAC0uB,MAAJ,CAAWjjD,QAAQ,CAACoN,CAApB,EAAuBpN,QAAQ,CAACqN,CAAhC;AACAknB,UAAAA,GAAG,CAAC2uB,MAAJ;AACD;;AACD3uB,QAAAA,GAAG,CAACguB,OAAJ;AACD;AACF;;;WACD,sBAAa,CAAE;;;WACf,sBAAa;AAAA;;AACX,UAAMhuB,GAAG,GAAG,KAAKA,GAAjB;AACA,UAAMpqB,IAAI,GAAG,KAAKzJ,OAAlB;AACA,UAAMs2C,QAAQ,GAAG7sC,IAAI,CAACyxB,KAAtB;;AACA,UAAI,CAACob,QAAQ,CAAC13C,OAAd,EAAuB;AACrB;AACD;;AACD,UAAMmiC,UAAU,GAAG,KAAKwG,aAAL,CAAmB,CAAnB,CAAnB;AACA,UAAI7/B,MAAJ,EAAY5E,KAAZ;AACA+wB,MAAAA,GAAG,CAAC8tB,IAAJ;AACA9tB,MAAAA,GAAG,CAACkhC,SAAJ,CAAc,KAAK3tB,OAAnB,EAA4B,KAAKC,OAAjC;AACAxT,MAAAA,GAAG,CAAC4+C,MAAJ,CAAW1xC,UAAX;AACAlN,MAAAA,GAAG,CAACmtB,SAAJ,GAAgB,QAAhB;AACAntB,MAAAA,GAAG,CAACstB,YAAJ,GAAmB,QAAnB;AACA,WAAKjmB,KAAL,CAAW73B,OAAX,CAAmB,UAAC4nB,IAAD,EAAO1qB,KAAP,EAAiB;AAClC,YAAIA,KAAK,KAAK,CAAV,IAAe,CAACkJ,IAAI,CAAC+lB,OAAzB,EAAkC;AAChC;AACD;;AACD,YAAMkxB,WAAW,GAAGpK,QAAQ,CAACoE,UAAT,CAAoB,OAAI,CAAClkB,UAAL,CAAgBj2B,KAAhB,CAApB,CAApB;AACA,YAAMs+C,QAAQ,GAAG,uBAAO6B,WAAW,CAACpjD,IAAnB,CAAjB;AACAoK,QAAAA,MAAM,GAAG,OAAI,CAACigC,6BAAL,CAAmC,OAAI,CAACzM,KAAL,CAAW36B,KAAX,EAAkB2I,KAArD,CAAT;;AACA,YAAIw3C,WAAW,CAACzK,iBAAhB,EAAmC;AACjCpiB,UAAAA,GAAG,CAACv2B,IAAJ,GAAWuhD,QAAQ,CAACI,MAApB;AACAn8C,UAAAA,KAAK,GAAG+wB,GAAG,CAACmtC,WAAJ,CAAgB/1C,IAAI,CAACnsB,KAArB,EAA4BgE,KAApC;AACA+wB,UAAAA,GAAG,CAAC2Q,SAAJ,GAAgBkc,WAAW,CAACxK,aAA5B;AACA,cAAMxG,OAAO,GAAG,uBAAUgR,WAAW,CAACvK,eAAtB,CAAhB;AACAtiB,UAAAA,GAAG,CAAC+tB,QAAJ,CACE,CAAC9+C,KAAD,GAAS,CAAT,GAAa4sC,OAAO,CAAC/sC,IADvB,EAEE,CAAC+E,MAAD,GAAUm3C,QAAQ,CAACphD,IAAT,GAAgB,CAA1B,GAA8BiyC,OAAO,CAACjtC,GAFxC,EAGEK,KAAK,GAAG4sC,OAAO,CAAC5sC,KAHlB,EAIE+7C,QAAQ,CAACphD,IAAT,GAAgBiyC,OAAO,CAAC7sC,MAJ1B;AAMD;;AACD,+BAAWgxB,GAAX,EAAgB5I,IAAI,CAACnsB,KAArB,EAA4B,CAA5B,EAA+B,CAAC4I,MAAhC,EAAwCm3C,QAAxC,EAAkD;AAChD7yB,UAAAA,KAAK,EAAE00B,WAAW,CAAC10B;AAD6B,SAAlD;AAGD,OAtBD;AAuBA6H,MAAAA,GAAG,CAACguB,OAAJ;AACD;;;WACD,qBAAY,CAAE;;;;EAjMgB0sB;;;AAmMhCwD,iBAAiB,CAACr1D,EAAlB,GAAuB,cAAvB;AACAq1D,iBAAiB,CAAC10E,QAAlB,GAA6B;AAC3BuB,EAAAA,OAAO,EAAE,IADkB;AAE3B8zE,EAAAA,OAAO,EAAE,IAFkB;AAG3BpzE,EAAAA,QAAQ,EAAE,WAHiB;AAI3BsoC,EAAAA,UAAU,EAAE;AACVhpC,IAAAA,OAAO,EAAE,IADC;AAEV+lC,IAAAA,SAAS,EAAE,CAFD;AAGVwQ,IAAAA,UAAU,EAAE,EAHF;AAIVC,IAAAA,gBAAgB,EAAE;AAJR,GAJe;AAU3B71C,EAAAA,IAAI,EAAE;AACJsoC,IAAAA,QAAQ,EAAE;AADN,GAVqB;AAa3B9G,EAAAA,UAAU,EAAE,CAbe;AAc3B7F,EAAAA,KAAK,EAAE;AACL+a,IAAAA,iBAAiB,EAAE,IADd;AAEL5sB,IAAAA,QAAQ,EAAEsrB,KAAK,CAACZ,UAAN,CAAiBC;AAFtB,GAdoB;AAkB3BlM,EAAAA,WAAW,EAAE;AACXoO,IAAAA,aAAa,EAAEx3C,SADJ;AAEXy3C,IAAAA,eAAe,EAAE,CAFN;AAGXv3C,IAAAA,OAAO,EAAE,IAHE;AAIXtB,IAAAA,IAAI,EAAE;AACJG,MAAAA,IAAI,EAAE;AADF,KAJK;AAOX4rB,IAAAA,QAPW,oBAOFvqB,KAPE,EAOK;AACd,aAAOA,KAAP;AACD,KATU;AAUX4wC,IAAAA,OAAO,EAAE,CAVE;AAWX+gC,IAAAA,iBAAiB,EAAE;AAXR;AAlBc,CAA7B;AAgCAsB,iBAAiB,CAACj+B,aAAlB,GAAkC;AAChC,sBAAoB,aADY;AAEhC,uBAAqB,OAFW;AAGhC,iBAAe;AAHiB,CAAlC;AAKAi+B,iBAAiB,CAAC3tC,WAAlB,GAAgC;AAC9BwD,EAAAA,UAAU,EAAE;AACV7Z,IAAAA,SAAS,EAAE;AADD;AADkB,CAAhC;AAMA,IAAM4kD,SAAS,GAAG;AAChBC,EAAAA,WAAW,EAAE;AAACC,IAAAA,MAAM,EAAE,IAAT;AAAep1E,IAAAA,IAAI,EAAE,CAArB;AAAwB4D,IAAAA,KAAK,EAAE;AAA/B,GADG;AAEhByxE,EAAAA,MAAM,EAAE;AAACD,IAAAA,MAAM,EAAE,IAAT;AAAep1E,IAAAA,IAAI,EAAE,IAArB;AAA2B4D,IAAAA,KAAK,EAAE;AAAlC,GAFQ;AAGhB0xE,EAAAA,MAAM,EAAE;AAACF,IAAAA,MAAM,EAAE,IAAT;AAAep1E,IAAAA,IAAI,EAAE,KAArB;AAA4B4D,IAAAA,KAAK,EAAE;AAAnC,GAHQ;AAIhB2xE,EAAAA,IAAI,EAAE;AAACH,IAAAA,MAAM,EAAE,IAAT;AAAep1E,IAAAA,IAAI,EAAE,OAArB;AAA8B4D,IAAAA,KAAK,EAAE;AAArC,GAJU;AAKhB4xE,EAAAA,GAAG,EAAE;AAACJ,IAAAA,MAAM,EAAE,IAAT;AAAep1E,IAAAA,IAAI,EAAE,QAArB;AAA+B4D,IAAAA,KAAK,EAAE;AAAtC,GALW;AAMhB6xE,EAAAA,IAAI,EAAE;AAACL,IAAAA,MAAM,EAAE,KAAT;AAAgBp1E,IAAAA,IAAI,EAAE,SAAtB;AAAiC4D,IAAAA,KAAK,EAAE;AAAxC,GANU;AAOhB8xE,EAAAA,KAAK,EAAE;AAACN,IAAAA,MAAM,EAAE,IAAT;AAAep1E,IAAAA,IAAI,EAAE,OAArB;AAA8B4D,IAAAA,KAAK,EAAE;AAArC,GAPS;AAQhB+xE,EAAAA,OAAO,EAAE;AAACP,IAAAA,MAAM,EAAE,KAAT;AAAgBp1E,IAAAA,IAAI,EAAE,OAAtB;AAA+B4D,IAAAA,KAAK,EAAE;AAAtC,GARO;AAShBgyE,EAAAA,IAAI,EAAE;AAACR,IAAAA,MAAM,EAAE,IAAT;AAAep1E,IAAAA,IAAI,EAAE;AAArB;AATU,CAAlB;AAWA,IAAM61E,KAAK,GAAItnE,MAAM,CAACC,IAAP,CAAY0mE,SAAZ,CAAf;;AACA,SAASY,MAAT,CAAgBzxD,CAAhB,EAAmB7gB,CAAnB,EAAsB;AACpB,SAAO6gB,CAAC,GAAG7gB,CAAX;AACD;;AACD,SAAS1C,MAAT,CAAe4O,KAAf,EAAsB0G,KAAtB,EAA6B;AAC3B,MAAI,uBAAcA,KAAd,CAAJ,EAA0B;AACxB,WAAO,IAAP;AACD;;AACD,MAAM2/D,OAAO,GAAGrmE,KAAK,CAACsmE,QAAtB;AACA,0BAAoCtmE,KAAK,CAACumE,UAA1C;AAAA,MAAOC,MAAP,qBAAOA,MAAP;AAAA,MAAe18B,KAAf,qBAAeA,KAAf;AAAA,MAAsB28B,UAAtB,qBAAsBA,UAAtB;AACA,MAAI1qE,KAAK,GAAG2K,KAAZ;;AACA,MAAI,OAAO8/D,MAAP,KAAkB,UAAtB,EAAkC;AAChCzqE,IAAAA,KAAK,GAAGyqE,MAAM,CAACzqE,KAAD,CAAd;AACD;;AACD,MAAI,CAAC,uBAAeA,KAAf,CAAL,EAA4B;AAC1BA,IAAAA,KAAK,GAAG,OAAOyqE,MAAP,KAAkB,QAAlB,GACJH,OAAO,CAACj1E,KAAR,CAAc2K,KAAd,EAAqByqE,MAArB,CADI,GAEJH,OAAO,CAACj1E,KAAR,CAAc2K,KAAd,CAFJ;AAGD;;AACD,MAAIA,KAAK,KAAK,IAAd,EAAoB;AAClB,WAAO,IAAP;AACD;;AACD,MAAI+tC,KAAJ,EAAW;AACT/tC,IAAAA,KAAK,GAAG+tC,KAAK,KAAK,MAAV,KAAqB,uBAAS28B,UAAT,KAAwBA,UAAU,KAAK,IAA5D,IACJJ,OAAO,CAACK,OAAR,CAAgB3qE,KAAhB,EAAuB,SAAvB,EAAkC0qE,UAAlC,CADI,GAEJJ,OAAO,CAACK,OAAR,CAAgB3qE,KAAhB,EAAuB+tC,KAAvB,CAFJ;AAGD;;AACD,SAAO,CAAC/tC,KAAR;AACD;;AACD,SAAS4qE,yBAAT,CAAmCC,OAAnC,EAA4C5qE,GAA5C,EAAiDC,GAAjD,EAAsD4qE,QAAtD,EAAgE;AAC9D,MAAM7jD,IAAI,GAAGmjD,KAAK,CAAC30E,MAAnB;;AACA,OAAK,IAAIQ,CAAC,GAAGm0E,KAAK,CAACttE,OAAN,CAAc+tE,OAAd,CAAb,EAAqC50E,CAAC,GAAGgxB,IAAI,GAAG,CAAhD,EAAmD,EAAEhxB,CAArD,EAAwD;AACtD,QAAMuP,QAAQ,GAAGikE,SAAS,CAACW,KAAK,CAACn0E,CAAD,CAAN,CAA1B;AACA,QAAM4sB,MAAM,GAAGrd,QAAQ,CAACrN,KAAT,GAAiBqN,QAAQ,CAACrN,KAA1B,GAAkC6jB,MAAM,CAAC2pD,gBAAxD;;AACA,QAAIngE,QAAQ,CAACmkE,MAAT,IAAmBnxE,IAAI,CAAC+1C,IAAL,CAAU,CAACruC,GAAG,GAAGD,GAAP,KAAe4iB,MAAM,GAAGrd,QAAQ,CAACjR,IAAjC,CAAV,KAAqDu2E,QAA5E,EAAsF;AACpF,aAAOV,KAAK,CAACn0E,CAAD,CAAZ;AACD;AACF;;AACD,SAAOm0E,KAAK,CAACnjD,IAAI,GAAG,CAAR,CAAZ;AACD;;AACD,SAAS8jD,0BAAT,CAAoC9mE,KAApC,EAA2C6vC,QAA3C,EAAqD+2B,OAArD,EAA8D5qE,GAA9D,EAAmEC,GAAnE,EAAwE;AACtE,OAAK,IAAIjK,CAAC,GAAGm0E,KAAK,CAAC30E,MAAN,GAAe,CAA5B,EAA+BQ,CAAC,IAAIm0E,KAAK,CAACttE,OAAN,CAAc+tE,OAAd,CAApC,EAA4D50E,CAAC,EAA7D,EAAiE;AAC/D,QAAM2pC,IAAI,GAAGwqC,KAAK,CAACn0E,CAAD,CAAlB;;AACA,QAAIwzE,SAAS,CAAC7pC,IAAD,CAAT,CAAgB+pC,MAAhB,IAA0B1lE,KAAK,CAACsmE,QAAN,CAAe77B,IAAf,CAAoBxuC,GAApB,EAAyBD,GAAzB,EAA8B2/B,IAA9B,KAAuCkU,QAAQ,GAAG,CAAhF,EAAmF;AACjF,aAAOlU,IAAP;AACD;AACF;;AACD,SAAOwqC,KAAK,CAACS,OAAO,GAAGT,KAAK,CAACttE,OAAN,CAAc+tE,OAAd,CAAH,GAA4B,CAApC,CAAZ;AACD;;AACD,SAASG,kBAAT,CAA4BprC,IAA5B,EAAkC;AAChC,OAAK,IAAI3pC,CAAC,GAAGm0E,KAAK,CAACttE,OAAN,CAAc8iC,IAAd,IAAsB,CAA9B,EAAiC3Y,IAAI,GAAGmjD,KAAK,CAAC30E,MAAnD,EAA2DQ,CAAC,GAAGgxB,IAA/D,EAAqE,EAAEhxB,CAAvE,EAA0E;AACxE,QAAIwzE,SAAS,CAACW,KAAK,CAACn0E,CAAD,CAAN,CAAT,CAAoB0zE,MAAxB,EAAgC;AAC9B,aAAOS,KAAK,CAACn0E,CAAD,CAAZ;AACD;AACF;AACF;;AACD,SAASg1E,OAAT,CAAiBj5C,KAAjB,EAAwBvwB,IAAxB,EAA8BypE,UAA9B,EAA0C;AACxC,MAAI,CAACA,UAAL,EAAiB;AACfl5C,IAAAA,KAAK,CAACvwB,IAAD,CAAL,GAAc,IAAd;AACD,GAFD,MAEO,IAAIypE,UAAU,CAACz1E,MAAf,EAAuB;AAC5B,mBAAiB,wBAAQy1E,UAAR,EAAoBzpE,IAApB,CAAjB;AAAA,QAAO27B,EAAP,YAAOA,EAAP;AAAA,QAAWC,EAAX,YAAWA,EAAX;;AACA,QAAMqC,SAAS,GAAGwrC,UAAU,CAAC9tC,EAAD,CAAV,IAAkB37B,IAAlB,GAAyBypE,UAAU,CAAC9tC,EAAD,CAAnC,GAA0C8tC,UAAU,CAAC7tC,EAAD,CAAtE;AACArL,IAAAA,KAAK,CAAC0N,SAAD,CAAL,GAAmB,IAAnB;AACD;AACF;;AACD,SAASyrC,aAAT,CAAuBlnE,KAAvB,EAA8B+tB,KAA9B,EAAqCj8B,GAArC,EAA0Cq1E,SAA1C,EAAqD;AACnD,MAAMd,OAAO,GAAGrmE,KAAK,CAACsmE,QAAtB;AACA,MAAMzzD,KAAK,GAAG,CAACwzD,OAAO,CAACK,OAAR,CAAgB34C,KAAK,CAAC,CAAD,CAAL,CAAShyB,KAAzB,EAAgCorE,SAAhC,CAAf;AACA,MAAM51C,IAAI,GAAGxD,KAAK,CAACA,KAAK,CAACv8B,MAAN,GAAe,CAAhB,CAAL,CAAwBuK,KAArC;AACA,MAAI4sC,KAAJ,EAAWv1C,KAAX;;AACA,OAAKu1C,KAAK,GAAG91B,KAAb,EAAoB81B,KAAK,IAAIpX,IAA7B,EAAmCoX,KAAK,GAAG,CAAC09B,OAAO,CAACptE,GAAR,CAAY0vC,KAAZ,EAAmB,CAAnB,EAAsBw+B,SAAtB,CAA5C,EAA8E;AAC5E/zE,IAAAA,KAAK,GAAGtB,GAAG,CAAC62C,KAAD,CAAX;;AACA,QAAIv1C,KAAK,IAAI,CAAb,EAAgB;AACd26B,MAAAA,KAAK,CAAC36B,KAAD,CAAL,CAAau1C,KAAb,GAAqB,IAArB;AACD;AACF;;AACD,SAAO5a,KAAP;AACD;;AACD,SAASq5C,mBAAT,CAA6BpnE,KAA7B,EAAoCoW,MAApC,EAA4C+wD,SAA5C,EAAuD;AACrD,MAAMp5C,KAAK,GAAG,EAAd;AACA,MAAMj8B,GAAG,GAAG,EAAZ;AACA,MAAMkxB,IAAI,GAAG5M,MAAM,CAAC5kB,MAApB;AACA,MAAIQ,CAAJ,EAAO+J,KAAP;;AACA,OAAK/J,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgxB,IAAhB,EAAsB,EAAEhxB,CAAxB,EAA2B;AACzB+J,IAAAA,KAAK,GAAGqa,MAAM,CAACpkB,CAAD,CAAd;AACAF,IAAAA,GAAG,CAACiK,KAAD,CAAH,GAAa/J,CAAb;AACA+7B,IAAAA,KAAK,CAACh6B,IAAN,CAAW;AACTgI,MAAAA,KAAK,EAALA,KADS;AAET4sC,MAAAA,KAAK,EAAE;AAFE,KAAX;AAID;;AACD,SAAQ3lB,IAAI,KAAK,CAAT,IAAc,CAACmkD,SAAhB,GAA6Bp5C,KAA7B,GAAqCm5C,aAAa,CAAClnE,KAAD,EAAQ+tB,KAAR,EAAej8B,GAAf,EAAoBq1E,SAApB,CAAzD;AACD;;IACKE;;;;;AACJ,qBAAY9xD,KAAZ,EAAmB;AAAA;;AAAA;;AACjB,kCAAMA,KAAN;AACA,YAAK6X,MAAL,GAAc;AACZx6B,MAAAA,IAAI,EAAE,EADM;AAEZ1B,MAAAA,MAAM,EAAE,EAFI;AAGZuN,MAAAA,GAAG,EAAE;AAHO,KAAd;AAKA,YAAK6oE,KAAL,GAAa,KAAb;AACA,YAAKC,UAAL,GAAkBh2E,SAAlB;AACA,YAAKi2E,QAAL,GAAgB,EAAhB;AACA,YAAKC,WAAL,GAAmB,KAAnB;AACA,YAAKlB,UAAL,GAAkBh1E,SAAlB;AAXiB;AAYlB;;;;WACD,cAAKkuD,SAAL,EAAgBnjD,IAAhB,EAAsB;AACpB,UAAMkB,IAAI,GAAGiiD,SAAS,CAACjiD,IAAV,KAAmBiiD,SAAS,CAACjiD,IAAV,GAAiB,EAApC,CAAb;AACA,UAAM6oE,OAAO,GAAG,KAAKC,QAAL,GAAgB,IAAIvqC,QAAQ,CAACC,KAAb,CAAmByjB,SAAS,CAAC1jB,QAAV,CAAmBhf,IAAtC,CAAhC;AACA,8BAAQvf,IAAI,CAACkqE,cAAb,EAA6BrB,OAAO,CAACsB,OAAR,EAA7B;AACA,WAAKpB,UAAL,GAAkB;AAChBC,QAAAA,MAAM,EAAEhpE,IAAI,CAACgpE,MADG;AAEhB18B,QAAAA,KAAK,EAAEtsC,IAAI,CAACssC,KAFI;AAGhB28B,QAAAA,UAAU,EAAEjpE,IAAI,CAACipE;AAHD,OAAlB;;AAKA,0EAAWhnB,SAAX;;AACA,WAAKgoB,WAAL,GAAmBnrE,IAAI,CAACsrE,UAAxB;AACD;;;WACD,eAAM/hD,GAAN,EAAWzyB,KAAX,EAAkB;AAChB,UAAIyyB,GAAG,KAAKt0B,SAAZ,EAAuB;AACrB,eAAO,IAAP;AACD;;AACD,aAAOH,MAAK,CAAC,IAAD,EAAOy0B,GAAP,CAAZ;AACD;;;WACD,wBAAe;AACb;;AACA,WAAKuH,MAAL,GAAc;AACZx6B,QAAAA,IAAI,EAAE,EADM;AAEZ1B,QAAAA,MAAM,EAAE,EAFI;AAGZuN,QAAAA,GAAG,EAAE;AAHO,OAAd;AAKD;;;WACD,+BAAsB;AACpB,UAAM5L,OAAO,GAAG,KAAKA,OAArB;AACA,UAAMwzE,OAAO,GAAG,KAAKC,QAArB;AACA,UAAM3qC,IAAI,GAAG9oC,OAAO,CAAC2K,IAAR,CAAam+B,IAAb,IAAqB,KAAlC;;AACA,iCAAyC,KAAK5X,aAAL,EAAzC;AAAA,UAAK/nB,GAAL,wBAAKA,GAAL;AAAA,UAAUC,GAAV,wBAAUA,GAAV;AAAA,UAAe+nB,UAAf,wBAAeA,UAAf;AAAA,UAA2BC,UAA3B,wBAA2BA,UAA3B;;AACA,eAAS4jD,YAAT,CAAsBpgC,MAAtB,EAA8B;AAC5B,YAAI,CAACzjB,UAAD,IAAe,CAACjhB,KAAK,CAAC0kC,MAAM,CAACzrC,GAAR,CAAzB,EAAuC;AACrCA,UAAAA,GAAG,GAAGzH,IAAI,CAACyH,GAAL,CAASA,GAAT,EAAcyrC,MAAM,CAACzrC,GAArB,CAAN;AACD;;AACD,YAAI,CAACioB,UAAD,IAAe,CAAClhB,KAAK,CAAC0kC,MAAM,CAACxrC,GAAR,CAAzB,EAAuC;AACrCA,UAAAA,GAAG,GAAG1H,IAAI,CAAC0H,GAAL,CAASA,GAAT,EAAcwrC,MAAM,CAACxrC,GAArB,CAAN;AACD;AACF;;AACD,UAAI,CAAC+nB,UAAD,IAAe,CAACC,UAApB,EAAgC;AAC9B4jD,QAAAA,YAAY,CAAC,KAAKC,eAAL,EAAD,CAAZ;;AACA,YAAIj1E,OAAO,CAAC40C,MAAR,KAAmB,OAAnB,IAA8B50C,OAAO,CAACk7B,KAAR,CAAcghB,MAAd,KAAyB,QAA3D,EAAqE;AACnE84B,UAAAA,YAAY,CAAC,KAAKl6B,SAAL,CAAe,KAAf,CAAD,CAAZ;AACD;AACF;;AACD3xC,MAAAA,GAAG,GAAG,uBAAeA,GAAf,KAAuB,CAAC+G,KAAK,CAAC/G,GAAD,CAA7B,GAAqCA,GAArC,GAA2C,CAACqqE,OAAO,CAACK,OAAR,CAAgBzuD,IAAI,CAACuF,GAAL,EAAhB,EAA4Bme,IAA5B,CAAlD;AACA1/B,MAAAA,GAAG,GAAG,uBAAeA,GAAf,KAAuB,CAAC8G,KAAK,CAAC9G,GAAD,CAA7B,GAAqCA,GAArC,GAA2C,CAACoqE,OAAO,CAAC0B,KAAR,CAAc9vD,IAAI,CAACuF,GAAL,EAAd,EAA0Bme,IAA1B,CAAD,GAAmC,CAApF;AACA,WAAK3/B,GAAL,GAAWzH,IAAI,CAACyH,GAAL,CAASA,GAAT,EAAcC,GAAG,GAAG,CAApB,CAAX;AACA,WAAKA,GAAL,GAAW1H,IAAI,CAAC0H,GAAL,CAASD,GAAG,GAAG,CAAf,EAAkBC,GAAlB,CAAX;AACD;;;WACD,2BAAkB;AAChB,UAAMmZ,GAAG,GAAG,KAAK4yD,kBAAL,EAAZ;AACA,UAAIhsE,GAAG,GAAG+b,MAAM,CAACoM,iBAAjB;AACA,UAAIloB,GAAG,GAAG8b,MAAM,CAACmM,iBAAjB;;AACA,UAAI9O,GAAG,CAAC5jB,MAAR,EAAgB;AACdwK,QAAAA,GAAG,GAAGoZ,GAAG,CAAC,CAAD,CAAT;AACAnZ,QAAAA,GAAG,GAAGmZ,GAAG,CAACA,GAAG,CAAC5jB,MAAJ,GAAa,CAAd,CAAT;AACD;;AACD,aAAO;AAACwK,QAAAA,GAAG,EAAHA,GAAD;AAAMC,QAAAA,GAAG,EAAHA;AAAN,OAAP;AACD;;;WACD,sBAAa;AACX,UAAMpJ,OAAO,GAAG,KAAKA,OAArB;AACA,UAAMo1E,QAAQ,GAAGp1E,OAAO,CAAC2K,IAAzB;AACA,UAAM2rC,QAAQ,GAAGt2C,OAAO,CAACk7B,KAAzB;AACA,UAAMk5C,UAAU,GAAG99B,QAAQ,CAAC4F,MAAT,KAAoB,QAApB,GAA+B,KAAKi5B,kBAAL,EAA/B,GAA2D,KAAKE,SAAL,EAA9E;;AACA,UAAIr1E,OAAO,CAAC40C,MAAR,KAAmB,OAAnB,IAA8Bw/B,UAAU,CAACz1E,MAA7C,EAAqD;AACnD,aAAKwK,GAAL,GAAW,KAAKixC,QAAL,IAAiBg6B,UAAU,CAAC,CAAD,CAAtC;AACA,aAAKhrE,GAAL,GAAW,KAAK+wC,QAAL,IAAiBi6B,UAAU,CAACA,UAAU,CAACz1E,MAAX,GAAoB,CAArB,CAAtC;AACD;;AACD,UAAMwK,GAAG,GAAG,KAAKA,GAAjB;AACA,UAAMC,GAAG,GAAG,KAAKA,GAAjB;AACA,UAAM8xB,KAAK,GAAG,wBAAek5C,UAAf,EAA2BjrE,GAA3B,EAAgCC,GAAhC,CAAd;AACA,WAAKqrE,KAAL,GAAaW,QAAQ,CAACtsC,IAAT,KAAkBwN,QAAQ,CAACZ,QAAT,GAC3Bo+B,yBAAyB,CAACsB,QAAQ,CAACrB,OAAV,EAAmB,KAAK5qE,GAAxB,EAA6B,KAAKC,GAAlC,EAAuC,KAAKksE,iBAAL,CAAuBnsE,GAAvB,CAAvC,CADE,GAE3B8qE,0BAA0B,CAAC,IAAD,EAAO/4C,KAAK,CAACv8B,MAAb,EAAqBy2E,QAAQ,CAACrB,OAA9B,EAAuC,KAAK5qE,GAA5C,EAAiD,KAAKC,GAAtD,CAFjB,CAAb;AAGA,WAAKsrE,UAAL,GAAkB,CAACp+B,QAAQ,CAACR,KAAT,CAAe11C,OAAhB,IAA2B,KAAKq0E,KAAL,KAAe,MAA1C,GAAmD/1E,SAAnD,GACdw1E,kBAAkB,CAAC,KAAKO,KAAN,CADtB;AAEA,WAAKc,WAAL,CAAiBnB,UAAjB;;AACA,UAAIp0E,OAAO,CAACwvB,OAAZ,EAAqB;AACnB0L,QAAAA,KAAK,CAAC1L,OAAN;AACD;;AACD,aAAO+kD,mBAAmB,CAAC,IAAD,EAAOr5C,KAAP,EAAc,KAAKw5C,UAAnB,CAA1B;AACD;;;WACD,qBAAYN,UAAZ,EAAwB;AACtB,UAAIjzE,KAAK,GAAG,CAAZ;AACA,UAAIC,GAAG,GAAG,CAAV;AACA,UAAI4e,KAAJ,EAAW0e,IAAX;;AACA,UAAI,KAAK1+B,OAAL,CAAa0H,MAAb,IAAuB0sE,UAAU,CAACz1E,MAAtC,EAA8C;AAC5CqhB,QAAAA,KAAK,GAAG,KAAKw1D,kBAAL,CAAwBpB,UAAU,CAAC,CAAD,CAAlC,CAAR;;AACA,YAAIA,UAAU,CAACz1E,MAAX,KAAsB,CAA1B,EAA6B;AAC3BwC,UAAAA,KAAK,GAAG,IAAI6e,KAAZ;AACD,SAFD,MAEO;AACL7e,UAAAA,KAAK,GAAG,CAAC,KAAKq0E,kBAAL,CAAwBpB,UAAU,CAAC,CAAD,CAAlC,IAAyCp0D,KAA1C,IAAmD,CAA3D;AACD;;AACD0e,QAAAA,IAAI,GAAG,KAAK82C,kBAAL,CAAwBpB,UAAU,CAACA,UAAU,CAACz1E,MAAX,GAAoB,CAArB,CAAlC,CAAP;;AACA,YAAIy1E,UAAU,CAACz1E,MAAX,KAAsB,CAA1B,EAA6B;AAC3ByC,UAAAA,GAAG,GAAGs9B,IAAN;AACD,SAFD,MAEO;AACLt9B,UAAAA,GAAG,GAAG,CAACs9B,IAAI,GAAG,KAAK82C,kBAAL,CAAwBpB,UAAU,CAACA,UAAU,CAACz1E,MAAX,GAAoB,CAArB,CAAlC,CAAR,IAAsE,CAA5E;AACD;AACF;;AACD,UAAM6hD,KAAK,GAAG4zB,UAAU,CAACz1E,MAAX,GAAoB,CAApB,GAAwB,GAAxB,GAA8B,IAA5C;AACAwC,MAAAA,KAAK,GAAG,uBAAYA,KAAZ,EAAmB,CAAnB,EAAsBq/C,KAAtB,CAAR;AACAp/C,MAAAA,GAAG,GAAG,uBAAYA,GAAZ,EAAiB,CAAjB,EAAoBo/C,KAApB,CAAN;AACA,WAAKm0B,QAAL,GAAgB;AAACxzE,QAAAA,KAAK,EAALA,KAAD;AAAQC,QAAAA,GAAG,EAAHA,GAAR;AAAa2qB,QAAAA,MAAM,EAAE,KAAK5qB,KAAK,GAAG,CAAR,GAAYC,GAAjB;AAArB,OAAhB;AACD;;;WACD,qBAAY;AACV,UAAMoyE,OAAO,GAAG,KAAKC,QAArB;AACA,UAAMtqE,GAAG,GAAG,KAAKA,GAAjB;AACA,UAAMC,GAAG,GAAG,KAAKA,GAAjB;AACA,UAAMpJ,OAAO,GAAG,KAAKA,OAArB;AACA,UAAMo1E,QAAQ,GAAGp1E,OAAO,CAAC2K,IAAzB;AACA,UAAMkrC,KAAK,GAAGu/B,QAAQ,CAACtsC,IAAT,IAAiBgrC,yBAAyB,CAACsB,QAAQ,CAACrB,OAAV,EAAmB5qE,GAAnB,EAAwBC,GAAxB,EAA6B,KAAKksE,iBAAL,CAAuBnsE,GAAvB,CAA7B,CAAxD;AACA,UAAM4lE,QAAQ,GAAG,uBAAeqG,QAAQ,CAACrG,QAAxB,EAAkC,CAAlC,CAAjB;AACA,UAAMhmC,OAAO,GAAG8M,KAAK,KAAK,MAAV,GAAmBu/B,QAAQ,CAACxB,UAA5B,GAAyC,KAAzD;AACA,UAAM6B,UAAU,GAAG,uBAAS1sC,OAAT,KAAqBA,OAAO,KAAK,IAApD;AACA,UAAM7N,KAAK,GAAG,EAAd;AACA,UAAIlb,KAAK,GAAG7W,GAAZ;AACA,UAAIwB,IAAJ,EAAUrJ,KAAV;;AACA,UAAIm0E,UAAJ,EAAgB;AACdz1D,QAAAA,KAAK,GAAG,CAACwzD,OAAO,CAACK,OAAR,CAAgB7zD,KAAhB,EAAuB,SAAvB,EAAkC+oB,OAAlC,CAAT;AACD;;AACD/oB,MAAAA,KAAK,GAAG,CAACwzD,OAAO,CAACK,OAAR,CAAgB7zD,KAAhB,EAAuBy1D,UAAU,GAAG,KAAH,GAAW5/B,KAA5C,CAAT;;AACA,UAAI29B,OAAO,CAAC57B,IAAR,CAAaxuC,GAAb,EAAkBD,GAAlB,EAAuB0sC,KAAvB,IAAgC,SAASk5B,QAA7C,EAAuD;AACrD,cAAM,IAAIvwD,KAAJ,CAAUrV,GAAG,GAAG,OAAN,GAAgBC,GAAhB,GAAsB,sCAAtB,GAA+D2lE,QAA/D,GAA0E,GAA1E,GAAgFl5B,KAA1F,CAAN;AACD;;AACD,UAAMu+B,UAAU,GAAGp0E,OAAO,CAACk7B,KAAR,CAAcghB,MAAd,KAAyB,MAAzB,IAAmC,KAAKw5B,iBAAL,EAAtD;;AACA,WAAK/qE,IAAI,GAAGqV,KAAP,EAAc1e,KAAK,GAAG,CAA3B,EAA8BqJ,IAAI,GAAGvB,GAArC,EAA0CuB,IAAI,GAAG,CAAC6oE,OAAO,CAACptE,GAAR,CAAYuE,IAAZ,EAAkBokE,QAAlB,EAA4Bl5B,KAA5B,CAAR,EAA4Cv0C,KAAK,EAA3F,EAA+F;AAC7F6yE,QAAAA,OAAO,CAACj5C,KAAD,EAAQvwB,IAAR,EAAcypE,UAAd,CAAP;AACD;;AACD,UAAIzpE,IAAI,KAAKvB,GAAT,IAAgBpJ,OAAO,CAAC40C,MAAR,KAAmB,OAAnC,IAA8CtzC,KAAK,KAAK,CAA5D,EAA+D;AAC7D6yE,QAAAA,OAAO,CAACj5C,KAAD,EAAQvwB,IAAR,EAAcypE,UAAd,CAAP;AACD;;AACD,aAAOpoE,MAAM,CAACC,IAAP,CAAYivB,KAAZ,EAAmBP,IAAnB,CAAwB,UAAC7Y,CAAD,EAAI7gB,CAAJ;AAAA,eAAU6gB,CAAC,GAAG7gB,CAAd;AAAA,OAAxB,EAAyChC,GAAzC,CAA6C,UAAAyN,CAAC;AAAA,eAAI,CAACA,CAAL;AAAA,OAA9C,CAAP;AACD;;;WACD,0BAAiBxD,KAAjB,EAAwB;AACtB,UAAMsqE,OAAO,GAAG,KAAKC,QAArB;AACA,UAAM2B,QAAQ,GAAG,KAAKp1E,OAAL,CAAa2K,IAA9B;;AACA,UAAIyqE,QAAQ,CAACO,aAAb,EAA4B;AAC1B,eAAOnC,OAAO,CAAC7qC,MAAR,CAAez/B,KAAf,EAAsBksE,QAAQ,CAACO,aAA/B,CAAP;AACD;;AACD,aAAOnC,OAAO,CAAC7qC,MAAR,CAAez/B,KAAf,EAAsBksE,QAAQ,CAACP,cAAT,CAAwBe,QAA9C,CAAP;AACD;;;WACD,6BAAoBjrE,IAApB,EAA0BpK,KAA1B,EAAiC26B,KAAjC,EAAwCyN,MAAxC,EAAgD;AAC9C,UAAM3oC,OAAO,GAAG,KAAKA,OAArB;AACA,UAAM80E,OAAO,GAAG90E,OAAO,CAAC2K,IAAR,CAAakqE,cAA7B;AACA,UAAM/rC,IAAI,GAAG,KAAK2rC,KAAlB;AACA,UAAMH,SAAS,GAAG,KAAKI,UAAvB;AACA,UAAMmB,WAAW,GAAG/sC,IAAI,IAAIgsC,OAAO,CAAChsC,IAAD,CAAnC;AACA,UAAMgtC,WAAW,GAAGxB,SAAS,IAAIQ,OAAO,CAACR,SAAD,CAAxC;AACA,UAAMrpD,IAAI,GAAGiQ,KAAK,CAAC36B,KAAD,CAAlB;AACA,UAAMu1C,KAAK,GAAGw+B,SAAS,IAAIwB,WAAb,IAA4B7qD,IAA5B,IAAoCA,IAAI,CAAC6qB,KAAvD;;AACA,UAAMh3C,KAAK,GAAG,KAAK20E,QAAL,CAAc9qC,MAAd,CAAqBh+B,IAArB,EAA2Bg+B,MAAM,KAAKmN,KAAK,GAAGggC,WAAH,GAAiBD,WAA3B,CAAjC,CAAd;;AACA,UAAME,SAAS,GAAG/1E,OAAO,CAACk7B,KAAR,CAAc7R,QAAhC;AACA,aAAO0sD,SAAS,GAAG,uBAASA,SAAT,EAAoB,CAACj3E,KAAD,EAAQyB,KAAR,EAAe26B,KAAf,CAApB,EAA2C,IAA3C,CAAH,GAAsDp8B,KAAtE;AACD;;;WACD,4BAAmBo8B,KAAnB,EAA0B;AACxB,UAAI/7B,CAAJ,EAAOgxB,IAAP,EAAalF,IAAb;;AACA,WAAK9rB,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAG+K,KAAK,CAACv8B,MAAzB,EAAiCQ,CAAC,GAAGgxB,IAArC,EAA2C,EAAEhxB,CAA7C,EAAgD;AAC9C8rB,QAAAA,IAAI,GAAGiQ,KAAK,CAAC/7B,CAAD,CAAZ;AACA8rB,QAAAA,IAAI,CAACnsB,KAAL,GAAa,KAAKk3E,mBAAL,CAAyB/qD,IAAI,CAAC/hB,KAA9B,EAAqC/J,CAArC,EAAwC+7B,KAAxC,CAAb;AACD;AACF;;;WACD,4BAAmBhyB,KAAnB,EAA0B;AACxB,aAAOA,KAAK,KAAK,IAAV,GAAiBquB,GAAjB,GAAuB,CAACruB,KAAK,GAAG,KAAKC,GAAd,KAAsB,KAAKC,GAAL,GAAW,KAAKD,GAAtC,CAA9B;AACD;;;WACD,0BAAiBD,KAAjB,EAAwB;AACtB,UAAM+sE,OAAO,GAAG,KAAKtB,QAArB;AACA,UAAMzoC,GAAG,GAAG,KAAKspC,kBAAL,CAAwBtsE,KAAxB,CAAZ;AACA,aAAO,KAAKi3B,kBAAL,CAAwB,CAAC81C,OAAO,CAAC90E,KAAR,GAAgB+qC,GAAjB,IAAwB+pC,OAAO,CAAClqD,MAAxD,CAAP;AACD;;;WACD,0BAAiBqzB,KAAjB,EAAwB;AACtB,UAAM62B,OAAO,GAAG,KAAKtB,QAArB;AACA,UAAMzoC,GAAG,GAAG,KAAKihC,kBAAL,CAAwB/tB,KAAxB,IAAiC62B,OAAO,CAAClqD,MAAzC,GAAkDkqD,OAAO,CAAC70E,GAAtE;AACA,aAAO,KAAK+H,GAAL,GAAW+iC,GAAG,IAAI,KAAK9iC,GAAL,GAAW,KAAKD,GAApB,CAArB;AACD;;;WACD,uBAAcrK,KAAd,EAAqB;AACnB,UAAMo3E,SAAS,GAAG,KAAKl2E,OAAL,CAAak7B,KAA/B;AACA,UAAMi7C,cAAc,GAAG,KAAKtiD,GAAL,CAASmtC,WAAT,CAAqBliE,KAArB,EAA4BgE,KAAnD;AACA,UAAM0+B,KAAK,GAAG,uBAAU,KAAK7E,YAAL,KAAsBu5C,SAAS,CAAC5gC,WAAhC,GAA8C4gC,SAAS,CAAC7gC,WAAlE,CAAd;AACA,UAAM+gC,WAAW,GAAG10E,IAAI,CAACw/B,GAAL,CAASM,KAAT,CAApB;AACA,UAAM60C,WAAW,GAAG30E,IAAI,CAAC0/B,GAAL,CAASI,KAAT,CAApB;;AACA,UAAM80C,YAAY,GAAG,KAAKt3B,uBAAL,CAA6B,CAA7B,EAAgCvhD,IAArD;;AACA,aAAO;AACLoP,QAAAA,CAAC,EAAGspE,cAAc,GAAGC,WAAlB,GAAkCE,YAAY,GAAGD,WAD/C;AAEL3nC,QAAAA,CAAC,EAAGynC,cAAc,GAAGE,WAAlB,GAAkCC,YAAY,GAAGF;AAF/C,OAAP;AAID;;;WACD,2BAAkBG,WAAlB,EAA+B;AAC7B,UAAMnB,QAAQ,GAAG,KAAKp1E,OAAL,CAAa2K,IAA9B;AACA,UAAMkqE,cAAc,GAAGO,QAAQ,CAACP,cAAhC;AACA,UAAMlsC,MAAM,GAAGksC,cAAc,CAACO,QAAQ,CAACtsC,IAAV,CAAd,IAAiC+rC,cAAc,CAACjC,WAA/D;;AACA,UAAM4D,YAAY,GAAG,KAAKR,mBAAL,CAAyBO,WAAzB,EAAsC,CAAtC,EAAyChC,mBAAmB,CAAC,IAAD,EAAO,CAACgC,WAAD,CAAP,EAAsB,KAAK7B,UAA3B,CAA5D,EAAoG/rC,MAApG,CAArB;;AACA,UAAMlrC,IAAI,GAAG,KAAKg5E,aAAL,CAAmBD,YAAnB,CAAb;;AACA,UAAMxC,QAAQ,GAAGtyE,IAAI,CAACC,KAAL,CAAW,KAAKg7B,YAAL,KAAsB,KAAK75B,KAAL,GAAarF,IAAI,CAACoP,CAAxC,GAA4C,KAAKhK,MAAL,GAAcpF,IAAI,CAACixC,CAA1E,IAA+E,CAAhG;AACA,aAAOslC,QAAQ,GAAG,CAAX,GAAeA,QAAf,GAA0B,CAAjC;AACD;;;WACD,6BAAoB;AAClB,UAAII,UAAU,GAAG,KAAK75C,MAAL,CAAYx6B,IAAZ,IAAoB,EAArC;AACA,UAAIZ,CAAJ,EAAOgxB,IAAP;;AACA,UAAIikD,UAAU,CAACz1E,MAAf,EAAuB;AACrB,eAAOy1E,UAAP;AACD;;AACD,UAAMv5B,KAAK,GAAG,KAAK9oB,uBAAL,EAAd;;AACA,UAAI,KAAK6iD,WAAL,IAAoB/5B,KAAK,CAACl8C,MAA9B,EAAsC;AACpC,eAAQ,KAAK47B,MAAL,CAAYx6B,IAAZ,GAAmB86C,KAAK,CAAC,CAAD,CAAL,CAAS5gC,UAAT,CAAoBygB,kBAApB,CAAuC,IAAvC,CAA3B;AACD;;AACD,WAAKv7B,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAG0qB,KAAK,CAACl8C,MAAzB,EAAiCQ,CAAC,GAAGgxB,IAArC,EAA2C,EAAEhxB,CAA7C,EAAgD;AAC9Ci1E,QAAAA,UAAU,GAAGA,UAAU,CAACt0D,MAAX,CAAkB+6B,KAAK,CAAC17C,CAAD,CAAL,CAAS8a,UAAT,CAAoBygB,kBAApB,CAAuC,IAAvC,CAAlB,CAAb;AACD;;AACD,aAAQ,KAAKH,MAAL,CAAYx6B,IAAZ,GAAmB,KAAK22E,SAAL,CAAetC,UAAf,CAA3B;AACD;;;WACD,8BAAqB;AACnB,UAAMA,UAAU,GAAG,KAAK75C,MAAL,CAAYl8B,MAAZ,IAAsB,EAAzC;AACA,UAAIc,CAAJ,EAAOgxB,IAAP;;AACA,UAAIikD,UAAU,CAACz1E,MAAf,EAAuB;AACrB,eAAOy1E,UAAP;AACD;;AACD,UAAM/1E,MAAM,GAAG,KAAK44B,SAAL,EAAf;;AACA,WAAK93B,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAG9xB,MAAM,CAACM,MAA1B,EAAkCQ,CAAC,GAAGgxB,IAAtC,EAA4C,EAAEhxB,CAA9C,EAAiD;AAC/Ci1E,QAAAA,UAAU,CAAClzE,IAAX,CAAgB3C,MAAK,CAAC,IAAD,EAAOF,MAAM,CAACc,CAAD,CAAb,CAArB;AACD;;AACD,aAAQ,KAAKo7B,MAAL,CAAYl8B,MAAZ,GAAqB,KAAKu2E,WAAL,GAAmBR,UAAnB,GAAgC,KAAKsC,SAAL,CAAetC,UAAf,CAA7D;AACD;;;WACD,mBAAU7wD,MAAV,EAAkB;AAChB,aAAO,uBAAaA,MAAM,CAACoX,IAAP,CAAY44C,MAAZ,CAAb,CAAP;AACD;;;;EAhPqBh6B;;;AAkPxBi7B,SAAS,CAAC93D,EAAV,GAAe,MAAf;AACA83D,SAAS,CAACn3E,QAAV,GAAqB;AACnBu3C,EAAAA,MAAM,EAAE,MADW;AAEnB1L,EAAAA,QAAQ,EAAE,EAFS;AAGnBv+B,EAAAA,IAAI,EAAE;AACJgpE,IAAAA,MAAM,EAAE,KADJ;AAEJ7qC,IAAAA,IAAI,EAAE,KAFF;AAGJmO,IAAAA,KAAK,EAAE,KAHH;AAIJ28B,IAAAA,UAAU,EAAE,KAJR;AAKJG,IAAAA,OAAO,EAAE,aALL;AAMJc,IAAAA,cAAc,EAAE;AANZ,GAHa;AAWnB35C,EAAAA,KAAK,EAAE;AACLghB,IAAAA,MAAM,EAAE,MADH;AAELpG,IAAAA,KAAK,EAAE;AACL11C,MAAAA,OAAO,EAAE;AADJ;AAFF;AAXY,CAArB;;AAmBA,SAASW,WAAT,CAAqB41E,KAArB,EAA4B7mE,GAA5B,EAAiC0f,OAAjC,EAA0C;AACxC,MAAI8W,EAAE,GAAG,CAAT;AACA,MAAIC,EAAE,GAAGowC,KAAK,CAACh4E,MAAN,GAAe,CAAxB;AACA,MAAIi4E,UAAJ,EAAgBC,UAAhB,EAA4BC,UAA5B,EAAwCC,UAAxC;;AACA,MAAIvnD,OAAJ,EAAa;AACX,QAAI1f,GAAG,IAAI6mE,KAAK,CAACrwC,EAAD,CAAL,CAAU4F,GAAjB,IAAwBp8B,GAAG,IAAI6mE,KAAK,CAACpwC,EAAD,CAAL,CAAU2F,GAA7C,EAAkD;AAAA,0BACpC,uBAAayqC,KAAb,EAAoB,KAApB,EAA2B7mE,GAA3B,CADoC;;AAC9Cw2B,MAAAA,EAD8C,iBAC9CA,EAD8C;AAC1CC,MAAAA,EAD0C,iBAC1CA,EAD0C;AAEjD;;AAHU,oBAI4BowC,KAAK,CAACrwC,EAAD,CAJjC;AAIJswC,IAAAA,UAJI,aAIT1qC,GAJS;AAIc4qC,IAAAA,UAJd,aAIQnsE,IAJR;AAAA,oBAK4BgsE,KAAK,CAACpwC,EAAD,CALjC;AAKJswC,IAAAA,UALI,aAKT3qC,GALS;AAKc6qC,IAAAA,UALd,aAKQpsE,IALR;AAMZ,GAND,MAMO;AACL,QAAImF,GAAG,IAAI6mE,KAAK,CAACrwC,EAAD,CAAL,CAAU37B,IAAjB,IAAyBmF,GAAG,IAAI6mE,KAAK,CAACpwC,EAAD,CAAL,CAAU57B,IAA9C,EAAoD;AAAA,0BACtC,uBAAagsE,KAAb,EAAoB,MAApB,EAA4B7mE,GAA5B,CADsC;;AAChDw2B,MAAAA,EADgD,iBAChDA,EADgD;AAC5CC,MAAAA,EAD4C,iBAC5CA,EAD4C;AAEnD;;AAHI,qBAIkCowC,KAAK,CAACrwC,EAAD,CAJvC;AAIGswC,IAAAA,UAJH,cAIHjsE,IAJG;AAIoBmsE,IAAAA,UAJpB,cAIe5qC,GAJf;AAAA,qBAKkCyqC,KAAK,CAACpwC,EAAD,CALvC;AAKGswC,IAAAA,UALH,cAKHlsE,IALG;AAKoBosE,IAAAA,UALpB,cAKe7qC,GALf;AAMN;;AACD,MAAM8qC,IAAI,GAAGH,UAAU,GAAGD,UAA1B;AACA,SAAOI,IAAI,GAAGF,UAAU,GAAG,CAACC,UAAU,GAAGD,UAAd,KAA6BhnE,GAAG,GAAG8mE,UAAnC,IAAiDI,IAAjE,GAAwEF,UAAnF;AACD;;IACKG;;;;;AACJ,2BAAYv0D,KAAZ,EAAmB;AAAA;;AAAA;;AACjB,kCAAMA,KAAN;AACA,YAAKw0D,MAAL,GAAc,EAAd;AACA,YAAKC,OAAL,GAAez4E,SAAf;AACA,YAAK04E,WAAL,GAAmB14E,SAAnB;AAJiB;AAKlB;;;;WACD,uBAAc;AACZ,UAAM01E,UAAU,GAAG,KAAKiD,sBAAL,EAAnB;;AACA,UAAMV,KAAK,GAAG,KAAKO,MAAL,GAAc,KAAKI,gBAAL,CAAsBlD,UAAtB,CAA5B;AACA,WAAK+C,OAAL,GAAep2E,WAAW,CAAC41E,KAAD,EAAQ,KAAKxtE,GAAb,CAA1B;AACA,WAAKiuE,WAAL,GAAmBr2E,WAAW,CAAC41E,KAAD,EAAQ,KAAKvtE,GAAb,CAAX,GAA+B,KAAK+tE,OAAvD;;AACA,uFAAkB/C,UAAlB;AACD;;;WACD,0BAAiBA,UAAjB,EAA6B;AAC3B,UAAOjrE,GAAP,GAAmB,IAAnB,CAAOA,GAAP;AAAA,UAAYC,GAAZ,GAAmB,IAAnB,CAAYA,GAAZ;AACA,UAAMmH,KAAK,GAAG,EAAd;AACA,UAAMomE,KAAK,GAAG,EAAd;AACA,UAAIx3E,CAAJ,EAAOgxB,IAAP,EAAayG,IAAb,EAAmBkE,IAAnB,EAAyBjvB,IAAzB;;AACA,WAAK1M,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAGikD,UAAU,CAACz1E,MAA9B,EAAsCQ,CAAC,GAAGgxB,IAA1C,EAAgD,EAAEhxB,CAAlD,EAAqD;AACnD27B,QAAAA,IAAI,GAAGs5C,UAAU,CAACj1E,CAAD,CAAjB;;AACA,YAAI27B,IAAI,IAAI3xB,GAAR,IAAe2xB,IAAI,IAAI1xB,GAA3B,EAAgC;AAC9BmH,UAAAA,KAAK,CAACrP,IAAN,CAAW45B,IAAX;AACD;AACF;;AACD,UAAIvqB,KAAK,CAAC5R,MAAN,GAAe,CAAnB,EAAsB;AACpB,eAAO,CACL;AAACgM,UAAAA,IAAI,EAAExB,GAAP;AAAY+iC,UAAAA,GAAG,EAAE;AAAjB,SADK,EAEL;AAACvhC,UAAAA,IAAI,EAAEvB,GAAP;AAAY8iC,UAAAA,GAAG,EAAE;AAAjB,SAFK,CAAP;AAID;;AACD,WAAK/sC,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAG5f,KAAK,CAAC5R,MAAzB,EAAiCQ,CAAC,GAAGgxB,IAArC,EAA2C,EAAEhxB,CAA7C,EAAgD;AAC9C0M,QAAAA,IAAI,GAAG0E,KAAK,CAACpR,CAAC,GAAG,CAAL,CAAZ;AACAy3B,QAAAA,IAAI,GAAGrmB,KAAK,CAACpR,CAAC,GAAG,CAAL,CAAZ;AACA27B,QAAAA,IAAI,GAAGvqB,KAAK,CAACpR,CAAD,CAAZ;;AACA,YAAIuC,IAAI,CAACu1C,KAAL,CAAW,CAACprC,IAAI,GAAG+qB,IAAR,IAAgB,CAA3B,MAAkCkE,IAAtC,EAA4C;AAC1C67C,UAAAA,KAAK,CAACz1E,IAAN,CAAW;AAACyJ,YAAAA,IAAI,EAAEmwB,IAAP;AAAaoR,YAAAA,GAAG,EAAE/sC,CAAC,IAAIgxB,IAAI,GAAG,CAAX;AAAnB,WAAX;AACD;AACF;;AACD,aAAOwmD,KAAP;AACD;;;WACD,kCAAyB;AACvB,UAAIvC,UAAU,GAAG,KAAK75C,MAAL,CAAY3uB,GAAZ,IAAmB,EAApC;;AACA,UAAIwoE,UAAU,CAACz1E,MAAf,EAAuB;AACrB,eAAOy1E,UAAP;AACD;;AACD,UAAMr0E,IAAI,GAAG,KAAK21E,iBAAL,EAAb;AACA,UAAM52E,KAAK,GAAG,KAAKq2E,kBAAL,EAAd;;AACA,UAAIp1E,IAAI,CAACpB,MAAL,IAAeG,KAAK,CAACH,MAAzB,EAAiC;AAC/By1E,QAAAA,UAAU,GAAG,KAAKsC,SAAL,CAAe32E,IAAI,CAAC+f,MAAL,CAAYhhB,KAAZ,CAAf,CAAb;AACD,OAFD,MAEO;AACLs1E,QAAAA,UAAU,GAAGr0E,IAAI,CAACpB,MAAL,GAAcoB,IAAd,GAAqBjB,KAAlC;AACD;;AACDs1E,MAAAA,UAAU,GAAG,KAAK75C,MAAL,CAAY3uB,GAAZ,GAAkBwoE,UAA/B;AACA,aAAOA,UAAP;AACD;;;WACD,4BAAmBlrE,KAAnB,EAA0B;AACxB,aAAO,CAACnI,WAAW,CAAC,KAAKm2E,MAAN,EAAchuE,KAAd,CAAX,GAAkC,KAAKiuE,OAAxC,IAAmD,KAAKC,WAA/D;AACD;;;WACD,0BAAiBh4B,KAAjB,EAAwB;AACtB,UAAM62B,OAAO,GAAG,KAAKtB,QAArB;AACA,UAAMt1B,OAAO,GAAG,KAAK8tB,kBAAL,CAAwB/tB,KAAxB,IAAiC62B,OAAO,CAAClqD,MAAzC,GAAkDkqD,OAAO,CAAC70E,GAA1E;AACA,aAAOL,WAAW,CAAC,KAAKm2E,MAAN,EAAc73B,OAAO,GAAG,KAAK+3B,WAAf,GAA6B,KAAKD,OAAhD,EAAyD,IAAzD,CAAlB;AACD;;;;EA/D2B3C;;;AAiE9ByC,eAAe,CAACv6D,EAAhB,GAAqB,YAArB;AACAu6D,eAAe,CAAC55E,QAAhB,GAA2Bm3E,SAAS,CAACn3E,QAArC;AAEA,IAAI0B,MAAM,GAAG,aAAaiN,MAAM,CAACitB,MAAP,CAAc;AACxCuP,EAAAA,SAAS,EAAE,IAD6B;AAExCjsC,EAAAA,aAAa,EAAEA,aAFyB;AAGxCG,EAAAA,WAAW,EAAEA,WAH2B;AAIxCmzE,EAAAA,gBAAgB,EAAEA,gBAJsB;AAKxCkC,EAAAA,iBAAiB,EAAEA,iBALqB;AAMxCyC,EAAAA,SAAS,EAAEA,SAN6B;AAOxCyC,EAAAA,eAAe,EAAEA;AAPuB,CAAd,CAA1B;;AAUA,IAAMM,aAAa,GAAG,CACpBhvC,WADoB,EAEpBrhB,QAFoB,EAGpBjnB,OAHoB,EAIpBlB,MAJoB,CAAtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC33UA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS+/C,UAAT,CAAoB04B,SAApB,EAA+BC,SAA/B,EAA0Cj6E,UAA1C,EAAsD;AACpD,SAAOi6E,SAAS,GAAG,GAAZ,GAAkBD,SAAlB,GAA8B,KAA9B,GAAsCh6E,UAA7C;AACD;;AACD,IAAMgtB,gBAAgB,GAAI,YAAW;AACnC,MAAI,OAAOroB,MAAP,KAAkB,WAAtB,EAAmC;AACjC,WAAO,UAASknB,QAAT,EAAmB;AACxB,aAAOA,QAAQ,EAAf;AACD,KAFD;AAGD;;AACD,SAAOlnB,MAAM,CAACqN,qBAAd;AACD,CAPyB,EAA1B;;;;AAQA,SAASkoE,SAAT,CAAmB3vD,EAAnB,EAAuB4vD,OAAvB,EAAgCC,QAAhC,EAA0C;AACxC,MAAMC,UAAU,GAAGD,QAAQ,IAAK,UAAC30D,IAAD;AAAA,WAAU/f,KAAK,CAACoe,SAAN,CAAgB4jB,KAAhB,CAAsBhiB,IAAtB,CAA2BD,IAA3B,CAAV;AAAA,GAAhC;;AACA,MAAI60D,OAAO,GAAG,KAAd;AACA,MAAI70D,IAAI,GAAG,EAAX;AACA,SAAO,YAAkB;AAAA,sCAAN80D,IAAM;AAANA,MAAAA,IAAM;AAAA;;AACvB90D,IAAAA,IAAI,GAAG40D,UAAU,CAACE,IAAD,CAAjB;;AACA,QAAI,CAACD,OAAL,EAAc;AACZA,MAAAA,OAAO,GAAG,IAAV;AACAttD,MAAAA,gBAAgB,CAACtH,IAAjB,CAAsB/gB,MAAtB,EAA8B,YAAM;AAClC21E,QAAAA,OAAO,GAAG,KAAV;AACA/vD,QAAAA,EAAE,CAACrE,KAAH,CAASi0D,OAAT,EAAkB10D,IAAlB;AACD,OAHD;AAID;AACF,GATD;AAUD;;AACD,SAASpO,QAAT,CAAkBkT,EAAlB,EAAsB/iB,KAAtB,EAA6B;AAC3B,MAAIqjB,OAAJ;AACA,SAAO,YAAkB;AAAA,uCAANpF,IAAM;AAANA,MAAAA,IAAM;AAAA;;AACvB,QAAIje,KAAJ,EAAW;AACT4jB,MAAAA,YAAY,CAACP,OAAD,CAAZ;AACAA,MAAAA,OAAO,GAAGniB,UAAU,CAAC6hB,EAAD,EAAK/iB,KAAL,EAAYie,IAAZ,CAApB;AACD,KAHD,MAGO;AACL8E,MAAAA,EAAE,CAACrE,KAAH,CAAS,IAAT,EAAeT,IAAf;AACD;;AACD,WAAOje,KAAP;AACD,GARD;AASD;;AACD,IAAMgzE,kBAAkB,GAAG,SAArBA,kBAAqB,CAACjiC,KAAD;AAAA,SAAWA,KAAK,KAAK,OAAV,GAAoB,MAApB,GAA6BA,KAAK,KAAK,KAAV,GAAkB,OAAlB,GAA4B,QAApE;AAAA,CAA3B;;;;AACA,IAAMkiC,cAAc,GAAG,SAAjBA,cAAiB,CAACliC,KAAD,EAAQ50C,KAAR,EAAeC,GAAf;AAAA,SAAuB20C,KAAK,KAAK,OAAV,GAAoB50C,KAApB,GAA4B40C,KAAK,KAAK,KAAV,GAAkB30C,GAAlB,GAAwB,CAACD,KAAK,GAAGC,GAAT,IAAgB,CAA3F;AAAA,CAAvB;;;;AACA,IAAM82E,MAAM,GAAG,SAATA,MAAS,CAACniC,KAAD,EAAQpzC,IAAR,EAAcC,KAAd,EAAqB0+D,GAArB,EAA6B;AAC1C,MAAM6W,KAAK,GAAG7W,GAAG,GAAG,MAAH,GAAY,OAA7B;AACA,SAAOvrB,KAAK,KAAKoiC,KAAV,GAAkBv1E,KAAlB,GAA0BmzC,KAAK,KAAK,QAAV,GAAqB,CAACpzC,IAAI,GAAGC,KAAR,IAAiB,CAAtC,GAA0CD,IAA3E;AACD,CAHD;;;;AAKA,SAAS0pE,IAAT,GAAgB,CAAE;;AAClB,IAAM+L,GAAG,GAAI,YAAW;AACtB,MAAI17D,EAAE,GAAG,CAAT;AACA,SAAO,YAAW;AAChB,WAAOA,EAAE,EAAT;AACD,GAFD;AAGD,CALY,EAAb;;;;AAMA,SAAS27D,aAAT,CAAuBnvE,KAAvB,EAA8B;AAC5B,SAAOA,KAAK,KAAK,IAAV,IAAkB,OAAOA,KAAP,KAAiB,WAA1C;AACD;;AACD,SAASovE,OAAT,CAAiBpvE,KAAjB,EAAwB;AACtB,MAAIhG,KAAK,CAACo1E,OAAN,IAAiBp1E,KAAK,CAACo1E,OAAN,CAAcpvE,KAAd,CAArB,EAA2C;AACzC,WAAO,IAAP;AACD;;AACD,MAAM/K,IAAI,GAAG6N,MAAM,CAACsV,SAAP,CAAiB/H,QAAjB,CAA0B2J,IAA1B,CAA+Bha,KAA/B,CAAb;;AACA,MAAI/K,IAAI,CAACkoB,MAAL,CAAY,CAAZ,EAAe,CAAf,MAAsB,SAAtB,IAAmCloB,IAAI,CAACkoB,MAAL,CAAY,CAAC,CAAb,MAAoB,QAA3D,EAAqE;AACnE,WAAO,IAAP;AACD;;AACD,SAAO,KAAP;AACD;;AACD,SAASkyD,QAAT,CAAkBrvE,KAAlB,EAAyB;AACvB,SAAOA,KAAK,KAAK,IAAV,IAAkB8C,MAAM,CAACsV,SAAP,CAAiB/H,QAAjB,CAA0B2J,IAA1B,CAA+Bha,KAA/B,MAA0C,iBAAnE;AACD;;AACD,IAAMsvE,cAAc,GAAG,SAAjBA,cAAiB,CAACtvE,KAAD;AAAA,SAAW,CAAC,OAAOA,KAAP,KAAiB,QAAjB,IAA6BA,KAAK,YAAYgc,MAA/C,KAA0DgoD,QAAQ,CAAC,CAAChkE,KAAF,CAA7E;AAAA,CAAvB;;;;AACA,SAASuvE,eAAT,CAAyBvvE,KAAzB,EAAgCwvE,YAAhC,EAA8C;AAC5C,SAAOF,cAAc,CAACtvE,KAAD,CAAd,GAAwBA,KAAxB,GAAgCwvE,YAAvC;AACD;;AACD,SAASC,cAAT,CAAwBzvE,KAAxB,EAA+BwvE,YAA/B,EAA6C;AAC3C,SAAO,OAAOxvE,KAAP,KAAiB,WAAjB,GAA+BwvE,YAA/B,GAA8CxvE,KAArD;AACD;;AACD,IAAM0vE,YAAY,GAAG,SAAfA,YAAe,CAAC1vE,KAAD,EAAQ2vE,SAAR;AAAA,SACnB,OAAO3vE,KAAP,KAAiB,QAAjB,IAA6BA,KAAK,CAAC4vE,QAAN,CAAe,GAAf,CAA7B,GACE9oE,UAAU,CAAC9G,KAAD,CAAV,GAAoB,GADtB,GAEIA,KAAK,GAAG2vE,SAHO;AAAA,CAArB;;;;AAIA,IAAME,WAAW,GAAG,SAAdA,WAAc,CAAC7vE,KAAD,EAAQ2vE,SAAR;AAAA,SAClB,OAAO3vE,KAAP,KAAiB,QAAjB,IAA6BA,KAAK,CAAC4vE,QAAN,CAAe,GAAf,CAA7B,GACE9oE,UAAU,CAAC9G,KAAD,CAAV,GAAoB,GAApB,GAA0B2vE,SAD5B,GAEI,CAAC3vE,KAHa;AAAA,CAApB;;;;AAIA,SAASmgB,QAAT,CAAkBtB,EAAlB,EAAsB9E,IAAtB,EAA4B00D,OAA5B,EAAqC;AACnC,MAAI5vD,EAAE,IAAI,OAAOA,EAAE,CAAC7E,IAAV,KAAmB,UAA7B,EAAyC;AACvC,WAAO6E,EAAE,CAACrE,KAAH,CAASi0D,OAAT,EAAkB10D,IAAlB,CAAP;AACD;AACF;;AACD,SAAS+1D,IAAT,CAAcC,QAAd,EAAwBlxD,EAAxB,EAA4B4vD,OAA5B,EAAqCnoD,OAArC,EAA8C;AAC5C,MAAIrwB,CAAJ,EAAO6P,GAAP,EAAY/C,IAAZ;;AACA,MAAIqsE,OAAO,CAACW,QAAD,CAAX,EAAuB;AACrBjqE,IAAAA,GAAG,GAAGiqE,QAAQ,CAACt6E,MAAf;;AACA,QAAI6wB,OAAJ,EAAa;AACX,WAAKrwB,CAAC,GAAG6P,GAAG,GAAG,CAAf,EAAkB7P,CAAC,IAAI,CAAvB,EAA0BA,CAAC,EAA3B,EAA+B;AAC7B4oB,QAAAA,EAAE,CAAC7E,IAAH,CAAQy0D,OAAR,EAAiBsB,QAAQ,CAAC95E,CAAD,CAAzB,EAA8BA,CAA9B;AACD;AACF,KAJD,MAIO;AACL,WAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG6P,GAAhB,EAAqB7P,CAAC,EAAtB,EAA0B;AACxB4oB,QAAAA,EAAE,CAAC7E,IAAH,CAAQy0D,OAAR,EAAiBsB,QAAQ,CAAC95E,CAAD,CAAzB,EAA8BA,CAA9B;AACD;AACF;AACF,GAXD,MAWO,IAAIo5E,QAAQ,CAACU,QAAD,CAAZ,EAAwB;AAC7BhtE,IAAAA,IAAI,GAAGD,MAAM,CAACC,IAAP,CAAYgtE,QAAZ,CAAP;AACAjqE,IAAAA,GAAG,GAAG/C,IAAI,CAACtN,MAAX;;AACA,SAAKQ,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG6P,GAAhB,EAAqB7P,CAAC,EAAtB,EAA0B;AACxB4oB,MAAAA,EAAE,CAAC7E,IAAH,CAAQy0D,OAAR,EAAiBsB,QAAQ,CAAChtE,IAAI,CAAC9M,CAAD,CAAL,CAAzB,EAAoC8M,IAAI,CAAC9M,CAAD,CAAxC;AACD;AACF;AACF;;AACD,SAAS+5E,cAAT,CAAwBC,EAAxB,EAA4B7sE,EAA5B,EAAgC;AAC9B,MAAInN,CAAJ,EAAOgxB,IAAP,EAAamc,EAAb,EAAiB/O,EAAjB;;AACA,MAAI,CAAC47C,EAAD,IAAO,CAAC7sE,EAAR,IAAc6sE,EAAE,CAACx6E,MAAH,KAAc2N,EAAE,CAAC3N,MAAnC,EAA2C;AACzC,WAAO,KAAP;AACD;;AACD,OAAKQ,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAGgpD,EAAE,CAACx6E,MAAtB,EAA8BQ,CAAC,GAAGgxB,IAAlC,EAAwC,EAAEhxB,CAA1C,EAA6C;AAC3CmtC,IAAAA,EAAE,GAAG6sC,EAAE,CAACh6E,CAAD,CAAP;AACAo+B,IAAAA,EAAE,GAAGjxB,EAAE,CAACnN,CAAD,CAAP;;AACA,QAAImtC,EAAE,CAAC7b,YAAH,KAAoB8M,EAAE,CAAC9M,YAAvB,IAAuC6b,EAAE,CAAC/rC,KAAH,KAAag9B,EAAE,CAACh9B,KAA3D,EAAkE;AAChE,aAAO,KAAP;AACD;AACF;;AACD,SAAO,IAAP;AACD;;AACD,SAAS64E,OAAT,CAAiBl9B,MAAjB,EAAyB;AACvB,MAAIo8B,OAAO,CAACp8B,MAAD,CAAX,EAAqB;AACnB,WAAOA,MAAM,CAACj9C,GAAP,CAAWm6E,OAAX,CAAP;AACD;;AACD,MAAIb,QAAQ,CAACr8B,MAAD,CAAZ,EAAsB;AACpB,QAAMloC,MAAM,GAAGhI,MAAM,CAACqR,MAAP,CAAc,IAAd,CAAf;AACA,QAAMpR,IAAI,GAAGD,MAAM,CAACC,IAAP,CAAYiwC,MAAZ,CAAb;AACA,QAAMm9B,IAAI,GAAGptE,IAAI,CAACtN,MAAlB;AACA,QAAI26E,CAAC,GAAG,CAAR;;AACA,WAAOA,CAAC,GAAGD,IAAX,EAAiB,EAAEC,CAAnB,EAAsB;AACpBtlE,MAAAA,MAAM,CAAC/H,IAAI,CAACqtE,CAAD,CAAL,CAAN,GAAkBF,OAAO,CAACl9B,MAAM,CAACjwC,IAAI,CAACqtE,CAAD,CAAL,CAAP,CAAzB;AACD;;AACD,WAAOtlE,MAAP;AACD;;AACD,SAAOkoC,MAAP;AACD;;AACD,SAASq9B,UAAT,CAAoB1pE,GAApB,EAAyB;AACvB,SAAO,CAAC,WAAD,EAAc,WAAd,EAA2B,aAA3B,EAA0C7J,OAA1C,CAAkD6J,GAAlD,MAA2D,CAAC,CAAnE;AACD;;AACD,SAAS2pE,OAAT,CAAiB3pE,GAAjB,EAAsBmE,MAAtB,EAA8BkoC,MAA9B,EAAsCl8C,OAAtC,EAA+C;AAC7C,MAAI,CAACu5E,UAAU,CAAC1pE,GAAD,CAAf,EAAsB;AACpB;AACD;;AACD,MAAM4pE,IAAI,GAAGzlE,MAAM,CAACnE,GAAD,CAAnB;AACA,MAAM6pE,IAAI,GAAGx9B,MAAM,CAACrsC,GAAD,CAAnB;;AACA,MAAI0oE,QAAQ,CAACkB,IAAD,CAAR,IAAkBlB,QAAQ,CAACmB,IAAD,CAA9B,EAAsC;AACpCC,IAAAA,KAAK,CAACF,IAAD,EAAOC,IAAP,EAAa15E,OAAb,CAAL;AACD,GAFD,MAEO;AACLgU,IAAAA,MAAM,CAACnE,GAAD,CAAN,GAAcupE,OAAO,CAACM,IAAD,CAArB;AACD;AACF;;AACD,SAASC,KAAT,CAAe3lE,MAAf,EAAuBkoC,MAAvB,EAA+Bl8C,OAA/B,EAAwC;AACtC,MAAM09D,OAAO,GAAG4a,OAAO,CAACp8B,MAAD,CAAP,GAAkBA,MAAlB,GAA2B,CAACA,MAAD,CAA3C;AACA,MAAM/rB,IAAI,GAAGutC,OAAO,CAAC/+D,MAArB;;AACA,MAAI,CAAC45E,QAAQ,CAACvkE,MAAD,CAAb,EAAuB;AACrB,WAAOA,MAAP;AACD;;AACDhU,EAAAA,OAAO,GAAGA,OAAO,IAAI,EAArB;AACA,MAAM45E,MAAM,GAAG55E,OAAO,CAAC45E,MAAR,IAAkBJ,OAAjC;;AACA,OAAK,IAAIr6E,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgxB,IAApB,EAA0B,EAAEhxB,CAA5B,EAA+B;AAC7B+8C,IAAAA,MAAM,GAAGwhB,OAAO,CAACv+D,CAAD,CAAhB;;AACA,QAAI,CAACo5E,QAAQ,CAACr8B,MAAD,CAAb,EAAuB;AACrB;AACD;;AACD,QAAMjwC,IAAI,GAAGD,MAAM,CAACC,IAAP,CAAYiwC,MAAZ,CAAb;;AACA,SAAK,IAAIo9B,CAAC,GAAG,CAAR,EAAWD,IAAI,GAAGptE,IAAI,CAACtN,MAA5B,EAAoC26E,CAAC,GAAGD,IAAxC,EAA8C,EAAEC,CAAhD,EAAmD;AACjDM,MAAAA,MAAM,CAAC3tE,IAAI,CAACqtE,CAAD,CAAL,EAAUtlE,MAAV,EAAkBkoC,MAAlB,EAA0Bl8C,OAA1B,CAAN;AACD;AACF;;AACD,SAAOgU,MAAP;AACD;;AACD,SAAS6lE,OAAT,CAAiB7lE,MAAjB,EAAyBkoC,MAAzB,EAAiC;AAC/B,SAAOy9B,KAAK,CAAC3lE,MAAD,EAASkoC,MAAT,EAAiB;AAAC09B,IAAAA,MAAM,EAAEE;AAAT,GAAjB,CAAZ;AACD;;AACD,SAASA,SAAT,CAAmBjqE,GAAnB,EAAwBmE,MAAxB,EAAgCkoC,MAAhC,EAAwC;AACtC,MAAI,CAACq9B,UAAU,CAAC1pE,GAAD,CAAf,EAAsB;AACpB;AACD;;AACD,MAAM4pE,IAAI,GAAGzlE,MAAM,CAACnE,GAAD,CAAnB;AACA,MAAM6pE,IAAI,GAAGx9B,MAAM,CAACrsC,GAAD,CAAnB;;AACA,MAAI0oE,QAAQ,CAACkB,IAAD,CAAR,IAAkBlB,QAAQ,CAACmB,IAAD,CAA9B,EAAsC;AACpCG,IAAAA,OAAO,CAACJ,IAAD,EAAOC,IAAP,CAAP;AACD,GAFD,MAEO,IAAI,CAAC1tE,MAAM,CAACsV,SAAP,CAAiBN,cAAjB,CAAgCkC,IAAhC,CAAqClP,MAArC,EAA6CnE,GAA7C,CAAL,EAAwD;AAC7DmE,IAAAA,MAAM,CAACnE,GAAD,CAAN,GAAcupE,OAAO,CAACM,IAAD,CAArB;AACD;AACF;;AACD,SAASK,WAAT,CAAqB32B,KAArB,EAA4Bl6C,KAA5B,EAAmCisD,QAAnC,EAA6CvqD,OAA7C,EAAsD;AACpD,MAAI1B,KAAK,KAAKxK,SAAd,EAAyB;AACvB4e,IAAAA,OAAO,CAACiqC,IAAR,CAAanE,KAAK,GAAG,KAAR,GAAgB+R,QAAhB,GACd,+BADc,GACoBvqD,OADpB,GAC8B,WAD3C;AAED;AACF;;AACD,IAAMovE,WAAW,GAAG,EAApB;AACA,IAAMC,GAAG,GAAG,GAAZ;;AACA,SAASC,kBAAT,CAA4BrqE,GAA5B,EAAiC1O,KAAjC,EAAwC;AACtC,MAAMg+C,GAAG,GAAGtvC,GAAG,CAAC7J,OAAJ,CAAYi0E,GAAZ,EAAiB94E,KAAjB,CAAZ;AACA,SAAOg+C,GAAG,KAAK,CAAC,CAAT,GAAatvC,GAAG,CAAClR,MAAjB,GAA0BwgD,GAAjC;AACD;;AACD,SAASg7B,gBAAT,CAA0Bj2D,GAA1B,EAA+BrU,GAA/B,EAAoC;AAClC,MAAIA,GAAG,KAAKmqE,WAAZ,EAAyB;AACvB,WAAO91D,GAAP;AACD;;AACD,MAAIgoB,GAAG,GAAG,CAAV;AACA,MAAIiT,GAAG,GAAG+6B,kBAAkB,CAACrqE,GAAD,EAAMq8B,GAAN,CAA5B;;AACA,SAAOhoB,GAAG,IAAIi7B,GAAG,GAAGjT,GAApB,EAAyB;AACvBhoB,IAAAA,GAAG,GAAGA,GAAG,CAACrU,GAAG,CAACwW,MAAJ,CAAW6lB,GAAX,EAAgBiT,GAAG,GAAGjT,GAAtB,CAAD,CAAT;AACAA,IAAAA,GAAG,GAAGiT,GAAG,GAAG,CAAZ;AACAA,IAAAA,GAAG,GAAG+6B,kBAAkB,CAACrqE,GAAD,EAAMq8B,GAAN,CAAxB;AACD;;AACD,SAAOhoB,GAAP;AACD;;AACD,SAASk2D,WAAT,CAAqBnqE,GAArB,EAA0B;AACxB,SAAOA,GAAG,CAACkf,MAAJ,CAAW,CAAX,EAAckrD,WAAd,KAA8BpqE,GAAG,CAACi1B,KAAJ,CAAU,CAAV,CAArC;AACD;;AACD,IAAMo1C,OAAO,GAAG,SAAVA,OAAU,CAACpxE,KAAD;AAAA,SAAW,OAAOA,KAAP,KAAiB,WAA5B;AAAA,CAAhB;;;;AACA,IAAMqxE,UAAU,GAAG,SAAbA,UAAa,CAACrxE,KAAD;AAAA,SAAW,OAAOA,KAAP,KAAiB,UAA5B;AAAA,CAAnB;;;;AACA,IAAMsxE,SAAS,GAAG,SAAZA,SAAY,CAAC14D,CAAD,EAAI7gB,CAAJ,EAAU;AAC1B,MAAI6gB,CAAC,CAACrkB,IAAF,KAAWwD,CAAC,CAACxD,IAAjB,EAAuB;AACrB,WAAO,KAAP;AACD;;AAHyB,6CAIPqkB,CAJO;AAAA;;AAAA;AAI1B,wDAAsB;AAAA,UAAX/f,IAAW;;AACpB,UAAI,CAACd,CAAC,CAACoe,GAAF,CAAMtd,IAAN,CAAL,EAAkB;AAChB,eAAO,KAAP;AACD;AACF;AARyB;AAAA;AAAA;AAAA;AAAA;;AAS1B,SAAO,IAAP;AACD,CAVD;;;;AAWA,SAAS04E,aAAT,CAAuBj5E,CAAvB,EAA0B;AACxB,SAAOA,CAAC,CAACrD,IAAF,KAAW,SAAX,IAAwBqD,CAAC,CAACrD,IAAF,KAAW,OAAnC,IAA8CqD,CAAC,CAACrD,IAAF,KAAW,aAAhE;AACD;;AAED,IAAM6O,EAAE,GAAGtL,IAAI,CAACsL,EAAhB;;AACA,IAAM8zB,GAAG,GAAG,IAAI9zB,EAAhB;;AACA,IAAM0tE,KAAK,GAAG55C,GAAG,GAAG9zB,EAApB;;AACA,IAAM2tE,QAAQ,GAAGz1D,MAAM,CAACoM,iBAAxB;;AACA,IAAMspD,WAAW,GAAG5tE,EAAE,GAAG,GAAzB;;AACA,IAAM40B,OAAO,GAAG50B,EAAE,GAAG,CAArB;;AACA,IAAM6tE,UAAU,GAAG7tE,EAAE,GAAG,CAAxB;;AACA,IAAM8tE,aAAa,GAAG9tE,EAAE,GAAG,CAAL,GAAS,CAA/B;;AACA,IAAM+tE,KAAK,GAAGr5E,IAAI,CAACq5E,KAAnB;;AACA,IAAMC,IAAI,GAAGt5E,IAAI,CAACs5E,IAAlB;;;AACA,SAASC,OAAT,CAAiB5jD,KAAjB,EAAwB;AACtB,MAAM6jD,YAAY,GAAGx5E,IAAI,CAACu1C,KAAL,CAAW5f,KAAX,CAArB;AACAA,EAAAA,KAAK,GAAG8jD,YAAY,CAAC9jD,KAAD,EAAQ6jD,YAAR,EAAsB7jD,KAAK,GAAG,IAA9B,CAAZ,GAAkD6jD,YAAlD,GAAiE7jD,KAAzE;AACA,MAAM+jD,SAAS,GAAG15E,IAAI,CAACipC,GAAL,CAAS,EAAT,EAAajpC,IAAI,CAACC,KAAL,CAAWo5E,KAAK,CAAC1jD,KAAD,CAAhB,CAAb,CAAlB;AACA,MAAMgkD,QAAQ,GAAGhkD,KAAK,GAAG+jD,SAAzB;AACA,MAAME,YAAY,GAAGD,QAAQ,IAAI,CAAZ,GAAgB,CAAhB,GAAoBA,QAAQ,IAAI,CAAZ,GAAgB,CAAhB,GAAoBA,QAAQ,IAAI,CAAZ,GAAgB,CAAhB,GAAoB,EAAjF;AACA,SAAOC,YAAY,GAAGF,SAAtB;AACD;;AACD,SAASG,UAAT,CAAoBryE,KAApB,EAA2B;AACzB,MAAMof,MAAM,GAAG,EAAf;AACA,MAAMoiB,IAAI,GAAGhpC,IAAI,CAACgpC,IAAL,CAAUxhC,KAAV,CAAb;AACA,MAAI/J,CAAJ;;AACA,OAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGurC,IAAhB,EAAsBvrC,CAAC,EAAvB,EAA2B;AACzB,QAAI+J,KAAK,GAAG/J,CAAR,KAAc,CAAlB,EAAqB;AACnBmpB,MAAAA,MAAM,CAACpnB,IAAP,CAAY/B,CAAZ;AACAmpB,MAAAA,MAAM,CAACpnB,IAAP,CAAYgI,KAAK,GAAG/J,CAApB;AACD;AACF;;AACD,MAAIurC,IAAI,MAAMA,IAAI,GAAG,CAAb,CAAR,EAAyB;AACvBpiB,IAAAA,MAAM,CAACpnB,IAAP,CAAYwpC,IAAZ;AACD;;AACDpiB,EAAAA,MAAM,CAACqS,IAAP,CAAY,UAAC7Y,CAAD,EAAI7gB,CAAJ;AAAA,WAAU6gB,CAAC,GAAG7gB,CAAd;AAAA,GAAZ,EAA6BiqB,GAA7B;AACA,SAAO5C,MAAP;AACD;;AACD,SAASkzD,QAAT,CAAkBC,CAAlB,EAAqB;AACnB,SAAO,CAACvrE,KAAK,CAACF,UAAU,CAACyrE,CAAD,CAAX,CAAN,IAAyBvO,QAAQ,CAACuO,CAAD,CAAxC;AACD;;AACD,SAASN,YAAT,CAAsBzuE,CAAtB,EAAyBC,CAAzB,EAA4B0rC,OAA5B,EAAqC;AACnC,SAAO32C,IAAI,CAACs5B,GAAL,CAAStuB,CAAC,GAAGC,CAAb,IAAkB0rC,OAAzB;AACD;;AACD,SAASqjC,WAAT,CAAqBhvE,CAArB,EAAwB2rC,OAAxB,EAAiC;AAC/B,MAAMsjC,OAAO,GAAGj6E,IAAI,CAACu1C,KAAL,CAAWvqC,CAAX,CAAhB;AACA,SAASivE,OAAO,GAAGtjC,OAAX,IAAuB3rC,CAAxB,IAAgCivE,OAAO,GAAGtjC,OAAX,IAAuB3rC,CAA7D;AACD;;AACD,SAASkvE,kBAAT,CAA4B3vC,KAA5B,EAAmCj4B,MAAnC,EAA2C6vC,QAA3C,EAAqD;AACnD,MAAI1kD,CAAJ,EAAOgxB,IAAP,EAAajnB,KAAb;;AACA,OAAK/J,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAG8b,KAAK,CAACttC,MAAzB,EAAiCQ,CAAC,GAAGgxB,IAArC,EAA2ChxB,CAAC,EAA5C,EAAgD;AAC9C+J,IAAAA,KAAK,GAAG+iC,KAAK,CAAC9sC,CAAD,CAAL,CAAS0kD,QAAT,CAAR;;AACA,QAAI,CAAC3zC,KAAK,CAAChH,KAAD,CAAV,EAAmB;AACjB8K,MAAAA,MAAM,CAAC7K,GAAP,GAAazH,IAAI,CAACyH,GAAL,CAAS6K,MAAM,CAAC7K,GAAhB,EAAqBD,KAArB,CAAb;AACA8K,MAAAA,MAAM,CAAC5K,GAAP,GAAa1H,IAAI,CAAC0H,GAAL,CAAS4K,MAAM,CAAC5K,GAAhB,EAAqBF,KAArB,CAAb;AACD;AACF;AACF;;AACD,SAAS2yE,SAAT,CAAmBC,OAAnB,EAA4B;AAC1B,SAAOA,OAAO,IAAI9uE,EAAE,GAAG,GAAT,CAAd;AACD;;AACD,SAAS+uE,SAAT,CAAmBC,OAAnB,EAA4B;AAC1B,SAAOA,OAAO,IAAI,MAAMhvE,EAAV,CAAd;AACD;;AACD,SAASivE,cAAT,CAAwBvvE,CAAxB,EAA2B;AACzB,MAAI,CAAC8rE,cAAc,CAAC9rE,CAAD,CAAnB,EAAwB;AACtB;AACD;;AACD,MAAIlL,CAAC,GAAG,CAAR;AACA,MAAI8nD,CAAC,GAAG,CAAR;;AACA,SAAO5nD,IAAI,CAACu1C,KAAL,CAAWvqC,CAAC,GAAGlL,CAAf,IAAoBA,CAApB,KAA0BkL,CAAjC,EAAoC;AAClClL,IAAAA,CAAC,IAAI,EAAL;AACA8nD,IAAAA,CAAC;AACF;;AACD,SAAOA,CAAP;AACD;;AACD,SAAS4yB,iBAAT,CAA2BC,WAA3B,EAAwCC,UAAxC,EAAoD;AAClD,MAAMC,mBAAmB,GAAGD,UAAU,CAAC1vE,CAAX,GAAeyvE,WAAW,CAACzvE,CAAvD;AACA,MAAM4vE,mBAAmB,GAAGF,UAAU,CAACzvE,CAAX,GAAewvE,WAAW,CAACxvE,CAAvD;AACA,MAAM4vE,wBAAwB,GAAG76E,IAAI,CAACgpC,IAAL,CAAU2xC,mBAAmB,GAAGA,mBAAtB,GAA4CC,mBAAmB,GAAGA,mBAA5E,CAAjC;AACA,MAAI96C,KAAK,GAAG9/B,IAAI,CAAC86E,KAAL,CAAWF,mBAAX,EAAgCD,mBAAhC,CAAZ;;AACA,MAAI76C,KAAK,GAAI,CAAC,GAAD,GAAOx0B,EAApB,EAAyB;AACvBw0B,IAAAA,KAAK,IAAIV,GAAT;AACD;;AACD,SAAO;AACLU,IAAAA,KAAK,EAALA,KADK;AAEL7mB,IAAAA,QAAQ,EAAE4hE;AAFL,GAAP;AAID;;AACD,SAASE,qBAAT,CAA+BnyC,GAA/B,EAAoCC,GAApC,EAAyC;AACvC,SAAO7oC,IAAI,CAACgpC,IAAL,CAAUhpC,IAAI,CAACipC,GAAL,CAASJ,GAAG,CAAC79B,CAAJ,GAAQ49B,GAAG,CAAC59B,CAArB,EAAwB,CAAxB,IAA6BhL,IAAI,CAACipC,GAAL,CAASJ,GAAG,CAAC59B,CAAJ,GAAQ29B,GAAG,CAAC39B,CAArB,EAAwB,CAAxB,CAAvC,CAAP;AACD;;AACD,SAAS+vE,UAAT,CAAoB56D,CAApB,EAAuB7gB,CAAvB,EAA0B;AACxB,SAAO,CAAC6gB,CAAC,GAAG7gB,CAAJ,GAAQy5E,KAAT,IAAkB55C,GAAlB,GAAwB9zB,EAA/B;AACD;;AACD,SAAS2vE,eAAT,CAAyB76D,CAAzB,EAA4B;AAC1B,SAAO,CAACA,CAAC,GAAGgf,GAAJ,GAAUA,GAAX,IAAkBA,GAAzB;AACD;;AACD,SAAS87C,aAAT,CAAuBp7C,KAAvB,EAA8BrgC,KAA9B,EAAqCC,GAArC,EAA0Cy7E,qBAA1C,EAAiE;AAC/D,MAAM/6D,CAAC,GAAG66D,eAAe,CAACn7C,KAAD,CAAzB;;AACA,MAAMjgC,CAAC,GAAGo7E,eAAe,CAACx7E,KAAD,CAAzB;;AACA,MAAMK,CAAC,GAAGm7E,eAAe,CAACv7E,GAAD,CAAzB;;AACA,MAAM07E,YAAY,GAAGH,eAAe,CAACp7E,CAAC,GAAGugB,CAAL,CAApC;;AACA,MAAMi7D,UAAU,GAAGJ,eAAe,CAACn7E,CAAC,GAAGsgB,CAAL,CAAlC;;AACA,MAAMk7D,YAAY,GAAGL,eAAe,CAAC76D,CAAC,GAAGvgB,CAAL,CAApC;;AACA,MAAM07E,UAAU,GAAGN,eAAe,CAAC76D,CAAC,GAAGtgB,CAAL,CAAlC;;AACA,SAAOsgB,CAAC,KAAKvgB,CAAN,IAAWugB,CAAC,KAAKtgB,CAAjB,IAAuBq7E,qBAAqB,IAAIt7E,CAAC,KAAKC,CAAtD,IACDs7E,YAAY,GAAGC,UAAf,IAA6BC,YAAY,GAAGC,UADlD;AAED;;AACD,SAASC,WAAT,CAAqBh0E,KAArB,EAA4BC,GAA5B,EAAiCC,GAAjC,EAAsC;AACpC,SAAO1H,IAAI,CAAC0H,GAAL,CAASD,GAAT,EAAczH,IAAI,CAACyH,GAAL,CAASC,GAAT,EAAcF,KAAd,CAAd,CAAP;AACD;;AACD,SAASi0E,WAAT,CAAqBj0E,KAArB,EAA4B;AAC1B,SAAOg0E,WAAW,CAACh0E,KAAD,EAAQ,CAAC,KAAT,EAAgB,KAAhB,CAAlB;AACD;;AACD,SAASk0E,UAAT,CAAoBl0E,KAApB,EAA2B/H,KAA3B,EAAkCC,GAAlC,EAAuD;AAAA,MAAhBi3C,OAAgB,uEAAN,IAAM;AACrD,SAAOnvC,KAAK,IAAIxH,IAAI,CAACyH,GAAL,CAAShI,KAAT,EAAgBC,GAAhB,IAAuBi3C,OAAhC,IAA2CnvC,KAAK,IAAIxH,IAAI,CAAC0H,GAAL,CAASjI,KAAT,EAAgBC,GAAhB,IAAuBi3C,OAAlF;AACD;;AAED,IAAMglC,MAAM,GAAG,SAATA,MAAS,CAACt0D,CAAD;AAAA,SAAOA,CAAC,KAAK,CAAN,IAAWA,CAAC,KAAK,CAAxB;AAAA,CAAf;;AACA,IAAMu0D,SAAS,GAAG,SAAZA,SAAY,CAACv0D,CAAD,EAAIxnB,CAAJ,EAAO+nD,CAAP;AAAA,SAAa,EAAE5nD,IAAI,CAACipC,GAAL,CAAS,CAAT,EAAY,MAAM5hB,CAAC,IAAI,CAAX,CAAZ,IAA6BrnB,IAAI,CAAC0/B,GAAL,CAAS,CAACrY,CAAC,GAAGxnB,CAAL,IAAUu/B,GAAV,GAAgBwoB,CAAzB,CAA/B,CAAb;AAAA,CAAlB;;AACA,IAAMi0B,UAAU,GAAG,SAAbA,UAAa,CAACx0D,CAAD,EAAIxnB,CAAJ,EAAO+nD,CAAP;AAAA,SAAa5nD,IAAI,CAACipC,GAAL,CAAS,CAAT,EAAY,CAAC,EAAD,GAAM5hB,CAAlB,IAAuBrnB,IAAI,CAAC0/B,GAAL,CAAS,CAACrY,CAAC,GAAGxnB,CAAL,IAAUu/B,GAAV,GAAgBwoB,CAAzB,CAAvB,GAAqD,CAAlE;AAAA,CAAnB;;AACA,IAAMz8B,OAAO,GAAG;AACdC,EAAAA,MAAM,EAAE,gBAAA/D,CAAC;AAAA,WAAIA,CAAJ;AAAA,GADK;AAEdy0D,EAAAA,UAAU,EAAE,oBAAAz0D,CAAC;AAAA,WAAIA,CAAC,GAAGA,CAAR;AAAA,GAFC;AAGd00D,EAAAA,WAAW,EAAE,qBAAA10D,CAAC;AAAA,WAAI,CAACA,CAAD,IAAMA,CAAC,GAAG,CAAV,CAAJ;AAAA,GAHA;AAId20D,EAAAA,aAAa,EAAE,uBAAA30D,CAAC;AAAA,WAAK,CAACA,CAAC,IAAI,GAAN,IAAa,CAAd,GAChB,MAAMA,CAAN,GAAUA,CADM,GAEhB,CAAC,GAAD,IAAS,EAAEA,CAAH,IAASA,CAAC,GAAG,CAAb,IAAkB,CAA1B,CAFY;AAAA,GAJF;AAOd40D,EAAAA,WAAW,EAAE,qBAAA50D,CAAC;AAAA,WAAIA,CAAC,GAAGA,CAAJ,GAAQA,CAAZ;AAAA,GAPA;AAQd60D,EAAAA,YAAY,EAAE,sBAAA70D,CAAC;AAAA,WAAI,CAACA,CAAC,IAAI,CAAN,IAAWA,CAAX,GAAeA,CAAf,GAAmB,CAAvB;AAAA,GARD;AASd80D,EAAAA,cAAc,EAAE,wBAAA90D,CAAC;AAAA,WAAK,CAACA,CAAC,IAAI,GAAN,IAAa,CAAd,GACjB,MAAMA,CAAN,GAAUA,CAAV,GAAcA,CADG,GAEjB,OAAO,CAACA,CAAC,IAAI,CAAN,IAAWA,CAAX,GAAeA,CAAf,GAAmB,CAA1B,CAFa;AAAA,GATH;AAYd+0D,EAAAA,WAAW,EAAE,qBAAA/0D,CAAC;AAAA,WAAIA,CAAC,GAAGA,CAAJ,GAAQA,CAAR,GAAYA,CAAhB;AAAA,GAZA;AAadg1D,EAAAA,YAAY,EAAE,sBAAAh1D,CAAC;AAAA,WAAI,EAAE,CAACA,CAAC,IAAI,CAAN,IAAWA,CAAX,GAAeA,CAAf,GAAmBA,CAAnB,GAAuB,CAAzB,CAAJ;AAAA,GAbD;AAcdi1D,EAAAA,cAAc,EAAE,wBAAAj1D,CAAC;AAAA,WAAK,CAACA,CAAC,IAAI,GAAN,IAAa,CAAd,GACjB,MAAMA,CAAN,GAAUA,CAAV,GAAcA,CAAd,GAAkBA,CADD,GAEjB,CAAC,GAAD,IAAQ,CAACA,CAAC,IAAI,CAAN,IAAWA,CAAX,GAAeA,CAAf,GAAmBA,CAAnB,GAAuB,CAA/B,CAFa;AAAA,GAdH;AAiBdk1D,EAAAA,WAAW,EAAE,qBAAAl1D,CAAC;AAAA,WAAIA,CAAC,GAAGA,CAAJ,GAAQA,CAAR,GAAYA,CAAZ,GAAgBA,CAApB;AAAA,GAjBA;AAkBdm1D,EAAAA,YAAY,EAAE,sBAAAn1D,CAAC;AAAA,WAAI,CAACA,CAAC,IAAI,CAAN,IAAWA,CAAX,GAAeA,CAAf,GAAmBA,CAAnB,GAAuBA,CAAvB,GAA2B,CAA/B;AAAA,GAlBD;AAmBdo1D,EAAAA,cAAc,EAAE,wBAAAp1D,CAAC;AAAA,WAAK,CAACA,CAAC,IAAI,GAAN,IAAa,CAAd,GACjB,MAAMA,CAAN,GAAUA,CAAV,GAAcA,CAAd,GAAkBA,CAAlB,GAAsBA,CADL,GAEjB,OAAO,CAACA,CAAC,IAAI,CAAN,IAAWA,CAAX,GAAeA,CAAf,GAAmBA,CAAnB,GAAuBA,CAAvB,GAA2B,CAAlC,CAFa;AAAA,GAnBH;AAsBdq1D,EAAAA,UAAU,EAAE,oBAAAr1D,CAAC;AAAA,WAAI,CAACrnB,IAAI,CAACw/B,GAAL,CAASnY,CAAC,GAAG6Y,OAAb,CAAD,GAAyB,CAA7B;AAAA,GAtBC;AAuBdy8C,EAAAA,WAAW,EAAE,qBAAAt1D,CAAC;AAAA,WAAIrnB,IAAI,CAAC0/B,GAAL,CAASrY,CAAC,GAAG6Y,OAAb,CAAJ;AAAA,GAvBA;AAwBd08C,EAAAA,aAAa,EAAE,uBAAAv1D,CAAC;AAAA,WAAI,CAAC,GAAD,IAAQrnB,IAAI,CAACw/B,GAAL,CAASl0B,EAAE,GAAG+b,CAAd,IAAmB,CAA3B,CAAJ;AAAA,GAxBF;AAyBdw1D,EAAAA,UAAU,EAAE,oBAAAx1D,CAAC;AAAA,WAAKA,CAAC,KAAK,CAAP,GAAY,CAAZ,GAAgBrnB,IAAI,CAACipC,GAAL,CAAS,CAAT,EAAY,MAAM5hB,CAAC,GAAG,CAAV,CAAZ,CAApB;AAAA,GAzBC;AA0Bdy1D,EAAAA,WAAW,EAAE,qBAAAz1D,CAAC;AAAA,WAAKA,CAAC,KAAK,CAAP,GAAY,CAAZ,GAAgB,CAACrnB,IAAI,CAACipC,GAAL,CAAS,CAAT,EAAY,CAAC,EAAD,GAAM5hB,CAAlB,CAAD,GAAwB,CAA5C;AAAA,GA1BA;AA2Bd01D,EAAAA,aAAa,EAAE,uBAAA11D,CAAC;AAAA,WAAIs0D,MAAM,CAACt0D,CAAD,CAAN,GAAYA,CAAZ,GAAgBA,CAAC,GAAG,GAAJ,GAChC,MAAMrnB,IAAI,CAACipC,GAAL,CAAS,CAAT,EAAY,MAAM5hB,CAAC,GAAG,CAAJ,GAAQ,CAAd,CAAZ,CAD0B,GAEhC,OAAO,CAACrnB,IAAI,CAACipC,GAAL,CAAS,CAAT,EAAY,CAAC,EAAD,IAAO5hB,CAAC,GAAG,CAAJ,GAAQ,CAAf,CAAZ,CAAD,GAAkC,CAAzC,CAFY;AAAA,GA3BF;AA8Bd21D,EAAAA,UAAU,EAAE,oBAAA31D,CAAC;AAAA,WAAKA,CAAC,IAAI,CAAN,GAAWA,CAAX,GAAe,EAAErnB,IAAI,CAACgpC,IAAL,CAAU,IAAI3hB,CAAC,GAAGA,CAAlB,IAAuB,CAAzB,CAAnB;AAAA,GA9BC;AA+Bd41D,EAAAA,WAAW,EAAE,qBAAA51D,CAAC;AAAA,WAAIrnB,IAAI,CAACgpC,IAAL,CAAU,IAAI,CAAC3hB,CAAC,IAAI,CAAN,IAAWA,CAAzB,CAAJ;AAAA,GA/BA;AAgCd61D,EAAAA,aAAa,EAAE,uBAAA71D,CAAC;AAAA,WAAK,CAACA,CAAC,IAAI,GAAN,IAAa,CAAd,GAChB,CAAC,GAAD,IAAQrnB,IAAI,CAACgpC,IAAL,CAAU,IAAI3hB,CAAC,GAAGA,CAAlB,IAAuB,CAA/B,CADgB,GAEhB,OAAOrnB,IAAI,CAACgpC,IAAL,CAAU,IAAI,CAAC3hB,CAAC,IAAI,CAAN,IAAWA,CAAzB,IAA8B,CAArC,CAFY;AAAA,GAhCF;AAmCd81D,EAAAA,aAAa,EAAE,uBAAA91D,CAAC;AAAA,WAAIs0D,MAAM,CAACt0D,CAAD,CAAN,GAAYA,CAAZ,GAAgBu0D,SAAS,CAACv0D,CAAD,EAAI,KAAJ,EAAW,GAAX,CAA7B;AAAA,GAnCF;AAoCd+1D,EAAAA,cAAc,EAAE,wBAAA/1D,CAAC;AAAA,WAAIs0D,MAAM,CAACt0D,CAAD,CAAN,GAAYA,CAAZ,GAAgBw0D,UAAU,CAACx0D,CAAD,EAAI,KAAJ,EAAW,GAAX,CAA9B;AAAA,GApCH;AAqCdg2D,EAAAA,gBArCc,4BAqCGh2D,CArCH,EAqCM;AAClB,QAAMxnB,CAAC,GAAG,MAAV;AACA,QAAM+nD,CAAC,GAAG,IAAV;AACA,WAAO+zB,MAAM,CAACt0D,CAAD,CAAN,GAAYA,CAAZ,GACLA,CAAC,GAAG,GAAJ,GACI,MAAMu0D,SAAS,CAACv0D,CAAC,GAAG,CAAL,EAAQxnB,CAAR,EAAW+nD,CAAX,CADnB,GAEI,MAAM,MAAMi0B,UAAU,CAACx0D,CAAC,GAAG,CAAJ,GAAQ,CAAT,EAAYxnB,CAAZ,EAAe+nD,CAAf,CAH5B;AAID,GA5Ca;AA6Cd01B,EAAAA,UA7Cc,sBA6CHj2D,CA7CG,EA6CA;AACZ,QAAMxnB,CAAC,GAAG,OAAV;AACA,WAAOwnB,CAAC,GAAGA,CAAJ,IAAS,CAACxnB,CAAC,GAAG,CAAL,IAAUwnB,CAAV,GAAcxnB,CAAvB,CAAP;AACD,GAhDa;AAiDd09E,EAAAA,WAjDc,uBAiDFl2D,CAjDE,EAiDC;AACb,QAAMxnB,CAAC,GAAG,OAAV;AACA,WAAO,CAACwnB,CAAC,IAAI,CAAN,IAAWA,CAAX,IAAgB,CAACxnB,CAAC,GAAG,CAAL,IAAUwnB,CAAV,GAAcxnB,CAA9B,IAAmC,CAA1C;AACD,GApDa;AAqDd29E,EAAAA,aArDc,yBAqDAn2D,CArDA,EAqDG;AACf,QAAIxnB,CAAC,GAAG,OAAR;;AACA,QAAI,CAACwnB,CAAC,IAAI,GAAN,IAAa,CAAjB,EAAoB;AAClB,aAAO,OAAOA,CAAC,GAAGA,CAAJ,IAAS,CAAC,CAACxnB,CAAC,IAAK,KAAP,IAAiB,CAAlB,IAAuBwnB,CAAvB,GAA2BxnB,CAApC,CAAP,CAAP;AACD;;AACD,WAAO,OAAO,CAACwnB,CAAC,IAAI,CAAN,IAAWA,CAAX,IAAgB,CAAC,CAACxnB,CAAC,IAAK,KAAP,IAAiB,CAAlB,IAAuBwnB,CAAvB,GAA2BxnB,CAA3C,IAAgD,CAAvD,CAAP;AACD,GA3Da;AA4Dd49E,EAAAA,YAAY,EAAE,sBAAAp2D,CAAC;AAAA,WAAI,IAAI8D,OAAO,CAACuyD,aAAR,CAAsB,IAAIr2D,CAA1B,CAAR;AAAA,GA5DD;AA6Ddq2D,EAAAA,aA7Dc,yBA6DAr2D,CA7DA,EA6DG;AACf,QAAMgnD,CAAC,GAAG,MAAV;AACA,QAAM/mD,CAAC,GAAG,IAAV;;AACA,QAAID,CAAC,GAAI,IAAIC,CAAb,EAAiB;AACf,aAAO+mD,CAAC,GAAGhnD,CAAJ,GAAQA,CAAf;AACD;;AACD,QAAIA,CAAC,GAAI,IAAIC,CAAb,EAAiB;AACf,aAAO+mD,CAAC,IAAIhnD,CAAC,IAAK,MAAMC,CAAhB,CAAD,GAAuBD,CAAvB,GAA2B,IAAlC;AACD;;AACD,QAAIA,CAAC,GAAI,MAAMC,CAAf,EAAmB;AACjB,aAAO+mD,CAAC,IAAIhnD,CAAC,IAAK,OAAOC,CAAjB,CAAD,GAAwBD,CAAxB,GAA4B,MAAnC;AACD;;AACD,WAAOgnD,CAAC,IAAIhnD,CAAC,IAAK,QAAQC,CAAlB,CAAD,GAAyBD,CAAzB,GAA6B,QAApC;AACD,GA1Ea;AA2Eds2D,EAAAA,eAAe,EAAE,yBAAAt2D,CAAC;AAAA,WAAKA,CAAC,GAAG,GAAL,GAClB8D,OAAO,CAACsyD,YAAR,CAAqBp2D,CAAC,GAAG,CAAzB,IAA8B,GADZ,GAElB8D,OAAO,CAACuyD,aAAR,CAAsBr2D,CAAC,GAAG,CAAJ,GAAQ,CAA9B,IAAmC,GAAnC,GAAyC,GAF3B;AAAA;AA3EJ,CAAhB;AAgFA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAM9pB,GAAG,GAAG;AAAC,KAAG,CAAJ;AAAO,KAAG,CAAV;AAAa,KAAG,CAAhB;AAAmB,KAAG,CAAtB;AAAyB,KAAG,CAA5B;AAA+B,KAAG,CAAlC;AAAqC,KAAG,CAAxC;AAA2C,KAAG,CAA9C;AAAiD,KAAG,CAApD;AAAuD,KAAG,CAA1D;AAA6DqgF,EAAAA,CAAC,EAAE,EAAhE;AAAoEC,EAAAA,CAAC,EAAE,EAAvE;AAA2EC,EAAAA,CAAC,EAAE,EAA9E;AAAkFC,EAAAA,CAAC,EAAE,EAArF;AAAyFC,EAAAA,CAAC,EAAE,EAA5F;AAAgGC,EAAAA,CAAC,EAAE,EAAnG;AAAuG79D,EAAAA,CAAC,EAAE,EAA1G;AAA8G7gB,EAAAA,CAAC,EAAE,EAAjH;AAAqH+d,EAAAA,CAAC,EAAE,EAAxH;AAA4HgK,EAAAA,CAAC,EAAE,EAA/H;AAAmIxnB,EAAAA,CAAC,EAAE,EAAtI;AAA0Iue,EAAAA,CAAC,EAAE;AAA7I,CAAZ;AACA,IAAM6/D,GAAG,GAAG,kBAAZ;;AACA,IAAMC,EAAE,GAAG,SAALA,EAAK,CAAC5+E,CAAD;AAAA,SAAO2+E,GAAG,CAAC3+E,CAAC,GAAG,GAAL,CAAV;AAAA,CAAX;;AACA,IAAM6+E,EAAE,GAAG,SAALA,EAAK,CAAC7+E,CAAD;AAAA,SAAO2+E,GAAG,CAAC,CAAC3+E,CAAC,GAAG,IAAL,KAAc,CAAf,CAAH,GAAuB2+E,GAAG,CAAC3+E,CAAC,GAAG,GAAL,CAAjC;AAAA,CAAX;;AACA,IAAM8+E,EAAE,GAAG,SAALA,EAAK,CAAC9+E,CAAD;AAAA,SAAS,CAACA,CAAC,GAAG,IAAL,KAAc,CAAf,MAAuBA,CAAC,GAAG,GAA3B,CAAR;AAAA,CAAX;;AACA,SAAS++E,OAAT,CAAiB17D,CAAjB,EAAoB;AACnB,SAAOy7D,EAAE,CAACz7D,CAAC,CAACxjB,CAAH,CAAF,IAAWi/E,EAAE,CAACz7D,CAAC,CAACtjB,CAAH,CAAb,IAAsB++E,EAAE,CAACz7D,CAAC,CAACrjB,CAAH,CAAxB,IAAiC8+E,EAAE,CAACz7D,CAAC,CAACxC,CAAH,CAA1C;AACA;;AACD,SAASm+D,QAAT,CAAkBhwE,GAAlB,EAAuB;AACtB,MAAIjB,GAAG,GAAGiB,GAAG,CAACtR,MAAd;AACA,MAAIk1C,GAAJ;;AACA,MAAI5jC,GAAG,CAAC,CAAD,CAAH,KAAW,GAAf,EAAoB;AACnB,QAAIjB,GAAG,KAAK,CAAR,IAAaA,GAAG,KAAK,CAAzB,EAA4B;AAC3B6kC,MAAAA,GAAG,GAAG;AACL/yC,QAAAA,CAAC,EAAE,MAAM7B,GAAG,CAACgR,GAAG,CAAC,CAAD,CAAJ,CAAH,GAAc,EADlB;AAELjP,QAAAA,CAAC,EAAE,MAAM/B,GAAG,CAACgR,GAAG,CAAC,CAAD,CAAJ,CAAH,GAAc,EAFlB;AAGLhP,QAAAA,CAAC,EAAE,MAAMhC,GAAG,CAACgR,GAAG,CAAC,CAAD,CAAJ,CAAH,GAAc,EAHlB;AAIL6R,QAAAA,CAAC,EAAE9S,GAAG,KAAK,CAAR,GAAY/P,GAAG,CAACgR,GAAG,CAAC,CAAD,CAAJ,CAAH,GAAc,EAA1B,GAA+B;AAJ7B,OAAN;AAMA,KAPD,MAOO,IAAIjB,GAAG,KAAK,CAAR,IAAaA,GAAG,KAAK,CAAzB,EAA4B;AAClC6kC,MAAAA,GAAG,GAAG;AACL/yC,QAAAA,CAAC,EAAE7B,GAAG,CAACgR,GAAG,CAAC,CAAD,CAAJ,CAAH,IAAe,CAAf,GAAmBhR,GAAG,CAACgR,GAAG,CAAC,CAAD,CAAJ,CADpB;AAELjP,QAAAA,CAAC,EAAE/B,GAAG,CAACgR,GAAG,CAAC,CAAD,CAAJ,CAAH,IAAe,CAAf,GAAmBhR,GAAG,CAACgR,GAAG,CAAC,CAAD,CAAJ,CAFpB;AAGLhP,QAAAA,CAAC,EAAEhC,GAAG,CAACgR,GAAG,CAAC,CAAD,CAAJ,CAAH,IAAe,CAAf,GAAmBhR,GAAG,CAACgR,GAAG,CAAC,CAAD,CAAJ,CAHpB;AAIL6R,QAAAA,CAAC,EAAE9S,GAAG,KAAK,CAAR,GAAa/P,GAAG,CAACgR,GAAG,CAAC,CAAD,CAAJ,CAAH,IAAe,CAAf,GAAmBhR,GAAG,CAACgR,GAAG,CAAC,CAAD,CAAJ,CAAnC,GAA+C;AAJ7C,OAAN;AAMA;AACD;;AACD,SAAO4jC,GAAP;AACA;;AACD,SAASxnB,UAAT,CAAmB/H,CAAnB,EAAsB;AACrB,MAAIvE,CAAC,GAAGigE,OAAO,CAAC17D,CAAD,CAAP,GAAau7D,EAAb,GAAkBC,EAA1B;AACA,SAAOx7D,CAAC,GACL,MAAMvE,CAAC,CAACuE,CAAC,CAACxjB,CAAH,CAAP,GAAeif,CAAC,CAACuE,CAAC,CAACtjB,CAAH,CAAhB,GAAwB+e,CAAC,CAACuE,CAAC,CAACrjB,CAAH,CAAzB,IAAkCqjB,CAAC,CAACxC,CAAF,GAAM,GAAN,GAAY/B,CAAC,CAACuE,CAAC,CAACxC,CAAH,CAAb,GAAqB,EAAvD,CADK,GAELwC,CAFH;AAGA;;AACD,SAAS2yB,KAAT,CAAe3yB,CAAf,EAAkB;AACjB,SAAOA,CAAC,GAAG,GAAJ,GAAU,CAAjB;AACA;;AACD,IAAM47D,GAAG,GAAG,SAANA,GAAM,CAAC57D,CAAD,EAAIuL,CAAJ,EAAO6e,CAAP;AAAA,SAAahtC,IAAI,CAAC0H,GAAL,CAAS1H,IAAI,CAACyH,GAAL,CAASmb,CAAT,EAAYoqB,CAAZ,CAAT,EAAyB7e,CAAzB,CAAb;AAAA,CAAZ;;AACA,SAASswD,GAAT,CAAa77D,CAAb,EAAgB;AACf,SAAO47D,GAAG,CAACjpC,KAAK,CAAC3yB,CAAC,GAAG,IAAL,CAAN,EAAkB,CAAlB,EAAqB,GAArB,CAAV;AACA;;AACD,SAAS87D,GAAT,CAAa97D,CAAb,EAAgB;AACf,SAAO47D,GAAG,CAACjpC,KAAK,CAAC3yB,CAAC,GAAG,GAAL,CAAN,EAAiB,CAAjB,EAAoB,GAApB,CAAV;AACA;;AACD,SAAS+7D,GAAT,CAAa/7D,CAAb,EAAgB;AACf,SAAO47D,GAAG,CAACjpC,KAAK,CAAC3yB,CAAC,GAAG,IAAL,CAAL,GAAkB,GAAnB,EAAwB,CAAxB,EAA2B,CAA3B,CAAV;AACA;;AACD,SAASg8D,GAAT,CAAah8D,CAAb,EAAgB;AACf,SAAO47D,GAAG,CAACjpC,KAAK,CAAC3yB,CAAC,GAAG,GAAL,CAAN,EAAiB,CAAjB,EAAoB,GAApB,CAAV;AACA;;AACD,IAAMi8D,MAAM,GAAG,sGAAf;;AACA,SAASC,QAAT,CAAkBvwE,GAAlB,EAAuB;AACtB,MAAM8/D,CAAC,GAAGwQ,MAAM,CAACE,IAAP,CAAYxwE,GAAZ,CAAV;AACA,MAAI6R,CAAC,GAAG,GAAR;AACA,MAAIhhB,CAAJ,EAAOE,CAAP,EAAUC,CAAV;;AACA,MAAI,CAAC8uE,CAAL,EAAQ;AACP;AACA;;AACD,MAAIA,CAAC,CAAC,CAAD,CAAD,KAASjvE,CAAb,EAAgB;AACf,QAAMwjB,CAAC,GAAG,CAACyrD,CAAC,CAAC,CAAD,CAAZ;AACAjuD,IAAAA,CAAC,GAAG,OAAOiuD,CAAC,CAAC,CAAD,CAAD,GAAOoQ,GAAG,CAAC77D,CAAD,CAAV,GAAgBA,CAAC,GAAG,GAA3B,CAAJ;AACA;;AACDxjB,EAAAA,CAAC,GAAG,CAACivE,CAAC,CAAC,CAAD,CAAN;AACA/uE,EAAAA,CAAC,GAAG,CAAC+uE,CAAC,CAAC,CAAD,CAAN;AACA9uE,EAAAA,CAAC,GAAG,CAAC8uE,CAAC,CAAC,CAAD,CAAN;AACAjvE,EAAAA,CAAC,GAAG,OAAOivE,CAAC,CAAC,CAAD,CAAD,GAAOoQ,GAAG,CAACr/E,CAAD,CAAV,GAAgBA,CAAvB,CAAJ;AACAE,EAAAA,CAAC,GAAG,OAAO+uE,CAAC,CAAC,CAAD,CAAD,GAAOoQ,GAAG,CAACn/E,CAAD,CAAV,GAAgBA,CAAvB,CAAJ;AACAC,EAAAA,CAAC,GAAG,OAAO8uE,CAAC,CAAC,CAAD,CAAD,GAAOoQ,GAAG,CAACl/E,CAAD,CAAV,GAAgBA,CAAvB,CAAJ;AACA,SAAO;AACNH,IAAAA,CAAC,EAAEA,CADG;AAENE,IAAAA,CAAC,EAAEA,CAFG;AAGNC,IAAAA,CAAC,EAAEA,CAHG;AAIN6gB,IAAAA,CAAC,EAAEA;AAJG,GAAP;AAMA;;AACD,SAAS4+D,UAAT,CAAmBp8D,CAAnB,EAAsB;AACrB,SAAOA,CAAC,KACPA,CAAC,CAACxC,CAAF,GAAM,GAAN,kBACWwC,CAAC,CAACxjB,CADb,eACmBwjB,CAAC,CAACtjB,CADrB,eAC2BsjB,CAAC,CAACrjB,CAD7B,eACmCo/E,GAAG,CAAC/7D,CAAC,CAACxC,CAAH,CADtC,uBAEUwC,CAAC,CAACxjB,CAFZ,eAEkBwjB,CAAC,CAACtjB,CAFpB,eAE0BsjB,CAAC,CAACrjB,CAF5B,MADO,CAAR;AAKA;;AACD,IAAM0/E,MAAM,GAAG,8GAAf;;AACA,SAASC,QAAT,CAAkBlyC,CAAlB,EAAqBntC,CAArB,EAAwBsuB,CAAxB,EAA2B;AAC1B,MAAM/N,CAAC,GAAGvgB,CAAC,GAAGG,IAAI,CAACyH,GAAL,CAAS0mB,CAAT,EAAY,IAAIA,CAAhB,CAAd;;AACA,MAAM9P,CAAC,GAAG,SAAJA,CAAI,CAAC07D,CAAD;AAAA,QAAInC,CAAJ,uEAAQ,CAACmC,CAAC,GAAG/sC,CAAC,GAAG,EAAT,IAAe,EAAvB;AAAA,WAA8B7e,CAAC,GAAG/N,CAAC,GAAGpgB,IAAI,CAAC0H,GAAL,CAAS1H,IAAI,CAACyH,GAAL,CAASmwE,CAAC,GAAG,CAAb,EAAgB,IAAIA,CAApB,EAAuB,CAAvB,CAAT,EAAoC,CAAC,CAArC,CAAtC;AAAA,GAAV;;AACA,SAAO,CAACv5D,CAAC,CAAC,CAAD,CAAF,EAAOA,CAAC,CAAC,CAAD,CAAR,EAAaA,CAAC,CAAC,CAAD,CAAd,CAAP;AACA;;AACD,SAAS8gE,QAAT,CAAkBnyC,CAAlB,EAAqBntC,CAArB,EAAwB+iB,CAAxB,EAA2B;AAC1B,MAAMvE,CAAC,GAAG,SAAJA,CAAI,CAAC07D,CAAD;AAAA,QAAInC,CAAJ,uEAAQ,CAACmC,CAAC,GAAG/sC,CAAC,GAAG,EAAT,IAAe,CAAvB;AAAA,WAA6BpqB,CAAC,GAAGA,CAAC,GAAG/iB,CAAJ,GAAQG,IAAI,CAAC0H,GAAL,CAAS1H,IAAI,CAACyH,GAAL,CAASmwE,CAAT,EAAY,IAAIA,CAAhB,EAAmB,CAAnB,CAAT,EAAgC,CAAhC,CAAzC;AAAA,GAAV;;AACA,SAAO,CAACv5D,CAAC,CAAC,CAAD,CAAF,EAAOA,CAAC,CAAC,CAAD,CAAR,EAAaA,CAAC,CAAC,CAAD,CAAd,CAAP;AACA;;AACD,SAAS+gE,QAAT,CAAkBpyC,CAAlB,EAAqB7hC,CAArB,EAAwB5L,CAAxB,EAA2B;AAC1B,MAAMP,GAAG,GAAGkgF,QAAQ,CAAClyC,CAAD,EAAI,CAAJ,EAAO,GAAP,CAApB;AACA,MAAIvvC,CAAJ;;AACA,MAAI0N,CAAC,GAAG5L,CAAJ,GAAQ,CAAZ,EAAe;AACd9B,IAAAA,CAAC,GAAG,KAAK0N,CAAC,GAAG5L,CAAT,CAAJ;AACA4L,IAAAA,CAAC,IAAI1N,CAAL;AACA8B,IAAAA,CAAC,IAAI9B,CAAL;AACA;;AACD,OAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG,CAAhB,EAAmBA,CAAC,EAApB,EAAwB;AACvBuB,IAAAA,GAAG,CAACvB,CAAD,CAAH,IAAU,IAAI0N,CAAJ,GAAQ5L,CAAlB;AACAP,IAAAA,GAAG,CAACvB,CAAD,CAAH,IAAU0N,CAAV;AACA;;AACD,SAAOnM,GAAP;AACA;;AACD,SAASqgF,OAAT,CAAiBz8D,CAAjB,EAAoB;AACnB,MAAM+S,KAAK,GAAG,GAAd;AACA,MAAMv2B,CAAC,GAAGwjB,CAAC,CAACxjB,CAAF,GAAMu2B,KAAhB;AACA,MAAMr2B,CAAC,GAAGsjB,CAAC,CAACtjB,CAAF,GAAMq2B,KAAhB;AACA,MAAMp2B,CAAC,GAAGqjB,CAAC,CAACrjB,CAAF,GAAMo2B,KAAhB;AACA,MAAMjuB,GAAG,GAAG1H,IAAI,CAAC0H,GAAL,CAAStI,CAAT,EAAYE,CAAZ,EAAeC,CAAf,CAAZ;AACA,MAAMkI,GAAG,GAAGzH,IAAI,CAACyH,GAAL,CAASrI,CAAT,EAAYE,CAAZ,EAAeC,CAAf,CAAZ;AACA,MAAM4uB,CAAC,GAAG,CAACzmB,GAAG,GAAGD,GAAP,IAAc,CAAxB;AACA,MAAIulC,CAAJ,EAAOntC,CAAP,EAAUynB,CAAV;;AACA,MAAI5f,GAAG,KAAKD,GAAZ,EAAiB;AAChB6f,IAAAA,CAAC,GAAG5f,GAAG,GAAGD,GAAV;AACA5H,IAAAA,CAAC,GAAGsuB,CAAC,GAAG,GAAJ,GAAU7G,CAAC,IAAI,IAAI5f,GAAJ,GAAUD,GAAd,CAAX,GAAgC6f,CAAC,IAAI5f,GAAG,GAAGD,GAAV,CAArC;AACAulC,IAAAA,CAAC,GAAGtlC,GAAG,KAAKtI,CAAR,GACA,CAACE,CAAC,GAAGC,CAAL,IAAU+nB,CAAX,IAAiBhoB,CAAC,GAAGC,CAAJ,GAAQ,CAAR,GAAY,CAA7B,CADC,GAEDmI,GAAG,KAAKpI,CAAR,GACC,CAACC,CAAC,GAAGH,CAAL,IAAUkoB,CAAV,GAAc,CADf,GAEC,CAACloB,CAAC,GAAGE,CAAL,IAAUgoB,CAAV,GAAc,CAJlB;AAKA0lB,IAAAA,CAAC,GAAGA,CAAC,GAAG,EAAJ,GAAS,GAAb;AACA;;AACD,SAAO,CAACA,CAAC,GAAG,CAAL,EAAQntC,CAAC,IAAI,CAAb,EAAgBsuB,CAAhB,CAAP;AACA;;AACD,SAASmxD,KAAT,CAAejhE,CAAf,EAAkB+B,CAAlB,EAAqB7gB,CAArB,EAAwB+d,CAAxB,EAA2B;AAC1B,SAAO,CACN9b,KAAK,CAACo1E,OAAN,CAAcx2D,CAAd,IACG/B,CAAC,CAAC+B,CAAC,CAAC,CAAD,CAAF,EAAOA,CAAC,CAAC,CAAD,CAAR,EAAaA,CAAC,CAAC,CAAD,CAAd,CADJ,GAEG/B,CAAC,CAAC+B,CAAD,EAAI7gB,CAAJ,EAAO+d,CAAP,CAHE,EAIL/f,GAJK,CAIDmhF,GAJC,CAAP;AAKA;;AACD,SAASa,OAAT,CAAiBvyC,CAAjB,EAAoBntC,CAApB,EAAuBsuB,CAAvB,EAA0B;AACzB,SAAOmxD,KAAK,CAACJ,QAAD,EAAWlyC,CAAX,EAAcntC,CAAd,EAAiBsuB,CAAjB,CAAZ;AACA;;AACD,SAASqxD,OAAT,CAAiBxyC,CAAjB,EAAoB7hC,CAApB,EAAuB5L,CAAvB,EAA0B;AACzB,SAAO+/E,KAAK,CAACF,QAAD,EAAWpyC,CAAX,EAAc7hC,CAAd,EAAiB5L,CAAjB,CAAZ;AACA;;AACD,SAASkgF,OAAT,CAAiBzyC,CAAjB,EAAoBntC,CAApB,EAAuB+iB,CAAvB,EAA0B;AACzB,SAAO08D,KAAK,CAACH,QAAD,EAAWnyC,CAAX,EAAcntC,CAAd,EAAiB+iB,CAAjB,CAAZ;AACA;;AACD,SAAS88D,GAAT,CAAa1yC,CAAb,EAAgB;AACf,SAAO,CAACA,CAAC,GAAG,GAAJ,GAAU,GAAX,IAAkB,GAAzB;AACA;;AACD,SAAS2yC,QAAT,CAAkBpxE,GAAlB,EAAuB;AACtB,MAAM8/D,CAAC,GAAG4Q,MAAM,CAACF,IAAP,CAAYxwE,GAAZ,CAAV;AACA,MAAI6R,CAAC,GAAG,GAAR;AACA,MAAIwC,CAAJ;;AACA,MAAI,CAACyrD,CAAL,EAAQ;AACP;AACA;;AACD,MAAIA,CAAC,CAAC,CAAD,CAAD,KAASzrD,CAAb,EAAgB;AACfxC,IAAAA,CAAC,GAAGiuD,CAAC,CAAC,CAAD,CAAD,GAAOoQ,GAAG,CAAC,CAACpQ,CAAC,CAAC,CAAD,CAAH,CAAV,GAAoBqQ,GAAG,CAAC,CAACrQ,CAAC,CAAC,CAAD,CAAH,CAA3B;AACA;;AACD,MAAMrhC,CAAC,GAAG0yC,GAAG,CAAC,CAACrR,CAAC,CAAC,CAAD,CAAH,CAAb;AACA,MAAM9tB,EAAE,GAAG,CAAC8tB,CAAC,CAAC,CAAD,CAAF,GAAQ,GAAnB;AACA,MAAM7tB,EAAE,GAAG,CAAC6tB,CAAC,CAAC,CAAD,CAAF,GAAQ,GAAnB;;AACA,MAAIA,CAAC,CAAC,CAAD,CAAD,KAAS,KAAb,EAAoB;AACnBzrD,IAAAA,CAAC,GAAG48D,OAAO,CAACxyC,CAAD,EAAIuT,EAAJ,EAAQC,EAAR,CAAX;AACA,GAFD,MAEO,IAAI6tB,CAAC,CAAC,CAAD,CAAD,KAAS,KAAb,EAAoB;AAC1BzrD,IAAAA,CAAC,GAAG68D,OAAO,CAACzyC,CAAD,EAAIuT,EAAJ,EAAQC,EAAR,CAAX;AACA,GAFM,MAEA;AACN59B,IAAAA,CAAC,GAAG28D,OAAO,CAACvyC,CAAD,EAAIuT,EAAJ,EAAQC,EAAR,CAAX;AACA;;AACD,SAAO;AACNphD,IAAAA,CAAC,EAAEwjB,CAAC,CAAC,CAAD,CADE;AAENtjB,IAAAA,CAAC,EAAEsjB,CAAC,CAAC,CAAD,CAFE;AAGNrjB,IAAAA,CAAC,EAAEqjB,CAAC,CAAC,CAAD,CAHE;AAINxC,IAAAA,CAAC,EAAEA;AAJG,GAAP;AAMA;;AACD,SAAS2wD,OAAT,CAAgBnuD,CAAhB,EAAmBg9D,GAAnB,EAAwB;AACvB,MAAI5yC,CAAC,GAAGqyC,OAAO,CAACz8D,CAAD,CAAf;AACAoqB,EAAAA,CAAC,CAAC,CAAD,CAAD,GAAO0yC,GAAG,CAAC1yC,CAAC,CAAC,CAAD,CAAD,GAAO4yC,GAAR,CAAV;AACA5yC,EAAAA,CAAC,GAAGuyC,OAAO,CAACvyC,CAAD,CAAX;AACApqB,EAAAA,CAAC,CAACxjB,CAAF,GAAM4tC,CAAC,CAAC,CAAD,CAAP;AACApqB,EAAAA,CAAC,CAACtjB,CAAF,GAAM0tC,CAAC,CAAC,CAAD,CAAP;AACApqB,EAAAA,CAAC,CAACrjB,CAAF,GAAMytC,CAAC,CAAC,CAAD,CAAP;AACA;;AACD,SAAS6yC,UAAT,CAAmBj9D,CAAnB,EAAsB;AACrB,MAAI,CAACA,CAAL,EAAQ;AACP;AACA;;AACD,MAAMxC,CAAC,GAAGi/D,OAAO,CAACz8D,CAAD,CAAjB;AACA,MAAMoqB,CAAC,GAAG5sB,CAAC,CAAC,CAAD,CAAX;AACA,MAAMvgB,CAAC,GAAG++E,GAAG,CAACx+D,CAAC,CAAC,CAAD,CAAF,CAAb;AACA,MAAM+N,CAAC,GAAGywD,GAAG,CAACx+D,CAAC,CAAC,CAAD,CAAF,CAAb;AACA,SAAOwC,CAAC,CAACxC,CAAF,GAAM,GAAN,kBACI4sB,CADJ,eACUntC,CADV,gBACiBsuB,CADjB,gBACwBwwD,GAAG,CAAC/7D,CAAC,CAACxC,CAAH,CAD3B,uBAEG4sB,CAFH,eAESntC,CAFT,gBAEgBsuB,CAFhB,OAAP;AAGA;;AACD,IAAM2xD,KAAK,GAAG;AACb90E,EAAAA,CAAC,EAAE,MADU;AAEb+0E,EAAAA,CAAC,EAAE,OAFU;AAGbC,EAAAA,CAAC,EAAE,IAHU;AAIbC,EAAAA,CAAC,EAAE,KAJU;AAKbC,EAAAA,CAAC,EAAE,IALU;AAMbC,EAAAA,CAAC,EAAE,QANU;AAObC,EAAAA,CAAC,EAAE,OAPU;AAQbxC,EAAAA,CAAC,EAAE,IARU;AASbyC,EAAAA,CAAC,EAAE,IATU;AAUbC,EAAAA,CAAC,EAAE,IAVU;AAWbzC,EAAAA,CAAC,EAAE,IAXU;AAYbC,EAAAA,CAAC,EAAE,OAZU;AAabC,EAAAA,CAAC,EAAE,OAbU;AAcbwC,EAAAA,CAAC,EAAE,IAdU;AAebC,EAAAA,CAAC,EAAE,UAfU;AAgBbxC,EAAAA,CAAC,EAAE,IAhBU;AAiBbyC,EAAAA,CAAC,EAAE,IAjBU;AAkBbC,EAAAA,CAAC,EAAE,IAlBU;AAmBbC,EAAAA,CAAC,EAAE,IAnBU;AAoBbC,EAAAA,CAAC,EAAE,IApBU;AAqBbC,EAAAA,CAAC,EAAE,OArBU;AAsBb5C,EAAAA,CAAC,EAAE,IAtBU;AAuBb6C,EAAAA,CAAC,EAAE,IAvBU;AAwBbC,EAAAA,CAAC,EAAE,MAxBU;AAyBbC,EAAAA,CAAC,EAAE,IAzBU;AA0BbC,EAAAA,CAAC,EAAE,OA1BU;AA2BbC,EAAAA,CAAC,EAAE;AA3BU,CAAd;AA6BA,IAAM7pD,KAAK,GAAG;AACb8pD,EAAAA,MAAM,EAAE,QADK;AAEbC,EAAAA,WAAW,EAAE,QAFA;AAGbC,EAAAA,IAAI,EAAE,MAHO;AAIbC,EAAAA,SAAS,EAAE,QAJE;AAKbC,EAAAA,IAAI,EAAE,QALO;AAMbC,EAAAA,KAAK,EAAE,QANM;AAObC,EAAAA,MAAM,EAAE,QAPK;AAQbC,EAAAA,KAAK,EAAE,GARM;AASbC,EAAAA,YAAY,EAAE,QATD;AAUbC,EAAAA,EAAE,EAAE,IAVS;AAWbC,EAAAA,OAAO,EAAE,QAXI;AAYbC,EAAAA,IAAI,EAAE,QAZO;AAabC,EAAAA,SAAS,EAAE,QAbE;AAcbC,EAAAA,MAAM,EAAE,QAdK;AAebC,EAAAA,QAAQ,EAAE,QAfG;AAgBbC,EAAAA,OAAO,EAAE,QAhBI;AAiBbC,EAAAA,GAAG,EAAE,QAjBQ;AAkBbC,EAAAA,WAAW,EAAE,QAlBA;AAmBbC,EAAAA,OAAO,EAAE,QAnBI;AAoBbC,EAAAA,OAAO,EAAE,QApBI;AAqBbC,EAAAA,IAAI,EAAE,MArBO;AAsBbC,EAAAA,GAAG,EAAE,IAtBQ;AAuBbC,EAAAA,KAAK,EAAE,MAvBM;AAwBbC,EAAAA,OAAO,EAAE,QAxBI;AAyBbC,EAAAA,IAAI,EAAE,QAzBO;AA0BbC,EAAAA,IAAI,EAAE,MA1BO;AA2BbC,EAAAA,IAAI,EAAE,QA3BO;AA4BbC,EAAAA,MAAM,EAAE,QA5BK;AA6BbC,EAAAA,OAAO,EAAE,QA7BI;AA8BbC,EAAAA,QAAQ,EAAE,QA9BG;AA+BbC,EAAAA,MAAM,EAAE,QA/BK;AAgCbC,EAAAA,KAAK,EAAE,QAhCM;AAiCbC,EAAAA,GAAG,EAAE,QAjCQ;AAkCbC,EAAAA,MAAM,EAAE,QAlCK;AAmCbC,EAAAA,MAAM,EAAE,QAnCK;AAoCbC,EAAAA,IAAI,EAAE,QApCO;AAqCbC,EAAAA,KAAK,EAAE,QArCM;AAsCbC,EAAAA,KAAK,EAAE,QAtCM;AAuCbC,EAAAA,GAAG,EAAE,MAvCQ;AAwCbC,EAAAA,MAAM,EAAE,QAxCK;AAyCbC,EAAAA,MAAM,EAAE,QAzCK;AA0CbC,EAAAA,QAAQ,EAAE,MA1CG;AA2CbC,EAAAA,MAAM,EAAE,QA3CK;AA4CbC,EAAAA,MAAM,EAAE,QA5CK;AA6CbC,EAAAA,QAAQ,EAAE,QA7CG;AA8CbC,EAAAA,QAAQ,EAAE,QA9CG;AA+CbC,EAAAA,QAAQ,EAAE,QA/CG;AAgDbC,EAAAA,QAAQ,EAAE,QAhDG;AAiDbC,EAAAA,MAAM,EAAE,QAjDK;AAkDbC,EAAAA,OAAO,EAAE,QAlDI;AAmDbC,EAAAA,SAAS,EAAE,QAnDE;AAoDbC,EAAAA,GAAG,EAAE,QApDQ;AAqDbC,EAAAA,MAAM,EAAE,QArDK;AAsDbC,EAAAA,GAAG,EAAE,QAtDQ;AAuDbC,EAAAA,GAAG,EAAE,MAvDQ;AAwDbC,EAAAA,KAAK,EAAE,QAxDM;AAyDbC,EAAAA,GAAG,EAAE,QAzDQ;AA0DbC,EAAAA,OAAO,EAAE,QA1DI;AA2DbC,EAAAA,MAAM,EAAE,QA3DK;AA4DbC,EAAAA,OAAO,EAAE,QA5DI;AA6DbC,EAAAA,KAAK,EAAE,QA7DM;AA8DbC,EAAAA,IAAI,EAAE,QA9DO;AA+DbC,EAAAA,KAAK,EAAE,QA/DM;AAgEbC,EAAAA,MAAM,EAAE,QAhEK;AAiEbC,EAAAA,SAAS,EAAE,QAjEE;AAkEbC,EAAAA,OAAO,EAAE,QAlEI;AAmEbC,EAAAA,UAAU,EAAE,QAnEC;AAoEbC,EAAAA,GAAG,EAAE,QApEQ;AAqEbC,EAAAA,IAAI,EAAE,QArEO;AAsEbC,EAAAA,KAAK,EAAE,QAtEM;AAuEbC,EAAAA,SAAS,EAAE,QAvEE;AAwEbC,EAAAA,IAAI,EAAE,QAxEO;AAyEbC,EAAAA,IAAI,EAAE,QAzEO;AA0EbC,EAAAA,IAAI,EAAE,QA1EO;AA2EbC,EAAAA,IAAI,EAAE,QA3EO;AA4EbC,EAAAA,MAAM,EAAE,QA5EK;AA6EbC,EAAAA,MAAM,EAAE,QA7EK;AA8EbC,EAAAA,MAAM,EAAE,QA9EK;AA+EbC,EAAAA,KAAK,EAAE,QA/EM;AAgFbC,EAAAA,KAAK,EAAE,QAhFM;AAiFbC,EAAAA,OAAO,EAAE,QAjFI;AAkFbC,EAAAA,GAAG,EAAE,QAlFQ;AAmFbC,EAAAA,IAAI,EAAE,MAnFO;AAoFbC,EAAAA,OAAO,EAAE,QApFI;AAqFbC,EAAAA,GAAG,EAAE,QArFQ;AAsFbC,EAAAA,MAAM,EAAE,QAtFK;AAuFbC,EAAAA,KAAK,EAAE,QAvFM;AAwFbC,EAAAA,UAAU,EAAE,QAxFC;AAyFbC,EAAAA,GAAG,EAAE,IAzFQ;AA0FbC,EAAAA,KAAK,EAAE,QA1FM;AA2FbC,EAAAA,MAAM,EAAE,QA3FK;AA4FbC,EAAAA,MAAM,EAAE,QA5FK;AA6FbC,EAAAA,IAAI,EAAE,QA7FO;AA8FbC,EAAAA,SAAS,EAAE,MA9FE;AA+FbC,EAAAA,GAAG,EAAE,QA/FQ;AAgGbC,EAAAA,QAAQ,EAAE,QAhGG;AAiGbC,EAAAA,UAAU,EAAE,QAjGC;AAkGbC,EAAAA,OAAO,EAAE,QAlGI;AAmGbC,EAAAA,QAAQ,EAAE,QAnGG;AAoGbC,EAAAA,OAAO,EAAE,QApGI;AAqGbC,EAAAA,UAAU,EAAE,QArGC;AAsGbC,EAAAA,IAAI,EAAE,IAtGO;AAuGbC,EAAAA,MAAM,EAAE,QAvGK;AAwGbC,EAAAA,IAAI,EAAE,QAxGO;AAyGbC,EAAAA,OAAO,EAAE,QAzGI;AA0GbC,EAAAA,KAAK,EAAE,QA1GM;AA2GbC,EAAAA,OAAO,EAAE,QA3GI;AA4GbC,EAAAA,IAAI,EAAE,QA5GO;AA6GbC,EAAAA,SAAS,EAAE,QA7GE;AA8GbC,EAAAA,MAAM,EAAE,QA9GK;AA+GbC,EAAAA,KAAK,EAAE,QA/GM;AAgHbC,EAAAA,UAAU,EAAE,QAhHC;AAiHbC,EAAAA,SAAS,EAAE,QAjHE;AAkHbC,EAAAA,OAAO,EAAE,QAlHI;AAmHbC,EAAAA,IAAI,EAAE,QAnHO;AAoHbC,EAAAA,GAAG,EAAE,QApHQ;AAqHbC,EAAAA,IAAI,EAAE,QArHO;AAsHbC,EAAAA,OAAO,EAAE,QAtHI;AAuHbC,EAAAA,KAAK,EAAE,QAvHM;AAwHbC,EAAAA,WAAW,EAAE,QAxHA;AAyHbC,EAAAA,EAAE,EAAE,QAzHS;AA0HbC,EAAAA,QAAQ,EAAE,QA1HG;AA2HbC,EAAAA,KAAK,EAAE,QA3HM;AA4HbC,EAAAA,SAAS,EAAE,QA5HE;AA6HbC,EAAAA,KAAK,EAAE,QA7HM;AA8HbC,EAAAA,SAAS,EAAE,QA9HE;AA+HbC,EAAAA,KAAK,EAAE,QA/HM;AAgIbC,EAAAA,OAAO,EAAE,QAhII;AAiIbC,EAAAA,KAAK,EAAE,QAjIM;AAkIbC,EAAAA,MAAM,EAAE,QAlIK;AAmIbC,EAAAA,KAAK,EAAE,QAnIM;AAoIbC,EAAAA,GAAG,EAAE,QApIQ;AAqIbC,EAAAA,IAAI,EAAE,QArIO;AAsIbC,EAAAA,IAAI,EAAE,QAtIO;AAuIbC,EAAAA,IAAI,EAAE,QAvIO;AAwIbC,EAAAA,QAAQ,EAAE,MAxIG;AAyIbC,EAAAA,MAAM,EAAE,QAzIK;AA0IbC,EAAAA,GAAG,EAAE,QA1IQ;AA2IbC,EAAAA,GAAG,EAAE,MA3IQ;AA4IbC,EAAAA,KAAK,EAAE,QA5IM;AA6IbC,EAAAA,MAAM,EAAE,QA7IK;AA8IbC,EAAAA,EAAE,EAAE,QA9IS;AA+IbC,EAAAA,KAAK,EAAE,QA/IM;AAgJbC,EAAAA,GAAG,EAAE,QAhJQ;AAiJbC,EAAAA,IAAI,EAAE,QAjJO;AAkJbC,EAAAA,SAAS,EAAE,QAlJE;AAmJbC,EAAAA,EAAE,EAAE,QAnJS;AAoJbC,EAAAA,KAAK,EAAE;AApJM,CAAd;;AAsJA,SAASC,MAAT,GAAkB;AACjB,MAAMC,QAAQ,GAAG,EAAjB;AACA,MAAMjgF,IAAI,GAAGD,MAAM,CAACC,IAAP,CAAY8sB,KAAZ,CAAb;AACA,MAAMozD,KAAK,GAAGngF,MAAM,CAACC,IAAP,CAAYu1E,KAAZ,CAAd;AACA,MAAIriF,CAAJ,EAAOoqC,CAAP,EAAU+vC,CAAV,EAAa8S,EAAb,EAAiBC,EAAjB;;AACA,OAAKltF,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG8M,IAAI,CAACtN,MAArB,EAA6BQ,CAAC,EAA9B,EAAkC;AACjCitF,IAAAA,EAAE,GAAGC,EAAE,GAAGpgF,IAAI,CAAC9M,CAAD,CAAd;;AACA,SAAKoqC,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG4iD,KAAK,CAACxtF,MAAtB,EAA8B4qC,CAAC,EAA/B,EAAmC;AAClC+vC,MAAAA,CAAC,GAAG6S,KAAK,CAAC5iD,CAAD,CAAT;AACA8iD,MAAAA,EAAE,GAAGA,EAAE,CAACpmF,OAAH,CAAWqzE,CAAX,EAAckI,KAAK,CAAClI,CAAD,CAAnB,CAAL;AACA;;AACDA,IAAAA,CAAC,GAAG57E,QAAQ,CAACq7B,KAAK,CAACqzD,EAAD,CAAN,EAAY,EAAZ,CAAZ;AACAF,IAAAA,QAAQ,CAACG,EAAD,CAAR,GAAe,CAAC/S,CAAC,IAAI,EAAL,GAAU,IAAX,EAAiBA,CAAC,IAAI,CAAL,GAAS,IAA1B,EAAgCA,CAAC,GAAG,IAApC,CAAf;AACA;;AACD,SAAO4S,QAAP;AACA;;AACD,IAAII,OAAJ;;AACA,SAASC,SAAT,CAAmBt8E,GAAnB,EAAwB;AACvB,MAAI,CAACq8E,OAAL,EAAc;AACbA,IAAAA,OAAO,GAAGL,MAAM,EAAhB;AACAK,IAAAA,OAAO,CAAC1gE,WAAR,GAAsB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAtB;AACA;;AACD,MAAM9J,CAAC,GAAGwqE,OAAO,CAACr8E,GAAG,CAAC5H,WAAJ,EAAD,CAAjB;AACA,SAAOyZ,CAAC,IAAI;AACXhhB,IAAAA,CAAC,EAAEghB,CAAC,CAAC,CAAD,CADO;AAEX9gB,IAAAA,CAAC,EAAE8gB,CAAC,CAAC,CAAD,CAFO;AAGX7gB,IAAAA,CAAC,EAAE6gB,CAAC,CAAC,CAAD,CAHO;AAIXA,IAAAA,CAAC,EAAEA,CAAC,CAACnjB,MAAF,KAAa,CAAb,GAAiBmjB,CAAC,CAAC,CAAD,CAAlB,GAAwB;AAJhB,GAAZ;AAMA;;AACD,SAAS0qE,MAAT,CAAgBloE,CAAhB,EAAmBnlB,CAAnB,EAAsBkD,KAAtB,EAA6B;AAC5B,MAAIiiB,CAAJ,EAAO;AACN,QAAImoE,GAAG,GAAG1L,OAAO,CAACz8D,CAAD,CAAjB;AACAmoE,IAAAA,GAAG,CAACttF,CAAD,CAAH,GAASuC,IAAI,CAAC0H,GAAL,CAAS,CAAT,EAAY1H,IAAI,CAACyH,GAAL,CAASsjF,GAAG,CAACttF,CAAD,CAAH,GAASstF,GAAG,CAACttF,CAAD,CAAH,GAASkD,KAA3B,EAAkClD,CAAC,KAAK,CAAN,GAAU,GAAV,GAAgB,CAAlD,CAAZ,CAAT;AACAstF,IAAAA,GAAG,GAAGxL,OAAO,CAACwL,GAAD,CAAb;AACAnoE,IAAAA,CAAC,CAACxjB,CAAF,GAAM2rF,GAAG,CAAC,CAAD,CAAT;AACAnoE,IAAAA,CAAC,CAACtjB,CAAF,GAAMyrF,GAAG,CAAC,CAAD,CAAT;AACAnoE,IAAAA,CAAC,CAACrjB,CAAF,GAAMwrF,GAAG,CAAC,CAAD,CAAT;AACA;AACD;;AACD,SAASC,KAAT,CAAepoE,CAAf,EAAkBg/B,KAAlB,EAAyB;AACxB,SAAOh/B,CAAC,GAAG,SAAcg/B,KAAK,IAAI,EAAvB,EAA2Bh/B,CAA3B,CAAH,GAAmCA,CAA3C;AACA;;AACD,SAASqoE,UAAT,CAAoB94E,KAApB,EAA2B;AAC1B,MAAIyQ,CAAC,GAAG;AAACxjB,IAAAA,CAAC,EAAE,CAAJ;AAAOE,IAAAA,CAAC,EAAE,CAAV;AAAaC,IAAAA,CAAC,EAAE,CAAhB;AAAmB6gB,IAAAA,CAAC,EAAE;AAAtB,GAAR;;AACA,MAAI5e,KAAK,CAACo1E,OAAN,CAAczkE,KAAd,CAAJ,EAA0B;AACzB,QAAIA,KAAK,CAAClV,MAAN,IAAgB,CAApB,EAAuB;AACtB2lB,MAAAA,CAAC,GAAG;AAACxjB,QAAAA,CAAC,EAAE+S,KAAK,CAAC,CAAD,CAAT;AAAc7S,QAAAA,CAAC,EAAE6S,KAAK,CAAC,CAAD,CAAtB;AAA2B5S,QAAAA,CAAC,EAAE4S,KAAK,CAAC,CAAD,CAAnC;AAAwCiO,QAAAA,CAAC,EAAE;AAA3C,OAAJ;;AACA,UAAIjO,KAAK,CAAClV,MAAN,GAAe,CAAnB,EAAsB;AACrB2lB,QAAAA,CAAC,CAACxC,CAAF,GAAMs+D,GAAG,CAACvsE,KAAK,CAAC,CAAD,CAAN,CAAT;AACA;AACD;AACD,GAPD,MAOO;AACNyQ,IAAAA,CAAC,GAAGooE,KAAK,CAAC74E,KAAD,EAAQ;AAAC/S,MAAAA,CAAC,EAAE,CAAJ;AAAOE,MAAAA,CAAC,EAAE,CAAV;AAAaC,MAAAA,CAAC,EAAE,CAAhB;AAAmB6gB,MAAAA,CAAC,EAAE;AAAtB,KAAR,CAAT;AACAwC,IAAAA,CAAC,CAACxC,CAAF,GAAMs+D,GAAG,CAAC97D,CAAC,CAACxC,CAAH,CAAT;AACA;;AACD,SAAOwC,CAAP;AACA;;AACD,SAASsoE,aAAT,CAAuB38E,GAAvB,EAA4B;AAC3B,MAAIA,GAAG,CAACkf,MAAJ,CAAW,CAAX,MAAkB,GAAtB,EAA2B;AAC1B,WAAOqxD,QAAQ,CAACvwE,GAAD,CAAf;AACA;;AACD,SAAOoxE,QAAQ,CAACpxE,GAAD,CAAf;AACA;;IACK48E;AACL,iBAAYh5E,KAAZ,EAAmB;AAAA;;AAClB,QAAIA,KAAK,YAAYg5E,KAArB,EAA4B;AAC3B,aAAOh5E,KAAP;AACA;;AACD,QAAM1V,IAAI,WAAU0V,KAAV,CAAV;;AACA,QAAIyQ,CAAJ;;AACA,QAAInmB,IAAI,KAAK,QAAb,EAAuB;AACtBmmB,MAAAA,CAAC,GAAGqoE,UAAU,CAAC94E,KAAD,CAAd;AACA,KAFD,MAEO,IAAI1V,IAAI,KAAK,QAAb,EAAuB;AAC7BmmB,MAAAA,CAAC,GAAG27D,QAAQ,CAACpsE,KAAD,CAAR,IAAmB04E,SAAS,CAAC14E,KAAD,CAA5B,IAAuC+4E,aAAa,CAAC/4E,KAAD,CAAxD;AACA;;AACD,SAAKi5E,IAAL,GAAYxoE,CAAZ;AACA,SAAKyoE,MAAL,GAAc,CAAC,CAACzoE,CAAhB;AACA;;;;SACD,eAAY;AACX,aAAO,KAAKyoE,MAAZ;AACA;;;SACD,eAAU;AACT,UAAIzoE,CAAC,GAAGooE,KAAK,CAAC,KAAKI,IAAN,CAAb;;AACA,UAAIxoE,CAAJ,EAAO;AACNA,QAAAA,CAAC,CAACxC,CAAF,GAAMu+D,GAAG,CAAC/7D,CAAC,CAACxC,CAAH,CAAT;AACA;;AACD,aAAOwC,CAAP;AACA;SACD,aAAQJ,GAAR,EAAa;AACZ,WAAK4oE,IAAL,GAAYH,UAAU,CAACzoE,GAAD,CAAtB;AACA;;;WACD,qBAAY;AACX,aAAO,KAAK6oE,MAAL,GAAcrM,UAAS,CAAC,KAAKoM,IAAN,CAAvB,GAAqC,KAAKA,IAAjD;AACA;;;WACD,qBAAY;AACX,aAAO,KAAKC,MAAL,GAAc1gE,UAAS,CAAC,KAAKygE,IAAN,CAAvB,GAAqC,KAAKA,IAAjD;AACA;;;WACD,qBAAY;AACX,aAAO,KAAKC,MAAL,GAAcxL,UAAS,CAAC,KAAKuL,IAAN,CAAvB,GAAqC,KAAKA,IAAjD;AACA;;;WACD,aAAI9gE,KAAJ,EAAWpuB,MAAX,EAAmB;AAClB,UAAMovF,EAAE,GAAG,IAAX;;AACA,UAAIhhE,KAAJ,EAAW;AACV,YAAME,EAAE,GAAG8gE,EAAE,CAACtsF,GAAd;AACA,YAAMusF,EAAE,GAAGjhE,KAAK,CAACtrB,GAAjB;AACA,YAAIwsF,EAAJ;AACA,YAAM5jC,CAAC,GAAG1rD,MAAM,KAAKsvF,EAAX,GAAgB,GAAhB,GAAsBtvF,MAAhC;AACA,YAAMiP,CAAC,GAAG,IAAIy8C,CAAJ,GAAQ,CAAlB;AACA,YAAMxnC,CAAC,GAAGoK,EAAE,CAACpK,CAAH,GAAOmrE,EAAE,CAACnrE,CAApB;AACA,YAAMqrE,EAAE,GAAG,CAAC,CAACtgF,CAAC,GAAGiV,CAAJ,KAAU,CAAC,CAAX,GAAejV,CAAf,GAAmB,CAACA,CAAC,GAAGiV,CAAL,KAAW,IAAIjV,CAAC,GAAGiV,CAAnB,CAApB,IAA6C,CAA9C,IAAmD,GAA9D;AACAorE,QAAAA,EAAE,GAAG,IAAIC,EAAT;AACAjhE,QAAAA,EAAE,CAACprB,CAAH,GAAO,OAAOqsF,EAAE,GAAGjhE,EAAE,CAACprB,CAAR,GAAYosF,EAAE,GAAGD,EAAE,CAACnsF,CAApB,GAAwB,GAAtC;AACAorB,QAAAA,EAAE,CAAClrB,CAAH,GAAO,OAAOmsF,EAAE,GAAGjhE,EAAE,CAAClrB,CAAR,GAAYksF,EAAE,GAAGD,EAAE,CAACjsF,CAApB,GAAwB,GAAtC;AACAkrB,QAAAA,EAAE,CAACjrB,CAAH,GAAO,OAAOksF,EAAE,GAAGjhE,EAAE,CAACjrB,CAAR,GAAYisF,EAAE,GAAGD,EAAE,CAAChsF,CAApB,GAAwB,GAAtC;AACAirB,QAAAA,EAAE,CAACpK,CAAH,GAAOwnC,CAAC,GAAGp9B,EAAE,CAACpK,CAAP,GAAW,CAAC,IAAIwnC,CAAL,IAAU2jC,EAAE,CAACnrE,CAA/B;AACAkrE,QAAAA,EAAE,CAACtsF,GAAH,GAASwrB,EAAT;AACA;;AACD,aAAO8gE,EAAP;AACA;;;WACD,iBAAQ;AACP,aAAO,IAAIH,KAAJ,CAAU,KAAKnsF,GAAf,CAAP;AACA;;;WACD,eAAMohB,CAAN,EAAS;AACR,WAAKgrE,IAAL,CAAUhrE,CAAV,GAAcs+D,GAAG,CAACt+D,CAAD,CAAjB;AACA,aAAO,IAAP;AACA;;;WACD,iBAAQzf,KAAR,EAAe;AACd,UAAM3B,GAAG,GAAG,KAAKosF,IAAjB;AACApsF,MAAAA,GAAG,CAACohB,CAAJ,IAAS,IAAIzf,KAAb;AACA,aAAO,IAAP;AACA;;;WACD,qBAAY;AACX,UAAM3B,GAAG,GAAG,KAAKosF,IAAjB;AACA,UAAMh9E,GAAG,GAAGmnC,KAAK,CAACv2C,GAAG,CAACI,CAAJ,GAAQ,GAAR,GAAcJ,GAAG,CAACM,CAAJ,GAAQ,IAAtB,GAA6BN,GAAG,CAACO,CAAJ,GAAQ,IAAtC,CAAjB;AACAP,MAAAA,GAAG,CAACI,CAAJ,GAAQJ,GAAG,CAACM,CAAJ,GAAQN,GAAG,CAACO,CAAJ,GAAQ6O,GAAxB;AACA,aAAO,IAAP;AACA;;;WACD,iBAAQzN,KAAR,EAAe;AACd,UAAM3B,GAAG,GAAG,KAAKosF,IAAjB;AACApsF,MAAAA,GAAG,CAACohB,CAAJ,IAAS,IAAIzf,KAAb;AACA,aAAO,IAAP;AACA;;;WACD,kBAAS;AACR,UAAMiiB,CAAC,GAAG,KAAKwoE,IAAf;AACAxoE,MAAAA,CAAC,CAACxjB,CAAF,GAAM,MAAMwjB,CAAC,CAACxjB,CAAd;AACAwjB,MAAAA,CAAC,CAACtjB,CAAF,GAAM,MAAMsjB,CAAC,CAACtjB,CAAd;AACAsjB,MAAAA,CAAC,CAACrjB,CAAF,GAAM,MAAMqjB,CAAC,CAACrjB,CAAd;AACA,aAAO,IAAP;AACA;;;WACD,iBAAQoB,KAAR,EAAe;AACdmqF,MAAAA,MAAM,CAAC,KAAKM,IAAN,EAAY,CAAZ,EAAezqF,KAAf,CAAN;AACA,aAAO,IAAP;AACA;;;WACD,gBAAOA,KAAP,EAAc;AACbmqF,MAAAA,MAAM,CAAC,KAAKM,IAAN,EAAY,CAAZ,EAAe,CAACzqF,KAAhB,CAAN;AACA,aAAO,IAAP;AACA;;;WACD,kBAASA,KAAT,EAAgB;AACfmqF,MAAAA,MAAM,CAAC,KAAKM,IAAN,EAAY,CAAZ,EAAezqF,KAAf,CAAN;AACA,aAAO,IAAP;AACA;;;WACD,oBAAWA,KAAX,EAAkB;AACjBmqF,MAAAA,MAAM,CAAC,KAAKM,IAAN,EAAY,CAAZ,EAAe,CAACzqF,KAAhB,CAAN;AACA,aAAO,IAAP;AACA;;;WACD,gBAAOi/E,GAAP,EAAY;AACX7O,MAAAA,OAAM,CAAC,KAAKqa,IAAN,EAAYxL,GAAZ,CAAN;;AACA,aAAO,IAAP;AACA;;;;;;AAEF,SAAS8L,SAAT,CAAmBv5E,KAAnB,EAA0B;AACzB,SAAO,IAAIg5E,KAAJ,CAAUh5E,KAAV,CAAP;AACA;;AAED,IAAMw5E,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACnkF,KAAD;AAAA,SAAWA,KAAK,YAAYokF,cAAjB,IAAmCpkF,KAAK,YAAYqkF,aAA/D;AAAA,CAA5B;;AACA,SAASvhE,KAAT,CAAe9iB,KAAf,EAAsB;AACpB,SAAOmkF,mBAAmB,CAACnkF,KAAD,CAAnB,GAA6BA,KAA7B,GAAqCkkF,SAAS,CAAClkF,KAAD,CAArD;AACD;;AACD,SAASskF,aAAT,CAAuBtkF,KAAvB,EAA8B;AAC5B,SAAOmkF,mBAAmB,CAACnkF,KAAD,CAAnB,GACHA,KADG,GAEHkkF,SAAS,CAAClkF,KAAD,CAAT,CAAiBukF,QAAjB,CAA0B,GAA1B,EAA+BC,MAA/B,CAAsC,GAAtC,EAA2CrhE,SAA3C,EAFJ;AAGD;;AAED,IAAMsT,SAAS,GAAG3zB,MAAM,CAACqR,MAAP,CAAc,IAAd,CAAlB;;AACA,IAAM+mB,WAAW,GAAGp4B,MAAM,CAACqR,MAAP,CAAc,IAAd,CAApB;;;AACA,SAASswE,UAAT,CAAoBrvE,IAApB,EAA0BzO,GAA1B,EAA+B;AAC7B,MAAI,CAACA,GAAL,EAAU;AACR,WAAOyO,IAAP;AACD;;AACD,MAAMrS,IAAI,GAAG4D,GAAG,CAACk0C,KAAJ,CAAU,GAAV,CAAb;;AACA,OAAK,IAAI5kD,CAAC,GAAG,CAAR,EAAWs8E,CAAC,GAAGxvE,IAAI,CAACtN,MAAzB,EAAiCQ,CAAC,GAAGs8E,CAArC,EAAwC,EAAEt8E,CAA1C,EAA6C;AAC3C,QAAMm6E,CAAC,GAAGrtE,IAAI,CAAC9M,CAAD,CAAd;AACAmf,IAAAA,IAAI,GAAGA,IAAI,CAACg7D,CAAD,CAAJ,KAAYh7D,IAAI,CAACg7D,CAAD,CAAJ,GAAUttE,MAAM,CAACqR,MAAP,CAAc,IAAd,CAAtB,CAAP;AACD;;AACD,SAAOiB,IAAP;AACD;;AACD,SAAS5T,IAAT,CAAakjF,IAAb,EAAmBxqC,KAAnB,EAA0B7/B,MAA1B,EAAkC;AAChC,MAAI,OAAO6/B,KAAP,KAAiB,QAArB,EAA+B;AAC7B,WAAOu2B,KAAK,CAACgU,UAAU,CAACC,IAAD,EAAOxqC,KAAP,CAAX,EAA0B7/B,MAA1B,CAAZ;AACD;;AACD,SAAOo2D,KAAK,CAACgU,UAAU,CAACC,IAAD,EAAO,EAAP,CAAX,EAAuBxqC,KAAvB,CAAZ;AACD;;IACKyqC;AACJ,oBAAYtoC,YAAZ,EAA0B;AAAA;;AACxB,SAAK13B,SAAL,GAAiBnvB,SAAjB;AACA,SAAKe,eAAL,GAAuB,iBAAvB;AACA,SAAKilC,WAAL,GAAmB,iBAAnB;AACA,SAAK1Y,KAAL,GAAa,MAAb;AACA,SAAKxtB,QAAL,GAAgB,EAAhB;;AACA,SAAKwL,gBAAL,GAAwB,UAACwe,OAAD;AAAA,aAAaA,OAAO,CAAC1oB,KAAR,CAAc0oD,QAAd,CAAuBgE,mBAAvB,EAAb;AAAA,KAAxB;;AACA,SAAKtlC,QAAL,GAAgB,EAAhB;AACA,SAAK4nC,MAAL,GAAc,CACZ,WADY,EAEZ,UAFY,EAGZ,OAHY,EAIZ,YAJY,EAKZ,WALY,CAAd;AAOA,SAAKxxD,IAAL,GAAY;AACVC,MAAAA,MAAM,EAAE,oDADE;AAEVE,MAAAA,IAAI,EAAE,EAFI;AAGVsF,MAAAA,KAAK,EAAE,QAHG;AAIVg2C,MAAAA,UAAU,EAAE,GAJF;AAKVn7C,MAAAA,MAAM,EAAE;AALE,KAAZ;AAOA,SAAKkzD,KAAL,GAAa,EAAb;;AACA,SAAKg9B,oBAAL,GAA4B,UAACj6D,GAAD,EAAM7zB,OAAN;AAAA,aAAkBwtF,aAAa,CAACxtF,OAAO,CAACP,eAAT,CAA/B;AAAA,KAA5B;;AACA,SAAKsuF,gBAAL,GAAwB,UAACl6D,GAAD,EAAM7zB,OAAN;AAAA,aAAkBwtF,aAAa,CAACxtF,OAAO,CAAC0kC,WAAT,CAA/B;AAAA,KAAxB;;AACA,SAAKspD,UAAL,GAAkB,UAACn6D,GAAD,EAAM7zB,OAAN;AAAA,aAAkBwtF,aAAa,CAACxtF,OAAO,CAACgsB,KAAT,CAA/B;AAAA,KAAlB;;AACA,SAAKmJ,SAAL,GAAiB,GAAjB;AACA,SAAKmT,WAAL,GAAmB;AACjB9X,MAAAA,IAAI,EAAE,SADW;AAEjBmZ,MAAAA,SAAS,EAAE;AAFM,KAAnB;AAIA,SAAKqiB,mBAAL,GAA2B,IAA3B;AACA,SAAKqF,OAAL,GAAe,IAAf;AACA,SAAKzsB,OAAL,GAAe,IAAf;AACA,SAAKnO,OAAL,GAAe,IAAf;AACA,SAAKx2B,OAAL,GAAe,EAAf;AACA,SAAKgsD,UAAL,GAAkB,IAAlB;AACA,SAAK9+C,KAAL,GAAazO,SAAb;AACA,SAAKK,MAAL,GAAc,EAAd;AACA,SAAK2mC,QAAL,GAAgB,IAAhB;AACA,SAAKrN,uBAAL,GAA+B,IAA/B;AACA,SAAKvK,QAAL,CAAcy3B,YAAd;AACD;;;;WACD,aAAInC,KAAJ,EAAW7/B,MAAX,EAAmB;AACjB,aAAO7Y,IAAG,CAAC,IAAD,EAAO04C,KAAP,EAAc7/B,MAAd,CAAV;AACD;;;WACD,aAAI6/B,KAAJ,EAAW;AACT,aAAOuqC,UAAU,CAAC,IAAD,EAAOvqC,KAAP,CAAjB;AACD;;;WACD,kBAASA,KAAT,EAAgB7/B,MAAhB,EAAwB;AACtB,aAAO7Y,IAAG,CAAC05B,WAAD,EAAcgf,KAAd,EAAqB7/B,MAArB,CAAV;AACD;;;WACD,kBAAS6/B,KAAT,EAAgB7/B,MAAhB,EAAwB;AACtB,aAAO7Y,IAAG,CAACi1B,SAAD,EAAYyjB,KAAZ,EAAmB7/B,MAAnB,CAAV;AACD;;;WACD,eAAM6/B,KAAN,EAAa3kC,IAAb,EAAmB4lC,WAAnB,EAAgCD,UAAhC,EAA4C;AAAA;;AAC1C,UAAM6pC,WAAW,GAAGN,UAAU,CAAC,IAAD,EAAOvqC,KAAP,CAA9B;AACA,UAAM8qC,iBAAiB,GAAGP,UAAU,CAAC,IAAD,EAAOtpC,WAAP,CAApC;AACA,UAAM8pC,WAAW,GAAG,MAAM1vE,IAA1B;AACAzS,MAAAA,MAAM,CAACylD,gBAAP,CAAwBw8B,WAAxB,sEACGE,WADH,EACiB;AACbjlF,QAAAA,KAAK,EAAE+kF,WAAW,CAACxvE,IAAD,CADL;AAEb2vE,QAAAA,QAAQ,EAAE;AAFG,OADjB,0CAKG3vE,IALH,EAKU;AACN+yC,QAAAA,UAAU,EAAE,IADN;AAENlyC,QAAAA,GAFM,iBAEA;AACJ,cAAM2mC,KAAK,GAAG,KAAKkoC,WAAL,CAAd;AACA,cAAMn6E,MAAM,GAAGk6E,iBAAiB,CAAC9pC,UAAD,CAAhC;;AACA,cAAIm0B,QAAQ,CAACtyB,KAAD,CAAZ,EAAqB;AACnB,mBAAO,SAAc,EAAd,EAAkBjyC,MAAlB,EAA0BiyC,KAA1B,CAAP;AACD;;AACD,iBAAO0yB,cAAc,CAAC1yB,KAAD,EAAQjyC,MAAR,CAArB;AACD,SATK;AAUNtJ,QAAAA,GAVM,eAUFxB,KAVE,EAUK;AACT,eAAKilF,WAAL,IAAoBjlF,KAApB;AACD;AAZK,OALV;AAoBD;;;;;;AAEH,IAAI7L,QAAQ,GAAG,IAAIwwF,QAAJ,CAAa;AAC1B5/D,EAAAA,WAAW,EAAE,qBAACxP,IAAD;AAAA,WAAU,CAACA,IAAI,CAAC43B,UAAL,CAAgB,IAAhB,CAAX;AAAA,GADa;AAE1BroB,EAAAA,UAAU,EAAE,oBAACvP,IAAD;AAAA,WAAUA,IAAI,KAAK,QAAnB;AAAA,GAFc;AAG1BqyC,EAAAA,KAAK,EAAE;AACL/iC,IAAAA,SAAS,EAAE;AADN,GAHmB;AAM1Bua,EAAAA,WAAW,EAAE;AACXra,IAAAA,WAAW,EAAE,KADF;AAEXD,IAAAA,UAAU,EAAE;AAFD;AANa,CAAb,CAAf;;;AAYA,SAASqgE,YAAT,CAAsB/wF,IAAtB,EAA4B;AAC1B,MAAI,CAACA,IAAD,IAAS+6E,aAAa,CAAC/6E,IAAI,CAACG,IAAN,CAAtB,IAAqC46E,aAAa,CAAC/6E,IAAI,CAACC,MAAN,CAAtD,EAAqE;AACnE,WAAO,IAAP;AACD;;AACD,SAAO,CAACD,IAAI,CAACyF,KAAL,GAAazF,IAAI,CAACyF,KAAL,GAAa,GAA1B,GAAgC,EAAjC,KACJzF,IAAI,CAACM,MAAL,GAAcN,IAAI,CAACM,MAAL,GAAc,GAA5B,GAAkC,EAD9B,IAELN,IAAI,CAACG,IAFA,GAEO,KAFP,GAGLH,IAAI,CAACC,MAHP;AAID;;AACD,SAAS+wF,YAAT,CAAsBz6D,GAAtB,EAA2B9zB,IAA3B,EAAiC04C,EAAjC,EAAqC81C,OAArC,EAA8CtvC,MAA9C,EAAsD;AACpD,MAAIwjB,SAAS,GAAG1iE,IAAI,CAACk/C,MAAD,CAApB;;AACA,MAAI,CAACwjB,SAAL,EAAgB;AACdA,IAAAA,SAAS,GAAG1iE,IAAI,CAACk/C,MAAD,CAAJ,GAAeprB,GAAG,CAACmtC,WAAJ,CAAgB/hB,MAAhB,EAAwBn8C,KAAnD;AACA21C,IAAAA,EAAE,CAACv3C,IAAH,CAAQ+9C,MAAR;AACD;;AACD,MAAIwjB,SAAS,GAAG8rB,OAAhB,EAAyB;AACvBA,IAAAA,OAAO,GAAG9rB,SAAV;AACD;;AACD,SAAO8rB,OAAP;AACD;;AACD,SAASC,YAAT,CAAsB36D,GAAtB,EAA2Bv2B,IAA3B,EAAiCmxF,aAAjC,EAAgD5uE,KAAhD,EAAuD;AACrDA,EAAAA,KAAK,GAAGA,KAAK,IAAI,EAAjB;AACA,MAAI9f,IAAI,GAAG8f,KAAK,CAAC9f,IAAN,GAAa8f,KAAK,CAAC9f,IAAN,IAAc,EAAtC;AACA,MAAI04C,EAAE,GAAG54B,KAAK,CAAC04B,cAAN,GAAuB14B,KAAK,CAAC04B,cAAN,IAAwB,EAAxD;;AACA,MAAI14B,KAAK,CAACviB,IAAN,KAAeA,IAAnB,EAAyB;AACvByC,IAAAA,IAAI,GAAG8f,KAAK,CAAC9f,IAAN,GAAa,EAApB;AACA04C,IAAAA,EAAE,GAAG54B,KAAK,CAAC04B,cAAN,GAAuB,EAA5B;AACA14B,IAAAA,KAAK,CAACviB,IAAN,GAAaA,IAAb;AACD;;AACDu2B,EAAAA,GAAG,CAAC8tB,IAAJ;AACA9tB,EAAAA,GAAG,CAACv2B,IAAJ,GAAWA,IAAX;AACA,MAAIixF,OAAO,GAAG,CAAd;AACA,MAAMp+D,IAAI,GAAGs+D,aAAa,CAAC9vF,MAA3B;AACA,MAAIQ,CAAJ,EAAOoqC,CAAP,EAAUC,IAAV,EAAgBklD,KAAhB,EAAuBC,WAAvB;;AACA,OAAKxvF,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgxB,IAAhB,EAAsBhxB,CAAC,EAAvB,EAA2B;AACzBuvF,IAAAA,KAAK,GAAGD,aAAa,CAACtvF,CAAD,CAArB;;AACA,QAAIuvF,KAAK,KAAKhwF,SAAV,IAAuBgwF,KAAK,KAAK,IAAjC,IAAyCpW,OAAO,CAACoW,KAAD,CAAP,KAAmB,IAAhE,EAAsE;AACpEH,MAAAA,OAAO,GAAGD,YAAY,CAACz6D,GAAD,EAAM9zB,IAAN,EAAY04C,EAAZ,EAAgB81C,OAAhB,EAAyBG,KAAzB,CAAtB;AACD,KAFD,MAEO,IAAIpW,OAAO,CAACoW,KAAD,CAAX,EAAoB;AACzB,WAAKnlD,CAAC,GAAG,CAAJ,EAAOC,IAAI,GAAGklD,KAAK,CAAC/vF,MAAzB,EAAiC4qC,CAAC,GAAGC,IAArC,EAA2CD,CAAC,EAA5C,EAAgD;AAC9ColD,QAAAA,WAAW,GAAGD,KAAK,CAACnlD,CAAD,CAAnB;;AACA,YAAIolD,WAAW,KAAKjwF,SAAhB,IAA6BiwF,WAAW,KAAK,IAA7C,IAAqD,CAACrW,OAAO,CAACqW,WAAD,CAAjE,EAAgF;AAC9EJ,UAAAA,OAAO,GAAGD,YAAY,CAACz6D,GAAD,EAAM9zB,IAAN,EAAY04C,EAAZ,EAAgB81C,OAAhB,EAAyBI,WAAzB,CAAtB;AACD;AACF;AACF;AACF;;AACD96D,EAAAA,GAAG,CAACguB,OAAJ;AACA,MAAMnJ,KAAK,GAAGD,EAAE,CAAC95C,MAAH,GAAY,CAA1B;;AACA,MAAI+5C,KAAK,GAAG+1C,aAAa,CAAC9vF,MAA1B,EAAkC;AAChC,SAAKQ,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGu5C,KAAhB,EAAuBv5C,CAAC,EAAxB,EAA4B;AAC1B,aAAOY,IAAI,CAAC04C,EAAE,CAACt5C,CAAD,CAAH,CAAX;AACD;;AACDs5C,IAAAA,EAAE,CAACzwB,MAAH,CAAU,CAAV,EAAa0wB,KAAb;AACD;;AACD,SAAO61C,OAAP;AACD;;AACD,SAASK,WAAT,CAAqB9uF,KAArB,EAA4Bs/C,KAA5B,EAAmCt8C,KAAnC,EAA0C;AACxC,MAAMkH,gBAAgB,GAAGlK,KAAK,CAAC6yC,uBAA/B;AACA,MAAMk8C,SAAS,GAAG/rF,KAAK,KAAK,CAAV,GAAcpB,IAAI,CAAC0H,GAAL,CAAStG,KAAK,GAAG,CAAjB,EAAoB,GAApB,CAAd,GAAyC,CAA3D;AACA,SAAOpB,IAAI,CAACu1C,KAAL,CAAW,CAACmI,KAAK,GAAGyvC,SAAT,IAAsB7kF,gBAAjC,IAAqDA,gBAArD,GAAwE6kF,SAA/E;AACD;;AACD,SAASC,WAAT,CAAqBx+C,MAArB,EAA6Bzc,GAA7B,EAAkC;AAChCA,EAAAA,GAAG,GAAGA,GAAG,IAAIyc,MAAM,CAAC9Z,UAAP,CAAkB,IAAlB,CAAb;AACA3C,EAAAA,GAAG,CAAC8tB,IAAJ;AACA9tB,EAAAA,GAAG,CAACk7D,cAAJ;AACAl7D,EAAAA,GAAG,CAACm7D,SAAJ,CAAc,CAAd,EAAiB,CAAjB,EAAoB1+C,MAAM,CAACxtC,KAA3B,EAAkCwtC,MAAM,CAACztC,MAAzC;AACAgxB,EAAAA,GAAG,CAACguB,OAAJ;AACD;;AACD,SAASotC,SAAT,CAAmBp7D,GAAnB,EAAwB7zB,OAAxB,EAAiC0M,CAAjC,EAAoCC,CAApC,EAAuC;AACrC,MAAIxO,IAAJ,EAAU+wF,OAAV,EAAmB5uF,OAAnB,EAA4B7C,IAA5B,EAAkC6pE,YAAlC;AACA,MAAMvkE,KAAK,GAAG/C,OAAO,CAACukC,UAAtB;AACA,MAAMhE,QAAQ,GAAGvgC,OAAO,CAACugC,QAAzB;AACA,MAAMxyB,MAAM,GAAG/N,OAAO,CAAC+N,MAAvB;AACA,MAAIugE,GAAG,GAAG,CAAC/tC,QAAQ,IAAI,CAAb,IAAkBq6C,WAA5B;;AACA,MAAI73E,KAAK,IAAI,QAAOA,KAAP,MAAiB,QAA9B,EAAwC;AACtC5E,IAAAA,IAAI,GAAG4E,KAAK,CAACwW,QAAN,EAAP;;AACA,QAAIpb,IAAI,KAAK,2BAAT,IAAwCA,IAAI,KAAK,4BAArD,EAAmF;AACjF01B,MAAAA,GAAG,CAAC8tB,IAAJ;AACA9tB,MAAAA,GAAG,CAACkhC,SAAJ,CAAcroD,CAAd,EAAiBC,CAAjB;AACAknB,MAAAA,GAAG,CAAC4+C,MAAJ,CAAWnE,GAAX;AACAz6C,MAAAA,GAAG,CAACs7D,SAAJ,CAAcpsF,KAAd,EAAqB,CAACA,KAAK,CAACD,KAAP,GAAe,CAApC,EAAuC,CAACC,KAAK,CAACF,MAAP,GAAgB,CAAvD,EAA0DE,KAAK,CAACD,KAAhE,EAAuEC,KAAK,CAACF,MAA7E;AACAgxB,MAAAA,GAAG,CAACguB,OAAJ;AACA;AACD;AACF;;AACD,MAAI3xC,KAAK,CAACnC,MAAD,CAAL,IAAiBA,MAAM,IAAI,CAA/B,EAAkC;AAChC;AACD;;AACD8lB,EAAAA,GAAG,CAACwuB,SAAJ;;AACA,UAAQt/C,KAAR;AACA;AACE8wB,MAAAA,GAAG,CAAC+P,GAAJ,CAAQl3B,CAAR,EAAWC,CAAX,EAAcoB,MAAd,EAAsB,CAAtB,EAAyB+yB,GAAzB;AACAjN,MAAAA,GAAG,CAACi+B,SAAJ;AACA;;AACF,SAAK,UAAL;AACEj+B,MAAAA,GAAG,CAACyuB,MAAJ,CAAW51C,CAAC,GAAGhL,IAAI,CAAC0/B,GAAL,CAASktC,GAAT,IAAgBvgE,MAA/B,EAAuCpB,CAAC,GAAGjL,IAAI,CAACw/B,GAAL,CAASotC,GAAT,IAAgBvgE,MAA3D;AACAugE,MAAAA,GAAG,IAAIwM,aAAP;AACAjnD,MAAAA,GAAG,CAAC0uB,MAAJ,CAAW71C,CAAC,GAAGhL,IAAI,CAAC0/B,GAAL,CAASktC,GAAT,IAAgBvgE,MAA/B,EAAuCpB,CAAC,GAAGjL,IAAI,CAACw/B,GAAL,CAASotC,GAAT,IAAgBvgE,MAA3D;AACAugE,MAAAA,GAAG,IAAIwM,aAAP;AACAjnD,MAAAA,GAAG,CAAC0uB,MAAJ,CAAW71C,CAAC,GAAGhL,IAAI,CAAC0/B,GAAL,CAASktC,GAAT,IAAgBvgE,MAA/B,EAAuCpB,CAAC,GAAGjL,IAAI,CAACw/B,GAAL,CAASotC,GAAT,IAAgBvgE,MAA3D;AACA8lB,MAAAA,GAAG,CAACi+B,SAAJ;AACA;;AACF,SAAK,aAAL;AACEwV,MAAAA,YAAY,GAAGv5D,MAAM,GAAG,KAAxB;AACAtQ,MAAAA,IAAI,GAAGsQ,MAAM,GAAGu5D,YAAhB;AACA4nB,MAAAA,OAAO,GAAGxtF,IAAI,CAACw/B,GAAL,CAASotC,GAAG,GAAGuM,UAAf,IAA6Bp9E,IAAvC;AACA6C,MAAAA,OAAO,GAAGoB,IAAI,CAAC0/B,GAAL,CAASktC,GAAG,GAAGuM,UAAf,IAA6Bp9E,IAAvC;AACAo2B,MAAAA,GAAG,CAAC+P,GAAJ,CAAQl3B,CAAC,GAAGwiF,OAAZ,EAAqBviF,CAAC,GAAGrM,OAAzB,EAAkCgnE,YAAlC,EAAgDgH,GAAG,GAAGthE,EAAtD,EAA0DshE,GAAG,GAAG1sC,OAAhE;AACA/N,MAAAA,GAAG,CAAC+P,GAAJ,CAAQl3B,CAAC,GAAGpM,OAAZ,EAAqBqM,CAAC,GAAGuiF,OAAzB,EAAkC5nB,YAAlC,EAAgDgH,GAAG,GAAG1sC,OAAtD,EAA+D0sC,GAA/D;AACAz6C,MAAAA,GAAG,CAAC+P,GAAJ,CAAQl3B,CAAC,GAAGwiF,OAAZ,EAAqBviF,CAAC,GAAGrM,OAAzB,EAAkCgnE,YAAlC,EAAgDgH,GAAhD,EAAqDA,GAAG,GAAG1sC,OAA3D;AACA/N,MAAAA,GAAG,CAAC+P,GAAJ,CAAQl3B,CAAC,GAAGpM,OAAZ,EAAqBqM,CAAC,GAAGuiF,OAAzB,EAAkC5nB,YAAlC,EAAgDgH,GAAG,GAAG1sC,OAAtD,EAA+D0sC,GAAG,GAAGthE,EAArE;AACA6mB,MAAAA,GAAG,CAACi+B,SAAJ;AACA;;AACF,SAAK,MAAL;AACE,UAAI,CAACvxB,QAAL,EAAe;AACb9iC,QAAAA,IAAI,GAAGiE,IAAI,CAAC0tF,OAAL,GAAerhF,MAAtB;AACA8lB,QAAAA,GAAG,CAAClsB,IAAJ,CAAS+E,CAAC,GAAGjP,IAAb,EAAmBkP,CAAC,GAAGlP,IAAvB,EAA6B,IAAIA,IAAjC,EAAuC,IAAIA,IAA3C;AACA;AACD;;AACD6wE,MAAAA,GAAG,IAAIuM,UAAP;;AACF,SAAK,SAAL;AACEqU,MAAAA,OAAO,GAAGxtF,IAAI,CAACw/B,GAAL,CAASotC,GAAT,IAAgBvgE,MAA1B;AACAzN,MAAAA,OAAO,GAAGoB,IAAI,CAAC0/B,GAAL,CAASktC,GAAT,IAAgBvgE,MAA1B;AACA8lB,MAAAA,GAAG,CAACyuB,MAAJ,CAAW51C,CAAC,GAAGwiF,OAAf,EAAwBviF,CAAC,GAAGrM,OAA5B;AACAuzB,MAAAA,GAAG,CAAC0uB,MAAJ,CAAW71C,CAAC,GAAGpM,OAAf,EAAwBqM,CAAC,GAAGuiF,OAA5B;AACAr7D,MAAAA,GAAG,CAAC0uB,MAAJ,CAAW71C,CAAC,GAAGwiF,OAAf,EAAwBviF,CAAC,GAAGrM,OAA5B;AACAuzB,MAAAA,GAAG,CAAC0uB,MAAJ,CAAW71C,CAAC,GAAGpM,OAAf,EAAwBqM,CAAC,GAAGuiF,OAA5B;AACAr7D,MAAAA,GAAG,CAACi+B,SAAJ;AACA;;AACF,SAAK,UAAL;AACEwc,MAAAA,GAAG,IAAIuM,UAAP;;AACF,SAAK,OAAL;AACEqU,MAAAA,OAAO,GAAGxtF,IAAI,CAACw/B,GAAL,CAASotC,GAAT,IAAgBvgE,MAA1B;AACAzN,MAAAA,OAAO,GAAGoB,IAAI,CAAC0/B,GAAL,CAASktC,GAAT,IAAgBvgE,MAA1B;AACA8lB,MAAAA,GAAG,CAACyuB,MAAJ,CAAW51C,CAAC,GAAGwiF,OAAf,EAAwBviF,CAAC,GAAGrM,OAA5B;AACAuzB,MAAAA,GAAG,CAAC0uB,MAAJ,CAAW71C,CAAC,GAAGwiF,OAAf,EAAwBviF,CAAC,GAAGrM,OAA5B;AACAuzB,MAAAA,GAAG,CAACyuB,MAAJ,CAAW51C,CAAC,GAAGpM,OAAf,EAAwBqM,CAAC,GAAGuiF,OAA5B;AACAr7D,MAAAA,GAAG,CAAC0uB,MAAJ,CAAW71C,CAAC,GAAGpM,OAAf,EAAwBqM,CAAC,GAAGuiF,OAA5B;AACA;;AACF,SAAK,MAAL;AACEA,MAAAA,OAAO,GAAGxtF,IAAI,CAACw/B,GAAL,CAASotC,GAAT,IAAgBvgE,MAA1B;AACAzN,MAAAA,OAAO,GAAGoB,IAAI,CAAC0/B,GAAL,CAASktC,GAAT,IAAgBvgE,MAA1B;AACA8lB,MAAAA,GAAG,CAACyuB,MAAJ,CAAW51C,CAAC,GAAGwiF,OAAf,EAAwBviF,CAAC,GAAGrM,OAA5B;AACAuzB,MAAAA,GAAG,CAAC0uB,MAAJ,CAAW71C,CAAC,GAAGwiF,OAAf,EAAwBviF,CAAC,GAAGrM,OAA5B;AACAuzB,MAAAA,GAAG,CAACyuB,MAAJ,CAAW51C,CAAC,GAAGpM,OAAf,EAAwBqM,CAAC,GAAGuiF,OAA5B;AACAr7D,MAAAA,GAAG,CAAC0uB,MAAJ,CAAW71C,CAAC,GAAGpM,OAAf,EAAwBqM,CAAC,GAAGuiF,OAA5B;AACA5gB,MAAAA,GAAG,IAAIuM,UAAP;AACAqU,MAAAA,OAAO,GAAGxtF,IAAI,CAACw/B,GAAL,CAASotC,GAAT,IAAgBvgE,MAA1B;AACAzN,MAAAA,OAAO,GAAGoB,IAAI,CAAC0/B,GAAL,CAASktC,GAAT,IAAgBvgE,MAA1B;AACA8lB,MAAAA,GAAG,CAACyuB,MAAJ,CAAW51C,CAAC,GAAGwiF,OAAf,EAAwBviF,CAAC,GAAGrM,OAA5B;AACAuzB,MAAAA,GAAG,CAAC0uB,MAAJ,CAAW71C,CAAC,GAAGwiF,OAAf,EAAwBviF,CAAC,GAAGrM,OAA5B;AACAuzB,MAAAA,GAAG,CAACyuB,MAAJ,CAAW51C,CAAC,GAAGpM,OAAf,EAAwBqM,CAAC,GAAGuiF,OAA5B;AACAr7D,MAAAA,GAAG,CAAC0uB,MAAJ,CAAW71C,CAAC,GAAGpM,OAAf,EAAwBqM,CAAC,GAAGuiF,OAA5B;AACA;;AACF,SAAK,MAAL;AACEA,MAAAA,OAAO,GAAGxtF,IAAI,CAACw/B,GAAL,CAASotC,GAAT,IAAgBvgE,MAA1B;AACAzN,MAAAA,OAAO,GAAGoB,IAAI,CAAC0/B,GAAL,CAASktC,GAAT,IAAgBvgE,MAA1B;AACA8lB,MAAAA,GAAG,CAACyuB,MAAJ,CAAW51C,CAAC,GAAGwiF,OAAf,EAAwBviF,CAAC,GAAGrM,OAA5B;AACAuzB,MAAAA,GAAG,CAAC0uB,MAAJ,CAAW71C,CAAC,GAAGwiF,OAAf,EAAwBviF,CAAC,GAAGrM,OAA5B;AACA;;AACF,SAAK,MAAL;AACEuzB,MAAAA,GAAG,CAACyuB,MAAJ,CAAW51C,CAAX,EAAcC,CAAd;AACAknB,MAAAA,GAAG,CAAC0uB,MAAJ,CAAW71C,CAAC,GAAGhL,IAAI,CAACw/B,GAAL,CAASotC,GAAT,IAAgBvgE,MAA/B,EAAuCpB,CAAC,GAAGjL,IAAI,CAAC0/B,GAAL,CAASktC,GAAT,IAAgBvgE,MAA3D;AACA;AA1EF;;AA4EA8lB,EAAAA,GAAG,CAACuU,IAAJ;;AACA,MAAIpoC,OAAO,CAACgkC,WAAR,GAAsB,CAA1B,EAA6B;AAC3BnQ,IAAAA,GAAG,CAAC2uB,MAAJ;AACD;AACF;;AACD,SAAS6sC,cAAT,CAAwBpvD,KAAxB,EAA+B9H,IAA/B,EAAqCgX,MAArC,EAA6C;AAC3CA,EAAAA,MAAM,GAAGA,MAAM,IAAI,GAAnB;AACA,SAAO,CAAChX,IAAD,IAAU8H,KAAK,IAAIA,KAAK,CAACvzB,CAAN,GAAUyrB,IAAI,CAACx1B,IAAL,GAAYwsC,MAA/B,IAAyClP,KAAK,CAACvzB,CAAN,GAAUyrB,IAAI,CAACv1B,KAAL,GAAausC,MAAhE,IACjBlP,KAAK,CAACtzB,CAAN,GAAUwrB,IAAI,CAAC11B,GAAL,GAAW0sC,MADJ,IACclP,KAAK,CAACtzB,CAAN,GAAUwrB,IAAI,CAACz1B,MAAL,GAAcysC,MADvD;AAED;;AACD,SAASmgD,QAAT,CAAkBz7D,GAAlB,EAAuBsE,IAAvB,EAA6B;AAC3BtE,EAAAA,GAAG,CAAC8tB,IAAJ;AACA9tB,EAAAA,GAAG,CAACwuB,SAAJ;AACAxuB,EAAAA,GAAG,CAAClsB,IAAJ,CAASwwB,IAAI,CAACx1B,IAAd,EAAoBw1B,IAAI,CAAC11B,GAAzB,EAA8B01B,IAAI,CAACv1B,KAAL,GAAau1B,IAAI,CAACx1B,IAAhD,EAAsDw1B,IAAI,CAACz1B,MAAL,GAAcy1B,IAAI,CAAC11B,GAAzE;AACAoxB,EAAAA,GAAG,CAACoE,IAAJ;AACD;;AACD,SAASs3D,UAAT,CAAoB17D,GAApB,EAAyB;AACvBA,EAAAA,GAAG,CAACguB,OAAJ;AACD;;AACD,SAASyT,cAAT,CAAwBzhC,GAAxB,EAA6BshC,QAA7B,EAAuCnhD,MAAvC,EAA+Cw7E,IAA/C,EAAqDh/D,IAArD,EAA2D;AACzD,MAAI,CAAC2kC,QAAL,EAAe;AACb,WAAOthC,GAAG,CAAC0uB,MAAJ,CAAWvuC,MAAM,CAACtH,CAAlB,EAAqBsH,MAAM,CAACrH,CAA5B,CAAP;AACD;;AACD,MAAI6jB,IAAI,KAAK,QAAb,EAAuB;AACrB,QAAMi/D,QAAQ,GAAG,CAACt6B,QAAQ,CAACzoD,CAAT,GAAasH,MAAM,CAACtH,CAArB,IAA0B,GAA3C;AACAmnB,IAAAA,GAAG,CAAC0uB,MAAJ,CAAWktC,QAAX,EAAqBt6B,QAAQ,CAACxoD,CAA9B;AACAknB,IAAAA,GAAG,CAAC0uB,MAAJ,CAAWktC,QAAX,EAAqBz7E,MAAM,CAACrH,CAA5B;AACD,GAJD,MAIO,IAAI6jB,IAAI,KAAK,OAAT,KAAqB,CAAC,CAACg/D,IAA3B,EAAiC;AACtC37D,IAAAA,GAAG,CAAC0uB,MAAJ,CAAW4S,QAAQ,CAACzoD,CAApB,EAAuBsH,MAAM,CAACrH,CAA9B;AACD,GAFM,MAEA;AACLknB,IAAAA,GAAG,CAAC0uB,MAAJ,CAAWvuC,MAAM,CAACtH,CAAlB,EAAqByoD,QAAQ,CAACxoD,CAA9B;AACD;;AACDknB,EAAAA,GAAG,CAAC0uB,MAAJ,CAAWvuC,MAAM,CAACtH,CAAlB,EAAqBsH,MAAM,CAACrH,CAA5B;AACD;;AACD,SAAS8oD,cAAT,CAAwB5hC,GAAxB,EAA6BshC,QAA7B,EAAuCnhD,MAAvC,EAA+Cw7E,IAA/C,EAAqD;AACnD,MAAI,CAACr6B,QAAL,EAAe;AACb,WAAOthC,GAAG,CAAC0uB,MAAJ,CAAWvuC,MAAM,CAACtH,CAAlB,EAAqBsH,MAAM,CAACrH,CAA5B,CAAP;AACD;;AACDknB,EAAAA,GAAG,CAAC67D,aAAJ,CACEF,IAAI,GAAGr6B,QAAQ,CAACw6B,IAAZ,GAAmBx6B,QAAQ,CAACy6B,IADlC,EAEEJ,IAAI,GAAGr6B,QAAQ,CAAC06B,IAAZ,GAAmB16B,QAAQ,CAAC26B,IAFlC,EAGEN,IAAI,GAAGx7E,MAAM,CAAC47E,IAAV,GAAiB57E,MAAM,CAAC27E,IAH9B,EAIEH,IAAI,GAAGx7E,MAAM,CAAC87E,IAAV,GAAiB97E,MAAM,CAAC67E,IAJ9B,EAKE77E,MAAM,CAACtH,CALT,EAMEsH,MAAM,CAACrH,CANT;AAOD;;AACD,SAASojF,UAAT,CAAoBl8D,GAApB,EAAyBh1B,IAAzB,EAA+B6N,CAA/B,EAAkCC,CAAlC,EAAqCrP,IAArC,EAAsD;AAAA,MAAXmM,IAAW,uEAAJ,EAAI;AACpD,MAAMqvC,KAAK,GAAGw/B,OAAO,CAACz5E,IAAD,CAAP,GAAgBA,IAAhB,GAAuB,CAACA,IAAD,CAArC;AACA,MAAM2jD,MAAM,GAAG/4C,IAAI,CAAC+3C,WAAL,GAAmB,CAAnB,IAAwB/3C,IAAI,CAAC83C,WAAL,KAAqB,EAA5D;AACA,MAAIpiD,CAAJ,EAAOgmC,IAAP;AACAtR,EAAAA,GAAG,CAAC8tB,IAAJ;AACA9tB,EAAAA,GAAG,CAACv2B,IAAJ,GAAWA,IAAI,CAAC2hD,MAAhB;AACA+wC,EAAAA,aAAa,CAACn8D,GAAD,EAAMpqB,IAAN,CAAb;;AACA,OAAKtK,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG25C,KAAK,CAACn6C,MAAtB,EAA8B,EAAEQ,CAAhC,EAAmC;AACjCgmC,IAAAA,IAAI,GAAG2T,KAAK,CAAC35C,CAAD,CAAZ;;AACA,QAAIqjD,MAAJ,EAAY;AACV,UAAI/4C,IAAI,CAAC83C,WAAT,EAAsB;AACpB1tB,QAAAA,GAAG,CAAC4Q,WAAJ,GAAkBh7B,IAAI,CAAC83C,WAAvB;AACD;;AACD,UAAI,CAAC82B,aAAa,CAAC5uE,IAAI,CAAC+3C,WAAN,CAAlB,EAAsC;AACpC3tB,QAAAA,GAAG,CAAC8Q,SAAJ,GAAgBl7B,IAAI,CAAC+3C,WAArB;AACD;;AACD3tB,MAAAA,GAAG,CAACo8D,UAAJ,CAAe9qD,IAAf,EAAqBz4B,CAArB,EAAwBC,CAAxB,EAA2BlD,IAAI,CAACo5B,QAAhC;AACD;;AACDhP,IAAAA,GAAG,CAACyuC,QAAJ,CAAan9B,IAAb,EAAmBz4B,CAAnB,EAAsBC,CAAtB,EAAyBlD,IAAI,CAACo5B,QAA9B;AACAqtD,IAAAA,YAAY,CAACr8D,GAAD,EAAMnnB,CAAN,EAASC,CAAT,EAAYw4B,IAAZ,EAAkB17B,IAAlB,CAAZ;AACAkD,IAAAA,CAAC,IAAIrP,IAAI,CAACy7C,UAAV;AACD;;AACDllB,EAAAA,GAAG,CAACguB,OAAJ;AACD;;AACD,SAASmuC,aAAT,CAAuBn8D,GAAvB,EAA4BpqB,IAA5B,EAAkC;AAChC,MAAIA,IAAI,CAACi4C,WAAT,EAAsB;AACpB7tB,IAAAA,GAAG,CAACkhC,SAAJ,CAActrD,IAAI,CAACi4C,WAAL,CAAiB,CAAjB,CAAd,EAAmCj4C,IAAI,CAACi4C,WAAL,CAAiB,CAAjB,CAAnC;AACD;;AACD,MAAI,CAAC22B,aAAa,CAAC5uE,IAAI,CAAC82B,QAAN,CAAlB,EAAmC;AACjC1M,IAAAA,GAAG,CAAC4+C,MAAJ,CAAWhpE,IAAI,CAAC82B,QAAhB;AACD;;AACD,MAAI92B,IAAI,CAACuiB,KAAT,EAAgB;AACd6H,IAAAA,GAAG,CAAC2Q,SAAJ,GAAgB/6B,IAAI,CAACuiB,KAArB;AACD;;AACD,MAAIviB,IAAI,CAACu3C,SAAT,EAAoB;AAClBntB,IAAAA,GAAG,CAACmtB,SAAJ,GAAgBv3C,IAAI,CAACu3C,SAArB;AACD;;AACD,MAAIv3C,IAAI,CAAC03C,YAAT,EAAuB;AACrBttB,IAAAA,GAAG,CAACstB,YAAJ,GAAmB13C,IAAI,CAAC03C,YAAxB;AACD;AACF;;AACD,SAAS+uC,YAAT,CAAsBr8D,GAAtB,EAA2BnnB,CAA3B,EAA8BC,CAA9B,EAAiCw4B,IAAjC,EAAuC17B,IAAvC,EAA6C;AAC3C,MAAIA,IAAI,CAAC84D,aAAL,IAAsB94D,IAAI,CAAC0mF,SAA/B,EAA0C;AACxC,QAAMC,OAAO,GAAGv8D,GAAG,CAACmtC,WAAJ,CAAgB77B,IAAhB,CAAhB;AACA,QAAMxiC,IAAI,GAAG+J,CAAC,GAAG0jF,OAAO,CAACC,qBAAzB;AACA,QAAMztF,KAAK,GAAG8J,CAAC,GAAG0jF,OAAO,CAACE,sBAA1B;AACA,QAAM7tF,GAAG,GAAGkK,CAAC,GAAGyjF,OAAO,CAACG,uBAAxB;AACA,QAAM7tF,MAAM,GAAGiK,CAAC,GAAGyjF,OAAO,CAACI,wBAA3B;AACA,QAAMC,WAAW,GAAGhnF,IAAI,CAAC84D,aAAL,GAAqB,CAAC9/D,GAAG,GAAGC,MAAP,IAAiB,CAAtC,GAA0CA,MAA9D;AACAmxB,IAAAA,GAAG,CAAC4Q,WAAJ,GAAkB5Q,GAAG,CAAC2Q,SAAtB;AACA3Q,IAAAA,GAAG,CAACwuB,SAAJ;AACAxuB,IAAAA,GAAG,CAAC8Q,SAAJ,GAAgBl7B,IAAI,CAACinF,eAAL,IAAwB,CAAxC;AACA78D,IAAAA,GAAG,CAACyuB,MAAJ,CAAW3/C,IAAX,EAAiB8tF,WAAjB;AACA58D,IAAAA,GAAG,CAAC0uB,MAAJ,CAAW3/C,KAAX,EAAkB6tF,WAAlB;AACA58D,IAAAA,GAAG,CAAC2uB,MAAJ;AACD;AACF;;AACD,SAASkX,kBAAT,CAA4B7lC,GAA5B,EAAiClsB,IAAjC,EAAuC;AACrC,MAAO+E,CAAP,GAA6B/E,IAA7B,CAAO+E,CAAP;AAAA,MAAUC,CAAV,GAA6BhF,IAA7B,CAAUgF,CAAV;AAAA,MAAaE,CAAb,GAA6BlF,IAA7B,CAAakF,CAAb;AAAA,MAAgB6hC,CAAhB,GAA6B/mC,IAA7B,CAAgB+mC,CAAhB;AAAA,MAAmB3gC,MAAnB,GAA6BpG,IAA7B,CAAmBoG,MAAnB;AACA8lB,EAAAA,GAAG,CAAC+P,GAAJ,CAAQl3B,CAAC,GAAGqB,MAAM,CAAC6qD,OAAnB,EAA4BjsD,CAAC,GAAGoB,MAAM,CAAC6qD,OAAvC,EAAgD7qD,MAAM,CAAC6qD,OAAvD,EAAgE,CAACh3B,OAAjE,EAA0E50B,EAA1E,EAA8E,IAA9E;AACA6mB,EAAAA,GAAG,CAAC0uB,MAAJ,CAAW71C,CAAX,EAAcC,CAAC,GAAG+hC,CAAJ,GAAQ3gC,MAAM,CAAC+qD,UAA7B;AACAjlC,EAAAA,GAAG,CAAC+P,GAAJ,CAAQl3B,CAAC,GAAGqB,MAAM,CAAC+qD,UAAnB,EAA+BnsD,CAAC,GAAG+hC,CAAJ,GAAQ3gC,MAAM,CAAC+qD,UAA9C,EAA0D/qD,MAAM,CAAC+qD,UAAjE,EAA6E9rD,EAA7E,EAAiF40B,OAAjF,EAA0F,IAA1F;AACA/N,EAAAA,GAAG,CAAC0uB,MAAJ,CAAW71C,CAAC,GAAGG,CAAJ,GAAQkB,MAAM,CAACgrD,WAA1B,EAAuCpsD,CAAC,GAAG+hC,CAA3C;AACA7a,EAAAA,GAAG,CAAC+P,GAAJ,CAAQl3B,CAAC,GAAGG,CAAJ,GAAQkB,MAAM,CAACgrD,WAAvB,EAAoCpsD,CAAC,GAAG+hC,CAAJ,GAAQ3gC,MAAM,CAACgrD,WAAnD,EAAgEhrD,MAAM,CAACgrD,WAAvE,EAAoFn3B,OAApF,EAA6F,CAA7F,EAAgG,IAAhG;AACA/N,EAAAA,GAAG,CAAC0uB,MAAJ,CAAW71C,CAAC,GAAGG,CAAf,EAAkBF,CAAC,GAAGoB,MAAM,CAAC8qD,QAA7B;AACAhlC,EAAAA,GAAG,CAAC+P,GAAJ,CAAQl3B,CAAC,GAAGG,CAAJ,GAAQkB,MAAM,CAAC8qD,QAAvB,EAAiClsD,CAAC,GAAGoB,MAAM,CAAC8qD,QAA5C,EAAsD9qD,MAAM,CAAC8qD,QAA7D,EAAuE,CAAvE,EAA0E,CAACj3B,OAA3E,EAAoF,IAApF;AACA/N,EAAAA,GAAG,CAAC0uB,MAAJ,CAAW71C,CAAC,GAAGqB,MAAM,CAAC6qD,OAAtB,EAA+BjsD,CAA/B;AACD;;AAED,IAAMgkF,WAAW,GAAG,IAAIjsE,MAAJ,CAAW,sCAAX,CAApB;AACA,IAAMksE,UAAU,GAAG,IAAIlsE,MAAJ,CAAW,uEAAX,CAAnB;;AACA,SAASmsE,YAAT,CAAsB3nF,KAAtB,EAA6BzL,IAA7B,EAAmC;AACjC,MAAMqzF,OAAO,GAAG,CAAC,KAAK5nF,KAAN,EAAa6nF,KAAb,CAAmBJ,WAAnB,CAAhB;;AACA,MAAI,CAACG,OAAD,IAAYA,OAAO,CAAC,CAAD,CAAP,KAAe,QAA/B,EAAyC;AACvC,WAAOrzF,IAAI,GAAG,GAAd;AACD;;AACDyL,EAAAA,KAAK,GAAG,CAAC4nF,OAAO,CAAC,CAAD,CAAhB;;AACA,UAAQA,OAAO,CAAC,CAAD,CAAf;AACA,SAAK,IAAL;AACE,aAAO5nF,KAAP;;AACF,SAAK,GAAL;AACEA,MAAAA,KAAK,IAAI,GAAT;AACA;AALF;;AAOA,SAAOzL,IAAI,GAAGyL,KAAd;AACD;;AACD,IAAM8nF,YAAY,GAAG,SAAfA,YAAe,CAAA1sE,CAAC;AAAA,SAAI,CAACA,CAAD,IAAM,CAAV;AAAA,CAAtB;;AACA,SAAS2sE,iBAAT,CAA2B/nF,KAA3B,EAAkCwZ,KAAlC,EAAyC;AACvC,MAAMmxB,GAAG,GAAG,EAAZ;AACA,MAAMq9C,QAAQ,GAAG3Y,QAAQ,CAAC71D,KAAD,CAAzB;AACA,MAAMzW,IAAI,GAAGilF,QAAQ,GAAGllF,MAAM,CAACC,IAAP,CAAYyW,KAAZ,CAAH,GAAwBA,KAA7C;AACA,MAAMJ,IAAI,GAAGi2D,QAAQ,CAACrvE,KAAD,CAAR,GACTgoF,QAAQ,GACN,UAAAzkE,IAAI;AAAA,WAAIksD,cAAc,CAACzvE,KAAK,CAACujB,IAAD,CAAN,EAAcvjB,KAAK,CAACwZ,KAAK,CAAC+J,IAAD,CAAN,CAAnB,CAAlB;AAAA,GADE,GAEN,UAAAA,IAAI;AAAA,WAAIvjB,KAAK,CAACujB,IAAD,CAAT;AAAA,GAHG,GAIT;AAAA,WAAMvjB,KAAN;AAAA,GAJJ;;AAJuC,8CASpB+C,IAToB;AAAA;;AAAA;AASvC,2DAAyB;AAAA,UAAdwgB,IAAc;AACvBonB,MAAAA,GAAG,CAACpnB,IAAD,CAAH,GAAYukE,YAAY,CAAC1uE,IAAI,CAACmK,IAAD,CAAL,CAAxB;AACD;AAXsC;AAAA;AAAA;AAAA;AAAA;;AAYvC,SAAOonB,GAAP;AACD;;AACD,SAASs9C,MAAT,CAAgBjoF,KAAhB,EAAuB;AACrB,SAAO+nF,iBAAiB,CAAC/nF,KAAD,EAAQ;AAACzG,IAAAA,GAAG,EAAE,GAAN;AAAWG,IAAAA,KAAK,EAAE,GAAlB;AAAuBF,IAAAA,MAAM,EAAE,GAA/B;AAAoCC,IAAAA,IAAI,EAAE;AAA1C,GAAR,CAAxB;AACD;;AACD,SAASyuF,aAAT,CAAuBloF,KAAvB,EAA8B;AAC5B,SAAO+nF,iBAAiB,CAAC/nF,KAAD,EAAQ,CAAC,SAAD,EAAY,UAAZ,EAAwB,YAAxB,EAAsC,aAAtC,CAAR,CAAxB;AACD;;AACD,SAASmoF,SAAT,CAAmBnoF,KAAnB,EAA0B;AACxB,MAAMgb,GAAG,GAAGitE,MAAM,CAACjoF,KAAD,CAAlB;AACAgb,EAAAA,GAAG,CAACphB,KAAJ,GAAYohB,GAAG,CAACvhB,IAAJ,GAAWuhB,GAAG,CAACthB,KAA3B;AACAshB,EAAAA,GAAG,CAACrhB,MAAJ,GAAaqhB,GAAG,CAACzhB,GAAJ,GAAUyhB,GAAG,CAACxhB,MAA3B;AACA,SAAOwhB,GAAP;AACD;;AACD,SAASotE,MAAT,CAAgBtxF,OAAhB,EAAyB64C,QAAzB,EAAmC;AACjC74C,EAAAA,OAAO,GAAGA,OAAO,IAAI,EAArB;AACA64C,EAAAA,QAAQ,GAAGA,QAAQ,IAAIx7C,QAAQ,CAACC,IAAhC;AACA,MAAIG,IAAI,GAAGk7E,cAAc,CAAC34E,OAAO,CAACvC,IAAT,EAAeo7C,QAAQ,CAACp7C,IAAxB,CAAzB;;AACA,MAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAC5BA,IAAAA,IAAI,GAAGC,QAAQ,CAACD,IAAD,EAAO,EAAP,CAAf;AACD;;AACD,MAAIsF,KAAK,GAAG41E,cAAc,CAAC34E,OAAO,CAAC+C,KAAT,EAAgB81C,QAAQ,CAAC91C,KAAzB,CAA1B;;AACA,MAAIA,KAAK,IAAI,CAAC,CAAC,KAAKA,KAAN,EAAaguF,KAAb,CAAmBH,UAAnB,CAAd,EAA8C;AAC5CtzE,IAAAA,OAAO,CAACiqC,IAAR,CAAa,oCAAoCxkD,KAApC,GAA4C,GAAzD;AACAA,IAAAA,KAAK,GAAG,EAAR;AACD;;AACD,MAAMzF,IAAI,GAAG;AACXC,IAAAA,MAAM,EAAEo7E,cAAc,CAAC34E,OAAO,CAACzC,MAAT,EAAiBs7C,QAAQ,CAACt7C,MAA1B,CADX;AAEXw7C,IAAAA,UAAU,EAAE83C,YAAY,CAAClY,cAAc,CAAC34E,OAAO,CAAC+4C,UAAT,EAAqBF,QAAQ,CAACE,UAA9B,CAAf,EAA0Dt7C,IAA1D,CAFb;AAGXA,IAAAA,IAAI,EAAJA,IAHW;AAIXsF,IAAAA,KAAK,EAALA,KAJW;AAKXnF,IAAAA,MAAM,EAAE+6E,cAAc,CAAC34E,OAAO,CAACpC,MAAT,EAAiBi7C,QAAQ,CAACj7C,MAA1B,CALX;AAMXqhD,IAAAA,MAAM,EAAE;AANG,GAAb;AAQA3hD,EAAAA,IAAI,CAAC2hD,MAAL,GAAcovC,YAAY,CAAC/wF,IAAD,CAA1B;AACA,SAAOA,IAAP;AACD;;AACD,SAAS0N,OAAT,CAAiBumF,MAAjB,EAAyB/oE,OAAzB,EAAkCjoB,KAAlC,EAAyCoO,IAAzC,EAA+C;AAC7C,MAAI6iF,SAAS,GAAG,IAAhB;AACA,MAAIryF,CAAJ,EAAOgxB,IAAP,EAAajnB,KAAb;;AACA,OAAK/J,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAGohE,MAAM,CAAC5yF,MAA1B,EAAkCQ,CAAC,GAAGgxB,IAAtC,EAA4C,EAAEhxB,CAA9C,EAAiD;AAC/C+J,IAAAA,KAAK,GAAGqoF,MAAM,CAACpyF,CAAD,CAAd;;AACA,QAAI+J,KAAK,KAAKxK,SAAd,EAAyB;AACvB;AACD;;AACD,QAAI8pB,OAAO,KAAK9pB,SAAZ,IAAyB,OAAOwK,KAAP,KAAiB,UAA9C,EAA0D;AACxDA,MAAAA,KAAK,GAAGA,KAAK,CAACsf,OAAD,CAAb;AACAgpE,MAAAA,SAAS,GAAG,KAAZ;AACD;;AACD,QAAIjxF,KAAK,KAAK7B,SAAV,IAAuB45E,OAAO,CAACpvE,KAAD,CAAlC,EAA2C;AACzCA,MAAAA,KAAK,GAAGA,KAAK,CAAC3I,KAAK,GAAG2I,KAAK,CAACvK,MAAf,CAAb;AACA6yF,MAAAA,SAAS,GAAG,KAAZ;AACD;;AACD,QAAItoF,KAAK,KAAKxK,SAAd,EAAyB;AACvB,UAAIiQ,IAAI,IAAI,CAAC6iF,SAAb,EAAwB;AACtB7iF,QAAAA,IAAI,CAAC6iF,SAAL,GAAiB,KAAjB;AACD;;AACD,aAAOtoF,KAAP;AACD;AACF;AACF;;AACD,SAASuoF,SAAT,CAAmBC,MAAnB,EAA2B78C,KAA3B,EAAkC/U,WAAlC,EAA+C;AAC7C,MAAO32B,GAAP,GAAmBuoF,MAAnB,CAAOvoF,GAAP;AAAA,MAAYC,GAAZ,GAAmBsoF,MAAnB,CAAYtoF,GAAZ;AACA,MAAM2lC,MAAM,GAAGgqC,WAAW,CAAClkC,KAAD,EAAQ,CAACzrC,GAAG,GAAGD,GAAP,IAAc,CAAtB,CAA1B;;AACA,MAAMwoF,QAAQ,GAAG,SAAXA,QAAW,CAACzoF,KAAD,EAAQ9C,GAAR;AAAA,WAAgB05B,WAAW,IAAI52B,KAAK,KAAK,CAAzB,GAA6B,CAA7B,GAAiCA,KAAK,GAAG9C,GAAzD;AAAA,GAAjB;;AACA,SAAO;AACL+C,IAAAA,GAAG,EAAEwoF,QAAQ,CAACxoF,GAAD,EAAM,CAACzH,IAAI,CAACs5B,GAAL,CAAS+T,MAAT,CAAP,CADR;AAEL3lC,IAAAA,GAAG,EAAEuoF,QAAQ,CAACvoF,GAAD,EAAM2lC,MAAN;AAFR,GAAP;AAID;;AACD,SAAS6iD,aAAT,CAAuBC,aAAvB,EAAsCrpE,OAAtC,EAA+C;AAC7C,SAAO,SAAcxc,MAAM,CAACqR,MAAP,CAAcw0E,aAAd,CAAd,EAA4CrpE,OAA5C,CAAP;AACD;;AAED,SAASspE,OAAT,CAAiBnb,KAAjB,EAAwBztE,KAAxB,EAA+B6oF,GAA/B,EAAoC;AAClCA,EAAAA,GAAG,GAAGA,GAAG,IAAK,UAACxxF,KAAD;AAAA,WAAWo2E,KAAK,CAACp2E,KAAD,CAAL,GAAe2I,KAA1B;AAAA,GAAd;;AACA,MAAIq9B,EAAE,GAAGowC,KAAK,CAACh4E,MAAN,GAAe,CAAxB;AACA,MAAI2nC,EAAE,GAAG,CAAT;AACA,MAAI0rD,GAAJ;;AACA,SAAOzrD,EAAE,GAAGD,EAAL,GAAU,CAAjB,EAAoB;AAClB0rD,IAAAA,GAAG,GAAI1rD,EAAE,GAAGC,EAAN,IAAa,CAAnB;;AACA,QAAIwrD,GAAG,CAACC,GAAD,CAAP,EAAc;AACZ1rD,MAAAA,EAAE,GAAG0rD,GAAL;AACD,KAFD,MAEO;AACLzrD,MAAAA,EAAE,GAAGyrD,GAAL;AACD;AACF;;AACD,SAAO;AAAC1rD,IAAAA,EAAE,EAAFA,EAAD;AAAKC,IAAAA,EAAE,EAAFA;AAAL,GAAP;AACD;;AACD,IAAMwD,YAAY,GAAG,SAAfA,YAAe,CAAC4sC,KAAD,EAAQ9mE,GAAR,EAAa3G,KAAb;AAAA,SACnB4oF,OAAO,CAACnb,KAAD,EAAQztE,KAAR,EAAe,UAAA3I,KAAK;AAAA,WAAIo2E,KAAK,CAACp2E,KAAD,CAAL,CAAasP,GAAb,IAAoB3G,KAAxB;AAAA,GAApB,CADY;AAAA,CAArB;;;;AAEA,IAAM4gC,aAAa,GAAG,SAAhBA,aAAgB,CAAC6sC,KAAD,EAAQ9mE,GAAR,EAAa3G,KAAb;AAAA,SACpB4oF,OAAO,CAACnb,KAAD,EAAQztE,KAAR,EAAe,UAAA3I,KAAK;AAAA,WAAIo2E,KAAK,CAACp2E,KAAD,CAAL,CAAasP,GAAb,KAAqB3G,KAAzB;AAAA,GAApB,CADa;AAAA,CAAtB;;;;AAEA,SAAS+oF,cAAT,CAAwB1uE,MAAxB,EAAgCpa,GAAhC,EAAqCC,GAArC,EAA0C;AACxC,MAAIjI,KAAK,GAAG,CAAZ;AACA,MAAIC,GAAG,GAAGmiB,MAAM,CAAC5kB,MAAjB;;AACA,SAAOwC,KAAK,GAAGC,GAAR,IAAemiB,MAAM,CAACpiB,KAAD,CAAN,GAAgBgI,GAAtC,EAA2C;AACzChI,IAAAA,KAAK;AACN;;AACD,SAAOC,GAAG,GAAGD,KAAN,IAAeoiB,MAAM,CAACniB,GAAG,GAAG,CAAP,CAAN,GAAkBgI,GAAxC,EAA6C;AAC3ChI,IAAAA,GAAG;AACJ;;AACD,SAAOD,KAAK,GAAG,CAAR,IAAaC,GAAG,GAAGmiB,MAAM,CAAC5kB,MAA1B,GACH4kB,MAAM,CAAC2hB,KAAP,CAAa/jC,KAAb,EAAoBC,GAApB,CADG,GAEHmiB,MAFJ;AAGD;;AACD,IAAM2uE,WAAW,GAAG,CAAC,MAAD,EAAS,KAAT,EAAgB,OAAhB,EAAyB,QAAzB,EAAmC,SAAnC,CAApB;;AACA,SAASC,iBAAT,CAA2BlmD,KAA3B,EAAkCziB,QAAlC,EAA4C;AAC1C,MAAIyiB,KAAK,CAACmmD,QAAV,EAAoB;AAClBnmD,IAAAA,KAAK,CAACmmD,QAAN,CAAehoE,SAAf,CAAyBlpB,IAAzB,CAA8BsoB,QAA9B;;AACA;AACD;;AACDxd,EAAAA,MAAM,CAACsX,cAAP,CAAsB2oB,KAAtB,EAA6B,UAA7B,EAAyC;AACvC6vB,IAAAA,YAAY,EAAE,IADyB;AAEvCtK,IAAAA,UAAU,EAAE,KAF2B;AAGvCtoD,IAAAA,KAAK,EAAE;AACLkhB,MAAAA,SAAS,EAAE,CAACZ,QAAD;AADN;AAHgC,GAAzC;AAOA0oE,EAAAA,WAAW,CAAC7uF,OAAZ,CAAoB,UAACwM,GAAD,EAAS;AAC3B,QAAM6d,MAAM,GAAG,YAAY0sD,WAAW,CAACvqE,GAAD,CAAtC;;AACA,QAAMitB,IAAI,GAAGmP,KAAK,CAACp8B,GAAD,CAAlB;AACA7D,IAAAA,MAAM,CAACsX,cAAP,CAAsB2oB,KAAtB,EAA6Bp8B,GAA7B,EAAkC;AAChCisD,MAAAA,YAAY,EAAE,IADkB;AAEhCtK,MAAAA,UAAU,EAAE,KAFoB;AAGhCtoD,MAAAA,KAHgC,mBAGjB;AAAA,2CAAN+Z,IAAM;AAANA,UAAAA,IAAM;AAAA;;AACb,YAAMf,GAAG,GAAG4a,IAAI,CAACpZ,KAAL,CAAW,IAAX,EAAiBT,IAAjB,CAAZ;;AACAgpB,QAAAA,KAAK,CAACmmD,QAAN,CAAehoE,SAAf,CAAyB/mB,OAAzB,CAAiC,UAACgvF,MAAD,EAAY;AAC3C,cAAI,OAAOA,MAAM,CAAC3kE,MAAD,CAAb,KAA0B,UAA9B,EAA0C;AACxC2kE,YAAAA,MAAM,CAAC3kE,MAAD,CAAN,OAAA2kE,MAAM,EAAYpvE,IAAZ,CAAN;AACD;AACF,SAJD;;AAKA,eAAOf,GAAP;AACD;AAX+B,KAAlC;AAaD,GAhBD;AAiBD;;AACD,SAASowE,mBAAT,CAA6BrmD,KAA7B,EAAoCziB,QAApC,EAA8C;AAC5C,MAAM+oE,IAAI,GAAGtmD,KAAK,CAACmmD,QAAnB;;AACA,MAAI,CAACG,IAAL,EAAW;AACT;AACD;;AACD,MAAMnoE,SAAS,GAAGmoE,IAAI,CAACnoE,SAAvB;AACA,MAAM7pB,KAAK,GAAG6pB,SAAS,CAACpkB,OAAV,CAAkBwjB,QAAlB,CAAd;;AACA,MAAIjpB,KAAK,KAAK,CAAC,CAAf,EAAkB;AAChB6pB,IAAAA,SAAS,CAACpC,MAAV,CAAiBznB,KAAjB,EAAwB,CAAxB;AACD;;AACD,MAAI6pB,SAAS,CAACzrB,MAAV,GAAmB,CAAvB,EAA0B;AACxB;AACD;;AACDuzF,EAAAA,WAAW,CAAC7uF,OAAZ,CAAoB,UAACwM,GAAD,EAAS;AAC3B,WAAOo8B,KAAK,CAACp8B,GAAD,CAAZ;AACD,GAFD;AAGA,SAAOo8B,KAAK,CAACmmD,QAAb;AACD;;AACD,SAASI,YAAT,CAAsBjiF,KAAtB,EAA6B;AAC3B,MAAM7F,GAAG,GAAG,IAAIs9C,GAAJ,EAAZ;AACA,MAAI7oD,CAAJ,EAAOgxB,IAAP;;AACA,OAAKhxB,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAG5f,KAAK,CAAC5R,MAAzB,EAAiCQ,CAAC,GAAGgxB,IAArC,EAA2C,EAAEhxB,CAA7C,EAAgD;AAC9CuL,IAAAA,GAAG,CAACtE,GAAJ,CAAQmK,KAAK,CAACpR,CAAD,CAAb;AACD;;AACD,MAAIuL,GAAG,CAACjN,IAAJ,KAAa0yB,IAAjB,EAAuB;AACrB,WAAO5f,KAAP;AACD;;AACD,SAAOrN,KAAK,CAACC,IAAN,CAAWuH,GAAX,CAAP;AACD;;AAED,SAAS+nF,eAAT,CAAyBp8D,MAAzB,EAA8G;AAAA;;AAAA,MAA7EyC,QAA6E,uEAAlE,CAAC,EAAD,CAAkE;AAAA,MAA5D45D,UAA4D,uEAA/Cr8D,MAA+C;AAAA,MAAvCwiB,QAAuC;AAAA,MAA7B2kB,SAA6B,uEAAjB;AAAA,WAAMnnC,MAAM,CAAC,CAAD,CAAZ;AAAA,GAAiB;;AAC5G,MAAI,CAACikD,OAAO,CAACzhC,QAAD,CAAZ,EAAwB;AACtBA,IAAAA,QAAQ,GAAG85C,QAAQ,CAAC,WAAD,EAAct8D,MAAd,CAAnB;AACD;;AACD,MAAMxW,KAAK,yCACR+yE,MAAM,CAACC,WADC,EACa,QADb,yCAEG,IAFH,sCAGAx8D,MAHA,0CAIIq8D,UAJJ,wCAKE75C,QALF,yCAMG2kB,SANH,uCAOC,kBAACpa,KAAD;AAAA,WAAWqvC,eAAe,EAAErvC,KAAF,4BAAY/sB,MAAZ,IAAqByC,QAArB,EAA+B45D,UAA/B,EAA2C75C,QAA3C,CAA1B;AAAA,GAPD,UAAX;AASA,SAAO,IAAIi6C,KAAJ,CAAUjzE,KAAV,EAAiB;AACtBkzE,IAAAA,cADsB,0BACP/+E,MADO,EACCyY,IADD,EACO;AAC3B,aAAOzY,MAAM,CAACyY,IAAD,CAAb;AACA,aAAOzY,MAAM,CAACg/E,KAAd;AACA,aAAO38D,MAAM,CAAC,CAAD,CAAN,CAAU5J,IAAV,CAAP;AACA,aAAO,IAAP;AACD,KANqB;AAOtBnN,IAAAA,GAPsB,eAOlBtL,MAPkB,EAOVyY,IAPU,EAOJ;AAChB,aAAOwmE,OAAO,CAACj/E,MAAD,EAASyY,IAAT,EACZ;AAAA,eAAMymE,oBAAoB,CAACzmE,IAAD,EAAOqM,QAAP,EAAiBzC,MAAjB,EAAyBriB,MAAzB,CAA1B;AAAA,OADY,CAAd;AAED,KAVqB;AAWtBm/E,IAAAA,wBAXsB,oCAWGn/E,MAXH,EAWWyY,IAXX,EAWiB;AACrC,aAAO2mE,OAAO,CAACD,wBAAR,CAAiCn/E,MAAM,CAACq/E,OAAP,CAAe,CAAf,CAAjC,EAAoD5mE,IAApD,CAAP;AACD,KAbqB;AActBpL,IAAAA,cAdsB,4BAcL;AACf,aAAO+xE,OAAO,CAAC/xE,cAAR,CAAuBgV,MAAM,CAAC,CAAD,CAA7B,CAAP;AACD,KAhBqB;AAiBtBhX,IAAAA,GAjBsB,eAiBlBrL,MAjBkB,EAiBVyY,IAjBU,EAiBJ;AAChB,aAAO6mE,oBAAoB,CAACt/E,MAAD,CAApB,CAA6B84B,QAA7B,CAAsCrgB,IAAtC,CAAP;AACD,KAnBqB;AAoBtB8mE,IAAAA,OApBsB,mBAoBdv/E,MApBc,EAoBN;AACd,aAAOs/E,oBAAoB,CAACt/E,MAAD,CAA3B;AACD,KAtBqB;AAuBtBtJ,IAAAA,GAvBsB,eAuBlBsJ,MAvBkB,EAuBVyY,IAvBU,EAuBJvjB,KAvBI,EAuBG;AACvB,UAAMsqF,OAAO,GAAGx/E,MAAM,CAACy/E,QAAP,KAAoBz/E,MAAM,CAACy/E,QAAP,GAAkBj2B,SAAS,EAA/C,CAAhB;AACAxpD,MAAAA,MAAM,CAACyY,IAAD,CAAN,GAAe+mE,OAAO,CAAC/mE,IAAD,CAAP,GAAgBvjB,KAA/B;AACA,aAAO8K,MAAM,CAACg/E,KAAd;AACA,aAAO,IAAP;AACD;AA5BqB,GAAjB,CAAP;AA8BD;;AACD,SAASU,cAAT,CAAwBvgD,KAAxB,EAA+B3qB,OAA/B,EAAwCmrE,QAAxC,EAAkDvqC,kBAAlD,EAAsE;AACpE,MAAMvpC,KAAK,GAAG;AACZsZ,IAAAA,UAAU,EAAE,KADA;AAEZmuB,IAAAA,MAAM,EAAEnU,KAFI;AAGZygD,IAAAA,QAAQ,EAAEprE,OAHE;AAIZqrE,IAAAA,SAAS,EAAEF,QAJC;AAKZ5mD,IAAAA,MAAM,EAAE,IAAIib,GAAJ,EALI;AAMZzC,IAAAA,YAAY,EAAEA,YAAY,CAACpS,KAAD,EAAQiW,kBAAR,CANd;AAOZ1O,IAAAA,UAAU,EAAE,oBAAC7mB,GAAD;AAAA,aAAS6/D,cAAc,CAACvgD,KAAD,EAAQtf,GAAR,EAAa8/D,QAAb,EAAuBvqC,kBAAvB,CAAvB;AAAA,KAPA;AAQZpgB,IAAAA,QAAQ,EAAE,kBAACoa,KAAD;AAAA,aAAWswC,cAAc,CAACvgD,KAAK,CAACnK,QAAN,CAAeoa,KAAf,CAAD,EAAwB56B,OAAxB,EAAiCmrE,QAAjC,EAA2CvqC,kBAA3C,CAAzB;AAAA;AARE,GAAd;AAUA,SAAO,IAAI0pC,KAAJ,CAAUjzE,KAAV,EAAiB;AACtBkzE,IAAAA,cADsB,0BACP/+E,MADO,EACCyY,IADD,EACO;AAC3B,aAAOzY,MAAM,CAACyY,IAAD,CAAb;AACA,aAAO0mB,KAAK,CAAC1mB,IAAD,CAAZ;AACA,aAAO,IAAP;AACD,KALqB;AAMtBnN,IAAAA,GANsB,eAMlBtL,MANkB,EAMVyY,IANU,EAMJqnE,QANI,EAMM;AAC1B,aAAOb,OAAO,CAACj/E,MAAD,EAASyY,IAAT,EACZ;AAAA,eAAMsnE,mBAAmB,CAAC//E,MAAD,EAASyY,IAAT,EAAeqnE,QAAf,CAAzB;AAAA,OADY,CAAd;AAED,KATqB;AAUtBX,IAAAA,wBAVsB,oCAUGn/E,MAVH,EAUWyY,IAVX,EAUiB;AACrC,aAAOzY,MAAM,CAACuxC,YAAP,CAAoBgB,OAApB,GACH6sC,OAAO,CAAC/zE,GAAR,CAAY8zB,KAAZ,EAAmB1mB,IAAnB,IAA2B;AAAC+kC,QAAAA,UAAU,EAAE,IAAb;AAAmBsK,QAAAA,YAAY,EAAE;AAAjC,OAA3B,GAAoEp9D,SADjE,GAEH00F,OAAO,CAACD,wBAAR,CAAiChgD,KAAjC,EAAwC1mB,IAAxC,CAFJ;AAGD,KAdqB;AAetBpL,IAAAA,cAfsB,4BAeL;AACf,aAAO+xE,OAAO,CAAC/xE,cAAR,CAAuB8xB,KAAvB,CAAP;AACD,KAjBqB;AAkBtB9zB,IAAAA,GAlBsB,eAkBlBrL,MAlBkB,EAkBVyY,IAlBU,EAkBJ;AAChB,aAAO2mE,OAAO,CAAC/zE,GAAR,CAAY8zB,KAAZ,EAAmB1mB,IAAnB,CAAP;AACD,KApBqB;AAqBtB8mE,IAAAA,OArBsB,qBAqBZ;AACR,aAAOH,OAAO,CAACG,OAAR,CAAgBpgD,KAAhB,CAAP;AACD,KAvBqB;AAwBtBzoC,IAAAA,GAxBsB,eAwBlBsJ,MAxBkB,EAwBVyY,IAxBU,EAwBJvjB,KAxBI,EAwBG;AACvBiqC,MAAAA,KAAK,CAAC1mB,IAAD,CAAL,GAAcvjB,KAAd;AACA,aAAO8K,MAAM,CAACyY,IAAD,CAAb;AACA,aAAO,IAAP;AACD;AA5BqB,GAAjB,CAAP;AA8BD;;AACD,SAAS84B,YAAT,CAAsBpS,KAAtB,EAA6E;AAAA,MAAhD91C,QAAgD,uEAArC;AAACgpD,IAAAA,UAAU,EAAE,IAAb;AAAmBC,IAAAA,SAAS,EAAE;AAA9B,GAAqC;;AAC3E,2BAA0GnT,KAA1G,CAAOllB,WAAP;AAAA,MAAOA,WAAP,mCAAqB5wB,QAAQ,CAACgpD,UAA9B;AAAA,0BAA0GlT,KAA1G,CAA0CnlB,UAA1C;AAAA,MAA0CA,UAA1C,kCAAuD3wB,QAAQ,CAACipD,SAAhE;AAAA,wBAA0GnT,KAA1G,CAA2E6gD,QAA3E;AAAA,MAA2EA,QAA3E,gCAAsF32F,QAAQ,CAACkpD,OAA/F;;AACA,SAAO;AACLA,IAAAA,OAAO,EAAEytC,QADJ;AAEL3tC,IAAAA,UAAU,EAAEp4B,WAFP;AAGLq4B,IAAAA,SAAS,EAAEt4B,UAHN;AAILw7B,IAAAA,YAAY,EAAE+wB,UAAU,CAACtsD,WAAD,CAAV,GAA0BA,WAA1B,GAAwC;AAAA,aAAMA,WAAN;AAAA,KAJjD;AAKLw7B,IAAAA,WAAW,EAAE8wB,UAAU,CAACvsD,UAAD,CAAV,GAAyBA,UAAzB,GAAsC;AAAA,aAAMA,UAAN;AAAA;AAL9C,GAAP;AAOD;;AACD,IAAMimE,OAAO,GAAG,SAAVA,OAAU,CAACzjC,MAAD,EAAS/xC,IAAT;AAAA,SAAkB+xC,MAAM,GAAGA,MAAM,GAAG4pB,WAAW,CAAC37D,IAAD,CAAvB,GAAgCA,IAAxD;AAAA,CAAhB;;AACA,IAAMy1E,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACznE,IAAD,EAAOvjB,KAAP;AAAA,SAAiBqvE,QAAQ,CAACrvE,KAAD,CAAR,IAAmBujB,IAAI,KAAK,UAA5B,KACvCzgB,MAAM,CAACqV,cAAP,CAAsBnY,KAAtB,MAAiC,IAAjC,IAAyCA,KAAK,CAACkW,WAAN,KAAsBpT,MADxB,CAAjB;AAAA,CAAzB;;AAEA,SAASinF,OAAT,CAAiBj/E,MAAjB,EAAyByY,IAAzB,EAA+BzhB,OAA/B,EAAwC;AACtC,MAAIgB,MAAM,CAACsV,SAAP,CAAiBN,cAAjB,CAAgCkC,IAAhC,CAAqClP,MAArC,EAA6CyY,IAA7C,CAAJ,EAAwD;AACtD,WAAOzY,MAAM,CAACyY,IAAD,CAAb;AACD;;AACD,MAAMvjB,KAAK,GAAG8B,OAAO,EAArB;AACAgJ,EAAAA,MAAM,CAACyY,IAAD,CAAN,GAAevjB,KAAf;AACA,SAAOA,KAAP;AACD;;AACD,SAAS6qF,mBAAT,CAA6B//E,MAA7B,EAAqCyY,IAArC,EAA2CqnE,QAA3C,EAAqD;AACnD,MAAOxsC,MAAP,GAAiEtzC,MAAjE,CAAOszC,MAAP;AAAA,MAAessC,QAAf,GAAiE5/E,MAAjE,CAAe4/E,QAAf;AAAA,MAAyBC,SAAzB,GAAiE7/E,MAAjE,CAAyB6/E,SAAzB;AAAA,MAAkDzvD,WAAlD,GAAiEpwB,MAAjE,CAAoCuxC,YAApC;AACA,MAAIr8C,KAAK,GAAGo+C,MAAM,CAAC76B,IAAD,CAAlB;;AACA,MAAI8tD,UAAU,CAACrxE,KAAD,CAAV,IAAqBk7B,WAAW,CAAColB,YAAZ,CAAyB/8B,IAAzB,CAAzB,EAAyD;AACvDvjB,IAAAA,KAAK,GAAGirF,kBAAkB,CAAC1nE,IAAD,EAAOvjB,KAAP,EAAc8K,MAAd,EAAsB8/E,QAAtB,CAA1B;AACD;;AACD,MAAIxb,OAAO,CAACpvE,KAAD,CAAP,IAAkBA,KAAK,CAACvK,MAA5B,EAAoC;AAClCuK,IAAAA,KAAK,GAAGkrF,aAAa,CAAC3nE,IAAD,EAAOvjB,KAAP,EAAc8K,MAAd,EAAsBowB,WAAW,CAACqlB,WAAlC,CAArB;AACD;;AACD,MAAIyqC,gBAAgB,CAACznE,IAAD,EAAOvjB,KAAP,CAApB,EAAmC;AACjCA,IAAAA,KAAK,GAAGwqF,cAAc,CAACxqF,KAAD,EAAQ0qF,QAAR,EAAkBC,SAAS,IAAIA,SAAS,CAACpnE,IAAD,CAAxC,EAAgD2X,WAAhD,CAAtB;AACD;;AACD,SAAOl7B,KAAP;AACD;;AACD,SAASirF,kBAAT,CAA4B1nE,IAA5B,EAAkCvjB,KAAlC,EAAyC8K,MAAzC,EAAiD8/E,QAAjD,EAA2D;AACzD,MAAOxsC,MAAP,GAA8CtzC,MAA9C,CAAOszC,MAAP;AAAA,MAAessC,QAAf,GAA8C5/E,MAA9C,CAAe4/E,QAAf;AAAA,MAAyBC,SAAzB,GAA8C7/E,MAA9C,CAAyB6/E,SAAzB;AAAA,MAAoC9mD,MAApC,GAA8C/4B,MAA9C,CAAoC+4B,MAApC;;AACA,MAAIA,MAAM,CAAC1tB,GAAP,CAAWoN,IAAX,CAAJ,EAAsB;AACpB,UAAM,IAAIjO,KAAJ,CAAU,yBAAyBtb,KAAK,CAACC,IAAN,CAAW4pC,MAAX,EAAmBmX,IAAnB,CAAwB,IAAxB,CAAzB,GAAyD,IAAzD,GAAgEz3B,IAA1E,CAAN;AACD;;AACDsgB,EAAAA,MAAM,CAAC3mC,GAAP,CAAWqmB,IAAX;;AACAvjB,EAAAA,KAAK,GAAGA,KAAK,CAAC0qF,QAAD,EAAWC,SAAS,IAAIC,QAAxB,CAAb;;AACA/mD,EAAAA,MAAM,CAACrhB,MAAP,CAAce,IAAd;;AACA,MAAIynE,gBAAgB,CAACznE,IAAD,EAAOvjB,KAAP,CAApB,EAAmC;AACjCA,IAAAA,KAAK,GAAGmrF,iBAAiB,CAAC/sC,MAAM,CAAC+rC,OAAR,EAAiB/rC,MAAjB,EAAyB76B,IAAzB,EAA+BvjB,KAA/B,CAAzB;AACD;;AACD,SAAOA,KAAP;AACD;;AACD,SAASkrF,aAAT,CAAuB3nE,IAAvB,EAA6BvjB,KAA7B,EAAoC8K,MAApC,EAA4Cy1C,WAA5C,EAAyD;AACvD,MAAOnC,MAAP,GAAiEtzC,MAAjE,CAAOszC,MAAP;AAAA,MAAessC,QAAf,GAAiE5/E,MAAjE,CAAe4/E,QAAf;AAAA,MAAyBC,SAAzB,GAAiE7/E,MAAjE,CAAyB6/E,SAAzB;AAAA,MAAkDzvD,WAAlD,GAAiEpwB,MAAjE,CAAoCuxC,YAApC;;AACA,MAAI+0B,OAAO,CAACsZ,QAAQ,CAACrzF,KAAV,CAAP,IAA2BkpD,WAAW,CAACh9B,IAAD,CAA1C,EAAkD;AAChDvjB,IAAAA,KAAK,GAAGA,KAAK,CAAC0qF,QAAQ,CAACrzF,KAAT,GAAiB2I,KAAK,CAACvK,MAAxB,CAAb;AACD,GAFD,MAEO,IAAI45E,QAAQ,CAACrvE,KAAK,CAAC,CAAD,CAAN,CAAZ,EAAwB;AAC7B,QAAMqZ,GAAG,GAAGrZ,KAAZ;;AACA,QAAMmtB,MAAM,GAAGixB,MAAM,CAAC+rC,OAAP,CAAez2E,MAAf,CAAsB,UAAArb,CAAC;AAAA,aAAIA,CAAC,KAAKghB,GAAV;AAAA,KAAvB,CAAf;;AACArZ,IAAAA,KAAK,GAAG,EAAR;;AAH6B,gDAIVqZ,GAJU;AAAA;;AAAA;AAI7B,6DAAwB;AAAA,YAAbxgB,IAAa;AACtB,YAAM0b,QAAQ,GAAG42E,iBAAiB,CAACh+D,MAAD,EAASixB,MAAT,EAAiB76B,IAAjB,EAAuB1qB,IAAvB,CAAlC;AACAmH,QAAAA,KAAK,CAAChI,IAAN,CAAWwyF,cAAc,CAACj2E,QAAD,EAAWm2E,QAAX,EAAqBC,SAAS,IAAIA,SAAS,CAACpnE,IAAD,CAA3C,EAAmD2X,WAAnD,CAAzB;AACD;AAP4B;AAAA;AAAA;AAAA;AAAA;AAQ9B;;AACD,SAAOl7B,KAAP;AACD;;AACD,SAASorF,eAAT,CAAyBz7C,QAAzB,EAAmCpsB,IAAnC,EAAyCvjB,KAAzC,EAAgD;AAC9C,SAAOqxE,UAAU,CAAC1hC,QAAD,CAAV,GAAuBA,QAAQ,CAACpsB,IAAD,EAAOvjB,KAAP,CAA/B,GAA+C2vC,QAAtD;AACD;;AACD,IAAM07C,QAAQ,GAAG,SAAXA,QAAW,CAAC1kF,GAAD,EAAM7N,MAAN;AAAA,SAAiB6N,GAAG,KAAK,IAAR,GAAe7N,MAAf,GAC9B,OAAO6N,GAAP,KAAe,QAAf,GAA0BsqE,gBAAgB,CAACn4E,MAAD,EAAS6N,GAAT,CAA1C,GAA0DnR,SAD7C;AAAA,CAAjB;;AAEA,SAAS81F,SAAT,CAAmB9pF,GAAnB,EAAwB+pF,YAAxB,EAAsC5kF,GAAtC,EAA2C6kF,cAA3C,EAA2DxrF,KAA3D,EAAkE;AAAA,8CAC3CurF,YAD2C;AAAA;;AAAA;AAChE,2DAAmC;AAAA,UAAxBzyF,MAAwB;AACjC,UAAMohD,KAAK,GAAGmxC,QAAQ,CAAC1kF,GAAD,EAAM7N,MAAN,CAAtB;;AACA,UAAIohD,KAAJ,EAAW;AACT14C,QAAAA,GAAG,CAACtE,GAAJ,CAAQg9C,KAAR;AACA,YAAMvK,QAAQ,GAAGy7C,eAAe,CAAClxC,KAAK,CAACr1B,SAAP,EAAkBle,GAAlB,EAAuB3G,KAAvB,CAAhC;;AACA,YAAIoxE,OAAO,CAACzhC,QAAD,CAAP,IAAqBA,QAAQ,KAAKhpC,GAAlC,IAAyCgpC,QAAQ,KAAK67C,cAA1D,EAA0E;AACxE,iBAAO77C,QAAP;AACD;AACF,OAND,MAMO,IAAIuK,KAAK,KAAK,KAAV,IAAmBk3B,OAAO,CAACoa,cAAD,CAA1B,IAA8C7kF,GAAG,KAAK6kF,cAA1D,EAA0E;AAC/E,eAAO,IAAP;AACD;AACF;AAZ+D;AAAA;AAAA;AAAA;AAAA;;AAahE,SAAO,KAAP;AACD;;AACD,SAASL,iBAAT,CAA2BI,YAA3B,EAAyCh3E,QAAzC,EAAmDgP,IAAnD,EAAyDvjB,KAAzD,EAAgE;AAC9D,MAAMwpF,UAAU,GAAGj1E,QAAQ,CAACk3E,WAA5B;AACA,MAAM97C,QAAQ,GAAGy7C,eAAe,CAAC72E,QAAQ,CAACsQ,SAAV,EAAqBtB,IAArB,EAA2BvjB,KAA3B,CAAhC;AACA,MAAM0rF,SAAS,gCAAOH,YAAP,sBAAwB/B,UAAxB,EAAf;AACA,MAAMhoF,GAAG,GAAG,IAAIs9C,GAAJ,EAAZ;AACAt9C,EAAAA,GAAG,CAACtE,GAAJ,CAAQ8C,KAAR;AACA,MAAI2G,GAAG,GAAGglF,gBAAgB,CAACnqF,GAAD,EAAMkqF,SAAN,EAAiBnoE,IAAjB,EAAuBosB,QAAQ,IAAIpsB,IAAnC,EAAyCvjB,KAAzC,CAA1B;;AACA,MAAI2G,GAAG,KAAK,IAAZ,EAAkB;AAChB,WAAO,KAAP;AACD;;AACD,MAAIyqE,OAAO,CAACzhC,QAAD,CAAP,IAAqBA,QAAQ,KAAKpsB,IAAtC,EAA4C;AAC1C5c,IAAAA,GAAG,GAAGglF,gBAAgB,CAACnqF,GAAD,EAAMkqF,SAAN,EAAiB/7C,QAAjB,EAA2BhpC,GAA3B,EAAgC3G,KAAhC,CAAtB;;AACA,QAAI2G,GAAG,KAAK,IAAZ,EAAkB;AAChB,aAAO,KAAP;AACD;AACF;;AACD,SAAO4iF,eAAe,CAACvvF,KAAK,CAACC,IAAN,CAAWuH,GAAX,CAAD,EAAkB,CAAC,EAAD,CAAlB,EAAwBgoF,UAAxB,EAAoC75C,QAApC,EACpB;AAAA,WAAMi8C,YAAY,CAACr3E,QAAD,EAAWgP,IAAX,EAAiBvjB,KAAjB,CAAlB;AAAA,GADoB,CAAtB;AAED;;AACD,SAAS2rF,gBAAT,CAA0BnqF,GAA1B,EAA+BkqF,SAA/B,EAA0C/kF,GAA1C,EAA+CgpC,QAA/C,EAAyD92C,IAAzD,EAA+D;AAC7D,SAAO8N,GAAP,EAAY;AACVA,IAAAA,GAAG,GAAG2kF,SAAS,CAAC9pF,GAAD,EAAMkqF,SAAN,EAAiB/kF,GAAjB,EAAsBgpC,QAAtB,EAAgC92C,IAAhC,CAAf;AACD;;AACD,SAAO8N,GAAP;AACD;;AACD,SAASilF,YAAT,CAAsBr3E,QAAtB,EAAgCgP,IAAhC,EAAsCvjB,KAAtC,EAA6C;AAC3C,MAAMlH,MAAM,GAAGyb,QAAQ,CAACs3E,UAAT,EAAf;;AACA,MAAI,EAAEtoE,IAAI,IAAIzqB,MAAV,CAAJ,EAAuB;AACrBA,IAAAA,MAAM,CAACyqB,IAAD,CAAN,GAAe,EAAf;AACD;;AACD,MAAMzY,MAAM,GAAGhS,MAAM,CAACyqB,IAAD,CAArB;;AACA,MAAI6rD,OAAO,CAACtkE,MAAD,CAAP,IAAmBukE,QAAQ,CAACrvE,KAAD,CAA/B,EAAwC;AACtC,WAAOA,KAAP;AACD;;AACD,SAAO8K,MAAP;AACD;;AACD,SAASk/E,oBAAT,CAA8BzmE,IAA9B,EAAoCqM,QAApC,EAA8CzC,MAA9C,EAAsD8c,KAAtD,EAA6D;AAC3D,MAAIjqC,KAAJ;;AAD2D,8CAEtC4vB,QAFsC;AAAA;;AAAA;AAE3D,2DAA+B;AAAA,UAApB03B,MAAoB;AAC7BtnD,MAAAA,KAAK,GAAGypF,QAAQ,CAACsB,OAAO,CAACzjC,MAAD,EAAS/jC,IAAT,CAAR,EAAwB4J,MAAxB,CAAhB;;AACA,UAAIikD,OAAO,CAACpxE,KAAD,CAAX,EAAoB;AAClB,eAAOgrF,gBAAgB,CAACznE,IAAD,EAAOvjB,KAAP,CAAhB,GACHmrF,iBAAiB,CAACh+D,MAAD,EAAS8c,KAAT,EAAgB1mB,IAAhB,EAAsBvjB,KAAtB,CADd,GAEHA,KAFJ;AAGD;AACF;AAT0D;AAAA;AAAA;AAAA;AAAA;AAU5D;;AACD,SAASypF,QAAT,CAAkB9iF,GAAlB,EAAuBwmB,MAAvB,EAA+B;AAAA,8CACTA,MADS;AAAA;;AAAA;AAC7B,2DAA4B;AAAA,UAAjB+sB,KAAiB;;AAC1B,UAAI,CAACA,KAAL,EAAY;AACV;AACD;;AACD,UAAMl6C,KAAK,GAAGk6C,KAAK,CAACvzC,GAAD,CAAnB;;AACA,UAAIyqE,OAAO,CAACpxE,KAAD,CAAX,EAAoB;AAClB,eAAOA,KAAP;AACD;AACF;AAT4B;AAAA;AAAA;AAAA;AAAA;AAU9B;;AACD,SAASoqF,oBAAT,CAA8Bt/E,MAA9B,EAAsC;AACpC,MAAI/H,IAAI,GAAG+H,MAAM,CAACg/E,KAAlB;;AACA,MAAI,CAAC/mF,IAAL,EAAW;AACTA,IAAAA,IAAI,GAAG+H,MAAM,CAACg/E,KAAP,GAAegC,wBAAwB,CAAChhF,MAAM,CAACq/E,OAAR,CAA9C;AACD;;AACD,SAAOpnF,IAAP;AACD;;AACD,SAAS+oF,wBAAT,CAAkC3+D,MAAlC,EAA0C;AACxC,MAAM3rB,GAAG,GAAG,IAAIs9C,GAAJ,EAAZ;;AADwC,8CAEpB3xB,MAFoB;AAAA;;AAAA;AAExC,2DAA4B;AAAA,UAAjB+sB,KAAiB;;AAAA,kDACRp3C,MAAM,CAACC,IAAP,CAAYm3C,KAAZ,EAAmBxmC,MAAnB,CAA0B,UAAA08D,CAAC;AAAA,eAAI,CAACA,CAAC,CAACjjC,UAAF,CAAa,GAAb,CAAL;AAAA,OAA3B,CADQ;AAAA;;AAAA;AAC1B,+DAAsE;AAAA,cAA3DxmC,GAA2D;AACpEnF,UAAAA,GAAG,CAACtE,GAAJ,CAAQyJ,GAAR;AACD;AAHyB;AAAA;AAAA;AAAA;AAAA;AAI3B;AANuC;AAAA;AAAA;AAAA;AAAA;;AAOxC,SAAO3M,KAAK,CAACC,IAAN,CAAWuH,GAAX,CAAP;AACD;;AAED,IAAMuqF,OAAO,GAAG/vE,MAAM,CAAC+vE,OAAP,IAAkB,KAAlC;;AACA,IAAMC,QAAQ,GAAG,SAAXA,QAAW,CAACl1D,MAAD,EAAS7gC,CAAT;AAAA,SAAeA,CAAC,GAAG6gC,MAAM,CAACrhC,MAAX,IAAqB,CAACqhC,MAAM,CAAC7gC,CAAD,CAAN,CAAUkhC,IAAhC,IAAwCL,MAAM,CAAC7gC,CAAD,CAA7D;AAAA,CAAjB;;AACA,IAAMg2F,YAAY,GAAG,SAAfA,YAAe,CAAChgE,SAAD;AAAA,SAAeA,SAAS,KAAK,GAAd,GAAoB,GAApB,GAA0B,GAAzC;AAAA,CAArB;;AACA,SAASigE,WAAT,CAAqBlvD,UAArB,EAAiCmvD,WAAjC,EAA8CC,UAA9C,EAA0DvsE,CAA1D,EAA6D;AAC3D,MAAMosC,QAAQ,GAAGjvB,UAAU,CAAC7F,IAAX,GAAkBg1D,WAAlB,GAAgCnvD,UAAjD;AACA,MAAMt7B,OAAO,GAAGyqF,WAAhB;AACA,MAAMxpF,IAAI,GAAGypF,UAAU,CAACj1D,IAAX,GAAkBg1D,WAAlB,GAAgCC,UAA7C;AACA,MAAMC,GAAG,GAAG9Y,qBAAqB,CAAC7xE,OAAD,EAAUuqD,QAAV,CAAjC;AACA,MAAMqgC,GAAG,GAAG/Y,qBAAqB,CAAC5wE,IAAD,EAAOjB,OAAP,CAAjC;AACA,MAAI6qF,GAAG,GAAGF,GAAG,IAAIA,GAAG,GAAGC,GAAV,CAAb;AACA,MAAIE,GAAG,GAAGF,GAAG,IAAID,GAAG,GAAGC,GAAV,CAAb;AACAC,EAAAA,GAAG,GAAGvlF,KAAK,CAACulF,GAAD,CAAL,GAAa,CAAb,GAAiBA,GAAvB;AACAC,EAAAA,GAAG,GAAGxlF,KAAK,CAACwlF,GAAD,CAAL,GAAa,CAAb,GAAiBA,GAAvB;AACA,MAAMC,EAAE,GAAG5sE,CAAC,GAAG0sE,GAAf;AACA,MAAMG,EAAE,GAAG7sE,CAAC,GAAG2sE,GAAf;AACA,SAAO;AACLvgC,IAAAA,QAAQ,EAAE;AACRzoD,MAAAA,CAAC,EAAE9B,OAAO,CAAC8B,CAAR,GAAYipF,EAAE,IAAI9pF,IAAI,CAACa,CAAL,GAASyoD,QAAQ,CAACzoD,CAAtB,CADT;AAERC,MAAAA,CAAC,EAAE/B,OAAO,CAAC+B,CAAR,GAAYgpF,EAAE,IAAI9pF,IAAI,CAACc,CAAL,GAASwoD,QAAQ,CAACxoD,CAAtB;AAFT,KADL;AAKLd,IAAAA,IAAI,EAAE;AACJa,MAAAA,CAAC,EAAE9B,OAAO,CAAC8B,CAAR,GAAYkpF,EAAE,IAAI/pF,IAAI,CAACa,CAAL,GAASyoD,QAAQ,CAACzoD,CAAtB,CADb;AAEJC,MAAAA,CAAC,EAAE/B,OAAO,CAAC+B,CAAR,GAAYipF,EAAE,IAAI/pF,IAAI,CAACc,CAAL,GAASwoD,QAAQ,CAACxoD,CAAtB;AAFb;AALD,GAAP;AAUD;;AACD,SAASkpF,cAAT,CAAwB71D,MAAxB,EAAgC81D,MAAhC,EAAwCC,EAAxC,EAA4C;AAC1C,MAAMC,SAAS,GAAGh2D,MAAM,CAACrhC,MAAzB;AACA,MAAIs3F,MAAJ,EAAYC,KAAZ,EAAmBC,IAAnB,EAAyBC,gBAAzB,EAA2CC,YAA3C;AACA,MAAIC,UAAU,GAAGpB,QAAQ,CAACl1D,MAAD,EAAS,CAAT,CAAzB;;AACA,OAAK,IAAI7gC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG62F,SAAS,GAAG,CAAhC,EAAmC,EAAE72F,CAArC,EAAwC;AACtCk3F,IAAAA,YAAY,GAAGC,UAAf;AACAA,IAAAA,UAAU,GAAGpB,QAAQ,CAACl1D,MAAD,EAAS7gC,CAAC,GAAG,CAAb,CAArB;;AACA,QAAI,CAACk3F,YAAD,IAAiB,CAACC,UAAtB,EAAkC;AAChC;AACD;;AACD,QAAInb,YAAY,CAAC2a,MAAM,CAAC32F,CAAD,CAAP,EAAY,CAAZ,EAAe81F,OAAf,CAAhB,EAAyC;AACvCc,MAAAA,EAAE,CAAC52F,CAAD,CAAF,GAAQ42F,EAAE,CAAC52F,CAAC,GAAG,CAAL,CAAF,GAAY,CAApB;AACA;AACD;;AACD82F,IAAAA,MAAM,GAAGF,EAAE,CAAC52F,CAAD,CAAF,GAAQ22F,MAAM,CAAC32F,CAAD,CAAvB;AACA+2F,IAAAA,KAAK,GAAGH,EAAE,CAAC52F,CAAC,GAAG,CAAL,CAAF,GAAY22F,MAAM,CAAC32F,CAAD,CAA1B;AACAi3F,IAAAA,gBAAgB,GAAG10F,IAAI,CAACipC,GAAL,CAASsrD,MAAT,EAAiB,CAAjB,IAAsBv0F,IAAI,CAACipC,GAAL,CAASurD,KAAT,EAAgB,CAAhB,CAAzC;;AACA,QAAIE,gBAAgB,IAAI,CAAxB,EAA2B;AACzB;AACD;;AACDD,IAAAA,IAAI,GAAG,IAAIz0F,IAAI,CAACgpC,IAAL,CAAU0rD,gBAAV,CAAX;AACAL,IAAAA,EAAE,CAAC52F,CAAD,CAAF,GAAQ82F,MAAM,GAAGE,IAAT,GAAgBL,MAAM,CAAC32F,CAAD,CAA9B;AACA42F,IAAAA,EAAE,CAAC52F,CAAC,GAAG,CAAL,CAAF,GAAY+2F,KAAK,GAAGC,IAAR,GAAeL,MAAM,CAAC32F,CAAD,CAAjC;AACD;AACF;;AACD,SAASo3F,eAAT,CAAyBv2D,MAAzB,EAAiC+1D,EAAjC,EAAsD;AAAA,MAAjB5gE,SAAiB,uEAAL,GAAK;AACpD,MAAMqhE,SAAS,GAAGrB,YAAY,CAAChgE,SAAD,CAA9B;AACA,MAAM6gE,SAAS,GAAGh2D,MAAM,CAACrhC,MAAzB;AACA,MAAIw1C,KAAJ,EAAWsiD,WAAX,EAAwBJ,YAAxB;AACA,MAAIC,UAAU,GAAGpB,QAAQ,CAACl1D,MAAD,EAAS,CAAT,CAAzB;;AACA,OAAK,IAAI7gC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG62F,SAApB,EAA+B,EAAE72F,CAAjC,EAAoC;AAClCs3F,IAAAA,WAAW,GAAGJ,YAAd;AACAA,IAAAA,YAAY,GAAGC,UAAf;AACAA,IAAAA,UAAU,GAAGpB,QAAQ,CAACl1D,MAAD,EAAS7gC,CAAC,GAAG,CAAb,CAArB;;AACA,QAAI,CAACk3F,YAAL,EAAmB;AACjB;AACD;;AACD,QAAMn2D,MAAM,GAAGm2D,YAAY,CAAClhE,SAAD,CAA3B;AACA,QAAMiL,MAAM,GAAGi2D,YAAY,CAACG,SAAD,CAA3B;;AACA,QAAIC,WAAJ,EAAiB;AACftiD,MAAAA,KAAK,GAAG,CAACjU,MAAM,GAAGu2D,WAAW,CAACthE,SAAD,CAArB,IAAoC,CAA5C;AACAkhE,MAAAA,YAAY,cAAOlhE,SAAP,EAAZ,GAAkC+K,MAAM,GAAGiU,KAA3C;AACAkiD,MAAAA,YAAY,cAAOG,SAAP,EAAZ,GAAkCp2D,MAAM,GAAG+T,KAAK,GAAG4hD,EAAE,CAAC52F,CAAD,CAArD;AACD;;AACD,QAAIm3F,UAAJ,EAAgB;AACdniD,MAAAA,KAAK,GAAG,CAACmiD,UAAU,CAACnhE,SAAD,CAAV,GAAwB+K,MAAzB,IAAmC,CAA3C;AACAm2D,MAAAA,YAAY,cAAOlhE,SAAP,EAAZ,GAAkC+K,MAAM,GAAGiU,KAA3C;AACAkiD,MAAAA,YAAY,cAAOG,SAAP,EAAZ,GAAkCp2D,MAAM,GAAG+T,KAAK,GAAG4hD,EAAE,CAAC52F,CAAD,CAArD;AACD;AACF;AACF;;AACD,SAASu3F,mBAAT,CAA6B12D,MAA7B,EAAsD;AAAA,MAAjB7K,SAAiB,uEAAL,GAAK;AACpD,MAAMqhE,SAAS,GAAGrB,YAAY,CAAChgE,SAAD,CAA9B;AACA,MAAM6gE,SAAS,GAAGh2D,MAAM,CAACrhC,MAAzB;AACA,MAAMm3F,MAAM,GAAG5yF,KAAK,CAAC8yF,SAAD,CAAL,CAAiB5tD,IAAjB,CAAsB,CAAtB,CAAf;AACA,MAAM2tD,EAAE,GAAG7yF,KAAK,CAAC8yF,SAAD,CAAhB;AACA,MAAI72F,CAAJ,EAAOs3F,WAAP,EAAoBJ,YAApB;AACA,MAAIC,UAAU,GAAGpB,QAAQ,CAACl1D,MAAD,EAAS,CAAT,CAAzB;;AACA,OAAK7gC,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG62F,SAAhB,EAA2B,EAAE72F,CAA7B,EAAgC;AAC9Bs3F,IAAAA,WAAW,GAAGJ,YAAd;AACAA,IAAAA,YAAY,GAAGC,UAAf;AACAA,IAAAA,UAAU,GAAGpB,QAAQ,CAACl1D,MAAD,EAAS7gC,CAAC,GAAG,CAAb,CAArB;;AACA,QAAI,CAACk3F,YAAL,EAAmB;AACjB;AACD;;AACD,QAAIC,UAAJ,EAAgB;AACd,UAAMK,UAAU,GAAGL,UAAU,CAACnhE,SAAD,CAAV,GAAwBkhE,YAAY,CAAClhE,SAAD,CAAvD;AACA2gE,MAAAA,MAAM,CAAC32F,CAAD,CAAN,GAAYw3F,UAAU,KAAK,CAAf,GAAmB,CAACL,UAAU,CAACE,SAAD,CAAV,GAAwBH,YAAY,CAACG,SAAD,CAArC,IAAoDG,UAAvE,GAAoF,CAAhG;AACD;;AACDZ,IAAAA,EAAE,CAAC52F,CAAD,CAAF,GAAQ,CAACs3F,WAAD,GAAeX,MAAM,CAAC32F,CAAD,CAArB,GACJ,CAACm3F,UAAD,GAAcR,MAAM,CAAC32F,CAAC,GAAG,CAAL,CAApB,GACC67E,IAAI,CAAC8a,MAAM,CAAC32F,CAAC,GAAG,CAAL,CAAP,CAAJ,KAAwB67E,IAAI,CAAC8a,MAAM,CAAC32F,CAAD,CAAP,CAA7B,GAA4C,CAA5C,GACA,CAAC22F,MAAM,CAAC32F,CAAC,GAAG,CAAL,CAAN,GAAgB22F,MAAM,CAAC32F,CAAD,CAAvB,IAA8B,CAHlC;AAID;;AACD02F,EAAAA,cAAc,CAAC71D,MAAD,EAAS81D,MAAT,EAAiBC,EAAjB,CAAd;AACAQ,EAAAA,eAAe,CAACv2D,MAAD,EAAS+1D,EAAT,EAAa5gE,SAAb,CAAf;AACD;;AACD,SAASyhE,eAAT,CAAyBzsB,EAAzB,EAA6BhhE,GAA7B,EAAkCC,GAAlC,EAAuC;AACrC,SAAO1H,IAAI,CAAC0H,GAAL,CAAS1H,IAAI,CAACyH,GAAL,CAASghE,EAAT,EAAa/gE,GAAb,CAAT,EAA4BD,GAA5B,CAAP;AACD;;AACD,SAASyuD,eAAT,CAAyB53B,MAAzB,EAAiC7H,IAAjC,EAAuC;AACrC,MAAIh5B,CAAJ,EAAOgxB,IAAP,EAAa8P,KAAb,EAAoB42D,MAApB,EAA4BC,UAA5B;;AACA,MAAIC,UAAU,GAAG1H,cAAc,CAACrvD,MAAM,CAAC,CAAD,CAAP,EAAY7H,IAAZ,CAA/B;;AACA,OAAKh5B,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAG6P,MAAM,CAACrhC,MAA1B,EAAkCQ,CAAC,GAAGgxB,IAAtC,EAA4C,EAAEhxB,CAA9C,EAAiD;AAC/C23F,IAAAA,UAAU,GAAGD,MAAb;AACAA,IAAAA,MAAM,GAAGE,UAAT;AACAA,IAAAA,UAAU,GAAG53F,CAAC,GAAGgxB,IAAI,GAAG,CAAX,IAAgBk/D,cAAc,CAACrvD,MAAM,CAAC7gC,CAAC,GAAG,CAAL,CAAP,EAAgBg5B,IAAhB,CAA3C;;AACA,QAAI,CAAC0+D,MAAL,EAAa;AACX;AACD;;AACD52D,IAAAA,KAAK,GAAGD,MAAM,CAAC7gC,CAAD,CAAd;;AACA,QAAI23F,UAAJ,EAAgB;AACd72D,MAAAA,KAAK,CAAC0vD,IAAN,GAAaiH,eAAe,CAAC32D,KAAK,CAAC0vD,IAAP,EAAax3D,IAAI,CAACx1B,IAAlB,EAAwBw1B,IAAI,CAACv1B,KAA7B,CAA5B;AACAq9B,MAAAA,KAAK,CAAC4vD,IAAN,GAAa+G,eAAe,CAAC32D,KAAK,CAAC4vD,IAAP,EAAa13D,IAAI,CAAC11B,GAAlB,EAAuB01B,IAAI,CAACz1B,MAA5B,CAA5B;AACD;;AACD,QAAIq0F,UAAJ,EAAgB;AACd92D,MAAAA,KAAK,CAAC2vD,IAAN,GAAagH,eAAe,CAAC32D,KAAK,CAAC2vD,IAAP,EAAaz3D,IAAI,CAACx1B,IAAlB,EAAwBw1B,IAAI,CAACv1B,KAA7B,CAA5B;AACAq9B,MAAAA,KAAK,CAAC6vD,IAAN,GAAa8G,eAAe,CAAC32D,KAAK,CAAC6vD,IAAP,EAAa33D,IAAI,CAAC11B,GAAlB,EAAuB01B,IAAI,CAACz1B,MAA5B,CAA5B;AACD;AACF;AACF;;AACD,SAASs0F,0BAAT,CAAoCh3D,MAApC,EAA4ChgC,OAA5C,EAAqDm4B,IAArD,EAA2DlzB,IAA3D,EAAiEkwB,SAAjE,EAA4E;AAC1E,MAAIh2B,CAAJ,EAAOgxB,IAAP,EAAa8P,KAAb,EAAoBg3D,aAApB;;AACA,MAAIj3F,OAAO,CAAC6lC,QAAZ,EAAsB;AACpB7F,IAAAA,MAAM,GAAGA,MAAM,CAACpjB,MAAP,CAAc,UAACutD,EAAD;AAAA,aAAQ,CAACA,EAAE,CAAC9pC,IAAZ;AAAA,KAAd,CAAT;AACD;;AACD,MAAIrgC,OAAO,CAACw1D,sBAAR,KAAmC,UAAvC,EAAmD;AACjDkhC,IAAAA,mBAAmB,CAAC12D,MAAD,EAAS7K,SAAT,CAAnB;AACD,GAFD,MAEO;AACL,QAAIyB,IAAI,GAAG3xB,IAAI,GAAG+6B,MAAM,CAACA,MAAM,CAACrhC,MAAP,GAAgB,CAAjB,CAAT,GAA+BqhC,MAAM,CAAC,CAAD,CAApD;;AACA,SAAK7gC,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAG6P,MAAM,CAACrhC,MAA1B,EAAkCQ,CAAC,GAAGgxB,IAAtC,EAA4C,EAAEhxB,CAA9C,EAAiD;AAC/C8gC,MAAAA,KAAK,GAAGD,MAAM,CAAC7gC,CAAD,CAAd;AACA83F,MAAAA,aAAa,GAAG7B,WAAW,CACzBx+D,IADyB,EAEzBqJ,KAFyB,EAGzBD,MAAM,CAACt+B,IAAI,CAACyH,GAAL,CAAShK,CAAC,GAAG,CAAb,EAAgBgxB,IAAI,IAAIlrB,IAAI,GAAG,CAAH,GAAO,CAAf,CAApB,IAAyCkrB,IAA1C,CAHmB,EAIzBnwB,OAAO,CAACu1D,OAJiB,CAA3B;AAMAt1B,MAAAA,KAAK,CAAC0vD,IAAN,GAAasH,aAAa,CAAC9hC,QAAd,CAAuBzoD,CAApC;AACAuzB,MAAAA,KAAK,CAAC4vD,IAAN,GAAaoH,aAAa,CAAC9hC,QAAd,CAAuBxoD,CAApC;AACAszB,MAAAA,KAAK,CAAC2vD,IAAN,GAAaqH,aAAa,CAACprF,IAAd,CAAmBa,CAAhC;AACAuzB,MAAAA,KAAK,CAAC6vD,IAAN,GAAamH,aAAa,CAACprF,IAAd,CAAmBc,CAAhC;AACAiqB,MAAAA,IAAI,GAAGqJ,KAAP;AACD;AACF;;AACD,MAAIjgC,OAAO,CAAC43D,eAAZ,EAA6B;AAC3BA,IAAAA,eAAe,CAAC53B,MAAD,EAAS7H,IAAT,CAAf;AACD;AACF;;AAED,SAAS++D,eAAT,GAA2B;AACzB,SAAO,OAAO/0F,MAAP,KAAkB,WAAlB,IAAiC,OAAOhF,QAAP,KAAoB,WAA5D;AACD;;AACD,SAASg6F,cAAT,CAAwBC,OAAxB,EAAiC;AAC/B,MAAIp1F,MAAM,GAAGo1F,OAAO,CAAC3wE,UAArB;;AACA,MAAIzkB,MAAM,IAAIA,MAAM,CAACuX,QAAP,OAAsB,qBAApC,EAA2D;AACzDvX,IAAAA,MAAM,GAAGA,MAAM,CAACq1F,IAAhB;AACD;;AACD,SAAOr1F,MAAP;AACD;;AACD,SAASs1F,aAAT,CAAuBC,UAAvB,EAAmCj5E,IAAnC,EAAyCk5E,cAAzC,EAAyD;AACvD,MAAIC,aAAJ;;AACA,MAAI,OAAOF,UAAP,KAAsB,QAA1B,EAAoC;AAClCE,IAAAA,aAAa,GAAG/5F,QAAQ,CAAC65F,UAAD,EAAa,EAAb,CAAxB;;AACA,QAAIA,UAAU,CAACvxF,OAAX,CAAmB,GAAnB,MAA4B,CAAC,CAAjC,EAAoC;AAClCyxF,MAAAA,aAAa,GAAGA,aAAa,GAAG,GAAhB,GAAsBn5E,IAAI,CAACmI,UAAL,CAAgB+wE,cAAhB,CAAtC;AACD;AACF,GALD,MAKO;AACLC,IAAAA,aAAa,GAAGF,UAAhB;AACD;;AACD,SAAOE,aAAP;AACD;;AACD,IAAMv6F,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACc,OAAD;AAAA,SAAamE,MAAM,CAACjF,gBAAP,CAAwBc,OAAxB,EAAiC,IAAjC,CAAb;AAAA,CAAzB;;AACA,SAASu7B,QAAT,CAAkByQ,EAAlB,EAAsB6Z,QAAtB,EAAgC;AAC9B,SAAO3mD,gBAAgB,CAAC8sC,EAAD,CAAhB,CAAqB0tD,gBAArB,CAAsC7zC,QAAtC,CAAP;AACD;;AACD,IAAM3U,SAAS,GAAG,CAAC,KAAD,EAAQ,OAAR,EAAiB,QAAjB,EAA2B,MAA3B,CAAlB;;AACA,SAASyoD,kBAAT,CAA4BC,MAA5B,EAAoC70F,KAApC,EAA2C80F,MAA3C,EAAmD;AACjD,MAAMvvE,MAAM,GAAG,EAAf;AACAuvE,EAAAA,MAAM,GAAGA,MAAM,GAAG,MAAMA,MAAT,GAAkB,EAAjC;;AACA,OAAK,IAAI14F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,CAApB,EAAuBA,CAAC,EAAxB,EAA4B;AAC1B,QAAM+sC,GAAG,GAAGgD,SAAS,CAAC/vC,CAAD,CAArB;AACAmpB,IAAAA,MAAM,CAAC4jB,GAAD,CAAN,GAAcl8B,UAAU,CAAC4nF,MAAM,CAAC70F,KAAK,GAAG,GAAR,GAAcmpC,GAAd,GAAoB2rD,MAArB,CAAP,CAAV,IAAkD,CAAhE;AACD;;AACDvvE,EAAAA,MAAM,CAACxlB,KAAP,GAAewlB,MAAM,CAAC3lB,IAAP,GAAc2lB,MAAM,CAAC1lB,KAApC;AACA0lB,EAAAA,MAAM,CAACzlB,MAAP,GAAgBylB,MAAM,CAAC7lB,GAAP,GAAa6lB,MAAM,CAAC5lB,MAApC;AACA,SAAO4lB,MAAP;AACD;;AACD,IAAMwvE,YAAY,GAAG,SAAfA,YAAe,CAACprF,CAAD,EAAIC,CAAJ,EAAOqH,MAAP;AAAA,SAAkB,CAACtH,CAAC,GAAG,CAAJ,IAASC,CAAC,GAAG,CAAd,MAAqB,CAACqH,MAAD,IAAW,CAACA,MAAM,CAAC+jF,UAAxC,CAAlB;AAAA,CAArB;;AACA,SAASC,iBAAT,CAA2BC,GAA3B,EAAgC3nD,MAAhC,EAAwC;AACtC,MAAM9uC,CAAC,GAAGy2F,GAAG,CAACjmD,MAAJ,IAAcimD,GAAxB;AACA,MAAMC,OAAO,GAAG12F,CAAC,CAAC02F,OAAlB;AACA,MAAMh8C,MAAM,GAAGg8C,OAAO,IAAIA,OAAO,CAACv5F,MAAnB,GAA4Bu5F,OAAO,CAAC,CAAD,CAAnC,GAAyC12F,CAAxD;AACA,MAAOo/B,OAAP,GAA2Bsb,MAA3B,CAAOtb,OAAP;AAAA,MAAgBC,OAAhB,GAA2Bqb,MAA3B,CAAgBrb,OAAhB;AACA,MAAIuL,GAAG,GAAG,KAAV;AACA,MAAI1/B,CAAJ,EAAOC,CAAP;;AACA,MAAImrF,YAAY,CAACl3D,OAAD,EAAUC,OAAV,EAAmBr/B,CAAC,CAACwS,MAArB,CAAhB,EAA8C;AAC5CtH,IAAAA,CAAC,GAAGk0B,OAAJ;AACAj0B,IAAAA,CAAC,GAAGk0B,OAAJ;AACD,GAHD,MAGO;AACL,QAAMl5B,IAAI,GAAG2oC,MAAM,CAAC1oC,qBAAP,EAAb;AACA8E,IAAAA,CAAC,GAAGwvC,MAAM,CAACi8C,OAAP,GAAiBxwF,IAAI,CAAChF,IAA1B;AACAgK,IAAAA,CAAC,GAAGuvC,MAAM,CAACk8C,OAAP,GAAiBzwF,IAAI,CAAClF,GAA1B;AACA2pC,IAAAA,GAAG,GAAG,IAAN;AACD;;AACD,SAAO;AAAC1/B,IAAAA,CAAC,EAADA,CAAD;AAAIC,IAAAA,CAAC,EAADA,CAAJ;AAAOy/B,IAAAA,GAAG,EAAHA;AAAP,GAAP;AACD;;AACD,SAAShD,mBAAT,CAA6B6uD,GAA7B,EAAkCn4F,KAAlC,EAAyC;AACvC,MAAOwwC,MAAP,GAA0CxwC,KAA1C,CAAOwwC,MAAP;AAAA,MAAeqC,uBAAf,GAA0C7yC,KAA1C,CAAe6yC,uBAAf;AACA,MAAM5vC,KAAK,GAAG7F,gBAAgB,CAACozC,MAAD,CAA9B;AACA,MAAM+nD,SAAS,GAAGt1F,KAAK,CAACwuC,SAAN,KAAoB,YAAtC;AACA,MAAM+mD,QAAQ,GAAGX,kBAAkB,CAAC50F,KAAD,EAAQ,SAAR,CAAnC;AACA,MAAMw1F,OAAO,GAAGZ,kBAAkB,CAAC50F,KAAD,EAAQ,QAAR,EAAkB,OAAlB,CAAlC;;AACA,2BAAoBi1F,iBAAiB,CAACC,GAAD,EAAM3nD,MAAN,CAArC;AAAA,MAAO5jC,CAAP,sBAAOA,CAAP;AAAA,MAAUC,CAAV,sBAAUA,CAAV;AAAA,MAAay/B,GAAb,sBAAaA,GAAb;;AACA,MAAM8iD,OAAO,GAAGoJ,QAAQ,CAAC31F,IAAT,IAAiBypC,GAAG,IAAImsD,OAAO,CAAC51F,IAAhC,CAAhB;AACA,MAAMrC,OAAO,GAAGg4F,QAAQ,CAAC71F,GAAT,IAAgB2pC,GAAG,IAAImsD,OAAO,CAAC91F,GAA/B,CAAhB;AACA,MAAKK,KAAL,GAAsBhD,KAAtB,CAAKgD,KAAL;AAAA,MAAYD,MAAZ,GAAsB/C,KAAtB,CAAY+C,MAAZ;;AACA,MAAIw1F,SAAJ,EAAe;AACbv1F,IAAAA,KAAK,IAAIw1F,QAAQ,CAACx1F,KAAT,GAAiBy1F,OAAO,CAACz1F,KAAlC;AACAD,IAAAA,MAAM,IAAIy1F,QAAQ,CAACz1F,MAAT,GAAkB01F,OAAO,CAAC11F,MAApC;AACD;;AACD,SAAO;AACL6J,IAAAA,CAAC,EAAEhL,IAAI,CAACu1C,KAAL,CAAW,CAACvqC,CAAC,GAAGwiF,OAAL,IAAgBpsF,KAAhB,GAAwBwtC,MAAM,CAACxtC,KAA/B,GAAuC6vC,uBAAlD,CADE;AAELhmC,IAAAA,CAAC,EAAEjL,IAAI,CAACu1C,KAAL,CAAW,CAACtqC,CAAC,GAAGrM,OAAL,IAAgBuC,MAAhB,GAAyBytC,MAAM,CAACztC,MAAhC,GAAyC8vC,uBAApD;AAFE,GAAP;AAID;;AACD,SAAS6lD,gBAAT,CAA0BloD,MAA1B,EAAkCxtC,KAAlC,EAAyCD,MAAzC,EAAiD;AAC/C,MAAIggC,QAAJ,EAAcC,SAAd;;AACA,MAAIhgC,KAAK,KAAKpE,SAAV,IAAuBmE,MAAM,KAAKnE,SAAtC,EAAiD;AAC/C,QAAM8K,SAAS,GAAG2tF,cAAc,CAAC7mD,MAAD,CAAhC;;AACA,QAAI,CAAC9mC,SAAL,EAAgB;AACd1G,MAAAA,KAAK,GAAGwtC,MAAM,CAAChuC,WAAf;AACAO,MAAAA,MAAM,GAAGytC,MAAM,CAAC/tC,YAAhB;AACD,KAHD,MAGO;AACL,UAAMoF,IAAI,GAAG6B,SAAS,CAAC5B,qBAAV,EAAb;AACA,UAAM6wF,cAAc,GAAGv7F,gBAAgB,CAACsM,SAAD,CAAvC;AACA,UAAMkvF,eAAe,GAAGf,kBAAkB,CAACc,cAAD,EAAiB,QAAjB,EAA2B,OAA3B,CAA1C;AACA,UAAME,gBAAgB,GAAGhB,kBAAkB,CAACc,cAAD,EAAiB,SAAjB,CAA3C;AACA31F,MAAAA,KAAK,GAAG6E,IAAI,CAAC7E,KAAL,GAAa61F,gBAAgB,CAAC71F,KAA9B,GAAsC41F,eAAe,CAAC51F,KAA9D;AACAD,MAAAA,MAAM,GAAG8E,IAAI,CAAC9E,MAAL,GAAc81F,gBAAgB,CAAC91F,MAA/B,GAAwC61F,eAAe,CAAC71F,MAAjE;AACAggC,MAAAA,QAAQ,GAAGy0D,aAAa,CAACmB,cAAc,CAAC51D,QAAhB,EAA0Br5B,SAA1B,EAAqC,aAArC,CAAxB;AACAs5B,MAAAA,SAAS,GAAGw0D,aAAa,CAACmB,cAAc,CAAC31D,SAAhB,EAA2Bt5B,SAA3B,EAAsC,cAAtC,CAAzB;AACD;AACF;;AACD,SAAO;AACL1G,IAAAA,KAAK,EAALA,KADK;AAELD,IAAAA,MAAM,EAANA,MAFK;AAGLggC,IAAAA,QAAQ,EAAEA,QAAQ,IAAI83C,QAHjB;AAIL73C,IAAAA,SAAS,EAAEA,SAAS,IAAI63C;AAJnB,GAAP;AAMD;;AACD,IAAMie,MAAM,GAAG,SAATA,MAAS,CAAAt0E,CAAC;AAAA,SAAI5iB,IAAI,CAACu1C,KAAL,CAAW3yB,CAAC,GAAG,EAAf,IAAqB,EAAzB;AAAA,CAAhB;;AACA,SAASgoC,cAAT,CAAwBhc,MAAxB,EAAgCuoD,OAAhC,EAAyCC,QAAzC,EAAmDz0D,WAAnD,EAAgE;AAC9D,MAAMthC,KAAK,GAAG7F,gBAAgB,CAACozC,MAAD,CAA9B;AACA,MAAM4K,OAAO,GAAGy8C,kBAAkB,CAAC50F,KAAD,EAAQ,QAAR,CAAlC;AACA,MAAM8/B,QAAQ,GAAGy0D,aAAa,CAACv0F,KAAK,CAAC8/B,QAAP,EAAiByN,MAAjB,EAAyB,aAAzB,CAAb,IAAwDqqC,QAAzE;AACA,MAAM73C,SAAS,GAAGw0D,aAAa,CAACv0F,KAAK,CAAC+/B,SAAP,EAAkBwN,MAAlB,EAA0B,cAA1B,CAAb,IAA0DqqC,QAA5E;AACA,MAAMoe,aAAa,GAAGP,gBAAgB,CAACloD,MAAD,EAASuoD,OAAT,EAAkBC,QAAlB,CAAtC;AACA,MAAKh2F,KAAL,GAAsBi2F,aAAtB,CAAKj2F,KAAL;AAAA,MAAYD,MAAZ,GAAsBk2F,aAAtB,CAAYl2F,MAAZ;;AACA,MAAIE,KAAK,CAACwuC,SAAN,KAAoB,aAAxB,EAAuC;AACrC,QAAMgnD,OAAO,GAAGZ,kBAAkB,CAAC50F,KAAD,EAAQ,QAAR,EAAkB,OAAlB,CAAlC;AACA,QAAMu1F,QAAQ,GAAGX,kBAAkB,CAAC50F,KAAD,EAAQ,SAAR,CAAnC;AACAD,IAAAA,KAAK,IAAIw1F,QAAQ,CAACx1F,KAAT,GAAiBy1F,OAAO,CAACz1F,KAAlC;AACAD,IAAAA,MAAM,IAAIy1F,QAAQ,CAACz1F,MAAT,GAAkB01F,OAAO,CAAC11F,MAApC;AACD;;AACDC,EAAAA,KAAK,GAAGpB,IAAI,CAAC0H,GAAL,CAAS,CAAT,EAAYtG,KAAK,GAAGo4C,OAAO,CAACp4C,KAA5B,CAAR;AACAD,EAAAA,MAAM,GAAGnB,IAAI,CAAC0H,GAAL,CAAS,CAAT,EAAYi7B,WAAW,GAAG3iC,IAAI,CAACC,KAAL,CAAWmB,KAAK,GAAGuhC,WAAnB,CAAH,GAAqCxhC,MAAM,GAAGq4C,OAAO,CAACr4C,MAA7E,CAAT;AACAC,EAAAA,KAAK,GAAG81F,MAAM,CAACl3F,IAAI,CAACyH,GAAL,CAASrG,KAAT,EAAgB+/B,QAAhB,EAA0Bk2D,aAAa,CAACl2D,QAAxC,CAAD,CAAd;AACAhgC,EAAAA,MAAM,GAAG+1F,MAAM,CAACl3F,IAAI,CAACyH,GAAL,CAAStG,MAAT,EAAiBigC,SAAjB,EAA4Bi2D,aAAa,CAACj2D,SAA1C,CAAD,CAAf;;AACA,MAAIhgC,KAAK,IAAI,CAACD,MAAd,EAAsB;AACpBA,IAAAA,MAAM,GAAG+1F,MAAM,CAAC91F,KAAK,GAAG,CAAT,CAAf;AACD;;AACD,SAAO;AACLA,IAAAA,KAAK,EAALA,KADK;AAELD,IAAAA,MAAM,EAANA;AAFK,GAAP;AAID;;AACD,SAASm2F,WAAT,CAAqBl5F,KAArB,EAA4Bm5F,UAA5B,EAAwCC,UAAxC,EAAoD;AAClD,MAAMC,UAAU,GAAGF,UAAU,IAAI,CAAjC;AACA,MAAMG,YAAY,GAAG13F,IAAI,CAACC,KAAL,CAAW7B,KAAK,CAAC+C,MAAN,GAAes2F,UAA1B,CAArB;AACA,MAAME,WAAW,GAAG33F,IAAI,CAACC,KAAL,CAAW7B,KAAK,CAACgD,KAAN,GAAcq2F,UAAzB,CAApB;AACAr5F,EAAAA,KAAK,CAAC+C,MAAN,GAAeu2F,YAAY,GAAGD,UAA9B;AACAr5F,EAAAA,KAAK,CAACgD,KAAN,GAAcu2F,WAAW,GAAGF,UAA5B;AACA,MAAM7oD,MAAM,GAAGxwC,KAAK,CAACwwC,MAArB;;AACA,MAAIA,MAAM,CAACvtC,KAAP,KAAiBm2F,UAAU,IAAK,CAAC5oD,MAAM,CAACvtC,KAAP,CAAaF,MAAd,IAAwB,CAACytC,MAAM,CAACvtC,KAAP,CAAaD,KAAtE,CAAJ,EAAmF;AACjFwtC,IAAAA,MAAM,CAACvtC,KAAP,CAAaF,MAAb,aAAyB/C,KAAK,CAAC+C,MAA/B;AACAytC,IAAAA,MAAM,CAACvtC,KAAP,CAAaD,KAAb,aAAwBhD,KAAK,CAACgD,KAA9B;AACD;;AACD,MAAIhD,KAAK,CAAC6yC,uBAAN,KAAkCwmD,UAAlC,IACG7oD,MAAM,CAACztC,MAAP,KAAkBu2F,YADrB,IAEG9oD,MAAM,CAACxtC,KAAP,KAAiBu2F,WAFxB,EAEqC;AACnCv5F,IAAAA,KAAK,CAAC6yC,uBAAN,GAAgCwmD,UAAhC;AACA7oD,IAAAA,MAAM,CAACztC,MAAP,GAAgBu2F,YAAhB;AACA9oD,IAAAA,MAAM,CAACxtC,KAAP,GAAeu2F,WAAf;AACAv5F,IAAAA,KAAK,CAAC+zB,GAAN,CAAUylE,YAAV,CAAuBH,UAAvB,EAAmC,CAAnC,EAAsC,CAAtC,EAAyCA,UAAzC,EAAqD,CAArD,EAAwD,CAAxD;AACA,WAAO,IAAP;AACD;;AACD,SAAO,KAAP;AACD;;AACD,IAAMxnD,4BAA4B,GAAI,YAAW;AAC/C,MAAI4nD,gBAAgB,GAAG,KAAvB;;AACA,MAAI;AACF,QAAMv5F,OAAO,GAAG;AACd,UAAI4xC,OAAJ,GAAc;AACZ2nD,QAAAA,gBAAgB,GAAG,IAAnB;AACA,eAAO,KAAP;AACD;;AAJa,KAAhB;AAMAp3F,IAAAA,MAAM,CAACC,gBAAP,CAAwB,MAAxB,EAAgC,IAAhC,EAAsCpC,OAAtC;AACAmC,IAAAA,MAAM,CAACsO,mBAAP,CAA2B,MAA3B,EAAmC,IAAnC,EAAyCzQ,OAAzC;AACD,GATD,CASE,OAAOwB,CAAP,EAAU,CACX;;AACD,SAAO+3F,gBAAP;AACD,CAdqC,EAAtC;;;;AAeA,SAASC,YAAT,CAAsBx7F,OAAtB,EAA+B6lD,QAA/B,EAAyC;AACvC,MAAM36C,KAAK,GAAGqwB,QAAQ,CAACv7B,OAAD,EAAU6lD,QAAV,CAAtB;AACA,MAAMitC,OAAO,GAAG5nF,KAAK,IAAIA,KAAK,CAAC6nF,KAAN,CAAY,mBAAZ,CAAzB;AACA,SAAOD,OAAO,GAAG,CAACA,OAAO,CAAC,CAAD,CAAX,GAAiBpyF,SAA/B;AACD;;AAED,SAASq4D,YAAT,CAAsB9U,EAAtB,EAA0BC,EAA1B,EAA8Bn5B,CAA9B,EAAiCyH,IAAjC,EAAuC;AACrC,SAAO;AACL9jB,IAAAA,CAAC,EAAEu1C,EAAE,CAACv1C,CAAH,GAAOqc,CAAC,IAAIm5B,EAAE,CAACx1C,CAAH,GAAOu1C,EAAE,CAACv1C,CAAd,CADN;AAELC,IAAAA,CAAC,EAAEs1C,EAAE,CAACt1C,CAAH,GAAOoc,CAAC,IAAIm5B,EAAE,CAACv1C,CAAH,GAAOs1C,EAAE,CAACt1C,CAAd;AAFN,GAAP;AAID;;AACD,SAASkqD,qBAAT,CAA+B5U,EAA/B,EAAmCC,EAAnC,EAAuCn5B,CAAvC,EAA0CyH,IAA1C,EAAgD;AAC9C,SAAO;AACL9jB,IAAAA,CAAC,EAAEu1C,EAAE,CAACv1C,CAAH,GAAOqc,CAAC,IAAIm5B,EAAE,CAACx1C,CAAH,GAAOu1C,EAAE,CAACv1C,CAAd,CADN;AAELC,IAAAA,CAAC,EAAE6jB,IAAI,KAAK,QAAT,GAAoBzH,CAAC,GAAG,GAAJ,GAAUk5B,EAAE,CAACt1C,CAAb,GAAiBu1C,EAAE,CAACv1C,CAAxC,GACD6jB,IAAI,KAAK,OAAT,GAAmBzH,CAAC,GAAG,CAAJ,GAAQk5B,EAAE,CAACt1C,CAAX,GAAeu1C,EAAE,CAACv1C,CAArC,GACAoc,CAAC,GAAG,CAAJ,GAAQm5B,EAAE,CAACv1C,CAAX,GAAes1C,EAAE,CAACt1C;AAJf,GAAP;AAMD;;AACD,SAASmqD,oBAAT,CAA8B7U,EAA9B,EAAkCC,EAAlC,EAAsCn5B,CAAtC,EAAyCyH,IAAzC,EAA+C;AAC7C,MAAMipE,GAAG,GAAG;AAAC/sF,IAAAA,CAAC,EAAEu1C,EAAE,CAAC2tC,IAAP;AAAajjF,IAAAA,CAAC,EAAEs1C,EAAE,CAAC6tC;AAAnB,GAAZ;AACA,MAAM4J,GAAG,GAAG;AAAChtF,IAAAA,CAAC,EAAEw1C,EAAE,CAACytC,IAAP;AAAahjF,IAAAA,CAAC,EAAEu1C,EAAE,CAAC2tC;AAAnB,GAAZ;;AACA,MAAM/tE,CAAC,GAAGi1C,YAAY,CAAC9U,EAAD,EAAKw3C,GAAL,EAAU1wE,CAAV,CAAtB;;AACA,MAAM9nB,CAAC,GAAG81D,YAAY,CAAC0iC,GAAD,EAAMC,GAAN,EAAW3wE,CAAX,CAAtB;;AACA,MAAM/J,CAAC,GAAG+3C,YAAY,CAAC2iC,GAAD,EAAMx3C,EAAN,EAAUn5B,CAAV,CAAtB;;AACA,MAAMC,CAAC,GAAG+tC,YAAY,CAACj1C,CAAD,EAAI7gB,CAAJ,EAAO8nB,CAAP,CAAtB;;AACA,MAAMvnB,CAAC,GAAGu1D,YAAY,CAAC91D,CAAD,EAAI+d,CAAJ,EAAO+J,CAAP,CAAtB;;AACA,SAAOguC,YAAY,CAAC/tC,CAAD,EAAIxnB,CAAJ,EAAOunB,CAAP,CAAnB;AACD;;AAED,IAAM4wE,SAAS,GAAG,IAAI17E,GAAJ,EAAlB;;AACA,SAAS27E,eAAT,CAAyB91D,MAAzB,EAAiC9jC,OAAjC,EAA0C;AACxCA,EAAAA,OAAO,GAAGA,OAAO,IAAI,EAArB;AACA,MAAM24B,QAAQ,GAAGmL,MAAM,GAAGxlC,IAAI,CAACu7F,SAAL,CAAe75F,OAAf,CAA1B;AACA,MAAI+1E,SAAS,GAAG4jB,SAAS,CAACr6E,GAAV,CAAcqZ,QAAd,CAAhB;;AACA,MAAI,CAACo9C,SAAL,EAAgB;AACdA,IAAAA,SAAS,GAAG,IAAI+jB,IAAI,CAACC,YAAT,CAAsBj2D,MAAtB,EAA8B9jC,OAA9B,CAAZ;AACA25F,IAAAA,SAAS,CAACjvF,GAAV,CAAciuB,QAAd,EAAwBo9C,SAAxB;AACD;;AACD,SAAOA,SAAP;AACD;;AACD,SAASikB,YAAT,CAAsBC,GAAtB,EAA2Bn2D,MAA3B,EAAmC9jC,OAAnC,EAA4C;AAC1C,SAAO45F,eAAe,CAAC91D,MAAD,EAAS9jC,OAAT,CAAf,CAAiC2oC,MAAjC,CAAwCsxD,GAAxC,CAAP;AACD;;AAED,IAAMC,qBAAqB,GAAG,SAAxBA,qBAAwB,CAASC,KAAT,EAAgBr3F,KAAhB,EAAuB;AACnD,SAAO;AACL4J,IAAAA,CADK,aACHA,EADG,EACA;AACH,aAAOytF,KAAK,GAAGA,KAAR,GAAgBr3F,KAAhB,GAAwB4J,EAA/B;AACD,KAHI;AAILg2D,IAAAA,QAJK,oBAII71D,CAJJ,EAIO;AACV/J,MAAAA,KAAK,GAAG+J,CAAR;AACD,KANI;AAOLm0C,IAAAA,SAPK,qBAOKjL,KAPL,EAOY;AACf,UAAIA,KAAK,KAAK,QAAd,EAAwB;AACtB,eAAOA,KAAP;AACD;;AACD,aAAOA,KAAK,KAAK,OAAV,GAAoB,MAApB,GAA6B,OAApC;AACD,KAZI;AAaLosB,IAAAA,KAbK,iBAaCz1D,CAbD,EAaIxD,KAbJ,EAaW;AACd,aAAOwD,CAAC,GAAGxD,KAAX;AACD,KAfI;AAgBLu4D,IAAAA,UAhBK,sBAgBM/0D,CAhBN,EAgBSq0D,SAhBT,EAgBoB;AACvB,aAAOr0D,CAAC,GAAGq0D,SAAX;AACD;AAlBI,GAAP;AAoBD,CArBD;;AAsBA,IAAMq5B,qBAAqB,GAAG,SAAxBA,qBAAwB,GAAW;AACvC,SAAO;AACL1tF,IAAAA,CADK,aACHA,GADG,EACA;AACH,aAAOA,GAAP;AACD,KAHI;AAILg2D,IAAAA,QAJK,oBAII71D,CAJJ,EAIO,CACX,CALI;AAMLm0C,IAAAA,SANK,qBAMKjL,KANL,EAMY;AACf,aAAOA,KAAP;AACD,KARI;AASLosB,IAAAA,KATK,iBASCz1D,CATD,EASIxD,KATJ,EASW;AACd,aAAOwD,CAAC,GAAGxD,KAAX;AACD,KAXI;AAYLu4D,IAAAA,UAZK,sBAYM/0D,CAZN,EAYS2tF,UAZT,EAYqB;AACxB,aAAO3tF,CAAP;AACD;AAdI,GAAP;AAgBD,CAjBD;;AAkBA,SAAS4tF,aAAT,CAAuBh5B,GAAvB,EAA4B64B,KAA5B,EAAmCr3F,KAAnC,EAA0C;AACxC,SAAOw+D,GAAG,GAAG44B,qBAAqB,CAACC,KAAD,EAAQr3F,KAAR,CAAxB,GAAyCs3F,qBAAqB,EAAxE;AACD;;AACD,SAASG,qBAAT,CAA+B1mE,GAA/B,EAAoC1c,SAApC,EAA+C;AAC7C,MAAIpU,KAAJ,EAAWy3F,QAAX;;AACA,MAAIrjF,SAAS,KAAK,KAAd,IAAuBA,SAAS,KAAK,KAAzC,EAAgD;AAC9CpU,IAAAA,KAAK,GAAG8wB,GAAG,CAACyc,MAAJ,CAAWvtC,KAAnB;AACAy3F,IAAAA,QAAQ,GAAG,CACTz3F,KAAK,CAAC20F,gBAAN,CAAuB,WAAvB,CADS,EAET30F,KAAK,CAAC03F,mBAAN,CAA0B,WAA1B,CAFS,CAAX;AAIA13F,IAAAA,KAAK,CAACwQ,WAAN,CAAkB,WAAlB,EAA+B4D,SAA/B,EAA0C,WAA1C;AACA0c,IAAAA,GAAG,CAAC6mE,iBAAJ,GAAwBF,QAAxB;AACD;AACF;;AACD,SAASG,oBAAT,CAA8B9mE,GAA9B,EAAmC2mE,QAAnC,EAA6C;AAC3C,MAAIA,QAAQ,KAAK97F,SAAjB,EAA4B;AAC1B,WAAOm1B,GAAG,CAAC6mE,iBAAX;AACA7mE,IAAAA,GAAG,CAACyc,MAAJ,CAAWvtC,KAAX,CAAiBwQ,WAAjB,CAA6B,WAA7B,EAA0CinF,QAAQ,CAAC,CAAD,CAAlD,EAAuDA,QAAQ,CAAC,CAAD,CAA/D;AACD;AACF;;AAED,SAASI,UAAT,CAAoB/2C,QAApB,EAA8B;AAC5B,MAAIA,QAAQ,KAAK,OAAjB,EAA0B;AACxB,WAAO;AACLg3C,MAAAA,OAAO,EAAEje,aADJ;AAELke,MAAAA,OAAO,EAAEpe,UAFJ;AAGLhG,MAAAA,SAAS,EAAEiG;AAHN,KAAP;AAKD;;AACD,SAAO;AACLke,IAAAA,OAAO,EAAEzd,UADJ;AAEL0d,IAAAA,OAAO,EAAE,iBAACh5E,CAAD,EAAI7gB,CAAJ;AAAA,aAAU6gB,CAAC,GAAG7gB,CAAd;AAAA,KAFJ;AAGLy1E,IAAAA,SAAS,EAAE,mBAAAhqE,CAAC;AAAA,aAAIA,CAAJ;AAAA;AAHP,GAAP;AAKD;;AACD,SAASquF,gBAAT,OAA4D;AAAA,MAAjC55F,KAAiC,QAAjCA,KAAiC;AAAA,MAA1BC,GAA0B,QAA1BA,GAA0B;AAAA,MAArBE,KAAqB,QAArBA,KAAqB;AAAA,MAAd2D,IAAc,QAAdA,IAAc;AAAA,MAARlC,KAAQ,QAARA,KAAQ;AAC1D,SAAO;AACL5B,IAAAA,KAAK,EAAEA,KAAK,GAAGG,KADV;AAELF,IAAAA,GAAG,EAAEA,GAAG,GAAGE,KAFN;AAGL2D,IAAAA,IAAI,EAAEA,IAAI,IAAI,CAAC7D,GAAG,GAAGD,KAAN,GAAc,CAAf,IAAoBG,KAApB,KAA8B,CAHvC;AAILyB,IAAAA,KAAK,EAALA;AAJK,GAAP;AAMD;;AACD,SAASi4F,UAAT,CAAoBr1D,OAApB,EAA6B3F,MAA7B,EAAqC4U,MAArC,EAA6C;AAC3C,MAAOiP,QAAP,GAAqDjP,MAArD,CAAOiP,QAAP;AAAA,MAAwBo3C,UAAxB,GAAqDrmD,MAArD,CAAiBzzC,KAAjB;AAAA,MAAyC+5F,QAAzC,GAAqDtmD,MAArD,CAAoCxzC,GAApC;;AACA,oBAA6Bw5F,UAAU,CAAC/2C,QAAD,CAAvC;AAAA,MAAOg3C,OAAP,eAAOA,OAAP;AAAA,MAAgBnkB,SAAhB,eAAgBA,SAAhB;;AACA,MAAMp1E,KAAK,GAAG0+B,MAAM,CAACrhC,MAArB;AACA,MAAKwC,KAAL,GAAyBwkC,OAAzB,CAAKxkC,KAAL;AAAA,MAAYC,GAAZ,GAAyBukC,OAAzB,CAAYvkC,GAAZ;AAAA,MAAiB6D,IAAjB,GAAyB0gC,OAAzB,CAAiB1gC,IAAjB;AACA,MAAI9F,CAAJ,EAAOgxB,IAAP;;AACA,MAAIlrB,IAAJ,EAAU;AACR9D,IAAAA,KAAK,IAAIG,KAAT;AACAF,IAAAA,GAAG,IAAIE,KAAP;;AACA,SAAKnC,CAAC,GAAG,CAAJ,EAAOgxB,IAAI,GAAG7uB,KAAnB,EAA0BnC,CAAC,GAAGgxB,IAA9B,EAAoC,EAAEhxB,CAAtC,EAAyC;AACvC,UAAI,CAAC07F,OAAO,CAACnkB,SAAS,CAAC12C,MAAM,CAAC7+B,KAAK,GAAGG,KAAT,CAAN,CAAsBuiD,QAAtB,CAAD,CAAV,EAA6Co3C,UAA7C,EAAyDC,QAAzD,CAAZ,EAAgF;AAC9E;AACD;;AACD/5F,MAAAA,KAAK;AACLC,MAAAA,GAAG;AACJ;;AACDD,IAAAA,KAAK,IAAIG,KAAT;AACAF,IAAAA,GAAG,IAAIE,KAAP;AACD;;AACD,MAAIF,GAAG,GAAGD,KAAV,EAAiB;AACfC,IAAAA,GAAG,IAAIE,KAAP;AACD;;AACD,SAAO;AAACH,IAAAA,KAAK,EAALA,KAAD;AAAQC,IAAAA,GAAG,EAAHA,GAAR;AAAa6D,IAAAA,IAAI,EAAJA,IAAb;AAAmBlC,IAAAA,KAAK,EAAE4iC,OAAO,CAAC5iC;AAAlC,GAAP;AACD;;AACD,SAASo4F,aAAT,CAAuBx1D,OAAvB,EAAgC3F,MAAhC,EAAwC4U,MAAxC,EAAgD;AAC9C,MAAI,CAACA,MAAL,EAAa;AACX,WAAO,CAACjP,OAAD,CAAP;AACD;;AACD,MAAOke,QAAP,GAAqDjP,MAArD,CAAOiP,QAAP;AAAA,MAAwBo3C,UAAxB,GAAqDrmD,MAArD,CAAiBzzC,KAAjB;AAAA,MAAyC+5F,QAAzC,GAAqDtmD,MAArD,CAAoCxzC,GAApC;AACA,MAAME,KAAK,GAAG0+B,MAAM,CAACrhC,MAArB;;AACA,qBAAsCi8F,UAAU,CAAC/2C,QAAD,CAAhD;AAAA,MAAOi3C,OAAP,gBAAOA,OAAP;AAAA,MAAgBD,OAAhB,gBAAgBA,OAAhB;AAAA,MAAyBnkB,SAAzB,gBAAyBA,SAAzB;;AACA,oBAAkCskB,UAAU,CAACr1D,OAAD,EAAU3F,MAAV,EAAkB4U,MAAlB,CAA5C;AAAA,MAAOzzC,KAAP,eAAOA,KAAP;AAAA,MAAcC,GAAd,eAAcA,GAAd;AAAA,MAAmB6D,IAAnB,eAAmBA,IAAnB;AAAA,MAAyBlC,KAAzB,eAAyBA,KAAzB;;AACA,MAAMulB,MAAM,GAAG,EAAf;AACA,MAAI8yE,MAAM,GAAG,KAAb;AACA,MAAIC,QAAQ,GAAG,IAAf;AACA,MAAInyF,KAAJ,EAAW+2B,KAAX,EAAkBq7D,SAAlB;;AACA,MAAMC,aAAa,GAAG,SAAhBA,aAAgB;AAAA,WAAMV,OAAO,CAACI,UAAD,EAAaK,SAAb,EAAwBpyF,KAAxB,CAAP,IAAyC4xF,OAAO,CAACG,UAAD,EAAaK,SAAb,CAAP,KAAmC,CAAlF;AAAA,GAAtB;;AACA,MAAME,WAAW,GAAG,SAAdA,WAAc;AAAA,WAAMV,OAAO,CAACI,QAAD,EAAWhyF,KAAX,CAAP,KAA6B,CAA7B,IAAkC2xF,OAAO,CAACK,QAAD,EAAWI,SAAX,EAAsBpyF,KAAtB,CAA/C;AAAA,GAApB;;AACA,MAAMuyF,WAAW,GAAG,SAAdA,WAAc;AAAA,WAAML,MAAM,IAAIG,aAAa,EAA7B;AAAA,GAApB;;AACA,MAAMG,UAAU,GAAG,SAAbA,UAAa;AAAA,WAAM,CAACN,MAAD,IAAWI,WAAW,EAA5B;AAAA,GAAnB;;AACA,OAAK,IAAIr8F,CAAC,GAAGgC,KAAR,EAAey1B,IAAI,GAAGz1B,KAA3B,EAAkChC,CAAC,IAAIiC,GAAvC,EAA4C,EAAEjC,CAA9C,EAAiD;AAC/C8gC,IAAAA,KAAK,GAAGD,MAAM,CAAC7gC,CAAC,GAAGmC,KAAL,CAAd;;AACA,QAAI2+B,KAAK,CAACI,IAAV,EAAgB;AACd;AACD;;AACDn3B,IAAAA,KAAK,GAAGwtE,SAAS,CAACz2C,KAAK,CAAC4jB,QAAD,CAAN,CAAjB;;AACA,QAAI36C,KAAK,KAAKoyF,SAAd,EAAyB;AACvB;AACD;;AACDF,IAAAA,MAAM,GAAGP,OAAO,CAAC3xF,KAAD,EAAQ+xF,UAAR,EAAoBC,QAApB,CAAhB;;AACA,QAAIG,QAAQ,KAAK,IAAb,IAAqBI,WAAW,EAApC,EAAwC;AACtCJ,MAAAA,QAAQ,GAAGP,OAAO,CAAC5xF,KAAD,EAAQ+xF,UAAR,CAAP,KAA+B,CAA/B,GAAmC97F,CAAnC,GAAuCy3B,IAAlD;AACD;;AACD,QAAIykE,QAAQ,KAAK,IAAb,IAAqBK,UAAU,EAAnC,EAAuC;AACrCpzE,MAAAA,MAAM,CAACpnB,IAAP,CAAY65F,gBAAgB,CAAC;AAAC55F,QAAAA,KAAK,EAAEk6F,QAAR;AAAkBj6F,QAAAA,GAAG,EAAEjC,CAAvB;AAA0B8F,QAAAA,IAAI,EAAJA,IAA1B;AAAgC3D,QAAAA,KAAK,EAALA,KAAhC;AAAuCyB,QAAAA,KAAK,EAALA;AAAvC,OAAD,CAA5B;AACAs4F,MAAAA,QAAQ,GAAG,IAAX;AACD;;AACDzkE,IAAAA,IAAI,GAAGz3B,CAAP;AACAm8F,IAAAA,SAAS,GAAGpyF,KAAZ;AACD;;AACD,MAAImyF,QAAQ,KAAK,IAAjB,EAAuB;AACrB/yE,IAAAA,MAAM,CAACpnB,IAAP,CAAY65F,gBAAgB,CAAC;AAAC55F,MAAAA,KAAK,EAAEk6F,QAAR;AAAkBj6F,MAAAA,GAAG,EAAHA,GAAlB;AAAuB6D,MAAAA,IAAI,EAAJA,IAAvB;AAA6B3D,MAAAA,KAAK,EAALA,KAA7B;AAAoCyB,MAAAA,KAAK,EAALA;AAApC,KAAD,CAA5B;AACD;;AACD,SAAOulB,MAAP;AACD;;AACD,SAASqzE,cAAT,CAAwBx2D,IAAxB,EAA8ByP,MAA9B,EAAsC;AACpC,MAAMtsB,MAAM,GAAG,EAAf;AACA,MAAM8uC,QAAQ,GAAGjyB,IAAI,CAACiyB,QAAtB;;AACA,OAAK,IAAIj4D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGi4D,QAAQ,CAACz4D,MAA7B,EAAqCQ,CAAC,EAAtC,EAA0C;AACxC,QAAMyoB,GAAG,GAAGuzE,aAAa,CAAC/jC,QAAQ,CAACj4D,CAAD,CAAT,EAAcgmC,IAAI,CAACnF,MAAnB,EAA2B4U,MAA3B,CAAzB;;AACA,QAAIhtB,GAAG,CAACjpB,MAAR,EAAgB;AACd2pB,MAAAA,MAAM,CAACpnB,IAAP,OAAAonB,MAAM,qBAASV,GAAT,EAAN;AACD;AACF;;AACD,SAAOU,MAAP;AACD;;AACD,SAASszE,eAAT,CAAyB57D,MAAzB,EAAiC1+B,KAAjC,EAAwC2D,IAAxC,EAA8C4gC,QAA9C,EAAwD;AACtD,MAAI1kC,KAAK,GAAG,CAAZ;AACA,MAAIC,GAAG,GAAGE,KAAK,GAAG,CAAlB;;AACA,MAAI2D,IAAI,IAAI,CAAC4gC,QAAb,EAAuB;AACrB,WAAO1kC,KAAK,GAAGG,KAAR,IAAiB,CAAC0+B,MAAM,CAAC7+B,KAAD,CAAN,CAAck/B,IAAvC,EAA6C;AAC3Cl/B,MAAAA,KAAK;AACN;AACF;;AACD,SAAOA,KAAK,GAAGG,KAAR,IAAiB0+B,MAAM,CAAC7+B,KAAD,CAAN,CAAck/B,IAAtC,EAA4C;AAC1Cl/B,IAAAA,KAAK;AACN;;AACDA,EAAAA,KAAK,IAAIG,KAAT;;AACA,MAAI2D,IAAJ,EAAU;AACR7D,IAAAA,GAAG,IAAID,KAAP;AACD;;AACD,SAAOC,GAAG,GAAGD,KAAN,IAAe6+B,MAAM,CAAC5+B,GAAG,GAAGE,KAAP,CAAN,CAAoB++B,IAA1C,EAAgD;AAC9Cj/B,IAAAA,GAAG;AACJ;;AACDA,EAAAA,GAAG,IAAIE,KAAP;AACA,SAAO;AAACH,IAAAA,KAAK,EAALA,KAAD;AAAQC,IAAAA,GAAG,EAAHA;AAAR,GAAP;AACD;;AACD,SAASy6F,aAAT,CAAuB77D,MAAvB,EAA+B7+B,KAA/B,EAAsCiI,GAAtC,EAA2CnE,IAA3C,EAAiD;AAC/C,MAAM3D,KAAK,GAAG0+B,MAAM,CAACrhC,MAArB;AACA,MAAM2pB,MAAM,GAAG,EAAf;AACA,MAAIoW,IAAI,GAAGv9B,KAAX;AACA,MAAIy1B,IAAI,GAAGoJ,MAAM,CAAC7+B,KAAD,CAAjB;AACA,MAAIC,GAAJ;;AACA,OAAKA,GAAG,GAAGD,KAAK,GAAG,CAAnB,EAAsBC,GAAG,IAAIgI,GAA7B,EAAkC,EAAEhI,GAApC,EAAyC;AACvC,QAAMmqB,GAAG,GAAGyU,MAAM,CAAC5+B,GAAG,GAAGE,KAAP,CAAlB;;AACA,QAAIiqB,GAAG,CAAC8U,IAAJ,IAAY9U,GAAG,CAAC1iB,IAApB,EAA0B;AACxB,UAAI,CAAC+tB,IAAI,CAACyJ,IAAV,EAAgB;AACdp7B,QAAAA,IAAI,GAAG,KAAP;AACAqjB,QAAAA,MAAM,CAACpnB,IAAP,CAAY;AAACC,UAAAA,KAAK,EAAEA,KAAK,GAAGG,KAAhB;AAAuBF,UAAAA,GAAG,EAAE,CAACA,GAAG,GAAG,CAAP,IAAYE,KAAxC;AAA+C2D,UAAAA,IAAI,EAAJA;AAA/C,SAAZ;AACA9D,QAAAA,KAAK,GAAGu9B,IAAI,GAAGnT,GAAG,CAAC1iB,IAAJ,GAAWzH,GAAX,GAAiB,IAAhC;AACD;AACF,KAND,MAMO;AACLs9B,MAAAA,IAAI,GAAGt9B,GAAP;;AACA,UAAIw1B,IAAI,CAACyJ,IAAT,EAAe;AACbl/B,QAAAA,KAAK,GAAGC,GAAR;AACD;AACF;;AACDw1B,IAAAA,IAAI,GAAGrL,GAAP;AACD;;AACD,MAAImT,IAAI,KAAK,IAAb,EAAmB;AACjBpW,IAAAA,MAAM,CAACpnB,IAAP,CAAY;AAACC,MAAAA,KAAK,EAAEA,KAAK,GAAGG,KAAhB;AAAuBF,MAAAA,GAAG,EAAEs9B,IAAI,GAAGp9B,KAAnC;AAA0C2D,MAAAA,IAAI,EAAJA;AAA1C,KAAZ;AACD;;AACD,SAAOqjB,MAAP;AACD;;AACD,SAASwzE,gBAAT,CAA0B32D,IAA1B,EAAgC42D,cAAhC,EAAgD;AAC9C,MAAM/7D,MAAM,GAAGmF,IAAI,CAACnF,MAApB;AACA,MAAM6F,QAAQ,GAAGV,IAAI,CAACnlC,OAAL,CAAa6lC,QAA9B;AACA,MAAMvkC,KAAK,GAAG0+B,MAAM,CAACrhC,MAArB;;AACA,MAAI,CAAC2C,KAAL,EAAY;AACV,WAAO,EAAP;AACD;;AACD,MAAM2D,IAAI,GAAG,CAAC,CAACkgC,IAAI,CAACnY,KAApB;;AACA,yBAAqB4uE,eAAe,CAAC57D,MAAD,EAAS1+B,KAAT,EAAgB2D,IAAhB,EAAsB4gC,QAAtB,CAApC;AAAA,MAAO1kC,KAAP,oBAAOA,KAAP;AAAA,MAAcC,GAAd,oBAAcA,GAAd;;AACA,MAAIykC,QAAQ,KAAK,IAAjB,EAAuB;AACrB,WAAOm2D,aAAa,CAAC72D,IAAD,EAAO,CAAC;AAAChkC,MAAAA,KAAK,EAALA,KAAD;AAAQC,MAAAA,GAAG,EAAHA,GAAR;AAAa6D,MAAAA,IAAI,EAAJA;AAAb,KAAD,CAAP,EAA6B+6B,MAA7B,EAAqC+7D,cAArC,CAApB;AACD;;AACD,MAAM3yF,GAAG,GAAGhI,GAAG,GAAGD,KAAN,GAAcC,GAAG,GAAGE,KAApB,GAA4BF,GAAxC;AACA,MAAM66F,YAAY,GAAG,CAAC,CAAC92D,IAAI,CAAC8C,SAAP,IAAoB9mC,KAAK,KAAK,CAA9B,IAAmCC,GAAG,KAAKE,KAAK,GAAG,CAAxE;AACA,SAAO06F,aAAa,CAAC72D,IAAD,EAAO02D,aAAa,CAAC77D,MAAD,EAAS7+B,KAAT,EAAgBiI,GAAhB,EAAqB6yF,YAArB,CAApB,EAAwDj8D,MAAxD,EAAgE+7D,cAAhE,CAApB;AACD;;AACD,SAASC,aAAT,CAAuB72D,IAAvB,EAA6BiyB,QAA7B,EAAuCp3B,MAAvC,EAA+C+7D,cAA/C,EAA+D;AAC7D,MAAI,CAACA,cAAD,IAAmB,CAACA,cAAc,CAACrhD,UAAnC,IAAiD,CAAC1a,MAAtD,EAA8D;AAC5D,WAAOo3B,QAAP;AACD;;AACD,SAAO8kC,eAAe,CAAC/2D,IAAD,EAAOiyB,QAAP,EAAiBp3B,MAAjB,EAAyB+7D,cAAzB,CAAtB;AACD;;AACD,SAASG,eAAT,CAAyB/2D,IAAzB,EAA+BiyB,QAA/B,EAAyCp3B,MAAzC,EAAiD+7D,cAAjD,EAAiE;AAC/D,MAAMI,YAAY,GAAGh3D,IAAI,CAAC5W,MAAL,CAAYiI,UAAZ,EAArB;;AACA,MAAM4lE,SAAS,GAAGC,SAAS,CAACl3D,IAAI,CAACnlC,OAAN,CAA3B;AACA,MAAsBywB,YAAtB,GAA2D0U,IAA3D,CAAOK,aAAP;AAAA,MAA8CK,QAA9C,GAA2DV,IAA3D,CAAoCnlC,OAApC,CAA8C6lC,QAA9C;AACA,MAAMvkC,KAAK,GAAG0+B,MAAM,CAACrhC,MAArB;AACA,MAAM2pB,MAAM,GAAG,EAAf;AACA,MAAIg0E,SAAS,GAAGF,SAAhB;AACA,MAAIj7F,KAAK,GAAGi2D,QAAQ,CAAC,CAAD,CAAR,CAAYj2D,KAAxB;AACA,MAAIhC,CAAC,GAAGgC,KAAR;;AACA,WAASo7F,QAAT,CAAkBh7F,CAAlB,EAAqBC,CAArB,EAAwBquB,CAAxB,EAA2B2sE,EAA3B,EAA+B;AAC7B,QAAMC,GAAG,GAAG52D,QAAQ,GAAG,CAAC,CAAJ,GAAQ,CAA5B;;AACA,QAAItkC,CAAC,KAAKC,CAAV,EAAa;AACX;AACD;;AACDD,IAAAA,CAAC,IAAID,KAAL;;AACA,WAAO0+B,MAAM,CAACz+B,CAAC,GAAGD,KAAL,CAAN,CAAkB++B,IAAzB,EAA+B;AAC7B9+B,MAAAA,CAAC,IAAIk7F,GAAL;AACD;;AACD,WAAOz8D,MAAM,CAACx+B,CAAC,GAAGF,KAAL,CAAN,CAAkB++B,IAAzB,EAA+B;AAC7B7+B,MAAAA,CAAC,IAAIi7F,GAAL;AACD;;AACD,QAAIl7F,CAAC,GAAGD,KAAJ,KAAcE,CAAC,GAAGF,KAAtB,EAA6B;AAC3BgnB,MAAAA,MAAM,CAACpnB,IAAP,CAAY;AAACC,QAAAA,KAAK,EAAEI,CAAC,GAAGD,KAAZ;AAAmBF,QAAAA,GAAG,EAAEI,CAAC,GAAGF,KAA5B;AAAmC2D,QAAAA,IAAI,EAAE4qB,CAAzC;AAA4C9sB,QAAAA,KAAK,EAAEy5F;AAAnD,OAAZ;AACAF,MAAAA,SAAS,GAAGE,EAAZ;AACAr7F,MAAAA,KAAK,GAAGK,CAAC,GAAGF,KAAZ;AACD;AACF;;AA1B8D,8CA2BzC81D,QA3ByC;AAAA;;AAAA;AA2B/D,2DAAgC;AAAA,UAArBzxB,OAAqB;AAC9BxkC,MAAAA,KAAK,GAAG0kC,QAAQ,GAAG1kC,KAAH,GAAWwkC,OAAO,CAACxkC,KAAnC;AACA,UAAIy1B,IAAI,GAAGoJ,MAAM,CAAC7+B,KAAK,GAAGG,KAAT,CAAjB;AACA,UAAIyB,KAAK,SAAT;;AACA,WAAK5D,CAAC,GAAGgC,KAAK,GAAG,CAAjB,EAAoBhC,CAAC,IAAIwmC,OAAO,CAACvkC,GAAjC,EAAsCjC,CAAC,EAAvC,EAA2C;AACzC,YAAMgrE,EAAE,GAAGnqC,MAAM,CAAC7gC,CAAC,GAAGmC,KAAL,CAAjB;AACAyB,QAAAA,KAAK,GAAGs5F,SAAS,CAACN,cAAc,CAACrhD,UAAf,CAA0Bk3C,aAAa,CAACuK,YAAD,EAAe;AACtEh+F,UAAAA,IAAI,EAAE,SADgE;AAEtEu+F,UAAAA,EAAE,EAAE9lE,IAFkE;AAGtEqrB,UAAAA,EAAE,EAAEkoB,EAHkE;AAItEwyB,UAAAA,WAAW,EAAE,CAACx9F,CAAC,GAAG,CAAL,IAAUmC,KAJ+C;AAKtEs7F,UAAAA,WAAW,EAAEz9F,CAAC,GAAGmC,KALqD;AAMtEmvB,UAAAA,YAAY,EAAZA;AANsE,SAAf,CAAvC,CAAD,CAAjB;;AAQA,YAAIosE,YAAY,CAAC95F,KAAD,EAAQu5F,SAAR,CAAhB,EAAoC;AAClCC,UAAAA,QAAQ,CAACp7F,KAAD,EAAQhC,CAAC,GAAG,CAAZ,EAAewmC,OAAO,CAAC1gC,IAAvB,EAA6Bq3F,SAA7B,CAAR;AACD;;AACD1lE,QAAAA,IAAI,GAAGuzC,EAAP;AACAmyB,QAAAA,SAAS,GAAGv5F,KAAZ;AACD;;AACD,UAAI5B,KAAK,GAAGhC,CAAC,GAAG,CAAhB,EAAmB;AACjBo9F,QAAAA,QAAQ,CAACp7F,KAAD,EAAQhC,CAAC,GAAG,CAAZ,EAAewmC,OAAO,CAAC1gC,IAAvB,EAA6Bq3F,SAA7B,CAAR;AACD;AACF;AAlD8D;AAAA;AAAA;AAAA;AAAA;;AAmD/D,SAAOh0E,MAAP;AACD;;AACD,SAAS+zE,SAAT,CAAmBr8F,OAAnB,EAA4B;AAC1B,SAAO;AACLP,IAAAA,eAAe,EAAEO,OAAO,CAACP,eADpB;AAELy1D,IAAAA,cAAc,EAAEl1D,OAAO,CAACk1D,cAFnB;AAGL/f,IAAAA,UAAU,EAAEn1C,OAAO,CAACm1C,UAHf;AAILC,IAAAA,gBAAgB,EAAEp1C,OAAO,CAACo1C,gBAJrB;AAKLif,IAAAA,eAAe,EAAEr0D,OAAO,CAACq0D,eALpB;AAMLrwB,IAAAA,WAAW,EAAEhkC,OAAO,CAACgkC,WANhB;AAOLU,IAAAA,WAAW,EAAE1kC,OAAO,CAAC0kC;AAPhB,GAAP;AASD;;AACD,SAASm4D,YAAT,CAAsB95F,KAAtB,EAA6Bu5F,SAA7B,EAAwC;AACtC,SAAOA,SAAS,IAAIh+F,IAAI,CAACu7F,SAAL,CAAe92F,KAAf,MAA0BzE,IAAI,CAACu7F,SAAL,CAAeyC,SAAf,CAA9C;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC97ED;;;;;;;;;;;;;ACNA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;ACMA;;AANA;AACA;AACA;AACA;AACA;AACA;AAGA,IAAIQ,QAAQ,GAAG,mBAAf;AACA,IAAIC,SAAS,GAAG,WAAhB;AAEA;AACA;AACA;AACA;;AAEA,SAASC,KAAT,CAAej1E,EAAf,EAAmB/iB,KAAnB,EAA0B;AACxB,MAAIA,KAAJ,EAAW;AACT7C,IAAAA,MAAM,CAAC+D,UAAP,CAAkB6hB,EAAlB,EAAsB/iB,KAAtB;AACD,GAFD,MAEO;AACLwlB,8BAAiBtH,IAAjB,CAAsB/gB,MAAtB,EAA8B4lB,EAA9B;AACD;AACF;;AAED,SAASk1E,aAAT,CAAuB/zF,KAAvB,EAA8B4zB,IAA9B,EAAoC;AAClC,MAAIxQ,MAAM,GAAG5uB,QAAQ,CAACwL,KAAD,EAAQ,EAAR,CAArB;;AACA,MAAIgH,KAAK,CAACoc,MAAD,CAAT,EAAmB;AACjB,WAAO,CAAP;AACD,GAFD,MAEO,IAAI,OAAOpjB,KAAP,KAAiB,QAAjB,IAA6BA,KAAK,CAAClD,OAAN,CAAc,GAAd,MAAuB,CAAC,CAAzD,EAA4D;AACjE,WAAOsmB,MAAM,GAAG,GAAT,GAAewQ,IAAtB;AACD;;AACD,SAAOxQ,MAAP;AACD;;AAED,SAAS4wE,eAAT,CAAyBp9F,KAAzB,EAAgC;AAC9B,MAAIE,OAAO,GAAGF,KAAK,CAACi9F,SAAD,CAAL,CAAiB/8F,OAA/B;AACA,MAAIswC,MAAM,GAAGxwC,KAAK,CAACwwC,MAAnB,CAF8B,CAI9B;;AACA,MAAI,CAACA,MAAD,IAAWA,MAAM,CAAC6sD,YAAP,KAAwB,IAAvC,EAA6C;AAC3C,WAAO,KAAP;AACD;;AAED,MAAIx1F,IAAI,GAAG2oC,MAAM,CAAC1oC,qBAAP,EAAX;AACA,MAAIw1F,EAAE,GAAGH,aAAa,CAACj9F,OAAO,CAACM,OAAR,IAAmB,CAApB,EAAuBqH,IAAI,CAAC9E,MAA5B,CAAtB;AACA,MAAIq4D,EAAE,GAAG+hC,aAAa,CAACj9F,OAAO,CAACkvF,OAAR,IAAmB,CAApB,EAAuBvnF,IAAI,CAAC7E,KAA5B,CAAtB;AAEA,SAAO6E,IAAI,CAAC/E,KAAL,GAAas4D,EAAb,IAAmB,CAAnB,IACFvzD,IAAI,CAACjF,MAAL,GAAc06F,EAAd,IAAoB,CADlB,IAEFz1F,IAAI,CAAChF,IAAL,GAAYu4D,EAAZ,IAAkB/4D,MAAM,CAACqI,UAFvB,IAGF7C,IAAI,CAAClF,GAAL,GAAW26F,EAAX,IAAiBj7F,MAAM,CAACsI,WAH7B;AAID;;AAED,SAAS4yF,QAAT,CAAkBnhF,KAAlB,EAAyB;AACvB,MAAIoC,IAAI,GAAGpC,KAAK,CAAClI,MAAjB;AACA,MAAIu+E,IAAI,GAAGj0E,IAAI,CAACw+E,QAAD,CAAf;;AACA,MAAIvK,IAAI,CAACza,OAAT,EAAkB;AAChB;AACD;;AAEDya,EAAAA,IAAI,CAACza,OAAL,GAAe,IAAf;AACAklB,EAAAA,KAAK,CAAC,YAAW;AACf,QAAI5xE,MAAM,GAAGmnE,IAAI,CAACnnE,MAAL,CAAY8Z,KAAZ,EAAb;AACA,QAAI/U,IAAI,GAAG/E,MAAM,CAACzsB,MAAlB;AACA,QAAImB,KAAJ,EAAWX,CAAX;;AAEA,SAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgxB,IAAhB,EAAsB,EAAEhxB,CAAxB,EAA2B;AACzBW,MAAAA,KAAK,GAAGsrB,MAAM,CAACjsB,CAAD,CAAd;;AACA,UAAI+9F,eAAe,CAACp9F,KAAD,CAAnB,EAA4B;AAC1Bw9F,QAAAA,OAAO,CAACx9F,KAAD,CAAP,CAD0B,CACV;;AAChBA,QAAAA,KAAK,CAACi9F,SAAD,CAAL,CAAiBQ,QAAjB,GAA4B,IAA5B;AACAz9F,QAAAA,KAAK,CAACga,MAAN;AACD;AACF;;AAEDy4E,IAAAA,IAAI,CAACza,OAAL,GAAe,KAAf;AACD,GAfI,CAAL;AAgBD;;AAED,SAAS0lB,YAAT,CAAsBl/E,IAAtB,EAA4B;AAC1B,MAAIngB,IAAI,GAAGmgB,IAAI,CAACsI,QAAhB;;AACA,MAAIzoB,IAAI,KAAKs/F,IAAI,CAACC,YAAlB,EAAgC;AAC9B,QAAIC,SAAS,GAAG,uBAASr/E,IAAT,EAAe,YAAf,CAAhB;AACA,QAAIs/E,SAAS,GAAG,uBAASt/E,IAAT,EAAe,YAAf,CAAhB;AACA,WAAOq/E,SAAS,KAAK,MAAd,IAAwBA,SAAS,KAAK,QAAtC,IACFC,SAAS,KAAK,MADZ,IACsBA,SAAS,KAAK,QAD3C;AAED;;AAED,SAAOt/E,IAAI,CAACsI,QAAL,KAAkB62E,IAAI,CAACI,aAA9B;AACD;;AAED,SAASC,KAAT,CAAeh+F,KAAf,EAAsB;AACpB,MAAIwwC,MAAM,GAAGxwC,KAAK,CAACwwC,MAAnB;AACA,MAAItuC,MAAM,GAAGsuC,MAAM,CAACruC,aAApB;AACA,MAAIswF,IAAJ,EAAUnnE,MAAV;;AAEA,SAAOppB,MAAP,EAAe;AACb,QAAIw7F,YAAY,CAACx7F,MAAD,CAAhB,EAA0B;AACxBuwF,MAAAA,IAAI,GAAGvwF,MAAM,CAAC86F,QAAD,CAAN,KAAqB96F,MAAM,CAAC86F,QAAD,CAAN,GAAmB,EAAxC,CAAP;AACA1xE,MAAAA,MAAM,GAAGmnE,IAAI,CAACnnE,MAAL,KAAgBmnE,IAAI,CAACnnE,MAAL,GAAc,EAA9B,CAAT;;AACA,UAAIA,MAAM,CAACzsB,MAAP,KAAkB,CAAtB,EAAyB;AACvBqD,QAAAA,MAAM,CAACI,gBAAP,CAAwB,QAAxB,EAAkCi7F,QAAlC;AACD;;AAEDjyE,MAAAA,MAAM,CAAClqB,IAAP,CAAYpB,KAAZ;AACAA,MAAAA,KAAK,CAACi9F,SAAD,CAAL,CAAiB71E,QAAjB,CAA0BhmB,IAA1B,CAA+Bc,MAA/B;AACD;;AAEDA,IAAAA,MAAM,GAAGA,MAAM,CAACC,aAAP,IAAwBD,MAAM,CAAC+7F,aAAxC;AACD;AACF;;AAED,SAAST,OAAT,CAAiBx9F,KAAjB,EAAwB;AACtBA,EAAAA,KAAK,CAACi9F,SAAD,CAAL,CAAiB71E,QAAjB,CAA0B7jB,OAA1B,CAAkC,UAASrF,OAAT,EAAkB;AAClD,QAAIotB,MAAM,GAAGptB,OAAO,CAAC8+F,QAAD,CAAP,CAAkB1xE,MAA/B;AACAA,IAAAA,MAAM,CAACpD,MAAP,CAAcoD,MAAM,CAACplB,OAAP,CAAelG,KAAf,CAAd,EAAqC,CAArC;;AACA,QAAI,CAACsrB,MAAM,CAACzsB,MAAZ,EAAoB;AAClBX,MAAAA,OAAO,CAACyS,mBAAR,CAA4B,QAA5B,EAAsC4sF,QAAtC;AACA,aAAOr/F,OAAO,CAAC8+F,QAAD,CAAd;AACD;AACF,GAPD;AASAh9F,EAAAA,KAAK,CAACi9F,SAAD,CAAL,CAAiB71E,QAAjB,GAA4B,EAA5B;AACD;;AAED,IAAIu+B,MAAM,GAAG;AACX/oC,EAAAA,EAAE,EAAE,UADO;AAGXrf,EAAAA,QAAQ,EAAE;AACR6xF,IAAAA,OAAO,EAAE,CADD;AAER5uF,IAAAA,OAAO,EAAE,CAFD;AAGR0E,IAAAA,KAAK,EAAE;AAHC,GAHC;AASXg5F,EAAAA,UAAU,EAAE,oBAASl+F,KAAT,EAAgBm+F,CAAhB,EAAmBj+F,OAAnB,EAA4B;AACtCF,IAAAA,KAAK,CAACi9F,SAAD,CAAL,GAAmB;AACjB/8F,MAAAA,OAAO,EAAEA,OADQ;AAEjBu9F,MAAAA,QAAQ,EAAE,KAFO;AAGjBW,MAAAA,OAAO,EAAE,KAHQ;AAIjBC,MAAAA,MAAM,EAAE,KAJS;AAKjBj3E,MAAAA,QAAQ,EAAE;AALO,KAAnB;AAQA42E,IAAAA,KAAK,CAACh+F,KAAD,CAAL;AACD,GAnBU;AAqBXs+F,EAAAA,oBAAoB,EAAE,8BAASt+F,KAAT,EAAgBm+F,CAAhB,EAAmBj+F,OAAnB,EAA4B;AAChD,QAAIq+F,KAAK,GAAGv+F,KAAK,CAACi9F,SAAD,CAAjB;;AACA,QAAI,CAACsB,KAAK,CAACF,MAAX,EAAmB;AACjB,UAAI,CAACE,KAAK,CAACd,QAAP,IAAmB,CAACL,eAAe,CAACp9F,KAAD,CAAvC,EAAgD;AAC9C;AACA,eAAO,KAAP;AACD;;AAEDu+F,MAAAA,KAAK,CAACd,QAAN,GAAiB,IAAjB;AACAc,MAAAA,KAAK,CAACF,MAAN,GAAe,IAAf;AACAb,MAAAA,OAAO,CAACx9F,KAAD,CAAP;;AAEA,UAAIE,OAAO,CAACgF,KAAR,GAAgB,CAApB,EAAuB;AACrBq5F,QAAAA,KAAK,CAACH,OAAN,GAAgB,IAAhB;AACAlB,QAAAA,KAAK,CAAC,YAAW;AACf;AACA;AACA;AACA;AACA,cAAIl9F,KAAK,CAAC+zB,GAAV,EAAe;AACbwqE,YAAAA,KAAK,CAACH,OAAN,GAAgB,KAAhB;AACAp+F,YAAAA,KAAK,CAACga,MAAN;AACD;AACF,SATI,EASF9Z,OAAO,CAACgF,KATN,CAAL;AAWA,eAAO,KAAP;AACD;AACF;;AAED,QAAIq5F,KAAK,CAACH,OAAV,EAAmB;AACjB;AACA;AACA,aAAO,KAAP;AACD;AACF,GAvDU;AAyDX92F,EAAAA,OAAO,EAAE,iBAAStH,KAAT,EAAgB;AACvBw9F,IAAAA,OAAO,CAACx9F,KAAD,CAAP;AACD;AA3DU,CAAb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClHA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;AACA,SAASw+F,YAAT,CAAsBp6E,GAAtB,EAA2B;AACzB,MAAMo/B,KAAK,GAAGp/B,GAAG,CAACskB,SAAlB;AACAx8B,EAAAA,MAAM,CAACsX,cAAP,CAAsBY,GAAtB,EAA2B,WAA3B,EAAwC;AACtC5E,IAAAA,GADsC,iBAChC;AACJ,aAAOgkC,KAAP;AACD,KAHqC;AAKtC54C,IAAAA,GALsC,eAKlCxB,KALkC,EAK3B;AACTo6C,MAAAA,KAAK,CAAC9a,SAAN,GAAkBt/B,KAAlB;AACD;AAPqC,GAAxC;AAUD;;IAEKq1F;;;;;AACJ,gBAAYhuF,KAAZ,EAAmB;AAAA;;AAAA;;AACjB,QAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AAC7B,gCAAMA,KAAN;AACD,KAFD,MAEO;AACL,yEAAUA,KAAK,IAAI,EAAnB;AACA+tF,MAAAA,YAAY,+BAAZ;AACD;;AANgB;AAOlB;;;iCARgBp7F;;AAYnB,SAASs7F,SAAT,GAA6B;AAAA,MAAVj8E,GAAU,uEAAJ,EAAI;AAC3B,MAAML,GAAG,GAAG,EAAZ;AACAK,EAAAA,GAAG,CAAClf,OAAJ,CAAY,UAAA2mC,EAAE,EAAI;AAChB,QAAI9mC,KAAK,CAACo1E,OAAN,CAActuC,EAAd,CAAJ,EAAuB;AACrB9nB,MAAAA,GAAG,CAAChhB,IAAJ,OAAAghB,GAAG,qBAASs8E,SAAS,CAACx0D,EAAD,CAAlB,EAAH;AACD,KAFD,MAEO;AACL9nB,MAAAA,GAAG,CAAChhB,IAAJ,CAAS8oC,EAAT;AACD;AACF,GAND;AAOA,SAAO9nB,GAAP;AACD;;AACD,SAASu8E,WAAT,CAAqBl8E,GAArB,EAA0B8G,QAA1B,EAAoC;AAClC,SAAOnmB,KAAK,CAACoe,SAAN,CAAgB1E,MAAhB,CAAuBsG,IAAvB,CAA4BX,GAA5B,EAAiC8G,QAAjC,CAAP;AACD;;AACD,SAASq1E,WAAT,CAAqBn8E,GAArB,EAA0B;AACxB,MAAMo8E,WAAW,GAAG,EAApB;;AAEA,OAAK,IAAIx/F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGojB,GAAG,CAAC5jB,MAAxB,EAAgCQ,CAAC,IAAI,CAArC,EAAwC;AACtC,QAAIw/F,WAAW,CAAC34F,OAAZ,CAAoBuc,GAAG,CAACpjB,CAAD,CAAvB,MAAgC,CAAC,CAArC,EAAwCw/F,WAAW,CAACz9F,IAAZ,CAAiBqhB,GAAG,CAACpjB,CAAD,CAApB;AACzC;;AAED,SAAOw/F,WAAP;AACD;;AACD,SAASC,WAAT,CAAqB3/C,MAArB,EAA6B;AAC3B,SAAOA,MAAM,CAAC52C,WAAP,GAAqBpC,OAArB,CAA6B,OAA7B,EAAsC,UAAC8qF,KAAD,EAAQ8N,KAAR;AAAA,WAAkBA,KAAK,CAACxkB,WAAN,EAAlB;AAAA,GAAtC,CAAP;AACD,EAED;;;AAEA,SAASykB,GAAT,CAAariF,QAAb,EAAuB+L,OAAvB,EAAgC;AAC9B,MAAI,OAAO/L,QAAP,KAAoB,QAAxB,EAAkC;AAChC,WAAO,CAACA,QAAD,CAAP;AACD;;AAED,MAAMqF,CAAC,GAAG,EAAV;AACA,MAAMI,GAAG,GAAGsG,OAAO,CAACplB,gBAAR,CAAyBqZ,QAAzB,CAAZ;;AAEA,OAAK,IAAItd,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+iB,GAAG,CAACvjB,MAAxB,EAAgCQ,CAAC,IAAI,CAArC,EAAwC;AACtC2iB,IAAAA,CAAC,CAAC5gB,IAAF,CAAOghB,GAAG,CAAC/iB,CAAD,CAAV;AACD;;AAED,SAAO2iB,CAAP;AACD;;AAED,SAASi9E,CAAT,CAAWtiF,QAAX,EAAqB+L,OAArB,EAA8B;AAC5B,MAAMrmB,MAAM,GAAG,2BAAf;AACA,MAAMhF,QAAQ,GAAG,6BAAjB;AACA,MAAIolB,GAAG,GAAG,EAAV;;AAEA,MAAI,CAACiG,OAAD,IAAY/L,QAAQ,YAAY8hF,IAApC,EAA0C;AACxC,WAAO9hF,QAAP;AACD;;AAED,MAAI,CAACA,QAAL,EAAe;AACb,WAAO,IAAI8hF,IAAJ,CAASh8E,GAAT,CAAP;AACD;;AAED,MAAI,OAAO9F,QAAP,KAAoB,QAAxB,EAAkC;AAChC,QAAM1K,KAAI,GAAG0K,QAAQ,CAACmJ,IAAT,EAAb;;AAEA,QAAI7T,KAAI,CAAC/L,OAAL,CAAa,GAAb,KAAqB,CAArB,IAA0B+L,KAAI,CAAC/L,OAAL,CAAa,GAAb,KAAqB,CAAnD,EAAsD;AACpD,UAAIg5F,QAAQ,GAAG,KAAf;AACA,UAAIjtF,KAAI,CAAC/L,OAAL,CAAa,KAAb,MAAwB,CAA5B,EAA+Bg5F,QAAQ,GAAG,IAAX;AAC/B,UAAIjtF,KAAI,CAAC/L,OAAL,CAAa,KAAb,MAAwB,CAA5B,EAA+Bg5F,QAAQ,GAAG,OAAX;AAC/B,UAAIjtF,KAAI,CAAC/L,OAAL,CAAa,KAAb,MAAwB,CAAxB,IAA6B+L,KAAI,CAAC/L,OAAL,CAAa,KAAb,MAAwB,CAAzD,EAA4Dg5F,QAAQ,GAAG,IAAX;AAC5D,UAAIjtF,KAAI,CAAC/L,OAAL,CAAa,QAAb,MAA2B,CAA/B,EAAkCg5F,QAAQ,GAAG,OAAX;AAClC,UAAIjtF,KAAI,CAAC/L,OAAL,CAAa,SAAb,MAA4B,CAAhC,EAAmCg5F,QAAQ,GAAG,QAAX;AACnC,UAAMC,UAAU,GAAG9hG,QAAQ,CAAC0G,aAAT,CAAuBm7F,QAAvB,CAAnB;AACAC,MAAAA,UAAU,CAAChuF,SAAX,GAAuBc,KAAvB;;AAEA,WAAK,IAAI5S,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8/F,UAAU,CAACC,UAAX,CAAsBvgG,MAA1C,EAAkDQ,CAAC,IAAI,CAAvD,EAA0D;AACxDojB,QAAAA,GAAG,CAACrhB,IAAJ,CAAS+9F,UAAU,CAACC,UAAX,CAAsB//F,CAAtB,CAAT;AACD;AACF,KAbD,MAaO;AACLojB,MAAAA,GAAG,GAAGu8E,GAAG,CAACriF,QAAQ,CAACmJ,IAAT,EAAD,EAAkB4C,OAAO,IAAIrrB,QAA7B,CAAT;AACD,KAlB+B,CAkB9B;;AAEH,GApBD,MAoBO,IAAIsf,QAAQ,CAACmK,QAAT,IAAqBnK,QAAQ,KAAKta,MAAlC,IAA4Csa,QAAQ,KAAKtf,QAA7D,EAAuE;AAC5EolB,IAAAA,GAAG,CAACrhB,IAAJ,CAASub,QAAT;AACD,GAFM,MAEA,IAAIvZ,KAAK,CAACo1E,OAAN,CAAc77D,QAAd,CAAJ,EAA6B;AAClC,QAAIA,QAAQ,YAAY8hF,IAAxB,EAA8B,OAAO9hF,QAAP;AAC9B8F,IAAAA,GAAG,GAAG9F,QAAN;AACD;;AAED,SAAO,IAAI8hF,IAAJ,CAASG,WAAW,CAACn8E,GAAD,CAApB,CAAP;AACD;;AAEDw8E,CAAC,CAACh3E,EAAF,GAAOw2E,IAAI,CAACj9E,SAAZ,EAEA;;AAEA,SAASqE,QAAT,GAA8B;AAAA,oCAATw5E,OAAS;AAATA,IAAAA,OAAS;AAAA;;AAC5B,MAAMC,UAAU,GAAGZ,SAAS,CAACW,OAAO,CAAClgG,GAAR,CAAY,UAAA+f,CAAC;AAAA,WAAIA,CAAC,CAAC+kC,KAAF,CAAQ,GAAR,CAAJ;AAAA,GAAb,CAAD,CAA5B;AACA,OAAK1gD,OAAL,CAAa,UAAA2mC,EAAE,EAAI;AAAA;;AACjB,qBAAAA,EAAE,CAAC7jC,SAAH,EAAaC,GAAb,yCAAoBg5F,UAApB;AACD,GAFD;AAGA,SAAO,IAAP;AACD;;AAED,SAASt4E,WAAT,GAAiC;AAAA,qCAATq4E,OAAS;AAATA,IAAAA,OAAS;AAAA;;AAC/B,MAAMC,UAAU,GAAGZ,SAAS,CAACW,OAAO,CAAClgG,GAAR,CAAY,UAAA+f,CAAC;AAAA,WAAIA,CAAC,CAAC+kC,KAAF,CAAQ,GAAR,CAAJ;AAAA,GAAb,CAAD,CAA5B;AACA,OAAK1gD,OAAL,CAAa,UAAA2mC,EAAE,EAAI;AAAA;;AACjB,sBAAAA,EAAE,CAAC7jC,SAAH,EAAagT,MAAb,0CAAuBimF,UAAvB;AACD,GAFD;AAGA,SAAO,IAAP;AACD;;AAED,SAASj4E,WAAT,GAAiC;AAAA,qCAATg4E,OAAS;AAATA,IAAAA,OAAS;AAAA;;AAC/B,MAAMC,UAAU,GAAGZ,SAAS,CAACW,OAAO,CAAClgG,GAAR,CAAY,UAAA+f,CAAC;AAAA,WAAIA,CAAC,CAAC+kC,KAAF,CAAQ,GAAR,CAAJ;AAAA,GAAb,CAAD,CAA5B;AACA,OAAK1gD,OAAL,CAAa,UAAA2mC,EAAE,EAAI;AACjBo1D,IAAAA,UAAU,CAAC/7F,OAAX,CAAmB,UAAAtF,SAAS,EAAI;AAC9BisC,MAAAA,EAAE,CAAC7jC,SAAH,CAAaf,MAAb,CAAoBrH,SAApB;AACD,KAFD;AAGD,GAJD;AAKD;;AAED,SAAS2oB,QAAT,GAA8B;AAAA,qCAATy4E,OAAS;AAATA,IAAAA,OAAS;AAAA;;AAC5B,MAAMC,UAAU,GAAGZ,SAAS,CAACW,OAAO,CAAClgG,GAAR,CAAY,UAAA+f,CAAC;AAAA,WAAIA,CAAC,CAAC+kC,KAAF,CAAQ,GAAR,CAAJ;AAAA,GAAb,CAAD,CAA5B;AACA,SAAO06C,WAAW,CAAC,IAAD,EAAO,UAAAz0D,EAAE,EAAI;AAC7B,WAAOo1D,UAAU,CAACxiF,MAAX,CAAkB,UAAA7e,SAAS;AAAA,aAAIisC,EAAE,CAAC7jC,SAAH,CAAagsC,QAAb,CAAsBp0C,SAAtB,CAAJ;AAAA,KAA3B,EAAiEY,MAAjE,GAA0E,CAAjF;AACD,GAFiB,CAAX,CAEJA,MAFI,GAEK,CAFZ;AAGD;;AAED,SAAS0gG,IAAT,CAAcC,KAAd,EAAqBp2F,KAArB,EAA4B;AAC1B,MAAIuf,SAAS,CAAC9pB,MAAV,KAAqB,CAArB,IAA0B,OAAO2gG,KAAP,KAAiB,QAA/C,EAAyD;AACvD;AACA,QAAI,KAAK,CAAL,CAAJ,EAAa,OAAO,KAAK,CAAL,EAAQphG,YAAR,CAAqBohG,KAArB,CAAP;AACb,WAAO5gG,SAAP;AACD,GALyB,CAKxB;;;AAGF,OAAK,IAAIS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKR,MAAzB,EAAiCQ,CAAC,IAAI,CAAtC,EAAyC;AACvC,QAAIspB,SAAS,CAAC9pB,MAAV,KAAqB,CAAzB,EAA4B;AAC1B;AACA,WAAKQ,CAAL,EAAQmH,YAAR,CAAqBg5F,KAArB,EAA4Bp2F,KAA5B;AACD,KAHD,MAGO;AACL;AACA,WAAK,IAAMq2F,QAAX,IAAuBD,KAAvB,EAA8B;AAC5B,aAAKngG,CAAL,EAAQogG,QAAR,IAAoBD,KAAK,CAACC,QAAD,CAAzB;AACA,aAAKpgG,CAAL,EAAQmH,YAAR,CAAqBi5F,QAArB,EAA+BD,KAAK,CAACC,QAAD,CAApC;AACD;AACF;AACF;;AAED,SAAO,IAAP;AACD;;AAED,SAASC,UAAT,CAAoBH,IAApB,EAA0B;AACxB,OAAK,IAAIlgG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKR,MAAzB,EAAiCQ,CAAC,IAAI,CAAtC,EAAyC;AACvC,SAAKA,CAAL,EAAQ0R,eAAR,CAAwBwuF,IAAxB;AACD;;AAED,SAAO,IAAP;AACD;;AAED,SAAS5yE,IAAT,CAAc/J,KAAd,EAAqBxZ,KAArB,EAA4B;AAC1B,MAAIuf,SAAS,CAAC9pB,MAAV,KAAqB,CAArB,IAA0B,OAAO+jB,KAAP,KAAiB,QAA/C,EAAyD;AACvD;AACA,QAAI,KAAK,CAAL,CAAJ,EAAa,OAAO,KAAK,CAAL,EAAQA,KAAR,CAAP;AACd,GAHD,MAGO;AACL;AACA,SAAK,IAAIvjB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKR,MAAzB,EAAiCQ,CAAC,IAAI,CAAtC,EAAyC;AACvC,UAAIspB,SAAS,CAAC9pB,MAAV,KAAqB,CAAzB,EAA4B;AAC1B;AACA,aAAKQ,CAAL,EAAQujB,KAAR,IAAiBxZ,KAAjB;AACD,OAHD,MAGO;AACL;AACA,aAAK,IAAMsW,QAAX,IAAuBkD,KAAvB,EAA8B;AAC5B,eAAKvjB,CAAL,EAAQqgB,QAAR,IAAoBkD,KAAK,CAAClD,QAAD,CAAzB;AACD;AACF;AACF;;AAED,WAAO,IAAP;AACD;;AAED,SAAO,IAAP;AACD;;AAED,SAASzf,IAAT,CAAc8P,GAAd,EAAmB3G,KAAnB,EAA0B;AACxB,MAAI8gC,EAAJ;;AAEA,MAAI,OAAO9gC,KAAP,KAAiB,WAArB,EAAkC;AAChC8gC,IAAAA,EAAE,GAAG,KAAK,CAAL,CAAL;AACA,QAAI,CAACA,EAAL,EAAS,OAAOtrC,SAAP,CAFuB,CAEL;;AAE3B,QAAIsrC,EAAE,CAACy1D,sBAAH,IAA6B5vF,GAAG,IAAIm6B,EAAE,CAACy1D,sBAA3C,EAAmE;AACjE,aAAOz1D,EAAE,CAACy1D,sBAAH,CAA0B5vF,GAA1B,CAAP;AACD;;AAED,QAAM6vF,OAAO,GAAG11D,EAAE,CAAC9rC,YAAH,gBAAwB2R,GAAxB,EAAhB;;AAEA,QAAI6vF,OAAJ,EAAa;AACX,aAAOA,OAAP;AACD;;AAED,WAAOhhG,SAAP;AACD,GAlBuB,CAkBtB;;;AAGF,OAAK,IAAIS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKR,MAAzB,EAAiCQ,CAAC,IAAI,CAAtC,EAAyC;AACvC6qC,IAAAA,EAAE,GAAG,KAAK7qC,CAAL,CAAL;AACA,QAAI,CAAC6qC,EAAE,CAACy1D,sBAAR,EAAgCz1D,EAAE,CAACy1D,sBAAH,GAA4B,EAA5B;AAChCz1D,IAAAA,EAAE,CAACy1D,sBAAH,CAA0B5vF,GAA1B,IAAiC3G,KAAjC;AACD;;AAED,SAAO,IAAP;AACD;;AAED,SAASy2F,UAAT,CAAoB9vF,GAApB,EAAyB;AACvB,OAAK,IAAI1Q,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKR,MAAzB,EAAiCQ,CAAC,IAAI,CAAtC,EAAyC;AACvC,QAAM6qC,EAAE,GAAG,KAAK7qC,CAAL,CAAX;;AAEA,QAAI6qC,EAAE,CAACy1D,sBAAH,IAA6Bz1D,EAAE,CAACy1D,sBAAH,CAA0B5vF,GAA1B,CAAjC,EAAiE;AAC/Dm6B,MAAAA,EAAE,CAACy1D,sBAAH,CAA0B5vF,GAA1B,IAAiC,IAAjC;AACA,aAAOm6B,EAAE,CAACy1D,sBAAH,CAA0B5vF,GAA1B,CAAP;AACD;AACF;AACF;;AAED,SAAS3Q,OAAT,GAAmB;AACjB,MAAM8qC,EAAE,GAAG,KAAK,CAAL,CAAX;AACA,MAAI,CAACA,EAAL,EAAS,OAAOtrC,SAAP;AACT,MAAMQ,OAAO,GAAG,EAAhB,CAHiB,CAGG;;AAEpB,MAAI8qC,EAAE,CAAC9qC,OAAP,EAAgB;AACd,SAAK,IAAMwgG,OAAX,IAAsB11D,EAAE,CAAC9qC,OAAzB,EAAkC;AAChCA,MAAAA,OAAO,CAACwgG,OAAD,CAAP,GAAmB11D,EAAE,CAAC9qC,OAAH,CAAWwgG,OAAX,CAAnB;AACD;AACF,GAJD,MAIO;AACL,SAAK,IAAIvgG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG6qC,EAAE,CAAC41D,UAAH,CAAcjhG,MAAlC,EAA0CQ,CAAC,IAAI,CAA/C,EAAkD;AAChD,UAAMkgG,KAAI,GAAGr1D,EAAE,CAAC41D,UAAH,CAAczgG,CAAd,CAAb;;AAEA,UAAIkgG,KAAI,CAAC5gF,IAAL,CAAUzY,OAAV,CAAkB,OAAlB,KAA8B,CAAlC,EAAqC;AACnC9G,QAAAA,OAAO,CAAC0/F,WAAW,CAACS,KAAI,CAAC5gF,IAAL,CAAUslC,KAAV,CAAgB,OAAhB,EAAyB,CAAzB,CAAD,CAAZ,CAAP,GAAoDs7C,KAAI,CAACn2F,KAAzD;AACD;AACF;AACF;;AAED,OAAK,IAAM2G,GAAX,IAAkB3Q,OAAlB,EAA2B;AACzB,QAAIA,OAAO,CAAC2Q,GAAD,CAAP,KAAiB,OAArB,EAA8B3Q,OAAO,CAAC2Q,GAAD,CAAP,GAAe,KAAf,CAA9B,KAAwD,IAAI3Q,OAAO,CAAC2Q,GAAD,CAAP,KAAiB,MAArB,EAA6B3Q,OAAO,CAAC2Q,GAAD,CAAP,GAAe,IAAf,CAA7B,KAAsD,IAAIG,UAAU,CAAC9Q,OAAO,CAAC2Q,GAAD,CAAR,CAAV,KAA6B3Q,OAAO,CAAC2Q,GAAD,CAAP,GAAe,CAAhD,EAAmD3Q,OAAO,CAAC2Q,GAAD,CAAP,IAAgB,CAAhB;AAClK;;AAED,SAAO3Q,OAAP;AACD;;AAED,SAAS4Q,GAAT,CAAa5G,KAAb,EAAoB;AAClB,MAAI,OAAOA,KAAP,KAAiB,WAArB,EAAkC;AAChC;AACA,QAAM8gC,EAAE,GAAG,KAAK,CAAL,CAAX;AACA,QAAI,CAACA,EAAL,EAAS,OAAOtrC,SAAP;;AAET,QAAIsrC,EAAE,CAAC61D,QAAH,IAAe71D,EAAE,CAACnjB,QAAH,CAAYxe,WAAZ,OAA8B,QAAjD,EAA2D;AACzD,UAAMkb,MAAM,GAAG,EAAf;;AAEA,WAAK,IAAIpkB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG6qC,EAAE,CAAC81D,eAAH,CAAmBnhG,MAAvC,EAA+CQ,CAAC,IAAI,CAApD,EAAuD;AACrDokB,QAAAA,MAAM,CAACriB,IAAP,CAAY8oC,EAAE,CAAC81D,eAAH,CAAmB3gG,CAAnB,EAAsB+J,KAAlC;AACD;;AAED,aAAOqa,MAAP;AACD;;AAED,WAAOymB,EAAE,CAAC9gC,KAAV;AACD,GAjBiB,CAiBhB;;;AAGF,OAAK,IAAI/J,EAAC,GAAG,CAAb,EAAgBA,EAAC,GAAG,KAAKR,MAAzB,EAAiCQ,EAAC,IAAI,CAAtC,EAAyC;AACvC,QAAM6qC,GAAE,GAAG,KAAK7qC,EAAL,CAAX;;AAEA,QAAI+D,KAAK,CAACo1E,OAAN,CAAcpvE,KAAd,KAAwB8gC,GAAE,CAAC61D,QAA3B,IAAuC71D,GAAE,CAACnjB,QAAH,CAAYxe,WAAZ,OAA8B,QAAzE,EAAmF;AACjF,WAAK,IAAIkhC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGS,GAAE,CAAChqC,OAAH,CAAWrB,MAA/B,EAAuC4qC,CAAC,IAAI,CAA5C,EAA+C;AAC7CS,QAAAA,GAAE,CAAChqC,OAAH,CAAWupC,CAAX,EAAcw2D,QAAd,GAAyB72F,KAAK,CAAClD,OAAN,CAAcgkC,GAAE,CAAChqC,OAAH,CAAWupC,CAAX,EAAcrgC,KAA5B,KAAsC,CAA/D;AACD;AACF,KAJD,MAIO;AACL8gC,MAAAA,GAAE,CAAC9gC,KAAH,GAAWA,KAAX;AACD;AACF;;AAED,SAAO,IAAP;AACD;;AAED,SAASA,KAAT,CAAeA,KAAf,EAAsB;AACpB,SAAO,KAAK4G,GAAL,CAAS5G,KAAT,CAAP;AACD;;AAED,SAAS82F,SAAT,CAAmBA,SAAnB,EAA8B;AAC5B,OAAK,IAAI7gG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKR,MAAzB,EAAiCQ,CAAC,IAAI,CAAtC,EAAyC;AACvC,SAAKA,CAAL,EAAQ4D,KAAR,CAAci9F,SAAd,GAA0BA,SAA1B;AACD;;AAED,SAAO,IAAP;AACD;;AAED,SAASnyF,UAAT,CAAoBhJ,QAApB,EAA8B;AAC5B,OAAK,IAAI1F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKR,MAAzB,EAAiCQ,CAAC,IAAI,CAAtC,EAAyC;AACvC,SAAKA,CAAL,EAAQ4D,KAAR,CAAcwY,kBAAd,GAAmC,OAAO1W,QAAP,KAAoB,QAApB,aAAkCA,QAAlC,UAAiDA,QAApF;AACD;;AAED,SAAO,IAAP;AACD;;AAED,SAASgD,EAAT,GAAqB;AAAA,qCAANob,IAAM;AAANA,IAAAA,IAAM;AAAA;;AACnB,MAAKg9E,SAAL,GAAqDh9E,IAArD;AAAA,MAAgBi9E,cAAhB,GAAqDj9E,IAArD;AAAA,MAAgCuG,QAAhC,GAAqDvG,IAArD;AAAA,MAA0Ck9E,OAA1C,GAAqDl9E,IAArD;;AAEA,MAAI,OAAOA,IAAI,CAAC,CAAD,CAAX,KAAmB,UAAvB,EAAmC;AAChCg9E,IAAAA,SADgC,GACAh9E,IADA;AACrBuG,IAAAA,QADqB,GACAvG,IADA;AACXk9E,IAAAA,OADW,GACAl9E,IADA;AAEjCi9E,IAAAA,cAAc,GAAGxhG,SAAjB;AACD;;AAED,MAAI,CAACyhG,OAAL,EAAcA,OAAO,GAAG,KAAV;;AAEd,WAASC,eAAT,CAAyB5+F,CAAzB,EAA4B;AAC1B,QAAMwS,MAAM,GAAGxS,CAAC,CAACwS,MAAjB;AACA,QAAI,CAACA,MAAL,EAAa;AACb,QAAMqsF,SAAS,GAAG7+F,CAAC,CAACwS,MAAF,CAASssF,aAAT,IAA0B,EAA5C;;AAEA,QAAID,SAAS,CAACr6F,OAAV,CAAkBxE,CAAlB,IAAuB,CAA3B,EAA8B;AAC5B6+F,MAAAA,SAAS,CAACt8E,OAAV,CAAkBviB,CAAlB;AACD;;AAED,QAAIu9F,CAAC,CAAC/qF,MAAD,CAAD,CAAUusF,EAAV,CAAaL,cAAb,CAAJ,EAAkC12E,QAAQ,CAAC9F,KAAT,CAAe1P,MAAf,EAAuBqsF,SAAvB,EAAlC,KAAyE;AACvE,UAAMG,QAAO,GAAGzB,CAAC,CAAC/qF,MAAD,CAAD,CAAUwsF,OAAV,EAAhB,CADuE,CAClC;;;AAErC,WAAK,IAAIlnB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGknB,QAAO,CAAC7hG,MAA5B,EAAoC26E,CAAC,IAAI,CAAzC,EAA4C;AAC1C,YAAIylB,CAAC,CAACyB,QAAO,CAAClnB,CAAD,CAAR,CAAD,CAAcinB,EAAd,CAAiBL,cAAjB,CAAJ,EAAsC12E,QAAQ,CAAC9F,KAAT,CAAe88E,QAAO,CAAClnB,CAAD,CAAtB,EAA2B+mB,SAA3B;AACvC;AACF;AACF;;AAED,WAAS38B,WAAT,CAAqBliE,CAArB,EAAwB;AACtB,QAAM6+F,SAAS,GAAG7+F,CAAC,IAAIA,CAAC,CAACwS,MAAP,GAAgBxS,CAAC,CAACwS,MAAF,CAASssF,aAAT,IAA0B,EAA1C,GAA+C,EAAjE;;AAEA,QAAID,SAAS,CAACr6F,OAAV,CAAkBxE,CAAlB,IAAuB,CAA3B,EAA8B;AAC5B6+F,MAAAA,SAAS,CAACt8E,OAAV,CAAkBviB,CAAlB;AACD;;AAEDgoB,IAAAA,QAAQ,CAAC9F,KAAT,CAAe,IAAf,EAAqB28E,SAArB;AACD;;AAED,MAAMvxC,MAAM,GAAGmxC,SAAS,CAACl8C,KAAV,CAAgB,GAAhB,CAAf;AACA,MAAIxa,CAAJ;;AAEA,OAAK,IAAIpqC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKR,MAAzB,EAAiCQ,CAAC,IAAI,CAAtC,EAAyC;AACvC,QAAM6qC,EAAE,GAAG,KAAK7qC,CAAL,CAAX;;AAEA,QAAI,CAAC+gG,cAAL,EAAqB;AACnB,WAAK32D,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGulB,MAAM,CAACnwD,MAAvB,EAA+B4qC,CAAC,IAAI,CAApC,EAAuC;AACrC,YAAMrtB,KAAK,GAAG4yC,MAAM,CAACvlB,CAAD,CAApB;AACA,YAAI,CAACS,EAAE,CAACy2D,aAAR,EAAuBz2D,EAAE,CAACy2D,aAAH,GAAmB,EAAnB;AACvB,YAAI,CAACz2D,EAAE,CAACy2D,aAAH,CAAiBvkF,KAAjB,CAAL,EAA8B8tB,EAAE,CAACy2D,aAAH,CAAiBvkF,KAAjB,IAA0B,EAA1B;AAC9B8tB,QAAAA,EAAE,CAACy2D,aAAH,CAAiBvkF,KAAjB,EAAwBhb,IAAxB,CAA6B;AAC3BsoB,UAAAA,QAAQ,EAARA,QAD2B;AAE3Bk3E,UAAAA,aAAa,EAAEh9B;AAFY,SAA7B;AAIA15B,QAAAA,EAAE,CAAC5nC,gBAAH,CAAoB8Z,KAApB,EAA2BwnD,WAA3B,EAAwCy8B,OAAxC;AACD;AACF,KAXD,MAWO;AACL;AACA,WAAK52D,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGulB,MAAM,CAACnwD,MAAvB,EAA+B4qC,CAAC,IAAI,CAApC,EAAuC;AACrC,YAAMrtB,MAAK,GAAG4yC,MAAM,CAACvlB,CAAD,CAApB;AACA,YAAI,CAACS,EAAE,CAAC22D,iBAAR,EAA2B32D,EAAE,CAAC22D,iBAAH,GAAuB,EAAvB;AAC3B,YAAI,CAAC32D,EAAE,CAAC22D,iBAAH,CAAqBzkF,MAArB,CAAL,EAAkC8tB,EAAE,CAAC22D,iBAAH,CAAqBzkF,MAArB,IAA8B,EAA9B;;AAClC8tB,QAAAA,EAAE,CAAC22D,iBAAH,CAAqBzkF,MAArB,EAA4Bhb,IAA5B,CAAiC;AAC/BsoB,UAAAA,QAAQ,EAARA,QAD+B;AAE/Bk3E,UAAAA,aAAa,EAAEN;AAFgB,SAAjC;;AAIAp2D,QAAAA,EAAE,CAAC5nC,gBAAH,CAAoB8Z,MAApB,EAA2BkkF,eAA3B,EAA4CD,OAA5C;AACD;AACF;AACF;;AAED,SAAO,IAAP;AACD;;AAED,SAASS,GAAT,GAAsB;AAAA,qCAAN39E,IAAM;AAANA,IAAAA,IAAM;AAAA;;AACpB,MAAKg9E,SAAL,GAAqDh9E,IAArD;AAAA,MAAgBi9E,cAAhB,GAAqDj9E,IAArD;AAAA,MAAgCuG,QAAhC,GAAqDvG,IAArD;AAAA,MAA0Ck9E,OAA1C,GAAqDl9E,IAArD;;AAEA,MAAI,OAAOA,IAAI,CAAC,CAAD,CAAX,KAAmB,UAAvB,EAAmC;AAChCg9E,IAAAA,SADgC,GACAh9E,IADA;AACrBuG,IAAAA,QADqB,GACAvG,IADA;AACXk9E,IAAAA,OADW,GACAl9E,IADA;AAEjCi9E,IAAAA,cAAc,GAAGxhG,SAAjB;AACD;;AAED,MAAI,CAACyhG,OAAL,EAAcA,OAAO,GAAG,KAAV;AACd,MAAMrxC,MAAM,GAAGmxC,SAAS,CAACl8C,KAAV,CAAgB,GAAhB,CAAf;;AAEA,OAAK,IAAI5kD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2vD,MAAM,CAACnwD,MAA3B,EAAmCQ,CAAC,IAAI,CAAxC,EAA2C;AACzC,QAAM+c,KAAK,GAAG4yC,MAAM,CAAC3vD,CAAD,CAApB;;AAEA,SAAK,IAAIoqC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK5qC,MAAzB,EAAiC4qC,CAAC,IAAI,CAAtC,EAAyC;AACvC,UAAMS,EAAE,GAAG,KAAKT,CAAL,CAAX;AACA,UAAIp5B,QAAQ,SAAZ;;AAEA,UAAI,CAAC+vF,cAAD,IAAmBl2D,EAAE,CAACy2D,aAA1B,EAAyC;AACvCtwF,QAAAA,QAAQ,GAAG65B,EAAE,CAACy2D,aAAH,CAAiBvkF,KAAjB,CAAX;AACD,OAFD,MAEO,IAAIgkF,cAAc,IAAIl2D,EAAE,CAAC22D,iBAAzB,EAA4C;AACjDxwF,QAAAA,QAAQ,GAAG65B,EAAE,CAAC22D,iBAAH,CAAqBzkF,KAArB,CAAX;AACD;;AAED,UAAI/L,QAAQ,IAAIA,QAAQ,CAACxR,MAAzB,EAAiC;AAC/B,aAAK,IAAI26E,CAAC,GAAGnpE,QAAQ,CAACxR,MAAT,GAAkB,CAA/B,EAAkC26E,CAAC,IAAI,CAAvC,EAA0CA,CAAC,IAAI,CAA/C,EAAkD;AAChD,cAAM9oE,OAAO,GAAGL,QAAQ,CAACmpE,CAAD,CAAxB;;AAEA,cAAI9vD,QAAQ,IAAIhZ,OAAO,CAACgZ,QAAR,KAAqBA,QAArC,EAA+C;AAC7CwgB,YAAAA,EAAE,CAACv5B,mBAAH,CAAuByL,KAAvB,EAA8B1L,OAAO,CAACkwF,aAAtC,EAAqDP,OAArD;AACAhwF,YAAAA,QAAQ,CAAC6X,MAAT,CAAgBsxD,CAAhB,EAAmB,CAAnB;AACD,WAHD,MAGO,IAAI9vD,QAAQ,IAAIhZ,OAAO,CAACgZ,QAApB,IAAgChZ,OAAO,CAACgZ,QAAR,CAAiBq3E,SAAjD,IAA8DrwF,OAAO,CAACgZ,QAAR,CAAiBq3E,SAAjB,KAA+Br3E,QAAjG,EAA2G;AAChHwgB,YAAAA,EAAE,CAACv5B,mBAAH,CAAuByL,KAAvB,EAA8B1L,OAAO,CAACkwF,aAAtC,EAAqDP,OAArD;AACAhwF,YAAAA,QAAQ,CAAC6X,MAAT,CAAgBsxD,CAAhB,EAAmB,CAAnB;AACD,WAHM,MAGA,IAAI,CAAC9vD,QAAL,EAAe;AACpBwgB,YAAAA,EAAE,CAACv5B,mBAAH,CAAuByL,KAAvB,EAA8B1L,OAAO,CAACkwF,aAAtC,EAAqDP,OAArD;AACAhwF,YAAAA,QAAQ,CAAC6X,MAAT,CAAgBsxD,CAAhB,EAAmB,CAAnB;AACD;AACF;AACF;AACF;AACF;;AAED,SAAO,IAAP;AACD;;AAED,SAASxzE,IAAT,GAAuB;AACrB,MAAMiL,GAAG,GAAG,IAAZ;;AADqB,qCAANkS,IAAM;AAANA,IAAAA,IAAM;AAAA;;AAErB,MAAKoE,SAAL,GAAqDpE,IAArD;AAAA,MAAgBi9E,cAAhB,GAAqDj9E,IAArD;AAAA,MAAgCuG,QAAhC,GAAqDvG,IAArD;AAAA,MAA0Ck9E,OAA1C,GAAqDl9E,IAArD;;AAEA,MAAI,OAAOA,IAAI,CAAC,CAAD,CAAX,KAAmB,UAAvB,EAAmC;AAChCoE,IAAAA,SADgC,GACApE,IADA;AACrBuG,IAAAA,QADqB,GACAvG,IADA;AACXk9E,IAAAA,OADW,GACAl9E,IADA;AAEjCi9E,IAAAA,cAAc,GAAGxhG,SAAjB;AACD;;AAED,WAASoiG,WAAT,GAAmC;AAAA,uCAAXC,SAAW;AAAXA,MAAAA,SAAW;AAAA;;AACjCv3E,IAAAA,QAAQ,CAAC9F,KAAT,CAAe,IAAf,EAAqBq9E,SAArB;AACAhwF,IAAAA,GAAG,CAAC6vF,GAAJ,CAAQv5E,SAAR,EAAmB64E,cAAnB,EAAmCY,WAAnC,EAAgDX,OAAhD;;AAEA,QAAIW,WAAW,CAACD,SAAhB,EAA2B;AACzB,aAAOC,WAAW,CAACD,SAAnB;AACD;AACF;;AAEDC,EAAAA,WAAW,CAACD,SAAZ,GAAwBr3E,QAAxB;AACA,SAAOzY,GAAG,CAAClJ,EAAJ,CAAOwf,SAAP,EAAkB64E,cAAlB,EAAkCY,WAAlC,EAA+CX,OAA/C,CAAP;AACD;;AAED,SAAShkF,OAAT,GAA0B;AACxB,MAAMha,MAAM,GAAG,2BAAf;;AADwB,qCAAN8gB,IAAM;AAANA,IAAAA,IAAM;AAAA;;AAExB,MAAM6rC,MAAM,GAAG7rC,IAAI,CAAC,CAAD,CAAJ,CAAQ8gC,KAAR,CAAc,GAAd,CAAf;AACA,MAAMs8C,SAAS,GAAGp9E,IAAI,CAAC,CAAD,CAAtB;;AAEA,OAAK,IAAI9jB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2vD,MAAM,CAACnwD,MAA3B,EAAmCQ,CAAC,IAAI,CAAxC,EAA2C;AACzC,QAAM+c,KAAK,GAAG4yC,MAAM,CAAC3vD,CAAD,CAApB;;AAEA,SAAK,IAAIoqC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK5qC,MAAzB,EAAiC4qC,CAAC,IAAI,CAAtC,EAAyC;AACvC,UAAMS,EAAE,GAAG,KAAKT,CAAL,CAAX;;AAEA,UAAIpnC,MAAM,CAACmlB,WAAX,EAAwB;AACtB,YAAM2wE,GAAG,GAAG,IAAI91F,MAAM,CAACmlB,WAAX,CAAuBpL,KAAvB,EAA8B;AACxC8kF,UAAAA,MAAM,EAAEX,SADgC;AAExCY,UAAAA,OAAO,EAAE,IAF+B;AAGxCv7C,UAAAA,UAAU,EAAE;AAH4B,SAA9B,CAAZ;AAKA1b,QAAAA,EAAE,CAACs2D,aAAH,GAAmBr9E,IAAI,CAACrG,MAAL,CAAY,UAAC7c,IAAD,EAAOgzB,SAAP;AAAA,iBAAqBA,SAAS,GAAG,CAAjC;AAAA,SAAZ,CAAnB;AACAiX,QAAAA,EAAE,CAACziB,aAAH,CAAiB0wE,GAAjB;AACAjuD,QAAAA,EAAE,CAACs2D,aAAH,GAAmB,EAAnB;AACA,eAAOt2D,EAAE,CAACs2D,aAAV;AACD;AACF;AACF;;AAED,SAAO,IAAP;AACD;;AAED,SAAShoF,aAAT,CAAuB+Q,QAAvB,EAAiC;AAC/B,MAAMtY,GAAG,GAAG,IAAZ;;AAEA,WAASmwF,YAAT,CAAsB1/F,CAAtB,EAAyB;AACvB,QAAIA,CAAC,CAACwS,MAAF,KAAa,IAAjB,EAAuB;AACvBqV,IAAAA,QAAQ,CAACnG,IAAT,CAAc,IAAd,EAAoB1hB,CAApB;AACAuP,IAAAA,GAAG,CAAC6vF,GAAJ,CAAQ,eAAR,EAAyBM,YAAzB;AACD;;AAED,MAAI73E,QAAJ,EAAc;AACZtY,IAAAA,GAAG,CAAClJ,EAAJ,CAAO,eAAP,EAAwBq5F,YAAxB;AACD;;AAED,SAAO,IAAP;AACD;;AAED,SAASC,YAAT,CAAsB93E,QAAtB,EAAgC;AAC9B,MAAMtY,GAAG,GAAG,IAAZ;;AAEA,WAASmwF,YAAT,CAAsB1/F,CAAtB,EAAyB;AACvB,QAAIA,CAAC,CAACwS,MAAF,KAAa,IAAjB,EAAuB;AACvBqV,IAAAA,QAAQ,CAACnG,IAAT,CAAc,IAAd,EAAoB1hB,CAApB;AACAuP,IAAAA,GAAG,CAAC6vF,GAAJ,CAAQ,cAAR,EAAwBM,YAAxB;AACD;;AAED,MAAI73E,QAAJ,EAAc;AACZtY,IAAAA,GAAG,CAAClJ,EAAJ,CAAO,cAAP,EAAuBq5F,YAAvB;AACD;;AAED,SAAO,IAAP;AACD;;AAED,SAASp+F,KAAT,GAAiB;AACf,MAAMX,MAAM,GAAG,2BAAf;;AAEA,MAAI,KAAK,CAAL,MAAYA,MAAhB,EAAwB;AACtB,WAAOA,MAAM,CAACqI,UAAd;AACD;;AAED,MAAI,KAAK7L,MAAL,GAAc,CAAlB,EAAqB;AACnB,WAAOqR,UAAU,CAAC,KAAKoxF,GAAL,CAAS,OAAT,CAAD,CAAjB;AACD;;AAED,SAAO,IAAP;AACD;;AAED,SAAS7kF,UAAT,CAAoB8kF,cAApB,EAAoC;AAClC,MAAI,KAAK1iG,MAAL,GAAc,CAAlB,EAAqB;AACnB,QAAI0iG,cAAJ,EAAoB;AAClB,UAAMzJ,OAAM,GAAG,KAAKA,MAAL,EAAf;;AACA,aAAO,KAAK,CAAL,EAAQ9tF,WAAR,GAAsBkG,UAAU,CAAC4nF,OAAM,CAACF,gBAAP,CAAwB,cAAxB,CAAD,CAAhC,GAA4E1nF,UAAU,CAAC4nF,OAAM,CAACF,gBAAP,CAAwB,aAAxB,CAAD,CAA7F;AACD;;AAED,WAAO,KAAK,CAAL,EAAQ5tF,WAAf;AACD;;AAED,SAAO,IAAP;AACD;;AAED,SAASjH,MAAT,GAAkB;AAChB,MAAMV,MAAM,GAAG,2BAAf;;AAEA,MAAI,KAAK,CAAL,MAAYA,MAAhB,EAAwB;AACtB,WAAOA,MAAM,CAACsI,WAAd;AACD;;AAED,MAAI,KAAK9L,MAAL,GAAc,CAAlB,EAAqB;AACnB,WAAOqR,UAAU,CAAC,KAAKoxF,GAAL,CAAS,QAAT,CAAD,CAAjB;AACD;;AAED,SAAO,IAAP;AACD;;AAED,SAAS7yD,WAAT,CAAqB8yD,cAArB,EAAqC;AACnC,MAAI,KAAK1iG,MAAL,GAAc,CAAlB,EAAqB;AACnB,QAAI0iG,cAAJ,EAAoB;AAClB,UAAMzJ,QAAM,GAAG,KAAKA,MAAL,EAAf;;AACA,aAAO,KAAK,CAAL,EAAQxvF,YAAR,GAAuB4H,UAAU,CAAC4nF,QAAM,CAACF,gBAAP,CAAwB,YAAxB,CAAD,CAAjC,GAA2E1nF,UAAU,CAAC4nF,QAAM,CAACF,gBAAP,CAAwB,eAAxB,CAAD,CAA5F;AACD;;AAED,WAAO,KAAK,CAAL,EAAQtvF,YAAf;AACD;;AAED,SAAO,IAAP;AACD;;AAED,SAASV,MAAT,GAAkB;AAChB,MAAI,KAAK/I,MAAL,GAAc,CAAlB,EAAqB;AACnB,QAAMwD,MAAM,GAAG,2BAAf;AACA,QAAMhF,QAAQ,GAAG,6BAAjB;AACA,QAAM6sC,EAAE,GAAG,KAAK,CAAL,CAAX;AACA,QAAMoC,GAAG,GAAGpC,EAAE,CAACpiC,qBAAH,EAAZ;AACA,QAAMxK,IAAI,GAAGD,QAAQ,CAACC,IAAtB;AACA,QAAMkkG,SAAS,GAAGt3D,EAAE,CAACs3D,SAAH,IAAgBlkG,IAAI,CAACkkG,SAArB,IAAkC,CAApD;AACA,QAAMC,UAAU,GAAGv3D,EAAE,CAACu3D,UAAH,IAAiBnkG,IAAI,CAACmkG,UAAtB,IAAoC,CAAvD;;AACA,QAAM3tF,UAAS,GAAGo2B,EAAE,KAAK7nC,MAAP,GAAgBA,MAAM,CAACgR,OAAvB,GAAiC62B,EAAE,CAACp2B,SAAtD;;AACA,QAAM1P,WAAU,GAAG8lC,EAAE,KAAK7nC,MAAP,GAAgBA,MAAM,CAACq/F,OAAvB,GAAiCx3D,EAAE,CAAC9lC,UAAvD;;AACA,WAAO;AACLzB,MAAAA,GAAG,EAAE2pC,GAAG,CAAC3pC,GAAJ,GAAUmR,UAAV,GAAsB0tF,SADtB;AAEL3+F,MAAAA,IAAI,EAAEypC,GAAG,CAACzpC,IAAJ,GAAWuB,WAAX,GAAwBq9F;AAFzB,KAAP;AAID;;AAED,SAAO,IAAP;AACD;;AAED,SAAS99F,IAAT,GAAgB;AACd,OAAK,IAAItE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKR,MAAzB,EAAiCQ,CAAC,IAAI,CAAtC,EAAyC;AACvC,SAAKA,CAAL,EAAQ4D,KAAR,CAAcnE,OAAd,GAAwB,MAAxB;AACD;;AAED,SAAO,IAAP;AACD;;AAED,SAAS4d,IAAT,GAAgB;AACd,MAAMra,MAAM,GAAG,2BAAf;;AAEA,OAAK,IAAIhD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKR,MAAzB,EAAiCQ,CAAC,IAAI,CAAtC,EAAyC;AACvC,QAAM6qC,EAAE,GAAG,KAAK7qC,CAAL,CAAX;;AAEA,QAAI6qC,EAAE,CAACjnC,KAAH,CAASnE,OAAT,KAAqB,MAAzB,EAAiC;AAC/BorC,MAAAA,EAAE,CAACjnC,KAAH,CAASnE,OAAT,GAAmB,EAAnB;AACD;;AAED,QAAIuD,MAAM,CAACjF,gBAAP,CAAwB8sC,EAAxB,EAA4B,IAA5B,EAAkC0tD,gBAAlC,CAAmD,SAAnD,MAAkE,MAAtE,EAA8E;AAC5E;AACA1tD,MAAAA,EAAE,CAACjnC,KAAH,CAASnE,OAAT,GAAmB,OAAnB;AACD;AACF;;AAED,SAAO,IAAP;AACD;;AAED,SAASg5F,MAAT,GAAkB;AAChB,MAAMz1F,MAAM,GAAG,2BAAf;AACA,MAAI,KAAK,CAAL,CAAJ,EAAa,OAAOA,MAAM,CAACjF,gBAAP,CAAwB,KAAK,CAAL,CAAxB,EAAiC,IAAjC,CAAP;AACb,SAAO,EAAP;AACD;;AAED,SAASkkG,GAAT,CAAa1+E,KAAb,EAAoBxZ,KAApB,EAA2B;AACzB,MAAM/G,MAAM,GAAG,2BAAf;AACA,MAAIhD,CAAJ;;AAEA,MAAIspB,SAAS,CAAC9pB,MAAV,KAAqB,CAAzB,EAA4B;AAC1B,QAAI,OAAO+jB,KAAP,KAAiB,QAArB,EAA+B;AAC7B;AACA,UAAI,KAAK,CAAL,CAAJ,EAAa,OAAOvgB,MAAM,CAACjF,gBAAP,CAAwB,KAAK,CAAL,CAAxB,EAAiC,IAAjC,EAAuCw6F,gBAAvC,CAAwDh1E,KAAxD,CAAP;AACd,KAHD,MAGO;AACL;AACA,WAAKvjB,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG,KAAKR,MAArB,EAA6BQ,CAAC,IAAI,CAAlC,EAAqC;AACnC,aAAK,IAAMstB,KAAX,IAAmB/J,KAAnB,EAA0B;AACxB,eAAKvjB,CAAL,EAAQ4D,KAAR,CAAc0pB,KAAd,IAAsB/J,KAAK,CAAC+J,KAAD,CAA3B;AACD;AACF;;AAED,aAAO,IAAP;AACD;AACF;;AAED,MAAIhE,SAAS,CAAC9pB,MAAV,KAAqB,CAArB,IAA0B,OAAO+jB,KAAP,KAAiB,QAA/C,EAAyD;AACvD;AACA,SAAKvjB,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG,KAAKR,MAArB,EAA6BQ,CAAC,IAAI,CAAlC,EAAqC;AACnC,WAAKA,CAAL,EAAQ4D,KAAR,CAAc2f,KAAd,IAAuBxZ,KAAvB;AACD;;AAED,WAAO,IAAP;AACD;;AAED,SAAO,IAAP;AACD;;AAED,SAAS8vE,IAAT,CAAc3vD,QAAd,EAAwB;AACtB,MAAI,CAACA,QAAL,EAAe,OAAO,IAAP;AACf,OAAKhmB,OAAL,CAAa,UAAC2mC,EAAD,EAAKzpC,KAAL,EAAe;AAC1B8oB,IAAAA,QAAQ,CAAC3F,KAAT,CAAesmB,EAAf,EAAmB,CAACA,EAAD,EAAKzpC,KAAL,CAAnB;AACD,GAFD;AAGA,SAAO,IAAP;AACD;;AAED,SAASqc,MAAT,CAAgByM,QAAhB,EAA0B;AACxB,MAAMf,MAAM,GAAGm2E,WAAW,CAAC,IAAD,EAAOp1E,QAAP,CAA1B;AACA,SAAO01E,CAAC,CAACz2E,MAAD,CAAR;AACD;;AAED,SAASvW,IAAT,CAAcA,IAAd,EAAoB;AAClB,MAAI,OAAOA,IAAP,KAAgB,WAApB,EAAiC;AAC/B,WAAO,KAAK,CAAL,IAAU,KAAK,CAAL,EAAQd,SAAlB,GAA8B,IAArC;AACD;;AAED,OAAK,IAAI9R,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKR,MAAzB,EAAiCQ,CAAC,IAAI,CAAtC,EAAyC;AACvC,SAAKA,CAAL,EAAQ8R,SAAR,GAAoBc,IAApB;AACD;;AAED,SAAO,IAAP;AACD;;AAED,SAASlT,IAAT,CAAcA,IAAd,EAAoB;AAClB,MAAI,OAAOA,IAAP,KAAgB,WAApB,EAAiC;AAC/B,WAAO,KAAK,CAAL,IAAU,KAAK,CAAL,EAAQ4iG,WAAR,CAAoB77E,IAApB,EAAV,GAAuC,IAA9C;AACD;;AAED,OAAK,IAAIzmB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKR,MAAzB,EAAiCQ,CAAC,IAAI,CAAtC,EAAyC;AACvC,SAAKA,CAAL,EAAQsiG,WAAR,GAAsB5iG,IAAtB;AACD;;AAED,SAAO,IAAP;AACD;;AAED,SAAS0hG,EAAT,CAAY9jF,QAAZ,EAAsB;AACpB,MAAMta,MAAM,GAAG,2BAAf;AACA,MAAMhF,QAAQ,GAAG,6BAAjB;AACA,MAAM6sC,EAAE,GAAG,KAAK,CAAL,CAAX;AACA,MAAI03D,WAAJ;AACA,MAAIviG,CAAJ;AACA,MAAI,CAAC6qC,EAAD,IAAO,OAAOvtB,QAAP,KAAoB,WAA/B,EAA4C,OAAO,KAAP;;AAE5C,MAAI,OAAOA,QAAP,KAAoB,QAAxB,EAAkC;AAChC,QAAIutB,EAAE,CAAC8mD,OAAP,EAAgB,OAAO9mD,EAAE,CAAC8mD,OAAH,CAAWr0E,QAAX,CAAP;AAChB,QAAIutB,EAAE,CAAC23D,qBAAP,EAA8B,OAAO33D,EAAE,CAAC23D,qBAAH,CAAyBllF,QAAzB,CAAP;AAC9B,QAAIutB,EAAE,CAAC43D,iBAAP,EAA0B,OAAO53D,EAAE,CAAC43D,iBAAH,CAAqBnlF,QAArB,CAAP;AAC1BilF,IAAAA,WAAW,GAAG3C,CAAC,CAACtiF,QAAD,CAAf;;AAEA,SAAKtd,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGuiG,WAAW,CAAC/iG,MAA5B,EAAoCQ,CAAC,IAAI,CAAzC,EAA4C;AAC1C,UAAIuiG,WAAW,CAACviG,CAAD,CAAX,KAAmB6qC,EAAvB,EAA2B,OAAO,IAAP;AAC5B;;AAED,WAAO,KAAP;AACD;;AAED,MAAIvtB,QAAQ,KAAKtf,QAAjB,EAA2B;AACzB,WAAO6sC,EAAE,KAAK7sC,QAAd;AACD;;AAED,MAAIsf,QAAQ,KAAKta,MAAjB,EAAyB;AACvB,WAAO6nC,EAAE,KAAK7nC,MAAd;AACD;;AAED,MAAIsa,QAAQ,CAACmK,QAAT,IAAqBnK,QAAQ,YAAY8hF,IAA7C,EAAmD;AACjDmD,IAAAA,WAAW,GAAGjlF,QAAQ,CAACmK,QAAT,GAAoB,CAACnK,QAAD,CAApB,GAAiCA,QAA/C;;AAEA,SAAKtd,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGuiG,WAAW,CAAC/iG,MAA5B,EAAoCQ,CAAC,IAAI,CAAzC,EAA4C;AAC1C,UAAIuiG,WAAW,CAACviG,CAAD,CAAX,KAAmB6qC,EAAvB,EAA2B,OAAO,IAAP;AAC5B;;AAED,WAAO,KAAP;AACD;;AAED,SAAO,KAAP;AACD;;AAED,SAASzpC,KAAT,GAAiB;AACf,MAAIshG,KAAK,GAAG,KAAK,CAAL,CAAZ;AACA,MAAI1iG,CAAJ;;AAEA,MAAI0iG,KAAJ,EAAW;AACT1iG,IAAAA,CAAC,GAAG,CAAJ,CADS,CACF;;AAEP,WAAO,CAAC0iG,KAAK,GAAGA,KAAK,CAACC,eAAf,MAAoC,IAA3C,EAAiD;AAC/C,UAAID,KAAK,CAACj7E,QAAN,KAAmB,CAAvB,EAA0BznB,CAAC,IAAI,CAAL;AAC3B;;AAED,WAAOA,CAAP;AACD;;AAED,SAAOT,SAAP;AACD;;AAED,SAASqhF,EAAT,CAAYx/E,KAAZ,EAAmB;AACjB,MAAI,OAAOA,KAAP,KAAiB,WAArB,EAAkC,OAAO,IAAP;AAClC,MAAM5B,MAAM,GAAG,KAAKA,MAApB;;AAEA,MAAI4B,KAAK,GAAG5B,MAAM,GAAG,CAArB,EAAwB;AACtB,WAAOogG,CAAC,CAAC,EAAD,CAAR;AACD;;AAED,MAAIx+F,KAAK,GAAG,CAAZ,EAAe;AACb,QAAMwhG,WAAW,GAAGpjG,MAAM,GAAG4B,KAA7B;AACA,QAAIwhG,WAAW,GAAG,CAAlB,EAAqB,OAAOhD,CAAC,CAAC,EAAD,CAAR;AACrB,WAAOA,CAAC,CAAC,CAAC,KAAKgD,WAAL,CAAD,CAAD,CAAR;AACD;;AAED,SAAOhD,CAAC,CAAC,CAAC,KAAKx+F,KAAL,CAAD,CAAD,CAAR;AACD;;AAED,SAASyhG,MAAT,GAAwB;AACtB,MAAIC,QAAJ;AACA,MAAM9kG,QAAQ,GAAG,6BAAjB;;AAEA,OAAK,IAAIm8E,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,UAAI36E,MAAxB,EAAgC26E,CAAC,IAAI,CAArC,EAAwC;AACtC2oB,IAAAA,QAAQ,GAAO3oB,CAAP,4BAAOA,CAAP,yBAAOA,CAAP,CAAR;;AAEA,SAAK,IAAIn6E,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKR,MAAzB,EAAiCQ,CAAC,IAAI,CAAtC,EAAyC;AACvC,UAAI,OAAO8iG,QAAP,KAAoB,QAAxB,EAAkC;AAChC,YAAMC,OAAO,GAAG/kG,QAAQ,CAAC0G,aAAT,CAAuB,KAAvB,CAAhB;AACAq+F,QAAAA,OAAO,CAACjxF,SAAR,GAAoBgxF,QAApB;;AAEA,eAAOC,OAAO,CAACC,UAAf,EAA2B;AACzB,eAAKhjG,CAAL,EAAQ4E,WAAR,CAAoBm+F,OAAO,CAACC,UAA5B;AACD;AACF,OAPD,MAOO,IAAIF,QAAQ,YAAY1D,IAAxB,EAA8B;AACnC,aAAK,IAAIh1D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG04D,QAAQ,CAACtjG,MAA7B,EAAqC4qC,CAAC,IAAI,CAA1C,EAA6C;AAC3C,eAAKpqC,CAAL,EAAQ4E,WAAR,CAAoBk+F,QAAQ,CAAC14D,CAAD,CAA5B;AACD;AACF,OAJM,MAIA;AACL,aAAKpqC,CAAL,EAAQ4E,WAAR,CAAoBk+F,QAApB;AACD;AACF;AACF;;AAED,SAAO,IAAP;AACD;;AAED,SAASG,QAAT,CAAkBpgG,MAAlB,EAA0B;AACxB+8F,EAAAA,CAAC,CAAC/8F,MAAD,CAAD,CAAUggG,MAAV,CAAiB,IAAjB;AACA,SAAO,IAAP;AACD;;AAED,SAASK,OAAT,CAAiBJ,QAAjB,EAA2B;AACzB,MAAM9kG,QAAQ,GAAG,6BAAjB;AACA,MAAIgC,CAAJ;AACA,MAAIoqC,CAAJ;;AAEA,OAAKpqC,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG,KAAKR,MAArB,EAA6BQ,CAAC,IAAI,CAAlC,EAAqC;AACnC,QAAI,OAAO8iG,QAAP,KAAoB,QAAxB,EAAkC;AAChC,UAAMC,OAAO,GAAG/kG,QAAQ,CAAC0G,aAAT,CAAuB,KAAvB,CAAhB;AACAq+F,MAAAA,OAAO,CAACjxF,SAAR,GAAoBgxF,QAApB;;AAEA,WAAK14D,CAAC,GAAG24D,OAAO,CAAChD,UAAR,CAAmBvgG,MAAnB,GAA4B,CAArC,EAAwC4qC,CAAC,IAAI,CAA7C,EAAgDA,CAAC,IAAI,CAArD,EAAwD;AACtD,aAAKpqC,CAAL,EAAQ6E,YAAR,CAAqBk+F,OAAO,CAAChD,UAAR,CAAmB31D,CAAnB,CAArB,EAA4C,KAAKpqC,CAAL,EAAQ+/F,UAAR,CAAmB,CAAnB,CAA5C;AACD;AACF,KAPD,MAOO,IAAI+C,QAAQ,YAAY1D,IAAxB,EAA8B;AACnC,WAAKh1D,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG04D,QAAQ,CAACtjG,MAAzB,EAAiC4qC,CAAC,IAAI,CAAtC,EAAyC;AACvC,aAAKpqC,CAAL,EAAQ6E,YAAR,CAAqBi+F,QAAQ,CAAC14D,CAAD,CAA7B,EAAkC,KAAKpqC,CAAL,EAAQ+/F,UAAR,CAAmB,CAAnB,CAAlC;AACD;AACF,KAJM,MAIA;AACL,WAAK//F,CAAL,EAAQ6E,YAAR,CAAqBi+F,QAArB,EAA+B,KAAK9iG,CAAL,EAAQ+/F,UAAR,CAAmB,CAAnB,CAA/B;AACD;AACF;;AAED,SAAO,IAAP;AACD;;AAED,SAASoD,SAAT,CAAmBtgG,MAAnB,EAA2B;AACzB+8F,EAAAA,CAAC,CAAC/8F,MAAD,CAAD,CAAUqgG,OAAV,CAAkB,IAAlB;AACA,SAAO,IAAP;AACD;;AAED,SAASr+F,YAAT,CAAsByY,QAAtB,EAAgC;AAC9B,MAAMipD,MAAM,GAAGq5B,CAAC,CAACtiF,QAAD,CAAhB;;AAEA,OAAK,IAAItd,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKR,MAAzB,EAAiCQ,CAAC,IAAI,CAAtC,EAAyC;AACvC,QAAIumE,MAAM,CAAC/mE,MAAP,KAAkB,CAAtB,EAAyB;AACvB+mE,MAAAA,MAAM,CAAC,CAAD,CAAN,CAAUj/C,UAAV,CAAqBziB,YAArB,CAAkC,KAAK7E,CAAL,CAAlC,EAA2CumE,MAAM,CAAC,CAAD,CAAjD;AACD,KAFD,MAEO,IAAIA,MAAM,CAAC/mE,MAAP,GAAgB,CAApB,EAAuB;AAC5B,WAAK,IAAI4qC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGm8B,MAAM,CAAC/mE,MAA3B,EAAmC4qC,CAAC,IAAI,CAAxC,EAA2C;AACzCm8B,QAAAA,MAAM,CAACn8B,CAAD,CAAN,CAAU9iB,UAAV,CAAqBziB,YAArB,CAAkC,KAAK7E,CAAL,EAAQojG,SAAR,CAAkB,IAAlB,CAAlC,EAA2D78B,MAAM,CAACn8B,CAAD,CAAjE;AACD;AACF;AACF;AACF;;AAED,SAASi5D,WAAT,CAAqB/lF,QAArB,EAA+B;AAC7B,MAAMkpD,KAAK,GAAGo5B,CAAC,CAACtiF,QAAD,CAAf;;AAEA,OAAK,IAAItd,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKR,MAAzB,EAAiCQ,CAAC,IAAI,CAAtC,EAAyC;AACvC,QAAIwmE,KAAK,CAAChnE,MAAN,KAAiB,CAArB,EAAwB;AACtBgnE,MAAAA,KAAK,CAAC,CAAD,CAAL,CAASl/C,UAAT,CAAoBziB,YAApB,CAAiC,KAAK7E,CAAL,CAAjC,EAA0CwmE,KAAK,CAAC,CAAD,CAAL,CAAS88B,WAAnD;AACD,KAFD,MAEO,IAAI98B,KAAK,CAAChnE,MAAN,GAAe,CAAnB,EAAsB;AAC3B,WAAK,IAAI4qC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGo8B,KAAK,CAAChnE,MAA1B,EAAkC4qC,CAAC,IAAI,CAAvC,EAA0C;AACxCo8B,QAAAA,KAAK,CAACp8B,CAAD,CAAL,CAAS9iB,UAAT,CAAoBziB,YAApB,CAAiC,KAAK7E,CAAL,EAAQojG,SAAR,CAAkB,IAAlB,CAAjC,EAA0D58B,KAAK,CAACp8B,CAAD,CAAL,CAASk5D,WAAnE;AACD;AACF;AACF;AACF;;AAED,SAAS52F,IAAT,CAAc4Q,QAAd,EAAwB;AACtB,MAAI,KAAK9d,MAAL,GAAc,CAAlB,EAAqB;AACnB,QAAI8d,QAAJ,EAAc;AACZ,UAAI,KAAK,CAAL,EAAQ5G,kBAAR,IAA8BkpF,CAAC,CAAC,KAAK,CAAL,EAAQlpF,kBAAT,CAAD,CAA8B0qF,EAA9B,CAAiC9jF,QAAjC,CAAlC,EAA8E;AAC5E,eAAOsiF,CAAC,CAAC,CAAC,KAAK,CAAL,EAAQlpF,kBAAT,CAAD,CAAR;AACD;;AAED,aAAOkpF,CAAC,CAAC,EAAD,CAAR;AACD;;AAED,QAAI,KAAK,CAAL,EAAQlpF,kBAAZ,EAAgC,OAAOkpF,CAAC,CAAC,CAAC,KAAK,CAAL,EAAQlpF,kBAAT,CAAD,CAAR;AAChC,WAAOkpF,CAAC,CAAC,EAAD,CAAR;AACD;;AAED,SAAOA,CAAC,CAAC,EAAD,CAAR;AACD;;AAED,SAAS2D,OAAT,CAAiBjmF,QAAjB,EAA2B;AACzB,MAAMkmF,OAAO,GAAG,EAAhB;AACA,MAAI34D,EAAE,GAAG,KAAK,CAAL,CAAT;AACA,MAAI,CAACA,EAAL,EAAS,OAAO+0D,CAAC,CAAC,EAAD,CAAR;;AAET,SAAO/0D,EAAE,CAACn0B,kBAAV,EAA8B;AAC5B,QAAMhK,KAAI,GAAGm+B,EAAE,CAACn0B,kBAAhB,CAD4B,CACQ;;AAEpC,QAAI4G,QAAJ,EAAc;AACZ,UAAIsiF,CAAC,CAAClzF,KAAD,CAAD,CAAQ00F,EAAR,CAAW9jF,QAAX,CAAJ,EAA0BkmF,OAAO,CAACzhG,IAAR,CAAa2K,KAAb;AAC3B,KAFD,MAEO82F,OAAO,CAACzhG,IAAR,CAAa2K,KAAb;;AAEPm+B,IAAAA,EAAE,GAAGn+B,KAAL;AACD;;AAED,SAAOkzF,CAAC,CAAC4D,OAAD,CAAR;AACD;;AAED,SAAS/rE,IAAT,CAAcna,QAAd,EAAwB;AACtB,MAAI,KAAK9d,MAAL,GAAc,CAAlB,EAAqB;AACnB,QAAMqrC,EAAE,GAAG,KAAK,CAAL,CAAX;;AAEA,QAAIvtB,QAAJ,EAAc;AACZ,UAAIutB,EAAE,CAACl0B,sBAAH,IAA6BipF,CAAC,CAAC/0D,EAAE,CAACl0B,sBAAJ,CAAD,CAA6ByqF,EAA7B,CAAgC9jF,QAAhC,CAAjC,EAA4E;AAC1E,eAAOsiF,CAAC,CAAC,CAAC/0D,EAAE,CAACl0B,sBAAJ,CAAD,CAAR;AACD;;AAED,aAAOipF,CAAC,CAAC,EAAD,CAAR;AACD;;AAED,QAAI/0D,EAAE,CAACl0B,sBAAP,EAA+B,OAAOipF,CAAC,CAAC,CAAC/0D,EAAE,CAACl0B,sBAAJ,CAAD,CAAR;AAC/B,WAAOipF,CAAC,CAAC,EAAD,CAAR;AACD;;AAED,SAAOA,CAAC,CAAC,EAAD,CAAR;AACD;;AAED,SAAS6D,OAAT,CAAiBnmF,QAAjB,EAA2B;AACzB,MAAMomF,OAAO,GAAG,EAAhB;AACA,MAAI74D,EAAE,GAAG,KAAK,CAAL,CAAT;AACA,MAAI,CAACA,EAAL,EAAS,OAAO+0D,CAAC,CAAC,EAAD,CAAR;;AAET,SAAO/0D,EAAE,CAACl0B,sBAAV,EAAkC;AAChC,QAAM8gB,KAAI,GAAGoT,EAAE,CAACl0B,sBAAhB,CADgC,CACQ;;AAExC,QAAI2G,QAAJ,EAAc;AACZ,UAAIsiF,CAAC,CAACnoE,KAAD,CAAD,CAAQ2pE,EAAR,CAAW9jF,QAAX,CAAJ,EAA0BomF,OAAO,CAAC3hG,IAAR,CAAa01B,KAAb;AAC3B,KAFD,MAEOisE,OAAO,CAAC3hG,IAAR,CAAa01B,KAAb;;AAEPoT,IAAAA,EAAE,GAAGpT,KAAL;AACD;;AAED,SAAOmoE,CAAC,CAAC8D,OAAD,CAAR;AACD;;AAED,SAASC,QAAT,CAAkBrmF,QAAlB,EAA4B;AAC1B,SAAO,KAAKimF,OAAL,CAAajmF,QAAb,EAAuBrW,GAAvB,CAA2B,KAAKw8F,OAAL,CAAanmF,QAAb,CAA3B,CAAP;AACD;;AAED,SAASza,MAAT,CAAgBya,QAAhB,EAA0B;AACxB,MAAM+jF,OAAO,GAAG,EAAhB,CADwB,CACJ;;AAEpB,OAAK,IAAIrhG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKR,MAAzB,EAAiCQ,CAAC,IAAI,CAAtC,EAAyC;AACvC,QAAI,KAAKA,CAAL,EAAQsnB,UAAR,KAAuB,IAA3B,EAAiC;AAC/B,UAAIhK,QAAJ,EAAc;AACZ,YAAIsiF,CAAC,CAAC,KAAK5/F,CAAL,EAAQsnB,UAAT,CAAD,CAAsB85E,EAAtB,CAAyB9jF,QAAzB,CAAJ,EAAwC+jF,OAAO,CAACt/F,IAAR,CAAa,KAAK/B,CAAL,EAAQsnB,UAArB;AACzC,OAFD,MAEO;AACL+5E,QAAAA,OAAO,CAACt/F,IAAR,CAAa,KAAK/B,CAAL,EAAQsnB,UAArB;AACD;AACF;AACF;;AAED,SAAOs4E,CAAC,CAACyB,OAAD,CAAR;AACD;;AAED,SAASA,OAAT,CAAiB/jF,QAAjB,EAA2B;AACzB,MAAM+jF,OAAO,GAAG,EAAhB,CADyB,CACL;;AAEpB,OAAK,IAAIrhG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKR,MAAzB,EAAiCQ,CAAC,IAAI,CAAtC,EAAyC;AACvC,QAAI6C,OAAM,GAAG,KAAK7C,CAAL,EAAQsnB,UAArB,CADuC,CACN;;AAEjC,WAAOzkB,OAAP,EAAe;AACb,UAAIya,QAAJ,EAAc;AACZ,YAAIsiF,CAAC,CAAC/8F,OAAD,CAAD,CAAUu+F,EAAV,CAAa9jF,QAAb,CAAJ,EAA4B+jF,OAAO,CAACt/F,IAAR,CAAac,OAAb;AAC7B,OAFD,MAEO;AACLw+F,QAAAA,OAAO,CAACt/F,IAAR,CAAac,OAAb;AACD;;AAEDA,MAAAA,OAAM,GAAGA,OAAM,CAACykB,UAAhB;AACD;AACF;;AAED,SAAOs4E,CAAC,CAACyB,OAAD,CAAR;AACD;;AAED,SAASz4F,OAAT,CAAiB0U,QAAjB,EAA2B;AACzB,MAAI1U,OAAO,GAAG,IAAd,CADyB,CACL;;AAEpB,MAAI,OAAO0U,QAAP,KAAoB,WAAxB,EAAqC;AACnC,WAAOsiF,CAAC,CAAC,EAAD,CAAR;AACD;;AAED,MAAI,CAACh3F,OAAO,CAACw4F,EAAR,CAAW9jF,QAAX,CAAL,EAA2B;AACzB1U,IAAAA,OAAO,GAAGA,OAAO,CAACy4F,OAAR,CAAgB/jF,QAAhB,EAA0BsjE,EAA1B,CAA6B,CAA7B,CAAV;AACD;;AAED,SAAOh4E,OAAP;AACD;;AAED,SAASg7F,IAAT,CAActmF,QAAd,EAAwB;AACtB,MAAMumF,aAAa,GAAG,EAAtB;;AAEA,OAAK,IAAI7jG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKR,MAAzB,EAAiCQ,CAAC,IAAI,CAAtC,EAAyC;AACvC,QAAM8jG,KAAK,GAAG,KAAK9jG,CAAL,EAAQiE,gBAAR,CAAyBqZ,QAAzB,CAAd;;AAEA,SAAK,IAAI8sB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG05D,KAAK,CAACtkG,MAA1B,EAAkC4qC,CAAC,IAAI,CAAvC,EAA0C;AACxCy5D,MAAAA,aAAa,CAAC9hG,IAAd,CAAmB+hG,KAAK,CAAC15D,CAAD,CAAxB;AACD;AACF;;AAED,SAAOw1D,CAAC,CAACiE,aAAD,CAAR;AACD;;AAED,SAASlhG,QAAT,CAAkB2a,QAAlB,EAA4B;AAC1B,MAAM3a,QAAQ,GAAG,EAAjB,CAD0B,CACL;;AAErB,OAAK,IAAI3C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKR,MAAzB,EAAiCQ,CAAC,IAAI,CAAtC,EAAyC;AACvC,QAAM+/F,UAAU,GAAG,KAAK//F,CAAL,EAAQ2C,QAA3B;;AAEA,SAAK,IAAIynC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG21D,UAAU,CAACvgG,MAA/B,EAAuC4qC,CAAC,IAAI,CAA5C,EAA+C;AAC7C,UAAI,CAAC9sB,QAAD,IAAasiF,CAAC,CAACG,UAAU,CAAC31D,CAAD,CAAX,CAAD,CAAiBg3D,EAAjB,CAAoB9jF,QAApB,CAAjB,EAAgD;AAC9C3a,QAAAA,QAAQ,CAACZ,IAAT,CAAcg+F,UAAU,CAAC31D,CAAD,CAAxB;AACD;AACF;AACF;;AAED,SAAOw1D,CAAC,CAACj9F,QAAD,CAAR;AACD;;AAED,SAASqX,MAAT,GAAkB;AAChB,OAAK,IAAIha,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKR,MAAzB,EAAiCQ,CAAC,IAAI,CAAtC,EAAyC;AACvC,QAAI,KAAKA,CAAL,EAAQsnB,UAAZ,EAAwB,KAAKtnB,CAAL,EAAQsnB,UAAR,CAAmBy8E,WAAnB,CAA+B,KAAK/jG,CAAL,CAA/B;AACzB;;AAED,SAAO,IAAP;AACD;;AAED,SAASq0C,MAAT,GAAkB;AAChB,SAAO,KAAKr6B,MAAL,EAAP;AACD;;AAED,SAAS/S,GAAT,GAAqB;AACnB,MAAM2K,GAAG,GAAG,IAAZ;AACA,MAAI5R,CAAJ;AACA,MAAIoqC,CAAJ;;AAHmB,sCAAL45D,GAAK;AAALA,IAAAA,GAAK;AAAA;;AAKnB,OAAKhkG,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGgkG,GAAG,CAACxkG,MAApB,EAA4BQ,CAAC,IAAI,CAAjC,EAAoC;AAClC,QAAMikG,KAAK,GAAGrE,CAAC,CAACoE,GAAG,CAAChkG,CAAD,CAAJ,CAAf;;AAEA,SAAKoqC,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG65D,KAAK,CAACzkG,MAAtB,EAA8B4qC,CAAC,IAAI,CAAnC,EAAsC;AACpCx4B,MAAAA,GAAG,CAAC7P,IAAJ,CAASkiG,KAAK,CAAC75D,CAAD,CAAd;AACD;AACF;;AAED,SAAOx4B,GAAP;AACD;;AAED,SAASsyF,KAAT,GAAiB;AACf,OAAK,IAAIlkG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKR,MAAzB,EAAiCQ,CAAC,IAAI,CAAtC,EAAyC;AACvC,QAAM6qC,EAAE,GAAG,KAAK7qC,CAAL,CAAX;;AAEA,QAAI6qC,EAAE,CAACpjB,QAAH,KAAgB,CAApB,EAAuB;AACrB,WAAK,IAAI2iB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGS,EAAE,CAACk1D,UAAH,CAAcvgG,MAAlC,EAA0C4qC,CAAC,IAAI,CAA/C,EAAkD;AAChD,YAAIS,EAAE,CAACk1D,UAAH,CAAc31D,CAAd,EAAiB9iB,UAArB,EAAiC;AAC/BujB,UAAAA,EAAE,CAACk1D,UAAH,CAAc31D,CAAd,EAAiB9iB,UAAjB,CAA4By8E,WAA5B,CAAwCl5D,EAAE,CAACk1D,UAAH,CAAc31D,CAAd,CAAxC;AACD;AACF;;AAEDS,MAAAA,EAAE,CAACy3D,WAAH,GAAiB,EAAjB;AACD;AACF;;AAED,SAAO,IAAP;AACD,EAED;;;AAEA,SAAShtF,QAAT,GAA2B;AACzB,MAAMtS,MAAM,GAAG,2BAAf;;AADyB,sCAAN8gB,IAAM;AAANA,IAAAA,IAAM;AAAA;;AAEzB,MAAKtgB,IAAL,GAA8CsgB,IAA9C;AAAA,MAAWxgB,GAAX,GAA8CwgB,IAA9C;AAAA,MAAgBpe,QAAhB,GAA8Coe,IAA9C;AAAA,MAA0B9Y,MAA1B,GAA8C8Y,IAA9C;AAAA,MAAkCoG,QAAlC,GAA8CpG,IAA9C;;AAEA,MAAIA,IAAI,CAACtkB,MAAL,KAAgB,CAAhB,IAAqB,OAAOwL,MAAP,KAAkB,UAA3C,EAAuD;AACrDkf,IAAAA,QAAQ,GAAGlf,MAAX;AACCxH,IAAAA,IAFoD,GAEXsgB,IAFW;AAE9CxgB,IAAAA,GAF8C,GAEXwgB,IAFW;AAEzCpe,IAAAA,QAFyC,GAEXoe,IAFW;AAE/BoG,IAAAA,QAF+B,GAEXpG,IAFW;AAErB9Y,IAAAA,MAFqB,GAEX8Y,IAFW;AAGtD;;AAED,MAAI,OAAO9Y,MAAP,KAAkB,WAAtB,EAAmCA,MAAM,GAAG,OAAT;AACnC,SAAO,KAAK6uE,IAAL,CAAU,SAAStG,OAAT,GAAmB;AAClC,QAAM1oC,EAAE,GAAG,IAAX;AACA,QAAIs5D,UAAJ;AACA,QAAIC,WAAJ;AACA,QAAIC,MAAJ;AACA,QAAIC,OAAJ;AACA,QAAIC,MAAJ;AACA,QAAIC,OAAJ;AACA,QAAI/vF,SAAJ,CARkC,CAQnB;;AAEf,QAAI1P,UAAJ,CAVkC,CAUlB;;AAEhB,QAAI0/F,UAAU,GAAGnhG,GAAG,GAAG,CAAN,IAAWA,GAAG,KAAK,CAApC;AACA,QAAIohG,WAAW,GAAGlhG,IAAI,GAAG,CAAP,IAAYA,IAAI,KAAK,CAAvC;;AAEA,QAAI,OAAOwH,MAAP,KAAkB,WAAtB,EAAmC;AACjCA,MAAAA,MAAM,GAAG,OAAT;AACD;;AAED,QAAIy5F,UAAJ,EAAgB;AACdN,MAAAA,UAAU,GAAGt5D,EAAE,CAACp2B,SAAhB;;AAEA,UAAI,CAAC/O,QAAL,EAAe;AACbmlC,QAAAA,EAAE,CAACp2B,SAAH,GAAenR,GAAf;AACD;AACF;;AAED,QAAIohG,WAAJ,EAAiB;AACfN,MAAAA,WAAW,GAAGv5D,EAAE,CAAC9lC,UAAjB;;AAEA,UAAI,CAACW,QAAL,EAAe;AACbmlC,QAAAA,EAAE,CAAC9lC,UAAH,GAAgBvB,IAAhB;AACD;AACF;;AAED,QAAI,CAACkC,QAAL,EAAe;;AAEf,QAAI++F,UAAJ,EAAgB;AACdJ,MAAAA,MAAM,GAAGx5D,EAAE,CAAC32B,YAAH,GAAkB22B,EAAE,CAAC5hC,YAA9B;AACAs7F,MAAAA,MAAM,GAAGhiG,IAAI,CAAC0H,GAAL,CAAS1H,IAAI,CAACyH,GAAL,CAAS1G,GAAT,EAAc+gG,MAAd,CAAT,EAAgC,CAAhC,CAAT;AACD;;AAED,QAAIK,WAAJ,EAAiB;AACfJ,MAAAA,OAAO,GAAGz5D,EAAE,CAAC5lC,WAAH,GAAiB4lC,EAAE,CAAClgC,WAA9B;AACA65F,MAAAA,OAAO,GAAGjiG,IAAI,CAAC0H,GAAL,CAAS1H,IAAI,CAACyH,GAAL,CAASxG,IAAT,EAAe8gG,OAAf,CAAT,EAAkC,CAAlC,CAAV;AACD;;AAED,QAAIK,SAAS,GAAG,IAAhB;AACA,QAAIF,UAAU,IAAIF,MAAM,KAAKJ,UAA7B,EAAyCM,UAAU,GAAG,KAAb;AACzC,QAAIC,WAAW,IAAIF,OAAO,KAAKJ,WAA/B,EAA4CM,WAAW,GAAG,KAAd;;AAE5C,aAAS/0F,MAAT,GAA6C;AAAA,UAA7BnE,IAA6B,uEAAtB,IAAIya,IAAJ,GAAW2+E,OAAX,EAAsB;;AAC3C,UAAID,SAAS,KAAK,IAAlB,EAAwB;AACtBA,QAAAA,SAAS,GAAGn5F,IAAZ;AACD;;AAED,UAAMoB,QAAQ,GAAGrK,IAAI,CAAC0H,GAAL,CAAS1H,IAAI,CAACyH,GAAL,CAAS,CAACwB,IAAI,GAAGm5F,SAAR,IAAqBj/F,QAA9B,EAAwC,CAAxC,CAAT,EAAqD,CAArD,CAAjB;AACA,UAAMm/F,YAAY,GAAG75F,MAAM,KAAK,QAAX,GAAsB4B,QAAtB,GAAiC,MAAMrK,IAAI,CAACw/B,GAAL,CAASn1B,QAAQ,GAAGrK,IAAI,CAACsL,EAAzB,IAA+B,CAA3F;AACA,UAAIi3F,IAAJ;AACA,UAAIL,UAAJ,EAAgBhwF,SAAS,GAAG0vF,UAAU,GAAGU,YAAY,IAAIN,MAAM,GAAGJ,UAAb,CAArC;AAChB,UAAIO,WAAJ,EAAiB3/F,UAAU,GAAGq/F,WAAW,GAAGS,YAAY,IAAIL,OAAO,GAAGJ,WAAd,CAAvC;;AAEjB,UAAIK,UAAU,IAAIF,MAAM,GAAGJ,UAAvB,IAAqC1vF,SAAS,IAAI8vF,MAAtD,EAA8D;AAC5D15D,QAAAA,EAAE,CAACp2B,SAAH,GAAe8vF,MAAf;AACAO,QAAAA,IAAI,GAAG,IAAP;AACD;;AAED,UAAIL,UAAU,IAAIF,MAAM,GAAGJ,UAAvB,IAAqC1vF,SAAS,IAAI8vF,MAAtD,EAA8D;AAC5D15D,QAAAA,EAAE,CAACp2B,SAAH,GAAe8vF,MAAf;AACAO,QAAAA,IAAI,GAAG,IAAP;AACD;;AAED,UAAIJ,WAAW,IAAIF,OAAO,GAAGJ,WAAzB,IAAwCr/F,UAAU,IAAIy/F,OAA1D,EAAmE;AACjE35D,QAAAA,EAAE,CAAC9lC,UAAH,GAAgBy/F,OAAhB;AACAM,QAAAA,IAAI,GAAG,IAAP;AACD;;AAED,UAAIJ,WAAW,IAAIF,OAAO,GAAGJ,WAAzB,IAAwCr/F,UAAU,IAAIy/F,OAA1D,EAAmE;AACjE35D,QAAAA,EAAE,CAAC9lC,UAAH,GAAgBy/F,OAAhB;AACAM,QAAAA,IAAI,GAAG,IAAP;AACD;;AAED,UAAIA,IAAJ,EAAU;AACR,YAAI56E,QAAJ,EAAcA,QAAQ;AACtB;AACD;;AAED,UAAIu6E,UAAJ,EAAgB55D,EAAE,CAACp2B,SAAH,GAAeA,SAAf;AAChB,UAAIiwF,WAAJ,EAAiB75D,EAAE,CAAC9lC,UAAH,GAAgBA,UAAhB;AACjB/B,MAAAA,MAAM,CAACqN,qBAAP,CAA6BV,MAA7B;AACD;;AAED3M,IAAAA,MAAM,CAACqN,qBAAP,CAA6BV,MAA7B;AACD,GA7FM,CAAP;AA8FD,EAAC;;;AAGF,SAAS8E,SAAT,GAA4B;AAAA,sCAANqP,IAAM;AAANA,IAAAA,IAAM;AAAA;;AAC1B,MAAKxgB,GAAL,GAAwCwgB,IAAxC;AAAA,MAAUpe,QAAV,GAAwCoe,IAAxC;AAAA,MAAoB9Y,MAApB,GAAwC8Y,IAAxC;AAAA,MAA4BoG,QAA5B,GAAwCpG,IAAxC;;AAEA,MAAIA,IAAI,CAACtkB,MAAL,KAAgB,CAAhB,IAAqB,OAAOwL,MAAP,KAAkB,UAA3C,EAAuD;AACpD1H,IAAAA,GADoD,GACjBwgB,IADiB;AAC/Cpe,IAAAA,QAD+C,GACjBoe,IADiB;AACrCoG,IAAAA,QADqC,GACjBpG,IADiB;AAC3B9Y,IAAAA,MAD2B,GACjB8Y,IADiB;AAEtD;;AAED,MAAMlS,GAAG,GAAG,IAAZ;;AAEA,MAAI,OAAOtO,GAAP,KAAe,WAAnB,EAAgC;AAC9B,QAAIsO,GAAG,CAACpS,MAAJ,GAAa,CAAjB,EAAoB,OAAOoS,GAAG,CAAC,CAAD,CAAH,CAAO6C,SAAd;AACpB,WAAO,IAAP;AACD;;AAED,SAAO7C,GAAG,CAAC0D,QAAJ,CAAa/V,SAAb,EAAwB+D,GAAxB,EAA6BoC,QAA7B,EAAuCsF,MAAvC,EAA+Ckf,QAA/C,CAAP;AACD;;AAED,SAASnlB,UAAT,GAA6B;AAAA,sCAAN+e,IAAM;AAANA,IAAAA,IAAM;AAAA;;AAC3B,MAAKtgB,IAAL,GAAyCsgB,IAAzC;AAAA,MAAWpe,QAAX,GAAyCoe,IAAzC;AAAA,MAAqB9Y,MAArB,GAAyC8Y,IAAzC;AAAA,MAA6BoG,QAA7B,GAAyCpG,IAAzC;;AAEA,MAAIA,IAAI,CAACtkB,MAAL,KAAgB,CAAhB,IAAqB,OAAOwL,MAAP,KAAkB,UAA3C,EAAuD;AACpDxH,IAAAA,IADoD,GAChBsgB,IADgB;AAC9Cpe,IAAAA,QAD8C,GAChBoe,IADgB;AACpCoG,IAAAA,QADoC,GAChBpG,IADgB;AAC1B9Y,IAAAA,MAD0B,GAChB8Y,IADgB;AAEtD;;AAED,MAAMlS,GAAG,GAAG,IAAZ;;AAEA,MAAI,OAAOpO,IAAP,KAAgB,WAApB,EAAiC;AAC/B,QAAIoO,GAAG,CAACpS,MAAJ,GAAa,CAAjB,EAAoB,OAAOoS,GAAG,CAAC,CAAD,CAAH,CAAO7M,UAAd;AACpB,WAAO,IAAP;AACD;;AAED,SAAO6M,GAAG,CAAC0D,QAAJ,CAAa9R,IAAb,EAAmBjE,SAAnB,EAA8BmG,QAA9B,EAAwCsF,MAAxC,EAAgDkf,QAAhD,CAAP;AACD,EAED;;;AAEA,SAASqpD,OAAT,CAAiBwxB,YAAjB,EAA+BC,aAA/B,EAA8C;AAC5C,MAAMhiG,MAAM,GAAG,2BAAf;AACA,MAAMghG,GAAG,GAAG,IAAZ;AACA,MAAMrhF,CAAC,GAAG;AACRY,IAAAA,KAAK,EAAE,SAAc,EAAd,EAAkBwhF,YAAlB,CADC;AAERh3D,IAAAA,MAAM,EAAE,SAAc;AACpBroC,MAAAA,QAAQ,EAAE,GADU;AAEpBsF,MAAAA,MAAM,EAAE,OAFY,CAEJ;;AAEhB;AACN;AACA;AACA;AACA;;AAR0B,KAAd,EAULg6F,aAVK,CAFA;AAaRj9E,IAAAA,QAAQ,EAAEi8E,GAbF;AAcRiB,IAAAA,SAAS,EAAE,KAdH;AAeRC,IAAAA,GAAG,EAAE,EAfG;AAiBRC,IAAAA,cAjBQ,0BAiBOn6F,MAjBP,EAiBe4B,QAjBf,EAiByB;AAC/B,UAAI5B,MAAM,KAAK,OAAf,EAAwB;AACtB,eAAO,MAAMzI,IAAI,CAACw/B,GAAL,CAASn1B,QAAQ,GAAGrK,IAAI,CAACsL,EAAzB,IAA+B,CAA5C;AACD;;AAED,UAAI,OAAO7C,MAAP,KAAkB,UAAtB,EAAkC;AAChC,eAAOA,MAAM,CAAC4B,QAAD,CAAb;AACD;;AAED,aAAOA,QAAP;AACD,KA3BO;AA6BRlD,IAAAA,IA7BQ,kBA6BD;AACL,UAAIiZ,CAAC,CAACyiF,OAAN,EAAe;AACbpiG,QAAAA,MAAM,CAACqiG,oBAAP,CAA4B1iF,CAAC,CAACyiF,OAA9B;AACD;;AAEDziF,MAAAA,CAAC,CAACsiF,SAAF,GAAc,KAAd;AACAtiF,MAAAA,CAAC,CAACoF,QAAF,CAAW8xD,IAAX,CAAgB,UAAAhvC,EAAE,EAAI;AACpB,YAAMhsC,OAAO,GAAGgsC,EAAhB;AACA,eAAOhsC,OAAO,CAACymG,mBAAf;AACD,OAHD;AAIA3iF,MAAAA,CAAC,CAACuiF,GAAF,GAAQ,EAAR;AACD,KAxCO;AA0CRJ,IAAAA,IA1CQ,gBA0CH54E,QA1CG,EA0CO;AACbvJ,MAAAA,CAAC,CAACsiF,SAAF,GAAc,KAAd;AACAtiF,MAAAA,CAAC,CAACoF,QAAF,CAAW8xD,IAAX,CAAgB,UAAAhvC,EAAE,EAAI;AACpB,YAAMhsC,OAAO,GAAGgsC,EAAhB;AACA,eAAOhsC,OAAO,CAACymG,mBAAf;AACD,OAHD;AAIA,UAAIp5E,QAAJ,EAAcA,QAAQ,CAAC83E,GAAD,CAAR;;AAEd,UAAIrhF,CAAC,CAACuiF,GAAF,CAAM1lG,MAAN,GAAe,CAAnB,EAAsB;AACpB,YAAM0lG,GAAG,GAAGviF,CAAC,CAACuiF,GAAF,CAAMzxE,KAAN,EAAZ;AACA9Q,QAAAA,CAAC,CAAC4wD,OAAF,CAAU2xB,GAAG,CAAC,CAAD,CAAb,EAAkBA,GAAG,CAAC,CAAD,CAArB;AACD;AACF,KAtDO;AAwDR3xB,IAAAA,OAxDQ,mBAwDAhwD,KAxDA,EAwDOwqB,MAxDP,EAwDe;AACrB,UAAIprB,CAAC,CAACsiF,SAAN,EAAiB;AACftiF,QAAAA,CAAC,CAACuiF,GAAF,CAAMnjG,IAAN,CAAW,CAACwhB,KAAD,EAAQwqB,MAAR,CAAX;AACA,eAAOprB,CAAP;AACD;;AAED,UAAMoF,QAAQ,GAAG,EAAjB,CANqB,CAMA;;AAErBpF,MAAAA,CAAC,CAACoF,QAAF,CAAW8xD,IAAX,CAAgB,UAAChvC,EAAD,EAAKzpC,KAAL,EAAe;AAC7B,YAAImkG,gBAAJ;AACA,YAAIC,YAAJ;AACA,YAAI77D,IAAJ;AACA,YAAI87D,UAAJ;AACA,YAAIC,cAAJ;AACA,YAAI,CAAC76D,EAAE,CAACy6D,mBAAR,EAA6B3iF,CAAC,CAACoF,QAAF,CAAW3mB,KAAX,EAAkBkkG,mBAAlB,GAAwC3iF,CAAxC;AAC7BoF,QAAAA,QAAQ,CAAC3mB,KAAD,CAAR,GAAkB;AAChBiJ,UAAAA,SAAS,EAAEwgC;AADK,SAAlB;AAGAh+B,QAAAA,MAAM,CAACC,IAAP,CAAYyW,KAAZ,EAAmBrf,OAAnB,CAA2B,UAAAopB,IAAI,EAAI;AACjCi4E,UAAAA,gBAAgB,GAAGviG,MAAM,CAACjF,gBAAP,CAAwB8sC,EAAxB,EAA4B,IAA5B,EAAkC0tD,gBAAlC,CAAmDjrE,IAAnD,EAAyDxmB,OAAzD,CAAiE,GAAjE,EAAsE,GAAtE,CAAnB;AACA0+F,UAAAA,YAAY,GAAG30F,UAAU,CAAC00F,gBAAD,CAAzB;AACA57D,UAAAA,IAAI,GAAG47D,gBAAgB,CAACz+F,OAAjB,CAAyB0+F,YAAzB,EAAuC,EAAvC,CAAP;AACAC,UAAAA,UAAU,GAAG50F,UAAU,CAAC0S,KAAK,CAAC+J,IAAD,CAAN,CAAvB;AACAo4E,UAAAA,cAAc,GAAGniF,KAAK,CAAC+J,IAAD,CAAL,GAAcqc,IAA/B;AACA5hB,UAAAA,QAAQ,CAAC3mB,KAAD,CAAR,CAAgBksB,IAAhB,IAAwB;AACtBi4E,YAAAA,gBAAgB,EAAhBA,gBADsB;AAEtBC,YAAAA,YAAY,EAAZA,YAFsB;AAGtB77D,YAAAA,IAAI,EAAJA,IAHsB;AAItB87D,YAAAA,UAAU,EAAVA,UAJsB;AAKtBC,YAAAA,cAAc,EAAdA,cALsB;AAMtBn4E,YAAAA,YAAY,EAAEi4E;AANQ,WAAxB;AAQD,SAdD;AAeD,OAzBD;AA0BA,UAAIb,SAAS,GAAG,IAAhB;AACA,UAAIn5F,IAAJ;AACA,UAAIm6F,YAAY,GAAG,CAAnB;AACA,UAAIC,SAAS,GAAG,CAAhB;AACA,UAAId,IAAJ;AACA,UAAIe,KAAK,GAAG,KAAZ;AACAljF,MAAAA,CAAC,CAACsiF,SAAF,GAAc,IAAd;;AAEA,eAASt1F,MAAT,GAAkB;AAChBnE,QAAAA,IAAI,GAAG,IAAIya,IAAJ,GAAW2+E,OAAX,EAAP;AACA,YAAIh4F,QAAJ;AACA,YAAIi4F,YAAJ,CAHgB,CAGE;;AAElB,YAAI,CAACgB,KAAL,EAAY;AACVA,UAAAA,KAAK,GAAG,IAAR;AACA,cAAI93D,MAAM,CAAC+3D,KAAX,EAAkB/3D,MAAM,CAAC+3D,KAAP,CAAa9B,GAAb;AACnB;;AAED,YAAIW,SAAS,KAAK,IAAlB,EAAwB;AACtBA,UAAAA,SAAS,GAAGn5F,IAAZ;AACD;;AAED,YAAIuiC,MAAM,CAACnhC,QAAX,EAAqB;AACnB;AACAmhC,UAAAA,MAAM,CAACnhC,QAAP,CAAgBo3F,GAAhB,EAAqBzhG,IAAI,CAAC0H,GAAL,CAAS1H,IAAI,CAACyH,GAAL,CAAS,CAACwB,IAAI,GAAGm5F,SAAR,IAAqB52D,MAAM,CAACroC,QAArC,EAA+C,CAA/C,CAAT,EAA4D,CAA5D,CAArB,EAAqFi/F,SAAS,GAAG52D,MAAM,CAACroC,QAAnB,GAA8B8F,IAA9B,GAAqC,CAArC,GAAyC,CAAzC,GAA6Cm5F,SAAS,GAAG52D,MAAM,CAACroC,QAAnB,GAA8B8F,IAAhK,EAAsKm5F,SAAtK;AACD;;AAED58E,QAAAA,QAAQ,CAAC7jB,OAAT,CAAiB,UAAArF,OAAO,EAAI;AAC1B,cAAMgsC,EAAE,GAAGhsC,OAAX;AACA,cAAIimG,IAAI,IAAIj6D,EAAE,CAACi6D,IAAf,EAAqB;AACrBj4F,UAAAA,MAAM,CAACC,IAAP,CAAYyW,KAAZ,EAAmBrf,OAAnB,CAA2B,UAAAopB,IAAI,EAAI;AACjC,gBAAIw3E,IAAI,IAAIj6D,EAAE,CAACi6D,IAAf,EAAqB;AACrBl4F,YAAAA,QAAQ,GAAGrK,IAAI,CAAC0H,GAAL,CAAS1H,IAAI,CAACyH,GAAL,CAAS,CAACwB,IAAI,GAAGm5F,SAAR,IAAqB52D,MAAM,CAACroC,QAArC,EAA+C,CAA/C,CAAT,EAA4D,CAA5D,CAAX;AACAm/F,YAAAA,YAAY,GAAGliF,CAAC,CAACwiF,cAAF,CAAiBp3D,MAAM,CAAC/iC,MAAxB,EAAgC4B,QAAhC,CAAf;AACA,2BAIIi+B,EAAE,CAACvd,IAAD,CAJN;AAAA,gBACEk4E,YADF,YACEA,YADF;AAAA,gBAEEC,UAFF,YAEEA,UAFF;AAAA,gBAGE97D,IAHF,YAGEA,IAHF;AAKAkB,YAAAA,EAAE,CAACvd,IAAD,CAAF,CAASC,YAAT,GAAwBi4E,YAAY,GAAGX,YAAY,IAAIY,UAAU,GAAGD,YAAjB,CAAnD;AACA,gBAAMj4E,YAAY,GAAGsd,EAAE,CAACvd,IAAD,CAAF,CAASC,YAA9B;;AAEA,gBAAIk4E,UAAU,GAAGD,YAAb,IAA6Bj4E,YAAY,IAAIk4E,UAA7C,IAA2DA,UAAU,GAAGD,YAAb,IAA6Bj4E,YAAY,IAAIk4E,UAA5G,EAAwH;AACtH56D,cAAAA,EAAE,CAACxgC,SAAH,CAAazG,KAAb,CAAmB0pB,IAAnB,IAA2Bm4E,UAAU,GAAG97D,IAAxC;AACAi8D,cAAAA,SAAS,IAAI,CAAb;;AAEA,kBAAIA,SAAS,KAAK/4F,MAAM,CAACC,IAAP,CAAYyW,KAAZ,EAAmB/jB,MAArC,EAA6C;AAC3CqrC,gBAAAA,EAAE,CAACi6D,IAAH,GAAU,IAAV;AACAa,gBAAAA,YAAY,IAAI,CAAhB;AACD;;AAED,kBAAIA,YAAY,KAAK59E,QAAQ,CAACvoB,MAA9B,EAAsC;AACpCslG,gBAAAA,IAAI,GAAG,IAAP;AACD;AACF;;AAED,gBAAIA,IAAJ,EAAU;AACRniF,cAAAA,CAAC,CAACmiF,IAAF,CAAO/2D,MAAM,CAAC7hB,QAAd;AACA;AACD;;AAED2e,YAAAA,EAAE,CAACxgC,SAAH,CAAazG,KAAb,CAAmB0pB,IAAnB,IAA2BC,YAAY,GAAGoc,IAA1C;AACD,WAhCD;AAiCD,SApCD;AAqCA,YAAIm7D,IAAJ,EAAU,OAxDM,CAwDE;;AAElBniF,QAAAA,CAAC,CAACyiF,OAAF,GAAYpiG,MAAM,CAACqN,qBAAP,CAA6BV,MAA7B,CAAZ;AACD;;AAEDgT,MAAAA,CAAC,CAACyiF,OAAF,GAAYpiG,MAAM,CAACqN,qBAAP,CAA6BV,MAA7B,CAAZ;AACA,aAAOgT,CAAP;AACD;AAjKO,GAAV;;AAqKA,MAAIA,CAAC,CAACoF,QAAF,CAAWvoB,MAAX,KAAsB,CAA1B,EAA6B;AAC3B,WAAOwkG,GAAP;AACD;;AAED,MAAI+B,eAAJ;;AAEA,OAAK,IAAI/lG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2iB,CAAC,CAACoF,QAAF,CAAWvoB,MAA/B,EAAuCQ,CAAC,IAAI,CAA5C,EAA+C;AAC7C,QAAI2iB,CAAC,CAACoF,QAAF,CAAW/nB,CAAX,EAAcslG,mBAAlB,EAAuC;AACrCS,MAAAA,eAAe,GAAGpjF,CAAC,CAACoF,QAAF,CAAW/nB,CAAX,EAAcslG,mBAAhC;AACD,KAFD,MAEO3iF,CAAC,CAACoF,QAAF,CAAW/nB,CAAX,EAAcslG,mBAAd,GAAoC3iF,CAApC;AACR;;AAED,MAAI,CAACojF,eAAL,EAAsB;AACpBA,IAAAA,eAAe,GAAGpjF,CAAlB;AACD;;AAED,MAAIoiF,YAAY,KAAK,MAArB,EAA6B;AAC3BgB,IAAAA,eAAe,CAACr8F,IAAhB;AACD,GAFD,MAEO;AACLq8F,IAAAA,eAAe,CAACxyB,OAAhB,CAAwB5wD,CAAC,CAACY,KAA1B,EAAiCZ,CAAC,CAACorB,MAAnC;AACD;;AAED,SAAOi2D,GAAP;AACD;;AAED,SAASt6F,IAAT,GAAgB;AACd,MAAMs6F,GAAG,GAAG,IAAZ;;AAEA,OAAK,IAAIhkG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgkG,GAAG,CAACxkG,MAAxB,EAAgCQ,CAAC,IAAI,CAArC,EAAwC;AACtC,QAAIgkG,GAAG,CAAChkG,CAAD,CAAH,CAAOslG,mBAAX,EAAgC;AAC9BtB,MAAAA,GAAG,CAAChkG,CAAD,CAAH,CAAOslG,mBAAP,CAA2B57F,IAA3B;AACD;AACF;AACF;;AAED,IAAMs8F,SAAS,GAAG,gBAAgBphD,KAAhB,CAAsB,GAAtB,CAAlB;;AAEA,SAASqhD,QAAT,CAAkB3mF,IAAlB,EAAwB;AACtB,WAAS4mF,YAAT,GAA+B;AAAA,wCAANpiF,IAAM;AAANA,MAAAA,IAAM;AAAA;;AAC7B,QAAI,OAAOA,IAAI,CAAC,CAAD,CAAX,KAAmB,WAAvB,EAAoC;AAClC,WAAK,IAAI9jB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKR,MAAzB,EAAiCQ,CAAC,IAAI,CAAtC,EAAyC;AACvC,YAAIgmG,SAAS,CAACn/F,OAAV,CAAkByY,IAAlB,IAA0B,CAA9B,EAAiC;AAC/B,cAAIA,IAAI,IAAI,KAAKtf,CAAL,CAAZ,EAAqB,KAAKA,CAAL,EAAQsf,IAAR,IAArB,KAA0C;AACxCsgF,YAAAA,CAAC,CAAC,KAAK5/F,CAAL,CAAD,CAAD,CAAWgd,OAAX,CAAmBsC,IAAnB;AACD;AACF;AACF;;AAED,aAAO,IAAP;AACD;;AAED,WAAO,KAAK5W,EAAL,cAAQ4W,IAAR,SAAiBwE,IAAjB,EAAP;AACD;;AAED,SAAOoiF,YAAP;AACD;;AAED,IAAMC,KAAK,GAAGF,QAAQ,CAAC,OAAD,CAAtB;;AACA,IAAMG,IAAI,GAAGH,QAAQ,CAAC,MAAD,CAArB;;AACA,IAAMI,KAAK,GAAGJ,QAAQ,CAAC,OAAD,CAAtB;;AACA,IAAMK,OAAO,GAAGL,QAAQ,CAAC,SAAD,CAAxB;;AACA,IAAMM,QAAQ,GAAGN,QAAQ,CAAC,UAAD,CAAzB;;AACA,IAAMO,KAAK,GAAGP,QAAQ,CAAC,OAAD,CAAtB;;AACA,IAAMQ,OAAO,GAAGR,QAAQ,CAAC,SAAD,CAAxB;;AACA,IAAMS,QAAQ,GAAGT,QAAQ,CAAC,UAAD,CAAzB;;AACA,IAAMU,MAAM,GAAGV,QAAQ,CAAC,QAAD,CAAvB;;AACA,IAAMr2D,MAAM,GAAGq2D,QAAQ,CAAC,QAAD,CAAvB;;AACA,IAAMW,SAAS,GAAGX,QAAQ,CAAC,WAAD,CAA1B;;AACA,IAAMY,SAAS,GAAGZ,QAAQ,CAAC,WAAD,CAA1B;;AACA,IAAMa,OAAO,GAAGb,QAAQ,CAAC,SAAD,CAAxB;;AACA,IAAMc,UAAU,GAAGd,QAAQ,CAAC,YAAD,CAA3B;;AACA,IAAMe,UAAU,GAAGf,QAAQ,CAAC,YAAD,CAA3B;;AACA,IAAMgB,QAAQ,GAAGhB,QAAQ,CAAC,UAAD,CAAzB;;AACA,IAAMiB,SAAS,GAAGjB,QAAQ,CAAC,WAAD,CAA1B;;AACA,IAAM10D,UAAU,GAAG00D,QAAQ,CAAC,YAAD,CAA3B;;AACA,IAAMx0D,QAAQ,GAAGw0D,QAAQ,CAAC,UAAD,CAAzB;;AACA,IAAMz0D,SAAS,GAAGy0D,QAAQ,CAAC,WAAD,CAA1B;;AACA,IAAMnhG,MAAM,GAAGmhG,QAAQ,CAAC,QAAD,CAAvB;;AACA,IAAMkB,MAAM,GAAGlB,QAAQ,CAAC,QAAD,CAAvB;;eAEerG;;;;;;;;;;;;;;;;;ACx8Cf;AACA;AACA;AACA;AAEA,IAAIv9F,CAAC,GAAC,UAASA,CAAT,EAAW;AAAC,MAAGA,CAAH,EAAK;AAAC,QAAIunB,CAAC,GAAC,SAAFA,CAAE,CAASvnB,CAAT,EAAW;AAAC,aAAM,GAAG0jC,KAAH,CAAShiB,IAAT,CAAc1hB,CAAd,CAAN;AAAuB,KAAzC;AAAA,QAA0Ci6E,CAAC,GAAC,CAA5C;AAAA,QAA8Ct8E,CAAC,GAAC,CAAhD;AAAA,QAAkD2B,CAAC,GAAC,CAApD;AAAA,QAAsD6Y,CAAC,GAAC,CAAxD;AAAA,QAA0DmI,CAAC,GAAC,EAA5D;AAAA,QAA+D+N,CAAC,GAAC,IAAjE;AAAA,QAAsE02E,CAAC,GAAC,2BAA0B/kG,CAA1B,GAA4B,YAAU;AAACA,MAAAA,CAAC,CAACgjG,oBAAF,CAAuB30E,CAAvB,GAA0BA,CAAC,GAACruB,CAAC,CAACgO,qBAAF,CAAyB,YAAU;AAAC,eAAOjO,CAAC,CAACugB,CAAC,CAAClF,MAAF,CAAU,UAASpb,CAAT,EAAW;AAAC,iBAAOA,CAAC,CAACglG,KAAF,IAAShlG,CAAC,CAACqb,MAAlB;AAAyB,SAA/C,CAAD,CAAR;AAA4D,OAAhG,CAA5B;AAA+H,KAAtK,GAAuK,YAAU,CAAE,CAA3P;AAAA,QAA4PmC,CAAC,GAAC,SAAFA,CAAE,CAASxd,CAAT,EAAW;AAAC,aAAO,YAAU;AAACsgB,QAAAA,CAAC,CAACze,OAAF,CAAW,UAAS0lB,CAAT,EAAW;AAAC,iBAAOA,CAAC,CAACy9E,KAAF,GAAQhlG,CAAf;AAAiB,SAAxC,GAA2C+kG,CAAC,EAA5C;AAA+C,OAAjE;AAAkE,KAA5U;AAAA,QAA6UhlG,CAAC,GAAC,SAAFA,CAAE,CAASC,CAAT,EAAW;AAACA,MAAAA,CAAC,CAACob,MAAF,CAAU,UAASpb,CAAT,EAAW;AAAC,eAAM,CAACA,CAAC,CAACilG,aAAT;AAAuB,OAA7C,EAAgDpjG,OAAhD,CAAyD,UAAS7B,CAAT,EAAW;AAACA,QAAAA,CAAC,CAACilG,aAAF,GAAgB12B,CAAC,CAACvuE,CAAD,CAAjB;AAAqB,OAA1F,GAA6FA,CAAC,CAACob,MAAF,CAASjQ,CAAT,EAAYtJ,OAAZ,CAAoBihB,CAApB,CAA7F;AAAoH,UAAIyE,CAAC,GAACvnB,CAAC,CAACob,MAAF,CAAS0sC,CAAT,CAAN;AAAkBvgC,MAAAA,CAAC,CAAC1lB,OAAF,CAAU2lB,CAAV,GAAaD,CAAC,CAAC1lB,OAAF,CAAW,UAAS7B,CAAT,EAAW;AAAC8iB,QAAAA,CAAC,CAAC9iB,CAAD,CAAD,EAAKue,CAAC,CAACve,CAAD,CAAN;AAAU,OAAjC,CAAb,EAAiDunB,CAAC,CAAC1lB,OAAF,CAAU2+E,CAAV,CAAjD;AAA8D,KAA/hB;AAAA,QAAgiBjiE,CAAC,GAAC,SAAFA,CAAE,CAASve,CAAT,EAAW;AAAC,aAAOA,CAAC,CAACglG,KAAF,GAAQ/qB,CAAf;AAAiB,KAA/jB;AAAA,QAAgkBzyD,CAAC,GAAC,SAAFA,CAAE,CAASxnB,CAAT,EAAW;AAACA,MAAAA,CAAC,CAAC+rC,cAAF,GAAiB/rC,CAAC,CAACxD,OAAF,CAAUyoB,UAAV,CAAqBnkB,WAAtC,EAAkDd,CAAC,CAACklG,YAAF,GAAellG,CAAC,CAACxD,OAAF,CAAUoG,WAA3E,EAAuF5C,CAAC,CAACmlG,gBAAF,GAAmBnlG,CAAC,CAAColG,eAA5G,EAA4HplG,CAAC,CAAColG,eAAF,GAAkBllG,IAAI,CAACyH,GAAL,CAASzH,IAAI,CAAC0H,GAAL,CAAS5H,CAAC,CAACylC,OAAX,EAAmBzlC,CAAC,CAAC+rC,cAAF,GAAiB/rC,CAAC,CAACklG,YAAnB,GAAgCllG,CAAC,CAACmlG,gBAArD,CAAT,EAAgFnlG,CAAC,CAACihC,OAAlF,CAA9I,EAAyOjhC,CAAC,CAACqlG,UAAF,GAAarlG,CAAC,CAACslG,SAAF,IAAatlG,CAAC,CAAColG,eAAF,KAAoBplG,CAAC,CAACylC,OAAnC,GAA2C,QAA3C,GAAoD,QAA1S;AAAmT,KAAj4B;AAAA,QAAk4BqiB,CAAC,GAAC,SAAFA,CAAE,CAAS9nD,CAAT,EAAW;AAAC,aAAOA,CAAC,CAACglG,KAAF,KAAU1lG,CAAV,IAAaU,CAAC,CAACglG,KAAF,KAAU1lG,CAAV,IAAaU,CAAC,CAACxD,OAAF,CAAUyoB,UAAV,CAAqBnkB,WAArB,KAAmCd,CAAC,CAAC+rC,cAAtE;AAAqF,KAAr+B;AAAA,QAAs+BwiC,CAAC,GAAC,SAAFA,CAAE,CAAShnD,CAAT,EAAW;AAAC,UAAI0yD,CAAC,GAACj6E,CAAC,CAACtE,gBAAF,CAAmB6rB,CAAC,CAAC/qB,OAArB,EAA6B,IAA7B,CAAN;AAAyC,aAAO+qB,CAAC,CAAC69E,eAAF,GAAkB52F,UAAU,CAACyrE,CAAC,CAACic,gBAAF,CAAmB,WAAnB,CAAD,CAA5B,EAA8D3uE,CAAC,CAACnqB,OAAF,GAAU68E,CAAC,CAACic,gBAAF,CAAmB,SAAnB,CAAxE,EAAsG3uE,CAAC,CAAC89E,UAAF,GAAaprB,CAAC,CAACic,gBAAF,CAAmB,aAAnB,CAAnH,EAAqJ,CAAC,CAA7J;AAA+J,KAA5rC;AAAA,QAA6rC/qF,CAAC,GAAC,SAAFA,CAAE,CAASnL,CAAT,EAAW;AAAC,UAAIunB,CAAC,GAAC,CAAC,CAAP;AAAS,aAAM,CAACvnB,CAAC,CAACulG,qBAAH,KAA2B,UAAU/hF,IAAV,CAAexjB,CAAC,CAAC5C,OAAjB,MAA4BmqB,CAAC,GAAC,CAAC,CAAH,EAAKvnB,CAAC,CAAC5C,OAAF,GAAU,cAA3C,GAA2D,aAAW4C,CAAC,CAACqlG,UAAb,KAA0B99E,CAAC,GAAC,CAAC,CAAH,EAAKvnB,CAAC,CAACqlG,UAAF,GAAa,QAA5C,CAA3D,EAAiHrlG,CAAC,CAACulG,qBAAF,GAAwB,CAAC,CAA1I,EAA4Ih+E,CAAvK,CAAN;AAAgL,KAAp4C;AAAA,QAAq4CzE,CAAC,GAAC,SAAFA,CAAE,CAAS9iB,CAAT,EAAW;AAACA,MAAAA,CAAC,CAACxD,OAAF,CAAU+E,KAAV,CAAgB8jG,UAAhB,GAA2BrlG,CAAC,CAACqlG,UAA7B,EAAwCrlG,CAAC,CAACxD,OAAF,CAAU+E,KAAV,CAAgBnE,OAAhB,GAAwB4C,CAAC,CAAC5C,OAAlE,EAA0E4C,CAAC,CAACxD,OAAF,CAAU+E,KAAV,CAAgBpF,QAAhB,GAAyB6D,CAAC,CAAColG,eAAF,GAAkB,IAArH;AAA0H,KAA7gD;AAAA,QAA8gD5kB,CAAC,GAAC,SAAFA,CAAE,CAASxgF,CAAT,EAAW;AAACA,MAAAA,CAAC,CAACxD,OAAF,CAAUupB,aAAV,CAAwB,IAAID,WAAJ,CAAgB,KAAhB,EAAsB;AAAC05E,QAAAA,MAAM,EAAC;AAACgG,UAAAA,QAAQ,EAACxlG,CAAC,CAACmlG,gBAAZ;AAA6BryF,UAAAA,QAAQ,EAAC9S,CAAC,CAAColG,eAAxC;AAAwDK,UAAAA,WAAW,EAACzlG,CAAC,CAAColG,eAAF,GAAkBplG,CAAC,CAACmlG;AAAxF;AAAR,OAAtB,CAAxB;AAAmK,KAA/rD;AAAA,QAAgsDj4D,CAAC,GAAC,SAAFA,CAAE,CAASltC,CAAT,EAAWunB,CAAX,EAAa;AAAC,aAAO,YAAU;AAACvnB,QAAAA,CAAC,CAACglG,KAAF,GAAQz9E,CAAR,EAAUvnB,CAAC,CAACqb,MAAF,IAAU0pF,CAAC,EAArB;AAAwB,OAA1C;AAA2C,KAA3vD;AAAA,QAA4vD15F,CAAC,GAAC,SAAFA,CAAE,CAASrL,CAAT,EAAW;AAAC,aAAO,YAAU;AAACsgB,QAAAA,CAAC,GAACA,CAAC,CAAClF,MAAF,CAAU,UAASmM,CAAT,EAAW;AAAC,iBAAOA,CAAC,CAAC/qB,OAAF,KAAYwD,CAAC,CAACxD,OAArB;AAA6B,SAAnD,CAAF,EAAwDwD,CAAC,CAAC0lG,gBAAF,IAAoB1lG,CAAC,CAAC+G,QAAF,CAAW0qC,UAAX,EAA5E,EAAoGzxC,CAAC,CAACxD,OAAF,CAAU+E,KAAV,CAAgB8jG,UAAhB,GAA2BrlG,CAAC,CAAC2lG,aAAF,CAAgBN,UAA/I,EAA0JrlG,CAAC,CAACxD,OAAF,CAAU+E,KAAV,CAAgBnE,OAAhB,GAAwB4C,CAAC,CAAC2lG,aAAF,CAAgBvoG,OAAlM,EAA0M4C,CAAC,CAACxD,OAAF,CAAU+E,KAAV,CAAgBpF,QAAhB,GAAyB6D,CAAC,CAAC2lG,aAAF,CAAgBxpG,QAAnP;AAA4P,OAA9Q;AAA+Q,KAAzhE;AAAA,QAA0hEsD,CAAC,GAAC,SAAFA,CAAE,CAASO,CAAT,EAAW;AAAC,aAAO,YAAU;AAACA,QAAAA,CAAC,CAACqb,MAAF,KAAWrb,CAAC,CAACqb,MAAF,GAAS,CAAC,CAAV,EAAY0pF,CAAC,EAAxB;AAA4B,OAA9C;AAA+C,KAAvlE;AAAA,QAAwlE35F,CAAC,GAAC,SAAFA,CAAE,CAASpL,CAAT,EAAW;AAAC,aAAO,YAAU;AAAC,eAAOA,CAAC,CAACqb,MAAF,GAAS,CAAC,CAAjB;AAAmB,OAArC;AAAsC,KAA5oE;AAAA,QAA6oE8iE,CAAC,GAAC,SAAFA,CAAE,CAASn+E,CAAT,EAAW;AAACA,MAAAA,CAAC,CAAC0lG,gBAAF,KAAqB1lG,CAAC,CAAC+G,QAAF,GAAW,IAAImW,gBAAJ,CAAqBgwB,CAAC,CAACltC,CAAD,EAAGrC,CAAH,CAAtB,CAAX,EAAwCqC,CAAC,CAAC+G,QAAF,CAAWgB,OAAX,CAAmB/H,CAAC,CAACxD,OAArB,EAA6BwD,CAAC,CAAC0lG,gBAA/B,CAA7D;AAA+G,KAA1wE;AAAA,QAA2wElmG,CAAC,GAAC;AAACimC,MAAAA,OAAO,EAAC,EAAT;AAAYxE,MAAAA,OAAO,EAAC,GAApB;AAAwBqkE,MAAAA,SAAS,EAAC,CAAC,CAAnC;AAAqCI,MAAAA,gBAAgB,EAAC,sBAAqB1lG,CAArB,IAAwB;AAAC0d,QAAAA,OAAO,EAAC,CAAC,CAAV;AAAYD,QAAAA,SAAS,EAAC,CAAC,CAAvB;AAAyBmoF,QAAAA,aAAa,EAAC,CAAC;AAAxC;AAA9E,KAA7wE;AAAA,QAAu4ExlB,CAAC,GAAC,IAAz4E;AAAA,QAA84ElC,CAAC,GAAC,SAAFA,CAAE,GAAU;AAACl+E,MAAAA,CAAC,CAAConB,YAAF,CAAeg5D,CAAf,GAAkBA,CAAC,GAACpgF,CAAC,CAAC0E,UAAF,CAAa8Y,CAAC,CAACle,CAAD,CAAd,EAAkB4L,CAAC,CAAC26F,kBAApB,CAApB;AAA4D,KAAv9E;AAAA,QAAw9E/kB,CAAC,GAAC,CAAC,QAAD,EAAU,mBAAV,CAA19E;;AAAy/E,WAAOt2E,MAAM,CAACsX,cAAP,CAAsB5W,CAAtB,EAAwB,eAAxB,EAAwC;AAAChC,MAAAA,GAAG,EAAC,aAASqe,CAAT,EAAW;AAAC,YAAI0yD,CAAC,GAAC,GAAG37D,MAAH,CAAUiJ,CAAC,GAAC,KAAD,GAAO,QAAlB,EAA2B,eAA3B,CAAN;AAAkDu5D,QAAAA,CAAC,CAACj/E,OAAF,CAAW,UAAS0lB,CAAT,EAAW;AAACvnB,UAAAA,CAAC,CAACi6E,CAAD,CAAD,CAAK1yD,CAAL,EAAO22D,CAAP;AAAU,SAAjC;AAAoC;AAAvG,KAAxC,GAAkJhzE,CAAC,CAAC46F,aAAF,GAAgB,CAAC,CAAnK,EAAqK56F,CAAC,CAAC26F,kBAAF,GAAqB,GAA1L,EAA8L36F,CAAC,CAAC66F,MAAF,GAASvoF,CAAC,CAACrF,CAAD,CAAxM,EAA4MjN,CAAnN;AAAqN;;AAAA,WAAS8yE,CAAT,CAAWh+E,CAAX,EAAaunB,CAAb,EAAe;AAAC,QAAI0yD,CAAC,GAAC,SAAc,EAAd,EAAiBz6E,CAAjB,EAAmB+nB,CAAnB,CAAN;AAAA,QAA4B5pB,CAAC,GAACqC,CAAC,CAACvC,GAAF,CAAO,UAASuC,CAAT,EAAW;AAAC,UAAIunB,CAAC,GAAC,SAAc,EAAd,EAAiB0yD,CAAjB,EAAmB;AAACz9E,QAAAA,OAAO,EAACwD,CAAT;AAAWqb,QAAAA,MAAM,EAAC,CAAC;AAAnB,OAAnB,CAAN;;AAAgD,aAAO,UAASrb,CAAT,EAAW;AAACA,QAAAA,CAAC,CAAC2lG,aAAF,GAAgB;AAACN,UAAAA,UAAU,EAACrlG,CAAC,CAACxD,OAAF,CAAU+E,KAAV,CAAgB8jG,UAA5B;AAAuCjoG,UAAAA,OAAO,EAAC4C,CAAC,CAACxD,OAAF,CAAU+E,KAAV,CAAgBnE,OAA/D;AAAuEjB,UAAAA,QAAQ,EAAC6D,CAAC,CAACxD,OAAF,CAAU+E,KAAV,CAAgBpF;AAAhG,SAAhB,EAA0HgiF,CAAC,CAACn+E,CAAD,CAA3H,EAA+HA,CAAC,CAACgmG,MAAF,GAAS,CAAC,CAAzI,EAA2IhmG,CAAC,CAACglG,KAAF,GAAQ,CAAC,CAApJ,EAAsJ1kF,CAAC,CAAC5gB,IAAF,CAAOM,CAAP,CAAtJ;AAAgK,OAA5K,CAA6KunB,CAA7K,GAAgL;AAAC/qB,QAAAA,OAAO,EAACwD,CAAT;AAAW46C,QAAAA,GAAG,EAAC1N,CAAC,CAAC3lB,CAAD,EAAGpP,CAAH,CAAhB;AAAsB8tF,QAAAA,QAAQ,EAACxmG,CAAC,CAAC8nB,CAAD,CAAhC;AAAoCkQ,QAAAA,MAAM,EAACrsB,CAAC,CAACmc,CAAD,CAA5C;AAAgD2+E,QAAAA,WAAW,EAAC76F,CAAC,CAACkc,CAAD;AAA7D,OAAvL;AAAyP,KAA5T,CAA9B;;AAA6V,WAAOw9E,CAAC,IAAGpnG,CAAX;AAAa;;AAAA,WAASuN,CAAT,CAAWlL,CAAX,EAAa;AAAC,QAAIi6E,CAAC,GAAChzD,SAAS,CAAC9pB,MAAV,GAAiB,CAAjB,IAAoB,KAAK,CAAL,KAAS8pB,SAAS,CAAC,CAAD,CAAtC,GAA0CA,SAAS,CAAC,CAAD,CAAnD,GAAuD,EAA7D;AAAgE,WAAM,YAAU,OAAOjnB,CAAjB,GAAmBg+E,CAAC,CAACz2D,CAAC,CAAC5rB,QAAQ,CAACiG,gBAAT,CAA0B5B,CAA1B,CAAD,CAAF,EAAiCi6E,CAAjC,CAApB,GAAwD+D,CAAC,CAAC,CAACh+E,CAAD,CAAD,EAAKi6E,CAAL,CAAD,CAAS,CAAT,CAA9D;AAA0E;AAAC,CAAnvG,CAAovG,eAAa,OAAOt5E,MAApB,GAA2B,IAA3B,GAAgCA,MAApxG,CAAN;;eAAizGX;;;;;;;;;;;;;;;;;;;;ACLjzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA,SAAS+2E,QAAT,CAAkBr0D,GAAlB,EAAuB;AACnB,SAAQA,GAAG,KAAK,IAAR,IACJ,QAAOA,GAAP,MAAe,QADX,IAEJ,iBAAiBA,GAFb,IAGJA,GAAG,CAAC9E,WAAJ,KAAoBpT,MAHxB;AAIH;;AACD,SAAS27F,MAAT,GAAuC;AAAA,MAAvB3zF,MAAuB,uEAAd,EAAc;AAAA,MAAVjO,GAAU,uEAAJ,EAAI;AACnCiG,EAAAA,MAAM,CAACC,IAAP,CAAYlG,GAAZ,EAAiB1C,OAAjB,CAAyB,UAACwM,GAAD,EAAS;AAC9B,QAAI,OAAOmE,MAAM,CAACnE,GAAD,CAAb,KAAuB,WAA3B,EACImE,MAAM,CAACnE,GAAD,CAAN,GAAc9J,GAAG,CAAC8J,GAAD,CAAjB,CADJ,KAEK,IAAI0oE,QAAQ,CAACxyE,GAAG,CAAC8J,GAAD,CAAJ,CAAR,IACL0oE,QAAQ,CAACvkE,MAAM,CAACnE,GAAD,CAAP,CADH,IAEL7D,MAAM,CAACC,IAAP,CAAYlG,GAAG,CAAC8J,GAAD,CAAf,EAAsBlR,MAAtB,GAA+B,CAF9B,EAEiC;AAClCgpG,MAAAA,MAAM,CAAC3zF,MAAM,CAACnE,GAAD,CAAP,EAAc9J,GAAG,CAAC8J,GAAD,CAAjB,CAAN;AACH;AACJ,GARD;AASH;;AAED,IAAM+3F,WAAW,GAAG;AAChBxqG,EAAAA,IAAI,EAAE,EADU;AAEhBgF,EAAAA,gBAFgB,8BAEG,CAAG,CAFN;AAGhBqO,EAAAA,mBAHgB,iCAGM,CAAG,CAHT;AAIhBo3F,EAAAA,aAAa,EAAE;AACXtC,IAAAA,IADW,kBACJ,CAAG,CADC;AAEX1+E,IAAAA,QAAQ,EAAE;AAFC,GAJC;AAQhBxhB,EAAAA,aARgB,2BAQA;AACZ,WAAO,IAAP;AACH,GAVe;AAWhBjC,EAAAA,gBAXgB,8BAWG;AACf,WAAO,EAAP;AACH,GAbe;AAchBkX,EAAAA,cAdgB,4BAcC;AACb,WAAO,IAAP;AACH,GAhBe;AAiBhBwtF,EAAAA,WAjBgB,yBAiBF;AACV,WAAO;AACHC,MAAAA,SADG,uBACS,CAAG;AADZ,KAAP;AAGH,GArBe;AAsBhBlkG,EAAAA,aAtBgB,2BAsBA;AACZ,WAAO;AACH/B,MAAAA,QAAQ,EAAE,EADP;AAEHo9F,MAAAA,UAAU,EAAE,EAFT;AAGHn8F,MAAAA,KAAK,EAAE,EAHJ;AAIHuD,MAAAA,YAJG,0BAIY,CAAG,CAJf;AAKHyM,MAAAA,oBALG,kCAKoB;AACnB,eAAO,EAAP;AACH;AAPE,KAAP;AASH,GAhCe;AAiChBi1F,EAAAA,eAjCgB,6BAiCE;AACd,WAAO,EAAP;AACH,GAnCe;AAoChBC,EAAAA,UApCgB,wBAoCH;AACT,WAAO,IAAP;AACH,GAtCe;AAuChB71F,EAAAA,QAAQ,EAAE;AACNI,IAAAA,IAAI,EAAE,EADA;AAEN6kF,IAAAA,IAAI,EAAE,EAFA;AAGN6Q,IAAAA,QAAQ,EAAE,EAHJ;AAIN71F,IAAAA,IAAI,EAAE,EAJA;AAKN81F,IAAAA,MAAM,EAAE,EALF;AAMN51F,IAAAA,QAAQ,EAAE,EANJ;AAON61F,IAAAA,QAAQ,EAAE,EAPJ;AAQN31F,IAAAA,MAAM,EAAE;AARF;AAvCM,CAApB;;;AAkDA,SAAS41F,WAAT,GAAuB;AACnB,MAAMC,GAAG,GAAG,OAAOnrG,QAAP,KAAoB,WAApB,GAAkCA,QAAlC,GAA6C,EAAzD;AACAwqG,EAAAA,MAAM,CAACW,GAAD,EAAMV,WAAN,CAAN;AACA,SAAOU,GAAP;AACH;;AAED,IAAMC,SAAS,GAAG;AACdprG,EAAAA,QAAQ,EAAEyqG,WADI;AAEdY,EAAAA,SAAS,EAAE;AACPC,IAAAA,SAAS,EAAE;AADJ,GAFG;AAKdr2F,EAAAA,QAAQ,EAAE;AACNI,IAAAA,IAAI,EAAE,EADA;AAEN6kF,IAAAA,IAAI,EAAE,EAFA;AAGN6Q,IAAAA,QAAQ,EAAE,EAHJ;AAIN71F,IAAAA,IAAI,EAAE,EAJA;AAKN81F,IAAAA,MAAM,EAAE,EALF;AAMN51F,IAAAA,QAAQ,EAAE,EANJ;AAON61F,IAAAA,QAAQ,EAAE,EAPJ;AAQN31F,IAAAA,MAAM,EAAE;AARF,GALI;AAedb,EAAAA,OAAO,EAAE;AACLyF,IAAAA,YADK,0BACU,CAAG,CADb;AAELxF,IAAAA,SAFK,uBAEO,CAAG,CAFV;AAGL62F,IAAAA,EAHK,gBAGA,CAAG,CAHH;AAILC,IAAAA,IAJK,kBAIE,CAAG;AAJL,GAfK;AAqBdrhF,EAAAA,WAAW,EAAE,SAASA,WAAT,GAAuB;AAChC,WAAO,IAAP;AACH,GAvBa;AAwBdllB,EAAAA,gBAxBc,8BAwBK,CAAG,CAxBR;AAyBdqO,EAAAA,mBAzBc,iCAyBQ,CAAG,CAzBX;AA0BdvT,EAAAA,gBA1Bc,8BA0BK;AACf,WAAO;AACHw6F,MAAAA,gBADG,8BACgB;AACf,eAAO,EAAP;AACH;AAHE,KAAP;AAKH,GAhCa;AAiCdkR,EAAAA,KAjCc,mBAiCN,CAAG,CAjCG;AAkCdxjF,EAAAA,IAlCc,kBAkCP,CAAG,CAlCI;AAmCdyjF,EAAAA,MAAM,EAAE,EAnCM;AAoCd3iG,EAAAA,UApCc,wBAoCD,CAAG,CApCF;AAqCd0iB,EAAAA,YArCc,0BAqCC,CAAG,CArCJ;AAsCdkgF,EAAAA,UAtCc,wBAsCD;AACT,WAAO,EAAP;AACH,GAxCa;AAyCdt5F,EAAAA,qBAzCc,iCAyCQ6Z,QAzCR,EAyCkB;AAC5B,QAAI,OAAOnjB,UAAP,KAAsB,WAA1B,EAAuC;AACnCmjB,MAAAA,QAAQ;AACR,aAAO,IAAP;AACH;;AACD,WAAOnjB,UAAU,CAACmjB,QAAD,EAAW,CAAX,CAAjB;AACH,GA/Ca;AAgDdm7E,EAAAA,oBAhDc,gCAgDO9nF,EAhDP,EAgDW;AACrB,QAAI,OAAOxW,UAAP,KAAsB,WAA1B,EAAuC;AACnC;AACH;;AACD0iB,IAAAA,YAAY,CAAClM,EAAD,CAAZ;AACH;AArDa,CAAlB;;;AAuDA,SAASqsF,SAAT,GAAqB;AACjB,MAAMC,GAAG,GAAG,OAAO7mG,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,EAArD;AACAwlG,EAAAA,MAAM,CAACqB,GAAD,EAAMT,SAAN,CAAN;AACA,SAAOS,GAAP;AACH;;;;;;;;;;;;;;ACjJD;;AACe,SAASC,aAAT,CAAuBC,WAAvB,EAAoCpsE,IAApC,EAA0CqsE,WAA1C,EAAuD;AACpE,MAAIrsE,IAAI,KAAK,KAAK,CAAlB,EAAqB;AACnBA,IAAAA,IAAI,GAAG,QAAP;AACD;;AAED,MAAI,CAACosE,WAAD,IAAgBpsE,IAAI,KAAK,WAAT,IAAwB,CAACqsE,WAA7C,EAA0D,OAAOzqG,SAAP;AAC1D,MAAI0qG,UAAU,GAAG,KAAjB;AACA,MAAMjnG,MAAM,GAAG,2BAAf;AACA,MAAMknG,aAAa,GAAGvsE,IAAI,KAAK,QAAT,GAAoB36B,MAAM,CAACsI,WAA3B,GAAyC0+F,WAAW,CAAC5mG,YAA3E;AACA,MAAMy9B,MAAM,GAAGh0B,MAAM,CAACC,IAAP,CAAYi9F,WAAZ,EAAyBjqG,GAAzB,CAA6B,UAAAghC,KAAK,EAAI;AACnD,QAAI,OAAOA,KAAP,KAAiB,QAAjB,IAA6BA,KAAK,CAACj6B,OAAN,CAAc,GAAd,MAAuB,CAAxD,EAA2D;AACzD,UAAMsjG,QAAQ,GAAGt5F,UAAU,CAACiwB,KAAK,CAAC5Z,MAAN,CAAa,CAAb,CAAD,CAA3B;AACA,UAAMnd,KAAK,GAAGmgG,aAAa,GAAGC,QAA9B;AACA,aAAO;AACLpgG,QAAAA,KAAK,EAALA,KADK;AAEL+2B,QAAAA,KAAK,EAALA;AAFK,OAAP;AAID;;AAED,WAAO;AACL/2B,MAAAA,KAAK,EAAE+2B,KADF;AAELA,MAAAA,KAAK,EAALA;AAFK,KAAP;AAID,GAdc,CAAf;AAeAD,EAAAA,MAAM,CAACrF,IAAP,CAAY,UAAC7Y,CAAD,EAAI7gB,CAAJ;AAAA,WAAUvD,QAAQ,CAACokB,CAAC,CAAC5Y,KAAH,EAAU,EAAV,CAAR,GAAwBxL,QAAQ,CAACuD,CAAC,CAACiI,KAAH,EAAU,EAAV,CAA1C;AAAA,GAAZ;;AAEA,OAAK,IAAI/J,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG6gC,MAAM,CAACrhC,MAA3B,EAAmCQ,CAAC,IAAI,CAAxC,EAA2C;AACzC,oBAGI6gC,MAAM,CAAC7gC,CAAD,CAHV;AAAA,QACE8gC,KADF,aACEA,KADF;AAAA,QAEE/2B,KAFF,aAEEA,KAFF;;AAKA,QAAI4zB,IAAI,KAAK,QAAb,EAAuB;AACrB,UAAI36B,MAAM,CAAC2mG,UAAP,uBAAiC5/F,KAAjC,UAA6C4nF,OAAjD,EAA0D;AACxDsY,QAAAA,UAAU,GAAGnpE,KAAb;AACD;AACF,KAJD,MAIO,IAAI/2B,KAAK,IAAIigG,WAAW,CAAC7mG,WAAzB,EAAsC;AAC3C8mG,MAAAA,UAAU,GAAGnpE,KAAb;AACD;AACF;;AAED,SAAOmpE,UAAU,IAAI,KAArB;AACD;;;;;;;;;;;;;;AC3CD;;AACA;;;;eACe;AACbG,EAAAA,aAAa,EAAbA,sBADa;AAEbN,EAAAA,aAAa,EAAbA;AAFa;;;;;;;;;;;;;;;ACFf;;;;AAEA,IAAMO,aAAa,GAAG,SAAhBA,aAAgB,CAAC1kG,MAAD,EAASooC,MAAT,EAAoB;AACxC,SAAOpoC,MAAM,CAACvF,IAAP,IAAe2tC,MAAM,CAAC3tC,IAAtB,IAA8B2tC,MAAM,CAAC3tC,IAAP,CAAYkqG,IAAZ,GAAmB,CAAxD;AACD,CAFD;;AAIe,SAASF,aAAT,GAAyB;AACtC,MAAMzkG,MAAM,GAAG,IAAf;AACA,MACEkT,WADF,GAMIlT,MANJ,CACEkT,WADF;AAAA,MAEE0xF,WAFF,GAMI5kG,MANJ,CAEE4kG,WAFF;AAAA,6BAMI5kG,MANJ,CAGE6kG,YAHF;AAAA,MAGEA,YAHF,qCAGiB,CAHjB;AAAA,MAIEz8D,MAJF,GAMIpoC,MANJ,CAIEooC,MAJF;AAAA,MAKE08D,GALF,GAMI9kG,MANJ,CAKE8kG,GALF;AAOA,MAAMV,WAAW,GAAGh8D,MAAM,CAACg8D,WAA3B;AACA,MAAI,CAACA,WAAD,IAAgBA,WAAW,IAAIl9F,MAAM,CAACC,IAAP,CAAYi9F,WAAZ,EAAyBvqG,MAAzB,KAAoC,CAAvE,EAA0E,OAVpC,CAU4C;;AAElF,MAAMyqG,UAAU,GAAGtkG,MAAM,CAACmkG,aAAP,CAAqBC,WAArB,EAAkCpkG,MAAM,CAACooC,MAAP,CAAc28D,eAAhD,EAAiE/kG,MAAM,CAACklC,EAAxE,CAAnB;AACA,MAAI,CAACo/D,UAAD,IAAetkG,MAAM,CAACglG,iBAAP,KAA6BV,UAAhD,EAA4D;AAC5D,MAAMW,oBAAoB,GAAGX,UAAU,IAAIF,WAAd,GAA4BA,WAAW,CAACE,UAAD,CAAvC,GAAsD1qG,SAAnF;AACA,MAAMsrG,gBAAgB,GAAGD,oBAAoB,IAAIjlG,MAAM,CAACmlG,cAAxD;AACA,MAAMC,WAAW,GAAGV,aAAa,CAAC1kG,MAAD,EAASooC,MAAT,CAAjC;AACA,MAAMi9D,UAAU,GAAGX,aAAa,CAAC1kG,MAAD,EAASklG,gBAAT,CAAhC;AACA,MAAMI,UAAU,GAAGl9D,MAAM,CAAC9sC,OAA1B;;AAEA,MAAI8pG,WAAW,IAAI,CAACC,UAApB,EAAgC;AAC9BP,IAAAA,GAAG,CAAC9iF,WAAJ,WAAmBomB,MAAM,CAACm9D,sBAA1B,kBAAwDn9D,MAAM,CAACm9D,sBAA/D;AACAvlG,IAAAA,MAAM,CAACwlG,oBAAP;AACD,GAHD,MAGO,IAAI,CAACJ,WAAD,IAAgBC,UAApB,EAAgC;AACrCP,IAAAA,GAAG,CAACjkF,QAAJ,WAAgBunB,MAAM,CAACm9D,sBAAvB;;AAEA,QAAIL,gBAAgB,CAACzqG,IAAjB,CAAsB6oC,IAAtB,IAA8B4hE,gBAAgB,CAACzqG,IAAjB,CAAsB6oC,IAAtB,KAA+B,QAA7D,IAAyE,CAAC4hE,gBAAgB,CAACzqG,IAAjB,CAAsB6oC,IAAvB,IAA+B8E,MAAM,CAAC3tC,IAAP,CAAY6oC,IAAZ,KAAqB,QAAjI,EAA2I;AACzIwhE,MAAAA,GAAG,CAACjkF,QAAJ,WAAgBunB,MAAM,CAACm9D,sBAAvB;AACD;;AAEDvlG,IAAAA,MAAM,CAACwlG,oBAAP;AACD;;AAED,MAAMC,gBAAgB,GAAGP,gBAAgB,CAAC7yF,SAAjB,IAA8B6yF,gBAAgB,CAAC7yF,SAAjB,KAA+B+1B,MAAM,CAAC/1B,SAA7F;AACA,MAAMqzF,WAAW,GAAGt9D,MAAM,CAACjoC,IAAP,KAAgB+kG,gBAAgB,CAACS,aAAjB,KAAmCv9D,MAAM,CAACu9D,aAA1C,IAA2DF,gBAA3E,CAApB;;AAEA,MAAIA,gBAAgB,IAAIb,WAAxB,EAAqC;AACnC5kG,IAAAA,MAAM,CAAC4lG,eAAP;AACD;;AAED,qBAAO5lG,MAAM,CAACooC,MAAd,EAAsB88D,gBAAtB;AACA,MAAMW,SAAS,GAAG7lG,MAAM,CAACooC,MAAP,CAAc9sC,OAAhC;;AACA,WAAc0E,MAAd,EAAsB;AACpB8lG,IAAAA,cAAc,EAAE9lG,MAAM,CAACooC,MAAP,CAAc09D,cADV;AAEpBC,IAAAA,cAAc,EAAE/lG,MAAM,CAACooC,MAAP,CAAc29D,cAFV;AAGpBC,IAAAA,cAAc,EAAEhmG,MAAM,CAACooC,MAAP,CAAc49D;AAHV,GAAtB;;AAMA,MAAIV,UAAU,IAAI,CAACO,SAAnB,EAA8B;AAC5B7lG,IAAAA,MAAM,CAAC2T,OAAP;AACD,GAFD,MAEO,IAAI,CAAC2xF,UAAD,IAAeO,SAAnB,EAA8B;AACnC7lG,IAAAA,MAAM,CAAC4T,MAAP;AACD;;AAED5T,EAAAA,MAAM,CAACglG,iBAAP,GAA2BV,UAA3B;AACAtkG,EAAAA,MAAM,CAACimG,IAAP,CAAY,mBAAZ,EAAiCf,gBAAjC;;AAEA,MAAIQ,WAAW,IAAId,WAAnB,EAAgC;AAC9B5kG,IAAAA,MAAM,CAACkmG,WAAP;AACAlmG,IAAAA,MAAM,CAACmmG,UAAP;AACAnmG,IAAAA,MAAM,CAAComG,YAAP;AACApmG,IAAAA,MAAM,CAAC0T,OAAP,CAAeR,WAAW,GAAG2xF,YAAd,GAA6B7kG,MAAM,CAAC6kG,YAAnD,EAAiE,CAAjE,EAAoE,KAApE;AACD;;AAED7kG,EAAAA,MAAM,CAACimG,IAAP,CAAY,YAAZ,EAA0Bf,gBAA1B;AACD;;;;;;;;;;;;;;ACvED,SAASmB,aAAT,GAAyB;AACvB,MAAMrmG,MAAM,GAAG,IAAf;AACA,MACYsmG,SADZ,GAGItmG,MAHJ,CACEumG,QADF;AAAA,MAEEn+D,MAFF,GAGIpoC,MAHJ,CAEEooC,MAFF;AAIA,MACEo+D,kBADF,GAEIp+D,MAFJ,CACEo+D,kBADF;;AAIA,MAAIA,kBAAJ,EAAwB;AACtB,QAAMC,cAAc,GAAGzmG,MAAM,CAACiT,MAAP,CAAcpZ,MAAd,GAAuB,CAA9C;AACA,QAAM6sG,kBAAkB,GAAG1mG,MAAM,CAAC2mG,UAAP,CAAkBF,cAAlB,IAAoCzmG,MAAM,CAAC4mG,eAAP,CAAuBH,cAAvB,CAApC,GAA6ED,kBAAkB,GAAG,CAA7H;AACAxmG,IAAAA,MAAM,CAACumG,QAAP,GAAkBvmG,MAAM,CAACrH,IAAP,GAAc+tG,kBAAhC;AACD,GAJD,MAIO;AACL1mG,IAAAA,MAAM,CAACumG,QAAP,GAAkBvmG,MAAM,CAAC6mG,QAAP,CAAgBhtG,MAAhB,KAA2B,CAA7C;AACD;;AAED,MAAIuuC,MAAM,CAAC29D,cAAP,KAA0B,IAA9B,EAAoC;AAClC/lG,IAAAA,MAAM,CAAC+lG,cAAP,GAAwB,CAAC/lG,MAAM,CAACumG,QAAhC;AACD;;AAED,MAAIn+D,MAAM,CAAC49D,cAAP,KAA0B,IAA9B,EAAoC;AAClChmG,IAAAA,MAAM,CAACgmG,cAAP,GAAwB,CAAChmG,MAAM,CAACumG,QAAhC;AACD;;AAED,MAAID,SAAS,IAAIA,SAAS,KAAKtmG,MAAM,CAACumG,QAAtC,EAAgD;AAC9CvmG,IAAAA,MAAM,CAAC8mG,KAAP,GAAe,KAAf;AACD;;AAED,MAAIR,SAAS,KAAKtmG,MAAM,CAACumG,QAAzB,EAAmC;AACjCvmG,IAAAA,MAAM,CAACimG,IAAP,CAAYjmG,MAAM,CAACumG,QAAP,GAAkB,MAAlB,GAA2B,QAAvC;AACD;AACF;;eAEc;AACbF,EAAAA,aAAa,EAAbA;AADa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnCf,SAASU,cAAT,CAAwBpjG,OAAxB,EAAiC+nD,MAAjC,EAAyC;AACvC,MAAMs7C,aAAa,GAAG,EAAtB;AACArjG,EAAAA,OAAO,CAACpF,OAAR,CAAgB,UAAAtB,IAAI,EAAI;AACtB,QAAI,QAAOA,IAAP,MAAgB,QAApB,EAA8B;AAC5BiK,MAAAA,MAAM,CAACC,IAAP,CAAYlK,IAAZ,EAAkBsB,OAAlB,CAA0B,UAAA+7F,UAAU,EAAI;AACtC,YAAIr9F,IAAI,CAACq9F,UAAD,CAAR,EAAsB;AACpB0M,UAAAA,aAAa,CAAC5qG,IAAd,CAAmBsvD,MAAM,GAAG4uC,UAA5B;AACD;AACF,OAJD;AAKD,KAND,MAMO,IAAI,OAAOr9F,IAAP,KAAgB,QAApB,EAA8B;AACnC+pG,MAAAA,aAAa,CAAC5qG,IAAd,CAAmBsvD,MAAM,GAAGzuD,IAA5B;AACD;AACF,GAVD;AAWA,SAAO+pG,aAAP;AACD;;AAEc,SAASC,UAAT,GAAsB;AACnC,MAAMjnG,MAAM,GAAG,IAAf;AACA,MACEs6F,UADF,GAOIt6F,MAPJ,CACEs6F,UADF;AAAA,MAEElyD,MAFF,GAOIpoC,MAPJ,CAEEooC,MAFF;AAAA,MAGEo0B,GAHF,GAOIx8D,MAPJ,CAGEw8D,GAHF;AAAA,MAIEsoC,GAJF,GAOI9kG,MAPJ,CAIE8kG,GAJF;AAAA,MAKEoC,MALF,GAOIlnG,MAPJ,CAKEknG,MALF;AAAA,MAMEC,OANF,GAOInnG,MAPJ,CAMEmnG,OANF,CAFmC,CASvB;;AAEZ,MAAMC,QAAQ,GAAGL,cAAc,CAAC,CAAC,aAAD,EAAgB3+D,MAAM,CAAC/1B,SAAvB,EAAkC;AAChE,sBAAkB,CAAC80F,OAAO,CAACE;AADqC,GAAlC,EAE7B;AACD,iBAAarnG,MAAM,CAACooC,MAAP,CAAck/D,QAAd,IAA0Bl/D,MAAM,CAACk/D,QAAP,CAAgBhsG;AADtD,GAF6B,EAI7B;AACD,kBAAc8sC,MAAM,CAAC31B;AADpB,GAJ6B,EAM7B;AACD,WAAO+pD;AADN,GAN6B,EAQ7B;AACD,YAAQp0B,MAAM,CAAC3tC,IAAP,IAAe2tC,MAAM,CAAC3tC,IAAP,CAAYkqG,IAAZ,GAAmB;AADzC,GAR6B,EAU7B;AACD,mBAAev8D,MAAM,CAAC3tC,IAAP,IAAe2tC,MAAM,CAAC3tC,IAAP,CAAYkqG,IAAZ,GAAmB,CAAlC,IAAuCv8D,MAAM,CAAC3tC,IAAP,CAAY6oC,IAAZ,KAAqB;AAD1E,GAV6B,EAY7B;AACD,eAAW4jE,MAAM,CAACK;AADjB,GAZ6B,EAc7B;AACD,WAAOL,MAAM,CAACM;AADb,GAd6B,EAgB7B;AACD,gBAAYp/D,MAAM,CAACq/D;AADlB,GAhB6B,EAkB7B;AACD,gBAAYr/D,MAAM,CAACq/D,OAAP,IAAkBr/D,MAAM,CAACs/D;AADpC,GAlB6B,CAAD,EAoB3Bt/D,MAAM,CAACm9D,sBApBoB,CAA/B;AAqBAjL,EAAAA,UAAU,CAACl+F,IAAX,OAAAk+F,UAAU,qBAAS8M,QAAT,EAAV;AACAtC,EAAAA,GAAG,CAACjkF,QAAJ,CAAa,mBAAIy5E,UAAJ,EAAgBl7C,IAAhB,CAAqB,GAArB,CAAb;AACAp/C,EAAAA,MAAM,CAACwlG,oBAAP;AACD;;;;;;;;;;;;;;ACnDD;;AACA;;;;eACe;AACbyB,EAAAA,UAAU,EAAVA,mBADa;AAEbU,EAAAA,aAAa,EAAbA;AAFa;;;;;;;;;;;;;;;ACFA,SAASA,aAAT,GAAyB;AACtC,MAAM3nG,MAAM,GAAG,IAAf;AACA,MACE8kG,GADF,GAGI9kG,MAHJ,CACE8kG,GADF;AAAA,MAEExK,UAFF,GAGIt6F,MAHJ,CAEEs6F,UAFF;AAIAwK,EAAAA,GAAG,CAAC9iF,WAAJ,CAAgBs4E,UAAU,CAACl7C,IAAX,CAAgB,GAAhB,CAAhB;AACAp/C,EAAAA,MAAM,CAACwlG,oBAAP;AACD;;;;;;;;;;;;;;ACPD;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;AACA,IAAMoC,UAAU,GAAG;AACjBC,EAAAA,aAAa,EAAbA,sBADiB;AAEjB7yF,EAAAA,MAAM,EAANA,cAFiB;AAGjBi7C,EAAAA,SAAS,EAATA,eAHiB;AAIjBlnD,EAAAA,UAAU,EAAVA,eAJiB;AAKjBsK,EAAAA,KAAK,EAALA,eALiB;AAMjBlT,EAAAA,IAAI,EAAJA,eANiB;AAOjB2nG,EAAAA,UAAU,EAAVA,eAPiB;AAQjB99C,EAAAA,MAAM,EAANA,eARiB;AASjBo6C,EAAAA,WAAW,EAAXA,eATiB;AAUjBiC,EAAAA,aAAa,EAAbA,gBAViB;AAWjBhM,EAAAA,OAAO,EAAPA,eAXiB;AAYjB/0F,EAAAA,MAAM,EAANA;AAZiB,CAAnB;AAcA,IAAMyiG,gBAAgB,GAAG,EAAzB;;IAEMvoG;AACJ,oBAAc;AAAA;;AACZ,QAAI0lC,EAAJ;AACA,QAAIkD,MAAJ;;AAEA,SAAK,IAAI4/D,IAAI,GAAGrkF,SAAS,CAAC9pB,MAArB,EAA6BskB,IAAI,GAAG,IAAI/f,KAAJ,CAAU4pG,IAAV,CAApC,EAAqDC,IAAI,GAAG,CAAjE,EAAoEA,IAAI,GAAGD,IAA3E,EAAiFC,IAAI,EAArF,EAAyF;AACvF9pF,MAAAA,IAAI,CAAC8pF,IAAD,CAAJ,GAAatkF,SAAS,CAACskF,IAAD,CAAtB;AACD;;AAED,QAAI9pF,IAAI,CAACtkB,MAAL,KAAgB,CAAhB,IAAqBskB,IAAI,CAAC,CAAD,CAAJ,CAAQ7D,WAA7B,IAA4CpT,MAAM,CAACsV,SAAP,CAAiB/H,QAAjB,CAA0B2J,IAA1B,CAA+BD,IAAI,CAAC,CAAD,CAAnC,EAAwCiiB,KAAxC,CAA8C,CAA9C,EAAiD,CAAC,CAAlD,MAAyD,QAAzG,EAAmH;AACjHgI,MAAAA,MAAM,GAAGjqB,IAAI,CAAC,CAAD,CAAb;AACD,KAFD,MAEO;AACJ+mB,MAAAA,EADI,GACU/mB,IADV;AACAiqB,MAAAA,MADA,GACUjqB,IADV;AAEN;;AAED,QAAI,CAACiqB,MAAL,EAAaA,MAAM,GAAG,EAAT;AACbA,IAAAA,MAAM,GAAG,mBAAO,EAAP,EAAWA,MAAX,CAAT;AACA,QAAIlD,EAAE,IAAI,CAACkD,MAAM,CAAClD,EAAlB,EAAsBkD,MAAM,CAAClD,EAAP,GAAYA,EAAZ;;AAEtB,QAAIkD,MAAM,CAAClD,EAAP,IAAa,kBAAEkD,MAAM,CAAClD,EAAT,EAAarrC,MAAb,GAAsB,CAAvC,EAA0C;AACxC,UAAMquG,OAAO,GAAG,EAAhB;AACA,wBAAE9/D,MAAM,CAAClD,EAAT,EAAagvC,IAAb,CAAkB,UAAAmwB,WAAW,EAAI;AAC/B,YAAM8D,SAAS,GAAG,mBAAO,EAAP,EAAW//D,MAAX,EAAmB;AACnClD,UAAAA,EAAE,EAAEm/D;AAD+B,SAAnB,CAAlB;AAGA6D,QAAAA,OAAO,CAAC9rG,IAAR,CAAa,IAAIoD,MAAJ,CAAW2oG,SAAX,CAAb;AACD,OALD;AAMA,aAAOD,OAAP;AACD,KA3BW,CA2BV;;;AAGF,QAAMloG,MAAM,GAAG,IAAf;AACAA,IAAAA,MAAM,CAACooG,UAAP,GAAoB,IAApB;AACApoG,IAAAA,MAAM,CAACmnG,OAAP,GAAiB,6BAAjB;AACAnnG,IAAAA,MAAM,CAACknG,MAAP,GAAgB,0BAAU;AACxBvD,MAAAA,SAAS,EAAEv7D,MAAM,CAACu7D;AADM,KAAV,CAAhB;AAGA3jG,IAAAA,MAAM,CAACqoG,OAAP,GAAiB,6BAAjB;AACAroG,IAAAA,MAAM,CAACsoG,eAAP,GAAyB,EAAzB;AACAtoG,IAAAA,MAAM,CAACuoG,kBAAP,GAA4B,EAA5B;AACAvoG,IAAAA,MAAM,CAACwoG,OAAP,sBAAqBxoG,MAAM,CAACyoG,WAA5B;;AAEA,QAAIrgE,MAAM,CAACogE,OAAP,IAAkBpqG,KAAK,CAACo1E,OAAN,CAAcprC,MAAM,CAACogE,OAArB,CAAtB,EAAqD;AAAA;;AACnD,yBAAAxoG,MAAM,CAACwoG,OAAP,EAAepsG,IAAf,2CAAuBgsC,MAAM,CAACogE,OAA9B;AACD;;AAED,QAAME,gBAAgB,GAAG,EAAzB;AACA1oG,IAAAA,MAAM,CAACwoG,OAAP,CAAejqG,OAAf,CAAuB,UAAAoqG,GAAG,EAAI;AAC5BA,MAAAA,GAAG,CAAC;AACF3oG,QAAAA,MAAM,EAANA,MADE;AAEF4oG,QAAAA,YAAY,EAAE,iCAAmBxgE,MAAnB,EAA2BsgE,gBAA3B,CAFZ;AAGF3lG,QAAAA,EAAE,EAAE/C,MAAM,CAAC+C,EAAP,CAAU4H,IAAV,CAAe3K,MAAf,CAHF;AAIFgB,QAAAA,IAAI,EAAEhB,MAAM,CAACgB,IAAP,CAAY2J,IAAZ,CAAiB3K,MAAjB,CAJJ;AAKF87F,QAAAA,GAAG,EAAE97F,MAAM,CAAC87F,GAAP,CAAWnxF,IAAX,CAAgB3K,MAAhB,CALH;AAMFimG,QAAAA,IAAI,EAAEjmG,MAAM,CAACimG,IAAP,CAAYt7F,IAAZ,CAAiB3K,MAAjB;AANJ,OAAD,CAAH;AAQD,KATD,EA9CY,CAuDR;;AAEJ,QAAM6oG,YAAY,GAAG,mBAAO,EAAP,EAAWtwG,iBAAX,EAAqBmwG,gBAArB,CAArB,CAzDY,CAyDiD;;AAE7D1oG,IAAAA,MAAM,CAACooC,MAAP,GAAgB,mBAAO,EAAP,EAAWygE,YAAX,EAAyBd,gBAAzB,EAA2C3/D,MAA3C,CAAhB;AACApoC,IAAAA,MAAM,CAACmlG,cAAP,GAAwB,mBAAO,EAAP,EAAWnlG,MAAM,CAACooC,MAAlB,CAAxB;AACApoC,IAAAA,MAAM,CAAC8oG,YAAP,GAAsB,mBAAO,EAAP,EAAW1gE,MAAX,CAAtB,CA7DY,CA6D8B;;AAE1C,QAAIpoC,MAAM,CAACooC,MAAP,IAAiBpoC,MAAM,CAACooC,MAAP,CAAcrlC,EAAnC,EAAuC;AACrCmE,MAAAA,MAAM,CAACC,IAAP,CAAYnH,MAAM,CAACooC,MAAP,CAAcrlC,EAA1B,EAA8BxE,OAA9B,CAAsC,UAAAgkB,SAAS,EAAI;AACjDviB,QAAAA,MAAM,CAAC+C,EAAP,CAAUwf,SAAV,EAAqBviB,MAAM,CAACooC,MAAP,CAAcrlC,EAAd,CAAiBwf,SAAjB,CAArB;AACD,OAFD;AAGD;;AAED,QAAIviB,MAAM,CAACooC,MAAP,IAAiBpoC,MAAM,CAACooC,MAAP,CAAc2gE,KAAnC,EAA0C;AACxC/oG,MAAAA,MAAM,CAAC+oG,KAAP,CAAa/oG,MAAM,CAACooC,MAAP,CAAc2gE,KAA3B;AACD,KAvEW,CAuEV;;;AAGF/oG,IAAAA,MAAM,CAACi6F,CAAP,GAAWA,YAAX,CA1EY,CA0EE;;AAEd,aAAcj6F,MAAd,EAAsB;AACpB1E,MAAAA,OAAO,EAAE0E,MAAM,CAACooC,MAAP,CAAc9sC,OADH;AAEpB4pC,MAAAA,EAAE,EAAFA,EAFoB;AAGpB;AACAo1D,MAAAA,UAAU,EAAE,EAJQ;AAKpB;AACArnF,MAAAA,MAAM,EAAE,mBANY;AAOpB0zF,MAAAA,UAAU,EAAE,EAPQ;AAQpBE,MAAAA,QAAQ,EAAE,EARU;AASpBD,MAAAA,eAAe,EAAE,EATG;AAWpB;AACA/uE,MAAAA,YAZoB,0BAYL;AACb,eAAO73B,MAAM,CAACooC,MAAP,CAAc/1B,SAAd,KAA4B,YAAnC;AACD,OAdmB;AAgBpB22F,MAAAA,UAhBoB,wBAgBP;AACX,eAAOhpG,MAAM,CAACooC,MAAP,CAAc/1B,SAAd,KAA4B,UAAnC;AACD,OAlBmB;AAoBpB;AACAa,MAAAA,WAAW,EAAE,CArBO;AAsBpB+1F,MAAAA,SAAS,EAAE,CAtBS;AAuBpB;AACAC,MAAAA,WAAW,EAAE,IAxBO;AAyBpBpC,MAAAA,KAAK,EAAE,KAzBa;AA0BpB;AACA72C,MAAAA,SAAS,EAAE,CA3BS;AA4BpBk5C,MAAAA,iBAAiB,EAAE,CA5BC;AA6BpBliG,MAAAA,QAAQ,EAAE,CA7BU;AA8BpBmiG,MAAAA,QAAQ,EAAE,CA9BU;AA+BpB9J,MAAAA,SAAS,EAAE,KA/BS;AAgCpB;AACAyG,MAAAA,cAAc,EAAE/lG,MAAM,CAACooC,MAAP,CAAc29D,cAjCV;AAkCpBC,MAAAA,cAAc,EAAEhmG,MAAM,CAACooC,MAAP,CAAc49D,cAlCV;AAmCpB;AACAqD,MAAAA,WAAW,EAAE,SAASA,WAAT,GAAuB;AAClC,YAAMhC,KAAK,GAAG,CAAC,YAAD,EAAe,WAAf,EAA4B,UAA5B,EAAwC,aAAxC,CAAd;AACA,YAAMiC,OAAO,GAAG,CAAC,aAAD,EAAgB,aAAhB,EAA+B,WAA/B,CAAhB;AACAtpG,QAAAA,MAAM,CAACupG,gBAAP,GAA0B;AACxBltG,UAAAA,KAAK,EAAEgrG,KAAK,CAAC,CAAD,CADY;AAExBnyE,UAAAA,IAAI,EAAEmyE,KAAK,CAAC,CAAD,CAFa;AAGxB/qG,UAAAA,GAAG,EAAE+qG,KAAK,CAAC,CAAD,CAHc;AAIxB1gF,UAAAA,MAAM,EAAE0gF,KAAK,CAAC,CAAD;AAJW,SAA1B;AAMArnG,QAAAA,MAAM,CAACwpG,kBAAP,GAA4B;AAC1BntG,UAAAA,KAAK,EAAEitG,OAAO,CAAC,CAAD,CADY;AAE1Bp0E,UAAAA,IAAI,EAAEo0E,OAAO,CAAC,CAAD,CAFa;AAG1BhtG,UAAAA,GAAG,EAAEgtG,OAAO,CAAC,CAAD;AAHc,SAA5B;AAKA,eAAOtpG,MAAM,CAACmnG,OAAP,CAAeE,KAAf,IAAwB,CAACrnG,MAAM,CAACooC,MAAP,CAAcqhE,aAAvC,GAAuDzpG,MAAM,CAACupG,gBAA9D,GAAiFvpG,MAAM,CAACwpG,kBAA/F;AACD,OAfY,EApCO;AAoDpBE,MAAAA,eAAe,EAAE;AACfC,QAAAA,SAAS,EAAE/vG,SADI;AAEfgwG,QAAAA,OAAO,EAAEhwG,SAFM;AAGfiwG,QAAAA,mBAAmB,EAAEjwG,SAHN;AAIfkwG,QAAAA,cAAc,EAAElwG,SAJD;AAKfmwG,QAAAA,WAAW,EAAEnwG,SALE;AAMfowG,QAAAA,gBAAgB,EAAEpwG,SANH;AAOfqwG,QAAAA,cAAc,EAAErwG,SAPD;AAQfswG,QAAAA,kBAAkB,EAAEtwG,SARL;AASf;AACAuwG,QAAAA,iBAAiB,EAAEnqG,MAAM,CAACooC,MAAP,CAAc+hE,iBAVlB;AAWf;AACAC,QAAAA,aAAa,EAAE,iBAZA;AAafC,QAAAA,YAAY,EAAEzwG,SAbC;AAcf;AACA0wG,QAAAA,UAAU,EAAE,EAfG;AAgBfC,QAAAA,mBAAmB,EAAE3wG,SAhBN;AAiBf4wG,QAAAA,YAAY,EAAE5wG,SAjBC;AAkBf6wG,QAAAA,WAAW,EAAE7wG;AAlBE,OApDG;AAwEpB;AACA8wG,MAAAA,UAAU,EAAE,IAzEQ;AA0EpB;AACA5E,MAAAA,cAAc,EAAE9lG,MAAM,CAACooC,MAAP,CAAc09D,cA3EV;AA4EpB1S,MAAAA,OAAO,EAAE;AACPj3D,QAAAA,MAAM,EAAE,CADD;AAEPE,QAAAA,MAAM,EAAE,CAFD;AAGPsuE,QAAAA,QAAQ,EAAE,CAHH;AAIPC,QAAAA,QAAQ,EAAE,CAJH;AAKP93D,QAAAA,IAAI,EAAE;AALC,OA5EW;AAmFpB;AACA+3D,MAAAA,YAAY,EAAE,EApFM;AAqFpBC,MAAAA,YAAY,EAAE;AArFM,KAAtB;;AAuFA9qG,IAAAA,MAAM,CAACimG,IAAP,CAAY,SAAZ,EAnKY,CAmKY;;AAExB,QAAIjmG,MAAM,CAACooC,MAAP,CAAcvmC,IAAlB,EAAwB;AACtB7B,MAAAA,MAAM,CAAC6B,IAAP;AACD,KAvKW,CAuKV;;;AAGF,WAAO7B,MAAP;AACD;;;;WAED,kBAAS;AACP,UAAMA,MAAM,GAAG,IAAf;AACA,UAAIA,MAAM,CAAC1E,OAAX,EAAoB;AACpB0E,MAAAA,MAAM,CAAC1E,OAAP,GAAiB,IAAjB;;AAEA,UAAI0E,MAAM,CAACooC,MAAP,CAAc0/D,UAAlB,EAA8B;AAC5B9nG,QAAAA,MAAM,CAAC+qG,aAAP;AACD;;AAED/qG,MAAAA,MAAM,CAACimG,IAAP,CAAY,QAAZ;AACD;;;WAED,mBAAU;AACR,UAAMjmG,MAAM,GAAG,IAAf;AACA,UAAI,CAACA,MAAM,CAAC1E,OAAZ,EAAqB;AACrB0E,MAAAA,MAAM,CAAC1E,OAAP,GAAiB,KAAjB;;AAEA,UAAI0E,MAAM,CAACooC,MAAP,CAAc0/D,UAAlB,EAA8B;AAC5B9nG,QAAAA,MAAM,CAACgrG,eAAP;AACD;;AAEDhrG,MAAAA,MAAM,CAACimG,IAAP,CAAY,SAAZ;AACD;;;WAED,qBAAYh/F,QAAZ,EAAsB7G,KAAtB,EAA6B;AAC3B,UAAMJ,MAAM,GAAG,IAAf;AACAiH,MAAAA,QAAQ,GAAGrK,IAAI,CAACyH,GAAL,CAASzH,IAAI,CAAC0H,GAAL,CAAS2C,QAAT,EAAmB,CAAnB,CAAT,EAAgC,CAAhC,CAAX;AACA,UAAM5C,GAAG,GAAGrE,MAAM,CAACirG,YAAP,EAAZ;AACA,UAAM3mG,GAAG,GAAGtE,MAAM,CAACkrG,YAAP,EAAZ;AACA,UAAMplG,OAAO,GAAG,CAACxB,GAAG,GAAGD,GAAP,IAAc4C,QAAd,GAAyB5C,GAAzC;AACArE,MAAAA,MAAM,CAACmrG,WAAP,CAAmBrlG,OAAnB,EAA4B,OAAO1F,KAAP,KAAiB,WAAjB,GAA+B,CAA/B,GAAmCA,KAA/D;AACAJ,MAAAA,MAAM,CAACorG,iBAAP;AACAprG,MAAAA,MAAM,CAACqrG,mBAAP;AACD;;;WAED,gCAAuB;AACrB,UAAMrrG,MAAM,GAAG,IAAf;AACA,UAAI,CAACA,MAAM,CAACooC,MAAP,CAAckjE,YAAf,IAA+B,CAACtrG,MAAM,CAACklC,EAA3C,EAA+C;AAC/C,UAAM3mB,GAAG,GAAGve,MAAM,CAACklC,EAAP,CAAUjsC,SAAV,CAAoBgmD,KAApB,CAA0B,GAA1B,EAA+BnnC,MAA/B,CAAsC,UAAA7e,SAAS,EAAI;AAC7D,eAAOA,SAAS,CAACiI,OAAV,CAAkB,QAAlB,MAAgC,CAAhC,IAAqCjI,SAAS,CAACiI,OAAV,CAAkBlB,MAAM,CAACooC,MAAP,CAAcm9D,sBAAhC,MAA4D,CAAxG;AACD,OAFW,CAAZ;AAGAvlG,MAAAA,MAAM,CAACimG,IAAP,CAAY,mBAAZ,EAAiC1nF,GAAG,CAAC6gC,IAAJ,CAAS,GAAT,CAAjC;AACD;;;WAED,yBAAgBmsD,OAAhB,EAAyB;AACvB,UAAMvrG,MAAM,GAAG,IAAf;AACA,aAAOurG,OAAO,CAACtyG,SAAR,CAAkBgmD,KAAlB,CAAwB,GAAxB,EAA6BnnC,MAA7B,CAAoC,UAAA7e,SAAS,EAAI;AACtD,eAAOA,SAAS,CAACiI,OAAV,CAAkB,cAAlB,MAAsC,CAAtC,IAA2CjI,SAAS,CAACiI,OAAV,CAAkBlB,MAAM,CAACooC,MAAP,CAAcojE,UAAhC,MAAgD,CAAlG;AACD,OAFM,EAEJpsD,IAFI,CAEC,GAFD,CAAP;AAGD;;;WAED,6BAAoB;AAClB,UAAMp/C,MAAM,GAAG,IAAf;AACA,UAAI,CAACA,MAAM,CAACooC,MAAP,CAAckjE,YAAf,IAA+B,CAACtrG,MAAM,CAACklC,EAA3C,EAA+C;AAC/C,UAAMumE,OAAO,GAAG,EAAhB;AACAzrG,MAAAA,MAAM,CAACiT,MAAP,CAAcihE,IAAd,CAAmB,UAAAq3B,OAAO,EAAI;AAC5B,YAAMjR,UAAU,GAAGt6F,MAAM,CAAC0rG,eAAP,CAAuBH,OAAvB,CAAnB;AACAE,QAAAA,OAAO,CAACrvG,IAAR,CAAa;AACXmvG,UAAAA,OAAO,EAAPA,OADW;AAEXjR,UAAAA,UAAU,EAAVA;AAFW,SAAb;AAIAt6F,QAAAA,MAAM,CAACimG,IAAP,CAAY,aAAZ,EAA2BsF,OAA3B,EAAoCjR,UAApC;AACD,OAPD;AAQAt6F,MAAAA,MAAM,CAACimG,IAAP,CAAY,eAAZ,EAA6BwF,OAA7B;AACD;;;WAED,8BAAqBE,IAArB,EAA2BC,KAA3B,EAAkC;AAChC,UAAID,IAAI,KAAK,KAAK,CAAlB,EAAqB;AACnBA,QAAAA,IAAI,GAAG,SAAP;AACD;;AAED,UAAIC,KAAK,KAAK,KAAK,CAAnB,EAAsB;AACpBA,QAAAA,KAAK,GAAG,KAAR;AACD;;AAED,UAAM5rG,MAAM,GAAG,IAAf;AACA,UACEooC,MADF,GAOIpoC,MAPJ,CACEooC,MADF;AAAA,UAEEn1B,MAFF,GAOIjT,MAPJ,CAEEiT,MAFF;AAAA,UAGE0zF,UAHF,GAOI3mG,MAPJ,CAGE2mG,UAHF;AAAA,UAIEC,eAJF,GAOI5mG,MAPJ,CAIE4mG,eAJF;AAAA,UAKQiF,UALR,GAOI7rG,MAPJ,CAKErH,IALF;AAAA,UAMEua,WANF,GAOIlT,MAPJ,CAMEkT,WANF;AAQA,UAAI44F,GAAG,GAAG,CAAV;;AAEA,UAAI1jE,MAAM,CAACs/D,cAAX,EAA2B;AACzB,YAAIqE,SAAS,GAAG94F,MAAM,CAACC,WAAD,CAAN,CAAoB84F,eAApC;AACA,YAAIC,SAAJ;;AAEA,aAAK,IAAI5xG,CAAC,GAAG6Y,WAAW,GAAG,CAA3B,EAA8B7Y,CAAC,GAAG4Y,MAAM,CAACpZ,MAAzC,EAAiDQ,CAAC,IAAI,CAAtD,EAAyD;AACvD,cAAI4Y,MAAM,CAAC5Y,CAAD,CAAN,IAAa,CAAC4xG,SAAlB,EAA6B;AAC3BF,YAAAA,SAAS,IAAI94F,MAAM,CAAC5Y,CAAD,CAAN,CAAU2xG,eAAvB;AACAF,YAAAA,GAAG,IAAI,CAAP;AACA,gBAAIC,SAAS,GAAGF,UAAhB,EAA4BI,SAAS,GAAG,IAAZ;AAC7B;AACF;;AAED,aAAK,IAAI5xG,EAAC,GAAG6Y,WAAW,GAAG,CAA3B,EAA8B7Y,EAAC,IAAI,CAAnC,EAAsCA,EAAC,IAAI,CAA3C,EAA8C;AAC5C,cAAI4Y,MAAM,CAAC5Y,EAAD,CAAN,IAAa,CAAC4xG,SAAlB,EAA6B;AAC3BF,YAAAA,SAAS,IAAI94F,MAAM,CAAC5Y,EAAD,CAAN,CAAU2xG,eAAvB;AACAF,YAAAA,GAAG,IAAI,CAAP;AACA,gBAAIC,SAAS,GAAGF,UAAhB,EAA4BI,SAAS,GAAG,IAAZ;AAC7B;AACF;AACF,OAnBD,MAmBO;AACL;AACA,YAAIN,IAAI,KAAK,SAAb,EAAwB;AACtB,eAAK,IAAItxG,GAAC,GAAG6Y,WAAW,GAAG,CAA3B,EAA8B7Y,GAAC,GAAG4Y,MAAM,CAACpZ,MAAzC,EAAiDQ,GAAC,IAAI,CAAtD,EAAyD;AACvD,gBAAM6xG,WAAW,GAAGN,KAAK,GAAGjF,UAAU,CAACtsG,GAAD,CAAV,GAAgBusG,eAAe,CAACvsG,GAAD,CAA/B,GAAqCssG,UAAU,CAACzzF,WAAD,CAA/C,GAA+D24F,UAAlE,GAA+ElF,UAAU,CAACtsG,GAAD,CAAV,GAAgBssG,UAAU,CAACzzF,WAAD,CAA1B,GAA0C24F,UAAlJ;;AAEA,gBAAIK,WAAJ,EAAiB;AACfJ,cAAAA,GAAG,IAAI,CAAP;AACD;AACF;AACF,SARD,MAQO;AACL;AACA,eAAK,IAAIzxG,GAAC,GAAG6Y,WAAW,GAAG,CAA3B,EAA8B7Y,GAAC,IAAI,CAAnC,EAAsCA,GAAC,IAAI,CAA3C,EAA8C;AAC5C,gBAAM6xG,YAAW,GAAGvF,UAAU,CAACzzF,WAAD,CAAV,GAA0ByzF,UAAU,CAACtsG,GAAD,CAApC,GAA0CwxG,UAA9D;;AAEA,gBAAIK,YAAJ,EAAiB;AACfJ,cAAAA,GAAG,IAAI,CAAP;AACD;AACF;AACF;AACF;;AAED,aAAOA,GAAP;AACD;;;WAED,kBAAS;AACP,UAAM9rG,MAAM,GAAG,IAAf;AACA,UAAI,CAACA,MAAD,IAAWA,MAAM,CAACmsG,SAAtB,EAAiC;AACjC,UACEtF,QADF,GAGI7mG,MAHJ,CACE6mG,QADF;AAAA,UAEEz+D,MAFF,GAGIpoC,MAHJ,CAEEooC,MAFF,CAHO,CAMK;;AAEZ,UAAIA,MAAM,CAACg8D,WAAX,EAAwB;AACtBpkG,QAAAA,MAAM,CAACykG,aAAP;AACD;;AAEDzkG,MAAAA,MAAM,CAACosG,UAAP;AACApsG,MAAAA,MAAM,CAAComG,YAAP;AACApmG,MAAAA,MAAM,CAACqsG,cAAP;AACArsG,MAAAA,MAAM,CAACqrG,mBAAP;;AAEA,eAASiB,YAAT,GAAwB;AACtB,YAAMC,cAAc,GAAGvsG,MAAM,CAACwsG,YAAP,GAAsBxsG,MAAM,CAACiwD,SAAP,GAAmB,CAAC,CAA1C,GAA8CjwD,MAAM,CAACiwD,SAA5E;AACA,YAAMw8C,YAAY,GAAG7vG,IAAI,CAACyH,GAAL,CAASzH,IAAI,CAAC0H,GAAL,CAASioG,cAAT,EAAyBvsG,MAAM,CAACkrG,YAAP,EAAzB,CAAT,EAA0DlrG,MAAM,CAACirG,YAAP,EAA1D,CAArB;AACAjrG,QAAAA,MAAM,CAACssG,YAAP,CAAoBG,YAApB;AACAzsG,QAAAA,MAAM,CAACorG,iBAAP;AACAprG,QAAAA,MAAM,CAACqrG,mBAAP;AACD;;AAED,UAAIqB,UAAJ;;AAEA,UAAI1sG,MAAM,CAACooC,MAAP,CAAck/D,QAAd,IAA0BtnG,MAAM,CAACooC,MAAP,CAAck/D,QAAd,CAAuBhsG,OAArD,EAA8D;AAC5DgxG,QAAAA,YAAY;;AAEZ,YAAItsG,MAAM,CAACooC,MAAP,CAAc31B,UAAlB,EAA8B;AAC5BzS,UAAAA,MAAM,CAAC2sG,gBAAP;AACD;AACF,OAND,MAMO;AACL,YAAI,CAAC3sG,MAAM,CAACooC,MAAP,CAAcu9D,aAAd,KAAgC,MAAhC,IAA0C3lG,MAAM,CAACooC,MAAP,CAAcu9D,aAAd,GAA8B,CAAzE,KAA+E3lG,MAAM,CAAC8mG,KAAtF,IAA+F,CAAC9mG,MAAM,CAACooC,MAAP,CAAcs/D,cAAlH,EAAkI;AAChIgF,UAAAA,UAAU,GAAG1sG,MAAM,CAAC0T,OAAP,CAAe1T,MAAM,CAACiT,MAAP,CAAcpZ,MAAd,GAAuB,CAAtC,EAAyC,CAAzC,EAA4C,KAA5C,EAAmD,IAAnD,CAAb;AACD,SAFD,MAEO;AACL6yG,UAAAA,UAAU,GAAG1sG,MAAM,CAAC0T,OAAP,CAAe1T,MAAM,CAACkT,WAAtB,EAAmC,CAAnC,EAAsC,KAAtC,EAA6C,IAA7C,CAAb;AACD;;AAED,YAAI,CAACw5F,UAAL,EAAiB;AACfJ,UAAAA,YAAY;AACb;AACF;;AAED,UAAIlkE,MAAM,CAACwkE,aAAP,IAAwB/F,QAAQ,KAAK7mG,MAAM,CAAC6mG,QAAhD,EAA0D;AACxD7mG,QAAAA,MAAM,CAACqmG,aAAP;AACD;;AAEDrmG,MAAAA,MAAM,CAACimG,IAAP,CAAY,QAAZ;AACD;;;WAED,yBAAgB4G,YAAhB,EAA8BC,UAA9B,EAA0C;AACxC,UAAIA,UAAU,KAAK,KAAK,CAAxB,EAA2B;AACzBA,QAAAA,UAAU,GAAG,IAAb;AACD;;AAED,UAAM9sG,MAAM,GAAG,IAAf;AACA,UAAM+sG,gBAAgB,GAAG/sG,MAAM,CAACooC,MAAP,CAAc/1B,SAAvC;;AAEA,UAAI,CAACw6F,YAAL,EAAmB;AACjB;AACAA,QAAAA,YAAY,GAAGE,gBAAgB,KAAK,YAArB,GAAoC,UAApC,GAAiD,YAAhE;AACD;;AAED,UAAIF,YAAY,KAAKE,gBAAjB,IAAqCF,YAAY,KAAK,YAAjB,IAAiCA,YAAY,KAAK,UAA3F,EAAuG;AACrG,eAAO7sG,MAAP;AACD;;AAEDA,MAAAA,MAAM,CAAC8kG,GAAP,CAAW9iF,WAAX,WAA0BhiB,MAAM,CAACooC,MAAP,CAAcm9D,sBAAxC,SAAiEwH,gBAAjE,GAAqFlsF,QAArF,WAAiG7gB,MAAM,CAACooC,MAAP,CAAcm9D,sBAA/G,SAAwIsH,YAAxI;AACA7sG,MAAAA,MAAM,CAACwlG,oBAAP;AACAxlG,MAAAA,MAAM,CAACooC,MAAP,CAAc/1B,SAAd,GAA0Bw6F,YAA1B;AACA7sG,MAAAA,MAAM,CAACiT,MAAP,CAAcihE,IAAd,CAAmB,UAAAq3B,OAAO,EAAI;AAC5B,YAAIsB,YAAY,KAAK,UAArB,EAAiC;AAC/BtB,UAAAA,OAAO,CAACttG,KAAR,CAAcD,KAAd,GAAsB,EAAtB;AACD,SAFD,MAEO;AACLutG,UAAAA,OAAO,CAACttG,KAAR,CAAcF,MAAd,GAAuB,EAAvB;AACD;AACF,OAND;AAOAiC,MAAAA,MAAM,CAACimG,IAAP,CAAY,iBAAZ;AACA,UAAI6G,UAAJ,EAAgB9sG,MAAM,CAACgV,MAAP;AAChB,aAAOhV,MAAP;AACD;;;WAED,eAAMklC,EAAN,EAAU;AACR,UAAMllC,MAAM,GAAG,IAAf;AACA,UAAIA,MAAM,CAACgtG,OAAX,EAAoB,OAAO,IAAP,CAFZ,CAEyB;;AAEjC,UAAMlI,GAAG,GAAG,kBAAE5/D,EAAE,IAAIllC,MAAM,CAACooC,MAAP,CAAclD,EAAtB,CAAZ;AACAA,MAAAA,EAAE,GAAG4/D,GAAG,CAAC,CAAD,CAAR;;AAEA,UAAI,CAAC5/D,EAAL,EAAS;AACP,eAAO,KAAP;AACD;;AAEDA,MAAAA,EAAE,CAACllC,MAAH,GAAYA,MAAZ;;AAEA,UAAMitG,kBAAkB,GAAG,SAArBA,kBAAqB,GAAM;AAC/B,0BAAW,CAACjtG,MAAM,CAACooC,MAAP,CAAc8kE,YAAd,IAA8B,EAA/B,EAAmCpsF,IAAnC,GAA0Cm+B,KAA1C,CAAgD,GAAhD,EAAqDG,IAArD,CAA0D,GAA1D,CAAX;AACD,OAFD;;AAIA,UAAM+tD,UAAU,GAAG,SAAbA,UAAa,GAAM;AACvB,YAAIjoE,EAAE,IAAIA,EAAE,CAAC+tD,UAAT,IAAuB/tD,EAAE,CAAC+tD,UAAH,CAAc1yF,aAAzC,EAAwD;AACtD,cAAM6c,GAAG,GAAG,kBAAE8nB,EAAE,CAAC+tD,UAAH,CAAc1yF,aAAd,CAA4B0sG,kBAAkB,EAA9C,CAAF,CAAZ,CADsD,CACY;;AAElE7vF,UAAAA,GAAG,CAACpgB,QAAJ,GAAe,UAAA9B,OAAO;AAAA,mBAAI4pG,GAAG,CAAC9nG,QAAJ,CAAa9B,OAAb,CAAJ;AAAA,WAAtB;;AAEA,iBAAOkiB,GAAP;AACD;;AAED,eAAO0nF,GAAG,CAAC9nG,QAAJ,CAAaiwG,kBAAkB,EAA/B,CAAP;AACD,OAVD,CAjBQ,CA2BL;;;AAGH,UAAIG,UAAU,GAAGD,UAAU,EAA3B;;AAEA,UAAIC,UAAU,CAACvzG,MAAX,KAAsB,CAAtB,IAA2BmG,MAAM,CAACooC,MAAP,CAAcilE,cAA7C,EAA6D;AAC3D,YAAMh1G,QAAQ,GAAG,6BAAjB;AACA,YAAM0E,OAAO,GAAG1E,QAAQ,CAAC0G,aAAT,CAAuB,KAAvB,CAAhB;AACAquG,QAAAA,UAAU,GAAG,kBAAErwG,OAAF,CAAb;AACAA,QAAAA,OAAO,CAAC9D,SAAR,GAAoB+G,MAAM,CAACooC,MAAP,CAAc8kE,YAAlC;AACApI,QAAAA,GAAG,CAAC5H,MAAJ,CAAWngG,OAAX;AACA+nG,QAAAA,GAAG,CAAC9nG,QAAJ,YAAiBgD,MAAM,CAACooC,MAAP,CAAcojE,UAA/B,GAA6Ct3B,IAA7C,CAAkD,UAAAq3B,OAAO,EAAI;AAC3D6B,UAAAA,UAAU,CAAClQ,MAAX,CAAkBqO,OAAlB;AACD,SAFD;AAGD;;AAED,eAAcvrG,MAAd,EAAsB;AACpB8kG,QAAAA,GAAG,EAAHA,GADoB;AAEpB5/D,QAAAA,EAAE,EAAFA,EAFoB;AAGpBkoE,QAAAA,UAAU,EAAVA,UAHoB;AAIpBE,QAAAA,SAAS,EAAEF,UAAU,CAAC,CAAD,CAJD;AAKpBJ,QAAAA,OAAO,EAAE,IALW;AAMpB;AACAxwC,QAAAA,GAAG,EAAEt3B,EAAE,CAACyyD,GAAH,CAAOp0F,WAAP,OAAyB,KAAzB,IAAkCuhG,GAAG,CAACxI,GAAJ,CAAQ,WAAR,MAAyB,KAP5C;AAQpBkQ,QAAAA,YAAY,EAAExsG,MAAM,CAACooC,MAAP,CAAc/1B,SAAd,KAA4B,YAA5B,KAA6C6yB,EAAE,CAACyyD,GAAH,CAAOp0F,WAAP,OAAyB,KAAzB,IAAkCuhG,GAAG,CAACxI,GAAJ,CAAQ,WAAR,MAAyB,KAAxG,CARM;AASpBiR,QAAAA,QAAQ,EAAEH,UAAU,CAAC9Q,GAAX,CAAe,SAAf,MAA8B;AATpB,OAAtB;;AAWA,aAAO,IAAP;AACD;;;WAED,cAAKp3D,EAAL,EAAS;AACP,UAAMllC,MAAM,GAAG,IAAf;AACA,UAAIA,MAAM,CAAC4kG,WAAX,EAAwB,OAAO5kG,MAAP;AACxB,UAAMgtG,OAAO,GAAGhtG,MAAM,CAACwtG,KAAP,CAAatoE,EAAb,CAAhB;AACA,UAAI8nE,OAAO,KAAK,KAAhB,EAAuB,OAAOhtG,MAAP;AACvBA,MAAAA,MAAM,CAACimG,IAAP,CAAY,YAAZ,EALO,CAKoB;;AAE3B,UAAIjmG,MAAM,CAACooC,MAAP,CAAcg8D,WAAlB,EAA+B;AAC7BpkG,QAAAA,MAAM,CAACykG,aAAP;AACD,OATM,CASL;;;AAGFzkG,MAAAA,MAAM,CAACinG,UAAP,GAZO,CAYc;;AAErB,UAAIjnG,MAAM,CAACooC,MAAP,CAAcjoC,IAAlB,EAAwB;AACtBH,QAAAA,MAAM,CAACmmG,UAAP;AACD,OAhBM,CAgBL;;;AAGFnmG,MAAAA,MAAM,CAACosG,UAAP,GAnBO,CAmBc;;AAErBpsG,MAAAA,MAAM,CAAComG,YAAP;;AAEA,UAAIpmG,MAAM,CAACooC,MAAP,CAAcwkE,aAAlB,EAAiC;AAC/B5sG,QAAAA,MAAM,CAACqmG,aAAP;AACD,OAzBM,CAyBL;;;AAGF,UAAIrmG,MAAM,CAACooC,MAAP,CAAc0/D,UAAd,IAA4B9nG,MAAM,CAAC1E,OAAvC,EAAgD;AAC9C0E,QAAAA,MAAM,CAAC+qG,aAAP;AACD;;AAED,UAAI/qG,MAAM,CAACooC,MAAP,CAAcqlE,aAAlB,EAAiC;AAC/BztG,QAAAA,MAAM,CAACytG,aAAP;AACD,OAlCM,CAkCL;;;AAGF,UAAIztG,MAAM,CAACooC,MAAP,CAAcjoC,IAAlB,EAAwB;AACtBH,QAAAA,MAAM,CAAC0T,OAAP,CAAe1T,MAAM,CAACooC,MAAP,CAAch2B,YAAd,GAA6BpS,MAAM,CAAC6kG,YAAnD,EAAiE,CAAjE,EAAoE7kG,MAAM,CAACooC,MAAP,CAAcslE,kBAAlF,EAAsG,KAAtG,EAA6G,IAA7G;AACD,OAFD,MAEO;AACL1tG,QAAAA,MAAM,CAAC0T,OAAP,CAAe1T,MAAM,CAACooC,MAAP,CAAch2B,YAA7B,EAA2C,CAA3C,EAA8CpS,MAAM,CAACooC,MAAP,CAAcslE,kBAA5D,EAAgF,KAAhF,EAAuF,IAAvF;AACD,OAzCM,CAyCL;;;AAGF1tG,MAAAA,MAAM,CAAC2tG,YAAP,GA5CO,CA4CgB;;AAEvB3tG,MAAAA,MAAM,CAAC4kG,WAAP,GAAqB,IAArB,CA9CO,CA8CoB;;AAE3B5kG,MAAAA,MAAM,CAACimG,IAAP,CAAY,MAAZ;AACAjmG,MAAAA,MAAM,CAACimG,IAAP,CAAY,WAAZ;AACA,aAAOjmG,MAAP;AACD;;;WAED,iBAAQ4tG,cAAR,EAAwBC,WAAxB,EAAqC;AACnC,UAAID,cAAc,KAAK,KAAK,CAA5B,EAA+B;AAC7BA,QAAAA,cAAc,GAAG,IAAjB;AACD;;AAED,UAAIC,WAAW,KAAK,KAAK,CAAzB,EAA4B;AAC1BA,QAAAA,WAAW,GAAG,IAAd;AACD;;AAED,UAAM7tG,MAAM,GAAG,IAAf;AACA,UACEooC,MADF,GAKIpoC,MALJ,CACEooC,MADF;AAAA,UAEE08D,GAFF,GAKI9kG,MALJ,CAEE8kG,GAFF;AAAA,UAGEsI,UAHF,GAKIptG,MALJ,CAGEotG,UAHF;AAAA,UAIEn6F,MAJF,GAKIjT,MALJ,CAIEiT,MAJF;;AAOA,UAAI,OAAOjT,MAAM,CAACooC,MAAd,KAAyB,WAAzB,IAAwCpoC,MAAM,CAACmsG,SAAnD,EAA8D;AAC5D,eAAO,IAAP;AACD;;AAEDnsG,MAAAA,MAAM,CAACimG,IAAP,CAAY,eAAZ,EArBmC,CAqBL;;AAE9BjmG,MAAAA,MAAM,CAAC4kG,WAAP,GAAqB,KAArB,CAvBmC,CAuBP;;AAE5B5kG,MAAAA,MAAM,CAAC8tG,YAAP,GAzBmC,CAyBZ;;AAEvB,UAAI1lE,MAAM,CAACjoC,IAAX,EAAiB;AACfH,QAAAA,MAAM,CAACkmG,WAAP;AACD,OA7BkC,CA6BjC;;;AAGF,UAAI2H,WAAJ,EAAiB;AACf7tG,QAAAA,MAAM,CAAC2nG,aAAP;AACA7C,QAAAA,GAAG,CAACpK,UAAJ,CAAe,OAAf;AACA0S,QAAAA,UAAU,CAAC1S,UAAX,CAAsB,OAAtB;;AAEA,YAAIznF,MAAM,IAAIA,MAAM,CAACpZ,MAArB,EAA6B;AAC3BoZ,UAAAA,MAAM,CAAC+O,WAAP,CAAmB,CAAComB,MAAM,CAAC2lE,iBAAR,EAA2B3lE,MAAM,CAAC4lE,gBAAlC,EAAoD5lE,MAAM,CAAC6lE,cAA3D,EAA2E7lE,MAAM,CAAC8lE,cAAlF,EAAkG9uD,IAAlG,CAAuG,GAAvG,CAAnB,EAAgIs7C,UAAhI,CAA2I,OAA3I,EAAoJA,UAApJ,CAA+J,yBAA/J;AACD;AACF;;AAED16F,MAAAA,MAAM,CAACimG,IAAP,CAAY,SAAZ,EA1CmC,CA0CX;;AAExB/+F,MAAAA,MAAM,CAACC,IAAP,CAAYnH,MAAM,CAACsoG,eAAnB,EAAoC/pG,OAApC,CAA4C,UAAAgkB,SAAS,EAAI;AACvDviB,QAAAA,MAAM,CAAC87F,GAAP,CAAWv5E,SAAX;AACD,OAFD;;AAIA,UAAIqrF,cAAc,KAAK,KAAvB,EAA8B;AAC5B5tG,QAAAA,MAAM,CAAC8kG,GAAP,CAAW,CAAX,EAAc9kG,MAAd,GAAuB,IAAvB;AACA,gCAAYA,MAAZ;AACD;;AAEDA,MAAAA,MAAM,CAACmsG,SAAP,GAAmB,IAAnB;AACA,aAAO,IAAP;AACD;;;WAED,wBAAsBgC,WAAtB,EAAmC;AACjC,yBAAOpG,gBAAP,EAAyBoG,WAAzB;AACD;;;SAED,eAA8B;AAC5B,aAAOpG,gBAAP;AACD;;;SAED,eAAsB;AACpB,aAAOxvG,iBAAP;AACD;;;WAED,uBAAqBowG,GAArB,EAA0B;AACxB,UAAI,CAACnpG,MAAM,CAACgd,SAAP,CAAiBisF,WAAtB,EAAmCjpG,MAAM,CAACgd,SAAP,CAAiBisF,WAAjB,GAA+B,EAA/B;AACnC,UAAMD,OAAO,GAAGhpG,MAAM,CAACgd,SAAP,CAAiBisF,WAAjC;;AAEA,UAAI,OAAOE,GAAP,KAAe,UAAf,IAA6BH,OAAO,CAACtnG,OAAR,CAAgBynG,GAAhB,IAAuB,CAAxD,EAA2D;AACzDH,QAAAA,OAAO,CAACpsG,IAAR,CAAausG,GAAb;AACD;AACF;;;WAED,aAAWyF,MAAX,EAAmB;AACjB,UAAIhwG,KAAK,CAACo1E,OAAN,CAAc46B,MAAd,CAAJ,EAA2B;AACzBA,QAAAA,MAAM,CAAC7vG,OAAP,CAAe,UAAA0sE,CAAC;AAAA,iBAAIzrE,MAAM,CAAC6uG,aAAP,CAAqBpjC,CAArB,CAAJ;AAAA,SAAhB;AACA,eAAOzrE,MAAP;AACD;;AAEDA,MAAAA,MAAM,CAAC6uG,aAAP,CAAqBD,MAArB;AACA,aAAO5uG,MAAP;AACD;;;;;;AAIH0H,MAAM,CAACC,IAAP,CAAYygG,UAAZ,EAAwBrpG,OAAxB,CAAgC,UAAA+vG,cAAc,EAAI;AAChDpnG,EAAAA,MAAM,CAACC,IAAP,CAAYygG,UAAU,CAAC0G,cAAD,CAAtB,EAAwC/vG,OAAxC,CAAgD,UAAAgwG,WAAW,EAAI;AAC7D/uG,IAAAA,MAAM,CAACgd,SAAP,CAAiB+xF,WAAjB,IAAgC3G,UAAU,CAAC0G,cAAD,CAAV,CAA2BC,WAA3B,CAAhC;AACD,GAFD;AAGD,CAJD;AAKA/uG,MAAM,CAACC,GAAP,CAAW,CAAC+uG,eAAD,EAASC,iBAAT,CAAX;eACejvG;;;;;;;;;;;;;;eCznBA;AACbqC,EAAAA,IAAI,EAAE,IADO;AAEbwQ,EAAAA,SAAS,EAAE,YAFE;AAGbq8F,EAAAA,iBAAiB,EAAE,SAHN;AAIbt8F,EAAAA,YAAY,EAAE,CAJD;AAKbhS,EAAAA,KAAK,EAAE,GALM;AAMbqnG,EAAAA,OAAO,EAAE,KANI;AAObkH,EAAAA,oBAAoB,EAAE,IAPT;AAQbC,EAAAA,cAAc,EAAE,IARH;AASbC,EAAAA,MAAM,EAAE,KATK;AAUbxB,EAAAA,cAAc,EAAE,KAVH;AAWb/xG,EAAAA,OAAO,EAAE,IAXI;AAYb6uG,EAAAA,iBAAiB,EAAE,uDAZN;AAab;AACAnsG,EAAAA,KAAK,EAAE,IAdM;AAebD,EAAAA,MAAM,EAAE,IAfK;AAgBb;AACA+wG,EAAAA,8BAA8B,EAAE,KAjBnB;AAkBb;AACAnL,EAAAA,SAAS,EAAE,IAnBE;AAoBbj9F,EAAAA,GAAG,EAAE,IApBQ;AAqBb;AACAqoG,EAAAA,kBAAkB,EAAE,KAtBP;AAuBbC,EAAAA,kBAAkB,EAAE,EAvBP;AAwBb;AACAv8F,EAAAA,UAAU,EAAE,KAzBC;AA0Bb;AACAw8F,EAAAA,cAAc,EAAE,KA3BH;AA4Bb;AACAC,EAAAA,gBAAgB,EAAE,KA7BL;AA8Bb;AACAC,EAAAA,MAAM,EAAE,OA/BK;AAgCb;AACA;AACA/K,EAAAA,WAAW,EAAExqG,SAlCA;AAmCbmrG,EAAAA,eAAe,EAAE,QAnCJ;AAoCb;AACAqK,EAAAA,YAAY,EAAE,CArCD;AAsCbzJ,EAAAA,aAAa,EAAE,CAtCF;AAuCb0J,EAAAA,cAAc,EAAE,CAvCH;AAwCbC,EAAAA,kBAAkB,EAAE,CAxCP;AAyCbC,EAAAA,kBAAkB,EAAE,KAzCP;AA0Cb7H,EAAAA,cAAc,EAAE,KA1CH;AA2Cb8H,EAAAA,oBAAoB,EAAE,KA3CT;AA4CbhJ,EAAAA,kBAAkB,EAAE,CA5CP;AA6Cb;AACAiJ,EAAAA,iBAAiB,EAAE,CA9CN;AA+Cb;AACAC,EAAAA,mBAAmB,EAAE,IAhDR;AAiDbC,EAAAA,wBAAwB,EAAE,KAjDb;AAkDb;AACA/C,EAAAA,aAAa,EAAE,IAnDF;AAoDb;AACAgD,EAAAA,YAAY,EAAE,KArDD;AAsDb;AACAC,EAAAA,UAAU,EAAE,CAvDC;AAwDbC,EAAAA,UAAU,EAAE,EAxDC;AAyDbrG,EAAAA,aAAa,EAAE,IAzDF;AA0DbsG,EAAAA,WAAW,EAAE,IA1DA;AA2DbC,EAAAA,UAAU,EAAE,IA3DC;AA4DbC,EAAAA,eAAe,EAAE,GA5DJ;AA6DbC,EAAAA,YAAY,EAAE,GA7DD;AA8DbC,EAAAA,YAAY,EAAE,IA9DD;AA+DbrK,EAAAA,cAAc,EAAE,IA/DH;AAgEb/uC,EAAAA,SAAS,EAAE,CAhEE;AAiEbq5C,EAAAA,wBAAwB,EAAE,KAjEb;AAkEbC,EAAAA,wBAAwB,EAAE,IAlEb;AAmEbC,EAAAA,6BAA6B,EAAE,KAnElB;AAoEb59F,EAAAA,mBAAmB,EAAE,KApER;AAqEb;AACA69F,EAAAA,iBAAiB,EAAE,IAtEN;AAuEb;AACAC,EAAAA,UAAU,EAAE,IAxEC;AAyEbC,EAAAA,eAAe,EAAE,IAzEJ;AA0Eb;AACAC,EAAAA,mBAAmB,EAAE,KA3ER;AA4Eb;AACA5I,EAAAA,UAAU,EAAE,KA7EC;AA8Eb;AACA6I,EAAAA,aAAa,EAAE,IA/EF;AAgFbC,EAAAA,wBAAwB,EAAE,IAhFb;AAiFbC,EAAAA,mBAAmB,EAAE,KAjFR;AAkFb;AACApD,EAAAA,aAAa,EAAE,IAnFF;AAoFbqD,EAAAA,mBAAmB,EAAE,IApFR;AAqFb;AACA3wG,EAAAA,IAAI,EAAE,KAtFO;AAuFb4wG,EAAAA,oBAAoB,EAAE,CAvFT;AAwFblM,EAAAA,YAAY,EAAE,IAxFD;AAyFbmM,EAAAA,sBAAsB,EAAE,KAzFX;AA0FbC,EAAAA,iBAAiB,EAAE,IA1FN;AA2Fb;AACAC,EAAAA,MAAM,EAAE,KA5FK;AA6Fb;AACAlL,EAAAA,cAAc,EAAE,IA9FH;AA+FbD,EAAAA,cAAc,EAAE,IA/FH;AAgGboL,EAAAA,YAAY,EAAE,IAhGD;AAiGb;AACAC,EAAAA,SAAS,EAAE,IAlGE;AAmGbC,EAAAA,cAAc,EAAE,mBAnGH;AAoGbC,EAAAA,iBAAiB,EAAE,IApGN;AAqGb;AACAC,EAAAA,gBAAgB,EAAE,IAtGL;AAuGbC,EAAAA,uBAAuB,EAAE,EAvGZ;AAwGb;AACAjM,EAAAA,sBAAsB,EAAE,SAzGX;AA0Gb;AACAiG,EAAAA,UAAU,EAAE,cA3GC;AA4GbiG,EAAAA,eAAe,EAAE,8BA5GJ;AA6GbzD,EAAAA,gBAAgB,EAAE,qBA7GL;AA8Gb0D,EAAAA,yBAAyB,EAAE,+BA9Gd;AA+Gb3D,EAAAA,iBAAiB,EAAE,sBA/GN;AAgHb4D,EAAAA,mBAAmB,EAAE,wBAhHR;AAiHb1D,EAAAA,cAAc,EAAE,mBAjHH;AAkHb2D,EAAAA,uBAAuB,EAAE,6BAlHZ;AAmHb1D,EAAAA,cAAc,EAAE,mBAnHH;AAoHb2D,EAAAA,uBAAuB,EAAE,6BApHZ;AAqHb3E,EAAAA,YAAY,EAAE,gBArHD;AAsHb;AACAQ,EAAAA,kBAAkB,EAAE,IAvHP;AAwHb;AACApC,EAAAA,YAAY,EAAE;AAzHD;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAf;eACe;AACbvoG,EAAAA,EADa,cACVinD,MADU,EACFt+C,OADE,EACOomG,QADP,EACiB;AAC5B,QAAMC,IAAI,GAAG,IAAb;AACA,QAAI,OAAOrmG,OAAP,KAAmB,UAAvB,EAAmC,OAAOqmG,IAAP;AACnC,QAAMnpF,MAAM,GAAGkpF,QAAQ,GAAG,SAAH,GAAe,MAAtC;AACA9nD,IAAAA,MAAM,CAAC/K,KAAP,CAAa,GAAb,EAAkB1gD,OAAlB,CAA0B,UAAA6Y,KAAK,EAAI;AACjC,UAAI,CAAC26F,IAAI,CAACzJ,eAAL,CAAqBlxF,KAArB,CAAL,EAAkC26F,IAAI,CAACzJ,eAAL,CAAqBlxF,KAArB,IAA8B,EAA9B;AAClC26F,MAAAA,IAAI,CAACzJ,eAAL,CAAqBlxF,KAArB,EAA4BwR,MAA5B,EAAoCld,OAApC;AACD,KAHD;AAIA,WAAOqmG,IAAP;AACD,GAVY;AAYb/wG,EAAAA,IAZa,gBAYRgpD,MAZQ,EAYAt+C,OAZA,EAYSomG,QAZT,EAYmB;AAC9B,QAAMC,IAAI,GAAG,IAAb;AACA,QAAI,OAAOrmG,OAAP,KAAmB,UAAvB,EAAmC,OAAOqmG,IAAP;;AAEnC,aAAS/V,WAAT,GAAuB;AACrB+V,MAAAA,IAAI,CAACjW,GAAL,CAAS9xC,MAAT,EAAiBgyC,WAAjB;;AAEA,UAAIA,WAAW,CAACgW,cAAhB,EAAgC;AAC9B,eAAOhW,WAAW,CAACgW,cAAnB;AACD;;AAED,WAAK,IAAIhK,IAAI,GAAGrkF,SAAS,CAAC9pB,MAArB,EAA6BskB,IAAI,GAAG,IAAI/f,KAAJ,CAAU4pG,IAAV,CAApC,EAAqDC,IAAI,GAAG,CAAjE,EAAoEA,IAAI,GAAGD,IAA3E,EAAiFC,IAAI,EAArF,EAAyF;AACvF9pF,QAAAA,IAAI,CAAC8pF,IAAD,CAAJ,GAAatkF,SAAS,CAACskF,IAAD,CAAtB;AACD;;AAEDv8F,MAAAA,OAAO,CAACkT,KAAR,CAAcmzF,IAAd,EAAoB5zF,IAApB;AACD;;AAED69E,IAAAA,WAAW,CAACgW,cAAZ,GAA6BtmG,OAA7B;AACA,WAAOqmG,IAAI,CAAChvG,EAAL,CAAQinD,MAAR,EAAgBgyC,WAAhB,EAA6B8V,QAA7B,CAAP;AACD,GAhCY;AAkCb/I,EAAAA,KAlCa,iBAkCPr9F,OAlCO,EAkCEomG,QAlCF,EAkCY;AACvB,QAAMC,IAAI,GAAG,IAAb;AACA,QAAI,OAAOrmG,OAAP,KAAmB,UAAvB,EAAmC,OAAOqmG,IAAP;AACnC,QAAMnpF,MAAM,GAAGkpF,QAAQ,GAAG,SAAH,GAAe,MAAtC;;AAEA,QAAIC,IAAI,CAACxJ,kBAAL,CAAwBrnG,OAAxB,CAAgCwK,OAAhC,IAA2C,CAA/C,EAAkD;AAChDqmG,MAAAA,IAAI,CAACxJ,kBAAL,CAAwB3/E,MAAxB,EAAgCld,OAAhC;AACD;;AAED,WAAOqmG,IAAP;AACD,GA5CY;AA8CbE,EAAAA,MA9Ca,kBA8CNvmG,OA9CM,EA8CG;AACd,QAAMqmG,IAAI,GAAG,IAAb;AACA,QAAI,CAACA,IAAI,CAACxJ,kBAAV,EAA8B,OAAOwJ,IAAP;AAC9B,QAAMt2G,KAAK,GAAGs2G,IAAI,CAACxJ,kBAAL,CAAwBrnG,OAAxB,CAAgCwK,OAAhC,CAAd;;AAEA,QAAIjQ,KAAK,IAAI,CAAb,EAAgB;AACds2G,MAAAA,IAAI,CAACxJ,kBAAL,CAAwBrlF,MAAxB,CAA+BznB,KAA/B,EAAsC,CAAtC;AACD;;AAED,WAAOs2G,IAAP;AACD,GAxDY;AA0DbjW,EAAAA,GA1Da,eA0DT9xC,MA1DS,EA0DDt+C,OA1DC,EA0DQ;AACnB,QAAMqmG,IAAI,GAAG,IAAb;AACA,QAAI,CAACA,IAAI,CAACzJ,eAAV,EAA2B,OAAOyJ,IAAP;AAC3B/nD,IAAAA,MAAM,CAAC/K,KAAP,CAAa,GAAb,EAAkB1gD,OAAlB,CAA0B,UAAA6Y,KAAK,EAAI;AACjC,UAAI,OAAO1L,OAAP,KAAmB,WAAvB,EAAoC;AAClCqmG,QAAAA,IAAI,CAACzJ,eAAL,CAAqBlxF,KAArB,IAA8B,EAA9B;AACD,OAFD,MAEO,IAAI26F,IAAI,CAACzJ,eAAL,CAAqBlxF,KAArB,CAAJ,EAAiC;AACtC26F,QAAAA,IAAI,CAACzJ,eAAL,CAAqBlxF,KAArB,EAA4B7Y,OAA5B,CAAoC,UAACgiG,YAAD,EAAe9kG,KAAf,EAAyB;AAC3D,cAAI8kG,YAAY,KAAK70F,OAAjB,IAA4B60F,YAAY,CAACyR,cAAb,IAA+BzR,YAAY,CAACyR,cAAb,KAAgCtmG,OAA/F,EAAwG;AACtGqmG,YAAAA,IAAI,CAACzJ,eAAL,CAAqBlxF,KAArB,EAA4B8L,MAA5B,CAAmCznB,KAAnC,EAA0C,CAA1C;AACD;AACF,SAJD;AAKD;AACF,KAVD;AAWA,WAAOs2G,IAAP;AACD,GAzEY;AA2Eb9L,EAAAA,IA3Ea,kBA2EN;AACL,QAAM8L,IAAI,GAAG,IAAb;AACA,QAAI,CAACA,IAAI,CAACzJ,eAAV,EAA2B,OAAOyJ,IAAP;AAC3B,QAAI/nD,MAAJ;AACA,QAAI/uD,IAAJ;AACA,QAAIyoB,OAAJ;;AAEA,SAAK,IAAIwuF,KAAK,GAAGvuF,SAAS,CAAC9pB,MAAtB,EAA8BskB,IAAI,GAAG,IAAI/f,KAAJ,CAAU8zG,KAAV,CAArC,EAAuDC,KAAK,GAAG,CAApE,EAAuEA,KAAK,GAAGD,KAA/E,EAAsFC,KAAK,EAA3F,EAA+F;AAC7Fh0F,MAAAA,IAAI,CAACg0F,KAAD,CAAJ,GAAcxuF,SAAS,CAACwuF,KAAD,CAAvB;AACD;;AAED,QAAI,OAAOh0F,IAAI,CAAC,CAAD,CAAX,KAAmB,QAAnB,IAA+B/f,KAAK,CAACo1E,OAAN,CAAcr1D,IAAI,CAAC,CAAD,CAAlB,CAAnC,EAA2D;AACzD6rC,MAAAA,MAAM,GAAG7rC,IAAI,CAAC,CAAD,CAAb;AACAljB,MAAAA,IAAI,GAAGkjB,IAAI,CAACiiB,KAAL,CAAW,CAAX,EAAcjiB,IAAI,CAACtkB,MAAnB,CAAP;AACA6pB,MAAAA,OAAO,GAAGquF,IAAV;AACD,KAJD,MAIO;AACL/nD,MAAAA,MAAM,GAAG7rC,IAAI,CAAC,CAAD,CAAJ,CAAQ6rC,MAAjB;AACA/uD,MAAAA,IAAI,GAAGkjB,IAAI,CAAC,CAAD,CAAJ,CAAQljB,IAAf;AACAyoB,MAAAA,OAAO,GAAGvF,IAAI,CAAC,CAAD,CAAJ,CAAQuF,OAAR,IAAmBquF,IAA7B;AACD;;AAED92G,IAAAA,IAAI,CAACgkB,OAAL,CAAayE,OAAb;AACA,QAAM0uF,WAAW,GAAGh0G,KAAK,CAACo1E,OAAN,CAAcxpB,MAAd,IAAwBA,MAAxB,GAAiCA,MAAM,CAAC/K,KAAP,CAAa,GAAb,CAArD;AACAmzD,IAAAA,WAAW,CAAC7zG,OAAZ,CAAoB,UAAA6Y,KAAK,EAAI;AAC3B,UAAI26F,IAAI,CAACxJ,kBAAL,IAA2BwJ,IAAI,CAACxJ,kBAAL,CAAwB1uG,MAAvD,EAA+D;AAC7Dk4G,QAAAA,IAAI,CAACxJ,kBAAL,CAAwBhqG,OAAxB,CAAgC,UAAAgiG,YAAY,EAAI;AAC9CA,UAAAA,YAAY,CAAC3hF,KAAb,CAAmB8E,OAAnB,GAA6BtM,KAA7B,4BAAuCnc,IAAvC;AACD,SAFD;AAGD;;AAED,UAAI82G,IAAI,CAACzJ,eAAL,IAAwByJ,IAAI,CAACzJ,eAAL,CAAqBlxF,KAArB,CAA5B,EAAyD;AACvD26F,QAAAA,IAAI,CAACzJ,eAAL,CAAqBlxF,KAArB,EAA4B7Y,OAA5B,CAAoC,UAAAgiG,YAAY,EAAI;AAClDA,UAAAA,YAAY,CAAC3hF,KAAb,CAAmB8E,OAAnB,EAA4BzoB,IAA5B;AACD,SAFD;AAGD;AACF,KAZD;AAaA,WAAO82G,IAAP;AACD;AAhHY;;;;;;;;;;;;;;;ACDf;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AACA,IAAIM,kBAAkB,GAAG,KAAzB;;AAEA,SAASC,kBAAT,GAA8B,CAAE;;AAEhC,IAAMtoD,MAAM,GAAG,SAATA,MAAS,CAAChqD,MAAD,EAAS4oB,MAAT,EAAoB;AACjC,MAAMvwB,QAAQ,GAAG,6BAAjB;AACA,MACE+vC,MADF,GAOIpoC,MAPJ,CACEooC,MADF;AAAA,MAEEihE,WAFF,GAOIrpG,MAPJ,CAEEqpG,WAFF;AAAA,MAGEnkE,EAHF,GAOIllC,MAPJ,CAGEklC,EAHF;AAAA,MAIEooE,SAJF,GAOIttG,MAPJ,CAIEstG,SAJF;AAAA,MAKEpG,MALF,GAOIlnG,MAPJ,CAKEknG,MALF;AAAA,MAMEC,OANF,GAOInnG,MAPJ,CAMEmnG,OANF;AAQA,MAAM9L,OAAO,GAAG,CAAC,CAACjzD,MAAM,CAACymE,MAAzB;AACA,MAAM0D,SAAS,GAAG3pF,MAAM,KAAK,IAAX,GAAkB,kBAAlB,GAAuC,qBAAzD;AACA,MAAM4pF,YAAY,GAAG5pF,MAArB,CAZiC,CAYJ;;AAE7B,MAAI,CAACu+E,OAAO,CAACE,KAAb,EAAoB;AAClBniE,IAAAA,EAAE,CAACqtE,SAAD,CAAF,CAAclJ,WAAW,CAAChtG,KAA1B,EAAiC2D,MAAM,CAACyyG,YAAxC,EAAsD,KAAtD;AACAp6G,IAAAA,QAAQ,CAACk6G,SAAD,CAAR,CAAoBlJ,WAAW,CAACn0E,IAAhC,EAAsCl1B,MAAM,CAAC0yG,WAA7C,EAA0DrX,OAA1D;AACAhjG,IAAAA,QAAQ,CAACk6G,SAAD,CAAR,CAAoBlJ,WAAW,CAAC/sG,GAAhC,EAAqC0D,MAAM,CAAC2yG,UAA5C,EAAwD,KAAxD;AACD,GAJD,MAIO;AACL,QAAMC,eAAe,GAAGvJ,WAAW,CAAChtG,KAAZ,KAAsB,YAAtB,IAAsC8qG,OAAO,CAACyL,eAA9C,IAAiExqE,MAAM,CAACmpE,gBAAxE,GAA2F;AACjHzkE,MAAAA,OAAO,EAAE,IADwG;AAEjHuuD,MAAAA,OAAO,EAAE;AAFwG,KAA3F,GAGpB,KAHJ;AAIAn2D,IAAAA,EAAE,CAACqtE,SAAD,CAAF,CAAclJ,WAAW,CAAChtG,KAA1B,EAAiC2D,MAAM,CAACyyG,YAAxC,EAAsDG,eAAtD;AACA1tE,IAAAA,EAAE,CAACqtE,SAAD,CAAF,CAAclJ,WAAW,CAACn0E,IAA1B,EAAgCl1B,MAAM,CAAC0yG,WAAvC,EAAoDvL,OAAO,CAACyL,eAAR,GAA0B;AAC5E9lE,MAAAA,OAAO,EAAE,KADmE;AAE5EuuD,MAAAA,OAAO,EAAPA;AAF4E,KAA1B,GAGhDA,OAHJ;AAIAn2D,IAAAA,EAAE,CAACqtE,SAAD,CAAF,CAAclJ,WAAW,CAAC/sG,GAA1B,EAA+B0D,MAAM,CAAC2yG,UAAtC,EAAkDC,eAAlD;;AAEA,QAAIvJ,WAAW,CAAC1iF,MAAhB,EAAwB;AACtBue,MAAAA,EAAE,CAACqtE,SAAD,CAAF,CAAclJ,WAAW,CAAC1iF,MAA1B,EAAkC3mB,MAAM,CAAC2yG,UAAzC,EAAqDC,eAArD;AACD;AACF,GAjCgC,CAiC/B;;;AAGF,MAAIxqE,MAAM,CAACuoE,aAAP,IAAwBvoE,MAAM,CAACwoE,wBAAnC,EAA6D;AAC3D1rE,IAAAA,EAAE,CAACqtE,SAAD,CAAF,CAAc,OAAd,EAAuBvyG,MAAM,CAAC8/B,OAA9B,EAAuC,IAAvC;AACD;;AAED,MAAIsI,MAAM,CAACq/D,OAAX,EAAoB;AAClB6F,IAAAA,SAAS,CAACiF,SAAD,CAAT,CAAqB,QAArB,EAA+BvyG,MAAM,CAACu4F,QAAtC;AACD,GA1CgC,CA0C/B;;;AAGF,MAAInwD,MAAM,CAACumE,oBAAX,EAAiC;AAC/B3uG,IAAAA,MAAM,CAACwyG,YAAD,CAAN,CAAqBtL,MAAM,CAACM,GAAP,IAAcN,MAAM,CAACK,OAArB,GAA+B,yCAA/B,GAA2E,uBAAhG,EAAyH5/C,iBAAzH,EAAmI,IAAnI;AACD,GAFD,MAEO;AACL3nD,IAAAA,MAAM,CAACwyG,YAAD,CAAN,CAAqB,gBAArB,EAAuC7qD,iBAAvC,EAAiD,IAAjD;AACD;AACF,CAlDD;;AAoDA,SAASgmD,YAAT,GAAwB;AACtB,MAAM3tG,MAAM,GAAG,IAAf;AACA,MAAM3H,QAAQ,GAAG,6BAAjB;AACA,MACE+vC,MADF,GAGIpoC,MAHJ,CACEooC,MADF;AAAA,MAEE++D,OAFF,GAGInnG,MAHJ,CAEEmnG,OAFF;AAIAnnG,EAAAA,MAAM,CAACyyG,YAAP,GAAsBA,sBAAa9nG,IAAb,CAAkB3K,MAAlB,CAAtB;AACAA,EAAAA,MAAM,CAAC0yG,WAAP,GAAqBA,qBAAY/nG,IAAZ,CAAiB3K,MAAjB,CAArB;AACAA,EAAAA,MAAM,CAAC2yG,UAAP,GAAoBA,oBAAWhoG,IAAX,CAAgB3K,MAAhB,CAApB;;AAEA,MAAIooC,MAAM,CAACq/D,OAAX,EAAoB;AAClBznG,IAAAA,MAAM,CAACu4F,QAAP,GAAkBA,kBAAS5tF,IAAT,CAAc3K,MAAd,CAAlB;AACD;;AAEDA,EAAAA,MAAM,CAAC8/B,OAAP,GAAiBA,iBAAQn1B,IAAR,CAAa3K,MAAb,CAAjB;;AAEA,MAAImnG,OAAO,CAACE,KAAR,IAAiB,CAACgL,kBAAtB,EAA0C;AACxCh6G,IAAAA,QAAQ,CAACiF,gBAAT,CAA0B,YAA1B,EAAwCg1G,kBAAxC;AACAD,IAAAA,kBAAkB,GAAG,IAArB;AACD;;AAEDroD,EAAAA,MAAM,CAAChqD,MAAD,EAAS,IAAT,CAAN;AACD;;AAED,SAAS8tG,YAAT,GAAwB;AACtB,MAAM9tG,MAAM,GAAG,IAAf;AACAgqD,EAAAA,MAAM,CAAChqD,MAAD,EAAS,KAAT,CAAN;AACD;;eAEc;AACb2tG,EAAAA,YAAY,EAAZA,YADa;AAEbG,EAAAA,YAAY,EAAZA;AAFa;;;;;;;;;;;;;;;AC7FA,SAAShuE,OAAT,CAAiBpjC,CAAjB,EAAoB;AACjC,MAAMsD,MAAM,GAAG,IAAf;AACA,MAAI,CAACA,MAAM,CAAC1E,OAAZ,EAAqB;;AAErB,MAAI,CAAC0E,MAAM,CAAC0qG,UAAZ,EAAwB;AACtB,QAAI1qG,MAAM,CAACooC,MAAP,CAAcuoE,aAAlB,EAAiCj0G,CAAC,CAAC+B,cAAF;;AAEjC,QAAIuB,MAAM,CAACooC,MAAP,CAAcwoE,wBAAd,IAA0C5wG,MAAM,CAACs/F,SAArD,EAAgE;AAC9D5iG,MAAAA,CAAC,CAACm2G,eAAF;AACAn2G,MAAAA,CAAC,CAACo2G,wBAAF;AACD;AACF;AACF;;;;;;;;;;;;;;ACZc,SAASnrD,QAAT,GAAoB;AACjC,MAAM3nD,MAAM,GAAG,IAAf;AACA,MACEooC,MADF,GAGIpoC,MAHJ,CACEooC,MADF;AAAA,MAEElD,EAFF,GAGIllC,MAHJ,CAEEklC,EAFF;AAIA,MAAIA,EAAE,IAAIA,EAAE,CAAClgC,WAAH,KAAmB,CAA7B,EAAgC,OANC,CAMO;;AAExC,MAAIojC,MAAM,CAACg8D,WAAX,EAAwB;AACtBpkG,IAAAA,MAAM,CAACykG,aAAP;AACD,GAVgC,CAU/B;;;AAGF,MACEsB,cADF,GAII/lG,MAJJ,CACE+lG,cADF;AAAA,MAEEC,cAFF,GAIIhmG,MAJJ,CAEEgmG,cAFF;AAAA,MAGEa,QAHF,GAII7mG,MAJJ,CAGE6mG,QAHF,CAbiC,CAiBrB;;AAEZ7mG,EAAAA,MAAM,CAAC+lG,cAAP,GAAwB,IAAxB;AACA/lG,EAAAA,MAAM,CAACgmG,cAAP,GAAwB,IAAxB;AACAhmG,EAAAA,MAAM,CAACosG,UAAP;AACApsG,EAAAA,MAAM,CAAComG,YAAP;AACApmG,EAAAA,MAAM,CAACqrG,mBAAP;;AAEA,MAAI,CAACjjE,MAAM,CAACu9D,aAAP,KAAyB,MAAzB,IAAmCv9D,MAAM,CAACu9D,aAAP,GAAuB,CAA3D,KAAiE3lG,MAAM,CAAC8mG,KAAxE,IAAiF,CAAC9mG,MAAM,CAACkpG,WAAzF,IAAwG,CAAClpG,MAAM,CAACooC,MAAP,CAAcs/D,cAA3H,EAA2I;AACzI1nG,IAAAA,MAAM,CAAC0T,OAAP,CAAe1T,MAAM,CAACiT,MAAP,CAAcpZ,MAAd,GAAuB,CAAtC,EAAyC,CAAzC,EAA4C,KAA5C,EAAmD,IAAnD;AACD,GAFD,MAEO;AACLmG,IAAAA,MAAM,CAAC0T,OAAP,CAAe1T,MAAM,CAACkT,WAAtB,EAAmC,CAAnC,EAAsC,KAAtC,EAA6C,IAA7C;AACD;;AAED,MAAIlT,MAAM,CAACC,QAAP,IAAmBD,MAAM,CAACC,QAAP,CAAgB8lB,OAAnC,IAA8C/lB,MAAM,CAACC,QAAP,CAAgB+F,MAAlE,EAA0E;AACxEhG,IAAAA,MAAM,CAACC,QAAP,CAAgB8yG,GAAhB;AACD,GAjCgC,CAiC/B;;;AAGF/yG,EAAAA,MAAM,CAACgmG,cAAP,GAAwBA,cAAxB;AACAhmG,EAAAA,MAAM,CAAC+lG,cAAP,GAAwBA,cAAxB;;AAEA,MAAI/lG,MAAM,CAACooC,MAAP,CAAcwkE,aAAd,IAA+B/F,QAAQ,KAAK7mG,MAAM,CAAC6mG,QAAvD,EAAiE;AAC/D7mG,IAAAA,MAAM,CAACqmG,aAAP;AACD;AACF;;;;;;;;;;;;;;AC1Cc,SAAS9N,QAAT,GAAoB;AACjC,MAAMv4F,MAAM,GAAG,IAAf;AACA,MACEstG,SADF,GAIIttG,MAJJ,CACEstG,SADF;AAAA,MAEEd,YAFF,GAIIxsG,MAJJ,CAEEwsG,YAFF;AAAA,MAGElxG,OAHF,GAII0E,MAJJ,CAGE1E,OAHF;AAKA,MAAI,CAACA,OAAL,EAAc;AACd0E,EAAAA,MAAM,CAACmpG,iBAAP,GAA2BnpG,MAAM,CAACiwD,SAAlC;;AAEA,MAAIjwD,MAAM,CAAC63B,YAAP,EAAJ,EAA2B;AACzB73B,IAAAA,MAAM,CAACiwD,SAAP,GAAmB,CAACq9C,SAAS,CAACluG,UAA9B;AACD,GAFD,MAEO;AACLY,IAAAA,MAAM,CAACiwD,SAAP,GAAmB,CAACq9C,SAAS,CAACx+F,SAA9B;AACD,GAdgC,CAc/B;;;AAGF,MAAI9O,MAAM,CAACiwD,SAAP,KAAqB,CAAC,CAA1B,EAA6BjwD,MAAM,CAACiwD,SAAP,GAAmB,CAAnB;AAC7BjwD,EAAAA,MAAM,CAACorG,iBAAP;AACAprG,EAAAA,MAAM,CAACqrG,mBAAP;AACA,MAAI2H,WAAJ;AACA,MAAMC,cAAc,GAAGjzG,MAAM,CAACkrG,YAAP,KAAwBlrG,MAAM,CAACirG,YAAP,EAA/C;;AAEA,MAAIgI,cAAc,KAAK,CAAvB,EAA0B;AACxBD,IAAAA,WAAW,GAAG,CAAd;AACD,GAFD,MAEO;AACLA,IAAAA,WAAW,GAAG,CAAChzG,MAAM,CAACiwD,SAAP,GAAmBjwD,MAAM,CAACirG,YAAP,EAApB,IAA6CgI,cAA3D;AACD;;AAED,MAAID,WAAW,KAAKhzG,MAAM,CAACiH,QAA3B,EAAqC;AACnCjH,IAAAA,MAAM,CAACqsG,cAAP,CAAsBG,YAAY,GAAG,CAACxsG,MAAM,CAACiwD,SAAX,GAAuBjwD,MAAM,CAACiwD,SAAhE;AACD;;AAEDjwD,EAAAA,MAAM,CAACimG,IAAP,CAAY,cAAZ,EAA4BjmG,MAAM,CAACiwD,SAAnC,EAA8C,KAA9C;AACD;;;;;;;;;;;;;;AClCD;;AACe,SAAS0iD,UAAT,CAAoBv7F,KAApB,EAA2B;AACxC,MAAMpX,MAAM,GAAG,IAAf;AACA,MAAM/E,IAAI,GAAG+E,MAAM,CAAC0pG,eAApB;AACA,MACEthE,MADF,GAMIpoC,MANJ,CACEooC,MADF;AAAA,MAEEgrD,OAFF,GAMIpzF,MANJ,CAEEozF,OAFF;AAAA,MAGgB52B,GAHhB,GAMIx8D,MANJ,CAGEwsG,YAHF;AAAA,MAIE7F,UAJF,GAMI3mG,MANJ,CAIE2mG,UAJF;AAAA,MAKErrG,OALF,GAMI0E,MANJ,CAKE1E,OALF;AAOA,MAAI,CAACA,OAAL,EAAc;AACd,MAAIoB,CAAC,GAAG0a,KAAR;AACA,MAAI1a,CAAC,CAACw2G,aAAN,EAAqBx2G,CAAC,GAAGA,CAAC,CAACw2G,aAAN;;AAErB,MAAIj4G,IAAI,CAAC4uG,mBAAT,EAA8B;AAC5B7pG,IAAAA,MAAM,CAACimG,IAAP,CAAY,UAAZ,EAAwBvpG,CAAxB;AACD;;AAEDzB,EAAAA,IAAI,CAAC4uG,mBAAL,GAA2B,KAA3B;;AAEA,MAAI,CAAC5uG,IAAI,CAAC0uG,SAAV,EAAqB;AACnB,QAAI1uG,IAAI,CAAC2uG,OAAL,IAAgBxhE,MAAM,CAAC0/D,UAA3B,EAAuC;AACrC9nG,MAAAA,MAAM,CAAC+qG,aAAP,CAAqB,KAArB;AACD;;AAED9vG,IAAAA,IAAI,CAAC2uG,OAAL,GAAe,KAAf;AACA3uG,IAAAA,IAAI,CAACwvG,WAAL,GAAmB,KAAnB;AACA;AACD,GA5BuC,CA4BtC;;;AAGF,MAAIriE,MAAM,CAAC0/D,UAAP,IAAqB7sG,IAAI,CAAC2uG,OAA1B,IAAqC3uG,IAAI,CAAC0uG,SAA1C,KAAwD3pG,MAAM,CAAC+lG,cAAP,KAA0B,IAA1B,IAAkC/lG,MAAM,CAACgmG,cAAP,KAA0B,IAApH,CAAJ,EAA+H;AAC7HhmG,IAAAA,MAAM,CAAC+qG,aAAP,CAAqB,KAArB;AACD,GAjCuC,CAiCtC;;;AAGF,MAAMoI,YAAY,GAAG,iBAArB;AACA,MAAMC,QAAQ,GAAGD,YAAY,GAAGl4G,IAAI,CAAC6uG,cAArC,CArCwC,CAqCa;;AAErD,MAAI9pG,MAAM,CAAC0qG,UAAX,EAAuB;AACrB,QAAM2I,QAAQ,GAAG32G,CAAC,CAACqjB,IAAF,IAAUrjB,CAAC,CAAC42G,YAAF,IAAkB52G,CAAC,CAAC42G,YAAF,EAA7C;AACAtzG,IAAAA,MAAM,CAACuzG,kBAAP,CAA0BF,QAAQ,IAAIA,QAAQ,CAAC,CAAD,CAApB,IAA2B32G,CAAC,CAACwS,MAAvD;AACAlP,IAAAA,MAAM,CAACimG,IAAP,CAAY,WAAZ,EAAyBvpG,CAAzB;;AAEA,QAAI02G,QAAQ,GAAG,GAAX,IAAkBD,YAAY,GAAGl4G,IAAI,CAACmvG,aAApB,GAAoC,GAA1D,EAA+D;AAC7DpqG,MAAAA,MAAM,CAACimG,IAAP,CAAY,uBAAZ,EAAqCvpG,CAArC;AACD;AACF;;AAEDzB,EAAAA,IAAI,CAACmvG,aAAL,GAAqB,iBAArB;AACA,uBAAS,YAAM;AACb,QAAI,CAACpqG,MAAM,CAACmsG,SAAZ,EAAuBnsG,MAAM,CAAC0qG,UAAP,GAAoB,IAApB;AACxB,GAFD;;AAIA,MAAI,CAACzvG,IAAI,CAAC0uG,SAAN,IAAmB,CAAC1uG,IAAI,CAAC2uG,OAAzB,IAAoC,CAAC5pG,MAAM,CAACwzG,cAA5C,IAA8DpgB,OAAO,CAACtgD,IAAR,KAAiB,CAA/E,IAAoF73C,IAAI,CAAC+uG,gBAAL,KAA0B/uG,IAAI,CAACgvG,cAAvH,EAAuI;AACrIhvG,IAAAA,IAAI,CAAC0uG,SAAL,GAAiB,KAAjB;AACA1uG,IAAAA,IAAI,CAAC2uG,OAAL,GAAe,KAAf;AACA3uG,IAAAA,IAAI,CAACwvG,WAAL,GAAmB,KAAnB;AACA;AACD;;AAEDxvG,EAAAA,IAAI,CAAC0uG,SAAL,GAAiB,KAAjB;AACA1uG,EAAAA,IAAI,CAAC2uG,OAAL,GAAe,KAAf;AACA3uG,EAAAA,IAAI,CAACwvG,WAAL,GAAmB,KAAnB;AACA,MAAIgJ,UAAJ;;AAEA,MAAIrrE,MAAM,CAAC+nE,YAAX,EAAyB;AACvBsD,IAAAA,UAAU,GAAGj3C,GAAG,GAAGx8D,MAAM,CAACiwD,SAAV,GAAsB,CAACjwD,MAAM,CAACiwD,SAA9C;AACD,GAFD,MAEO;AACLwjD,IAAAA,UAAU,GAAG,CAACx4G,IAAI,CAAC+uG,gBAAnB;AACD;;AAED,MAAI5hE,MAAM,CAACq/D,OAAX,EAAoB;AAClB;AACD;;AAED,MAAIznG,MAAM,CAACooC,MAAP,CAAck/D,QAAd,IAA0Bl/D,MAAM,CAACk/D,QAAP,CAAgBhsG,OAA9C,EAAuD;AACrD0E,IAAAA,MAAM,CAACsnG,QAAP,CAAgBqL,UAAhB,CAA2B;AACzBc,MAAAA,UAAU,EAAVA;AADyB,KAA3B;AAGA;AACD,GAjFuC,CAiFtC;;;AAGF,MAAIC,SAAS,GAAG,CAAhB;AACA,MAAIC,SAAS,GAAG3zG,MAAM,CAAC4mG,eAAP,CAAuB,CAAvB,CAAhB;;AAEA,OAAK,IAAIvsG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGssG,UAAU,CAAC9sG,MAA/B,EAAuCQ,CAAC,IAAIA,CAAC,GAAG+tC,MAAM,CAACknE,kBAAX,GAAgC,CAAhC,GAAoClnE,MAAM,CAACinE,cAAvF,EAAuG;AACrG,QAAMl8D,UAAS,GAAG94C,CAAC,GAAG+tC,MAAM,CAACknE,kBAAP,GAA4B,CAAhC,GAAoC,CAApC,GAAwClnE,MAAM,CAACinE,cAAjE;;AAEA,QAAI,OAAO1I,UAAU,CAACtsG,CAAC,GAAG84C,UAAL,CAAjB,KAAqC,WAAzC,EAAsD;AACpD,UAAIsgE,UAAU,IAAI9M,UAAU,CAACtsG,CAAD,CAAxB,IAA+Bo5G,UAAU,GAAG9M,UAAU,CAACtsG,CAAC,GAAG84C,UAAL,CAA1D,EAA2E;AACzEugE,QAAAA,SAAS,GAAGr5G,CAAZ;AACAs5G,QAAAA,SAAS,GAAGhN,UAAU,CAACtsG,CAAC,GAAG84C,UAAL,CAAV,GAA4BwzD,UAAU,CAACtsG,CAAD,CAAlD;AACD;AACF,KALD,MAKO,IAAIo5G,UAAU,IAAI9M,UAAU,CAACtsG,CAAD,CAA5B,EAAiC;AACtCq5G,MAAAA,SAAS,GAAGr5G,CAAZ;AACAs5G,MAAAA,SAAS,GAAGhN,UAAU,CAACA,UAAU,CAAC9sG,MAAX,GAAoB,CAArB,CAAV,GAAoC8sG,UAAU,CAACA,UAAU,CAAC9sG,MAAX,GAAoB,CAArB,CAA1D;AACD;AACF;;AAED,MAAI+5G,gBAAgB,GAAG,IAAvB;AACA,MAAIC,eAAe,GAAG,IAAtB;;AAEA,MAAIzrE,MAAM,CAAC8oE,MAAX,EAAmB;AACjB,QAAIlxG,MAAM,CAACkpG,WAAX,EAAwB;AACtB2K,MAAAA,eAAe,GAAG7zG,MAAM,CAACooC,MAAP,CAAc0rE,OAAd,IAAyB9zG,MAAM,CAACooC,MAAP,CAAc0rE,OAAd,CAAsBx4G,OAA/C,IAA0D0E,MAAM,CAAC8zG,OAAjE,GAA2E9zG,MAAM,CAAC8zG,OAAP,CAAe7gG,MAAf,CAAsBpZ,MAAtB,GAA+B,CAA1G,GAA8GmG,MAAM,CAACiT,MAAP,CAAcpZ,MAAd,GAAuB,CAAvJ;AACD,KAFD,MAEO,IAAImG,MAAM,CAAC8mG,KAAX,EAAkB;AACvB8M,MAAAA,gBAAgB,GAAG,CAAnB;AACD;AACF,GA9GuC,CA8GtC;;;AAGF,MAAMr2G,KAAK,GAAG,CAACk2G,UAAU,GAAG9M,UAAU,CAAC+M,SAAD,CAAxB,IAAuCC,SAArD;AACA,MAAMxgE,SAAS,GAAGugE,SAAS,GAAGtrE,MAAM,CAACknE,kBAAP,GAA4B,CAAxC,GAA4C,CAA5C,GAAgDlnE,MAAM,CAACinE,cAAzE;;AAEA,MAAI+D,QAAQ,GAAGhrE,MAAM,CAAC8nE,YAAtB,EAAoC;AAClC;AACA,QAAI,CAAC9nE,MAAM,CAAC4nE,UAAZ,EAAwB;AACtBhwG,MAAAA,MAAM,CAAC0T,OAAP,CAAe1T,MAAM,CAACkT,WAAtB;AACA;AACD;;AAED,QAAIlT,MAAM,CAACwzG,cAAP,KAA0B,MAA9B,EAAsC;AACpC,UAAIj2G,KAAK,IAAI6qC,MAAM,CAAC6nE,eAApB,EAAqCjwG,MAAM,CAAC0T,OAAP,CAAe00B,MAAM,CAAC8oE,MAAP,IAAiBlxG,MAAM,CAAC8mG,KAAxB,GAAgC8M,gBAAhC,GAAmDF,SAAS,GAAGvgE,SAA9E,EAArC,KAAmInzC,MAAM,CAAC0T,OAAP,CAAeggG,SAAf;AACpI;;AAED,QAAI1zG,MAAM,CAACwzG,cAAP,KAA0B,MAA9B,EAAsC;AACpC,UAAIj2G,KAAK,GAAG,IAAI6qC,MAAM,CAAC6nE,eAAvB,EAAwC;AACtCjwG,QAAAA,MAAM,CAAC0T,OAAP,CAAeggG,SAAS,GAAGvgE,SAA3B;AACD,OAFD,MAEO,IAAI0gE,eAAe,KAAK,IAApB,IAA4Bt2G,KAAK,GAAG,CAApC,IAAyCX,IAAI,CAACs5B,GAAL,CAAS34B,KAAT,IAAkB6qC,MAAM,CAAC6nE,eAAtE,EAAuF;AAC5FjwG,QAAAA,MAAM,CAAC0T,OAAP,CAAemgG,eAAf;AACD,OAFM,MAEA;AACL7zG,QAAAA,MAAM,CAAC0T,OAAP,CAAeggG,SAAf;AACD;AACF;AACF,GApBD,MAoBO;AACL;AACA,QAAI,CAACtrE,MAAM,CAAC2nE,WAAZ,EAAyB;AACvB/vG,MAAAA,MAAM,CAAC0T,OAAP,CAAe1T,MAAM,CAACkT,WAAtB;AACA;AACD;;AAED,QAAM6gG,iBAAiB,GAAG/zG,MAAM,CAACg0G,UAAP,KAAsBt3G,CAAC,CAACwS,MAAF,KAAalP,MAAM,CAACg0G,UAAP,CAAkBC,MAA/B,IAAyCv3G,CAAC,CAACwS,MAAF,KAAalP,MAAM,CAACg0G,UAAP,CAAkBE,MAA9F,CAA1B;;AAEA,QAAI,CAACH,iBAAL,EAAwB;AACtB,UAAI/zG,MAAM,CAACwzG,cAAP,KAA0B,MAA9B,EAAsC;AACpCxzG,QAAAA,MAAM,CAAC0T,OAAP,CAAekgG,gBAAgB,KAAK,IAArB,GAA4BA,gBAA5B,GAA+CF,SAAS,GAAGvgE,SAA1E;AACD;;AAED,UAAInzC,MAAM,CAACwzG,cAAP,KAA0B,MAA9B,EAAsC;AACpCxzG,QAAAA,MAAM,CAAC0T,OAAP,CAAemgG,eAAe,KAAK,IAApB,GAA2BA,eAA3B,GAA6CH,SAA5D;AACD;AACF,KARD,MAQO,IAAIh3G,CAAC,CAACwS,MAAF,KAAalP,MAAM,CAACg0G,UAAP,CAAkBC,MAAnC,EAA2C;AAChDj0G,MAAAA,MAAM,CAAC0T,OAAP,CAAeggG,SAAS,GAAGvgE,SAA3B;AACD,KAFM,MAEA;AACLnzC,MAAAA,MAAM,CAAC0T,OAAP,CAAeggG,SAAf;AACD;AACF;AACF;;;;;;;;;;;;;;AChKD;;AACA;;AACA;;;;;;AACe,SAAShB,WAAT,CAAqBt7F,KAArB,EAA4B;AACzC,MAAM/e,QAAQ,GAAG,6BAAjB;AACA,MAAM2H,MAAM,GAAG,IAAf;AACA,MAAM/E,IAAI,GAAG+E,MAAM,CAAC0pG,eAApB;AACA,MACEthE,MADF,GAKIpoC,MALJ,CACEooC,MADF;AAAA,MAEEgrD,OAFF,GAKIpzF,MALJ,CAEEozF,OAFF;AAAA,MAGgB52B,GAHhB,GAKIx8D,MALJ,CAGEwsG,YAHF;AAAA,MAIElxG,OAJF,GAKI0E,MALJ,CAIE1E,OAJF;AAMA,MAAI,CAACA,OAAL,EAAc;AACd,MAAIoB,CAAC,GAAG0a,KAAR;AACA,MAAI1a,CAAC,CAACw2G,aAAN,EAAqBx2G,CAAC,GAAGA,CAAC,CAACw2G,aAAN;;AAErB,MAAI,CAACj4G,IAAI,CAAC0uG,SAAV,EAAqB;AACnB,QAAI1uG,IAAI,CAACwvG,WAAL,IAAoBxvG,IAAI,CAAC8uG,WAA7B,EAA0C;AACxC/pG,MAAAA,MAAM,CAACimG,IAAP,CAAY,mBAAZ,EAAiCvpG,CAAjC;AACD;;AAED;AACD;;AAED,MAAIzB,IAAI,CAACuvG,YAAL,IAAqB9tG,CAAC,CAACrD,IAAF,KAAW,WAApC,EAAiD;AACjD,MAAM86G,WAAW,GAAGz3G,CAAC,CAACrD,IAAF,KAAW,WAAX,IAA0BqD,CAAC,CAAC03G,aAA5B,KAA8C13G,CAAC,CAAC03G,aAAF,CAAgB,CAAhB,KAAsB13G,CAAC,CAAC23G,cAAF,CAAiB,CAAjB,CAApE,CAApB;AACA,MAAMC,KAAK,GAAG53G,CAAC,CAACrD,IAAF,KAAW,WAAX,GAAyB86G,WAAW,CAACG,KAArC,GAA6C53G,CAAC,CAAC43G,KAA7D;AACA,MAAMC,KAAK,GAAG73G,CAAC,CAACrD,IAAF,KAAW,WAAX,GAAyB86G,WAAW,CAACI,KAArC,GAA6C73G,CAAC,CAAC63G,KAA7D;;AAEA,MAAI73G,CAAC,CAAC83G,uBAAN,EAA+B;AAC7BphB,IAAAA,OAAO,CAACj3D,MAAR,GAAiBm4E,KAAjB;AACAlhB,IAAAA,OAAO,CAAC/2D,MAAR,GAAiBk4E,KAAjB;AACA;AACD;;AAED,MAAI,CAACv0G,MAAM,CAAC8lG,cAAZ,EAA4B;AAC1B,QAAI,CAAC,kBAAEppG,CAAC,CAACwS,MAAJ,EAAYusF,EAAZ,CAAexgG,IAAI,CAACkvG,iBAApB,CAAL,EAA6C;AAC3CnqG,MAAAA,MAAM,CAAC0qG,UAAP,GAAoB,KAApB;AACD;;AAED,QAAIzvG,IAAI,CAAC0uG,SAAT,EAAoB;AAClB,eAAcvW,OAAd,EAAuB;AACrBj3D,QAAAA,MAAM,EAAEm4E,KADa;AAErBj4E,QAAAA,MAAM,EAAEk4E,KAFa;AAGrB5J,QAAAA,QAAQ,EAAE2J,KAHW;AAIrB1J,QAAAA,QAAQ,EAAE2J;AAJW,OAAvB;;AAMAt5G,MAAAA,IAAI,CAAC6uG,cAAL,GAAsB,iBAAtB;AACD;;AAED;AACD;;AAED,MAAI7uG,IAAI,CAACuvG,YAAL,IAAqBpiE,MAAM,CAAC11B,mBAA5B,IAAmD,CAAC01B,MAAM,CAACjoC,IAA/D,EAAqE;AACnE,QAAIH,MAAM,CAACgpG,UAAP,EAAJ,EAAyB;AACvB;AACA,UAAIuL,KAAK,GAAGnhB,OAAO,CAAC/2D,MAAhB,IAA0Br8B,MAAM,CAACiwD,SAAP,IAAoBjwD,MAAM,CAACkrG,YAAP,EAA9C,IAAuEqJ,KAAK,GAAGnhB,OAAO,CAAC/2D,MAAhB,IAA0Br8B,MAAM,CAACiwD,SAAP,IAAoBjwD,MAAM,CAACirG,YAAP,EAAzH,EAAgJ;AAC9IhwG,QAAAA,IAAI,CAAC0uG,SAAL,GAAiB,KAAjB;AACA1uG,QAAAA,IAAI,CAAC2uG,OAAL,GAAe,KAAf;AACA;AACD;AACF,KAPD,MAOO,IAAI0K,KAAK,GAAGlhB,OAAO,CAACj3D,MAAhB,IAA0Bn8B,MAAM,CAACiwD,SAAP,IAAoBjwD,MAAM,CAACkrG,YAAP,EAA9C,IAAuEoJ,KAAK,GAAGlhB,OAAO,CAACj3D,MAAhB,IAA0Bn8B,MAAM,CAACiwD,SAAP,IAAoBjwD,MAAM,CAACirG,YAAP,EAAzH,EAAgJ;AACrJ;AACD;AACF;;AAED,MAAIhwG,IAAI,CAACuvG,YAAL,IAAqBnyG,QAAQ,CAAC0qG,aAAlC,EAAiD;AAC/C,QAAIrmG,CAAC,CAACwS,MAAF,KAAa7W,QAAQ,CAAC0qG,aAAtB,IAAuC,kBAAErmG,CAAC,CAACwS,MAAJ,EAAYusF,EAAZ,CAAexgG,IAAI,CAACkvG,iBAApB,CAA3C,EAAmF;AACjFlvG,MAAAA,IAAI,CAAC2uG,OAAL,GAAe,IAAf;AACA5pG,MAAAA,MAAM,CAAC0qG,UAAP,GAAoB,KAApB;AACA;AACD;AACF;;AAED,MAAIzvG,IAAI,CAAC4uG,mBAAT,EAA8B;AAC5B7pG,IAAAA,MAAM,CAACimG,IAAP,CAAY,WAAZ,EAAyBvpG,CAAzB;AACD;;AAED,MAAIA,CAAC,CAAC03G,aAAF,IAAmB13G,CAAC,CAAC03G,aAAF,CAAgBv6G,MAAhB,GAAyB,CAAhD,EAAmD;AACnDu5F,EAAAA,OAAO,CAACuX,QAAR,GAAmB2J,KAAnB;AACAlhB,EAAAA,OAAO,CAACwX,QAAR,GAAmB2J,KAAnB;AACA,MAAME,KAAK,GAAGrhB,OAAO,CAACuX,QAAR,GAAmBvX,OAAO,CAACj3D,MAAzC;AACA,MAAMu4E,KAAK,GAAGthB,OAAO,CAACwX,QAAR,GAAmBxX,OAAO,CAAC/2D,MAAzC;AACA,MAAIr8B,MAAM,CAACooC,MAAP,CAAc2uB,SAAd,IAA2Bn6D,IAAI,CAACgpC,IAAL,CAAU,SAAA6uE,KAAK,EAAI,CAAJ,CAAL,YAAaC,KAAb,EAAsB,CAAtB,CAAV,IAAqC10G,MAAM,CAACooC,MAAP,CAAc2uB,SAAlF,EAA6F;;AAE7F,MAAI,OAAO97D,IAAI,CAAC8uG,WAAZ,KAA4B,WAAhC,EAA6C;AAC3C,QAAI+F,UAAJ;;AAEA,QAAI9vG,MAAM,CAAC63B,YAAP,MAAyBu7D,OAAO,CAACwX,QAAR,KAAqBxX,OAAO,CAAC/2D,MAAtD,IAAgEr8B,MAAM,CAACgpG,UAAP,MAAuB5V,OAAO,CAACuX,QAAR,KAAqBvX,OAAO,CAACj3D,MAAxH,EAAgI;AAC9HlhC,MAAAA,IAAI,CAAC8uG,WAAL,GAAmB,KAAnB;AACD,KAFD,MAEO;AACL;AACA,UAAI0K,KAAK,GAAGA,KAAR,GAAgBC,KAAK,GAAGA,KAAxB,IAAiC,EAArC,EAAyC;AACvC5E,QAAAA,UAAU,GAAGlzG,IAAI,CAAC86E,KAAL,CAAW96E,IAAI,CAACs5B,GAAL,CAASw+E,KAAT,CAAX,EAA4B93G,IAAI,CAACs5B,GAAL,CAASu+E,KAAT,CAA5B,IAA+C,GAA/C,GAAqD73G,IAAI,CAACsL,EAAvE;AACAjN,QAAAA,IAAI,CAAC8uG,WAAL,GAAmB/pG,MAAM,CAAC63B,YAAP,KAAwBi4E,UAAU,GAAG1nE,MAAM,CAAC0nE,UAA5C,GAAyD,KAAKA,UAAL,GAAkB1nE,MAAM,CAAC0nE,UAArG;AACD;AACF;AACF;;AAED,MAAI70G,IAAI,CAAC8uG,WAAT,EAAsB;AACpB/pG,IAAAA,MAAM,CAACimG,IAAP,CAAY,mBAAZ,EAAiCvpG,CAAjC;AACD;;AAED,MAAI,OAAOzB,IAAI,CAACwvG,WAAZ,KAA4B,WAAhC,EAA6C;AAC3C,QAAIrX,OAAO,CAACuX,QAAR,KAAqBvX,OAAO,CAACj3D,MAA7B,IAAuCi3D,OAAO,CAACwX,QAAR,KAAqBxX,OAAO,CAAC/2D,MAAxE,EAAgF;AAC9EphC,MAAAA,IAAI,CAACwvG,WAAL,GAAmB,IAAnB;AACD;AACF;;AAED,MAAIxvG,IAAI,CAAC8uG,WAAT,EAAsB;AACpB9uG,IAAAA,IAAI,CAAC0uG,SAAL,GAAiB,KAAjB;AACA;AACD;;AAED,MAAI,CAAC1uG,IAAI,CAACwvG,WAAV,EAAuB;AACrB;AACD;;AAEDzqG,EAAAA,MAAM,CAAC0qG,UAAP,GAAoB,KAApB;;AAEA,MAAI,CAACtiE,MAAM,CAACq/D,OAAR,IAAmB/qG,CAAC,CAACkkD,UAAzB,EAAqC;AACnClkD,IAAAA,CAAC,CAAC+B,cAAF;AACD;;AAED,MAAI2pC,MAAM,CAACgoE,wBAAP,IAAmC,CAAChoE,MAAM,CAACymE,MAA/C,EAAuD;AACrDnyG,IAAAA,CAAC,CAACm2G,eAAF;AACD;;AAED,MAAI,CAAC53G,IAAI,CAAC2uG,OAAV,EAAmB;AACjB,QAAIxhE,MAAM,CAACjoC,IAAP,IAAe,CAACioC,MAAM,CAACq/D,OAA3B,EAAoC;AAClCznG,MAAAA,MAAM,CAAC20G,OAAP;AACD;;AAED15G,IAAAA,IAAI,CAACgvG,cAAL,GAAsBjqG,MAAM,CAAC40G,YAAP,EAAtB;AACA50G,IAAAA,MAAM,CAAC60G,aAAP,CAAqB,CAArB;;AAEA,QAAI70G,MAAM,CAACs/F,SAAX,EAAsB;AACpBt/F,MAAAA,MAAM,CAACotG,UAAP,CAAkB/1F,OAAlB,CAA0B,mCAA1B;AACD;;AAEDpc,IAAAA,IAAI,CAACsvG,mBAAL,GAA2B,KAA3B,CAZiB,CAYiB;;AAElC,QAAIniE,MAAM,CAAC0/D,UAAP,KAAsB9nG,MAAM,CAAC+lG,cAAP,KAA0B,IAA1B,IAAkC/lG,MAAM,CAACgmG,cAAP,KAA0B,IAAlF,CAAJ,EAA6F;AAC3FhmG,MAAAA,MAAM,CAAC+qG,aAAP,CAAqB,IAArB;AACD;;AAED/qG,IAAAA,MAAM,CAACimG,IAAP,CAAY,iBAAZ,EAA+BvpG,CAA/B;AACD;;AAEDsD,EAAAA,MAAM,CAACimG,IAAP,CAAY,YAAZ,EAA0BvpG,CAA1B;AACAzB,EAAAA,IAAI,CAAC2uG,OAAL,GAAe,IAAf;AACA,MAAI92D,IAAI,GAAG9yC,MAAM,CAAC63B,YAAP,KAAwB48E,KAAxB,GAAgCC,KAA3C;AACAthB,EAAAA,OAAO,CAACtgD,IAAR,GAAeA,IAAf;AACAA,EAAAA,IAAI,IAAI1K,MAAM,CAACynE,UAAf;AACA,MAAIrzC,GAAJ,EAAS1pB,IAAI,GAAG,CAACA,IAAR;AACT9yC,EAAAA,MAAM,CAACwzG,cAAP,GAAwB1gE,IAAI,GAAG,CAAP,GAAW,MAAX,GAAoB,MAA5C;AACA73C,EAAAA,IAAI,CAAC+uG,gBAAL,GAAwBl3D,IAAI,GAAG73C,IAAI,CAACgvG,cAApC;AACA,MAAI6K,mBAAmB,GAAG,IAA1B;AACA,MAAIrE,eAAe,GAAGroE,MAAM,CAACqoE,eAA7B;;AAEA,MAAIroE,MAAM,CAAC11B,mBAAX,EAAgC;AAC9B+9F,IAAAA,eAAe,GAAG,CAAlB;AACD;;AAED,MAAI39D,IAAI,GAAG,CAAP,IAAY73C,IAAI,CAAC+uG,gBAAL,GAAwBhqG,MAAM,CAACirG,YAAP,EAAxC,EAA+D;AAC7D6J,IAAAA,mBAAmB,GAAG,KAAtB;AACA,QAAI1sE,MAAM,CAACooE,UAAX,EAAuBv1G,IAAI,CAAC+uG,gBAAL,GAAwBhqG,MAAM,CAACirG,YAAP,KAAwB,CAAxB,YAA6B,CAACjrG,MAAM,CAACirG,YAAP,EAAD,GAAyBhwG,IAAI,CAACgvG,cAA9B,GAA+Cn3D,IAA5E,EAAqF29D,eAArF,CAAxB;AACxB,GAHD,MAGO,IAAI39D,IAAI,GAAG,CAAP,IAAY73C,IAAI,CAAC+uG,gBAAL,GAAwBhqG,MAAM,CAACkrG,YAAP,EAAxC,EAA+D;AACpE4J,IAAAA,mBAAmB,GAAG,KAAtB;AACA,QAAI1sE,MAAM,CAACooE,UAAX,EAAuBv1G,IAAI,CAAC+uG,gBAAL,GAAwBhqG,MAAM,CAACkrG,YAAP,KAAwB,CAAxB,YAA6BlrG,MAAM,CAACkrG,YAAP,KAAwBjwG,IAAI,CAACgvG,cAA7B,GAA8Cn3D,IAA3E,EAAoF29D,eAApF,CAAxB;AACxB;;AAED,MAAIqE,mBAAJ,EAAyB;AACvBp4G,IAAAA,CAAC,CAAC83G,uBAAF,GAA4B,IAA5B;AACD,GA5KwC,CA4KvC;;;AAGF,MAAI,CAACx0G,MAAM,CAAC+lG,cAAR,IAA0B/lG,MAAM,CAACwzG,cAAP,KAA0B,MAApD,IAA8Dv4G,IAAI,CAAC+uG,gBAAL,GAAwB/uG,IAAI,CAACgvG,cAA/F,EAA+G;AAC7GhvG,IAAAA,IAAI,CAAC+uG,gBAAL,GAAwB/uG,IAAI,CAACgvG,cAA7B;AACD;;AAED,MAAI,CAACjqG,MAAM,CAACgmG,cAAR,IAA0BhmG,MAAM,CAACwzG,cAAP,KAA0B,MAApD,IAA8Dv4G,IAAI,CAAC+uG,gBAAL,GAAwB/uG,IAAI,CAACgvG,cAA/F,EAA+G;AAC7GhvG,IAAAA,IAAI,CAAC+uG,gBAAL,GAAwB/uG,IAAI,CAACgvG,cAA7B;AACD;;AAED,MAAI,CAACjqG,MAAM,CAACgmG,cAAR,IAA0B,CAAChmG,MAAM,CAAC+lG,cAAtC,EAAsD;AACpD9qG,IAAAA,IAAI,CAAC+uG,gBAAL,GAAwB/uG,IAAI,CAACgvG,cAA7B;AACD,GAzLwC,CAyLvC;;;AAGF,MAAI7hE,MAAM,CAAC2uB,SAAP,GAAmB,CAAvB,EAA0B;AACxB,QAAIn6D,IAAI,CAACs5B,GAAL,CAAS4c,IAAT,IAAiB1K,MAAM,CAAC2uB,SAAxB,IAAqC97D,IAAI,CAACivG,kBAA9C,EAAkE;AAChE,UAAI,CAACjvG,IAAI,CAACivG,kBAAV,EAA8B;AAC5BjvG,QAAAA,IAAI,CAACivG,kBAAL,GAA0B,IAA1B;AACA9W,QAAAA,OAAO,CAACj3D,MAAR,GAAiBi3D,OAAO,CAACuX,QAAzB;AACAvX,QAAAA,OAAO,CAAC/2D,MAAR,GAAiB+2D,OAAO,CAACwX,QAAzB;AACA3vG,QAAAA,IAAI,CAAC+uG,gBAAL,GAAwB/uG,IAAI,CAACgvG,cAA7B;AACA7W,QAAAA,OAAO,CAACtgD,IAAR,GAAe9yC,MAAM,CAAC63B,YAAP,KAAwBu7D,OAAO,CAACuX,QAAR,GAAmBvX,OAAO,CAACj3D,MAAnD,GAA4Di3D,OAAO,CAACwX,QAAR,GAAmBxX,OAAO,CAAC/2D,MAAtG;AACA;AACD;AACF,KATD,MASO;AACLphC,MAAAA,IAAI,CAAC+uG,gBAAL,GAAwB/uG,IAAI,CAACgvG,cAA7B;AACA;AACD;AACF;;AAED,MAAI,CAAC7hE,MAAM,CAAC+nE,YAAR,IAAwB/nE,MAAM,CAACq/D,OAAnC,EAA4C,OA5MH,CA4MW;;AAEpD,MAAIr/D,MAAM,CAACk/D,QAAP,IAAmBl/D,MAAM,CAACk/D,QAAP,CAAgBhsG,OAAnC,IAA8C0E,MAAM,CAACsnG,QAArD,IAAiEl/D,MAAM,CAACsoE,mBAA5E,EAAiG;AAC/F1wG,IAAAA,MAAM,CAACorG,iBAAP;AACAprG,IAAAA,MAAM,CAACqrG,mBAAP;AACD;;AAED,MAAIrrG,MAAM,CAACooC,MAAP,CAAck/D,QAAd,IAA0Bl/D,MAAM,CAACk/D,QAAP,CAAgBhsG,OAA1C,IAAqD0E,MAAM,CAACsnG,QAAhE,EAA0E;AACxEtnG,IAAAA,MAAM,CAACsnG,QAAP,CAAgBoL,WAAhB;AACD,GArNwC,CAqNvC;;;AAGF1yG,EAAAA,MAAM,CAACqsG,cAAP,CAAsBpxG,IAAI,CAAC+uG,gBAA3B,EAxNyC,CAwNK;;AAE9ChqG,EAAAA,MAAM,CAACssG,YAAP,CAAoBrxG,IAAI,CAAC+uG,gBAAzB;AACD;;;;;;;;;;;;;;AC9ND;;AACA;;AACA;;;;;;AAA6C;AAE7C,SAAS+K,cAAT,CAAwBp9F,QAAxB,EAAkCqgB,IAAlC,EAAwC;AACtC,MAAIA,IAAI,KAAK,KAAK,CAAlB,EAAqB;AACnBA,IAAAA,IAAI,GAAG,IAAP;AACD;;AAED,WAASg9E,aAAT,CAAuB9vE,EAAvB,EAA2B;AACzB,QAAI,CAACA,EAAD,IAAOA,EAAE,KAAK,6BAAd,IAA+BA,EAAE,KAAK,2BAA1C,EAAuD,OAAO,IAAP;AACvD,QAAIA,EAAE,CAAC+vE,YAAP,EAAqB/vE,EAAE,GAAGA,EAAE,CAAC+vE,YAAR;AACrB,QAAM9W,KAAK,GAAGj5D,EAAE,CAACjiC,OAAH,CAAW0U,QAAX,CAAd;AACA,WAAOwmF,KAAK,IAAI6W,aAAa,CAAC9vE,EAAE,CAACgwE,WAAH,GAAiB3iB,IAAlB,CAA7B;AACD;;AAED,SAAOyiB,aAAa,CAACh9E,IAAD,CAApB;AACD;;AAEc,SAASy6E,YAAT,CAAsBr7F,KAAtB,EAA6B;AAC1C,MAAMpX,MAAM,GAAG,IAAf;AACA,MAAM3H,QAAQ,GAAG,6BAAjB;AACA,MAAMgF,MAAM,GAAG,2BAAf;AACA,MAAMpC,IAAI,GAAG+E,MAAM,CAAC0pG,eAApB;AACA,MACEthE,MADF,GAIIpoC,MAJJ,CACEooC,MADF;AAAA,MAEEgrD,OAFF,GAIIpzF,MAJJ,CAEEozF,OAFF;AAAA,MAGE93F,OAHF,GAII0E,MAJJ,CAGE1E,OAHF;AAKA,MAAI,CAACA,OAAL,EAAc;;AAEd,MAAI0E,MAAM,CAACs/F,SAAP,IAAoBl3D,MAAM,CAAC0mE,8BAA/B,EAA+D;AAC7D;AACD;;AAED,MAAI,CAAC9uG,MAAM,CAACs/F,SAAR,IAAqBl3D,MAAM,CAACq/D,OAA5B,IAAuCr/D,MAAM,CAACjoC,IAAlD,EAAwD;AACtDH,IAAAA,MAAM,CAAC20G,OAAP;AACD;;AAED,MAAIj4G,CAAC,GAAG0a,KAAR;AACA,MAAI1a,CAAC,CAACw2G,aAAN,EAAqBx2G,CAAC,GAAGA,CAAC,CAACw2G,aAAN;AACrB,MAAIiC,SAAS,GAAG,kBAAEz4G,CAAC,CAACwS,MAAJ,CAAhB;;AAEA,MAAIk5B,MAAM,CAACsmE,iBAAP,KAA6B,SAAjC,EAA4C;AAC1C,QAAI,CAACyG,SAAS,CAAClyG,OAAV,CAAkBjD,MAAM,CAACstG,SAAzB,EAAoCzzG,MAAzC,EAAiD;AAClD;;AAEDoB,EAAAA,IAAI,CAACuvG,YAAL,GAAoB9tG,CAAC,CAACrD,IAAF,KAAW,YAA/B;AACA,MAAI,CAAC4B,IAAI,CAACuvG,YAAN,IAAsB,WAAW9tG,CAAjC,IAAsCA,CAAC,CAAC04G,KAAF,KAAY,CAAtD,EAAyD;AACzD,MAAI,CAACn6G,IAAI,CAACuvG,YAAN,IAAsB,YAAY9tG,CAAlC,IAAuCA,CAAC,CAACkE,MAAF,GAAW,CAAtD,EAAyD;AACzD,MAAI3F,IAAI,CAAC0uG,SAAL,IAAkB1uG,IAAI,CAAC2uG,OAA3B,EAAoC,OA/BM,CA+BE;;AAE5C,MAAMyL,oBAAoB,GAAG,CAAC,CAACjtE,MAAM,CAACipE,cAAT,IAA2BjpE,MAAM,CAACipE,cAAP,KAA0B,EAAlF;;AAEA,MAAIgE,oBAAoB,IAAI34G,CAAC,CAACwS,MAA1B,IAAoCxS,CAAC,CAACwS,MAAF,CAAS+jF,UAA7C,IAA2D77E,KAAK,CAAC2I,IAAjE,IAAyE3I,KAAK,CAAC2I,IAAN,CAAW,CAAX,CAA7E,EAA4F;AAC1Fo1F,IAAAA,SAAS,GAAG,kBAAE/9F,KAAK,CAAC2I,IAAN,CAAW,CAAX,CAAF,CAAZ;AACD;;AAED,MAAMuxF,iBAAiB,GAAGlpE,MAAM,CAACkpE,iBAAP,GAA2BlpE,MAAM,CAACkpE,iBAAlC,cAA0DlpE,MAAM,CAACipE,cAAjE,CAA1B;AACA,MAAMiE,cAAc,GAAG,CAAC,EAAE54G,CAAC,CAACwS,MAAF,IAAYxS,CAAC,CAACwS,MAAF,CAAS+jF,UAAvB,CAAxB,CAxC0C,CAwCkB;;AAE5D,MAAI7qD,MAAM,CAACgpE,SAAP,KAAqBkE,cAAc,GAAGP,cAAc,CAACzD,iBAAD,EAAoB50G,CAAC,CAACwS,MAAtB,CAAjB,GAAiDimG,SAAS,CAAClyG,OAAV,CAAkBquG,iBAAlB,EAAqC,CAArC,CAApF,CAAJ,EAAkI;AAChItxG,IAAAA,MAAM,CAAC0qG,UAAP,GAAoB,IAApB;AACA;AACD;;AAED,MAAItiE,MAAM,CAAC+oE,YAAX,EAAyB;AACvB,QAAI,CAACgE,SAAS,CAAClyG,OAAV,CAAkBmlC,MAAM,CAAC+oE,YAAzB,EAAuC,CAAvC,CAAL,EAAgD;AACjD;;AAED/d,EAAAA,OAAO,CAACuX,QAAR,GAAmBjuG,CAAC,CAACrD,IAAF,KAAW,YAAX,GAA0BqD,CAAC,CAAC03G,aAAF,CAAgB,CAAhB,EAAmBE,KAA7C,GAAqD53G,CAAC,CAAC43G,KAA1E;AACAlhB,EAAAA,OAAO,CAACwX,QAAR,GAAmBluG,CAAC,CAACrD,IAAF,KAAW,YAAX,GAA0BqD,CAAC,CAAC03G,aAAF,CAAgB,CAAhB,EAAmBG,KAA7C,GAAqD73G,CAAC,CAAC63G,KAA1E;AACA,MAAMp4E,MAAM,GAAGi3D,OAAO,CAACuX,QAAvB;AACA,MAAMtuE,MAAM,GAAG+2D,OAAO,CAACwX,QAAvB,CAtD0C,CAsDT;;AAEjC,MAAMmE,kBAAkB,GAAG3mE,MAAM,CAAC2mE,kBAAP,IAA6B3mE,MAAM,CAACmtE,qBAA/D;AACA,MAAMvG,kBAAkB,GAAG5mE,MAAM,CAAC4mE,kBAAP,IAA6B5mE,MAAM,CAACotE,qBAA/D;;AAEA,MAAIzG,kBAAkB,KAAK5yE,MAAM,IAAI6yE,kBAAV,IAAgC7yE,MAAM,IAAI9+B,MAAM,CAACqI,UAAP,GAAoBspG,kBAAnE,CAAtB,EAA8G;AAC5G,QAAID,kBAAkB,KAAK,SAA3B,EAAsC;AACpC33F,MAAAA,KAAK,CAAC3Y,cAAN;AACD,KAFD,MAEO;AACL;AACD;AACF;;AAED,WAAcxD,IAAd,EAAoB;AAClB0uG,IAAAA,SAAS,EAAE,IADO;AAElBC,IAAAA,OAAO,EAAE,KAFS;AAGlBC,IAAAA,mBAAmB,EAAE,IAHH;AAIlBE,IAAAA,WAAW,EAAEnwG,SAJK;AAKlB6wG,IAAAA,WAAW,EAAE7wG;AALK,GAApB;;AAOAw5F,EAAAA,OAAO,CAACj3D,MAAR,GAAiBA,MAAjB;AACAi3D,EAAAA,OAAO,CAAC/2D,MAAR,GAAiBA,MAAjB;AACAphC,EAAAA,IAAI,CAAC6uG,cAAL,GAAsB,iBAAtB;AACA9pG,EAAAA,MAAM,CAAC0qG,UAAP,GAAoB,IAApB;AACA1qG,EAAAA,MAAM,CAACosG,UAAP;AACApsG,EAAAA,MAAM,CAACwzG,cAAP,GAAwB55G,SAAxB;AACA,MAAIwuC,MAAM,CAAC2uB,SAAP,GAAmB,CAAvB,EAA0B97D,IAAI,CAACivG,kBAAL,GAA0B,KAA1B;;AAE1B,MAAIxtG,CAAC,CAACrD,IAAF,KAAW,YAAf,EAA6B;AAC3B,QAAIoF,cAAc,GAAG,IAArB;;AAEA,QAAI02G,SAAS,CAAC1Z,EAAV,CAAaxgG,IAAI,CAACkvG,iBAAlB,CAAJ,EAA0C;AACxC1rG,MAAAA,cAAc,GAAG,KAAjB;;AAEA,UAAI02G,SAAS,CAAC,CAAD,CAAT,CAAapzF,QAAb,KAA0B,QAA9B,EAAwC;AACtC9mB,QAAAA,IAAI,CAAC0uG,SAAL,GAAiB,KAAjB;AACD;AACF;;AAED,QAAItxG,QAAQ,CAAC0qG,aAAT,IAA0B,kBAAE1qG,QAAQ,CAAC0qG,aAAX,EAA0BtH,EAA1B,CAA6BxgG,IAAI,CAACkvG,iBAAlC,CAA1B,IAAkF9xG,QAAQ,CAAC0qG,aAAT,KAA2BoS,SAAS,CAAC,CAAD,CAA1H,EAA+H;AAC7H98G,MAAAA,QAAQ,CAAC0qG,aAAT,CAAuBtC,IAAvB;AACD;;AAED,QAAMgV,oBAAoB,GAAGh3G,cAAc,IAAIuB,MAAM,CAAC8lG,cAAzB,IAA2C19D,MAAM,CAACioE,wBAA/E;;AAEA,QAAI,CAACjoE,MAAM,CAACkoE,6BAAP,IAAwCmF,oBAAzC,KAAkE,CAACN,SAAS,CAAC,CAAD,CAAT,CAAaO,iBAApF,EAAuG;AACrGh5G,MAAAA,CAAC,CAAC+B,cAAF;AACD;AACF;;AAED,MAAIuB,MAAM,CAACooC,MAAP,CAAck/D,QAAd,IAA0BtnG,MAAM,CAACooC,MAAP,CAAck/D,QAAd,CAAuBhsG,OAAjD,IAA4D0E,MAAM,CAACsnG,QAAnE,IAA+EtnG,MAAM,CAACs/F,SAAtF,IAAmG,CAACl3D,MAAM,CAACq/D,OAA/G,EAAwH;AACtHznG,IAAAA,MAAM,CAACsnG,QAAP,CAAgBmL,YAAhB;AACD;;AAEDzyG,EAAAA,MAAM,CAACimG,IAAP,CAAY,YAAZ,EAA0BvpG,CAA1B;AACD;;;;;;;;;;;;;;AChID;;AACA;;;;eACe;AACbquG,EAAAA,aAAa,EAAbA,sBADa;AAEbC,EAAAA,eAAe,EAAfA;AAFa;;;;;;;;;;;;;;;ACFA,SAASD,aAAT,CAAuB4K,MAAvB,EAA+B;AAC5C,MAAM31G,MAAM,GAAG,IAAf;AACA,MAAIA,MAAM,CAACmnG,OAAP,CAAeE,KAAf,IAAwB,CAACrnG,MAAM,CAACooC,MAAP,CAAcqhE,aAAvC,IAAwDzpG,MAAM,CAACooC,MAAP,CAAcwkE,aAAd,IAA+B5sG,MAAM,CAACumG,QAA9F,IAA0GvmG,MAAM,CAACooC,MAAP,CAAcq/D,OAA5H,EAAqI;AACrI,MAAMviE,EAAE,GAAGllC,MAAM,CAACooC,MAAP,CAAcsmE,iBAAd,KAAoC,WAApC,GAAkD1uG,MAAM,CAACklC,EAAzD,GAA8DllC,MAAM,CAACstG,SAAhF;AACApoE,EAAAA,EAAE,CAACjnC,KAAH,CAAS++D,MAAT,GAAkB,MAAlB;AACA93B,EAAAA,EAAE,CAACjnC,KAAH,CAAS++D,MAAT,GAAkB24C,MAAM,GAAG,kBAAH,GAAwB,cAAhD;AACAzwE,EAAAA,EAAE,CAACjnC,KAAH,CAAS++D,MAAT,GAAkB24C,MAAM,GAAG,cAAH,GAAoB,WAA5C;AACAzwE,EAAAA,EAAE,CAACjnC,KAAH,CAAS++D,MAAT,GAAkB24C,MAAM,GAAG,UAAH,GAAgB,MAAxC;AACD;;;;;;;;;;;;;;ACRc,SAAS3K,eAAT,GAA2B;AACxC,MAAMhrG,MAAM,GAAG,IAAf;;AAEA,MAAIA,MAAM,CAACmnG,OAAP,CAAeE,KAAf,IAAwBrnG,MAAM,CAACooC,MAAP,CAAcwkE,aAAd,IAA+B5sG,MAAM,CAACumG,QAA9D,IAA0EvmG,MAAM,CAACooC,MAAP,CAAcq/D,OAA5F,EAAqG;AACnG;AACD;;AAEDznG,EAAAA,MAAM,CAACA,MAAM,CAACooC,MAAP,CAAcsmE,iBAAd,KAAoC,WAApC,GAAkD,IAAlD,GAAyD,WAA1D,CAAN,CAA6EzwG,KAA7E,CAAmF++D,MAAnF,GAA4F,EAA5F;AACD;;;;;;;;;;;;;;ACRD;;AACA;;;;eACe;AACb44C,EAAAA,SAAS,EAATA,kBADa;AAEbnI,EAAAA,aAAa,EAAbA;AAFa;;;;;;;;;;;;;;;ACFf;;AACA;;;;AACe,SAASmI,SAAT,CAAmBC,OAAnB,EAA4B50G,GAA5B,EAAiC60G,MAAjC,EAAyCC,KAAzC,EAAgDC,gBAAhD,EAAkEzxF,QAAlE,EAA4E;AACzF,MAAMlnB,MAAM,GAAG,2BAAf;AACA,MAAIkK,KAAJ;;AAEA,WAAS0uG,OAAT,GAAmB;AACjB,QAAI1xF,QAAJ,EAAcA,QAAQ;AACvB;;AAED,MAAM2xF,SAAS,GAAG,kBAAEL,OAAF,EAAW34G,MAAX,CAAkB,SAAlB,EAA6B,CAA7B,CAAlB;;AAEA,MAAI,CAACg5G,SAAD,KAAe,CAACL,OAAO,CAACtvF,QAAT,IAAqB,CAACyvF,gBAArC,CAAJ,EAA4D;AAC1D,QAAI/0G,GAAJ,EAAS;AACPsG,MAAAA,KAAK,GAAG,IAAIlK,MAAM,CAACymG,KAAX,EAAR;AACAv8F,MAAAA,KAAK,CAAC4uG,MAAN,GAAeF,OAAf;AACA1uG,MAAAA,KAAK,CAAC6uG,OAAN,GAAgBH,OAAhB;;AAEA,UAAIF,KAAJ,EAAW;AACTxuG,QAAAA,KAAK,CAACwuG,KAAN,GAAcA,KAAd;AACD;;AAED,UAAID,MAAJ,EAAY;AACVvuG,QAAAA,KAAK,CAACuuG,MAAN,GAAeA,MAAf;AACD;;AAED,UAAI70G,GAAJ,EAAS;AACPsG,QAAAA,KAAK,CAACtG,GAAN,GAAYA,GAAZ;AACD;AACF,KAhBD,MAgBO;AACLg1G,MAAAA,OAAO;AACR;AACF,GApBD,MAoBO;AACL;AACAA,IAAAA,OAAO;AACR;AACF;;;;;;;;;;;;;;ACpCc,SAASxI,aAAT,GAAyB;AACtC,MAAMztG,MAAM,GAAG,IAAf;AACAA,EAAAA,MAAM,CAAC6qG,YAAP,GAAsB7qG,MAAM,CAAC8kG,GAAP,CAAW7G,IAAX,CAAgB,KAAhB,CAAtB;;AAEA,WAASgY,OAAT,GAAmB;AACjB,QAAI,OAAOj2G,MAAP,KAAkB,WAAlB,IAAiCA,MAAM,KAAK,IAA5C,IAAoD,CAACA,MAArD,IAA+DA,MAAM,CAACmsG,SAA1E,EAAqF;AACrF,QAAInsG,MAAM,CAAC8qG,YAAP,KAAwBlxG,SAA5B,EAAuCoG,MAAM,CAAC8qG,YAAP,IAAuB,CAAvB;;AAEvC,QAAI9qG,MAAM,CAAC8qG,YAAP,KAAwB9qG,MAAM,CAAC6qG,YAAP,CAAoBhxG,MAAhD,EAAwD;AACtD,UAAImG,MAAM,CAACooC,MAAP,CAAc0oE,mBAAlB,EAAuC9wG,MAAM,CAACgV,MAAP;AACvChV,MAAAA,MAAM,CAACimG,IAAP,CAAY,aAAZ;AACD;AACF;;AAED,OAAK,IAAI5rG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2F,MAAM,CAAC6qG,YAAP,CAAoBhxG,MAAxC,EAAgDQ,CAAC,IAAI,CAArD,EAAwD;AACtD,QAAMw7G,OAAO,GAAG71G,MAAM,CAAC6qG,YAAP,CAAoBxwG,CAApB,CAAhB;AACA2F,IAAAA,MAAM,CAAC41G,SAAP,CAAiBC,OAAjB,EAA0BA,OAAO,CAACQ,UAAR,IAAsBR,OAAO,CAACz8G,YAAR,CAAqB,KAArB,CAAhD,EAA6Ey8G,OAAO,CAACC,MAAR,IAAkBD,OAAO,CAACz8G,YAAR,CAAqB,QAArB,CAA/F,EAA+Hy8G,OAAO,CAACE,KAAR,IAAiBF,OAAO,CAACz8G,YAAR,CAAqB,OAArB,CAAhJ,EAA+K,IAA/K,EAAqL68G,OAArL;AACD;AACF;;;;;;;;;;;;;;AClBD;;AACA;;AACA;;;;eACe;AACb9P,EAAAA,UAAU,EAAVA,mBADa;AAEbwO,EAAAA,OAAO,EAAPA,gBAFa;AAGbzO,EAAAA,WAAW,EAAXA;AAHa;;;;;;;;;;;;;;;ACHf;;AACA;;;;AACe,SAASC,UAAT,GAAsB;AACnC,MAAMnmG,MAAM,GAAG,IAAf;AACA,MAAM3H,QAAQ,GAAG,6BAAjB;AACA,MACE+vC,MADF,GAGIpoC,MAHJ,CACEooC,MADF;AAAA,MAEEglE,UAFF,GAGIptG,MAHJ,CAEEotG,UAFF,CAHmC,CAMvB;;AAEZ,MAAMkJ,SAAS,GAAGlJ,UAAU,CAACpwG,QAAX,GAAsBnD,MAAtB,GAA+B,CAA/B,GAAmC,kBAAEuzG,UAAU,CAACpwG,QAAX,GAAsB,CAAtB,EAAyB2kB,UAA3B,CAAnC,GAA4EyrF,UAA9F;AACAkJ,EAAAA,SAAS,CAACt5G,QAAV,YAAuBorC,MAAM,CAACojE,UAA9B,cAA4CpjE,MAAM,CAACupE,mBAAnD,GAA0Et9F,MAA1E;AACA,MAAIpB,MAAM,GAAGqjG,SAAS,CAACt5G,QAAV,YAAuBorC,MAAM,CAACojE,UAA9B,EAAb;;AAEA,MAAIpjE,MAAM,CAAC4oE,sBAAX,EAAmC;AACjC,QAAMuF,cAAc,GAAGnuE,MAAM,CAACinE,cAAP,GAAwBp8F,MAAM,CAACpZ,MAAP,GAAgBuuC,MAAM,CAACinE,cAAtE;;AAEA,QAAIkH,cAAc,KAAKnuE,MAAM,CAACinE,cAA9B,EAA8C;AAC5C,WAAK,IAAIh1G,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGk8G,cAApB,EAAoCl8G,CAAC,IAAI,CAAzC,EAA4C;AAC1C,YAAMm8G,SAAS,GAAG,kBAAEn+G,QAAQ,CAAC0G,aAAT,CAAuB,KAAvB,CAAF,EAAiC8hB,QAAjC,WAA6CunB,MAAM,CAACojE,UAApD,cAAkEpjE,MAAM,CAACqpE,eAAzE,EAAlB;AACA6E,QAAAA,SAAS,CAACpZ,MAAV,CAAiBsZ,SAAjB;AACD;;AAEDvjG,MAAAA,MAAM,GAAGqjG,SAAS,CAACt5G,QAAV,YAAuBorC,MAAM,CAACojE,UAA9B,EAAT;AACD;AACF;;AAED,MAAIpjE,MAAM,CAACu9D,aAAP,KAAyB,MAAzB,IAAmC,CAACv9D,MAAM,CAACy8D,YAA/C,EAA6Dz8D,MAAM,CAACy8D,YAAP,GAAsB5xF,MAAM,CAACpZ,MAA7B;AAC7DmG,EAAAA,MAAM,CAAC6kG,YAAP,GAAsBjoG,IAAI,CAAC+1C,IAAL,CAAUznC,UAAU,CAACk9B,MAAM,CAACy8D,YAAP,IAAuBz8D,MAAM,CAACu9D,aAA/B,EAA8C,EAA9C,CAApB,CAAtB;AACA3lG,EAAAA,MAAM,CAAC6kG,YAAP,IAAuBz8D,MAAM,CAAC2oE,oBAA9B;;AAEA,MAAI/wG,MAAM,CAAC6kG,YAAP,GAAsB5xF,MAAM,CAACpZ,MAAjC,EAAyC;AACvCmG,IAAAA,MAAM,CAAC6kG,YAAP,GAAsB5xF,MAAM,CAACpZ,MAA7B;AACD;;AAED,MAAM48G,aAAa,GAAG,EAAtB;AACA,MAAMC,YAAY,GAAG,EAArB;AACAzjG,EAAAA,MAAM,CAACihE,IAAP,CAAY,UAAChvC,EAAD,EAAKzpC,KAAL,EAAe;AACzB,QAAM4X,KAAK,GAAG,kBAAE6xB,EAAF,CAAd;;AAEA,QAAIzpC,KAAK,GAAGuE,MAAM,CAAC6kG,YAAnB,EAAiC;AAC/B6R,MAAAA,YAAY,CAACt6G,IAAb,CAAkB8oC,EAAlB;AACD;;AAED,QAAIzpC,KAAK,GAAGwX,MAAM,CAACpZ,MAAf,IAAyB4B,KAAK,IAAIwX,MAAM,CAACpZ,MAAP,GAAgBmG,MAAM,CAAC6kG,YAA7D,EAA2E;AACzE4R,MAAAA,aAAa,CAACr6G,IAAd,CAAmB8oC,EAAnB;AACD;;AAED7xB,IAAAA,KAAK,CAACknF,IAAN,CAAW,yBAAX,EAAsC9+F,KAAtC;AACD,GAZD;;AAcA,OAAK,IAAIpB,EAAC,GAAG,CAAb,EAAgBA,EAAC,GAAGq8G,YAAY,CAAC78G,MAAjC,EAAyCQ,EAAC,IAAI,CAA9C,EAAiD;AAC/Ci8G,IAAAA,SAAS,CAACpZ,MAAV,CAAiB,kBAAEwZ,YAAY,CAACr8G,EAAD,CAAZ,CAAgBojG,SAAhB,CAA0B,IAA1B,CAAF,EAAmC58E,QAAnC,CAA4CunB,MAAM,CAACupE,mBAAnD,CAAjB;AACD;;AAED,OAAK,IAAIt3G,GAAC,GAAGo8G,aAAa,CAAC58G,MAAd,GAAuB,CAApC,EAAuCQ,GAAC,IAAI,CAA5C,EAA+CA,GAAC,IAAI,CAApD,EAAuD;AACrDi8G,IAAAA,SAAS,CAAC/Y,OAAV,CAAkB,kBAAEkZ,aAAa,CAACp8G,GAAD,CAAb,CAAiBojG,SAAjB,CAA2B,IAA3B,CAAF,EAAoC58E,QAApC,CAA6CunB,MAAM,CAACupE,mBAApD,CAAlB;AACD;AACF;;;;;;;;;;;;;;AC1Dc,SAASzL,WAAT,GAAuB;AACpC,MAAMlmG,MAAM,GAAG,IAAf;AACA,MACEotG,UADF,GAIIptG,MAJJ,CACEotG,UADF;AAAA,MAEEhlE,MAFF,GAIIpoC,MAJJ,CAEEooC,MAFF;AAAA,MAGEn1B,MAHF,GAIIjT,MAJJ,CAGEiT,MAHF;AAKAm6F,EAAAA,UAAU,CAACpwG,QAAX,YAAwBorC,MAAM,CAACojE,UAA/B,cAA6CpjE,MAAM,CAACupE,mBAApD,eAA4EvpE,MAAM,CAACojE,UAAnF,cAAiGpjE,MAAM,CAACqpE,eAAxG,GAA2Hp9F,MAA3H;AACApB,EAAAA,MAAM,CAACynF,UAAP,CAAkB,yBAAlB;AACD;;;;;;;;;;;;;;ACTc,SAASia,OAAT,GAAmB;AAChC,MAAM30G,MAAM,GAAG,IAAf;AACAA,EAAAA,MAAM,CAACimG,IAAP,CAAY,eAAZ;AACA,MACE/yF,WADF,GAQIlT,MARJ,CACEkT,WADF;AAAA,MAEED,MAFF,GAQIjT,MARJ,CAEEiT,MAFF;AAAA,MAGE4xF,YAHF,GAQI7kG,MARJ,CAGE6kG,YAHF;AAAA,MAIEmB,cAJF,GAQIhmG,MARJ,CAIEgmG,cAJF;AAAA,MAKED,cALF,GAQI/lG,MARJ,CAKE+lG,cALF;AAAA,MAMEc,QANF,GAQI7mG,MARJ,CAME6mG,QANF;AAAA,MAOgBrqC,GAPhB,GAQIx8D,MARJ,CAOEwsG,YAPF;AASA,MAAImK,QAAJ;AACA32G,EAAAA,MAAM,CAACgmG,cAAP,GAAwB,IAAxB;AACAhmG,EAAAA,MAAM,CAAC+lG,cAAP,GAAwB,IAAxB;AACA,MAAM6Q,aAAa,GAAG,CAAC/P,QAAQ,CAAC3zF,WAAD,CAA/B;AACA,MAAM4/B,IAAI,GAAG8jE,aAAa,GAAG52G,MAAM,CAAC40G,YAAP,EAA7B,CAhBgC,CAgBoB;;AAEpD,MAAI1hG,WAAW,GAAG2xF,YAAlB,EAAgC;AAC9B8R,IAAAA,QAAQ,GAAG1jG,MAAM,CAACpZ,MAAP,GAAgBgrG,YAAY,GAAG,CAA/B,GAAmC3xF,WAA9C;AACAyjG,IAAAA,QAAQ,IAAI9R,YAAZ;AACA,QAAMgS,YAAY,GAAG72G,MAAM,CAAC0T,OAAP,CAAeijG,QAAf,EAAyB,CAAzB,EAA4B,KAA5B,EAAmC,IAAnC,CAArB;;AAEA,QAAIE,YAAY,IAAI/jE,IAAI,KAAK,CAA7B,EAAgC;AAC9B9yC,MAAAA,MAAM,CAACssG,YAAP,CAAoB,CAAC9vC,GAAG,GAAG,CAACx8D,MAAM,CAACiwD,SAAX,GAAuBjwD,MAAM,CAACiwD,SAAlC,IAA+Cnd,IAAnE;AACD;AACF,GARD,MAQO,IAAI5/B,WAAW,IAAID,MAAM,CAACpZ,MAAP,GAAgBgrG,YAAnC,EAAiD;AACtD;AACA8R,IAAAA,QAAQ,GAAG,CAAC1jG,MAAM,CAACpZ,MAAR,GAAiBqZ,WAAjB,GAA+B2xF,YAA1C;AACA8R,IAAAA,QAAQ,IAAI9R,YAAZ;;AACA,QAAMgS,aAAY,GAAG72G,MAAM,CAAC0T,OAAP,CAAeijG,QAAf,EAAyB,CAAzB,EAA4B,KAA5B,EAAmC,IAAnC,CAArB;;AAEA,QAAIE,aAAY,IAAI/jE,IAAI,KAAK,CAA7B,EAAgC;AAC9B9yC,MAAAA,MAAM,CAACssG,YAAP,CAAoB,CAAC9vC,GAAG,GAAG,CAACx8D,MAAM,CAACiwD,SAAX,GAAuBjwD,MAAM,CAACiwD,SAAlC,IAA+Cnd,IAAnE;AACD;AACF;;AAED9yC,EAAAA,MAAM,CAACgmG,cAAP,GAAwBA,cAAxB;AACAhmG,EAAAA,MAAM,CAAC+lG,cAAP,GAAwBA,cAAxB;AACA/lG,EAAAA,MAAM,CAACimG,IAAP,CAAY,SAAZ;AACD;;;;;;;;;;;;;;ACxCD;;;;AACe,SAAS6Q,kBAAT,CAA4B1uE,MAA5B,EAAoCsgE,gBAApC,EAAsD;AACnE,SAAO,SAASE,YAAT,CAAsBxpF,GAAtB,EAA2B;AAChC,QAAIA,GAAG,KAAK,KAAK,CAAjB,EAAoB;AAClBA,MAAAA,GAAG,GAAG,EAAN;AACD;;AAED,QAAM23F,eAAe,GAAG7vG,MAAM,CAACC,IAAP,CAAYiY,GAAZ,EAAiB,CAAjB,CAAxB;AACA,QAAM43F,YAAY,GAAG53F,GAAG,CAAC23F,eAAD,CAAxB;;AAEA,QAAI,QAAOC,YAAP,MAAwB,QAAxB,IAAoCA,YAAY,KAAK,IAAzD,EAA+D;AAC7D,yBAAOtO,gBAAP,EAAyBtpF,GAAzB;AACA;AACD;;AAED,QAAI,CAAC,YAAD,EAAe,YAAf,EAA6B,WAA7B,EAA0Cle,OAA1C,CAAkD61G,eAAlD,KAAsE,CAAtE,IAA2E3uE,MAAM,CAAC2uE,eAAD,CAAN,KAA4B,IAA3G,EAAiH;AAC/G3uE,MAAAA,MAAM,CAAC2uE,eAAD,CAAN,GAA0B;AACxBE,QAAAA,IAAI,EAAE;AADkB,OAA1B;AAGD;;AAED,QAAI,EAAEF,eAAe,IAAI3uE,MAAnB,IAA6B,aAAa4uE,YAA5C,CAAJ,EAA+D;AAC7D,yBAAOtO,gBAAP,EAAyBtpF,GAAzB;AACA;AACD;;AAED,QAAIgpB,MAAM,CAAC2uE,eAAD,CAAN,KAA4B,IAAhC,EAAsC;AACpC3uE,MAAAA,MAAM,CAAC2uE,eAAD,CAAN,GAA0B;AACxBz7G,QAAAA,OAAO,EAAE;AADe,OAA1B;AAGD;;AAED,QAAI,QAAO8sC,MAAM,CAAC2uE,eAAD,CAAb,MAAmC,QAAnC,IAA+C,EAAE,aAAa3uE,MAAM,CAAC2uE,eAAD,CAArB,CAAnD,EAA4F;AAC1F3uE,MAAAA,MAAM,CAAC2uE,eAAD,CAAN,CAAwBz7G,OAAxB,GAAkC,IAAlC;AACD;;AAED,QAAI,CAAC8sC,MAAM,CAAC2uE,eAAD,CAAX,EAA8B3uE,MAAM,CAAC2uE,eAAD,CAAN,GAA0B;AACtDz7G,MAAAA,OAAO,EAAE;AAD6C,KAA1B;AAG9B,uBAAOotG,gBAAP,EAAyBtpF,GAAzB;AACD,GAtCD;AAuCD;;;;;;;;;;;;;;ACzCD;;AACe,SAASqvF,QAAT,CAAkByI,IAAlB,EAAwB;AACrC,MACEl3G,MADF,GAKIk3G,IALJ,CACEl3G,MADF;AAAA,MAEE4oG,YAFF,GAKIsO,IALJ,CAEEtO,YAFF;AAAA,MAGE7lG,EAHF,GAKIm0G,IALJ,CAGEn0G,EAHF;AAAA,MAIEkjG,IAJF,GAKIiR,IALJ,CAIEjR,IAJF;AAMA,MAAMkR,SAAS,GAAG,EAAlB;AACA,MAAM95G,MAAM,GAAG,2BAAf;;AAEA,MAAMoxC,MAAM,GAAG,SAATA,MAAS,CAAUv/B,MAAV,EAAkBhU,OAAlB,EAA2B;AACxC,QAAIA,OAAO,KAAK,KAAK,CAArB,EAAwB;AACtBA,MAAAA,OAAO,GAAG,EAAV;AACD;;AAED,QAAMk8G,YAAY,GAAG/5G,MAAM,CAACuc,gBAAP,IAA2Bvc,MAAM,CAACg6G,sBAAvD;AACA,QAAM5zG,QAAQ,GAAG,IAAI2zG,YAAJ,CAAiB,UAAAv9F,SAAS,EAAI;AAC7C;AACA;AACA;AACA,UAAIA,SAAS,CAAChgB,MAAV,KAAqB,CAAzB,EAA4B;AAC1BosG,QAAAA,IAAI,CAAC,gBAAD,EAAmBpsF,SAAS,CAAC,CAAD,CAA5B,CAAJ;AACA;AACD;;AAED,UAAMy9F,cAAc,GAAG,SAASA,cAAT,GAA0B;AAC/CrR,QAAAA,IAAI,CAAC,gBAAD,EAAmBpsF,SAAS,CAAC,CAAD,CAA5B,CAAJ;AACD,OAFD;;AAIA,UAAIxc,MAAM,CAACqN,qBAAX,EAAkC;AAChCrN,QAAAA,MAAM,CAACqN,qBAAP,CAA6B4sG,cAA7B;AACD,OAFD,MAEO;AACLj6G,QAAAA,MAAM,CAAC+D,UAAP,CAAkBk2G,cAAlB,EAAkC,CAAlC;AACD;AACF,KAlBgB,CAAjB;AAmBA7zG,IAAAA,QAAQ,CAACgB,OAAT,CAAiByK,MAAjB,EAAyB;AACvB4rF,MAAAA,UAAU,EAAE,OAAO5/F,OAAO,CAAC4/F,UAAf,KAA8B,WAA9B,GAA4C,IAA5C,GAAmD5/F,OAAO,CAAC4/F,UADhD;AAEvB3gF,MAAAA,SAAS,EAAE,OAAOjf,OAAO,CAACif,SAAf,KAA6B,WAA7B,GAA2C,IAA3C,GAAkDjf,OAAO,CAACif,SAF9C;AAGvBmoF,MAAAA,aAAa,EAAE,OAAOpnG,OAAO,CAAConG,aAAf,KAAiC,WAAjC,GAA+C,IAA/C,GAAsDpnG,OAAO,CAAConG;AAHtD,KAAzB;AAKA6U,IAAAA,SAAS,CAAC/6G,IAAV,CAAeqH,QAAf;AACD,GA/BD;;AAiCA,MAAM5B,IAAI,GAAG,SAAPA,IAAO,GAAM;AACjB,QAAI,CAAC7B,MAAM,CAACooC,MAAP,CAAc3kC,QAAnB,EAA6B;;AAE7B,QAAIzD,MAAM,CAACooC,MAAP,CAAcmvE,cAAlB,EAAkC;AAChC,UAAMC,gBAAgB,GAAGx3G,MAAM,CAAC8kG,GAAP,CAAWpJ,OAAX,EAAzB;;AAEA,WAAK,IAAIrhG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGm9G,gBAAgB,CAAC39G,MAArC,EAA6CQ,CAAC,IAAI,CAAlD,EAAqD;AACnDo0C,QAAAA,MAAM,CAAC+oE,gBAAgB,CAACn9G,CAAD,CAAjB,CAAN;AACD;AACF,KATgB,CASf;;;AAGFo0C,IAAAA,MAAM,CAACzuC,MAAM,CAAC8kG,GAAP,CAAW,CAAX,CAAD,EAAgB;AACpB3qF,MAAAA,SAAS,EAAEna,MAAM,CAACooC,MAAP,CAAcqvE;AADL,KAAhB,CAAN,CAZiB,CAcb;;AAEJhpE,IAAAA,MAAM,CAACzuC,MAAM,CAACotG,UAAP,CAAkB,CAAlB,CAAD,EAAuB;AAC3BtS,MAAAA,UAAU,EAAE;AADe,KAAvB,CAAN;AAGD,GAnBD;;AAqBA,MAAMx4F,OAAO,GAAG,SAAVA,OAAU,GAAM;AACpB60G,IAAAA,SAAS,CAAC54G,OAAV,CAAkB,UAAAkF,QAAQ,EAAI;AAC5BA,MAAAA,QAAQ,CAAC0qC,UAAT;AACD,KAFD;AAGAgpE,IAAAA,SAAS,CAACj0F,MAAV,CAAiB,CAAjB,EAAoBi0F,SAAS,CAACt9G,MAA9B;AACD,GALD;;AAOA+uG,EAAAA,YAAY,CAAC;AACXnlG,IAAAA,QAAQ,EAAE,KADC;AAEX8zG,IAAAA,cAAc,EAAE,KAFL;AAGXE,IAAAA,oBAAoB,EAAE;AAHX,GAAD,CAAZ;AAKA10G,EAAAA,EAAE,CAAC,MAAD,EAASlB,IAAT,CAAF;AACAkB,EAAAA,EAAE,CAAC,SAAD,EAAYT,OAAZ,CAAF;AACD;;;;;;;;;;;;;;AC/ED;;AACe,SAASksG,MAAT,CAAgB0I,IAAhB,EAAsB;AACnC,MACEl3G,MADF,GAIIk3G,IAJJ,CACEl3G,MADF;AAAA,MAEE+C,EAFF,GAIIm0G,IAJJ,CAEEn0G,EAFF;AAAA,MAGEkjG,IAHF,GAIIiR,IAJJ,CAGEjR,IAHF;AAKA,MAAM5oG,MAAM,GAAG,2BAAf;AACA,MAAIoG,QAAQ,GAAG,IAAf;AACA,MAAIi0G,cAAc,GAAG,IAArB;;AAEA,MAAMC,aAAa,GAAG,SAAhBA,aAAgB,GAAM;AAC1B,QAAI,CAAC33G,MAAD,IAAWA,MAAM,CAACmsG,SAAlB,IAA+B,CAACnsG,MAAM,CAAC4kG,WAA3C,EAAwD;AACxDqB,IAAAA,IAAI,CAAC,cAAD,CAAJ;AACAA,IAAAA,IAAI,CAAC,QAAD,CAAJ;AACD,GAJD;;AAMA,MAAM2R,cAAc,GAAG,SAAjBA,cAAiB,GAAM;AAC3B,QAAI,CAAC53G,MAAD,IAAWA,MAAM,CAACmsG,SAAlB,IAA+B,CAACnsG,MAAM,CAAC4kG,WAA3C,EAAwD;AACxDnhG,IAAAA,QAAQ,GAAG,IAAI2D,cAAJ,CAAmB,UAAAzD,OAAO,EAAI;AACvC+zG,MAAAA,cAAc,GAAGr6G,MAAM,CAACqN,qBAAP,CAA6B,YAAM;AAClD,YACE1M,KADF,GAGIgC,MAHJ,CACEhC,KADF;AAAA,YAEED,MAFF,GAGIiC,MAHJ,CAEEjC,MAFF;AAIA,YAAIwrC,QAAQ,GAAGvrC,KAAf;AACA,YAAIwrC,SAAS,GAAGzrC,MAAhB;AACA4F,QAAAA,OAAO,CAACpF,OAAR,CAAgB,UAAAs5G,KAAK,EAAI;AACvB,cACEC,cADF,GAIID,KAJJ,CACEC,cADF;AAAA,cAEE7pE,WAFF,GAII4pE,KAJJ,CAEE5pE,WAFF;AAAA,cAGE/+B,MAHF,GAII2oG,KAJJ,CAGE3oG,MAHF;AAKA,cAAIA,MAAM,IAAIA,MAAM,KAAKlP,MAAM,CAACklC,EAAhC,EAAoC;AACpCqE,UAAAA,QAAQ,GAAG0E,WAAW,GAAGA,WAAW,CAACjwC,KAAf,GAAuB,CAAC85G,cAAc,CAAC,CAAD,CAAd,IAAqBA,cAAtB,EAAsCC,UAAnF;AACAvuE,UAAAA,SAAS,GAAGyE,WAAW,GAAGA,WAAW,CAAClwC,MAAf,GAAwB,CAAC+5G,cAAc,CAAC,CAAD,CAAd,IAAqBA,cAAtB,EAAsCE,SAArF;AACD,SATD;;AAWA,YAAIzuE,QAAQ,KAAKvrC,KAAb,IAAsBwrC,SAAS,KAAKzrC,MAAxC,EAAgD;AAC9C45G,UAAAA,aAAa;AACd;AACF,OArBgB,CAAjB;AAsBD,KAvBU,CAAX;AAwBAl0G,IAAAA,QAAQ,CAACgB,OAAT,CAAiBzE,MAAM,CAACklC,EAAxB;AACD,GA3BD;;AA6BA,MAAM+yE,cAAc,GAAG,SAAjBA,cAAiB,GAAM;AAC3B,QAAIP,cAAJ,EAAoB;AAClBr6G,MAAAA,MAAM,CAACqiG,oBAAP,CAA4BgY,cAA5B;AACD;;AAED,QAAIj0G,QAAQ,IAAIA,QAAQ,CAACy0G,SAArB,IAAkCl4G,MAAM,CAACklC,EAA7C,EAAiD;AAC/CzhC,MAAAA,QAAQ,CAACy0G,SAAT,CAAmBl4G,MAAM,CAACklC,EAA1B;AACAzhC,MAAAA,QAAQ,GAAG,IAAX;AACD;AACF,GATD;;AAWA,MAAM00G,wBAAwB,GAAG,SAA3BA,wBAA2B,GAAM;AACrC,QAAI,CAACn4G,MAAD,IAAWA,MAAM,CAACmsG,SAAlB,IAA+B,CAACnsG,MAAM,CAAC4kG,WAA3C,EAAwD;AACxDqB,IAAAA,IAAI,CAAC,mBAAD,CAAJ;AACD,GAHD;;AAKAljG,EAAAA,EAAE,CAAC,MAAD,EAAS,YAAM;AACf,QAAI/C,MAAM,CAACooC,MAAP,CAAcwmE,cAAd,IAAgC,OAAOvxG,MAAM,CAAC+J,cAAd,KAAiC,WAArE,EAAkF;AAChFwwG,MAAAA,cAAc;AACd;AACD;;AAEDv6G,IAAAA,MAAM,CAACC,gBAAP,CAAwB,QAAxB,EAAkCq6G,aAAlC;AACAt6G,IAAAA,MAAM,CAACC,gBAAP,CAAwB,mBAAxB,EAA6C66G,wBAA7C;AACD,GARC,CAAF;AASAp1G,EAAAA,EAAE,CAAC,SAAD,EAAY,YAAM;AAClBk1G,IAAAA,cAAc;AACd56G,IAAAA,MAAM,CAACsO,mBAAP,CAA2B,QAA3B,EAAqCgsG,aAArC;AACAt6G,IAAAA,MAAM,CAACsO,mBAAP,CAA2B,mBAA3B,EAAgDwsG,wBAAhD;AACD,GAJC,CAAF;AAKD;;;;;;;;;;;;;;AC5ED;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;eACe;AACbzkG,EAAAA,OAAO,EAAPA,gBADa;AAEb0kG,EAAAA,WAAW,EAAXA,oBAFa;AAGbC,EAAAA,SAAS,EAATA,kBAHa;AAIbC,EAAAA,SAAS,EAATA,kBAJa;AAKbC,EAAAA,UAAU,EAAVA,mBALa;AAMbC,EAAAA,cAAc,EAAdA,uBANa;AAOb3H,EAAAA,mBAAmB,EAAnBA;AAPa;;;;;;;;;;;;;;;ACPf;AACe,SAASwH,SAAT,CAAmBj4G,KAAnB,EAA0Bq4G,YAA1B,EAAwCC,QAAxC,EAAkD;AAC/D,MAAIt4G,KAAK,KAAK,KAAK,CAAnB,EAAsB;AACpBA,IAAAA,KAAK,GAAG,KAAKgoC,MAAL,CAAYhoC,KAApB;AACD;;AAED,MAAIq4G,YAAY,KAAK,KAAK,CAA1B,EAA6B;AAC3BA,IAAAA,YAAY,GAAG,IAAf;AACD;;AAED,MAAMz4G,MAAM,GAAG,IAAf;AACA,MACEs/F,SADF,GAIIt/F,MAJJ,CACEs/F,SADF;AAAA,MAEEhkG,OAFF,GAII0E,MAJJ,CAEE1E,OAFF;AAAA,MAGE8sC,MAHF,GAIIpoC,MAJJ,CAGEooC,MAHF;AAKA,MAAI,CAAC9sC,OAAL,EAAc,OAAO0E,MAAP;AACd,MAAI24G,QAAQ,GAAGvwE,MAAM,CAACinE,cAAtB;;AAEA,MAAIjnE,MAAM,CAACu9D,aAAP,KAAyB,MAAzB,IAAmCv9D,MAAM,CAACinE,cAAP,KAA0B,CAA7D,IAAkEjnE,MAAM,CAACmnE,kBAA7E,EAAiG;AAC/FoJ,IAAAA,QAAQ,GAAG/7G,IAAI,CAAC0H,GAAL,CAAStE,MAAM,CAAC44G,oBAAP,CAA4B,SAA5B,EAAuC,IAAvC,CAAT,EAAuD,CAAvD,CAAX;AACD;;AAED,MAAMzlE,SAAS,GAAGnzC,MAAM,CAACkT,WAAP,GAAqBk1B,MAAM,CAACknE,kBAA5B,GAAiD,CAAjD,GAAqDqJ,QAAvE;;AAEA,MAAIvwE,MAAM,CAACjoC,IAAX,EAAiB;AACf,QAAIm/F,SAAS,IAAIl3D,MAAM,CAAC6oE,iBAAxB,EAA2C,OAAO,KAAP;AAC3CjxG,IAAAA,MAAM,CAAC20G,OAAP,GAFe,CAEG;;AAElB30G,IAAAA,MAAM,CAAC64G,WAAP,GAAqB74G,MAAM,CAACotG,UAAP,CAAkB,CAAlB,EAAqB3Q,UAA1C;AACD;;AAED,MAAIr0D,MAAM,CAAC8oE,MAAP,IAAiBlxG,MAAM,CAAC8mG,KAA5B,EAAmC;AACjC,WAAO9mG,MAAM,CAAC0T,OAAP,CAAe,CAAf,EAAkBtT,KAAlB,EAAyBq4G,YAAzB,EAAuCC,QAAvC,CAAP;AACD;;AAED,SAAO14G,MAAM,CAAC0T,OAAP,CAAe1T,MAAM,CAACkT,WAAP,GAAqBigC,SAApC,EAA+C/yC,KAA/C,EAAsDq4G,YAAtD,EAAoEC,QAApE,CAAP;AACD;;;;;;;;;;;;;;ACrCD;AACe,SAASJ,SAAT,CAAmBl4G,KAAnB,EAA0Bq4G,YAA1B,EAAwCC,QAAxC,EAAkD;AAC/D,MAAIt4G,KAAK,KAAK,KAAK,CAAnB,EAAsB;AACpBA,IAAAA,KAAK,GAAG,KAAKgoC,MAAL,CAAYhoC,KAApB;AACD;;AAED,MAAIq4G,YAAY,KAAK,KAAK,CAA1B,EAA6B;AAC3BA,IAAAA,YAAY,GAAG,IAAf;AACD;;AAED,MAAMz4G,MAAM,GAAG,IAAf;AACA,MACEooC,MADF,GAOIpoC,MAPJ,CACEooC,MADF;AAAA,MAEEk3D,SAFF,GAOIt/F,MAPJ,CAEEs/F,SAFF;AAAA,MAGEuH,QAHF,GAOI7mG,MAPJ,CAGE6mG,QAHF;AAAA,MAIEF,UAJF,GAOI3mG,MAPJ,CAIE2mG,UAJF;AAAA,MAKE6F,YALF,GAOIxsG,MAPJ,CAKEwsG,YALF;AAAA,MAMElxG,OANF,GAOI0E,MAPJ,CAME1E,OANF;AAQA,MAAI,CAACA,OAAL,EAAc,OAAO0E,MAAP;;AAEd,MAAIooC,MAAM,CAACjoC,IAAX,EAAiB;AACf,QAAIm/F,SAAS,IAAIl3D,MAAM,CAAC6oE,iBAAxB,EAA2C,OAAO,KAAP;AAC3CjxG,IAAAA,MAAM,CAAC20G,OAAP,GAFe,CAEG;;AAElB30G,IAAAA,MAAM,CAAC64G,WAAP,GAAqB74G,MAAM,CAACotG,UAAP,CAAkB,CAAlB,EAAqB3Q,UAA1C;AACD;;AAED,MAAMxsC,SAAS,GAAGu8C,YAAY,GAAGxsG,MAAM,CAACiwD,SAAV,GAAsB,CAACjwD,MAAM,CAACiwD,SAA5D;;AAEA,WAAS2hB,SAAT,CAAmB5mE,GAAnB,EAAwB;AACtB,QAAIA,GAAG,GAAG,CAAV,EAAa,OAAO,CAACpO,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACs5B,GAAL,CAASlrB,GAAT,CAAX,CAAR;AACb,WAAOpO,IAAI,CAACC,KAAL,CAAWmO,GAAX,CAAP;AACD;;AAED,MAAM8tG,mBAAmB,GAAGlnC,SAAS,CAAC3hB,SAAD,CAArC;AACA,MAAM8oD,kBAAkB,GAAGlS,QAAQ,CAAC1sG,GAAT,CAAa,UAAA6Q,GAAG;AAAA,WAAI4mE,SAAS,CAAC5mE,GAAD,CAAb;AAAA,GAAhB,CAA3B;AACA,MAAIguG,QAAQ,GAAGnS,QAAQ,CAACkS,kBAAkB,CAAC73G,OAAnB,CAA2B43G,mBAA3B,IAAkD,CAAnD,CAAvB;;AAEA,MAAI,OAAOE,QAAP,KAAoB,WAApB,IAAmC5wE,MAAM,CAACq/D,OAA9C,EAAuD;AACrD,QAAIwR,aAAJ;AACApS,IAAAA,QAAQ,CAACtoG,OAAT,CAAiB,UAAC26G,IAAD,EAAOC,SAAP,EAAqB;AACpC,UAAIL,mBAAmB,IAAII,IAA3B,EAAiC;AAC/B;AACAD,QAAAA,aAAa,GAAGE,SAAhB;AACD;AACF,KALD;;AAOA,QAAI,OAAOF,aAAP,KAAyB,WAA7B,EAA0C;AACxCD,MAAAA,QAAQ,GAAGnS,QAAQ,CAACoS,aAAa,GAAG,CAAhB,GAAoBA,aAAa,GAAG,CAApC,GAAwCA,aAAzC,CAAnB;AACD;AACF;;AAED,MAAIG,SAAS,GAAG,CAAhB;;AAEA,MAAI,OAAOJ,QAAP,KAAoB,WAAxB,EAAqC;AACnCI,IAAAA,SAAS,GAAGzS,UAAU,CAACzlG,OAAX,CAAmB83G,QAAnB,CAAZ;AACA,QAAII,SAAS,GAAG,CAAhB,EAAmBA,SAAS,GAAGp5G,MAAM,CAACkT,WAAP,GAAqB,CAAjC;;AAEnB,QAAIk1B,MAAM,CAACu9D,aAAP,KAAyB,MAAzB,IAAmCv9D,MAAM,CAACinE,cAAP,KAA0B,CAA7D,IAAkEjnE,MAAM,CAACmnE,kBAA7E,EAAiG;AAC/F6J,MAAAA,SAAS,GAAGA,SAAS,GAAGp5G,MAAM,CAAC44G,oBAAP,CAA4B,UAA5B,EAAwC,IAAxC,CAAZ,GAA4D,CAAxE;AACAQ,MAAAA,SAAS,GAAGx8G,IAAI,CAAC0H,GAAL,CAAS80G,SAAT,EAAoB,CAApB,CAAZ;AACD;AACF;;AAED,MAAIhxE,MAAM,CAAC8oE,MAAP,IAAiBlxG,MAAM,CAACkpG,WAA5B,EAAyC;AACvC,QAAM7yC,SAAS,GAAGr2D,MAAM,CAACooC,MAAP,CAAc0rE,OAAd,IAAyB9zG,MAAM,CAACooC,MAAP,CAAc0rE,OAAd,CAAsBx4G,OAA/C,IAA0D0E,MAAM,CAAC8zG,OAAjE,GAA2E9zG,MAAM,CAAC8zG,OAAP,CAAe7gG,MAAf,CAAsBpZ,MAAtB,GAA+B,CAA1G,GAA8GmG,MAAM,CAACiT,MAAP,CAAcpZ,MAAd,GAAuB,CAAvJ;AACA,WAAOmG,MAAM,CAAC0T,OAAP,CAAe2iD,SAAf,EAA0Bj2D,KAA1B,EAAiCq4G,YAAjC,EAA+CC,QAA/C,CAAP;AACD;;AAED,SAAO14G,MAAM,CAAC0T,OAAP,CAAe0lG,SAAf,EAA0Bh5G,KAA1B,EAAiCq4G,YAAjC,EAA+CC,QAA/C,CAAP;AACD;;;;;;;;;;;;;;ACvED;AACe,SAASH,UAAT,CAAoBn4G,KAApB,EAA2Bq4G,YAA3B,EAAyCC,QAAzC,EAAmD;AAChE,MAAIt4G,KAAK,KAAK,KAAK,CAAnB,EAAsB;AACpBA,IAAAA,KAAK,GAAG,KAAKgoC,MAAL,CAAYhoC,KAApB;AACD;;AAED,MAAIq4G,YAAY,KAAK,KAAK,CAA1B,EAA6B;AAC3BA,IAAAA,YAAY,GAAG,IAAf;AACD;;AAED,MAAMz4G,MAAM,GAAG,IAAf;AACA,SAAOA,MAAM,CAAC0T,OAAP,CAAe1T,MAAM,CAACkT,WAAtB,EAAmC9S,KAAnC,EAA0Cq4G,YAA1C,EAAwDC,QAAxD,CAAP;AACD;;;;;;;;;;;;;;ACZD;;;;;;AACe,SAAShlG,OAAT,CAAiBjY,KAAjB,EAAwB2E,KAAxB,EAA+Bq4G,YAA/B,EAA6CC,QAA7C,EAAuDlzF,OAAvD,EAAgE;AAC7E,MAAI/pB,KAAK,KAAK,KAAK,CAAnB,EAAsB;AACpBA,IAAAA,KAAK,GAAG,CAAR;AACD;;AAED,MAAI2E,KAAK,KAAK,KAAK,CAAnB,EAAsB;AACpBA,IAAAA,KAAK,GAAG,KAAKgoC,MAAL,CAAYhoC,KAApB;AACD;;AAED,MAAIq4G,YAAY,KAAK,KAAK,CAA1B,EAA6B;AAC3BA,IAAAA,YAAY,GAAG,IAAf;AACD;;AAED,MAAI,OAAOh9G,KAAP,KAAiB,QAAjB,IAA6B,OAAOA,KAAP,KAAiB,QAAlD,EAA4D;AAC1D,UAAM,IAAIie,KAAJ,2FAA4Fje,KAA5F,eAAN;AACD;;AAED,MAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AAC7B;AACJ;AACA;AACA;AACI,QAAM49G,aAAa,GAAGzgH,QAAQ,CAAC6C,KAAD,EAAQ,EAAR,CAA9B;AACA;AACJ;AACA;AACA;AACA;;AAEI,QAAM69G,aAAa,GAAGlxC,QAAQ,CAACixC,aAAD,CAA9B;;AAEA,QAAI,CAACC,aAAL,EAAoB;AAClB,YAAM,IAAI5/F,KAAJ,8EAAgFje,KAAhF,cAAN;AACD,KAhB4B,CAgB3B;AACF;;;AAGAA,IAAAA,KAAK,GAAG49G,aAAR;AACD;;AAED,MAAMr5G,MAAM,GAAG,IAAf;AACA,MAAIyT,UAAU,GAAGhY,KAAjB;AACA,MAAIgY,UAAU,GAAG,CAAjB,EAAoBA,UAAU,GAAG,CAAb;AACpB,MACE20B,MADF,GASIpoC,MATJ,CACEooC,MADF;AAAA,MAEEy+D,QAFF,GASI7mG,MATJ,CAEE6mG,QAFF;AAAA,MAGEF,UAHF,GASI3mG,MATJ,CAGE2mG,UAHF;AAAA,MAIE4S,aAJF,GASIv5G,MATJ,CAIEu5G,aAJF;AAAA,MAKErmG,WALF,GASIlT,MATJ,CAKEkT,WALF;AAAA,MAMgBspD,GANhB,GASIx8D,MATJ,CAMEwsG,YANF;AAAA,MAOEc,SAPF,GASIttG,MATJ,CAOEstG,SAPF;AAAA,MAQEhyG,OARF,GASI0E,MATJ,CAQE1E,OARF;;AAWA,MAAI0E,MAAM,CAACs/F,SAAP,IAAoBl3D,MAAM,CAAC0mE,8BAA3B,IAA6D,CAACxzG,OAAD,IAAY,CAACo9G,QAAb,IAAyB,CAAClzF,OAA3F,EAAoG;AAClG,WAAO,KAAP;AACD;;AAED,MAAM+V,IAAI,GAAG3+B,IAAI,CAACyH,GAAL,CAASrE,MAAM,CAACooC,MAAP,CAAcknE,kBAAvB,EAA2C77F,UAA3C,CAAb;AACA,MAAI0lG,SAAS,GAAG59E,IAAI,GAAG3+B,IAAI,CAACC,KAAL,CAAW,CAAC4W,UAAU,GAAG8nB,IAAd,IAAsBv7B,MAAM,CAACooC,MAAP,CAAcinE,cAA/C,CAAvB;AACA,MAAI8J,SAAS,IAAItS,QAAQ,CAAChtG,MAA1B,EAAkCs/G,SAAS,GAAGtS,QAAQ,CAAChtG,MAAT,GAAkB,CAA9B;;AAElC,MAAI,CAACqZ,WAAW,IAAIk1B,MAAM,CAACh2B,YAAtB,IAAsC,CAAvC,OAA+CmnG,aAAa,IAAI,CAAhE,KAAsEd,YAA1E,EAAwF;AACtFz4G,IAAAA,MAAM,CAACimG,IAAP,CAAY,wBAAZ;AACD;;AAED,MAAMh2C,SAAS,GAAG,CAAC42C,QAAQ,CAACsS,SAAD,CAA3B,CAlE6E,CAkErC;;AAExCn5G,EAAAA,MAAM,CAACqsG,cAAP,CAAsBp8C,SAAtB,EApE6E,CAoE3C;;AAElC,MAAI7nB,MAAM,CAACsnE,mBAAX,EAAgC;AAC9B,SAAK,IAAIr1G,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGssG,UAAU,CAAC9sG,MAA/B,EAAuCQ,CAAC,IAAI,CAA5C,EAA+C;AAC7C,UAAMy+G,mBAAmB,GAAG,CAACl8G,IAAI,CAACC,KAAL,CAAWozD,SAAS,GAAG,GAAvB,CAA7B;AACA,UAAMupD,cAAc,GAAG58G,IAAI,CAACC,KAAL,CAAW8pG,UAAU,CAACtsG,CAAD,CAAV,GAAgB,GAA3B,CAAvB;AACA,UAAMo/G,kBAAkB,GAAG78G,IAAI,CAACC,KAAL,CAAW8pG,UAAU,CAACtsG,CAAC,GAAG,CAAL,CAAV,GAAoB,GAA/B,CAA3B;;AAEA,UAAI,OAAOssG,UAAU,CAACtsG,CAAC,GAAG,CAAL,CAAjB,KAA6B,WAAjC,EAA8C;AAC5C,YAAIy+G,mBAAmB,IAAIU,cAAvB,IAAyCV,mBAAmB,GAAGW,kBAAkB,GAAG,CAACA,kBAAkB,GAAGD,cAAtB,IAAwC,CAAhI,EAAmI;AACjI/lG,UAAAA,UAAU,GAAGpZ,CAAb;AACD,SAFD,MAEO,IAAIy+G,mBAAmB,IAAIU,cAAvB,IAAyCV,mBAAmB,GAAGW,kBAAnE,EAAuF;AAC5FhmG,UAAAA,UAAU,GAAGpZ,CAAC,GAAG,CAAjB;AACD;AACF,OAND,MAMO,IAAIy+G,mBAAmB,IAAIU,cAA3B,EAA2C;AAChD/lG,QAAAA,UAAU,GAAGpZ,CAAb;AACD;AACF;AACF,GAtF4E,CAsF3E;;;AAGF,MAAI2F,MAAM,CAAC4kG,WAAP,IAAsBnxF,UAAU,KAAKP,WAAzC,EAAsD;AACpD,QAAI,CAAClT,MAAM,CAAC+lG,cAAR,IAA0B91C,SAAS,GAAGjwD,MAAM,CAACiwD,SAA7C,IAA0DA,SAAS,GAAGjwD,MAAM,CAACirG,YAAP,EAA1E,EAAiG;AAC/F,aAAO,KAAP;AACD;;AAED,QAAI,CAACjrG,MAAM,CAACgmG,cAAR,IAA0B/1C,SAAS,GAAGjwD,MAAM,CAACiwD,SAA7C,IAA0DA,SAAS,GAAGjwD,MAAM,CAACkrG,YAAP,EAA1E,EAAiG;AAC/F,UAAI,CAACh4F,WAAW,IAAI,CAAhB,MAAuBO,UAA3B,EAAuC,OAAO,KAAP;AACxC;AACF;;AAED,MAAIpB,SAAJ;AACA,MAAIoB,UAAU,GAAGP,WAAjB,EAA8Bb,SAAS,GAAG,MAAZ,CAA9B,KAAsD,IAAIoB,UAAU,GAAGP,WAAjB,EAA8Bb,SAAS,GAAG,MAAZ,CAA9B,KAAsDA,SAAS,GAAG,OAAZ,CApG/B,CAoGoD;;AAEjI,MAAImqD,GAAG,IAAI,CAACvM,SAAD,KAAejwD,MAAM,CAACiwD,SAA7B,IAA0C,CAACuM,GAAD,IAAQvM,SAAS,KAAKjwD,MAAM,CAACiwD,SAA3E,EAAsF;AACpFjwD,IAAAA,MAAM,CAACorG,iBAAP,CAAyB33F,UAAzB,EADoF,CAC9C;;AAEtC,QAAI20B,MAAM,CAAC31B,UAAX,EAAuB;AACrBzS,MAAAA,MAAM,CAAC2sG,gBAAP;AACD;;AAED3sG,IAAAA,MAAM,CAACqrG,mBAAP;;AAEA,QAAIjjE,MAAM,CAAC+mE,MAAP,KAAkB,OAAtB,EAA+B;AAC7BnvG,MAAAA,MAAM,CAACssG,YAAP,CAAoBr8C,SAApB;AACD;;AAED,QAAI59C,SAAS,KAAK,OAAlB,EAA2B;AACzBrS,MAAAA,MAAM,CAACoT,eAAP,CAAuBqlG,YAAvB,EAAqCpmG,SAArC;AACArS,MAAAA,MAAM,CAACwT,aAAP,CAAqBilG,YAArB,EAAmCpmG,SAAnC;AACD;;AAED,WAAO,KAAP;AACD;;AAED,MAAI+1B,MAAM,CAACq/D,OAAX,EAAoB;AAClB,QAAMiS,GAAG,GAAG15G,MAAM,CAAC63B,YAAP,EAAZ;AACA,QAAM5T,CAAC,GAAGu4C,GAAG,GAAGvM,SAAH,GAAe,CAACA,SAA7B;;AAEA,QAAI7vD,KAAK,KAAK,CAAd,EAAiB;AACf,UAAMu5G,SAAS,GAAG35G,MAAM,CAAC8zG,OAAP,IAAkB9zG,MAAM,CAACooC,MAAP,CAAc0rE,OAAd,CAAsBx4G,OAA1D;;AAEA,UAAIq+G,SAAJ,EAAe;AACb35G,QAAAA,MAAM,CAACstG,SAAP,CAAiBrvG,KAAjB,CAAuB27G,cAAvB,GAAwC,MAAxC;AACA55G,QAAAA,MAAM,CAAC65G,iBAAP,GAA2B,IAA3B;AACD;;AAEDvM,MAAAA,SAAS,CAACoM,GAAG,GAAG,YAAH,GAAkB,WAAtB,CAAT,GAA8Cz1F,CAA9C;;AAEA,UAAI01F,SAAJ,EAAe;AACbjvG,QAAAA,qBAAqB,CAAC,YAAM;AAC1B1K,UAAAA,MAAM,CAACstG,SAAP,CAAiBrvG,KAAjB,CAAuB27G,cAAvB,GAAwC,EAAxC;AACA55G,UAAAA,MAAM,CAAC85G,uBAAP,GAAiC,KAAjC;AACD,SAHoB,CAArB;AAID;AACF,KAhBD,MAgBO;AAAA;;AACL,UAAI,CAAC95G,MAAM,CAACmnG,OAAP,CAAe4S,YAApB,EAAkC;AAChC,yCAAqB;AACnB/5G,UAAAA,MAAM,EAANA,MADmB;AAEnBg6G,UAAAA,cAAc,EAAE/1F,CAFG;AAGnBvb,UAAAA,IAAI,EAAEgxG,GAAG,GAAG,MAAH,GAAY;AAHF,SAArB;AAKA,eAAO,IAAP;AACD;;AAEDpM,MAAAA,SAAS,CAAC39F,QAAV,iEACG+pG,GAAG,GAAG,MAAH,GAAY,KADlB,EAC0Bz1F,CAD1B,oDAEY,QAFZ;AAID;;AAED,WAAO,IAAP;AACD;;AAEDjkB,EAAAA,MAAM,CAAC60G,aAAP,CAAqBz0G,KAArB;AACAJ,EAAAA,MAAM,CAACssG,YAAP,CAAoBr8C,SAApB;AACAjwD,EAAAA,MAAM,CAACorG,iBAAP,CAAyB33F,UAAzB;AACAzT,EAAAA,MAAM,CAACqrG,mBAAP;AACArrG,EAAAA,MAAM,CAACimG,IAAP,CAAY,uBAAZ,EAAqC7lG,KAArC,EAA4Cs4G,QAA5C;AACA14G,EAAAA,MAAM,CAACoT,eAAP,CAAuBqlG,YAAvB,EAAqCpmG,SAArC;;AAEA,MAAIjS,KAAK,KAAK,CAAd,EAAiB;AACfJ,IAAAA,MAAM,CAACwT,aAAP,CAAqBilG,YAArB,EAAmCpmG,SAAnC;AACD,GAFD,MAEO,IAAI,CAACrS,MAAM,CAACs/F,SAAZ,EAAuB;AAC5Bt/F,IAAAA,MAAM,CAACs/F,SAAP,GAAmB,IAAnB;;AAEA,QAAI,CAACt/F,MAAM,CAACi6G,6BAAZ,EAA2C;AACzCj6G,MAAAA,MAAM,CAACi6G,6BAAP,GAAuC,SAASzmG,aAAT,CAAuB9W,CAAvB,EAA0B;AAC/D,YAAI,CAACsD,MAAD,IAAWA,MAAM,CAACmsG,SAAtB,EAAiC;AACjC,YAAIzvG,CAAC,CAACwS,MAAF,KAAa,IAAjB,EAAuB;AACvBlP,QAAAA,MAAM,CAACotG,UAAP,CAAkB,CAAlB,EAAqBzhG,mBAArB,CAAyC,eAAzC,EAA0D3L,MAAM,CAACi6G,6BAAjE;AACAj6G,QAAAA,MAAM,CAACotG,UAAP,CAAkB,CAAlB,EAAqBzhG,mBAArB,CAAyC,qBAAzC,EAAgE3L,MAAM,CAACi6G,6BAAvE;AACAj6G,QAAAA,MAAM,CAACi6G,6BAAP,GAAuC,IAAvC;AACA,eAAOj6G,MAAM,CAACi6G,6BAAd;AACAj6G,QAAAA,MAAM,CAACwT,aAAP,CAAqBilG,YAArB,EAAmCpmG,SAAnC;AACD,OARD;AASD;;AAEDrS,IAAAA,MAAM,CAACotG,UAAP,CAAkB,CAAlB,EAAqB9vG,gBAArB,CAAsC,eAAtC,EAAuD0C,MAAM,CAACi6G,6BAA9D;AACAj6G,IAAAA,MAAM,CAACotG,UAAP,CAAkB,CAAlB,EAAqB9vG,gBAArB,CAAsC,qBAAtC,EAA6D0C,MAAM,CAACi6G,6BAApE;AACD;;AAED,SAAO,IAAP;AACD;;;;;;;;;;;;;;AChMD;;AACA;;;;AACe,SAASpJ,mBAAT,GAA+B;AAC5C,MAAM7wG,MAAM,GAAG,IAAf;AACA,MACEooC,MADF,GAGIpoC,MAHJ,CACEooC,MADF;AAAA,MAEEglE,UAFF,GAGIptG,MAHJ,CAEEotG,UAFF;AAIA,MAAMzH,aAAa,GAAGv9D,MAAM,CAACu9D,aAAP,KAAyB,MAAzB,GAAkC3lG,MAAM,CAAC44G,oBAAP,EAAlC,GAAkExwE,MAAM,CAACu9D,aAA/F;AACA,MAAIuU,YAAY,GAAGl6G,MAAM,CAACm6G,YAA1B;AACA,MAAIlR,SAAJ;;AAEA,MAAI7gE,MAAM,CAACjoC,IAAX,EAAiB;AACf,QAAIH,MAAM,CAACs/F,SAAX,EAAsB;AACtB2J,IAAAA,SAAS,GAAGrwG,QAAQ,CAAC,kBAAEoH,MAAM,CAACo6G,YAAT,EAAuB7f,IAAvB,CAA4B,yBAA5B,CAAD,EAAyD,EAAzD,CAApB;;AAEA,QAAInyD,MAAM,CAACs/D,cAAX,EAA2B;AACzB,UAAIwS,YAAY,GAAGl6G,MAAM,CAAC6kG,YAAP,GAAsBc,aAAa,GAAG,CAArD,IAA0DuU,YAAY,GAAGl6G,MAAM,CAACiT,MAAP,CAAcpZ,MAAd,GAAuBmG,MAAM,CAAC6kG,YAA9B,GAA6Cc,aAAa,GAAG,CAA1I,EAA6I;AAC3I3lG,QAAAA,MAAM,CAAC20G,OAAP;AACAuF,QAAAA,YAAY,GAAG9M,UAAU,CAACpwG,QAAX,YAAwBorC,MAAM,CAACojE,UAA/B,wCAAsEvC,SAAtE,sBAA0F7gE,MAAM,CAACupE,mBAAjG,QAAyH12B,EAAzH,CAA4H,CAA5H,EAA+Hx/E,KAA/H,EAAf;AACA,6BAAS,YAAM;AACbuE,UAAAA,MAAM,CAAC0T,OAAP,CAAewmG,YAAf;AACD,SAFD;AAGD,OAND,MAMO;AACLl6G,QAAAA,MAAM,CAAC0T,OAAP,CAAewmG,YAAf;AACD;AACF,KAVD,MAUO,IAAIA,YAAY,GAAGl6G,MAAM,CAACiT,MAAP,CAAcpZ,MAAd,GAAuB8rG,aAA1C,EAAyD;AAC9D3lG,MAAAA,MAAM,CAAC20G,OAAP;AACAuF,MAAAA,YAAY,GAAG9M,UAAU,CAACpwG,QAAX,YAAwBorC,MAAM,CAACojE,UAA/B,wCAAsEvC,SAAtE,sBAA0F7gE,MAAM,CAACupE,mBAAjG,QAAyH12B,EAAzH,CAA4H,CAA5H,EAA+Hx/E,KAA/H,EAAf;AACA,2BAAS,YAAM;AACbuE,QAAAA,MAAM,CAAC0T,OAAP,CAAewmG,YAAf;AACD,OAFD;AAGD,KANM,MAMA;AACLl6G,MAAAA,MAAM,CAAC0T,OAAP,CAAewmG,YAAf;AACD;AACF,GAvBD,MAuBO;AACLl6G,IAAAA,MAAM,CAAC0T,OAAP,CAAewmG,YAAf;AACD;AACF;;;;;;;;;;;;;;ACtCD;AACe,SAAS1B,cAAT,CAAwBp4G,KAAxB,EAA+Bq4G,YAA/B,EAA6CC,QAA7C,EAAuD3hD,SAAvD,EAAkE;AAC/E,MAAI32D,KAAK,KAAK,KAAK,CAAnB,EAAsB;AACpBA,IAAAA,KAAK,GAAG,KAAKgoC,MAAL,CAAYhoC,KAApB;AACD;;AAED,MAAIq4G,YAAY,KAAK,KAAK,CAA1B,EAA6B;AAC3BA,IAAAA,YAAY,GAAG,IAAf;AACD;;AAED,MAAI1hD,SAAS,KAAK,KAAK,CAAvB,EAA0B;AACxBA,IAAAA,SAAS,GAAG,GAAZ;AACD;;AAED,MAAM/2D,MAAM,GAAG,IAAf;AACA,MAAIvE,KAAK,GAAGuE,MAAM,CAACkT,WAAnB;AACA,MAAMqoB,IAAI,GAAG3+B,IAAI,CAACyH,GAAL,CAASrE,MAAM,CAACooC,MAAP,CAAcknE,kBAAvB,EAA2C7zG,KAA3C,CAAb;AACA,MAAM09G,SAAS,GAAG59E,IAAI,GAAG3+B,IAAI,CAACC,KAAL,CAAW,CAACpB,KAAK,GAAG8/B,IAAT,IAAiBv7B,MAAM,CAACooC,MAAP,CAAcinE,cAA1C,CAAzB;AACA,MAAMp/C,SAAS,GAAGjwD,MAAM,CAACwsG,YAAP,GAAsBxsG,MAAM,CAACiwD,SAA7B,GAAyC,CAACjwD,MAAM,CAACiwD,SAAnE;;AAEA,MAAIA,SAAS,IAAIjwD,MAAM,CAAC6mG,QAAP,CAAgBsS,SAAhB,CAAjB,EAA6C;AAC3C;AACA;AACA,QAAMkB,WAAW,GAAGr6G,MAAM,CAAC6mG,QAAP,CAAgBsS,SAAhB,CAApB;AACA,QAAMmB,QAAQ,GAAGt6G,MAAM,CAAC6mG,QAAP,CAAgBsS,SAAS,GAAG,CAA5B,CAAjB;;AAEA,QAAIlpD,SAAS,GAAGoqD,WAAZ,GAA0B,CAACC,QAAQ,GAAGD,WAAZ,IAA2BtjD,SAAzD,EAAoE;AAClEt7D,MAAAA,KAAK,IAAIuE,MAAM,CAACooC,MAAP,CAAcinE,cAAvB;AACD;AACF,GATD,MASO;AACL;AACA;AACA,QAAM2J,QAAQ,GAAGh5G,MAAM,CAAC6mG,QAAP,CAAgBsS,SAAS,GAAG,CAA5B,CAAjB;AACA,QAAMkB,YAAW,GAAGr6G,MAAM,CAAC6mG,QAAP,CAAgBsS,SAAhB,CAApB;;AAEA,QAAIlpD,SAAS,GAAG+oD,QAAZ,IAAwB,CAACqB,YAAW,GAAGrB,QAAf,IAA2BjiD,SAAvD,EAAkE;AAChEt7D,MAAAA,KAAK,IAAIuE,MAAM,CAACooC,MAAP,CAAcinE,cAAvB;AACD;AACF;;AAED5zG,EAAAA,KAAK,GAAGmB,IAAI,CAAC0H,GAAL,CAAS7I,KAAT,EAAgB,CAAhB,CAAR;AACAA,EAAAA,KAAK,GAAGmB,IAAI,CAACyH,GAAL,CAAS5I,KAAT,EAAgBuE,MAAM,CAAC2mG,UAAP,CAAkB9sG,MAAlB,GAA2B,CAA3C,CAAR;AACA,SAAOmG,MAAM,CAAC0T,OAAP,CAAejY,KAAf,EAAsB2E,KAAtB,EAA6Bq4G,YAA7B,EAA2CC,QAA3C,CAAP;AACD;;;;;;;;;;;;;;AC3Cc,SAASN,WAAT,CAAqB38G,KAArB,EAA4B2E,KAA5B,EAAmCq4G,YAAnC,EAAiDC,QAAjD,EAA2D;AACxE,MAAIj9G,KAAK,KAAK,KAAK,CAAnB,EAAsB;AACpBA,IAAAA,KAAK,GAAG,CAAR;AACD;;AAED,MAAI2E,KAAK,KAAK,KAAK,CAAnB,EAAsB;AACpBA,IAAAA,KAAK,GAAG,KAAKgoC,MAAL,CAAYhoC,KAApB;AACD;;AAED,MAAIq4G,YAAY,KAAK,KAAK,CAA1B,EAA6B;AAC3BA,IAAAA,YAAY,GAAG,IAAf;AACD;;AAED,MAAMz4G,MAAM,GAAG,IAAf;AACA,MAAI22G,QAAQ,GAAGl7G,KAAf;;AAEA,MAAIuE,MAAM,CAACooC,MAAP,CAAcjoC,IAAlB,EAAwB;AACtBw2G,IAAAA,QAAQ,IAAI32G,MAAM,CAAC6kG,YAAnB;AACD;;AAED,SAAO7kG,MAAM,CAAC0T,OAAP,CAAeijG,QAAf,EAAyBv2G,KAAzB,EAAgCq4G,YAAhC,EAA8CC,QAA9C,CAAP;AACD;;;;;;;;;;;;;;ACrBD;;AACA;;AACA;;;;eACe;AACb7D,EAAAA,aAAa,EAAbA,sBADa;AAEbzhG,EAAAA,eAAe,EAAfA,wBAFa;AAGbI,EAAAA,aAAa,EAAbA;AAHa;;;;;;;;;;;;;;;ACHA,SAASqhG,aAAT,CAAuB90G,QAAvB,EAAiCw6G,YAAjC,EAA+C;AAC5D,MAAMv6G,MAAM,GAAG,IAAf;;AAEA,MAAI,CAACA,MAAM,CAACooC,MAAP,CAAcq/D,OAAnB,EAA4B;AAC1BznG,IAAAA,MAAM,CAACotG,UAAP,CAAkBrkG,UAAlB,CAA6BhJ,QAA7B;AACD;;AAEDC,EAAAA,MAAM,CAACimG,IAAP,CAAY,eAAZ,EAA6BlmG,QAA7B,EAAuCw6G,YAAvC;AACD;;;;;;;;;;;;;;ACRc,SAASC,cAAT,CAAwBtD,IAAxB,EAA8B;AAC3C,MACEl3G,MADF,GAKIk3G,IALJ,CACEl3G,MADF;AAAA,MAEEy4G,YAFF,GAKIvB,IALJ,CAEEuB,YAFF;AAAA,MAGEpmG,SAHF,GAKI6kG,IALJ,CAGE7kG,SAHF;AAAA,MAIEspC,IAJF,GAKIu7D,IALJ,CAIEv7D,IAJF;AAMA,MACEzoC,WADF,GAGIlT,MAHJ,CACEkT,WADF;AAAA,MAEEqmG,aAFF,GAGIv5G,MAHJ,CAEEu5G,aAFF;AAIA,MAAI5hB,GAAG,GAAGtlF,SAAV;;AAEA,MAAI,CAACslF,GAAL,EAAU;AACR,QAAIzkF,WAAW,GAAGqmG,aAAlB,EAAiC5hB,GAAG,GAAG,MAAN,CAAjC,KAAmD,IAAIzkF,WAAW,GAAGqmG,aAAlB,EAAiC5hB,GAAG,GAAG,MAAN,CAAjC,KAAmDA,GAAG,GAAG,OAAN;AACvG;;AAED33F,EAAAA,MAAM,CAACimG,IAAP,qBAAyBtqD,IAAzB;;AAEA,MAAI88D,YAAY,IAAIvlG,WAAW,KAAKqmG,aAApC,EAAmD;AACjD,QAAI5hB,GAAG,KAAK,OAAZ,EAAqB;AACnB33F,MAAAA,MAAM,CAACimG,IAAP,+BAAmCtqD,IAAnC;AACA;AACD;;AAED37C,IAAAA,MAAM,CAACimG,IAAP,gCAAoCtqD,IAApC;;AAEA,QAAIg8C,GAAG,KAAK,MAAZ,EAAoB;AAClB33F,MAAAA,MAAM,CAACimG,IAAP,8BAAkCtqD,IAAlC;AACD,KAFD,MAEO;AACL37C,MAAAA,MAAM,CAACimG,IAAP,8BAAkCtqD,IAAlC;AACD;AACF;AACF;;;;;;;;;;;;;;ACjCD;;;;AACe,SAASnoC,aAAT,CAAuBilG,YAAvB,EAAqCpmG,SAArC,EAAgD;AAC7D,MAAIomG,YAAY,KAAK,KAAK,CAA1B,EAA6B;AAC3BA,IAAAA,YAAY,GAAG,IAAf;AACD;;AAED,MAAMz4G,MAAM,GAAG,IAAf;AACA,MACEooC,MADF,GAEIpoC,MAFJ,CACEooC,MADF;AAGApoC,EAAAA,MAAM,CAACs/F,SAAP,GAAmB,KAAnB;AACA,MAAIl3D,MAAM,CAACq/D,OAAX,EAAoB;AACpBznG,EAAAA,MAAM,CAAC60G,aAAP,CAAqB,CAArB;AACA,+BAAe;AACb70G,IAAAA,MAAM,EAANA,MADa;AAEby4G,IAAAA,YAAY,EAAZA,YAFa;AAGbpmG,IAAAA,SAAS,EAATA,SAHa;AAIbspC,IAAAA,IAAI,EAAE;AAJO,GAAf;AAMD;;;;;;;;;;;;;;ACnBD;;;;AACe,SAASvoC,eAAT,CAAyBqlG,YAAzB,EAAuCpmG,SAAvC,EAAkD;AAC/D,MAAIomG,YAAY,KAAK,KAAK,CAA1B,EAA6B;AAC3BA,IAAAA,YAAY,GAAG,IAAf;AACD;;AAED,MAAMz4G,MAAM,GAAG,IAAf;AACA,MACEooC,MADF,GAEIpoC,MAFJ,CACEooC,MADF;AAGA,MAAIA,MAAM,CAACq/D,OAAX,EAAoB;;AAEpB,MAAIr/D,MAAM,CAAC31B,UAAX,EAAuB;AACrBzS,IAAAA,MAAM,CAAC2sG,gBAAP;AACD;;AAED,+BAAe;AACb3sG,IAAAA,MAAM,EAANA,MADa;AAEby4G,IAAAA,YAAY,EAAZA,YAFa;AAGbpmG,IAAAA,SAAS,EAATA,SAHa;AAIbspC,IAAAA,IAAI,EAAE;AAJO,GAAf;AAMD;;;;;;;;;;;;;;ACtBD;;AACe,SAAS8+D,kBAAT,CAA4BjtF,IAA5B,EAAkC;AAC/C,MAAIA,IAAI,KAAK,KAAK,CAAlB,EAAqB;AACnBA,IAAAA,IAAI,GAAG,KAAKqK,YAAL,KAAsB,GAAtB,GAA4B,GAAnC;AACD;;AAED,MAAM73B,MAAM,GAAG,IAAf;AACA,MACEooC,MADF,GAKIpoC,MALJ,CACEooC,MADF;AAAA,MAEgBo0B,GAFhB,GAKIx8D,MALJ,CAEEwsG,YAFF;AAAA,MAGEv8C,SAHF,GAKIjwD,MALJ,CAGEiwD,SAHF;AAAA,MAIEm9C,UAJF,GAKIptG,MALJ,CAIEotG,UAJF;;AAOA,MAAIhlE,MAAM,CAAC8mE,gBAAX,EAA6B;AAC3B,WAAO1yC,GAAG,GAAG,CAACvM,SAAJ,GAAgBA,SAA1B;AACD;;AAED,MAAI7nB,MAAM,CAACq/D,OAAX,EAAoB;AAClB,WAAOx3C,SAAP;AACD;;AAED,MAAI+5C,gBAAgB,GAAG,yBAAaoD,UAAU,CAAC,CAAD,CAAvB,EAA4B5/E,IAA5B,CAAvB;AACA,MAAIgvC,GAAJ,EAASwtC,gBAAgB,GAAG,CAACA,gBAApB;AACT,SAAOA,gBAAgB,IAAI,CAA3B;AACD;;;;;;;;;;;;;;ACzBD;;AACA;;AACA;;AACA;;AACA;;;;eACe;AACb4K,EAAAA,YAAY,EAAZA,qBADa;AAEbtI,EAAAA,YAAY,EAAZA,qBAFa;AAGbrB,EAAAA,YAAY,EAAZA,qBAHa;AAIbC,EAAAA,YAAY,EAAZA,qBAJa;AAKbC,EAAAA,WAAW,EAAXA;AALa;;;;;;;;;;;;;;;ACLA,SAASD,YAAT,GAAwB;AACrC,SAAO,CAAC,KAAKrE,QAAL,CAAc,KAAKA,QAAL,CAAchtG,MAAd,GAAuB,CAArC,CAAR;AACD;;;;;;;;;;;;;;ACFc,SAASoxG,YAAT,GAAwB;AACrC,SAAO,CAAC,KAAKpE,QAAL,CAAc,CAAd,CAAR;AACD;;;;;;;;;;;;;;ACFc,SAASyF,YAAT,CAAsBr8C,SAAtB,EAAiCsqD,YAAjC,EAA+C;AAC5D,MAAMv6G,MAAM,GAAG,IAAf;AACA,MACgBw8D,GADhB,GAMIx8D,MANJ,CACEwsG,YADF;AAAA,MAEEpkE,MAFF,GAMIpoC,MANJ,CAEEooC,MAFF;AAAA,MAGEglE,UAHF,GAMIptG,MANJ,CAGEotG,UAHF;AAAA,MAIEE,SAJF,GAMIttG,MANJ,CAIEstG,SAJF;AAAA,MAKErmG,QALF,GAMIjH,MANJ,CAKEiH,QALF;AAOA,MAAIW,CAAC,GAAG,CAAR;AACA,MAAIC,CAAC,GAAG,CAAR;AACA,MAAMC,CAAC,GAAG,CAAV;;AAEA,MAAI9H,MAAM,CAAC63B,YAAP,EAAJ,EAA2B;AACzBjwB,IAAAA,CAAC,GAAG40D,GAAG,GAAG,CAACvM,SAAJ,GAAgBA,SAAvB;AACD,GAFD,MAEO;AACLpoD,IAAAA,CAAC,GAAGooD,SAAJ;AACD;;AAED,MAAI7nB,MAAM,CAACwnE,YAAX,EAAyB;AACvBhoG,IAAAA,CAAC,GAAGhL,IAAI,CAACC,KAAL,CAAW+K,CAAX,CAAJ;AACAC,IAAAA,CAAC,GAAGjL,IAAI,CAACC,KAAL,CAAWgL,CAAX,CAAJ;AACD;;AAED,MAAIugC,MAAM,CAACq/D,OAAX,EAAoB;AAClB6F,IAAAA,SAAS,CAACttG,MAAM,CAAC63B,YAAP,KAAwB,YAAxB,GAAuC,WAAxC,CAAT,GAAgE73B,MAAM,CAAC63B,YAAP,KAAwB,CAACjwB,CAAzB,GAA6B,CAACC,CAA9F;AACD,GAFD,MAEO,IAAI,CAACugC,MAAM,CAAC8mE,gBAAZ,EAA8B;AACnC9B,IAAAA,UAAU,CAAClS,SAAX,uBAAoCtzF,CAApC,iBAA4CC,CAA5C,iBAAoDC,CAApD;AACD;;AAED9H,EAAAA,MAAM,CAACmpG,iBAAP,GAA2BnpG,MAAM,CAACiwD,SAAlC;AACAjwD,EAAAA,MAAM,CAACiwD,SAAP,GAAmBjwD,MAAM,CAAC63B,YAAP,KAAwBjwB,CAAxB,GAA4BC,CAA/C,CA/B4D,CA+BV;;AAElD,MAAImrG,WAAJ;AACA,MAAMC,cAAc,GAAGjzG,MAAM,CAACkrG,YAAP,KAAwBlrG,MAAM,CAACirG,YAAP,EAA/C;;AAEA,MAAIgI,cAAc,KAAK,CAAvB,EAA0B;AACxBD,IAAAA,WAAW,GAAG,CAAd;AACD,GAFD,MAEO;AACLA,IAAAA,WAAW,GAAG,CAAC/iD,SAAS,GAAGjwD,MAAM,CAACirG,YAAP,EAAb,IAAsCgI,cAApD;AACD;;AAED,MAAID,WAAW,KAAK/rG,QAApB,EAA8B;AAC5BjH,IAAAA,MAAM,CAACqsG,cAAP,CAAsBp8C,SAAtB;AACD;;AAEDjwD,EAAAA,MAAM,CAACimG,IAAP,CAAY,cAAZ,EAA4BjmG,MAAM,CAACiwD,SAAnC,EAA8CsqD,YAA9C;AACD;;;;;;;;;;;;;;AC/CD;;;;AACe,SAASpP,WAAT,CAAqBl7C,SAArB,EAAgC7vD,KAAhC,EAAuCq4G,YAAvC,EAAqDiC,eAArD,EAAsEhC,QAAtE,EAAgF;AAC7F,MAAIzoD,SAAS,KAAK,KAAK,CAAvB,EAA0B;AACxBA,IAAAA,SAAS,GAAG,CAAZ;AACD;;AAED,MAAI7vD,KAAK,KAAK,KAAK,CAAnB,EAAsB;AACpBA,IAAAA,KAAK,GAAG,KAAKgoC,MAAL,CAAYhoC,KAApB;AACD;;AAED,MAAIq4G,YAAY,KAAK,KAAK,CAA1B,EAA6B;AAC3BA,IAAAA,YAAY,GAAG,IAAf;AACD;;AAED,MAAIiC,eAAe,KAAK,KAAK,CAA7B,EAAgC;AAC9BA,IAAAA,eAAe,GAAG,IAAlB;AACD;;AAED,MAAM16G,MAAM,GAAG,IAAf;AACA,MACEooC,MADF,GAGIpoC,MAHJ,CACEooC,MADF;AAAA,MAEEklE,SAFF,GAGIttG,MAHJ,CAEEstG,SAFF;;AAKA,MAAIttG,MAAM,CAACs/F,SAAP,IAAoBl3D,MAAM,CAAC0mE,8BAA/B,EAA+D;AAC7D,WAAO,KAAP;AACD;;AAED,MAAM7D,YAAY,GAAGjrG,MAAM,CAACirG,YAAP,EAArB;AACA,MAAMC,YAAY,GAAGlrG,MAAM,CAACkrG,YAAP,EAArB;AACA,MAAIuB,YAAJ;AACA,MAAIiO,eAAe,IAAIzqD,SAAS,GAAGg7C,YAAnC,EAAiDwB,YAAY,GAAGxB,YAAf,CAAjD,KAAkF,IAAIyP,eAAe,IAAIzqD,SAAS,GAAGi7C,YAAnC,EAAiDuB,YAAY,GAAGvB,YAAf,CAAjD,KAAkFuB,YAAY,GAAGx8C,SAAf,CA9BvE,CA8BiG;;AAE9LjwD,EAAAA,MAAM,CAACqsG,cAAP,CAAsBI,YAAtB;;AAEA,MAAIrkE,MAAM,CAACq/D,OAAX,EAAoB;AAClB,QAAMiS,GAAG,GAAG15G,MAAM,CAAC63B,YAAP,EAAZ;;AAEA,QAAIz3B,KAAK,KAAK,CAAd,EAAiB;AACfktG,MAAAA,SAAS,CAACoM,GAAG,GAAG,YAAH,GAAkB,WAAtB,CAAT,GAA8C,CAACjN,YAA/C;AACD,KAFD,MAEO;AAAA;;AACL,UAAI,CAACzsG,MAAM,CAACmnG,OAAP,CAAe4S,YAApB,EAAkC;AAChC,yCAAqB;AACnB/5G,UAAAA,MAAM,EAANA,MADmB;AAEnBg6G,UAAAA,cAAc,EAAE,CAACvN,YAFE;AAGnB/jG,UAAAA,IAAI,EAAEgxG,GAAG,GAAG,MAAH,GAAY;AAHF,SAArB;AAKA,eAAO,IAAP;AACD;;AAEDpM,MAAAA,SAAS,CAAC39F,QAAV,iEACG+pG,GAAG,GAAG,MAAH,GAAY,KADlB,EAC0B,CAACjN,YAD3B,oDAEY,QAFZ;AAID;;AAED,WAAO,IAAP;AACD;;AAED,MAAIrsG,KAAK,KAAK,CAAd,EAAiB;AACfJ,IAAAA,MAAM,CAAC60G,aAAP,CAAqB,CAArB;AACA70G,IAAAA,MAAM,CAACssG,YAAP,CAAoBG,YAApB;;AAEA,QAAIgM,YAAJ,EAAkB;AAChBz4G,MAAAA,MAAM,CAACimG,IAAP,CAAY,uBAAZ,EAAqC7lG,KAArC,EAA4Cs4G,QAA5C;AACA14G,MAAAA,MAAM,CAACimG,IAAP,CAAY,eAAZ;AACD;AACF,GARD,MAQO;AACLjmG,IAAAA,MAAM,CAAC60G,aAAP,CAAqBz0G,KAArB;AACAJ,IAAAA,MAAM,CAACssG,YAAP,CAAoBG,YAApB;;AAEA,QAAIgM,YAAJ,EAAkB;AAChBz4G,MAAAA,MAAM,CAACimG,IAAP,CAAY,uBAAZ,EAAqC7lG,KAArC,EAA4Cs4G,QAA5C;AACA14G,MAAAA,MAAM,CAACimG,IAAP,CAAY,iBAAZ;AACD;;AAED,QAAI,CAACjmG,MAAM,CAACs/F,SAAZ,EAAuB;AACrBt/F,MAAAA,MAAM,CAACs/F,SAAP,GAAmB,IAAnB;;AAEA,UAAI,CAACt/F,MAAM,CAAC26G,iCAAZ,EAA+C;AAC7C36G,QAAAA,MAAM,CAAC26G,iCAAP,GAA2C,SAASnnG,aAAT,CAAuB9W,CAAvB,EAA0B;AACnE,cAAI,CAACsD,MAAD,IAAWA,MAAM,CAACmsG,SAAtB,EAAiC;AACjC,cAAIzvG,CAAC,CAACwS,MAAF,KAAa,IAAjB,EAAuB;AACvBlP,UAAAA,MAAM,CAACotG,UAAP,CAAkB,CAAlB,EAAqBzhG,mBAArB,CAAyC,eAAzC,EAA0D3L,MAAM,CAAC26G,iCAAjE;AACA36G,UAAAA,MAAM,CAACotG,UAAP,CAAkB,CAAlB,EAAqBzhG,mBAArB,CAAyC,qBAAzC,EAAgE3L,MAAM,CAAC26G,iCAAvE;AACA36G,UAAAA,MAAM,CAAC26G,iCAAP,GAA2C,IAA3C;AACA,iBAAO36G,MAAM,CAAC26G,iCAAd;;AAEA,cAAIlC,YAAJ,EAAkB;AAChBz4G,YAAAA,MAAM,CAACimG,IAAP,CAAY,eAAZ;AACD;AACF,SAXD;AAYD;;AAEDjmG,MAAAA,MAAM,CAACotG,UAAP,CAAkB,CAAlB,EAAqB9vG,gBAArB,CAAsC,eAAtC,EAAuD0C,MAAM,CAAC26G,iCAA9D;AACA36G,MAAAA,MAAM,CAACotG,UAAP,CAAkB,CAAlB,EAAqB9vG,gBAArB,CAAsC,qBAAtC,EAA6D0C,MAAM,CAAC26G,iCAApE;AACD;AACF;;AAED,SAAO,IAAP;AACD;;;;;;;;;;;;;;ACpGD;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;eACe;AACbvO,EAAAA,UAAU,EAAVA,mBADa;AAEbhG,EAAAA,YAAY,EAAZA,qBAFa;AAGbuG,EAAAA,gBAAgB,EAAhBA,yBAHa;AAIbiO,EAAAA,kBAAkB,EAAlBA,2BAJa;AAKbC,EAAAA,oBAAoB,EAApBA,6BALa;AAMbxO,EAAAA,cAAc,EAAdA,uBANa;AAObhB,EAAAA,mBAAmB,EAAnBA,4BAPa;AAQbD,EAAAA,iBAAiB,EAAjBA,0BARa;AASbmI,EAAAA,kBAAkB,EAAlBA;AATa;;;;;;;;;;;;;;;;;ACTA,SAASnI,iBAAT,CAA2B0P,cAA3B,EAA2C;AACxD,MAAM96G,MAAM,GAAG,IAAf;AACA,MAAMiwD,SAAS,GAAGjwD,MAAM,CAACwsG,YAAP,GAAsBxsG,MAAM,CAACiwD,SAA7B,GAAyC,CAACjwD,MAAM,CAACiwD,SAAnE;AACA,MACE02C,UADF,GAOI3mG,MAPJ,CACE2mG,UADF;AAAA,MAEEE,QAFF,GAOI7mG,MAPJ,CAEE6mG,QAFF;AAAA,MAGEz+D,MAHF,GAOIpoC,MAPJ,CAGEooC,MAHF;AAAA,MAIemxE,aAJf,GAOIv5G,MAPJ,CAIEkT,WAJF;AAAA,MAKa6nG,iBALb,GAOI/6G,MAPJ,CAKEipG,SALF;AAAA,MAMa+R,iBANb,GAOIh7G,MAPJ,CAMEm5G,SANF;AAQA,MAAIjmG,WAAW,GAAG4nG,cAAlB;AACA,MAAI3B,SAAJ;;AAEA,MAAI,OAAOjmG,WAAP,KAAuB,WAA3B,EAAwC;AACtC,SAAK,IAAI7Y,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGssG,UAAU,CAAC9sG,MAA/B,EAAuCQ,CAAC,IAAI,CAA5C,EAA+C;AAC7C,UAAI,OAAOssG,UAAU,CAACtsG,CAAC,GAAG,CAAL,CAAjB,KAA6B,WAAjC,EAA8C;AAC5C,YAAI41D,SAAS,IAAI02C,UAAU,CAACtsG,CAAD,CAAvB,IAA8B41D,SAAS,GAAG02C,UAAU,CAACtsG,CAAC,GAAG,CAAL,CAAV,GAAoB,CAACssG,UAAU,CAACtsG,CAAC,GAAG,CAAL,CAAV,GAAoBssG,UAAU,CAACtsG,CAAD,CAA/B,IAAsC,CAAxG,EAA2G;AACzG6Y,UAAAA,WAAW,GAAG7Y,CAAd;AACD,SAFD,MAEO,IAAI41D,SAAS,IAAI02C,UAAU,CAACtsG,CAAD,CAAvB,IAA8B41D,SAAS,GAAG02C,UAAU,CAACtsG,CAAC,GAAG,CAAL,CAAxD,EAAiE;AACtE6Y,UAAAA,WAAW,GAAG7Y,CAAC,GAAG,CAAlB;AACD;AACF,OAND,MAMO,IAAI41D,SAAS,IAAI02C,UAAU,CAACtsG,CAAD,CAA3B,EAAgC;AACrC6Y,QAAAA,WAAW,GAAG7Y,CAAd;AACD;AACF,KAXqC,CAWpC;;;AAGF,QAAI+tC,MAAM,CAACsnE,mBAAX,EAAgC;AAC9B,UAAIx8F,WAAW,GAAG,CAAd,IAAmB,OAAOA,WAAP,KAAuB,WAA9C,EAA2DA,WAAW,GAAG,CAAd;AAC5D;AACF;;AAED,MAAI2zF,QAAQ,CAAC3lG,OAAT,CAAiB+uD,SAAjB,KAA+B,CAAnC,EAAsC;AACpCkpD,IAAAA,SAAS,GAAGtS,QAAQ,CAAC3lG,OAAT,CAAiB+uD,SAAjB,CAAZ;AACD,GAFD,MAEO;AACL,QAAM10B,IAAI,GAAG3+B,IAAI,CAACyH,GAAL,CAAS+jC,MAAM,CAACknE,kBAAhB,EAAoCp8F,WAApC,CAAb;AACAimG,IAAAA,SAAS,GAAG59E,IAAI,GAAG3+B,IAAI,CAACC,KAAL,CAAW,CAACqW,WAAW,GAAGqoB,IAAf,IAAuB6M,MAAM,CAACinE,cAAzC,CAAnB;AACD;;AAED,MAAI8J,SAAS,IAAItS,QAAQ,CAAChtG,MAA1B,EAAkCs/G,SAAS,GAAGtS,QAAQ,CAAChtG,MAAT,GAAkB,CAA9B;;AAElC,MAAIqZ,WAAW,KAAKqmG,aAApB,EAAmC;AACjC,QAAIJ,SAAS,KAAK6B,iBAAlB,EAAqC;AACnCh7G,MAAAA,MAAM,CAACm5G,SAAP,GAAmBA,SAAnB;AACAn5G,MAAAA,MAAM,CAACimG,IAAP,CAAY,iBAAZ;AACD;;AAED;AACD,GAjDuD,CAiDtD;;;AAGF,MAAMgD,SAAS,GAAGrwG,QAAQ,CAACoH,MAAM,CAACiT,MAAP,CAAcgoE,EAAd,CAAiB/nE,WAAjB,EAA8BqnF,IAA9B,CAAmC,yBAAnC,KAAiErnF,WAAlE,EAA+E,EAA/E,CAA1B;;AACA,WAAclT,MAAd,EAAsB;AACpBm5G,IAAAA,SAAS,EAATA,SADoB;AAEpBlQ,IAAAA,SAAS,EAATA,SAFoB;AAGpBsQ,IAAAA,aAAa,EAAbA,aAHoB;AAIpBrmG,IAAAA,WAAW,EAAXA;AAJoB,GAAtB;;AAMAlT,EAAAA,MAAM,CAACimG,IAAP,CAAY,mBAAZ;AACAjmG,EAAAA,MAAM,CAACimG,IAAP,CAAY,iBAAZ;;AAEA,MAAI8U,iBAAiB,KAAK9R,SAA1B,EAAqC;AACnCjpG,IAAAA,MAAM,CAACimG,IAAP,CAAY,iBAAZ;AACD;;AAED,MAAIjmG,MAAM,CAAC4kG,WAAP,IAAsB5kG,MAAM,CAACooC,MAAP,CAAcslE,kBAAxC,EAA4D;AAC1D1tG,IAAAA,MAAM,CAACimG,IAAP,CAAY,aAAZ;AACD;AACF;;;;;;;;;;;;;;ACrEc,SAAS0G,gBAAT,CAA0BvsG,KAA1B,EAAiC;AAC9C,MAAMJ,MAAM,GAAG,IAAf;AACA,MAAMi7G,YAAY,GAAG,EAArB;AACA,MAAMtB,SAAS,GAAG35G,MAAM,CAAC8zG,OAAP,IAAkB9zG,MAAM,CAACooC,MAAP,CAAc0rE,OAAd,CAAsBx4G,OAA1D;AACA,MAAIkuC,SAAS,GAAG,CAAhB;AACA,MAAInvC,CAAJ;;AAEA,MAAI,OAAO+F,KAAP,KAAiB,QAArB,EAA+B;AAC7BJ,IAAAA,MAAM,CAAC60G,aAAP,CAAqBz0G,KAArB;AACD,GAFD,MAEO,IAAIA,KAAK,KAAK,IAAd,EAAoB;AACzBJ,IAAAA,MAAM,CAAC60G,aAAP,CAAqB70G,MAAM,CAACooC,MAAP,CAAchoC,KAAnC;AACD;;AAED,MAAM86G,eAAe,GAAG,SAAlBA,eAAkB,CAAAz/G,KAAK,EAAI;AAC/B,QAAIk+G,SAAJ,EAAe;AACb,aAAO35G,MAAM,CAACiT,MAAP,CAAc6E,MAAd,CAAqB,UAAAotB,EAAE;AAAA,eAAItsC,QAAQ,CAACssC,EAAE,CAAC9rC,YAAH,CAAgB,yBAAhB,CAAD,EAA6C,EAA7C,CAAR,KAA6DqC,KAAjE;AAAA,OAAvB,EAA+F,CAA/F,CAAP;AACD;;AAED,WAAOuE,MAAM,CAACiT,MAAP,CAAcgoE,EAAd,CAAiBx/E,KAAjB,EAAwB,CAAxB,CAAP;AACD,GAND,CAb8C,CAmB3C;;;AAGH,MAAIuE,MAAM,CAACooC,MAAP,CAAcu9D,aAAd,KAAgC,MAAhC,IAA0C3lG,MAAM,CAACooC,MAAP,CAAcu9D,aAAd,GAA8B,CAA5E,EAA+E;AAC7E,QAAI3lG,MAAM,CAACooC,MAAP,CAAcs/D,cAAlB,EAAkC;AAChC1nG,MAAAA,MAAM,CAACm7G,aAAP,CAAqBjnC,IAArB,CAA0B,UAAA7gE,KAAK,EAAI;AACjC4nG,QAAAA,YAAY,CAAC7+G,IAAb,CAAkBiX,KAAlB;AACD,OAFD;AAGD,KAJD,MAIO;AACL,WAAKhZ,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGuC,IAAI,CAAC+1C,IAAL,CAAU3yC,MAAM,CAACooC,MAAP,CAAcu9D,aAAxB,CAAhB,EAAwDtrG,CAAC,IAAI,CAA7D,EAAgE;AAC9D,YAAMoB,KAAK,GAAGuE,MAAM,CAACkT,WAAP,GAAqB7Y,CAAnC;AACA,YAAIoB,KAAK,GAAGuE,MAAM,CAACiT,MAAP,CAAcpZ,MAAtB,IAAgC,CAAC8/G,SAArC,EAAgD;AAChDsB,QAAAA,YAAY,CAAC7+G,IAAb,CAAkB8+G,eAAe,CAACz/G,KAAD,CAAjC;AACD;AACF;AACF,GAZD,MAYO;AACLw/G,IAAAA,YAAY,CAAC7+G,IAAb,CAAkB8+G,eAAe,CAACl7G,MAAM,CAACkT,WAAR,CAAjC;AACD,GApC6C,CAoC5C;;;AAGF,OAAK7Y,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG4gH,YAAY,CAACphH,MAA7B,EAAqCQ,CAAC,IAAI,CAA1C,EAA6C;AAC3C,QAAI,OAAO4gH,YAAY,CAAC5gH,CAAD,CAAnB,KAA2B,WAA/B,EAA4C;AAC1C,UAAM0D,MAAM,GAAGk9G,YAAY,CAAC5gH,CAAD,CAAZ,CAAgBiJ,YAA/B;AACAkmC,MAAAA,SAAS,GAAGzrC,MAAM,GAAGyrC,SAAT,GAAqBzrC,MAArB,GAA8ByrC,SAA1C;AACD;AACF,GA5C6C,CA4C5C;;;AAGF,MAAIA,SAAS,IAAIA,SAAS,KAAK,CAA/B,EAAkCxpC,MAAM,CAACotG,UAAP,CAAkB9Q,GAAlB,CAAsB,QAAtB,YAAmC9yD,SAAnC;AACnC;;;;;;;;;;;;;;AChDD;;;;AACe,SAAS+pE,kBAAT,CAA4B72G,CAA5B,EAA+B;AAC5C,MAAMsD,MAAM,GAAG,IAAf;AACA,MAAMooC,MAAM,GAAGpoC,MAAM,CAACooC,MAAtB;AACA,MAAM/0B,KAAK,GAAG,kBAAE3W,CAAF,EAAKuG,OAAL,YAAiBmlC,MAAM,CAACojE,UAAxB,GAAsC,CAAtC,CAAd;AACA,MAAI4P,UAAU,GAAG,KAAjB;AACA,MAAI3nG,UAAJ;;AAEA,MAAIJ,KAAJ,EAAW;AACT,SAAK,IAAIhZ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2F,MAAM,CAACiT,MAAP,CAAcpZ,MAAlC,EAA0CQ,CAAC,IAAI,CAA/C,EAAkD;AAChD,UAAI2F,MAAM,CAACiT,MAAP,CAAc5Y,CAAd,MAAqBgZ,KAAzB,EAAgC;AAC9B+nG,QAAAA,UAAU,GAAG,IAAb;AACA3nG,QAAAA,UAAU,GAAGpZ,CAAb;AACA;AACD;AACF;AACF;;AAED,MAAIgZ,KAAK,IAAI+nG,UAAb,EAAyB;AACvBp7G,IAAAA,MAAM,CAACo6G,YAAP,GAAsB/mG,KAAtB;;AAEA,QAAIrT,MAAM,CAAC8zG,OAAP,IAAkB9zG,MAAM,CAACooC,MAAP,CAAc0rE,OAAd,CAAsBx4G,OAA5C,EAAqD;AACnD0E,MAAAA,MAAM,CAACm6G,YAAP,GAAsBvhH,QAAQ,CAAC,kBAAEya,KAAF,EAASknF,IAAT,CAAc,yBAAd,CAAD,EAA2C,EAA3C,CAA9B;AACD,KAFD,MAEO;AACLv6F,MAAAA,MAAM,CAACm6G,YAAP,GAAsB1mG,UAAtB;AACD;AACF,GARD,MAQO;AACLzT,IAAAA,MAAM,CAACo6G,YAAP,GAAsBxgH,SAAtB;AACAoG,IAAAA,MAAM,CAACm6G,YAAP,GAAsBvgH,SAAtB;AACA;AACD;;AAED,MAAIwuC,MAAM,CAACyoE,mBAAP,IAA8B7wG,MAAM,CAACm6G,YAAP,KAAwBvgH,SAAtD,IAAmEoG,MAAM,CAACm6G,YAAP,KAAwBn6G,MAAM,CAACkT,WAAtG,EAAmH;AACjHlT,IAAAA,MAAM,CAAC6wG,mBAAP;AACD;AACF;;;;;;;;;;;;;;;;ACnCc,SAASxE,cAAT,CAAwBp8C,SAAxB,EAAmC;AAChD,MAAMjwD,MAAM,GAAG,IAAf;;AAEA,MAAI,OAAOiwD,SAAP,KAAqB,WAAzB,EAAsC;AACpC,QAAMorD,UAAU,GAAGr7G,MAAM,CAACwsG,YAAP,GAAsB,CAAC,CAAvB,GAA2B,CAA9C,CADoC,CACa;;AAEjDv8C,IAAAA,SAAS,GAAGjwD,MAAM,IAAIA,MAAM,CAACiwD,SAAjB,IAA8BjwD,MAAM,CAACiwD,SAAP,GAAmBorD,UAAjD,IAA+D,CAA3E;AACD;;AAED,MAAMjzE,MAAM,GAAGpoC,MAAM,CAACooC,MAAtB;AACA,MAAM6qE,cAAc,GAAGjzG,MAAM,CAACkrG,YAAP,KAAwBlrG,MAAM,CAACirG,YAAP,EAA/C;AACA,MACEhkG,QADF,GAIIjH,MAJJ,CACEiH,QADF;AAAA,MAEEiiG,WAFF,GAIIlpG,MAJJ,CAEEkpG,WAFF;AAAA,MAGEpC,KAHF,GAII9mG,MAJJ,CAGE8mG,KAHF;AAKA,MAAMwU,YAAY,GAAGpS,WAArB;AACA,MAAMqS,MAAM,GAAGzU,KAAf;;AAEA,MAAImM,cAAc,KAAK,CAAvB,EAA0B;AACxBhsG,IAAAA,QAAQ,GAAG,CAAX;AACAiiG,IAAAA,WAAW,GAAG,IAAd;AACApC,IAAAA,KAAK,GAAG,IAAR;AACD,GAJD,MAIO;AACL7/F,IAAAA,QAAQ,GAAG,CAACgpD,SAAS,GAAGjwD,MAAM,CAACirG,YAAP,EAAb,IAAsCgI,cAAjD;AACA/J,IAAAA,WAAW,GAAGjiG,QAAQ,IAAI,CAA1B;AACA6/F,IAAAA,KAAK,GAAG7/F,QAAQ,IAAI,CAApB;AACD;;AAED,WAAcjH,MAAd,EAAsB;AACpBiH,IAAAA,QAAQ,EAARA,QADoB;AAEpBiiG,IAAAA,WAAW,EAAXA,WAFoB;AAGpBpC,IAAAA,KAAK,EAALA;AAHoB,GAAtB;;AAKA,MAAI1+D,MAAM,CAACsoE,mBAAP,IAA8BtoE,MAAM,CAACs/D,cAAP,IAAyBt/D,MAAM,CAAC31B,UAAlE,EAA8EzS,MAAM,CAAC66G,oBAAP,CAA4B5qD,SAA5B;;AAE9E,MAAIi5C,WAAW,IAAI,CAACoS,YAApB,EAAkC;AAChCt7G,IAAAA,MAAM,CAACimG,IAAP,CAAY,uBAAZ;AACD;;AAED,MAAIa,KAAK,IAAI,CAACyU,MAAd,EAAsB;AACpBv7G,IAAAA,MAAM,CAACimG,IAAP,CAAY,iBAAZ;AACD;;AAED,MAAIqV,YAAY,IAAI,CAACpS,WAAjB,IAAgCqS,MAAM,IAAI,CAACzU,KAA/C,EAAsD;AACpD9mG,IAAAA,MAAM,CAACimG,IAAP,CAAY,UAAZ;AACD;;AAEDjmG,EAAAA,MAAM,CAACimG,IAAP,CAAY,UAAZ,EAAwBh/F,QAAxB;AACD;;;;;;;;;;;;;;;;ACjDc,SAASmlG,UAAT,GAAsB;AACnC,MAAMpsG,MAAM,GAAG,IAAf;AACA,MAAIhC,KAAJ;AACA,MAAID,MAAJ;AACA,MAAM+mG,GAAG,GAAG9kG,MAAM,CAAC8kG,GAAnB;;AAEA,MAAI,OAAO9kG,MAAM,CAACooC,MAAP,CAAcpqC,KAArB,KAA+B,WAA/B,IAA8CgC,MAAM,CAACooC,MAAP,CAAcpqC,KAAd,KAAwB,IAA1E,EAAgF;AAC9EA,IAAAA,KAAK,GAAGgC,MAAM,CAACooC,MAAP,CAAcpqC,KAAtB;AACD,GAFD,MAEO;AACLA,IAAAA,KAAK,GAAG8mG,GAAG,CAAC,CAAD,CAAH,CAAOtnG,WAAf;AACD;;AAED,MAAI,OAAOwC,MAAM,CAACooC,MAAP,CAAcrqC,MAArB,KAAgC,WAAhC,IAA+CiC,MAAM,CAACooC,MAAP,CAAcrqC,MAAd,KAAyB,IAA5E,EAAkF;AAChFA,IAAAA,MAAM,GAAGiC,MAAM,CAACooC,MAAP,CAAcrqC,MAAvB;AACD,GAFD,MAEO;AACLA,IAAAA,MAAM,GAAG+mG,GAAG,CAAC,CAAD,CAAH,CAAOrnG,YAAhB;AACD;;AAED,MAAIO,KAAK,KAAK,CAAV,IAAegC,MAAM,CAAC63B,YAAP,EAAf,IAAwC95B,MAAM,KAAK,CAAX,IAAgBiC,MAAM,CAACgpG,UAAP,EAA5D,EAAiF;AAC/E;AACD,GApBkC,CAoBjC;;;AAGFhrG,EAAAA,KAAK,GAAGA,KAAK,GAAGpF,QAAQ,CAACksG,GAAG,CAACxI,GAAJ,CAAQ,cAAR,KAA2B,CAA5B,EAA+B,EAA/B,CAAhB,GAAqD1jG,QAAQ,CAACksG,GAAG,CAACxI,GAAJ,CAAQ,eAAR,KAA4B,CAA7B,EAAgC,EAAhC,CAArE;AACAv+F,EAAAA,MAAM,GAAGA,MAAM,GAAGnF,QAAQ,CAACksG,GAAG,CAACxI,GAAJ,CAAQ,aAAR,KAA0B,CAA3B,EAA8B,EAA9B,CAAjB,GAAqD1jG,QAAQ,CAACksG,GAAG,CAACxI,GAAJ,CAAQ,gBAAR,KAA6B,CAA9B,EAAiC,EAAjC,CAAtE;AACA,MAAIl8E,MAAM,CAAChV,KAAP,CAAapN,KAAb,CAAJ,EAAyBA,KAAK,GAAG,CAAR;AACzB,MAAIoiB,MAAM,CAAChV,KAAP,CAAarN,MAAb,CAAJ,EAA0BA,MAAM,GAAG,CAAT;;AAC1B,WAAciC,MAAd,EAAsB;AACpBhC,IAAAA,KAAK,EAALA,KADoB;AAEpBD,IAAAA,MAAM,EAANA,MAFoB;AAGpBpF,IAAAA,IAAI,EAAEqH,MAAM,CAAC63B,YAAP,KAAwB75B,KAAxB,GAAgCD;AAHlB,GAAtB;AAKD;;;;;;;;;;;;;;AChCD;;;;;;AACe,SAASqoG,YAAT,GAAwB;AACrC,MAAMpmG,MAAM,GAAG,IAAf;;AAEA,WAASw7G,iBAAT,CAA2Bz8D,QAA3B,EAAqC;AACnC,QAAI/+C,MAAM,CAAC63B,YAAP,EAAJ,EAA2B;AACzB,aAAOknB,QAAP;AACD,KAHkC,CAGjC;;;AAGF,WAAO;AACL,eAAS,QADJ;AAEL,oBAAc,aAFT;AAGL,wBAAkB,cAHb;AAIL,qBAAe,YAJV;AAKL,sBAAgB,eALX;AAML,sBAAgB,aANX;AAOL,uBAAiB,gBAPZ;AAQL,qBAAe;AARV,MASLA,QATK,CAAP;AAUD;;AAED,WAAS08D,yBAAT,CAAmCjiG,IAAnC,EAAyCxf,KAAzC,EAAgD;AAC9C,WAAOkR,UAAU,CAACsO,IAAI,CAACo5E,gBAAL,CAAsB4oB,iBAAiB,CAACxhH,KAAD,CAAvC,KAAmD,CAApD,CAAjB;AACD;;AAED,MAAMouC,MAAM,GAAGpoC,MAAM,CAACooC,MAAtB;AACA,MACEglE,UADF,GAKIptG,MALJ,CACEotG,UADF;AAAA,MAEQvB,UAFR,GAKI7rG,MALJ,CAEErH,IAFF;AAAA,MAGgB6jE,GAHhB,GAKIx8D,MALJ,CAGEwsG,YAHF;AAAA,MAIEe,QAJF,GAKIvtG,MALJ,CAIEutG,QAJF;AAMA,MAAMoM,SAAS,GAAG35G,MAAM,CAAC8zG,OAAP,IAAkB1rE,MAAM,CAAC0rE,OAAP,CAAex4G,OAAnD;AACA,MAAMogH,oBAAoB,GAAG/B,SAAS,GAAG35G,MAAM,CAAC8zG,OAAP,CAAe7gG,MAAf,CAAsBpZ,MAAzB,GAAkCmG,MAAM,CAACiT,MAAP,CAAcpZ,MAAtF;AACA,MAAMoZ,MAAM,GAAGm6F,UAAU,CAACpwG,QAAX,YAAwBgD,MAAM,CAACooC,MAAP,CAAcojE,UAAtC,EAAf;AACA,MAAMmQ,YAAY,GAAGhC,SAAS,GAAG35G,MAAM,CAAC8zG,OAAP,CAAe7gG,MAAf,CAAsBpZ,MAAzB,GAAkCoZ,MAAM,CAACpZ,MAAvE;AACA,MAAIgtG,QAAQ,GAAG,EAAf;AACA,MAAMF,UAAU,GAAG,EAAnB;AACA,MAAMC,eAAe,GAAG,EAAxB;AACA,MAAIgV,YAAY,GAAGxzE,MAAM,CAACo+D,kBAA1B;;AAEA,MAAI,OAAOoV,YAAP,KAAwB,UAA5B,EAAwC;AACtCA,IAAAA,YAAY,GAAGxzE,MAAM,CAACo+D,kBAAP,CAA0BpoF,IAA1B,CAA+Bpe,MAA/B,CAAf;AACD;;AAED,MAAI67G,WAAW,GAAGzzE,MAAM,CAACqnE,iBAAzB;;AAEA,MAAI,OAAOoM,WAAP,KAAuB,UAA3B,EAAuC;AACrCA,IAAAA,WAAW,GAAGzzE,MAAM,CAACqnE,iBAAP,CAAyBrxF,IAAzB,CAA8Bpe,MAA9B,CAAd;AACD;;AAED,MAAM87G,sBAAsB,GAAG97G,MAAM,CAAC6mG,QAAP,CAAgBhtG,MAA/C;AACA,MAAMkiH,wBAAwB,GAAG/7G,MAAM,CAAC2mG,UAAP,CAAkB9sG,MAAnD;AACA,MAAIu1G,YAAY,GAAGhnE,MAAM,CAACgnE,YAA1B;AACA,MAAI4M,aAAa,GAAG,CAACJ,YAArB;AACA,MAAIK,aAAa,GAAG,CAApB;AACA,MAAIxgH,KAAK,GAAG,CAAZ;;AAEA,MAAI,OAAOowG,UAAP,KAAsB,WAA1B,EAAuC;AACrC;AACD;;AAED,MAAI,OAAOuD,YAAP,KAAwB,QAAxB,IAAoCA,YAAY,CAACluG,OAAb,CAAqB,GAArB,KAA6B,CAArE,EAAwE;AACtEkuG,IAAAA,YAAY,GAAGlkG,UAAU,CAACkkG,YAAY,CAACjuG,OAAb,CAAqB,GAArB,EAA0B,EAA1B,CAAD,CAAV,GAA4C,GAA5C,GAAkD0qG,UAAjE;AACD;;AAED7rG,EAAAA,MAAM,CAACk8G,WAAP,GAAqB,CAAC9M,YAAtB,CAlEqC,CAkED;;AAEpC,MAAI5yC,GAAJ,EAASvpD,MAAM,CAACqpF,GAAP,CAAW;AAClB6f,IAAAA,UAAU,EAAE,EADM;AAElBC,IAAAA,YAAY,EAAE,EAFI;AAGlBC,IAAAA,SAAS,EAAE;AAHO,GAAX,EAAT,KAIQppG,MAAM,CAACqpF,GAAP,CAAW;AACjBggB,IAAAA,WAAW,EAAE,EADI;AAEjBF,IAAAA,YAAY,EAAE,EAFG;AAGjBC,IAAAA,SAAS,EAAE;AAHM,GAAX,EAxE6B,CA4EjC;;AAEJ,MAAIj0E,MAAM,CAACs/D,cAAP,IAAyBt/D,MAAM,CAACq/D,OAApC,EAA6C;AAC3C,+BAAeznG,MAAM,CAACstG,SAAtB,EAAiC,iCAAjC,EAAoE,EAApE;AACA,+BAAettG,MAAM,CAACstG,SAAtB,EAAiC,gCAAjC,EAAmE,EAAnE;AACD;;AAED,MAAMiP,WAAW,GAAGn0E,MAAM,CAAC3tC,IAAP,IAAe2tC,MAAM,CAAC3tC,IAAP,CAAYkqG,IAAZ,GAAmB,CAAlC,IAAuC3kG,MAAM,CAACvF,IAAlE;;AAEA,MAAI8hH,WAAJ,EAAiB;AACfv8G,IAAAA,MAAM,CAACvF,IAAP,CAAY+hH,UAAZ,CAAuBb,YAAvB;AACD,GAvFoC,CAuFnC;;;AAGF,MAAI5P,SAAJ;AACA,MAAM0Q,oBAAoB,GAAGr0E,MAAM,CAACu9D,aAAP,KAAyB,MAAzB,IAAmCv9D,MAAM,CAACg8D,WAA1C,IAAyDl9F,MAAM,CAACC,IAAP,CAAYihC,MAAM,CAACg8D,WAAnB,EAAgCtsF,MAAhC,CAAuC,UAAA/M,GAAG,EAAI;AAClI,WAAO,OAAOq9B,MAAM,CAACg8D,WAAP,CAAmBr5F,GAAnB,EAAwB46F,aAA/B,KAAiD,WAAxD;AACD,GAFqF,EAEnF9rG,MAFmF,GAE1E,CAFZ;;AAIA,OAAK,IAAIQ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGshH,YAApB,EAAkCthH,CAAC,IAAI,CAAvC,EAA0C;AACxC0xG,IAAAA,SAAS,GAAG,CAAZ;AACA,QAAM14F,KAAK,GAAGJ,MAAM,CAACgoE,EAAP,CAAU5gF,CAAV,CAAd;;AAEA,QAAIkiH,WAAJ,EAAiB;AACfv8G,MAAAA,MAAM,CAACvF,IAAP,CAAYiiH,WAAZ,CAAwBriH,CAAxB,EAA2BgZ,KAA3B,EAAkCsoG,YAAlC,EAAgDH,iBAAhD;AACD;;AAED,QAAInoG,KAAK,CAACipF,GAAN,CAAU,SAAV,MAAyB,MAA7B,EAAqC,SARG,CAQO;;AAE/C,QAAIl0D,MAAM,CAACu9D,aAAP,KAAyB,MAA7B,EAAqC;AACnC,UAAI8W,oBAAJ,EAA0B;AACxBxpG,QAAAA,MAAM,CAAC5Y,CAAD,CAAN,CAAU4D,KAAV,CAAgBu9G,iBAAiB,CAAC,OAAD,CAAjC;AACD;;AAED,UAAMmB,WAAW,GAAGvkH,gBAAgB,CAACib,KAAK,CAAC,CAAD,CAAN,CAApC;AACA,UAAMupG,gBAAgB,GAAGvpG,KAAK,CAAC,CAAD,CAAL,CAASpV,KAAT,CAAei9F,SAAxC;AACA,UAAM2hB,sBAAsB,GAAGxpG,KAAK,CAAC,CAAD,CAAL,CAASpV,KAAT,CAAe6+G,eAA9C;;AAEA,UAAIF,gBAAJ,EAAsB;AACpBvpG,QAAAA,KAAK,CAAC,CAAD,CAAL,CAASpV,KAAT,CAAei9F,SAAf,GAA2B,MAA3B;AACD;;AAED,UAAI2hB,sBAAJ,EAA4B;AAC1BxpG,QAAAA,KAAK,CAAC,CAAD,CAAL,CAASpV,KAAT,CAAe6+G,eAAf,GAAiC,MAAjC;AACD;;AAED,UAAI10E,MAAM,CAACwnE,YAAX,EAAyB;AACvB7D,QAAAA,SAAS,GAAG/rG,MAAM,CAAC63B,YAAP,KAAwBxkB,KAAK,CAACoE,UAAN,CAAiB,IAAjB,CAAxB,GAAiDpE,KAAK,CAACo2B,WAAN,CAAkB,IAAlB,CAA7D;AACD,OAFD,MAEO;AACL;AACA,YAAMzrC,KAAK,GAAGy9G,yBAAyB,CAACkB,WAAD,EAAc,OAAd,CAAvC;AACA,YAAM9nE,WAAW,GAAG4mE,yBAAyB,CAACkB,WAAD,EAAc,cAAd,CAA7C;AACA,YAAM7nE,YAAY,GAAG2mE,yBAAyB,CAACkB,WAAD,EAAc,eAAd,CAA9C;AACA,YAAMR,UAAU,GAAGV,yBAAyB,CAACkB,WAAD,EAAc,aAAd,CAA5C;AACA,YAAML,WAAW,GAAGb,yBAAyB,CAACkB,WAAD,EAAc,cAAd,CAA7C;AACA,YAAMlwE,SAAS,GAAGkwE,WAAW,CAAC/pB,gBAAZ,CAA6B,YAA7B,CAAlB;;AAEA,YAAInmD,SAAS,IAAIA,SAAS,KAAK,YAA/B,EAA6C;AAC3Cs/D,UAAAA,SAAS,GAAG/tG,KAAK,GAAGm+G,UAAR,GAAqBG,WAAjC;AACD,SAFD,MAEO;AACL,wBAGIjpG,KAAK,CAAC,CAAD,CAHT;AAAA,cACE7V,WADF,WACEA,WADF;AAAA,cAEEwH,WAFF,WAEEA,WAFF;AAIA+mG,UAAAA,SAAS,GAAG/tG,KAAK,GAAG62C,WAAR,GAAsBC,YAAtB,GAAqCqnE,UAArC,GAAkDG,WAAlD,IAAiEt3G,WAAW,GAAGxH,WAA/E,CAAZ;AACD;AACF;;AAED,UAAIo/G,gBAAJ,EAAsB;AACpBvpG,QAAAA,KAAK,CAAC,CAAD,CAAL,CAASpV,KAAT,CAAei9F,SAAf,GAA2B0hB,gBAA3B;AACD;;AAED,UAAIC,sBAAJ,EAA4B;AAC1BxpG,QAAAA,KAAK,CAAC,CAAD,CAAL,CAASpV,KAAT,CAAe6+G,eAAf,GAAiCD,sBAAjC;AACD;;AAED,UAAIz0E,MAAM,CAACwnE,YAAX,EAAyB7D,SAAS,GAAGnvG,IAAI,CAACC,KAAL,CAAWkvG,SAAX,CAAZ;AAC1B,KAhDD,MAgDO;AACLA,MAAAA,SAAS,GAAG,CAACF,UAAU,GAAG,CAACzjE,MAAM,CAACu9D,aAAP,GAAuB,CAAxB,IAA6ByJ,YAA3C,IAA2DhnE,MAAM,CAACu9D,aAA9E;AACA,UAAIv9D,MAAM,CAACwnE,YAAX,EAAyB7D,SAAS,GAAGnvG,IAAI,CAACC,KAAL,CAAWkvG,SAAX,CAAZ;;AAEzB,UAAI94F,MAAM,CAAC5Y,CAAD,CAAV,EAAe;AACb4Y,QAAAA,MAAM,CAAC5Y,CAAD,CAAN,CAAU4D,KAAV,CAAgBu9G,iBAAiB,CAAC,OAAD,CAAjC,cAAiDzP,SAAjD;AACD;AACF;;AAED,QAAI94F,MAAM,CAAC5Y,CAAD,CAAV,EAAe;AACb4Y,MAAAA,MAAM,CAAC5Y,CAAD,CAAN,CAAU2xG,eAAV,GAA4BD,SAA5B;AACD;;AAEDnF,IAAAA,eAAe,CAACxqG,IAAhB,CAAqB2vG,SAArB;;AAEA,QAAI3jE,MAAM,CAACs/D,cAAX,EAA2B;AACzBsU,MAAAA,aAAa,GAAGA,aAAa,GAAGjQ,SAAS,GAAG,CAA5B,GAAgCkQ,aAAa,GAAG,CAAhD,GAAoD7M,YAApE;AACA,UAAI6M,aAAa,KAAK,CAAlB,IAAuB5hH,CAAC,KAAK,CAAjC,EAAoC2hH,aAAa,GAAGA,aAAa,GAAGnQ,UAAU,GAAG,CAA7B,GAAiCuD,YAAjD;AACpC,UAAI/0G,CAAC,KAAK,CAAV,EAAa2hH,aAAa,GAAGA,aAAa,GAAGnQ,UAAU,GAAG,CAA7B,GAAiCuD,YAAjD;AACb,UAAIxyG,IAAI,CAACs5B,GAAL,CAAS8lF,aAAT,IAA0B,IAAI,IAAlC,EAAwCA,aAAa,GAAG,CAAhB;AACxC,UAAI5zE,MAAM,CAACwnE,YAAX,EAAyBoM,aAAa,GAAGp/G,IAAI,CAACC,KAAL,CAAWm/G,aAAX,CAAhB;AACzB,UAAIvgH,KAAK,GAAG2sC,MAAM,CAACinE,cAAf,KAAkC,CAAtC,EAAyCxI,QAAQ,CAACzqG,IAAT,CAAc4/G,aAAd;AACzCrV,MAAAA,UAAU,CAACvqG,IAAX,CAAgB4/G,aAAhB;AACD,KARD,MAQO;AACL,UAAI5zE,MAAM,CAACwnE,YAAX,EAAyBoM,aAAa,GAAGp/G,IAAI,CAACC,KAAL,CAAWm/G,aAAX,CAAhB;AACzB,UAAI,CAACvgH,KAAK,GAAGmB,IAAI,CAACyH,GAAL,CAASrE,MAAM,CAACooC,MAAP,CAAcknE,kBAAvB,EAA2C7zG,KAA3C,CAAT,IAA8DuE,MAAM,CAACooC,MAAP,CAAcinE,cAA5E,KAA+F,CAAnG,EAAsGxI,QAAQ,CAACzqG,IAAT,CAAc4/G,aAAd;AACtGrV,MAAAA,UAAU,CAACvqG,IAAX,CAAgB4/G,aAAhB;AACAA,MAAAA,aAAa,GAAGA,aAAa,GAAGjQ,SAAhB,GAA4BqD,YAA5C;AACD;;AAEDpvG,IAAAA,MAAM,CAACk8G,WAAP,IAAsBnQ,SAAS,GAAGqD,YAAlC;AACA6M,IAAAA,aAAa,GAAGlQ,SAAhB;AACAtwG,IAAAA,KAAK,IAAI,CAAT;AACD;;AAEDuE,EAAAA,MAAM,CAACk8G,WAAP,GAAqBt/G,IAAI,CAAC0H,GAAL,CAAStE,MAAM,CAACk8G,WAAhB,EAA6BrQ,UAA7B,IAA2CgQ,WAAhE;;AAEA,MAAIr/C,GAAG,IAAI+wC,QAAP,KAAoBnlE,MAAM,CAAC+mE,MAAP,KAAkB,OAAlB,IAA6B/mE,MAAM,CAAC+mE,MAAP,KAAkB,WAAnE,CAAJ,EAAqF;AACnF/B,IAAAA,UAAU,CAAC9Q,GAAX,CAAe;AACbt+F,MAAAA,KAAK,YAAKgC,MAAM,CAACk8G,WAAP,GAAqB9zE,MAAM,CAACgnE,YAAjC;AADQ,KAAf;AAGD;;AAED,MAAIhnE,MAAM,CAAC6mE,cAAX,EAA2B;AACzB7B,IAAAA,UAAU,CAAC9Q,GAAX,qBACGkf,iBAAiB,CAAC,OAAD,CADpB,YACmCx7G,MAAM,CAACk8G,WAAP,GAAqB9zE,MAAM,CAACgnE,YAD/D;AAGD;;AAED,MAAImN,WAAJ,EAAiB;AACfv8G,IAAAA,MAAM,CAACvF,IAAP,CAAYsiH,iBAAZ,CAA8BhR,SAA9B,EAAyClF,QAAzC,EAAmD2U,iBAAnD;AACD,GA5MoC,CA4MnC;;;AAGF,MAAI,CAACpzE,MAAM,CAACs/D,cAAZ,EAA4B;AAC1B,QAAMsV,aAAa,GAAG,EAAtB;;AAEA,SAAK,IAAI3iH,EAAC,GAAG,CAAb,EAAgBA,EAAC,GAAGwsG,QAAQ,CAAChtG,MAA7B,EAAqCQ,EAAC,IAAI,CAA1C,EAA6C;AAC3C,UAAI4iH,cAAc,GAAGpW,QAAQ,CAACxsG,EAAD,CAA7B;AACA,UAAI+tC,MAAM,CAACwnE,YAAX,EAAyBqN,cAAc,GAAGrgH,IAAI,CAACC,KAAL,CAAWogH,cAAX,CAAjB;;AAEzB,UAAIpW,QAAQ,CAACxsG,EAAD,CAAR,IAAe2F,MAAM,CAACk8G,WAAP,GAAqBrQ,UAAxC,EAAoD;AAClDmR,QAAAA,aAAa,CAAC5gH,IAAd,CAAmB6gH,cAAnB;AACD;AACF;;AAEDpW,IAAAA,QAAQ,GAAGmW,aAAX;;AAEA,QAAIpgH,IAAI,CAACC,KAAL,CAAWmD,MAAM,CAACk8G,WAAP,GAAqBrQ,UAAhC,IAA8CjvG,IAAI,CAACC,KAAL,CAAWgqG,QAAQ,CAACA,QAAQ,CAAChtG,MAAT,GAAkB,CAAnB,CAAnB,CAA9C,GAA0F,CAA9F,EAAiG;AAC/FgtG,MAAAA,QAAQ,CAACzqG,IAAT,CAAc4D,MAAM,CAACk8G,WAAP,GAAqBrQ,UAAnC;AACD;AACF;;AAED,MAAIhF,QAAQ,CAAChtG,MAAT,KAAoB,CAAxB,EAA2BgtG,QAAQ,GAAG,CAAC,CAAD,CAAX;;AAE3B,MAAIz+D,MAAM,CAACgnE,YAAP,KAAwB,CAA5B,EAA+B;AAC7B,QAAMrkG,GAAG,GAAG/K,MAAM,CAAC63B,YAAP,MAAyB2kC,GAAzB,GAA+B,YAA/B,GAA8Cg/C,iBAAiB,CAAC,aAAD,CAA3E;AACAvoG,IAAAA,MAAM,CAAC6E,MAAP,CAAc,UAACqhF,CAAD,EAAI1lF,UAAJ,EAAmB;AAC/B,UAAI,CAAC20B,MAAM,CAACq/D,OAAZ,EAAqB,OAAO,IAAP;;AAErB,UAAIh0F,UAAU,KAAKR,MAAM,CAACpZ,MAAP,GAAgB,CAAnC,EAAsC;AACpC,eAAO,KAAP;AACD;;AAED,aAAO,IAAP;AACD,KARD,EAQGyiG,GARH,qBASGvxF,GATH,YASYqkG,YATZ;AAWD;;AAED,MAAIhnE,MAAM,CAACs/D,cAAP,IAAyBt/D,MAAM,CAAConE,oBAApC,EAA0D;AACxD,QAAI0N,aAAa,GAAG,CAApB;AACAtW,IAAAA,eAAe,CAACroG,OAAhB,CAAwB,UAAA4+G,cAAc,EAAI;AACxCD,MAAAA,aAAa,IAAIC,cAAc,IAAI/0E,MAAM,CAACgnE,YAAP,GAAsBhnE,MAAM,CAACgnE,YAA7B,GAA4C,CAAhD,CAA/B;AACD,KAFD;AAGA8N,IAAAA,aAAa,IAAI90E,MAAM,CAACgnE,YAAxB;AACA,QAAMgO,OAAO,GAAGF,aAAa,GAAGrR,UAAhC;AACAhF,IAAAA,QAAQ,GAAGA,QAAQ,CAAC1sG,GAAT,CAAa,UAAA++G,IAAI,EAAI;AAC9B,UAAIA,IAAI,GAAG,CAAX,EAAc,OAAO,CAAC0C,YAAR;AACd,UAAI1C,IAAI,GAAGkE,OAAX,EAAoB,OAAOA,OAAO,GAAGvB,WAAjB;AACpB,aAAO3C,IAAP;AACD,KAJU,CAAX;AAKD;;AAED,MAAI9wE,MAAM,CAACunE,wBAAX,EAAqC;AACnC,QAAIuN,cAAa,GAAG,CAApB;AACAtW,IAAAA,eAAe,CAACroG,OAAhB,CAAwB,UAAA4+G,cAAc,EAAI;AACxCD,MAAAA,cAAa,IAAIC,cAAc,IAAI/0E,MAAM,CAACgnE,YAAP,GAAsBhnE,MAAM,CAACgnE,YAA7B,GAA4C,CAAhD,CAA/B;AACD,KAFD;AAGA8N,IAAAA,cAAa,IAAI90E,MAAM,CAACgnE,YAAxB;;AAEA,QAAI8N,cAAa,GAAGrR,UAApB,EAAgC;AAC9B,UAAMwR,eAAe,GAAG,CAACxR,UAAU,GAAGqR,cAAd,IAA+B,CAAvD;AACArW,MAAAA,QAAQ,CAACtoG,OAAT,CAAiB,UAAC26G,IAAD,EAAOC,SAAP,EAAqB;AACpCtS,QAAAA,QAAQ,CAACsS,SAAD,CAAR,GAAsBD,IAAI,GAAGmE,eAA7B;AACD,OAFD;AAGA1W,MAAAA,UAAU,CAACpoG,OAAX,CAAmB,UAAC26G,IAAD,EAAOC,SAAP,EAAqB;AACtCxS,QAAAA,UAAU,CAACwS,SAAD,CAAV,GAAwBD,IAAI,GAAGmE,eAA/B;AACD,OAFD;AAGD;AACF;;AAED,WAAcr9G,MAAd,EAAsB;AACpBiT,IAAAA,MAAM,EAANA,MADoB;AAEpB4zF,IAAAA,QAAQ,EAARA,QAFoB;AAGpBF,IAAAA,UAAU,EAAVA,UAHoB;AAIpBC,IAAAA,eAAe,EAAfA;AAJoB,GAAtB;;AAOA,MAAIx+D,MAAM,CAACs/D,cAAP,IAAyBt/D,MAAM,CAACq/D,OAAhC,IAA2C,CAACr/D,MAAM,CAAConE,oBAAvD,EAA6E;AAC3E,+BAAexvG,MAAM,CAACstG,SAAtB,EAAiC,iCAAjC,YAAuE,CAACzG,QAAQ,CAAC,CAAD,CAAhF;AACA,+BAAe7mG,MAAM,CAACstG,SAAtB,EAAiC,gCAAjC,YAAsEttG,MAAM,CAACrH,IAAP,GAAc,CAAd,GAAkBiuG,eAAe,CAACA,eAAe,CAAC/sG,MAAhB,GAAyB,CAA1B,CAAf,GAA8C,CAAtI;AACA,QAAMyjH,aAAa,GAAG,CAACt9G,MAAM,CAAC6mG,QAAP,CAAgB,CAAhB,CAAvB;AACA,QAAM0W,eAAe,GAAG,CAACv9G,MAAM,CAAC2mG,UAAP,CAAkB,CAAlB,CAAzB;AACA3mG,IAAAA,MAAM,CAAC6mG,QAAP,GAAkB7mG,MAAM,CAAC6mG,QAAP,CAAgB1sG,GAAhB,CAAoB,UAAAqlB,CAAC;AAAA,aAAIA,CAAC,GAAG89F,aAAR;AAAA,KAArB,CAAlB;AACAt9G,IAAAA,MAAM,CAAC2mG,UAAP,GAAoB3mG,MAAM,CAAC2mG,UAAP,CAAkBxsG,GAAlB,CAAsB,UAAAqlB,CAAC;AAAA,aAAIA,CAAC,GAAG+9F,eAAR;AAAA,KAAvB,CAApB;AACD;;AAED,MAAI5B,YAAY,KAAKD,oBAArB,EAA2C;AACzC17G,IAAAA,MAAM,CAACimG,IAAP,CAAY,oBAAZ;AACD;;AAED,MAAIY,QAAQ,CAAChtG,MAAT,KAAoBiiH,sBAAxB,EAAgD;AAC9C,QAAI97G,MAAM,CAACooC,MAAP,CAAcwkE,aAAlB,EAAiC5sG,MAAM,CAACqmG,aAAP;AACjCrmG,IAAAA,MAAM,CAACimG,IAAP,CAAY,sBAAZ;AACD;;AAED,MAAIU,UAAU,CAAC9sG,MAAX,KAAsBkiH,wBAA1B,EAAoD;AAClD/7G,IAAAA,MAAM,CAACimG,IAAP,CAAY,wBAAZ;AACD;;AAED,MAAI79D,MAAM,CAACsoE,mBAAX,EAAgC;AAC9B1wG,IAAAA,MAAM,CAAC46G,kBAAP;AACD;;AAED,MAAI,CAACjB,SAAD,IAAc,CAACvxE,MAAM,CAACq/D,OAAtB,KAAkCr/D,MAAM,CAAC+mE,MAAP,KAAkB,OAAlB,IAA6B/mE,MAAM,CAAC+mE,MAAP,KAAkB,MAAjF,CAAJ,EAA8F;AAC5F,QAAMqO,mBAAmB,aAAMp1E,MAAM,CAACm9D,sBAAb,oBAAzB;AACA,QAAMkY,0BAA0B,GAAGz9G,MAAM,CAAC8kG,GAAP,CAAWljF,QAAX,CAAoB47F,mBAApB,CAAnC;;AAEA,QAAI7B,YAAY,IAAIvzE,MAAM,CAACopE,uBAA3B,EAAoD;AAClD,UAAI,CAACiM,0BAAL,EAAiCz9G,MAAM,CAAC8kG,GAAP,CAAWjkF,QAAX,CAAoB28F,mBAApB;AAClC,KAFD,MAEO,IAAIC,0BAAJ,EAAgC;AACrCz9G,MAAAA,MAAM,CAAC8kG,GAAP,CAAW9iF,WAAX,CAAuBw7F,mBAAvB;AACD;AACF;AACF;;;;;;;;;;;;;;AC/Tc,SAASnS,mBAAT,GAA+B;AAC5C,MAAMrrG,MAAM,GAAG,IAAf;AACA,MACEiT,MADF,GAMIjT,MANJ,CACEiT,MADF;AAAA,MAEEm1B,MAFF,GAMIpoC,MANJ,CAEEooC,MAFF;AAAA,MAGEglE,UAHF,GAMIptG,MANJ,CAGEotG,UAHF;AAAA,MAIEl6F,WAJF,GAMIlT,MANJ,CAIEkT,WAJF;AAAA,MAKE+1F,SALF,GAMIjpG,MANJ,CAKEipG,SALF;AAOA,MAAM0Q,SAAS,GAAG35G,MAAM,CAAC8zG,OAAP,IAAkB1rE,MAAM,CAAC0rE,OAAP,CAAex4G,OAAnD;AACA2X,EAAAA,MAAM,CAAC+O,WAAP,WAAsBomB,MAAM,CAAC4lE,gBAA7B,cAAiD5lE,MAAM,CAAC6lE,cAAxD,cAA0E7lE,MAAM,CAAC8lE,cAAjF,cAAmG9lE,MAAM,CAACspE,yBAA1G,cAAuItpE,MAAM,CAACwpE,uBAA9I,cAAyKxpE,MAAM,CAACypE,uBAAhL;AACA,MAAI6L,WAAJ;;AAEA,MAAI/D,SAAJ,EAAe;AACb+D,IAAAA,WAAW,GAAG19G,MAAM,CAACotG,UAAP,CAAkBnP,IAAlB,YAA2B71D,MAAM,CAACojE,UAAlC,wCAAyEt4F,WAAzE,SAAd;AACD,GAFD,MAEO;AACLwqG,IAAAA,WAAW,GAAGzqG,MAAM,CAACgoE,EAAP,CAAU/nE,WAAV,CAAd;AACD,GAjB2C,CAiB1C;;;AAGFwqG,EAAAA,WAAW,CAAC78F,QAAZ,CAAqBunB,MAAM,CAAC4lE,gBAA5B;;AAEA,MAAI5lE,MAAM,CAACjoC,IAAX,EAAiB;AACf;AACA,QAAIu9G,WAAW,CAAC97F,QAAZ,CAAqBwmB,MAAM,CAACupE,mBAA5B,CAAJ,EAAsD;AACpDvE,MAAAA,UAAU,CAACpwG,QAAX,YAAwBorC,MAAM,CAACojE,UAA/B,mBAAkDpjE,MAAM,CAACupE,mBAAzD,yCAA0G1I,SAA1G,UAAyHpoF,QAAzH,CAAkIunB,MAAM,CAACspE,yBAAzI;AACD,KAFD,MAEO;AACLtE,MAAAA,UAAU,CAACpwG,QAAX,YAAwBorC,MAAM,CAACojE,UAA/B,cAA6CpjE,MAAM,CAACupE,mBAApD,wCAAoG1I,SAApG,UAAmHpoF,QAAnH,CAA4HunB,MAAM,CAACspE,yBAAnI;AACD;AACF,GA7B2C,CA6B1C;;;AAGF,MAAIiM,SAAS,GAAGD,WAAW,CAAC9f,OAAZ,YAAwBx1D,MAAM,CAACojE,UAA/B,GAA6CvwB,EAA7C,CAAgD,CAAhD,EAAmDp6D,QAAnD,CAA4DunB,MAAM,CAAC6lE,cAAnE,CAAhB;;AAEA,MAAI7lE,MAAM,CAACjoC,IAAP,IAAew9G,SAAS,CAAC9jH,MAAV,KAAqB,CAAxC,EAA2C;AACzC8jH,IAAAA,SAAS,GAAG1qG,MAAM,CAACgoE,EAAP,CAAU,CAAV,CAAZ;AACA0iC,IAAAA,SAAS,CAAC98F,QAAV,CAAmBunB,MAAM,CAAC6lE,cAA1B;AACD,GArC2C,CAqC1C;;;AAGF,MAAI2P,SAAS,GAAGF,WAAW,CAAC5f,OAAZ,YAAwB11D,MAAM,CAACojE,UAA/B,GAA6CvwB,EAA7C,CAAgD,CAAhD,EAAmDp6D,QAAnD,CAA4DunB,MAAM,CAAC8lE,cAAnE,CAAhB;;AAEA,MAAI9lE,MAAM,CAACjoC,IAAP,IAAey9G,SAAS,CAAC/jH,MAAV,KAAqB,CAAxC,EAA2C;AACzC+jH,IAAAA,SAAS,GAAG3qG,MAAM,CAACgoE,EAAP,CAAU,CAAC,CAAX,CAAZ;AACA2iC,IAAAA,SAAS,CAAC/8F,QAAV,CAAmBunB,MAAM,CAAC8lE,cAA1B;AACD;;AAED,MAAI9lE,MAAM,CAACjoC,IAAX,EAAiB;AACf;AACA,QAAIw9G,SAAS,CAAC/7F,QAAV,CAAmBwmB,MAAM,CAACupE,mBAA1B,CAAJ,EAAoD;AAClDvE,MAAAA,UAAU,CAACpwG,QAAX,YAAwBorC,MAAM,CAACojE,UAA/B,mBAAkDpjE,MAAM,CAACupE,mBAAzD,yCAA0GgM,SAAS,CAACpjB,IAAV,CAAe,yBAAf,CAA1G,UAAyJ15E,QAAzJ,CAAkKunB,MAAM,CAACwpE,uBAAzK;AACD,KAFD,MAEO;AACLxE,MAAAA,UAAU,CAACpwG,QAAX,YAAwBorC,MAAM,CAACojE,UAA/B,cAA6CpjE,MAAM,CAACupE,mBAApD,wCAAoGgM,SAAS,CAACpjB,IAAV,CAAe,yBAAf,CAApG,UAAmJ15E,QAAnJ,CAA4JunB,MAAM,CAACwpE,uBAAnK;AACD;;AAED,QAAIgM,SAAS,CAACh8F,QAAV,CAAmBwmB,MAAM,CAACupE,mBAA1B,CAAJ,EAAoD;AAClDvE,MAAAA,UAAU,CAACpwG,QAAX,YAAwBorC,MAAM,CAACojE,UAA/B,mBAAkDpjE,MAAM,CAACupE,mBAAzD,yCAA0GiM,SAAS,CAACrjB,IAAV,CAAe,yBAAf,CAA1G,UAAyJ15E,QAAzJ,CAAkKunB,MAAM,CAACypE,uBAAzK;AACD,KAFD,MAEO;AACLzE,MAAAA,UAAU,CAACpwG,QAAX,YAAwBorC,MAAM,CAACojE,UAA/B,cAA6CpjE,MAAM,CAACupE,mBAApD,wCAAoGiM,SAAS,CAACrjB,IAAV,CAAe,yBAAf,CAApG,UAAmJ15E,QAAnJ,CAA4JunB,MAAM,CAACypE,uBAAnK;AACD;AACF;;AAED7xG,EAAAA,MAAM,CAAC69G,iBAAP;AACD;;;;;;;;;;;;;;AC/Dc,SAASjD,kBAAT,GAA8B;AAC3C,MAAM56G,MAAM,GAAG,IAAf;AACA,MAAMiT,MAAM,GAAGjT,MAAM,CAACiT,MAAtB;;AAEA,OAAK,IAAI5Y,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4Y,MAAM,CAACpZ,MAA3B,EAAmCQ,CAAC,IAAI,CAAxC,EAA2C;AACzC4Y,IAAAA,MAAM,CAAC5Y,CAAD,CAAN,CAAUyjH,iBAAV,GAA8B99G,MAAM,CAAC63B,YAAP,KAAwB5kB,MAAM,CAAC5Y,CAAD,CAAN,CAAUk/C,UAAlC,GAA+CtmC,MAAM,CAAC5Y,CAAD,CAAN,CAAU0jH,SAAvF;AACD;AACF;;;;;;;;;;;;;;ACPD;;;;AACe,SAASlD,oBAAT,CAA8B5qD,SAA9B,EAAyC;AACtD,MAAIA,SAAS,KAAK,KAAK,CAAvB,EAA0B;AACxBA,IAAAA,SAAS,GAAG,QAAQ,KAAKA,SAAb,IAA0B,CAAtC;AACD;;AAED,MAAMjwD,MAAM,GAAG,IAAf;AACA,MAAMooC,MAAM,GAAGpoC,MAAM,CAACooC,MAAtB;AACA,MACEn1B,MADF,GAIIjT,MAJJ,CACEiT,MADF;AAAA,MAEgBupD,GAFhB,GAIIx8D,MAJJ,CAEEwsG,YAFF;AAAA,MAGE3F,QAHF,GAII7mG,MAJJ,CAGE6mG,QAHF;AAKA,MAAI5zF,MAAM,CAACpZ,MAAP,KAAkB,CAAtB,EAAyB;AACzB,MAAI,OAAOoZ,MAAM,CAAC,CAAD,CAAN,CAAU6qG,iBAAjB,KAAuC,WAA3C,EAAwD99G,MAAM,CAAC46G,kBAAP;AACxD,MAAIoD,YAAY,GAAG,CAAC/tD,SAApB;AACA,MAAIuM,GAAJ,EAASwhD,YAAY,GAAG/tD,SAAf,CAf6C,CAenB;;AAEnCh9C,EAAAA,MAAM,CAAC+O,WAAP,CAAmBomB,MAAM,CAAC2lE,iBAA1B;AACA/tG,EAAAA,MAAM,CAACi+G,oBAAP,GAA8B,EAA9B;AACAj+G,EAAAA,MAAM,CAACm7G,aAAP,GAAuB,EAAvB;;AAEA,OAAK,IAAI9gH,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4Y,MAAM,CAACpZ,MAA3B,EAAmCQ,CAAC,IAAI,CAAxC,EAA2C;AACzC,QAAMgZ,KAAK,GAAGJ,MAAM,CAAC5Y,CAAD,CAApB;AACA,QAAI6jH,WAAW,GAAG7qG,KAAK,CAACyqG,iBAAxB;;AAEA,QAAI11E,MAAM,CAACq/D,OAAP,IAAkBr/D,MAAM,CAACs/D,cAA7B,EAA6C;AAC3CwW,MAAAA,WAAW,IAAIjrG,MAAM,CAAC,CAAD,CAAN,CAAU6qG,iBAAzB;AACD;;AAED,QAAMK,aAAa,GAAG,CAACH,YAAY,IAAI51E,MAAM,CAACs/D,cAAP,GAAwB1nG,MAAM,CAACirG,YAAP,EAAxB,GAAgD,CAApD,CAAZ,GAAqEiT,WAAtE,KAAsF7qG,KAAK,CAAC24F,eAAN,GAAwB5jE,MAAM,CAACgnE,YAArH,CAAtB;AACA,QAAMgP,qBAAqB,GAAG,CAACJ,YAAY,GAAGnX,QAAQ,CAAC,CAAD,CAAvB,IAA8Bz+D,MAAM,CAACs/D,cAAP,GAAwB1nG,MAAM,CAACirG,YAAP,EAAxB,GAAgD,CAA9E,IAAmFiT,WAApF,KAAoG7qG,KAAK,CAAC24F,eAAN,GAAwB5jE,MAAM,CAACgnE,YAAnI,CAA9B;AACA,QAAMiP,WAAW,GAAG,EAAEL,YAAY,GAAGE,WAAjB,CAApB;AACA,QAAMI,UAAU,GAAGD,WAAW,GAAGr+G,MAAM,CAAC4mG,eAAP,CAAuBvsG,CAAvB,CAAjC;AACA,QAAMkkH,SAAS,GAAGF,WAAW,IAAI,CAAf,IAAoBA,WAAW,GAAGr+G,MAAM,CAACrH,IAAP,GAAc,CAAhD,IAAqD2lH,UAAU,GAAG,CAAb,IAAkBA,UAAU,IAAIt+G,MAAM,CAACrH,IAA5F,IAAoG0lH,WAAW,IAAI,CAAf,IAAoBC,UAAU,IAAIt+G,MAAM,CAACrH,IAA/J;;AAEA,QAAI4lH,SAAJ,EAAe;AACbv+G,MAAAA,MAAM,CAACm7G,aAAP,CAAqB/+G,IAArB,CAA0BiX,KAA1B;AACArT,MAAAA,MAAM,CAACi+G,oBAAP,CAA4B7hH,IAA5B,CAAiC/B,CAAjC;AACA4Y,MAAAA,MAAM,CAACgoE,EAAP,CAAU5gF,CAAV,EAAawmB,QAAb,CAAsBunB,MAAM,CAAC2lE,iBAA7B;AACD;;AAED16F,IAAAA,KAAK,CAACpM,QAAN,GAAiBu1D,GAAG,GAAG,CAAC2hD,aAAJ,GAAoBA,aAAxC;AACA9qG,IAAAA,KAAK,CAACmrG,gBAAN,GAAyBhiD,GAAG,GAAG,CAAC4hD,qBAAJ,GAA4BA,qBAAxD;AACD;;AAEDp+G,EAAAA,MAAM,CAACm7G,aAAP,GAAuB,kBAAEn7G,MAAM,CAACm7G,aAAT,CAAvB;AACD;;;;;;;;;;;;;;AC/CD;;AACA;;;;AACe,SAASsD,IAAT,CAAcvH,IAAd,EAAoB;AACjC,MACEl3G,MADF,GAIIk3G,IAJJ,CACEl3G,MADF;AAAA,MAEE4oG,YAFF,GAIIsO,IAJJ,CAEEtO,YAFF;AAAA,MAGE7lG,EAHF,GAIIm0G,IAJJ,CAGEn0G,EAHF;AAKA6lG,EAAAA,YAAY,CAAC;AACX8V,IAAAA,IAAI,EAAE;AACJpjH,MAAAA,OAAO,EAAE,IADL;AAEJqjH,MAAAA,iBAAiB,EAAE,qBAFf;AAGJC,MAAAA,gBAAgB,EAAE,gBAHd;AAIJC,MAAAA,gBAAgB,EAAE,YAJd;AAKJC,MAAAA,iBAAiB,EAAE,yBALf;AAMJC,MAAAA,gBAAgB,EAAE,wBANd;AAOJC,MAAAA,uBAAuB,EAAE,uBAPrB;AAQJC,MAAAA,iBAAiB,EAAE,8BARf;AASJC,MAAAA,gBAAgB,EAAE,IATd;AAUJC,MAAAA,+BAA+B,EAAE,IAV7B;AAWJC,MAAAA,0BAA0B,EAAE,IAXxB;AAYJC,MAAAA,SAAS,EAAE;AAZP;AADK,GAAD,CAAZ;AAgBA,MAAIC,UAAU,GAAG,IAAjB;;AAEA,WAASzzD,MAAT,CAAgB0zD,OAAhB,EAAyB;AACvB,QAAMC,YAAY,GAAGF,UAArB;AACA,QAAIE,YAAY,CAAC3lH,MAAb,KAAwB,CAA5B,EAA+B;AAC/B2lH,IAAAA,YAAY,CAACvyG,IAAb,CAAkB,EAAlB;AACAuyG,IAAAA,YAAY,CAACvyG,IAAb,CAAkBsyG,OAAlB;AACD;;AAED,WAASE,eAAT,CAAyB9mH,IAAzB,EAA+B;AAC7B,QAAIA,IAAI,KAAK,KAAK,CAAlB,EAAqB;AACnBA,MAAAA,IAAI,GAAG,EAAP;AACD;;AAED,QAAM+mH,UAAU,GAAG,SAAbA,UAAa;AAAA,aAAM9iH,IAAI,CAACu1C,KAAL,CAAW,KAAKv1C,IAAI,CAAC+iH,MAAL,EAAhB,EAA+BlrG,QAA/B,CAAwC,EAAxC,CAAN;AAAA,KAAnB;;AAEA,WAAO,IAAImrG,MAAJ,CAAWjnH,IAAX,EAAiBwI,OAAjB,CAAyB,IAAzB,EAA+Bu+G,UAA/B,CAAP;AACD;;AAED,WAASG,eAAT,CAAyB/a,GAAzB,EAA8B;AAC5BA,IAAAA,GAAG,CAACvK,IAAJ,CAAS,UAAT,EAAqB,GAArB;AACD;;AAED,WAASulB,kBAAT,CAA4Bhb,GAA5B,EAAiC;AAC/BA,IAAAA,GAAG,CAACvK,IAAJ,CAAS,UAAT,EAAqB,IAArB;AACD;;AAED,WAASwlB,SAAT,CAAmBjb,GAAnB,EAAwBkb,IAAxB,EAA8B;AAC5Blb,IAAAA,GAAG,CAACvK,IAAJ,CAAS,MAAT,EAAiBylB,IAAjB;AACD;;AAED,WAASC,oBAAT,CAA8Bnb,GAA9B,EAAmCob,WAAnC,EAAgD;AAC9Cpb,IAAAA,GAAG,CAACvK,IAAJ,CAAS,sBAAT,EAAiC2lB,WAAjC;AACD;;AAED,WAASC,aAAT,CAAuBrb,GAAvB,EAA4Bsb,QAA5B,EAAsC;AACpCtb,IAAAA,GAAG,CAACvK,IAAJ,CAAS,eAAT,EAA0B6lB,QAA1B;AACD;;AAED,WAASC,UAAT,CAAoBvb,GAApB,EAAyB9qG,KAAzB,EAAgC;AAC9B8qG,IAAAA,GAAG,CAACvK,IAAJ,CAAS,YAAT,EAAuBvgG,KAAvB;AACD;;AAED,WAASsmH,OAAT,CAAiBxb,GAAjB,EAAsBltF,EAAtB,EAA0B;AACxBktF,IAAAA,GAAG,CAACvK,IAAJ,CAAS,IAAT,EAAe3iF,EAAf;AACD;;AAED,WAAS2oG,SAAT,CAAmBzb,GAAnB,EAAwB0b,IAAxB,EAA8B;AAC5B1b,IAAAA,GAAG,CAACvK,IAAJ,CAAS,WAAT,EAAsBimB,IAAtB;AACD;;AAED,WAASC,SAAT,CAAmB3b,GAAnB,EAAwB;AACtBA,IAAAA,GAAG,CAACvK,IAAJ,CAAS,eAAT,EAA0B,IAA1B;AACD;;AAED,WAASmmB,QAAT,CAAkB5b,GAAlB,EAAuB;AACrBA,IAAAA,GAAG,CAACvK,IAAJ,CAAS,eAAT,EAA0B,KAA1B;AACD;;AAED,WAASomB,iBAAT,CAA2BjkH,CAA3B,EAA8B;AAC5B,QAAIA,CAAC,CAACkkH,OAAF,KAAc,EAAd,IAAoBlkH,CAAC,CAACkkH,OAAF,KAAc,EAAtC,EAA0C;AAC1C,QAAMx4E,MAAM,GAAGpoC,MAAM,CAACooC,MAAP,CAAcs2E,IAA7B;AACA,QAAMvJ,SAAS,GAAG,kBAAEz4G,CAAC,CAACwS,MAAJ,CAAlB;;AAEA,QAAIlP,MAAM,CAACg0G,UAAP,IAAqBh0G,MAAM,CAACg0G,UAAP,CAAkB6M,OAAvC,IAAkD1L,SAAS,CAAC1Z,EAAV,CAAaz7F,MAAM,CAACg0G,UAAP,CAAkB6M,OAA/B,CAAtD,EAA+F;AAC7F,UAAI,EAAE7gH,MAAM,CAAC8mG,KAAP,IAAgB,CAAC9mG,MAAM,CAACooC,MAAP,CAAcjoC,IAAjC,CAAJ,EAA4C;AAC1CH,QAAAA,MAAM,CAACq4G,SAAP;AACD;;AAED,UAAIr4G,MAAM,CAAC8mG,KAAX,EAAkB;AAChBj7C,QAAAA,MAAM,CAACzjB,MAAM,CAAC22E,gBAAR,CAAN;AACD,OAFD,MAEO;AACLlzD,QAAAA,MAAM,CAACzjB,MAAM,CAACy2E,gBAAR,CAAN;AACD;AACF;;AAED,QAAI7+G,MAAM,CAACg0G,UAAP,IAAqBh0G,MAAM,CAACg0G,UAAP,CAAkB8M,OAAvC,IAAkD3L,SAAS,CAAC1Z,EAAV,CAAaz7F,MAAM,CAACg0G,UAAP,CAAkB8M,OAA/B,CAAtD,EAA+F;AAC7F,UAAI,EAAE9gH,MAAM,CAACkpG,WAAP,IAAsB,CAAClpG,MAAM,CAACooC,MAAP,CAAcjoC,IAAvC,CAAJ,EAAkD;AAChDH,QAAAA,MAAM,CAACs4G,SAAP;AACD;;AAED,UAAIt4G,MAAM,CAACkpG,WAAX,EAAwB;AACtBr9C,QAAAA,MAAM,CAACzjB,MAAM,CAAC02E,iBAAR,CAAN;AACD,OAFD,MAEO;AACLjzD,QAAAA,MAAM,CAACzjB,MAAM,CAACw2E,gBAAR,CAAN;AACD;AACF;;AAED,QAAI5+G,MAAM,CAAC+gH,UAAP,IAAqB5L,SAAS,CAAC1Z,EAAV,CAAa,gCAAkBz7F,MAAM,CAACooC,MAAP,CAAc24E,UAAd,CAAyBC,WAA3C,CAAb,CAAzB,EAAgG;AAC9F7L,MAAAA,SAAS,CAAC,CAAD,CAAT,CAAa3U,KAAb;AACD;AACF;;AAED,WAASygB,gBAAT,GAA4B;AAC1B,QAAIjhH,MAAM,CAACooC,MAAP,CAAcjoC,IAAd,IAAsBH,MAAM,CAACooC,MAAP,CAAc8oE,MAApC,IAA8C,CAAClxG,MAAM,CAACg0G,UAA1D,EAAsE;AACtE,6BAGIh0G,MAAM,CAACg0G,UAHX;AAAA,QACE6M,OADF,sBACEA,OADF;AAAA,QAEEC,OAFF,sBAEEA,OAFF;;AAKA,QAAIA,OAAO,IAAIA,OAAO,CAACjnH,MAAR,GAAiB,CAAhC,EAAmC;AACjC,UAAImG,MAAM,CAACkpG,WAAX,EAAwB;AACtBuX,QAAAA,SAAS,CAACK,OAAD,CAAT;AACAhB,QAAAA,kBAAkB,CAACgB,OAAD,CAAlB;AACD,OAHD,MAGO;AACLJ,QAAAA,QAAQ,CAACI,OAAD,CAAR;AACAjB,QAAAA,eAAe,CAACiB,OAAD,CAAf;AACD;AACF;;AAED,QAAID,OAAO,IAAIA,OAAO,CAAChnH,MAAR,GAAiB,CAAhC,EAAmC;AACjC,UAAImG,MAAM,CAAC8mG,KAAX,EAAkB;AAChB2Z,QAAAA,SAAS,CAACI,OAAD,CAAT;AACAf,QAAAA,kBAAkB,CAACe,OAAD,CAAlB;AACD,OAHD,MAGO;AACLH,QAAAA,QAAQ,CAACG,OAAD,CAAR;AACAhB,QAAAA,eAAe,CAACgB,OAAD,CAAf;AACD;AACF;AACF;;AAED,WAASK,aAAT,GAAyB;AACvB,WAAOlhH,MAAM,CAAC+gH,UAAP,IAAqB/gH,MAAM,CAAC+gH,UAAP,CAAkBI,OAAvC,IAAkDnhH,MAAM,CAAC+gH,UAAP,CAAkBI,OAAlB,CAA0BtnH,MAAnF;AACD;;AAED,WAASunH,sBAAT,GAAkC;AAChC,WAAOF,aAAa,MAAMlhH,MAAM,CAACooC,MAAP,CAAc24E,UAAd,CAAyBM,SAAnD;AACD;;AAED,WAASC,gBAAT,GAA4B;AAC1B,QAAMl5E,MAAM,GAAGpoC,MAAM,CAACooC,MAAP,CAAcs2E,IAA7B;AACA,QAAI,CAACwC,aAAa,EAAlB,EAAsB;AACtBlhH,IAAAA,MAAM,CAAC+gH,UAAP,CAAkBI,OAAlB,CAA0BjtC,IAA1B,CAA+B,UAAAqtC,QAAQ,EAAI;AACzC,UAAMC,SAAS,GAAG,kBAAED,QAAF,CAAlB;;AAEA,UAAIvhH,MAAM,CAACooC,MAAP,CAAc24E,UAAd,CAAyBM,SAA7B,EAAwC;AACtCxB,QAAAA,eAAe,CAAC2B,SAAD,CAAf;;AAEA,YAAI,CAACxhH,MAAM,CAACooC,MAAP,CAAc24E,UAAd,CAAyBU,YAA9B,EAA4C;AAC1C1B,UAAAA,SAAS,CAACyB,SAAD,EAAY,QAAZ,CAAT;AACAnB,UAAAA,UAAU,CAACmB,SAAD,EAAYp5E,MAAM,CAAC42E,uBAAP,CAA+B79G,OAA/B,CAAuC,eAAvC,EAAwDqgH,SAAS,CAAC/lH,KAAV,KAAoB,CAA5E,CAAZ,CAAV;AACD;AACF;;AAED,UAAI+lH,SAAS,CAAC/lB,EAAV,YAAiBz7F,MAAM,CAACooC,MAAP,CAAc24E,UAAd,CAAyBW,iBAA1C,EAAJ,EAAoE;AAClEF,QAAAA,SAAS,CAACjnB,IAAV,CAAe,cAAf,EAA+B,MAA/B;AACD,OAFD,MAEO;AACLinB,QAAAA,SAAS,CAAC9mB,UAAV,CAAqB,cAArB;AACD;AACF,KAjBD;AAkBD;;AAED,MAAMinB,SAAS,GAAG,SAAZA,SAAY,CAAC7c,GAAD,EAAM8c,SAAN,EAAiBrC,OAAjB,EAA6B;AAC7CM,IAAAA,eAAe,CAAC/a,GAAD,CAAf;;AAEA,QAAIA,GAAG,CAAC,CAAD,CAAH,CAAOvtF,OAAP,KAAmB,QAAvB,EAAiC;AAC/BwoG,MAAAA,SAAS,CAACjb,GAAD,EAAM,QAAN,CAAT;AACAA,MAAAA,GAAG,CAAC/hG,EAAJ,CAAO,SAAP,EAAkB49G,iBAAlB;AACD;;AAEDN,IAAAA,UAAU,CAACvb,GAAD,EAAMya,OAAN,CAAV;AACAY,IAAAA,aAAa,CAACrb,GAAD,EAAM8c,SAAN,CAAb;AACD,GAVD;;AAYA,MAAMC,WAAW,GAAG,SAAdA,WAAc,CAAAnlH,CAAC,EAAI;AACvB,QAAM6uG,OAAO,GAAG7uG,CAAC,CAACwS,MAAF,CAASjM,OAAT,YAAqBjD,MAAM,CAACooC,MAAP,CAAcojE,UAAnC,EAAhB;AACA,QAAI,CAACD,OAAD,IAAY,CAACvrG,MAAM,CAACiT,MAAP,CAAc+0B,QAAd,CAAuBujE,OAAvB,CAAjB,EAAkD;AAClD,QAAMuW,QAAQ,GAAG9hH,MAAM,CAACiT,MAAP,CAAc/R,OAAd,CAAsBqqG,OAAtB,MAAmCvrG,MAAM,CAACkT,WAA3D;AACA,QAAMqrG,SAAS,GAAGv+G,MAAM,CAACooC,MAAP,CAAcsoE,mBAAd,IAAqC1wG,MAAM,CAACm7G,aAA5C,IAA6Dn7G,MAAM,CAACm7G,aAAP,CAAqBnzE,QAArB,CAA8BujE,OAA9B,CAA/E;AACA,QAAIuW,QAAQ,IAAIvD,SAAhB,EAA2B;AAC3Bv+G,IAAAA,MAAM,CAAC0T,OAAP,CAAe1T,MAAM,CAACiT,MAAP,CAAc/R,OAAd,CAAsBqqG,OAAtB,CAAf,EAA+C,CAA/C;AACD,GAPD;;AASA,WAAS1pG,IAAT,GAAgB;AACd,QAAMumC,MAAM,GAAGpoC,MAAM,CAACooC,MAAP,CAAcs2E,IAA7B;AACA1+G,IAAAA,MAAM,CAAC8kG,GAAP,CAAW5H,MAAX,CAAkBoiB,UAAlB,EAFc,CAEiB;;AAE/B,QAAMyC,YAAY,GAAG/hH,MAAM,CAAC8kG,GAA5B;;AAEA,QAAI18D,MAAM,CAAC+2E,+BAAX,EAA4C;AAC1Cc,MAAAA,oBAAoB,CAAC8B,YAAD,EAAe35E,MAAM,CAAC+2E,+BAAtB,CAApB;AACD;;AAED,QAAI/2E,MAAM,CAAC82E,gBAAX,EAA6B;AAC3BmB,MAAAA,UAAU,CAAC0B,YAAD,EAAe35E,MAAM,CAAC82E,gBAAtB,CAAV;AACD,KAZa,CAYZ;;;AAGF,QAAM9R,UAAU,GAAGptG,MAAM,CAACotG,UAA1B;AACA,QAAMwU,SAAS,GAAGxU,UAAU,CAAC7S,IAAX,CAAgB,IAAhB,8BAA2CklB,eAAe,CAAC,EAAD,CAA1D,CAAlB;AACA,QAAMe,IAAI,GAAGxgH,MAAM,CAACooC,MAAP,CAAcnoC,QAAd,IAA0BD,MAAM,CAACooC,MAAP,CAAcnoC,QAAd,CAAuB3E,OAAjD,GAA2D,KAA3D,GAAmE,QAAhF;AACAglH,IAAAA,OAAO,CAAClT,UAAD,EAAawU,SAAb,CAAP;AACArB,IAAAA,SAAS,CAACnT,UAAD,EAAaoT,IAAb,CAAT,CAnBc,CAmBe;;AAE7B,QAAIp4E,MAAM,CAACg3E,0BAAX,EAAuC;AACrCa,MAAAA,oBAAoB,CAAC,kBAAEjgH,MAAM,CAACiT,MAAT,CAAD,EAAmBm1B,MAAM,CAACg3E,0BAA1B,CAApB;AACD;;AAEDW,IAAAA,SAAS,CAAC,kBAAE//G,MAAM,CAACiT,MAAT,CAAD,EAAmBm1B,MAAM,CAACi3E,SAA1B,CAAT;AACA,QAAM1D,YAAY,GAAG37G,MAAM,CAACooC,MAAP,CAAcjoC,IAAd,GAAqBH,MAAM,CAACiT,MAAP,CAAc6E,MAAd,CAAqB,UAAAotB,EAAE;AAAA,aAAI,CAACA,EAAE,CAAC7jC,SAAH,CAAagsC,QAAb,CAAsBrtC,MAAM,CAACooC,MAAP,CAAcupE,mBAApC,CAAL;AAAA,KAAvB,EAAsF93G,MAA3G,GAAoHmG,MAAM,CAACiT,MAAP,CAAcpZ,MAAvJ;AACAmG,IAAAA,MAAM,CAACiT,MAAP,CAAcihE,IAAd,CAAmB,UAACq3B,OAAD,EAAU9vG,KAAV,EAAoB;AACrC,UAAMumH,QAAQ,GAAG,kBAAEzW,OAAF,CAAjB;AACA,UAAM93F,UAAU,GAAGzT,MAAM,CAACooC,MAAP,CAAcjoC,IAAd,GAAqBvH,QAAQ,CAACopH,QAAQ,CAACznB,IAAT,CAAc,yBAAd,CAAD,EAA2C,EAA3C,CAA7B,GAA8E9+F,KAAjG;AACA,UAAMwmH,gBAAgB,GAAG75E,MAAM,CAAC62E,iBAAP,CAAyB99G,OAAzB,CAAiC,eAAjC,EAAkDsS,UAAU,GAAG,CAA/D,EAAkEtS,OAAlE,CAA0E,sBAA1E,EAAkGw6G,YAAlG,CAAzB;AACA0E,MAAAA,UAAU,CAAC2B,QAAD,EAAWC,gBAAX,CAAV;AACD,KALD,EA3Bc,CAgCV;;AAEJ,QAAIpB,OAAJ;AACA,QAAIC,OAAJ;;AAEA,QAAI9gH,MAAM,CAACg0G,UAAP,IAAqBh0G,MAAM,CAACg0G,UAAP,CAAkB6M,OAA3C,EAAoD;AAClDA,MAAAA,OAAO,GAAG7gH,MAAM,CAACg0G,UAAP,CAAkB6M,OAA5B;AACD;;AAED,QAAI7gH,MAAM,CAACg0G,UAAP,IAAqBh0G,MAAM,CAACg0G,UAAP,CAAkB8M,OAA3C,EAAoD;AAClDA,MAAAA,OAAO,GAAG9gH,MAAM,CAACg0G,UAAP,CAAkB8M,OAA5B;AACD;;AAED,QAAID,OAAO,IAAIA,OAAO,CAAChnH,MAAvB,EAA+B;AAC7B8nH,MAAAA,SAAS,CAACd,OAAD,EAAUe,SAAV,EAAqBx5E,MAAM,CAACy2E,gBAA5B,CAAT;AACD;;AAED,QAAIiC,OAAO,IAAIA,OAAO,CAACjnH,MAAvB,EAA+B;AAC7B8nH,MAAAA,SAAS,CAACb,OAAD,EAAUc,SAAV,EAAqBx5E,MAAM,CAACw2E,gBAA5B,CAAT;AACD,KAnDa,CAmDZ;;;AAGF,QAAIwC,sBAAsB,EAA1B,EAA8B;AAC5BphH,MAAAA,MAAM,CAAC+gH,UAAP,CAAkBjc,GAAlB,CAAsB/hG,EAAtB,CAAyB,SAAzB,EAAoC,gCAAkB/C,MAAM,CAACooC,MAAP,CAAc24E,UAAd,CAAyBC,WAA3C,CAApC,EAA6FL,iBAA7F;AACD,KAxDa,CAwDZ;;;AAGF3gH,IAAAA,MAAM,CAAC8kG,GAAP,CAAW/hG,EAAX,CAAc,OAAd,EAAuB8+G,WAAvB,EAAoC,IAApC;AACD;;AAED,WAASv/G,OAAT,GAAmB;AACjB,QAAIg9G,UAAU,IAAIA,UAAU,CAACzlH,MAAX,GAAoB,CAAtC,EAAyCylH,UAAU,CAACjrG,MAAX;AACzC,QAAIwsG,OAAJ;AACA,QAAIC,OAAJ;;AAEA,QAAI9gH,MAAM,CAACg0G,UAAP,IAAqBh0G,MAAM,CAACg0G,UAAP,CAAkB6M,OAA3C,EAAoD;AAClDA,MAAAA,OAAO,GAAG7gH,MAAM,CAACg0G,UAAP,CAAkB6M,OAA5B;AACD;;AAED,QAAI7gH,MAAM,CAACg0G,UAAP,IAAqBh0G,MAAM,CAACg0G,UAAP,CAAkB8M,OAA3C,EAAoD;AAClDA,MAAAA,OAAO,GAAG9gH,MAAM,CAACg0G,UAAP,CAAkB8M,OAA5B;AACD;;AAED,QAAID,OAAJ,EAAa;AACXA,MAAAA,OAAO,CAAC/kB,GAAR,CAAY,SAAZ,EAAuB6kB,iBAAvB;AACD;;AAED,QAAIG,OAAJ,EAAa;AACXA,MAAAA,OAAO,CAAChlB,GAAR,CAAY,SAAZ,EAAuB6kB,iBAAvB;AACD,KAnBgB,CAmBf;;;AAGF,QAAIS,sBAAsB,EAA1B,EAA8B;AAC5BphH,MAAAA,MAAM,CAAC+gH,UAAP,CAAkBjc,GAAlB,CAAsBhJ,GAAtB,CAA0B,SAA1B,EAAqC,gCAAkB97F,MAAM,CAACooC,MAAP,CAAc24E,UAAd,CAAyBC,WAA3C,CAArC,EAA8FL,iBAA9F;AACD,KAxBgB,CAwBf;;;AAGF3gH,IAAAA,MAAM,CAAC8kG,GAAP,CAAWhJ,GAAX,CAAe,OAAf,EAAwB+lB,WAAxB,EAAqC,IAArC;AACD;;AAED9+G,EAAAA,EAAE,CAAC,YAAD,EAAe,YAAM;AACrBu8G,IAAAA,UAAU,GAAG,0CAAkBt/G,MAAM,CAACooC,MAAP,CAAcs2E,IAAd,CAAmBC,iBAArC,6DAAb;AACD,GAFC,CAAF;AAGA57G,EAAAA,EAAE,CAAC,WAAD,EAAc,YAAM;AACpB,QAAI,CAAC/C,MAAM,CAACooC,MAAP,CAAcs2E,IAAd,CAAmBpjH,OAAxB,EAAiC;AACjCuG,IAAAA,IAAI;AACL,GAHC,CAAF;AAIAkB,EAAAA,EAAE,CAAC,uCAAD,EAA0C,YAAM;AAChD,QAAI,CAAC/C,MAAM,CAACooC,MAAP,CAAcs2E,IAAd,CAAmBpjH,OAAxB,EAAiC;AACjC2lH,IAAAA,gBAAgB;AACjB,GAHC,CAAF;AAIAl+G,EAAAA,EAAE,CAAC,kBAAD,EAAqB,YAAM;AAC3B,QAAI,CAAC/C,MAAM,CAACooC,MAAP,CAAcs2E,IAAd,CAAmBpjH,OAAxB,EAAiC;AACjCgmH,IAAAA,gBAAgB;AACjB,GAHC,CAAF;AAIAv+G,EAAAA,EAAE,CAAC,SAAD,EAAY,YAAM;AAClB,QAAI,CAAC/C,MAAM,CAACooC,MAAP,CAAcs2E,IAAd,CAAmBpjH,OAAxB,EAAiC;AACjCgH,IAAAA,OAAO;AACR,GAHC,CAAF;AAID;;;;;;;;;;;;;;ACjTD;;AACA;;;;AACe,SAASzC,QAAT,CAAkBq3G,IAAlB,EAAwB;AACrC,MACEl3G,MADF,GAKIk3G,IALJ,CACEl3G,MADF;AAAA,MAEE4oG,YAFF,GAKIsO,IALJ,CAEEtO,YAFF;AAAA,MAGE7lG,EAHF,GAKIm0G,IALJ,CAGEn0G,EAHF;AAAA,MAIEkjG,IAJF,GAKIiR,IALJ,CAIEjR,IAJF;AAMA,MAAI1iF,OAAJ;AACAvjB,EAAAA,MAAM,CAACC,QAAP,GAAkB;AAChB8lB,IAAAA,OAAO,EAAE,KADO;AAEhB/f,IAAAA,MAAM,EAAE;AAFQ,GAAlB;AAIA4iG,EAAAA,YAAY,CAAC;AACX3oG,IAAAA,QAAQ,EAAE;AACR3E,MAAAA,OAAO,EAAE,KADD;AAER4E,MAAAA,KAAK,EAAE,IAFC;AAGRgiH,MAAAA,iBAAiB,EAAE,IAHX;AAIRC,MAAAA,oBAAoB,EAAE,IAJd;AAKRC,MAAAA,eAAe,EAAE,KALT;AAMRC,MAAAA,gBAAgB,EAAE,KANV;AAORC,MAAAA,iBAAiB,EAAE;AAPX;AADC,GAAD,CAAZ;;AAYA,WAASvP,GAAT,GAAe;AACb,QAAMwP,cAAc,GAAGviH,MAAM,CAACiT,MAAP,CAAcgoE,EAAd,CAAiBj7E,MAAM,CAACkT,WAAxB,CAAvB;AACA,QAAIhT,KAAK,GAAGF,MAAM,CAACooC,MAAP,CAAcnoC,QAAd,CAAuBC,KAAnC;;AAEA,QAAIqiH,cAAc,CAAChoB,IAAf,CAAoB,sBAApB,CAAJ,EAAiD;AAC/Cr6F,MAAAA,KAAK,GAAGqiH,cAAc,CAAChoB,IAAf,CAAoB,sBAApB,KAA+Cv6F,MAAM,CAACooC,MAAP,CAAcnoC,QAAd,CAAuBC,KAA9E;AACD;;AAED4jB,IAAAA,YAAY,CAACP,OAAD,CAAZ;AACAA,IAAAA,OAAO,GAAG,qBAAS,YAAM;AACvB,UAAIi/F,cAAJ;;AAEA,UAAIxiH,MAAM,CAACooC,MAAP,CAAcnoC,QAAd,CAAuBoiH,gBAA3B,EAA6C;AAC3C,YAAIriH,MAAM,CAACooC,MAAP,CAAcjoC,IAAlB,EAAwB;AACtBH,UAAAA,MAAM,CAAC20G,OAAP;AACA6N,UAAAA,cAAc,GAAGxiH,MAAM,CAACs4G,SAAP,CAAiBt4G,MAAM,CAACooC,MAAP,CAAchoC,KAA/B,EAAsC,IAAtC,EAA4C,IAA5C,CAAjB;AACA6lG,UAAAA,IAAI,CAAC,UAAD,CAAJ;AACD,SAJD,MAIO,IAAI,CAACjmG,MAAM,CAACkpG,WAAZ,EAAyB;AAC9BsZ,UAAAA,cAAc,GAAGxiH,MAAM,CAACs4G,SAAP,CAAiBt4G,MAAM,CAACooC,MAAP,CAAchoC,KAA/B,EAAsC,IAAtC,EAA4C,IAA5C,CAAjB;AACA6lG,UAAAA,IAAI,CAAC,UAAD,CAAJ;AACD,SAHM,MAGA,IAAI,CAACjmG,MAAM,CAACooC,MAAP,CAAcnoC,QAAd,CAAuBmiH,eAA5B,EAA6C;AAClDI,UAAAA,cAAc,GAAGxiH,MAAM,CAAC0T,OAAP,CAAe1T,MAAM,CAACiT,MAAP,CAAcpZ,MAAd,GAAuB,CAAtC,EAAyCmG,MAAM,CAACooC,MAAP,CAAchoC,KAAvD,EAA8D,IAA9D,EAAoE,IAApE,CAAjB;AACA6lG,UAAAA,IAAI,CAAC,UAAD,CAAJ;AACD,SAHM,MAGA;AACLliG,UAAAA,IAAI;AACL;AACF,OAdD,MAcO,IAAI/D,MAAM,CAACooC,MAAP,CAAcjoC,IAAlB,EAAwB;AAC7BH,QAAAA,MAAM,CAAC20G,OAAP;AACA6N,QAAAA,cAAc,GAAGxiH,MAAM,CAACq4G,SAAP,CAAiBr4G,MAAM,CAACooC,MAAP,CAAchoC,KAA/B,EAAsC,IAAtC,EAA4C,IAA5C,CAAjB;AACA6lG,QAAAA,IAAI,CAAC,UAAD,CAAJ;AACD,OAJM,MAIA,IAAI,CAACjmG,MAAM,CAAC8mG,KAAZ,EAAmB;AACxB0b,QAAAA,cAAc,GAAGxiH,MAAM,CAACq4G,SAAP,CAAiBr4G,MAAM,CAACooC,MAAP,CAAchoC,KAA/B,EAAsC,IAAtC,EAA4C,IAA5C,CAAjB;AACA6lG,QAAAA,IAAI,CAAC,UAAD,CAAJ;AACD,OAHM,MAGA,IAAI,CAACjmG,MAAM,CAACooC,MAAP,CAAcnoC,QAAd,CAAuBmiH,eAA5B,EAA6C;AAClDI,QAAAA,cAAc,GAAGxiH,MAAM,CAAC0T,OAAP,CAAe,CAAf,EAAkB1T,MAAM,CAACooC,MAAP,CAAchoC,KAAhC,EAAuC,IAAvC,EAA6C,IAA7C,CAAjB;AACA6lG,QAAAA,IAAI,CAAC,UAAD,CAAJ;AACD,OAHM,MAGA;AACLliG,QAAAA,IAAI;AACL;;AAED,UAAI/D,MAAM,CAACooC,MAAP,CAAcq/D,OAAd,IAAyBznG,MAAM,CAACC,QAAP,CAAgB8lB,OAA7C,EAAsDgtF,GAAG,GAAzD,KAAiE,IAAIyP,cAAc,KAAK,KAAvB,EAA8B;AAC7FzP,QAAAA,GAAG;AACJ;AACF,KAlCS,EAkCP7yG,KAlCO,CAAV;AAmCD;;AAED,WAAS7D,KAAT,GAAiB;AACf,QAAI,OAAOknB,OAAP,KAAmB,WAAvB,EAAoC,OAAO,KAAP;AACpC,QAAIvjB,MAAM,CAACC,QAAP,CAAgB8lB,OAApB,EAA6B,OAAO,KAAP;AAC7B/lB,IAAAA,MAAM,CAACC,QAAP,CAAgB8lB,OAAhB,GAA0B,IAA1B;AACAkgF,IAAAA,IAAI,CAAC,eAAD,CAAJ;AACA8M,IAAAA,GAAG;AACH,WAAO,IAAP;AACD;;AAED,WAAShvG,IAAT,GAAgB;AACd,QAAI,CAAC/D,MAAM,CAACC,QAAP,CAAgB8lB,OAArB,EAA8B,OAAO,KAAP;AAC9B,QAAI,OAAOxC,OAAP,KAAmB,WAAvB,EAAoC,OAAO,KAAP;;AAEpC,QAAIA,OAAJ,EAAa;AACXO,MAAAA,YAAY,CAACP,OAAD,CAAZ;AACAA,MAAAA,OAAO,GAAG3pB,SAAV;AACD;;AAEDoG,IAAAA,MAAM,CAACC,QAAP,CAAgB8lB,OAAhB,GAA0B,KAA1B;AACAkgF,IAAAA,IAAI,CAAC,cAAD,CAAJ;AACA,WAAO,IAAP;AACD;;AAED,WAAS1yF,KAAT,CAAenT,KAAf,EAAsB;AACpB,QAAI,CAACJ,MAAM,CAACC,QAAP,CAAgB8lB,OAArB,EAA8B;AAC9B,QAAI/lB,MAAM,CAACC,QAAP,CAAgB+F,MAApB,EAA4B;AAC5B,QAAIud,OAAJ,EAAaO,YAAY,CAACP,OAAD,CAAZ;AACbvjB,IAAAA,MAAM,CAACC,QAAP,CAAgB+F,MAAhB,GAAyB,IAAzB;;AAEA,QAAI5F,KAAK,KAAK,CAAV,IAAe,CAACJ,MAAM,CAACooC,MAAP,CAAcnoC,QAAd,CAAuBiiH,iBAA3C,EAA8D;AAC5DliH,MAAAA,MAAM,CAACC,QAAP,CAAgB+F,MAAhB,GAAyB,KAAzB;AACA+sG,MAAAA,GAAG;AACJ,KAHD,MAGO;AACL,OAAC,eAAD,EAAkB,qBAAlB,EAAyCx0G,OAAzC,CAAiD,UAAA6Y,KAAK,EAAI;AACxDpX,QAAAA,MAAM,CAACotG,UAAP,CAAkB,CAAlB,EAAqB9vG,gBAArB,CAAsC8Z,KAAtC,EAA6CqrG,eAA7C;AACD,OAFD;AAGD;AACF;;AAED,WAASC,kBAAT,GAA8B;AAC5B,QAAMrqH,QAAQ,GAAG,6BAAjB;;AAEA,QAAIA,QAAQ,CAACsqH,eAAT,KAA6B,QAA7B,IAAyC3iH,MAAM,CAACC,QAAP,CAAgB8lB,OAA7D,EAAsE;AACpExS,MAAAA,KAAK;AACN;;AAED,QAAIlb,QAAQ,CAACsqH,eAAT,KAA6B,SAA7B,IAA0C3iH,MAAM,CAACC,QAAP,CAAgB+F,MAA9D,EAAsE;AACpE+sG,MAAAA,GAAG;AACH/yG,MAAAA,MAAM,CAACC,QAAP,CAAgB+F,MAAhB,GAAyB,KAAzB;AACD;AACF;;AAED,WAASy8G,eAAT,CAAyB/lH,CAAzB,EAA4B;AAC1B,QAAI,CAACsD,MAAD,IAAWA,MAAM,CAACmsG,SAAlB,IAA+B,CAACnsG,MAAM,CAACotG,UAA3C,EAAuD;AACvD,QAAI1wG,CAAC,CAACwS,MAAF,KAAalP,MAAM,CAACotG,UAAP,CAAkB,CAAlB,CAAjB,EAAuC;AACvC,KAAC,eAAD,EAAkB,qBAAlB,EAAyC7uG,OAAzC,CAAiD,UAAA6Y,KAAK,EAAI;AACxDpX,MAAAA,MAAM,CAACotG,UAAP,CAAkB,CAAlB,EAAqBzhG,mBAArB,CAAyCyL,KAAzC,EAAgDqrG,eAAhD;AACD,KAFD;AAGAziH,IAAAA,MAAM,CAACC,QAAP,CAAgB+F,MAAhB,GAAyB,KAAzB;;AAEA,QAAI,CAAChG,MAAM,CAACC,QAAP,CAAgB8lB,OAArB,EAA8B;AAC5BhiB,MAAAA,IAAI;AACL,KAFD,MAEO;AACLgvG,MAAAA,GAAG;AACJ;AACF;;AAED,WAAS6P,YAAT,GAAwB;AACtB,QAAI5iH,MAAM,CAACooC,MAAP,CAAcnoC,QAAd,CAAuBkiH,oBAA3B,EAAiD;AAC/Cp+G,MAAAA,IAAI;AACL,KAFD,MAEO;AACLkiG,MAAAA,IAAI,CAAC,eAAD,CAAJ;AACA1yF,MAAAA,KAAK;AACN;;AAED,KAAC,eAAD,EAAkB,qBAAlB,EAAyChV,OAAzC,CAAiD,UAAA6Y,KAAK,EAAI;AACxDpX,MAAAA,MAAM,CAACotG,UAAP,CAAkB,CAAlB,EAAqBzhG,mBAArB,CAAyCyL,KAAzC,EAAgDqrG,eAAhD;AACD,KAFD;AAGD;;AAED,WAASI,YAAT,GAAwB;AACtB,QAAI7iH,MAAM,CAACooC,MAAP,CAAcnoC,QAAd,CAAuBkiH,oBAA3B,EAAiD;AAC/C;AACD;;AAEDniH,IAAAA,MAAM,CAACC,QAAP,CAAgB+F,MAAhB,GAAyB,KAAzB;AACAigG,IAAAA,IAAI,CAAC,gBAAD,CAAJ;AACA8M,IAAAA,GAAG;AACJ;;AAED,WAAS+P,iBAAT,GAA6B;AAC3B,QAAI9iH,MAAM,CAACooC,MAAP,CAAcnoC,QAAd,CAAuBqiH,iBAA3B,EAA8C;AAC5CtiH,MAAAA,MAAM,CAAC8kG,GAAP,CAAW/hG,EAAX,CAAc,YAAd,EAA4B6/G,YAA5B;AACA5iH,MAAAA,MAAM,CAAC8kG,GAAP,CAAW/hG,EAAX,CAAc,YAAd,EAA4B8/G,YAA5B;AACD;AACF;;AAED,WAASE,iBAAT,GAA6B;AAC3B/iH,IAAAA,MAAM,CAAC8kG,GAAP,CAAWhJ,GAAX,CAAe,YAAf,EAA6B8mB,YAA7B;AACA5iH,IAAAA,MAAM,CAAC8kG,GAAP,CAAWhJ,GAAX,CAAe,YAAf,EAA6B+mB,YAA7B;AACD;;AAED9/G,EAAAA,EAAE,CAAC,MAAD,EAAS,YAAM;AACf,QAAI/C,MAAM,CAACooC,MAAP,CAAcnoC,QAAd,CAAuB3E,OAA3B,EAAoC;AAClCe,MAAAA,KAAK;AACL,UAAMhE,QAAQ,GAAG,6BAAjB;AACAA,MAAAA,QAAQ,CAACiF,gBAAT,CAA0B,kBAA1B,EAA8ColH,kBAA9C;AACAI,MAAAA,iBAAiB;AAClB;AACF,GAPC,CAAF;AAQA//G,EAAAA,EAAE,CAAC,uBAAD,EAA0B,UAACigH,EAAD,EAAK5iH,KAAL,EAAYs4G,QAAZ,EAAyB;AACnD,QAAI14G,MAAM,CAACC,QAAP,CAAgB8lB,OAApB,EAA6B;AAC3B,UAAI2yF,QAAQ,IAAI,CAAC14G,MAAM,CAACooC,MAAP,CAAcnoC,QAAd,CAAuBkiH,oBAAxC,EAA8D;AAC5DniH,QAAAA,MAAM,CAACC,QAAP,CAAgBsT,KAAhB,CAAsBnT,KAAtB;AACD,OAFD,MAEO;AACL2D,QAAAA,IAAI;AACL;AACF;AACF,GARC,CAAF;AASAhB,EAAAA,EAAE,CAAC,iBAAD,EAAoB,YAAM;AAC1B,QAAI/C,MAAM,CAACC,QAAP,CAAgB8lB,OAApB,EAA6B;AAC3B,UAAI/lB,MAAM,CAACooC,MAAP,CAAcnoC,QAAd,CAAuBkiH,oBAA3B,EAAiD;AAC/Cp+G,QAAAA,IAAI;AACL,OAFD,MAEO;AACLwP,QAAAA,KAAK;AACN;AACF;AACF,GARC,CAAF;AASAxQ,EAAAA,EAAE,CAAC,UAAD,EAAa,YAAM;AACnB,QAAI/C,MAAM,CAACooC,MAAP,CAAcq/D,OAAd,IAAyBznG,MAAM,CAACC,QAAP,CAAgB+F,MAAzC,IAAmD,CAAChG,MAAM,CAACooC,MAAP,CAAcnoC,QAAd,CAAuBkiH,oBAA/E,EAAqG;AACnGpP,MAAAA,GAAG;AACJ;AACF,GAJC,CAAF;AAKAhwG,EAAAA,EAAE,CAAC,SAAD,EAAY,YAAM;AAClBggH,IAAAA,iBAAiB;;AAEjB,QAAI/iH,MAAM,CAACC,QAAP,CAAgB8lB,OAApB,EAA6B;AAC3BhiB,MAAAA,IAAI;AACL;;AAED,QAAM1L,QAAQ,GAAG,6BAAjB;AACAA,IAAAA,QAAQ,CAACsT,mBAAT,CAA6B,kBAA7B,EAAiD+2G,kBAAjD;AACD,GATC,CAAF;;AAUA,WAAc1iH,MAAM,CAACC,QAArB,EAA+B;AAC7BsT,IAAAA,KAAK,EAALA,KAD6B;AAE7Bw/F,IAAAA,GAAG,EAAHA,GAF6B;AAG7B12G,IAAAA,KAAK,EAALA,KAH6B;AAI7B0H,IAAAA,IAAI,EAAJA;AAJ6B,GAA/B;AAMD;;;;;;;;;;;;;;AC/ND;;;;AACe,SAASkR,UAAT,CAAoBiiG,IAApB,EAA0B;AACvC,MACEl3G,MADF,GAIIk3G,IAJJ,CACEl3G,MADF;AAAA,MAEE4oG,YAFF,GAIIsO,IAJJ,CAEEtO,YAFF;AAAA,MAGE7lG,EAHF,GAIIm0G,IAJJ,CAGEn0G,EAHF;AAKA6lG,EAAAA,YAAY,CAAC;AACXzzF,IAAAA,UAAU,EAAE;AACV8tG,MAAAA,OAAO,EAAErpH,SADC;AAEVspH,MAAAA,OAAO,EAAE,KAFC;AAGVC,MAAAA,EAAE,EAAE,OAHM,CAGE;;AAHF;AADD,GAAD,CAAZ;AAQAnjH,EAAAA,MAAM,CAACmV,UAAP,GAAoB;AAClB8tG,IAAAA,OAAO,EAAErpH;AADS,GAApB;;AAIA,WAASwpH,YAAT,CAAsBx7G,CAAtB,EAAyBC,CAAzB,EAA4B;AAC1B,QAAM88B,YAAY,GAAG,SAASh3B,MAAT,GAAkB;AACrC,UAAIqoD,QAAJ;AACA,UAAID,QAAJ;AACA,UAAIstD,KAAJ;AACA,aAAO,UAACl8E,KAAD,EAAQn8B,GAAR,EAAgB;AACrB+qD,QAAAA,QAAQ,GAAG,CAAC,CAAZ;AACAC,QAAAA,QAAQ,GAAG7uB,KAAK,CAACttC,MAAjB;;AAEA,eAAOm8D,QAAQ,GAAGD,QAAX,GAAsB,CAA7B,EAAgC;AAC9BstD,UAAAA,KAAK,GAAGrtD,QAAQ,GAAGD,QAAX,IAAuB,CAA/B;;AAEA,cAAI5uB,KAAK,CAACk8E,KAAD,CAAL,IAAgBr4G,GAApB,EAAyB;AACvB+qD,YAAAA,QAAQ,GAAGstD,KAAX;AACD,WAFD,MAEO;AACLrtD,YAAAA,QAAQ,GAAGqtD,KAAX;AACD;AACF;;AAED,eAAOrtD,QAAP;AACD,OAfD;AAgBD,KApBoB,EAArB;;AAsBA,SAAKpuD,CAAL,GAASA,CAAT;AACA,SAAKC,CAAL,GAASA,CAAT;AACA,SAAKwuD,SAAL,GAAiBzuD,CAAC,CAAC/N,MAAF,GAAW,CAA5B,CAzB0B,CAyBK;AAC/B;AACA;;AAEA,QAAIypH,EAAJ;AACA,QAAIC,EAAJ;;AAEA,SAAKtnH,WAAL,GAAmB,SAASA,WAAT,CAAqBu/C,EAArB,EAAyB;AAC1C,UAAI,CAACA,EAAL,EAAS,OAAO,CAAP,CADiC,CACvB;;AAEnB+nE,MAAAA,EAAE,GAAG5+E,YAAY,CAAC,KAAK/8B,CAAN,EAAS4zC,EAAT,CAAjB;AACA8nE,MAAAA,EAAE,GAAGC,EAAE,GAAG,CAAV,CAJ0C,CAI7B;AACb;;AAEA,aAAO,CAAC/nE,EAAE,GAAG,KAAK5zC,CAAL,CAAO07G,EAAP,CAAN,KAAqB,KAAKz7G,CAAL,CAAO07G,EAAP,IAAa,KAAK17G,CAAL,CAAOy7G,EAAP,CAAlC,KAAiD,KAAK17G,CAAL,CAAO27G,EAAP,IAAa,KAAK37G,CAAL,CAAO07G,EAAP,CAA9D,IAA4E,KAAKz7G,CAAL,CAAOy7G,EAAP,CAAnF;AACD,KARD;;AAUA,WAAO,IAAP;AACD,GA7DsC,CA6DrC;;;AAGF,WAASE,sBAAT,CAAgCtpG,CAAhC,EAAmC;AACjC,QAAI,CAACla,MAAM,CAACmV,UAAP,CAAkBsuG,MAAvB,EAA+B;AAC7BzjH,MAAAA,MAAM,CAACmV,UAAP,CAAkBsuG,MAAlB,GAA2BzjH,MAAM,CAACooC,MAAP,CAAcjoC,IAAd,GAAqB,IAAIijH,YAAJ,CAAiBpjH,MAAM,CAAC2mG,UAAxB,EAAoCzsF,CAAC,CAACysF,UAAtC,CAArB,GAAyE,IAAIyc,YAAJ,CAAiBpjH,MAAM,CAAC6mG,QAAxB,EAAkC3sF,CAAC,CAAC2sF,QAApC,CAApG;AACD;AACF;;AAED,WAASyF,YAAT,CAAsBoX,EAAtB,EAA0BnJ,YAA1B,EAAwC;AACtC,QAAMoJ,UAAU,GAAG3jH,MAAM,CAACmV,UAAP,CAAkB8tG,OAArC;AACA,QAAI5H,UAAJ;AACA,QAAIuI,mBAAJ;AACA,QAAMpkH,MAAM,GAAGQ,MAAM,CAACsa,WAAtB;;AAEA,aAASupG,sBAAT,CAAgC3pG,CAAhC,EAAmC;AACjC;AACA;AACA;AACA;AACA,UAAM+1C,SAAS,GAAGjwD,MAAM,CAACwsG,YAAP,GAAsB,CAACxsG,MAAM,CAACiwD,SAA9B,GAA0CjwD,MAAM,CAACiwD,SAAnE;;AAEA,UAAIjwD,MAAM,CAACooC,MAAP,CAAcjzB,UAAd,CAAyBguG,EAAzB,KAAgC,OAApC,EAA6C;AAC3CK,QAAAA,sBAAsB,CAACtpG,CAAD,CAAtB,CAD2C,CAChB;AAC3B;;AAEA0pG,QAAAA,mBAAmB,GAAG,CAAC5jH,MAAM,CAACmV,UAAP,CAAkBsuG,MAAlB,CAAyBxnH,WAAzB,CAAqC,CAACg0D,SAAtC,CAAvB;AACD;;AAED,UAAI,CAAC2zD,mBAAD,IAAwB5jH,MAAM,CAACooC,MAAP,CAAcjzB,UAAd,CAAyBguG,EAAzB,KAAgC,WAA5D,EAAyE;AACvE9H,QAAAA,UAAU,GAAG,CAACnhG,CAAC,CAACgxF,YAAF,KAAmBhxF,CAAC,CAAC+wF,YAAF,EAApB,KAAyCjrG,MAAM,CAACkrG,YAAP,KAAwBlrG,MAAM,CAACirG,YAAP,EAAjE,CAAb;AACA2Y,QAAAA,mBAAmB,GAAG,CAAC3zD,SAAS,GAAGjwD,MAAM,CAACirG,YAAP,EAAb,IAAsCoQ,UAAtC,GAAmDnhG,CAAC,CAAC+wF,YAAF,EAAzE;AACD;;AAED,UAAIjrG,MAAM,CAACooC,MAAP,CAAcjzB,UAAd,CAAyB+tG,OAA7B,EAAsC;AACpCU,QAAAA,mBAAmB,GAAG1pG,CAAC,CAACgxF,YAAF,KAAmB0Y,mBAAzC;AACD;;AAED1pG,MAAAA,CAAC,CAACmyF,cAAF,CAAiBuX,mBAAjB;AACA1pG,MAAAA,CAAC,CAACoyF,YAAF,CAAesX,mBAAf,EAAoC5jH,MAApC;AACAka,MAAAA,CAAC,CAACkxF,iBAAF;AACAlxF,MAAAA,CAAC,CAACmxF,mBAAF;AACD;;AAED,QAAIjtG,KAAK,CAACo1E,OAAN,CAAcmwC,UAAd,CAAJ,EAA+B;AAC7B,WAAK,IAAItpH,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGspH,UAAU,CAAC9pH,MAA/B,EAAuCQ,CAAC,IAAI,CAA5C,EAA+C;AAC7C,YAAIspH,UAAU,CAACtpH,CAAD,CAAV,KAAkBkgH,YAAlB,IAAkCoJ,UAAU,CAACtpH,CAAD,CAAV,YAAyBmF,MAA/D,EAAuE;AACrEqkH,UAAAA,sBAAsB,CAACF,UAAU,CAACtpH,CAAD,CAAX,CAAtB;AACD;AACF;AACF,KAND,MAMO,IAAIspH,UAAU,YAAYnkH,MAAtB,IAAgC+6G,YAAY,KAAKoJ,UAArD,EAAiE;AACtEE,MAAAA,sBAAsB,CAACF,UAAD,CAAtB;AACD;AACF;;AAED,WAAS9O,aAAT,CAAuB90G,QAAvB,EAAiCw6G,YAAjC,EAA+C;AAC7C,QAAM/6G,MAAM,GAAGQ,MAAM,CAACsa,WAAtB;AACA,QAAMqpG,UAAU,GAAG3jH,MAAM,CAACmV,UAAP,CAAkB8tG,OAArC;AACA,QAAI5oH,CAAJ;;AAEA,aAASypH,uBAAT,CAAiC5pG,CAAjC,EAAoC;AAClCA,MAAAA,CAAC,CAAC26F,aAAF,CAAgB90G,QAAhB,EAA0BC,MAA1B;;AAEA,UAAID,QAAQ,KAAK,CAAjB,EAAoB;AAClBma,QAAAA,CAAC,CAAC9G,eAAF;;AAEA,YAAI8G,CAAC,CAACkuB,MAAF,CAAS31B,UAAb,EAAyB;AACvB,+BAAS,YAAM;AACbyH,YAAAA,CAAC,CAACyyF,gBAAF;AACD,WAFD;AAGD;;AAEDzyF,QAAAA,CAAC,CAACkzF,UAAF,CAAa55F,aAAb,CAA2B,YAAM;AAC/B,cAAI,CAACmwG,UAAL,EAAiB;;AAEjB,cAAIzpG,CAAC,CAACkuB,MAAF,CAASjoC,IAAT,IAAiBH,MAAM,CAACooC,MAAP,CAAcjzB,UAAd,CAAyBguG,EAAzB,KAAgC,OAArD,EAA8D;AAC5DjpG,YAAAA,CAAC,CAACy6F,OAAF;AACD;;AAEDz6F,UAAAA,CAAC,CAAC1G,aAAF;AACD,SARD;AASD;AACF;;AAED,QAAIpV,KAAK,CAACo1E,OAAN,CAAcmwC,UAAd,CAAJ,EAA+B;AAC7B,WAAKtpH,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGspH,UAAU,CAAC9pH,MAA3B,EAAmCQ,CAAC,IAAI,CAAxC,EAA2C;AACzC,YAAIspH,UAAU,CAACtpH,CAAD,CAAV,KAAkBkgH,YAAlB,IAAkCoJ,UAAU,CAACtpH,CAAD,CAAV,YAAyBmF,MAA/D,EAAuE;AACrEskH,UAAAA,uBAAuB,CAACH,UAAU,CAACtpH,CAAD,CAAX,CAAvB;AACD;AACF;AACF,KAND,MAMO,IAAIspH,UAAU,YAAYnkH,MAAtB,IAAgC+6G,YAAY,KAAKoJ,UAArD,EAAiE;AACtEG,MAAAA,uBAAuB,CAACH,UAAD,CAAvB;AACD;AACF;;AAED,WAASI,YAAT,GAAwB;AACtB,QAAI,CAAC/jH,MAAM,CAACmV,UAAP,CAAkB8tG,OAAvB,EAAgC;;AAEhC,QAAIjjH,MAAM,CAACmV,UAAP,CAAkBsuG,MAAtB,EAA8B;AAC5BzjH,MAAAA,MAAM,CAACmV,UAAP,CAAkBsuG,MAAlB,GAA2B7pH,SAA3B;AACA,aAAOoG,MAAM,CAACmV,UAAP,CAAkBsuG,MAAzB;AACD;AACF;;AAED1gH,EAAAA,EAAE,CAAC,YAAD,EAAe,YAAM;AACrB/C,IAAAA,MAAM,CAACmV,UAAP,CAAkB8tG,OAAlB,GAA4BjjH,MAAM,CAACooC,MAAP,CAAcjzB,UAAd,CAAyB8tG,OAArD;AACD,GAFC,CAAF;AAGAlgH,EAAAA,EAAE,CAAC,QAAD,EAAW,YAAM;AACjBghH,IAAAA,YAAY;AACb,GAFC,CAAF;AAGAhhH,EAAAA,EAAE,CAAC,QAAD,EAAW,YAAM;AACjBghH,IAAAA,YAAY;AACb,GAFC,CAAF;AAGAhhH,EAAAA,EAAE,CAAC,gBAAD,EAAmB,YAAM;AACzBghH,IAAAA,YAAY;AACb,GAFC,CAAF;AAGAhhH,EAAAA,EAAE,CAAC,cAAD,EAAiB,UAACigH,EAAD,EAAK/yD,SAAL,EAAgBsqD,YAAhB,EAAiC;AAClD,QAAI,CAACv6G,MAAM,CAACmV,UAAP,CAAkB8tG,OAAvB,EAAgC;AAChCjjH,IAAAA,MAAM,CAACmV,UAAP,CAAkBm3F,YAAlB,CAA+Br8C,SAA/B,EAA0CsqD,YAA1C;AACD,GAHC,CAAF;AAIAx3G,EAAAA,EAAE,CAAC,eAAD,EAAkB,UAACigH,EAAD,EAAKjjH,QAAL,EAAew6G,YAAf,EAAgC;AAClD,QAAI,CAACv6G,MAAM,CAACmV,UAAP,CAAkB8tG,OAAvB,EAAgC;AAChCjjH,IAAAA,MAAM,CAACmV,UAAP,CAAkB0/F,aAAlB,CAAgC90G,QAAhC,EAA0Cw6G,YAA1C;AACD,GAHC,CAAF;;AAIA,WAAcv6G,MAAM,CAACmV,UAArB,EAAiC;AAC/Bm3F,IAAAA,YAAY,EAAZA,YAD+B;AAE/BuI,IAAAA,aAAa,EAAbA;AAF+B,GAAjC;AAID;;;;;;;;;;;;;;AC/LD;;AACA;;AACA;;AACA;;;;AACe,SAASmP,WAAT,CAAqB9M,IAArB,EAA2B;AACxC,MACEl3G,MADF,GAIIk3G,IAJJ,CACEl3G,MADF;AAAA,MAEE4oG,YAFF,GAIIsO,IAJJ,CAEEtO,YAFF;AAAA,MAGE7lG,EAHF,GAIIm0G,IAJJ,CAGEn0G,EAHF;AAKA6lG,EAAAA,YAAY,CAAC;AACXqb,IAAAA,WAAW,EAAE;AACXC,MAAAA,YAAY,EAAE,IADH;AAEXC,MAAAA,WAAW,EAAE;AAFF;AADF,GAAD,CAAZ;;AAOA,MAAM7X,YAAY,GAAG,SAAfA,YAAe,GAAM;AACzB,QACEr5F,MADF,GAGIjT,MAHJ,CACEiT,MADF;AAAA,QAEEC,WAFF,GAGIlT,MAHJ,CAEEkT,WAFF;AAIA,QAAMk1B,MAAM,GAAGpoC,MAAM,CAACooC,MAAP,CAAc67E,WAA7B;AACA,gCAGIjkH,MAAM,CAAC0pG,eAHX;AAAA,QACEO,cADF,yBACEA,cADF;AAAA,QAEEN,SAFF,yBAEEA,SAFF;AAIA,QAAMK,gBAAgB,GAAGhqG,MAAM,CAACiwD,SAAhC;;AAEA,SAAK,IAAI51D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4Y,MAAM,CAACpZ,MAA3B,EAAmCQ,CAAC,IAAI,CAAxC,EAA2C;AACzC,UAAM2nH,QAAQ,GAAG/uG,MAAM,CAACgoE,EAAP,CAAU5gF,CAAV,CAAjB;AACA,UAAM8jH,aAAa,GAAG6D,QAAQ,CAAC,CAAD,CAAR,CAAY/6G,QAAlC;AACA,UAAMA,QAAQ,GAAGrK,IAAI,CAACyH,GAAL,CAASzH,IAAI,CAAC0H,GAAL,CAAS65G,aAAT,EAAwB,CAAC,CAAzB,CAAT,EAAsC,CAAtC,CAAjB;AACA,UAAIv7G,MAAM,GAAGo/G,QAAQ,CAAC,CAAD,CAAR,CAAYlE,iBAAzB;;AAEA,UAAI99G,MAAM,CAACooC,MAAP,CAAcs/D,cAAd,IAAgC,CAAC1nG,MAAM,CAACooC,MAAP,CAAcq/D,OAAnD,EAA4D;AAC1DznG,QAAAA,MAAM,CAACotG,UAAP,CAAkBlS,SAAlB,sBAA0Cl7F,MAAM,CAACirG,YAAP,EAA1C;AACD;;AAED,UAAIjrG,MAAM,CAACooC,MAAP,CAAcs/D,cAAd,IAAgC1nG,MAAM,CAACooC,MAAP,CAAcq/D,OAAlD,EAA2D;AACzD7kG,QAAAA,MAAM,IAAIqQ,MAAM,CAAC,CAAD,CAAN,CAAU6qG,iBAApB;AACD;;AAED,UAAIsG,EAAE,GAAGpkH,MAAM,CAACooC,MAAP,CAAcq/D,OAAd,GAAwB,CAAC7kG,MAAD,GAAU5C,MAAM,CAACiwD,SAAzC,GAAqD,CAACrtD,MAA/D;AACA,UAAIyhH,EAAE,GAAG,CAAT;AACA,UAAMC,EAAE,GAAG,CAAC,GAAD,GAAO1nH,IAAI,CAACs5B,GAAL,CAASjvB,QAAT,CAAlB;AACA,UAAIoB,KAAK,GAAG,CAAZ;AACA,UAAIslE,MAAM,GAAG,CAAC,CAAD,GAAK1mE,QAAlB;AACA,UAAIs9G,KAAK,GAAG,IAAI3nH,IAAI,CAACs5B,GAAL,CAASjvB,QAAT,IAAqB,IAArC;AACA,UAAMu9G,aAAa,GAAG,CAACnqH,CAAC,KAAK6Y,WAAN,IAAqB7Y,CAAC,KAAK6Y,WAAW,GAAG,CAA1C,KAAgDjM,QAAQ,GAAG,CAA3D,IAAgEA,QAAQ,GAAG,CAA3E,KAAiF0iG,SAAS,IAAI3pG,MAAM,CAACooC,MAAP,CAAcq/D,OAA5G,KAAwHuC,gBAAgB,GAAGC,cAAjK;AACA,UAAMwa,aAAa,GAAG,CAACpqH,CAAC,KAAK6Y,WAAN,IAAqB7Y,CAAC,KAAK6Y,WAAW,GAAG,CAA1C,KAAgDjM,QAAQ,GAAG,CAA3D,IAAgEA,QAAQ,GAAG,CAAC,CAA5E,KAAkF0iG,SAAS,IAAI3pG,MAAM,CAACooC,MAAP,CAAcq/D,OAA7G,KAAyHuC,gBAAgB,GAAGC,cAAlK;;AAEA,UAAIua,aAAa,IAAIC,aAArB,EAAoC;AAClC,YAAMC,WAAW,YAAI,IAAI9nH,IAAI,CAACs5B,GAAL,CAAS,CAACt5B,IAAI,CAACs5B,GAAL,CAASjvB,QAAT,IAAqB,GAAtB,IAA6B,GAAtC,CAAR,EAAuD,GAAvD,CAAjB;AACA0mE,QAAAA,MAAM,IAAI,CAAC,EAAD,GAAM1mE,QAAN,GAAiBy9G,WAA3B;AACAr8G,QAAAA,KAAK,IAAI,CAAC,GAAD,GAAOq8G,WAAhB;AACAH,QAAAA,KAAK,IAAI,KAAKG,WAAd;AACAL,QAAAA,EAAE,aAAM,CAAC,EAAD,GAAMK,WAAN,GAAoB9nH,IAAI,CAACs5B,GAAL,CAASjvB,QAAT,CAA1B,MAAF;AACD;;AAED,UAAIA,QAAQ,GAAG,CAAf,EAAkB;AAChB;AACAm9G,QAAAA,EAAE,kBAAWA,EAAX,mBAAsBG,KAAK,GAAG3nH,IAAI,CAACs5B,GAAL,CAASjvB,QAAT,CAA9B,QAAF;AACD,OAHD,MAGO,IAAIA,QAAQ,GAAG,CAAf,EAAkB;AACvB;AACAm9G,QAAAA,EAAE,kBAAWA,EAAX,oBAAuBG,KAAK,GAAG3nH,IAAI,CAACs5B,GAAL,CAASjvB,QAAT,CAA/B,QAAF;AACD,OAHM,MAGA;AACLm9G,QAAAA,EAAE,aAAMA,EAAN,OAAF;AACD;;AAED,UAAI,CAACpkH,MAAM,CAAC63B,YAAP,EAAL,EAA4B;AAC1B,YAAM8sF,KAAK,GAAGN,EAAd;AACAA,QAAAA,EAAE,GAAGD,EAAL;AACAA,QAAAA,EAAE,GAAGO,KAAL;AACD;;AAED,UAAMC,WAAW,GAAG39G,QAAQ,GAAG,CAAX,aAAkB,IAAI,CAAC,IAAIoB,KAAL,IAAcpB,QAApC,cAAoD,IAAI,CAAC,IAAIoB,KAAL,IAAcpB,QAAtE,CAApB;AACA,UAAMi0F,SAAS,mCACCkpB,EADD,eACQC,EADR,eACeC,EADf,kCAEH32C,MAFG,iCAGLi3C,WAHK,cAAf;;AAMA,UAAIx8E,MAAM,CAAC87E,YAAX,EAAyB;AACvB;AACA,YAAIW,SAAS,GAAG7C,QAAQ,CAAC/jB,IAAT,CAAc,sBAAd,CAAhB;;AAEA,YAAI4mB,SAAS,CAAChrH,MAAV,KAAqB,CAAzB,EAA4B;AAC1BgrH,UAAAA,SAAS,GAAG,2BAAaz8E,MAAb,EAAqB45E,QAArB,CAAZ;AACD;;AAED,YAAI6C,SAAS,CAAChrH,MAAd,EAAsBgrH,SAAS,CAAC,CAAD,CAAT,CAAa5mH,KAAb,CAAmB6kE,OAAnB,GAA6BlmE,IAAI,CAACyH,GAAL,CAASzH,IAAI,CAAC0H,GAAL,CAAS,CAAC1H,IAAI,CAACs5B,GAAL,CAASjvB,QAAT,IAAqB,GAAtB,IAA6B,GAAtC,EAA2C,CAA3C,CAAT,EAAwD,CAAxD,CAA7B;AACvB;;AAED+6G,MAAAA,QAAQ,CAAC,CAAD,CAAR,CAAY/jH,KAAZ,CAAkB6mH,MAAlB,GAA2B,CAACloH,IAAI,CAACs5B,GAAL,CAASt5B,IAAI,CAACu1C,KAAL,CAAWgsE,aAAX,CAAT,CAAD,GAAuClrG,MAAM,CAACpZ,MAAzE;AACA,UAAMs7G,SAAS,GAAG,2BAAa/sE,MAAb,EAAqB45E,QAArB,CAAlB;AACA7M,MAAAA,SAAS,CAACja,SAAV,CAAoBA,SAApB;AACD;AACF,GAjFD;;AAmFA,MAAM2Z,aAAa,GAAG,SAAhBA,aAAgB,CAAA90G,QAAQ,EAAI;AAChC,QACEokH,WADF,GAEInkH,MAAM,CAACooC,MAAP,CAAc67E,WAFlB,CACEE,WADF;AAGA,QAAMY,mBAAmB,GAAGZ,WAAW,GAAGnkH,MAAM,CAACiT,MAAP,CAAcgrF,IAAd,CAAmBkmB,WAAnB,CAAH,GAAqCnkH,MAAM,CAACiT,MAAnF;AACA8xG,IAAAA,mBAAmB,CAACh8G,UAApB,CAA+BhJ,QAA/B,EAAyCk+F,IAAzC,CAA8C,sBAA9C,EAAsEl1F,UAAtE,CAAiFhJ,QAAjF;AACA,6CAA2B;AACzBC,MAAAA,MAAM,EAANA,MADyB;AAEzBD,MAAAA,QAAQ,EAARA,QAFyB;AAGzBokH,MAAAA,WAAW,EAAXA;AAHyB,KAA3B;AAKD,GAXD;;AAaA,2BAAW;AACThV,IAAAA,MAAM,EAAE,OADC;AAETnvG,IAAAA,MAAM,EAANA,MAFS;AAGT+C,IAAAA,EAAE,EAAFA,EAHS;AAITupG,IAAAA,YAAY,EAAZA,YAJS;AAKTuI,IAAAA,aAAa,EAAbA,aALS;AAMTmQ,IAAAA,WAAW,EAAE;AAAA,aAAM,IAAN;AAAA,KANJ;AAOTC,IAAAA,eAAe,EAAE;AAAA,aAAO;AACtBvU,QAAAA,mBAAmB,EAAE,IADC;AAEtBxB,QAAAA,gBAAgB,EAAE,CAAClvG,MAAM,CAACooC,MAAP,CAAcq/D;AAFX,OAAP;AAAA;AAPR,GAAX;AAYD;;;;;;;;;;;;;;AC7HD;;AACA;;AACA;;;;AACe,SAASyd,eAAT,CAAyBhO,IAAzB,EAA+B;AAC5C,MACEl3G,MADF,GAIIk3G,IAJJ,CACEl3G,MADF;AAAA,MAEE4oG,YAFF,GAIIsO,IAJJ,CAEEtO,YAFF;AAAA,MAGE7lG,EAHF,GAIIm0G,IAJJ,CAGEn0G,EAHF;AAKA6lG,EAAAA,YAAY,CAAC;AACXuc,IAAAA,eAAe,EAAE;AACfx3C,MAAAA,MAAM,EAAE,EADO;AAEfy3C,MAAAA,OAAO,EAAE,CAFM;AAGfC,MAAAA,KAAK,EAAE,GAHQ;AAIfh9G,MAAAA,KAAK,EAAE,CAJQ;AAKfi9G,MAAAA,QAAQ,EAAE,CALK;AAMfpB,MAAAA,YAAY,EAAE,IANC;AAOfC,MAAAA,WAAW,EAAE;AAPE;AADN,GAAD,CAAZ;;AAYA,MAAM7X,YAAY,GAAG,SAAfA,YAAe,GAAM;AACzB,QACSiZ,WADT,GAKIvlH,MALJ,CACEhC,KADF;AAAA,QAEUwnH,YAFV,GAKIxlH,MALJ,CAEEjC,MAFF;AAAA,QAGEkV,MAHF,GAKIjT,MALJ,CAGEiT,MAHF;AAAA,QAIE2zF,eAJF,GAKI5mG,MALJ,CAIE4mG,eAJF;AAMA,QAAMx+D,MAAM,GAAGpoC,MAAM,CAACooC,MAAP,CAAc+8E,eAA7B;AACA,QAAMttF,YAAY,GAAG73B,MAAM,CAAC63B,YAAP,EAArB;AACA,QAAMqjE,SAAS,GAAGl7F,MAAM,CAACiwD,SAAzB;AACA,QAAMv2B,MAAM,GAAG7B,YAAY,GAAG,CAACqjE,SAAD,GAAaqqB,WAAW,GAAG,CAA9B,GAAkC,CAACrqB,SAAD,GAAasqB,YAAY,GAAG,CAAzF;AACA,QAAM73C,MAAM,GAAG91C,YAAY,GAAGuQ,MAAM,CAACulC,MAAV,GAAmB,CAACvlC,MAAM,CAACulC,MAAtD;AACA,QAAM1d,SAAS,GAAG7nB,MAAM,CAACi9E,KAAzB,CAZyB,CAYO;;AAEhC,SAAK,IAAIhrH,CAAC,GAAG,CAAR,EAAWR,MAAM,GAAGoZ,MAAM,CAACpZ,MAAhC,EAAwCQ,CAAC,GAAGR,MAA5C,EAAoDQ,CAAC,IAAI,CAAzD,EAA4D;AAC1D,UAAM2nH,QAAQ,GAAG/uG,MAAM,CAACgoE,EAAP,CAAU5gF,CAAV,CAAjB;AACA,UAAM0xG,SAAS,GAAGnF,eAAe,CAACvsG,CAAD,CAAjC;AACA,UAAM6jH,WAAW,GAAG8D,QAAQ,CAAC,CAAD,CAAR,CAAYlE,iBAAhC;AACA,UAAM2H,gBAAgB,GAAG,CAAC/rF,MAAM,GAAGwkF,WAAT,GAAuBnS,SAAS,GAAG,CAApC,IAAyCA,SAAzC,GAAqD3jE,MAAM,CAACk9E,QAArF;AACA,UAAII,OAAO,GAAG7tF,YAAY,GAAG81C,MAAM,GAAG83C,gBAAZ,GAA+B,CAAzD;AACA,UAAIE,OAAO,GAAG9tF,YAAY,GAAG,CAAH,GAAO81C,MAAM,GAAG83C,gBAA1C,CAN0D,CAME;;AAE5D,UAAIG,UAAU,GAAG,CAAC31D,SAAD,GAAarzD,IAAI,CAACs5B,GAAL,CAASuvF,gBAAT,CAA9B;AACA,UAAIL,OAAO,GAAGh9E,MAAM,CAACg9E,OAArB,CAT0D,CAS5B;;AAE9B,UAAI,OAAOA,OAAP,KAAmB,QAAnB,IAA+BA,OAAO,CAAClkH,OAAR,CAAgB,GAAhB,MAAyB,CAAC,CAA7D,EAAgE;AAC9DkkH,QAAAA,OAAO,GAAGl6G,UAAU,CAACk9B,MAAM,CAACg9E,OAAR,CAAV,GAA6B,GAA7B,GAAmCrZ,SAA7C;AACD;;AAED,UAAI8Z,UAAU,GAAGhuF,YAAY,GAAG,CAAH,GAAOutF,OAAO,GAAGK,gBAA9C;AACA,UAAIK,UAAU,GAAGjuF,YAAY,GAAGutF,OAAO,GAAGK,gBAAb,GAAgC,CAA7D;AACA,UAAIp9G,KAAK,GAAG,IAAI,CAAC,IAAI+/B,MAAM,CAAC//B,KAAZ,IAAqBzL,IAAI,CAACs5B,GAAL,CAASuvF,gBAAT,CAArC,CAjB0D,CAiBO;;AAEjE,UAAI7oH,IAAI,CAACs5B,GAAL,CAAS4vF,UAAT,IAAuB,KAA3B,EAAkCA,UAAU,GAAG,CAAb;AAClC,UAAIlpH,IAAI,CAACs5B,GAAL,CAAS2vF,UAAT,IAAuB,KAA3B,EAAkCA,UAAU,GAAG,CAAb;AAClC,UAAIjpH,IAAI,CAACs5B,GAAL,CAAS0vF,UAAT,IAAuB,KAA3B,EAAkCA,UAAU,GAAG,CAAb;AAClC,UAAIhpH,IAAI,CAACs5B,GAAL,CAASwvF,OAAT,IAAoB,KAAxB,EAA+BA,OAAO,GAAG,CAAV;AAC/B,UAAI9oH,IAAI,CAACs5B,GAAL,CAASyvF,OAAT,IAAoB,KAAxB,EAA+BA,OAAO,GAAG,CAAV;AAC/B,UAAI/oH,IAAI,CAACs5B,GAAL,CAAS7tB,KAAT,IAAkB,KAAtB,EAA6BA,KAAK,GAAG,CAAR;AAC7B,UAAM09G,cAAc,yBAAkBD,UAAlB,gBAAkCD,UAAlC,gBAAkDD,UAAlD,0BAA4ED,OAA5E,0BAAmGD,OAAnG,wBAAwHr9G,KAAxH,MAApB;AACA,UAAM8sG,SAAS,GAAG,2BAAa/sE,MAAb,EAAqB45E,QAArB,CAAlB;AACA7M,MAAAA,SAAS,CAACja,SAAV,CAAoB6qB,cAApB;AACA/D,MAAAA,QAAQ,CAAC,CAAD,CAAR,CAAY/jH,KAAZ,CAAkB6mH,MAAlB,GAA2B,CAACloH,IAAI,CAACs5B,GAAL,CAASt5B,IAAI,CAACu1C,KAAL,CAAWszE,gBAAX,CAAT,CAAD,GAA0C,CAArE;;AAEA,UAAIr9E,MAAM,CAAC87E,YAAX,EAAyB;AACvB;AACA,YAAI8B,eAAe,GAAGnuF,YAAY,GAAGmqF,QAAQ,CAAC/jB,IAAT,CAAc,2BAAd,CAAH,GAAgD+jB,QAAQ,CAAC/jB,IAAT,CAAc,0BAAd,CAAlF;AACA,YAAIgoB,cAAc,GAAGpuF,YAAY,GAAGmqF,QAAQ,CAAC/jB,IAAT,CAAc,4BAAd,CAAH,GAAiD+jB,QAAQ,CAAC/jB,IAAT,CAAc,6BAAd,CAAlF;;AAEA,YAAI+nB,eAAe,CAACnsH,MAAhB,KAA2B,CAA/B,EAAkC;AAChCmsH,UAAAA,eAAe,GAAG,2BAAa59E,MAAb,EAAqB45E,QAArB,EAA+BnqF,YAAY,GAAG,MAAH,GAAY,KAAvD,CAAlB;AACD;;AAED,YAAIouF,cAAc,CAACpsH,MAAf,KAA0B,CAA9B,EAAiC;AAC/BosH,UAAAA,cAAc,GAAG,2BAAa79E,MAAb,EAAqB45E,QAArB,EAA+BnqF,YAAY,GAAG,OAAH,GAAa,QAAxD,CAAjB;AACD;;AAED,YAAImuF,eAAe,CAACnsH,MAApB,EAA4BmsH,eAAe,CAAC,CAAD,CAAf,CAAmB/nH,KAAnB,CAAyB6kE,OAAzB,GAAmC2iD,gBAAgB,GAAG,CAAnB,GAAuBA,gBAAvB,GAA0C,CAA7E;AAC5B,YAAIQ,cAAc,CAACpsH,MAAnB,EAA2BosH,cAAc,CAAC,CAAD,CAAd,CAAkBhoH,KAAlB,CAAwB6kE,OAAxB,GAAkC,CAAC2iD,gBAAD,GAAoB,CAApB,GAAwB,CAACA,gBAAzB,GAA4C,CAA9E;AAC5B;AACF;AACF,GA7DD;;AA+DA,MAAM5Q,aAAa,GAAG,SAAhBA,aAAgB,CAAA90G,QAAQ,EAAI;AAChC,QACEokH,WADF,GAEInkH,MAAM,CAACooC,MAAP,CAAc+8E,eAFlB,CACEhB,WADF;AAGA,QAAMY,mBAAmB,GAAGZ,WAAW,GAAGnkH,MAAM,CAACiT,MAAP,CAAcgrF,IAAd,CAAmBkmB,WAAnB,CAAH,GAAqCnkH,MAAM,CAACiT,MAAnF;AACA8xG,IAAAA,mBAAmB,CAACh8G,UAApB,CAA+BhJ,QAA/B,EAAyCk+F,IAAzC,CAA8C,8GAA9C,EAA8Jl1F,UAA9J,CAAyKhJ,QAAzK;AACD,GAND;;AAQA,2BAAW;AACTovG,IAAAA,MAAM,EAAE,WADC;AAETnvG,IAAAA,MAAM,EAANA,MAFS;AAGT+C,IAAAA,EAAE,EAAFA,EAHS;AAITupG,IAAAA,YAAY,EAAZA,YAJS;AAKTuI,IAAAA,aAAa,EAAbA,aALS;AAMTmQ,IAAAA,WAAW,EAAE;AAAA,aAAM,IAAN;AAAA,KANJ;AAOTC,IAAAA,eAAe,EAAE;AAAA,aAAO;AACtBvU,QAAAA,mBAAmB,EAAE;AADC,OAAP;AAAA;AAPR,GAAX;AAWD;;;;;;;;;;;;;;ACvGD;;AACA;;AACA;;AACA;;;;AACe,SAASwV,cAAT,CAAwBhP,IAAxB,EAA8B;AAC3C,MACEl3G,MADF,GAIIk3G,IAJJ,CACEl3G,MADF;AAAA,MAEE4oG,YAFF,GAIIsO,IAJJ,CAEEtO,YAFF;AAAA,MAGE7lG,EAHF,GAIIm0G,IAJJ,CAGEn0G,EAHF;AAKA6lG,EAAAA,YAAY,CAAC;AACXud,IAAAA,cAAc,EAAE;AACdhC,MAAAA,WAAW,EAAE,IADC;AAEdiC,MAAAA,aAAa,EAAE,CAFD;AAGdC,MAAAA,iBAAiB,EAAE,KAHL;AAIdC,MAAAA,kBAAkB,EAAE,CAJN;AAKdtB,MAAAA,WAAW,EAAE,IALC;AAMdlzF,MAAAA,IAAI,EAAE;AACJm+B,QAAAA,SAAS,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CADP;AAEJ0d,QAAAA,MAAM,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAFJ;AAGJ7K,QAAAA,OAAO,EAAE,CAHL;AAIJz6D,QAAAA,KAAK,EAAE;AAJH,OANQ;AAYdtB,MAAAA,IAAI,EAAE;AACJkpD,QAAAA,SAAS,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CADP;AAEJ0d,QAAAA,MAAM,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAFJ;AAGJ7K,QAAAA,OAAO,EAAE,CAHL;AAIJz6D,QAAAA,KAAK,EAAE;AAJH;AAZQ;AADL,GAAD,CAAZ;;AAsBA,MAAMk+G,iBAAiB,GAAG,SAApBA,iBAAoB,CAAAniH,KAAK,EAAI;AACjC,QAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B,OAAOA,KAAP;AAC/B,qBAAUA,KAAV;AACD,GAHD;;AAKA,MAAMkoG,YAAY,GAAG,SAAfA,YAAe,GAAM;AACzB,QACEr5F,MADF,GAIIjT,MAJJ,CACEiT,MADF;AAAA,QAEEm6F,UAFF,GAIIptG,MAJJ,CAEEotG,UAFF;AAAA,QAGExG,eAHF,GAII5mG,MAJJ,CAGE4mG,eAHF;AAKA,QAAMx+D,MAAM,GAAGpoC,MAAM,CAACooC,MAAP,CAAc+9E,cAA7B;AACA,QACsB9K,UADtB,GAEIjzE,MAFJ,CACEk+E,kBADF;AAGA,QAAME,gBAAgB,GAAGxmH,MAAM,CAACooC,MAAP,CAAcs/D,cAAvC;;AAEA,QAAI8e,gBAAJ,EAAsB;AACpB,UAAMn8E,MAAM,GAAGu8D,eAAe,CAAC,CAAD,CAAf,GAAqB,CAArB,GAAyB5mG,MAAM,CAACooC,MAAP,CAAco+D,kBAAvC,IAA6D,CAA5E;AACA4G,MAAAA,UAAU,CAAClS,SAAX,iCAA8C7wD,MAA9C;AACD;;AAfwB,+BAiBhBhwC,CAjBgB;AAkBvB,UAAM2nH,QAAQ,GAAG/uG,MAAM,CAACgoE,EAAP,CAAU5gF,CAAV,CAAjB;AACA,UAAM8jH,aAAa,GAAG6D,QAAQ,CAAC,CAAD,CAAR,CAAY/6G,QAAlC;AACA,UAAMA,QAAQ,GAAGrK,IAAI,CAACyH,GAAL,CAASzH,IAAI,CAAC0H,GAAL,CAAS09G,QAAQ,CAAC,CAAD,CAAR,CAAY/6G,QAArB,EAA+B,CAACmhC,MAAM,CAACg+E,aAAvC,CAAT,EAAgEh+E,MAAM,CAACg+E,aAAvE,CAAjB;AACA,UAAI5H,gBAAgB,GAAGv3G,QAAvB;;AAEA,UAAI,CAACu/G,gBAAL,EAAuB;AACrBhI,QAAAA,gBAAgB,GAAG5hH,IAAI,CAACyH,GAAL,CAASzH,IAAI,CAAC0H,GAAL,CAAS09G,QAAQ,CAAC,CAAD,CAAR,CAAYxD,gBAArB,EAAuC,CAACp2E,MAAM,CAACg+E,aAA/C,CAAT,EAAwEh+E,MAAM,CAACg+E,aAA/E,CAAnB;AACD;;AAED,UAAMxjH,MAAM,GAAGo/G,QAAQ,CAAC,CAAD,CAAR,CAAYlE,iBAA3B;AACA,UAAM75F,CAAC,GAAG,CAACjkB,MAAM,CAACooC,MAAP,CAAcq/D,OAAd,GAAwB,CAAC7kG,MAAD,GAAU5C,MAAM,CAACiwD,SAAzC,GAAqD,CAACrtD,MAAvD,EAA+D,CAA/D,EAAkE,CAAlE,CAAV;AACA,UAAM5G,CAAC,GAAG,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAV;AACA,UAAI07B,MAAM,GAAG,KAAb;;AAEA,UAAI,CAAC13B,MAAM,CAAC63B,YAAP,EAAL,EAA4B;AAC1B5T,QAAAA,CAAC,CAAC,CAAD,CAAD,GAAOA,CAAC,CAAC,CAAD,CAAR;AACAA,QAAAA,CAAC,CAAC,CAAD,CAAD,GAAO,CAAP;AACD;;AAED,UAAIhpB,IAAI,GAAG;AACTg1D,QAAAA,SAAS,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CADF;AAET0d,QAAAA,MAAM,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAFC;AAGTtlE,QAAAA,KAAK,EAAE,CAHE;AAITy6D,QAAAA,OAAO,EAAE;AAJA,OAAX;;AAOA,UAAI77D,QAAQ,GAAG,CAAf,EAAkB;AAChBhM,QAAAA,IAAI,GAAGmtC,MAAM,CAACrhC,IAAd;AACA2wB,QAAAA,MAAM,GAAG,IAAT;AACD,OAHD,MAGO,IAAIzwB,QAAQ,GAAG,CAAf,EAAkB;AACvBhM,QAAAA,IAAI,GAAGmtC,MAAM,CAACtW,IAAd;AACA4F,QAAAA,MAAM,GAAG,IAAT;AACD,OAlDsB,CAkDrB;;;AAGFzT,MAAAA,CAAC,CAAC1lB,OAAF,CAAU,UAAC6F,KAAD,EAAQ3I,KAAR,EAAkB;AAC1BwoB,QAAAA,CAAC,CAACxoB,KAAD,CAAD,kBAAmB2I,KAAnB,mBAAiCmiH,iBAAiB,CAACtrH,IAAI,CAACg1D,SAAL,CAAex0D,KAAf,CAAD,CAAlD,gBAA+EmB,IAAI,CAACs5B,GAAL,CAASjvB,QAAQ,GAAGo0G,UAApB,CAA/E;AACD,OAFD,EArDuB,CAuDnB;;AAEJr/G,MAAAA,CAAC,CAACuC,OAAF,CAAU,UAAC6F,KAAD,EAAQ3I,KAAR,EAAkB;AAC1BO,QAAAA,CAAC,CAACP,KAAD,CAAD,GAAWR,IAAI,CAAC0yE,MAAL,CAAYlyE,KAAZ,IAAqBmB,IAAI,CAACs5B,GAAL,CAASjvB,QAAQ,GAAGo0G,UAApB,CAAhC;AACD,OAFD;AAGA2G,MAAAA,QAAQ,CAAC,CAAD,CAAR,CAAY/jH,KAAZ,CAAkB6mH,MAAlB,GAA2B,CAACloH,IAAI,CAACs5B,GAAL,CAASt5B,IAAI,CAACu1C,KAAL,CAAWgsE,aAAX,CAAT,CAAD,GAAuClrG,MAAM,CAACpZ,MAAzE;AACA,UAAM4sH,eAAe,GAAGxiG,CAAC,CAACm7B,IAAF,CAAO,IAAP,CAAxB;AACA,UAAMsnE,YAAY,qBAAc1qH,CAAC,CAAC,CAAD,CAAf,0BAAkCA,CAAC,CAAC,CAAD,CAAnC,0BAAsDA,CAAC,CAAC,CAAD,CAAvD,SAAlB;AACA,UAAM4oH,WAAW,GAAGpG,gBAAgB,GAAG,CAAnB,mBAAgC,IAAI,CAAC,IAAIvjH,IAAI,CAACoN,KAAV,IAAmBm2G,gBAAnB,GAAsCnD,UAA1E,yBAAmG,IAAI,CAAC,IAAIpgH,IAAI,CAACoN,KAAV,IAAmBm2G,gBAAnB,GAAsCnD,UAA7I,MAApB;AACA,UAAMsL,aAAa,GAAGnI,gBAAgB,GAAG,CAAnB,GAAuB,IAAI,CAAC,IAAIvjH,IAAI,CAAC6nE,OAAV,IAAqB07C,gBAArB,GAAwCnD,UAAnE,GAAgF,IAAI,CAAC,IAAIpgH,IAAI,CAAC6nE,OAAV,IAAqB07C,gBAArB,GAAwCnD,UAAlJ;AACA,UAAMngB,SAAS,yBAAkBurB,eAAlB,eAAsCC,YAAtC,cAAsD9B,WAAtD,CAAf,CAjEuB,CAiE6D;;AAEpF,UAAIltF,MAAM,IAAIz8B,IAAI,CAAC2rH,MAAf,IAAyB,CAAClvF,MAA9B,EAAsC;AACpC,YAAImtF,SAAS,GAAG7C,QAAQ,CAAChlH,QAAT,CAAkB,sBAAlB,CAAhB;;AAEA,YAAI6nH,SAAS,CAAChrH,MAAV,KAAqB,CAArB,IAA0BoB,IAAI,CAAC2rH,MAAnC,EAA2C;AACzC/B,UAAAA,SAAS,GAAG,2BAAaz8E,MAAb,EAAqB45E,QAArB,CAAZ;AACD;;AAED,YAAI6C,SAAS,CAAChrH,MAAd,EAAsB;AACpB,cAAMgtH,aAAa,GAAGz+E,MAAM,CAACi+E,iBAAP,GAA2Bp/G,QAAQ,IAAI,IAAImhC,MAAM,CAACg+E,aAAf,CAAnC,GAAmEn/G,QAAzF;AACA49G,UAAAA,SAAS,CAAC,CAAD,CAAT,CAAa5mH,KAAb,CAAmB6kE,OAAnB,GAA6BlmE,IAAI,CAACyH,GAAL,CAASzH,IAAI,CAAC0H,GAAL,CAAS1H,IAAI,CAACs5B,GAAL,CAAS2wF,aAAT,CAAT,EAAkC,CAAlC,CAAT,EAA+C,CAA/C,CAA7B;AACD;AACF;;AAED,UAAM1R,SAAS,GAAG,2BAAa/sE,MAAb,EAAqB45E,QAArB,CAAlB;AACA7M,MAAAA,SAAS,CAACja,SAAV,CAAoBA,SAApB,EAA+BoB,GAA/B,CAAmC;AACjCx5B,QAAAA,OAAO,EAAE6jD;AADwB,OAAnC;;AAIA,UAAI1rH,IAAI,CAACooG,MAAT,EAAiB;AACf8R,QAAAA,SAAS,CAAC7Y,GAAV,CAAc,kBAAd,EAAkCrhG,IAAI,CAACooG,MAAvC;AACD;AAvFsB;;AAiBzB,SAAK,IAAIhpG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4Y,MAAM,CAACpZ,MAA3B,EAAmCQ,CAAC,IAAI,CAAxC,EAA2C;AAAA,YAAlCA,CAAkC;AAuE1C;AACF,GAzFD;;AA2FA,MAAMw6G,aAAa,GAAG,SAAhBA,aAAgB,CAAA90G,QAAQ,EAAI;AAChC,QACEokH,WADF,GAEInkH,MAAM,CAACooC,MAAP,CAAc+9E,cAFlB,CACEhC,WADF;AAGA,QAAMY,mBAAmB,GAAGZ,WAAW,GAAGnkH,MAAM,CAACiT,MAAP,CAAcgrF,IAAd,CAAmBkmB,WAAnB,CAAH,GAAqCnkH,MAAM,CAACiT,MAAnF;AACA8xG,IAAAA,mBAAmB,CAACh8G,UAApB,CAA+BhJ,QAA/B,EAAyCk+F,IAAzC,CAA8C,sBAA9C,EAAsEl1F,UAAtE,CAAiFhJ,QAAjF;AACA,6CAA2B;AACzBC,MAAAA,MAAM,EAANA,MADyB;AAEzBD,MAAAA,QAAQ,EAARA,QAFyB;AAGzBokH,MAAAA,WAAW,EAAXA,WAHyB;AAIzB2C,MAAAA,SAAS,EAAE;AAJc,KAA3B;AAMD,GAZD;;AAcA,2BAAW;AACT3X,IAAAA,MAAM,EAAE,UADC;AAETnvG,IAAAA,MAAM,EAANA,MAFS;AAGT+C,IAAAA,EAAE,EAAFA,EAHS;AAITupG,IAAAA,YAAY,EAAZA,YAJS;AAKTuI,IAAAA,aAAa,EAAbA,aALS;AAMTmQ,IAAAA,WAAW,EAAE;AAAA,aAAMhlH,MAAM,CAACooC,MAAP,CAAc+9E,cAAd,CAA6BnB,WAAnC;AAAA,KANJ;AAOTC,IAAAA,eAAe,EAAE;AAAA,aAAO;AACtBvU,QAAAA,mBAAmB,EAAE,IADC;AAEtBxB,QAAAA,gBAAgB,EAAE,CAAClvG,MAAM,CAACooC,MAAP,CAAcq/D;AAFX,OAAP;AAAA;AAPR,GAAX;AAYD;;;;;;;;;;;;;;AC1JD;;AACA;;;;AACe,SAASsf,UAAT,CAAoB7P,IAApB,EAA0B;AACvC,MACEl3G,MADF,GAIIk3G,IAJJ,CACEl3G,MADF;AAAA,MAEE4oG,YAFF,GAIIsO,IAJJ,CAEEtO,YAFF;AAAA,MAGE7lG,EAHF,GAIIm0G,IAJJ,CAGEn0G,EAHF;AAKA6lG,EAAAA,YAAY,CAAC;AACXoe,IAAAA,UAAU,EAAE;AACV9C,MAAAA,YAAY,EAAE,IADJ;AAEV0C,MAAAA,MAAM,EAAE,IAFE;AAGVK,MAAAA,YAAY,EAAE,EAHJ;AAIVC,MAAAA,WAAW,EAAE;AAJH;AADD,GAAD,CAAZ;;AASA,MAAM5a,YAAY,GAAG,SAAfA,YAAe,GAAM;AACzB,QACExH,GADF,GASI9kG,MATJ,CACE8kG,GADF;AAAA,QAEEsI,UAFF,GASIptG,MATJ,CAEEotG,UAFF;AAAA,QAGEn6F,MAHF,GASIjT,MATJ,CAGEiT,MAHF;AAAA,QAISsyG,WAJT,GASIvlH,MATJ,CAIEhC,KAJF;AAAA,QAKUwnH,YALV,GASIxlH,MATJ,CAKEjC,MALF;AAAA,QAMgBy+D,GANhB,GASIx8D,MATJ,CAMEwsG,YANF;AAAA,QAOQX,UAPR,GASI7rG,MATJ,CAOErH,IAPF;AAAA,QAQE0vG,OARF,GASIroG,MATJ,CAQEqoG,OARF;AAUA,QAAMjgE,MAAM,GAAGpoC,MAAM,CAACooC,MAAP,CAAc4+E,UAA7B;AACA,QAAMnvF,YAAY,GAAG73B,MAAM,CAAC63B,YAAP,EAArB;AACA,QAAM8hF,SAAS,GAAG35G,MAAM,CAAC8zG,OAAP,IAAkB9zG,MAAM,CAACooC,MAAP,CAAc0rE,OAAd,CAAsBx4G,OAA1D;AACA,QAAI6rH,aAAa,GAAG,CAApB;AACA,QAAIC,aAAJ;;AAEA,QAAIh/E,MAAM,CAACw+E,MAAX,EAAmB;AACjB,UAAI/uF,YAAJ,EAAkB;AAChBuvF,QAAAA,aAAa,GAAGha,UAAU,CAACnP,IAAX,CAAgB,qBAAhB,CAAhB;;AAEA,YAAImpB,aAAa,CAACvtH,MAAd,KAAyB,CAA7B,EAAgC;AAC9ButH,UAAAA,aAAa,GAAG,kBAAE,wCAAF,CAAhB;AACAha,UAAAA,UAAU,CAAClQ,MAAX,CAAkBkqB,aAAlB;AACD;;AAEDA,QAAAA,aAAa,CAAC9qB,GAAd,CAAkB;AAChBv+F,UAAAA,MAAM,YAAKwnH,WAAL;AADU,SAAlB;AAGD,OAXD,MAWO;AACL6B,QAAAA,aAAa,GAAGtiB,GAAG,CAAC7G,IAAJ,CAAS,qBAAT,CAAhB;;AAEA,YAAImpB,aAAa,CAACvtH,MAAd,KAAyB,CAA7B,EAAgC;AAC9ButH,UAAAA,aAAa,GAAG,kBAAE,wCAAF,CAAhB;AACAtiB,UAAAA,GAAG,CAAC5H,MAAJ,CAAWkqB,aAAX;AACD;AACF;AACF;;AAED,SAAK,IAAI/sH,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4Y,MAAM,CAACpZ,MAA3B,EAAmCQ,CAAC,IAAI,CAAxC,EAA2C;AACzC,UAAM2nH,QAAQ,GAAG/uG,MAAM,CAACgoE,EAAP,CAAU5gF,CAAV,CAAjB;AACA,UAAIoZ,UAAU,GAAGpZ,CAAjB;;AAEA,UAAIs/G,SAAJ,EAAe;AACblmG,QAAAA,UAAU,GAAG7a,QAAQ,CAACopH,QAAQ,CAACznB,IAAT,CAAc,yBAAd,CAAD,EAA2C,EAA3C,CAArB;AACD;;AAED,UAAI8sB,UAAU,GAAG5zG,UAAU,GAAG,EAA9B;AACA,UAAI0+B,KAAK,GAAGv1C,IAAI,CAACC,KAAL,CAAWwqH,UAAU,GAAG,GAAxB,CAAZ;;AAEA,UAAI7qD,GAAJ,EAAS;AACP6qD,QAAAA,UAAU,GAAG,CAACA,UAAd;AACAl1E,QAAAA,KAAK,GAAGv1C,IAAI,CAACC,KAAL,CAAW,CAACwqH,UAAD,GAAc,GAAzB,CAAR;AACD;;AAED,UAAMpgH,QAAQ,GAAGrK,IAAI,CAAC0H,GAAL,CAAS1H,IAAI,CAACyH,GAAL,CAAS29G,QAAQ,CAAC,CAAD,CAAR,CAAY/6G,QAArB,EAA+B,CAA/B,CAAT,EAA4C,CAAC,CAA7C,CAAjB;AACA,UAAIqgH,EAAE,GAAG,CAAT;AACA,UAAIC,EAAE,GAAG,CAAT;AACA,UAAIrpE,EAAE,GAAG,CAAT;;AAEA,UAAIzqC,UAAU,GAAG,CAAb,KAAmB,CAAvB,EAA0B;AACxB6zG,QAAAA,EAAE,GAAG,CAACn1E,KAAD,GAAS,CAAT,GAAa05D,UAAlB;AACA3tD,QAAAA,EAAE,GAAG,CAAL;AACD,OAHD,MAGO,IAAI,CAACzqC,UAAU,GAAG,CAAd,IAAmB,CAAnB,KAAyB,CAA7B,EAAgC;AACrC6zG,QAAAA,EAAE,GAAG,CAAL;AACAppE,QAAAA,EAAE,GAAG,CAAC/L,KAAD,GAAS,CAAT,GAAa05D,UAAlB;AACD,OAHM,MAGA,IAAI,CAACp4F,UAAU,GAAG,CAAd,IAAmB,CAAnB,KAAyB,CAA7B,EAAgC;AACrC6zG,QAAAA,EAAE,GAAGzb,UAAU,GAAG15D,KAAK,GAAG,CAAR,GAAY05D,UAA9B;AACA3tD,QAAAA,EAAE,GAAG2tD,UAAL;AACD,OAHM,MAGA,IAAI,CAACp4F,UAAU,GAAG,CAAd,IAAmB,CAAnB,KAAyB,CAA7B,EAAgC;AACrC6zG,QAAAA,EAAE,GAAG,CAACzb,UAAN;AACA3tD,QAAAA,EAAE,GAAG,IAAI2tD,UAAJ,GAAiBA,UAAU,GAAG,CAAb,GAAiB15D,KAAvC;AACD;;AAED,UAAIqqB,GAAJ,EAAS;AACP8qD,QAAAA,EAAE,GAAG,CAACA,EAAN;AACD;;AAED,UAAI,CAACzvF,YAAL,EAAmB;AACjB0vF,QAAAA,EAAE,GAAGD,EAAL;AACAA,QAAAA,EAAE,GAAG,CAAL;AACD;;AAED,UAAMpsB,SAAS,qBAAcrjE,YAAY,GAAG,CAAH,GAAO,CAACwvF,UAAlC,0BAA4DxvF,YAAY,GAAGwvF,UAAH,GAAgB,CAAxF,8BAA6GC,EAA7G,iBAAsHC,EAAtH,iBAA+HrpE,EAA/H,QAAf;;AAEA,UAAIj3C,QAAQ,IAAI,CAAZ,IAAiBA,QAAQ,GAAG,CAAC,CAAjC,EAAoC;AAClCkgH,QAAAA,aAAa,GAAG1zG,UAAU,GAAG,EAAb,GAAkBxM,QAAQ,GAAG,EAA7C;AACA,YAAIu1D,GAAJ,EAAS2qD,aAAa,GAAG,CAAC1zG,UAAD,GAAc,EAAd,GAAmBxM,QAAQ,GAAG,EAA9C;AACV;;AAED+6G,MAAAA,QAAQ,CAAC9mB,SAAT,CAAmBA,SAAnB;;AAEA,UAAI9yD,MAAM,CAAC87E,YAAX,EAAyB;AACvB;AACA,YAAIsD,YAAY,GAAG3vF,YAAY,GAAGmqF,QAAQ,CAAC/jB,IAAT,CAAc,2BAAd,CAAH,GAAgD+jB,QAAQ,CAAC/jB,IAAT,CAAc,0BAAd,CAA/E;AACA,YAAIwpB,WAAW,GAAG5vF,YAAY,GAAGmqF,QAAQ,CAAC/jB,IAAT,CAAc,4BAAd,CAAH,GAAiD+jB,QAAQ,CAAC/jB,IAAT,CAAc,6BAAd,CAA/E;;AAEA,YAAIupB,YAAY,CAAC3tH,MAAb,KAAwB,CAA5B,EAA+B;AAC7B2tH,UAAAA,YAAY,GAAG,6DAAqC3vF,YAAY,GAAG,MAAH,GAAY,KAA7D,eAAf;AACAmqF,UAAAA,QAAQ,CAAC9kB,MAAT,CAAgBsqB,YAAhB;AACD;;AAED,YAAIC,WAAW,CAAC5tH,MAAZ,KAAuB,CAA3B,EAA8B;AAC5B4tH,UAAAA,WAAW,GAAG,6DAAqC5vF,YAAY,GAAG,OAAH,GAAa,QAA9D,eAAd;AACAmqF,UAAAA,QAAQ,CAAC9kB,MAAT,CAAgBuqB,WAAhB;AACD;;AAED,YAAID,YAAY,CAAC3tH,MAAjB,EAAyB2tH,YAAY,CAAC,CAAD,CAAZ,CAAgBvpH,KAAhB,CAAsB6kE,OAAtB,GAAgClmE,IAAI,CAAC0H,GAAL,CAAS,CAAC2C,QAAV,EAAoB,CAApB,CAAhC;AACzB,YAAIwgH,WAAW,CAAC5tH,MAAhB,EAAwB4tH,WAAW,CAAC,CAAD,CAAX,CAAexpH,KAAf,CAAqB6kE,OAArB,GAA+BlmE,IAAI,CAAC0H,GAAL,CAAS2C,QAAT,EAAmB,CAAnB,CAA/B;AACzB;AACF;;AAEDmmG,IAAAA,UAAU,CAAC9Q,GAAX,CAAe;AACb,qDAAwCuP,UAAU,GAAG,CAArD,OADa;AAEb,6CAAgCA,UAAU,GAAG,CAA7C;AAFa,KAAf;;AAKA,QAAIzjE,MAAM,CAACw+E,MAAX,EAAmB;AACjB,UAAI/uF,YAAJ,EAAkB;AAChBuvF,QAAAA,aAAa,CAAClsB,SAAd,4BAA4CqqB,WAAW,GAAG,CAAd,GAAkBn9E,MAAM,CAAC6+E,YAArE,iBAAwF,CAAC1B,WAAD,GAAe,CAAvG,oDAAkJn9E,MAAM,CAAC8+E,WAAzJ;AACD,OAFD,MAEO;AACL,YAAMQ,WAAW,GAAG9qH,IAAI,CAACs5B,GAAL,CAASixF,aAAT,IAA0BvqH,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACs5B,GAAL,CAASixF,aAAT,IAA0B,EAArC,IAA2C,EAAzF;AACA,YAAM9L,UAAU,GAAG,OAAOz+G,IAAI,CAAC0/B,GAAL,CAASorF,WAAW,GAAG,CAAd,GAAkB9qH,IAAI,CAACsL,EAAvB,GAA4B,GAArC,IAA4C,CAA5C,GAAgDtL,IAAI,CAACw/B,GAAL,CAASsrF,WAAW,GAAG,CAAd,GAAkB9qH,IAAI,CAACsL,EAAvB,GAA4B,GAArC,IAA4C,CAAnG,CAAnB;AACA,YAAMy/G,MAAM,GAAGv/E,MAAM,CAAC8+E,WAAtB;AACA,YAAMU,MAAM,GAAGx/E,MAAM,CAAC8+E,WAAP,GAAqB7L,UAApC;AACA,YAAMz4G,MAAM,GAAGwlC,MAAM,CAAC6+E,YAAtB;AACAG,QAAAA,aAAa,CAAClsB,SAAd,mBAAmCysB,MAAnC,kBAAiDC,MAAjD,gCAA6EpC,YAAY,GAAG,CAAf,GAAmB5iH,MAAhG,iBAA6G,CAAC4iH,YAAD,GAAgB,CAAhB,GAAoBoC,MAAjI;AACD;AACF;;AAED,QAAMC,OAAO,GAAGxf,OAAO,CAACyf,QAAR,IAAoBzf,OAAO,CAAC0f,SAA5B,GAAwC,CAAClc,UAAD,GAAc,CAAtD,GAA0D,CAA1E;AACAuB,IAAAA,UAAU,CAAClS,SAAX,6BAA0C2sB,OAA1C,yBAAgE7nH,MAAM,CAAC63B,YAAP,KAAwB,CAAxB,GAA4BsvF,aAA5F,0BAAyHnnH,MAAM,CAAC63B,YAAP,KAAwB,CAACsvF,aAAzB,GAAyC,CAAlK;AACD,GApID;;AAsIA,MAAMtS,aAAa,GAAG,SAAhBA,aAAgB,CAAA90G,QAAQ,EAAI;AAChC,QACE+kG,GADF,GAGI9kG,MAHJ,CACE8kG,GADF;AAAA,QAEE7xF,MAFF,GAGIjT,MAHJ,CAEEiT,MAFF;AAIAA,IAAAA,MAAM,CAAClK,UAAP,CAAkBhJ,QAAlB,EAA4Bk+F,IAA5B,CAAiC,8GAAjC,EAAiJl1F,UAAjJ,CAA4JhJ,QAA5J;;AAEA,QAAIC,MAAM,CAACooC,MAAP,CAAc4+E,UAAd,CAAyBJ,MAAzB,IAAmC,CAAC5mH,MAAM,CAAC63B,YAAP,EAAxC,EAA+D;AAC7DitE,MAAAA,GAAG,CAAC7G,IAAJ,CAAS,qBAAT,EAAgCl1F,UAAhC,CAA2ChJ,QAA3C;AACD;AACF,GAVD;;AAYA,2BAAW;AACTovG,IAAAA,MAAM,EAAE,MADC;AAETnvG,IAAAA,MAAM,EAANA,MAFS;AAGT+C,IAAAA,EAAE,EAAFA,EAHS;AAITupG,IAAAA,YAAY,EAAZA,YAJS;AAKTuI,IAAAA,aAAa,EAAbA,aALS;AAMTmQ,IAAAA,WAAW,EAAE;AAAA,aAAM,IAAN;AAAA,KANJ;AAOTC,IAAAA,eAAe,EAAE;AAAA,aAAO;AACtBtf,QAAAA,aAAa,EAAE,CADO;AAEtB0J,QAAAA,cAAc,EAAE,CAFM;AAGtBqB,QAAAA,mBAAmB,EAAE,IAHC;AAItBD,QAAAA,eAAe,EAAE,CAJK;AAKtBrB,QAAAA,YAAY,EAAE,CALQ;AAMtB1H,QAAAA,cAAc,EAAE,KANM;AAOtBwH,QAAAA,gBAAgB,EAAE;AAPI,OAAP;AAAA;AAPR,GAAX;AAiBD;;;;;;;;;;;;;;ACpLD;;AACA;;AACA;;;;AACe,SAAS8Y,UAAT,CAAoB9Q,IAApB,EAA0B;AACvC,MACEl3G,MADF,GAIIk3G,IAJJ,CACEl3G,MADF;AAAA,MAEE4oG,YAFF,GAIIsO,IAJJ,CAEEtO,YAFF;AAAA,MAGE7lG,EAHF,GAIIm0G,IAJJ,CAGEn0G,EAHF;AAKA6lG,EAAAA,YAAY,CAAC;AACXqf,IAAAA,UAAU,EAAE;AACVC,MAAAA,SAAS,EAAE,KADD;AAEV/D,MAAAA,WAAW,EAAE;AAFH;AADD,GAAD,CAAZ;;AAOA,MAAM7X,YAAY,GAAG,SAAfA,YAAe,GAAM;AACzB,QACEr5F,MADF,GAEIjT,MAFJ,CACEiT,MADF;AAGA,QAAMm1B,MAAM,GAAGpoC,MAAM,CAACooC,MAAP,CAAc6/E,UAA7B;;AAEA,SAAK,IAAI5tH,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4Y,MAAM,CAACpZ,MAA3B,EAAmCQ,CAAC,IAAI,CAAxC,EAA2C;AACzC,UAAM2nH,QAAQ,GAAGhiH,MAAM,CAACiT,MAAP,CAAcgoE,EAAd,CAAiB5gF,CAAjB,CAAjB;AACA,UAAMuI,MAAM,GAAGo/G,QAAQ,CAAC,CAAD,CAAR,CAAYlE,iBAA3B;AACA,UAAIwJ,EAAE,GAAG,CAAC1kH,MAAV;AACA,UAAI,CAAC5C,MAAM,CAACooC,MAAP,CAAc8mE,gBAAnB,EAAqCoY,EAAE,IAAItnH,MAAM,CAACiwD,SAAb;AACrC,UAAIs3D,EAAE,GAAG,CAAT;;AAEA,UAAI,CAACvnH,MAAM,CAAC63B,YAAP,EAAL,EAA4B;AAC1B0vF,QAAAA,EAAE,GAAGD,EAAL;AACAA,QAAAA,EAAE,GAAG,CAAL;AACD;;AAED,UAAMa,YAAY,GAAGnoH,MAAM,CAACooC,MAAP,CAAc6/E,UAAd,CAAyBC,SAAzB,GAAqCtrH,IAAI,CAAC0H,GAAL,CAAS,IAAI1H,IAAI,CAACs5B,GAAL,CAAS8rF,QAAQ,CAAC,CAAD,CAAR,CAAY/6G,QAArB,CAAb,EAA6C,CAA7C,CAArC,GAAuF,IAAIrK,IAAI,CAACyH,GAAL,CAASzH,IAAI,CAAC0H,GAAL,CAAS09G,QAAQ,CAAC,CAAD,CAAR,CAAY/6G,QAArB,EAA+B,CAAC,CAAhC,CAAT,EAA6C,CAA7C,CAAhH;AACA,UAAMkuG,SAAS,GAAG,2BAAa/sE,MAAb,EAAqB45E,QAArB,CAAlB;AACA7M,MAAAA,SAAS,CAAC7Y,GAAV,CAAc;AACZx5B,QAAAA,OAAO,EAAEqlD;AADG,OAAd,EAEGjtB,SAFH,uBAE4BosB,EAF5B,iBAEqCC,EAFrC;AAGD;AACF,GAxBD;;AA0BA,MAAM1S,aAAa,GAAG,SAAhBA,aAAgB,CAAA90G,QAAQ,EAAI;AAChC,QACEokH,WADF,GAEInkH,MAAM,CAACooC,MAAP,CAAc6/E,UAFlB,CACE9D,WADF;AAGA,QAAMY,mBAAmB,GAAGZ,WAAW,GAAGnkH,MAAM,CAACiT,MAAP,CAAcgrF,IAAd,CAAmBkmB,WAAnB,CAAH,GAAqCnkH,MAAM,CAACiT,MAAnF;AACA8xG,IAAAA,mBAAmB,CAACh8G,UAApB,CAA+BhJ,QAA/B;AACA,6CAA2B;AACzBC,MAAAA,MAAM,EAANA,MADyB;AAEzBD,MAAAA,QAAQ,EAARA,QAFyB;AAGzBokH,MAAAA,WAAW,EAAXA,WAHyB;AAIzB2C,MAAAA,SAAS,EAAE;AAJc,KAA3B;AAMD,GAZD;;AAcA,2BAAW;AACT3X,IAAAA,MAAM,EAAE,MADC;AAETnvG,IAAAA,MAAM,EAANA,MAFS;AAGT+C,IAAAA,EAAE,EAAFA,EAHS;AAITupG,IAAAA,YAAY,EAAZA,YAJS;AAKTuI,IAAAA,aAAa,EAAbA,aALS;AAMToQ,IAAAA,eAAe,EAAE;AAAA,aAAO;AACtBtf,QAAAA,aAAa,EAAE,CADO;AAEtB0J,QAAAA,cAAc,EAAE,CAFM;AAGtBqB,QAAAA,mBAAmB,EAAE,IAHC;AAItBtB,QAAAA,YAAY,EAAE,CAJQ;AAKtBF,QAAAA,gBAAgB,EAAE,CAAClvG,MAAM,CAACooC,MAAP,CAAcq/D;AALX,OAAP;AAAA;AANR,GAAX;AAcD;;;;;;;;;;;;;;ACtED;;AACA;;AACA;;AACA;;;;AACe,SAAS2gB,UAAT,CAAoBlR,IAApB,EAA0B;AACvC,MACEl3G,MADF,GAIIk3G,IAJJ,CACEl3G,MADF;AAAA,MAEE4oG,YAFF,GAIIsO,IAJJ,CAEEtO,YAFF;AAAA,MAGE7lG,EAHF,GAIIm0G,IAJJ,CAGEn0G,EAHF;AAKA6lG,EAAAA,YAAY,CAAC;AACXyf,IAAAA,UAAU,EAAE;AACVnE,MAAAA,YAAY,EAAE,IADJ;AAEVoE,MAAAA,aAAa,EAAE,IAFL;AAGVnE,MAAAA,WAAW,EAAE;AAHH;AADD,GAAD,CAAZ;;AAQA,MAAM7X,YAAY,GAAG,SAAfA,YAAe,GAAM;AACzB,QACEr5F,MADF,GAGIjT,MAHJ,CACEiT,MADF;AAAA,QAEgBupD,GAFhB,GAGIx8D,MAHJ,CAEEwsG,YAFF;AAIA,QAAMpkE,MAAM,GAAGpoC,MAAM,CAACooC,MAAP,CAAcigF,UAA7B;;AAEA,SAAK,IAAIhuH,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4Y,MAAM,CAACpZ,MAA3B,EAAmCQ,CAAC,IAAI,CAAxC,EAA2C;AACzC,UAAM2nH,QAAQ,GAAG/uG,MAAM,CAACgoE,EAAP,CAAU5gF,CAAV,CAAjB;AACA,UAAI4M,QAAQ,GAAG+6G,QAAQ,CAAC,CAAD,CAAR,CAAY/6G,QAA3B;;AAEA,UAAIjH,MAAM,CAACooC,MAAP,CAAcigF,UAAd,CAAyBC,aAA7B,EAA4C;AAC1CrhH,QAAAA,QAAQ,GAAGrK,IAAI,CAAC0H,GAAL,CAAS1H,IAAI,CAACyH,GAAL,CAAS29G,QAAQ,CAAC,CAAD,CAAR,CAAY/6G,QAArB,EAA+B,CAA/B,CAAT,EAA4C,CAAC,CAA7C,CAAX;AACD;;AAED,UAAMrE,MAAM,GAAGo/G,QAAQ,CAAC,CAAD,CAAR,CAAYlE,iBAA3B;AACA,UAAMnwC,MAAM,GAAG,CAAC,GAAD,GAAO1mE,QAAtB;AACA,UAAIy+G,OAAO,GAAG/3C,MAAd;AACA,UAAIg4C,OAAO,GAAG,CAAd;AACA,UAAI2B,EAAE,GAAGtnH,MAAM,CAACooC,MAAP,CAAcq/D,OAAd,GAAwB,CAAC7kG,MAAD,GAAU5C,MAAM,CAACiwD,SAAzC,GAAqD,CAACrtD,MAA/D;AACA,UAAI2kH,EAAE,GAAG,CAAT;;AAEA,UAAI,CAACvnH,MAAM,CAAC63B,YAAP,EAAL,EAA4B;AAC1B0vF,QAAAA,EAAE,GAAGD,EAAL;AACAA,QAAAA,EAAE,GAAG,CAAL;AACA3B,QAAAA,OAAO,GAAG,CAACD,OAAX;AACAA,QAAAA,OAAO,GAAG,CAAV;AACD,OALD,MAKO,IAAIlpD,GAAJ,EAAS;AACdkpD,QAAAA,OAAO,GAAG,CAACA,OAAX;AACD;;AAED1D,MAAAA,QAAQ,CAAC,CAAD,CAAR,CAAY/jH,KAAZ,CAAkB6mH,MAAlB,GAA2B,CAACloH,IAAI,CAACs5B,GAAL,CAASt5B,IAAI,CAACu1C,KAAL,CAAWlrC,QAAX,CAAT,CAAD,GAAkCgM,MAAM,CAACpZ,MAApE;;AAEA,UAAIuuC,MAAM,CAAC87E,YAAX,EAAyB;AACvB;AACA,YAAIsD,YAAY,GAAGxnH,MAAM,CAAC63B,YAAP,KAAwBmqF,QAAQ,CAAC/jB,IAAT,CAAc,2BAAd,CAAxB,GAAqE+jB,QAAQ,CAAC/jB,IAAT,CAAc,0BAAd,CAAxF;AACA,YAAIwpB,WAAW,GAAGznH,MAAM,CAAC63B,YAAP,KAAwBmqF,QAAQ,CAAC/jB,IAAT,CAAc,4BAAd,CAAxB,GAAsE+jB,QAAQ,CAAC/jB,IAAT,CAAc,6BAAd,CAAxF;;AAEA,YAAIupB,YAAY,CAAC3tH,MAAb,KAAwB,CAA5B,EAA+B;AAC7B2tH,UAAAA,YAAY,GAAG,2BAAap/E,MAAb,EAAqB45E,QAArB,EAA+BhiH,MAAM,CAAC63B,YAAP,KAAwB,MAAxB,GAAiC,KAAhE,CAAf;AACD;;AAED,YAAI4vF,WAAW,CAAC5tH,MAAZ,KAAuB,CAA3B,EAA8B;AAC5B4tH,UAAAA,WAAW,GAAG,2BAAar/E,MAAb,EAAqB45E,QAArB,EAA+BhiH,MAAM,CAAC63B,YAAP,KAAwB,OAAxB,GAAkC,QAAjE,CAAd;AACD;;AAED,YAAI2vF,YAAY,CAAC3tH,MAAjB,EAAyB2tH,YAAY,CAAC,CAAD,CAAZ,CAAgBvpH,KAAhB,CAAsB6kE,OAAtB,GAAgClmE,IAAI,CAAC0H,GAAL,CAAS,CAAC2C,QAAV,EAAoB,CAApB,CAAhC;AACzB,YAAIwgH,WAAW,CAAC5tH,MAAhB,EAAwB4tH,WAAW,CAAC,CAAD,CAAX,CAAexpH,KAAf,CAAqB6kE,OAArB,GAA+BlmE,IAAI,CAAC0H,GAAL,CAAS2C,QAAT,EAAmB,CAAnB,CAA/B;AACzB;;AAED,UAAMi0F,SAAS,yBAAkBosB,EAAlB,iBAA2BC,EAA3B,8BAAiD5B,OAAjD,0BAAwED,OAAxE,SAAf;AACA,UAAMvQ,SAAS,GAAG,2BAAa/sE,MAAb,EAAqB45E,QAArB,CAAlB;AACA7M,MAAAA,SAAS,CAACja,SAAV,CAAoBA,SAApB;AACD;AACF,GAtDD;;AAwDA,MAAM2Z,aAAa,GAAG,SAAhBA,aAAgB,CAAA90G,QAAQ,EAAI;AAChC,QACEokH,WADF,GAEInkH,MAAM,CAACooC,MAAP,CAAcigF,UAFlB,CACElE,WADF;AAGA,QAAMY,mBAAmB,GAAGZ,WAAW,GAAGnkH,MAAM,CAACiT,MAAP,CAAcgrF,IAAd,CAAmBkmB,WAAnB,CAAH,GAAqCnkH,MAAM,CAACiT,MAAnF;AACA8xG,IAAAA,mBAAmB,CAACh8G,UAApB,CAA+BhJ,QAA/B,EAAyCk+F,IAAzC,CAA8C,8GAA9C,EAA8Jl1F,UAA9J,CAAyKhJ,QAAzK;AACA,6CAA2B;AACzBC,MAAAA,MAAM,EAANA,MADyB;AAEzBD,MAAAA,QAAQ,EAARA,QAFyB;AAGzBokH,MAAAA,WAAW,EAAXA;AAHyB,KAA3B;AAKD,GAXD;;AAaA,2BAAW;AACThV,IAAAA,MAAM,EAAE,MADC;AAETnvG,IAAAA,MAAM,EAANA,MAFS;AAGT+C,IAAAA,EAAE,EAAFA,EAHS;AAITupG,IAAAA,YAAY,EAAZA,YAJS;AAKTuI,IAAAA,aAAa,EAAbA,aALS;AAMTmQ,IAAAA,WAAW,EAAE;AAAA,aAAM,IAAN;AAAA,KANJ;AAOTC,IAAAA,eAAe,EAAE;AAAA,aAAO;AACtBtf,QAAAA,aAAa,EAAE,CADO;AAEtB0J,QAAAA,cAAc,EAAE,CAFM;AAGtBqB,QAAAA,mBAAmB,EAAE,IAHC;AAItBtB,QAAAA,YAAY,EAAE,CAJQ;AAKtBF,QAAAA,gBAAgB,EAAE,CAAClvG,MAAM,CAACooC,MAAP,CAAcq/D;AALX,OAAP;AAAA;AAPR,GAAX;AAeD;;;;;;;;;;;;;;ACtGD;;;;AACe,SAASH,QAAT,CAAkB4P,IAAlB,EAAwB;AACrC,MACEl3G,MADF,GAKIk3G,IALJ,CACEl3G,MADF;AAAA,MAEE4oG,YAFF,GAKIsO,IALJ,CAEEtO,YAFF;AAAA,MAGE3C,IAHF,GAKIiR,IALJ,CAGEjR,IAHF;AAAA,MAIEjlG,IAJF,GAKIk2G,IALJ,CAIEl2G,IAJF;AAMA4nG,EAAAA,YAAY,CAAC;AACXtB,IAAAA,QAAQ,EAAE;AACRhsG,MAAAA,OAAO,EAAE,KADD;AAERitH,MAAAA,QAAQ,EAAE,IAFF;AAGRC,MAAAA,aAAa,EAAE,CAHP;AAIRC,MAAAA,cAAc,EAAE,IAJR;AAKRC,MAAAA,mBAAmB,EAAE,CALb;AAMRC,MAAAA,qBAAqB,EAAE,CANf;AAORC,MAAAA,MAAM,EAAE,KAPA;AAQRC,MAAAA,eAAe,EAAE;AART;AADC,GAAD,CAAZ;;AAaA,WAASpW,YAAT,GAAwB;AACtB,QAAMxiD,SAAS,GAAGjwD,MAAM,CAAC40G,YAAP,EAAlB;AACA50G,IAAAA,MAAM,CAACssG,YAAP,CAAoBr8C,SAApB;AACAjwD,IAAAA,MAAM,CAAC60G,aAAP,CAAqB,CAArB;AACA70G,IAAAA,MAAM,CAAC0pG,eAAP,CAAuBY,UAAvB,CAAkCzwG,MAAlC,GAA2C,CAA3C;AACAmG,IAAAA,MAAM,CAACsnG,QAAP,CAAgBqL,UAAhB,CAA2B;AACzBc,MAAAA,UAAU,EAAEzzG,MAAM,CAACw8D,GAAP,GAAax8D,MAAM,CAACiwD,SAApB,GAAgC,CAACjwD,MAAM,CAACiwD;AAD3B,KAA3B;AAGD;;AAED,WAASyiD,WAAT,GAAuB;AACrB,QACmBz3G,IADnB,GAGI+E,MAHJ,CACE0pG,eADF;AAAA,QAEEtW,OAFF,GAGIpzF,MAHJ,CAEEozF,OAFF,CADqB,CAIT;;AAEZ,QAAIn4F,IAAI,CAACqvG,UAAL,CAAgBzwG,MAAhB,KAA2B,CAA/B,EAAkC;AAChCoB,MAAAA,IAAI,CAACqvG,UAAL,CAAgBluG,IAAhB,CAAqB;AACnB5B,QAAAA,QAAQ,EAAE44F,OAAO,CAACpzF,MAAM,CAAC63B,YAAP,KAAwB,QAAxB,GAAmC,QAApC,CADE;AAEnBhyB,QAAAA,IAAI,EAAE5K,IAAI,CAAC6uG;AAFQ,OAArB;AAID;;AAED7uG,IAAAA,IAAI,CAACqvG,UAAL,CAAgBluG,IAAhB,CAAqB;AACnB5B,MAAAA,QAAQ,EAAE44F,OAAO,CAACpzF,MAAM,CAAC63B,YAAP,KAAwB,UAAxB,GAAqC,UAAtC,CADE;AAEnBhyB,MAAAA,IAAI,EAAE;AAFa,KAArB;AAID;;AAED,WAAS8sG,UAAT,CAAoBkF,KAApB,EAA2B;AACzB,QACEpE,UADF,GAEIoE,KAFJ,CACEpE,UADF;AAGA,QACErrE,MADF,GAMIpoC,MANJ,CACEooC,MADF;AAAA,QAEEglE,UAFF,GAMIptG,MANJ,CAEEotG,UAFF;AAAA,QAGgB5wC,GAHhB,GAMIx8D,MANJ,CAGEwsG,YAHF;AAAA,QAIE3F,QAJF,GAMI7mG,MANJ,CAIE6mG,QAJF;AAAA,QAKmB5rG,IALnB,GAMI+E,MANJ,CAKE0pG,eALF,CAJyB,CAUb;;AAEZ,QAAMyJ,YAAY,GAAG,iBAArB;AACA,QAAMC,QAAQ,GAAGD,YAAY,GAAGl4G,IAAI,CAAC6uG,cAArC;;AAEA,QAAI2J,UAAU,GAAG,CAACzzG,MAAM,CAACirG,YAAP,EAAlB,EAAyC;AACvCjrG,MAAAA,MAAM,CAAC0T,OAAP,CAAe1T,MAAM,CAACkT,WAAtB;AACA;AACD;;AAED,QAAIugG,UAAU,GAAG,CAACzzG,MAAM,CAACkrG,YAAP,EAAlB,EAAyC;AACvC,UAAIlrG,MAAM,CAACiT,MAAP,CAAcpZ,MAAd,GAAuBgtG,QAAQ,CAAChtG,MAApC,EAA4C;AAC1CmG,QAAAA,MAAM,CAAC0T,OAAP,CAAemzF,QAAQ,CAAChtG,MAAT,GAAkB,CAAjC;AACD,OAFD,MAEO;AACLmG,QAAAA,MAAM,CAAC0T,OAAP,CAAe1T,MAAM,CAACiT,MAAP,CAAcpZ,MAAd,GAAuB,CAAtC;AACD;;AAED;AACD;;AAED,QAAIuuC,MAAM,CAACk/D,QAAP,CAAgBihB,QAApB,EAA8B;AAC5B,UAAIttH,IAAI,CAACqvG,UAAL,CAAgBzwG,MAAhB,GAAyB,CAA7B,EAAgC;AAC9B,YAAMivH,aAAa,GAAG7tH,IAAI,CAACqvG,UAAL,CAAgBlkF,GAAhB,EAAtB;AACA,YAAM2iG,aAAa,GAAG9tH,IAAI,CAACqvG,UAAL,CAAgBlkF,GAAhB,EAAtB;AACA,YAAMvQ,QAAQ,GAAGizG,aAAa,CAACtuH,QAAd,GAAyBuuH,aAAa,CAACvuH,QAAxD;AACA,YAAMqL,IAAI,GAAGijH,aAAa,CAACjjH,IAAd,GAAqBkjH,aAAa,CAACljH,IAAhD;AACA7F,QAAAA,MAAM,CAACopG,QAAP,GAAkBvzF,QAAQ,GAAGhQ,IAA7B;AACA7F,QAAAA,MAAM,CAACopG,QAAP,IAAmB,CAAnB;;AAEA,YAAIxsG,IAAI,CAACs5B,GAAL,CAASl2B,MAAM,CAACopG,QAAhB,IAA4BhhE,MAAM,CAACk/D,QAAP,CAAgBuhB,eAAhD,EAAiE;AAC/D7oH,UAAAA,MAAM,CAACopG,QAAP,GAAkB,CAAlB;AACD,SAV6B,CAU5B;AACF;;;AAGA,YAAIvjG,IAAI,GAAG,GAAP,IAAc,oBAAQijH,aAAa,CAACjjH,IAAtB,GAA6B,GAA/C,EAAoD;AAClD7F,UAAAA,MAAM,CAACopG,QAAP,GAAkB,CAAlB;AACD;AACF,OAjBD,MAiBO;AACLppG,QAAAA,MAAM,CAACopG,QAAP,GAAkB,CAAlB;AACD;;AAEDppG,MAAAA,MAAM,CAACopG,QAAP,IAAmBhhE,MAAM,CAACk/D,QAAP,CAAgBqhB,qBAAnC;AACA1tH,MAAAA,IAAI,CAACqvG,UAAL,CAAgBzwG,MAAhB,GAAyB,CAAzB;AACA,UAAImvH,gBAAgB,GAAG,OAAO5gF,MAAM,CAACk/D,QAAP,CAAgBkhB,aAA9C;AACA,UAAMS,gBAAgB,GAAGjpH,MAAM,CAACopG,QAAP,GAAkB4f,gBAA3C;AACA,UAAIE,WAAW,GAAGlpH,MAAM,CAACiwD,SAAP,GAAmBg5D,gBAArC;AACA,UAAIzsD,GAAJ,EAAS0sD,WAAW,GAAG,CAACA,WAAf;AACT,UAAIC,QAAQ,GAAG,KAAf;AACA,UAAIC,mBAAJ;AACA,UAAMC,YAAY,GAAGzsH,IAAI,CAACs5B,GAAL,CAASl2B,MAAM,CAACopG,QAAhB,IAA4B,EAA5B,GAAiChhE,MAAM,CAACk/D,QAAP,CAAgBohB,mBAAtE;AACA,UAAIY,YAAJ;;AAEA,UAAIJ,WAAW,GAAGlpH,MAAM,CAACkrG,YAAP,EAAlB,EAAyC;AACvC,YAAI9iE,MAAM,CAACk/D,QAAP,CAAgBmhB,cAApB,EAAoC;AAClC,cAAIS,WAAW,GAAGlpH,MAAM,CAACkrG,YAAP,EAAd,GAAsC,CAACme,YAA3C,EAAyD;AACvDH,YAAAA,WAAW,GAAGlpH,MAAM,CAACkrG,YAAP,KAAwBme,YAAtC;AACD;;AAEDD,UAAAA,mBAAmB,GAAGppH,MAAM,CAACkrG,YAAP,EAAtB;AACAie,UAAAA,QAAQ,GAAG,IAAX;AACAluH,UAAAA,IAAI,CAACsvG,mBAAL,GAA2B,IAA3B;AACD,SARD,MAQO;AACL2e,UAAAA,WAAW,GAAGlpH,MAAM,CAACkrG,YAAP,EAAd;AACD;;AAED,YAAI9iE,MAAM,CAACjoC,IAAP,IAAeioC,MAAM,CAACs/D,cAA1B,EAA0C4hB,YAAY,GAAG,IAAf;AAC3C,OAdD,MAcO,IAAIJ,WAAW,GAAGlpH,MAAM,CAACirG,YAAP,EAAlB,EAAyC;AAC9C,YAAI7iE,MAAM,CAACk/D,QAAP,CAAgBmhB,cAApB,EAAoC;AAClC,cAAIS,WAAW,GAAGlpH,MAAM,CAACirG,YAAP,EAAd,GAAsCoe,YAA1C,EAAwD;AACtDH,YAAAA,WAAW,GAAGlpH,MAAM,CAACirG,YAAP,KAAwBoe,YAAtC;AACD;;AAEDD,UAAAA,mBAAmB,GAAGppH,MAAM,CAACirG,YAAP,EAAtB;AACAke,UAAAA,QAAQ,GAAG,IAAX;AACAluH,UAAAA,IAAI,CAACsvG,mBAAL,GAA2B,IAA3B;AACD,SARD,MAQO;AACL2e,UAAAA,WAAW,GAAGlpH,MAAM,CAACirG,YAAP,EAAd;AACD;;AAED,YAAI7iE,MAAM,CAACjoC,IAAP,IAAeioC,MAAM,CAACs/D,cAA1B,EAA0C4hB,YAAY,GAAG,IAAf;AAC3C,OAdM,MAcA,IAAIlhF,MAAM,CAACk/D,QAAP,CAAgBshB,MAApB,EAA4B;AACjC,YAAIjL,SAAJ;;AAEA,aAAK,IAAIl5E,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGoiE,QAAQ,CAAChtG,MAA7B,EAAqC4qC,CAAC,IAAI,CAA1C,EAA6C;AAC3C,cAAIoiE,QAAQ,CAACpiE,CAAD,CAAR,GAAc,CAACykF,WAAnB,EAAgC;AAC9BvL,YAAAA,SAAS,GAAGl5E,CAAZ;AACA;AACD;AACF;;AAED,YAAI7nC,IAAI,CAACs5B,GAAL,CAAS2wE,QAAQ,CAAC8W,SAAD,CAAR,GAAsBuL,WAA/B,IAA8CtsH,IAAI,CAACs5B,GAAL,CAAS2wE,QAAQ,CAAC8W,SAAS,GAAG,CAAb,CAAR,GAA0BuL,WAAnC,CAA9C,IAAiGlpH,MAAM,CAACwzG,cAAP,KAA0B,MAA/H,EAAuI;AACrI0V,UAAAA,WAAW,GAAGriB,QAAQ,CAAC8W,SAAD,CAAtB;AACD,SAFD,MAEO;AACLuL,UAAAA,WAAW,GAAGriB,QAAQ,CAAC8W,SAAS,GAAG,CAAb,CAAtB;AACD;;AAEDuL,QAAAA,WAAW,GAAG,CAACA,WAAf;AACD;;AAED,UAAII,YAAJ,EAAkB;AAChBtoH,QAAAA,IAAI,CAAC,eAAD,EAAkB,YAAM;AAC1BhB,UAAAA,MAAM,CAAC20G,OAAP;AACD,SAFG,CAAJ;AAGD,OApF2B,CAoF1B;;;AAGF,UAAI30G,MAAM,CAACopG,QAAP,KAAoB,CAAxB,EAA2B;AACzB,YAAI5sC,GAAJ,EAAS;AACPwsD,UAAAA,gBAAgB,GAAGpsH,IAAI,CAACs5B,GAAL,CAAS,CAAC,CAACgzF,WAAD,GAAelpH,MAAM,CAACiwD,SAAvB,IAAoCjwD,MAAM,CAACopG,QAApD,CAAnB;AACD,SAFD,MAEO;AACL4f,UAAAA,gBAAgB,GAAGpsH,IAAI,CAACs5B,GAAL,CAAS,CAACgzF,WAAW,GAAGlpH,MAAM,CAACiwD,SAAtB,IAAmCjwD,MAAM,CAACopG,QAAnD,CAAnB;AACD;;AAED,YAAIhhE,MAAM,CAACk/D,QAAP,CAAgBshB,MAApB,EAA4B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAMW,YAAY,GAAG3sH,IAAI,CAACs5B,GAAL,CAAS,CAACsmC,GAAG,GAAG,CAAC0sD,WAAJ,GAAkBA,WAAtB,IAAqClpH,MAAM,CAACiwD,SAArD,CAArB;AACA,cAAMu5D,gBAAgB,GAAGxpH,MAAM,CAAC4mG,eAAP,CAAuB5mG,MAAM,CAACkT,WAA9B,CAAzB;;AAEA,cAAIq2G,YAAY,GAAGC,gBAAnB,EAAqC;AACnCR,YAAAA,gBAAgB,GAAG5gF,MAAM,CAAChoC,KAA1B;AACD,WAFD,MAEO,IAAImpH,YAAY,GAAG,IAAIC,gBAAvB,EAAyC;AAC9CR,YAAAA,gBAAgB,GAAG5gF,MAAM,CAAChoC,KAAP,GAAe,GAAlC;AACD,WAFM,MAEA;AACL4oH,YAAAA,gBAAgB,GAAG5gF,MAAM,CAAChoC,KAAP,GAAe,GAAlC;AACD;AACF;AACF,OA1BD,MA0BO,IAAIgoC,MAAM,CAACk/D,QAAP,CAAgBshB,MAApB,EAA4B;AACjC5oH,QAAAA,MAAM,CAACw4G,cAAP;AACA;AACD;;AAED,UAAIpwE,MAAM,CAACk/D,QAAP,CAAgBmhB,cAAhB,IAAkCU,QAAtC,EAAgD;AAC9CnpH,QAAAA,MAAM,CAACqsG,cAAP,CAAsB+c,mBAAtB;AACAppH,QAAAA,MAAM,CAAC60G,aAAP,CAAqBmU,gBAArB;AACAhpH,QAAAA,MAAM,CAACssG,YAAP,CAAoB4c,WAApB;AACAlpH,QAAAA,MAAM,CAACoT,eAAP,CAAuB,IAAvB,EAA6BpT,MAAM,CAACwzG,cAApC;AACAxzG,QAAAA,MAAM,CAACs/F,SAAP,GAAmB,IAAnB;AACA8N,QAAAA,UAAU,CAAC55F,aAAX,CAAyB,YAAM;AAC7B,cAAI,CAACxT,MAAD,IAAWA,MAAM,CAACmsG,SAAlB,IAA+B,CAAClxG,IAAI,CAACsvG,mBAAzC,EAA8D;AAC9DtE,UAAAA,IAAI,CAAC,gBAAD,CAAJ;AACAjmG,UAAAA,MAAM,CAAC60G,aAAP,CAAqBzsE,MAAM,CAAChoC,KAA5B;AACAgB,UAAAA,UAAU,CAAC,YAAM;AACfpB,YAAAA,MAAM,CAACssG,YAAP,CAAoB8c,mBAApB;AACAhc,YAAAA,UAAU,CAAC55F,aAAX,CAAyB,YAAM;AAC7B,kBAAI,CAACxT,MAAD,IAAWA,MAAM,CAACmsG,SAAtB,EAAiC;AACjCnsG,cAAAA,MAAM,CAACwT,aAAP;AACD,aAHD;AAID,WANS,EAMP,CANO,CAAV;AAOD,SAXD;AAYD,OAlBD,MAkBO,IAAIxT,MAAM,CAACopG,QAAX,EAAqB;AAC1BnD,QAAAA,IAAI,CAAC,4BAAD,CAAJ;AACAjmG,QAAAA,MAAM,CAACqsG,cAAP,CAAsB6c,WAAtB;AACAlpH,QAAAA,MAAM,CAAC60G,aAAP,CAAqBmU,gBAArB;AACAhpH,QAAAA,MAAM,CAACssG,YAAP,CAAoB4c,WAApB;AACAlpH,QAAAA,MAAM,CAACoT,eAAP,CAAuB,IAAvB,EAA6BpT,MAAM,CAACwzG,cAApC;;AAEA,YAAI,CAACxzG,MAAM,CAACs/F,SAAZ,EAAuB;AACrBt/F,UAAAA,MAAM,CAACs/F,SAAP,GAAmB,IAAnB;AACA8N,UAAAA,UAAU,CAAC55F,aAAX,CAAyB,YAAM;AAC7B,gBAAI,CAACxT,MAAD,IAAWA,MAAM,CAACmsG,SAAtB,EAAiC;AACjCnsG,YAAAA,MAAM,CAACwT,aAAP;AACD,WAHD;AAID;AACF,OAdM,MAcA;AACLxT,QAAAA,MAAM,CAACqsG,cAAP,CAAsB6c,WAAtB;AACD;;AAEDlpH,MAAAA,MAAM,CAACorG,iBAAP;AACAprG,MAAAA,MAAM,CAACqrG,mBAAP;AACD,KA5JD,MA4JO,IAAIjjE,MAAM,CAACk/D,QAAP,CAAgBshB,MAApB,EAA4B;AACjC5oH,MAAAA,MAAM,CAACw4G,cAAP;AACA;AACD,KAHM,MAGA,IAAIpwE,MAAM,CAACk/D,QAAX,EAAqB;AAC1BrB,MAAAA,IAAI,CAAC,4BAAD,CAAJ;AACD;;AAED,QAAI,CAAC79D,MAAM,CAACk/D,QAAP,CAAgBihB,QAAjB,IAA6BnV,QAAQ,IAAIhrE,MAAM,CAAC8nE,YAApD,EAAkE;AAChElwG,MAAAA,MAAM,CAACqsG,cAAP;AACArsG,MAAAA,MAAM,CAACorG,iBAAP;AACAprG,MAAAA,MAAM,CAACqrG,mBAAP;AACD;AACF;;AAED,WAAcrrG,MAAd,EAAsB;AACpBsnG,IAAAA,QAAQ,EAAE;AACRmL,MAAAA,YAAY,EAAZA,YADQ;AAERC,MAAAA,WAAW,EAAXA,WAFQ;AAGRC,MAAAA,UAAU,EAAVA;AAHQ;AADU,GAAtB;AAOD;;;;;;;;;;;;;;;;ACjQc,SAAS8W,IAAT,CAAcvS,IAAd,EAAoB;AACjC,MACEl3G,MADF,GAGIk3G,IAHJ,CACEl3G,MADF;AAAA,MAEE4oG,YAFF,GAGIsO,IAHJ,CAEEtO,YAFF;AAIAA,EAAAA,YAAY,CAAC;AACXnuG,IAAAA,IAAI,EAAE;AACJkqG,MAAAA,IAAI,EAAE,CADF;AAEJrhE,MAAAA,IAAI,EAAE;AAFF;AADK,GAAD,CAAZ;AAMA,MAAIomF,sBAAJ;AACA,MAAIC,YAAJ;AACA,MAAIC,cAAJ;;AAEA,MAAMpN,UAAU,GAAG,SAAbA,UAAa,CAAAb,YAAY,EAAI;AACjC,QACEhW,aADF,GAEI3lG,MAAM,CAACooC,MAFX,CACEu9D,aADF;AAGA,8BAGI3lG,MAAM,CAACooC,MAAP,CAAc3tC,IAHlB;AAAA,QACEkqG,IADF,uBACEA,IADF;AAAA,QAEErhE,IAFF,uBAEEA,IAFF;AAIAqmF,IAAAA,YAAY,GAAGD,sBAAsB,GAAG/kB,IAAxC;AACAilB,IAAAA,cAAc,GAAGhtH,IAAI,CAACC,KAAL,CAAW8+G,YAAY,GAAGhX,IAA1B,CAAjB;;AAEA,QAAI/nG,IAAI,CAACC,KAAL,CAAW8+G,YAAY,GAAGhX,IAA1B,MAAoCgX,YAAY,GAAGhX,IAAvD,EAA6D;AAC3D+kB,MAAAA,sBAAsB,GAAG/N,YAAzB;AACD,KAFD,MAEO;AACL+N,MAAAA,sBAAsB,GAAG9sH,IAAI,CAAC+1C,IAAL,CAAUgpE,YAAY,GAAGhX,IAAzB,IAAiCA,IAA1D;AACD;;AAED,QAAIgB,aAAa,KAAK,MAAlB,IAA4BriE,IAAI,KAAK,KAAzC,EAAgD;AAC9ComF,MAAAA,sBAAsB,GAAG9sH,IAAI,CAAC0H,GAAL,CAASolH,sBAAT,EAAiC/jB,aAAa,GAAGhB,IAAjD,CAAzB;AACD;AACF,GApBD;;AAsBA,MAAM+X,WAAW,GAAG,SAAdA,WAAc,CAACriH,CAAD,EAAIgZ,KAAJ,EAAWsoG,YAAX,EAAyBH,iBAAzB,EAA+C;AACjE,yBAGIx7G,MAAM,CAACooC,MAHX;AAAA,QACEinE,cADF,kBACEA,cADF;AAAA,QAEED,YAFF,kBAEEA,YAFF;AAIA,+BAGIpvG,MAAM,CAACooC,MAAP,CAAc3tC,IAHlB;AAAA,QACEkqG,IADF,wBACEA,IADF;AAAA,QAEErhE,IAFF,wBAEEA,IAFF,CALiE,CAQzC;;AAExB,QAAIumF,kBAAJ;AACA,QAAIC,MAAJ;AACA,QAAI9tD,GAAJ;;AAEA,QAAI14B,IAAI,KAAK,KAAT,IAAkB+rE,cAAc,GAAG,CAAvC,EAA0C;AACxC,UAAM0a,UAAU,GAAGntH,IAAI,CAACC,KAAL,CAAWxC,CAAC,IAAIg1G,cAAc,GAAG1K,IAArB,CAAZ,CAAnB;AACA,UAAMqlB,iBAAiB,GAAG3vH,CAAC,GAAGsqG,IAAI,GAAG0K,cAAP,GAAwB0a,UAAtD;AACA,UAAME,cAAc,GAAGF,UAAU,KAAK,CAAf,GAAmB1a,cAAnB,GAAoCzyG,IAAI,CAACyH,GAAL,CAASzH,IAAI,CAAC+1C,IAAL,CAAU,CAACgpE,YAAY,GAAGoO,UAAU,GAAGplB,IAAb,GAAoB0K,cAApC,IAAsD1K,IAAhE,CAAT,EAAgF0K,cAAhF,CAA3D;AACArzC,MAAAA,GAAG,GAAGp/D,IAAI,CAACC,KAAL,CAAWmtH,iBAAiB,GAAGC,cAA/B,CAAN;AACAH,MAAAA,MAAM,GAAGE,iBAAiB,GAAGhuD,GAAG,GAAGiuD,cAA1B,GAA2CF,UAAU,GAAG1a,cAAjE;AACAwa,MAAAA,kBAAkB,GAAGC,MAAM,GAAG9tD,GAAG,GAAG0tD,sBAAN,GAA+B/kB,IAA7D;AACAtxF,MAAAA,KAAK,CAACipF,GAAN,CAAU;AACR,yBAAiButB,kBADT;AAERnhE,QAAAA,KAAK,EAAEmhE;AAFC,OAAV;AAID,KAXD,MAWO,IAAIvmF,IAAI,KAAK,QAAb,EAAuB;AAC5BwmF,MAAAA,MAAM,GAAGltH,IAAI,CAACC,KAAL,CAAWxC,CAAC,GAAGsqG,IAAf,CAAT;AACA3oC,MAAAA,GAAG,GAAG3hE,CAAC,GAAGyvH,MAAM,GAAGnlB,IAAnB;;AAEA,UAAImlB,MAAM,GAAGF,cAAT,IAA2BE,MAAM,KAAKF,cAAX,IAA6B5tD,GAAG,KAAK2oC,IAAI,GAAG,CAA3E,EAA8E;AAC5E3oC,QAAAA,GAAG,IAAI,CAAP;;AAEA,YAAIA,GAAG,IAAI2oC,IAAX,EAAiB;AACf3oC,UAAAA,GAAG,GAAG,CAAN;AACA8tD,UAAAA,MAAM,IAAI,CAAV;AACD;AACF;AACF,KAZM,MAYA;AACL9tD,MAAAA,GAAG,GAAGp/D,IAAI,CAACC,KAAL,CAAWxC,CAAC,GAAGsvH,YAAf,CAAN;AACAG,MAAAA,MAAM,GAAGzvH,CAAC,GAAG2hE,GAAG,GAAG2tD,YAAnB;AACD;;AAEDt2G,IAAAA,KAAK,CAACipF,GAAN,CAAUkf,iBAAiB,CAAC,YAAD,CAA3B,EAA2Cx/C,GAAG,KAAK,CAAR,GAAYozC,YAAY,cAAOA,YAAP,OAAxB,GAAkD,EAA7F;AACD,GA3CD;;AA6CA,MAAM2N,iBAAiB,GAAG,SAApBA,iBAAoB,CAAChR,SAAD,EAAYlF,QAAZ,EAAsB2U,iBAAtB,EAA4C;AACpE,0BAIIx7G,MAAM,CAACooC,MAJX;AAAA,QACEgnE,YADF,mBACEA,YADF;AAAA,QAEE1H,cAFF,mBAEEA,cAFF;AAAA,QAGEkI,YAHF,mBAGEA,YAHF;AAKA,QACEjL,IADF,GAEI3kG,MAAM,CAACooC,MAAP,CAAc3tC,IAFlB,CACEkqG,IADF;AAGA3kG,IAAAA,MAAM,CAACk8G,WAAP,GAAqB,CAACnQ,SAAS,GAAGqD,YAAb,IAA6Bsa,sBAAlD;AACA1pH,IAAAA,MAAM,CAACk8G,WAAP,GAAqBt/G,IAAI,CAAC+1C,IAAL,CAAU3yC,MAAM,CAACk8G,WAAP,GAAqBvX,IAA/B,IAAuCyK,YAA5D;AACApvG,IAAAA,MAAM,CAACotG,UAAP,CAAkB9Q,GAAlB,qBACGkf,iBAAiB,CAAC,OAAD,CADpB,YACmCx7G,MAAM,CAACk8G,WAAP,GAAqB9M,YADxD;;AAIA,QAAI1H,cAAJ,EAAoB;AAClBb,MAAAA,QAAQ,CAAC3jF,MAAT,CAAgB,CAAhB,EAAmB2jF,QAAQ,CAAChtG,MAA5B;AACA,UAAMmjH,aAAa,GAAG,EAAtB;;AAEA,WAAK,IAAI3iH,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGwsG,QAAQ,CAAChtG,MAA7B,EAAqCQ,CAAC,IAAI,CAA1C,EAA6C;AAC3C,YAAI4iH,cAAc,GAAGpW,QAAQ,CAACxsG,CAAD,CAA7B;AACA,YAAIu1G,YAAJ,EAAkBqN,cAAc,GAAGrgH,IAAI,CAACC,KAAL,CAAWogH,cAAX,CAAjB;AAClB,YAAIpW,QAAQ,CAACxsG,CAAD,CAAR,GAAc2F,MAAM,CAACk8G,WAAP,GAAqBrV,QAAQ,CAAC,CAAD,CAA/C,EAAoDmW,aAAa,CAAC5gH,IAAd,CAAmB6gH,cAAnB;AACrD;;AAEDpW,MAAAA,QAAQ,CAACzqG,IAAT,OAAAyqG,QAAQ,EAASmW,aAAT,CAAR;AACD;AACF,GA3BD;;AA6BAh9G,EAAAA,MAAM,CAACvF,IAAP,GAAc;AACZ+hH,IAAAA,UAAU,EAAVA,UADY;AAEZE,IAAAA,WAAW,EAAXA,WAFY;AAGZK,IAAAA,iBAAiB,EAAjBA;AAHY,GAAd;AAKD;;;;;;;;;;;;;;ACpHD;;AACA;;;;AACe,SAASn9G,cAAT,CAAwBs3G,IAAxB,EAA8B;AAC3C,MACEl3G,MADF,GAKIk3G,IALJ,CACEl3G,MADF;AAAA,MAEE4oG,YAFF,GAKIsO,IALJ,CAEEtO,YAFF;AAAA,MAGE3C,IAHF,GAKIiR,IALJ,CAGEjR,IAHF;AAAA,MAIEljG,EAJF,GAKIm0G,IALJ,CAIEn0G,EAJF;AAMA,MAAI6hG,WAAW,GAAG,KAAlB;AACA,MAAMvsG,QAAQ,GAAG,6BAAjB;AACA,MAAMgF,MAAM,GAAG,2BAAf;AACAurG,EAAAA,YAAY,CAAC;AACXt2F,IAAAA,cAAc,EAAE;AACdhX,MAAAA,OAAO,EAAE,KADK;AAEdiX,MAAAA,YAAY,EAAE,KAFA;AAGdC,MAAAA,UAAU,EAAE;AAHE;AADL,GAAD,CAAZ;;AAQA,MAAM03G,YAAY,GAAG,SAAfA,YAAe,GAAM;AACzBjkB,IAAAA,IAAI,CAAC,YAAD,CAAJ;AACA,QAAMkkB,OAAO,GAAG9xH,QAAQ,CAACiV,QAAT,CAAkBI,IAAlB,CAAuBvM,OAAvB,CAA+B,GAA/B,EAAoC,EAApC,CAAhB;AACA,QAAMipH,eAAe,GAAGpqH,MAAM,CAACiT,MAAP,CAAcgoE,EAAd,CAAiBj7E,MAAM,CAACkT,WAAxB,EAAqCqnF,IAArC,CAA0C,WAA1C,CAAxB;;AAEA,QAAI4vB,OAAO,KAAKC,eAAhB,EAAiC;AAC/B,UAAMzT,QAAQ,GAAG32G,MAAM,CAACotG,UAAP,CAAkBpwG,QAAlB,YAA+BgD,MAAM,CAACooC,MAAP,CAAcojE,UAA7C,0BAAsE2e,OAAtE,UAAmF1uH,KAAnF,EAAjB;AACA,UAAI,OAAOk7G,QAAP,KAAoB,WAAxB,EAAqC;AACrC32G,MAAAA,MAAM,CAAC0T,OAAP,CAAeijG,QAAf;AACD;AACF,GAVD;;AAYA,MAAM0T,OAAO,GAAG,SAAVA,OAAU,GAAM;AACpB,QAAI,CAACzlB,WAAD,IAAgB,CAAC5kG,MAAM,CAACooC,MAAP,CAAc91B,cAAd,CAA6BhX,OAAlD,EAA2D;;AAE3D,QAAI0E,MAAM,CAACooC,MAAP,CAAc91B,cAAd,CAA6BC,YAA7B,IAA6ClV,MAAM,CAACyP,OAApD,IAA+DzP,MAAM,CAACyP,OAAP,CAAeyF,YAAlF,EAAgG;AAC9FlV,MAAAA,MAAM,CAACyP,OAAP,CAAeyF,YAAf,CAA4B,IAA5B,EAAkC,IAAlC,EAAwC,WAAIvS,MAAM,CAACiT,MAAP,CAAcgoE,EAAd,CAAiBj7E,MAAM,CAACkT,WAAxB,EAAqCqnF,IAArC,CAA0C,WAA1C,CAAJ,KAAgE,CAAxG;AACA0L,MAAAA,IAAI,CAAC,SAAD,CAAJ;AACD,KAHD,MAGO;AACL,UAAM5yF,KAAK,GAAGrT,MAAM,CAACiT,MAAP,CAAcgoE,EAAd,CAAiBj7E,MAAM,CAACkT,WAAxB,CAAd;AACA,UAAMxF,IAAI,GAAG2F,KAAK,CAACknF,IAAN,CAAW,WAAX,KAA2BlnF,KAAK,CAACknF,IAAN,CAAW,cAAX,CAAxC;AACAliG,MAAAA,QAAQ,CAACiV,QAAT,CAAkBI,IAAlB,GAAyBA,IAAI,IAAI,EAAjC;AACAu4F,MAAAA,IAAI,CAAC,SAAD,CAAJ;AACD;AACF,GAZD;;AAcA,MAAMpkG,IAAI,GAAG,SAAPA,IAAO,GAAM;AACjB,QAAI,CAAC7B,MAAM,CAACooC,MAAP,CAAc91B,cAAd,CAA6BhX,OAA9B,IAAyC0E,MAAM,CAACooC,MAAP,CAAct7B,OAAd,IAAyB9M,MAAM,CAACooC,MAAP,CAAct7B,OAAd,CAAsBxR,OAA5F,EAAqG;AACrGspG,IAAAA,WAAW,GAAG,IAAd;AACA,QAAMl3F,IAAI,GAAGrV,QAAQ,CAACiV,QAAT,CAAkBI,IAAlB,CAAuBvM,OAAvB,CAA+B,GAA/B,EAAoC,EAApC,CAAb;;AAEA,QAAIuM,IAAJ,EAAU;AACR,UAAMtN,KAAK,GAAG,CAAd;;AAEA,WAAK,IAAI/F,CAAC,GAAG,CAAR,EAAWR,MAAM,GAAGmG,MAAM,CAACiT,MAAP,CAAcpZ,MAAvC,EAA+CQ,CAAC,GAAGR,MAAnD,EAA2DQ,CAAC,IAAI,CAAhE,EAAmE;AACjE,YAAMgZ,KAAK,GAAGrT,MAAM,CAACiT,MAAP,CAAcgoE,EAAd,CAAiB5gF,CAAjB,CAAd;AACA,YAAM0Z,SAAS,GAAGV,KAAK,CAACknF,IAAN,CAAW,WAAX,KAA2BlnF,KAAK,CAACknF,IAAN,CAAW,cAAX,CAA7C;;AAEA,YAAIxmF,SAAS,KAAKrG,IAAd,IAAsB,CAAC2F,KAAK,CAACuO,QAAN,CAAe5hB,MAAM,CAACooC,MAAP,CAAcupE,mBAA7B,CAA3B,EAA8E;AAC5E,cAAMl2G,KAAK,GAAG4X,KAAK,CAAC5X,KAAN,EAAd;AACAuE,UAAAA,MAAM,CAAC0T,OAAP,CAAejY,KAAf,EAAsB2E,KAAtB,EAA6BJ,MAAM,CAACooC,MAAP,CAAcslE,kBAA3C,EAA+D,IAA/D;AACD;AACF;AACF;;AAED,QAAI1tG,MAAM,CAACooC,MAAP,CAAc91B,cAAd,CAA6BE,UAAjC,EAA6C;AAC3C,wBAAEnV,MAAF,EAAU0F,EAAV,CAAa,YAAb,EAA2BmnH,YAA3B;AACD;AACF,GAtBD;;AAwBA,MAAM5nH,OAAO,GAAG,SAAVA,OAAU,GAAM;AACpB,QAAItC,MAAM,CAACooC,MAAP,CAAc91B,cAAd,CAA6BE,UAAjC,EAA6C;AAC3C,wBAAEnV,MAAF,EAAUy+F,GAAV,CAAc,YAAd,EAA4BouB,YAA5B;AACD;AACF,GAJD;;AAMAnnH,EAAAA,EAAE,CAAC,MAAD,EAAS,YAAM;AACf,QAAI/C,MAAM,CAACooC,MAAP,CAAc91B,cAAd,CAA6BhX,OAAjC,EAA0C;AACxCuG,MAAAA,IAAI;AACL;AACF,GAJC,CAAF;AAKAkB,EAAAA,EAAE,CAAC,SAAD,EAAY,YAAM;AAClB,QAAI/C,MAAM,CAACooC,MAAP,CAAc91B,cAAd,CAA6BhX,OAAjC,EAA0C;AACxCgH,MAAAA,OAAO;AACR;AACF,GAJC,CAAF;AAKAS,EAAAA,EAAE,CAAC,0CAAD,EAA6C,YAAM;AACnD,QAAI6hG,WAAJ,EAAiB;AACfylB,MAAAA,OAAO;AACR;AACF,GAJC,CAAF;AAKAtnH,EAAAA,EAAE,CAAC,aAAD,EAAgB,YAAM;AACtB,QAAI6hG,WAAW,IAAI5kG,MAAM,CAACooC,MAAP,CAAcq/D,OAAjC,EAA0C;AACxC4iB,MAAAA,OAAO;AACR;AACF,GAJC,CAAF;AAKD;;;;;;;;;;;;;;AChGD;;AACe,SAASC,OAAT,CAAiBpT,IAAjB,EAAuB;AACpC,MACEl3G,MADF,GAIIk3G,IAJJ,CACEl3G,MADF;AAAA,MAEE4oG,YAFF,GAIIsO,IAJJ,CAEEtO,YAFF;AAAA,MAGE7lG,EAHF,GAIIm0G,IAJJ,CAGEn0G,EAHF;AAKA6lG,EAAAA,YAAY,CAAC;AACX97F,IAAAA,OAAO,EAAE;AACPxR,MAAAA,OAAO,EAAE,KADF;AAEPwtF,MAAAA,IAAI,EAAE,EAFC;AAGPv2E,MAAAA,YAAY,EAAE,KAHP;AAIPxH,MAAAA,GAAG,EAAE;AAJE;AADE,GAAD,CAAZ;AAQA,MAAI65F,WAAW,GAAG,KAAlB;AACA,MAAI2lB,KAAK,GAAG,EAAZ;;AAEA,MAAMC,OAAO,GAAG,SAAVA,OAAU,CAAAzwH,IAAI,EAAI;AACtB,WAAOA,IAAI,CAAC0a,QAAL,GAAgBtT,OAAhB,CAAwB,MAAxB,EAAgC,GAAhC,EAAqCA,OAArC,CAA6C,UAA7C,EAAyD,EAAzD,EAA6DA,OAA7D,CAAqE,MAArE,EAA6E,GAA7E,EAAkFA,OAAlF,CAA0F,KAA1F,EAAiG,EAAjG,EAAqGA,OAArG,CAA6G,KAA7G,EAAoH,EAApH,CAAP;AACD,GAFD;;AAIA,MAAMspH,aAAa,GAAG,SAAhBA,aAAgB,CAAAC,WAAW,EAAI;AACnC,QAAMrtH,MAAM,GAAG,2BAAf;AACA,QAAIiQ,QAAJ;;AAEA,QAAIo9G,WAAJ,EAAiB;AACfp9G,MAAAA,QAAQ,GAAG,IAAIq9G,GAAJ,CAAQD,WAAR,CAAX;AACD,KAFD,MAEO;AACLp9G,MAAAA,QAAQ,GAAGjQ,MAAM,CAACiQ,QAAlB;AACD;;AAED,QAAMs9G,SAAS,GAAGt9G,QAAQ,CAACG,QAAT,CAAkB2yB,KAAlB,CAAwB,CAAxB,EAA2B6e,KAA3B,CAAiC,GAAjC,EAAsCnnC,MAAtC,CAA6C,UAAA+yG,IAAI;AAAA,aAAIA,IAAI,KAAK,EAAb;AAAA,KAAjD,CAAlB;AACA,QAAMzsF,KAAK,GAAGwsF,SAAS,CAAC/wH,MAAxB;AACA,QAAMkR,GAAG,GAAG6/G,SAAS,CAACxsF,KAAK,GAAG,CAAT,CAArB;AACA,QAAMh6B,KAAK,GAAGwmH,SAAS,CAACxsF,KAAK,GAAG,CAAT,CAAvB;AACA,WAAO;AACLrzB,MAAAA,GAAG,EAAHA,GADK;AAEL3G,MAAAA,KAAK,EAALA;AAFK,KAAP;AAID,GAlBD;;AAoBA,MAAM0mH,UAAU,GAAG,SAAbA,UAAa,CAAC//G,GAAD,EAAMtP,KAAN,EAAgB;AACjC,QAAM4B,MAAM,GAAG,2BAAf;AACA,QAAI,CAACunG,WAAD,IAAgB,CAAC5kG,MAAM,CAACooC,MAAP,CAAct7B,OAAd,CAAsBxR,OAA3C,EAAoD;AACpD,QAAIgS,QAAJ;;AAEA,QAAItN,MAAM,CAACooC,MAAP,CAAc1hC,GAAlB,EAAuB;AACrB4G,MAAAA,QAAQ,GAAG,IAAIq9G,GAAJ,CAAQ3qH,MAAM,CAACooC,MAAP,CAAc1hC,GAAtB,CAAX;AACD,KAFD,MAEO;AACL4G,MAAAA,QAAQ,GAAGjQ,MAAM,CAACiQ,QAAlB;AACD;;AAED,QAAM+F,KAAK,GAAGrT,MAAM,CAACiT,MAAP,CAAcgoE,EAAd,CAAiBx/E,KAAjB,CAAd;AACA,QAAI2I,KAAK,GAAGomH,OAAO,CAACn3G,KAAK,CAACknF,IAAN,CAAW,cAAX,CAAD,CAAnB;;AAEA,QAAIv6F,MAAM,CAACooC,MAAP,CAAct7B,OAAd,CAAsBg8E,IAAtB,CAA2BjvF,MAA3B,GAAoC,CAAxC,EAA2C;AACzC,UAAIivF,IAAI,GAAG9oF,MAAM,CAACooC,MAAP,CAAct7B,OAAd,CAAsBg8E,IAAjC;AACA,UAAIA,IAAI,CAACA,IAAI,CAACjvF,MAAL,GAAc,CAAf,CAAJ,KAA0B,GAA9B,EAAmCivF,IAAI,GAAGA,IAAI,CAAC1oD,KAAL,CAAW,CAAX,EAAc0oD,IAAI,CAACjvF,MAAL,GAAc,CAA5B,CAAP;AACnCuK,MAAAA,KAAK,aAAM0kF,IAAN,cAAc/9E,GAAd,cAAqB3G,KAArB,CAAL;AACD,KAJD,MAIO,IAAI,CAACkJ,QAAQ,CAACG,QAAT,CAAkBu6B,QAAlB,CAA2Bj9B,GAA3B,CAAL,EAAsC;AAC3C3G,MAAAA,KAAK,aAAM2G,GAAN,cAAa3G,KAAb,CAAL;AACD;;AAED,QAAM2mH,YAAY,GAAG1tH,MAAM,CAACyP,OAAP,CAAe3K,KAApC;;AAEA,QAAI4oH,YAAY,IAAIA,YAAY,CAAC3mH,KAAb,KAAuBA,KAA3C,EAAkD;AAChD;AACD;;AAED,QAAIpE,MAAM,CAACooC,MAAP,CAAct7B,OAAd,CAAsByF,YAA1B,EAAwC;AACtClV,MAAAA,MAAM,CAACyP,OAAP,CAAeyF,YAAf,CAA4B;AAC1BnO,QAAAA,KAAK,EAALA;AAD0B,OAA5B,EAEG,IAFH,EAESA,KAFT;AAGD,KAJD,MAIO;AACL/G,MAAAA,MAAM,CAACyP,OAAP,CAAeC,SAAf,CAAyB;AACvB3I,QAAAA,KAAK,EAALA;AADuB,OAAzB,EAEG,IAFH,EAESA,KAFT;AAGD;AACF,GArCD;;AAuCA,MAAM4mH,aAAa,GAAG,SAAhBA,aAAgB,CAAC5qH,KAAD,EAAQgE,KAAR,EAAeq0G,YAAf,EAAgC;AACpD,QAAIr0G,KAAJ,EAAW;AACT,WAAK,IAAI/J,CAAC,GAAG,CAAR,EAAWR,MAAM,GAAGmG,MAAM,CAACiT,MAAP,CAAcpZ,MAAvC,EAA+CQ,CAAC,GAAGR,MAAnD,EAA2DQ,CAAC,IAAI,CAAhE,EAAmE;AACjE,YAAMgZ,KAAK,GAAGrT,MAAM,CAACiT,MAAP,CAAcgoE,EAAd,CAAiB5gF,CAAjB,CAAd;AACA,YAAM4wH,YAAY,GAAGT,OAAO,CAACn3G,KAAK,CAACknF,IAAN,CAAW,cAAX,CAAD,CAA5B;;AAEA,YAAI0wB,YAAY,KAAK7mH,KAAjB,IAA0B,CAACiP,KAAK,CAACuO,QAAN,CAAe5hB,MAAM,CAACooC,MAAP,CAAcupE,mBAA7B,CAA/B,EAAkF;AAChF,cAAMl2G,KAAK,GAAG4X,KAAK,CAAC5X,KAAN,EAAd;AACAuE,UAAAA,MAAM,CAAC0T,OAAP,CAAejY,KAAf,EAAsB2E,KAAtB,EAA6Bq4G,YAA7B;AACD;AACF;AACF,KAVD,MAUO;AACLz4G,MAAAA,MAAM,CAAC0T,OAAP,CAAe,CAAf,EAAkBtT,KAAlB,EAAyBq4G,YAAzB;AACD;AACF,GAdD;;AAgBA,MAAMyS,kBAAkB,GAAG,SAArBA,kBAAqB,GAAM;AAC/BX,IAAAA,KAAK,GAAGE,aAAa,CAACzqH,MAAM,CAACooC,MAAP,CAAc1hC,GAAf,CAArB;AACAskH,IAAAA,aAAa,CAAChrH,MAAM,CAACooC,MAAP,CAAchoC,KAAf,EAAsBJ,MAAM,CAACuqH,KAAP,CAAanmH,KAAnC,EAA0C,KAA1C,CAAb;AACD,GAHD;;AAKA,MAAMvC,IAAI,GAAG,SAAPA,IAAO,GAAM;AACjB,QAAMxE,MAAM,GAAG,2BAAf;AACA,QAAI,CAAC2C,MAAM,CAACooC,MAAP,CAAct7B,OAAnB,EAA4B;;AAE5B,QAAI,CAACzP,MAAM,CAACyP,OAAR,IAAmB,CAACzP,MAAM,CAACyP,OAAP,CAAeC,SAAvC,EAAkD;AAChD/M,MAAAA,MAAM,CAACooC,MAAP,CAAct7B,OAAd,CAAsBxR,OAAtB,GAAgC,KAAhC;AACA0E,MAAAA,MAAM,CAACooC,MAAP,CAAc91B,cAAd,CAA6BhX,OAA7B,GAAuC,IAAvC;AACA;AACD;;AAEDspG,IAAAA,WAAW,GAAG,IAAd;AACA2lB,IAAAA,KAAK,GAAGE,aAAa,CAACzqH,MAAM,CAACooC,MAAP,CAAc1hC,GAAf,CAArB;AACA,QAAI,CAAC6jH,KAAK,CAACx/G,GAAP,IAAc,CAACw/G,KAAK,CAACnmH,KAAzB,EAAgC;AAChC4mH,IAAAA,aAAa,CAAC,CAAD,EAAIT,KAAK,CAACnmH,KAAV,EAAiBpE,MAAM,CAACooC,MAAP,CAAcslE,kBAA/B,CAAb;;AAEA,QAAI,CAAC1tG,MAAM,CAACooC,MAAP,CAAct7B,OAAd,CAAsByF,YAA3B,EAAyC;AACvClV,MAAAA,MAAM,CAACC,gBAAP,CAAwB,UAAxB,EAAoC4tH,kBAApC;AACD;AACF,GAlBD;;AAoBA,MAAM5oH,OAAO,GAAG,SAAVA,OAAU,GAAM;AACpB,QAAMjF,MAAM,GAAG,2BAAf;;AAEA,QAAI,CAAC2C,MAAM,CAACooC,MAAP,CAAct7B,OAAd,CAAsByF,YAA3B,EAAyC;AACvClV,MAAAA,MAAM,CAACsO,mBAAP,CAA2B,UAA3B,EAAuCu/G,kBAAvC;AACD;AACF,GAND;;AAQAnoH,EAAAA,EAAE,CAAC,MAAD,EAAS,YAAM;AACf,QAAI/C,MAAM,CAACooC,MAAP,CAAct7B,OAAd,CAAsBxR,OAA1B,EAAmC;AACjCuG,MAAAA,IAAI;AACL;AACF,GAJC,CAAF;AAKAkB,EAAAA,EAAE,CAAC,SAAD,EAAY,YAAM;AAClB,QAAI/C,MAAM,CAACooC,MAAP,CAAct7B,OAAd,CAAsBxR,OAA1B,EAAmC;AACjCgH,MAAAA,OAAO;AACR;AACF,GAJC,CAAF;AAKAS,EAAAA,EAAE,CAAC,0CAAD,EAA6C,YAAM;AACnD,QAAI6hG,WAAJ,EAAiB;AACfkmB,MAAAA,UAAU,CAAC9qH,MAAM,CAACooC,MAAP,CAAct7B,OAAd,CAAsB/B,GAAvB,EAA4B/K,MAAM,CAACkT,WAAnC,CAAV;AACD;AACF,GAJC,CAAF;AAKAnQ,EAAAA,EAAE,CAAC,aAAD,EAAgB,YAAM;AACtB,QAAI6hG,WAAW,IAAI5kG,MAAM,CAACooC,MAAP,CAAcq/D,OAAjC,EAA0C;AACxCqjB,MAAAA,UAAU,CAAC9qH,MAAM,CAACooC,MAAP,CAAct7B,OAAd,CAAsB/B,GAAvB,EAA4B/K,MAAM,CAACkT,WAAnC,CAAV;AACD;AACF,GAJC,CAAF;AAKD;;;;;;;;;;;;;;ACrJD;;AACA;;;;;;AACe,SAASxT,QAAT,CAAkBw3G,IAAlB,EAAwB;AACrC,MACEl3G,MADF,GAKIk3G,IALJ,CACEl3G,MADF;AAAA,MAEE4oG,YAFF,GAKIsO,IALJ,CAEEtO,YAFF;AAAA,MAGE7lG,EAHF,GAKIm0G,IALJ,CAGEn0G,EAHF;AAAA,MAIEkjG,IAJF,GAKIiR,IALJ,CAIEjR,IAJF;AAMA,MAAM5tG,QAAQ,GAAG,6BAAjB;AACA,MAAMgF,MAAM,GAAG,2BAAf;AACA2C,EAAAA,MAAM,CAAC6S,QAAP,GAAkB;AAChBvX,IAAAA,OAAO,EAAE;AADO,GAAlB;AAGAstG,EAAAA,YAAY,CAAC;AACX/1F,IAAAA,QAAQ,EAAE;AACRvX,MAAAA,OAAO,EAAE,KADD;AAERwX,MAAAA,cAAc,EAAE,IAFR;AAGRq4G,MAAAA,UAAU,EAAE;AAHJ;AADC,GAAD,CAAZ;;AAQA,WAASC,MAAT,CAAgBh0G,KAAhB,EAAuB;AACrB,QAAI,CAACpX,MAAM,CAAC1E,OAAZ,EAAqB;AACrB,QACgBkhE,GADhB,GAEIx8D,MAFJ,CACEwsG,YADF;AAGA,QAAI9vG,CAAC,GAAG0a,KAAR;AACA,QAAI1a,CAAC,CAACw2G,aAAN,EAAqBx2G,CAAC,GAAGA,CAAC,CAACw2G,aAAN,CANA,CAMqB;;AAE1C,QAAMmY,EAAE,GAAG3uH,CAAC,CAACkkH,OAAF,IAAalkH,CAAC,CAAC4uH,QAA1B;AACA,QAAMH,UAAU,GAAGnrH,MAAM,CAACooC,MAAP,CAAcv1B,QAAd,CAAuBs4G,UAA1C;AACA,QAAMI,QAAQ,GAAGJ,UAAU,IAAIE,EAAE,KAAK,EAAtC;AACA,QAAMG,UAAU,GAAGL,UAAU,IAAIE,EAAE,KAAK,EAAxC;AACA,QAAMI,WAAW,GAAGJ,EAAE,KAAK,EAA3B;AACA,QAAMK,YAAY,GAAGL,EAAE,KAAK,EAA5B;AACA,QAAMM,SAAS,GAAGN,EAAE,KAAK,EAAzB;AACA,QAAMO,WAAW,GAAGP,EAAE,KAAK,EAA3B,CAfqB,CAeU;;AAE/B,QAAI,CAACrrH,MAAM,CAAC+lG,cAAR,KAA2B/lG,MAAM,CAAC63B,YAAP,MAAyB6zF,YAAzB,IAAyC1rH,MAAM,CAACgpG,UAAP,MAAuB4iB,WAAhE,IAA+EJ,UAA1G,CAAJ,EAA2H;AACzH,aAAO,KAAP;AACD;;AAED,QAAI,CAACxrH,MAAM,CAACgmG,cAAR,KAA2BhmG,MAAM,CAAC63B,YAAP,MAAyB4zF,WAAzB,IAAwCzrH,MAAM,CAACgpG,UAAP,MAAuB2iB,SAA/D,IAA4EJ,QAAvG,CAAJ,EAAsH;AACpH,aAAO,KAAP;AACD;;AAED,QAAI7uH,CAAC,CAACmvH,QAAF,IAAcnvH,CAAC,CAACovH,MAAhB,IAA0BpvH,CAAC,CAACqvH,OAA5B,IAAuCrvH,CAAC,CAACsvH,OAA7C,EAAsD;AACpD,aAAOpyH,SAAP;AACD;;AAED,QAAIvB,QAAQ,CAAC0qG,aAAT,IAA0B1qG,QAAQ,CAAC0qG,aAAT,CAAuBhhF,QAAjD,KAA8D1pB,QAAQ,CAAC0qG,aAAT,CAAuBhhF,QAAvB,CAAgCxe,WAAhC,OAAkD,OAAlD,IAA6DlL,QAAQ,CAAC0qG,aAAT,CAAuBhhF,QAAvB,CAAgCxe,WAAhC,OAAkD,UAA7K,CAAJ,EAA8L;AAC5L,aAAO3J,SAAP;AACD;;AAED,QAAIoG,MAAM,CAACooC,MAAP,CAAcv1B,QAAd,CAAuBC,cAAvB,KAA0Cy4G,QAAQ,IAAIC,UAAZ,IAA0BC,WAA1B,IAAyCC,YAAzC,IAAyDC,SAAzD,IAAsEC,WAAhH,CAAJ,EAAkI;AAChI,UAAIK,MAAM,GAAG,KAAb,CADgI,CAC5G;;AAEpB,UAAIjsH,MAAM,CAAC8kG,GAAP,CAAWpJ,OAAX,YAAuB17F,MAAM,CAACooC,MAAP,CAAcojE,UAArC,GAAmD3xG,MAAnD,GAA4D,CAA5D,IAAiEmG,MAAM,CAAC8kG,GAAP,CAAWpJ,OAAX,YAAuB17F,MAAM,CAACooC,MAAP,CAAc4lE,gBAArC,GAAyDn0G,MAAzD,KAAoE,CAAzI,EAA4I;AAC1I,eAAOD,SAAP;AACD;;AAED,UAAMkrG,GAAG,GAAG9kG,MAAM,CAAC8kG,GAAnB;AACA,UAAMygB,WAAW,GAAGzgB,GAAG,CAAC,CAAD,CAAH,CAAOtnG,WAA3B;AACA,UAAMgoH,YAAY,GAAG1gB,GAAG,CAAC,CAAD,CAAH,CAAOrnG,YAA5B;AACA,UAAMyuH,WAAW,GAAG7uH,MAAM,CAACqI,UAA3B;AACA,UAAMymH,YAAY,GAAG9uH,MAAM,CAACsI,WAA5B;AACA,UAAMymH,YAAY,GAAGpsH,MAAM,CAAC8kG,GAAP,CAAWliG,MAAX,EAArB;AACA,UAAI45D,GAAJ,EAAS4vD,YAAY,CAACvuH,IAAb,IAAqBmC,MAAM,CAAC8kG,GAAP,CAAW,CAAX,EAAc1lG,UAAnC;AACT,UAAMitH,WAAW,GAAG,CAAC,CAACD,YAAY,CAACvuH,IAAd,EAAoBuuH,YAAY,CAACzuH,GAAjC,CAAD,EAAwC,CAACyuH,YAAY,CAACvuH,IAAb,GAAoB0nH,WAArB,EAAkC6G,YAAY,CAACzuH,GAA/C,CAAxC,EAA6F,CAACyuH,YAAY,CAACvuH,IAAd,EAAoBuuH,YAAY,CAACzuH,GAAb,GAAmB6nH,YAAvC,CAA7F,EAAmJ,CAAC4G,YAAY,CAACvuH,IAAb,GAAoB0nH,WAArB,EAAkC6G,YAAY,CAACzuH,GAAb,GAAmB6nH,YAArD,CAAnJ,CAApB;;AAEA,WAAK,IAAInrH,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgyH,WAAW,CAACxyH,MAAhC,EAAwCQ,CAAC,IAAI,CAA7C,EAAgD;AAC9C,YAAM8gC,KAAK,GAAGkxF,WAAW,CAAChyH,CAAD,CAAzB;;AAEA,YAAI8gC,KAAK,CAAC,CAAD,CAAL,IAAY,CAAZ,IAAiBA,KAAK,CAAC,CAAD,CAAL,IAAY+wF,WAA7B,IAA4C/wF,KAAK,CAAC,CAAD,CAAL,IAAY,CAAxD,IAA6DA,KAAK,CAAC,CAAD,CAAL,IAAYgxF,YAA7E,EAA2F;AACzF,cAAIhxF,KAAK,CAAC,CAAD,CAAL,KAAa,CAAb,IAAkBA,KAAK,CAAC,CAAD,CAAL,KAAa,CAAnC,EAAsC,SADmD,CACzC;;AAEhD8wF,UAAAA,MAAM,GAAG,IAAT;AACD;AACF;;AAED,UAAI,CAACA,MAAL,EAAa,OAAOryH,SAAP;AACd;;AAED,QAAIoG,MAAM,CAAC63B,YAAP,EAAJ,EAA2B;AACzB,UAAI0zF,QAAQ,IAAIC,UAAZ,IAA0BC,WAA1B,IAAyCC,YAA7C,EAA2D;AACzD,YAAIhvH,CAAC,CAAC+B,cAAN,EAAsB/B,CAAC,CAAC+B,cAAF,GAAtB,KAA8C/B,CAAC,CAAC4vH,WAAF,GAAgB,KAAhB;AAC/C;;AAED,UAAI,CAACd,UAAU,IAAIE,YAAf,KAAgC,CAAClvD,GAAjC,IAAwC,CAAC+uD,QAAQ,IAAIE,WAAb,KAA6BjvD,GAAzE,EAA8Ex8D,MAAM,CAACq4G,SAAP;AAC9E,UAAI,CAACkT,QAAQ,IAAIE,WAAb,KAA6B,CAACjvD,GAA9B,IAAqC,CAACgvD,UAAU,IAAIE,YAAf,KAAgClvD,GAAzE,EAA8Ex8D,MAAM,CAACs4G,SAAP;AAC/E,KAPD,MAOO;AACL,UAAIiT,QAAQ,IAAIC,UAAZ,IAA0BG,SAA1B,IAAuCC,WAA3C,EAAwD;AACtD,YAAIlvH,CAAC,CAAC+B,cAAN,EAAsB/B,CAAC,CAAC+B,cAAF,GAAtB,KAA8C/B,CAAC,CAAC4vH,WAAF,GAAgB,KAAhB;AAC/C;;AAED,UAAId,UAAU,IAAII,WAAlB,EAA+B5rH,MAAM,CAACq4G,SAAP;AAC/B,UAAIkT,QAAQ,IAAII,SAAhB,EAA2B3rH,MAAM,CAACs4G,SAAP;AAC5B;;AAEDrS,IAAAA,IAAI,CAAC,UAAD,EAAaolB,EAAb,CAAJ;AACA,WAAOzxH,SAAP;AACD;;AAED,WAASga,MAAT,GAAkB;AAChB,QAAI5T,MAAM,CAAC6S,QAAP,CAAgBvX,OAApB,EAA6B;AAC7B,sBAAEjD,QAAF,EAAY0K,EAAZ,CAAe,SAAf,EAA0BqoH,MAA1B;AACAprH,IAAAA,MAAM,CAAC6S,QAAP,CAAgBvX,OAAhB,GAA0B,IAA1B;AACD;;AAED,WAASqY,OAAT,GAAmB;AACjB,QAAI,CAAC3T,MAAM,CAAC6S,QAAP,CAAgBvX,OAArB,EAA8B;AAC9B,sBAAEjD,QAAF,EAAYyjG,GAAZ,CAAgB,SAAhB,EAA2BsvB,MAA3B;AACAprH,IAAAA,MAAM,CAAC6S,QAAP,CAAgBvX,OAAhB,GAA0B,KAA1B;AACD;;AAEDyH,EAAAA,EAAE,CAAC,MAAD,EAAS,YAAM;AACf,QAAI/C,MAAM,CAACooC,MAAP,CAAcv1B,QAAd,CAAuBvX,OAA3B,EAAoC;AAClCsY,MAAAA,MAAM;AACP;AACF,GAJC,CAAF;AAKA7Q,EAAAA,EAAE,CAAC,SAAD,EAAY,YAAM;AAClB,QAAI/C,MAAM,CAAC6S,QAAP,CAAgBvX,OAApB,EAA6B;AAC3BqY,MAAAA,OAAO;AACR;AACF,GAJC,CAAF;;AAKA,WAAc3T,MAAM,CAAC6S,QAArB,EAA+B;AAC7Be,IAAAA,MAAM,EAANA,MAD6B;AAE7BD,IAAAA,OAAO,EAAPA;AAF6B,GAA/B;AAID;;;;;;;;;;;;;;ACnID;;AACA;;;;;;AACe,SAAS44G,IAAT,CAAcrV,IAAd,EAAoB;AACjC,MACEl3G,MADF,GAKIk3G,IALJ,CACEl3G,MADF;AAAA,MAEE4oG,YAFF,GAKIsO,IALJ,CAEEtO,YAFF;AAAA,MAGE7lG,EAHF,GAKIm0G,IALJ,CAGEn0G,EAHF;AAAA,MAIEkjG,IAJF,GAKIiR,IALJ,CAIEjR,IAJF;AAMA2C,EAAAA,YAAY,CAAC;AACX4jB,IAAAA,IAAI,EAAE;AACJC,MAAAA,WAAW,EAAE,KADT;AAEJnxH,MAAAA,OAAO,EAAE,KAFL;AAGJoxH,MAAAA,YAAY,EAAE,KAHV;AAIJC,MAAAA,kBAAkB,EAAE,CAJhB;AAKJC,MAAAA,qBAAqB,EAAE,KALnB;AAMJC,MAAAA,gBAAgB,EAAE,EANd;AAOJC,MAAAA,YAAY,EAAE,aAPV;AAQJC,MAAAA,YAAY,EAAE,qBARV;AASJC,MAAAA,WAAW,EAAE,oBATT;AAUJC,MAAAA,cAAc,EAAE;AAVZ;AADK,GAAD,CAAZ;AAcAjtH,EAAAA,MAAM,CAACwsH,IAAP,GAAc,EAAd;AACA,MAAIU,qBAAqB,GAAG,KAA5B;AACA,MAAIC,kBAAkB,GAAG,KAAzB;;AAEA,WAASC,WAAT,CAAqB3xH,KAArB,EAA4B4xH,eAA5B,EAA6C;AAC3C,QAAIA,eAAe,KAAK,KAAK,CAA7B,EAAgC;AAC9BA,MAAAA,eAAe,GAAG,IAAlB;AACD;;AAED,QAAMjlF,MAAM,GAAGpoC,MAAM,CAACooC,MAAP,CAAcokF,IAA7B;AACA,QAAI,OAAO/wH,KAAP,KAAiB,WAArB,EAAkC;AAClC,QAAIuE,MAAM,CAACiT,MAAP,CAAcpZ,MAAd,KAAyB,CAA7B,EAAgC;AAChC,QAAM8/G,SAAS,GAAG35G,MAAM,CAAC8zG,OAAP,IAAkB9zG,MAAM,CAACooC,MAAP,CAAc0rE,OAAd,CAAsBx4G,OAA1D;AACA,QAAM0mH,QAAQ,GAAGrI,SAAS,GAAG35G,MAAM,CAACotG,UAAP,CAAkBpwG,QAAlB,YAA+BgD,MAAM,CAACooC,MAAP,CAAcojE,UAA7C,wCAAoF/vG,KAApF,SAAH,GAAoGuE,MAAM,CAACiT,MAAP,CAAcgoE,EAAd,CAAiBx/E,KAAjB,CAA9H;AACA,QAAM6xH,OAAO,GAAGtL,QAAQ,CAAC/jB,IAAT,YAAkB71D,MAAM,CAAC0kF,YAAzB,mBAA8C1kF,MAAM,CAAC4kF,WAArD,oBAA0E5kF,MAAM,CAAC2kF,YAAjF,OAAhB;;AAEA,QAAI/K,QAAQ,CAACpgG,QAAT,CAAkBwmB,MAAM,CAAC0kF,YAAzB,KAA0C,CAAC9K,QAAQ,CAACpgG,QAAT,CAAkBwmB,MAAM,CAAC4kF,WAAzB,CAA3C,IAAoF,CAAChL,QAAQ,CAACpgG,QAAT,CAAkBwmB,MAAM,CAAC2kF,YAAzB,CAAzF,EAAiI;AAC/HO,MAAAA,OAAO,CAAClxH,IAAR,CAAa4lH,QAAQ,CAAC,CAAD,CAArB;AACD;;AAED,QAAIsL,OAAO,CAACzzH,MAAR,KAAmB,CAAvB,EAA0B;AAC1ByzH,IAAAA,OAAO,CAACp5C,IAAR,CAAa,UAAA2hC,OAAO,EAAI;AACtB,UAAM0X,QAAQ,GAAG,kBAAE1X,OAAF,CAAjB;AACA0X,MAAAA,QAAQ,CAAC1sG,QAAT,CAAkBunB,MAAM,CAAC2kF,YAAzB;AACA,UAAMS,UAAU,GAAGD,QAAQ,CAAChzB,IAAT,CAAc,iBAAd,CAAnB;AACA,UAAMt5F,GAAG,GAAGssH,QAAQ,CAAChzB,IAAT,CAAc,UAAd,CAAZ;AACA,UAAMub,MAAM,GAAGyX,QAAQ,CAAChzB,IAAT,CAAc,aAAd,CAAf;AACA,UAAMwb,KAAK,GAAGwX,QAAQ,CAAChzB,IAAT,CAAc,YAAd,CAAd;AACA,UAAMkzB,UAAU,GAAGF,QAAQ,CAACrwH,MAAT,CAAgB,SAAhB,CAAnB;AACA8C,MAAAA,MAAM,CAAC41G,SAAP,CAAiB2X,QAAQ,CAAC,CAAD,CAAzB,EAA8BtsH,GAAG,IAAIusH,UAArC,EAAiD1X,MAAjD,EAAyDC,KAAzD,EAAgE,KAAhE,EAAuE,YAAM;AAC3E,YAAI,OAAO/1G,MAAP,KAAkB,WAAlB,IAAiCA,MAAM,KAAK,IAA5C,IAAoD,CAACA,MAArD,IAA+DA,MAAM,IAAI,CAACA,MAAM,CAACooC,MAAjF,IAA2FpoC,MAAM,CAACmsG,SAAtG,EAAiH;;AAEjH,YAAIqhB,UAAJ,EAAgB;AACdD,UAAAA,QAAQ,CAACjxB,GAAT,CAAa,kBAAb,kBAAyCkxB,UAAzC;AACAD,UAAAA,QAAQ,CAAC7yB,UAAT,CAAoB,iBAApB;AACD,SAHD,MAGO;AACL,cAAIob,MAAJ,EAAY;AACVyX,YAAAA,QAAQ,CAAChzB,IAAT,CAAc,QAAd,EAAwBub,MAAxB;AACAyX,YAAAA,QAAQ,CAAC7yB,UAAT,CAAoB,aAApB;AACD;;AAED,cAAIqb,KAAJ,EAAW;AACTwX,YAAAA,QAAQ,CAAChzB,IAAT,CAAc,OAAd,EAAuBwb,KAAvB;AACAwX,YAAAA,QAAQ,CAAC7yB,UAAT,CAAoB,YAApB;AACD;;AAED,cAAI+yB,UAAU,CAAC5zH,MAAf,EAAuB;AACrB4zH,YAAAA,UAAU,CAACzwH,QAAX,CAAoB,QAApB,EAA8Bk3E,IAA9B,CAAmC,UAAAw5C,QAAQ,EAAI;AAC7C,kBAAMC,OAAO,GAAG,kBAAED,QAAF,CAAhB;;AAEA,kBAAIC,OAAO,CAACpzB,IAAR,CAAa,aAAb,CAAJ,EAAiC;AAC/BozB,gBAAAA,OAAO,CAACpzB,IAAR,CAAa,QAAb,EAAuBozB,OAAO,CAACpzB,IAAR,CAAa,aAAb,CAAvB;AACAozB,gBAAAA,OAAO,CAACjzB,UAAR,CAAmB,aAAnB;AACD;AACF,aAPD;AAQD;;AAED,cAAIz5F,GAAJ,EAAS;AACPssH,YAAAA,QAAQ,CAAChzB,IAAT,CAAc,KAAd,EAAqBt5F,GAArB;AACAssH,YAAAA,QAAQ,CAAC7yB,UAAT,CAAoB,UAApB;AACD;AACF;;AAED6yB,QAAAA,QAAQ,CAAC1sG,QAAT,CAAkBunB,MAAM,CAAC4kF,WAAzB,EAAsChrG,WAAtC,CAAkDomB,MAAM,CAAC2kF,YAAzD;AACA/K,QAAAA,QAAQ,CAAC/jB,IAAT,YAAkB71D,MAAM,CAAC6kF,cAAzB,GAA2C54G,MAA3C;;AAEA,YAAIrU,MAAM,CAACooC,MAAP,CAAcjoC,IAAd,IAAsBktH,eAA1B,EAA2C;AACzC,cAAMO,kBAAkB,GAAG5L,QAAQ,CAACznB,IAAT,CAAc,yBAAd,CAA3B;;AAEA,cAAIynB,QAAQ,CAACpgG,QAAT,CAAkB5hB,MAAM,CAACooC,MAAP,CAAcupE,mBAAhC,CAAJ,EAA0D;AACxD,gBAAMkc,aAAa,GAAG7tH,MAAM,CAACotG,UAAP,CAAkBpwG,QAAlB,sCAAwD4wH,kBAAxD,sBAAqF5tH,MAAM,CAACooC,MAAP,CAAcupE,mBAAnG,OAAtB;AACAyb,YAAAA,WAAW,CAACS,aAAa,CAACpyH,KAAd,EAAD,EAAwB,KAAxB,CAAX;AACD,WAHD,MAGO;AACL,gBAAMqyH,eAAe,GAAG9tH,MAAM,CAACotG,UAAP,CAAkBpwG,QAAlB,YAA+BgD,MAAM,CAACooC,MAAP,CAAcupE,mBAA7C,wCAA6Fic,kBAA7F,SAAxB;AACAR,YAAAA,WAAW,CAACU,eAAe,CAACryH,KAAhB,EAAD,EAA0B,KAA1B,CAAX;AACD;AACF;;AAEDwqG,QAAAA,IAAI,CAAC,gBAAD,EAAmB+b,QAAQ,CAAC,CAAD,CAA3B,EAAgCuL,QAAQ,CAAC,CAAD,CAAxC,CAAJ;;AAEA,YAAIvtH,MAAM,CAACooC,MAAP,CAAc31B,UAAlB,EAA8B;AAC5BzS,UAAAA,MAAM,CAAC2sG,gBAAP;AACD;AACF,OAtDD;AAuDA1G,MAAAA,IAAI,CAAC,eAAD,EAAkB+b,QAAQ,CAAC,CAAD,CAA1B,EAA+BuL,QAAQ,CAAC,CAAD,CAAvC,CAAJ;AACD,KAhED;AAiED;;AAED,WAAS1mH,IAAT,GAAgB;AACd,QACEumG,UADF,GAKIptG,MALJ,CACEotG,UADF;AAAA,QAEUvE,YAFV,GAKI7oG,MALJ,CAEEooC,MAFF;AAAA,QAGEn1B,MAHF,GAKIjT,MALJ,CAGEiT,MAHF;AAAA,QAIEC,WAJF,GAKIlT,MALJ,CAIEkT,WAJF;AAMA,QAAMymG,SAAS,GAAG35G,MAAM,CAAC8zG,OAAP,IAAkBjL,YAAY,CAACiL,OAAb,CAAqBx4G,OAAzD;AACA,QAAM8sC,MAAM,GAAGygE,YAAY,CAAC2jB,IAA5B;AACA,QAAI7mB,aAAa,GAAGkD,YAAY,CAAClD,aAAjC;;AAEA,QAAIA,aAAa,KAAK,MAAtB,EAA8B;AAC5BA,MAAAA,aAAa,GAAG,CAAhB;AACD;;AAED,aAASooB,UAAT,CAAoBtyH,KAApB,EAA2B;AACzB,UAAIk+G,SAAJ,EAAe;AACb,YAAIvM,UAAU,CAACpwG,QAAX,YAAwB6rG,YAAY,CAAC2C,UAArC,wCAA4E/vG,KAA5E,UAAuF5B,MAA3F,EAAmG;AACjG,iBAAO,IAAP;AACD;AACF,OAJD,MAIO,IAAIoZ,MAAM,CAACxX,KAAD,CAAV,EAAmB,OAAO,IAAP;;AAE1B,aAAO,KAAP;AACD;;AAED,aAASgY,UAAT,CAAoB83F,OAApB,EAA6B;AAC3B,UAAIoO,SAAJ,EAAe;AACb,eAAO,kBAAEpO,OAAF,EAAWhR,IAAX,CAAgB,yBAAhB,CAAP;AACD;;AAED,aAAO,kBAAEgR,OAAF,EAAW9vG,KAAX,EAAP;AACD;;AAED,QAAI,CAAC0xH,kBAAL,EAAyBA,kBAAkB,GAAG,IAArB;;AAEzB,QAAIntH,MAAM,CAACooC,MAAP,CAAcsoE,mBAAlB,EAAuC;AACrCtD,MAAAA,UAAU,CAACpwG,QAAX,YAAwB6rG,YAAY,CAACkF,iBAArC,GAA0D75B,IAA1D,CAA+D,UAAAq3B,OAAO,EAAI;AACxE,YAAM9vG,KAAK,GAAGk+G,SAAS,GAAG,kBAAEpO,OAAF,EAAWhR,IAAX,CAAgB,yBAAhB,CAAH,GAAgD,kBAAEgR,OAAF,EAAW9vG,KAAX,EAAvE;AACA2xH,QAAAA,WAAW,CAAC3xH,KAAD,CAAX;AACD,OAHD;AAID,KALD,MAKO,IAAIkqG,aAAa,GAAG,CAApB,EAAuB;AAC5B,WAAK,IAAItrG,CAAC,GAAG6Y,WAAb,EAA0B7Y,CAAC,GAAG6Y,WAAW,GAAGyyF,aAA5C,EAA2DtrG,CAAC,IAAI,CAAhE,EAAmE;AACjE,YAAI0zH,UAAU,CAAC1zH,CAAD,CAAd,EAAmB+yH,WAAW,CAAC/yH,CAAD,CAAX;AACpB;AACF,KAJM,MAIA;AACL+yH,MAAAA,WAAW,CAACl6G,WAAD,CAAX;AACD;;AAED,QAAIk1B,MAAM,CAACskF,YAAX,EAAyB;AACvB,UAAI/mB,aAAa,GAAG,CAAhB,IAAqBv9D,MAAM,CAACukF,kBAAP,IAA6BvkF,MAAM,CAACukF,kBAAP,GAA4B,CAAlF,EAAqF;AACnF,YAAM5oF,MAAM,GAAGqE,MAAM,CAACukF,kBAAtB;AACA,YAAM7gB,GAAG,GAAGnG,aAAZ;AACA,YAAM3vC,QAAQ,GAAGp5D,IAAI,CAACyH,GAAL,CAAS6O,WAAW,GAAG44F,GAAd,GAAoBlvG,IAAI,CAAC0H,GAAL,CAASy/B,MAAT,EAAiB+nE,GAAjB,CAA7B,EAAoD74F,MAAM,CAACpZ,MAA3D,CAAjB;AACA,YAAMk8D,QAAQ,GAAGn5D,IAAI,CAAC0H,GAAL,CAAS4O,WAAW,GAAGtW,IAAI,CAAC0H,GAAL,CAASwnG,GAAT,EAAc/nE,MAAd,CAAvB,EAA8C,CAA9C,CAAjB,CAJmF,CAIhB;;AAEnE,aAAK,IAAI1pC,EAAC,GAAG6Y,WAAW,GAAGyyF,aAA3B,EAA0CtrG,EAAC,GAAG27D,QAA9C,EAAwD37D,EAAC,IAAI,CAA7D,EAAgE;AAC9D,cAAI0zH,UAAU,CAAC1zH,EAAD,CAAd,EAAmB+yH,WAAW,CAAC/yH,EAAD,CAAX;AACpB,SARkF,CAQjF;;;AAGF,aAAK,IAAIA,GAAC,GAAG07D,QAAb,EAAuB17D,GAAC,GAAG6Y,WAA3B,EAAwC7Y,GAAC,IAAI,CAA7C,EAAgD;AAC9C,cAAI0zH,UAAU,CAAC1zH,GAAD,CAAd,EAAmB+yH,WAAW,CAAC/yH,GAAD,CAAX;AACpB;AACF,OAdD,MAcO;AACL,YAAMsjH,SAAS,GAAGvQ,UAAU,CAACpwG,QAAX,YAAwB6rG,YAAY,CAACoF,cAArC,EAAlB;AACA,YAAI0P,SAAS,CAAC9jH,MAAV,GAAmB,CAAvB,EAA0BuzH,WAAW,CAAC35G,UAAU,CAACkqG,SAAD,CAAX,CAAX;AAC1B,YAAMC,SAAS,GAAGxQ,UAAU,CAACpwG,QAAX,YAAwB6rG,YAAY,CAACqF,cAArC,EAAlB;AACA,YAAI0P,SAAS,CAAC/jH,MAAV,GAAmB,CAAvB,EAA0BuzH,WAAW,CAAC35G,UAAU,CAACmqG,SAAD,CAAX,CAAX;AAC3B;AACF;AACF;;AAED,WAASoQ,iBAAT,GAA6B;AAC3B,QAAM3wH,MAAM,GAAG,2BAAf;AACA,QAAI,CAAC2C,MAAD,IAAWA,MAAM,CAACmsG,SAAtB,EAAiC;AACjC,QAAM8hB,cAAc,GAAGjuH,MAAM,CAACooC,MAAP,CAAcokF,IAAd,CAAmBK,gBAAnB,GAAsC,kBAAE7sH,MAAM,CAACooC,MAAP,CAAcokF,IAAd,CAAmBK,gBAArB,CAAtC,GAA+E,kBAAExvH,MAAF,CAAtG;AACA,QAAM6wH,QAAQ,GAAGD,cAAc,CAAC,CAAD,CAAd,KAAsB5wH,MAAvC;AACA,QAAM8wH,kBAAkB,GAAGD,QAAQ,GAAG7wH,MAAM,CAACqI,UAAV,GAAuBuoH,cAAc,CAAC,CAAD,CAAd,CAAkBjpH,WAA5E;AACA,QAAMopH,mBAAmB,GAAGF,QAAQ,GAAG7wH,MAAM,CAACsI,WAAV,GAAwBsoH,cAAc,CAAC,CAAD,CAAd,CAAkB3qH,YAA9E;AACA,QAAM8oH,YAAY,GAAGpsH,MAAM,CAAC8kG,GAAP,CAAWliG,MAAX,EAArB;AACA,QACgB45D,GADhB,GAEIx8D,MAFJ,CACEwsG,YADF;AAGA,QAAIyf,MAAM,GAAG,KAAb;AACA,QAAIzvD,GAAJ,EAAS4vD,YAAY,CAACvuH,IAAb,IAAqBmC,MAAM,CAAC8kG,GAAP,CAAW,CAAX,EAAc1lG,UAAnC;AACT,QAAMitH,WAAW,GAAG,CAAC,CAACD,YAAY,CAACvuH,IAAd,EAAoBuuH,YAAY,CAACzuH,GAAjC,CAAD,EAAwC,CAACyuH,YAAY,CAACvuH,IAAb,GAAoBmC,MAAM,CAAChC,KAA5B,EAAmCouH,YAAY,CAACzuH,GAAhD,CAAxC,EAA8F,CAACyuH,YAAY,CAACvuH,IAAd,EAAoBuuH,YAAY,CAACzuH,GAAb,GAAmBqC,MAAM,CAACjC,MAA9C,CAA9F,EAAqJ,CAACquH,YAAY,CAACvuH,IAAb,GAAoBmC,MAAM,CAAChC,KAA5B,EAAmCouH,YAAY,CAACzuH,GAAb,GAAmBqC,MAAM,CAACjC,MAA7D,CAArJ,CAApB;;AAEA,SAAK,IAAI1D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgyH,WAAW,CAACxyH,MAAhC,EAAwCQ,CAAC,IAAI,CAA7C,EAAgD;AAC9C,UAAM8gC,KAAK,GAAGkxF,WAAW,CAAChyH,CAAD,CAAzB;;AAEA,UAAI8gC,KAAK,CAAC,CAAD,CAAL,IAAY,CAAZ,IAAiBA,KAAK,CAAC,CAAD,CAAL,IAAYgzF,kBAA7B,IAAmDhzF,KAAK,CAAC,CAAD,CAAL,IAAY,CAA/D,IAAoEA,KAAK,CAAC,CAAD,CAAL,IAAYizF,mBAApF,EAAyG;AACvG,YAAIjzF,KAAK,CAAC,CAAD,CAAL,KAAa,CAAb,IAAkBA,KAAK,CAAC,CAAD,CAAL,KAAa,CAAnC,EAAsC,SADiE,CACvD;;AAEhD8wF,QAAAA,MAAM,GAAG,IAAT;AACD;AACF;;AAED,QAAMrZ,eAAe,GAAG5yG,MAAM,CAACqpG,WAAP,CAAmBhtG,KAAnB,KAA6B,YAA7B,IAA6C2D,MAAM,CAACmnG,OAAP,CAAeyL,eAA5D,IAA+E5yG,MAAM,CAACooC,MAAP,CAAcmpE,gBAA7F,GAAgH;AACtIzkE,MAAAA,OAAO,EAAE,IAD6H;AAEtIuuD,MAAAA,OAAO,EAAE;AAF6H,KAAhH,GAGpB,KAHJ;;AAKA,QAAI4wB,MAAJ,EAAY;AACVplH,MAAAA,IAAI;AACJonH,MAAAA,cAAc,CAACnyB,GAAf,CAAmB,QAAnB,EAA6BkyB,iBAA7B,EAAgDpb,eAAhD;AACD,KAHD,MAGO,IAAI,CAACsa,qBAAL,EAA4B;AACjCA,MAAAA,qBAAqB,GAAG,IAAxB;AACAe,MAAAA,cAAc,CAAClrH,EAAf,CAAkB,QAAlB,EAA4BirH,iBAA5B,EAA+Cpb,eAA/C;AACD;AACF;;AAED7vG,EAAAA,EAAE,CAAC,YAAD,EAAe,YAAM;AACrB,QAAI/C,MAAM,CAACooC,MAAP,CAAcokF,IAAd,CAAmBlxH,OAAnB,IAA8B0E,MAAM,CAACooC,MAAP,CAAcqlE,aAAhD,EAA+D;AAC7DztG,MAAAA,MAAM,CAACooC,MAAP,CAAcqlE,aAAd,GAA8B,KAA9B;AACD;AACF,GAJC,CAAF;AAKA1qG,EAAAA,EAAE,CAAC,MAAD,EAAS,YAAM;AACf,QAAI/C,MAAM,CAACooC,MAAP,CAAcokF,IAAd,CAAmBlxH,OAAvB,EAAgC;AAC9B,UAAI0E,MAAM,CAACooC,MAAP,CAAcokF,IAAd,CAAmBC,WAAvB,EAAoC;AAClCuB,QAAAA,iBAAiB;AAClB,OAFD,MAEO;AACLnnH,QAAAA,IAAI;AACL;AACF;AACF,GARC,CAAF;AASA9D,EAAAA,EAAE,CAAC,QAAD,EAAW,YAAM;AACjB,QAAI/C,MAAM,CAACooC,MAAP,CAAck/D,QAAd,IAA0BtnG,MAAM,CAACooC,MAAP,CAAck/D,QAAd,CAAuBhsG,OAAjD,IAA4D,CAAC0E,MAAM,CAACooC,MAAP,CAAck/D,QAAd,CAAuBshB,MAAxF,EAAgG;AAC9F/hH,MAAAA,IAAI;AACL;AACF,GAJC,CAAF;AAKA9D,EAAAA,EAAE,CAAC,qDAAD,EAAwD,YAAM;AAC9D,QAAI/C,MAAM,CAACooC,MAAP,CAAcokF,IAAd,CAAmBlxH,OAAvB,EAAgC;AAC9B,UAAI0E,MAAM,CAACooC,MAAP,CAAcokF,IAAd,CAAmBC,WAAvB,EAAoC;AAClCuB,QAAAA,iBAAiB;AAClB,OAFD,MAEO;AACLnnH,QAAAA,IAAI;AACL;AACF;AACF,GARC,CAAF;AASA9D,EAAAA,EAAE,CAAC,iBAAD,EAAoB,YAAM;AAC1B,QAAI/C,MAAM,CAACooC,MAAP,CAAcokF,IAAd,CAAmBlxH,OAAvB,EAAgC;AAC9B,UAAI0E,MAAM,CAACooC,MAAP,CAAcokF,IAAd,CAAmBI,qBAAnB,IAA4C,CAAC5sH,MAAM,CAACooC,MAAP,CAAcokF,IAAd,CAAmBI,qBAApB,IAA6C,CAACO,kBAA9F,EAAkH;AAChH,YAAIntH,MAAM,CAACooC,MAAP,CAAcokF,IAAd,CAAmBC,WAAvB,EAAoC;AAClCuB,UAAAA,iBAAiB;AAClB,SAFD,MAEO;AACLnnH,UAAAA,IAAI;AACL;AACF;AACF;AACF,GAVC,CAAF;AAWA9D,EAAAA,EAAE,CAAC,eAAD,EAAkB,YAAM;AACxB,QAAI/C,MAAM,CAACooC,MAAP,CAAcokF,IAAd,CAAmBlxH,OAAnB,IAA8B,CAAC0E,MAAM,CAACooC,MAAP,CAAcokF,IAAd,CAAmBI,qBAAtD,EAA6E;AAC3E,UAAI5sH,MAAM,CAACooC,MAAP,CAAcokF,IAAd,CAAmBC,WAAvB,EAAoC;AAClCuB,QAAAA,iBAAiB;AAClB,OAFD,MAEO;AACLnnH,QAAAA,IAAI;AACL;AACF;AACF,GARC,CAAF;AASA9D,EAAAA,EAAE,CAAC,aAAD,EAAgB,YAAM;AACtB,yBAMI/C,MAAM,CAACooC,MANX;AAAA,QACEokF,IADF,kBACEA,IADF;AAAA,QAEE/kB,OAFF,kBAEEA,OAFF;AAAA,QAGEiJ,mBAHF,kBAGEA,mBAHF;AAAA,QAIEh+F,mBAJF,kBAIEA,mBAJF;AAAA,QAKE+9F,eALF,kBAKEA,eALF;;AAQA,QAAI+b,IAAI,CAAClxH,OAAL,KAAiBmsG,OAAO,IAAIiJ,mBAAmB,KAAKh+F,mBAAmB,IAAI+9F,eAAe,KAAK,CAAhD,CAA/C,CAAJ,EAAwG;AACtG5pG,MAAAA,IAAI;AACL;AACF,GAZC,CAAF;;AAaA,WAAc7G,MAAM,CAACwsH,IAArB,EAA2B;AACzB3lH,IAAAA,IAAI,EAAJA,IADyB;AAEzBumH,IAAAA,WAAW,EAAXA;AAFyB,GAA3B;AAID;;;;;;;;;;;;;;AC/RD;;AACA;;AACA;;AACA;;AACA;;;;;;AACe,SAASiB,YAAT,CAAsBnX,IAAtB,EAA4B;AACzC,MACEl3G,MADF,GAEIk3G,IAFJ,CACEl3G,MADF;;AAGA,WAAcA,MAAd,EAAsB;AACpBsuH,IAAAA,WAAW,EAAEA,qBAAY3jH,IAAZ,CAAiB3K,MAAjB,CADO;AAEpBuuH,IAAAA,YAAY,EAAEA,sBAAa5jH,IAAb,CAAkB3K,MAAlB,CAFM;AAGpBwuH,IAAAA,QAAQ,EAAEA,kBAAS7jH,IAAT,CAAc3K,MAAd,CAHU;AAIpByuH,IAAAA,WAAW,EAAEA,qBAAY9jH,IAAZ,CAAiB3K,MAAjB,CAJO;AAKpB0uH,IAAAA,eAAe,EAAEA,yBAAgB/jH,IAAhB,CAAqB3K,MAArB;AALG,GAAtB;AAOD;;;;;;;;;;;;;;;;AChBc,SAASwuH,QAAT,CAAkB/yH,KAAlB,EAAyBwX,MAAzB,EAAiC;AAC9C,MAAMjT,MAAM,GAAG,IAAf;AACA,MACEotG,UADF,GAIIptG,MAJJ,CACEotG,UADF;AAAA,MAEEhlE,MAFF,GAIIpoC,MAJJ,CAEEooC,MAFF;AAAA,MAGEl1B,WAHF,GAIIlT,MAJJ,CAGEkT,WAHF;AAKA,MAAIy7G,iBAAiB,GAAGz7G,WAAxB;;AAEA,MAAIk1B,MAAM,CAACjoC,IAAX,EAAiB;AACfwuH,IAAAA,iBAAiB,IAAI3uH,MAAM,CAAC6kG,YAA5B;AACA7kG,IAAAA,MAAM,CAACkmG,WAAP;AACAlmG,IAAAA,MAAM,CAACiT,MAAP,GAAgBm6F,UAAU,CAACpwG,QAAX,YAAwBorC,MAAM,CAACojE,UAA/B,EAAhB;AACD;;AAED,MAAMojB,UAAU,GAAG5uH,MAAM,CAACiT,MAAP,CAAcpZ,MAAjC;;AAEA,MAAI4B,KAAK,IAAI,CAAb,EAAgB;AACduE,IAAAA,MAAM,CAACuuH,YAAP,CAAoBt7G,MAApB;AACA;AACD;;AAED,MAAIxX,KAAK,IAAImzH,UAAb,EAAyB;AACvB5uH,IAAAA,MAAM,CAACsuH,WAAP,CAAmBr7G,MAAnB;AACA;AACD;;AAED,MAAI6nG,cAAc,GAAG6T,iBAAiB,GAAGlzH,KAApB,GAA4BkzH,iBAAiB,GAAG,CAAhD,GAAoDA,iBAAzE;AACA,MAAME,YAAY,GAAG,EAArB;;AAEA,OAAK,IAAIx0H,CAAC,GAAGu0H,UAAU,GAAG,CAA1B,EAA6Bv0H,CAAC,IAAIoB,KAAlC,EAAyCpB,CAAC,IAAI,CAA9C,EAAiD;AAC/C,QAAM2Y,YAAY,GAAGhT,MAAM,CAACiT,MAAP,CAAcgoE,EAAd,CAAiB5gF,CAAjB,CAArB;AACA2Y,IAAAA,YAAY,CAACqB,MAAb;AACAw6G,IAAAA,YAAY,CAAC5vG,OAAb,CAAqBjM,YAArB;AACD;;AAED,MAAI,QAAOC,MAAP,MAAkB,QAAlB,IAA8B,YAAYA,MAA9C,EAAsD;AACpD,SAAK,IAAI5Y,EAAC,GAAG,CAAb,EAAgBA,EAAC,GAAG4Y,MAAM,CAACpZ,MAA3B,EAAmCQ,EAAC,IAAI,CAAxC,EAA2C;AACzC,UAAI4Y,MAAM,CAAC5Y,EAAD,CAAV,EAAe+yG,UAAU,CAAClQ,MAAX,CAAkBjqF,MAAM,CAAC5Y,EAAD,CAAxB;AAChB;;AAEDygH,IAAAA,cAAc,GAAG6T,iBAAiB,GAAGlzH,KAApB,GAA4BkzH,iBAAiB,GAAG17G,MAAM,CAACpZ,MAAvD,GAAgE80H,iBAAjF;AACD,GAND,MAMO;AACLvhB,IAAAA,UAAU,CAAClQ,MAAX,CAAkBjqF,MAAlB;AACD;;AAED,OAAK,IAAI5Y,GAAC,GAAG,CAAb,EAAgBA,GAAC,GAAGw0H,YAAY,CAACh1H,MAAjC,EAAyCQ,GAAC,IAAI,CAA9C,EAAiD;AAC/C+yG,IAAAA,UAAU,CAAClQ,MAAX,CAAkB2xB,YAAY,CAACx0H,GAAD,CAA9B;AACD;;AAED,MAAI+tC,MAAM,CAACjoC,IAAX,EAAiB;AACfH,IAAAA,MAAM,CAACmmG,UAAP;AACD;;AAED,MAAI,CAAC/9D,MAAM,CAAC3kC,QAAZ,EAAsB;AACpBzD,IAAAA,MAAM,CAACgV,MAAP;AACD;;AAED,MAAIozB,MAAM,CAACjoC,IAAX,EAAiB;AACfH,IAAAA,MAAM,CAAC0T,OAAP,CAAeonG,cAAc,GAAG96G,MAAM,CAAC6kG,YAAvC,EAAqD,CAArD,EAAwD,KAAxD;AACD,GAFD,MAEO;AACL7kG,IAAAA,MAAM,CAAC0T,OAAP,CAAeonG,cAAf,EAA+B,CAA/B,EAAkC,KAAlC;AACD;AACF;;;;;;;;;;;;;;;;AC/Dc,SAASwT,WAAT,CAAqBr7G,MAArB,EAA6B;AAC1C,MAAMjT,MAAM,GAAG,IAAf;AACA,MACEotG,UADF,GAGIptG,MAHJ,CACEotG,UADF;AAAA,MAEEhlE,MAFF,GAGIpoC,MAHJ,CAEEooC,MAFF;;AAKA,MAAIA,MAAM,CAACjoC,IAAX,EAAiB;AACfH,IAAAA,MAAM,CAACkmG,WAAP;AACD;;AAED,MAAI,QAAOjzF,MAAP,MAAkB,QAAlB,IAA8B,YAAYA,MAA9C,EAAsD;AACpD,SAAK,IAAI5Y,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4Y,MAAM,CAACpZ,MAA3B,EAAmCQ,CAAC,IAAI,CAAxC,EAA2C;AACzC,UAAI4Y,MAAM,CAAC5Y,CAAD,CAAV,EAAe+yG,UAAU,CAAClQ,MAAX,CAAkBjqF,MAAM,CAAC5Y,CAAD,CAAxB;AAChB;AACF,GAJD,MAIO;AACL+yG,IAAAA,UAAU,CAAClQ,MAAX,CAAkBjqF,MAAlB;AACD;;AAED,MAAIm1B,MAAM,CAACjoC,IAAX,EAAiB;AACfH,IAAAA,MAAM,CAACmmG,UAAP;AACD;;AAED,MAAI,CAAC/9D,MAAM,CAAC3kC,QAAZ,EAAsB;AACpBzD,IAAAA,MAAM,CAACgV,MAAP;AACD;AACF;;;;;;;;;;;;;;;;AC1Bc,SAASu5G,YAAT,CAAsBt7G,MAAtB,EAA8B;AAC3C,MAAMjT,MAAM,GAAG,IAAf;AACA,MACEooC,MADF,GAIIpoC,MAJJ,CACEooC,MADF;AAAA,MAEEglE,UAFF,GAIIptG,MAJJ,CAEEotG,UAFF;AAAA,MAGEl6F,WAHF,GAIIlT,MAJJ,CAGEkT,WAHF;;AAMA,MAAIk1B,MAAM,CAACjoC,IAAX,EAAiB;AACfH,IAAAA,MAAM,CAACkmG,WAAP;AACD;;AAED,MAAI4U,cAAc,GAAG5nG,WAAW,GAAG,CAAnC;;AAEA,MAAI,QAAOD,MAAP,MAAkB,QAAlB,IAA8B,YAAYA,MAA9C,EAAsD;AACpD,SAAK,IAAI5Y,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4Y,MAAM,CAACpZ,MAA3B,EAAmCQ,CAAC,IAAI,CAAxC,EAA2C;AACzC,UAAI4Y,MAAM,CAAC5Y,CAAD,CAAV,EAAe+yG,UAAU,CAAC7P,OAAX,CAAmBtqF,MAAM,CAAC5Y,CAAD,CAAzB;AAChB;;AAEDygH,IAAAA,cAAc,GAAG5nG,WAAW,GAAGD,MAAM,CAACpZ,MAAtC;AACD,GAND,MAMO;AACLuzG,IAAAA,UAAU,CAAC7P,OAAX,CAAmBtqF,MAAnB;AACD;;AAED,MAAIm1B,MAAM,CAACjoC,IAAX,EAAiB;AACfH,IAAAA,MAAM,CAACmmG,UAAP;AACD;;AAED,MAAI,CAAC/9D,MAAM,CAAC3kC,QAAZ,EAAsB;AACpBzD,IAAAA,MAAM,CAACgV,MAAP;AACD;;AAEDhV,EAAAA,MAAM,CAAC0T,OAAP,CAAeonG,cAAf,EAA+B,CAA/B,EAAkC,KAAlC;AACD;;;;;;;;;;;;;;ACjCc,SAAS4T,eAAT,GAA2B;AACxC,MAAM1uH,MAAM,GAAG,IAAf;AACA,MAAM8uH,aAAa,GAAG,EAAtB;;AAEA,OAAK,IAAIz0H,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2F,MAAM,CAACiT,MAAP,CAAcpZ,MAAlC,EAA0CQ,CAAC,IAAI,CAA/C,EAAkD;AAChDy0H,IAAAA,aAAa,CAAC1yH,IAAd,CAAmB/B,CAAnB;AACD;;AAED2F,EAAAA,MAAM,CAACyuH,WAAP,CAAmBK,aAAnB;AACD;;;;;;;;;;;;;;;;ACTc,SAASL,WAAT,CAAqBK,aAArB,EAAoC;AACjD,MAAM9uH,MAAM,GAAG,IAAf;AACA,MACEooC,MADF,GAIIpoC,MAJJ,CACEooC,MADF;AAAA,MAEEglE,UAFF,GAIIptG,MAJJ,CAEEotG,UAFF;AAAA,MAGEl6F,WAHF,GAIIlT,MAJJ,CAGEkT,WAHF;AAKA,MAAIy7G,iBAAiB,GAAGz7G,WAAxB;;AAEA,MAAIk1B,MAAM,CAACjoC,IAAX,EAAiB;AACfwuH,IAAAA,iBAAiB,IAAI3uH,MAAM,CAAC6kG,YAA5B;AACA7kG,IAAAA,MAAM,CAACkmG,WAAP;AACAlmG,IAAAA,MAAM,CAACiT,MAAP,GAAgBm6F,UAAU,CAACpwG,QAAX,YAAwBorC,MAAM,CAACojE,UAA/B,EAAhB;AACD;;AAED,MAAIsP,cAAc,GAAG6T,iBAArB;AACA,MAAII,aAAJ;;AAEA,MAAI,QAAOD,aAAP,MAAyB,QAAzB,IAAqC,YAAYA,aAArD,EAAoE;AAClE,SAAK,IAAIz0H,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGy0H,aAAa,CAACj1H,MAAlC,EAA0CQ,CAAC,IAAI,CAA/C,EAAkD;AAChD00H,MAAAA,aAAa,GAAGD,aAAa,CAACz0H,CAAD,CAA7B;AACA,UAAI2F,MAAM,CAACiT,MAAP,CAAc87G,aAAd,CAAJ,EAAkC/uH,MAAM,CAACiT,MAAP,CAAcgoE,EAAd,CAAiB8zC,aAAjB,EAAgC16G,MAAhC;AAClC,UAAI06G,aAAa,GAAGjU,cAApB,EAAoCA,cAAc,IAAI,CAAlB;AACrC;;AAEDA,IAAAA,cAAc,GAAGl+G,IAAI,CAAC0H,GAAL,CAASw2G,cAAT,EAAyB,CAAzB,CAAjB;AACD,GARD,MAQO;AACLiU,IAAAA,aAAa,GAAGD,aAAhB;AACA,QAAI9uH,MAAM,CAACiT,MAAP,CAAc87G,aAAd,CAAJ,EAAkC/uH,MAAM,CAACiT,MAAP,CAAcgoE,EAAd,CAAiB8zC,aAAjB,EAAgC16G,MAAhC;AAClC,QAAI06G,aAAa,GAAGjU,cAApB,EAAoCA,cAAc,IAAI,CAAlB;AACpCA,IAAAA,cAAc,GAAGl+G,IAAI,CAAC0H,GAAL,CAASw2G,cAAT,EAAyB,CAAzB,CAAjB;AACD;;AAED,MAAI1yE,MAAM,CAACjoC,IAAX,EAAiB;AACfH,IAAAA,MAAM,CAACmmG,UAAP;AACD;;AAED,MAAI,CAAC/9D,MAAM,CAAC3kC,QAAZ,EAAsB;AACpBzD,IAAAA,MAAM,CAACgV,MAAP;AACD;;AAED,MAAIozB,MAAM,CAACjoC,IAAX,EAAiB;AACfH,IAAAA,MAAM,CAAC0T,OAAP,CAAeonG,cAAc,GAAG96G,MAAM,CAAC6kG,YAAvC,EAAqD,CAArD,EAAwD,KAAxD;AACD,GAFD,MAEO;AACL7kG,IAAAA,MAAM,CAAC0T,OAAP,CAAeonG,cAAf,EAA+B,CAA/B,EAAkC,KAAlC;AACD;AACF;;;;;;;;;;;;;;AC7CD;;AACA;;AACA;;;;;;AACe,SAASn7G,UAAT,CAAoBu3G,IAApB,EAA0B;AACvC,MACEl3G,MADF,GAKIk3G,IALJ,CACEl3G,MADF;AAAA,MAEE4oG,YAFF,GAKIsO,IALJ,CAEEtO,YAFF;AAAA,MAGE7lG,EAHF,GAKIm0G,IALJ,CAGEn0G,EAHF;AAAA,MAIEkjG,IAJF,GAKIiR,IALJ,CAIEjR,IAJF;AAMA,MAAM5oG,MAAM,GAAG,2BAAf;AACAurG,EAAAA,YAAY,CAAC;AACXj2F,IAAAA,UAAU,EAAE;AACVrX,MAAAA,OAAO,EAAE,KADC;AAEVsX,MAAAA,cAAc,EAAE,KAFN;AAGVo8G,MAAAA,MAAM,EAAE,KAHE;AAIVC,MAAAA,WAAW,EAAE,KAJH;AAKVC,MAAAA,WAAW,EAAE,CALH;AAMVC,MAAAA,YAAY,EAAE,WANJ;AAOVC,MAAAA,cAAc,EAAE,IAPN;AAQVC,MAAAA,aAAa,EAAE;AARL;AADD,GAAD,CAAZ;AAYArvH,EAAAA,MAAM,CAAC2S,UAAP,GAAoB;AAClBrX,IAAAA,OAAO,EAAE;AADS,GAApB;AAGA,MAAIioB,OAAJ;AACA,MAAI+rG,cAAc,GAAG,iBAArB;AACA,MAAIC,mBAAJ;AACA,MAAMC,iBAAiB,GAAG,EAA1B;;AAEA,WAAS59C,SAAT,CAAmBl1E,CAAnB,EAAsB;AACpB;AACA,QAAM+yH,UAAU,GAAG,EAAnB;AACA,QAAM5jC,WAAW,GAAG,EAApB;AACA,QAAM6jC,WAAW,GAAG,GAApB;AACA,QAAIC,EAAE,GAAG,CAAT;AACA,QAAIC,EAAE,GAAG,CAAT,CANoB,CAMR;;AAEZ,QAAIC,EAAE,GAAG,CAAT;AACA,QAAIC,EAAE,GAAG,CAAT,CAToB,CASR;AACZ;;AAEA,QAAI,YAAYpzH,CAAhB,EAAmB;AACjBkzH,MAAAA,EAAE,GAAGlzH,CAAC,CAACw/F,MAAP;AACD;;AAED,QAAI,gBAAgBx/F,CAApB,EAAuB;AACrBkzH,MAAAA,EAAE,GAAG,CAAClzH,CAAC,CAACqzH,UAAH,GAAgB,GAArB;AACD;;AAED,QAAI,iBAAiBrzH,CAArB,EAAwB;AACtBkzH,MAAAA,EAAE,GAAG,CAAClzH,CAAC,CAACszH,WAAH,GAAiB,GAAtB;AACD;;AAED,QAAI,iBAAiBtzH,CAArB,EAAwB;AACtBizH,MAAAA,EAAE,GAAG,CAACjzH,CAAC,CAACuzH,WAAH,GAAiB,GAAtB;AACD,KA1BmB,CA0BlB;;;AAGF,QAAI,UAAUvzH,CAAV,IAAeA,CAAC,CAAC8wB,IAAF,KAAW9wB,CAAC,CAACwzH,eAAhC,EAAiD;AAC/CP,MAAAA,EAAE,GAAGC,EAAL;AACAA,MAAAA,EAAE,GAAG,CAAL;AACD;;AAEDC,IAAAA,EAAE,GAAGF,EAAE,GAAGF,UAAV;AACAK,IAAAA,EAAE,GAAGF,EAAE,GAAGH,UAAV;;AAEA,QAAI,YAAY/yH,CAAhB,EAAmB;AACjBozH,MAAAA,EAAE,GAAGpzH,CAAC,CAACipC,MAAP;AACD;;AAED,QAAI,YAAYjpC,CAAhB,EAAmB;AACjBmzH,MAAAA,EAAE,GAAGnzH,CAAC,CAACgpC,MAAP;AACD;;AAED,QAAIhpC,CAAC,CAACmvH,QAAF,IAAc,CAACgE,EAAnB,EAAuB;AACrB;AACAA,MAAAA,EAAE,GAAGC,EAAL;AACAA,MAAAA,EAAE,GAAG,CAAL;AACD;;AAED,QAAI,CAACD,EAAE,IAAIC,EAAP,KAAcpzH,CAAC,CAACyzH,SAApB,EAA+B;AAC7B,UAAIzzH,CAAC,CAACyzH,SAAF,KAAgB,CAApB,EAAuB;AACrB;AACAN,QAAAA,EAAE,IAAIhkC,WAAN;AACAikC,QAAAA,EAAE,IAAIjkC,WAAN;AACD,OAJD,MAIO;AACL;AACAgkC,QAAAA,EAAE,IAAIH,WAAN;AACAI,QAAAA,EAAE,IAAIJ,WAAN;AACD;AACF,KA7DmB,CA6DlB;;;AAGF,QAAIG,EAAE,IAAI,CAACF,EAAX,EAAe;AACbA,MAAAA,EAAE,GAAGE,EAAE,GAAG,CAAL,GAAS,CAAC,CAAV,GAAc,CAAnB;AACD;;AAED,QAAIC,EAAE,IAAI,CAACF,EAAX,EAAe;AACbA,MAAAA,EAAE,GAAGE,EAAE,GAAG,CAAL,GAAS,CAAC,CAAV,GAAc,CAAnB;AACD;;AAED,WAAO;AACLM,MAAAA,KAAK,EAAET,EADF;AAELU,MAAAA,KAAK,EAAET,EAFF;AAGLU,MAAAA,MAAM,EAAET,EAHH;AAILU,MAAAA,MAAM,EAAET;AAJH,KAAP;AAMD;;AAED,WAASU,gBAAT,GAA4B;AAC1B,QAAI,CAACxwH,MAAM,CAAC1E,OAAZ,EAAqB;AACrB0E,IAAAA,MAAM,CAACywH,YAAP,GAAsB,IAAtB;AACD;;AAED,WAASC,gBAAT,GAA4B;AAC1B,QAAI,CAAC1wH,MAAM,CAAC1E,OAAZ,EAAqB;AACrB0E,IAAAA,MAAM,CAACywH,YAAP,GAAsB,KAAtB;AACD;;AAED,WAASE,aAAT,CAAuBC,QAAvB,EAAiC;AAC/B,QAAI5wH,MAAM,CAACooC,MAAP,CAAcz1B,UAAd,CAAyBy8G,cAAzB,IAA2CwB,QAAQ,CAACvhF,KAAT,GAAiBrvC,MAAM,CAACooC,MAAP,CAAcz1B,UAAd,CAAyBy8G,cAAzF,EAAyG;AACvG;AACA,aAAO,KAAP;AACD;;AAED,QAAIpvH,MAAM,CAACooC,MAAP,CAAcz1B,UAAd,CAAyB08G,aAAzB,IAA0C,oBAAQC,cAAR,GAAyBtvH,MAAM,CAACooC,MAAP,CAAcz1B,UAAd,CAAyB08G,aAAhG,EAA+G;AAC7G;AACA,aAAO,KAAP;AACD,KAT8B,CAS7B;AACF;AACA;;;AAGA,QAAIuB,QAAQ,CAACvhF,KAAT,IAAkB,CAAlB,IAAuB,oBAAQigF,cAAR,GAAyB,EAApD,EAAwD;AACtD;AACA,aAAO,IAAP;AACD,KAjB8B,CAiB7B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,QAAIsB,QAAQ,CAACv+G,SAAT,GAAqB,CAAzB,EAA4B;AAC1B,UAAI,CAAC,CAACrS,MAAM,CAAC8mG,KAAR,IAAiB9mG,MAAM,CAACooC,MAAP,CAAcjoC,IAAhC,KAAyC,CAACH,MAAM,CAACs/F,SAArD,EAAgE;AAC9Dt/F,QAAAA,MAAM,CAACq4G,SAAP;AACApS,QAAAA,IAAI,CAAC,QAAD,EAAW2qB,QAAQ,CAAC1iG,GAApB,CAAJ;AACD;AACF,KALD,MAKO,IAAI,CAAC,CAACluB,MAAM,CAACkpG,WAAR,IAAuBlpG,MAAM,CAACooC,MAAP,CAAcjoC,IAAtC,KAA+C,CAACH,MAAM,CAACs/F,SAA3D,EAAsE;AAC3Et/F,MAAAA,MAAM,CAACs4G,SAAP;AACArS,MAAAA,IAAI,CAAC,QAAD,EAAW2qB,QAAQ,CAAC1iG,GAApB,CAAJ;AACD,KAvC8B,CAuC7B;;;AAGFohG,IAAAA,cAAc,GAAG,IAAIjyH,MAAM,CAACijB,IAAX,GAAkB2+E,OAAlB,EAAjB,CA1C+B,CA0Ce;;AAE9C,WAAO,KAAP;AACD;;AAED,WAAS4xB,aAAT,CAAuBD,QAAvB,EAAiC;AAC/B,QAAMxoF,MAAM,GAAGpoC,MAAM,CAACooC,MAAP,CAAcz1B,UAA7B;;AAEA,QAAIi+G,QAAQ,CAACv+G,SAAT,GAAqB,CAAzB,EAA4B;AAC1B,UAAIrS,MAAM,CAAC8mG,KAAP,IAAgB,CAAC9mG,MAAM,CAACooC,MAAP,CAAcjoC,IAA/B,IAAuCioC,MAAM,CAACx1B,cAAlD,EAAkE;AAChE;AACA,eAAO,IAAP;AACD;AACF,KALD,MAKO,IAAI5S,MAAM,CAACkpG,WAAP,IAAsB,CAAClpG,MAAM,CAACooC,MAAP,CAAcjoC,IAArC,IAA6CioC,MAAM,CAACx1B,cAAxD,EAAwE;AAC7E;AACA,aAAO,IAAP;AACD;;AAED,WAAO,KAAP;AACD;;AAED,WAASw4G,MAAT,CAAgBh0G,KAAhB,EAAuB;AACrB,QAAI1a,CAAC,GAAG0a,KAAR;AACA,QAAI09F,mBAAmB,GAAG,IAA1B;AACA,QAAI,CAAC90G,MAAM,CAAC1E,OAAZ,EAAqB;AACrB,QAAM8sC,MAAM,GAAGpoC,MAAM,CAACooC,MAAP,CAAcz1B,UAA7B;;AAEA,QAAI3S,MAAM,CAACooC,MAAP,CAAcq/D,OAAlB,EAA2B;AACzB/qG,MAAAA,CAAC,CAAC+B,cAAF;AACD;;AAED,QAAIyQ,MAAM,GAAGlP,MAAM,CAAC8kG,GAApB;;AAEA,QAAI9kG,MAAM,CAACooC,MAAP,CAAcz1B,UAAd,CAAyBw8G,YAAzB,KAA0C,WAA9C,EAA2D;AACzDjgH,MAAAA,MAAM,GAAG,kBAAElP,MAAM,CAACooC,MAAP,CAAcz1B,UAAd,CAAyBw8G,YAA3B,CAAT;AACD;;AAED,QAAI,CAACnvH,MAAM,CAACywH,YAAR,IAAwB,CAACvhH,MAAM,CAAC,CAAD,CAAN,CAAUm+B,QAAV,CAAmB3wC,CAAC,CAACwS,MAArB,CAAzB,IAAyD,CAACk5B,MAAM,CAACx1B,cAArE,EAAqF,OAAO,IAAP;AACrF,QAAIlW,CAAC,CAACw2G,aAAN,EAAqBx2G,CAAC,GAAGA,CAAC,CAACw2G,aAAN,CAjBA,CAiBqB;;AAE1C,QAAI7jE,KAAK,GAAG,CAAZ;AACA,QAAMyhF,SAAS,GAAG9wH,MAAM,CAACwsG,YAAP,GAAsB,CAAC,CAAvB,GAA2B,CAA7C;AACA,QAAMvxG,IAAI,GAAG22E,SAAS,CAACl1E,CAAD,CAAtB;;AAEA,QAAI0rC,MAAM,CAAC6mF,WAAX,EAAwB;AACtB,UAAIjvH,MAAM,CAAC63B,YAAP,EAAJ,EAA2B;AACzB,YAAIj7B,IAAI,CAACs5B,GAAL,CAASj7B,IAAI,CAACq1H,MAAd,IAAwB1zH,IAAI,CAACs5B,GAAL,CAASj7B,IAAI,CAACs1H,MAAd,CAA5B,EAAmDlhF,KAAK,GAAG,CAACp0C,IAAI,CAACq1H,MAAN,GAAeQ,SAAvB,CAAnD,KAAyF,OAAO,IAAP;AAC1F,OAFD,MAEO,IAAIl0H,IAAI,CAACs5B,GAAL,CAASj7B,IAAI,CAACs1H,MAAd,IAAwB3zH,IAAI,CAACs5B,GAAL,CAASj7B,IAAI,CAACq1H,MAAd,CAA5B,EAAmDjhF,KAAK,GAAG,CAACp0C,IAAI,CAACs1H,MAAd,CAAnD,KAA6E,OAAO,IAAP;AACrF,KAJD,MAIO;AACLlhF,MAAAA,KAAK,GAAGzyC,IAAI,CAACs5B,GAAL,CAASj7B,IAAI,CAACq1H,MAAd,IAAwB1zH,IAAI,CAACs5B,GAAL,CAASj7B,IAAI,CAACs1H,MAAd,CAAxB,GAAgD,CAACt1H,IAAI,CAACq1H,MAAN,GAAeQ,SAA/D,GAA2E,CAAC71H,IAAI,CAACs1H,MAAzF;AACD;;AAED,QAAIlhF,KAAK,KAAK,CAAd,EAAiB,OAAO,IAAP;AACjB,QAAIjH,MAAM,CAAC4mF,MAAX,EAAmB3/E,KAAK,GAAG,CAACA,KAAT,CAhCE,CAgCc;;AAEnC,QAAIjF,SAAS,GAAGpqC,MAAM,CAAC40G,YAAP,KAAwBvlE,KAAK,GAAGjH,MAAM,CAAC8mF,WAAvD;AACA,QAAI9kF,SAAS,IAAIpqC,MAAM,CAACirG,YAAP,EAAjB,EAAwC7gE,SAAS,GAAGpqC,MAAM,CAACirG,YAAP,EAAZ;AACxC,QAAI7gE,SAAS,IAAIpqC,MAAM,CAACkrG,YAAP,EAAjB,EAAwC9gE,SAAS,GAAGpqC,MAAM,CAACkrG,YAAP,EAAZ,CApCnB,CAoCsD;AAC3E;AACA;AACA;AACA;AACA;AACA;;AAEA4J,IAAAA,mBAAmB,GAAG90G,MAAM,CAACooC,MAAP,CAAcjoC,IAAd,GAAqB,IAArB,GAA4B,EAAEiqC,SAAS,KAAKpqC,MAAM,CAACirG,YAAP,EAAd,IAAuC7gE,SAAS,KAAKpqC,MAAM,CAACkrG,YAAP,EAAvD,CAAlD;AACA,QAAI4J,mBAAmB,IAAI90G,MAAM,CAACooC,MAAP,CAAcymE,MAAzC,EAAiDnyG,CAAC,CAACm2G,eAAF;;AAEjD,QAAI,CAAC7yG,MAAM,CAACooC,MAAP,CAAck/D,QAAf,IAA2B,CAACtnG,MAAM,CAACooC,MAAP,CAAck/D,QAAd,CAAuBhsG,OAAvD,EAAgE;AAC9D;AACA,UAAMs1H,QAAQ,GAAG;AACf/qH,QAAAA,IAAI,EAAE,iBADS;AAEfwpC,QAAAA,KAAK,EAAEzyC,IAAI,CAACs5B,GAAL,CAASmZ,KAAT,CAFQ;AAGfh9B,QAAAA,SAAS,EAAEzV,IAAI,CAACs5E,IAAL,CAAU7mC,KAAV,CAHI;AAIfnhB,QAAAA,GAAG,EAAE9W;AAJU,OAAjB,CAF8D,CAO3D;;AAEH,UAAIo4G,iBAAiB,CAAC31H,MAAlB,IAA4B,CAAhC,EAAmC;AACjC21H,QAAAA,iBAAiB,CAAC1hG,KAAlB,GADiC,CACN;AAC5B;;AAED,UAAMijG,SAAS,GAAGvB,iBAAiB,CAAC31H,MAAlB,GAA2B21H,iBAAiB,CAACA,iBAAiB,CAAC31H,MAAlB,GAA2B,CAA5B,CAA5C,GAA6ED,SAA/F;AACA41H,MAAAA,iBAAiB,CAACpzH,IAAlB,CAAuBw0H,QAAvB,EAd8D,CAc5B;AAClC;AACA;AACA;AACA;AACA;;AAEA,UAAIG,SAAJ,EAAe;AACb,YAAIH,QAAQ,CAACv+G,SAAT,KAAuB0+G,SAAS,CAAC1+G,SAAjC,IAA8Cu+G,QAAQ,CAACvhF,KAAT,GAAiB0hF,SAAS,CAAC1hF,KAAzE,IAAkFuhF,QAAQ,CAAC/qH,IAAT,GAAgBkrH,SAAS,CAAClrH,IAAV,GAAiB,GAAvH,EAA4H;AAC1H8qH,UAAAA,aAAa,CAACC,QAAD,CAAb;AACD;AACF,OAJD,MAIO;AACLD,QAAAA,aAAa,CAACC,QAAD,CAAb;AACD,OA3B6D,CA2B5D;AACF;;;AAGA,UAAIC,aAAa,CAACD,QAAD,CAAjB,EAA6B;AAC3B,eAAO,IAAP;AACD;AACF,KAlCD,MAkCO;AACL;AACA;AACA;AACA;AACA;AACA,UAAMA,SAAQ,GAAG;AACf/qH,QAAAA,IAAI,EAAE,iBADS;AAEfwpC,QAAAA,KAAK,EAAEzyC,IAAI,CAACs5B,GAAL,CAASmZ,KAAT,CAFQ;AAGfh9B,QAAAA,SAAS,EAAEzV,IAAI,CAACs5E,IAAL,CAAU7mC,KAAV;AAHI,OAAjB;AAKA,UAAM2hF,iBAAiB,GAAGzB,mBAAmB,IAAIqB,SAAQ,CAAC/qH,IAAT,GAAgB0pH,mBAAmB,CAAC1pH,IAApB,GAA2B,GAAlE,IAAyE+qH,SAAQ,CAACvhF,KAAT,IAAkBkgF,mBAAmB,CAAClgF,KAA/G,IAAwHuhF,SAAQ,CAACv+G,SAAT,KAAuBk9G,mBAAmB,CAACl9G,SAA7L;;AAEA,UAAI,CAAC2+G,iBAAL,EAAwB;AACtBzB,QAAAA,mBAAmB,GAAG31H,SAAtB;;AAEA,YAAIoG,MAAM,CAACooC,MAAP,CAAcjoC,IAAlB,EAAwB;AACtBH,UAAAA,MAAM,CAAC20G,OAAP;AACD;;AAED,YAAIn6G,QAAQ,GAAGwF,MAAM,CAAC40G,YAAP,KAAwBvlE,KAAK,GAAGjH,MAAM,CAAC8mF,WAAtD;AACA,YAAM5T,YAAY,GAAGt7G,MAAM,CAACkpG,WAA5B;AACA,YAAMqS,MAAM,GAAGv7G,MAAM,CAAC8mG,KAAtB;AACA,YAAItsG,QAAQ,IAAIwF,MAAM,CAACirG,YAAP,EAAhB,EAAuCzwG,QAAQ,GAAGwF,MAAM,CAACirG,YAAP,EAAX;AACvC,YAAIzwG,QAAQ,IAAIwF,MAAM,CAACkrG,YAAP,EAAhB,EAAuC1wG,QAAQ,GAAGwF,MAAM,CAACkrG,YAAP,EAAX;AACvClrG,QAAAA,MAAM,CAAC60G,aAAP,CAAqB,CAArB;AACA70G,QAAAA,MAAM,CAACssG,YAAP,CAAoB9xG,QAApB;AACAwF,QAAAA,MAAM,CAACqsG,cAAP;AACArsG,QAAAA,MAAM,CAACorG,iBAAP;AACAprG,QAAAA,MAAM,CAACqrG,mBAAP;;AAEA,YAAI,CAACiQ,YAAD,IAAiBt7G,MAAM,CAACkpG,WAAxB,IAAuC,CAACqS,MAAD,IAAWv7G,MAAM,CAAC8mG,KAA7D,EAAoE;AAClE9mG,UAAAA,MAAM,CAACqrG,mBAAP;AACD;;AAED,YAAIrrG,MAAM,CAACooC,MAAP,CAAck/D,QAAd,CAAuBshB,MAA3B,EAAmC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA9kG,UAAAA,YAAY,CAACP,OAAD,CAAZ;AACAA,UAAAA,OAAO,GAAG3pB,SAAV;;AAEA,cAAI41H,iBAAiB,CAAC31H,MAAlB,IAA4B,EAAhC,EAAoC;AAClC21H,YAAAA,iBAAiB,CAAC1hG,KAAlB,GADkC,CACP;AAC5B;;AAED,cAAMijG,UAAS,GAAGvB,iBAAiB,CAAC31H,MAAlB,GAA2B21H,iBAAiB,CAACA,iBAAiB,CAAC31H,MAAlB,GAA2B,CAA5B,CAA5C,GAA6ED,SAA/F;;AACA,cAAMq3H,UAAU,GAAGzB,iBAAiB,CAAC,CAAD,CAApC;AACAA,UAAAA,iBAAiB,CAACpzH,IAAlB,CAAuBw0H,SAAvB;;AAEA,cAAIG,UAAS,KAAKH,SAAQ,CAACvhF,KAAT,GAAiB0hF,UAAS,CAAC1hF,KAA3B,IAAoCuhF,SAAQ,CAACv+G,SAAT,KAAuB0+G,UAAS,CAAC1+G,SAA1E,CAAb,EAAmG;AACjG;AACAm9G,YAAAA,iBAAiB,CAACtsG,MAAlB,CAAyB,CAAzB;AACD,WAHD,MAGO,IAAIssG,iBAAiB,CAAC31H,MAAlB,IAA4B,EAA5B,IAAkC+2H,SAAQ,CAAC/qH,IAAT,GAAgBorH,UAAU,CAACprH,IAA3B,GAAkC,GAApE,IAA2EorH,UAAU,CAAC5hF,KAAX,GAAmBuhF,SAAQ,CAACvhF,KAA5B,IAAqC,CAAhH,IAAqHuhF,SAAQ,CAACvhF,KAAT,IAAkB,CAA3I,EAA8I;AACnJ;AACA;AACA;AACA;AACA;AACA;AACA,gBAAM6hF,eAAe,GAAG7hF,KAAK,GAAG,CAAR,GAAY,GAAZ,GAAkB,GAA1C;AACAkgF,YAAAA,mBAAmB,GAAGqB,SAAtB;AACApB,YAAAA,iBAAiB,CAACtsG,MAAlB,CAAyB,CAAzB;AACAK,YAAAA,OAAO,GAAG,qBAAS,YAAM;AACvBvjB,cAAAA,MAAM,CAACw4G,cAAP,CAAsBx4G,MAAM,CAACooC,MAAP,CAAchoC,KAApC,EAA2C,IAA3C,EAAiDxG,SAAjD,EAA4Ds3H,eAA5D;AACD,aAFS,EAEP,CAFO,CAAV,CAVmJ,CAY5I;AACR;;AAED,cAAI,CAAC3tG,OAAL,EAAc;AACZ;AACA;AACA;AACAA,YAAAA,OAAO,GAAG,qBAAS,YAAM;AACvB,kBAAM2tG,eAAe,GAAG,GAAxB;AACA3B,cAAAA,mBAAmB,GAAGqB,SAAtB;AACApB,cAAAA,iBAAiB,CAACtsG,MAAlB,CAAyB,CAAzB;AACAljB,cAAAA,MAAM,CAACw4G,cAAP,CAAsBx4G,MAAM,CAACooC,MAAP,CAAchoC,KAApC,EAA2C,IAA3C,EAAiDxG,SAAjD,EAA4Ds3H,eAA5D;AACD,aALS,EAKP,GALO,CAAV;AAMD;AACF,SA1EqB,CA0EpB;;;AAGF,YAAI,CAACF,iBAAL,EAAwB/qB,IAAI,CAAC,QAAD,EAAWvpG,CAAX,CAAJ,CA7EF,CA6EqB;;AAE3C,YAAIsD,MAAM,CAACooC,MAAP,CAAcnoC,QAAd,IAA0BD,MAAM,CAACooC,MAAP,CAAc+oF,4BAA5C,EAA0EnxH,MAAM,CAACC,QAAP,CAAgB8D,IAAhB,GA/EpD,CA+E4E;;AAElG,YAAIvJ,QAAQ,KAAKwF,MAAM,CAACirG,YAAP,EAAb,IAAsCzwG,QAAQ,KAAKwF,MAAM,CAACkrG,YAAP,EAAvD,EAA8E,OAAO,IAAP;AAC/E;AACF;;AAED,QAAIxuG,CAAC,CAAC+B,cAAN,EAAsB/B,CAAC,CAAC+B,cAAF,GAAtB,KAA8C/B,CAAC,CAAC4vH,WAAF,GAAgB,KAAhB;AAC9C,WAAO,KAAP;AACD;;AAED,WAAStiE,MAAT,CAAgBphC,MAAhB,EAAwB;AACtB,QAAI1Z,MAAM,GAAGlP,MAAM,CAAC8kG,GAApB;;AAEA,QAAI9kG,MAAM,CAACooC,MAAP,CAAcz1B,UAAd,CAAyBw8G,YAAzB,KAA0C,WAA9C,EAA2D;AACzDjgH,MAAAA,MAAM,GAAG,kBAAElP,MAAM,CAACooC,MAAP,CAAcz1B,UAAd,CAAyBw8G,YAA3B,CAAT;AACD;;AAEDjgH,IAAAA,MAAM,CAAC0Z,MAAD,CAAN,CAAe,YAAf,EAA6B4nG,gBAA7B;AACAthH,IAAAA,MAAM,CAAC0Z,MAAD,CAAN,CAAe,YAAf,EAA6B8nG,gBAA7B;AACAxhH,IAAAA,MAAM,CAAC0Z,MAAD,CAAN,CAAe,OAAf,EAAwBwiG,MAAxB;AACD;;AAED,WAASx3G,MAAT,GAAkB;AAChB,QAAI5T,MAAM,CAACooC,MAAP,CAAcq/D,OAAlB,EAA2B;AACzBznG,MAAAA,MAAM,CAACstG,SAAP,CAAiB3hG,mBAAjB,CAAqC,OAArC,EAA8Cy/G,MAA9C;AACA,aAAO,IAAP;AACD;;AAED,QAAIprH,MAAM,CAAC2S,UAAP,CAAkBrX,OAAtB,EAA+B,OAAO,KAAP;AAC/B0uD,IAAAA,MAAM,CAAC,IAAD,CAAN;AACAhqD,IAAAA,MAAM,CAAC2S,UAAP,CAAkBrX,OAAlB,GAA4B,IAA5B;AACA,WAAO,IAAP;AACD;;AAED,WAASqY,OAAT,GAAmB;AACjB,QAAI3T,MAAM,CAACooC,MAAP,CAAcq/D,OAAlB,EAA2B;AACzBznG,MAAAA,MAAM,CAACstG,SAAP,CAAiBhwG,gBAAjB,CAAkC8Z,KAAlC,EAAyCg0G,MAAzC;AACA,aAAO,IAAP;AACD;;AAED,QAAI,CAACprH,MAAM,CAAC2S,UAAP,CAAkBrX,OAAvB,EAAgC,OAAO,KAAP;AAChC0uD,IAAAA,MAAM,CAAC,KAAD,CAAN;AACAhqD,IAAAA,MAAM,CAAC2S,UAAP,CAAkBrX,OAAlB,GAA4B,KAA5B;AACA,WAAO,IAAP;AACD;;AAEDyH,EAAAA,EAAE,CAAC,MAAD,EAAS,YAAM;AACf,QAAI,CAAC/C,MAAM,CAACooC,MAAP,CAAcz1B,UAAd,CAAyBrX,OAA1B,IAAqC0E,MAAM,CAACooC,MAAP,CAAcq/D,OAAvD,EAAgE;AAC9D9zF,MAAAA,OAAO;AACR;;AAED,QAAI3T,MAAM,CAACooC,MAAP,CAAcz1B,UAAd,CAAyBrX,OAA7B,EAAsCsY,MAAM;AAC7C,GANC,CAAF;AAOA7Q,EAAAA,EAAE,CAAC,SAAD,EAAY,YAAM;AAClB,QAAI/C,MAAM,CAACooC,MAAP,CAAcq/D,OAAlB,EAA2B;AACzB7zF,MAAAA,MAAM;AACP;;AAED,QAAI5T,MAAM,CAAC2S,UAAP,CAAkBrX,OAAtB,EAA+BqY,OAAO;AACvC,GANC,CAAF;;AAOA,WAAc3T,MAAM,CAAC2S,UAArB,EAAiC;AAC/BiB,IAAAA,MAAM,EAANA,MAD+B;AAE/BD,IAAAA,OAAO,EAAPA;AAF+B,GAAjC;AAID;;;;;;;;;;;;;;ACtaD;;AACA;;;;;;AACe,SAASy9G,UAAT,CAAoBla,IAApB,EAA0B;AACvC,MACEl3G,MADF,GAKIk3G,IALJ,CACEl3G,MADF;AAAA,MAEE4oG,YAFF,GAKIsO,IALJ,CAEEtO,YAFF;AAAA,MAGE7lG,EAHF,GAKIm0G,IALJ,CAGEn0G,EAHF;AAAA,MAIEkjG,IAJF,GAKIiR,IALJ,CAIEjR,IAJF;AAMA2C,EAAAA,YAAY,CAAC;AACXoL,IAAAA,UAAU,EAAE;AACVC,MAAAA,MAAM,EAAE,IADE;AAEVC,MAAAA,MAAM,EAAE,IAFE;AAGVmd,MAAAA,WAAW,EAAE,KAHH;AAIVC,MAAAA,aAAa,EAAE,wBAJL;AAKVC,MAAAA,WAAW,EAAE,sBALH;AAMVC,MAAAA,SAAS,EAAE;AAND;AADD,GAAD,CAAZ;AAUAxxH,EAAAA,MAAM,CAACg0G,UAAP,GAAoB;AAClBC,IAAAA,MAAM,EAAE,IADU;AAElB4M,IAAAA,OAAO,EAAE,IAFS;AAGlB3M,IAAAA,MAAM,EAAE,IAHU;AAIlB4M,IAAAA,OAAO,EAAE;AAJS,GAApB;;AAOA,WAAS2Q,KAAT,CAAevsF,EAAf,EAAmB;AACjB,QAAI4/D,GAAJ;;AAEA,QAAI5/D,EAAJ,EAAQ;AACN4/D,MAAAA,GAAG,GAAG,kBAAE5/D,EAAF,CAAN;;AAEA,UAAIllC,MAAM,CAACooC,MAAP,CAAcmoE,iBAAd,IAAmC,OAAOrrE,EAAP,KAAc,QAAjD,IAA6D4/D,GAAG,CAACjrG,MAAJ,GAAa,CAA1E,IAA+EmG,MAAM,CAAC8kG,GAAP,CAAW7G,IAAX,CAAgB/4D,EAAhB,EAAoBrrC,MAApB,KAA+B,CAAlH,EAAqH;AACnHirG,QAAAA,GAAG,GAAG9kG,MAAM,CAAC8kG,GAAP,CAAW7G,IAAX,CAAgB/4D,EAAhB,CAAN;AACD;AACF;;AAED,WAAO4/D,GAAP;AACD;;AAED,WAAS4sB,QAAT,CAAkB5sB,GAAlB,EAAuB95E,QAAvB,EAAiC;AAC/B,QAAMod,MAAM,GAAGpoC,MAAM,CAACooC,MAAP,CAAc4rE,UAA7B;;AAEA,QAAIlP,GAAG,IAAIA,GAAG,CAACjrG,MAAJ,GAAa,CAAxB,EAA2B;AACzBirG,MAAAA,GAAG,CAAC95E,QAAQ,GAAG,UAAH,GAAgB,aAAzB,CAAH,CAA2Cod,MAAM,CAACkpF,aAAlD;AACA,UAAIxsB,GAAG,CAAC,CAAD,CAAH,IAAUA,GAAG,CAAC,CAAD,CAAH,CAAOvtF,OAAP,KAAmB,QAAjC,EAA2CutF,GAAG,CAAC,CAAD,CAAH,CAAO95E,QAAP,GAAkBA,QAAlB;;AAE3C,UAAIhrB,MAAM,CAACooC,MAAP,CAAcwkE,aAAd,IAA+B5sG,MAAM,CAAC1E,OAA1C,EAAmD;AACjDwpG,QAAAA,GAAG,CAAC9kG,MAAM,CAACumG,QAAP,GAAkB,UAAlB,GAA+B,aAAhC,CAAH,CAAkDn+D,MAAM,CAACopF,SAAzD;AACD;AACF;AACF;;AAED,WAASx8G,MAAT,GAAkB;AAChB;AACA,QAAIhV,MAAM,CAACooC,MAAP,CAAcjoC,IAAlB,EAAwB;AACxB,6BAGIH,MAAM,CAACg0G,UAHX;AAAA,QACE6M,OADF,sBACEA,OADF;AAAA,QAEEC,OAFF,sBAEEA,OAFF;AAIA4Q,IAAAA,QAAQ,CAAC5Q,OAAD,EAAU9gH,MAAM,CAACkpG,WAAP,IAAsB,CAAClpG,MAAM,CAACooC,MAAP,CAAc8oE,MAA/C,CAAR;AACAwgB,IAAAA,QAAQ,CAAC7Q,OAAD,EAAU7gH,MAAM,CAAC8mG,KAAP,IAAgB,CAAC9mG,MAAM,CAACooC,MAAP,CAAc8oE,MAAzC,CAAR;AACD;;AAED,WAASygB,WAAT,CAAqBj1H,CAArB,EAAwB;AACtBA,IAAAA,CAAC,CAAC+B,cAAF;AACA,QAAIuB,MAAM,CAACkpG,WAAP,IAAsB,CAAClpG,MAAM,CAACooC,MAAP,CAAcjoC,IAArC,IAA6C,CAACH,MAAM,CAACooC,MAAP,CAAc8oE,MAAhE,EAAwE;AACxElxG,IAAAA,MAAM,CAACs4G,SAAP;AACD;;AAED,WAASsZ,WAAT,CAAqBl1H,CAArB,EAAwB;AACtBA,IAAAA,CAAC,CAAC+B,cAAF;AACA,QAAIuB,MAAM,CAAC8mG,KAAP,IAAgB,CAAC9mG,MAAM,CAACooC,MAAP,CAAcjoC,IAA/B,IAAuC,CAACH,MAAM,CAACooC,MAAP,CAAc8oE,MAA1D,EAAkE;AAClElxG,IAAAA,MAAM,CAACq4G,SAAP;AACD;;AAED,WAASx2G,IAAT,GAAgB;AACd,QAAMumC,MAAM,GAAGpoC,MAAM,CAACooC,MAAP,CAAc4rE,UAA7B;AACAh0G,IAAAA,MAAM,CAACooC,MAAP,CAAc4rE,UAAd,GAA2B,wCAA0Bh0G,MAA1B,EAAkCA,MAAM,CAACmlG,cAAP,CAAsB6O,UAAxD,EAAoEh0G,MAAM,CAACooC,MAAP,CAAc4rE,UAAlF,EAA8F;AACvHC,MAAAA,MAAM,EAAE,oBAD+G;AAEvHC,MAAAA,MAAM,EAAE;AAF+G,KAA9F,CAA3B;AAIA,QAAI,EAAE9rE,MAAM,CAAC6rE,MAAP,IAAiB7rE,MAAM,CAAC8rE,MAA1B,CAAJ,EAAuC;AACvC,QAAM2M,OAAO,GAAG4Q,KAAK,CAACrpF,MAAM,CAAC6rE,MAAR,CAArB;AACA,QAAM6M,OAAO,GAAG2Q,KAAK,CAACrpF,MAAM,CAAC8rE,MAAR,CAArB;;AAEA,QAAI2M,OAAO,IAAIA,OAAO,CAAChnH,MAAR,GAAiB,CAAhC,EAAmC;AACjCgnH,MAAAA,OAAO,CAAC99G,EAAR,CAAW,OAAX,EAAoB6uH,WAApB;AACD;;AAED,QAAI9Q,OAAO,IAAIA,OAAO,CAACjnH,MAAR,GAAiB,CAAhC,EAAmC;AACjCinH,MAAAA,OAAO,CAAC/9G,EAAR,CAAW,OAAX,EAAoB4uH,WAApB;AACD;;AAED,aAAc3xH,MAAM,CAACg0G,UAArB,EAAiC;AAC/B6M,MAAAA,OAAO,EAAPA,OAD+B;AAE/B5M,MAAAA,MAAM,EAAE4M,OAAO,IAAIA,OAAO,CAAC,CAAD,CAFK;AAG/BC,MAAAA,OAAO,EAAPA,OAH+B;AAI/B5M,MAAAA,MAAM,EAAE4M,OAAO,IAAIA,OAAO,CAAC,CAAD;AAJK,KAAjC;;AAOA,QAAI,CAAC9gH,MAAM,CAAC1E,OAAZ,EAAqB;AACnB,UAAIulH,OAAJ,EAAaA,OAAO,CAAChgG,QAAR,CAAiBunB,MAAM,CAACopF,SAAxB;AACb,UAAI1Q,OAAJ,EAAaA,OAAO,CAACjgG,QAAR,CAAiBunB,MAAM,CAACopF,SAAxB;AACd;AACF;;AAED,WAASlvH,OAAT,GAAmB;AACjB,8BAGItC,MAAM,CAACg0G,UAHX;AAAA,QACE6M,OADF,uBACEA,OADF;AAAA,QAEEC,OAFF,uBAEEA,OAFF;;AAKA,QAAID,OAAO,IAAIA,OAAO,CAAChnH,MAAvB,EAA+B;AAC7BgnH,MAAAA,OAAO,CAAC/kB,GAAR,CAAY,OAAZ,EAAqB81B,WAArB;AACA/Q,MAAAA,OAAO,CAAC7+F,WAAR,CAAoBhiB,MAAM,CAACooC,MAAP,CAAc4rE,UAAd,CAAyBsd,aAA7C;AACD;;AAED,QAAIxQ,OAAO,IAAIA,OAAO,CAACjnH,MAAvB,EAA+B;AAC7BinH,MAAAA,OAAO,CAAChlB,GAAR,CAAY,OAAZ,EAAqB61B,WAArB;AACA7Q,MAAAA,OAAO,CAAC9+F,WAAR,CAAoBhiB,MAAM,CAACooC,MAAP,CAAc4rE,UAAd,CAAyBsd,aAA7C;AACD;AACF;;AAEDvuH,EAAAA,EAAE,CAAC,MAAD,EAAS,YAAM;AACflB,IAAAA,IAAI;AACJmT,IAAAA,MAAM;AACP,GAHC,CAAF;AAIAjS,EAAAA,EAAE,CAAC,6BAAD,EAAgC,YAAM;AACtCiS,IAAAA,MAAM;AACP,GAFC,CAAF;AAGAjS,EAAAA,EAAE,CAAC,SAAD,EAAY,YAAM;AAClBT,IAAAA,OAAO;AACR,GAFC,CAAF;AAGAS,EAAAA,EAAE,CAAC,gBAAD,EAAmB,YAAM;AACzB,8BAGI/C,MAAM,CAACg0G,UAHX;AAAA,QACE6M,OADF,uBACEA,OADF;AAAA,QAEEC,OAFF,uBAEEA,OAFF;;AAKA,QAAID,OAAJ,EAAa;AACXA,MAAAA,OAAO,CAAC7gH,MAAM,CAAC1E,OAAP,GAAiB,aAAjB,GAAiC,UAAlC,CAAP,CAAqD0E,MAAM,CAACooC,MAAP,CAAc4rE,UAAd,CAAyBwd,SAA9E;AACD;;AAED,QAAI1Q,OAAJ,EAAa;AACXA,MAAAA,OAAO,CAAC9gH,MAAM,CAAC1E,OAAP,GAAiB,aAAjB,GAAiC,UAAlC,CAAP,CAAqD0E,MAAM,CAACooC,MAAP,CAAc4rE,UAAd,CAAyBwd,SAA9E;AACD;AACF,GAbC,CAAF;AAcAzuH,EAAAA,EAAE,CAAC,OAAD,EAAU,UAACigH,EAAD,EAAKtmH,CAAL,EAAW;AACrB,8BAGIsD,MAAM,CAACg0G,UAHX;AAAA,QACE6M,OADF,uBACEA,OADF;AAAA,QAEEC,OAFF,uBAEEA,OAFF;AAIA,QAAM+Q,QAAQ,GAAGn1H,CAAC,CAACwS,MAAnB;;AAEA,QAAIlP,MAAM,CAACooC,MAAP,CAAc4rE,UAAd,CAAyBqd,WAAzB,IAAwC,CAAC,kBAAEQ,QAAF,EAAYp2B,EAAZ,CAAeqlB,OAAf,CAAzC,IAAoE,CAAC,kBAAE+Q,QAAF,EAAYp2B,EAAZ,CAAeolB,OAAf,CAAzE,EAAkG;AAChG,UAAI7gH,MAAM,CAAC+gH,UAAP,IAAqB/gH,MAAM,CAACooC,MAAP,CAAc24E,UAAnC,IAAiD/gH,MAAM,CAACooC,MAAP,CAAc24E,UAAd,CAAyBM,SAA1E,KAAwFrhH,MAAM,CAAC+gH,UAAP,CAAkB77E,EAAlB,KAAyB2sF,QAAzB,IAAqC7xH,MAAM,CAAC+gH,UAAP,CAAkB77E,EAAlB,CAAqBmI,QAArB,CAA8BwkF,QAA9B,CAA7H,CAAJ,EAA2K;AAC3K,UAAIC,QAAJ;;AAEA,UAAIjR,OAAJ,EAAa;AACXiR,QAAAA,QAAQ,GAAGjR,OAAO,CAACj/F,QAAR,CAAiB5hB,MAAM,CAACooC,MAAP,CAAc4rE,UAAd,CAAyBud,WAA1C,CAAX;AACD,OAFD,MAEO,IAAIzQ,OAAJ,EAAa;AAClBgR,QAAAA,QAAQ,GAAGhR,OAAO,CAACl/F,QAAR,CAAiB5hB,MAAM,CAACooC,MAAP,CAAc4rE,UAAd,CAAyBud,WAA1C,CAAX;AACD;;AAED,UAAIO,QAAQ,KAAK,IAAjB,EAAuB;AACrB7rB,QAAAA,IAAI,CAAC,gBAAD,CAAJ;AACD,OAFD,MAEO;AACLA,QAAAA,IAAI,CAAC,gBAAD,CAAJ;AACD;;AAED,UAAI4a,OAAJ,EAAa;AACXA,QAAAA,OAAO,CAACx+F,WAAR,CAAoBriB,MAAM,CAACooC,MAAP,CAAc4rE,UAAd,CAAyBud,WAA7C;AACD;;AAED,UAAIzQ,OAAJ,EAAa;AACXA,QAAAA,OAAO,CAACz+F,WAAR,CAAoBriB,MAAM,CAACooC,MAAP,CAAc4rE,UAAd,CAAyBud,WAA7C;AACD;AACF;AACF,GA/BC,CAAF;;AAgCA,WAAcvxH,MAAM,CAACg0G,UAArB,EAAiC;AAC/Bh/F,IAAAA,MAAM,EAANA,MAD+B;AAE/BnT,IAAAA,IAAI,EAAJA,IAF+B;AAG/BS,IAAAA,OAAO,EAAPA;AAH+B,GAAjC;AAKD;;;;;;;;;;;;;;ACzLD;;AACA;;AACA;;;;;;AACe,SAASyvH,UAAT,CAAoB7a,IAApB,EAA0B;AACvC,MACEl3G,MADF,GAKIk3G,IALJ,CACEl3G,MADF;AAAA,MAEE4oG,YAFF,GAKIsO,IALJ,CAEEtO,YAFF;AAAA,MAGE7lG,EAHF,GAKIm0G,IALJ,CAGEn0G,EAHF;AAAA,MAIEkjG,IAJF,GAKIiR,IALJ,CAIEjR,IAJF;AAMA,MAAM+rB,GAAG,GAAG,mBAAZ;AACAppB,EAAAA,YAAY,CAAC;AACXmY,IAAAA,UAAU,EAAE;AACV77E,MAAAA,EAAE,EAAE,IADM;AAEV+sF,MAAAA,aAAa,EAAE,MAFL;AAGV5Q,MAAAA,SAAS,EAAE,KAHD;AAIVgQ,MAAAA,WAAW,EAAE,KAJH;AAKV5P,MAAAA,YAAY,EAAE,IALJ;AAMVyQ,MAAAA,iBAAiB,EAAE,IANT;AAOVC,MAAAA,cAAc,EAAE,IAPN;AAQVC,MAAAA,YAAY,EAAE,IARJ;AASVC,MAAAA,mBAAmB,EAAE,KATX;AAUVh5H,MAAAA,IAAI,EAAE,SAVI;AAWV;AACAi5H,MAAAA,cAAc,EAAE,KAZN;AAaVC,MAAAA,kBAAkB,EAAE,CAbV;AAcVC,MAAAA,qBAAqB,EAAE,+BAAAhrG,MAAM;AAAA,eAAIA,MAAJ;AAAA,OAdnB;AAeVirG,MAAAA,mBAAmB,EAAE,6BAAAjrG,MAAM;AAAA,eAAIA,MAAJ;AAAA,OAfjB;AAgBVw5F,MAAAA,WAAW,YAAKgR,GAAL,YAhBD;AAiBVtQ,MAAAA,iBAAiB,YAAKsQ,GAAL,mBAjBP;AAkBVU,MAAAA,aAAa,YAAKV,GAAL,MAlBH;AAmBVW,MAAAA,YAAY,YAAKX,GAAL,aAnBF;AAoBVY,MAAAA,UAAU,YAAKZ,GAAL,WApBA;AAqBVT,MAAAA,WAAW,YAAKS,GAAL,YArBD;AAsBVa,MAAAA,oBAAoB,YAAKb,GAAL,sBAtBV;AAuBVc,MAAAA,wBAAwB,YAAKd,GAAL,0BAvBd;AAwBVe,MAAAA,cAAc,YAAKf,GAAL,eAxBJ;AAyBVR,MAAAA,SAAS,YAAKQ,GAAL,UAzBC;AA0BVgB,MAAAA,eAAe,YAAKhB,GAAL,gBA1BL;AA2BViB,MAAAA,aAAa,YAAKjB,GAAL;AA3BH;AADD,GAAD,CAAZ;AA+BAhyH,EAAAA,MAAM,CAAC+gH,UAAP,GAAoB;AAClB77E,IAAAA,EAAE,EAAE,IADc;AAElB4/D,IAAAA,GAAG,EAAE,IAFa;AAGlBqc,IAAAA,OAAO,EAAE;AAHS,GAApB;AAKA,MAAI+R,UAAJ;AACA,MAAIC,kBAAkB,GAAG,CAAzB;;AAEA,WAASC,oBAAT,GAAgC;AAC9B,WAAO,CAACpzH,MAAM,CAACooC,MAAP,CAAc24E,UAAd,CAAyB77E,EAA1B,IAAgC,CAACllC,MAAM,CAAC+gH,UAAP,CAAkB77E,EAAnD,IAAyD,CAACllC,MAAM,CAAC+gH,UAAP,CAAkBjc,GAA5E,IAAmF9kG,MAAM,CAAC+gH,UAAP,CAAkBjc,GAAlB,CAAsBjrG,MAAtB,KAAiC,CAA3H;AACD;;AAED,WAASw5H,cAAT,CAAwB7R,SAAxB,EAAmChnH,QAAnC,EAA6C;AAC3C,QACEknH,iBADF,GAEI1hH,MAAM,CAACooC,MAAP,CAAc24E,UAFlB,CACEW,iBADF;AAGAF,IAAAA,SAAS,CAAChnH,QAAD,CAAT,GAAsBqmB,QAAtB,WAAkC6gG,iBAAlC,cAAuDlnH,QAAvD,GAAmEA,QAAnE,IAA+EqmB,QAA/E,WAA2F6gG,iBAA3F,cAAgHlnH,QAAhH,cAA4HA,QAA5H;AACD;;AAED,WAASwa,MAAT,GAAkB;AAChB;AACA,QAAMwnD,GAAG,GAAGx8D,MAAM,CAACw8D,GAAnB;AACA,QAAMp0B,MAAM,GAAGpoC,MAAM,CAACooC,MAAP,CAAc24E,UAA7B;AACA,QAAIqS,oBAAoB,EAAxB,EAA4B;AAC5B,QAAMzX,YAAY,GAAG37G,MAAM,CAAC8zG,OAAP,IAAkB9zG,MAAM,CAACooC,MAAP,CAAc0rE,OAAd,CAAsBx4G,OAAxC,GAAkD0E,MAAM,CAAC8zG,OAAP,CAAe7gG,MAAf,CAAsBpZ,MAAxE,GAAiFmG,MAAM,CAACiT,MAAP,CAAcpZ,MAApH;AACA,QAAMirG,GAAG,GAAG9kG,MAAM,CAAC+gH,UAAP,CAAkBjc,GAA9B,CANgB,CAMmB;;AAEnC,QAAIh/F,OAAJ;AACA,QAAMs4B,KAAK,GAAGp+B,MAAM,CAACooC,MAAP,CAAcjoC,IAAd,GAAqBvD,IAAI,CAAC+1C,IAAL,CAAU,CAACgpE,YAAY,GAAG37G,MAAM,CAAC6kG,YAAP,GAAsB,CAAtC,IAA2C7kG,MAAM,CAACooC,MAAP,CAAcinE,cAAnE,CAArB,GAA0GrvG,MAAM,CAAC6mG,QAAP,CAAgBhtG,MAAxI;;AAEA,QAAImG,MAAM,CAACooC,MAAP,CAAcjoC,IAAlB,EAAwB;AACtB2F,MAAAA,OAAO,GAAGlJ,IAAI,CAAC+1C,IAAL,CAAU,CAAC3yC,MAAM,CAACkT,WAAP,GAAqBlT,MAAM,CAAC6kG,YAA7B,IAA6C7kG,MAAM,CAACooC,MAAP,CAAcinE,cAArE,CAAV;;AAEA,UAAIvpG,OAAO,GAAG61G,YAAY,GAAG,CAAf,GAAmB37G,MAAM,CAAC6kG,YAAP,GAAsB,CAAvD,EAA0D;AACxD/+F,QAAAA,OAAO,IAAI61G,YAAY,GAAG37G,MAAM,CAAC6kG,YAAP,GAAsB,CAAhD;AACD;;AAED,UAAI/+F,OAAO,GAAGs4B,KAAK,GAAG,CAAtB,EAAyBt4B,OAAO,IAAIs4B,KAAX;AACzB,UAAIt4B,OAAO,GAAG,CAAV,IAAe9F,MAAM,CAACooC,MAAP,CAAckrF,cAAd,KAAiC,SAApD,EAA+DxtH,OAAO,GAAGs4B,KAAK,GAAGt4B,OAAlB;AAChE,KATD,MASO,IAAI,OAAO9F,MAAM,CAACm5G,SAAd,KAA4B,WAAhC,EAA6C;AAClDrzG,MAAAA,OAAO,GAAG9F,MAAM,CAACm5G,SAAjB;AACD,KAFM,MAEA;AACLrzG,MAAAA,OAAO,GAAG9F,MAAM,CAACkT,WAAP,IAAsB,CAAhC;AACD,KAxBe,CAwBd;;;AAGF,QAAIk1B,MAAM,CAAC/uC,IAAP,KAAgB,SAAhB,IAA6B2G,MAAM,CAAC+gH,UAAP,CAAkBI,OAA/C,IAA0DnhH,MAAM,CAAC+gH,UAAP,CAAkBI,OAAlB,CAA0BtnH,MAA1B,GAAmC,CAAjG,EAAoG;AAClG,UAAMsnH,OAAO,GAAGnhH,MAAM,CAAC+gH,UAAP,CAAkBI,OAAlC;AACA,UAAIoS,UAAJ;AACA,UAAIl9D,SAAJ;AACA,UAAIm9D,QAAJ;;AAEA,UAAIprF,MAAM,CAACkqF,cAAX,EAA2B;AACzBY,QAAAA,UAAU,GAAG/R,OAAO,CAAClmC,EAAR,CAAW,CAAX,EAAcj7E,MAAM,CAAC63B,YAAP,KAAwB,YAAxB,GAAuC,aAArD,EAAoE,IAApE,CAAb;AACAitE,QAAAA,GAAG,CAACxI,GAAJ,CAAQt8F,MAAM,CAAC63B,YAAP,KAAwB,OAAxB,GAAkC,QAA1C,YAAuDq7F,UAAU,IAAI9qF,MAAM,CAACmqF,kBAAP,GAA4B,CAAhC,CAAjE;;AAEA,YAAInqF,MAAM,CAACmqF,kBAAP,GAA4B,CAA5B,IAAiCvyH,MAAM,CAACu5G,aAAP,KAAyB3/G,SAA9D,EAAyE;AACvEu5H,UAAAA,kBAAkB,IAAIrtH,OAAO,IAAI9F,MAAM,CAACu5G,aAAP,GAAuBv5G,MAAM,CAAC6kG,YAA9B,IAA8C,CAAlD,CAA7B;;AAEA,cAAIsuB,kBAAkB,GAAG/qF,MAAM,CAACmqF,kBAAP,GAA4B,CAArD,EAAwD;AACtDY,YAAAA,kBAAkB,GAAG/qF,MAAM,CAACmqF,kBAAP,GAA4B,CAAjD;AACD,WAFD,MAEO,IAAIY,kBAAkB,GAAG,CAAzB,EAA4B;AACjCA,YAAAA,kBAAkB,GAAG,CAArB;AACD;AACF;;AAEDI,QAAAA,UAAU,GAAG32H,IAAI,CAAC0H,GAAL,CAASwB,OAAO,GAAGqtH,kBAAnB,EAAuC,CAAvC,CAAb;AACA98D,QAAAA,SAAS,GAAGk9D,UAAU,IAAI32H,IAAI,CAACyH,GAAL,CAAS88G,OAAO,CAACtnH,MAAjB,EAAyBuuC,MAAM,CAACmqF,kBAAhC,IAAsD,CAA1D,CAAtB;AACAiB,QAAAA,QAAQ,GAAG,CAACn9D,SAAS,GAAGk9D,UAAb,IAA2B,CAAtC;AACD;;AAEDpS,MAAAA,OAAO,CAACn/F,WAAR,CAAoB,CAAC,EAAD,EAAK,OAAL,EAAc,YAAd,EAA4B,OAA5B,EAAqC,YAArC,EAAmD,OAAnD,EAA4D7nB,GAA5D,CAAgE,UAAA44F,MAAM;AAAA,yBAAO3qD,MAAM,CAACs5E,iBAAd,SAAkC3uB,MAAlC;AAAA,OAAtE,EAAkH3zC,IAAlH,CAAuH,GAAvH,CAApB;;AAEA,UAAI0lD,GAAG,CAACjrG,MAAJ,GAAa,CAAjB,EAAoB;AAClBsnH,QAAAA,OAAO,CAACjtC,IAAR,CAAa,UAAAu/C,MAAM,EAAI;AACrB,cAAMC,OAAO,GAAG,kBAAED,MAAF,CAAhB;AACA,cAAME,WAAW,GAAGD,OAAO,CAACj4H,KAAR,EAApB;;AAEA,cAAIk4H,WAAW,KAAK7tH,OAApB,EAA6B;AAC3B4tH,YAAAA,OAAO,CAAC7yG,QAAR,CAAiBunB,MAAM,CAACs5E,iBAAxB;AACD;;AAED,cAAIt5E,MAAM,CAACkqF,cAAX,EAA2B;AACzB,gBAAIqB,WAAW,IAAIJ,UAAf,IAA6BI,WAAW,IAAIt9D,SAAhD,EAA2D;AACzDq9D,cAAAA,OAAO,CAAC7yG,QAAR,WAAoBunB,MAAM,CAACs5E,iBAA3B;AACD;;AAED,gBAAIiS,WAAW,KAAKJ,UAApB,EAAgC;AAC9BF,cAAAA,cAAc,CAACK,OAAD,EAAU,MAAV,CAAd;AACD;;AAED,gBAAIC,WAAW,KAAKt9D,SAApB,EAA+B;AAC7Bg9D,cAAAA,cAAc,CAACK,OAAD,EAAU,MAAV,CAAd;AACD;AACF;AACF,SArBD;AAsBD,OAvBD,MAuBO;AACL,YAAMA,OAAO,GAAGvS,OAAO,CAAClmC,EAAR,CAAWn1E,OAAX,CAAhB;AACA,YAAM6tH,WAAW,GAAGD,OAAO,CAACj4H,KAAR,EAApB;AACAi4H,QAAAA,OAAO,CAAC7yG,QAAR,CAAiBunB,MAAM,CAACs5E,iBAAxB;;AAEA,YAAIt5E,MAAM,CAACkqF,cAAX,EAA2B;AACzB,cAAMsB,qBAAqB,GAAGzS,OAAO,CAAClmC,EAAR,CAAWs4C,UAAX,CAA9B;AACA,cAAMM,oBAAoB,GAAG1S,OAAO,CAAClmC,EAAR,CAAW5kB,SAAX,CAA7B;;AAEA,eAAK,IAAIh8D,CAAC,GAAGk5H,UAAb,EAAyBl5H,CAAC,IAAIg8D,SAA9B,EAAyCh8D,CAAC,IAAI,CAA9C,EAAiD;AAC/C8mH,YAAAA,OAAO,CAAClmC,EAAR,CAAW5gF,CAAX,EAAcwmB,QAAd,WAA0BunB,MAAM,CAACs5E,iBAAjC;AACD;;AAED,cAAI1hH,MAAM,CAACooC,MAAP,CAAcjoC,IAAlB,EAAwB;AACtB,gBAAIwzH,WAAW,IAAIxS,OAAO,CAACtnH,MAA3B,EAAmC;AACjC,mBAAK,IAAIQ,EAAC,GAAG+tC,MAAM,CAACmqF,kBAApB,EAAwCl4H,EAAC,IAAI,CAA7C,EAAgDA,EAAC,IAAI,CAArD,EAAwD;AACtD8mH,gBAAAA,OAAO,CAAClmC,EAAR,CAAWkmC,OAAO,CAACtnH,MAAR,GAAiBQ,EAA5B,EAA+BwmB,QAA/B,WAA2CunB,MAAM,CAACs5E,iBAAlD;AACD;;AAEDP,cAAAA,OAAO,CAAClmC,EAAR,CAAWkmC,OAAO,CAACtnH,MAAR,GAAiBuuC,MAAM,CAACmqF,kBAAxB,GAA6C,CAAxD,EAA2D1xG,QAA3D,WAAuEunB,MAAM,CAACs5E,iBAA9E;AACD,aAND,MAMO;AACL2R,cAAAA,cAAc,CAACO,qBAAD,EAAwB,MAAxB,CAAd;AACAP,cAAAA,cAAc,CAACQ,oBAAD,EAAuB,MAAvB,CAAd;AACD;AACF,WAXD,MAWO;AACLR,YAAAA,cAAc,CAACO,qBAAD,EAAwB,MAAxB,CAAd;AACAP,YAAAA,cAAc,CAACQ,oBAAD,EAAuB,MAAvB,CAAd;AACD;AACF;AACF;;AAED,UAAIzrF,MAAM,CAACkqF,cAAX,EAA2B;AACzB,YAAMwB,oBAAoB,GAAGl3H,IAAI,CAACyH,GAAL,CAAS88G,OAAO,CAACtnH,MAAjB,EAAyBuuC,MAAM,CAACmqF,kBAAP,GAA4B,CAArD,CAA7B;AACA,YAAMwB,aAAa,GAAG,CAACb,UAAU,GAAGY,oBAAb,GAAoCZ,UAArC,IAAmD,CAAnD,GAAuDM,QAAQ,GAAGN,UAAxF;AACA,YAAMc,UAAU,GAAGx3D,GAAG,GAAG,OAAH,GAAa,MAAnC;AACA2kD,QAAAA,OAAO,CAAC7kB,GAAR,CAAYt8F,MAAM,CAAC63B,YAAP,KAAwBm8F,UAAxB,GAAqC,KAAjD,YAA2DD,aAA3D;AACD;AACF;;AAED,QAAI3rF,MAAM,CAAC/uC,IAAP,KAAgB,UAApB,EAAgC;AAC9ByrG,MAAAA,GAAG,CAAC7G,IAAJ,CAAS,gCAAkB71D,MAAM,CAACuqF,YAAzB,CAAT,EAAiD54H,IAAjD,CAAsDquC,MAAM,CAACoqF,qBAAP,CAA6B1sH,OAAO,GAAG,CAAvC,CAAtD;AACAg/F,MAAAA,GAAG,CAAC7G,IAAJ,CAAS,gCAAkB71D,MAAM,CAACwqF,UAAzB,CAAT,EAA+C74H,IAA/C,CAAoDquC,MAAM,CAACqqF,mBAAP,CAA2Br0F,KAA3B,CAApD;AACD;;AAED,QAAIgK,MAAM,CAAC/uC,IAAP,KAAgB,aAApB,EAAmC;AACjC,UAAI46H,oBAAJ;;AAEA,UAAI7rF,MAAM,CAACiqF,mBAAX,EAAgC;AAC9B4B,QAAAA,oBAAoB,GAAGj0H,MAAM,CAAC63B,YAAP,KAAwB,UAAxB,GAAqC,YAA5D;AACD,OAFD,MAEO;AACLo8F,QAAAA,oBAAoB,GAAGj0H,MAAM,CAAC63B,YAAP,KAAwB,YAAxB,GAAuC,UAA9D;AACD;;AAED,UAAMxvB,KAAK,GAAG,CAACvC,OAAO,GAAG,CAAX,IAAgBs4B,KAA9B;AACA,UAAIv1B,MAAM,GAAG,CAAb;AACA,UAAIC,MAAM,GAAG,CAAb;;AAEA,UAAImrH,oBAAoB,KAAK,YAA7B,EAA2C;AACzCprH,QAAAA,MAAM,GAAGR,KAAT;AACD,OAFD,MAEO;AACLS,QAAAA,MAAM,GAAGT,KAAT;AACD;;AAEDy8F,MAAAA,GAAG,CAAC7G,IAAJ,CAAS,gCAAkB71D,MAAM,CAACyqF,oBAAzB,CAAT,EAAyD33B,SAAzD,qCAAgGryF,MAAhG,sBAAkHC,MAAlH,QAA6HC,UAA7H,CAAwI/I,MAAM,CAACooC,MAAP,CAAchoC,KAAtJ;AACD;;AAED,QAAIgoC,MAAM,CAAC/uC,IAAP,KAAgB,QAAhB,IAA4B+uC,MAAM,CAACgqF,YAAvC,EAAqD;AACnDttB,MAAAA,GAAG,CAAC73F,IAAJ,CAASm7B,MAAM,CAACgqF,YAAP,CAAoBpyH,MAApB,EAA4B8F,OAAO,GAAG,CAAtC,EAAyCs4B,KAAzC,CAAT;AACA6nE,MAAAA,IAAI,CAAC,kBAAD,EAAqBnB,GAAG,CAAC,CAAD,CAAxB,CAAJ;AACD,KAHD,MAGO;AACLmB,MAAAA,IAAI,CAAC,kBAAD,EAAqBnB,GAAG,CAAC,CAAD,CAAxB,CAAJ;AACD;;AAED,QAAI9kG,MAAM,CAACooC,MAAP,CAAcwkE,aAAd,IAA+B5sG,MAAM,CAAC1E,OAA1C,EAAmD;AACjDwpG,MAAAA,GAAG,CAAC9kG,MAAM,CAACumG,QAAP,GAAkB,UAAlB,GAA+B,aAAhC,CAAH,CAAkDn+D,MAAM,CAACopF,SAAzD;AACD;AACF;;AAED,WAASxnH,MAAT,GAAkB;AAChB;AACA,QAAMo+B,MAAM,GAAGpoC,MAAM,CAACooC,MAAP,CAAc24E,UAA7B;AACA,QAAIqS,oBAAoB,EAAxB,EAA4B;AAC5B,QAAMzX,YAAY,GAAG37G,MAAM,CAAC8zG,OAAP,IAAkB9zG,MAAM,CAACooC,MAAP,CAAc0rE,OAAd,CAAsBx4G,OAAxC,GAAkD0E,MAAM,CAAC8zG,OAAP,CAAe7gG,MAAf,CAAsBpZ,MAAxE,GAAiFmG,MAAM,CAACiT,MAAP,CAAcpZ,MAApH;AACA,QAAMirG,GAAG,GAAG9kG,MAAM,CAAC+gH,UAAP,CAAkBjc,GAA9B;AACA,QAAIovB,cAAc,GAAG,EAArB;;AAEA,QAAI9rF,MAAM,CAAC/uC,IAAP,KAAgB,SAApB,EAA+B;AAC7B,UAAI86H,eAAe,GAAGn0H,MAAM,CAACooC,MAAP,CAAcjoC,IAAd,GAAqBvD,IAAI,CAAC+1C,IAAL,CAAU,CAACgpE,YAAY,GAAG37G,MAAM,CAAC6kG,YAAP,GAAsB,CAAtC,IAA2C7kG,MAAM,CAACooC,MAAP,CAAcinE,cAAnE,CAArB,GAA0GrvG,MAAM,CAAC6mG,QAAP,CAAgBhtG,MAAhJ;;AAEA,UAAImG,MAAM,CAACooC,MAAP,CAAck/D,QAAd,IAA0BtnG,MAAM,CAACooC,MAAP,CAAck/D,QAAd,CAAuBhsG,OAAjD,IAA4D,CAAC0E,MAAM,CAACooC,MAAP,CAAcjoC,IAA3E,IAAmFg0H,eAAe,GAAGxY,YAAzG,EAAuH;AACrHwY,QAAAA,eAAe,GAAGxY,YAAlB;AACD;;AAED,WAAK,IAAIthH,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG85H,eAApB,EAAqC95H,CAAC,IAAI,CAA1C,EAA6C;AAC3C,YAAI+tC,MAAM,CAACq5E,YAAX,EAAyB;AACvByS,UAAAA,cAAc,IAAI9rF,MAAM,CAACq5E,YAAP,CAAoBrjG,IAApB,CAAyBpe,MAAzB,EAAiC3F,CAAjC,EAAoC+tC,MAAM,CAAC44E,WAA3C,CAAlB;AACD,SAFD,MAEO;AACLkT,UAAAA,cAAc,eAAQ9rF,MAAM,CAAC6pF,aAAf,sBAAuC7pF,MAAM,CAAC44E,WAA9C,kBAAgE54E,MAAM,CAAC6pF,aAAvE,MAAd;AACD;AACF;;AAEDntB,MAAAA,GAAG,CAAC73F,IAAJ,CAASinH,cAAT;AACAl0H,MAAAA,MAAM,CAAC+gH,UAAP,CAAkBI,OAAlB,GAA4Brc,GAAG,CAAC7G,IAAJ,CAAS,gCAAkB71D,MAAM,CAAC44E,WAAzB,CAAT,CAA5B;AACD;;AAED,QAAI54E,MAAM,CAAC/uC,IAAP,KAAgB,UAApB,EAAgC;AAC9B,UAAI+uC,MAAM,CAAC+pF,cAAX,EAA2B;AACzB+B,QAAAA,cAAc,GAAG9rF,MAAM,CAAC+pF,cAAP,CAAsB/zG,IAAtB,CAA2Bpe,MAA3B,EAAmCooC,MAAM,CAACuqF,YAA1C,EAAwDvqF,MAAM,CAACwqF,UAA/D,CAAjB;AACD,OAFD,MAEO;AACLsB,QAAAA,cAAc,GAAG,wBAAgB9rF,MAAM,CAACuqF,YAAvB,kBAAiD,KAAjD,2BAAyEvqF,MAAM,CAACwqF,UAAhF,eAAjB;AACD;;AAED9tB,MAAAA,GAAG,CAAC73F,IAAJ,CAASinH,cAAT;AACD;;AAED,QAAI9rF,MAAM,CAAC/uC,IAAP,KAAgB,aAApB,EAAmC;AACjC,UAAI+uC,MAAM,CAAC8pF,iBAAX,EAA8B;AAC5BgC,QAAAA,cAAc,GAAG9rF,MAAM,CAAC8pF,iBAAP,CAAyB9zG,IAAzB,CAA8Bpe,MAA9B,EAAsCooC,MAAM,CAACyqF,oBAA7C,CAAjB;AACD,OAFD,MAEO;AACLqB,QAAAA,cAAc,2BAAmB9rF,MAAM,CAACyqF,oBAA1B,eAAd;AACD;;AAED/tB,MAAAA,GAAG,CAAC73F,IAAJ,CAASinH,cAAT;AACD;;AAED,QAAI9rF,MAAM,CAAC/uC,IAAP,KAAgB,QAApB,EAA8B;AAC5B4sG,MAAAA,IAAI,CAAC,kBAAD,EAAqBjmG,MAAM,CAAC+gH,UAAP,CAAkBjc,GAAlB,CAAsB,CAAtB,CAArB,CAAJ;AACD;AACF;;AAED,WAASjjG,IAAT,GAAgB;AACd7B,IAAAA,MAAM,CAACooC,MAAP,CAAc24E,UAAd,GAA2B,wCAA0B/gH,MAA1B,EAAkCA,MAAM,CAACmlG,cAAP,CAAsB4b,UAAxD,EAAoE/gH,MAAM,CAACooC,MAAP,CAAc24E,UAAlF,EAA8F;AACvH77E,MAAAA,EAAE,EAAE;AADmH,KAA9F,CAA3B;AAGA,QAAMkD,MAAM,GAAGpoC,MAAM,CAACooC,MAAP,CAAc24E,UAA7B;AACA,QAAI,CAAC34E,MAAM,CAAClD,EAAZ,EAAgB;AAChB,QAAI4/D,GAAG,GAAG,kBAAE18D,MAAM,CAAClD,EAAT,CAAV;AACA,QAAI4/D,GAAG,CAACjrG,MAAJ,KAAe,CAAnB,EAAsB;;AAEtB,QAAImG,MAAM,CAACooC,MAAP,CAAcmoE,iBAAd,IAAmC,OAAOnoE,MAAM,CAAClD,EAAd,KAAqB,QAAxD,IAAoE4/D,GAAG,CAACjrG,MAAJ,GAAa,CAArF,EAAwF;AACtFirG,MAAAA,GAAG,GAAG9kG,MAAM,CAAC8kG,GAAP,CAAW7G,IAAX,CAAgB71D,MAAM,CAAClD,EAAvB,CAAN,CADsF,CACpD;;AAElC,UAAI4/D,GAAG,CAACjrG,MAAJ,GAAa,CAAjB,EAAoB;AAClBirG,QAAAA,GAAG,GAAGA,GAAG,CAAChtF,MAAJ,CAAW,UAAAotB,EAAE,EAAI;AACrB,cAAI,kBAAEA,EAAF,EAAMw2D,OAAN,CAAc,SAAd,EAAyB,CAAzB,MAAgC17F,MAAM,CAACklC,EAA3C,EAA+C,OAAO,KAAP;AAC/C,iBAAO,IAAP;AACD,SAHK,CAAN;AAID;AACF;;AAED,QAAIkD,MAAM,CAAC/uC,IAAP,KAAgB,SAAhB,IAA6B+uC,MAAM,CAACi5E,SAAxC,EAAmD;AACjDvc,MAAAA,GAAG,CAACjkF,QAAJ,CAAaunB,MAAM,CAAC2qF,cAApB;AACD;;AAEDjuB,IAAAA,GAAG,CAACjkF,QAAJ,CAAaunB,MAAM,CAACsqF,aAAP,GAAuBtqF,MAAM,CAAC/uC,IAA3C;AACAyrG,IAAAA,GAAG,CAACjkF,QAAJ,CAAaunB,MAAM,CAACsqF,aAAP,GAAuB1yH,MAAM,CAACooC,MAAP,CAAc/1B,SAAlD;;AAEA,QAAI+1B,MAAM,CAAC/uC,IAAP,KAAgB,SAAhB,IAA6B+uC,MAAM,CAACkqF,cAAxC,EAAwD;AACtDxtB,MAAAA,GAAG,CAACjkF,QAAJ,WAAgBunB,MAAM,CAACsqF,aAAvB,SAAuCtqF,MAAM,CAAC/uC,IAA9C;AACA85H,MAAAA,kBAAkB,GAAG,CAArB;;AAEA,UAAI/qF,MAAM,CAACmqF,kBAAP,GAA4B,CAAhC,EAAmC;AACjCnqF,QAAAA,MAAM,CAACmqF,kBAAP,GAA4B,CAA5B;AACD;AACF;;AAED,QAAInqF,MAAM,CAAC/uC,IAAP,KAAgB,aAAhB,IAAiC+uC,MAAM,CAACiqF,mBAA5C,EAAiE;AAC/DvtB,MAAAA,GAAG,CAACjkF,QAAJ,CAAaunB,MAAM,CAAC0qF,wBAApB;AACD;;AAED,QAAI1qF,MAAM,CAACi5E,SAAX,EAAsB;AACpBvc,MAAAA,GAAG,CAAC/hG,EAAJ,CAAO,OAAP,EAAgB,gCAAkBqlC,MAAM,CAAC44E,WAAzB,CAAhB,EAAuD,SAASlhF,OAAT,CAAiBpjC,CAAjB,EAAoB;AACzEA,QAAAA,CAAC,CAAC+B,cAAF;AACA,YAAIhD,KAAK,GAAG,kBAAE,IAAF,EAAQA,KAAR,KAAkBuE,MAAM,CAACooC,MAAP,CAAcinE,cAA5C;AACA,YAAIrvG,MAAM,CAACooC,MAAP,CAAcjoC,IAAlB,EAAwB1E,KAAK,IAAIuE,MAAM,CAAC6kG,YAAhB;AACxB7kG,QAAAA,MAAM,CAAC0T,OAAP,CAAejY,KAAf;AACD,OALD;AAMD;;AAED,aAAcuE,MAAM,CAAC+gH,UAArB,EAAiC;AAC/Bjc,MAAAA,GAAG,EAAHA,GAD+B;AAE/B5/D,MAAAA,EAAE,EAAE4/D,GAAG,CAAC,CAAD;AAFwB,KAAjC;;AAKA,QAAI,CAAC9kG,MAAM,CAAC1E,OAAZ,EAAqB;AACnBwpG,MAAAA,GAAG,CAACjkF,QAAJ,CAAaunB,MAAM,CAACopF,SAApB;AACD;AACF;;AAED,WAASlvH,OAAT,GAAmB;AACjB,QAAM8lC,MAAM,GAAGpoC,MAAM,CAACooC,MAAP,CAAc24E,UAA7B;AACA,QAAIqS,oBAAoB,EAAxB,EAA4B;AAC5B,QAAMtuB,GAAG,GAAG9kG,MAAM,CAAC+gH,UAAP,CAAkBjc,GAA9B;AACAA,IAAAA,GAAG,CAAC9iF,WAAJ,CAAgBomB,MAAM,CAACmpF,WAAvB;AACAzsB,IAAAA,GAAG,CAAC9iF,WAAJ,CAAgBomB,MAAM,CAACsqF,aAAP,GAAuBtqF,MAAM,CAAC/uC,IAA9C;AACAyrG,IAAAA,GAAG,CAAC9iF,WAAJ,CAAgBomB,MAAM,CAACsqF,aAAP,GAAuB1yH,MAAM,CAACooC,MAAP,CAAc/1B,SAArD;AACA,QAAIrS,MAAM,CAAC+gH,UAAP,CAAkBI,OAAlB,IAA6BnhH,MAAM,CAAC+gH,UAAP,CAAkBI,OAAlB,CAA0Bn/F,WAA3D,EAAwEhiB,MAAM,CAAC+gH,UAAP,CAAkBI,OAAlB,CAA0Bn/F,WAA1B,CAAsComB,MAAM,CAACs5E,iBAA7C;;AAExE,QAAIt5E,MAAM,CAACi5E,SAAX,EAAsB;AACpBvc,MAAAA,GAAG,CAAChJ,GAAJ,CAAQ,OAAR,EAAiB,gCAAkB1zD,MAAM,CAAC44E,WAAzB,CAAjB;AACD;AACF;;AAEDj+G,EAAAA,EAAE,CAAC,MAAD,EAAS,YAAM;AACflB,IAAAA,IAAI;AACJmI,IAAAA,MAAM;AACNgL,IAAAA,MAAM;AACP,GAJC,CAAF;AAKAjS,EAAAA,EAAE,CAAC,mBAAD,EAAsB,YAAM;AAC5B,QAAI/C,MAAM,CAACooC,MAAP,CAAcjoC,IAAlB,EAAwB;AACtB6U,MAAAA,MAAM;AACP,KAFD,MAEO,IAAI,OAAOhV,MAAM,CAACm5G,SAAd,KAA4B,WAAhC,EAA6C;AAClDnkG,MAAAA,MAAM;AACP;AACF,GANC,CAAF;AAOAjS,EAAAA,EAAE,CAAC,iBAAD,EAAoB,YAAM;AAC1B,QAAI,CAAC/C,MAAM,CAACooC,MAAP,CAAcjoC,IAAnB,EAAyB;AACvB6U,MAAAA,MAAM;AACP;AACF,GAJC,CAAF;AAKAjS,EAAAA,EAAE,CAAC,oBAAD,EAAuB,YAAM;AAC7B,QAAI/C,MAAM,CAACooC,MAAP,CAAcjoC,IAAlB,EAAwB;AACtB6J,MAAAA,MAAM;AACNgL,MAAAA,MAAM;AACP;AACF,GALC,CAAF;AAMAjS,EAAAA,EAAE,CAAC,sBAAD,EAAyB,YAAM;AAC/B,QAAI,CAAC/C,MAAM,CAACooC,MAAP,CAAcjoC,IAAnB,EAAyB;AACvB6J,MAAAA,MAAM;AACNgL,MAAAA,MAAM;AACP;AACF,GALC,CAAF;AAMAjS,EAAAA,EAAE,CAAC,SAAD,EAAY,YAAM;AAClBT,IAAAA,OAAO;AACR,GAFC,CAAF;AAGAS,EAAAA,EAAE,CAAC,gBAAD,EAAmB,YAAM;AACzB,QACE+hG,GADF,GAEI9kG,MAAM,CAAC+gH,UAFX,CACEjc,GADF;;AAIA,QAAIA,GAAJ,EAAS;AACPA,MAAAA,GAAG,CAAC9kG,MAAM,CAAC1E,OAAP,GAAiB,aAAjB,GAAiC,UAAlC,CAAH,CAAiD0E,MAAM,CAACooC,MAAP,CAAc24E,UAAd,CAAyByQ,SAA1E;AACD;AACF,GARC,CAAF;AASAzuH,EAAAA,EAAE,CAAC,aAAD,EAAgB,YAAM;AACtBiS,IAAAA,MAAM;AACP,GAFC,CAAF;AAGAjS,EAAAA,EAAE,CAAC,OAAD,EAAU,UAACigH,EAAD,EAAKtmH,CAAL,EAAW;AACrB,QAAMm1H,QAAQ,GAAGn1H,CAAC,CAACwS,MAAnB;AACA,QACE41F,GADF,GAEI9kG,MAAM,CAAC+gH,UAFX,CACEjc,GADF;;AAIA,QAAI9kG,MAAM,CAACooC,MAAP,CAAc24E,UAAd,CAAyB77E,EAAzB,IAA+BllC,MAAM,CAACooC,MAAP,CAAc24E,UAAd,CAAyBsQ,WAAxD,IAAuEvsB,GAAG,CAACjrG,MAAJ,GAAa,CAApF,IAAyF,CAAC,kBAAEg4H,QAAF,EAAYjwG,QAAZ,CAAqB5hB,MAAM,CAACooC,MAAP,CAAc24E,UAAd,CAAyBC,WAA9C,CAA9F,EAA0J;AACxJ,UAAIhhH,MAAM,CAACg0G,UAAP,KAAsBh0G,MAAM,CAACg0G,UAAP,CAAkBC,MAAlB,IAA4B4d,QAAQ,KAAK7xH,MAAM,CAACg0G,UAAP,CAAkBC,MAA3D,IAAqEj0G,MAAM,CAACg0G,UAAP,CAAkBE,MAAlB,IAA4B2d,QAAQ,KAAK7xH,MAAM,CAACg0G,UAAP,CAAkBE,MAAtJ,CAAJ,EAAmK;AACnK,UAAM4d,QAAQ,GAAGhtB,GAAG,CAACljF,QAAJ,CAAa5hB,MAAM,CAACooC,MAAP,CAAc24E,UAAd,CAAyBwQ,WAAtC,CAAjB;;AAEA,UAAIO,QAAQ,KAAK,IAAjB,EAAuB;AACrB7rB,QAAAA,IAAI,CAAC,gBAAD,CAAJ;AACD,OAFD,MAEO;AACLA,QAAAA,IAAI,CAAC,gBAAD,CAAJ;AACD;;AAEDnB,MAAAA,GAAG,CAACziF,WAAJ,CAAgBriB,MAAM,CAACooC,MAAP,CAAc24E,UAAd,CAAyBwQ,WAAzC;AACD;AACF,GAlBC,CAAF;;AAmBA,WAAcvxH,MAAM,CAAC+gH,UAArB,EAAiC;AAC/B/2G,IAAAA,MAAM,EAANA,MAD+B;AAE/BgL,IAAAA,MAAM,EAANA,MAF+B;AAG/BnT,IAAAA,IAAI,EAAJA,IAH+B;AAI/BS,IAAAA,OAAO,EAAPA;AAJ+B,GAAjC;AAMD;;;;;;;;;;;;;;AC1ZD;;;;AACe,SAAS8xH,QAAT,CAAkBld,IAAlB,EAAwB;AACrC,MACEl3G,MADF,GAIIk3G,IAJJ,CACEl3G,MADF;AAAA,MAEE4oG,YAFF,GAIIsO,IAJJ,CAEEtO,YAFF;AAAA,MAGE7lG,EAHF,GAIIm0G,IAJJ,CAGEn0G,EAHF;AAKA6lG,EAAAA,YAAY,CAAC;AACXyrB,IAAAA,QAAQ,EAAE;AACR/4H,MAAAA,OAAO,EAAE;AADD;AADC,GAAD,CAAZ;;AAMA,MAAMk5F,YAAY,GAAG,SAAfA,YAAe,CAACtvD,EAAD,EAAKj+B,QAAL,EAAkB;AACrC,QACEu1D,GADF,GAEIx8D,MAFJ,CACEw8D,GADF;AAGA,QAAMsoC,GAAG,GAAG,kBAAE5/D,EAAF,CAAZ;AACA,QAAM4rF,SAAS,GAAGt0D,GAAG,GAAG,CAAC,CAAJ,GAAQ,CAA7B;AACA,QAAMhY,CAAC,GAAGsgD,GAAG,CAACvK,IAAJ,CAAS,sBAAT,KAAoC,GAA9C;AACA,QAAI3yF,CAAC,GAAGk9F,GAAG,CAACvK,IAAJ,CAAS,wBAAT,CAAR;AACA,QAAI1yF,CAAC,GAAGi9F,GAAG,CAACvK,IAAJ,CAAS,wBAAT,CAAR;AACA,QAAMlyF,KAAK,GAAGy8F,GAAG,CAACvK,IAAJ,CAAS,4BAAT,CAAd;AACA,QAAMz3B,OAAO,GAAGgiC,GAAG,CAACvK,IAAJ,CAAS,8BAAT,CAAhB;;AAEA,QAAI3yF,CAAC,IAAIC,CAAT,EAAY;AACVD,MAAAA,CAAC,GAAGA,CAAC,IAAI,GAAT;AACAC,MAAAA,CAAC,GAAGA,CAAC,IAAI,GAAT;AACD,KAHD,MAGO,IAAI7H,MAAM,CAAC63B,YAAP,EAAJ,EAA2B;AAChCjwB,MAAAA,CAAC,GAAG48C,CAAJ;AACA38C,MAAAA,CAAC,GAAG,GAAJ;AACD,KAHM,MAGA;AACLA,MAAAA,CAAC,GAAG28C,CAAJ;AACA58C,MAAAA,CAAC,GAAG,GAAJ;AACD;;AAED,QAAIA,CAAC,CAAC1G,OAAF,CAAU,GAAV,KAAkB,CAAtB,EAAyB;AACvB0G,MAAAA,CAAC,aAAMhP,QAAQ,CAACgP,CAAD,EAAI,EAAJ,CAAR,GAAkBX,QAAlB,GAA6B6pH,SAAnC,MAAD;AACD,KAFD,MAEO;AACLlpH,MAAAA,CAAC,aAAMA,CAAC,GAAGX,QAAJ,GAAe6pH,SAArB,OAAD;AACD;;AAED,QAAIjpH,CAAC,CAAC3G,OAAF,CAAU,GAAV,KAAkB,CAAtB,EAAyB;AACvB2G,MAAAA,CAAC,aAAMjP,QAAQ,CAACiP,CAAD,EAAI,EAAJ,CAAR,GAAkBZ,QAAxB,MAAD;AACD,KAFD,MAEO;AACLY,MAAAA,CAAC,aAAMA,CAAC,GAAGZ,QAAV,OAAD;AACD;;AAED,QAAI,OAAO67D,OAAP,KAAmB,WAAnB,IAAkCA,OAAO,KAAK,IAAlD,EAAwD;AACtD,UAAMwxD,cAAc,GAAGxxD,OAAO,GAAG,CAACA,OAAO,GAAG,CAAX,KAAiB,IAAIlmE,IAAI,CAACs5B,GAAL,CAASjvB,QAAT,CAArB,CAAjC;AACA69F,MAAAA,GAAG,CAAC,CAAD,CAAH,CAAO7mG,KAAP,CAAa6kE,OAAb,GAAuBwxD,cAAvB;AACD;;AAED,QAAI,OAAOjsH,KAAP,KAAiB,WAAjB,IAAgCA,KAAK,KAAK,IAA9C,EAAoD;AAClDy8F,MAAAA,GAAG,CAAC5J,SAAJ,uBAA6BtzF,CAA7B,eAAmCC,CAAnC;AACD,KAFD,MAEO;AACL,UAAM0sH,YAAY,GAAGlsH,KAAK,GAAG,CAACA,KAAK,GAAG,CAAT,KAAe,IAAIzL,IAAI,CAACs5B,GAAL,CAASjvB,QAAT,CAAnB,CAA7B;AACA69F,MAAAA,GAAG,CAAC5J,SAAJ,uBAA6BtzF,CAA7B,eAAmCC,CAAnC,0BAAoD0sH,YAApD;AACD;AACF,GA9CD;;AAgDA,MAAMjoB,YAAY,GAAG,SAAfA,YAAe,GAAM;AACzB,QACExH,GADF,GAKI9kG,MALJ,CACE8kG,GADF;AAAA,QAEE7xF,MAFF,GAKIjT,MALJ,CAEEiT,MAFF;AAAA,QAGEhM,QAHF,GAKIjH,MALJ,CAGEiH,QAHF;AAAA,QAIE4/F,QAJF,GAKI7mG,MALJ,CAIE6mG,QAJF;AAMA/B,IAAAA,GAAG,CAAC9nG,QAAJ,CAAa,0IAAb,EAAyJk3E,IAAzJ,CAA8J,UAAAhvC,EAAE,EAAI;AAClKsvD,MAAAA,YAAY,CAACtvD,EAAD,EAAKj+B,QAAL,CAAZ;AACD,KAFD;AAGAgM,IAAAA,MAAM,CAACihE,IAAP,CAAY,UAACq3B,OAAD,EAAU93F,UAAV,EAAyB;AACnC,UAAI0qG,aAAa,GAAG5S,OAAO,CAACtkG,QAA5B;;AAEA,UAAIjH,MAAM,CAACooC,MAAP,CAAcinE,cAAd,GAA+B,CAA/B,IAAoCrvG,MAAM,CAACooC,MAAP,CAAcu9D,aAAd,KAAgC,MAAxE,EAAgF;AAC9EwY,QAAAA,aAAa,IAAIvhH,IAAI,CAAC+1C,IAAL,CAAUl/B,UAAU,GAAG,CAAvB,IAA4BxM,QAAQ,IAAI4/F,QAAQ,CAAChtG,MAAT,GAAkB,CAAtB,CAArD;AACD;;AAEDskH,MAAAA,aAAa,GAAGvhH,IAAI,CAACyH,GAAL,CAASzH,IAAI,CAAC0H,GAAL,CAAS65G,aAAT,EAAwB,CAAC,CAAzB,CAAT,EAAsC,CAAtC,CAAhB;AACA,wBAAE5S,OAAF,EAAWtN,IAAX,CAAgB,0IAAhB,EAA4J/pB,IAA5J,CAAiK,UAAAhvC,EAAE,EAAI;AACrKsvD,QAAAA,YAAY,CAACtvD,EAAD,EAAKi5E,aAAL,CAAZ;AACD,OAFD;AAGD,KAXD;AAYD,GAtBD;;AAwBA,MAAMtJ,aAAa,GAAG,SAAhBA,aAAgB,CAAU90G,QAAV,EAAoB;AACxC,QAAIA,QAAQ,KAAK,KAAK,CAAtB,EAAyB;AACvBA,MAAAA,QAAQ,GAAGC,MAAM,CAACooC,MAAP,CAAchoC,KAAzB;AACD;;AAED,QACE0kG,GADF,GAEI9kG,MAFJ,CACE8kG,GADF;AAGAA,IAAAA,GAAG,CAAC7G,IAAJ,CAAS,0IAAT,EAAqJ/pB,IAArJ,CAA0J,UAAAsgD,UAAU,EAAI;AACtK,UAAMC,WAAW,GAAG,kBAAED,UAAF,CAApB;AACA,UAAIE,gBAAgB,GAAG97H,QAAQ,CAAC67H,WAAW,CAACl6B,IAAZ,CAAiB,+BAAjB,CAAD,EAAoD,EAApD,CAAR,IAAmEx6F,QAA1F;AACA,UAAIA,QAAQ,KAAK,CAAjB,EAAoB20H,gBAAgB,GAAG,CAAnB;AACpBD,MAAAA,WAAW,CAAC1rH,UAAZ,CAAuB2rH,gBAAvB;AACD,KALD;AAMD,GAdD;;AAgBA3xH,EAAAA,EAAE,CAAC,YAAD,EAAe,YAAM;AACrB,QAAI,CAAC/C,MAAM,CAACooC,MAAP,CAAcisF,QAAd,CAAuB/4H,OAA5B,EAAqC;AACrC0E,IAAAA,MAAM,CAACooC,MAAP,CAAcsoE,mBAAd,GAAoC,IAApC;AACA1wG,IAAAA,MAAM,CAACmlG,cAAP,CAAsBuL,mBAAtB,GAA4C,IAA5C;AACD,GAJC,CAAF;AAKA3tG,EAAAA,EAAE,CAAC,MAAD,EAAS,YAAM;AACf,QAAI,CAAC/C,MAAM,CAACooC,MAAP,CAAcisF,QAAd,CAAuB/4H,OAA5B,EAAqC;AACrCgxG,IAAAA,YAAY;AACb,GAHC,CAAF;AAIAvpG,EAAAA,EAAE,CAAC,cAAD,EAAiB,YAAM;AACvB,QAAI,CAAC/C,MAAM,CAACooC,MAAP,CAAcisF,QAAd,CAAuB/4H,OAA5B,EAAqC;AACrCgxG,IAAAA,YAAY;AACb,GAHC,CAAF;AAIAvpG,EAAAA,EAAE,CAAC,eAAD,EAAkB,UAAC4xH,OAAD,EAAU50H,QAAV,EAAuB;AACzC,QAAI,CAACC,MAAM,CAACooC,MAAP,CAAcisF,QAAd,CAAuB/4H,OAA5B,EAAqC;AACrCu5G,IAAAA,aAAa,CAAC90G,QAAD,CAAb;AACD,GAHC,CAAF;AAID;;;;;;;;;;;;;;ACtHD;;AACA;;AACA;;AACA;;;;;;AACe,SAAS60H,SAAT,CAAmB1d,IAAnB,EAAyB;AACtC,MACEl3G,MADF,GAKIk3G,IALJ,CACEl3G,MADF;AAAA,MAEE4oG,YAFF,GAKIsO,IALJ,CAEEtO,YAFF;AAAA,MAGE7lG,EAHF,GAKIm0G,IALJ,CAGEn0G,EAHF;AAAA,MAIEkjG,IAJF,GAKIiR,IALJ,CAIEjR,IAJF;AAMA,MAAM5tG,QAAQ,GAAG,6BAAjB;AACA,MAAIsxG,SAAS,GAAG,KAAhB;AACA,MAAIpmF,OAAO,GAAG,IAAd;AACA,MAAIsxG,WAAW,GAAG,IAAlB;AACA,MAAIC,YAAJ;AACA,MAAIC,QAAJ;AACA,MAAIC,SAAJ;AACA,MAAIC,OAAJ;AACArsB,EAAAA,YAAY,CAAC;AACXssB,IAAAA,SAAS,EAAE;AACThwF,MAAAA,EAAE,EAAE,IADK;AAET6vF,MAAAA,QAAQ,EAAE,MAFD;AAGTp2H,MAAAA,IAAI,EAAE,KAHG;AAITw2H,MAAAA,SAAS,EAAE,KAJF;AAKTC,MAAAA,aAAa,EAAE,IALN;AAMT5D,MAAAA,SAAS,EAAE,uBANF;AAOT6D,MAAAA,SAAS,EAAE;AAPF;AADA,GAAD,CAAZ;AAWAr1H,EAAAA,MAAM,CAACk1H,SAAP,GAAmB;AACjBhwF,IAAAA,EAAE,EAAE,IADa;AAEjBowF,IAAAA,MAAM,EAAE,IAFS;AAGjBxwB,IAAAA,GAAG,EAAE,IAHY;AAIjBywB,IAAAA,OAAO,EAAE;AAJQ,GAAnB;;AAOA,WAASjpB,YAAT,GAAwB;AACtB,QAAI,CAACtsG,MAAM,CAACooC,MAAP,CAAc8sF,SAAd,CAAwBhwF,EAAzB,IAA+B,CAACllC,MAAM,CAACk1H,SAAP,CAAiBhwF,EAArD,EAAyD;AACzD,QACEgwF,SADF,GAIIl1H,MAJJ,CACEk1H,SADF;AAAA,QAEgB14D,GAFhB,GAIIx8D,MAJJ,CAEEwsG,YAFF;AAAA,QAGEvlG,QAHF,GAIIjH,MAJJ,CAGEiH,QAHF;AAKA,QACEsuH,OADF,GAGIL,SAHJ,CACEK,OADF;AAAA,QAEEzwB,GAFF,GAGIowB,SAHJ,CAEEpwB,GAFF;AAIA,QAAM18D,MAAM,GAAGpoC,MAAM,CAACooC,MAAP,CAAc8sF,SAA7B;AACA,QAAI3tE,OAAO,GAAGwtE,QAAd;AACA,QAAIS,MAAM,GAAG,CAACR,SAAS,GAAGD,QAAb,IAAyB9tH,QAAtC;;AAEA,QAAIu1D,GAAJ,EAAS;AACPg5D,MAAAA,MAAM,GAAG,CAACA,MAAV;;AAEA,UAAIA,MAAM,GAAG,CAAb,EAAgB;AACdjuE,QAAAA,OAAO,GAAGwtE,QAAQ,GAAGS,MAArB;AACAA,QAAAA,MAAM,GAAG,CAAT;AACD,OAHD,MAGO,IAAI,CAACA,MAAD,GAAUT,QAAV,GAAqBC,SAAzB,EAAoC;AACzCztE,QAAAA,OAAO,GAAGytE,SAAS,GAAGQ,MAAtB;AACD;AACF,KATD,MASO,IAAIA,MAAM,GAAG,CAAb,EAAgB;AACrBjuE,MAAAA,OAAO,GAAGwtE,QAAQ,GAAGS,MAArB;AACAA,MAAAA,MAAM,GAAG,CAAT;AACD,KAHM,MAGA,IAAIA,MAAM,GAAGT,QAAT,GAAoBC,SAAxB,EAAmC;AACxCztE,MAAAA,OAAO,GAAGytE,SAAS,GAAGQ,MAAtB;AACD;;AAED,QAAIx1H,MAAM,CAAC63B,YAAP,EAAJ,EAA2B;AACzB09F,MAAAA,OAAO,CAACr6B,SAAR,uBAAiCs6B,MAAjC;AACAD,MAAAA,OAAO,CAAC,CAAD,CAAP,CAAWt3H,KAAX,CAAiBD,KAAjB,aAA4BupD,OAA5B;AACD,KAHD,MAGO;AACLguE,MAAAA,OAAO,CAACr6B,SAAR,4BAAsCs6B,MAAtC;AACAD,MAAAA,OAAO,CAAC,CAAD,CAAP,CAAWt3H,KAAX,CAAiBF,MAAjB,aAA6BwpD,OAA7B;AACD;;AAED,QAAInf,MAAM,CAACzpC,IAAX,EAAiB;AACfmlB,MAAAA,YAAY,CAACP,OAAD,CAAZ;AACAuhF,MAAAA,GAAG,CAAC,CAAD,CAAH,CAAO7mG,KAAP,CAAa6kE,OAAb,GAAuB,CAAvB;AACAv/C,MAAAA,OAAO,GAAGniB,UAAU,CAAC,YAAM;AACzB0jG,QAAAA,GAAG,CAAC,CAAD,CAAH,CAAO7mG,KAAP,CAAa6kE,OAAb,GAAuB,CAAvB;AACAgiC,QAAAA,GAAG,CAAC/7F,UAAJ,CAAe,GAAf;AACD,OAHmB,EAGjB,IAHiB,CAApB;AAID;AACF;;AAED,WAAS8rG,aAAT,CAAuB90G,QAAvB,EAAiC;AAC/B,QAAI,CAACC,MAAM,CAACooC,MAAP,CAAc8sF,SAAd,CAAwBhwF,EAAzB,IAA+B,CAACllC,MAAM,CAACk1H,SAAP,CAAiBhwF,EAArD,EAAyD;AACzDllC,IAAAA,MAAM,CAACk1H,SAAP,CAAiBK,OAAjB,CAAyBxsH,UAAzB,CAAoChJ,QAApC;AACD;;AAED,WAASqsG,UAAT,GAAsB;AACpB,QAAI,CAACpsG,MAAM,CAACooC,MAAP,CAAc8sF,SAAd,CAAwBhwF,EAAzB,IAA+B,CAACllC,MAAM,CAACk1H,SAAP,CAAiBhwF,EAArD,EAAyD;AACzD,QACEgwF,SADF,GAEIl1H,MAFJ,CACEk1H,SADF;AAGA,QACEK,OADF,GAGIL,SAHJ,CACEK,OADF;AAAA,QAEEzwB,GAFF,GAGIowB,SAHJ,CAEEpwB,GAFF;AAIAywB,IAAAA,OAAO,CAAC,CAAD,CAAP,CAAWt3H,KAAX,CAAiBD,KAAjB,GAAyB,EAAzB;AACAu3H,IAAAA,OAAO,CAAC,CAAD,CAAP,CAAWt3H,KAAX,CAAiBF,MAAjB,GAA0B,EAA1B;AACAi3H,IAAAA,SAAS,GAAGh1H,MAAM,CAAC63B,YAAP,KAAwBitE,GAAG,CAAC,CAAD,CAAH,CAAO9/F,WAA/B,GAA6C8/F,GAAG,CAAC,CAAD,CAAH,CAAOxhG,YAAhE;AACA2xH,IAAAA,OAAO,GAAGj1H,MAAM,CAACrH,IAAP,IAAeqH,MAAM,CAACk8G,WAAP,GAAqBl8G,MAAM,CAACooC,MAAP,CAAco+D,kBAAnC,IAAyDxmG,MAAM,CAACooC,MAAP,CAAcs/D,cAAd,GAA+B1nG,MAAM,CAAC6mG,QAAP,CAAgB,CAAhB,CAA/B,GAAoD,CAA7G,CAAf,CAAV;;AAEA,QAAI7mG,MAAM,CAACooC,MAAP,CAAc8sF,SAAd,CAAwBH,QAAxB,KAAqC,MAAzC,EAAiD;AAC/CA,MAAAA,QAAQ,GAAGC,SAAS,GAAGC,OAAvB;AACD,KAFD,MAEO;AACLF,MAAAA,QAAQ,GAAGn8H,QAAQ,CAACoH,MAAM,CAACooC,MAAP,CAAc8sF,SAAd,CAAwBH,QAAzB,EAAmC,EAAnC,CAAnB;AACD;;AAED,QAAI/0H,MAAM,CAAC63B,YAAP,EAAJ,EAA2B;AACzB09F,MAAAA,OAAO,CAAC,CAAD,CAAP,CAAWt3H,KAAX,CAAiBD,KAAjB,aAA4B+2H,QAA5B;AACD,KAFD,MAEO;AACLQ,MAAAA,OAAO,CAAC,CAAD,CAAP,CAAWt3H,KAAX,CAAiBF,MAAjB,aAA6Bg3H,QAA7B;AACD;;AAED,QAAIE,OAAO,IAAI,CAAf,EAAkB;AAChBnwB,MAAAA,GAAG,CAAC,CAAD,CAAH,CAAO7mG,KAAP,CAAanE,OAAb,GAAuB,MAAvB;AACD,KAFD,MAEO;AACLgrG,MAAAA,GAAG,CAAC,CAAD,CAAH,CAAO7mG,KAAP,CAAanE,OAAb,GAAuB,EAAvB;AACD;;AAED,QAAIkG,MAAM,CAACooC,MAAP,CAAc8sF,SAAd,CAAwBv2H,IAA5B,EAAkC;AAChCmmG,MAAAA,GAAG,CAAC,CAAD,CAAH,CAAO7mG,KAAP,CAAa6kE,OAAb,GAAuB,CAAvB;AACD;;AAED,QAAI9iE,MAAM,CAACooC,MAAP,CAAcwkE,aAAd,IAA+B5sG,MAAM,CAAC1E,OAA1C,EAAmD;AACjD45H,MAAAA,SAAS,CAACpwB,GAAV,CAAc9kG,MAAM,CAACumG,QAAP,GAAkB,UAAlB,GAA+B,aAA7C,EAA4DvmG,MAAM,CAACooC,MAAP,CAAc8sF,SAAd,CAAwB1D,SAApF;AACD;AACF;;AAED,WAASiE,kBAAT,CAA4B/4H,CAA5B,EAA+B;AAC7B,QAAIsD,MAAM,CAAC63B,YAAP,EAAJ,EAA2B;AACzB,aAAOn7B,CAAC,CAACrD,IAAF,KAAW,YAAX,IAA2BqD,CAAC,CAACrD,IAAF,KAAW,WAAtC,GAAoDqD,CAAC,CAAC03G,aAAF,CAAgB,CAAhB,EAAmB/gB,OAAvE,GAAiF32F,CAAC,CAAC22F,OAA1F;AACD;;AAED,WAAO32F,CAAC,CAACrD,IAAF,KAAW,YAAX,IAA2BqD,CAAC,CAACrD,IAAF,KAAW,WAAtC,GAAoDqD,CAAC,CAAC03G,aAAF,CAAgB,CAAhB,EAAmB9gB,OAAvE,GAAiF52F,CAAC,CAAC42F,OAA1F;AACD;;AAED,WAASoiC,eAAT,CAAyBh5H,CAAzB,EAA4B;AAC1B,QACEw4H,SADF,GAGIl1H,MAHJ,CACEk1H,SADF;AAAA,QAEgB14D,GAFhB,GAGIx8D,MAHJ,CAEEwsG,YAFF;AAIA,QACE1H,GADF,GAEIowB,SAFJ,CACEpwB,GADF;AAGA,QAAI6wB,aAAJ;AACAA,IAAAA,aAAa,GAAG,CAACF,kBAAkB,CAAC/4H,CAAD,CAAlB,GAAwBooG,GAAG,CAACliG,MAAJ,GAAa5C,MAAM,CAAC63B,YAAP,KAAwB,MAAxB,GAAiC,KAA9C,CAAxB,IAAgFi9F,YAAY,KAAK,IAAjB,GAAwBA,YAAxB,GAAuCC,QAAQ,GAAG,CAAlI,CAAD,KAA0IC,SAAS,GAAGD,QAAtJ,CAAhB;AACAY,IAAAA,aAAa,GAAG/4H,IAAI,CAAC0H,GAAL,CAAS1H,IAAI,CAACyH,GAAL,CAASsxH,aAAT,EAAwB,CAAxB,CAAT,EAAqC,CAArC,CAAhB;;AAEA,QAAIn5D,GAAJ,EAAS;AACPm5D,MAAAA,aAAa,GAAG,IAAIA,aAApB;AACD;;AAED,QAAMn7H,QAAQ,GAAGwF,MAAM,CAACirG,YAAP,KAAwB,CAACjrG,MAAM,CAACkrG,YAAP,KAAwBlrG,MAAM,CAACirG,YAAP,EAAzB,IAAkD0qB,aAA3F;AACA31H,IAAAA,MAAM,CAACqsG,cAAP,CAAsB7xG,QAAtB;AACAwF,IAAAA,MAAM,CAACssG,YAAP,CAAoB9xG,QAApB;AACAwF,IAAAA,MAAM,CAACorG,iBAAP;AACAprG,IAAAA,MAAM,CAACqrG,mBAAP;AACD;;AAED,WAASuqB,WAAT,CAAqBl5H,CAArB,EAAwB;AACtB,QAAM0rC,MAAM,GAAGpoC,MAAM,CAACooC,MAAP,CAAc8sF,SAA7B;AACA,QACEA,SADF,GAGIl1H,MAHJ,CACEk1H,SADF;AAAA,QAEE9nB,UAFF,GAGIptG,MAHJ,CAEEotG,UAFF;AAIA,QACEtI,GADF,GAGIowB,SAHJ,CACEpwB,GADF;AAAA,QAEEywB,OAFF,GAGIL,SAHJ,CAEEK,OAFF;AAIA5rB,IAAAA,SAAS,GAAG,IAAZ;AACAmrB,IAAAA,YAAY,GAAGp4H,CAAC,CAACwS,MAAF,KAAaqmH,OAAO,CAAC,CAAD,CAApB,IAA2B74H,CAAC,CAACwS,MAAF,KAAaqmH,OAAxC,GAAkDE,kBAAkB,CAAC/4H,CAAD,CAAlB,GAAwBA,CAAC,CAACwS,MAAF,CAASpM,qBAAT,GAAiC9C,MAAM,CAAC63B,YAAP,KAAwB,MAAxB,GAAiC,KAAlE,CAA1E,GAAqJ,IAApK;AACAn7B,IAAAA,CAAC,CAAC+B,cAAF;AACA/B,IAAAA,CAAC,CAACm2G,eAAF;AACAzF,IAAAA,UAAU,CAACrkG,UAAX,CAAsB,GAAtB;AACAwsH,IAAAA,OAAO,CAACxsH,UAAR,CAAmB,GAAnB;AACA2sH,IAAAA,eAAe,CAACh5H,CAAD,CAAf;AACAonB,IAAAA,YAAY,CAAC+wG,WAAD,CAAZ;AACA/vB,IAAAA,GAAG,CAAC/7F,UAAJ,CAAe,CAAf;;AAEA,QAAIq/B,MAAM,CAACzpC,IAAX,EAAiB;AACfmmG,MAAAA,GAAG,CAACxI,GAAJ,CAAQ,SAAR,EAAmB,CAAnB;AACD;;AAED,QAAIt8F,MAAM,CAACooC,MAAP,CAAcq/D,OAAlB,EAA2B;AACzBznG,MAAAA,MAAM,CAACotG,UAAP,CAAkB9Q,GAAlB,CAAsB,kBAAtB,EAA0C,MAA1C;AACD;;AAED2J,IAAAA,IAAI,CAAC,oBAAD,EAAuBvpG,CAAvB,CAAJ;AACD;;AAED,WAASm5H,UAAT,CAAoBn5H,CAApB,EAAuB;AACrB,QACEw4H,SADF,GAGIl1H,MAHJ,CACEk1H,SADF;AAAA,QAEE9nB,UAFF,GAGIptG,MAHJ,CAEEotG,UAFF;AAIA,QACEtI,GADF,GAGIowB,SAHJ,CACEpwB,GADF;AAAA,QAEEywB,OAFF,GAGIL,SAHJ,CAEEK,OAFF;AAIA,QAAI,CAAC5rB,SAAL,EAAgB;AAChB,QAAIjtG,CAAC,CAAC+B,cAAN,EAAsB/B,CAAC,CAAC+B,cAAF,GAAtB,KAA8C/B,CAAC,CAAC4vH,WAAF,GAAgB,KAAhB;AAC9CoJ,IAAAA,eAAe,CAACh5H,CAAD,CAAf;AACA0wG,IAAAA,UAAU,CAACrkG,UAAX,CAAsB,CAAtB;AACA+7F,IAAAA,GAAG,CAAC/7F,UAAJ,CAAe,CAAf;AACAwsH,IAAAA,OAAO,CAACxsH,UAAR,CAAmB,CAAnB;AACAk9F,IAAAA,IAAI,CAAC,mBAAD,EAAsBvpG,CAAtB,CAAJ;AACD;;AAED,WAASo5H,SAAT,CAAmBp5H,CAAnB,EAAsB;AACpB,QAAM0rC,MAAM,GAAGpoC,MAAM,CAACooC,MAAP,CAAc8sF,SAA7B;AACA,QACEA,SADF,GAGIl1H,MAHJ,CACEk1H,SADF;AAAA,QAEE9nB,UAFF,GAGIptG,MAHJ,CAEEotG,UAFF;AAIA,QACEtI,GADF,GAEIowB,SAFJ,CACEpwB,GADF;AAGA,QAAI,CAAC6E,SAAL,EAAgB;AAChBA,IAAAA,SAAS,GAAG,KAAZ;;AAEA,QAAI3pG,MAAM,CAACooC,MAAP,CAAcq/D,OAAlB,EAA2B;AACzBznG,MAAAA,MAAM,CAACotG,UAAP,CAAkB9Q,GAAlB,CAAsB,kBAAtB,EAA0C,EAA1C;AACA8Q,MAAAA,UAAU,CAACrkG,UAAX,CAAsB,EAAtB;AACD;;AAED,QAAIq/B,MAAM,CAACzpC,IAAX,EAAiB;AACfmlB,MAAAA,YAAY,CAAC+wG,WAAD,CAAZ;AACAA,MAAAA,WAAW,GAAG,qBAAS,YAAM;AAC3B/vB,QAAAA,GAAG,CAACxI,GAAJ,CAAQ,SAAR,EAAmB,CAAnB;AACAwI,QAAAA,GAAG,CAAC/7F,UAAJ,CAAe,GAAf;AACD,OAHa,EAGX,IAHW,CAAd;AAID;;AAEDk9F,IAAAA,IAAI,CAAC,kBAAD,EAAqBvpG,CAArB,CAAJ;;AAEA,QAAI0rC,MAAM,CAACgtF,aAAX,EAA0B;AACxBp1H,MAAAA,MAAM,CAACw4G,cAAP;AACD;AACF;;AAED,WAASxuD,MAAT,CAAgBphC,MAAhB,EAAwB;AACtB,QACEssG,SADF,GAMIl1H,MANJ,CACEk1H,SADF;AAAA,QAEE3rB,gBAFF,GAMIvpG,MANJ,CAEEupG,gBAFF;AAAA,QAGEC,kBAHF,GAMIxpG,MANJ,CAGEwpG,kBAHF;AAAA,QAIEphE,MAJF,GAMIpoC,MANJ,CAIEooC,MAJF;AAAA,QAKE++D,OALF,GAMInnG,MANJ,CAKEmnG,OALF;AAOA,QAAMrC,GAAG,GAAGowB,SAAS,CAACpwB,GAAtB;AACA,QAAM51F,MAAM,GAAG41F,GAAG,CAAC,CAAD,CAAlB;AACA,QAAMixB,cAAc,GAAG5uB,OAAO,CAACyL,eAAR,IAA2BxqE,MAAM,CAACmpE,gBAAlC,GAAqD;AAC1EzkE,MAAAA,OAAO,EAAE,KADiE;AAE1EuuD,MAAAA,OAAO,EAAE;AAFiE,KAArD,GAGnB,KAHJ;AAIA,QAAMuX,eAAe,GAAGzL,OAAO,CAACyL,eAAR,IAA2BxqE,MAAM,CAACmpE,gBAAlC,GAAqD;AAC3EzkE,MAAAA,OAAO,EAAE,IADkE;AAE3EuuD,MAAAA,OAAO,EAAE;AAFkE,KAArD,GAGpB,KAHJ;AAIA,QAAI,CAACnsF,MAAL,EAAa;AACb,QAAM8mH,WAAW,GAAGptG,MAAM,KAAK,IAAX,GAAkB,kBAAlB,GAAuC,qBAA3D;;AAEA,QAAI,CAACu+E,OAAO,CAACE,KAAb,EAAoB;AAClBn4F,MAAAA,MAAM,CAAC8mH,WAAD,CAAN,CAAoBxsB,kBAAkB,CAACntG,KAAvC,EAA8Cu5H,WAA9C,EAA2DG,cAA3D;AACA19H,MAAAA,QAAQ,CAAC29H,WAAD,CAAR,CAAsBxsB,kBAAkB,CAACt0E,IAAzC,EAA+C2gG,UAA/C,EAA2DE,cAA3D;AACA19H,MAAAA,QAAQ,CAAC29H,WAAD,CAAR,CAAsBxsB,kBAAkB,CAACltG,GAAzC,EAA8Cw5H,SAA9C,EAAyDljB,eAAzD;AACD,KAJD,MAIO;AACL1jG,MAAAA,MAAM,CAAC8mH,WAAD,CAAN,CAAoBzsB,gBAAgB,CAACltG,KAArC,EAA4Cu5H,WAA5C,EAAyDG,cAAzD;AACA7mH,MAAAA,MAAM,CAAC8mH,WAAD,CAAN,CAAoBzsB,gBAAgB,CAACr0E,IAArC,EAA2C2gG,UAA3C,EAAuDE,cAAvD;AACA7mH,MAAAA,MAAM,CAAC8mH,WAAD,CAAN,CAAoBzsB,gBAAgB,CAACjtG,GAArC,EAA0Cw5H,SAA1C,EAAqDljB,eAArD;AACD;AACF;;AAED,WAASqjB,eAAT,GAA2B;AACzB,QAAI,CAACj2H,MAAM,CAACooC,MAAP,CAAc8sF,SAAd,CAAwBhwF,EAA7B,EAAiC;AACjC8kB,IAAAA,MAAM,CAAC,IAAD,CAAN;AACD;;AAED,WAASksE,gBAAT,GAA4B;AAC1B,QAAI,CAACl2H,MAAM,CAACooC,MAAP,CAAc8sF,SAAd,CAAwBhwF,EAA7B,EAAiC;AACjC8kB,IAAAA,MAAM,CAAC,KAAD,CAAN;AACD;;AAED,WAASnoD,IAAT,GAAgB;AACd,QACEqzH,SADF,GAGIl1H,MAHJ,CACEk1H,SADF;AAAA,QAEOiB,SAFP,GAGIn2H,MAHJ,CAEE8kG,GAFF;AAIA9kG,IAAAA,MAAM,CAACooC,MAAP,CAAc8sF,SAAd,GAA0B,wCAA0Bl1H,MAA1B,EAAkCA,MAAM,CAACmlG,cAAP,CAAsB+vB,SAAxD,EAAmEl1H,MAAM,CAACooC,MAAP,CAAc8sF,SAAjF,EAA4F;AACpHhwF,MAAAA,EAAE,EAAE;AADgH,KAA5F,CAA1B;AAGA,QAAMkD,MAAM,GAAGpoC,MAAM,CAACooC,MAAP,CAAc8sF,SAA7B;AACA,QAAI,CAAC9sF,MAAM,CAAClD,EAAZ,EAAgB;AAChB,QAAI4/D,GAAG,GAAG,kBAAE18D,MAAM,CAAClD,EAAT,CAAV;;AAEA,QAAIllC,MAAM,CAACooC,MAAP,CAAcmoE,iBAAd,IAAmC,OAAOnoE,MAAM,CAAClD,EAAd,KAAqB,QAAxD,IAAoE4/D,GAAG,CAACjrG,MAAJ,GAAa,CAAjF,IAAsFs8H,SAAS,CAACl4B,IAAV,CAAe71D,MAAM,CAAClD,EAAtB,EAA0BrrC,MAA1B,KAAqC,CAA/H,EAAkI;AAChIirG,MAAAA,GAAG,GAAGqxB,SAAS,CAACl4B,IAAV,CAAe71D,MAAM,CAAClD,EAAtB,CAAN;AACD;;AAED,QAAIqwF,OAAO,GAAGzwB,GAAG,CAAC7G,IAAJ,YAAaj+F,MAAM,CAACooC,MAAP,CAAc8sF,SAAd,CAAwBG,SAArC,EAAd;;AAEA,QAAIE,OAAO,CAAC17H,MAAR,KAAmB,CAAvB,EAA0B;AACxB07H,MAAAA,OAAO,GAAG,yCAAiBv1H,MAAM,CAACooC,MAAP,CAAc8sF,SAAd,CAAwBG,SAAzC,eAAV;AACAvwB,MAAAA,GAAG,CAAC5H,MAAJ,CAAWq4B,OAAX;AACD;;AAED,aAAcL,SAAd,EAAyB;AACvBpwB,MAAAA,GAAG,EAAHA,GADuB;AAEvB5/D,MAAAA,EAAE,EAAE4/D,GAAG,CAAC,CAAD,CAFgB;AAGvBywB,MAAAA,OAAO,EAAPA,OAHuB;AAIvBD,MAAAA,MAAM,EAAEC,OAAO,CAAC,CAAD;AAJQ,KAAzB;;AAOA,QAAIntF,MAAM,CAAC+sF,SAAX,EAAsB;AACpBc,MAAAA,eAAe;AAChB;;AAED,QAAInxB,GAAJ,EAAS;AACPA,MAAAA,GAAG,CAAC9kG,MAAM,CAAC1E,OAAP,GAAiB,aAAjB,GAAiC,UAAlC,CAAH,CAAiD0E,MAAM,CAACooC,MAAP,CAAc8sF,SAAd,CAAwB1D,SAAzE;AACD;AACF;;AAED,WAASlvH,OAAT,GAAmB;AACjB4zH,IAAAA,gBAAgB;AACjB;;AAEDnzH,EAAAA,EAAE,CAAC,MAAD,EAAS,YAAM;AACflB,IAAAA,IAAI;AACJuqG,IAAAA,UAAU;AACVE,IAAAA,YAAY;AACb,GAJC,CAAF;AAKAvpG,EAAAA,EAAE,CAAC,0CAAD,EAA6C,YAAM;AACnDqpG,IAAAA,UAAU;AACX,GAFC,CAAF;AAGArpG,EAAAA,EAAE,CAAC,cAAD,EAAiB,YAAM;AACvBupG,IAAAA,YAAY;AACb,GAFC,CAAF;AAGAvpG,EAAAA,EAAE,CAAC,eAAD,EAAkB,UAACigH,EAAD,EAAKjjH,QAAL,EAAkB;AACpC80G,IAAAA,aAAa,CAAC90G,QAAD,CAAb;AACD,GAFC,CAAF;AAGAgD,EAAAA,EAAE,CAAC,gBAAD,EAAmB,YAAM;AACzB,QACE+hG,GADF,GAEI9kG,MAAM,CAACk1H,SAFX,CACEpwB,GADF;;AAIA,QAAIA,GAAJ,EAAS;AACPA,MAAAA,GAAG,CAAC9kG,MAAM,CAAC1E,OAAP,GAAiB,aAAjB,GAAiC,UAAlC,CAAH,CAAiD0E,MAAM,CAACooC,MAAP,CAAc8sF,SAAd,CAAwB1D,SAAzE;AACD;AACF,GARC,CAAF;AASAzuH,EAAAA,EAAE,CAAC,SAAD,EAAY,YAAM;AAClBT,IAAAA,OAAO;AACR,GAFC,CAAF;;AAGA,WAActC,MAAM,CAACk1H,SAArB,EAAgC;AAC9B9oB,IAAAA,UAAU,EAAVA,UAD8B;AAE9BE,IAAAA,YAAY,EAAZA,YAF8B;AAG9BzqG,IAAAA,IAAI,EAAJA,IAH8B;AAI9BS,IAAAA,OAAO,EAAPA;AAJ8B,GAAhC;AAMD;;;;;;;;;;;;;;ACzWD;;AACA;;;;;;AACe,SAAS8zH,KAAT,CAAelf,IAAf,EAAqB;AAClC,MACEl3G,MADF,GAIIk3G,IAJJ,CACEl3G,MADF;AAAA,MAEE4oG,YAFF,GAIIsO,IAJJ,CAEEtO,YAFF;AAAA,MAGE7lG,EAHF,GAIIm0G,IAJJ,CAGEn0G,EAHF;AAKA6lG,EAAAA,YAAY,CAAC;AACXytB,IAAAA,MAAM,EAAE;AACNr2H,MAAAA,MAAM,EAAE,IADF;AAENs2H,MAAAA,oBAAoB,EAAE,IAFhB;AAGNC,MAAAA,gBAAgB,EAAE,CAHZ;AAINC,MAAAA,qBAAqB,EAAE,2BAJjB;AAKNC,MAAAA,oBAAoB,EAAE;AALhB;AADG,GAAD,CAAZ;AASA,MAAI7xB,WAAW,GAAG,KAAlB;AACA,MAAI8xB,aAAa,GAAG,KAApB;AACA12H,EAAAA,MAAM,CAACq2H,MAAP,GAAgB;AACdr2H,IAAAA,MAAM,EAAE;AADM,GAAhB;;AAIA,WAAS22H,YAAT,GAAwB;AACtB,QAAMC,YAAY,GAAG52H,MAAM,CAACq2H,MAAP,CAAcr2H,MAAnC;AACA,QAAI,CAAC42H,YAAL,EAAmB;AACnB,QAAMzc,YAAY,GAAGyc,YAAY,CAACzc,YAAlC;AACA,QAAMC,YAAY,GAAGwc,YAAY,CAACxc,YAAlC;AACA,QAAIA,YAAY,IAAI,kBAAEA,YAAF,EAAgBx4F,QAAhB,CAAyB5hB,MAAM,CAACooC,MAAP,CAAciuF,MAAd,CAAqBG,qBAA9C,CAApB,EAA0F;AAC1F,QAAI,OAAOrc,YAAP,KAAwB,WAAxB,IAAuCA,YAAY,KAAK,IAA5D,EAAkE;AAClE,QAAID,YAAJ;;AAEA,QAAI0c,YAAY,CAACxuF,MAAb,CAAoBjoC,IAAxB,EAA8B;AAC5B+5G,MAAAA,YAAY,GAAGthH,QAAQ,CAAC,kBAAEg+H,YAAY,CAACxc,YAAf,EAA6B7f,IAA7B,CAAkC,yBAAlC,CAAD,EAA+D,EAA/D,CAAvB;AACD,KAFD,MAEO;AACL2f,MAAAA,YAAY,GAAGC,YAAf;AACD;;AAED,QAAIn6G,MAAM,CAACooC,MAAP,CAAcjoC,IAAlB,EAAwB;AACtB,UAAI02H,YAAY,GAAG72H,MAAM,CAACkT,WAA1B;;AAEA,UAAIlT,MAAM,CAACiT,MAAP,CAAcgoE,EAAd,CAAiB47C,YAAjB,EAA+Bj1G,QAA/B,CAAwC5hB,MAAM,CAACooC,MAAP,CAAcupE,mBAAtD,CAAJ,EAAgF;AAC9E3xG,QAAAA,MAAM,CAAC20G,OAAP,GAD8E,CAC5D;;AAElB30G,QAAAA,MAAM,CAAC64G,WAAP,GAAqB74G,MAAM,CAACotG,UAAP,CAAkB,CAAlB,EAAqB3Q,UAA1C;AACAo6B,QAAAA,YAAY,GAAG72H,MAAM,CAACkT,WAAtB;AACD;;AAED,UAAMkmG,SAAS,GAAGp5G,MAAM,CAACiT,MAAP,CAAcgoE,EAAd,CAAiB47C,YAAjB,EAA+B/4B,OAA/B,sCAAoEoc,YAApE,UAAsFj/B,EAAtF,CAAyF,CAAzF,EAA4Fx/E,KAA5F,EAAlB;AACA,UAAMoY,SAAS,GAAG7T,MAAM,CAACiT,MAAP,CAAcgoE,EAAd,CAAiB47C,YAAjB,EAA+Bj5B,OAA/B,sCAAoEsc,YAApE,UAAsFj/B,EAAtF,CAAyF,CAAzF,EAA4Fx/E,KAA5F,EAAlB;AACA,UAAI,OAAO29G,SAAP,KAAqB,WAAzB,EAAsCc,YAAY,GAAGrmG,SAAf,CAAtC,KAAoE,IAAI,OAAOA,SAAP,KAAqB,WAAzB,EAAsCqmG,YAAY,GAAGd,SAAf,CAAtC,KAAoE,IAAIvlG,SAAS,GAAGgjH,YAAZ,GAA2BA,YAAY,GAAGzd,SAA9C,EAAyDc,YAAY,GAAGrmG,SAAf,CAAzD,KAAuFqmG,YAAY,GAAGd,SAAf;AAChO;;AAEDp5G,IAAAA,MAAM,CAAC0T,OAAP,CAAewmG,YAAf;AACD;;AAED,WAASr4G,IAAT,GAAgB;AACd,QACUi1H,YADV,GAEI92H,MAAM,CAACooC,MAFX,CACEiuF,MADF;AAGA,QAAIzxB,WAAJ,EAAiB,OAAO,KAAP;AACjBA,IAAAA,WAAW,GAAG,IAAd;AACA,QAAMmyB,WAAW,GAAG/2H,MAAM,CAACsa,WAA3B;;AAEA,QAAIw8G,YAAY,CAAC92H,MAAb,YAA+B+2H,WAAnC,EAAgD;AAC9C/2H,MAAAA,MAAM,CAACq2H,MAAP,CAAcr2H,MAAd,GAAuB82H,YAAY,CAAC92H,MAApC;;AACA,eAAcA,MAAM,CAACq2H,MAAP,CAAcr2H,MAAd,CAAqBmlG,cAAnC,EAAmD;AACjDuL,QAAAA,mBAAmB,EAAE,IAD4B;AAEjDG,QAAAA,mBAAmB,EAAE;AAF4B,OAAnD;;AAIA,eAAc7wG,MAAM,CAACq2H,MAAP,CAAcr2H,MAAd,CAAqBooC,MAAnC,EAA2C;AACzCsoE,QAAAA,mBAAmB,EAAE,IADoB;AAEzCG,QAAAA,mBAAmB,EAAE;AAFoB,OAA3C;AAID,KAVD,MAUO,IAAI,qBAASimB,YAAY,CAAC92H,MAAtB,CAAJ,EAAmC;AACxC,UAAMg3H,kBAAkB,GAAG,SAAc,EAAd,EAAkBF,YAAY,CAAC92H,MAA/B,CAA3B;;AACA,eAAcg3H,kBAAd,EAAkC;AAChCtmB,QAAAA,mBAAmB,EAAE,IADW;AAEhCG,QAAAA,mBAAmB,EAAE;AAFW,OAAlC;;AAIA7wG,MAAAA,MAAM,CAACq2H,MAAP,CAAcr2H,MAAd,GAAuB,IAAI+2H,WAAJ,CAAgBC,kBAAhB,CAAvB;AACAN,MAAAA,aAAa,GAAG,IAAhB;AACD;;AAED12H,IAAAA,MAAM,CAACq2H,MAAP,CAAcr2H,MAAd,CAAqB8kG,GAArB,CAAyBjkF,QAAzB,CAAkC7gB,MAAM,CAACooC,MAAP,CAAciuF,MAAd,CAAqBI,oBAAvD;AACAz2H,IAAAA,MAAM,CAACq2H,MAAP,CAAcr2H,MAAd,CAAqB+C,EAArB,CAAwB,KAAxB,EAA+B4zH,YAA/B;AACA,WAAO,IAAP;AACD;;AAED,WAAS3hH,MAAT,CAAgBwQ,OAAhB,EAAyB;AACvB,QAAMoxG,YAAY,GAAG52H,MAAM,CAACq2H,MAAP,CAAcr2H,MAAnC;AACA,QAAI,CAAC42H,YAAL,EAAmB;AACnB,QAAMjxB,aAAa,GAAGixB,YAAY,CAACxuF,MAAb,CAAoBu9D,aAApB,KAAsC,MAAtC,GAA+CixB,YAAY,CAAChe,oBAAb,EAA/C,GAAqFge,YAAY,CAACxuF,MAAb,CAAoBu9D,aAA/H;AACA,QAAM4wB,gBAAgB,GAAGv2H,MAAM,CAACooC,MAAP,CAAciuF,MAAd,CAAqBE,gBAA9C;AACA,QAAMU,SAAS,GAAGV,gBAAgB,IAAI,CAACK,YAAY,CAACxuF,MAAb,CAAoBjoC,IAA3D;;AAEA,QAAIH,MAAM,CAACipG,SAAP,KAAqB2tB,YAAY,CAAC3tB,SAAlC,IAA+CguB,SAAnD,EAA8D;AAC5D,UAAIC,kBAAkB,GAAGN,YAAY,CAAC1jH,WAAtC;AACA,UAAIikH,cAAJ;AACA,UAAI9kH,SAAJ;;AAEA,UAAIukH,YAAY,CAACxuF,MAAb,CAAoBjoC,IAAxB,EAA8B;AAC5B,YAAIy2H,YAAY,CAAC3jH,MAAb,CAAoBgoE,EAApB,CAAuBi8C,kBAAvB,EAA2Ct1G,QAA3C,CAAoDg1G,YAAY,CAACxuF,MAAb,CAAoBupE,mBAAxE,CAAJ,EAAkG;AAChGilB,UAAAA,YAAY,CAACjiB,OAAb,GADgG,CACxE;;AAExBiiB,UAAAA,YAAY,CAAC/d,WAAb,GAA2B+d,YAAY,CAACxpB,UAAb,CAAwB,CAAxB,EAA2B3Q,UAAtD;AACAy6B,UAAAA,kBAAkB,GAAGN,YAAY,CAAC1jH,WAAlC;AACD,SAN2B,CAM1B;;;AAGF,YAAMkkH,eAAe,GAAGR,YAAY,CAAC3jH,MAAb,CAAoBgoE,EAApB,CAAuBi8C,kBAAvB,EAA2Cp5B,OAA3C,sCAAgF99F,MAAM,CAACipG,SAAvF,UAAsGhuB,EAAtG,CAAyG,CAAzG,EAA4Gx/E,KAA5G,EAAxB;AACA,YAAM47H,eAAe,GAAGT,YAAY,CAAC3jH,MAAb,CAAoBgoE,EAApB,CAAuBi8C,kBAAvB,EAA2Ct5B,OAA3C,sCAAgF59F,MAAM,CAACipG,SAAvF,UAAsGhuB,EAAtG,CAAyG,CAAzG,EAA4Gx/E,KAA5G,EAAxB;;AAEA,YAAI,OAAO27H,eAAP,KAA2B,WAA/B,EAA4C;AAC1CD,UAAAA,cAAc,GAAGE,eAAjB;AACD,SAFD,MAEO,IAAI,OAAOA,eAAP,KAA2B,WAA/B,EAA4C;AACjDF,UAAAA,cAAc,GAAGC,eAAjB;AACD,SAFM,MAEA,IAAIC,eAAe,GAAGH,kBAAlB,KAAyCA,kBAAkB,GAAGE,eAAlE,EAAmF;AACxFD,UAAAA,cAAc,GAAGP,YAAY,CAACxuF,MAAb,CAAoBinE,cAApB,GAAqC,CAArC,GAAyCgoB,eAAzC,GAA2DH,kBAA5E;AACD,SAFM,MAEA,IAAIG,eAAe,GAAGH,kBAAlB,GAAuCA,kBAAkB,GAAGE,eAAhE,EAAiF;AACtFD,UAAAA,cAAc,GAAGE,eAAjB;AACD,SAFM,MAEA;AACLF,UAAAA,cAAc,GAAGC,eAAjB;AACD;;AAED/kH,QAAAA,SAAS,GAAGrS,MAAM,CAACkT,WAAP,GAAqBlT,MAAM,CAACu5G,aAA5B,GAA4C,MAA5C,GAAqD,MAAjE;AACD,OAzBD,MAyBO;AACL4d,QAAAA,cAAc,GAAGn3H,MAAM,CAACipG,SAAxB;AACA52F,QAAAA,SAAS,GAAG8kH,cAAc,GAAGn3H,MAAM,CAACu5G,aAAxB,GAAwC,MAAxC,GAAiD,MAA7D;AACD;;AAED,UAAI0d,SAAJ,EAAe;AACbE,QAAAA,cAAc,IAAI9kH,SAAS,KAAK,MAAd,GAAuBkkH,gBAAvB,GAA0C,CAAC,CAAD,GAAKA,gBAAjE;AACD;;AAED,UAAIK,YAAY,CAAC3Y,oBAAb,IAAqC2Y,YAAY,CAAC3Y,oBAAb,CAAkC/8G,OAAlC,CAA0Ci2H,cAA1C,IAA4D,CAArG,EAAwG;AACtG,YAAIP,YAAY,CAACxuF,MAAb,CAAoBs/D,cAAxB,EAAwC;AACtC,cAAIyvB,cAAc,GAAGD,kBAArB,EAAyC;AACvCC,YAAAA,cAAc,GAAGA,cAAc,GAAGv6H,IAAI,CAACC,KAAL,CAAW8oG,aAAa,GAAG,CAA3B,CAAjB,GAAiD,CAAlE;AACD,WAFD,MAEO;AACLwxB,YAAAA,cAAc,GAAGA,cAAc,GAAGv6H,IAAI,CAACC,KAAL,CAAW8oG,aAAa,GAAG,CAA3B,CAAjB,GAAiD,CAAlE;AACD;AACF,SAND,MAMO,IAAIwxB,cAAc,GAAGD,kBAAjB,IAAuCN,YAAY,CAACxuF,MAAb,CAAoBinE,cAApB,KAAuC,CAAlF,EAAqF,CAAC;AAC5F;;AAEDunB,QAAAA,YAAY,CAACljH,OAAb,CAAqByjH,cAArB,EAAqC3xG,OAAO,GAAG,CAAH,GAAO5rB,SAAnD;AACD;AACF,KA1DsB,CA0DrB;;;AAGF,QAAI09H,gBAAgB,GAAG,CAAvB;AACA,QAAMC,gBAAgB,GAAGv3H,MAAM,CAACooC,MAAP,CAAciuF,MAAd,CAAqBG,qBAA9C;;AAEA,QAAIx2H,MAAM,CAACooC,MAAP,CAAcu9D,aAAd,GAA8B,CAA9B,IAAmC,CAAC3lG,MAAM,CAACooC,MAAP,CAAcs/D,cAAtD,EAAsE;AACpE4vB,MAAAA,gBAAgB,GAAGt3H,MAAM,CAACooC,MAAP,CAAcu9D,aAAjC;AACD;;AAED,QAAI,CAAC3lG,MAAM,CAACooC,MAAP,CAAciuF,MAAd,CAAqBC,oBAA1B,EAAgD;AAC9CgB,MAAAA,gBAAgB,GAAG,CAAnB;AACD;;AAEDA,IAAAA,gBAAgB,GAAG16H,IAAI,CAACC,KAAL,CAAWy6H,gBAAX,CAAnB;AACAV,IAAAA,YAAY,CAAC3jH,MAAb,CAAoB+O,WAApB,CAAgCu1G,gBAAhC;;AAEA,QAAIX,YAAY,CAACxuF,MAAb,CAAoBjoC,IAApB,IAA4By2H,YAAY,CAACxuF,MAAb,CAAoB0rE,OAApB,IAA+B8iB,YAAY,CAACxuF,MAAb,CAAoB0rE,OAApB,CAA4Bx4G,OAA3F,EAAoG;AAClG,WAAK,IAAIjB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGi9H,gBAApB,EAAsCj9H,CAAC,IAAI,CAA3C,EAA8C;AAC5Cu8H,QAAAA,YAAY,CAACxpB,UAAb,CAAwBpwG,QAAxB,sCAA8DgD,MAAM,CAACipG,SAAP,GAAmB5uG,CAAjF,UAAwFwmB,QAAxF,CAAiG02G,gBAAjG;AACD;AACF,KAJD,MAIO;AACL,WAAK,IAAIl9H,EAAC,GAAG,CAAb,EAAgBA,EAAC,GAAGi9H,gBAApB,EAAsCj9H,EAAC,IAAI,CAA3C,EAA8C;AAC5Cu8H,QAAAA,YAAY,CAAC3jH,MAAb,CAAoBgoE,EAApB,CAAuBj7E,MAAM,CAACipG,SAAP,GAAmB5uG,EAA1C,EAA6CwmB,QAA7C,CAAsD02G,gBAAtD;AACD;AACF;AACF;;AAEDx0H,EAAAA,EAAE,CAAC,YAAD,EAAe,YAAM;AACrB,QACEszH,MADF,GAEIr2H,MAAM,CAACooC,MAFX,CACEiuF,MADF;AAGA,QAAI,CAACA,MAAD,IAAW,CAACA,MAAM,CAACr2H,MAAvB,EAA+B;AAC/B6B,IAAAA,IAAI;AACJmT,IAAAA,MAAM,CAAC,IAAD,CAAN;AACD,GAPC,CAAF;AAQAjS,EAAAA,EAAE,CAAC,0CAAD,EAA6C,YAAM;AACnD,QAAI,CAAC/C,MAAM,CAACq2H,MAAP,CAAcr2H,MAAnB,EAA2B;AAC3BgV,IAAAA,MAAM;AACP,GAHC,CAAF;AAIAjS,EAAAA,EAAE,CAAC,eAAD,EAAkB,UAACigH,EAAD,EAAKjjH,QAAL,EAAkB;AACpC,QAAM62H,YAAY,GAAG52H,MAAM,CAACq2H,MAAP,CAAcr2H,MAAnC;AACA,QAAI,CAAC42H,YAAL,EAAmB;AACnBA,IAAAA,YAAY,CAAC/hB,aAAb,CAA2B90G,QAA3B;AACD,GAJC,CAAF;AAKAgD,EAAAA,EAAE,CAAC,eAAD,EAAkB,YAAM;AACxB,QAAM6zH,YAAY,GAAG52H,MAAM,CAACq2H,MAAP,CAAcr2H,MAAnC;AACA,QAAI,CAAC42H,YAAL,EAAmB;;AAEnB,QAAIF,aAAa,IAAIE,YAArB,EAAmC;AACjCA,MAAAA,YAAY,CAACt0H,OAAb;AACD;AACF,GAPC,CAAF;;AAQA,WAActC,MAAM,CAACq2H,MAArB,EAA6B;AAC3Bx0H,IAAAA,IAAI,EAAJA,IAD2B;AAE3BmT,IAAAA,MAAM,EAANA;AAF2B,GAA7B;AAID;;;;;;;;;;;;;;AC5MD;;AACA;;;;;;;;AACe,SAASwiH,OAAT,CAAiBtgB,IAAjB,EAAuB;AACpC,MACEl3G,MADF,GAIIk3G,IAJJ,CACEl3G,MADF;AAAA,MAEE4oG,YAFF,GAIIsO,IAJJ,CAEEtO,YAFF;AAAA,MAGE7lG,EAHF,GAIIm0G,IAJJ,CAGEn0G,EAHF;AAKA6lG,EAAAA,YAAY,CAAC;AACXkL,IAAAA,OAAO,EAAE;AACPx4G,MAAAA,OAAO,EAAE,KADF;AAEP2X,MAAAA,MAAM,EAAE,EAFD;AAGP8H,MAAAA,KAAK,EAAE,IAHA;AAIP08G,MAAAA,WAAW,EAAE,IAJN;AAKPC,MAAAA,cAAc,EAAE,IALT;AAMPC,MAAAA,oBAAoB,EAAE,IANf;AAOPC,MAAAA,eAAe,EAAE,CAPV;AAQPC,MAAAA,cAAc,EAAE;AART;AADE,GAAD,CAAZ;AAYA,MAAIC,cAAJ;AACA93H,EAAAA,MAAM,CAAC8zG,OAAP,GAAiB;AACf/4F,IAAAA,KAAK,EAAE,EADQ;AAEf1c,IAAAA,IAAI,EAAEzE,SAFS;AAGf0Q,IAAAA,EAAE,EAAE1Q,SAHW;AAIfqZ,IAAAA,MAAM,EAAE,EAJO;AAKfrQ,IAAAA,MAAM,EAAE,CALO;AAMf+jG,IAAAA,UAAU,EAAE;AANG,GAAjB;;AASA,WAAS8wB,WAAT,CAAqBpkH,KAArB,EAA4B5X,KAA5B,EAAmC;AACjC,QAAM2sC,MAAM,GAAGpoC,MAAM,CAACooC,MAAP,CAAc0rE,OAA7B;;AAEA,QAAI1rE,MAAM,CAACrtB,KAAP,IAAgB/a,MAAM,CAAC8zG,OAAP,CAAe/4F,KAAf,CAAqBtf,KAArB,CAApB,EAAiD;AAC/C,aAAOuE,MAAM,CAAC8zG,OAAP,CAAe/4F,KAAf,CAAqBtf,KAArB,CAAP;AACD;;AAED,QAAMumH,QAAQ,GAAG55E,MAAM,CAACqvF,WAAP,GAAqB,kBAAErvF,MAAM,CAACqvF,WAAP,CAAmBr5G,IAAnB,CAAwBpe,MAAxB,EAAgCqT,KAAhC,EAAuC5X,KAAvC,CAAF,CAArB,GAAwE,yCAAiBuE,MAAM,CAACooC,MAAP,CAAcojE,UAA/B,0CAAuE/vG,KAAvE,gBAAiF4X,KAAjF,YAAzF;AACA,QAAI,CAAC2uG,QAAQ,CAACznB,IAAT,CAAc,yBAAd,CAAL,EAA+CynB,QAAQ,CAACznB,IAAT,CAAc,yBAAd,EAAyC9+F,KAAzC;AAC/C,QAAI2sC,MAAM,CAACrtB,KAAX,EAAkB/a,MAAM,CAAC8zG,OAAP,CAAe/4F,KAAf,CAAqBtf,KAArB,IAA8BumH,QAA9B;AAClB,WAAOA,QAAP;AACD;;AAED,WAAShtG,MAAT,CAAgB+iH,KAAhB,EAAuB;AACrB,yBAII/3H,MAAM,CAACooC,MAJX;AAAA,QACEu9D,aADF,kBACEA,aADF;AAAA,QAEE0J,cAFF,kBAEEA,cAFF;AAAA,QAGE3H,cAHF,kBAGEA,cAHF;AAKA,gCAGI1nG,MAAM,CAACooC,MAAP,CAAc0rE,OAHlB;AAAA,QACE8jB,eADF,yBACEA,eADF;AAAA,QAEEC,cAFF,yBAEEA,cAFF;AAIA,0BAMI73H,MAAM,CAAC8zG,OANX;AAAA,QACQkkB,YADR,mBACE35H,IADF;AAAA,QAEM45H,UAFN,mBAEE3tH,EAFF;AAAA,QAGE2I,MAHF,mBAGEA,MAHF;AAAA,QAIcilH,kBAJd,mBAIEvxB,UAJF;AAAA,QAKUwxB,cALV,mBAKEv1H,MALF;;AAQA,QAAI,CAAC5C,MAAM,CAACooC,MAAP,CAAcq/D,OAAnB,EAA4B;AAC1BznG,MAAAA,MAAM,CAACorG,iBAAP;AACD;;AAED,QAAMl4F,WAAW,GAAGlT,MAAM,CAACkT,WAAP,IAAsB,CAA1C;AACA,QAAI8gH,UAAJ;AACA,QAAIh0H,MAAM,CAACwsG,YAAX,EAAyBwnB,UAAU,GAAG,OAAb,CAAzB,KAAmDA,UAAU,GAAGh0H,MAAM,CAAC63B,YAAP,KAAwB,MAAxB,GAAiC,KAA9C;AACnD,QAAIugG,WAAJ;AACA,QAAIC,YAAJ;;AAEA,QAAI3wB,cAAJ,EAAoB;AAClB0wB,MAAAA,WAAW,GAAGx7H,IAAI,CAACC,KAAL,CAAW8oG,aAAa,GAAG,CAA3B,IAAgC0J,cAAhC,GAAiDwoB,cAA/D;AACAQ,MAAAA,YAAY,GAAGz7H,IAAI,CAACC,KAAL,CAAW8oG,aAAa,GAAG,CAA3B,IAAgC0J,cAAhC,GAAiDuoB,eAAhE;AACD,KAHD,MAGO;AACLQ,MAAAA,WAAW,GAAGzyB,aAAa,IAAI0J,cAAc,GAAG,CAArB,CAAb,GAAuCwoB,cAArD;AACAQ,MAAAA,YAAY,GAAGhpB,cAAc,GAAGuoB,eAAhC;AACD;;AAED,QAAMv5H,IAAI,GAAGzB,IAAI,CAAC0H,GAAL,CAAS,CAAC4O,WAAW,IAAI,CAAhB,IAAqBmlH,YAA9B,EAA4C,CAA5C,CAAb;AACA,QAAM/tH,EAAE,GAAG1N,IAAI,CAACyH,GAAL,CAAS,CAAC6O,WAAW,IAAI,CAAhB,IAAqBklH,WAA9B,EAA2CnlH,MAAM,CAACpZ,MAAP,GAAgB,CAA3D,CAAX;AACA,QAAM+I,MAAM,GAAG,CAAC5C,MAAM,CAAC2mG,UAAP,CAAkBtoG,IAAlB,KAA2B,CAA5B,KAAkC2B,MAAM,CAAC2mG,UAAP,CAAkB,CAAlB,KAAwB,CAA1D,CAAf;;AACA,aAAc3mG,MAAM,CAAC8zG,OAArB,EAA8B;AAC5Bz1G,MAAAA,IAAI,EAAJA,IAD4B;AAE5BiM,MAAAA,EAAE,EAAFA,EAF4B;AAG5B1H,MAAAA,MAAM,EAANA,MAH4B;AAI5B+jG,MAAAA,UAAU,EAAE3mG,MAAM,CAAC2mG;AAJS,KAA9B;;AAOA,aAAS2xB,UAAT,GAAsB;AACpBt4H,MAAAA,MAAM,CAAComG,YAAP;AACApmG,MAAAA,MAAM,CAACqsG,cAAP;AACArsG,MAAAA,MAAM,CAACqrG,mBAAP;;AAEA,UAAIrrG,MAAM,CAACwsH,IAAP,IAAexsH,MAAM,CAACooC,MAAP,CAAcokF,IAAd,CAAmBlxH,OAAtC,EAA+C;AAC7C0E,QAAAA,MAAM,CAACwsH,IAAP,CAAY3lH,IAAZ;AACD;AACF;;AAED,QAAImxH,YAAY,KAAK35H,IAAjB,IAAyB45H,UAAU,KAAK3tH,EAAxC,IAA8C,CAACytH,KAAnD,EAA0D;AACxD,UAAI/3H,MAAM,CAAC2mG,UAAP,KAAsBuxB,kBAAtB,IAA4Ct1H,MAAM,KAAKu1H,cAA3D,EAA2E;AACzEn4H,QAAAA,MAAM,CAACiT,MAAP,CAAcqpF,GAAd,CAAkB03B,UAAlB,YAAiCpxH,MAAjC;AACD;;AAED5C,MAAAA,MAAM,CAACqsG,cAAP;AACA;AACD;;AAED,QAAIrsG,MAAM,CAACooC,MAAP,CAAc0rE,OAAd,CAAsB4jB,cAA1B,EAA0C;AACxC13H,MAAAA,MAAM,CAACooC,MAAP,CAAc0rE,OAAd,CAAsB4jB,cAAtB,CAAqCt5G,IAArC,CAA0Cpe,MAA1C,EAAkD;AAChD4C,QAAAA,MAAM,EAANA,MADgD;AAEhDvE,QAAAA,IAAI,EAAJA,IAFgD;AAGhDiM,QAAAA,EAAE,EAAFA,EAHgD;AAIhD2I,QAAAA,MAAM,EAAE,SAASslH,SAAT,GAAqB;AAC3B,cAAMC,cAAc,GAAG,EAAvB;;AAEA,eAAK,IAAIn+H,CAAC,GAAGgE,IAAb,EAAmBhE,CAAC,IAAIiQ,EAAxB,EAA4BjQ,CAAC,IAAI,CAAjC,EAAoC;AAClCm+H,YAAAA,cAAc,CAACp8H,IAAf,CAAoB6W,MAAM,CAAC5Y,CAAD,CAA1B;AACD;;AAED,iBAAOm+H,cAAP;AACD,SARO;AAJwC,OAAlD;;AAeA,UAAIx4H,MAAM,CAACooC,MAAP,CAAc0rE,OAAd,CAAsB6jB,oBAA1B,EAAgD;AAC9CW,QAAAA,UAAU;AACX;;AAED;AACD;;AAED,QAAMG,cAAc,GAAG,EAAvB;AACA,QAAMC,aAAa,GAAG,EAAtB;;AAEA,QAAIX,KAAJ,EAAW;AACT/3H,MAAAA,MAAM,CAACotG,UAAP,CAAkBnP,IAAlB,YAA2Bj+F,MAAM,CAACooC,MAAP,CAAcojE,UAAzC,GAAuDn3F,MAAvD;AACD,KAFD,MAEO;AACL,WAAK,IAAIha,CAAC,GAAG29H,YAAb,EAA2B39H,CAAC,IAAI49H,UAAhC,EAA4C59H,CAAC,IAAI,CAAjD,EAAoD;AAClD,YAAIA,CAAC,GAAGgE,IAAJ,IAAYhE,CAAC,GAAGiQ,EAApB,EAAwB;AACtBtK,UAAAA,MAAM,CAACotG,UAAP,CAAkBnP,IAAlB,YAA2Bj+F,MAAM,CAACooC,MAAP,CAAcojE,UAAzC,wCAAgFnxG,CAAhF,UAAuFga,MAAvF;AACD;AACF;AACF;;AAED,SAAK,IAAIha,EAAC,GAAG,CAAb,EAAgBA,EAAC,GAAG4Y,MAAM,CAACpZ,MAA3B,EAAmCQ,EAAC,IAAI,CAAxC,EAA2C;AACzC,UAAIA,EAAC,IAAIgE,IAAL,IAAahE,EAAC,IAAIiQ,EAAtB,EAA0B;AACxB,YAAI,OAAO2tH,UAAP,KAAsB,WAAtB,IAAqCF,KAAzC,EAAgD;AAC9CW,UAAAA,aAAa,CAACt8H,IAAd,CAAmB/B,EAAnB;AACD,SAFD,MAEO;AACL,cAAIA,EAAC,GAAG49H,UAAR,EAAoBS,aAAa,CAACt8H,IAAd,CAAmB/B,EAAnB;AACpB,cAAIA,EAAC,GAAG29H,YAAR,EAAsBS,cAAc,CAACr8H,IAAf,CAAoB/B,EAApB;AACvB;AACF;AACF;;AAEDq+H,IAAAA,aAAa,CAACn6H,OAAd,CAAsB,UAAA9C,KAAK,EAAI;AAC7BuE,MAAAA,MAAM,CAACotG,UAAP,CAAkBlQ,MAAlB,CAAyBu6B,WAAW,CAACxkH,MAAM,CAACxX,KAAD,CAAP,EAAgBA,KAAhB,CAApC;AACD,KAFD;AAGAg9H,IAAAA,cAAc,CAAC5iG,IAAf,CAAoB,UAAC7Y,CAAD,EAAI7gB,CAAJ;AAAA,aAAUA,CAAC,GAAG6gB,CAAd;AAAA,KAApB,EAAqCze,OAArC,CAA6C,UAAA9C,KAAK,EAAI;AACpDuE,MAAAA,MAAM,CAACotG,UAAP,CAAkB7P,OAAlB,CAA0Bk6B,WAAW,CAACxkH,MAAM,CAACxX,KAAD,CAAP,EAAgBA,KAAhB,CAArC;AACD,KAFD;AAGAuE,IAAAA,MAAM,CAACotG,UAAP,CAAkBpwG,QAAlB,CAA2B,eAA3B,EAA4Cs/F,GAA5C,CAAgD03B,UAAhD,YAA+DpxH,MAA/D;AACA01H,IAAAA,UAAU;AACX;;AAED,WAAShK,WAAT,CAAqBr7G,MAArB,EAA6B;AAC3B,QAAI,QAAOA,MAAP,MAAkB,QAAlB,IAA8B,YAAYA,MAA9C,EAAsD;AACpD,WAAK,IAAI5Y,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4Y,MAAM,CAACpZ,MAA3B,EAAmCQ,CAAC,IAAI,CAAxC,EAA2C;AACzC,YAAI4Y,MAAM,CAAC5Y,CAAD,CAAV,EAAe2F,MAAM,CAAC8zG,OAAP,CAAe7gG,MAAf,CAAsB7W,IAAtB,CAA2B6W,MAAM,CAAC5Y,CAAD,CAAjC;AAChB;AACF,KAJD,MAIO;AACL2F,MAAAA,MAAM,CAAC8zG,OAAP,CAAe7gG,MAAf,CAAsB7W,IAAtB,CAA2B6W,MAA3B;AACD;;AAED+B,IAAAA,MAAM,CAAC,IAAD,CAAN;AACD;;AAED,WAASu5G,YAAT,CAAsBt7G,MAAtB,EAA8B;AAC5B,QAAMC,WAAW,GAAGlT,MAAM,CAACkT,WAA3B;AACA,QAAI4nG,cAAc,GAAG5nG,WAAW,GAAG,CAAnC;AACA,QAAIylH,iBAAiB,GAAG,CAAxB;;AAEA,QAAIv6H,KAAK,CAACo1E,OAAN,CAAcvgE,MAAd,CAAJ,EAA2B;AACzB,WAAK,IAAI5Y,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4Y,MAAM,CAACpZ,MAA3B,EAAmCQ,CAAC,IAAI,CAAxC,EAA2C;AACzC,YAAI4Y,MAAM,CAAC5Y,CAAD,CAAV,EAAe2F,MAAM,CAAC8zG,OAAP,CAAe7gG,MAAf,CAAsBgM,OAAtB,CAA8BhM,MAAM,CAAC5Y,CAAD,CAApC;AAChB;;AAEDygH,MAAAA,cAAc,GAAG5nG,WAAW,GAAGD,MAAM,CAACpZ,MAAtC;AACA8+H,MAAAA,iBAAiB,GAAG1lH,MAAM,CAACpZ,MAA3B;AACD,KAPD,MAOO;AACLmG,MAAAA,MAAM,CAAC8zG,OAAP,CAAe7gG,MAAf,CAAsBgM,OAAtB,CAA8BhM,MAA9B;AACD;;AAED,QAAIjT,MAAM,CAACooC,MAAP,CAAc0rE,OAAd,CAAsB/4F,KAA1B,EAAiC;AAC/B,UAAMA,KAAK,GAAG/a,MAAM,CAAC8zG,OAAP,CAAe/4F,KAA7B;AACA,UAAM69G,QAAQ,GAAG,EAAjB;AACA1xH,MAAAA,MAAM,CAACC,IAAP,CAAY4T,KAAZ,EAAmBxc,OAAnB,CAA2B,UAAAs6H,WAAW,EAAI;AACxC,YAAMC,SAAS,GAAG/9G,KAAK,CAAC89G,WAAD,CAAvB;AACA,YAAME,aAAa,GAAGD,SAAS,CAACv+B,IAAV,CAAe,yBAAf,CAAtB;;AAEA,YAAIw+B,aAAJ,EAAmB;AACjBD,UAAAA,SAAS,CAACv+B,IAAV,CAAe,yBAAf,EAA0C3hG,QAAQ,CAACmgI,aAAD,EAAgB,EAAhB,CAAR,GAA8BJ,iBAAxE;AACD;;AAEDC,QAAAA,QAAQ,CAAChgI,QAAQ,CAACigI,WAAD,EAAc,EAAd,CAAR,GAA4BF,iBAA7B,CAAR,GAA0DG,SAA1D;AACD,OATD;AAUA94H,MAAAA,MAAM,CAAC8zG,OAAP,CAAe/4F,KAAf,GAAuB69G,QAAvB;AACD;;AAED5jH,IAAAA,MAAM,CAAC,IAAD,CAAN;AACAhV,IAAAA,MAAM,CAAC0T,OAAP,CAAeonG,cAAf,EAA+B,CAA/B;AACD;;AAED,WAAS2T,WAAT,CAAqBK,aAArB,EAAoC;AAClC,QAAI,OAAOA,aAAP,KAAyB,WAAzB,IAAwCA,aAAa,KAAK,IAA9D,EAAoE;AACpE,QAAI57G,WAAW,GAAGlT,MAAM,CAACkT,WAAzB;;AAEA,QAAI9U,KAAK,CAACo1E,OAAN,CAAcs7C,aAAd,CAAJ,EAAkC;AAChC,WAAK,IAAIz0H,CAAC,GAAGy0H,aAAa,CAACj1H,MAAd,GAAuB,CAApC,EAAuCQ,CAAC,IAAI,CAA5C,EAA+CA,CAAC,IAAI,CAApD,EAAuD;AACrD2F,QAAAA,MAAM,CAAC8zG,OAAP,CAAe7gG,MAAf,CAAsBiQ,MAAtB,CAA6B4rG,aAAa,CAACz0H,CAAD,CAA1C,EAA+C,CAA/C;;AAEA,YAAI2F,MAAM,CAACooC,MAAP,CAAc0rE,OAAd,CAAsB/4F,KAA1B,EAAiC;AAC/B,iBAAO/a,MAAM,CAAC8zG,OAAP,CAAe/4F,KAAf,CAAqB+zG,aAAa,CAACz0H,CAAD,CAAlC,CAAP;AACD;;AAED,YAAIy0H,aAAa,CAACz0H,CAAD,CAAb,GAAmB6Y,WAAvB,EAAoCA,WAAW,IAAI,CAAf;AACpCA,QAAAA,WAAW,GAAGtW,IAAI,CAAC0H,GAAL,CAAS4O,WAAT,EAAsB,CAAtB,CAAd;AACD;AACF,KAXD,MAWO;AACLlT,MAAAA,MAAM,CAAC8zG,OAAP,CAAe7gG,MAAf,CAAsBiQ,MAAtB,CAA6B4rG,aAA7B,EAA4C,CAA5C;;AAEA,UAAI9uH,MAAM,CAACooC,MAAP,CAAc0rE,OAAd,CAAsB/4F,KAA1B,EAAiC;AAC/B,eAAO/a,MAAM,CAAC8zG,OAAP,CAAe/4F,KAAf,CAAqB+zG,aAArB,CAAP;AACD;;AAED,UAAIA,aAAa,GAAG57G,WAApB,EAAiCA,WAAW,IAAI,CAAf;AACjCA,MAAAA,WAAW,GAAGtW,IAAI,CAAC0H,GAAL,CAAS4O,WAAT,EAAsB,CAAtB,CAAd;AACD;;AAED8B,IAAAA,MAAM,CAAC,IAAD,CAAN;AACAhV,IAAAA,MAAM,CAAC0T,OAAP,CAAeR,WAAf,EAA4B,CAA5B;AACD;;AAED,WAASw7G,eAAT,GAA2B;AACzB1uH,IAAAA,MAAM,CAAC8zG,OAAP,CAAe7gG,MAAf,GAAwB,EAAxB;;AAEA,QAAIjT,MAAM,CAACooC,MAAP,CAAc0rE,OAAd,CAAsB/4F,KAA1B,EAAiC;AAC/B/a,MAAAA,MAAM,CAAC8zG,OAAP,CAAe/4F,KAAf,GAAuB,EAAvB;AACD;;AAED/F,IAAAA,MAAM,CAAC,IAAD,CAAN;AACAhV,IAAAA,MAAM,CAAC0T,OAAP,CAAe,CAAf,EAAkB,CAAlB;AACD;;AAED3Q,EAAAA,EAAE,CAAC,YAAD,EAAe,YAAM;AACrB,QAAI,CAAC/C,MAAM,CAACooC,MAAP,CAAc0rE,OAAd,CAAsBx4G,OAA3B,EAAoC;AACpC0E,IAAAA,MAAM,CAAC8zG,OAAP,CAAe7gG,MAAf,GAAwBjT,MAAM,CAACooC,MAAP,CAAc0rE,OAAd,CAAsB7gG,MAA9C;AACAjT,IAAAA,MAAM,CAACs6F,UAAP,CAAkBl+F,IAAlB,WAA0B4D,MAAM,CAACooC,MAAP,CAAcm9D,sBAAxC;AACAvlG,IAAAA,MAAM,CAACooC,MAAP,CAAcsoE,mBAAd,GAAoC,IAApC;AACA1wG,IAAAA,MAAM,CAACmlG,cAAP,CAAsBuL,mBAAtB,GAA4C,IAA5C;;AAEA,QAAI,CAAC1wG,MAAM,CAACooC,MAAP,CAAch2B,YAAnB,EAAiC;AAC/B4C,MAAAA,MAAM;AACP;AACF,GAVC,CAAF;AAWAjS,EAAAA,EAAE,CAAC,cAAD,EAAiB,YAAM;AACvB,QAAI,CAAC/C,MAAM,CAACooC,MAAP,CAAc0rE,OAAd,CAAsBx4G,OAA3B,EAAoC;;AAEpC,QAAI0E,MAAM,CAACooC,MAAP,CAAcq/D,OAAd,IAAyB,CAACznG,MAAM,CAAC65G,iBAArC,EAAwD;AACtD/1F,MAAAA,YAAY,CAACg0G,cAAD,CAAZ;AACAA,MAAAA,cAAc,GAAG12H,UAAU,CAAC,YAAM;AAChC4T,QAAAA,MAAM;AACP,OAF0B,EAExB,GAFwB,CAA3B;AAGD,KALD,MAKO;AACLA,MAAAA,MAAM;AACP;AACF,GAXC,CAAF;AAYAjS,EAAAA,EAAE,CAAC,oBAAD,EAAuB,YAAM;AAC7B,QAAI,CAAC/C,MAAM,CAACooC,MAAP,CAAc0rE,OAAd,CAAsBx4G,OAA3B,EAAoC;;AAEpC,QAAI0E,MAAM,CAACooC,MAAP,CAAcq/D,OAAlB,EAA2B;AACzB,iCAAeznG,MAAM,CAACstG,SAAtB,EAAiC,uBAAjC,YAA6DttG,MAAM,CAACk8G,WAApE;AACD;AACF,GANC,CAAF;;AAOA,WAAcl8G,MAAM,CAAC8zG,OAArB,EAA8B;AAC5Bwa,IAAAA,WAAW,EAAXA,WAD4B;AAE5BC,IAAAA,YAAY,EAAZA,YAF4B;AAG5BE,IAAAA,WAAW,EAAXA,WAH4B;AAI5BC,IAAAA,eAAe,EAAfA,eAJ4B;AAK5B15G,IAAAA,MAAM,EAANA;AAL4B,GAA9B;AAOD;;;;;;;;;;;;;;ACnSD;;AACA;;AACA;;;;;;AACe,SAASgkH,IAAT,CAAc9hB,IAAd,EAAoB;AACjC,MACEl3G,MADF,GAKIk3G,IALJ,CACEl3G,MADF;AAAA,MAEE4oG,YAFF,GAKIsO,IALJ,CAEEtO,YAFF;AAAA,MAGE7lG,EAHF,GAKIm0G,IALJ,CAGEn0G,EAHF;AAAA,MAIEkjG,IAJF,GAKIiR,IALJ,CAIEjR,IAJF;AAMA,MAAM5oG,MAAM,GAAG,2BAAf;AACAurG,EAAAA,YAAY,CAAC;AACXqwB,IAAAA,IAAI,EAAE;AACJ39H,MAAAA,OAAO,EAAE,KADL;AAEJ49H,MAAAA,QAAQ,EAAE,CAFN;AAGJ10B,MAAAA,QAAQ,EAAE,CAHN;AAIJlkG,MAAAA,MAAM,EAAE,IAJJ;AAKJ64H,MAAAA,cAAc,EAAE,uBALZ;AAMJC,MAAAA,gBAAgB,EAAE;AANd;AADK,GAAD,CAAZ;AAUAp5H,EAAAA,MAAM,CAACi5H,IAAP,GAAc;AACZ39H,IAAAA,OAAO,EAAE;AADG,GAAd;AAGA,MAAIi5H,YAAY,GAAG,CAAnB;AACA,MAAI8E,SAAS,GAAG,KAAhB;AACA,MAAIC,eAAJ;AACA,MAAIC,kBAAJ;AACA,MAAIC,gBAAJ;AACA,MAAMC,OAAO,GAAG;AACdzX,IAAAA,QAAQ,EAAEpoH,SADI;AAEd8/H,IAAAA,UAAU,EAAE9/H,SAFE;AAGd+/H,IAAAA,WAAW,EAAE//H,SAHC;AAId2zH,IAAAA,QAAQ,EAAE3zH,SAJI;AAKdggI,IAAAA,YAAY,EAAEhgI,SALA;AAMds/H,IAAAA,QAAQ,EAAE;AANI,GAAhB;AAQA,MAAM3xH,KAAK,GAAG;AACZoiG,IAAAA,SAAS,EAAE/vG,SADC;AAEZgwG,IAAAA,OAAO,EAAEhwG,SAFG;AAGZ+wG,IAAAA,QAAQ,EAAE/wG,SAHE;AAIZgxG,IAAAA,QAAQ,EAAEhxG,SAJE;AAKZmjC,IAAAA,IAAI,EAAEnjC,SALM;AAMZojC,IAAAA,IAAI,EAAEpjC,SANM;AAOZgjC,IAAAA,IAAI,EAAEhjC,SAPM;AAQZijC,IAAAA,IAAI,EAAEjjC,SARM;AASZoE,IAAAA,KAAK,EAAEpE,SATK;AAUZmE,IAAAA,MAAM,EAAEnE,SAVI;AAWZuiC,IAAAA,MAAM,EAAEviC,SAXI;AAYZyiC,IAAAA,MAAM,EAAEziC,SAZI;AAaZigI,IAAAA,YAAY,EAAE,EAbF;AAcZC,IAAAA,cAAc,EAAE;AAdJ,GAAd;AAgBA,MAAM1wB,QAAQ,GAAG;AACfxhG,IAAAA,CAAC,EAAEhO,SADY;AAEfiO,IAAAA,CAAC,EAAEjO,SAFY;AAGfmgI,IAAAA,aAAa,EAAEngI,SAHA;AAIfogI,IAAAA,aAAa,EAAEpgI,SAJA;AAKfqgI,IAAAA,QAAQ,EAAErgI;AALK,GAAjB;AAOA,MAAIyO,KAAK,GAAG,CAAZ;AACAnB,EAAAA,MAAM,CAACsX,cAAP,CAAsBxe,MAAM,CAACi5H,IAA7B,EAAmC,OAAnC,EAA4C;AAC1Cz+G,IAAAA,GAD0C,iBACpC;AACJ,aAAOnS,KAAP;AACD,KAHyC;AAK1CzC,IAAAA,GAL0C,eAKtCxB,KALsC,EAK/B;AACT,UAAIiE,KAAK,KAAKjE,KAAd,EAAqB;AACnB,YAAMyxG,OAAO,GAAG4jB,OAAO,CAAClM,QAAR,GAAmBkM,OAAO,CAAClM,QAAR,CAAiB,CAAjB,CAAnB,GAAyC3zH,SAAzD;AACA,YAAM2xG,OAAO,GAAGkuB,OAAO,CAACzX,QAAR,GAAmByX,OAAO,CAACzX,QAAR,CAAiB,CAAjB,CAAnB,GAAyCpoH,SAAzD;AACAqsG,QAAAA,IAAI,CAAC,YAAD,EAAe7hG,KAAf,EAAsByxG,OAAtB,EAA+BtK,OAA/B,CAAJ;AACD;;AAEDljG,MAAAA,KAAK,GAAGjE,KAAR;AACD;AAbyC,GAA5C;;AAiBA,WAAS81H,yBAAT,CAAmCx9H,CAAnC,EAAsC;AACpC,QAAIA,CAAC,CAAC03G,aAAF,CAAgBv6G,MAAhB,GAAyB,CAA7B,EAAgC,OAAO,CAAP;AAChC,QAAMyhD,EAAE,GAAG5+C,CAAC,CAAC03G,aAAF,CAAgB,CAAhB,EAAmBE,KAA9B;AACA,QAAM/4D,EAAE,GAAG7+C,CAAC,CAAC03G,aAAF,CAAgB,CAAhB,EAAmBG,KAA9B;AACA,QAAM/4D,EAAE,GAAG9+C,CAAC,CAAC03G,aAAF,CAAgB,CAAhB,EAAmBE,KAA9B;AACA,QAAM74D,EAAE,GAAG/+C,CAAC,CAAC03G,aAAF,CAAgB,CAAhB,EAAmBG,KAA9B;AACA,QAAM1+F,QAAQ,GAAGjZ,IAAI,CAACgpC,IAAL,CAAU,SAAC4V,EAAE,GAAGF,EAAN,EAAa,CAAb,aAAkBG,EAAE,GAAGF,EAAvB,EAA8B,CAA9B,CAAV,CAAjB;AACA,WAAO1lC,QAAP;AACD,GAnFgC,CAmF/B;;;AAGF,WAASskH,cAAT,CAAwBz9H,CAAxB,EAA2B;AACzB,QAAMyqG,OAAO,GAAGnnG,MAAM,CAACmnG,OAAvB;AACA,QAAM/+D,MAAM,GAAGpoC,MAAM,CAACooC,MAAP,CAAc6wF,IAA7B;AACAM,IAAAA,kBAAkB,GAAG,KAArB;AACAC,IAAAA,gBAAgB,GAAG,KAAnB;;AAEA,QAAI,CAACryB,OAAO,CAACizB,QAAb,EAAuB;AACrB,UAAI19H,CAAC,CAACrD,IAAF,KAAW,YAAX,IAA2BqD,CAAC,CAACrD,IAAF,KAAW,YAAX,IAA2BqD,CAAC,CAAC03G,aAAF,CAAgBv6G,MAAhB,GAAyB,CAAnF,EAAsF;AACpF;AACD;;AAED0/H,MAAAA,kBAAkB,GAAG,IAArB;AACAE,MAAAA,OAAO,CAACY,UAAR,GAAqBH,yBAAyB,CAACx9H,CAAD,CAA9C;AACD;;AAED,QAAI,CAAC+8H,OAAO,CAACzX,QAAT,IAAqB,CAACyX,OAAO,CAACzX,QAAR,CAAiBnoH,MAA3C,EAAmD;AACjD4/H,MAAAA,OAAO,CAACzX,QAAR,GAAmB,kBAAEtlH,CAAC,CAACwS,MAAJ,EAAYjM,OAAZ,YAAwBjD,MAAM,CAACooC,MAAP,CAAcojE,UAAtC,EAAnB;AACA,UAAIiuB,OAAO,CAACzX,QAAR,CAAiBnoH,MAAjB,KAA4B,CAAhC,EAAmC4/H,OAAO,CAACzX,QAAR,GAAmBhiH,MAAM,CAACiT,MAAP,CAAcgoE,EAAd,CAAiBj7E,MAAM,CAACkT,WAAxB,CAAnB;AACnCumH,MAAAA,OAAO,CAAClM,QAAR,GAAmBkM,OAAO,CAACzX,QAAR,CAAiB/jB,IAAjB,YAA0B71D,MAAM,CAAC+wF,cAAjC,GAAmDl+C,EAAnD,CAAsD,CAAtD,EAAyDgjB,IAAzD,CAA8D,gDAA9D,EAAgHhjB,EAAhH,CAAmH,CAAnH,CAAnB;AACAw+C,MAAAA,OAAO,CAACG,YAAR,GAAuBH,OAAO,CAAClM,QAAR,CAAiBrwH,MAAjB,YAA4BkrC,MAAM,CAAC+wF,cAAnC,EAAvB;AACAM,MAAAA,OAAO,CAACP,QAAR,GAAmBO,OAAO,CAACG,YAAR,CAAqBr/B,IAArB,CAA0B,kBAA1B,KAAiDnyD,MAAM,CAAC8wF,QAA3E;;AAEA,UAAIO,OAAO,CAACG,YAAR,CAAqB//H,MAArB,KAAgC,CAApC,EAAuC;AACrC4/H,QAAAA,OAAO,CAAClM,QAAR,GAAmB3zH,SAAnB;AACA;AACD;AACF;;AAED,QAAI6/H,OAAO,CAAClM,QAAZ,EAAsB;AACpBkM,MAAAA,OAAO,CAAClM,QAAR,CAAiBxkH,UAAjB,CAA4B,CAA5B;AACD;;AAEDswH,IAAAA,SAAS,GAAG,IAAZ;AACD;;AAED,WAASiB,eAAT,CAAyB59H,CAAzB,EAA4B;AAC1B,QAAMyqG,OAAO,GAAGnnG,MAAM,CAACmnG,OAAvB;AACA,QAAM/+D,MAAM,GAAGpoC,MAAM,CAACooC,MAAP,CAAc6wF,IAA7B;AACA,QAAMA,IAAI,GAAGj5H,MAAM,CAACi5H,IAApB;;AAEA,QAAI,CAAC9xB,OAAO,CAACizB,QAAb,EAAuB;AACrB,UAAI19H,CAAC,CAACrD,IAAF,KAAW,WAAX,IAA0BqD,CAAC,CAACrD,IAAF,KAAW,WAAX,IAA0BqD,CAAC,CAAC03G,aAAF,CAAgBv6G,MAAhB,GAAyB,CAAjF,EAAoF;AAClF;AACD;;AAED2/H,MAAAA,gBAAgB,GAAG,IAAnB;AACAC,MAAAA,OAAO,CAACc,SAAR,GAAoBL,yBAAyB,CAACx9H,CAAD,CAA7C;AACD;;AAED,QAAI,CAAC+8H,OAAO,CAAClM,QAAT,IAAqBkM,OAAO,CAAClM,QAAR,CAAiB1zH,MAAjB,KAA4B,CAArD,EAAwD;AACtD,UAAI6C,CAAC,CAACrD,IAAF,KAAW,eAAf,EAAgC8gI,cAAc,CAACz9H,CAAD,CAAd;AAChC;AACD;;AAED,QAAIyqG,OAAO,CAACizB,QAAZ,EAAsB;AACpBnB,MAAAA,IAAI,CAAC5wH,KAAL,GAAa3L,CAAC,CAAC2L,KAAF,GAAUksH,YAAvB;AACD,KAFD,MAEO;AACL0E,MAAAA,IAAI,CAAC5wH,KAAL,GAAaoxH,OAAO,CAACc,SAAR,GAAoBd,OAAO,CAACY,UAA5B,GAAyC9F,YAAtD;AACD;;AAED,QAAI0E,IAAI,CAAC5wH,KAAL,GAAaoxH,OAAO,CAACP,QAAzB,EAAmC;AACjCD,MAAAA,IAAI,CAAC5wH,KAAL,GAAaoxH,OAAO,CAACP,QAAR,GAAmB,CAAnB,YAAwBD,IAAI,CAAC5wH,KAAL,GAAaoxH,OAAO,CAACP,QAArB,GAAgC,CAAxD,EAA8D,GAA9D,CAAb;AACD;;AAED,QAAID,IAAI,CAAC5wH,KAAL,GAAa+/B,MAAM,CAACo8D,QAAxB,EAAkC;AAChCy0B,MAAAA,IAAI,CAAC5wH,KAAL,GAAa+/B,MAAM,CAACo8D,QAAP,GAAkB,CAAlB,YAAuBp8D,MAAM,CAACo8D,QAAP,GAAkBy0B,IAAI,CAAC5wH,KAAvB,GAA+B,CAAtD,EAA4D,GAA5D,CAAb;AACD;;AAEDoxH,IAAAA,OAAO,CAAClM,QAAR,CAAiBryB,SAAjB,oCAAuD+9B,IAAI,CAAC5wH,KAA5D;AACD;;AAED,WAASmyH,YAAT,CAAsB99H,CAAtB,EAAyB;AACvB,QAAMwqG,MAAM,GAAGlnG,MAAM,CAACknG,MAAtB;AACA,QAAMC,OAAO,GAAGnnG,MAAM,CAACmnG,OAAvB;AACA,QAAM/+D,MAAM,GAAGpoC,MAAM,CAACooC,MAAP,CAAc6wF,IAA7B;AACA,QAAMA,IAAI,GAAGj5H,MAAM,CAACi5H,IAApB;;AAEA,QAAI,CAAC9xB,OAAO,CAACizB,QAAb,EAAuB;AACrB,UAAI,CAACb,kBAAD,IAAuB,CAACC,gBAA5B,EAA8C;AAC5C;AACD;;AAED,UAAI98H,CAAC,CAACrD,IAAF,KAAW,UAAX,IAAyBqD,CAAC,CAACrD,IAAF,KAAW,UAAX,IAAyBqD,CAAC,CAAC23G,cAAF,CAAiBx6G,MAAjB,GAA0B,CAAnD,IAAwD,CAACqtG,MAAM,CAACK,OAA7F,EAAsG;AACpG;AACD;;AAEDgyB,MAAAA,kBAAkB,GAAG,KAArB;AACAC,MAAAA,gBAAgB,GAAG,KAAnB;AACD;;AAED,QAAI,CAACC,OAAO,CAAClM,QAAT,IAAqBkM,OAAO,CAAClM,QAAR,CAAiB1zH,MAAjB,KAA4B,CAArD,EAAwD;AACxDo/H,IAAAA,IAAI,CAAC5wH,KAAL,GAAazL,IAAI,CAAC0H,GAAL,CAAS1H,IAAI,CAACyH,GAAL,CAAS40H,IAAI,CAAC5wH,KAAd,EAAqBoxH,OAAO,CAACP,QAA7B,CAAT,EAAiD9wF,MAAM,CAACo8D,QAAxD,CAAb;AACAi1B,IAAAA,OAAO,CAAClM,QAAR,CAAiBxkH,UAAjB,CAA4B/I,MAAM,CAACooC,MAAP,CAAchoC,KAA1C,EAAiD86F,SAAjD,oCAAuF+9B,IAAI,CAAC5wH,KAA5F;AACAksH,IAAAA,YAAY,GAAG0E,IAAI,CAAC5wH,KAApB;AACAgxH,IAAAA,SAAS,GAAG,KAAZ;AACA,QAAIJ,IAAI,CAAC5wH,KAAL,KAAe,CAAnB,EAAsBoxH,OAAO,CAACzX,QAAR,GAAmBpoH,SAAnB;AACvB;;AAED,WAAS64G,YAAT,CAAsB/1G,CAAtB,EAAyB;AACvB,QAAMwqG,MAAM,GAAGlnG,MAAM,CAACknG,MAAtB;AACA,QAAI,CAACuyB,OAAO,CAAClM,QAAT,IAAqBkM,OAAO,CAAClM,QAAR,CAAiB1zH,MAAjB,KAA4B,CAArD,EAAwD;AACxD,QAAI0N,KAAK,CAACoiG,SAAV,EAAqB;AACrB,QAAIzC,MAAM,CAACK,OAAP,IAAkB7qG,CAAC,CAACkkD,UAAxB,EAAoClkD,CAAC,CAAC+B,cAAF;AACpC8I,IAAAA,KAAK,CAACoiG,SAAN,GAAkB,IAAlB;AACApiG,IAAAA,KAAK,CAACsyH,YAAN,CAAmBjyH,CAAnB,GAAuBlL,CAAC,CAACrD,IAAF,KAAW,YAAX,GAA0BqD,CAAC,CAAC03G,aAAF,CAAgB,CAAhB,EAAmBE,KAA7C,GAAqD53G,CAAC,CAAC43G,KAA9E;AACA/sG,IAAAA,KAAK,CAACsyH,YAAN,CAAmBhyH,CAAnB,GAAuBnL,CAAC,CAACrD,IAAF,KAAW,YAAX,GAA0BqD,CAAC,CAAC03G,aAAF,CAAgB,CAAhB,EAAmBG,KAA7C,GAAqD73G,CAAC,CAAC63G,KAA9E;AACD;;AAED,WAAS7B,WAAT,CAAqBh2G,CAArB,EAAwB;AACtB,QAAMu8H,IAAI,GAAGj5H,MAAM,CAACi5H,IAApB;AACA,QAAI,CAACQ,OAAO,CAAClM,QAAT,IAAqBkM,OAAO,CAAClM,QAAR,CAAiB1zH,MAAjB,KAA4B,CAArD,EAAwD;AACxDmG,IAAAA,MAAM,CAAC0qG,UAAP,GAAoB,KAApB;AACA,QAAI,CAACnjG,KAAK,CAACoiG,SAAP,IAAoB,CAAC8vB,OAAO,CAACzX,QAAjC,EAA2C;;AAE3C,QAAI,CAACz6G,KAAK,CAACqiG,OAAX,EAAoB;AAClBriG,MAAAA,KAAK,CAACvJ,KAAN,GAAcy7H,OAAO,CAAClM,QAAR,CAAiB,CAAjB,EAAoBvoH,WAAlC;AACAuC,MAAAA,KAAK,CAACxJ,MAAN,GAAe07H,OAAO,CAAClM,QAAR,CAAiB,CAAjB,EAAoBjqH,YAAnC;AACAiE,MAAAA,KAAK,CAAC40B,MAAN,GAAe,yBAAas9F,OAAO,CAACG,YAAR,CAAqB,CAArB,CAAb,EAAsC,GAAtC,KAA8C,CAA7D;AACAryH,MAAAA,KAAK,CAAC80B,MAAN,GAAe,yBAAao9F,OAAO,CAACG,YAAR,CAAqB,CAArB,CAAb,EAAsC,GAAtC,KAA8C,CAA7D;AACAH,MAAAA,OAAO,CAACC,UAAR,GAAqBD,OAAO,CAACzX,QAAR,CAAiB,CAAjB,EAAoBh9G,WAAzC;AACAy0H,MAAAA,OAAO,CAACE,WAAR,GAAsBF,OAAO,CAACzX,QAAR,CAAiB,CAAjB,EAAoB1+G,YAA1C;AACAm2H,MAAAA,OAAO,CAACG,YAAR,CAAqB7wH,UAArB,CAAgC,CAAhC;AACD,KAdqB,CAcpB;;;AAGF,QAAM0xH,WAAW,GAAGlzH,KAAK,CAACvJ,KAAN,GAAci7H,IAAI,CAAC5wH,KAAvC;AACA,QAAMqyH,YAAY,GAAGnzH,KAAK,CAACxJ,MAAN,GAAek7H,IAAI,CAAC5wH,KAAzC;AACA,QAAIoyH,WAAW,GAAGhB,OAAO,CAACC,UAAtB,IAAoCgB,YAAY,GAAGjB,OAAO,CAACE,WAA/D,EAA4E;AAC5EpyH,IAAAA,KAAK,CAACw1B,IAAN,GAAangC,IAAI,CAACyH,GAAL,CAASo1H,OAAO,CAACC,UAAR,GAAqB,CAArB,GAAyBe,WAAW,GAAG,CAAhD,EAAmD,CAAnD,CAAb;AACAlzH,IAAAA,KAAK,CAACq1B,IAAN,GAAa,CAACr1B,KAAK,CAACw1B,IAApB;AACAx1B,IAAAA,KAAK,CAACy1B,IAAN,GAAapgC,IAAI,CAACyH,GAAL,CAASo1H,OAAO,CAACE,WAAR,GAAsB,CAAtB,GAA0Be,YAAY,GAAG,CAAlD,EAAqD,CAArD,CAAb;AACAnzH,IAAAA,KAAK,CAACs1B,IAAN,GAAa,CAACt1B,KAAK,CAACy1B,IAApB;AACAz1B,IAAAA,KAAK,CAACuyH,cAAN,CAAqBlyH,CAArB,GAAyBlL,CAAC,CAACrD,IAAF,KAAW,WAAX,GAAyBqD,CAAC,CAAC03G,aAAF,CAAgB,CAAhB,EAAmBE,KAA5C,GAAoD53G,CAAC,CAAC43G,KAA/E;AACA/sG,IAAAA,KAAK,CAACuyH,cAAN,CAAqBjyH,CAArB,GAAyBnL,CAAC,CAACrD,IAAF,KAAW,WAAX,GAAyBqD,CAAC,CAAC03G,aAAF,CAAgB,CAAhB,EAAmBG,KAA5C,GAAoD73G,CAAC,CAAC63G,KAA/E;;AAEA,QAAI,CAAChtG,KAAK,CAACqiG,OAAP,IAAkB,CAACyvB,SAAvB,EAAkC;AAChC,UAAIr5H,MAAM,CAAC63B,YAAP,OAA0Bj7B,IAAI,CAACC,KAAL,CAAW0K,KAAK,CAACw1B,IAAjB,MAA2BngC,IAAI,CAACC,KAAL,CAAW0K,KAAK,CAAC40B,MAAjB,CAA3B,IAAuD50B,KAAK,CAACuyH,cAAN,CAAqBlyH,CAArB,GAAyBL,KAAK,CAACsyH,YAAN,CAAmBjyH,CAAnG,IAAwGhL,IAAI,CAACC,KAAL,CAAW0K,KAAK,CAACq1B,IAAjB,MAA2BhgC,IAAI,CAACC,KAAL,CAAW0K,KAAK,CAAC40B,MAAjB,CAA3B,IAAuD50B,KAAK,CAACuyH,cAAN,CAAqBlyH,CAArB,GAAyBL,KAAK,CAACsyH,YAAN,CAAmBjyH,CAArO,CAAJ,EAA6O;AAC3OL,QAAAA,KAAK,CAACoiG,SAAN,GAAkB,KAAlB;AACA;AACD;;AAED,UAAI,CAAC3pG,MAAM,CAAC63B,YAAP,EAAD,KAA2Bj7B,IAAI,CAACC,KAAL,CAAW0K,KAAK,CAACy1B,IAAjB,MAA2BpgC,IAAI,CAACC,KAAL,CAAW0K,KAAK,CAAC80B,MAAjB,CAA3B,IAAuD90B,KAAK,CAACuyH,cAAN,CAAqBjyH,CAArB,GAAyBN,KAAK,CAACsyH,YAAN,CAAmBhyH,CAAnG,IAAwGjL,IAAI,CAACC,KAAL,CAAW0K,KAAK,CAACs1B,IAAjB,MAA2BjgC,IAAI,CAACC,KAAL,CAAW0K,KAAK,CAAC80B,MAAjB,CAA3B,IAAuD90B,KAAK,CAACuyH,cAAN,CAAqBjyH,CAArB,GAAyBN,KAAK,CAACsyH,YAAN,CAAmBhyH,CAAtO,CAAJ,EAA8O;AAC5ON,QAAAA,KAAK,CAACoiG,SAAN,GAAkB,KAAlB;AACA;AACD;AACF;;AAED,QAAIjtG,CAAC,CAACkkD,UAAN,EAAkB;AAChBlkD,MAAAA,CAAC,CAAC+B,cAAF;AACD;;AAED/B,IAAAA,CAAC,CAACm2G,eAAF;AACAtrG,IAAAA,KAAK,CAACqiG,OAAN,GAAgB,IAAhB;AACAriG,IAAAA,KAAK,CAACojG,QAAN,GAAiBpjG,KAAK,CAACuyH,cAAN,CAAqBlyH,CAArB,GAAyBL,KAAK,CAACsyH,YAAN,CAAmBjyH,CAA5C,GAAgDL,KAAK,CAAC40B,MAAvE;AACA50B,IAAAA,KAAK,CAACqjG,QAAN,GAAiBrjG,KAAK,CAACuyH,cAAN,CAAqBjyH,CAArB,GAAyBN,KAAK,CAACsyH,YAAN,CAAmBhyH,CAA5C,GAAgDN,KAAK,CAAC80B,MAAvE;;AAEA,QAAI90B,KAAK,CAACojG,QAAN,GAAiBpjG,KAAK,CAACw1B,IAA3B,EAAiC;AAC/Bx1B,MAAAA,KAAK,CAACojG,QAAN,GAAiBpjG,KAAK,CAACw1B,IAAN,GAAa,CAAb,YAAkBx1B,KAAK,CAACw1B,IAAN,GAAax1B,KAAK,CAACojG,QAAnB,GAA8B,CAAhD,EAAsD,GAAtD,CAAjB;AACD;;AAED,QAAIpjG,KAAK,CAACojG,QAAN,GAAiBpjG,KAAK,CAACq1B,IAA3B,EAAiC;AAC/Br1B,MAAAA,KAAK,CAACojG,QAAN,GAAiBpjG,KAAK,CAACq1B,IAAN,GAAa,CAAb,YAAkBr1B,KAAK,CAACojG,QAAN,GAAiBpjG,KAAK,CAACq1B,IAAvB,GAA8B,CAAhD,EAAsD,GAAtD,CAAjB;AACD;;AAED,QAAIr1B,KAAK,CAACqjG,QAAN,GAAiBrjG,KAAK,CAACy1B,IAA3B,EAAiC;AAC/Bz1B,MAAAA,KAAK,CAACqjG,QAAN,GAAiBrjG,KAAK,CAACy1B,IAAN,GAAa,CAAb,YAAkBz1B,KAAK,CAACy1B,IAAN,GAAaz1B,KAAK,CAACqjG,QAAnB,GAA8B,CAAhD,EAAsD,GAAtD,CAAjB;AACD;;AAED,QAAIrjG,KAAK,CAACqjG,QAAN,GAAiBrjG,KAAK,CAACs1B,IAA3B,EAAiC;AAC/Bt1B,MAAAA,KAAK,CAACqjG,QAAN,GAAiBrjG,KAAK,CAACs1B,IAAN,GAAa,CAAb,YAAkBt1B,KAAK,CAACqjG,QAAN,GAAiBrjG,KAAK,CAACs1B,IAAvB,GAA8B,CAAhD,EAAsD,GAAtD,CAAjB;AACD,KA9DqB,CA8DpB;;;AAGF,QAAI,CAACusE,QAAQ,CAAC2wB,aAAd,EAA6B3wB,QAAQ,CAAC2wB,aAAT,GAAyBxyH,KAAK,CAACuyH,cAAN,CAAqBlyH,CAA9C;AAC7B,QAAI,CAACwhG,QAAQ,CAAC4wB,aAAd,EAA6B5wB,QAAQ,CAAC4wB,aAAT,GAAyBzyH,KAAK,CAACuyH,cAAN,CAAqBjyH,CAA9C;AAC7B,QAAI,CAACuhG,QAAQ,CAAC6wB,QAAd,EAAwB7wB,QAAQ,CAAC6wB,QAAT,GAAoB35G,IAAI,CAACuF,GAAL,EAApB;AACxBujF,IAAAA,QAAQ,CAACxhG,CAAT,GAAa,CAACL,KAAK,CAACuyH,cAAN,CAAqBlyH,CAArB,GAAyBwhG,QAAQ,CAAC2wB,aAAnC,KAAqDz5G,IAAI,CAACuF,GAAL,KAAaujF,QAAQ,CAAC6wB,QAA3E,IAAuF,CAApG;AACA7wB,IAAAA,QAAQ,CAACvhG,CAAT,GAAa,CAACN,KAAK,CAACuyH,cAAN,CAAqBjyH,CAArB,GAAyBuhG,QAAQ,CAAC4wB,aAAnC,KAAqD15G,IAAI,CAACuF,GAAL,KAAaujF,QAAQ,CAAC6wB,QAA3E,IAAuF,CAApG;AACA,QAAIr9H,IAAI,CAACs5B,GAAL,CAAS3uB,KAAK,CAACuyH,cAAN,CAAqBlyH,CAArB,GAAyBwhG,QAAQ,CAAC2wB,aAA3C,IAA4D,CAAhE,EAAmE3wB,QAAQ,CAACxhG,CAAT,GAAa,CAAb;AACnE,QAAIhL,IAAI,CAACs5B,GAAL,CAAS3uB,KAAK,CAACuyH,cAAN,CAAqBjyH,CAArB,GAAyBuhG,QAAQ,CAAC4wB,aAA3C,IAA4D,CAAhE,EAAmE5wB,QAAQ,CAACvhG,CAAT,GAAa,CAAb;AACnEuhG,IAAAA,QAAQ,CAAC2wB,aAAT,GAAyBxyH,KAAK,CAACuyH,cAAN,CAAqBlyH,CAA9C;AACAwhG,IAAAA,QAAQ,CAAC4wB,aAAT,GAAyBzyH,KAAK,CAACuyH,cAAN,CAAqBjyH,CAA9C;AACAuhG,IAAAA,QAAQ,CAAC6wB,QAAT,GAAoB35G,IAAI,CAACuF,GAAL,EAApB;AACA4zG,IAAAA,OAAO,CAACG,YAAR,CAAqB1+B,SAArB,uBAA8C3zF,KAAK,CAACojG,QAApD,iBAAmEpjG,KAAK,CAACqjG,QAAzE;AACD;;AAED,WAAS+H,UAAT,GAAsB;AACpB,QAAMsmB,IAAI,GAAGj5H,MAAM,CAACi5H,IAApB;AACA,QAAI,CAACQ,OAAO,CAAClM,QAAT,IAAqBkM,OAAO,CAAClM,QAAR,CAAiB1zH,MAAjB,KAA4B,CAArD,EAAwD;;AAExD,QAAI,CAAC0N,KAAK,CAACoiG,SAAP,IAAoB,CAACpiG,KAAK,CAACqiG,OAA/B,EAAwC;AACtCriG,MAAAA,KAAK,CAACoiG,SAAN,GAAkB,KAAlB;AACApiG,MAAAA,KAAK,CAACqiG,OAAN,GAAgB,KAAhB;AACA;AACD;;AAEDriG,IAAAA,KAAK,CAACoiG,SAAN,GAAkB,KAAlB;AACApiG,IAAAA,KAAK,CAACqiG,OAAN,GAAgB,KAAhB;AACA,QAAI+wB,iBAAiB,GAAG,GAAxB;AACA,QAAIC,iBAAiB,GAAG,GAAxB;AACA,QAAMC,iBAAiB,GAAGzxB,QAAQ,CAACxhG,CAAT,GAAa+yH,iBAAvC;AACA,QAAMG,YAAY,GAAGvzH,KAAK,CAACojG,QAAN,GAAiBkwB,iBAAtC;AACA,QAAME,iBAAiB,GAAG3xB,QAAQ,CAACvhG,CAAT,GAAa+yH,iBAAvC;AACA,QAAMI,YAAY,GAAGzzH,KAAK,CAACqjG,QAAN,GAAiBmwB,iBAAtC,CAjBoB,CAiBqC;;AAEzD,QAAI3xB,QAAQ,CAACxhG,CAAT,KAAe,CAAnB,EAAsB+yH,iBAAiB,GAAG/9H,IAAI,CAACs5B,GAAL,CAAS,CAAC4kG,YAAY,GAAGvzH,KAAK,CAACojG,QAAtB,IAAkCvB,QAAQ,CAACxhG,CAApD,CAApB;AACtB,QAAIwhG,QAAQ,CAACvhG,CAAT,KAAe,CAAnB,EAAsB+yH,iBAAiB,GAAGh+H,IAAI,CAACs5B,GAAL,CAAS,CAAC8kG,YAAY,GAAGzzH,KAAK,CAACqjG,QAAtB,IAAkCxB,QAAQ,CAACvhG,CAApD,CAApB;AACtB,QAAMmhH,gBAAgB,GAAGpsH,IAAI,CAAC0H,GAAL,CAASq2H,iBAAT,EAA4BC,iBAA5B,CAAzB;AACArzH,IAAAA,KAAK,CAACojG,QAAN,GAAiBmwB,YAAjB;AACAvzH,IAAAA,KAAK,CAACqjG,QAAN,GAAiBowB,YAAjB,CAvBoB,CAuBW;;AAE/B,QAAMP,WAAW,GAAGlzH,KAAK,CAACvJ,KAAN,GAAci7H,IAAI,CAAC5wH,KAAvC;AACA,QAAMqyH,YAAY,GAAGnzH,KAAK,CAACxJ,MAAN,GAAek7H,IAAI,CAAC5wH,KAAzC;AACAd,IAAAA,KAAK,CAACw1B,IAAN,GAAangC,IAAI,CAACyH,GAAL,CAASo1H,OAAO,CAACC,UAAR,GAAqB,CAArB,GAAyBe,WAAW,GAAG,CAAhD,EAAmD,CAAnD,CAAb;AACAlzH,IAAAA,KAAK,CAACq1B,IAAN,GAAa,CAACr1B,KAAK,CAACw1B,IAApB;AACAx1B,IAAAA,KAAK,CAACy1B,IAAN,GAAapgC,IAAI,CAACyH,GAAL,CAASo1H,OAAO,CAACE,WAAR,GAAsB,CAAtB,GAA0Be,YAAY,GAAG,CAAlD,EAAqD,CAArD,CAAb;AACAnzH,IAAAA,KAAK,CAACs1B,IAAN,GAAa,CAACt1B,KAAK,CAACy1B,IAApB;AACAz1B,IAAAA,KAAK,CAACojG,QAAN,GAAiB/tG,IAAI,CAAC0H,GAAL,CAAS1H,IAAI,CAACyH,GAAL,CAASkD,KAAK,CAACojG,QAAf,EAAyBpjG,KAAK,CAACq1B,IAA/B,CAAT,EAA+Cr1B,KAAK,CAACw1B,IAArD,CAAjB;AACAx1B,IAAAA,KAAK,CAACqjG,QAAN,GAAiBhuG,IAAI,CAAC0H,GAAL,CAAS1H,IAAI,CAACyH,GAAL,CAASkD,KAAK,CAACqjG,QAAf,EAAyBrjG,KAAK,CAACs1B,IAA/B,CAAT,EAA+Ct1B,KAAK,CAACy1B,IAArD,CAAjB;AACAy8F,IAAAA,OAAO,CAACG,YAAR,CAAqB7wH,UAArB,CAAgCigH,gBAAhC,EAAkD9tB,SAAlD,uBAA2E3zF,KAAK,CAACojG,QAAjF,iBAAgGpjG,KAAK,CAACqjG,QAAtG;AACD;;AAED,WAAS6X,eAAT,GAA2B;AACzB,QAAMwW,IAAI,GAAGj5H,MAAM,CAACi5H,IAApB;;AAEA,QAAIQ,OAAO,CAACzX,QAAR,IAAoBhiH,MAAM,CAACu5G,aAAP,KAAyBv5G,MAAM,CAACkT,WAAxD,EAAqE;AACnE,UAAIumH,OAAO,CAAClM,QAAZ,EAAsB;AACpBkM,QAAAA,OAAO,CAAClM,QAAR,CAAiBryB,SAAjB,CAA2B,6BAA3B;AACD;;AAED,UAAIu+B,OAAO,CAACG,YAAZ,EAA0B;AACxBH,QAAAA,OAAO,CAACG,YAAR,CAAqB1+B,SAArB,CAA+B,oBAA/B;AACD;;AAED+9B,MAAAA,IAAI,CAAC5wH,KAAL,GAAa,CAAb;AACAksH,MAAAA,YAAY,GAAG,CAAf;AACAkF,MAAAA,OAAO,CAACzX,QAAR,GAAmBpoH,SAAnB;AACA6/H,MAAAA,OAAO,CAAClM,QAAR,GAAmB3zH,SAAnB;AACA6/H,MAAAA,OAAO,CAACG,YAAR,GAAuBhgI,SAAvB;AACD;AACF;;AAED,WAASqhI,MAAT,CAAgBv+H,CAAhB,EAAmB;AACjB,QAAMu8H,IAAI,GAAGj5H,MAAM,CAACi5H,IAApB;AACA,QAAM7wF,MAAM,GAAGpoC,MAAM,CAACooC,MAAP,CAAc6wF,IAA7B;;AAEA,QAAI,CAACQ,OAAO,CAACzX,QAAb,EAAuB;AACrB,UAAItlH,CAAC,IAAIA,CAAC,CAACwS,MAAX,EAAmB;AACjBuqH,QAAAA,OAAO,CAACzX,QAAR,GAAmB,kBAAEtlH,CAAC,CAACwS,MAAJ,EAAYjM,OAAZ,YAAwBjD,MAAM,CAACooC,MAAP,CAAcojE,UAAtC,EAAnB;AACD;;AAED,UAAI,CAACiuB,OAAO,CAACzX,QAAb,EAAuB;AACrB,YAAIhiH,MAAM,CAACooC,MAAP,CAAc0rE,OAAd,IAAyB9zG,MAAM,CAACooC,MAAP,CAAc0rE,OAAd,CAAsBx4G,OAA/C,IAA0D0E,MAAM,CAAC8zG,OAArE,EAA8E;AAC5E2lB,UAAAA,OAAO,CAACzX,QAAR,GAAmBhiH,MAAM,CAACotG,UAAP,CAAkBpwG,QAAlB,YAA+BgD,MAAM,CAACooC,MAAP,CAAc4lE,gBAA7C,EAAnB;AACD,SAFD,MAEO;AACLyrB,UAAAA,OAAO,CAACzX,QAAR,GAAmBhiH,MAAM,CAACiT,MAAP,CAAcgoE,EAAd,CAAiBj7E,MAAM,CAACkT,WAAxB,CAAnB;AACD;AACF;;AAEDumH,MAAAA,OAAO,CAAClM,QAAR,GAAmBkM,OAAO,CAACzX,QAAR,CAAiB/jB,IAAjB,YAA0B71D,MAAM,CAAC+wF,cAAjC,GAAmDl+C,EAAnD,CAAsD,CAAtD,EAAyDgjB,IAAzD,CAA8D,gDAA9D,EAAgHhjB,EAAhH,CAAmH,CAAnH,CAAnB;AACAw+C,MAAAA,OAAO,CAACG,YAAR,GAAuBH,OAAO,CAAClM,QAAR,CAAiBrwH,MAAjB,YAA4BkrC,MAAM,CAAC+wF,cAAnC,EAAvB;AACD;;AAED,QAAI,CAACM,OAAO,CAAClM,QAAT,IAAqBkM,OAAO,CAAClM,QAAR,CAAiB1zH,MAAjB,KAA4B,CAAjD,IAAsD,CAAC4/H,OAAO,CAACG,YAA/D,IAA+EH,OAAO,CAACG,YAAR,CAAqB//H,MAArB,KAAgC,CAAnH,EAAsH;;AAEtH,QAAImG,MAAM,CAACooC,MAAP,CAAcq/D,OAAlB,EAA2B;AACzBznG,MAAAA,MAAM,CAACstG,SAAP,CAAiBrvG,KAAjB,CAAuBi9H,QAAvB,GAAkC,QAAlC;AACAl7H,MAAAA,MAAM,CAACstG,SAAP,CAAiBrvG,KAAjB,CAAuBk9H,WAAvB,GAAqC,MAArC;AACD;;AAED1B,IAAAA,OAAO,CAACzX,QAAR,CAAiBnhG,QAAjB,WAA6BunB,MAAM,CAACgxF,gBAApC;AACA,QAAIgC,MAAJ;AACA,QAAIC,MAAJ;AACA,QAAIv/F,OAAJ;AACA,QAAIC,OAAJ;AACA,QAAI04E,KAAJ;AACA,QAAIC,KAAJ;AACA,QAAIoR,UAAJ;AACA,QAAID,UAAJ;AACA,QAAIyV,UAAJ;AACA,QAAIC,WAAJ;AACA,QAAId,WAAJ;AACA,QAAIC,YAAJ;AACA,QAAIc,aAAJ;AACA,QAAIC,aAAJ;AACA,QAAIC,aAAJ;AACA,QAAIC,aAAJ;AACA,QAAIjC,UAAJ;AACA,QAAIC,WAAJ;;AAEA,QAAI,OAAOpyH,KAAK,CAACsyH,YAAN,CAAmBjyH,CAA1B,KAAgC,WAAhC,IAA+ClL,CAAnD,EAAsD;AACpD0+H,MAAAA,MAAM,GAAG1+H,CAAC,CAACrD,IAAF,KAAW,UAAX,GAAwBqD,CAAC,CAAC23G,cAAF,CAAiB,CAAjB,EAAoBC,KAA5C,GAAoD53G,CAAC,CAAC43G,KAA/D;AACA+mB,MAAAA,MAAM,GAAG3+H,CAAC,CAACrD,IAAF,KAAW,UAAX,GAAwBqD,CAAC,CAAC23G,cAAF,CAAiB,CAAjB,EAAoBE,KAA5C,GAAoD73G,CAAC,CAAC63G,KAA/D;AACD,KAHD,MAGO;AACL6mB,MAAAA,MAAM,GAAG7zH,KAAK,CAACsyH,YAAN,CAAmBjyH,CAA5B;AACAyzH,MAAAA,MAAM,GAAG9zH,KAAK,CAACsyH,YAAN,CAAmBhyH,CAA5B;AACD;;AAEDoxH,IAAAA,IAAI,CAAC5wH,KAAL,GAAaoxH,OAAO,CAACG,YAAR,CAAqBr/B,IAArB,CAA0B,kBAA1B,KAAiDnyD,MAAM,CAAC8wF,QAArE;AACA3E,IAAAA,YAAY,GAAGkF,OAAO,CAACG,YAAR,CAAqBr/B,IAArB,CAA0B,kBAA1B,KAAiDnyD,MAAM,CAAC8wF,QAAvE;;AAEA,QAAIx8H,CAAJ,EAAO;AACLg9H,MAAAA,UAAU,GAAGD,OAAO,CAACzX,QAAR,CAAiB,CAAjB,EAAoBh9G,WAAjC;AACA20H,MAAAA,WAAW,GAAGF,OAAO,CAACzX,QAAR,CAAiB,CAAjB,EAAoB1+G,YAAlC;AACAw4B,MAAAA,OAAO,GAAG29F,OAAO,CAACzX,QAAR,CAAiBp/G,MAAjB,GAA0B/E,IAA1B,GAAiCR,MAAM,CAACq/F,OAAlD;AACA3gE,MAAAA,OAAO,GAAG09F,OAAO,CAACzX,QAAR,CAAiBp/G,MAAjB,GAA0BjF,GAA1B,GAAgCN,MAAM,CAACgR,OAAjD;AACAomG,MAAAA,KAAK,GAAG34E,OAAO,GAAG49F,UAAU,GAAG,CAAvB,GAA2B0B,MAAnC;AACA1mB,MAAAA,KAAK,GAAG34E,OAAO,GAAG49F,WAAW,GAAG,CAAxB,GAA4B0B,MAApC;AACAC,MAAAA,UAAU,GAAG7B,OAAO,CAAClM,QAAR,CAAiB,CAAjB,EAAoBvoH,WAAjC;AACAu2H,MAAAA,WAAW,GAAG9B,OAAO,CAAClM,QAAR,CAAiB,CAAjB,EAAoBjqH,YAAlC;AACAm3H,MAAAA,WAAW,GAAGa,UAAU,GAAGrC,IAAI,CAAC5wH,KAAhC;AACAqyH,MAAAA,YAAY,GAAGa,WAAW,GAAGtC,IAAI,CAAC5wH,KAAlC;AACAmzH,MAAAA,aAAa,GAAG5+H,IAAI,CAACyH,GAAL,CAASq1H,UAAU,GAAG,CAAb,GAAiBe,WAAW,GAAG,CAAxC,EAA2C,CAA3C,CAAhB;AACAgB,MAAAA,aAAa,GAAG7+H,IAAI,CAACyH,GAAL,CAASs1H,WAAW,GAAG,CAAd,GAAkBe,YAAY,GAAG,CAA1C,EAA6C,CAA7C,CAAhB;AACAgB,MAAAA,aAAa,GAAG,CAACF,aAAjB;AACAG,MAAAA,aAAa,GAAG,CAACF,aAAjB;AACA3V,MAAAA,UAAU,GAAGrR,KAAK,GAAGwkB,IAAI,CAAC5wH,KAA1B;AACAw9G,MAAAA,UAAU,GAAGnR,KAAK,GAAGukB,IAAI,CAAC5wH,KAA1B;;AAEA,UAAIy9G,UAAU,GAAG0V,aAAjB,EAAgC;AAC9B1V,QAAAA,UAAU,GAAG0V,aAAb;AACD;;AAED,UAAI1V,UAAU,GAAG4V,aAAjB,EAAgC;AAC9B5V,QAAAA,UAAU,GAAG4V,aAAb;AACD;;AAED,UAAI7V,UAAU,GAAG4V,aAAjB,EAAgC;AAC9B5V,QAAAA,UAAU,GAAG4V,aAAb;AACD;;AAED,UAAI5V,UAAU,GAAG8V,aAAjB,EAAgC;AAC9B9V,QAAAA,UAAU,GAAG8V,aAAb;AACD;AACF,KAjCD,MAiCO;AACL7V,MAAAA,UAAU,GAAG,CAAb;AACAD,MAAAA,UAAU,GAAG,CAAb;AACD;;AAED4T,IAAAA,OAAO,CAACG,YAAR,CAAqB7wH,UAArB,CAAgC,GAAhC,EAAqCmyF,SAArC,uBAA8D4qB,UAA9D,iBAA+ED,UAA/E;AACA4T,IAAAA,OAAO,CAAClM,QAAR,CAAiBxkH,UAAjB,CAA4B,GAA5B,EAAiCmyF,SAAjC,oCAAuE+9B,IAAI,CAAC5wH,KAA5E;AACD;;AAED,WAASuzH,OAAT,GAAmB;AACjB,QAAM3C,IAAI,GAAGj5H,MAAM,CAACi5H,IAApB;AACA,QAAM7wF,MAAM,GAAGpoC,MAAM,CAACooC,MAAP,CAAc6wF,IAA7B;;AAEA,QAAI,CAACQ,OAAO,CAACzX,QAAb,EAAuB;AACrB,UAAIhiH,MAAM,CAACooC,MAAP,CAAc0rE,OAAd,IAAyB9zG,MAAM,CAACooC,MAAP,CAAc0rE,OAAd,CAAsBx4G,OAA/C,IAA0D0E,MAAM,CAAC8zG,OAArE,EAA8E;AAC5E2lB,QAAAA,OAAO,CAACzX,QAAR,GAAmBhiH,MAAM,CAACotG,UAAP,CAAkBpwG,QAAlB,YAA+BgD,MAAM,CAACooC,MAAP,CAAc4lE,gBAA7C,EAAnB;AACD,OAFD,MAEO;AACLyrB,QAAAA,OAAO,CAACzX,QAAR,GAAmBhiH,MAAM,CAACiT,MAAP,CAAcgoE,EAAd,CAAiBj7E,MAAM,CAACkT,WAAxB,CAAnB;AACD;;AAEDumH,MAAAA,OAAO,CAAClM,QAAR,GAAmBkM,OAAO,CAACzX,QAAR,CAAiB/jB,IAAjB,YAA0B71D,MAAM,CAAC+wF,cAAjC,GAAmDl+C,EAAnD,CAAsD,CAAtD,EAAyDgjB,IAAzD,CAA8D,gDAA9D,EAAgHhjB,EAAhH,CAAmH,CAAnH,CAAnB;AACAw+C,MAAAA,OAAO,CAACG,YAAR,GAAuBH,OAAO,CAAClM,QAAR,CAAiBrwH,MAAjB,YAA4BkrC,MAAM,CAAC+wF,cAAnC,EAAvB;AACD;;AAED,QAAI,CAACM,OAAO,CAAClM,QAAT,IAAqBkM,OAAO,CAAClM,QAAR,CAAiB1zH,MAAjB,KAA4B,CAAjD,IAAsD,CAAC4/H,OAAO,CAACG,YAA/D,IAA+EH,OAAO,CAACG,YAAR,CAAqB//H,MAArB,KAAgC,CAAnH,EAAsH;;AAEtH,QAAImG,MAAM,CAACooC,MAAP,CAAcq/D,OAAlB,EAA2B;AACzBznG,MAAAA,MAAM,CAACstG,SAAP,CAAiBrvG,KAAjB,CAAuBi9H,QAAvB,GAAkC,EAAlC;AACAl7H,MAAAA,MAAM,CAACstG,SAAP,CAAiBrvG,KAAjB,CAAuBk9H,WAAvB,GAAqC,EAArC;AACD;;AAEDlC,IAAAA,IAAI,CAAC5wH,KAAL,GAAa,CAAb;AACAksH,IAAAA,YAAY,GAAG,CAAf;AACAkF,IAAAA,OAAO,CAACG,YAAR,CAAqB7wH,UAArB,CAAgC,GAAhC,EAAqCmyF,SAArC,CAA+C,oBAA/C;AACAu+B,IAAAA,OAAO,CAAClM,QAAR,CAAiBxkH,UAAjB,CAA4B,GAA5B,EAAiCmyF,SAAjC,CAA2C,6BAA3C;AACAu+B,IAAAA,OAAO,CAACzX,QAAR,CAAiBhgG,WAAjB,WAAgComB,MAAM,CAACgxF,gBAAvC;AACAK,IAAAA,OAAO,CAACzX,QAAR,GAAmBpoH,SAAnB;AACD,GAzcgC,CAyc/B;;;AAGF,WAASiiI,UAAT,CAAoBn/H,CAApB,EAAuB;AACrB,QAAMu8H,IAAI,GAAGj5H,MAAM,CAACi5H,IAApB;;AAEA,QAAIA,IAAI,CAAC5wH,KAAL,IAAc4wH,IAAI,CAAC5wH,KAAL,KAAe,CAAjC,EAAoC;AAClC;AACAuzH,MAAAA,OAAO;AACR,KAHD,MAGO;AACL;AACAX,MAAAA,MAAM,CAACv+H,CAAD,CAAN;AACD;AACF;;AAED,WAASo/H,YAAT,GAAwB;AACtB,QAAM30B,OAAO,GAAGnnG,MAAM,CAACmnG,OAAvB;AACA,QAAMyL,eAAe,GAAG5yG,MAAM,CAACqpG,WAAP,CAAmBhtG,KAAnB,KAA6B,YAA7B,IAA6C8qG,OAAO,CAACyL,eAArD,IAAwE5yG,MAAM,CAACooC,MAAP,CAAcmpE,gBAAtF,GAAyG;AAC/HzkE,MAAAA,OAAO,EAAE,IADsH;AAE/HuuD,MAAAA,OAAO,EAAE;AAFsH,KAAzG,GAGpB,KAHJ;AAIA,QAAM0gC,yBAAyB,GAAG50B,OAAO,CAACyL,eAAR,GAA0B;AAC1D9lE,MAAAA,OAAO,EAAE,KADiD;AAE1DuuD,MAAAA,OAAO,EAAE;AAFiD,KAA1B,GAG9B,IAHJ;AAIA,WAAO;AACLuX,MAAAA,eAAe,EAAfA,eADK;AAELmpB,MAAAA,yBAAyB,EAAzBA;AAFK,KAAP;AAID;;AAED,WAASC,gBAAT,GAA4B;AAC1B,sBAAWh8H,MAAM,CAACooC,MAAP,CAAcojE,UAAzB;AACD;;AAED,WAASywB,cAAT,CAAwBrzG,MAAxB,EAAgC;AAC9B,wBAEIkzG,YAAY,EAFhB;AAAA,QACElpB,eADF,iBACEA,eADF;;AAGA,QAAMspB,aAAa,GAAGF,gBAAgB,EAAtC;AACAh8H,IAAAA,MAAM,CAACotG,UAAP,CAAkBxkF,MAAlB,EAA0B,cAA1B,EAA0CszG,aAA1C,EAAyD/B,cAAzD,EAAyEvnB,eAAzE;AACA5yG,IAAAA,MAAM,CAACotG,UAAP,CAAkBxkF,MAAlB,EAA0B,eAA1B,EAA2CszG,aAA3C,EAA0D5B,eAA1D,EAA2E1nB,eAA3E;AACA5yG,IAAAA,MAAM,CAACotG,UAAP,CAAkBxkF,MAAlB,EAA0B,YAA1B,EAAwCszG,aAAxC,EAAuD1B,YAAvD,EAAqE5nB,eAArE;AACD;;AAED,WAASupB,cAAT,GAA0B;AACxB,QAAI7C,eAAJ,EAAqB;AACrBA,IAAAA,eAAe,GAAG,IAAlB;AACA2C,IAAAA,cAAc,CAAC,IAAD,CAAd;AACD;;AAED,WAASG,eAAT,GAA2B;AACzB,QAAI,CAAC9C,eAAL,EAAsB;AACtBA,IAAAA,eAAe,GAAG,KAAlB;AACA2C,IAAAA,cAAc,CAAC,KAAD,CAAd;AACD,GAhgBgC,CAggB/B;;;AAGF,WAASroH,MAAT,GAAkB;AAChB,QAAMqlH,IAAI,GAAGj5H,MAAM,CAACi5H,IAApB;AACA,QAAIA,IAAI,CAAC39H,OAAT,EAAkB;AAClB29H,IAAAA,IAAI,CAAC39H,OAAL,GAAe,IAAf;AACA,QAAM6rG,OAAO,GAAGnnG,MAAM,CAACmnG,OAAvB;;AACA,yBAGI20B,YAAY,EAHhB;AAAA,QACElpB,eADF,kBACEA,eADF;AAAA,QAEEmpB,yBAFF,kBAEEA,yBAFF;;AAIA,QAAMG,aAAa,GAAGF,gBAAgB,EAAtC,CATgB,CAS0B;;AAE1C,QAAI70B,OAAO,CAACizB,QAAZ,EAAsB;AACpBp6H,MAAAA,MAAM,CAACotG,UAAP,CAAkBrqG,EAAlB,CAAqB/C,MAAM,CAACqpG,WAAP,CAAmBhtG,KAAxC,EAA+C8/H,cAA/C,EAA+DvpB,eAA/D;AACA5yG,MAAAA,MAAM,CAACotG,UAAP,CAAkBrqG,EAAlB,CAAqB/C,MAAM,CAACqpG,WAAP,CAAmB/sG,GAAxC,EAA6C8/H,eAA7C,EAA8DxpB,eAA9D;AACD,KAHD,MAGO,IAAI5yG,MAAM,CAACqpG,WAAP,CAAmBhtG,KAAnB,KAA6B,YAAjC,EAA+C;AACpD2D,MAAAA,MAAM,CAACotG,UAAP,CAAkBrqG,EAAlB,CAAqB/C,MAAM,CAACqpG,WAAP,CAAmBhtG,KAAxC,EAA+C6/H,aAA/C,EAA8D/B,cAA9D,EAA8EvnB,eAA9E;AACA5yG,MAAAA,MAAM,CAACotG,UAAP,CAAkBrqG,EAAlB,CAAqB/C,MAAM,CAACqpG,WAAP,CAAmBn0E,IAAxC,EAA8CgnG,aAA9C,EAA6D5B,eAA7D,EAA8EyB,yBAA9E;AACA/7H,MAAAA,MAAM,CAACotG,UAAP,CAAkBrqG,EAAlB,CAAqB/C,MAAM,CAACqpG,WAAP,CAAmB/sG,GAAxC,EAA6C4/H,aAA7C,EAA4D1B,YAA5D,EAA0E5nB,eAA1E;;AAEA,UAAI5yG,MAAM,CAACqpG,WAAP,CAAmB1iF,MAAvB,EAA+B;AAC7B3mB,QAAAA,MAAM,CAACotG,UAAP,CAAkBrqG,EAAlB,CAAqB/C,MAAM,CAACqpG,WAAP,CAAmB1iF,MAAxC,EAAgDu1G,aAAhD,EAA+D1B,YAA/D,EAA6E5nB,eAA7E;AACD;AACF,KAtBe,CAsBd;;;AAGF5yG,IAAAA,MAAM,CAACotG,UAAP,CAAkBrqG,EAAlB,CAAqB/C,MAAM,CAACqpG,WAAP,CAAmBn0E,IAAxC,aAAkDl1B,MAAM,CAACooC,MAAP,CAAc6wF,IAAd,CAAmBE,cAArE,GAAuFzmB,WAAvF,EAAoGqpB,yBAApG;AACD;;AAED,WAASpoH,OAAT,GAAmB;AACjB,QAAMslH,IAAI,GAAGj5H,MAAM,CAACi5H,IAApB;AACA,QAAI,CAACA,IAAI,CAAC39H,OAAV,EAAmB;AACnB,QAAM6rG,OAAO,GAAGnnG,MAAM,CAACmnG,OAAvB;AACA8xB,IAAAA,IAAI,CAAC39H,OAAL,GAAe,KAAf;;AACA,yBAGIwgI,YAAY,EAHhB;AAAA,QACElpB,eADF,kBACEA,eADF;AAAA,QAEEmpB,yBAFF,kBAEEA,yBAFF;;AAIA,QAAMG,aAAa,GAAGF,gBAAgB,EAAtC,CATiB,CASyB;;AAE1C,QAAI70B,OAAO,CAACizB,QAAZ,EAAsB;AACpBp6H,MAAAA,MAAM,CAACotG,UAAP,CAAkBtR,GAAlB,CAAsB97F,MAAM,CAACqpG,WAAP,CAAmBhtG,KAAzC,EAAgD8/H,cAAhD,EAAgEvpB,eAAhE;AACA5yG,MAAAA,MAAM,CAACotG,UAAP,CAAkBtR,GAAlB,CAAsB97F,MAAM,CAACqpG,WAAP,CAAmB/sG,GAAzC,EAA8C8/H,eAA9C,EAA+DxpB,eAA/D;AACD,KAHD,MAGO,IAAI5yG,MAAM,CAACqpG,WAAP,CAAmBhtG,KAAnB,KAA6B,YAAjC,EAA+C;AACpD2D,MAAAA,MAAM,CAACotG,UAAP,CAAkBtR,GAAlB,CAAsB97F,MAAM,CAACqpG,WAAP,CAAmBhtG,KAAzC,EAAgD6/H,aAAhD,EAA+D/B,cAA/D,EAA+EvnB,eAA/E;AACA5yG,MAAAA,MAAM,CAACotG,UAAP,CAAkBtR,GAAlB,CAAsB97F,MAAM,CAACqpG,WAAP,CAAmBn0E,IAAzC,EAA+CgnG,aAA/C,EAA8D5B,eAA9D,EAA+EyB,yBAA/E;AACA/7H,MAAAA,MAAM,CAACotG,UAAP,CAAkBtR,GAAlB,CAAsB97F,MAAM,CAACqpG,WAAP,CAAmB/sG,GAAzC,EAA8C4/H,aAA9C,EAA6D1B,YAA7D,EAA2E5nB,eAA3E;;AAEA,UAAI5yG,MAAM,CAACqpG,WAAP,CAAmB1iF,MAAvB,EAA+B;AAC7B3mB,QAAAA,MAAM,CAACotG,UAAP,CAAkBtR,GAAlB,CAAsB97F,MAAM,CAACqpG,WAAP,CAAmB1iF,MAAzC,EAAiDu1G,aAAjD,EAAgE1B,YAAhE,EAA8E5nB,eAA9E;AACD;AACF,KAtBgB,CAsBf;;;AAGF5yG,IAAAA,MAAM,CAACotG,UAAP,CAAkBtR,GAAlB,CAAsB97F,MAAM,CAACqpG,WAAP,CAAmBn0E,IAAzC,aAAmDl1B,MAAM,CAACooC,MAAP,CAAc6wF,IAAd,CAAmBE,cAAtE,GAAwFzmB,WAAxF,EAAqGqpB,yBAArG;AACD;;AAEDh5H,EAAAA,EAAE,CAAC,MAAD,EAAS,YAAM;AACf,QAAI/C,MAAM,CAACooC,MAAP,CAAc6wF,IAAd,CAAmB39H,OAAvB,EAAgC;AAC9BsY,MAAAA,MAAM;AACP;AACF,GAJC,CAAF;AAKA7Q,EAAAA,EAAE,CAAC,SAAD,EAAY,YAAM;AAClB4Q,IAAAA,OAAO;AACR,GAFC,CAAF;AAGA5Q,EAAAA,EAAE,CAAC,YAAD,EAAe,UAACigH,EAAD,EAAKtmH,CAAL,EAAW;AAC1B,QAAI,CAACsD,MAAM,CAACi5H,IAAP,CAAY39H,OAAjB,EAA0B;AAC1Bm3G,IAAAA,YAAY,CAAC/1G,CAAD,CAAZ;AACD,GAHC,CAAF;AAIAqG,EAAAA,EAAE,CAAC,UAAD,EAAa,UAACigH,EAAD,EAAKtmH,CAAL,EAAW;AACxB,QAAI,CAACsD,MAAM,CAACi5H,IAAP,CAAY39H,OAAjB,EAA0B;AAC1Bq3G,IAAAA,UAAU,CAACj2G,CAAD,CAAV;AACD,GAHC,CAAF;AAIAqG,EAAAA,EAAE,CAAC,WAAD,EAAc,UAACigH,EAAD,EAAKtmH,CAAL,EAAW;AACzB,QAAI,CAACsD,MAAM,CAACs/F,SAAR,IAAqBt/F,MAAM,CAACooC,MAAP,CAAc6wF,IAAd,CAAmB39H,OAAxC,IAAmD0E,MAAM,CAACi5H,IAAP,CAAY39H,OAA/D,IAA0E0E,MAAM,CAACooC,MAAP,CAAc6wF,IAAd,CAAmB34H,MAAjG,EAAyG;AACvGu7H,MAAAA,UAAU,CAACn/H,CAAD,CAAV;AACD;AACF,GAJC,CAAF;AAKAqG,EAAAA,EAAE,CAAC,eAAD,EAAkB,YAAM;AACxB,QAAI/C,MAAM,CAACi5H,IAAP,CAAY39H,OAAZ,IAAuB0E,MAAM,CAACooC,MAAP,CAAc6wF,IAAd,CAAmB39H,OAA9C,EAAuD;AACrDmnH,MAAAA,eAAe;AAChB;AACF,GAJC,CAAF;AAKA1/G,EAAAA,EAAE,CAAC,aAAD,EAAgB,YAAM;AACtB,QAAI/C,MAAM,CAACi5H,IAAP,CAAY39H,OAAZ,IAAuB0E,MAAM,CAACooC,MAAP,CAAc6wF,IAAd,CAAmB39H,OAA1C,IAAqD0E,MAAM,CAACooC,MAAP,CAAcq/D,OAAvE,EAAgF;AAC9Egb,MAAAA,eAAe;AAChB;AACF,GAJC,CAAF;;AAKA,WAAcziH,MAAM,CAACi5H,IAArB,EAA2B;AACzBrlH,IAAAA,MAAM,EAANA,MADyB;AAEzBD,IAAAA,OAAO,EAAPA,OAFyB;AAGzB0oH,IAAAA,EAAE,EAAEpB,MAHqB;AAIzBqB,IAAAA,GAAG,EAAEV,OAJoB;AAKzBt7H,IAAAA,MAAM,EAAEu7H;AALiB,GAA3B;AAOD;;;;;;;;;;;;;;ACpmBc,SAASU,iBAAT,CAA2BliC,OAA3B,EAAoC;AACjD,MAAIA,OAAO,KAAK,KAAK,CAArB,EAAwB;AACtBA,IAAAA,OAAO,GAAG,EAAV;AACD;;AAED,oBAAWA,OAAO,CAACv5E,IAAR,GAAe3f,OAAf,CAAuB,aAAvB,EAAsC,MAAtC,EAA8C;AAA9C,GACVA,OADU,CACF,IADE,EACI,GADJ,CAAX;AAED;;;;;;;;;;;;;;ACPD;;AACe,SAASq7H,yBAAT,CAAmCx8H,MAAnC,EAA2CmlG,cAA3C,EAA2D/8D,MAA3D,EAAmEq0F,UAAnE,EAA+E;AAC5F,MAAMpkI,QAAQ,GAAG,6BAAjB;;AAEA,MAAI2H,MAAM,CAACooC,MAAP,CAAcilE,cAAlB,EAAkC;AAChCnmG,IAAAA,MAAM,CAACC,IAAP,CAAYs1H,UAAZ,EAAwBl+H,OAAxB,CAAgC,UAAAwM,GAAG,EAAI;AACrC,UAAI,CAACq9B,MAAM,CAACr9B,GAAD,CAAP,IAAgBq9B,MAAM,CAAC6uE,IAAP,KAAgB,IAApC,EAA0C;AACxC,YAAI/9G,OAAO,GAAG8G,MAAM,CAAC8kG,GAAP,CAAW9nG,QAAX,YAAwBy/H,UAAU,CAAC1xH,GAAD,CAAlC,GAA2C,CAA3C,CAAd;;AAEA,YAAI,CAAC7R,OAAL,EAAc;AACZA,UAAAA,OAAO,GAAGb,QAAQ,CAAC0G,aAAT,CAAuB,KAAvB,CAAV;AACA7F,UAAAA,OAAO,CAACD,SAAR,GAAoBwjI,UAAU,CAAC1xH,GAAD,CAA9B;AACA/K,UAAAA,MAAM,CAAC8kG,GAAP,CAAW5H,MAAX,CAAkBhkG,OAAlB;AACD;;AAEDkvC,QAAAA,MAAM,CAACr9B,GAAD,CAAN,GAAc7R,OAAd;AACAisG,QAAAA,cAAc,CAACp6F,GAAD,CAAd,GAAsB7R,OAAtB;AACD;AACF,KAbD;AAcD;;AAED,SAAOkvC,MAAP;AACD;;;;;;;;;;;;;;ACtBD;;;;AACe,SAASs0F,YAAT,CAAsBt0F,MAAtB,EAA8B45E,QAA9B,EAAwCt5G,IAAxC,EAA8C;AAC3D,MAAMi0H,WAAW,gCAAyBj0H,IAAI,cAAOA,IAAP,IAAgB,EAA7C,CAAjB;AACA,MAAMk0H,gBAAgB,GAAGx0F,MAAM,CAAC+7E,WAAP,GAAqBnC,QAAQ,CAAC/jB,IAAT,CAAc71D,MAAM,CAAC+7E,WAArB,CAArB,GAAyDnC,QAAlF;AACA,MAAI6C,SAAS,GAAG+X,gBAAgB,CAAC5/H,QAAjB,YAA8B2/H,WAA9B,EAAhB;;AAEA,MAAI,CAAC9X,SAAS,CAAChrH,MAAf,EAAuB;AACrBgrH,IAAAA,SAAS,GAAG,4DAAoCn8G,IAAI,cAAOA,IAAP,IAAgB,EAAxD,eAAZ;AACAk0H,IAAAA,gBAAgB,CAAC1/B,MAAjB,CAAwB2nB,SAAxB;AACD;;AAED,SAAOA,SAAP;AACD;;;;;;;;;;;;;;ACZD;;AACA,IAAMgY,OAAO,GAAG;AACdh8G,EAAAA,QAAQ,EAARA,aADc;AAEdmB,EAAAA,WAAW,EAAXA,gBAFc;AAGdJ,EAAAA,QAAQ,EAARA,aAHc;AAIdS,EAAAA,WAAW,EAAXA,gBAJc;AAKdk4E,EAAAA,IAAI,EAAJA,SALc;AAMdG,EAAAA,UAAU,EAAVA,eANc;AAOdQ,EAAAA,SAAS,EAATA,cAPc;AAQdnyF,EAAAA,UAAU,EAAVA,eARc;AASdhG,EAAAA,EAAE,EAAFA,OATc;AAUd+4F,EAAAA,GAAG,EAAHA,QAVc;AAWdzkF,EAAAA,OAAO,EAAPA,YAXc;AAYd7D,EAAAA,aAAa,EAAbA,kBAZc;AAadiE,EAAAA,UAAU,EAAVA,eAbc;AAcdgyB,EAAAA,WAAW,EAAXA,gBAdc;AAedqpD,EAAAA,MAAM,EAANA,WAfc;AAgBdlwF,EAAAA,MAAM,EAANA,WAhBc;AAiBd05F,EAAAA,GAAG,EAAHA,QAjBc;AAkBdpoB,EAAAA,IAAI,EAAJA,SAlBc;AAmBdjnE,EAAAA,IAAI,EAAJA,SAnBc;AAoBdlT,EAAAA,IAAI,EAAJA,SApBc;AAqBd0hG,EAAAA,EAAE,EAAFA,OArBc;AAsBdhgG,EAAAA,KAAK,EAALA,UAtBc;AAuBdw/E,EAAAA,EAAE,EAAFA,OAvBc;AAwBdiiB,EAAAA,MAAM,EAANA,WAxBc;AAyBdK,EAAAA,OAAO,EAAPA,YAzBc;AA0Bdx2F,EAAAA,IAAI,EAAJA,SA1Bc;AA2Bd62F,EAAAA,OAAO,EAAPA,YA3Bc;AA4Bd9rE,EAAAA,IAAI,EAAJA,SA5Bc;AA6BdgsE,EAAAA,OAAO,EAAPA,YA7Bc;AA8Bd5gG,EAAAA,MAAM,EAANA,WA9Bc;AA+Bdw+F,EAAAA,OAAO,EAAPA,YA/Bc;AAgCdz4F,EAAAA,OAAO,EAAPA,YAhCc;AAiCdg7F,EAAAA,IAAI,EAAJA,SAjCc;AAkCdjhG,EAAAA,QAAQ,EAARA,aAlCc;AAmCd8a,EAAAA,MAAM,EAANA,WAnCc;AAoCdzD,EAAAA,MAAM,EAANA;AApCc,CAAhB;AAsCAnN,MAAM,CAACC,IAAP,CAAY01H,OAAZ,EAAqBt+H,OAArB,CAA6B,UAAAu+H,UAAU,EAAI;AACzC51H,EAAAA,MAAM,CAACsX,cAAP,CAAsBy7E,OAAEh3E,EAAxB,EAA4B65G,UAA5B,EAAwC;AACtC14H,IAAAA,KAAK,EAAEy4H,OAAO,CAACC,UAAD,CADwB;AAEtCxzC,IAAAA,QAAQ,EAAE;AAF4B,GAAxC;AAID,CALD;eAMe2Q;;;;;;;;;;;;;;;;;AC7CA,SAAS8iC,UAAT,CAAoB30F,MAApB,EAA4B;AACzC,MACE+mE,MADF,GAQI/mE,MARJ,CACE+mE,MADF;AAAA,MAEEnvG,MAFF,GAQIooC,MARJ,CAEEpoC,MAFF;AAAA,MAGE+C,EAHF,GAQIqlC,MARJ,CAGErlC,EAHF;AAAA,MAIEupG,YAJF,GAQIlkE,MARJ,CAIEkkE,YAJF;AAAA,MAKEuI,aALF,GAQIzsE,MARJ,CAKEysE,aALF;AAAA,MAMEoQ,eANF,GAQI78E,MARJ,CAME68E,eANF;AAAA,MAOED,WAPF,GAQI58E,MARJ,CAOE48E,WAPF;AASAjiH,EAAAA,EAAE,CAAC,YAAD,EAAe,YAAM;AACrB,QAAI/C,MAAM,CAACooC,MAAP,CAAc+mE,MAAd,KAAyBA,MAA7B,EAAqC;AACrCnvG,IAAAA,MAAM,CAACs6F,UAAP,CAAkBl+F,IAAlB,WAA0B4D,MAAM,CAACooC,MAAP,CAAcm9D,sBAAxC,SAAiE4J,MAAjE;;AAEA,QAAI6V,WAAW,IAAIA,WAAW,EAA9B,EAAkC;AAChChlH,MAAAA,MAAM,CAACs6F,UAAP,CAAkBl+F,IAAlB,WAA0B4D,MAAM,CAACooC,MAAP,CAAcm9D,sBAAxC;AACD;;AAED,QAAMy3B,qBAAqB,GAAG/X,eAAe,GAAGA,eAAe,EAAlB,GAAuB,EAApE;;AACA,aAAcjlH,MAAM,CAACooC,MAArB,EAA6B40F,qBAA7B;;AACA,aAAch9H,MAAM,CAACmlG,cAArB,EAAqC63B,qBAArC;AACD,GAXC,CAAF;AAYAj6H,EAAAA,EAAE,CAAC,cAAD,EAAiB,YAAM;AACvB,QAAI/C,MAAM,CAACooC,MAAP,CAAc+mE,MAAd,KAAyBA,MAA7B,EAAqC;AACrC7C,IAAAA,YAAY;AACb,GAHC,CAAF;AAIAvpG,EAAAA,EAAE,CAAC,eAAD,EAAkB,UAACigH,EAAD,EAAKjjH,QAAL,EAAkB;AACpC,QAAIC,MAAM,CAACooC,MAAP,CAAc+mE,MAAd,KAAyBA,MAA7B,EAAqC;AACrC0F,IAAAA,aAAa,CAAC90G,QAAD,CAAb;AACD,GAHC,CAAF;AAID;;;;;;;;;;;;;;AC9Bc,SAASk9H,YAAT,CAAsBC,YAAtB,EAAoClb,QAApC,EAA8C;AAC3D,MAAIkb,YAAY,CAAC/Y,WAAjB,EAA8B;AAC5B,WAAOnC,QAAQ,CAAC/jB,IAAT,CAAci/B,YAAY,CAAC/Y,WAA3B,EAAwC7nB,GAAxC,CAA4C;AACjD,6BAAuB,QAD0B;AAEjD,qCAA+B;AAFkB,KAA5C,CAAP;AAID;;AAED,SAAO0lB,QAAP;AACD;;;;;;;;;;;;;;ACTc,SAASmb,0BAAT,CAAoCjmB,IAApC,EAA0C;AACvD,MACEl3G,MADF,GAKIk3G,IALJ,CACEl3G,MADF;AAAA,MAEED,QAFF,GAKIm3G,IALJ,CAEEn3G,QAFF;AAAA,MAGEokH,WAHF,GAKIjN,IALJ,CAGEiN,WAHF;AAAA,MAIE2C,SAJF,GAKI5P,IALJ,CAIE4P,SAJF;AAMA,MACE7zG,MADF,GAIIjT,MAJJ,CACEiT,MADF;AAAA,MAEEC,WAFF,GAIIlT,MAJJ,CAEEkT,WAFF;AAAA,MAGEk6F,UAHF,GAIIptG,MAJJ,CAGEotG,UAHF;;AAMA,MAAIptG,MAAM,CAACooC,MAAP,CAAc8mE,gBAAd,IAAkCnvG,QAAQ,KAAK,CAAnD,EAAsD;AACpD,QAAIq9H,cAAc,GAAG,KAArB;AACA,QAAIC,oBAAJ;;AAEA,QAAIvW,SAAJ,EAAe;AACbuW,MAAAA,oBAAoB,GAAGlZ,WAAW,GAAGlxG,MAAM,CAACgrF,IAAP,CAAYkmB,WAAZ,CAAH,GAA8BlxG,MAAhE;AACD,KAFD,MAEO;AACLoqH,MAAAA,oBAAoB,GAAGlZ,WAAW,GAAGlxG,MAAM,CAACgoE,EAAP,CAAU/nE,WAAV,EAAuB+qF,IAAvB,CAA4BkmB,WAA5B,CAAH,GAA8ClxG,MAAM,CAACgoE,EAAP,CAAU/nE,WAAV,CAAhF;AACD;;AAEDmqH,IAAAA,oBAAoB,CAAC7pH,aAArB,CAAmC,YAAM;AACvC,UAAI4pH,cAAJ,EAAoB;AACpB,UAAI,CAACp9H,MAAD,IAAWA,MAAM,CAACmsG,SAAtB,EAAiC;AACjCixB,MAAAA,cAAc,GAAG,IAAjB;AACAp9H,MAAAA,MAAM,CAACs/F,SAAP,GAAmB,KAAnB;AACA,UAAMg+B,aAAa,GAAG,CAAC,qBAAD,EAAwB,eAAxB,CAAtB;;AAEA,WAAK,IAAIjjI,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGijI,aAAa,CAACzjI,MAAlC,EAA0CQ,CAAC,IAAI,CAA/C,EAAkD;AAChD+yG,QAAAA,UAAU,CAAC/1F,OAAX,CAAmBimH,aAAa,CAACjjI,CAAD,CAAhC;AACD;AACF,KAVD;AAWD;AACF;;;;;;;;;;;;;;ACnCD;;AACA,IAAIguG,OAAJ;;AAEA,SAASk1B,WAAT,GAAuB;AACrB,MAAMlgI,MAAM,GAAG,2BAAf;;AAEA,WAASyqH,QAAT,GAAoB;AAClB,QAAM0V,EAAE,GAAGngI,MAAM,CAACqmG,SAAP,CAAiBC,SAAjB,CAA2BpgG,WAA3B,EAAX;AACA,WAAOi6H,EAAE,CAACt8H,OAAH,CAAW,QAAX,KAAwB,CAAxB,IAA6Bs8H,EAAE,CAACt8H,OAAH,CAAW,QAAX,IAAuB,CAApD,IAAyDs8H,EAAE,CAACt8H,OAAH,CAAW,SAAX,IAAwB,CAAxF;AACD;;AAED,SAAO;AACL4mH,IAAAA,QAAQ,EAAEA,QAAQ,EADb;AAELC,IAAAA,SAAS,EAAE,+CAA+C7nG,IAA/C,CAAoD7iB,MAAM,CAACqmG,SAAP,CAAiBC,SAArE;AAFN,GAAP;AAID;;AAED,SAAS85B,UAAT,GAAsB;AACpB,MAAI,CAACp1B,OAAL,EAAc;AACZA,IAAAA,OAAO,GAAGk1B,WAAW,EAArB;AACD;;AAED,SAAOl1B,OAAP;AACD;;;;;;;;;;;;;;ACvBD;;AACA;;AACA,IAAIq1B,YAAJ;;AAEA,SAASC,UAAT,CAAoBC,KAApB,EAA2B;AACzB,aAEIA,KAAK,KAAK,KAAK,CAAf,GAAmB,EAAnB,GAAwBA,KAF5B;AAAA,MACEj6B,SADF,QACEA,SADF;;AAGA,MAAMwD,OAAO,GAAG,6BAAhB;AACA,MAAM9pG,MAAM,GAAG,2BAAf;AACA,MAAMqmD,QAAQ,GAAGrmD,MAAM,CAACqmG,SAAP,CAAiBhgD,QAAlC;AACA,MAAM85E,EAAE,GAAG75B,SAAS,IAAItmG,MAAM,CAACqmG,SAAP,CAAiBC,SAAzC;AACA,MAAMuD,MAAM,GAAG;AACbM,IAAAA,GAAG,EAAE,KADQ;AAEbD,IAAAA,OAAO,EAAE;AAFI,GAAf;AAIA,MAAMs2B,WAAW,GAAGxgI,MAAM,CAAC0mG,MAAP,CAAc/lG,KAAlC;AACA,MAAM8/H,YAAY,GAAGzgI,MAAM,CAAC0mG,MAAP,CAAchmG,MAAnC;AACA,MAAMwpG,OAAO,GAAGi2B,EAAE,CAACvxC,KAAH,CAAS,6BAAT,CAAhB,CAdyB,CAcgC;;AAEzD,MAAI8xC,IAAI,GAAGP,EAAE,CAACvxC,KAAH,CAAS,sBAAT,CAAX;AACA,MAAM+xC,IAAI,GAAGR,EAAE,CAACvxC,KAAH,CAAS,yBAAT,CAAb;AACA,MAAMgyC,MAAM,GAAG,CAACF,IAAD,IAASP,EAAE,CAACvxC,KAAH,CAAS,4BAAT,CAAxB;AACA,MAAMiyC,OAAO,GAAGx6E,QAAQ,KAAK,OAA7B;AACA,MAAIy6E,KAAK,GAAGz6E,QAAQ,KAAK,UAAzB,CApByB,CAoBY;;AAErC,MAAM06E,WAAW,GAAG,CAAC,WAAD,EAAc,WAAd,EAA2B,UAA3B,EAAuC,UAAvC,EAAmD,UAAnD,EAA+D,UAA/D,EAA2E,UAA3E,EAAuF,UAAvF,EAAmG,UAAnG,EAA+G,UAA/G,EAA2H,UAA3H,EAAuI,UAAvI,CAApB;;AAEA,MAAI,CAACL,IAAD,IAASI,KAAT,IAAkBh3B,OAAO,CAACE,KAA1B,IAAmC+2B,WAAW,CAACl9H,OAAZ,WAAuB28H,WAAvB,cAAsCC,YAAtC,MAAyD,CAAhG,EAAmG;AACjGC,IAAAA,IAAI,GAAGP,EAAE,CAACvxC,KAAH,CAAS,qBAAT,CAAP;AACA,QAAI,CAAC8xC,IAAL,EAAWA,IAAI,GAAG,CAAC,CAAD,EAAI,CAAJ,EAAO,QAAP,CAAP;AACXI,IAAAA,KAAK,GAAG,KAAR;AACD,GA5BwB,CA4BvB;;;AAGF,MAAI52B,OAAO,IAAI,CAAC22B,OAAhB,EAAyB;AACvBh3B,IAAAA,MAAM,CAACm3B,EAAP,GAAY,SAAZ;AACAn3B,IAAAA,MAAM,CAACK,OAAP,GAAiB,IAAjB;AACD;;AAED,MAAIw2B,IAAI,IAAIE,MAAR,IAAkBD,IAAtB,EAA4B;AAC1B92B,IAAAA,MAAM,CAACm3B,EAAP,GAAY,KAAZ;AACAn3B,IAAAA,MAAM,CAACM,GAAP,GAAa,IAAb;AACD,GAvCwB,CAuCvB;;;AAGF,SAAON,MAAP;AACD;;AAED,SAASo3B,SAAT,CAAmBzjG,SAAnB,EAA8B;AAC5B,MAAIA,SAAS,KAAK,KAAK,CAAvB,EAA0B;AACxBA,IAAAA,SAAS,GAAG,EAAZ;AACD;;AAED,MAAI,CAAC6iG,YAAL,EAAmB;AACjBA,IAAAA,YAAY,GAAGC,UAAU,CAAC9iG,SAAD,CAAzB;AACD;;AAED,SAAO6iG,YAAP;AACD;;;;;;;;;;;;;;AC3DD;;AACA,IAAIv2B,OAAJ;;AAEA,SAASo3B,WAAT,GAAuB;AACrB,MAAMlhI,MAAM,GAAG,2BAAf;AACA,MAAMhF,QAAQ,GAAG,6BAAjB;AACA,SAAO;AACL0hH,IAAAA,YAAY,EAAE1hH,QAAQ,CAACiW,eAAT,IAA4B,oBAAoBjW,QAAQ,CAACiW,eAAT,CAAyBrQ,KADlF;AAELopG,IAAAA,KAAK,EAAE,CAAC,EAAE,kBAAkBhqG,MAAlB,IAA4BA,MAAM,CAACmhI,aAAP,IAAwBnmI,QAAQ,YAAYgF,MAAM,CAACmhI,aAAjF,CAFH;AAGL5rB,IAAAA,eAAe,EAAE,SAAS6rB,oBAAT,GAAgC;AAC/C,UAAIC,eAAe,GAAG,KAAtB;;AAEA,UAAI;AACF,YAAM/5H,IAAI,GAAGuC,MAAM,CAACsX,cAAP,CAAsB,EAAtB,EAA0B,SAA1B,EAAqC;AAChD;AACAhE,UAAAA,GAFgD,iBAE1C;AACJkkH,YAAAA,eAAe,GAAG,IAAlB;AACD;AAJ+C,SAArC,CAAb;AAOArhI,QAAAA,MAAM,CAACC,gBAAP,CAAwB,qBAAxB,EAA+C,IAA/C,EAAqDqH,IAArD;AACD,OATD,CASE,OAAOjI,CAAP,EAAU,CAAC;AACZ;;AAED,aAAOgiI,eAAP;AACD,KAhBgB,EAHZ;AAoBLtE,IAAAA,QAAQ,EAAE,SAASuE,aAAT,GAAyB;AACjC,aAAO,oBAAoBthI,MAA3B;AACD,KAFS;AApBL,GAAP;AAwBD;;AAED,SAASuhI,UAAT,GAAsB;AACpB,MAAI,CAACz3B,OAAL,EAAc;AACZA,IAAAA,OAAO,GAAGo3B,WAAW,EAArB;AACD;;AAED,SAAOp3B,OAAP;AACD;;;;;;;;;;;;;;;;;;;;;;ACtCD;;;;;;AAEA,SAAS03B,WAAT,CAAqBz/G,GAArB,EAA0B;AACxB,MAAMmuE,MAAM,GAAGnuE,GAAf;AACAlY,EAAAA,MAAM,CAACC,IAAP,CAAYomF,MAAZ,EAAoBhvF,OAApB,CAA4B,UAAAwM,GAAG,EAAI;AACjC,QAAI;AACFwiF,MAAAA,MAAM,CAACxiF,GAAD,CAAN,GAAc,IAAd;AACD,KAFD,CAEE,OAAOrO,CAAP,EAAU,CAAC;AACZ;;AAED,QAAI;AACF,aAAO6wF,MAAM,CAACxiF,GAAD,CAAb;AACD,KAFD,CAEE,OAAOrO,CAAP,EAAU,CAAC;AACZ;AACF,GAVD;AAWD;;AAED,SAASoiI,QAAT,CAAkBv6G,QAAlB,EAA4BrkB,KAA5B,EAAmC;AACjC,MAAIA,KAAK,KAAK,KAAK,CAAnB,EAAsB;AACpBA,IAAAA,KAAK,GAAG,CAAR;AACD;;AAED,SAAOkB,UAAU,CAACmjB,QAAD,EAAWrkB,KAAX,CAAjB;AACD;;AAED,SAAS2lB,GAAT,GAAe;AACb,SAAOvF,IAAI,CAACuF,GAAL,EAAP;AACD;;AAED,SAASztB,gBAAT,CAA0B8sC,EAA1B,EAA8B;AAC5B,MAAM7nC,MAAM,GAAG,2BAAf;AACA,MAAIY,KAAJ;;AAEA,MAAIZ,MAAM,CAACjF,gBAAX,EAA6B;AAC3B6F,IAAAA,KAAK,GAAGZ,MAAM,CAACjF,gBAAP,CAAwB8sC,EAAxB,EAA4B,IAA5B,CAAR;AACD;;AAED,MAAI,CAACjnC,KAAD,IAAUinC,EAAE,CAAC65F,YAAjB,EAA+B;AAC7B9gI,IAAAA,KAAK,GAAGinC,EAAE,CAAC65F,YAAX;AACD;;AAED,MAAI,CAAC9gI,KAAL,EAAY;AACVA,IAAAA,KAAK,GAAGinC,EAAE,CAACjnC,KAAX;AACD;;AAED,SAAOA,KAAP;AACD;;AAED,SAAS22G,YAAT,CAAsB1vE,EAAtB,EAA0B1X,IAA1B,EAAgC;AAC9B,MAAIA,IAAI,KAAK,KAAK,CAAlB,EAAqB;AACnBA,IAAAA,IAAI,GAAG,GAAP;AACD;;AAED,MAAMnwB,MAAM,GAAG,2BAAf;AACA,MAAI2hI,MAAJ;AACA,MAAIC,YAAJ;AACA,MAAIC,eAAJ;AACA,MAAMC,QAAQ,GAAG/mI,gBAAgB,CAAC8sC,EAAD,EAAK,IAAL,CAAjC;;AAEA,MAAI7nC,MAAM,CAAC+hI,eAAX,EAA4B;AAC1BH,IAAAA,YAAY,GAAGE,QAAQ,CAACjkC,SAAT,IAAsBikC,QAAQ,CAACriB,eAA9C;;AAEA,QAAImiB,YAAY,CAAChgF,KAAb,CAAmB,GAAnB,EAAwBplD,MAAxB,GAAiC,CAArC,EAAwC;AACtColI,MAAAA,YAAY,GAAGA,YAAY,CAAChgF,KAAb,CAAmB,IAAnB,EAAyB9kD,GAAzB,CAA6B,UAAA6iB,CAAC;AAAA,eAAIA,CAAC,CAAC7b,OAAF,CAAU,GAAV,EAAe,GAAf,CAAJ;AAAA,OAA9B,EAAuDi+C,IAAvD,CAA4D,IAA5D,CAAf;AACD,KALyB,CAKxB;AACF;;;AAGA8/E,IAAAA,eAAe,GAAG,IAAI7hI,MAAM,CAAC+hI,eAAX,CAA2BH,YAAY,KAAK,MAAjB,GAA0B,EAA1B,GAA+BA,YAA1D,CAAlB;AACD,GAVD,MAUO;AACLC,IAAAA,eAAe,GAAGC,QAAQ,CAACE,YAAT,IAAyBF,QAAQ,CAACG,UAAlC,IAAgDH,QAAQ,CAACI,WAAzD,IAAwEJ,QAAQ,CAACK,WAAjF,IAAgGL,QAAQ,CAACjkC,SAAzG,IAAsHikC,QAAQ,CAACvsC,gBAAT,CAA0B,WAA1B,EAAuCzxF,OAAvC,CAA+C,YAA/C,EAA6D,oBAA7D,CAAxI;AACA69H,IAAAA,MAAM,GAAGE,eAAe,CAACzqH,QAAhB,GAA2BwqC,KAA3B,CAAiC,GAAjC,CAAT;AACD;;AAED,MAAIzxB,IAAI,KAAK,GAAb,EAAkB;AAChB;AACA,QAAInwB,MAAM,CAAC+hI,eAAX,EAA4BH,YAAY,GAAGC,eAAe,CAACO,GAA/B,CAA5B,CAAgE;AAAhE,SACK,IAAIT,MAAM,CAACnlI,MAAP,KAAkB,EAAtB,EAA0BolI,YAAY,GAAG/zH,UAAU,CAAC8zH,MAAM,CAAC,EAAD,CAAP,CAAzB,CAA1B,CAAiE;AAAjE,SACAC,YAAY,GAAG/zH,UAAU,CAAC8zH,MAAM,CAAC,CAAD,CAAP,CAAzB;AACN;;AAED,MAAIxxG,IAAI,KAAK,GAAb,EAAkB;AAChB;AACA,QAAInwB,MAAM,CAAC+hI,eAAX,EAA4BH,YAAY,GAAGC,eAAe,CAACQ,GAA/B,CAA5B,CAAgE;AAAhE,SACK,IAAIV,MAAM,CAACnlI,MAAP,KAAkB,EAAtB,EAA0BolI,YAAY,GAAG/zH,UAAU,CAAC8zH,MAAM,CAAC,EAAD,CAAP,CAAzB,CAA1B,CAAiE;AAAjE,SACAC,YAAY,GAAG/zH,UAAU,CAAC8zH,MAAM,CAAC,CAAD,CAAP,CAAzB;AACN;;AAED,SAAOC,YAAY,IAAI,CAAvB;AACD;;AAED,SAASxrD,QAAT,CAAkB5+D,CAAlB,EAAqB;AACnB,SAAO,QAAOA,CAAP,MAAa,QAAb,IAAyBA,CAAC,KAAK,IAA/B,IAAuCA,CAAC,CAACyF,WAAzC,IAAwDpT,MAAM,CAACsV,SAAP,CAAiB/H,QAAjB,CAA0B2J,IAA1B,CAA+BvJ,CAA/B,EAAkCurB,KAAlC,CAAwC,CAAxC,EAA2C,CAAC,CAA5C,MAAmD,QAAlH;AACD;;AAED,SAASu/F,MAAT,CAAgBnmH,IAAhB,EAAsB;AACpB;AACA,MAAI,OAAOnc,MAAP,KAAkB,WAAlB,IAAiC,OAAOA,MAAM,CAACqY,WAAd,KAA8B,WAAnE,EAAgF;AAC9E,WAAO8D,IAAI,YAAY9D,WAAvB;AACD;;AAED,SAAO8D,IAAI,KAAKA,IAAI,CAACsI,QAAL,KAAkB,CAAlB,IAAuBtI,IAAI,CAACsI,QAAL,KAAkB,EAA9C,CAAX;AACD;;AAED,SAAS+gF,MAAT,GAAkB;AAChB,MAAMv4F,EAAE,GAAGpD,MAAM,CAACyc,SAAS,CAAC9pB,MAAV,IAAoB,CAApB,GAAwBD,SAAxB,GAAoC+pB,SAAS,CAAC,CAAD,CAA9C,CAAjB;AACA,MAAMi8G,QAAQ,GAAG,CAAC,WAAD,EAAc,aAAd,EAA6B,WAA7B,CAAjB;;AAEA,OAAK,IAAIvlI,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGspB,SAAS,CAAC9pB,MAA9B,EAAsCQ,CAAC,IAAI,CAA3C,EAA8C;AAC5C,QAAM03E,UAAU,GAAG13E,CAAC,GAAG,CAAJ,IAASspB,SAAS,CAAC9pB,MAAV,IAAoBQ,CAA7B,GAAiCT,SAAjC,GAA6C+pB,SAAS,CAACtpB,CAAD,CAAzE;;AAEA,QAAI03E,UAAU,KAAKn4E,SAAf,IAA4Bm4E,UAAU,KAAK,IAA3C,IAAmD,CAAC4tD,MAAM,CAAC5tD,UAAD,CAA9D,EAA4E;AAC1E,UAAM8tD,SAAS,GAAG34H,MAAM,CAACC,IAAP,CAAYD,MAAM,CAAC6qE,UAAD,CAAlB,EAAgCj6D,MAAhC,CAAuC,UAAA/M,GAAG;AAAA,eAAI60H,QAAQ,CAAC1+H,OAAT,CAAiB6J,GAAjB,IAAwB,CAA5B;AAAA,OAA1C,CAAlB;;AAEA,WAAK,IAAI8I,SAAS,GAAG,CAAhB,EAAmB3J,GAAG,GAAG21H,SAAS,CAAChmI,MAAxC,EAAgDga,SAAS,GAAG3J,GAA5D,EAAiE2J,SAAS,IAAI,CAA9E,EAAiF;AAC/E,YAAMisH,OAAO,GAAGD,SAAS,CAAChsH,SAAD,CAAzB;AACA,YAAMksH,IAAI,GAAG74H,MAAM,CAACmnF,wBAAP,CAAgCtc,UAAhC,EAA4C+tD,OAA5C,CAAb;;AAEA,YAAIC,IAAI,KAAKnmI,SAAT,IAAsBmmI,IAAI,CAACrzE,UAA/B,EAA2C;AACzC,cAAI+mB,QAAQ,CAACnpE,EAAE,CAACw1H,OAAD,CAAH,CAAR,IAAyBrsD,QAAQ,CAAC1B,UAAU,CAAC+tD,OAAD,CAAX,CAArC,EAA4D;AAC1D,gBAAI/tD,UAAU,CAAC+tD,OAAD,CAAV,CAAoB13B,UAAxB,EAAoC;AAClC99F,cAAAA,EAAE,CAACw1H,OAAD,CAAF,GAAc/tD,UAAU,CAAC+tD,OAAD,CAAxB;AACD,aAFD,MAEO;AACLj9B,cAAAA,MAAM,CAACv4F,EAAE,CAACw1H,OAAD,CAAH,EAAc/tD,UAAU,CAAC+tD,OAAD,CAAxB,CAAN;AACD;AACF,WAND,MAMO,IAAI,CAACrsD,QAAQ,CAACnpE,EAAE,CAACw1H,OAAD,CAAH,CAAT,IAA0BrsD,QAAQ,CAAC1B,UAAU,CAAC+tD,OAAD,CAAX,CAAtC,EAA6D;AAClEx1H,YAAAA,EAAE,CAACw1H,OAAD,CAAF,GAAc,EAAd;;AAEA,gBAAI/tD,UAAU,CAAC+tD,OAAD,CAAV,CAAoB13B,UAAxB,EAAoC;AAClC99F,cAAAA,EAAE,CAACw1H,OAAD,CAAF,GAAc/tD,UAAU,CAAC+tD,OAAD,CAAxB;AACD,aAFD,MAEO;AACLj9B,cAAAA,MAAM,CAACv4F,EAAE,CAACw1H,OAAD,CAAH,EAAc/tD,UAAU,CAAC+tD,OAAD,CAAxB,CAAN;AACD;AACF,WARM,MAQA;AACLx1H,YAAAA,EAAE,CAACw1H,OAAD,CAAF,GAAc/tD,UAAU,CAAC+tD,OAAD,CAAxB;AACD;AACF;AACF;AACF;AACF;;AAED,SAAOx1H,EAAP;AACD;;AAED,SAAS01H,cAAT,CAAwB96F,EAAxB,EAA4B+6F,OAA5B,EAAqCC,QAArC,EAA+C;AAC7Ch7F,EAAAA,EAAE,CAACjnC,KAAH,CAASwQ,WAAT,CAAqBwxH,OAArB,EAA8BC,QAA9B;AACD;;AAED,SAASC,oBAAT,CAA8BjpB,IAA9B,EAAoC;AAClC,MACEl3G,MADF,GAIIk3G,IAJJ,CACEl3G,MADF;AAAA,MAEEg6G,cAFF,GAII9C,IAJJ,CAEE8C,cAFF;AAAA,MAGEtxG,IAHF,GAIIwuG,IAJJ,CAGExuG,IAHF;AAKA,MAAMrL,MAAM,GAAG,2BAAf;AACA,MAAM+iI,aAAa,GAAG,CAACpgI,MAAM,CAACiwD,SAA9B;AACA,MAAI+uC,SAAS,GAAG,IAAhB;AACA,MAAIn5F,IAAJ;AACA,MAAM9F,QAAQ,GAAGC,MAAM,CAACooC,MAAP,CAAchoC,KAA/B;AACAJ,EAAAA,MAAM,CAACstG,SAAP,CAAiBrvG,KAAjB,CAAuB27G,cAAvB,GAAwC,MAAxC;AACAv8G,EAAAA,MAAM,CAACqiG,oBAAP,CAA4B1/F,MAAM,CAACqgI,cAAnC;AACA,MAAM1oC,GAAG,GAAGqiB,cAAc,GAAGomB,aAAjB,GAAiC,MAAjC,GAA0C,MAAtD;;AAEA,MAAME,YAAY,GAAG,SAAfA,YAAe,CAACx6H,OAAD,EAAUoJ,MAAV,EAAqB;AACxC,WAAOyoF,GAAG,KAAK,MAAR,IAAkB7xF,OAAO,IAAIoJ,MAA7B,IAAuCyoF,GAAG,KAAK,MAAR,IAAkB7xF,OAAO,IAAIoJ,MAA3E;AACD,GAFD;;AAIA,MAAM0+D,OAAO,GAAG,SAAVA,OAAU,GAAM;AACpB/nE,IAAAA,IAAI,GAAG,IAAIya,IAAJ,GAAW2+E,OAAX,EAAP;;AAEA,QAAID,SAAS,KAAK,IAAlB,EAAwB;AACtBA,MAAAA,SAAS,GAAGn5F,IAAZ;AACD;;AAED,QAAMoB,QAAQ,GAAGrK,IAAI,CAAC0H,GAAL,CAAS1H,IAAI,CAACyH,GAAL,CAAS,CAACwB,IAAI,GAAGm5F,SAAR,IAAqBj/F,QAA9B,EAAwC,CAAxC,CAAT,EAAqD,CAArD,CAAjB;AACA,QAAMm/F,YAAY,GAAG,MAAMtiG,IAAI,CAACw/B,GAAL,CAASn1B,QAAQ,GAAGrK,IAAI,CAACsL,EAAzB,IAA+B,CAA1D;AACA,QAAIq4H,eAAe,GAAGH,aAAa,GAAGlhC,YAAY,IAAI8a,cAAc,GAAGomB,aAArB,CAAlD;;AAEA,QAAIE,YAAY,CAACC,eAAD,EAAkBvmB,cAAlB,CAAhB,EAAmD;AACjDumB,MAAAA,eAAe,GAAGvmB,cAAlB;AACD;;AAEDh6G,IAAAA,MAAM,CAACstG,SAAP,CAAiB39F,QAAjB,qBACGjH,IADH,EACU63H,eADV;;AAIA,QAAID,YAAY,CAACC,eAAD,EAAkBvmB,cAAlB,CAAhB,EAAmD;AACjDh6G,MAAAA,MAAM,CAACstG,SAAP,CAAiBrvG,KAAjB,CAAuBi9H,QAAvB,GAAkC,QAAlC;AACAl7H,MAAAA,MAAM,CAACstG,SAAP,CAAiBrvG,KAAjB,CAAuB27G,cAAvB,GAAwC,EAAxC;AACAx4G,MAAAA,UAAU,CAAC,YAAM;AACfpB,QAAAA,MAAM,CAACstG,SAAP,CAAiBrvG,KAAjB,CAAuBi9H,QAAvB,GAAkC,EAAlC;AACAl7H,QAAAA,MAAM,CAACstG,SAAP,CAAiB39F,QAAjB,qBACGjH,IADH,EACU63H,eADV;AAGD,OALS,CAAV;AAMAljI,MAAAA,MAAM,CAACqiG,oBAAP,CAA4B1/F,MAAM,CAACqgI,cAAnC;AACA;AACD;;AAEDrgI,IAAAA,MAAM,CAACqgI,cAAP,GAAwBhjI,MAAM,CAACqN,qBAAP,CAA6BkjE,OAA7B,CAAxB;AACD,GAjCD;;AAmCAA,EAAAA,OAAO;AACR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/LD;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;ACpCA;AACA,sEAAe,CAAC,438CAA438C;;;;;;UCD548C;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;UEtBA;UACA;UACA;UACA;UACA","sources":["webpack://opten.hgcommercial/./app/components/chart.ts","webpack://opten.hgcommercial/./app/components/contain-inner.ts","webpack://opten.hgcommercial/./app/components/cookie-banner.ts","webpack://opten.hgcommercial/./app/components/double-scroll.ts","webpack://opten.hgcommercial/./app/components/fit-text.ts","webpack://opten.hgcommercial/./app/components/gallery-slider.ts","webpack://opten.hgcommercial/./app/components/header.ts","webpack://opten.hgcommercial/./app/components/iframe.ts","webpack://opten.hgcommercial/./app/components/inverter.ts","webpack://opten.hgcommercial/./app/components/media-transition.ts","webpack://opten.hgcommercial/./app/components/merge.ts","webpack://opten.hgcommercial/./app/components/modal.ts","webpack://opten.hgcommercial/./app/components/page-render-helper.ts","webpack://opten.hgcommercial/./app/components/player.ts","webpack://opten.hgcommercial/./app/components/section-scroll-progress.ts","webpack://opten.hgcommercial/./app/components/section-scroll-slider.ts","webpack://opten.hgcommercial/./app/components/section-scroll.ts","webpack://opten.hgcommercial/./app/components/section-slider.ts","webpack://opten.hgcommercial/./app/components/tabs.ts","webpack://opten.hgcommercial/./app/components/transform-full-half.ts","webpack://opten.hgcommercial/./app/main.ts","webpack://opten.hgcommercial/./node_modules/@opten/animation/linear-tween/index.ts","webpack://opten.hgcommercial/./node_modules/@opten/collapse/index.ts","webpack://opten.hgcommercial/./node_modules/@opten/collapse/initializer/index.ts","webpack://opten.hgcommercial/./node_modules/@opten/compiler/factory/index.ts","webpack://opten.hgcommercial/./node_modules/@opten/compiler/index.ts","webpack://opten.hgcommercial/./node_modules/@opten/compiler/metadata/component.ts","webpack://opten.hgcommercial/./node_modules/@opten/compiler/reflector/index.ts","webpack://opten.hgcommercial/./node_modules/@opten/compiler/resolver/index.ts","webpack://opten.hgcommercial/./node_modules/@opten/compiler/util/decorators.ts","webpack://opten.hgcommercial/./node_modules/@opten/compiler/util/factories.ts","webpack://opten.hgcommercial/./node_modules/@opten/compiler/util/type.ts","webpack://opten.hgcommercial/./node_modules/@opten/cookie/get/index.ts","webpack://opten.hgcommercial/./node_modules/@opten/cookie/set/index.ts","webpack://opten.hgcommercial/./node_modules/@opten/dom/add-class/index.ts","webpack://opten.hgcommercial/./node_modules/@opten/dom/as-html-element/index.ts","webpack://opten.hgcommercial/./node_modules/@opten/dom/change-class/index.ts","webpack://opten.hgcommercial/./node_modules/@opten/dom/class-regex/index.ts","webpack://opten.hgcommercial/./node_modules/@opten/dom/get-class/index.ts","webpack://opten.hgcommercial/./node_modules/@opten/dom/get-selector-element-from-element/index.ts","webpack://opten.hgcommercial/./node_modules/@opten/dom/get-selector-from-element/index.ts","webpack://opten.hgcommercial/./node_modules/@opten/dom/get-window-scroll-top/index.ts","webpack://opten.hgcommercial/./node_modules/@opten/dom/has-class/index.ts","webpack://opten.hgcommercial/./node_modules/@opten/dom/is-html-element/index.ts","webpack://opten.hgcommercial/./node_modules/@opten/dom/remove-class/index.ts","webpack://opten.hgcommercial/./node_modules/@opten/dom/toggle-class/index.ts","webpack://opten.hgcommercial/./node_modules/@opten/events/dispatch-custom-event/index.ts","webpack://opten.hgcommercial/./node_modules/@opten/events/event-dispatcher/index.ts","webpack://opten.hgcommercial/./node_modules/@opten/events/event-namespace-factory/index.ts","webpack://opten.hgcommercial/./node_modules/@opten/reactive/debounce/index.ts","webpack://opten.hgcommercial/./node_modules/@opten/scroll/scroll-to-offset/index.ts","webpack://opten.hgcommercial/./node_modules/@opten/scroll/scroll-to/index.ts","webpack://opten.hgcommercial/./node_modules/@opten/transition/add-transition-end-listener/index.ts","webpack://opten.hgcommercial/./node_modules/@opten/transition/get-transition-end-event-name/index.ts","webpack://opten.hgcommercial/./node_modules/chart.js/dist/chart.esm.js","webpack://opten.hgcommercial/./node_modules/chart.js/dist/chunks/helpers.segment.js","webpack://opten.hgcommercial/./node_modules/chart.js/dist/helpers.esm.js","webpack://opten.hgcommercial/./node_modules/chart.js/helpers/helpers.esm.js","webpack://opten.hgcommercial/./node_modules/chartjs-plugin-deferred/dist/chartjs-plugin-deferred.esm.js","webpack://opten.hgcommercial/./node_modules/dom7/dom7.esm.js","webpack://opten.hgcommercial/./node_modules/fitty/dist/fitty.module.js","webpack://opten.hgcommercial/./node_modules/ssr-window/ssr-window.esm.js","webpack://opten.hgcommercial/./node_modules/swiper/core/breakpoints/getBreakpoint.js","webpack://opten.hgcommercial/./node_modules/swiper/core/breakpoints/index.js","webpack://opten.hgcommercial/./node_modules/swiper/core/breakpoints/setBreakpoint.js","webpack://opten.hgcommercial/./node_modules/swiper/core/check-overflow/index.js","webpack://opten.hgcommercial/./node_modules/swiper/core/classes/addClasses.js","webpack://opten.hgcommercial/./node_modules/swiper/core/classes/index.js","webpack://opten.hgcommercial/./node_modules/swiper/core/classes/removeClasses.js","webpack://opten.hgcommercial/./node_modules/swiper/core/core.js","webpack://opten.hgcommercial/./node_modules/swiper/core/defaults.js","webpack://opten.hgcommercial/./node_modules/swiper/core/events-emitter.js","webpack://opten.hgcommercial/./node_modules/swiper/core/events/index.js","webpack://opten.hgcommercial/./node_modules/swiper/core/events/onClick.js","webpack://opten.hgcommercial/./node_modules/swiper/core/events/onResize.js","webpack://opten.hgcommercial/./node_modules/swiper/core/events/onScroll.js","webpack://opten.hgcommercial/./node_modules/swiper/core/events/onTouchEnd.js","webpack://opten.hgcommercial/./node_modules/swiper/core/events/onTouchMove.js","webpack://opten.hgcommercial/./node_modules/swiper/core/events/onTouchStart.js","webpack://opten.hgcommercial/./node_modules/swiper/core/grab-cursor/index.js","webpack://opten.hgcommercial/./node_modules/swiper/core/grab-cursor/setGrabCursor.js","webpack://opten.hgcommercial/./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","webpack://opten.hgcommercial/./node_modules/swiper/core/images/index.js","webpack://opten.hgcommercial/./node_modules/swiper/core/images/loadImage.js","webpack://opten.hgcommercial/./node_modules/swiper/core/images/preloadImages.js","webpack://opten.hgcommercial/./node_modules/swiper/core/loop/index.js","webpack://opten.hgcommercial/./node_modules/swiper/core/loop/loopCreate.js","webpack://opten.hgcommercial/./node_modules/swiper/core/loop/loopDestroy.js","webpack://opten.hgcommercial/./node_modules/swiper/core/loop/loopFix.js","webpack://opten.hgcommercial/./node_modules/swiper/core/moduleExtendParams.js","webpack://opten.hgcommercial/./node_modules/swiper/core/modules/observer/observer.js","webpack://opten.hgcommercial/./node_modules/swiper/core/modules/resize/resize.js","webpack://opten.hgcommercial/./node_modules/swiper/core/slide/index.js","webpack://opten.hgcommercial/./node_modules/swiper/core/slide/slideNext.js","webpack://opten.hgcommercial/./node_modules/swiper/core/slide/slidePrev.js","webpack://opten.hgcommercial/./node_modules/swiper/core/slide/slideReset.js","webpack://opten.hgcommercial/./node_modules/swiper/core/slide/slideTo.js","webpack://opten.hgcommercial/./node_modules/swiper/core/slide/slideToClickedSlide.js","webpack://opten.hgcommercial/./node_modules/swiper/core/slide/slideToClosest.js","webpack://opten.hgcommercial/./node_modules/swiper/core/slide/slideToLoop.js","webpack://opten.hgcommercial/./node_modules/swiper/core/transition/index.js","webpack://opten.hgcommercial/./node_modules/swiper/core/transition/setTransition.js","webpack://opten.hgcommercial/./node_modules/swiper/core/transition/transitionEmit.js","webpack://opten.hgcommercial/./node_modules/swiper/core/transition/transitionEnd.js","webpack://opten.hgcommercial/./node_modules/swiper/core/transition/transitionStart.js","webpack://opten.hgcommercial/./node_modules/swiper/core/translate/getTranslate.js","webpack://opten.hgcommercial/./node_modules/swiper/core/translate/index.js","webpack://opten.hgcommercial/./node_modules/swiper/core/translate/maxTranslate.js","webpack://opten.hgcommercial/./node_modules/swiper/core/translate/minTranslate.js","webpack://opten.hgcommercial/./node_modules/swiper/core/translate/setTranslate.js","webpack://opten.hgcommercial/./node_modules/swiper/core/translate/translateTo.js","webpack://opten.hgcommercial/./node_modules/swiper/core/update/index.js","webpack://opten.hgcommercial/./node_modules/swiper/core/update/updateActiveIndex.js","webpack://opten.hgcommercial/./node_modules/swiper/core/update/updateAutoHeight.js","webpack://opten.hgcommercial/./node_modules/swiper/core/update/updateClickedSlide.js","webpack://opten.hgcommercial/./node_modules/swiper/core/update/updateProgress.js","webpack://opten.hgcommercial/./node_modules/swiper/core/update/updateSize.js","webpack://opten.hgcommercial/./node_modules/swiper/core/update/updateSlides.js","webpack://opten.hgcommercial/./node_modules/swiper/core/update/updateSlidesClasses.js","webpack://opten.hgcommercial/./node_modules/swiper/core/update/updateSlidesOffset.js","webpack://opten.hgcommercial/./node_modules/swiper/core/update/updateSlidesProgress.js","webpack://opten.hgcommercial/./node_modules/swiper/modules/a11y/a11y.js","webpack://opten.hgcommercial/./node_modules/swiper/modules/autoplay/autoplay.js","webpack://opten.hgcommercial/./node_modules/swiper/modules/controller/controller.js","webpack://opten.hgcommercial/./node_modules/swiper/modules/effect-cards/effect-cards.js","webpack://opten.hgcommercial/./node_modules/swiper/modules/effect-coverflow/effect-coverflow.js","webpack://opten.hgcommercial/./node_modules/swiper/modules/effect-creative/effect-creative.js","webpack://opten.hgcommercial/./node_modules/swiper/modules/effect-cube/effect-cube.js","webpack://opten.hgcommercial/./node_modules/swiper/modules/effect-fade/effect-fade.js","webpack://opten.hgcommercial/./node_modules/swiper/modules/effect-flip/effect-flip.js","webpack://opten.hgcommercial/./node_modules/swiper/modules/free-mode/free-mode.js","webpack://opten.hgcommercial/./node_modules/swiper/modules/grid/grid.js","webpack://opten.hgcommercial/./node_modules/swiper/modules/hash-navigation/hash-navigation.js","webpack://opten.hgcommercial/./node_modules/swiper/modules/history/history.js","webpack://opten.hgcommercial/./node_modules/swiper/modules/keyboard/keyboard.js","webpack://opten.hgcommercial/./node_modules/swiper/modules/lazy/lazy.js","webpack://opten.hgcommercial/./node_modules/swiper/modules/manipulation/manipulation.js","webpack://opten.hgcommercial/./node_modules/swiper/modules/manipulation/methods/addSlide.js","webpack://opten.hgcommercial/./node_modules/swiper/modules/manipulation/methods/appendSlide.js","webpack://opten.hgcommercial/./node_modules/swiper/modules/manipulation/methods/prependSlide.js","webpack://opten.hgcommercial/./node_modules/swiper/modules/manipulation/methods/removeAllSlides.js","webpack://opten.hgcommercial/./node_modules/swiper/modules/manipulation/methods/removeSlide.js","webpack://opten.hgcommercial/./node_modules/swiper/modules/mousewheel/mousewheel.js","webpack://opten.hgcommercial/./node_modules/swiper/modules/navigation/navigation.js","webpack://opten.hgcommercial/./node_modules/swiper/modules/pagination/pagination.js","webpack://opten.hgcommercial/./node_modules/swiper/modules/parallax/parallax.js","webpack://opten.hgcommercial/./node_modules/swiper/modules/scrollbar/scrollbar.js","webpack://opten.hgcommercial/./node_modules/swiper/modules/thumbs/thumbs.js","webpack://opten.hgcommercial/./node_modules/swiper/modules/virtual/virtual.js","webpack://opten.hgcommercial/./node_modules/swiper/modules/zoom/zoom.js","webpack://opten.hgcommercial/./node_modules/swiper/shared/classes-to-selector.js","webpack://opten.hgcommercial/./node_modules/swiper/shared/create-element-if-not-defined.js","webpack://opten.hgcommercial/./node_modules/swiper/shared/create-shadow.js","webpack://opten.hgcommercial/./node_modules/swiper/shared/dom.js","webpack://opten.hgcommercial/./node_modules/swiper/shared/effect-init.js","webpack://opten.hgcommercial/./node_modules/swiper/shared/effect-target.js","webpack://opten.hgcommercial/./node_modules/swiper/shared/effect-virtual-transition-end.js","webpack://opten.hgcommercial/./node_modules/swiper/shared/get-browser.js","webpack://opten.hgcommercial/./node_modules/swiper/shared/get-device.js","webpack://opten.hgcommercial/./node_modules/swiper/shared/get-support.js","webpack://opten.hgcommercial/./node_modules/swiper/shared/utils.js","webpack://opten.hgcommercial/./node_modules/swiper/swiper.esm.js","webpack://opten.hgcommercial/./app/main.scss","webpack://opten.hgcommercial/webpack/bootstrap","webpack://opten.hgcommercial/webpack/before-startup","webpack://opten.hgcommercial/webpack/startup","webpack://opten.hgcommercial/webpack/after-startup"],"sourcesContent":["import { Component } from '@opten/compiler/metadata/component';\r\nimport {\r\n\tArcElement,\r\n\tBarController,\r\n\tBarElement,\r\n\tCategoryScale,\r\n\tChart,\r\n\tDoughnutController,\r\n\tLegend,\r\n\tLinearScale,\r\n\tLineController,\r\n\tLineElement,\r\n\tPointElement,\r\n\tTitle,\r\n\tTooltip\r\n} from 'chart.js';\r\nimport ChartDeferred from 'chartjs-plugin-deferred';\r\nimport { color } from 'chart.js/helpers';\r\n\r\nChart.register(\r\n\tArcElement,\r\n\tBarElement,\r\n\tBarController,\r\n\tCategoryScale,\r\n\tDoughnutController,\r\n\tLegend,\r\n\tLinearScale,\r\n\tLineElement,\r\n\tLineController,\r\n\tPointElement,\r\n\tTitle,\r\n\tTooltip,\r\n\tChartDeferred\r\n);\r\nconst bodyStyles = getComputedStyle(document.body);\r\nChart.defaults.font = {\r\n\tfamily: bodyStyles.fontFamily,\r\n\tsize: parseInt(bodyStyles.fontSize),\r\n\tweight: bodyStyles.fontWeight\r\n};\r\n\r\n@Component({ className: 'js-chart' })\r\nexport class ChartComponent {\r\n\tprivate static Colors = [\r\n\t\t'#ffd300',\r\n\t\t'#000',\r\n\t\t'#273583',\r\n\t\t'#d10a11',\r\n\t\t'#3fa535'\r\n\t];\r\n\r\n\tconstructor(private element: HTMLCanvasElement) {\r\n\t\tconst tooltipDisabled: any =\r\n\t\t\tthis.element.getAttribute('data-hide-tooltip') == 'true' ||\r\n\t\t\tthis.element.getAttribute('data-hide-tooltip') == 'True';\r\n\t\tconst type: any = this.element.getAttribute('data-type');\r\n\t\tconst sameScale =\r\n\t\t\tthis.element.getAttribute('data-same-scale') == 'true';\r\n\t\tconst labels = JSON.parse(this.element.getAttribute('data-labels'));\r\n\t\tconst datasets: any[] = JSON.parse(\r\n\t\t\tthis.element.getAttribute('data-datasets')\r\n\t\t);\r\n\r\n\t\tlet title = undefined;\r\n\t\tif (datasets.length == 1) {\r\n\t\t\ttitle = {\r\n\t\t\t\tdisplay: true,\r\n\t\t\t\ttext: datasets[0].label\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tlet scales = undefined;\r\n\t\tif (sameScale == false) {\r\n\t\t\tscales = datasets.reduce((map, dataset, i) => {\r\n\t\t\t\tconst yLabel = 'y' + i;\r\n\t\t\t\tdataset.yAxisID = yLabel;\r\n\t\t\t\tmap[yLabel] = {\r\n\t\t\t\t\ttype: 'linear',\r\n\t\t\t\t\tposition: i % 2 == 0 ? 'left' : 'right',\r\n\t\t\t\t\tgrid: {\r\n\t\t\t\t\t\tdrawOnChartArea: i == 0\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t\treturn map;\r\n\t\t\t}, {});\r\n\t\t}\r\n\r\n\t\tdatasets.map((dataset, i) => {\r\n\t\t\tif (type == 'doughnut') {\r\n\t\t\t\tdataset.backgroundColor = this.getColors(\r\n\t\t\t\t\tcolor(ChartComponent.Colors[0]),\r\n\t\t\t\t\tlabels.length\r\n\t\t\t\t);\r\n\t\t\t} else {\r\n\t\t\t\tdataset.backgroundColor = this.getColor(i);\r\n\t\t\t\tdataset.pointRadius = 10;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tconst chart = new Chart(this.element, {\r\n\t\t\ttype,\r\n\t\t\tdata: {\r\n\t\t\t\tlabels,\r\n\t\t\t\tdatasets\r\n\t\t\t},\r\n\t\t\toptions: {\r\n\t\t\t\tscales,\r\n\t\t\t\tplugins: {\r\n\t\t\t\t\ttitle,\r\n\t\t\t\t\tlegend: {\r\n\t\t\t\t\t\tposition: 'bottom'\r\n\t\t\t\t\t},\r\n\t\t\t\t\ttooltip: {\r\n\t\t\t\t\t\tenabled: !tooltipDisabled\r\n\t\t\t\t\t},\r\n\t\t\t\t\tdeferred: {\r\n\t\t\t\t\t\tyOffset: '50%'\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate getColor(index: number) {\r\n\t\treturn ChartComponent.Colors[index % ChartComponent.Colors.length];\r\n\t}\r\n\r\n\tprivate getColors(startColor, size: number) {\r\n\t\tconst startColors = startColor.rgb;\r\n\t\tconst endColors = startColor.lighten(1).rgb;\r\n\t\tconst colors = [];\r\n\t\tfor (let index = 0; index < size; index++) {\r\n\t\t\tvar r = this.interpolate(startColors.r, endColors.r, size, index);\r\n\t\t\tvar g = this.interpolate(startColors.g, endColors.g, size, index);\r\n\t\t\tvar b = this.interpolate(startColors.b, endColors.b, size, index);\r\n\t\t\tcolors.push(`rgb(${r}, ${g}, ${b})`);\r\n\t\t}\r\n\t\treturn colors;\r\n\t}\r\n\r\n\tprivate interpolate(start, end, steps, count) {\r\n\t\tvar s = start,\r\n\t\t\te = end,\r\n\t\t\tfinal = s + ((e - s) / steps) * count;\r\n\t\treturn Math.floor(final);\r\n\t}\r\n}\r\n","import { debounce } from '@opten/reactive/debounce';\r\nimport { Component } from '@opten/compiler/metadata/component';\r\n\r\n@Component({ className: 'js-contain-inner' })\r\nexport class ContainInnerComponent {\r\n\tprivate element: Element;\r\n\tprivate parent: Element;\r\n\r\n\tconstructor(private wrapper: HTMLElement) {\r\n\t\tthis.element = this.wrapper.children.item(0);\r\n\t\tthis.parent = this.wrapper.parentElement;\r\n\r\n\t\tif (this.wrapper && this.element && this.parent) {\r\n\t\t\tthis.calculate();\r\n\r\n\t\t\twindow.addEventListener(\r\n\t\t\t\t'resize',\r\n\t\t\t\tdebounce(() => this.calculate(), 300)\r\n\t\t\t);\r\n\t\t\twindow.addEventListener(\r\n\t\t\t\t'orientationchange',\r\n\t\t\t\tdebounce(() => this.calculate(), 300)\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\tcalculate() {\r\n\t\tconst ratio = this.element.clientWidth / this.element.clientHeight;\r\n\t\tconst parentRatio = this.parent.clientWidth / this.parent.clientHeight;\r\n\r\n\t\tlet top = 0;\r\n\t\tlet bottom = 0;\r\n\t\tlet left = 0;\r\n\t\tlet right = 0;\r\n\r\n\t\tif (parentRatio > ratio) {\r\n\t\t\tconst height = this.parent.clientWidth / ratio;\r\n\t\t\ttop = bottom = -1 * ((height - this.parent.clientHeight) / 2);\r\n\t\t} else if (parentRatio < ratio) {\r\n\t\t\tconst width = this.parent.clientHeight * ratio;\r\n\t\t\tleft = right = -1 * ((width - this.parent.clientWidth) / 2);\r\n\t\t}\r\n\r\n\t\tthis.wrapper.style.top = top + 'px';\r\n\t\tthis.wrapper.style.bottom = bottom + 'px';\r\n\t\tthis.wrapper.style.left = left + 'px';\r\n\t\tthis.wrapper.style.right = right + 'px';\r\n\t}\r\n}\r\n","import { removeClass } from '@opten/dom/remove-class';\r\nimport { Component } from '@opten/compiler/metadata/component';\r\nimport { setCookie } from '@opten/cookie/set';\r\nimport { getCookie } from '@opten/cookie/get';\r\n\r\n@Component({ className: 'js-cookie-consent' })\r\nexport class CookieBannerComponent {\r\n\tprivate cookieKey: string;\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tthis.cookieKey = this.element.getAttribute('data-cookie-key');\r\n\t\tif (!this.cookieKey) {\r\n\t\t\tthis.cookieKey = 'cookiesAccepted';\r\n\t\t}\r\n\r\n\t\tif (getCookie(this.cookieKey) !== 'true') {\r\n\t\t\tArray.from(this.element.querySelectorAll('.js-cookie-consent-approve'))\r\n\t\t\t\t.forEach((btn) => btn.addEventListener('click', (e) => {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\tthis.accept();\r\n\t\t\t\t}));\r\n\t\t} else {\r\n\t\t\tthis.hide();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate accept() {\r\n\t\tsetCookie(this.cookieKey, 'true', Infinity, '/');\r\n\t\tthis.hide();\r\n\t}\r\n\r\n\tprivate hide() {\r\n\t\tremoveClass(this.element, 'is-open');\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { addClass } from '@opten/dom/add-class';\r\nimport { toggleClass } from '@opten/dom/toggle-class';\r\nimport { debounce } from '@opten/reactive/debounce';\r\n\r\n@Component({ className: 'js-double-scroll' })\r\nexport class DoubleScrollComponent {\r\n\tprivate scroller: HTMLElement;\r\n\tprivate inner: HTMLElement;\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tthis.scroller = document.createElement('div');\r\n\t\taddClass(this.scroller, 'c-double-scroll');\r\n\r\n\t\tthis.inner = document.createElement('div');\r\n\t\tthis.scroller.appendChild(this.inner);\r\n\t\tthis.element.parentElement.insertBefore(this.scroller, this.element);\r\n\r\n\t\tthis.resize();\r\n\t\tthis.scroller.addEventListener(\r\n\t\t\t'resize',\r\n\t\t\tdebounce(() => this.resize(), 10)\r\n\t\t);\r\n\r\n\t\tthis.scroller.addEventListener('scroll', e => {\r\n\t\t\tthis.element.scrollLeft = this.scroller.scrollLeft;\r\n\t\t});\r\n\t\tthis.element.addEventListener('scroll', e => {\r\n\t\t\tthis.scroller.scrollLeft = this.element.scrollLeft;\r\n\t\t});\r\n\t}\r\n\r\n\tprivate resize() {\r\n\t\tthis.inner.style.width =\r\n\t\t\tthis.element.firstElementChild.clientWidth + 'px';\r\n\t\ttoggleClass(\r\n\t\t\tthis.scroller,\r\n\t\t\t'has-scroll',\r\n\t\t\tthis.element.scrollWidth > this.element.clientWidth\r\n\t\t);\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport fitty from 'fitty';\r\n\r\n@Component({ className: 'js-fit-text' })\r\nexport class FitTextComponent {\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tfitty(this.element);\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\n\r\nimport Swiper, { HashNavigation, Keyboard, Mousewheel, Autoplay } from 'swiper';\r\n\r\n\r\nSwiper.use([Keyboard, Mousewheel, HashNavigation, Autoplay]);\r\n\r\n@Component({ className: 'js-gallery-slider' })\r\nexport class GallerySliderComponent {\r\n\tpublic swiper: Swiper;\r\n\t\r\n\tconstructor(private element: HTMLElement) {\t\t\r\n const duration = this.element.dataset.duration;\r\n\t\tthis.swiper = new Swiper(this.element, {\r\n autoplay: {\r\n delay: parseInt(duration)\r\n },\t\t\t\r\n loop: true,\r\n\t\t\tspeed: 1000,\t\t\t\t\t\r\n\t\t});\t\t\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { removeClass } from '@opten/dom/remove-class';\r\nimport { toggleClass } from '@opten/dom/toggle-class';\r\nimport { ModalComponent } from './modal';\r\n\r\n@Component({ className: 'js-header' })\r\nexport class HeaderComponent {\r\n\ttoggle: HTMLElement;\r\n\tbackdrop: HTMLElement;\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tthis.toggle = this.element.querySelector('.js-header-toggle');\r\n\t\tthis.backdrop = this.element.querySelector('.js-header-backdrop');\r\n\r\n\t\tthis.toggle.addEventListener('click', e => {\r\n\t\t\te.preventDefault();\r\n\t\t\tif (ModalComponent.close()) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\ttoggleClass(document.body, 'header-is-open');\r\n\t\t});\r\n\r\n\t\tthis.backdrop.addEventListener('click', e => {\r\n\t\t\te.preventDefault();\r\n\t\t\tremoveClass(document.body, 'header-is-open');\r\n\t\t});\r\n\t}\r\n}\r\n","import { mergeOptions } from \"./merge\";\r\n\r\n\r\nexport interface IFramePlayerOptions {\r\n\tstartPlayerClassName: string;\r\n\tplayingClassName: string;\r\n}\r\n\r\nexport class IFramePlayer {\r\n\tprivate button: HTMLElement | null;\r\n\tprivate iframe: HTMLIFrameElement | null;\r\n\tprivate options: IFramePlayerOptions;\r\n\r\n\tstatic options: IFramePlayerOptions = {\r\n\t\tstartPlayerClassName: 'js-player-start',\r\n\t\tplayingClassName: 'is-playing',\r\n\t};\r\n\r\n\tconstructor(private element: HTMLElement, options?: IFramePlayerOptions) {\r\n\t\tthis.options = mergeOptions(IFramePlayer, options, element);\r\n\r\n\t\tthis.button = element.querySelector(\r\n\t\t\t`.${this.options.startPlayerClassName}`\r\n\t\t);\r\n\r\n\t\tthis.iframe = element.querySelector('iframe');\r\n\r\n\t\tif (this.button) {\r\n\t\t\tthis.button.addEventListener('click', () => this.play(), {\r\n\t\t\t\tonce: true,\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tplay() { \r\n\t\tif (this.iframe) {\r\n if (this.iframe.src.indexOf('autoplay') === -1) {\r\n this.iframe.src +=\r\n this.iframe.src.indexOf('?') === -1\r\n ? '?autoplay=1'\r\n : '&autoplay=1';\r\n } else {\r\n this.iframe.src = this.iframe.src.replace(\r\n 'autoplay=0',\r\n 'autoplay=1'\r\n );\r\n }\t\t\t\r\n setTimeout(()=> {\r\n this.element.classList.add(this.options.playingClassName);\r\n }, 1300);\r\n\t\t}\r\n\t}\r\n\r\n\tdestroy() {\r\n\t\tthis.iframe?.setAttribute('src', '');\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { hasClass } from '@opten/dom/has-class';\r\nimport { toggleClass } from '@opten/dom/toggle-class';\r\nimport { ScrollMagicController, ScrollMagicModalController } from '../main';\r\nimport { PageRenderHelper } from './page-render-helper';\r\n\r\ndeclare const ScrollMagic: any;\r\n@Component({ className: 'js-invert-target' })\r\nexport class InverterComponent {\r\n\tprivate sections: HTMLElement[];\r\n\r\n\tprivate scenes: any[];\r\n\tprivate timer: any;\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tPageRenderHelper.onPageChange.subscribe(() => this.init(true));\r\n\t\tthis.init();\r\n\r\n\t\tif (!this.timer) {\r\n\t\t\tthis.timer = setInterval(() => {\r\n\t\t\t\tif (this.scenes && this.scenes.length > 0) {\r\n\t\t\t\t\tthis.scenes.forEach(({ scene, section }) => {\r\n\t\t\t\t\t\tif (scene.state() == 'DURING') {\r\n\t\t\t\t\t\t\tthis.toggleInverter(section);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}, 1000);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate init(refresh?: boolean) {\r\n\t\tif (this.scenes && this.scenes.length > 0) {\r\n\t\t\tthis.scenes.forEach(({ scene }) => {\r\n\t\t\t\t// scene.removeIndicators();\r\n\t\t\t\tscene.destroy(false);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.scenes = [];\r\n\t\tthis.sections = Array.from(\r\n\t\t\tdocument.querySelectorAll('.js-invert-listener')\r\n\t\t) as HTMLElement[];\r\n\r\n\t\tthis.sections.forEach(section => {\r\n\t\t\tconst scene = new ScrollMagic.Scene({\r\n\t\t\t\ttriggerElement: section,\r\n\t\t\t\ttriggerHook: 'onLeave',\r\n\t\t\t\toffset: (() => {\r\n\t\t\t\t\tconst rect = this.element.getBoundingClientRect();\r\n\t\t\t\t\treturn (rect.top + rect.height / 2) * -1;\r\n\t\t\t\t})(),\r\n\t\t\t\tduration: () => {\r\n\t\t\t\t\treturn section.clientHeight;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t\t.on('enter leave', () => {\r\n\t\t\t\t\tif (scene.state() == 'DURING') {\r\n\t\t\t\t\t\tthis.toggleInverter(section);\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t// .addIndicators()\r\n\t\t\t\t.addTo(section.closest('.js-modal') ? ScrollMagicModalController : ScrollMagicController);\r\n\t\t\tif (refresh) {\r\n\t\t\t\tscene.refresh();\r\n\t\t\t}\r\n\t\t\tthis.scenes.push({ scene, section });\r\n\t\t});\r\n\t}\r\n\r\n\tprivate toggleInverter(section) {\r\n\t\tconst isModalOpen = hasClass(document.body, 'modal-is-open');\r\n\t\tconst isContentOpen = hasClass(document.body, 'content-is-open');\r\n\t\tif (\r\n\t\t\tsection.offsetHeight == 0 ||\r\n\t\t\t(isModalOpen && !section.closest('.js-modal')) ||\r\n\t\t\t(isModalOpen == false && section.closest('.js-modal')) ||\r\n\t\t\t(isContentOpen && isModalOpen == false && !section.closest('.js-section-slider'))\r\n\t\t) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\ttoggleClass(\r\n\t\t\tthis.element,\r\n\t\t\t'is-inverted',\r\n\t\t\tsection.getAttribute('data-invert').toLowerCase() == 'true'\r\n\t\t);\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { debounce } from '@opten/reactive/debounce';\r\nimport { PageRenderHelper } from './page-render-helper';\r\n\r\n@Component({ className: 'js-media-transition' })\r\nexport class MediaTransitionComponent {\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tconst observer = new IntersectionObserver(function (entries, observer) {\r\n\t\t\tentries.forEach(function (entry) {\r\n\t\t\t\tif (entry.isIntersecting) {\r\n\t\t\t\t\tsketch.play();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tsketch.stop();\r\n\t\t\t\t}\r\n\t\t\t}, {});\r\n\t\t});\r\n\r\n\t\tconst duration = parseInt(\r\n\t\t\telement.getAttribute('data-duration') || '3000'\r\n\t\t);\r\n\t\tlet sketch = new Sketch(element, {\r\n\t\t\tintervalDuration: duration,\r\n\t\t\tuniforms: {\r\n\t\t\t\tintensity: { value: 0.3, type: 'f', min: 0, max: 2 }\r\n\t\t\t},\r\n\t\t\tfragment: `\r\n\t\t\t\tuniform float time;\r\n\t\t\t\tuniform float progress;\r\n\t\t\t\tuniform float width;\r\n\t\t\t\tuniform float scaleX;\r\n\t\t\t\tuniform float scaleY;\r\n\t\t\t\tuniform float transition;\r\n\t\t\t\tuniform float radius;\r\n\t\t\t\tuniform float intensity;\r\n\t\t\t\tuniform sampler2D texture1;\r\n\t\t\t\tuniform sampler2D texture2;\r\n\t\t\t\tuniform sampler2D displacement;\r\n\t\t\t\tuniform vec4 resolution;\r\n\t\t\t\tvarying vec2 vUv;\r\n\t\t\t\tvoid main()\t{\r\n\t\t\t\t vec2 newUV = (vUv - vec2(0.5))*resolution.zw + vec2(0.5);\r\n\t\t\t\t vec4 d1 = texture2D(texture1, newUV);\r\n\t\t\t\t vec4 d2 = texture2D(texture2, newUV);\r\n\t\t\t\t float displace1 = (d1.r + d1.g + d1.b)*0.33;\r\n\t\t\t\t float displace2 = (d2.r + d2.g + d2.b)*0.33;\r\n\t\t\t\t \r\n\t\t\t\t vec4 t1 = texture2D(texture1, vec2(newUV.x, newUV.y + progress * (displace2 * intensity)));\r\n\t\t\t\t vec4 t2 = texture2D(texture2, vec2(newUV.x, newUV.y + (1.0 - progress) * (displace1 * intensity)));\r\n\t\t\t\t gl_FragColor = mix(t1, t2, progress);\r\n\t\t\t\t}\r\n\t\t\t`\r\n\t\t});\r\n\t\tsketch.init().then(() => {\r\n\t\t\tobserver.observe(this.element);\r\n\t\t});\r\n\t\tPageRenderHelper.onPageChange.subscribe(() => sketch.stop());\r\n\t}\r\n}\r\n\r\ndeclare const THREE: any;\r\ndeclare const TimelineMax: any;\r\ndeclare const Power2: any;\r\nclass Sketch {\r\n\tprivate scene: any;\r\n\tprivate vertex: string;\r\n\tprivate fragment: any;\r\n\tprivate uniforms: any;\r\n\tprivate renderer: any;\r\n\tprivate width: number;\r\n\tprivate height: number;\r\n\tprivate duration: any;\r\n\tprivate easing: any;\r\n\t// private clicker: HTMLElement;\r\n\tprivate images: any;\r\n\tprivate camera: any;\r\n\tprivate time: number;\r\n\tprivate current: number;\r\n\tprivate textures: any[];\r\n\tprivate paused: boolean;\r\n\tprivate imageAspect: number;\r\n\tprivate material: any;\r\n\tprivate plane: any;\r\n\tprivate geometry: any;\r\n\tprivate isRunning: any;\r\n\tprivate settings: any;\r\n\tprivate intervalDuration: any;\r\n\tprivate interval: any;\r\n\r\n\tconstructor(private container: HTMLElement, opts: any) {\r\n\t\tthis.scene = new THREE.Scene();\r\n\t\tthis.vertex = `varying vec2 vUv;void main() {vUv = uv;gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );}`;\r\n\t\tthis.intervalDuration = opts.intervalDuration;\r\n\t\tthis.fragment = opts.fragment;\r\n\t\tthis.uniforms = opts.uniforms;\r\n\t\tthis.renderer = new THREE.WebGLRenderer();\r\n\t\tthis.width = this.container.offsetWidth;\r\n\t\tthis.height = this.container.offsetHeight;\r\n\t\tthis.renderer.setPixelRatio(window.devicePixelRatio);\r\n\t\tthis.renderer.setSize(this.width, this.height);\r\n\t\tthis.renderer.setClearColor(0xeeeeee, 1);\r\n\t\tthis.duration = opts.duration || 1;\r\n\t\tthis.easing = opts.easing || 'easeInOut';\r\n\r\n\t\tthis.images = JSON.parse(this.container.getAttribute('data-images'));\r\n\t\tthis.container.appendChild(this.renderer.domElement);\r\n\r\n\t\tthis.camera = new THREE.PerspectiveCamera(\r\n\t\t\t70,\r\n\t\t\twindow.innerWidth / window.innerHeight,\r\n\t\t\t0.001,\r\n\t\t\t1000\r\n\t\t);\r\n\r\n\t\tthis.camera.position.set(0, 0, 2);\r\n\t\tthis.time = 0;\r\n\t\tthis.current = 0;\r\n\t\tthis.textures = [];\r\n\r\n\t\tthis.paused = true;\r\n\t}\r\n\r\n\tinit() {\r\n\t\treturn new Promise(resolve => {\r\n\t\t\tthis.initiate(() => {\r\n\t\t\t\tthis.setupResize();\r\n\t\t\t\tthis.setSettings();\r\n\t\t\t\tthis.addObjects();\r\n\t\t\t\tthis.resize();\r\n\t\t\t\tthis.clickEvent();\r\n\t\t\t\tthis.play();\r\n\t\t\t\tresolve();\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tprivate initiate(cb) {\r\n\t\tconst promises = [];\r\n\t\tthis.images.forEach((url, i) => {\r\n\t\t\tlet promise = new Promise(resolve => {\r\n\t\t\t\tthis.textures[i] = new THREE.TextureLoader().load(url, resolve);\r\n\t\t\t});\r\n\t\t\tpromises.push(promise);\r\n\t\t});\r\n\r\n\t\tPromise.all(promises).then(() => {\r\n\t\t\tcb();\r\n\t\t});\r\n\t}\r\n\r\n\tclickEvent() {\r\n\t\tthis.container.addEventListener('click', () => {\r\n\t\t\tthis.next();\r\n\t\t});\r\n\t}\r\n\tsetSettings() {\r\n\t\tthis.settings = { progress: 0.5 };\r\n\t\tObject.keys(this.uniforms).forEach(item => {\r\n\t\t\tthis.settings[item] = this.uniforms[item].value;\r\n\t\t});\r\n\t}\r\n\r\n\tsetupResize() {\r\n\t\tnew ResizeObserver(debounce(() => this.resize(), 10)).observe(\r\n\t\t\tthis.container\r\n\t\t);\r\n\t}\r\n\r\n\tresize() {\r\n\t\tthis.width = this.container.offsetWidth;\r\n\t\tthis.height = this.container.offsetHeight;\r\n\t\tthis.renderer.setSize(this.width, this.height);\r\n\t\tthis.camera.aspect = this.width / this.height;\r\n\r\n\t\t// image cover\r\n\t\tthis.imageAspect =\r\n\t\t\tthis.textures[0].image.height / this.textures[0].image.width;\r\n\t\tlet a1;\r\n\t\tlet a2;\r\n\t\tif (this.height / this.width > this.imageAspect) {\r\n\t\t\ta1 = (this.width / this.height) * this.imageAspect;\r\n\t\t\ta2 = 1;\r\n\t\t} else {\r\n\t\t\ta1 = 1;\r\n\t\t\ta2 = this.height / this.width / this.imageAspect;\r\n\t\t}\r\n\r\n\t\tthis.material.uniforms.resolution.value.x = this.width;\r\n\t\tthis.material.uniforms.resolution.value.y = this.height;\r\n\t\tthis.material.uniforms.resolution.value.z = a1;\r\n\t\tthis.material.uniforms.resolution.value.w = a2;\r\n\r\n\t\tconst dist = this.camera.position.z;\r\n\t\tconst height = 1;\r\n\t\tthis.camera.fov = 2 * (180 / Math.PI) * Math.atan(height / (2 * dist));\r\n\r\n\t\tthis.plane.scale.x = this.camera.aspect;\r\n\t\tthis.plane.scale.y = 1;\r\n\r\n\t\tthis.camera.updateProjectionMatrix();\r\n\t}\r\n\r\n\taddObjects() {\r\n\t\tthis.material = new THREE.ShaderMaterial({\r\n\t\t\textensions: {\r\n\t\t\t\tderivatives: '#extension GL_OES_standard_derivatives : enable'\r\n\t\t\t},\r\n\t\t\tside: THREE.DoubleSide,\r\n\t\t\tuniforms: {\r\n\t\t\t\ttime: { type: 'f', value: 0 },\r\n\t\t\t\tprogress: { type: 'f', value: 0 },\r\n\t\t\t\tborder: { type: 'f', value: 0 },\r\n\t\t\t\tintensity: { type: 'f', value: 0 },\r\n\t\t\t\tscaleX: { type: 'f', value: 40 },\r\n\t\t\t\tscaleY: { type: 'f', value: 40 },\r\n\t\t\t\ttransition: { type: 'f', value: 40 },\r\n\t\t\t\tswipe: { type: 'f', value: 0 },\r\n\t\t\t\twidth: { type: 'f', value: 0 },\r\n\t\t\t\tradius: { type: 'f', value: 0 },\r\n\t\t\t\ttexture1: { type: 'f', value: this.textures[0] },\r\n\t\t\t\ttexture2: { type: 'f', value: this.textures[1] },\r\n\t\t\t\tdisplacement: {\r\n\t\t\t\t\ttype: 'f'\r\n\t\t\t\t\t//value: new THREE.TextureLoader().load('img/disp1.jpg') // https://tympanus.net/Development/webGLImageTransitions/img/disp1.jpg\r\n\t\t\t\t},\r\n\t\t\t\tresolution: { type: 'v4', value: new THREE.Vector4() }\r\n\t\t\t},\r\n\t\t\t// wireframe: true,\r\n\t\t\tvertexShader: this.vertex,\r\n\t\t\tfragmentShader: this.fragment\r\n\t\t});\r\n\r\n\t\tthis.geometry = new THREE.PlaneGeometry(1, 1, 2, 2);\r\n\r\n\t\tthis.plane = new THREE.Mesh(this.geometry, this.material);\r\n\t\tthis.scene.add(this.plane);\r\n\t}\r\n\r\n\tstop() {\r\n\t\tthis.paused = true;\r\n\t\tclearInterval(this.interval);\r\n\t\tthis.renderer.info.reset();\r\n\t\tthis.renderer.dispose();\r\n\t}\r\n\r\n\tplay() {\r\n\t\tthis.paused = false;\r\n\t\tthis.render();\r\n\t\tclearInterval(this.interval);\r\n\t\tthis.interval = setInterval(() => {\r\n\t\t\tthis.next();\r\n\t\t}, this.intervalDuration);\r\n\t}\r\n\r\n\tnext() {\r\n\t\tif (this.isRunning) return;\r\n\t\tthis.isRunning = true;\r\n\t\tclearInterval(this.interval);\r\n\t\tthis.interval = setInterval(() => {\r\n\t\t\tthis.next();\r\n\t\t}, this.intervalDuration);\r\n\t\tlet len = this.textures.length;\r\n\t\tlet nextTexture = this.textures[(this.current + 1) % len];\r\n\t\tthis.material.uniforms.texture2.value = nextTexture;\r\n\t\tlet tl = new TimelineMax();\r\n\t\ttl.to(this.material.uniforms.progress, this.duration, {\r\n\t\t\tvalue: 1,\r\n\t\t\tease: Power2[this.easing],\r\n\t\t\tonComplete: () => {\r\n\t\t\t\tthis.current = (this.current + 1) % len;\r\n\t\t\t\tthis.material.uniforms.texture1.value = nextTexture;\r\n\t\t\t\tthis.material.uniforms.progress.value = 0;\r\n\t\t\t\tthis.isRunning = false;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\trender() {\r\n\t\tif (this.paused) return;\r\n\t\tthis.time += 0.05;\r\n\t\tthis.material.uniforms.time.value = this.time;\r\n\t\t// this.material.uniforms.progress.value = this.settings.progress;\r\n\r\n\t\tObject.keys(this.uniforms).forEach(item => {\r\n\t\t\tthis.material.uniforms[item].value = this.settings[item];\r\n\t\t});\r\n\r\n\t\t// this.camera.position.z = 3;\r\n\t\t// this.plane.rotation.y = 0.4*Math.sin(this.time)\r\n\t\t// this.plane.rotation.x = 0.5*Math.sin(0.4*this.time)\r\n\r\n\t\trequestAnimationFrame(this.render.bind(this));\r\n\t\tthis.renderer.render(this.scene, this.camera);\r\n\t}\r\n}\r\n","export function mergeOptions(\r\n\tclassType: { options: T },\r\n\toptions: Partial | undefined,\r\n\telement?: HTMLElement\r\n): T {\r\n\treturn {\r\n\t\t...classType.options,\r\n\t\t...options,\r\n\t\t...(element?.dataset\r\n\t\t\t? Object.keys(element.dataset).reduce((acc, key) => {\r\n\t\t\t\t\tlet val: string | number | boolean | undefined = element.dataset[key];\r\n\t\t\t\t\tif (val) {\r\n\t\t\t\t\t\tif (val === 'true') {\r\n\t\t\t\t\t\t\tval = true;\r\n\t\t\t\t\t\t} else if (val === 'false') {\r\n\t\t\t\t\t\t\tval = false;\r\n\t\t\t\t\t\t} else if (isNumeric(val)) {\r\n\t\t\t\t\t\t\tval = parseFloat(val);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tacc[key] = val;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn acc;\r\n\t\t\t }, {})\r\n\t\t\t: ({} as any)),\r\n\t};\r\n}\r\n\r\nfunction isNumeric(str: any) {\r\n\treturn !isNaN(str) && !isNaN(parseFloat(str));\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { addClass } from '@opten/dom/add-class';\r\nimport { hasClass } from '@opten/dom/has-class';\r\nimport { removeClass } from '@opten/dom/remove-class';\r\nimport { toggleClass } from '@opten/dom/toggle-class';\r\nimport { PageRenderHelper } from './page-render-helper';\r\n\r\n@Component({ className: 'js-modal' })\r\nexport class ModalComponent {\r\n\tprivate items: HTMLElement[];\r\n\tprivate headerBreadcrumb: HTMLElement;\r\n\r\n\tprivate static innerContent: HTMLElement;\r\n\tprivate static pageRenderHelper: PageRenderHelper;\r\n\r\n\tprivate handlers = [];\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tthis.headerBreadcrumb = document.querySelector(\r\n\t\t\t'.js-header-breadcrumb'\r\n\t\t) as HTMLElement;\r\n\t\tModalComponent.innerContent = this.element.querySelector(\r\n\t\t\t'.js-modal-inner'\r\n\t\t) as HTMLElement;\r\n\t\tModalComponent.pageRenderHelper = new PageRenderHelper(\r\n\t\t\tModalComponent.innerContent,\r\n\t\t\t'.js-modal-inner'\r\n\t\t);\r\n\t\tPageRenderHelper.onPageChange.subscribe(() => this.init());\r\n\t\tthis.init();\r\n\t}\r\n\r\n\tstatic close() {\r\n\t\tif (hasClass(document.body, 'modal-is-open')) {\r\n\t\t\tremoveClass(document.body, 'modal-is-open');\r\n\t\t\tthis.pageRenderHelper.close(\r\n\t\t\t\tthis.innerContent.getAttribute('data-url-parent')\r\n\t\t\t);\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tprivate init() {\r\n\t\tthis.items = Array.from(\r\n\t\t\tdocument.querySelectorAll('.js-modal-activator')\r\n\t\t) as HTMLElement[];\r\n\r\n\t\tthis.handlers.forEach(handler => {\r\n\t\t\thandler.item.removeEventListener('click', handler.func);\r\n\t\t});\r\n\t\tthis.handlers = [];\r\n\r\n\t\tthis.items.forEach(item => {\r\n\t\t\tconst wrappedFunc = this.activatorClickListener.bind(this, item);\r\n\t\t\tthis.handlers.push({ item, func: wrappedFunc });\r\n\t\t\titem.addEventListener('click', wrappedFunc);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate activatorClickListener(item: HTMLElement, e: MouseEvent) {\r\n\t\te.preventDefault();\r\n\t\taddClass(document.body, 'rerun-visual-grid');\r\n\t\tsetTimeout(() => {\r\n\t\t\tconst url = item.getAttribute('data-url');\r\n\t\t\taddClass(document.body, 'modal-is-open');\r\n\t\t\tModalComponent.innerContent.removeAttribute('data-url-parent');\r\n\t\t\tModalComponent.pageRenderHelper\r\n\t\t\t\t.fetch(url)\r\n\t\t\t\t.then(({ dom, innerContent }) => {\r\n\t\t\t\t\tconst header = dom.querySelector('.js-header-breadcrumb');\r\n\t\t\t\t\ttoggleClass(\r\n\t\t\t\t\t\tdocument.body,\r\n\t\t\t\t\t\t'header-has-breadcrumb',\r\n\t\t\t\t\t\theader && header.innerHTML.length > 10\r\n\t\t\t\t\t);\r\n\t\t\t\t\tif (header) {\r\n\t\t\t\t\t\tthis.headerBreadcrumb.innerHTML = header.innerHTML;\r\n\t\t\t\t\t\tPageRenderHelper.onPageChange.dispatch(\r\n\t\t\t\t\t\t\tthis.headerBreadcrumb\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.headerBreadcrumb.innerHTML = '';\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.catch(error => {})\r\n\t\t\t\t.finally(() => {\r\n\t\t\t\t\tremoveClass(document.body, 'rerun-visual-grid');\r\n\t\t\t\t});\r\n\t\t}, 1350);\r\n\t}\r\n}\r\n","import { addClass } from '@opten/dom/add-class';\r\nimport { removeClass } from '@opten/dom/remove-class';\r\nimport { EventDispatcher } from '@opten/events/event-dispatcher';\r\n\r\nexport class PageRenderHelper {\r\n\tstatic onPageChange = new EventDispatcher();\r\n\tpublic static prevUrl: string;\r\n\tprivate headerCultures: HTMLElement;\r\n\tprivate readonly headerCulturesSelector = '.js-page-render-header-cultures';\r\n\r\n\tconstructor(\r\n\t\tprivate innerContent: HTMLElement,\r\n\t\tprivate innerSelector: string\r\n\t) {\r\n\t\tthis.headerCultures = document.querySelector(\r\n\t\t\tthis.headerCulturesSelector\r\n\t\t);\r\n\t\taddClass(document.body, 'content-is-ready');\r\n\t}\r\n\r\n\tpublic fetch(url: string) {\r\n\t\tPageRenderHelper.prevUrl = PageRenderHelper.getFullUrl();\r\n\t\treturn new Promise<{dom: Document, innerContent: HTMLElement}>((resolve, reject) => {\r\n\t\t\tif (\r\n\t\t\t\tthis.innerContent.getAttribute('data-url') == url &&\r\n\t\t\t\tthis.innerContent.innerHTML\r\n\t\t\t) {\r\n\t\t\t\tif (PageRenderHelper.getFullUrl() != url) {\r\n\t\t\t\t\twindow.history.pushState(null, null, url);\r\n\t\t\t\t}\r\n\t\t\t\treturn resolve(null);\r\n\t\t\t}\r\n\t\t\tremoveClass(document.body, 'content-is-ready');\r\n\t\t\tthis.innerContent.innerHTML = '';\r\n\t\t\tfetch(url)\r\n\t\t\t\t.then(response => response.text())\r\n\t\t\t\t.then(html => {\r\n\t\t\t\t\tconst dom = new DOMParser().parseFromString(\r\n\t\t\t\t\t\thtml,\r\n\t\t\t\t\t\t'text/html'\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tif (this.headerCultures) {\r\n\t\t\t\t\t\tconst newHeaderCultures = dom.querySelector(\r\n\t\t\t\t\t\t\tthis.headerCulturesSelector\r\n\t\t\t\t\t\t) as HTMLElement;\r\n\t\t\t\t\t\tthis.headerCultures.innerHTML =\r\n\t\t\t\t\t\t\tnewHeaderCultures.innerHTML;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst newContent = dom.querySelector(\r\n\t\t\t\t\t\tthis.innerSelector\r\n\t\t\t\t\t) as HTMLElement;\r\n\t\t\t\t\tthis.innerContent.setAttribute('data-url', url);\r\n\t\t\t\t\tthis.innerContent.innerHTML = newContent.innerHTML;\r\n\t\t\t\t\tPageRenderHelper.onPageChange.dispatch(this.innerContent);\r\n\r\n\t\t\t\t\twindow.history.pushState(null, null, url);\r\n\t\t\t\t\twindow.document.title = dom.title;\r\n\t\t\t\t\treturn resolve({ dom, innerContent: this.innerContent });\r\n\t\t\t\t})\r\n\t\t\t\t.catch(error => {\r\n\t\t\t\t\t// open error page\r\n\t\t\t\t\twindow.location.href = url;\r\n\t\t\t\t\treturn reject();\r\n\t\t\t\t})\r\n\t\t\t\t.finally(() => {\r\n\t\t\t\t\taddClass(document.body, 'content-is-ready');\r\n\t\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tpublic clear() {\r\n\t\tPageRenderHelper.prevUrl = undefined;\r\n\t\tthis.innerContent.innerHTML = '';\r\n\t}\r\n\r\n\tpublic close(prevUrl?: string, prevTitle?: string) {\r\n\t\tif (prevUrl) {\r\n\t\t\tPageRenderHelper.prevUrl = prevUrl;\r\n\t\t}\r\n\t\tif (\r\n\t\t\tPageRenderHelper.prevUrl &&\r\n\t\t\tPageRenderHelper.prevUrl != PageRenderHelper.getFullUrl()\r\n\t\t) {\r\n\t\t\twindow.history.pushState(null, null, PageRenderHelper.prevUrl);\r\n\t\t\tif (prevTitle) {\r\n\t\t\t\tdocument.title = prevTitle;\r\n\t\t\t}\r\n\t\t\tPageRenderHelper.prevUrl = undefined;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static getFullUrl() {\r\n\t\treturn (\r\n\t\t\twindow.location.pathname +\r\n\t\t\twindow.location.hash +\r\n\t\t\twindow.location.search\r\n\t\t);\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { addClass } from '@opten/dom/add-class';\r\nimport { hasClass } from '@opten/dom/has-class';\r\nimport { removeClass } from '@opten/dom/remove-class';\r\nimport { IFramePlayer } from './iframe';\r\n\r\nconst stringIFramePlayer = 'IFramePlayer';\r\n@Component({ className: 'js-player' })\r\nexport class IFramePlayerComponent {\r\n\tprivate player: IFramePlayer;\r\n\tprivate iFrameElement: HTMLIFrameElement;\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tthis.player = new IFramePlayer(this.element);\r\n\t\tthis.iFrameElement = this.element.getElementsByTagName('iframe')[0];\r\n\t\tif (hasClass(this.element, 'autoplay')) {\r\n\t\t\tif (this.iFrameElement.src.indexOf('background') != -1) {\r\n\t\t\t\tthis.play();\r\n\t\t\t} else {\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tthis.play();\r\n\t\t\t\t}, 1000);\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.element[stringIFramePlayer] = this;\r\n\t}\r\n\r\n\tstatic getInstance(element: HTMLElement) {\r\n\t\tif (!element) return;\r\n\t\treturn element[stringIFramePlayer] as IFramePlayerComponent;\r\n\t}\r\n\r\n\tplay() {\t\t\r\n\t\tif (this.iFrameElement.src.indexOf('autoplay') === -1) {\r\n\t\t\tthis.iFrameElement.src +=\r\n\t\t\t\tthis.iFrameElement.src.indexOf('?') === -1\r\n\t\t\t\t\t? '?autoplay=1'\r\n\t\t\t\t\t: '&autoplay=1';\r\n\t\t} else {\r\n\t\t\tthis.iFrameElement.src = this.iFrameElement.src.replace(\r\n\t\t\t\t'autoplay=0',\r\n\t\t\t\t'autoplay=1'\r\n\t\t\t);\r\n\t\t}\r\n\t\tsetTimeout(() => {\t\t\t\r\n\t\t\taddClass(this.element, 'is-playing');\r\n\t\t}, 1500);\r\n\t}\r\n\r\n\tpause() {\r\n\t\tif (this.iFrameElement.src.indexOf('autoplay') === -1) {\r\n\t\t\tthis.iFrameElement.src +=\r\n\t\t\t\tthis.iFrameElement.src.indexOf('?') === -1\r\n\t\t\t\t\t? '?autoplay=0'\r\n\t\t\t\t\t: '&autoplay=0';\r\n\t\t} else {\r\n\t\t\tthis.iFrameElement.src = this.iFrameElement.src.replace(\r\n\t\t\t\t'autoplay=1',\r\n\t\t\t\t'autoplay=0'\r\n\t\t\t);\r\n\t\t}\r\n\t\tremoveClass(this.element, 'is-playing');\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { PageRenderHelper } from './page-render-helper';\r\n\r\n@Component({ className: 'js-section-scroll-progress' })\r\nexport class SectionScrollProgressComponent {\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tthis.updateScrollProgress();\r\n\t\twindow.addEventListener('scroll', () => this.updateScrollProgress());\r\n\t\tPageRenderHelper.onPageChange.subscribe(() => this.updateScrollProgress());\r\n\t}\r\n\r\n\tprivate updateScrollProgress(): void {\r\n\t\tconst currentYOffset = window.scrollY;\r\n\t\tvar height =\r\n\t\t\tdocument.documentElement.scrollHeight -\r\n\t\t\tdocument.documentElement.clientHeight;\r\n\t\tvar scrolled = (currentYOffset / height) * 100;\r\n\t\tdocument.documentElement.style.setProperty('--scroll-progress', `${scrolled}%`);\r\n\t}\r\n}\r\n","import { toggleClass } from '@opten/dom/toggle-class';\r\nimport { EventDispatcher } from '@opten/events/event-dispatcher';\r\nimport { debounce } from '@opten/reactive/debounce';\r\nimport { PageRenderHelper } from './page-render-helper';\r\n\r\nexport class SectionScrollSlider {\r\n\tstatic onStateChange = new EventDispatcher();\r\n\tisAnimating: boolean = false;\r\n\tisOpen: boolean = false;\r\n\r\n\tprivate readonly scrollTopDefaultOffset: number = 200;\r\n\tprivate scrollTop: number = window.scrollY;\r\n\r\n\tpublic input: HTMLInputElement;\r\n\tpublic sliderThumb: HTMLElement;\r\n\r\n\tconstructor(public element: HTMLElement) {\r\n\t\tthis.input = this.element.querySelector('input');\r\n\t\tthis.sliderThumb = this.element.querySelector(\r\n\t\t\t'.js-scroll-slider-thumb'\r\n\t\t);\r\n\r\n\t\tthis.onSliderChange(parseInt(this.input.value), false);\r\n\t\tthis.input.addEventListener('change', (e: any) =>\r\n\t\t\tthis.onSliderChange(e.target.value)\r\n\t\t);\r\n\t\tthis.input.addEventListener('input', (e: any) =>\r\n\t\t\tthis.onSliderInput(e.target.value)\r\n\t\t);\r\n\r\n\t\t['touchstart', 'mouseenter'].forEach(type =>\r\n\t\t\tthis.input.addEventListener(\r\n\t\t\t\ttype,\r\n\t\t\t\t(e: any) => (this.scrollTop = window.scrollY)\r\n\t\t\t)\r\n\t\t);\r\n\t}\r\n\r\n\tprivate onSliderInput(sliderValue: number): void {\r\n\t\tthis.isAnimating = true;\r\n\t\tthis.applyStyles(sliderValue);\r\n\t\tthis.applyScrollPos(sliderValue);\r\n\t}\r\n\r\n\tprivate onSliderChange(sliderValue: number, fireEvents = true): void {\r\n\t\tlet newValue: any = 0;\r\n\t\tif (sliderValue > 50) {\r\n\t\t\tnewValue = 100;\r\n\t\t}\r\n\r\n\t\tthis.input.value = newValue;\r\n\t\tthis.applyStyles(newValue);\r\n\t\tthis.applyScrollPos(newValue);\r\n\r\n\t\tif (newValue == 0) {\r\n\t\t\tthis.closeScrollContainer(fireEvents);\r\n\t\t} else if (newValue == 100) {\r\n\t\t\tthis.openScrollContainer(fireEvents);\r\n\t\t}\r\n\t\tthis.isAnimating = false;\r\n\t}\r\n\r\n\tprivate applyStyles(sliderValue): void {\r\n\t\ttoggleClass(document.body, 'content-is-open', sliderValue > 0);\r\n\t\ttoggleClass(this.element, 'is-slided', sliderValue > 50);\r\n\t\tthis.sliderThumb.style.left = `${sliderValue}%`;\r\n\t}\r\n\r\n\tprivate applyScrollPos(sliderValue: number): void {\r\n\t\twindow.scrollTo({\r\n\t\t\ttop:\r\n\t\t\t\tthis.scrollTop == 0\r\n\t\t\t\t\t? sliderValue / 100 * this.scrollTopDefaultOffset\r\n\t\t\t\t\t: (this.scrollTop * sliderValue) / 100,\r\n\t\t\tbehavior: 'auto'\r\n\t\t});\r\n\t}\r\n\r\n\tprivate openScrollContainer(fireEvents = true): void {\r\n\t\tthis.isOpen = true;\r\n\t\tif (fireEvents) {\r\n\t\t\tSectionScrollSlider.onStateChange.dispatch(this.isOpen);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate closeScrollContainer(fireEvents = true): void {\r\n\t\tthis.isOpen = false;\r\n\t\tif (fireEvents) {\r\n\t\t\tSectionScrollSlider.onStateChange.dispatch(this.isOpen);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic open(smooth?: boolean) {\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tif (this.isAnimating) {\r\n\t\t\t\treturn reject();\r\n\t\t\t}\r\n\t\t\tif (window.scrollY == 0 || this.isOpen == false) {\r\n\t\t\t\tthis.isAnimating = true;\r\n\t\t\t\twindow.scrollTo({\r\n\t\t\t\t\ttop: this.scrollTopDefaultOffset,\r\n\t\t\t\t\tbehavior: smooth ? 'smooth' : 'auto'\r\n\t\t\t\t});\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tthis.onSliderChange(100);\r\n\t\t\t\t\tthis.isAnimating = false;\r\n\t\t\t\t\tthis.scrollTop = this.scrollTopDefaultOffset;\r\n\t\t\t\t\tresolve();\r\n\t\t\t\t}, 300);\r\n\t\t\t} else {\r\n\t\t\t\tresolve();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tpublic close(smooth?: boolean) {\r\n\t\tdebounce;\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tif (this.isAnimating) {\r\n\t\t\t\treturn reject();\r\n\t\t\t}\r\n\t\t\tif (window.scrollY > 0 || this.isOpen) {\r\n\t\t\t\tPageRenderHelper.prevUrl = undefined;\r\n\t\t\t\tthis.isAnimating = true;\r\n\t\t\t\twindow.scrollTo({\r\n\t\t\t\t\ttop: 0,\r\n\t\t\t\t\tbehavior: smooth ? 'smooth' : 'auto'\r\n\t\t\t\t});\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tthis.onSliderChange(0);\r\n\t\t\t\t\tthis.isAnimating = false;\r\n\t\t\t\t\tthis.scrollTop = 0;\r\n\t\t\t\t\tresolve();\r\n\t\t\t\t}, 300);\r\n\t\t\t} else {\r\n\t\t\t\tresolve();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { hasClass } from '@opten/dom/has-class';\r\nimport { debounce } from '@opten/reactive/debounce';\r\nimport {\r\n\tScrollMagicController,\r\n\tScrollMagicDesktopController,\r\n\tScrollMagicDesktopModalController,\r\n\tScrollMagicModalController\r\n} from '../main';\r\n\r\ndeclare const ScrollMagic: any;\r\ndeclare const TweenMax: any;\r\ndeclare const Linear: any;\r\n@Component({ className: 'js-section-scroll' })\r\nexport class SectionScrollComponent {\r\n\tprivate sections: HTMLElement[];\r\n\tprivate scenes = [];\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tthis.sections = Array.from(\r\n\t\t\telement.querySelectorAll('.js-section-scroll-item')\r\n\t\t) as HTMLElement[];\r\n\r\n\t\tthis.init();\r\n\r\n\t\twindow.addEventListener(\r\n\t\t\t'resize',\r\n\t\t\tdebounce(() => this.init(), 300)\r\n\t\t);\r\n\t}\r\n\r\n\tprivate init() {\r\n\t\tif (this.scenes && this.scenes.length > 0) {\r\n\t\t\tthis.scenes.forEach(({ scene, triggerElement, tween }) => {\r\n\t\t\t\tif (tween) {\r\n\t\t\t\t\tTweenMax.set(triggerElement, { clearProps: 'all' });\r\n\t\t\t\t\tscene.removeTween(true);\r\n\t\t\t\t}\r\n\t\t\t\tscene.destroy(true);\r\n\t\t\t});\r\n\t\t\tthis.scenes = [];\r\n\t\t}\r\n\t\tif (this.sections && this.sections.length > 0) {\r\n\t\t\tconst fullSectionScene = new ScrollMagic.Scene({\r\n\t\t\t\ttriggerElement: this.element,\r\n\t\t\t\ttriggerHook: 'onLeave',\r\n\t\t\t\tduration: () => {\r\n\t\t\t\t\treturn this.element.clientHeight;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t\t//.addIndicators()\r\n\t\t\t\t.setClassToggle(this.element, 'is-active');\r\n\t\t\tthis.scenes.push({\r\n\t\t\t\ttriggerElement: this.element,\r\n\t\t\t\tactiveOnMobile: true,\r\n\t\t\t\tscene: fullSectionScene\r\n\t\t\t});\r\n\r\n\t\t\tthis.sections.forEach((section, i) => {\r\n\t\t\t\tconst isNumberSection = hasClass(\r\n\t\t\t\t\tsection,\r\n\t\t\t\t\t'c-section-scroll-item-number'\r\n\t\t\t\t);\r\n\t\t\t\tconst medias = Array.from(\r\n\t\t\t\t\tsection.querySelectorAll('.js-section-scroll-media')\r\n\t\t\t\t) as HTMLElement[];\r\n\t\t\t\tif (medias && medias.length > 0) {\r\n\t\t\t\t\tmedias.forEach((media, i) => {\r\n\t\t\t\t\t\tif (window.innerWidth >= 768) {\r\n\t\t\t\t\t\t\tconst mediaScene = new ScrollMagic.Scene({\r\n\t\t\t\t\t\t\t\ttriggerElement: section,\r\n\t\t\t\t\t\t\t\ttriggerHook: 'onLeave',\r\n\t\t\t\t\t\t\t\tduration: () => {\r\n\t\t\t\t\t\t\t\t\treturn section.clientHeight;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t//.addIndicators()\r\n\t\t\t\t\t\t\t\t.setPin(media, { pushFollowers: false });\r\n\t\t\t\t\t\t\tthis.scenes.push({\r\n\t\t\t\t\t\t\t\ttriggerElement: section,\r\n\t\t\t\t\t\t\t\tactiveOnMobile: false,\r\n\t\t\t\t\t\t\t\tscene: mediaScene\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tconst sibling = isNumberSection\r\n\t\t\t\t\t\t\t? null\r\n\t\t\t\t\t\t\t: (\r\n\t\t\t\t\t\t\t\t\tmedia.closest('[class*=\"col\"')\r\n\t\t\t\t\t\t\t\t\t\t.nextElementSibling ||\r\n\t\t\t\t\t\t\t\t\tmedia.closest('[class*=\"col\"')\r\n\t\t\t\t\t\t\t\t\t\t.previousElementSibling\r\n\t\t\t\t\t\t\t )?.firstElementChild;\r\n\t\t\t\t\t\tif (sibling) {\r\n\t\t\t\t\t\t\tlet size = window.innerHeight * 0.5;\r\n\t\t\t\t\t\t\tif (sibling.clientHeight < section.clientHeight) {\r\n\t\t\t\t\t\t\t\tsize -= sibling.clientHeight / 2;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (size < 200) {\r\n\t\t\t\t\t\t\t\tsize = 200;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tconst tween = TweenMax.fromTo(\r\n\t\t\t\t\t\t\t\tsibling,\r\n\t\t\t\t\t\t\t\t1,\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\ty: size,\r\n\t\t\t\t\t\t\t\t\tease: Linear.easeNone\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\ty: size > 200 ? 0 : size * -1,\r\n\t\t\t\t\t\t\t\t\tease: Linear.easeNone\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\tconst siblingScene = new ScrollMagic.Scene({\r\n\t\t\t\t\t\t\t\ttriggerElement: sibling,\r\n\t\t\t\t\t\t\t\ttriggerHook: 'onCenter',\r\n\t\t\t\t\t\t\t\tduration: () => {\r\n\t\t\t\t\t\t\t\t\treturn sibling.clientHeight - 100 >\r\n\t\t\t\t\t\t\t\t\t\tsection.clientHeight\r\n\t\t\t\t\t\t\t\t\t\t? sibling.clientHeight\r\n\t\t\t\t\t\t\t\t\t\t: section.clientHeight;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t//.addIndicators()\r\n\t\t\t\t\t\t\t\t.setTween(tween);\r\n\t\t\t\t\t\t\tthis.scenes.push({\r\n\t\t\t\t\t\t\t\ttriggerElement: sibling,\r\n\t\t\t\t\t\t\t\tactiveOnMobile: true,\r\n\t\t\t\t\t\t\t\tscene: siblingScene,\r\n\t\t\t\t\t\t\t\ttween\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst sectionScene = new ScrollMagic.Scene({\r\n\t\t\t\t\ttriggerElement: section,\r\n\t\t\t\t\ttriggerHook: 0,\r\n\t\t\t\t\tduration: () => {\r\n\t\t\t\t\t\treturn section.clientHeight;\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t\t//.addIndicators()\r\n\t\t\t\t\t.setClassToggle(section, 'is-at-start');\r\n\r\n\t\t\t\tthis.scenes.push({\r\n\t\t\t\t\ttriggerElement: section,\r\n\t\t\t\t\tactiveOnMobile: true,\r\n\t\t\t\t\tscene: sectionScene\r\n\t\t\t\t});\r\n\r\n\t\t\t\tconst sectionScene2 = new ScrollMagic.Scene({\r\n\t\t\t\t\ttriggerElement: section,\r\n\t\t\t\t\ttriggerHook: 0.6,\r\n\t\t\t\t\tduration: () => {\r\n\t\t\t\t\t\treturn section.clientHeight;\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t\t//.addIndicators()\r\n\t\t\t\t\t.setClassToggle(section, 'is-at-center');\r\n\r\n\t\t\t\tthis.scenes.push({\r\n\t\t\t\t\ttriggerElement: section,\r\n\t\t\t\t\tactiveOnMobile: true,\r\n\t\t\t\t\tscene: sectionScene2\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tthis.handleScenes();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate handleScenes() {\r\n\t\tif (this.scenes.length > 0) {\r\n\t\t\tthis.scenes.forEach(({ triggerElement, activeOnMobile, scene }) => {\r\n\t\t\t\tif (activeOnMobile) {\r\n\t\t\t\t\tscene.addTo(\r\n\t\t\t\t\t\ttriggerElement.closest('.js-modal')\r\n\t\t\t\t\t\t\t? ScrollMagicModalController\r\n\t\t\t\t\t\t\t: ScrollMagicController\r\n\t\t\t\t\t);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tscene.addTo(\r\n\t\t\t\t\t\ttriggerElement.closest('.js-modal')\r\n\t\t\t\t\t\t\t? ScrollMagicDesktopModalController\r\n\t\t\t\t\t\t\t: ScrollMagicDesktopController\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { addClass } from '@opten/dom/add-class';\r\nimport { hasClass } from '@opten/dom/has-class';\r\nimport { removeClass } from '@opten/dom/remove-class';\r\nimport { toggleClass } from '@opten/dom/toggle-class';\r\nimport Swiper, { HashNavigation, Keyboard, Mousewheel } from 'swiper';\r\nimport { PageRenderHelper } from './page-render-helper';\r\nimport { IFramePlayerComponent } from './player';\r\nimport { SectionScrollSlider } from './section-scroll-slider';\r\nimport { debounce } from '@opten/reactive/debounce';\r\n\r\nSwiper.use([Keyboard, Mousewheel, HashNavigation]);\r\n\r\n@Component({ className: 'js-section-slider' })\r\nexport class SectionSliderComponent {\r\n\tpublic swiper: Swiper;\r\n\tpublic innerContent: HTMLElement;\r\n\tpublic nav: HTMLElement;\r\n\tpublic navCurrent: HTMLElement;\r\n\tpublic navItems: HTMLElement[];\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tconst slider = this.element.querySelector(\r\n\t\t\t'.js-section-slider-item'\r\n\t\t) as HTMLElement;\r\n\t\tconst inner = this.element.querySelector(\r\n\t\t\t'.js-section-slider-inner'\r\n\t\t) as HTMLElement;\r\n\t\tthis.innerContent = inner.querySelector(\r\n\t\t\t'.js-section-slider-inner-content'\r\n\t\t) as HTMLElement;\r\n\t\tconst pageRenderHelper = new PageRenderHelper(\r\n\t\t\tthis.innerContent,\r\n\t\t\t'.js-section-slider-inner-content'\r\n\t\t);\r\n\t\tconst scrollSlider = new SectionScrollSlider(\r\n\t\t\tdocument.querySelector('.js-scroll-slider')\r\n\t\t);\r\n\t\tthis.nav = document.querySelector(\r\n\t\t\t'.js-section-slider-nav'\r\n\t\t) as HTMLElement;\r\n\t\tthis.navItems = Array.from(\r\n\t\t\tthis.nav.querySelectorAll('.js-section-slider-nav-item')\r\n\t\t) as HTMLElement[];\r\n\t\tthis.navCurrent = this.nav.querySelector(\r\n\t\t\t'.js-section-slider-nav-current'\r\n\t\t) as HTMLElement;\r\n\t\tconst rootUrl = this.element.getAttribute('data-url');\r\n\t\tconst rootTitle = this.element.getAttribute('data-title');\r\n\t\tlet initSlide = parseInt(slider.getAttribute('data-init'));\r\n\t\tif (initSlide < 0) {\r\n\t\t\tinitSlide = 0;\r\n\t\t}\r\n\r\n\t\tthis.swiper = new Swiper(slider, {\r\n\t\t\tinitialSlide: initSlide,\r\n\t\t\tdirection: 'vertical',\r\n\t\t\thashNavigation: {\r\n\t\t\t\treplaceState: false,\r\n\t\t\t\twatchState: true\r\n\t\t\t},\r\n\t\t\tautoHeight: true,\r\n\t\t\tspeed: 1000,\r\n\t\t\ttouchReleaseOnEdges: true,\r\n\t\t\tmousewheel: {\r\n\t\t\t\treleaseOnEdges: true\r\n\t\t\t},\r\n\t\t\tkeyboard: {\r\n\t\t\t\tenabled: true,\r\n\t\t\t\tonlyInViewport: true\r\n\t\t\t},\r\n\t\t\ton: {\r\n\t\t\t\tafterInit: swiper => {\r\n\t\t\t\t\tconst currentSlide = swiper.slides[swiper.activeIndex];\r\n\t\t\t\t\tthis.setActiveNavItem(swiper);\r\n\t\t\t\t\taddClass(currentSlide, 'is-shown');\r\n\t\t\t\t\tif (!currentSlide.getAttribute('data-url')) {\t\t\t\t\t\r\n\t\t\t\t\t\taddClass(scrollSlider.element, 'is-hidden');\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\ttransitionStart: swiper => {\r\n\t\t\t\t\tswiper.slides.forEach(slide => {\r\n\t\t\t\t\t\tremoveClass(slide, 'is-shown');\r\n\t\t\t\t\t\tconst iframe = IFramePlayerComponent.getInstance(\r\n\t\t\t\t\t\t\tslide.querySelector('.js-player')\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\tif (iframe) {\r\n\t\t\t\t\t\t\tiframe.pause();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\t\t\t\t\t\r\n\t\t\t\t\taddClass(scrollSlider.element, 'is-hidden');\r\n\t\t\t\t},\r\n\t\t\t\ttransitionEnd: swiper => {\r\n\t\t\t\t\tconst currentSlide = swiper.slides[swiper.activeIndex];\r\n\t\t\t\t\tthis.setActiveNavItem(swiper);\r\n\t\t\t\t\taddClass(currentSlide, 'is-shown');\r\n\t\t\t\t\tconst iframe = IFramePlayerComponent.getInstance(\r\n\t\t\t\t\t\tcurrentSlide.querySelector('.js-player')\r\n\t\t\t\t\t);\r\n\t\t\t\t\tif (iframe) {\r\n\t\t\t\t\t\tiframe.play();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (currentSlide.getAttribute('data-url')) {\r\n\t\t\t\t\t\tremoveClass(scrollSlider.element, 'is-hidden');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (this.navItems && this.navItems.length > 0) {\r\n\t\t\tthis.navItems.forEach(item => {\r\n\t\t\t\tvar slideIndex = parseInt(item.getAttribute('data-index'));\r\n\t\t\t\titem.addEventListener('click', e => {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\tremoveClass(document.body, 'header-is-open');\r\n\t\t\t\t\tif (isNaN(slideIndex) == false) {\r\n\t\t\t\t\t\tscrollSlider.close(true).then(\r\n\t\t\t\t\t\t\t() => {\r\n\t\t\t\t\t\t\t\t//pageRenderHelper.close();\r\n\t\t\t\t\t\t\t\tthis.swiper.slideTo(slideIndex);\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t() => {\r\n\t\t\t\t\t\t\t\t//pageRenderHelper.close();\r\n\t\t\t\t\t\t\t\tthis.swiper.slideTo(slideIndex);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (window.scrollY > 0) {\r\n\t\t\tif (hasClass(document.body, 'content-is-open') == false) {\r\n\t\t\t\twindow.scrollTo({\r\n\t\t\t\t\ttop: 0,\r\n\t\t\t\t\tbehavior: 'auto'\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tthis.swiper.disable();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\twindow.addEventListener('scroll', () => {\r\n\t\t\tconst scrollTop = Math.max(\r\n\t\t\t\tdocument.documentElement.scrollTop,\r\n\t\t\t\tdocument.body.scrollTop,\r\n\t\t\t\twindow.scrollY\r\n\t\t\t);\r\n\t\t\ttoggleClass(document.body, 'has-scrolled', scrollTop > 0);\r\n\t\t\tif (scrollSlider.isOpen == false) {\r\n\t\t\t\tif (scrollTop > 0) {\r\n\t\t\t\t\tthis.swiper.disable();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.swiper.enable();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// at bottom\r\n\t\t\tif (\r\n\t\t\t\tscrollSlider.isOpen &&\r\n\t\t\t\thasClass(document.body, 'content-is-ready') &&\r\n\t\t\t\tscrollTop > 0 &&\r\n\t\t\t\tMath.max(\r\n\t\t\t\t\tdocument.documentElement.scrollHeight,\r\n\t\t\t\t\tdocument.body.scrollHeight\r\n\t\t\t\t) <=\r\n\t\t\t\t\tscrollTop + window.innerHeight + 20\r\n\t\t\t) {\r\n\t\t\t\tif (document.querySelector('.js-section-slider-next')) {\r\n\t\t\t\t\tconst nextIndex = this.swiper.activeIndex + 1;\r\n\t\t\t\t\tthis.swiper.enable();\r\n\t\t\t\t\tthis.swiper.slideTo(nextIndex, 0, false);\r\n\t\t\t\t\tscrollSlider.close().then(\r\n\t\t\t\t\t\t() => {\r\n\t\t\t\t\t\t\t// this.swiper.enable();\r\n\t\t\t\t\t\t\t// pageRenderHelper.close();\r\n\t\t\t\t\t\t\t// this.swiper.slideTo(nextIndex, 0, true);\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t() => {\r\n\t\t\t\t\t\t\t// this.swiper.enable();\r\n\t\t\t\t\t\t\t// pageRenderHelper.close();\r\n\t\t\t\t\t\t\t// this.swiper.slideTo(nextIndex, 0, true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tscrollSlider.input.addEventListener('input', (e: any) => {\r\n\t\t\tconst url =\r\n\t\t\t\tthis.swiper.slides[this.swiper.activeIndex].getAttribute(\r\n\t\t\t\t\t'data-url'\r\n\t\t\t\t);\r\n\t\t\tif (\r\n\t\t\t\tscrollSlider.isOpen == false &&\r\n\t\t\t\te.target.value > 0 &&\r\n\t\t\t\tthis.innerContent.getAttribute('data-url') != url\r\n\t\t\t) {\r\n\t\t\t\tpageRenderHelper.clear();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tSectionScrollSlider.onStateChange.subscribe(isOpen => {\r\n\t\t\tif (isOpen) {\r\n\t\t\t\tthis.swiper.disable();\r\n\t\t\t\tconst url =\r\n\t\t\t\t\tthis.swiper.slides[this.swiper.activeIndex].getAttribute(\r\n\t\t\t\t\t\t'data-url'\r\n\t\t\t\t\t);\r\n\t\t\t\tpageRenderHelper\r\n\t\t\t\t\t.fetch(url)\r\n\t\t\t\t\t.then(newContent => {})\r\n\t\t\t\t\t.catch(error => {})\r\n\t\t\t\t\t.finally(() => {});\r\n\t\t\t} else {\r\n\t\t\t\tconst slideHash =\r\n\t\t\t\t\tthis.swiper.slides[this.swiper.activeIndex].getAttribute(\r\n\t\t\t\t\t\t'data-hash'\r\n\t\t\t\t\t);\r\n\t\t\t\tpageRenderHelper.close(rootUrl + '#' + slideHash, rootTitle);\r\n\t\t\t\tthis.swiper.enable();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tvar allIframes = Array.from(\r\n\t\t\tdocument.querySelectorAll('.js-section-hide')\r\n\t\t);\t\t\r\n\t\t\r\n\t\tdocument.addEventListener(\r\n\t\t\t'scroll',\r\n\t\t\tdebounce(() => {\r\n\t\t\t\tvar hideScrolSection = false;\r\n\t\t\t\tallIframes.forEach(iframe => {\r\n\t\t\t\t\tvar bonuceScrolSlider = scrollSlider.element.getBoundingClientRect();\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\tvar state = this.elementsCollide(bonuceScrolSlider, iframe);\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\tif (state) {\t\t\t\t\t\t\r\n\t\t\t\t\t\thideScrolSection = true;\r\n\t\t\t\t\t}\t\t\t\t\t\r\n\t\t\t\t});\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\tif (this.chapterValue(this.swiper)) {\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\tif (hideScrolSection) {\r\n\t\t\t\t\t\tif (!hasClass(scrollSlider.element, 'is-hidden')) {\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tscrollSlider.element.classList.add('is-hidden');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif (hasClass(scrollSlider.element, 'is-hidden')) {\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tscrollSlider.element.classList.remove('is-hidden');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t}, 200)\r\n\t\t);\r\n\t}\r\n\r\n\tprivate chapterValue(swiper: Swiper) {\r\n\t\treturn swiper.slides[swiper.activeIndex].getAttribute(\r\n\t\t\t'data-url'\r\n\t\t);\r\n\t}\r\n\r\n\tprivate elementsCollide(rect1, el2) {\r\n\t\tvar rect2 = el2.getBoundingClientRect();\r\n\r\n\t\treturn !(\r\n\t\t\trect1.top > rect2.bottom ||\r\n\t\t\trect1.right < rect2.left ||\r\n\t\t\trect1.bottom < rect2.top ||\r\n\t\t\trect1.left > rect2.right\r\n\t\t );\r\n\t}\r\n\r\n\tprivate setActiveNavItem(swiper: Swiper) {\r\n\t\ttoggleClass(document.body, 'is-at-start', swiper.activeIndex == 0);\r\n\t\ttoggleClass(\r\n\t\t\tdocument.body,\r\n\t\t\t'is-at-end',\r\n\t\t\tswiper.activeIndex == swiper.slides.length - 1\r\n\t\t);\r\n\t\tthis.navCurrent.innerHTML = (swiper.activeIndex + 1)\r\n\t\t\t.toString()\r\n\t\t\t.padStart(2, '0');\r\n\t\tif (this.navItems && this.navItems.length > 0) {\r\n\t\t\tthis.navItems.forEach(item => removeClass(item, 'is-active'));\r\n\t\t\tconst activeItem = this.navItems[swiper.activeIndex];\r\n\t\t\taddClass(activeItem, 'is-active');\r\n\t\t}\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { addClass } from '@opten/dom/add-class';\r\nimport { removeClass } from '@opten/dom/remove-class';\r\nimport { scrollToOffset } from '@opten/scroll/scroll-to-offset';\r\nimport { PageRenderHelper } from './page-render-helper';\r\n\r\n@Component({ className: 'js-tabs' })\r\nexport class TabsComponent {\r\n\titems: HTMLElement[];\r\n\tinnerContent: HTMLElement;\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tthis.items = Array.from(\r\n\t\t\tthis.element.querySelectorAll('.js-tab-item')\r\n\t\t) as HTMLElement[];\r\n\t\tthis.innerContent = this.element.querySelector(\r\n\t\t\t'.js-tab-inner'\r\n\t\t) as HTMLElement;\r\n\r\n\t\tconst pageRenderHelper = new PageRenderHelper(\r\n\t\t\tthis.innerContent,\r\n\t\t\t'.js-tab-inner'\r\n\t\t);\r\n\r\n\t\tthis.items.forEach(item => {\r\n\t\t\titem.addEventListener('click', e => {\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tscrollToOffset(this.innerContent.getBoundingClientRect().top - 150);\r\n\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tthis.items.forEach(o => removeClass(o, 'is-active'));\r\n\t\t\t\t\taddClass(item, 'is-active');\r\n\r\n\t\t\t\t\tconst url = item.getAttribute('data-url');\r\n\t\t\t\t\tpageRenderHelper\r\n\t\t\t\t\t\t.fetch(url)\r\n\t\t\t\t\t\t.then(newContent => {})\r\n\t\t\t\t\t\t.catch(error => {})\r\n\t\t\t\t\t\t.finally(() => {});\r\n\t\t\t\t}, 500);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n}\r\n","import { Component } from '@opten/compiler/metadata/component';\r\nimport { debounce } from '@opten/reactive/debounce';\r\nimport { ScrollMagicController, ScrollMagicModalController } from '../main';\r\n\r\ndeclare const ScrollMagic: any;\r\ndeclare const TweenMax: any;\r\ndeclare const Linear: any;\r\n@Component({ className: 'js-transform-full-to-half' })\r\nexport class TransformFullToHalfComponent {\r\n\tprivate scene: any;\r\n\tprivate inner: HTMLElement;\r\n\r\n\tconstructor(private element: HTMLElement) {\r\n\t\tthis.inner = this.element.querySelector(\r\n\t\t\t'.js-transform-full-to-half-inner'\r\n\t\t);\r\n\r\n\t\tthis.handleScene();\r\n\t\twindow.addEventListener(\r\n\t\t\t'resize',\r\n\t\t\tdebounce(() => {\r\n\t\t\t\tthis.handleScene();\r\n\t\t\t}, 100)\r\n\t\t);\r\n\t}\r\n\r\n\tprivate handleScene() {\r\n\t\tif (window.innerWidth >= 768) {\r\n\t\t\tif (!this.scene) {\r\n\t\t\t\tthis.scene = new ScrollMagic.Scene({\r\n\t\t\t\t\ttriggerElement: this.element,\r\n\t\t\t\t\ttriggerHook: 'onEnter',\r\n\t\t\t\t\toffset: window.innerHeight * -0.2, //offset\r\n\t\t\t\t\tduration: () => {\r\n\t\t\t\t\t\treturn this.element.clientHeight;\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t\t.setTween(\r\n\t\t\t\t\t\tTweenMax.from(this.inner, 1, {\r\n\t\t\t\t\t\t\twidth: '100vw',\r\n\t\t\t\t\t\t\theight: '100vh',\r\n\t\t\t\t\t\t\tleft:\r\n\t\t\t\t\t\t\t\tthis.element.getBoundingClientRect().left +\r\n\t\t\t\t\t\t\t\t\t30 >=\r\n\t\t\t\t\t\t\t\twindow.innerWidth / 2\r\n\t\t\t\t\t\t\t\t\t? '-50vw'\r\n\t\t\t\t\t\t\t\t\t: '0',\r\n\t\t\t\t\t\t\ttop: '-120vh', //offset\r\n\t\t\t\t\t\t\tease: Linear.easeNone\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t)\r\n\t\t\t\t\t// .addIndicators()\r\n\t\t\t\t\t.addTo(\r\n\t\t\t\t\t\tthis.element.closest('.js-modal')\r\n\t\t\t\t\t\t\t? ScrollMagicModalController\r\n\t\t\t\t\t\t\t: ScrollMagicController\r\n\t\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tthis.scene.update(true);\r\n\t\t} else {\r\n\t\t\tif (this.scene) {\r\n\t\t\t\tTweenMax.set(this.element, { clearProps: \"all\" });\r\n\t\t\t\tthis.scene.removeTween(true);\r\n\t\t\t\tthis.scene.destroy(true);\r\n\t\t\t}\r\n\t\t\tthis.scene = undefined;\r\n\t\t}\r\n\t}\r\n}\r\n","import { CollapseComponent } from '@opten/collapse';\r\nimport { factory } from '@opten/compiler/factory';\r\nimport { scrollToOffset } from '@opten/scroll/scroll-to-offset';\r\nimport { ChartComponent } from './components/chart';\r\nimport { ContainInnerComponent } from './components/contain-inner';\r\nimport { CookieBannerComponent } from './components/cookie-banner';\r\nimport { DoubleScrollComponent } from './components/double-scroll';\r\nimport { FitTextComponent } from './components/fit-text';\r\nimport { HeaderComponent } from './components/header';\r\nimport { InverterComponent } from './components/inverter';\r\nimport { MediaTransitionComponent } from './components/media-transition';\r\nimport { ModalComponent } from './components/modal';\r\nimport { PageRenderHelper } from './components/page-render-helper';\r\nimport { IFramePlayerComponent } from './components/player';\r\nimport { SectionScrollComponent } from './components/section-scroll';\r\nimport { SectionScrollProgressComponent } from './components/section-scroll-progress';\r\nimport { SectionSliderComponent } from './components/section-slider';\r\nimport { TabsComponent } from './components/tabs';\r\nimport { TransformFullToHalfComponent } from './components/transform-full-half';\r\nimport { GallerySliderComponent } from './components/gallery-slider';\r\n\r\ndeclare const ScrollMagic: any;\r\nexport const ScrollMagicController = new ScrollMagic.Controller();\r\nconst modal = document.querySelector('.js-modal-inner');\r\nexport const ScrollMagicModalController = new ScrollMagic.Controller({\r\n\tcontainer: modal || window\r\n});\r\nexport const ScrollMagicDesktopModalController = new ScrollMagic.Controller({\r\n\tcontainer: modal || window\r\n});\r\nexport const ScrollMagicDesktopController = new ScrollMagic.Controller();\r\n[ScrollMagicDesktopModalController, ScrollMagicDesktopController].forEach(\r\n\tcontroller =>\r\n\t\tcontroller.scrollPos(() => {\r\n\t\t\tif (window.innerWidth >= 768) {\r\n\t\t\t\treturn (\r\n\t\t\t\t\tcontroller.info().container.scrollY ||\r\n\t\t\t\t\tcontroller.info().container.scrollTop\r\n\t\t\t\t);\r\n\t\t\t} else {\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\t\t})\r\n);\r\n\r\nconst initialize = factory([\r\n\tCollapseComponent,\r\n\tInverterComponent,\r\n\tCookieBannerComponent,\r\n\tHeaderComponent,\r\n\tSectionSliderComponent,\r\n\tSectionScrollComponent,\r\n\tSectionScrollProgressComponent,\r\n\tTabsComponent,\r\n\tModalComponent,\r\n\tMediaTransitionComponent,\r\n\tChartComponent,\r\n\tTransformFullToHalfComponent,\r\n\tIFramePlayerComponent,\r\n\tGallerySliderComponent,\r\n\tDoubleScrollComponent,\r\n\tFitTextComponent,\r\n\tContainInnerComponent\r\n]);\r\n\r\ninitialize(document.body);\r\n\r\nPageRenderHelper.onPageChange.subscribe(newContent => {\r\n\tinitialize(newContent);\r\n});\r\n\r\nif (window.location.hash) {\r\n\tconst elem = document.getElementById(window.location.hash.substring(1));\r\n\tif (elem) {\r\n\t\tconst wrapper =\r\n\t\t\t(elem.closest('.js-modal-inner') as HTMLElement) || window;\r\n\t\tscrollToOffset(\r\n\t\t\twrapper instanceof HTMLElement\r\n\t\t\t\t? elem.getBoundingClientRect().top -\r\n\t\t\t\t\t\twrapper.getBoundingClientRect().top\r\n\t\t\t\t: elem.getBoundingClientRect().top,\r\n\t\t\tundefined,\r\n\t\t\tundefined,\r\n\t\t\tundefined,\r\n\t\t\twrapper\r\n\t\t);\r\n\t}\r\n}\r\n","export function linearTween(\n\ttimeElapsed: number,\n\tstart: number,\n\tdistance: number,\n\tduration: number\n) {\n\treturn (distance * timeElapsed) / duration + start;\n}\n","import { Component } from '@opten/compiler/metadata/component';\nimport { Collapse } from './initializer';\n\n@Component({ className: 'js-collapse' })\nexport class CollapseComponent {\n\tcollapse: Collapse;\n\tconstructor(private element: HTMLElement) {\n\t\tthis.collapse = new Collapse(element, {});\n\t}\n}\n","import { addClass } from '@opten/dom/add-class';\nimport { hasClass } from '@opten/dom/has-class';\nimport { removeClass } from '@opten/dom/remove-class';\n\nimport { getSelectorElementFromElement } from '@opten/dom/get-selector-element-from-element';\nimport { addTransitionEndListener } from '@opten/transition/add-transition-end-listener';\n\nimport { eventNamespaceFactory } from '@opten/events/event-namespace-factory';\n\nconst stringCollapse = 'Collapse';\n\nexport interface CollapseOptions {\n\tcomponentClass?: string;\n\tactiveClass?: string;\n\tactiveParentClass?: string;\n\tshowClass?: string;\n\tshowClassDesktop?: string;\n\tdesktopWidth?: number;\n\tcollapsingClass?: string;\n\tparentElement?: HTMLElement;\n\ttransitionDuration?: number;\n\tanimateProp?: 'height' | 'width' | false;\n\tisHideable?: boolean;\n\tcloseSiblings?: boolean;\n\tuseShowClassDesktop?: boolean;\n\tdataParentSelector?: string;\n\tdataTargetSelector?: string;\n\tdataToggleSelector?: string;\n\threfSelector?: string;\n}\n\nexport class Collapse {\n\t// TODO: Uggly naming\n\tget toggles(): HTMLElement[] {\n\t\treturn this.triggers;\n\t}\n\n\tconstructor(public element: HTMLElement, options?: CollapseOptions) {\n\t\tthis.options = {\n\t\t\t...this.options,\n\t\t\t...options,\n\t\t};\n\n\t\tif (!this.options.parentElement) {\n\t\t\tthis.options.parentElement = getSelectorElementFromElement(\n\t\t\t\telement,\n\t\t\t\tthis.options.dataParentSelector,\n\t\t\t\tfalse\n\t\t\t);\n\t\t}\n\n\t\tthis.init();\n\t}\n\tprivate options: CollapseOptions = {\n\t\tactiveClass: 'is-active',\n\t\tactiveParentClass: 'is-active',\n\t\tanimateProp: 'height',\n\t\tcollapsingClass: 'collapse--collapsing',\n\t\tcomponentClass: 'collapse',\n\t\tshowClass: 'collapse--show',\n\t\tshowClassDesktop: 'collapse--md-show',\n\t\tdesktopWidth: 1024,\n\t\ttransitionDuration: 600,\n\t\tisHideable: true,\n\t\tcloseSiblings: true,\n\t\tuseShowClassDesktop: false,\n\t\tdataParentSelector: 'data-parent',\n\t\tdataTargetSelector: 'data-target',\n\t\tdataToggleSelector: 'data-toggle',\n\t\threfSelector: 'href',\n\t};\n\n\tprivate parent: HTMLElement;\n\tprivate triggers: HTMLElement[];\n\n\tprivate target: Element;\n\tprivate isTransitioning = false; // when true it will prevent click handlers\n\n\t// event names\n\tprivate eventNamespaceFn = eventNamespaceFactory('opten.collapse');\n\n\tstatic getInstance(\n\t\telement: HTMLElement,\n\t\toptions?: CollapseOptions,\n\t\tcreate = true\n\t) {\n\t\tlet data = element[stringCollapse] as Collapse;\n\n\t\tif (!data && create) {\n\t\t\tdata = new Collapse(element, options);\n\t\t}\n\n\t\treturn data;\n\t}\n\n\tisOpen(): boolean {\n\t\tif (\n\t\t\tthis.options.useShowClassDesktop &&\n\t\t\twindow.outerWidth >= this.options.desktopWidth &&\n\t\t\thasClass(this.element, this.options.showClassDesktop)\n\t\t) {\n\t\t\taddClass(this.element, this.options.showClass);\n\t\t}\n\t\tremoveClass(this.element, this.options.showClassDesktop);\n\t\treturn hasClass(this.element, this.options.showClass);\n\t}\n\n\ttoggle() {\n\t\tif (this.isOpen()) {\n\t\t\tif (this.options.isHideable) {\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t} else {\n\t\t\tthis.show();\n\t\t}\n\t}\n\n\tshow() {\n\t\tif (this.isTransitioning || this.isOpen()) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.options.closeSiblings && this.parent) {\n\t\t\tconst selector = `[${this.options.dataParentSelector}=\"#${this.parent.id}\"]`;\n\t\t\tconst actives = Array.from(\n\t\t\t\tthis.parent.querySelectorAll(\n\t\t\t\t\t`${selector}.${this.options.showClass}, ${selector}.${this.options.collapsingClass}`\n\t\t\t\t)\n\t\t\t).filter((active) => active !== this.target);\n\n\t\t\tif (actives && actives.length) {\n\t\t\t\tconst anyTransitioning = actives.filter((active) => {\n\t\t\t\t\tconst collapseInstance = active[stringCollapse] as Collapse;\n\t\t\t\t\treturn collapseInstance && collapseInstance.isTransitioning;\n\t\t\t\t});\n\n\t\t\t\tif (anyTransitioning.length) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tactives.forEach((active) =>\n\t\t\t\t\tCollapse.getInstance(active as HTMLElement).hide()\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tthis._handleShow(this.element, this.triggers);\n\t}\n\n\thide() {\n\t\tif (this.isTransitioning || !this.isOpen()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._handleClose(this.element, this.triggers);\n\t}\n\n\tdestroy() {\n\t\tconst element = this.element;\n\n\t\tif (element[stringCollapse]) {\n\t\t\telement[stringCollapse] = null;\n\n\t\t\tremoveClass(element, this.options.componentClass);\n\t\t\tremoveClass(element, this.options.collapsingClass);\n\t\t\tremoveClass(element, this.options.showClass);\n\n\t\t\tif (this.options.animateProp) {\n\t\t\t\telement.style[this.options.animateProp] = null;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate init() {\n\t\t// todo: only initalize once, like bootstrap does it?\n\t\tthis.triggers = Array.from(\n\t\t\tdocument.querySelectorAll(\n\t\t\t\t`[${this.options.hrefSelector}=\"#${this.element.id}\"], [${this.options.dataTargetSelector}=\"#${this.element.id}\"]`\n\t\t\t)\n\t\t);\n\n\t\t// todo: why do we need that?\n\t\tconst toggles = Array.from(\n\t\t\tdocument.querySelectorAll(\n\t\t\t\t`[${this.options.dataToggleSelector}=\"collapse\"]`\n\t\t\t)\n\t\t);\n\t\tfor (const toggle of toggles) {\n\t\t\tconst target = getSelectorElementFromElement(\n\t\t\t\ttoggle,\n\t\t\t\tthis.options.dataTargetSelector\n\t\t\t);\n\t\t\tif (target !== null && target === this.element) {\n\t\t\t\tthis.target = target;\n\t\t\t\tthis.triggers.push(toggle as HTMLElement);\n\t\t\t}\n\t\t}\n\n\t\tthis.parent = this.options.parentElement;\n\n\t\t// init\n\t\tif (!(stringCollapse in this.element)) {\n\t\t\t// prevent adding event handlers twice\n\t\t\tthis.triggers.forEach((trigger) =>\n\t\t\t\ttrigger.addEventListener('click', this.handleClick, false)\n\t\t\t);\n\t\t}\n\n\t\tif (this.parent) {\n\t\t\tArray.from(\n\t\t\t\tthis.parent.querySelectorAll(\n\t\t\t\t\t`[${this.options.dataToggleSelector}=\"collapse\"][${this.options.dataParentSelector}=\"#${this.parent.id}\"]`\n\t\t\t\t)\n\t\t\t).forEach((element) => {\n\t\t\t\tthis._addAriaAndCollapsedClass(\n\t\t\t\t\tgetSelectorElementFromElement(\n\t\t\t\t\t\telement,\n\t\t\t\t\t\tthis.options.dataTargetSelector\n\t\t\t\t\t),\n\t\t\t\t\t[element]\n\t\t\t\t);\n\t\t\t});\n\t\t} else {\n\t\t\tthis._addAriaAndCollapsedClass(this.element, this.triggers);\n\t\t}\n\n\t\taddClass(this.element, this.options.componentClass);\n\n\t\tthis.element[stringCollapse] = this;\n\t}\n\n\tprivate handleClick = (event: Event) => {\n\t\t// preventDefault only for elements (which change the URL) not inside the collapsible element\n\t\tconst trigger = event && (event.currentTarget as HTMLElement);\n\t\tif (trigger && trigger.tagName === 'A') {\n\t\t\tevent.preventDefault();\n\t\t}\n\n\t\tconst target = getSelectorElementFromElement(\n\t\t\ttrigger,\n\t\t\tthis.options.dataTargetSelector\n\t\t);\n\t\tlet data = target[stringCollapse] as Collapse;\n\n\t\tif (!data) {\n\t\t\tdata = trigger[stringCollapse] as Collapse;\n\t\t}\n\n\t\tif (target) {\n\t\t\tCollapse.getInstance(target, data.options).toggle();\n\t\t}\n\t};\n\n\tprivate _handleShow(collapseElement: HTMLElement, triggers?: Element[]) {\n\t\tthis.eventNamespaceFn(collapseElement, 'show');\n\n\t\tremoveClass(collapseElement, this.options.componentClass);\n\t\taddClass(collapseElement, this.options.collapsingClass);\n\t\tif (this.options.animateProp) {\n\t\t\tcollapseElement.style[this.options.animateProp] =\n\t\t\t\tcollapseElement.scrollHeight + 'px';\n\t\t}\n\n\t\tif (triggers && triggers.length) {\n\t\t\ttriggers.forEach((trigger) => {\n\t\t\t\taddClass(trigger, this.options.activeClass);\n\t\t\t\ttrigger.setAttribute('aria-expanded', 'true');\n\t\t\t});\n\t\t}\n\n\t\tif (this.parent) {\n\t\t\taddClass(this.parent, this.options.activeClass);\n\t\t}\n\n\t\tthis.isTransitioning = true;\n\n\t\taddTransitionEndListener(\n\t\t\tcollapseElement,\n\t\t\t() => {\n\t\t\t\tremoveClass(collapseElement, this.options.collapsingClass);\n\t\t\t\taddClass(collapseElement, this.options.componentClass);\n\t\t\t\taddClass(collapseElement, this.options.showClass);\n\n\t\t\t\tthis.isTransitioning = false;\n\t\t\t\tif (this.options.animateProp) {\n\t\t\t\t\tcollapseElement.style[this.options.animateProp] = null;\n\t\t\t\t}\n\n\t\t\t\tthis.eventNamespaceFn(collapseElement, 'shown');\n\t\t\t},\n\t\t\tthis.options.transitionDuration\n\t\t);\n\t}\n\n\tprivate _handleClose(collapseElement: HTMLElement, triggers?: Element[]) {\n\t\tthis.eventNamespaceFn(collapseElement, 'hide');\n\n\t\tif (this.options.animateProp) {\n\t\t\tcollapseElement.style[this.options.animateProp] =\n\t\t\t\tcollapseElement.scrollHeight + 'px';\n\t\t}\n\n\t\taddClass(collapseElement, this.options.collapsingClass);\n\t\tremoveClass(collapseElement, this.options.componentClass);\n\t\tremoveClass(collapseElement, this.options.showClass);\n\t\t// force reflow to enable transition\n\t\tcollapseElement.offsetWidth; // eslint-disable-line\n\n\t\tif (triggers && triggers.length) {\n\t\t\ttriggers.forEach((trigger) => {\n\t\t\t\tconst target = getSelectorElementFromElement(\n\t\t\t\t\ttrigger,\n\t\t\t\t\tthis.options.dataTargetSelector\n\t\t\t\t);\n\n\t\t\t\tif (target !== null) {\n\t\t\t\t\tif (!hasClass(target, this.options.showClass)) {\n\t\t\t\t\t\tremoveClass(trigger, this.options.activeClass);\n\t\t\t\t\t\ttrigger.setAttribute('aria-expanded', 'false');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (this.parent) {\n\t\t\tconst selector = `[${this.options.dataParentSelector}=\"#${this.parent.id}\"]`;\n\t\t\tconst actives = Array.from(\n\t\t\t\tthis.parent.querySelectorAll(\n\t\t\t\t\t`${selector}.${this.options.showClass}, ${selector}.${this.options.collapsingClass}`\n\t\t\t\t)\n\t\t\t).filter((o) => o !== collapseElement);\n\n\t\t\tif (this.parent && actives.length === 0) {\n\t\t\t\tremoveClass(this.parent, this.options.activeParentClass);\n\t\t\t}\n\t\t}\n\n\t\tthis.isTransitioning = true;\n\t\tif (this.options.animateProp) {\n\t\t\tcollapseElement.style[this.options.animateProp] = null;\n\t\t}\n\n\t\taddTransitionEndListener(\n\t\t\tcollapseElement,\n\t\t\t() => {\n\t\t\t\tthis.isTransitioning = false;\n\n\t\t\t\tremoveClass(collapseElement, this.options.collapsingClass);\n\t\t\t\taddClass(collapseElement, this.options.componentClass);\n\n\t\t\t\tif (this.options.animateProp) {\n\t\t\t\t\tcollapseElement.style[this.options.animateProp] = null;\n\t\t\t\t}\n\n\t\t\t\tthis.eventNamespaceFn(collapseElement, 'hidden');\n\t\t\t},\n\t\t\tthis.options.transitionDuration\n\t\t);\n\t}\n\n\tprivate _addAriaAndCollapsedClass(element: Element, triggers: Element[]) {\n\t\tif (element) {\n\t\t\tconst isOpen = hasClass(element, this.options.showClass);\n\n\t\t\tif (triggers && triggers.length) {\n\t\t\t\ttriggers.forEach((trigger) => {\n\t\t\t\t\tisOpen\n\t\t\t\t\t\t? addClass(trigger, this.options.activeClass)\n\t\t\t\t\t\t: removeClass(trigger, this.options.activeClass);\n\n\t\t\t\t\ttrigger.setAttribute(\n\t\t\t\t\t\t'aria-expanded',\n\t\t\t\t\t\tisOpen.toString().toLowerCase()\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport function collapse(\n\telement: HTMLElement,\n\toptions?: CollapseOptions\n): Collapse {\n\tconsole.error(\n\t\t'collapse deprecated: use new Collapse(element, options) instead. (initialized elements can be accessed via Collapse.getInstance()'\n\t);\n\tlet data = element[stringCollapse] as Collapse;\n\n\tif (!data) {\n\t\tdata = new Collapse(element, options);\n\t}\n\n\treturn data;\n}\n","import { asHTMLElement } from '@opten/dom/as-html-element';\nimport { hasClass } from '@opten/dom/has-class';\nimport { isHTMLElement } from '@opten/dom/is-html-element';\n\nimport { Compiler } from '../';\nimport { Component } from '../metadata/component';\nimport { Reflector } from '../reflector';\nimport { Resolver } from '../resolver';\n\n// TODO: cache, static, inject?\nconst reflector = new Reflector();\nconst resolver = new Resolver(reflector);\nconst compiler = new Compiler(resolver);\n\nexport function factory(components: any[]) {\n\treturn (rootElement: HTMLElement) => {\n\t\tconst observables = new Map();\n\t\tcomponents.forEach((componentType) => {\n\t\t\t// TODO: inject resolver, or cache?\n\t\t\t// TODO: static or something to cache?\n\t\t\tconst component = resolver.resolve(componentType);\n\n\t\t\tif (component) {\n\t\t\t\tconst safeRootElement =\n\t\t\t\t\trootElement === document.body ? document : rootElement;\n\t\t\t\tArray.from(\n\t\t\t\t\tsafeRootElement.getElementsByClassName(component.className)\n\t\t\t\t).forEach((node) =>\n\t\t\t\t\tcompiler.compile(component, node as HTMLElement, componentType)\n\t\t\t\t);\n\n\t\t\t\tif (component.observe) {\n\t\t\t\t\tobservables.set(component, componentType);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`No @Component annotation for ${\n\t\t\t\t\t\tcomponentType ? componentType.name : componentType\n\t\t\t\t\t} found!`\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\n\t\tif (observables.size) {\n\t\t\tnew MutationObserver((mutations) => {\n\t\t\t\tconst componentInitializer = new Map void>();\n\n\t\t\t\tmutations.forEach((mutation) => {\n\t\t\t\t\tobservables.forEach((value, key) =>\n\t\t\t\t\t\tArray.from(mutation.addedNodes)\n\t\t\t\t\t\t\t.filter((node) => isHTMLElement(node))\n\t\t\t\t\t\t\t.map((node) => asHTMLElement(node))\n\t\t\t\t\t\t\t.forEach((node) => {\n\t\t\t\t\t\t\t\tconst comps = Array.from(\n\t\t\t\t\t\t\t\t\tnode.getElementsByClassName(key.className)\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tif (hasClass(node, key.className)) {\n\t\t\t\t\t\t\t\t\tcomps.push(node);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcomps.forEach((component) => {\n\t\t\t\t\t\t\t\t\tcomponentInitializer.set(component as HTMLElement, () =>\n\t\t\t\t\t\t\t\t\t\tcompiler.compile(key, component as HTMLElement, value)\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t});\n\n\t\t\t\tcomponentInitializer.forEach((c) => c());\n\t\t\t}).observe(document.body, {\n\t\t\t\tchildList: true,\n\t\t\t\tsubtree: true,\n\t\t\t});\n\t\t}\n\t};\n}\n","import { Component } from './metadata/component';\nimport { Query } from './metadata/di';\nimport { OnInit } from './metadata/lifecycle';\nimport { Resolver } from './resolver';\nimport { isType } from './util/type';\n\n// TODO: move whole project to @opten/initializer?\nexport class Compiler {\n\tprivate componentCache = new Map();\n\n\tconstructor(private resolver: Resolver) {}\n\n\tcompile(\n\t\tcomponent: Component,\n\t\tnode: HTMLElement,\n\t\tcomponentType: /*Type*/ any\n\t) {\n\t\t// TODO: cache everything?\n\n\t\t// TODO: cache that also?\n\t\tconst constructor = new componentType(node);\n\n\t\tif (this.componentCache.has(node)) {\n\t\t\tthis.componentCache.get(node).push(constructor);\n\t\t} else {\n\t\t\tthis.componentCache.set(node, [constructor]);\n\t\t}\n\n\t\tObject.keys(component.queries).forEach((propName) => {\n\t\t\tconst query: Query = component.queries[propName];\n\n\t\t\t// TODO: why do we have to inject the resolver?\n\t\t\t// can we not get the class name by some other way?\n\t\t\tconst target = this.resolver.resolve(query.selector);\n\n\t\t\tif (target) {\n\t\t\t\tconst targetNode = query.descendants ? node : document;\n\t\t\t\tconst nodes = targetNode.getElementsByClassName(target.className);\n\n\t\t\t\tconst cache = Array.from(nodes)\n\t\t\t\t\t.filter((o) => (query.filter ? query.filter(o) : true))\n\t\t\t\t\t.map((e) => this.componentCache.get(e as HTMLElement))\n\t\t\t\t\t.filter((e) => e !== undefined && e !== null)\n\t\t\t\t\t.reduce((acc, val) => acc.concat(val), [])\n\t\t\t\t\t.filter((f) => f.constructor === query.selector);\n\n\t\t\t\tconstructor[propName] = query.first ? cache[0] : cache;\n\t\t\t}\n\t\t});\n\n\t\tif (isType(constructor.onInit)) {\n\t\t\t(constructor as OnInit).onInit();\n\t\t}\n\t}\n}\n","import { makeDecorator, TypeDecorator } from '../util/decorators';\nimport { makeMetadataFactory, MetadataFactory } from '../util/factories';\n\nexport interface ComponentDecorator {\n\t(obj: Component): TypeDecorator;\n\tnew (obj: Component): Component;\n}\n\nexport interface Component {\n\tclassName?: string;\n\tobserve?: boolean;\n\tqueries?: { [key: string]: any };\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention,no-underscore-dangle,id-denylist,id-match\nexport const Component: ComponentDecorator = makeDecorator(\n\t'Component',\n\t(c: Component = {}) => ({ ...c })\n);\n\nexport const createComponent: MetadataFactory =\n\tmakeMetadataFactory('Component', (c: Component = {}) => ({\n\t\t...c,\n\t}));\n","import { ANNOTATIONS, PROP_METADATA } from '../util/decorators';\nimport { isType, Type } from '../util/type';\n\n// TODO: @opten/reflector? or @opten/initializer/reflector?\nexport class Reflector {\n\tannotations(typeOrFunc: Type): any[] {\n\t\tif (!isType(typeOrFunc)) {\n\t\t\treturn [];\n\t\t}\n\t\tconst parentCtor = getParentCtor(typeOrFunc);\n\t\tconst ownAnnotations = this._ownAnnotations(typeOrFunc, parentCtor) || [];\n\t\tconst parentAnnotations =\n\t\t\tparentCtor !== Object ? this.annotations(parentCtor) : [];\n\t\treturn parentAnnotations.concat(ownAnnotations);\n\t}\n\n\tpropMetadata(typeOrFunc: any): { [key: string]: any[] } {\n\t\tif (!isType(typeOrFunc)) {\n\t\t\treturn {};\n\t\t}\n\t\tconst parentCtor = getParentCtor(typeOrFunc);\n\t\tconst propMetadata: { [key: string]: any[] } = {};\n\t\tif (parentCtor !== Object) {\n\t\t\tconst parentPropMetadata = this.propMetadata(parentCtor);\n\t\t\tObject.keys(parentPropMetadata).forEach((propName) => {\n\t\t\t\tpropMetadata[propName] = parentPropMetadata[propName];\n\t\t\t});\n\t\t}\n\t\tconst ownPropMetadata = this._ownPropMetadata(typeOrFunc, parentCtor);\n\t\tif (ownPropMetadata) {\n\t\t\tObject.keys(ownPropMetadata).forEach((propName) => {\n\t\t\t\tconst decorators: any[] = [];\n\t\t\t\tif (propMetadata.hasOwnProperty(propName)) {\n\t\t\t\t\tdecorators.push(...propMetadata[propName]);\n\t\t\t\t}\n\t\t\t\tdecorators.push(...ownPropMetadata[propName]);\n\t\t\t\tpropMetadata[propName] = decorators;\n\t\t\t});\n\t\t}\n\t\treturn propMetadata;\n\t}\n\n\tprivate _ownAnnotations(\n\t\ttypeOrFunc: Type,\n\t\tparentCtor: any\n\t): any[] | null {\n\t\t// API for metadata created by invoking the decorators.\n\t\tif (typeOrFunc.hasOwnProperty(ANNOTATIONS)) {\n\t\t\treturn (typeOrFunc as any)[ANNOTATIONS];\n\t\t}\n\t\treturn null;\n\t}\n\n\tprivate _ownPropMetadata(\n\t\ttypeOrFunc: any,\n\t\tparentCtor: any\n\t): { [key: string]: any[] } | null {\n\t\t// API for metadata created by invoking the decorators.\n\t\tif (typeOrFunc.hasOwnProperty(PROP_METADATA)) {\n\t\t\treturn (typeOrFunc as any)[PROP_METADATA];\n\t\t}\n\t\treturn null;\n\t}\n}\n\nfunction getParentCtor(ctor: Type): Type {\n\tconst parentProto = Object.getPrototypeOf(ctor.prototype);\n\tconst parentCtor = parentProto ? parentProto.constructor : null;\n\t// Note: We always use `Object` as the null value\n\t// to simplify checking later on.\n\treturn parentCtor || Object;\n}\n","import { Component, createComponent } from '../metadata/component';\nimport { Query } from '../metadata/di';\nimport { Reflector } from '../reflector';\n\nconst QUERY_METADATA_IDENTIFIERS = [\n\t'ComponentRef',\n\t'ComponentRefs',\n\t'ChildRef',\n\t'ChildrenRef',\n];\n\n// TODO: @opten/resolver? or @opten/initializer/resolver?\nexport class Resolver {\n\tconstructor(private reflector: Reflector) {}\n\n\t// propertyCache = new Map();\n\n\tresolve(type: any /*Type*/): Component | null {\n\t\tconst typeMetadata = this.reflector.annotations(type);\n\n\t\tif (typeMetadata) {\n\t\t\tconst metadata = findLast(\n\t\t\t\ttypeMetadata,\n\t\t\t\t(c) => c && c.metadataName === 'Component'\n\t\t\t);\n\n\t\t\tif (metadata) {\n\t\t\t\tconst propertyMetadata = this.reflector.propMetadata(type);\n\n\t\t\t\treturn this._mergeWithPropertyMetadata(\n\t\t\t\t\tmetadata,\n\t\t\t\t\tpropertyMetadata,\n\t\t\t\t\ttype\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tprivate _mergeWithPropertyMetadata(\n\t\tcomponent: Component,\n\t\tpropertyMetadata: { [key: string]: any[] },\n\t\tcomponentType: /*Type*/ any\n\t): Component {\n\t\tconst queries: { [key: string]: any } = {};\n\n\t\tObject.keys(propertyMetadata).forEach((propName: string) => {\n\t\t\tconst query = findLast(propertyMetadata[propName], (a) =>\n\t\t\t\tQUERY_METADATA_IDENTIFIERS.some((i) => i && i === a.metadataName)\n\t\t\t);\n\n\t\t\tif (query) {\n\t\t\t\tqueries[propName] = query;\n\t\t\t}\n\t\t});\n\n\t\treturn this._merge(component, queries, componentType);\n\t}\n\n\tprivate _merge(\n\t\tcomponent: Component,\n\t\tqueries: { [key: string]: any },\n\t\tcomponentType: /*Type*/ any\n\t): Component {\n\t\tconst mergedQueries = component.queries\n\t\t\t? { ...component.queries, ...queries }\n\t\t\t: queries;\n\n\t\treturn createComponent({\n\t\t\tclassName: component.className,\n\t\t\tobserve: component.observe,\n\t\t\tqueries: mergedQueries,\n\t\t});\n\t}\n\n\tprivate _getQueriesMetadata(queries: { [key: string]: Query }): any[] {\n\t\tconst res: any[] = [];\n\n\t\tObject.keys(queries).forEach((propertyName: string) => {\n\t\t\tconst query = queries[propertyName];\n\t\t\tres.push(this._getQueryMetadata(query, propertyName));\n\t\t});\n\n\t\treturn res;\n\t}\n\n\tprivate _getQueryMetadata(q: Query, propertyName: string): any {\n\t\treturn {\n\t\t\tdescendants: q.descendants,\n\t\t\tfirst: q.first,\n\t\t\tpropertyName,\n\t\t\tread: false,\n\t\t\tselector: q.selector,\n\t\t};\n\t}\n}\n\nfunction findLast(arr: T[], condition: (value: T) => boolean): T | null {\n\tfor (let i = arr.length - 1; i >= 0; i--) {\n\t\tif (condition(arr[i])) {\n\t\t\treturn arr[i];\n\t\t}\n\t}\n\treturn null;\n}\n","import { Type } from './type';\n\nexport const ANNOTATIONS = '__annotations__';\nexport const PROP_METADATA = '__prop__metadata__';\n\nexport interface TypeDecorator {\n\t// Invoke as ES7 decorator.\n\t>(type: T): T;\n\n\t// Make TypeDecorator assignable to built-in ParameterDecorator type.\n\t// ParameterDecorator is declared in lib.d.ts as a `declare type`\n\t// so we cannot declare this interface as a subtype.\n\t// see https://github.com/angular/angular/issues/3379#issuecomment-126169417\n\t(\n\t\ttarget: object,\n\t\tpropertyKey?: string | symbol,\n\t\tparameterIndex?: number\n\t): void;\n}\n\nexport function makeDecorator(\n\tname: string,\n\tprops?: (...args: any[]) => any,\n\tparentClass?: any,\n\tchainFn?: (fn: TypeDecorator) => void,\n\ttypeFn?: (type: Type, ...args: any[]) => void\n): {\n\t\tnew (...args: any[]): any;\n\t\t(...args: any[]): any;\n\t\t(...args: any[]): (cls: any) => any;\n\t} {\n\tconst metaCtor = makeMetadataCtor(props);\n\n\t// eslint-disable-next-line @typescript-eslint/naming-convention\n\tfunction DecoratorFactory(...args: any[]): (cls: any) => any {\n\t\tif (this instanceof DecoratorFactory) {\n\t\t\tmetaCtor.call(this, ...args);\n\t\t\treturn this;\n\t\t}\n\n\t\tconst annotationInstance = new (DecoratorFactory as any)(...args);\n\t\tconst typeDecorator: TypeDecorator = (cls: Type) => {\n\t\t\tif (typeFn) {\n\t\t\t\ttypeFn(cls, ...args);\n\t\t\t}\n\t\t\t// Use of Object.defineProperty is important since it creates non-enumerable property which\n\t\t\t// prevents the property is copied during subclassing.\n\t\t\tconst annotations = cls.hasOwnProperty(ANNOTATIONS)\n\t\t\t\t? (cls as any)[ANNOTATIONS]\n\t\t\t\t: Object.defineProperty(cls, ANNOTATIONS, { value: [] })[ANNOTATIONS];\n\t\t\tannotations.push(annotationInstance);\n\t\t\treturn cls;\n\t\t};\n\t\tif (chainFn) {\n\t\t\tchainFn(typeDecorator);\n\t\t}\n\t\treturn typeDecorator;\n\t}\n\n\tif (parentClass) {\n\t\tDecoratorFactory.prototype = Object.create(parentClass.prototype);\n\t}\n\n\tDecoratorFactory.prototype.metadataName = name;\n\treturn DecoratorFactory as any;\n}\n\nfunction makeMetadataCtor(props?: (...args: any[]) => any): any {\n\treturn function ctor(...args: any[]) {\n\t\tif (props) {\n\t\t\tconst values = props(...args);\n\t\t\tfor (const propName in values) {\n\t\t\t\tif (values.hasOwnProperty(propName)) {\n\t\t\t\t\tthis[propName] = values[propName];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\nexport function makePropDecorator(\n\tname: string,\n\tprops?: (...args: any[]) => any,\n\tparentClass?: any\n): any {\n\tconst metaCtor = makeMetadataCtor(props);\n\n\t// eslint-disable-next-line @typescript-eslint/naming-convention\n\tfunction PropDecoratorFactory(...args: any[]): any {\n\t\tif (this instanceof PropDecoratorFactory) {\n\t\t\tmetaCtor.apply(this, args);\n\t\t\treturn this;\n\t\t}\n\n\t\tconst decoratorInstance = new (PropDecoratorFactory as any)(...args);\n\n\t\t// eslint-disable-next-line @typescript-eslint/naming-convention\n\t\treturn function PropDecorator(target: any, metaName: string) {\n\t\t\tconst constructor = target.constructor;\n\t\t\t// Use of Object.defineProperty is important since it creates non-enumerable property which\n\t\t\t// prevents the property is copied during subclassing.\n\t\t\tconst meta = constructor.hasOwnProperty(PROP_METADATA)\n\t\t\t\t? (constructor as any)[PROP_METADATA]\n\t\t\t\t: Object.defineProperty(constructor, PROP_METADATA, {\n\t\t\t\t\tvalue: {},\n\t\t\t\t })[PROP_METADATA];\n\t\t\tmeta[metaName] = (meta.hasOwnProperty(metaName) && meta[metaName]) || [];\n\t\t\tmeta[metaName].unshift(decoratorInstance);\n\t\t};\n\t}\n\n\tif (parentClass) {\n\t\tPropDecoratorFactory.prototype = Object.create(parentClass.prototype);\n\t}\n\n\tPropDecoratorFactory.prototype.metadataName = name;\n\treturn PropDecoratorFactory;\n}\n","export interface MetadataFactory {\n\t(...args: any[]): T;\n\tmetadataName: string;\n\tisTypeOf(obj: any): obj is T;\n}\n\nexport function makeMetadataFactory(\n\tname: string,\n\tprops?: (...args: any[]) => T\n): MetadataFactory {\n\tconst factory: any = (...args: any[]) => {\n\t\tconst values = props ? props(...args) : {};\n\t\treturn {\n\t\t\tmetadataName: name,\n\t\t\t...values,\n\t\t};\n\t};\n\tfactory.isTypeOf = (obj: any) => obj && obj.metadataName === name;\n\tfactory.metadataName = name;\n\treturn factory;\n}\n","// eslint-disable-next-line @typescript-eslint/naming-convention,no-underscore-dangle,id-denylist,id-match\nexport const Type = Function;\n\nexport function isType(v: any): v is Type {\n\treturn typeof v === 'function';\n}\n\nexport type Type = new (...args: any[]) => T;\n","export function getCookie(key: string) {\n\tif (!key) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\tdecodeURIComponent(\n\t\t\tdocument.cookie.replace(\n\t\t\t\tnew RegExp(\n\t\t\t\t\t`(?:(?:^|.*;)\\\\s*${encodeURIComponent(key).replace(\n\t\t\t\t\t\t/[\\-\\.\\+\\*]/g,\n\t\t\t\t\t\t'\\\\$&'\n\t\t\t\t\t)}\\\\s*\\\\=\\\\s*([^;]*).*$)|^.*$`\n\t\t\t\t),\n\t\t\t\t'$1'\n\t\t\t)\n\t\t) || null\n\t);\n}\n","export function setCookie(\n\tkey: string,\n\tvalue: string,\n\tend: number | string | Date,\n\tpath = '/',\n\tdomain = '',\n\tsecure = false\n) {\n\tif (!key || /^(?:expires|max\\-age|path|domain|secure)$/i.test(key)) {\n\t\treturn false;\n\t}\n\tlet expires = '';\n\tif (end) {\n\t\tswitch (end.constructor) {\n\t\t\tcase Number:\n\t\t\t\texpires =\n\t\t\t\t\tend === Infinity\n\t\t\t\t\t\t? '; expires=Fri, 31 Dec 9999 23:59:59 GMT'\n\t\t\t\t\t\t: '; max-age=' + end;\n\t\t\t\tbreak;\n\t\t\tcase String:\n\t\t\t\texpires = `; expires=${end}`;\n\t\t\t\tbreak;\n\t\t\tcase Date:\n\t\t\t\texpires = `; expires=${(end as Date).toUTCString()}`;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\texpires = '';\n\t\t}\n\t}\n\tconst keyStr = encodeURIComponent(key);\n\tconst valueStr = encodeURIComponent(value);\n\tconst domainStr = `${domain ? `; domain=${domain}` : ''}`;\n\tconst pathStr = `${path ? `; path=${path}` : ''}`;\n\tconst secureStr = `${secure ? '; secure' : ''}`;\n\tdocument.cookie = `${keyStr}=${valueStr}${expires}${domainStr}${pathStr}${secureStr}`;\n\n\treturn true;\n}\n","import { getClass } from '../get-class';\nimport { hasClass } from '../has-class';\n\nexport function addClass(element: Element, className: string) {\n\tif (element && !hasClass(element, className)) {\n\t\telement.setAttribute('class', getClass(element).trim() + ' ' + className);\n\t}\n}\n","import { isHTMLElement } from '../is-html-element';\n\nexport function asHTMLElement(o: any): HTMLElement {\n\tif (isHTMLElement(o)) {\n\t\treturn o as HTMLElement;\n\t}\n\treturn null;\n}\n","import { addClass } from '../add-class';\nimport { removeClass } from '../remove-class';\n\nexport function changeClass(element: Element, className: string, add = true) {\n\tif (add) {\n\t\taddClass(element, className);\n\t} else {\n\t\tremoveClass(element, className);\n\t}\n}\n","const classRegexCache = {};\nexport function classRegex(className: string): RegExp {\n\tif (!classRegexCache[className]) {\n\t\tclassRegexCache[className] = new RegExp('(\\\\s|^)' + className + '(\\\\s|$)');\n\t}\n\treturn classRegexCache[className];\n}\n","export function getClass(element: Element) {\n\treturn element.getAttribute('class') || '';\n}\n","import { getSelectorFromElement } from '../get-selector-from-element';\n\nexport function getSelectorElementFromElement(\n\telement: Element,\n\tattribute = 'data-target',\n\tfallbackHref = true\n): HTMLElement {\n\tconst selector = getSelectorFromElement(element, attribute, fallbackHref);\n\n\tif (selector && selector.indexOf('#') === 0) {\n\t\treturn document.getElementById(selector.substr(1, selector.length - 1));\n\t}\n\n\treturn null;\n}\n","export function getSelectorFromElement(\n\telement: Element,\n\tattribute = 'data-target',\n\tfallbackHref = true\n): string {\n\tlet selector = element.getAttribute(attribute);\n\n\tif (!selector && fallbackHref) {\n\t\tselector = element.getAttribute('href') || '';\n\t\tselector = /^#.*/i.test(selector) ? selector : null;\n\t}\n\n\treturn selector;\n}\n","export function getWindowScrollTop() {\n\treturn window.pageYOffset !== undefined\n\t\t? window.pageYOffset\n\t\t: (\n\t\t\t(document.documentElement ||\n\t\t\t\t\tdocument.body.parentNode ||\n\t\t\t\t\tdocument.body) as HTMLElement\n\t\t ).scrollTop;\n}\n","import { classRegex } from '../class-regex';\nimport { getClass } from '../get-class';\n\nexport function hasClass(element: Element, className: string): boolean {\n\treturn element && classRegex(className).test(getClass(element));\n}\n","export function isHTMLElement(o: any) {\n\treturn typeof HTMLElement === 'object'\n\t\t? o instanceof HTMLElement\n\t\t: o &&\n\t\t\t\ttypeof o === 'object' &&\n\t\t\t\to !== null &&\n\t\t\t\to.nodeType === 1 &&\n\t\t\t\ttypeof o.nodeName === 'string';\n}\n","import { classRegex } from '../class-regex';\nimport { getClass } from '../get-class';\nimport { hasClass } from '../has-class';\n\nexport function removeClass(element: Element, className: string) {\n\tif (element && hasClass(element, className)) {\n\t\tconst regex = classRegex(className);\n\t\telement.setAttribute('class', getClass(element).replace(regex, ' ').trim());\n\t}\n}\n\nexport function removeClassFactory(className: string) {\n\treturn (element: Element) => {\n\t\tremoveClass(element, className);\n\t};\n}\n\nexport function removeClassOnCollection(\n\telements: Element[],\n\tclassName: string\n) {\n\telements.forEach(removeClassFactory(className));\n}\n","import { changeClass } from '../change-class';\nimport { hasClass } from '../has-class';\n\nexport function toggleClass(\n\telement: Element,\n\tclassName: string,\n\tstate?: boolean\n) {\n\tchangeClass(\n\t\telement,\n\t\tclassName,\n\t\tstate === undefined ? !hasClass(element, className) : state\n\t);\n}\n","export function dispatchCustomEvent(element: EventTarget, eventName: string) {\n\tconst event = new CustomEvent(eventName);\n\telement.dispatchEvent(event);\n}\n","export type IEventHandler = (args: TArgs) => void;\n\nclass Subscription {\n\tisExecuted = false;\n\n\tconstructor(public handler: IEventHandler, public isOnce: boolean) {}\n\n\texecute(args: TArgs) {\n\t\tif (!this.isOnce || !this.isExecuted) {\n\t\t\tthis.isExecuted = true;\n\t\t\tthis.handler(args);\n\t\t}\n\t}\n}\n\nexport class EventDispatcher {\n\tprivate subscriptions: Subscription[] = [];\n\n\tdispatch(args: TArgs): void {\n\t\tfor (const sub of [...this.subscriptions]) {\n\t\t\tsub.execute(args);\n\t\t\tthis.cleanup(sub);\n\t\t}\n\t}\n\n\tsubscribe(fn: IEventHandler) {\n\t\tif (fn) {\n\t\t\tthis.subscriptions.push(new Subscription(fn, false));\n\t\t}\n\t\treturn this;\n\t}\n\n\tone(fn: IEventHandler) {\n\t\tif (fn) {\n\t\t\tthis.subscriptions.push(new Subscription(fn, true));\n\t\t}\n\t\treturn this;\n\t}\n\n\thas(fn: IEventHandler): boolean {\n\t\tif (!fn) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this.subscriptions.some((sub) => sub.handler === fn);\n\t}\n\n\tunsubscribe(fn: IEventHandler) {\n\t\tif (!fn) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (let i = 0; i < this.subscriptions.length; i++) {\n\t\t\tif (this.subscriptions[i].handler === fn) {\n\t\t\t\tthis.subscriptions.splice(i, 1);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tclear(): void {\n\t\tthis.subscriptions.splice(0, this.subscriptions.length);\n\t}\n\n\tprivate cleanup(sub: Subscription) {\n\t\tif (sub.isOnce && sub.isExecuted) {\n\t\t\tconst i = this.subscriptions.indexOf(sub);\n\t\t\tif (i > -1) {\n\t\t\t\tthis.subscriptions.splice(i, 1);\n\t\t\t}\n\t\t}\n\t}\n}\n","import { dispatchCustomEvent } from '../dispatch-custom-event';\n\nexport function eventNamespaceFactory(namespace: string) {\n\treturn (element: EventTarget, eventName: string) =>\n\t\tdispatchCustomEvent(element, eventName + '.' + namespace);\n}\n","export function debounce(func: Function, wait: number, immediate?: boolean) {\n\tlet timeout;\n\tlet result;\n\treturn function debounceFn() {\n\t\tconst context = this;\n\t\tconst args = arguments;\n\t\tconst later = () => {\n\t\t\ttimeout = null;\n\t\t\tif (!immediate) {\n\t\t\t\tresult = func.apply(context, args);\n\t\t\t}\n\t\t};\n\t\tconst callNow = immediate && !timeout;\n\t\tclearTimeout(timeout);\n\t\ttimeout = setTimeout(later, wait);\n\t\tif (callNow) {\n\t\t\tresult = func.apply(context, args);\n\t\t}\n\t\treturn result;\n\t};\n}\n","import { AnimationFunction } from '@opten/animation/animation-function';\nimport { linearTween } from '@opten/animation/linear-tween';\nimport { scrollTo } from '../scroll-to';\n\nexport function scrollToOffset(\n\tdistance: number,\n\tanimationFunction: AnimationFunction = linearTween,\n\tduration = 300,\n\toffset = 0,\n\twrapper: HTMLElement | Window = window\n) {\n\tscrollTo(distance + offset, animationFunction, duration, wrapper);\n}\n","import { AnimationFunction } from '@opten/animation/animation-function';\nimport { getWindowScrollTop } from '@opten/dom/get-window-scroll-top';\n\nexport function scrollTo(\n\tdistance: number,\n\tanimationFunction: AnimationFunction = (t, b, c, d) => (c * t) / d + b,\n\tduration = 300,\n\twrapper: HTMLElement | Window = window\n) {\n\tlet start = getWindowScrollTop();\n\tlet timeStart: number;\n\tlet timeElapsed: number;\n\n\tif (wrapper instanceof HTMLElement) {\n\t\tstart = wrapper.scrollTop;\n\t}\n\n\trequestAnimationFrame.call(window, (time) => {\n\t\ttimeStart = time;\n\t\tloop(time);\n\t});\n\n\tfunction loop(time) {\n\t\ttimeElapsed = time - timeStart;\n\n\t\tif (wrapper instanceof Window) {\n\t\t\twrapper.scrollTo(\n\t\t\t\t0,\n\t\t\t\tanimationFunction(timeElapsed, start, distance, duration)\n\t\t\t);\n\n\t\t\tif (timeElapsed < duration) {\n\t\t\t\trequestAnimationFrame.call(window, loop);\n\t\t\t} else {\n\t\t\t\twrapper.scrollTo(0, start + distance);\n\t\t\t}\n\t\t} else {\n\t\t\twrapper.scrollTop = animationFunction(\n\t\t\t\ttimeElapsed,\n\t\t\t\tstart,\n\t\t\t\tdistance,\n\t\t\t\tduration\n\t\t\t);\n\n\t\t\tif (timeElapsed < duration) {\n\t\t\t\trequestAnimationFrame.call(window, loop);\n\t\t\t} else {\n\t\t\t\twrapper.scrollTop = start + distance;\n\t\t\t}\n\t\t}\n\t}\n}\n","import { dispatchCustomEvent } from '@opten/events/dispatch-custom-event';\nimport { getTransitionEndEventName } from '../get-transition-end-event-name';\n\nconst transitionEndEventName = getTransitionEndEventName();\n\nexport function addTransitionEndListener(\n\telement: Element,\n\tcallback: () => void,\n\tfallbackDuration = 0,\n\tremove = true\n): void {\n\tlet called = false;\n\tconst listener = (event: Event) => {\n\t\tcalled = true;\n\t\tif (remove) {\n\t\t\telement.removeEventListener(transitionEndEventName as string, listener);\n\t\t}\n\t\tcallback();\n\t};\n\n\tif (transitionEndEventName === false) {\n\t\tsetTimeout(() => {\n\t\t\tcallback();\n\t\t}, fallbackDuration);\n\t} else {\n\t\telement.addEventListener(transitionEndEventName, listener);\n\t\t// https://github.com/twbs/bootstrap/blob/v4.0.0/js/src/util.js#L49\n\t\tif (fallbackDuration) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (!called) {\n\t\t\t\t\tdispatchCustomEvent(element, transitionEndEventName);\n\t\t\t\t}\n\t\t\t}, fallbackDuration);\n\t\t}\n\t}\n}\n","export function getTransitionEndEventName(): string | false {\n\tconst element = document.createElement('_');\n\tconst transitions = {\n\t\t// eslint-disable-next-line @typescript-eslint/naming-convention\n\t\tWebkitTransition: 'webkitTransitionEnd',\n\t\ttransition: 'transitionend',\n\t};\n\n\tfor (const transition in transitions) {\n\t\tif (element.style[transition] !== undefined) {\n\t\t\treturn transitions[transition];\n\t\t}\n\t}\n\n\treturn false;\n}\n","/*!\n * Chart.js v3.7.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, d as defaults, i as isObject, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as createContext, j as defined, s as sign, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as isNumber, w as _limitValue, x as _lookupByKey, y as getRelativePosition$1, z as _isPointInArea, A as _rlookupByKey, B as getAngleFromPoint, C as toPadding, D as each, E as getMaximumSize, F as _getParentNode, G as readUsedSize, I as throttled, J as supportsEventListenerOptions, K as _isDomSupported, L as log10, M as _factorize, N as finiteOrDefault, O as callback, Q as _addGrace, R as toDegrees, S as _measureText, U as _int16Range, V as _alignPixel, W as clipArea, X as renderText, Y as unclipArea, Z as toFont, $ as _toLeftRightCenter, a0 as _alignStartEnd, a1 as overrides, a2 as merge, a3 as _capitalize, a4 as descriptors, a5 as isFunction, a6 as _attachContext, a7 as _createResolver, a8 as _descriptors, a9 as mergeIf, aa as uid, ab as debounce, ac as retinaScale, ad as clearCanvas, ae as setsEqual, af as _elementsEqual, ag as _isClickEvent, ah as _isBetween, ai as _readValueToProps, aj as _updateBezierControlPoints, ak as _computeSegments, al as _boundSegments, am as _steppedInterpolation, an as _bezierInterpolation, ao as _pointInLine, ap as _steppedLineTo, aq as _bezierCurveTo, ar as drawPoint, as as addRoundedRectPath, at as toTRBL, au as toTRBLCorners, av as _boundSegment, aw as _normalizeAngle, ax as getRtlAdapter, ay as overrideTextDirection, az as _textX, aA as restoreTextDirection, aB as noop, aC as distanceBetweenPoints, aD as _setMinAndMaxByKey, aE as niceNum, aF as almostWhole, aG as almostEquals, aH as _decimalPlaces, aI as _longestText, aJ as _filterBetween, aK as _lookup } from './chunks/helpers.segment.js';\nexport { d as defaults } from './chunks/helpers.segment.js';\n\nclass Animator {\n constructor() {\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n callbacks.forEach(fn => fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n this._request = requestAnimFrame.call(window, () => {\n this._update();\n this._request = null;\n if (this._running) {\n this._refresh();\n }\n });\n }\n _update(date = Date.now()) {\n let remaining = 0;\n this._charts.forEach((anims, chart) => {\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n for (; i >= 0; --i) {\n item = items[i];\n if (item._active) {\n if (item._total > anims.duration) {\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n remaining += items.length;\n });\n this._lastDate = date;\n if (remaining === 0) {\n this._running = false;\n }\n }\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n for (; i >= 0; --i) {\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\nvar animator = new Animator();\n\nconst transparent = 'transparent';\nconst interpolators = {\n boolean(from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n color(from, to, factor) {\n const c0 = color(from || transparent);\n const c1 = c0.valid && color(to || transparent);\n return c1 && c1.valid\n ? c1.mix(c0, factor).hexString()\n : to;\n },\n number(from, to, factor) {\n return from + (to - from) * factor;\n }\n};\nclass Animation {\n constructor(cfg, target, prop, to) {\n const currentValue = target[prop];\n to = resolve([cfg.to, to, currentValue, cfg.from]);\n const from = resolve([cfg.from, currentValue, to]);\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n active() {\n return this._active;\n }\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([cfg.to, to, currentValue, cfg.from]);\n this._from = resolve([cfg.from, currentValue, to]);\n }\n }\n cancel() {\n if (this._active) {\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n this._active = from !== to && (loop || (elapsed < duration));\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n factor = (elapsed / duration) % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n this._target[prop] = this._fn(from, to, factor);\n }\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej) => {\n promises.push({res, rej});\n });\n }\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for (let i = 0; i < promises.length; i++) {\n promises[i][method]();\n }\n }\n}\n\nconst numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\ndefaults.set('animation', {\n delay: undefined,\n duration: 1000,\n easing: 'easeOutQuart',\n fn: undefined,\n from: undefined,\n loop: undefined,\n to: undefined,\n type: undefined,\n});\nconst animationOptions = Object.keys(defaults.animation);\ndefaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: (name) => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn',\n});\ndefaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n },\n});\ndefaults.describe('animations', {\n _fallback: 'animation',\n});\ndefaults.set('transitions', {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: 'transparent'\n },\n visible: {\n type: 'boolean',\n duration: 0\n },\n }\n },\n hide: {\n animations: {\n colors: {\n to: 'transparent'\n },\n visible: {\n type: 'boolean',\n easing: 'linear',\n fn: v => v | 0\n },\n }\n }\n});\nclass Animations {\n constructor(chart, config) {\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n const animatedProps = this._properties;\n Object.getOwnPropertyNames(config).forEach(key => {\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions) {\n resolved[option] = cfg[option];\n }\n (isArray(cfg.properties) && cfg.properties || [key]).forEach((prop) => {\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n awaitAll(target.options.$animations, newOptions).then(() => {\n target.options = newOptions;\n }, () => {\n });\n }\n return animations;\n }\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n for (i = props.length - 1; i >= 0; --i) {\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n if (animation) {\n if (cfg && animation.active()) {\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n target[prop] = value;\n continue;\n }\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n update(target, values) {\n if (this._properties.size === 0) {\n Object.assign(target, values);\n return;\n }\n const animations = this._createAnimations(target, values);\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for (let i = 0; i < keys.length; i++) {\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n return Promise.all(running);\n}\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n target.options = options = Object.assign({}, options, {$shared: false, $animations: {}});\n }\n return options;\n}\n\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\nfunction toClip(value) {\n let t, r, b, l;\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n keys.push(metasets[i].index);\n }\n return keys;\n}\nfunction applyStack(stack, value, dsIndex, options = {}) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n if (value === null) {\n return;\n }\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isNumberFinite(otherValue) && (singleMode || (value === 0 || sign(value) === sign(otherValue)))) {\n value += otherValue;\n }\n }\n return value;\n}\nfunction convertObjectDataToArray(data) {\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n adata[i] = {\n x: key,\n y: data[key]\n };\n }\n return adata;\n}\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || (stacked === undefined && meta.stack !== undefined);\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\nfunction getUserBounds(scale) {\n const {min, max, minDefined, maxDefined} = scale.getUserBounds();\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n const value = stack[meta.index];\n if ((positive && value > 0) || (!positive && value < 0)) {\n return meta.index;\n }\n }\n return null;\n}\nfunction updateStacks(controller, parsed) {\n const {chart, _cachedMeta: meta} = controller;\n const stacks = chart._stacks || (chart._stacks = {});\n const {iScale, vScale, index: datasetIndex} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n for (let i = 0; i < ilen; ++i) {\n const item = parsed[i];\n const {[iAxis]: index, [vAxis]: value} = item;\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n }\n}\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\nfunction createDatasetContext(parent, index) {\n return createContext(parent,\n {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n }\n );\n}\nfunction createDataContext(parent, index, element) {\n return createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\nfunction clearStacks(meta, items) {\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n items = items || meta._parsed;\n for (const parsed of items) {\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n }\n}\nconst isDirectUpdateMode = (mode) => mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked\n && {keys: getSortedDatasetIndices(chart, true), values: null};\nclass DatasetController {\n constructor(chart, datasetIndex) {\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.$context = undefined;\n this._syncList = [];\n this.initialize();\n }\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n }\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale\n ? meta.vScale\n : meta.iScale;\n }\n reset() {\n this._update('reset');\n }\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n if (isObject(data)) {\n this._data = convertObjectDataToArray(data);\n } else if (_data !== data) {\n if (_data) {\n unlistenArrayEvents(_data, this);\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n addElements() {\n const meta = this._cachedMeta;\n this._dataCheck();\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n this._dataCheck();\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n this._resyncElements(resetNewElements);\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n }\n }\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n parse(start, count) {\n const {_cachedMeta: meta, _data: data} = this;\n const {iScale, _stacked} = meta;\n const iAxis = iScale.axis;\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n const isNotInOrderComparedToPrev = () => cur[iAxis] === null || (prev && cur[iAxis] < prev[iAxis]);\n for (i = 0; i < count; ++i) {\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n parsePrimitiveData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]\n };\n return applyStack(stack, value, meta.index, {mode});\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n if (stack && values) {\n stack.values = values;\n value = applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n const {min: otherMin, max: otherMax} = getUserBounds(otherScale);\n let i, parsed;\n function _skip() {\n parsed = _parsed[i];\n const otherValue = parsed[otherScale.axis];\n return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n for (i = 0; i < ilen; ++i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n break;\n }\n }\n if (sorted) {\n for (i = ilen - 1; i >= 0; --i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n return range;\n }\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n value = parsed[i][scale.axis];\n if (isNumberFinite(value)) {\n values.push(value);\n }\n }\n return values;\n }\n getMaxOverflow() {\n return false;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n _update(mode) {\n const meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n update(mode) {}\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || (elements.length - start);\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n for (i = start; i < start + count; ++i) {\n const element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n for (i = 0; i < active.length; ++i) {\n active[i].draw(ctx, area);\n }\n }\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset\n ? this.resolveDatasetElementOptions(mode)\n : this.resolveDataElementOptions(index || 0, mode);\n }\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const element = this._cachedMeta.data[index];\n context = element.$context ||\n (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context ||\n (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n _resolveElementOptions(elementType, mode = 'default', index) {\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n const context = () => this.getContext(index, active);\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n if (values.$shared) {\n values.$shared = sharing;\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n return values;\n }\n _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n options: (!active && this.getSharedOptions(options)) || options\n });\n }\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n for (const [method, arg1, arg2] of this._syncList) {\n this[method](arg1, arg2);\n }\n this._syncList = [];\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n if (count) {\n this.parse(0, count);\n }\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n _insertElements(start, count, resetNewElements = true) {\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n const move = (arr) => {\n arr.length += count;\n for (i = arr.length - 1; i >= end; i--) {\n arr[i] = arr[i - count];\n }\n };\n move(data);\n for (i = start; i < end; ++i) {\n data[i] = new this.dataElementType();\n }\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n updateElements(element, start, count, mode) {}\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const [method, arg1, arg2] = args;\n this[method](arg1, arg2);\n }\n this.chart._dataChanges.push([this.index, ...args]);\n }\n _onDataPush() {\n const count = arguments.length;\n this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n }\n _onDataPop() {\n this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n }\n _onDataShift() {\n this._sync(['_removeElements', 0, 1]);\n }\n _onDataSplice(start, count) {\n if (count) {\n this._sync(['_removeElements', start, count]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync(['_insertElements', start, newCount]);\n }\n }\n _onDataUnshift() {\n this._sync(['_insertElements', 0, arguments.length]);\n }\n}\nDatasetController.defaults = {};\nDatasetController.prototype.datasetElementType = null;\nDatasetController.prototype.dataElementType = null;\n\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n }\n return scale._cache.$bar;\n}\nfunction computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const updateMinAndPrev = () => {\n if (curr === 32767 || curr === -32768) {\n return;\n }\n if (defined(prev)) {\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n for (i = 0, ilen = values.length; i < ilen; ++i) {\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n prev = undefined;\n for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n return min;\n}\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n size = thickness * stackCount;\n ratio = 1;\n }\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - (size / 2)\n };\n}\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n if (prev === null) {\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n if (next === null) {\n next = curr + curr - prev;\n }\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n item[vScale.axis] = barEnd;\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n return item;\n}\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n return parsed;\n}\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\nfunction borderProps(properties) {\n let reverse, start, end, top, bottom;\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {start, end, reverse, top, bottom};\n}\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const res = {};\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n const {start, end, reverse, top, bottom} = borderProps(properties);\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n return edge;\n}\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\nfunction setInflateAmount(properties, {inflateAmount}, ratio) {\n properties.inflateAmount = inflateAmount === 'auto'\n ? ratio === 1 ? 0.33 : 0\n : inflateAmount;\n}\nclass BarController extends DatasetController {\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseObjectData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n return parsed;\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n if (custom && scale === this._cachedMeta.vScale) {\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n getMaxOverflow() {\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {iScale, vScale} = meta;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom)\n ? '[' + custom.start + ', ' + custom.end + ']'\n : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const {index, _cachedMeta: {vScale}} = this;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n for (let i = start; i < start + count; i++) {\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {base, head: base} : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || (index === stack._top || index === stack._bottom),\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n const options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n _getStacks(last, dataIndex) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const metasets = iScale.getMatchingVisibleMetas(this._type);\n const stacked = iScale.options.stacked;\n const ilen = metasets.length;\n const stacks = [];\n let i, item;\n for (i = 0; i < ilen; ++i) {\n item = metasets[i];\n if (!item.controller.options.grouped) {\n continue;\n }\n if (typeof dataIndex !== 'undefined') {\n const val = item.controller.getParsed(dataIndex)[\n item.controller._cachedMeta.vScale.axis\n ];\n if (isNullOrUndef(val) || isNaN(val)) {\n continue;\n }\n }\n if (stacked === false || stacks.indexOf(item.stack) === -1 ||\n\t\t\t\t(stacked === undefined && item.stack === undefined)) {\n stacks.push(item.stack);\n }\n if (item.index === last) {\n break;\n }\n }\n if (!stacks.length) {\n stacks.push(undefined);\n }\n return stacks;\n }\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = (name !== undefined)\n ? stacks.indexOf(name)\n : -1;\n return (index === -1)\n ? stacks.length - 1\n : index;\n }\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n _calculateBarValuePixels(index) {\n const {_cachedMeta: {vScale, _stacked}, options: {base: baseValue, minBarLength}} = this;\n const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n if (length !== value) {\n start = length - value;\n length = value;\n }\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n head = base;\n }\n size = head - base;\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\n }\n head = base + size;\n }\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex'\n ? computeFlexCategoryTraits(index, ruler, options, stackCount)\n : computeFitCategoryTraits(index, ruler, options, stackCount);\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n for (; i < ilen; ++i) {\n if (this.getParsed(i)[vScale.axis] !== null) {\n rects[i].draw(this._ctx);\n }\n }\n }\n}\nBarController.id = 'bar';\nBarController.defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'base', 'width', 'height']\n }\n }\n};\nBarController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true,\n }\n }\n};\n\nclass BubbleController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n getMaxOverflow() {\n const data = this._cachedMeta.data;\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {xScale, yScale} = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n return {\n label: meta.label,\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n update(mode) {\n const points = this._cachedMeta.data;\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale} = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n if (includeOptions) {\n properties.options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n if (reset) {\n properties.options.radius = 0;\n }\n }\n this.updateElement(point, i, properties, mode);\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n if (values.$shared) {\n values = Object.assign({}, values, {$shared: false});\n }\n const radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n return values;\n }\n}\nBubbleController.id = 'bubble';\nBubbleController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'borderWidth', 'radius']\n }\n }\n};\nBubbleController.overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n }\n }\n }\n }\n};\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n return {ratioX, ratioY, offsetX, offsetY};\n}\nclass DoughnutController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n linkScales() {}\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = (i) => +data[i];\n if (isObject(data[start])) {\n const {key = 'value'} = this._parsing;\n getter = (i) => +resolveObjectKey(data[i], key);\n }\n let i, ilen;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n meta._parsed[i] = getter(i);\n }\n }\n }\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n for (let i = 0; i < this.chart.data.datasets.length; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const circumference = controller._getCircumference();\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n return {\n rotation: min,\n circumference: max - min,\n };\n }\n update(mode) {\n const chart = this.chart;\n const {chartArea} = chart;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n const {circumference, rotation} = this._getRotationExtents();\n const {ratioX, ratioY, offsetX, offsetY} = getRatioAndOffset(rotation, circumference, cutout);\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n meta.total = this.calculateTotal();\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const circumference = this._getCircumference();\n if ((reset && opts.animation.animateRotate) || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n let startAngle = this._getRotation();\n let i;\n for (i = 0; i < start; ++i) {\n startAngle += this._circumference(i, reset);\n }\n for (i = start; i < start + count; ++i) {\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n startAngle += circumference;\n this.updateElement(arc, i, properties, mode);\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n for (i = 0; i < metaData.length; i++) {\n const value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n return total;\n }\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n return {\n label: labels[index] || '',\n value,\n };\n }\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let i, ilen, meta, controller, options;\n if (!arcs) {\n for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n if (!arcs) {\n return 0;\n }\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n getMaxOffset(arcs) {\n let max = 0;\n for (let i = 0, ilen = arcs.length; i < ilen; ++i) {\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n for (let i = 0; i < datasetIndex; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n return ringWeightOffset;\n }\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\nDoughnutController.id = 'doughnut';\nDoughnutController.defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n },\n },\n cutout: '50%',\n rotation: 0,\n circumference: 360,\n radius: '100%',\n spacing: 0,\n indexAxis: 'r',\n};\nDoughnutController.descriptors = {\n _scriptable: (name) => name !== 'spacing',\n _indexable: (name) => name !== 'spacing',\n};\nDoughnutController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle}} = chart.legend.options;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(tooltipItem) {\n let dataLabel = tooltipItem.label;\n const value = ': ' + tooltipItem.formattedValue;\n if (isArray(dataLabel)) {\n dataLabel = dataLabel.slice();\n dataLabel[0] += value;\n } else {\n dataLabel += value;\n }\n return dataLabel;\n }\n }\n }\n }\n};\n\nclass LineController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n update(mode) {\n const meta = this._cachedMeta;\n const {dataset: line, data: points = [], _dataset} = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n this.updateElements(points, start, count, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (parsed[iAxis] - prevParsed[iAxis]) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n}\nLineController.id = 'line';\nLineController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n showLine: true,\n spanGaps: false,\n};\nLineController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n },\n _value_: {\n type: 'linear',\n },\n }\n};\nfunction getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n const pointCount = points.length;\n let start = 0;\n let count = pointCount;\n if (meta._sorted) {\n const {iScale, _parsed} = meta;\n const axis = iScale.axis;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(Math.min(\n _lookupByKey(_parsed, iScale.axis, min).lo,\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo),\n 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(Math.max(\n _lookupByKey(_parsed, iScale.axis, max).hi + 1,\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max)).hi + 1),\n start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n return {start, count};\n}\nfunction scaleRangesChanged(meta) {\n const {xScale, yScale, _scaleRanges} = meta;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n const changed = _scaleRanges.xmin !== xScale.min\n\t\t|| _scaleRanges.xmax !== xScale.max\n\t\t|| _scaleRanges.ymin !== yScale.min\n\t\t|| _scaleRanges.ymax !== yScale.max;\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\n\nclass PolarAreaController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n return {\n label: labels[index] || '',\n value,\n };\n }\n update(mode) {\n const arcs = this._cachedMeta.data;\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? (outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n this.outerRadius = outerRadius - (radiusLength * this.index);\n this.innerRadius = this.outerRadius - radiusLength;\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const dataset = this.getDataset();\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n const defaultAngle = 360 / this.countVisibleElements();\n for (i = 0; i < start; ++i) {\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for (i = start; i < start + count; i++) {\n const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(dataset.data[i]) : 0;\n angle = endAngle;\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n this.updateElement(arc, i, properties, mode);\n }\n }\n countVisibleElements() {\n const dataset = this.getDataset();\n const meta = this._cachedMeta;\n let count = 0;\n meta.data.forEach((element, index) => {\n if (!isNaN(dataset.data[index]) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n return count;\n }\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index)\n ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle)\n : 0;\n }\n}\nPolarAreaController.id = 'polarArea';\nPolarAreaController.defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n },\n },\n indexAxis: 'r',\n startAngle: 0,\n};\nPolarAreaController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle}} = chart.legend.options;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(context) {\n return context.chart.data.labels[context.dataIndex] + ': ' + context.formattedValue;\n }\n }\n }\n },\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n};\n\nclass PieController extends DoughnutController {\n}\nPieController.id = 'pie';\nPieController.defaults = {\n cutout: 0,\n rotation: 0,\n circumference: 360,\n radius: '100%'\n};\n\nclass RadarController extends DatasetController {\n getLabelAndValue(index) {\n const vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n line.points = points;\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n this.updateElement(line, undefined, properties, mode);\n }\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const dataset = this.getDataset();\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, dataset.data[i]);\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n this.updateElement(point, i, properties, mode);\n }\n }\n}\nRadarController.id = 'radar';\nRadarController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n },\n};\nRadarController.overrides = {\n aspectRatio: 1,\n scales: {\n r: {\n type: 'radialLinear',\n }\n }\n};\n\nclass ScatterController extends LineController {\n}\nScatterController.id = 'scatter';\nScatterController.defaults = {\n showLine: false,\n fill: false\n};\nScatterController.overrides = {\n interaction: {\n mode: 'point'\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(item) {\n return '(' + item.label + ', ' + item.formattedValue + ')';\n }\n }\n }\n },\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n};\n\nvar controllers = /*#__PURE__*/Object.freeze({\n__proto__: null,\nBarController: BarController,\nBubbleController: BubbleController,\nDoughnutController: DoughnutController,\nLineController: LineController,\nPolarAreaController: PolarAreaController,\nPieController: PieController,\nRadarController: RadarController,\nScatterController: ScatterController\n});\n\nfunction abstract() {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\nclass DateAdapter {\n constructor(options) {\n this.options = options || {};\n }\n formats() {\n return abstract();\n }\n parse(value, format) {\n return abstract();\n }\n format(timestamp, format) {\n return abstract();\n }\n add(timestamp, amount, unit) {\n return abstract();\n }\n diff(a, b, unit) {\n return abstract();\n }\n startOf(timestamp, unit, weekday) {\n return abstract();\n }\n endOf(timestamp, unit) {\n return abstract();\n }\n}\nDateAdapter.override = function(members) {\n Object.assign(DateAdapter.prototype, members);\n};\nvar adapters = {\n _date: DateAdapter\n};\n\nfunction getRelativePosition(e, chart) {\n if ('native' in e) {\n return {\n x: e.x,\n y: e.y\n };\n }\n return getRelativePosition$1(e, chart);\n}\nfunction evaluateAllVisibleItems(chart, handler) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n let index, data, element;\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n ({index, data} = metasets[i]);\n for (let j = 0, jlen = data.length; j < jlen; ++j) {\n element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\nfunction binarySearch(metaset, axis, value, intersect) {\n const {controller, data, _sorted} = metaset;\n const iScale = controller._cachedMeta.iScale;\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n return lookupMethod(data, axis, value);\n } else if (controller._sharedOptions) {\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {lo: start.lo, hi: end.hi};\n }\n }\n }\n return {lo: 0, hi: data.length - 1};\n}\nfunction optimizedEvaluateItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n const {index, data} = metasets[i];\n const {lo, hi} = binarySearch(metasets[i], axis, value, intersect);\n for (let j = lo; j <= hi; ++j) {\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\nfunction getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n return function(pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\nfunction getIntersectItems(chart, position, axis, useFinalPosition) {\n const items = [];\n if (!_isPointInArea(position, chart.chartArea, chart._minPadding)) {\n return items;\n }\n const evaluationFunc = function(element, datasetIndex, index) {\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({element, datasetIndex, index});\n }\n };\n optimizedEvaluateItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n function evaluationFunc(element, datasetIndex, index) {\n const {startAngle, endAngle} = element.getProps(['startAngle', 'endAngle'], useFinalPosition);\n const {angle} = getAngleFromPoint(element, {x: position.x, y: position.y});\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({element, datasetIndex, index});\n }\n }\n optimizedEvaluateItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = _isPointInArea(center, chart.chartArea, chart._minPadding);\n if (!pointInArea && !inRange) {\n return;\n }\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [{element, datasetIndex, index}];\n minDistance = distance;\n } else if (distance === minDistance) {\n items.push({element, datasetIndex, index});\n }\n }\n optimizedEvaluateItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition) {\n if (!_isPointInArea(position, chart.chartArea, chart._minPadding)) {\n return [];\n }\n return axis === 'r' && !intersect\n ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition);\n}\nfunction getAxisItems(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const items = [];\n const axis = options.axis;\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n evaluateAllVisibleItems(chart, (element, datasetIndex, index) => {\n if (element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({element, datasetIndex, index});\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n intersectsItem = true;\n }\n });\n if (options.intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\nvar Interaction = {\n modes: {\n index(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'x';\n const items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition)\n : getNearestItems(chart, position, axis, false, useFinalPosition);\n const elements = [];\n if (!items.length) {\n return [];\n }\n chart.getSortedVisibleDatasetMetas().forEach((meta) => {\n const index = items[0].index;\n const element = meta.data[index];\n if (element && !element.skip) {\n elements.push({element, datasetIndex: meta.index, index});\n }\n });\n return elements;\n },\n dataset(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n let items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition) :\n getNearestItems(chart, position, axis, false, useFinalPosition);\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for (let i = 0; i < data.length; ++i) {\n items.push({element: data[i], datasetIndex, index: i});\n }\n }\n return items;\n },\n point(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n return getIntersectItems(chart, position, axis, useFinalPosition);\n },\n nearest(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition);\n },\n x(chart, e, options, useFinalPosition) {\n return getAxisItems(chart, e, {axis: 'x', intersect: options.intersect}, useFinalPosition);\n },\n y(chart, e, options, useFinalPosition) {\n return getAxisItems(chart, e, {axis: 'y', intersect: options.intersect}, useFinalPosition);\n }\n }\n};\n\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\nfunction filterByPosition(array, position) {\n return array.filter(v => v.pos === position);\n}\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b) => {\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ?\n v0.index - v1.index :\n v0.weight - v1.weight;\n });\n}\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n box = boxes[i];\n ({position: pos, options: {stack, stackWeight = 1}} = box);\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && (pos + stack),\n stackWeight\n });\n }\n return layoutBoxes;\n}\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts) {\n const {stack, pos, stackWeight} = wrap;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {count: 0, placed: 0, weight: 0, size: 0});\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\nfunction setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const {vBoxMaxWidth, hBoxMaxHeight} = params;\n let i, ilen, layout;\n for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n layout = layouts[i];\n const {fullSize} = layout.box;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\nfunction updateDims(chartArea, params, layout, stacks) {\n const {pos, box} = layout;\n const maxPadding = chartArea.maxPadding;\n if (!isObject(pos)) {\n if (layout.size) {\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {size: 0, count: 1};\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n return layout.horizontal\n ? {same: widthChanged, other: heightChanged}\n : {same: heightChanged, other: widthChanged};\n}\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n function marginForPositions(positions) {\n const margin = {left: 0, top: 0, right: 0, bottom: 0};\n positions.forEach((pos) => {\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n return horizontal\n ? marginForPositions(['left', 'right'])\n : marginForPositions(['top', 'bottom']);\n}\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n layout = boxes[i];\n box = layout.box;\n box.update(\n layout.width || chartArea.w,\n layout.height || chartArea.h,\n getMargins(layout.horizontal, chartArea)\n );\n const {same, other} = updateDims(chartArea, params, layout, stacks);\n refit |= same && refitBoxes.length;\n changed = changed || other;\n if (!box.fullSize) {\n refitBoxes.push(layout);\n }\n }\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let {x, y} = chartArea;\n for (const layout of boxes) {\n const box = layout.box;\n const stack = stacks[layout.stack] || {count: 1, placed: 0, weight: 1};\n const weight = (layout.stackWeight / stack.weight) || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height = chartArea.h * weight;\n const width = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n }\n stack.start = x;\n stack.placed += height;\n x = box.right;\n }\n }\n chartArea.x = x;\n chartArea.y = y;\n}\ndefaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n});\nvar layouts = {\n addBox(chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n item._layers = item._layers || function() {\n return [{\n z: 0,\n draw(chartArea) {\n item.draw(chartArea);\n }\n }];\n };\n chart.boxes.push(item);\n },\n removeBox(chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n configure(chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n update(chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n each(chart.boxes, box => {\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) =>\n wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n handleMaxPadding(chartArea);\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w,\n };\n each(boxes.chartArea, (layout) => {\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {left: 0, top: 0, right: 0, bottom: 0});\n });\n }\n};\n\nclass BasePlatform {\n acquireContext(canvas, aspectRatio) {}\n releaseContext(context) {\n return false;\n }\n addEventListener(chart, type, listener) {}\n removeEventListener(chart, type, listener) {}\n getDevicePixelRatio() {\n return 1;\n }\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n isAttached(canvas) {\n return true;\n }\n updateConfig(config) {\n }\n}\n\nclass BasicPlatform extends BasePlatform {\n acquireContext(item) {\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\n\nconst EXPANDO_KEY = '$chartjs';\nconst EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\nconst isNullOrEmpty = value => value === null || value === '';\nfunction initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n style.display = style.display || 'block';\n style.boxSizing = style.boxSizing || 'border-box';\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n return canvas;\n}\nconst eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\nfunction addListener(node, type, listener) {\n node.addEventListener(type, listener, eventListenerOptions);\n}\nfunction removeListener(chart, type, listener) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n}\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const {x, y} = getRelativePosition$1(event, chart);\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null,\n };\n}\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList) {\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart) => {\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height) => {\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n listener();\n }\n }, window);\n const observer = new ResizeObserver(entries => {\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n return observer;\n}\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled((event) => {\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart, (args) => {\n const event = args[0];\n return [event, event.offsetX, event.offsetY];\n });\n addListener(canvas, type, proxy);\n return proxy;\n}\nclass DomPlatform extends BasePlatform {\n acquireContext(canvas, aspectRatio) {\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n if (context && context.canvas === canvas) {\n initCanvas(canvas, aspectRatio);\n return context;\n }\n return null;\n }\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n const initial = canvas[EXPANDO_KEY].initial;\n ['height', 'width'].forEach((prop) => {\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n const style = initial.style || {};\n Object.keys(style).forEach((key) => {\n canvas.style[key] = style[key];\n });\n canvas.width = canvas.width;\n delete canvas[EXPANDO_KEY];\n return true;\n }\n addEventListener(chart, type, listener) {\n this.removeEventListener(chart, type);\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n if (!proxy) {\n return;\n }\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n isAttached(canvas) {\n const container = _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\n\nfunction _detectPlatform(canvas) {\n if (!_isDomSupported() || (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas)) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\n\nclass Element {\n constructor() {\n this.x = undefined;\n this.y = undefined;\n this.active = false;\n this.options = undefined;\n this.$animations = undefined;\n }\n tooltipPosition(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n getProps(props, final) {\n const anims = this.$animations;\n if (!final || !anims) {\n return this;\n }\n const ret = {};\n props.forEach(prop => {\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop];\n });\n return ret;\n }\n}\nElement.defaults = {};\nElement.defaultRoutes = undefined;\n\nconst formatters = {\n values(value) {\n return isArray(value) ? value : '' + value;\n },\n numeric(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue;\n if (ticks.length > 1) {\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n delta = calculateDelta(tickValue, ticks);\n }\n const logDelta = log10(Math.abs(delta));\n const numDecimal = Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal};\n Object.assign(options, this.options.ticks.format);\n return formatNumber(tickValue, locale, options);\n },\n logarithmic(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = tickValue / (Math.pow(10, Math.floor(log10(tickValue))));\n if (remain === 1 || remain === 2 || remain === 5) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n};\nfunction calculateDelta(tickValue, ticks) {\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\nvar Ticks = {formatters};\n\ndefaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n bounds: 'ticks',\n grace: 0,\n grid: {\n display: true,\n lineWidth: 1,\n drawBorder: true,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: (_ctx, options) => options.lineWidth,\n tickColor: (_ctx, options) => options.color,\n offset: false,\n borderDash: [],\n borderDashOffset: 0.0,\n borderWidth: 1\n },\n title: {\n display: false,\n text: '',\n padding: {\n top: 4,\n bottom: 4\n }\n },\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n textStrokeWidth: 0,\n textStrokeColor: '',\n padding: 3,\n display: true,\n autoSkip: true,\n autoSkipPadding: 3,\n labelOffset: 0,\n callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2,\n }\n});\ndefaults.route('scale.ticks', 'color', '', 'color');\ndefaults.route('scale.grid', 'color', '', 'borderColor');\ndefaults.route('scale.grid', 'borderColor', '', 'borderColor');\ndefaults.route('scale.title', 'color', '', 'color');\ndefaults.describe('scale', {\n _fallback: false,\n _scriptable: (name) => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n _indexable: (name) => name !== 'borderDash' && name !== 'tickBorderDash',\n});\ndefaults.describe('scales', {\n _fallback: 'scale',\n});\ndefaults.describe('scale.ticks', {\n _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback',\n _indexable: (name) => name !== 'backdropPadding',\n});\n\nfunction autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const ticksLimit = tickOpts.maxTicksLimit || determineMaxTicks(scale);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n const factors = _factorize(evenMajorSpacing);\n for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\nfunction getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n spacing = Math.ceil(spacing);\n for (i = 0; i < ticks.length; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n next = start;\n while (next < 0) {\n count++;\n next = Math.round(start + count * spacing);\n }\n for (i = Math.max(start, 0); i < end; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\nfunction getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n if (len < 2) {\n return false;\n }\n for (diff = arr[0], i = 1; i < len; ++i) {\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\n\nconst reverseAlign = (align) => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nfunction sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n for (; i < len; i += increment) {\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6;\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\nfunction garbageCollect(caches, length) {\n each(caches, (cache) => {\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for (i = 0; i < gcLen; ++i) {\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\nfunction getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\nfunction getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n return (lines * font.lineHeight) + padding.height;\n}\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\nfunction titleAlign(align, position, reverse) {\n let ret = _toLeftRightCenter(align);\n if ((reverse && position !== 'right') || (!reverse && position === 'right')) {\n ret = reverseAlign(ret);\n }\n return ret;\n}\nfunction titleArgs(scale, offset, position, align) {\n const {top, left, bottom, right, chart} = scale;\n const {chartArea, scales} = chart;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {titleX, titleY, maxWidth, rotation};\n}\nclass Scale extends Element {\n constructor(cfg) {\n super();\n this.id = cfg.id;\n this.type = cfg.type;\n this.options = undefined;\n this.ctx = cfg.ctx;\n this.chart = cfg.chart;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n this.maxWidth = undefined;\n this.maxHeight = undefined;\n this.paddingTop = undefined;\n this.paddingBottom = undefined;\n this.paddingLeft = undefined;\n this.paddingRight = undefined;\n this.axis = undefined;\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n this.ticks = [];\n this._gridLineItems = null;\n this._labelItems = null;\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n this._startPixel = undefined;\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n init(options) {\n this.options = options.setContext(this.getContext());\n this.axis = options.axis;\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n parse(raw, index) {\n return raw;\n }\n getUserBounds() {\n let {_userMin, _userMax, _suggestedMin, _suggestedMax} = this;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isNumberFinite(_userMin),\n maxDefined: isNumberFinite(_userMax)\n };\n }\n getMinMax(canStack) {\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n let range;\n if (minDefined && maxDefined) {\n return {min, max};\n }\n const metas = this.getMatchingVisibleMetas();\n for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n getTicks() {\n return this.ticks;\n }\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n beforeUpdate() {\n callback(this.options.beforeUpdate, [this]);\n }\n update(maxWidth, maxHeight, margins) {\n const {beginAtZero, grace, ticks: tickOpts} = this.options;\n const sampleSize = tickOpts.sampleSize;\n this.beforeUpdate();\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n this._maxLength = this.isHorizontal()\n ? this.width + margins.left + margins.right\n : this.height + margins.top + margins.bottom;\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n this.beforeBuildTicks();\n this.ticks = this.buildTicks() || [];\n this.afterBuildTicks();\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n this.configure();\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation();\n this.afterCalculateLabelRotation();\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n }\n if (samplingEnabled) {\n this._convertTicksToLabels(this.ticks);\n }\n this.beforeFit();\n this.fit();\n this.afterFit();\n this.afterUpdate();\n }\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n afterUpdate() {\n callback(this.options.afterUpdate, [this]);\n }\n beforeSetDimensions() {\n callback(this.options.beforeSetDimensions, [this]);\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = 0;\n this.bottom = this.height;\n }\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n callback(this.options.afterSetDimensions, [this]);\n }\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n callback(this.options[name], [this]);\n }\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n beforeTickToLabelConversion() {\n callback(this.options.beforeTickToLabelConversion, [this]);\n }\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n tick = ticks[i];\n tick.label = callback(tickOpts.callback, [tick.value, i, ticks], this);\n }\n }\n afterTickToLabelConversion() {\n callback(this.options.afterTickToLabelConversion, [this]);\n }\n beforeCalculateLabelRotation() {\n callback(this.options.beforeCalculateLabelRotation, [this]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = this.ticks.length;\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid)\n\t\t\t\t- tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(\n Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)),\n Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))\n ));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n callback(this.options.afterCalculateLabelRotation, [this]);\n }\n beforeFit() {\n callback(this.options.beforeFit, [this]);\n }\n fit() {\n const minSize = {\n width: 0,\n height: 0\n };\n const {chart, options: {ticks: tickOpts, title: titleOpts, grid: gridOpts}} = this;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight;\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n if (tickOpts.display && this.ticks.length) {\n const {first, last, widest, highest} = this._getLabelSizes();\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n if (isHorizontal) {\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n this._handleMargins();\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n _calculatePadding(first, last, sin, cos) {\n const {ticks: {align, padding}, position} = this.options;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n afterFit() {\n callback(this.options.afterFit, [this]);\n }\n isHorizontal() {\n const {axis, position} = this.options;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n isFullSize() {\n return this.options.fullSize;\n }\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n this.generateTickLabels(ticks);\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n this.afterTickToLabelConversion();\n }\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length);\n }\n return labelSizes;\n }\n _computeLabelSizes(ticks, length) {\n const {ctx, _longestTextCache: caches} = this;\n const widths = [];\n const heights = [];\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n for (i = 0; i < length; ++i) {\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n for (j = 0, jlen = label.length; j < jlen; ++j) {\n nestedLabel = label[j];\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n const valueAt = (idx) => ({width: widths[idx] || 0, height: heights[idx] || 0});\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights,\n };\n }\n getLabelForValue(value) {\n return value;\n }\n getPixelForValue(value, index) {\n return NaN;\n }\n getValueForPixel(pixel) {}\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n getBaseValue() {\n const {min, max} = this;\n return min < 0 && max < 0 ? max :\n min > 0 && max > 0 ? min :\n 0;\n }\n getContext(index) {\n const ticks = this.ticks || [];\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context ||\n\t\t\t\t(tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context ||\n\t\t\t(this.$context = createScaleContext(this.chart.getContext(), this));\n }\n _tickSize() {\n const optionTicks = this.options.ticks;\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n return this.isHorizontal()\n ? h * cos > w * sin ? w / cos : h / sin\n : h * sin < w * cos ? h / cos : w / sin;\n }\n _isVisible() {\n const display = this.options.display;\n if (display !== 'auto') {\n return !!display;\n }\n return this.getMatchingVisibleMetas().length > 0;\n }\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const {grid, position} = options;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = borderOpts.drawBorder ? borderOpts.borderWidth : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function(pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for (i = 0; i < ticksLength; i += step) {\n const optsAtIndex = grid.setContext(this.getContext(i));\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = grid.borderDash || [];\n const borderDashOffset = optsAtIndex.borderDashOffset;\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n lineValue = getPixelForGridLine(this, i, offset);\n if (lineValue === undefined) {\n continue;\n }\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset,\n });\n }\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n return items;\n }\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const {position, ticks: optionTicks} = options;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const {align, crossAlign, padding, mirror} = optionTicks;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = ((chartArea.top + chartArea.bottom) / 2) + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = ((chartArea.left + chartArea.right) / 2) - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n x = this.chart.scales[positionAxisID].getPixelForValue(value);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n const labelSizes = this._getLabelSizes();\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n label = tick.label;\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n if (isHorizontal) {\n x = pixel;\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n let backdrop;\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n let top = y + textOffset - labelPadding.top;\n let left = x - labelPadding.left;\n switch (textBaseline) {\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n }\n switch (textAlign) {\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n }\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n color: optsAtIndex.backdropColor,\n };\n }\n items.push({\n rotation,\n label,\n font,\n color,\n strokeColor,\n strokeWidth,\n textOffset,\n textAlign,\n textBaseline,\n translation: [x, y],\n backdrop,\n });\n }\n return items;\n }\n _getXAxisLabelAlignment() {\n const {position, ticks} = this.options;\n const rotation = -toRadians(this.labelRotation);\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n let align = 'center';\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n }\n return align;\n }\n _getYAxisLabelAlignment(tl) {\n const {position, ticks: {crossAlign, mirror, padding}} = this.options;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n let textAlign;\n let x;\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += (widest / 2);\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n return {textAlign, x};\n }\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n const chart = this.chart;\n const position = this.options.position;\n if (position === 'left' || position === 'right') {\n return {top: 0, left: this.left, bottom: chart.height, right: this.right};\n } if (position === 'top' || position === 'bottom') {\n return {top: this.top, left: 0, bottom: this.bottom, right: chart.width};\n }\n }\n drawBackground() {\n const {ctx, options: {backgroundColor}, left, top, width, height} = this;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex(t => t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n const drawLine = (p1, p2, style) => {\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n if (grid.display) {\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n if (grid.drawOnChartArea) {\n drawLine(\n {x: item.x1, y: item.y1},\n {x: item.x2, y: item.y2},\n item\n );\n }\n if (grid.drawTicks) {\n drawLine(\n {x: item.tx1, y: item.ty1},\n {x: item.tx2, y: item.ty2},\n {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n }\n );\n }\n }\n }\n }\n drawBorder() {\n const {chart, ctx, options: {grid}} = this;\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = grid.drawBorder ? borderOpts.borderWidth : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.borderWidth;\n ctx.strokeStyle = borderOpts.borderColor;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n ctx.restore();\n }\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n if (!optionTicks.display) {\n return;\n }\n const ctx = this.ctx;\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n const tickFont = item.font;\n const label = item.label;\n if (item.backdrop) {\n ctx.fillStyle = item.backdrop.color;\n ctx.fillRect(item.backdrop.left, item.backdrop.top, item.backdrop.width, item.backdrop.height);\n }\n let y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, item);\n }\n if (area) {\n unclipArea(ctx);\n }\n }\n drawTitle() {\n const {ctx, options: {position, title, reverse}} = this;\n if (!title.display) {\n return;\n }\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n const {titleX, titleY, maxWidth, rotation} = titleArgs(this, offset, position, align);\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n return [{\n z: tz,\n draw: (chartArea) => {\n this.draw(chartArea);\n }\n }];\n }\n return [{\n z: gz,\n draw: (chartArea) => {\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n }, {\n z: gz + 1,\n draw: () => {\n this.drawBorder();\n }\n }, {\n z: tz,\n draw: (chartArea) => {\n this.drawLabels(chartArea);\n }\n }];\n }\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\n\nclass TypedRegistry {\n constructor(type, scope, override) {\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n if (isIChartComponent(proto)) {\n parentScope = this.register(proto);\n }\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n if (id in items) {\n return scope;\n }\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n return scope;\n }\n get(id) {\n return this.items[id];\n }\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n if (id in items) {\n delete items[id];\n }\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\nfunction registerDefaults(item, scope, parentScope) {\n const itemDefaults = merge(Object.create(null), [\n parentScope ? defaults.get(parentScope) : {},\n defaults.get(scope),\n item.defaults\n ]);\n defaults.set(scope, itemDefaults);\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach(property => {\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [scope].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\n\nclass Registry {\n constructor() {\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n this._typedRegistries = [this.controllers, this.scales, this.elements];\n }\n add(...args) {\n this._each('register', args);\n }\n remove(...args) {\n this._each('unregister', args);\n }\n addControllers(...args) {\n this._each('register', args, this.controllers);\n }\n addElements(...args) {\n this._each('register', args, this.elements);\n }\n addPlugins(...args) {\n this._each('register', args, this.plugins);\n }\n addScales(...args) {\n this._each('register', args, this.scales);\n }\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n removeControllers(...args) {\n this._each('unregister', args, this.controllers);\n }\n removeElements(...args) {\n this._each('unregister', args, this.elements);\n }\n removePlugins(...args) {\n this._each('unregister', args, this.plugins);\n }\n removeScales(...args) {\n this._each('unregister', args, this.scales);\n }\n _each(method, args, typedRegistry) {\n [...args].forEach(arg => {\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || (reg === this.plugins && arg.id)) {\n this._exec(method, reg, arg);\n } else {\n each(arg, item => {\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n callback(component['before' + camelMethod], [], component);\n registry[method](component);\n callback(component['after' + camelMethod], [], component);\n }\n _getRegistryForType(type) {\n for (let i = 0; i < this._typedRegistries.length; i++) {\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n return this.plugins;\n }\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n}\nvar registry = new Registry();\n\nclass PluginService {\n constructor() {\n this._init = [];\n }\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n }\n return result;\n }\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors) {\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [chart, args, descriptor.options];\n if (callback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n return true;\n }\n invalidate() {\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n const descriptors = this._cache = this._createDescriptors(chart);\n this._notifyStateChanges(chart);\n return descriptors;\n }\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\nfunction allPlugins(config) {\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for (let i = 0; i < keys.length; i++) {\n plugins.push(registry.getPlugin(keys[i]));\n }\n const local = config.plugins || [];\n for (let i = 0; i < local.length; i++) {\n const plugin = local[i];\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n }\n }\n return plugins;\n}\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\nfunction createDescriptors(chart, plugins, options, all) {\n const result = [];\n const context = chart.getContext();\n for (let i = 0; i < plugins.length; i++) {\n const plugin = plugins[i];\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, plugin, opts, context)\n });\n }\n return result;\n}\nfunction pluginOpts(config, plugin, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n return config.createResolver(scopes, context, [''], {scriptable: false, indexable: false, allKeys: true});\n}\n\nfunction getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\nfunction determineAxis(id, scaleOptions) {\n if (id === 'x' || id === 'y') {\n return id;\n }\n return scaleOptions.axis || axisFromPosition(scaleOptions.position) || id.charAt(0).toLowerCase();\n}\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {scales: {}};\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const firstIDs = Object.create(null);\n const scales = Object.create(null);\n Object.keys(configScales).forEach(id => {\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n firstIDs[axis] = firstIDs[axis] || id;\n scales[id] = mergeIf(Object.create(null), [{axis}, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n });\n config.data.datasets.forEach(dataset => {\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach(defaultID => {\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || firstIDs[axis] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [{axis}, configScales[id], defaultScaleOptions[defaultID]]);\n });\n });\n Object.keys(scales).forEach(key => {\n const scale = scales[key];\n mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n });\n return scales;\n}\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n initOptions(config);\n return config;\n}\nconst keyCache = new Map();\nconst keysCached = new Set();\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\nconst addIfFound = (set, obj, key) => {\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\nclass Config {\n constructor(config) {\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n get platform() {\n return this._config.platform;\n }\n get type() {\n return this._config.type;\n }\n set type(type) {\n this._config.type = type;\n }\n get data() {\n return this._config.data;\n }\n set data(data) {\n this._config.data = initData(data);\n }\n get options() {\n return this._config.options;\n }\n set options(options) {\n this._config.options = options;\n }\n get plugins() {\n return this._config.plugins;\n }\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType,\n () => [[\n `datasets.${datasetType}`,\n ''\n ]]);\n }\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`,\n () => [\n [\n `datasets.${datasetType}.transitions.${transition}`,\n `transitions.${transition}`,\n ],\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`,\n () => [[\n `datasets.${datasetType}.elements.${elementType}`,\n `datasets.${datasetType}`,\n `elements.${elementType}`,\n ''\n ]]);\n }\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`,\n () => [[\n `plugins.${id}`,\n ...plugin.additionalOptionScopes || [],\n ]]);\n }\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n getOptionScopes(mainScope, keyLists, resetCache) {\n const {options, type} = this;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n const scopes = new Set();\n keyLists.forEach(keys => {\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach(key => addIfFound(scopes, mainScope, key));\n }\n keys.forEach(key => addIfFound(scopes, options, key));\n keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach(key => addIfFound(scopes, defaults, key));\n keys.forEach(key => addIfFound(scopes, descriptors, key));\n });\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n chartOptionScopes() {\n const {options, type} = this;\n return [\n options,\n overrides[type] || {},\n defaults.datasets[type] || {},\n {type},\n defaults,\n descriptors\n ];\n }\n resolveNamedOptions(scopes, names, context, prefixes = ['']) {\n const result = {$shared: true};\n const {resolver, subPrefixes} = getResolver(this._resolverCache, scopes, prefixes);\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n for (const prop of names) {\n result[prop] = options[prop];\n }\n return result;\n }\n createResolver(scopes, context, prefixes = [''], descriptorDefaults) {\n const {resolver} = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context)\n ? _attachContext(resolver, context, undefined, descriptorDefaults)\n : resolver;\n }\n}\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\nconst hasFunction = value => isObject(value)\n && Object.getOwnPropertyNames(value).reduce((acc, key) => acc || isFunction(value[key]), false);\nfunction needContext(proxy, names) {\n const {isScriptable, isIndexable} = _descriptors(proxy);\n for (const prop of names) {\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if ((scriptable && (isFunction(value) || hasFunction(value)))\n || (indexable && isArray(value))) {\n return true;\n }\n }\n return false;\n}\n\nvar version = \"3.7.1\";\n\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || (KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x');\n}\nfunction compare2Level(l1, l2) {\n return function(a, b) {\n return a[l1] === b[l1]\n ? a[l2] - b[l2]\n : a[l1] - b[l1];\n };\n}\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n chart.notifyPlugins('afterRender');\n callback(animationOptions && animationOptions.onComplete, [context], chart);\n}\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callback(animationOptions && animationOptions.onProgress, [context], chart);\n}\nfunction getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n item = item[0];\n }\n if (item && item.canvas) {\n item = item.canvas;\n }\n return item;\n}\nconst instances = {};\nconst getChart = (key) => {\n const canvas = getCanvas(key);\n return Object.values(instances).filter((c) => c.canvas === canvas).pop();\n};\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys) {\n const intKey = +key;\n if (intKey >= start) {\n const value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\nclass Chart {\n constructor(item, userConfig) {\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n if (existingChart) {\n throw new Error(\n 'Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' +\n\t\t\t\t' must be destroyed before the canvas can be reused.'\n );\n }\n const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce(mode => this.update(mode), options.resizeDelay || 0);\n this._dataChanges = [];\n instances[this.id] = this;\n if (!context || !canvas) {\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n this._initialize();\n if (this.attached) {\n this.update();\n }\n }\n get aspectRatio() {\n const {options: {aspectRatio, maintainAspectRatio}, width, height, _aspectRatio} = this;\n if (!isNullOrUndef(aspectRatio)) {\n return aspectRatio;\n }\n if (maintainAspectRatio && _aspectRatio) {\n return _aspectRatio;\n }\n return height ? width / height : null;\n }\n get data() {\n return this.config.data;\n }\n set data(data) {\n this.config.data = data;\n }\n get options() {\n return this._options;\n }\n set options(options) {\n this.config.options = options;\n }\n _initialize() {\n this.notifyPlugins('beforeInit');\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n this.bindEvents();\n this.notifyPlugins('afterInit');\n return this;\n }\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n stop() {\n animator.stop(this);\n return this;\n }\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {width, height};\n }\n }\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const mode = this.width ? 'resize' : 'attach';\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n this.notifyPlugins('resize', {size: newSize});\n callback(options.onResize, [this, newSize], this);\n if (this.attached) {\n if (this._doResize(mode)) {\n this.render();\n }\n }\n }\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n each(scalesOptions, (axisOptions, axisID) => {\n axisOptions.id = axisID;\n });\n }\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id) => {\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n if (scaleOpts) {\n items = items.concat(\n Object.keys(scaleOpts).map((id) => {\n const scaleOptions = scaleOpts[id];\n const axis = determineAxis(id, scaleOptions);\n const isRadial = axis === 'r';\n const isHorizontal = axis === 'x';\n return {\n options: scaleOptions,\n dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n };\n })\n );\n }\n each(items, (item) => {\n const scaleOptions = item.options;\n const id = scaleOptions.id;\n const axis = determineAxis(id, scaleOptions);\n const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n updated[id] = true;\n let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n scale.init(scaleOptions, options);\n });\n each(updated, (hasUpdated, id) => {\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n each(scales, (scale) => {\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n metasets.sort((a, b) => a.index - b.index);\n if (numMeta > numData) {\n for (let i = numData; i < numMeta; ++i) {\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\n }\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n _removeUnreferencedMetasets() {\n const {_metasets: metasets, data: {datasets}} = this;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index) => {\n if (datasets.filter(x => x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n this._removeUnreferencedMetasets();\n for (i = 0, ilen = datasets.length; i < ilen; i++) {\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const type = dataset.type || this.config.type;\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\n }\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const {datasetElementType, dataElementType} = defaults.datasets[type];\n Object.assign(ControllerClass.prototype, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n this._updateMetasets();\n return newControllers;\n }\n _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex) => {\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n update(mode) {\n const config = this.config;\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const animsDisabled = this._animationsDisabled = !options.animation;\n this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n this._plugins.invalidate();\n if (this.notifyPlugins('beforeUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n const newControllers = this.buildOrUpdateControllers();\n this.notifyPlugins('beforeElementsUpdate');\n let minPadding = 0;\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n const {controller} = this.getDatasetMeta(i);\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n if (!animsDisabled) {\n each(newControllers, (controller) => {\n controller.reset();\n });\n }\n this._updateDatasets(mode);\n this.notifyPlugins('afterUpdate', {mode});\n this._layers.sort(compare2Level('z', '_idx'));\n const {_active, _lastEvent} = this;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n this.render();\n }\n _updateScales() {\n each(this.scales, (scale) => {\n layouts.removeBox(this, scale);\n });\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n this.unbindEvents();\n this.bindEvents();\n }\n }\n _updateHiddenIndices() {\n const {_hiddenIndices} = this;\n const changes = this._getUniformDataChanges() || [];\n for (const {method, start, count} of changes) {\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = (idx) => new Set(\n _dataChanges\n .filter(c => c[0] === idx)\n .map((c, i) => i + ',' + c.splice(1).join(','))\n );\n const changeSet = makeSet(0);\n for (let i = 1; i < datasetCount; i++) {\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet)\n .map(c => c.split(','))\n .map(a => ({method: a[1], start: +a[2], count: +a[3]}));\n }\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {cancelable: true}) === false) {\n return;\n }\n layouts.update(this, this.width, this.height, minPadding);\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n this._layers = [];\n each(this.boxes, (box) => {\n if (noArea && box.position === 'chartArea') {\n return;\n }\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n this._layers.forEach((item, index) => {\n item._idx = index;\n });\n this.notifyPlugins('afterLayout');\n }\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this.getDatasetMeta(i).controller.configure();\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._updateDataset(i, isFunction(mode) ? mode({datasetIndex: i}) : mode);\n }\n this.notifyPlugins('afterDatasetsUpdate', {mode});\n }\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {meta, index, mode, cancelable: true};\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n meta.controller._update(mode);\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n render() {\n if (this.notifyPlugins('beforeRender', {cancelable: true}) === false) {\n return;\n }\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({chart: this});\n }\n }\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const {width, height} = this._resizeBeforeDraw;\n this._resize(width, height);\n this._resizeBeforeDraw = null;\n }\n this.clear();\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n if (this.notifyPlugins('beforeDraw', {cancelable: true}) === false) {\n return;\n }\n const layers = this._layers;\n for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n layers[i].draw(this.chartArea);\n }\n this._drawDatasets();\n for (; i < layers.length; ++i) {\n layers[i].draw(this.chartArea);\n }\n this.notifyPlugins('afterDraw');\n }\n _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n return result;\n }\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {cancelable: true}) === false) {\n return;\n }\n const metasets = this.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n this._drawDataset(metasets[i]);\n }\n this.notifyPlugins('afterDatasetsDraw');\n }\n _drawDataset(meta) {\n const ctx = this.ctx;\n const clip = meta._clip;\n const useClip = !clip.disabled;\n const area = this.chartArea;\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n if (useClip) {\n clipArea(ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? this.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n });\n }\n meta.controller.draw();\n if (useClip) {\n unclipArea(ctx);\n }\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n return [];\n }\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n return meta;\n }\n getContext() {\n return this.$context || (this.$context = createContext(null, {chart: this, type: 'chart'}));\n }\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n const meta = this.getDatasetMeta(datasetIndex);\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const anims = meta.controller._resolveAnimations(undefined, mode);\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n anims.update(meta, {visible});\n this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n _stop() {\n let i, ilen;\n this.stop();\n animator.remove(this);\n for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._destroyDatasetMeta(i);\n }\n }\n destroy() {\n this.notifyPlugins('beforeDestroy');\n const {canvas, ctx} = this;\n this._stop();\n this.config.clearCache();\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n this.notifyPlugins('destroy');\n delete instances[this.id];\n this.notifyPlugins('afterDestroy');\n }\n toBase64Image(...args) {\n return this.canvas.toDataURL(...args);\n }\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const listener = (e, x, y) => {\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n each(this.options.events, (type) => _add(type, listener));\n }\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener) => {\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n const listener = (width, height) => {\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n let detached;\n const attached = () => {\n _remove('attach', attached);\n this.attached = true;\n this.resize();\n _add('resize', listener);\n _add('detach', detached);\n };\n detached = () => {\n this.attached = false;\n _remove('resize', listener);\n this._stop();\n this._resize(0, 0);\n _add('attach', attached);\n };\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n unbindEvents() {\n each(this._listeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n each(this._responsiveListeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n if (changed) {\n this._active = active;\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: _isPointInArea(e, this.chartArea, this._minPadding)\n };\n const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type);\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n const changed = this._handleEvent(e, replay, args.inChartArea);\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n if (changed || args.changed) {\n this.render();\n }\n return this;\n }\n _handleEvent(e, replay, inChartArea) {\n const {_active: lastActive = [], options} = this;\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n if (inChartArea) {\n this._lastEvent = null;\n callback(options.onHover, [e, active, this], this);\n if (isClick) {\n callback(options.onClick, [e, active, this], this);\n }\n }\n const changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\n }\n this._lastEvent = lastEvent;\n return changed;\n }\n _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n}\nconst invalidatePlugins = () => each(Chart.instances, (chart) => chart._plugins.invalidate());\nconst enumerable = true;\nObject.defineProperties(Chart, {\n defaults: {\n enumerable,\n value: defaults\n },\n instances: {\n enumerable,\n value: instances\n },\n overrides: {\n enumerable,\n value: overrides\n },\n registry: {\n enumerable,\n value: registry\n },\n version: {\n enumerable,\n value: version\n },\n getChart: {\n enumerable,\n value: getChart\n },\n register: {\n enumerable,\n value: (...items) => {\n registry.add(...items);\n invalidatePlugins();\n }\n },\n unregister: {\n enumerable,\n value: (...items) => {\n registry.remove(...items);\n invalidatePlugins();\n }\n }\n});\n\nfunction clipArc(ctx, element, endAngle) {\n const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element;\n let angleMargin = pixelMargin / outerRadius;\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n ctx.closePath();\n ctx.clip();\n}\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\nfunction parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) {\n const o = toRadiusCorners(arc.options.borderRadius);\n const halfThickness = (outerRadius - innerRadius) / 2;\n const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n const computeOuterLimit = (val) => {\n const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit),\n };\n}\nfunction rThetaToXY(r, theta, x, y) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta),\n };\n}\nfunction pathArc(ctx, element, offset, spacing, end) {\n const {x, y, startAngle: start, pixelMargin, innerRadius: innerR} = element;\n const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n let spacingOffset = 0;\n const alpha = end - start;\n if (spacing) {\n const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n const adjustedAngle = avNogSpacingRadius !== 0 ? (alpha * avNogSpacingRadius) / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset + spacingOffset;\n const endAngle = end - angleOffset - spacingOffset;\n const {outerStart, outerEnd, innerStart, innerEnd} = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle);\n const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerEndAdjustedAngle);\n if (outerEnd > 0) {\n const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n }\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n if (innerEnd > 0) {\n const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), startAngle + (innerStart / innerRadius), true);\n if (innerStart > 0) {\n const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n if (outerStart > 0) {\n const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n ctx.closePath();\n}\nfunction drawArc(ctx, element, offset, spacing) {\n const {fullCircles, startAngle, circumference} = element;\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, startAngle + TAU);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + circumference % TAU;\n if (circumference % TAU === 0) {\n endAngle += TAU;\n }\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle);\n ctx.fill();\n return endAngle;\n}\nfunction drawFullCircleBorders(ctx, element, inner) {\n const {x, y, startAngle, pixelMargin, fullCircles} = element;\n const outerRadius = Math.max(element.outerRadius - pixelMargin, 0);\n const innerRadius = element.innerRadius + pixelMargin;\n let i;\n if (inner) {\n clipArc(ctx, element, startAngle + TAU);\n }\n ctx.beginPath();\n ctx.arc(x, y, innerRadius, startAngle + TAU, startAngle, true);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle, startAngle + TAU);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n}\nfunction drawBorder(ctx, element, offset, spacing, endAngle) {\n const {options} = element;\n const {borderWidth, borderJoinStyle} = options;\n const inner = options.borderAlign === 'inner';\n if (!borderWidth) {\n return;\n }\n if (inner) {\n ctx.lineWidth = borderWidth * 2;\n ctx.lineJoin = borderJoinStyle || 'round';\n } else {\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = borderJoinStyle || 'bevel';\n }\n if (element.fullCircles) {\n drawFullCircleBorders(ctx, element, inner);\n }\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n pathArc(ctx, element, offset, spacing, endAngle);\n ctx.stroke();\n}\nclass ArcElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.circumference = undefined;\n this.startAngle = undefined;\n this.endAngle = undefined;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.pixelMargin = 0;\n this.fullCircles = 0;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(chartX, chartY, useFinalPosition) {\n const point = this.getProps(['x', 'y'], useFinalPosition);\n const {angle, distance} = getAngleFromPoint(point, {x: chartX, y: chartY});\n const {startAngle, endAngle, innerRadius, outerRadius, circumference} = this.getProps([\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference'\n ], useFinalPosition);\n const rAdjust = this.options.spacing / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n return (betweenAngles && withinRadius);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y, startAngle, endAngle, innerRadius, outerRadius} = this.getProps([\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference',\n ], useFinalPosition);\n const {offset, spacing} = this.options;\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n tooltipPosition(useFinalPosition) {\n return this.getCenterPoint(useFinalPosition);\n }\n draw(ctx) {\n const {options, circumference} = this;\n const offset = (options.offset || 0) / 2;\n const spacing = (options.spacing || 0) / 2;\n this.pixelMargin = (options.borderAlign === 'inner') ? 0.33 : 0;\n this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\n }\n ctx.save();\n let radiusOffset = 0;\n if (offset) {\n radiusOffset = offset / 2;\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * radiusOffset, Math.sin(halfAngle) * radiusOffset);\n if (this.circumference >= PI) {\n radiusOffset = offset;\n }\n }\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n const endAngle = drawArc(ctx, this, radiusOffset, spacing);\n drawBorder(ctx, this, radiusOffset, spacing, endAngle);\n ctx.restore();\n }\n}\nArcElement.id = 'arc';\nArcElement.defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n};\nArcElement.defaultRoutes = {\n backgroundColor: 'backgroundColor'\n};\n\nfunction setStyle(ctx, options, style = options) {\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\nfunction getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n return lineTo;\n}\nfunction pathVars(points, segment, params = {}) {\n const count = points.length;\n const {start: paramsStart = 0, end: paramsEnd = count - 1} = params;\n const {start: segmentStart, end: segmentEnd} = segment;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\nfunction pathSegment(ctx, line, segment, params) {\n const {points, options} = line;\n const {count, start, loop, ilen} = pathVars(points, segment, params);\n const lineMethod = getLineMethod(options);\n let {move = true, reverse} = params || {};\n let i, point, prev;\n for (i = 0; i <= ilen; ++i) {\n point = points[(start + (reverse ? ilen - i : i)) % count];\n if (point.skip) {\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n prev = point;\n }\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n return !!loop;\n}\nfunction fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n const {count, start, ilen} = pathVars(points, segment, params);\n const {move = true, reverse} = params || {};\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n const pointIndex = (index) => (start + (reverse ? ilen - index : index)) % count;\n const drawX = () => {\n if (minY !== maxY) {\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n ctx.lineTo(avgX, lastY);\n }\n };\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n for (i = 0; i <= ilen; ++i) {\n point = points[pointIndex(i)];\n if (point.skip) {\n continue;\n }\n const x = point.x;\n const y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n ctx.lineTo(x, y);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n lastY = y;\n }\n drawX();\n}\nfunction _getSegmentMethod(line) {\n const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\nfunction _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n return _pointInLine;\n}\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n if (!path) {\n path = line._path = new Path2D();\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\nfunction strokePathDirect(ctx, line, start, count) {\n const {segments, options} = line;\n const segmentMethod = _getSegmentMethod(line);\n for (const segment of segments) {\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {start, end: start + count - 1})) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n}\nconst usePath2D = typeof Path2D === 'function';\nfunction draw(ctx, line, start, count) {\n if (usePath2D && !line.options.segment) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\nclass LineElement extends Element {\n constructor(cfg) {\n super();\n this.animated = true;\n this.options = undefined;\n this._chart = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n this._datasetIndex = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n updateControlPoints(chartArea, indexAxis) {\n const options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n const loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n this._pointsUpdated = true;\n }\n }\n set points(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n get points() {\n return this._points;\n }\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n interpolate(point, property) {\n const options = this.options;\n const value = point[property];\n const points = this.points;\n const segments = _boundSegments(this, {property, start: value, end: value});\n if (!segments.length) {\n return;\n }\n const result = [];\n const _interpolate = _getInterpolationMethod(options);\n let i, ilen;\n for (i = 0, ilen = segments.length; i < ilen; ++i) {\n const {start, end} = segments[i];\n const p1 = points[start];\n const p2 = points[end];\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n return result.length === 1 ? result[0] : result;\n }\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n return segmentMethod(ctx, this, segment, params);\n }\n path(ctx, start, count) {\n const segments = this.segments;\n const segmentMethod = _getSegmentMethod(this);\n let loop = this._loop;\n start = start || 0;\n count = count || (this.points.length - start);\n for (const segment of segments) {\n loop &= segmentMethod(ctx, this, segment, {start, end: start + count - 1});\n }\n return !!loop;\n }\n draw(ctx, chartArea, start, count) {\n const options = this.options || {};\n const points = this.points || [];\n if (points.length && options.borderWidth) {\n ctx.save();\n draw(ctx, this, start, count);\n ctx.restore();\n }\n if (this.animated) {\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n}\nLineElement.id = 'line';\nLineElement.defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0,\n};\nLineElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\nLineElement.descriptors = {\n _scriptable: true,\n _indexable: (name) => name !== 'borderDash' && name !== 'fill',\n};\n\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n const options = el.options;\n const {[axis]: value} = el.getProps([axis], useFinalPosition);\n return (Math.abs(pos - value) < options.radius + options.hitRadius);\n}\nclass PointElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.parsed = undefined;\n this.skip = undefined;\n this.stop = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n const options = this.options;\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return ((Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2)) < Math.pow(options.hitRadius + options.radius, 2));\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange$1(this, mouseX, 'x', useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange$1(this, mouseY, 'y', useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n size(options) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n draw(ctx, area) {\n const options = this.options;\n if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\n }\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, this.x, this.y);\n }\n getRange() {\n const options = this.options || {};\n return options.radius + options.hitRadius;\n }\n}\nPointElement.id = 'point';\nPointElement.defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n};\nPointElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nfunction getBarBounds(bar, useFinalPosition) {\n const {x, y, base, width, height} = bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition);\n let left, right, top, bottom, half;\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n return {left, top, right, bottom};\n}\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const o = toTRBL(value);\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\nfunction parseBorderRadius(bar, maxW, maxH) {\n const {enableBorderRadius} = bar.getProps(['enableBorderRadius']);\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n const enableBorder = enableBorderRadius || isObject(value);\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)),\n }\n }\n };\n}\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n return bounds\n\t\t&& (skipX || _isBetween(x, bounds.left, bounds.right))\n\t\t&& (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\nfunction addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\nfunction inflateRect(rect, amount, refRect = {}) {\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\nclass BarElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n draw(ctx) {\n const {inflateAmount, options: {borderColor, backgroundColor}} = this;\n const {inner, outer} = boundingRects(this);\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n ctx.save();\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y, base, horizontal} = this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition);\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\nBarElement.id = 'bar';\nBarElement.defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n};\nBarElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nvar elements = /*#__PURE__*/Object.freeze({\n__proto__: null,\nArcElement: ArcElement,\nLineElement: LineElement,\nPointElement: PointElement,\nBarElement: BarElement\n});\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n const samples = options.samples || availableWidth;\n if (samples >= count) {\n return data.slice(start, start + count);\n }\n const decimated = [];\n const bucketWidth = (count - 2) / (samples - 2);\n let sampledIndex = 0;\n const endIndex = start + count - 1;\n let a = start;\n let i, maxAreaPoint, maxArea, area, nextA;\n decimated[sampledIndex++] = data[a];\n for (i = 0; i < samples - 2; i++) {\n let avgX = 0;\n let avgY = 0;\n let j;\n const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n const avgRangeLength = avgRangeEnd - avgRangeStart;\n for (j = avgRangeStart; j < avgRangeEnd; j++) {\n avgX += data[j].x;\n avgY += data[j].y;\n }\n avgX /= avgRangeLength;\n avgY /= avgRangeLength;\n const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n const {x: pointAx, y: pointAy} = data[a];\n maxArea = area = -1;\n for (j = rangeOffs; j < rangeTo; j++) {\n area = 0.5 * Math.abs(\n (pointAx - avgX) * (data[j].y - pointAy) -\n (pointAx - data[j].x) * (avgY - pointAy)\n );\n if (area > maxArea) {\n maxArea = area;\n maxAreaPoint = data[j];\n nextA = j;\n }\n }\n decimated[sampledIndex++] = maxAreaPoint;\n a = nextA;\n }\n decimated[sampledIndex++] = data[endIndex];\n return decimated;\n}\nfunction minMaxDecimation(data, start, count, availableWidth) {\n let avgX = 0;\n let countX = 0;\n let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n const decimated = [];\n const endIndex = start + count - 1;\n const xMin = data[start].x;\n const xMax = data[endIndex].x;\n const dx = xMax - xMin;\n for (i = start; i < start + count; ++i) {\n point = data[i];\n x = (point.x - xMin) / dx * availableWidth;\n y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n minIndex = i;\n } else if (y > maxY) {\n maxY = y;\n maxIndex = i;\n }\n avgX = (countX * avgX + point.x) / ++countX;\n } else {\n const lastIndex = i - 1;\n if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n const intermediateIndex1 = Math.min(minIndex, maxIndex);\n const intermediateIndex2 = Math.max(minIndex, maxIndex);\n if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex1],\n x: avgX,\n });\n }\n if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex2],\n x: avgX\n });\n }\n }\n if (i > 0 && lastIndex !== startIndex) {\n decimated.push(data[lastIndex]);\n }\n decimated.push(point);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n minIndex = maxIndex = startIndex = i;\n }\n }\n return decimated;\n}\nfunction cleanDecimatedDataset(dataset) {\n if (dataset._decimated) {\n const data = dataset._data;\n delete dataset._decimated;\n delete dataset._data;\n Object.defineProperty(dataset, 'data', {value: data});\n }\n}\nfunction cleanDecimatedData(chart) {\n chart.data.datasets.forEach((dataset) => {\n cleanDecimatedDataset(dataset);\n });\n}\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n const pointCount = points.length;\n let start = 0;\n let count;\n const {iScale} = meta;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n return {start, count};\n}\nvar plugin_decimation = {\n id: 'decimation',\n defaults: {\n algorithm: 'min-max',\n enabled: false,\n },\n beforeElementsUpdate: (chart, args, options) => {\n if (!options.enabled) {\n cleanDecimatedData(chart);\n return;\n }\n const availableWidth = chart.width;\n chart.data.datasets.forEach((dataset, datasetIndex) => {\n const {_data, indexAxis} = dataset;\n const meta = chart.getDatasetMeta(datasetIndex);\n const data = _data || dataset.data;\n if (resolve([indexAxis, chart.options.indexAxis]) === 'y') {\n return;\n }\n if (meta.type !== 'line') {\n return;\n }\n const xAxis = chart.scales[meta.xAxisID];\n if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n return;\n }\n if (chart.options.parsing) {\n return;\n }\n let {start, count} = getStartAndCountOfVisiblePointsSimplified(meta, data);\n const threshold = options.threshold || 4 * availableWidth;\n if (count <= threshold) {\n cleanDecimatedDataset(dataset);\n return;\n }\n if (isNullOrUndef(_data)) {\n dataset._data = data;\n delete dataset.data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this._decimated;\n },\n set: function(d) {\n this._data = d;\n }\n });\n }\n let decimated;\n switch (options.algorithm) {\n case 'lttb':\n decimated = lttbDecimation(data, start, count, availableWidth, options);\n break;\n case 'min-max':\n decimated = minMaxDecimation(data, start, count, availableWidth);\n break;\n default:\n throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n }\n dataset._decimated = decimated;\n });\n },\n destroy(chart) {\n cleanDecimatedData(chart);\n }\n};\n\nfunction getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\nfunction parseFillOption(line) {\n const options = line.options;\n const fillOption = options.fill;\n let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n if (fill === false || fill === null) {\n return false;\n }\n if (fill === true) {\n return 'origin';\n }\n return fill;\n}\nfunction decodeFill(line, index, count) {\n const fill = parseFillOption(line);\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n let target = parseFloat(fill);\n if (isNumberFinite(target) && Math.floor(target) === target) {\n if (fill[0] === '-' || fill[0] === '+') {\n target = index + target;\n }\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n return target;\n }\n return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\nfunction computeLinearBoundary(source) {\n const {scale = {}, fill} = source;\n let target = null;\n let horizontal;\n if (fill === 'start') {\n target = scale.bottom;\n } else if (fill === 'end') {\n target = scale.top;\n } else if (isObject(fill)) {\n target = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n target = scale.getBasePixel();\n }\n if (isNumberFinite(target)) {\n horizontal = scale.isHorizontal();\n return {\n x: horizontal ? target : null,\n y: horizontal ? null : target\n };\n }\n return null;\n}\nclass simpleArc {\n constructor(opts) {\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\n pathSegment(ctx, bounds, opts) {\n const {x, y, radius} = this;\n bounds = bounds || {start: 0, end: TAU};\n ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n return !opts.bounds;\n }\n interpolate(point) {\n const {x, y, radius} = this;\n const angle = point.angle;\n return {\n x: x + Math.cos(angle) * radius,\n y: y + Math.sin(angle) * radius,\n angle\n };\n }\n}\nfunction computeCircularBoundary(source) {\n const {scale, fill} = source;\n const options = scale.options;\n const length = scale.getLabels().length;\n const target = [];\n const start = options.reverse ? scale.max : scale.min;\n const end = options.reverse ? scale.min : scale.max;\n let i, center, value;\n if (fill === 'start') {\n value = start;\n } else if (fill === 'end') {\n value = end;\n } else if (isObject(fill)) {\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n if (options.grid.circular) {\n center = scale.getPointPositionForValue(0, start);\n return new simpleArc({\n x: center.x,\n y: center.y,\n radius: scale.getDistanceFromCenterForValue(value)\n });\n }\n for (i = 0; i < length; ++i) {\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\nfunction findSegmentEnd(start, end, points) {\n for (;end > start; end--) {\n const point = points[end];\n if (!isNaN(point.x) && !isNaN(point.y)) {\n break;\n }\n }\n return end;\n}\nfunction pointsFromSegments(boundary, line) {\n const {x = null, y = null} = boundary || {};\n const linePoints = line.points;\n const points = [];\n line.segments.forEach(({start, end}) => {\n end = findSegmentEnd(start, end, linePoints);\n const first = linePoints[start];\n const last = linePoints[end];\n if (y !== null) {\n points.push({x: first.x, y});\n points.push({x: last.x, y});\n } else if (x !== null) {\n points.push({x, y: first.y});\n points.push({x, y: last.y});\n }\n });\n return points;\n}\nfunction buildStackLine(source) {\n const {scale, index, line} = source;\n const points = [];\n const segments = line.segments;\n const sourcePoints = line.points;\n const linesBelow = getLinesBelow(scale, index);\n linesBelow.push(createBoundaryLine({x: null, y: scale.bottom}, line));\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n for (let j = segment.start; j <= segment.end; j++) {\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n return new LineElement({points, options: {}});\n}\nfunction getLinesBelow(scale, index) {\n const below = [];\n const metas = scale.getMatchingVisibleMetas('line');\n for (let i = 0; i < metas.length; i++) {\n const meta = metas[i];\n if (meta.index === index) {\n break;\n }\n if (!meta.hidden) {\n below.unshift(meta.dataset);\n }\n }\n return below;\n}\nfunction addPointsBelow(points, sourcePoint, linesBelow) {\n const postponed = [];\n for (let j = 0; j < linesBelow.length; j++) {\n const line = linesBelow[j];\n const {first, last, point} = findPoint(line, sourcePoint, 'x');\n if (!point || (first && last)) {\n continue;\n }\n if (first) {\n postponed.unshift(point);\n } else {\n points.push(point);\n if (!last) {\n break;\n }\n }\n }\n points.push(...postponed);\n}\nfunction findPoint(line, sourcePoint, property) {\n const point = line.interpolate(sourcePoint, property);\n if (!point) {\n return {};\n }\n const pointValue = point[property];\n const segments = line.segments;\n const linePoints = line.points;\n let first = false;\n let last = false;\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const firstValue = linePoints[segment.start][property];\n const lastValue = linePoints[segment.end][property];\n if (_isBetween(pointValue, firstValue, lastValue)) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n return {first, last, point};\n}\nfunction getTarget(source) {\n const {chart, fill, line} = source;\n if (isNumberFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n if (fill === 'stack') {\n return buildStackLine(source);\n }\n if (fill === 'shape') {\n return true;\n }\n const boundary = computeBoundary(source);\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n return createBoundaryLine(boundary, line);\n}\nfunction createBoundaryLine(boundary, line) {\n let points = [];\n let _loop = false;\n if (isArray(boundary)) {\n _loop = true;\n points = boundary;\n } else {\n points = pointsFromSegments(boundary, line);\n }\n return points.length ? new LineElement({\n points,\n options: {tension: 0},\n _loop,\n _fullLoop: _loop\n }) : null;\n}\nfunction resolveTarget(sources, index, propagate) {\n const source = sources[index];\n let fill = source.fill;\n const visited = [index];\n let target;\n if (!propagate) {\n return fill;\n }\n while (fill !== false && visited.indexOf(fill) === -1) {\n if (!isNumberFinite(fill)) {\n return fill;\n }\n target = sources[fill];\n if (!target) {\n return false;\n }\n if (target.visible) {\n return fill;\n }\n visited.push(fill);\n fill = target.fill;\n }\n return false;\n}\nfunction _clip(ctx, target, clipY) {\n const {segments, points} = target;\n let first = true;\n let lineLoop = false;\n ctx.beginPath();\n for (const segment of segments) {\n const {start, end} = segment;\n const firstPoint = points[start];\n const lastPoint = points[findSegmentEnd(start, end, points)];\n if (first) {\n ctx.moveTo(firstPoint.x, firstPoint.y);\n first = false;\n } else {\n ctx.lineTo(firstPoint.x, clipY);\n ctx.lineTo(firstPoint.x, firstPoint.y);\n }\n lineLoop = !!target.pathSegment(ctx, segment, {move: lineLoop});\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(lastPoint.x, clipY);\n }\n }\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\nfunction getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n let start = first[property];\n let end = last[property];\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n return {property, start, end};\n}\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n return a ? a[prop] : b ? b[prop] : 0;\n}\nfunction _segments(line, target, property) {\n const segments = line.segments;\n const points = line.points;\n const tpoints = target.points;\n const parts = [];\n for (const segment of segments) {\n let {start, end} = segment;\n end = findSegmentEnd(start, end, points);\n const bounds = getBounds(property, points[start], points[end], segment.loop);\n if (!target.segments) {\n parts.push({\n source: segment,\n target: bounds,\n start: points[start],\n end: points[end]\n });\n continue;\n }\n const targetSegments = _boundSegments(target, bounds);\n for (const tgt of targetSegments) {\n const subBounds = getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n const fillSources = _boundSegment(segment, points, subBounds);\n for (const fillSource of fillSources) {\n parts.push({\n source: fillSource,\n target: tgt,\n start: {\n [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n },\n end: {\n [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n }\n });\n }\n }\n }\n return parts;\n}\nfunction clipBounds(ctx, scale, bounds) {\n const {top, bottom} = scale.chart.chartArea;\n const {property, start, end} = bounds || {};\n if (property === 'x') {\n ctx.beginPath();\n ctx.rect(start, top, end - start, bottom - top);\n ctx.clip();\n }\n}\nfunction interpolatedLineTo(ctx, target, point, property) {\n const interpolatedPoint = target.interpolate(point, property);\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\nfunction _fill(ctx, cfg) {\n const {line, target, property, color, scale} = cfg;\n const segments = _segments(line, target, property);\n for (const {source: src, target: tgt, start, end} of segments) {\n const {style: {backgroundColor = color} = {}} = src;\n const notShape = target !== true;\n ctx.save();\n ctx.fillStyle = backgroundColor;\n clipBounds(ctx, scale, notShape && getBounds(property, start, end));\n ctx.beginPath();\n const lineLoop = !!line.pathSegment(ctx, src);\n let loop;\n if (notShape) {\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n const targetLoop = !!target.pathSegment(ctx, tgt, {move: lineLoop, reverse: true});\n loop = lineLoop && targetLoop;\n if (!loop) {\n interpolatedLineTo(ctx, target, start, property);\n }\n }\n ctx.closePath();\n ctx.fill(loop ? 'evenodd' : 'nonzero');\n ctx.restore();\n }\n}\nfunction doFill(ctx, cfg) {\n const {line, target, above, below, area, scale} = cfg;\n const property = line._loop ? 'angle' : cfg.axis;\n ctx.save();\n if (property === 'x' && below !== above) {\n _clip(ctx, target, area.top);\n _fill(ctx, {line, target, color: above, scale, property});\n ctx.restore();\n ctx.save();\n _clip(ctx, target, area.bottom);\n }\n _fill(ctx, {line, target, color: below, scale, property});\n ctx.restore();\n}\nfunction drawfill(ctx, source, area) {\n const target = getTarget(source);\n const {line, scale, axis} = source;\n const lineOpts = line.options;\n const fillOption = lineOpts.fill;\n const color = lineOpts.backgroundColor;\n const {above = color, below = color} = fillOption || {};\n if (target && line.points.length) {\n clipArea(ctx, area);\n doFill(ctx, {line, target, above, below, area, scale, axis});\n unclipArea(ctx);\n }\n}\nvar plugin_filler = {\n id: 'filler',\n afterDatasetsUpdate(chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let meta, i, line, source;\n for (i = 0; i < count; ++i) {\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: decodeFill(line, i, count),\n chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line,\n };\n }\n meta.$filler = source;\n sources.push(source);\n }\n for (i = 0; i < count; ++i) {\n source = sources[i];\n if (!source || source.fill === false) {\n continue;\n }\n source.fill = resolveTarget(sources, i, options.propagate);\n }\n },\n beforeDraw(chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (!source) {\n continue;\n }\n source.line.updateControlPoints(area, source.axis);\n if (draw) {\n drawfill(chart.ctx, source, area);\n }\n }\n },\n beforeDatasetsDraw(chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n const metasets = chart.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (source) {\n drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n beforeDatasetDraw(chart, args, options) {\n const source = args.meta.$filler;\n if (!source || source.fill === false || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n drawfill(chart.ctx, source, chart.chartArea);\n },\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\n }\n};\n\nconst getBoxSize = (labelOpts, fontSize) => {\n let {boxHeight = fontSize, boxWidth = fontSize} = labelOpts;\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = Math.min(boxWidth, fontSize);\n }\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\nclass Legend extends Element {\n constructor(config) {\n super();\n this._added = false;\n this.legendHitBoxes = [];\n this._hoveredItem = null;\n this.doughnutMode = false;\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = callback(labelOpts.generateLabels, [this.chart], this) || [];\n if (labelOpts.filter) {\n legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data));\n }\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n }\n if (this.options.reverse) {\n legendItems.reverse();\n }\n this.legendItems = legendItems;\n }\n fit() {\n const {options, ctx} = this;\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const {boxWidth, itemHeight} = getBoxSize(labelOpts, fontSize);\n let width, height;\n ctx.font = labelFont.string;\n if (this.isHorizontal()) {\n width = this.maxWidth;\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight;\n width = this._fitCols(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n }\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxWidth, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const lineWidths = this.lineWidths = [0];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n hitboxes[i] = {left: 0, top, row, width: itemWidth, height: itemHeight};\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n return totalHeight;\n }\n _fitCols(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxHeight, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n let left = 0;\n let col = 0;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight};\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n totalWidth += currentColWidth;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n return totalWidth;\n }\n adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const {legendHitBoxes: hitboxes, options: {align, labels: {padding}, rtl}} = this;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes) {\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox of hitboxes) {\n if (hitbox.col !== col) {\n col = hitbox.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox.top = top;\n hitbox.left += this.left + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n top += hitbox.height + padding;\n }\n }\n }\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n this._draw();\n unclipArea(ctx);\n }\n }\n _draw() {\n const {options: opts, columnSizes, lineWidths, ctx} = this;\n const {align, labels: labelOpts} = opts;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const {color: fontColor, padding} = labelOpts;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n this.drawTitle();\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n const {boxWidth, boxHeight, itemHeight} = getBoxSize(labelOpts, fontSize);\n const drawLegendBox = function(x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n ctx.save();\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n if (labelOpts.usePointStyle) {\n const drawOptions = {\n radius: boxWidth * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n ctx.beginPath();\n if (Object.values(borderRadius).some(v => v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n ctx.restore();\n };\n const fillText = function(x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + (itemHeight / 2), labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n const isHorizontal = this.isHorizontal();\n const titleHeight = this._computeTitleHeight();\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n overrideTextDirection(this.ctx, opts.textDirection);\n const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i) => {\n ctx.strokeStyle = legendItem.fontColor || fontColor;\n ctx.fillStyle = legendItem.fontColor || fontColor;\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n rtlHelper.setWidth(this.width);\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n const realX = rtlHelper.x(x);\n drawLegendBox(realX, y, legendItem);\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n fillText(rtlHelper.x(x), y, legendItem);\n if (isHorizontal) {\n cursor.x += width + padding;\n } else {\n cursor.y += lineHeight;\n }\n });\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n if (!titleOpts.display) {\n return;\n }\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n let left = this.left;\n let maxWidth = this.width;\n if (this.isHorizontal()) {\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n const x = _alignStartEnd(position, left, left + maxWidth);\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n _getLegendItemAt(x, y) {\n let i, hitBox, lh;\n if (_isBetween(x, this.left, this.right)\n && _isBetween(y, this.top, this.bottom)) {\n lh = this.legendHitBoxes;\n for (i = 0; i < lh.length; ++i) {\n hitBox = lh[i];\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width)\n && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n return this.legendItems[i];\n }\n }\n }\n return null;\n }\n handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n if (e.type === 'mousemove') {\n const previous = this._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n callback(opts.onLeave, [e, previous, this], this);\n }\n this._hoveredItem = hoveredItem;\n if (hoveredItem && !sameItem) {\n callback(opts.onHover, [e, hoveredItem, this], this);\n }\n } else if (hoveredItem) {\n callback(opts.onClick, [e, hoveredItem, this], this);\n }\n }\n}\nfunction isListened(type, opts) {\n if (type === 'mousemove' && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\n}\nvar plugin_legend = {\n id: 'legend',\n _element: Legend,\n start(chart, _args, options) {\n const legend = chart.legend = new Legend({ctx: chart.ctx, options, chart});\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n stop(chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n beforeUpdate(chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n afterUpdate(chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n afterEvent(chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n onClick(e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n onHover: null,\n onLeave: null,\n labels: {\n color: (ctx) => ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n generateLabels(chart) {\n const datasets = chart.data.datasets;\n const {labels: {usePointStyle, pointStyle, textAlign, color}} = chart.legend.options;\n return chart._getSortedDatasetMetas().map((meta) => {\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const borderWidth = toPadding(style.borderWidth);\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: 0,\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n title: {\n color: (ctx) => ctx.chart.options.color,\n display: false,\n position: 'center',\n text: '',\n }\n },\n descriptors: {\n _scriptable: (name) => !name.startsWith('on'),\n labels: {\n _scriptable: (name) => !['generateLabels', 'filter', 'sort'].includes(name),\n }\n },\n};\n\nclass Title extends Element {\n constructor(config) {\n super();\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this._padding = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight) {\n const opts = this.options;\n this.left = 0;\n this.top = 0;\n if (!opts.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\n }\n this.width = this.right = maxWidth;\n this.height = this.bottom = maxHeight;\n const lineCount = isArray(opts.text) ? opts.text.length : 1;\n this._padding = toPadding(opts.padding);\n const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n if (this.isHorizontal()) {\n this.height = textSize;\n } else {\n this.width = textSize;\n }\n }\n isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n _drawArgs(offset) {\n const {top, left, bottom, right, options} = this;\n const align = options.align;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n maxWidth = bottom - top;\n }\n return {titleX, titleY, maxWidth, rotation};\n }\n draw() {\n const ctx = this.ctx;\n const opts = this.options;\n if (!opts.display) {\n return;\n }\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + this._padding.top;\n const {titleX, titleY, maxWidth, rotation} = this._drawArgs(offset);\n renderText(ctx, opts.text, 0, 0, fontOpts, {\n color: opts.color,\n maxWidth,\n rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n}\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart\n });\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\nvar plugin_title = {\n id: 'title',\n _element: Title,\n start(chart, _args, options) {\n createTitle(chart, options);\n },\n stop(chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n beforeUpdate(chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold',\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst map = new WeakMap();\nvar plugin_subtitle = {\n id: 'subtitle',\n start(chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n stop(chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n beforeUpdate(chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal',\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst positioners = {\n average(items) {\n if (!items.length) {\n return false;\n }\n let i, len;\n let x = 0;\n let y = 0;\n let count = 0;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n x += pos.x;\n y += pos.y;\n ++count;\n }\n }\n return {\n x: x / count,\n y: y / count\n };\n },\n nearest(items, eventPosition) {\n if (!items.length) {\n return false;\n }\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n return {\n x,\n y\n };\n }\n};\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n return base;\n}\nfunction splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\nfunction createTooltipItem(chart, item) {\n const {element, datasetIndex, index} = item;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const {label, value} = controller.getLabelAndValue(index);\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\nfunction getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const {body, footer, title} = tooltip;\n const {boxWidth, boxHeight} = options;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight\n\t\t\t+ (titleLineCount - 1) * options.titleSpacing\n\t\t\t+ options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight\n\t\t\t+ (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight\n\t\t\t+ (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop\n\t\t\t+ footerLineCount * footerFont.lineHeight\n\t\t\t+ (footerLineCount - 1) * options.footerSpacing;\n }\n let widthPadding = 0;\n const maxLineWidth = function(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n ctx.save();\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n widthPadding = options.displayColors ? (boxWidth + 2 + options.boxPadding) : 0;\n each(body, (bodyItem) => {\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n widthPadding = 0;\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n ctx.restore();\n width += padding.width;\n return {width, height};\n}\nfunction determineYAlign(chart, size) {\n const {y, height} = size;\n if (y < height / 2) {\n return 'top';\n } else if (y > (chart.height - height / 2)) {\n return 'bottom';\n }\n return 'center';\n}\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const {x, width} = size;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\nfunction determineXAlign(chart, options, size, yAlign) {\n const {x, width} = size;\n const {width: chartWidth, chartArea: {left, right}} = chart;\n let xAlign = 'center';\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n return xAlign;\n}\nfunction determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\nfunction alignX(size, xAlign) {\n let {x, width} = size;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= (width / 2);\n }\n return x;\n}\nfunction alignY(size, yAlign, paddingAndSize) {\n let {y, height} = size;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= (height / 2);\n }\n return y;\n}\nfunction getBackgroundPoint(options, size, alignment, chart) {\n const {caretSize, caretPadding, cornerRadius} = options;\n const {xAlign, yAlign} = alignment;\n const paddingAndSize = caretSize + caretPadding;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n return align === 'center'\n ? tooltip.x + tooltip.width / 2\n : align === 'right'\n ? tooltip.x + tooltip.width - padding.right\n : tooltip.x + padding.left;\n}\nfunction getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\nclass Tooltip extends Element {\n constructor(config) {\n super();\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart || config._chart;\n this._chart = this.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n if (cached) {\n return cached;\n }\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n return animations;\n }\n getContext() {\n return this.$context ||\n\t\t\t(this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n getTitle(context, options) {\n const {callbacks} = options;\n const beforeTitle = callbacks.beforeTitle.apply(this, [context]);\n const title = callbacks.title.apply(this, [context]);\n const afterTitle = callbacks.afterTitle.apply(this, [context]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n return lines;\n }\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.beforeBody.apply(this, [tooltipItems]));\n }\n getBody(tooltipItems, options) {\n const {callbacks} = options;\n const bodyItems = [];\n each(tooltipItems, (context) => {\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(scoped.beforeLabel.call(this, context)));\n pushOrConcat(bodyItem.lines, scoped.label.call(this, context));\n pushOrConcat(bodyItem.after, splitNewlines(scoped.afterLabel.call(this, context)));\n bodyItems.push(bodyItem);\n });\n return bodyItems;\n }\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.afterBody.apply(this, [tooltipItems]));\n }\n getFooter(tooltipItems, options) {\n const {callbacks} = options;\n const beforeFooter = callbacks.beforeFooter.apply(this, [tooltipItems]);\n const footer = callbacks.footer.apply(this, [tooltipItems]);\n const afterFooter = callbacks.afterFooter.apply(this, [tooltipItems]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n return lines;\n }\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n for (i = 0, len = active.length; i < len; ++i) {\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n }\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n }\n each(tooltipItems, (context) => {\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(scoped.labelColor.call(this, context));\n labelPointStyles.push(scoped.labelPointStyle.call(this, context));\n labelTextColors.push(scoped.labelTextColor.call(this, context));\n });\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n if (changed && options.external) {\n options.external.call(this, {chart: this.chart, tooltip: this, replay});\n }\n }\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n getCaretPosition(tooltipPoint, size, options) {\n const {xAlign, yAlign} = this;\n const {caretSize, cornerRadius} = options;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n const {x: ptX, y: ptY} = tooltipPoint;\n const {width, height} = size;\n let x1, x2, x3, y1, y2, y3;\n if (yAlign === 'center') {\n y2 = ptY + (height / 2);\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + (caretSize);\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {x1, x2, x3, y1, y2, y3};\n }\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.titleAlign, options);\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing;\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing;\n }\n }\n }\n }\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColors = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const {boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2,\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n ctx.strokeStyle = labelColors.borderColor;\n ctx.fillStyle = labelColors.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n ctx.lineWidth = labelColors.borderWidth || 1;\n ctx.strokeStyle = labelColors.borderColor;\n ctx.setLineDash(labelColors.borderDash || []);\n ctx.lineDashOffset = labelColors.borderDashOffset || 0;\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth - boxPadding);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - boxPadding - 2);\n const borderRadius = toTRBLCorners(labelColors.borderRadius);\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n ctx.fillStyle = this.labelTextColors[i];\n }\n drawBody(pt, ctx, options) {\n const {body} = this;\n const {bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n const fillLineOfText = function(line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right'\n ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding)\n : 0;\n for (i = 0, ilen = body.length; i < ilen; ++i) {\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n lines = bodyItem.lines;\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n for (j = 0, jlen = lines.length; j < jlen; ++j) {\n fillLineOfText(lines[j]);\n bodyLineHeight = bodyFont.lineHeight;\n }\n each(bodyItem.after, fillLineOfText);\n }\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing;\n }\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n footerFont = toFont(options.footerFont);\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n drawBackground(pt, ctx, tooltipSize, options) {\n const {xAlign, yAlign} = this;\n const {x, y} = pt;\n const {width, height} = tooltipSize;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(options.cornerRadius);\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n if (!opacity) {\n return;\n }\n this._updateAnimationTarget(options);\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n const padding = toPadding(options.padding);\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n this.drawBackground(pt, ctx, tooltipSize, options);\n overrideTextDirection(ctx, options.textDirection);\n pt.y += padding.top;\n this.drawTitle(pt, ctx, options);\n this.drawBody(pt, ctx, options);\n this.drawFooter(pt, ctx, options);\n restoreTextDirection(ctx, options.textDirection);\n ctx.restore();\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.chart.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n handleEvent(e, replay, inChartArea = true) {\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n const positionChanged = this._positionChanged(active, e);\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n if (changed) {\n this._active = active;\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n this.update(true, replay);\n }\n }\n return changed;\n }\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n if (options.reverse) {\n active.reverse();\n }\n return active;\n }\n _positionChanged(active, e) {\n const {caretX, caretY, options} = this;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\nTooltip.positioners = positioners;\nvar plugin_tooltip = {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n afterInit(chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({chart, options});\n }\n },\n beforeUpdate(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n reset(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n afterDraw(chart) {\n const tooltip = chart.tooltip;\n const args = {\n tooltip\n };\n if (chart.notifyPlugins('beforeTooltipDraw', args) === false) {\n return;\n }\n if (tooltip) {\n tooltip.draw(chart.ctx);\n }\n chart.notifyPlugins('afterTooltipDraw', args);\n },\n afterEvent(chart, args) {\n if (chart.tooltip) {\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n args.changed = true;\n }\n }\n },\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold',\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {\n },\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold',\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts) => opts.bodyFont.size,\n boxWidth: (ctx, opts) => opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart',\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY'],\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: {\n beforeTitle: noop,\n title(tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n return '';\n },\n afterTitle: noop,\n beforeBody: noop,\n beforeLabel: noop,\n label(tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n let label = tooltipItem.dataset.label || '';\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0,\n };\n },\n labelTextColor() {\n return this.options.bodyColor;\n },\n labelPointStyle(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation,\n };\n },\n afterLabel: noop,\n afterBody: noop,\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n }\n },\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n descriptors: {\n _scriptable: (name) => name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false,\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n additionalOptionScopes: ['interaction']\n};\n\nvar plugins = /*#__PURE__*/Object.freeze({\n__proto__: null,\nDecimation: plugin_decimation,\nFiller: plugin_filler,\nLegend: plugin_legend,\nSubTitle: plugin_subtitle,\nTitle: plugin_title,\nTooltip: plugin_tooltip\n});\n\nconst addIfString = (labels, raw, index, addedLabels) => {\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({index, label: raw});\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\nclass CategoryScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const {index, label} of added) {\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index\n : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n determineDataLimits() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this.getMinMax(true);\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n labels = (min === 0 && max === labels.length - 1) ? labels : labels.slice(min, max + 1);\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n for (let value = min; value <= max; value++) {\n ticks.push({value});\n }\n return ticks;\n }\n getLabelForValue(value) {\n const labels = this.getLabels();\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n }\n configure() {\n super.configure();\n if (!this.isHorizontal()) {\n this._reversePixels = !this._reversePixels;\n }\n }\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n getBasePixel() {\n return this.bottom;\n }\n}\nCategoryScale.id = 'category';\nCategoryScale.defaults = {\n ticks: {\n callback: CategoryScale.prototype.getLabelForValue\n }\n};\n\nfunction generateTicks$1(generationOptions, dataRange) {\n const ticks = [];\n const MIN_SPACING = 1e-14;\n const {bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds} = generationOptions;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const {min: rmin, max: rmax} = dataRange;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [{value: rmin}, {value: rmax}];\n }\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n if (!isNullOrUndef(precision)) {\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n numSpaces = (niceMax - niceMin) / spacing;\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n const decimalPlaces = Math.max(\n _decimalPlaces(spacing),\n _decimalPlaces(niceMin)\n );\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({value: min});\n if (niceMin < min) {\n j++;\n }\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n for (; j < numSpaces; ++j) {\n ticks.push({value: Math.round((niceMin + j * spacing) * factor) / factor});\n }\n if (maxDefined && includeBounds && niceMax !== max) {\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({value: max});\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({value: niceMax});\n }\n return ticks;\n}\nfunction relativeLabelSize(value, minSpacing, {horizontal, minRotation}) {\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\nclass LinearScaleBase extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._endValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n return +raw;\n }\n handleTickRangeOptions() {\n const {beginAtZero} = this.options;\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this;\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n if (min === max) {\n let offset = 1;\n if (max >= Number.MAX_SAFE_INTEGER || min <= Number.MIN_SAFE_INTEGER) {\n offset = Math.abs(max * 0.05);\n }\n setMax(max + offset);\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n getTickLimit() {\n const tickOpts = this.options.ticks;\n let {maxTicksLimit, stepSize} = tickOpts;\n let maxTicks;\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n return maxTicks;\n }\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n super.configure();\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\n\nclass LinearScale extends LinearScaleBase {\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n this.min = isNumberFinite(min) ? min : 0;\n this.max = isNumberFinite(max) ? max : 1;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\nLinearScale.id = 'linear';\nLinearScale.defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n};\n\nfunction isMajor(tickVal) {\n const remain = tickVal / (Math.pow(10, Math.floor(log10(tickVal))));\n return remain === 1;\n}\nfunction generateTicks(generationOptions, dataRange) {\n const endExp = Math.floor(log10(dataRange.max));\n const endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n const ticks = [];\n let tickVal = finiteOrDefault(generationOptions.min, Math.pow(10, Math.floor(log10(dataRange.min))));\n let exp = Math.floor(log10(tickVal));\n let significand = Math.floor(tickVal / Math.pow(10, exp));\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n do {\n ticks.push({value: tickVal, major: isMajor(tickVal)});\n ++significand;\n if (significand === 10) {\n significand = 1;\n ++exp;\n precision = exp >= 0 ? 1 : precision;\n }\n tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n } while (exp < endExp || (exp === endExp && significand < endSignificand));\n const lastTick = finiteOrDefault(generationOptions.max, tickVal);\n ticks.push({value: lastTick, major: isMajor(tickVal)});\n return ticks;\n}\nclass LogarithmicScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isNumberFinite(value) && value > 0 ? value : null;\n }\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n this.handleTickRangeOptions();\n }\n handleTickRangeOptions() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let min = this.min;\n let max = this.max;\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n const exp = (v, m) => Math.pow(10, Math.floor(log10(v)) + m);\n if (min === max) {\n if (min <= 0) {\n setMin(1);\n setMax(10);\n } else {\n setMin(exp(min, -1));\n setMax(exp(max, +1));\n }\n }\n if (min <= 0) {\n setMin(exp(max, -1));\n }\n if (max <= 0) {\n setMax(exp(min, +1));\n }\n if (this._zero && this.min !== this._suggestedMin && min === exp(this.min, 0)) {\n setMin(exp(min, -1));\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const opts = this.options;\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n getLabelForValue(value) {\n return value === undefined\n ? '0'\n : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n configure() {\n const start = this.min;\n super.configure();\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min\n ? 0\n : (log10(value) - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\nLogarithmicScale.id = 'logarithmic';\nLogarithmicScale.defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n};\n\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [label];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - (size / 2),\n end: pos + (size / 2)\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n return {\n start: pos,\n end: pos + size\n };\n}\nfunction fitWithPointLabels(scale) {\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n scale.setCenterPoint(\n orig.l - limits.l,\n limits.r - orig.r,\n orig.t - limits.t,\n limits.b - orig.b\n );\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const extra = getTickBackdropHeight(opts) / 2;\n const outerDistance = scale.drawingArea;\n const additionalAngle = opts.pointLabels.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + padding[i], additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const size = labelSizes[i];\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n items.push({\n x: pointLabelPosition.x,\n y,\n textAlign,\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n });\n }\n return items;\n}\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n return 'right';\n}\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= (w / 2);\n }\n return x;\n}\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= (h / 2);\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\nfunction drawPointLabels(scale, labelCount) {\n const {ctx, options: {pointLabels}} = scale;\n for (let i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n const plFont = toFont(optsAtIndex.font);\n const {x, y, textAlign, left, top, right, bottom} = scale._pointLabelItems[i];\n const {backdropColor} = optsAtIndex;\n if (!isNullOrUndef(backdropColor)) {\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillStyle = backdropColor;\n ctx.fillRect(left - padding.left, top - padding.top, right - left + padding.width, bottom - top + padding.height);\n }\n renderText(\n ctx,\n scale._pointLabels[i],\n x,\n y + (plFont.lineHeight / 2),\n plFont,\n {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n }\n );\n }\n}\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const {ctx} = scale;\n if (circular) {\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n for (let i = 1; i < labelCount; i++) {\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n const {color, lineWidth} = gridLineOpts;\n if ((!circular && !labelCount) || !color || !lineWidth || radius < 0) {\n return;\n }\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(gridLineOpts.borderDash);\n ctx.lineDashOffset = gridLineOpts.borderDashOffset;\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\nclass RadialLinearScale extends LinearScaleBase {\n constructor(cfg) {\n super(cfg);\n this.xCenter = undefined;\n this.yCenter = undefined;\n this.drawingArea = undefined;\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n setDimensions() {\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n determineDataLimits() {\n const {min, max} = this.getMinMax(false);\n this.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n this.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n this._pointLabels = this.getLabels()\n .map((value, index) => {\n const label = callback(this.options.pointLabels.callback, [value, index], this);\n return label || label === 0 ? label : '';\n })\n .filter((v, i) => this.chart.getDataVisibility(i));\n }\n fit() {\n const opts = this.options;\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n getPointLabelPosition(index) {\n const {left, top, right, bottom} = this._pointLabelItems[index];\n return {\n left,\n top,\n right,\n bottom,\n };\n }\n drawBackground() {\n const {backgroundColor, grid: {circular}} = this.options;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const {angleLines, grid} = opts;\n const labelCount = this._pointLabels.length;\n let i, offset, position;\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n if (grid.display) {\n this.ticks.forEach((tick, index) => {\n if (index !== 0) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const optsAtIndex = grid.setContext(this.getContext(index - 1));\n drawRadiusLine(this, optsAtIndex, offset, labelCount);\n }\n });\n }\n if (angleLines.display) {\n ctx.save();\n for (i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const {color, lineWidth} = optsAtIndex;\n if (!lineWidth || !color) {\n continue;\n }\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n ctx.restore();\n }\n }\n drawBorder() {}\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n if (!tickOpts.display) {\n return;\n }\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n this.ticks.forEach((tick, index) => {\n if (index === 0 && !opts.reverse) {\n return;\n }\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(\n -width / 2 - padding.left,\n -offset - tickFont.size / 2 - padding.top,\n width + padding.width,\n tickFont.size + padding.height\n );\n }\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color,\n });\n });\n ctx.restore();\n }\n drawTitle() {}\n}\nRadialLinearScale.id = 'radialLinear';\nRadialLinearScale.defaults = {\n display: true,\n animate: true,\n position: 'chartArea',\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n grid: {\n circular: false\n },\n startAngle: 0,\n ticks: {\n showLabelBackdrop: true,\n callback: Ticks.formatters.numeric\n },\n pointLabels: {\n backdropColor: undefined,\n backdropPadding: 2,\n display: true,\n font: {\n size: 10\n },\n callback(label) {\n return label;\n },\n padding: 5,\n centerPointLabels: false\n }\n};\nRadialLinearScale.defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n};\nRadialLinearScale.descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n};\n\nconst INTERVALS = {\n millisecond: {common: true, size: 1, steps: 1000},\n second: {common: true, size: 1000, steps: 60},\n minute: {common: true, size: 60000, steps: 60},\n hour: {common: true, size: 3600000, steps: 24},\n day: {common: true, size: 86400000, steps: 30},\n week: {common: false, size: 604800000, steps: 4},\n month: {common: true, size: 2.628e9, steps: 12},\n quarter: {common: false, size: 7.884e9, steps: 4},\n year: {common: true, size: 3.154e10}\n};\nconst UNITS = (Object.keys(INTERVALS));\nfunction sorter(a, b) {\n return a - b;\n}\nfunction parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n const adapter = scale._adapter;\n const {parser, round, isoWeekday} = scale._parseOpts;\n let value = input;\n if (typeof parser === 'function') {\n value = parser(value);\n }\n if (!isNumberFinite(value)) {\n value = typeof parser === 'string'\n ? adapter.parse(value, parser)\n : adapter.parse(value);\n }\n if (value === null) {\n return null;\n }\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true)\n ? adapter.startOf(value, 'isoWeek', isoWeekday)\n : adapter.startOf(value, round);\n }\n return +value;\n}\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n return UNITS[ilen - 1];\n}\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\nfunction determineMajorUnit(unit) {\n for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\nfunction addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const {lo, hi} = _lookup(timestamps, time);\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n const map = {};\n const ilen = values.length;\n let i, value;\n for (i = 0; i < ilen; ++i) {\n value = values[i];\n map[value] = i;\n ticks.push({\n value,\n major: false\n });\n }\n return (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nclass TimeScale extends Scale {\n constructor(props) {\n super(props);\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n this._unit = 'day';\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n init(scaleOpts, opts) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n mergeIf(time.displayFormats, adapter.formats());\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n super.init(scaleOpts);\n this._normalized = opts.normalized;\n }\n parse(raw, index) {\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n if (!minDefined || !maxDefined) {\n _applyBounds(this._getLabelBounds());\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {min, max};\n }\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n const min = this.min;\n const max = this.max;\n const ticks = _filterBetween(timestamps, min, max);\n this._unit = timeOpts.unit || (tickOpts.autoSkip\n ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min))\n : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined\n : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n if (options.reverse) {\n ticks.reverse();\n }\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n initOffsets(timestamps) {\n let start = 0;\n let end = 0;\n let first, last;\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n this._offsets = {start, end, factor: 1 / (start + 1 + end)};\n }\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(timeOpts.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n addTick(ticks, time, timestamps);\n }\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n return Object.keys(ticks).sort((a, b) => a - b).map(x => +x);\n }\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n const label = this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n const formatter = options.ticks.callback;\n return formatter ? callback(formatter, [label, index, ticks], this) : label;\n }\n generateTickLabels(ticks) {\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n return {\n w: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\n h: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\n };\n }\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const metas = this.getMatchingVisibleMetas();\n if (this._normalized && metas.length) {\n return (this._cache.data = metas[0].controller.getAllParsedValues(this));\n }\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n return (this._cache.data = this.normalize(timestamps));\n }\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const labels = this.getLabels();\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n timestamps.push(parse(this, labels[i]));\n }\n return (this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps));\n }\n normalize(values) {\n return _arrayUnique(values.sort(sorter));\n }\n}\nTimeScale.id = 'time';\nTimeScale.defaults = {\n bounds: 'data',\n adapters: {},\n time: {\n parser: false,\n unit: false,\n round: false,\n isoWeekday: false,\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n source: 'auto',\n major: {\n enabled: false\n }\n }\n};\n\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n ({lo, hi} = _lookupByKey(table, 'pos', val));\n }\n ({pos: prevSource, time: prevTarget} = table[lo]);\n ({pos: nextSource, time: nextTarget} = table[hi]);\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n ({lo, hi} = _lookupByKey(table, 'time', val));\n }\n ({time: prevSource, pos: prevTarget} = table[lo]);\n ({time: nextSource, pos: nextTarget} = table[hi]);\n }\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nclass TimeSeriesScale extends TimeScale {\n constructor(props) {\n super(props);\n this._table = [];\n this._minPos = undefined;\n this._tableRange = undefined;\n }\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n buildLookupTable(timestamps) {\n const {min, max} = this;\n const items = [];\n const table = [];\n let i, ilen, prev, curr, next;\n for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n if (items.length < 2) {\n return [\n {time: min, pos: 0},\n {time: max, pos: 1}\n ];\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({time: curr, pos: i / (ilen - 1)});\n }\n }\n return table;\n }\n _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n if (timestamps.length) {\n return timestamps;\n }\n const data = this.getDataTimestamps();\n const label = this.getLabelTimestamps();\n if (data.length && label.length) {\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n timestamps = this._cache.all = timestamps;\n return timestamps;\n }\n getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\nTimeSeriesScale.id = 'timeseries';\nTimeSeriesScale.defaults = TimeScale.defaults;\n\nvar scales = /*#__PURE__*/Object.freeze({\n__proto__: null,\nCategoryScale: CategoryScale,\nLinearScale: LinearScale,\nLogarithmicScale: LogarithmicScale,\nRadialLinearScale: RadialLinearScale,\nTimeScale: TimeScale,\nTimeSeriesScale: TimeSeriesScale\n});\n\nconst registerables = [\n controllers,\n elements,\n plugins,\n scales,\n];\n\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, plugin_filler as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, Ticks, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, elements, layouts, plugins, registerables, registry, scales };\n","/*!\n * Chart.js v3.7.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\nconst requestAnimFrame = (function() {\n if (typeof window === 'undefined') {\n return function(callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}());\nfunction throttled(fn, thisArg, updateFn) {\n const updateArgs = updateFn || ((args) => Array.prototype.slice.call(args));\n let ticking = false;\n let args = [];\n return function(...rest) {\n args = updateArgs(rest);\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, () => {\n ticking = false;\n fn.apply(thisArg, args);\n });\n }\n };\n}\nfunction debounce(fn, delay) {\n let timeout;\n return function(...args) {\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\nconst _toLeftRightCenter = (align) => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\nconst _alignStartEnd = (align, start, end) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\nconst _textX = (align, left, right, rtl) => {\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\n\nfunction noop() {}\nconst uid = (function() {\n let id = 0;\n return function() {\n return id++;\n };\n}());\nfunction isNullOrUndef(value) {\n return value === null || typeof value === 'undefined';\n}\nfunction isArray(value) {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const type = Object.prototype.toString.call(value);\n if (type.substr(0, 7) === '[object' && type.substr(-6) === 'Array]') {\n return true;\n }\n return false;\n}\nfunction isObject(value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\nconst isNumberFinite = (value) => (typeof value === 'number' || value instanceof Number) && isFinite(+value);\nfunction finiteOrDefault(value, defaultValue) {\n return isNumberFinite(value) ? value : defaultValue;\n}\nfunction valueOrDefault(value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\nconst toPercentage = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100\n : value / dimension;\nconst toDimension = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100 * dimension\n : +value;\nfunction callback(fn, args, thisArg) {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\nfunction each(loopable, fn, thisArg, reverse) {\n let i, len, keys;\n if (isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for (i = len - 1; i >= 0; i--) {\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\nfunction _elementsEqual(a0, a1) {\n let i, ilen, v0, v1;\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n for (i = 0, ilen = a0.length; i < ilen; ++i) {\n v0 = a0[i];\n v1 = a1[i];\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n return true;\n}\nfunction clone$1(source) {\n if (isArray(source)) {\n return source.map(clone$1);\n }\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n for (; k < klen; ++k) {\n target[keys[k]] = clone$1(source[keys[k]]);\n }\n return target;\n }\n return source;\n}\nfunction isValidKey(key) {\n return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\nfunction _merger(key, target, source, options) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n merge(tval, sval, options);\n } else {\n target[key] = clone$1(sval);\n }\n}\nfunction merge(target, source, options) {\n const sources = isArray(source) ? source : [source];\n const ilen = sources.length;\n if (!isObject(target)) {\n return target;\n }\n options = options || {};\n const merger = options.merger || _merger;\n for (let i = 0; i < ilen; ++i) {\n source = sources[i];\n if (!isObject(source)) {\n continue;\n }\n const keys = Object.keys(source);\n for (let k = 0, klen = keys.length; k < klen; ++k) {\n merger(keys[k], target, source, options);\n }\n }\n return target;\n}\nfunction mergeIf(target, source) {\n return merge(target, source, {merger: _mergerIf});\n}\nfunction _mergerIf(key, target, source) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone$1(sval);\n }\n}\nfunction _deprecated(scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous +\n\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\nconst emptyString = '';\nconst dot = '.';\nfunction indexOfDotOrLength(key, start) {\n const idx = key.indexOf(dot, start);\n return idx === -1 ? key.length : idx;\n}\nfunction resolveObjectKey(obj, key) {\n if (key === emptyString) {\n return obj;\n }\n let pos = 0;\n let idx = indexOfDotOrLength(key, pos);\n while (obj && idx > pos) {\n obj = obj[key.substr(pos, idx - pos)];\n pos = idx + 1;\n idx = indexOfDotOrLength(key, pos);\n }\n return obj;\n}\nfunction _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\nconst defined = (value) => typeof value !== 'undefined';\nconst isFunction = (value) => typeof value === 'function';\nconst setsEqual = (a, b) => {\n if (a.size !== b.size) {\n return false;\n }\n for (const item of a) {\n if (!b.has(item)) {\n return false;\n }\n }\n return true;\n};\nfunction _isClickEvent(e) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n\nconst PI = Math.PI;\nconst TAU = 2 * PI;\nconst PITAU = TAU + PI;\nconst INFINITY = Number.POSITIVE_INFINITY;\nconst RAD_PER_DEG = PI / 180;\nconst HALF_PI = PI / 2;\nconst QUARTER_PI = PI / 4;\nconst TWO_THIRDS_PI = PI * 2 / 3;\nconst log10 = Math.log10;\nconst sign = Math.sign;\nfunction niceNum(range) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\nfunction _factorize(value) {\n const result = [];\n const sqrt = Math.sqrt(value);\n let i;\n for (i = 1; i < sqrt; i++) {\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) {\n result.push(sqrt);\n }\n result.sort((a, b) => a - b).pop();\n return result;\n}\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\nfunction almostEquals(x, y, epsilon) {\n return Math.abs(x - y) < epsilon;\n}\nfunction almostWhole(x, epsilon) {\n const rounded = Math.round(x);\n return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\n}\nfunction _setMinAndMaxByKey(array, target, property) {\n let i, ilen, value;\n for (i = 0, ilen = array.length; i < ilen; i++) {\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\nfunction toRadians(degrees) {\n return degrees * (PI / 180);\n}\nfunction toDegrees(radians) {\n return radians * (180 / PI);\n}\nfunction _decimalPlaces(x) {\n if (!isNumberFinite(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while (Math.round(x * e) / e !== x) {\n e *= 10;\n p++;\n }\n return p;\n}\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n if (angle < (-0.5 * PI)) {\n angle += TAU;\n }\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\nfunction distanceBetweenPoints(pt1, pt2) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\nfunction _angleDiff(a, b) {\n return (a - b + PITAU) % TAU - PI;\n}\nfunction _normalizeAngle(a) {\n return (a % TAU + TAU) % TAU;\n}\nfunction _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || (sameAngleIsFullCircle && s === e)\n || (angleToStart > angleToEnd && startToAngle < endToAngle);\n}\nfunction _limitValue(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\nfunction _int16Range(value) {\n return _limitValue(value, -32768, 32767);\n}\nfunction _isBetween(value, start, end, epsilon = 1e-6) {\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n\nconst atEdge = (t) => t === 0 || t === 1;\nconst elasticIn = (t, s, p) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t, s, p) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\nconst effects = {\n linear: t => t,\n easeInQuad: t => t * t,\n easeOutQuad: t => -t * (t - 2),\n easeInOutQuad: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t\n : -0.5 * ((--t) * (t - 2) - 1),\n easeInCubic: t => t * t * t,\n easeOutCubic: t => (t -= 1) * t * t + 1,\n easeInOutCubic: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t\n : 0.5 * ((t -= 2) * t * t + 2),\n easeInQuart: t => t * t * t * t,\n easeOutQuart: t => -((t -= 1) * t * t * t - 1),\n easeInOutQuart: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t\n : -0.5 * ((t -= 2) * t * t * t - 2),\n easeInQuint: t => t * t * t * t * t,\n easeOutQuint: t => (t -= 1) * t * t * t * t + 1,\n easeInOutQuint: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t * t\n : 0.5 * ((t -= 2) * t * t * t * t + 2),\n easeInSine: t => -Math.cos(t * HALF_PI) + 1,\n easeOutSine: t => Math.sin(t * HALF_PI),\n easeInOutSine: t => -0.5 * (Math.cos(PI * t) - 1),\n easeInExpo: t => (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)),\n easeOutExpo: t => (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1,\n easeInOutExpo: t => atEdge(t) ? t : t < 0.5\n ? 0.5 * Math.pow(2, 10 * (t * 2 - 1))\n : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n easeInCirc: t => (t >= 1) ? t : -(Math.sqrt(1 - t * t) - 1),\n easeOutCirc: t => Math.sqrt(1 - (t -= 1) * t),\n easeInOutCirc: t => ((t /= 0.5) < 1)\n ? -0.5 * (Math.sqrt(1 - t * t) - 1)\n : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n easeInElastic: t => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n easeOutElastic: t => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n easeInOutElastic(t) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t :\n t < 0.5\n ? 0.5 * elasticIn(t * 2, s, p)\n : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n easeInBack(t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n easeOutBack(t) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n easeInOutBack(t) {\n let s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n },\n easeInBounce: t => 1 - effects.easeOutBounce(1 - t),\n easeOutBounce(t) {\n const m = 7.5625;\n const d = 2.75;\n if (t < (1 / d)) {\n return m * t * t;\n }\n if (t < (2 / d)) {\n return m * (t -= (1.5 / d)) * t + 0.75;\n }\n if (t < (2.5 / d)) {\n return m * (t -= (2.25 / d)) * t + 0.9375;\n }\n return m * (t -= (2.625 / d)) * t + 0.984375;\n },\n easeInOutBounce: t => (t < 0.5)\n ? effects.easeInBounce(t * 2) * 0.5\n : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5,\n};\n\n/*!\n * @kurkle/color v0.1.9\n * https://github.com/kurkle/color#readme\n * (c) 2020 Jukka Kurkela\n * Released under the MIT License\n */\nconst map = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = '0123456789ABCDEF';\nconst h1 = (b) => hex[b & 0xF];\nconst h2 = (b) => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = (b) => (((b & 0xF0) >> 4) === (b & 0xF));\nfunction isShort(v) {\n\treturn eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\n}\nfunction hexParse(str) {\n\tvar len = str.length;\n\tvar ret;\n\tif (str[0] === '#') {\n\t\tif (len === 4 || len === 5) {\n\t\t\tret = {\n\t\t\t\tr: 255 & map[str[1]] * 17,\n\t\t\t\tg: 255 & map[str[2]] * 17,\n\t\t\t\tb: 255 & map[str[3]] * 17,\n\t\t\t\ta: len === 5 ? map[str[4]] * 17 : 255\n\t\t\t};\n\t\t} else if (len === 7 || len === 9) {\n\t\t\tret = {\n\t\t\t\tr: map[str[1]] << 4 | map[str[2]],\n\t\t\t\tg: map[str[3]] << 4 | map[str[4]],\n\t\t\t\tb: map[str[5]] << 4 | map[str[6]],\n\t\t\t\ta: len === 9 ? (map[str[7]] << 4 | map[str[8]]) : 255\n\t\t\t};\n\t\t}\n\t}\n\treturn ret;\n}\nfunction hexString(v) {\n\tvar f = isShort(v) ? h1 : h2;\n\treturn v\n\t\t? '#' + f(v.r) + f(v.g) + f(v.b) + (v.a < 255 ? f(v.a) : '')\n\t\t: v;\n}\nfunction round(v) {\n\treturn v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n\treturn lim(round(v * 2.55), 0, 255);\n}\nfunction n2b(v) {\n\treturn lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n\treturn lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n\treturn lim(round(v * 100), 0, 100);\n}\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n\tconst m = RGB_RE.exec(str);\n\tlet a = 255;\n\tlet r, g, b;\n\tif (!m) {\n\t\treturn;\n\t}\n\tif (m[7] !== r) {\n\t\tconst v = +m[7];\n\t\ta = 255 & (m[8] ? p2b(v) : v * 255);\n\t}\n\tr = +m[1];\n\tg = +m[3];\n\tb = +m[5];\n\tr = 255 & (m[2] ? p2b(r) : r);\n\tg = 255 & (m[4] ? p2b(g) : g);\n\tb = 255 & (m[6] ? p2b(b) : b);\n\treturn {\n\t\tr: r,\n\t\tg: g,\n\t\tb: b,\n\t\ta: a\n\t};\n}\nfunction rgbString(v) {\n\treturn v && (\n\t\tv.a < 255\n\t\t\t? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n\t\t\t: `rgb(${v.r}, ${v.g}, ${v.b})`\n\t);\n}\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n\tconst a = s * Math.min(l, 1 - l);\n\tconst f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n\treturn [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n\tconst f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n\treturn [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n\tconst rgb = hsl2rgbn(h, 1, 0.5);\n\tlet i;\n\tif (w + b > 1) {\n\t\ti = 1 / (w + b);\n\t\tw *= i;\n\t\tb *= i;\n\t}\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] *= 1 - w - b;\n\t\trgb[i] += w;\n\t}\n\treturn rgb;\n}\nfunction rgb2hsl(v) {\n\tconst range = 255;\n\tconst r = v.r / range;\n\tconst g = v.g / range;\n\tconst b = v.b / range;\n\tconst max = Math.max(r, g, b);\n\tconst min = Math.min(r, g, b);\n\tconst l = (max + min) / 2;\n\tlet h, s, d;\n\tif (max !== min) {\n\t\td = max - min;\n\t\ts = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\t\th = max === r\n\t\t\t? ((g - b) / d) + (g < b ? 6 : 0)\n\t\t\t: max === g\n\t\t\t\t? (b - r) / d + 2\n\t\t\t\t: (r - g) / d + 4;\n\t\th = h * 60 + 0.5;\n\t}\n\treturn [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n\treturn (\n\t\tArray.isArray(a)\n\t\t\t? f(a[0], a[1], a[2])\n\t\t\t: f(a, b, c)\n\t).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n\treturn calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n\treturn calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n\treturn calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n\treturn (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n\tconst m = HUE_RE.exec(str);\n\tlet a = 255;\n\tlet v;\n\tif (!m) {\n\t\treturn;\n\t}\n\tif (m[5] !== v) {\n\t\ta = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n\t}\n\tconst h = hue(+m[2]);\n\tconst p1 = +m[3] / 100;\n\tconst p2 = +m[4] / 100;\n\tif (m[1] === 'hwb') {\n\t\tv = hwb2rgb(h, p1, p2);\n\t} else if (m[1] === 'hsv') {\n\t\tv = hsv2rgb(h, p1, p2);\n\t} else {\n\t\tv = hsl2rgb(h, p1, p2);\n\t}\n\treturn {\n\t\tr: v[0],\n\t\tg: v[1],\n\t\tb: v[2],\n\t\ta: a\n\t};\n}\nfunction rotate(v, deg) {\n\tvar h = rgb2hsl(v);\n\th[0] = hue(h[0] + deg);\n\th = hsl2rgb(h);\n\tv.r = h[0];\n\tv.g = h[1];\n\tv.b = h[2];\n}\nfunction hslString(v) {\n\tif (!v) {\n\t\treturn;\n\t}\n\tconst a = rgb2hsl(v);\n\tconst h = a[0];\n\tconst s = n2p(a[1]);\n\tconst l = n2p(a[2]);\n\treturn v.a < 255\n\t\t? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n\t\t: `hsl(${h}, ${s}%, ${l}%)`;\n}\nconst map$1 = {\n\tx: 'dark',\n\tZ: 'light',\n\tY: 're',\n\tX: 'blu',\n\tW: 'gr',\n\tV: 'medium',\n\tU: 'slate',\n\tA: 'ee',\n\tT: 'ol',\n\tS: 'or',\n\tB: 'ra',\n\tC: 'lateg',\n\tD: 'ights',\n\tR: 'in',\n\tQ: 'turquois',\n\tE: 'hi',\n\tP: 'ro',\n\tO: 'al',\n\tN: 'le',\n\tM: 'de',\n\tL: 'yello',\n\tF: 'en',\n\tK: 'ch',\n\tG: 'arks',\n\tH: 'ea',\n\tI: 'ightg',\n\tJ: 'wh'\n};\nconst names = {\n\tOiceXe: 'f0f8ff',\n\tantiquewEte: 'faebd7',\n\taqua: 'ffff',\n\taquamarRe: '7fffd4',\n\tazuY: 'f0ffff',\n\tbeige: 'f5f5dc',\n\tbisque: 'ffe4c4',\n\tblack: '0',\n\tblanKedOmond: 'ffebcd',\n\tXe: 'ff',\n\tXeviTet: '8a2be2',\n\tbPwn: 'a52a2a',\n\tburlywood: 'deb887',\n\tcaMtXe: '5f9ea0',\n\tKartYuse: '7fff00',\n\tKocTate: 'd2691e',\n\tcSO: 'ff7f50',\n\tcSnflowerXe: '6495ed',\n\tcSnsilk: 'fff8dc',\n\tcrimson: 'dc143c',\n\tcyan: 'ffff',\n\txXe: '8b',\n\txcyan: '8b8b',\n\txgTMnPd: 'b8860b',\n\txWay: 'a9a9a9',\n\txgYF: '6400',\n\txgYy: 'a9a9a9',\n\txkhaki: 'bdb76b',\n\txmagFta: '8b008b',\n\txTivegYF: '556b2f',\n\txSange: 'ff8c00',\n\txScEd: '9932cc',\n\txYd: '8b0000',\n\txsOmon: 'e9967a',\n\txsHgYF: '8fbc8f',\n\txUXe: '483d8b',\n\txUWay: '2f4f4f',\n\txUgYy: '2f4f4f',\n\txQe: 'ced1',\n\txviTet: '9400d3',\n\tdAppRk: 'ff1493',\n\tdApskyXe: 'bfff',\n\tdimWay: '696969',\n\tdimgYy: '696969',\n\tdodgerXe: '1e90ff',\n\tfiYbrick: 'b22222',\n\tflSOwEte: 'fffaf0',\n\tfoYstWAn: '228b22',\n\tfuKsia: 'ff00ff',\n\tgaRsbSo: 'dcdcdc',\n\tghostwEte: 'f8f8ff',\n\tgTd: 'ffd700',\n\tgTMnPd: 'daa520',\n\tWay: '808080',\n\tgYF: '8000',\n\tgYFLw: 'adff2f',\n\tgYy: '808080',\n\thoneyMw: 'f0fff0',\n\thotpRk: 'ff69b4',\n\tRdianYd: 'cd5c5c',\n\tRdigo: '4b0082',\n\tivSy: 'fffff0',\n\tkhaki: 'f0e68c',\n\tlavFMr: 'e6e6fa',\n\tlavFMrXsh: 'fff0f5',\n\tlawngYF: '7cfc00',\n\tNmoncEffon: 'fffacd',\n\tZXe: 'add8e6',\n\tZcSO: 'f08080',\n\tZcyan: 'e0ffff',\n\tZgTMnPdLw: 'fafad2',\n\tZWay: 'd3d3d3',\n\tZgYF: '90ee90',\n\tZgYy: 'd3d3d3',\n\tZpRk: 'ffb6c1',\n\tZsOmon: 'ffa07a',\n\tZsHgYF: '20b2aa',\n\tZskyXe: '87cefa',\n\tZUWay: '778899',\n\tZUgYy: '778899',\n\tZstAlXe: 'b0c4de',\n\tZLw: 'ffffe0',\n\tlime: 'ff00',\n\tlimegYF: '32cd32',\n\tlRF: 'faf0e6',\n\tmagFta: 'ff00ff',\n\tmaPon: '800000',\n\tVaquamarRe: '66cdaa',\n\tVXe: 'cd',\n\tVScEd: 'ba55d3',\n\tVpurpN: '9370db',\n\tVsHgYF: '3cb371',\n\tVUXe: '7b68ee',\n\tVsprRggYF: 'fa9a',\n\tVQe: '48d1cc',\n\tVviTetYd: 'c71585',\n\tmidnightXe: '191970',\n\tmRtcYam: 'f5fffa',\n\tmistyPse: 'ffe4e1',\n\tmoccasR: 'ffe4b5',\n\tnavajowEte: 'ffdead',\n\tnavy: '80',\n\tTdlace: 'fdf5e6',\n\tTive: '808000',\n\tTivedBb: '6b8e23',\n\tSange: 'ffa500',\n\tSangeYd: 'ff4500',\n\tScEd: 'da70d6',\n\tpOegTMnPd: 'eee8aa',\n\tpOegYF: '98fb98',\n\tpOeQe: 'afeeee',\n\tpOeviTetYd: 'db7093',\n\tpapayawEp: 'ffefd5',\n\tpHKpuff: 'ffdab9',\n\tperu: 'cd853f',\n\tpRk: 'ffc0cb',\n\tplum: 'dda0dd',\n\tpowMrXe: 'b0e0e6',\n\tpurpN: '800080',\n\tYbeccapurpN: '663399',\n\tYd: 'ff0000',\n\tPsybrown: 'bc8f8f',\n\tPyOXe: '4169e1',\n\tsaddNbPwn: '8b4513',\n\tsOmon: 'fa8072',\n\tsandybPwn: 'f4a460',\n\tsHgYF: '2e8b57',\n\tsHshell: 'fff5ee',\n\tsiFna: 'a0522d',\n\tsilver: 'c0c0c0',\n\tskyXe: '87ceeb',\n\tUXe: '6a5acd',\n\tUWay: '708090',\n\tUgYy: '708090',\n\tsnow: 'fffafa',\n\tsprRggYF: 'ff7f',\n\tstAlXe: '4682b4',\n\ttan: 'd2b48c',\n\tteO: '8080',\n\ttEstN: 'd8bfd8',\n\ttomato: 'ff6347',\n\tQe: '40e0d0',\n\tviTet: 'ee82ee',\n\tJHt: 'f5deb3',\n\twEte: 'ffffff',\n\twEtesmoke: 'f5f5f5',\n\tLw: 'ffff00',\n\tLwgYF: '9acd32'\n};\nfunction unpack() {\n\tconst unpacked = {};\n\tconst keys = Object.keys(names);\n\tconst tkeys = Object.keys(map$1);\n\tlet i, j, k, ok, nk;\n\tfor (i = 0; i < keys.length; i++) {\n\t\tok = nk = keys[i];\n\t\tfor (j = 0; j < tkeys.length; j++) {\n\t\t\tk = tkeys[j];\n\t\t\tnk = nk.replace(k, map$1[k]);\n\t\t}\n\t\tk = parseInt(names[ok], 16);\n\t\tunpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n\t}\n\treturn unpacked;\n}\nlet names$1;\nfunction nameParse(str) {\n\tif (!names$1) {\n\t\tnames$1 = unpack();\n\t\tnames$1.transparent = [0, 0, 0, 0];\n\t}\n\tconst a = names$1[str.toLowerCase()];\n\treturn a && {\n\t\tr: a[0],\n\t\tg: a[1],\n\t\tb: a[2],\n\t\ta: a.length === 4 ? a[3] : 255\n\t};\n}\nfunction modHSL(v, i, ratio) {\n\tif (v) {\n\t\tlet tmp = rgb2hsl(v);\n\t\ttmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n\t\ttmp = hsl2rgb(tmp);\n\t\tv.r = tmp[0];\n\t\tv.g = tmp[1];\n\t\tv.b = tmp[2];\n\t}\n}\nfunction clone(v, proto) {\n\treturn v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n\tvar v = {r: 0, g: 0, b: 0, a: 255};\n\tif (Array.isArray(input)) {\n\t\tif (input.length >= 3) {\n\t\t\tv = {r: input[0], g: input[1], b: input[2], a: 255};\n\t\t\tif (input.length > 3) {\n\t\t\t\tv.a = n2b(input[3]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tv = clone(input, {r: 0, g: 0, b: 0, a: 1});\n\t\tv.a = n2b(v.a);\n\t}\n\treturn v;\n}\nfunction functionParse(str) {\n\tif (str.charAt(0) === 'r') {\n\t\treturn rgbParse(str);\n\t}\n\treturn hueParse(str);\n}\nclass Color {\n\tconstructor(input) {\n\t\tif (input instanceof Color) {\n\t\t\treturn input;\n\t\t}\n\t\tconst type = typeof input;\n\t\tlet v;\n\t\tif (type === 'object') {\n\t\t\tv = fromObject(input);\n\t\t} else if (type === 'string') {\n\t\t\tv = hexParse(input) || nameParse(input) || functionParse(input);\n\t\t}\n\t\tthis._rgb = v;\n\t\tthis._valid = !!v;\n\t}\n\tget valid() {\n\t\treturn this._valid;\n\t}\n\tget rgb() {\n\t\tvar v = clone(this._rgb);\n\t\tif (v) {\n\t\t\tv.a = b2n(v.a);\n\t\t}\n\t\treturn v;\n\t}\n\tset rgb(obj) {\n\t\tthis._rgb = fromObject(obj);\n\t}\n\trgbString() {\n\t\treturn this._valid ? rgbString(this._rgb) : this._rgb;\n\t}\n\thexString() {\n\t\treturn this._valid ? hexString(this._rgb) : this._rgb;\n\t}\n\thslString() {\n\t\treturn this._valid ? hslString(this._rgb) : this._rgb;\n\t}\n\tmix(color, weight) {\n\t\tconst me = this;\n\t\tif (color) {\n\t\t\tconst c1 = me.rgb;\n\t\t\tconst c2 = color.rgb;\n\t\t\tlet w2;\n\t\t\tconst p = weight === w2 ? 0.5 : weight;\n\t\t\tconst w = 2 * p - 1;\n\t\t\tconst a = c1.a - c2.a;\n\t\t\tconst w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\t\tw2 = 1 - w1;\n\t\t\tc1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n\t\t\tc1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n\t\t\tc1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n\t\t\tc1.a = p * c1.a + (1 - p) * c2.a;\n\t\t\tme.rgb = c1;\n\t\t}\n\t\treturn me;\n\t}\n\tclone() {\n\t\treturn new Color(this.rgb);\n\t}\n\talpha(a) {\n\t\tthis._rgb.a = n2b(a);\n\t\treturn this;\n\t}\n\tclearer(ratio) {\n\t\tconst rgb = this._rgb;\n\t\trgb.a *= 1 - ratio;\n\t\treturn this;\n\t}\n\tgreyscale() {\n\t\tconst rgb = this._rgb;\n\t\tconst val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n\t\trgb.r = rgb.g = rgb.b = val;\n\t\treturn this;\n\t}\n\topaquer(ratio) {\n\t\tconst rgb = this._rgb;\n\t\trgb.a *= 1 + ratio;\n\t\treturn this;\n\t}\n\tnegate() {\n\t\tconst v = this._rgb;\n\t\tv.r = 255 - v.r;\n\t\tv.g = 255 - v.g;\n\t\tv.b = 255 - v.b;\n\t\treturn this;\n\t}\n\tlighten(ratio) {\n\t\tmodHSL(this._rgb, 2, ratio);\n\t\treturn this;\n\t}\n\tdarken(ratio) {\n\t\tmodHSL(this._rgb, 2, -ratio);\n\t\treturn this;\n\t}\n\tsaturate(ratio) {\n\t\tmodHSL(this._rgb, 1, ratio);\n\t\treturn this;\n\t}\n\tdesaturate(ratio) {\n\t\tmodHSL(this._rgb, 1, -ratio);\n\t\treturn this;\n\t}\n\trotate(deg) {\n\t\trotate(this._rgb, deg);\n\t\treturn this;\n\t}\n}\nfunction index_esm(input) {\n\treturn new Color(input);\n}\n\nconst isPatternOrGradient = (value) => value instanceof CanvasGradient || value instanceof CanvasPattern;\nfunction color(value) {\n return isPatternOrGradient(value) ? value : index_esm(value);\n}\nfunction getHoverColor(value) {\n return isPatternOrGradient(value)\n ? value\n : index_esm(value).saturate(0.5).darken(0.1).hexString();\n}\n\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\nfunction getScope$1(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for (let i = 0, n = keys.length; i < n; ++i) {\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n return node;\n}\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope$1(root, scope), values);\n }\n return merge(getScope$1(root, ''), scope);\n}\nclass Defaults {\n constructor(_descriptors) {\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio();\n this.elements = {};\n this.events = [\n 'mousemove',\n 'mouseout',\n 'click',\n 'touchstart',\n 'touchmove'\n ];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options) => getHoverColor(options.color);\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n this.describe(_descriptors);\n }\n set(scope, values) {\n return set(this, scope, values);\n }\n get(scope) {\n return getScope$1(this, scope);\n }\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n override(scope, values) {\n return set(overrides, scope, values);\n }\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope$1(this, scope);\n const targetScopeObject = getScope$1(this, targetScope);\n const privateName = '_' + name;\n Object.defineProperties(scopeObject, {\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n [name]: {\n enumerable: true,\n get() {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set(value) {\n this[privateName] = value;\n }\n }\n });\n }\n}\nvar defaults = new Defaults({\n _scriptable: (name) => !name.startsWith('on'),\n _indexable: (name) => name !== 'events',\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false,\n }\n});\n\nfunction toFontString(font) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n return (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\nfunction _measureText(ctx, data, gc, longest, string) {\n let textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n}\nfunction _longestText(ctx, font, arrayOfThings, cache) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n ctx.save();\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i, j, jlen, thing, nestedThing;\n for (i = 0; i < ilen; i++) {\n thing = arrayOfThings[i];\n if (thing !== undefined && thing !== null && isArray(thing) !== true) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n for (j = 0, jlen = thing.length; j < jlen; j++) {\n nestedThing = thing[j];\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n ctx.restore();\n const gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for (i = 0; i < gcLen; i++) {\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n}\nfunction _alignPixel(chart, pixel, width) {\n const devicePixelRatio = chart.currentDevicePixelRatio;\n const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\nfunction clearCanvas(canvas, ctx) {\n ctx = ctx || canvas.getContext('2d');\n ctx.save();\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\nfunction drawPoint(ctx, options, x, y) {\n let type, xOffset, yOffset, size, cornerRadius;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n ctx.beginPath();\n switch (style) {\n default:\n ctx.arc(x, y, radius, 0, TAU);\n ctx.closePath();\n break;\n case 'triangle':\n ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n ctx.rect(x - size, y - size, 2 * size, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n case 'rectRot':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + yOffset, y - xOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n case 'cross':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'star':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n rad += QUARTER_PI;\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'line':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\n break;\n }\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\nfunction _isPointInArea(point, area, margin) {\n margin = margin || 0.5;\n return !area || (point && point.x > area.left - margin && point.x < area.right + margin &&\n\t\tpoint.y > area.top - margin && point.y < area.bottom + margin);\n}\nfunction clipArea(ctx, area) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\nfunction unclipArea(ctx) {\n ctx.restore();\n}\nfunction _steppedLineTo(ctx, previous, target, flip, mode) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n}\nfunction _bezierCurveTo(ctx, previous, target, flip) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(\n flip ? previous.cp1x : previous.cp2x,\n flip ? previous.cp1y : previous.cp2y,\n flip ? target.cp2x : target.cp1x,\n flip ? target.cp2y : target.cp1y,\n target.x,\n target.y);\n}\nfunction renderText(ctx, text, x, y, font, opts = {}) {\n const lines = isArray(text) ? text : [text];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i, line;\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n for (i = 0; i < lines.length; ++i) {\n line = lines[i];\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n y += font.lineHeight;\n }\n ctx.restore();\n}\nfunction setRenderOpts(ctx, opts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\nfunction decorateText(ctx, x, y, line, opts) {\n if (opts.strikethrough || opts.underline) {\n const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\nfunction addRoundedRectPath(ctx, rect) {\n const {x, y, w, h, radius} = rect;\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, -HALF_PI, PI, true);\n ctx.lineTo(x, y + h - radius.bottomLeft);\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n ctx.lineTo(x + w, y + radius.topRight);\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n ctx.lineTo(x + radius.topLeft, y);\n}\n\nconst LINE_HEIGHT = new RegExp(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\nconst FONT_STYLE = new RegExp(/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/);\nfunction toLineHeight(value, size) {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n value = +matches[2];\n switch (matches[3]) {\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n }\n return size * value;\n}\nconst numberOrZero = v => +v || 0;\nfunction _readValueToProps(value, props) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value)\n ? objProps\n ? prop => valueOrDefault(value[prop], value[props[prop]])\n : prop => value[prop]\n : () => value;\n for (const prop of keys) {\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\nfunction toTRBL(value) {\n return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'});\n}\nfunction toTRBLCorners(value) {\n return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\nfunction toPadding(value) {\n const obj = toTRBL(value);\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n return obj;\n}\nfunction toFont(options, fallback) {\n options = options || {};\n fallback = fallback || defaults.font;\n let size = valueOrDefault(options.size, fallback.size);\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = '';\n }\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n font.string = toFontString(font);\n return font;\n}\nfunction resolve(inputs, context, index, info) {\n let cacheable = true;\n let i, ilen, value;\n for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\nfunction _addGrace(minmax, grace, beginAtZero) {\n const {min, max} = minmax;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value, add) => beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\nfunction createContext(parentContext, context) {\n return Object.assign(Object.create(parentContext), context);\n}\n\nfunction _lookup(table, value, cmp) {\n cmp = cmp || ((index) => table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let mid;\n while (hi - lo > 1) {\n mid = (lo + hi) >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n return {lo, hi};\n}\nconst _lookupByKey = (table, key, value) =>\n _lookup(table, value, index => table[index][key] < value);\nconst _rlookupByKey = (table, key, value) =>\n _lookup(table, value, index => table[index][key] >= value);\nfunction _filterBetween(values, min, max) {\n let start = 0;\n let end = values.length;\n while (start < end && values[start] < min) {\n start++;\n }\n while (end > start && values[end - 1] > max) {\n end--;\n }\n return start > 0 || end < values.length\n ? values.slice(start, end)\n : values;\n}\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\nfunction listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [listener]\n }\n });\n arrayEvents.forEach((key) => {\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value(...args) {\n const res = base.apply(this, args);\n array._chartjs.listeners.forEach((object) => {\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n return res;\n }\n });\n });\n}\nfunction unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n if (listeners.length > 0) {\n return;\n }\n arrayEvents.forEach((key) => {\n delete array[key];\n });\n delete array._chartjs;\n}\nfunction _arrayUnique(items) {\n const set = new Set();\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n set.add(items[i]);\n }\n if (set.size === ilen) {\n return items;\n }\n return Array.from(set);\n}\n\nfunction _createResolver(scopes, prefixes = [''], rootScopes = scopes, fallback, getTarget = () => scopes[0]) {\n if (!defined(fallback)) {\n fallback = _resolve('_fallback', scopes);\n }\n const cache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: rootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: (scope) => _createResolver([scope, ...scopes], prefixes, rootScopes, fallback),\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete target._keys;\n delete scopes[0][prop];\n return true;\n },\n get(target, prop) {\n return _cached(target, prop,\n () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n getOwnPropertyDescriptor(target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n has(target, prop) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n ownKeys(target) {\n return getKeysFromAllScopes(target);\n },\n set(target, prop, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value;\n delete target._keys;\n return true;\n }\n });\n}\nfunction _attachContext(proxy, context, subProxy, descriptorDefaults) {\n const cache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: (ctx) => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: (scope) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete proxy[prop];\n return true;\n },\n get(target, prop, receiver) {\n return _cached(target, prop,\n () => _resolveWithContext(target, prop, receiver));\n },\n getOwnPropertyDescriptor(target, prop) {\n return target._descriptors.allKeys\n ? Reflect.has(proxy, prop) ? {enumerable: true, configurable: true} : undefined\n : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(proxy);\n },\n has(target, prop) {\n return Reflect.has(proxy, prop);\n },\n ownKeys() {\n return Reflect.ownKeys(proxy);\n },\n set(target, prop, value) {\n proxy[prop] = value;\n delete target[prop];\n return true;\n }\n });\n}\nfunction _descriptors(proxy, defaults = {scriptable: true, indexable: true}) {\n const {_scriptable = defaults.scriptable, _indexable = defaults.indexable, _allKeys = defaults.allKeys} = proxy;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n };\n}\nconst readKey = (prefix, name) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value) => isObject(value) && prop !== 'adapters' &&\n (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n if (Object.prototype.hasOwnProperty.call(target, prop)) {\n return target[prop];\n }\n const value = resolve();\n target[prop] = value;\n return value;\n}\nfunction _resolveWithContext(target, prop, receiver) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n let value = _proxy[prop];\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\nfunction _resolveScriptable(prop, value, target, receiver) {\n const {_proxy, _context, _subProxy, _stack} = target;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n value = value(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\nfunction _resolveArray(prop, value, target, isIndexable) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n if (defined(_context.index) && isIndexable(prop)) {\n value = value[_context.index % value.length];\n } else if (isObject(value[0])) {\n const arr = value;\n const scopes = _proxy._scopes.filter(s => s !== arr);\n value = [];\n for (const item of arr) {\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\nfunction resolveFallback(fallback, prop, value) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nconst getScope = (key, parent) => key === true ? parent\n : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n for (const parent of parentScopes) {\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\n if (defined(fallback) && fallback !== key && fallback !== parentFallback) {\n return fallback;\n }\n } else if (scope === false && defined(parentFallback) && key !== parentFallback) {\n return null;\n }\n }\n return false;\n}\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [...parentScopes, ...rootScopes];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (defined(fallback) && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [''], rootScopes, fallback,\n () => subGetTarget(resolver, prop, value));\n}\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n while (key) {\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\nfunction subGetTarget(resolver, prop, value) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n return value;\n }\n return target;\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n let value;\n for (const prefix of prefixes) {\n value = _resolve(readKey(prefix, prop), scopes);\n if (defined(value)) {\n return needsSubResolver(prop, value)\n ? createSubResolver(scopes, proxy, prop, value)\n : value;\n }\n }\n}\nfunction _resolve(key, scopes) {\n for (const scope of scopes) {\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (defined(value)) {\n return value;\n }\n }\n}\nfunction getKeysFromAllScopes(target) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n const set = new Set();\n for (const scope of scopes) {\n for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n set.add(key);\n }\n }\n return Array.from(set);\n}\n\nconst EPSILON = Number.EPSILON || 1e-14;\nconst getPoint = (points, i) => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis) => indexAxis === 'x' ? 'y' : 'x';\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n const fa = t * s01;\n const fb = t * s12;\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\nfunction monotoneAdjust(points, deltaK, mK) {\n const pointsLen = points.length;\n let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen - 1; ++i) {\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\nfunction monotoneCompute(points, mK, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\nfunction splineCurveMonotone(points, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK = Array(pointsLen).fill(0);\n const mK = Array(pointsLen);\n let i, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i]\n : !pointAfter ? deltaK[i - 1]\n : (sign(deltaK[i - 1]) !== sign(deltaK[i])) ? 0\n : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n monotoneAdjust(points, deltaK, mK);\n monotoneCompute(points, mK, indexAxis);\n}\nfunction capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n}\nfunction capBezierPoints(points, area) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n if (!inArea) {\n continue;\n }\n point = points[i];\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\nfunction _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n let i, ilen, point, controlPoints;\n if (options.spanGaps) {\n points = points.filter((pt) => !pt.skip);\n }\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n point = points[i];\n controlPoints = splineCurve(\n prev,\n point,\n points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen],\n options.tension\n );\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n\nfunction _isDomSupported() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\nfunction _getParentNode(domNode) {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n return parent;\n}\nfunction parseMaxStyle(styleValue, node, parentProperty) {\n let valueInPixels;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n if (styleValue.indexOf('%') !== -1) {\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n return valueInPixels;\n}\nconst getComputedStyle = (element) => window.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles, style, suffix) {\n const result = {};\n suffix = suffix ? '-' + suffix : '';\n for (let i = 0; i < 4; i++) {\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\nconst useOffsetPos = (x, y, target) => (x > 0 || y > 0) && (!target || !target.shadowRoot);\nfunction getCanvasPosition(evt, canvas) {\n const e = evt.native || evt;\n const touches = e.touches;\n const source = touches && touches.length ? touches[0] : e;\n const {offsetX, offsetY} = source;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {x, y, box};\n}\nfunction getRelativePosition(evt, chart) {\n const {canvas, currentDevicePixelRatio} = chart;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const {x, y, box} = getCanvasPosition(evt, canvas);\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n let {width, height} = chart;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\nfunction getContainerSize(canvas, width, height) {\n let maxWidth, maxHeight;\n if (width === undefined || height === undefined) {\n const container = _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect();\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\nconst round1 = v => Math.round(v * 10) / 10;\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let {width, height} = containerSize;\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n if (width && !height) {\n height = round1(width / 2);\n }\n return {\n width,\n height\n };\n}\nfunction retinaScale(chart, forceRatio, forceStyle) {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = Math.floor(chart.height * pixelRatio);\n const deviceWidth = Math.floor(chart.width * pixelRatio);\n chart.height = deviceHeight / pixelRatio;\n chart.width = deviceWidth / pixelRatio;\n const canvas = chart.canvas;\n if (canvas.style && (forceStyle || (!canvas.style.height && !canvas.style.width))) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n if (chart.currentDevicePixelRatio !== pixelRatio\n || canvas.height !== deviceHeight\n || canvas.width !== deviceWidth) {\n chart.currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n return false;\n}\nconst supportsEventListenerOptions = (function() {\n let passiveSupported = false;\n try {\n const options = {\n get passive() {\n passiveSupported = true;\n return false;\n }\n };\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (e) {\n }\n return passiveSupported;\n}());\nfunction readUsedSize(element, property) {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n\nfunction _pointInLine(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\nfunction _steppedInterpolation(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y\n : mode === 'after' ? t < 1 ? p1.y : p2.y\n : t > 0 ? p2.y : p1.y\n };\n}\nfunction _bezierInterpolation(p1, p2, t, mode) {\n const cp1 = {x: p1.cp2x, y: p1.cp2y};\n const cp2 = {x: p2.cp1x, y: p2.cp1y};\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\n}\n\nconst intlCache = new Map();\nfunction getNumberFormat(locale, options) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\nfunction formatNumber(num, locale, options) {\n return getNumberFormat(locale, options).format(num);\n}\n\nconst getRightToLeftAdapter = function(rectX, width) {\n return {\n x(x) {\n return rectX + rectX + width - x;\n },\n setWidth(w) {\n width = w;\n },\n textAlign(align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus(x, value) {\n return x - value;\n },\n leftForLtr(x, itemWidth) {\n return x - itemWidth;\n },\n };\n};\nconst getLeftToRightAdapter = function() {\n return {\n x(x) {\n return x;\n },\n setWidth(w) {\n },\n textAlign(align) {\n return align;\n },\n xPlus(x, value) {\n return x + value;\n },\n leftForLtr(x, _itemWidth) {\n return x;\n },\n };\n};\nfunction getRtlAdapter(rtl, rectX, width) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\nfunction overrideTextDirection(ctx, direction) {\n let style, original;\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [\n style.getPropertyValue('direction'),\n style.getPropertyPriority('direction'),\n ];\n style.setProperty('direction', direction, 'important');\n ctx.prevTextDirection = original;\n }\n}\nfunction restoreTextDirection(ctx, original) {\n if (original !== undefined) {\n delete ctx.prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle,\n };\n }\n return {\n between: _isBetween,\n compare: (a, b) => a - b,\n normalize: x => x\n };\n}\nfunction normalizeSegment({start, end, count, loop, style}) {\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\nfunction getSegment(segment, points, bounds) {\n const {property, start: startBound, end: endBound} = bounds;\n const {between, normalize} = propertyFn(property);\n const count = points.length;\n let {start, end, loop} = segment;\n let i, ilen;\n if (loop) {\n start += count;\n end += count;\n for (i = 0, ilen = count; i < ilen; ++i) {\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n if (end < start) {\n end += count;\n }\n return {start, end, loop, style: segment.style};\n}\nfunction _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [segment];\n }\n const {property, start: startBound, end: endBound} = bounds;\n const count = points.length;\n const {compare, between, normalize} = propertyFn(property);\n const {start, end, loop, style} = getSegment(segment, points, bounds);\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = () => inside || startIsBefore();\n const shouldStop = () => !inside || endIsBefore();\n for (let i = start, prev = start; i <= end; ++i) {\n point = points[i % count];\n if (point.skip) {\n continue;\n }\n value = normalize(point[property]);\n if (value === prevValue) {\n continue;\n }\n inside = between(value, startBound, endBound);\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({start: subStart, end: i, loop, count, style}));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n if (subStart !== null) {\n result.push(normalizeSegment({start: subStart, end, loop, count, style}));\n }\n return result;\n}\nfunction _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n for (let i = 0; i < segments.length; i++) {\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n if (loop && !spanGaps) {\n while (start < count && !points[start].skip) {\n start++;\n }\n }\n while (start < count && points[start].skip) {\n start++;\n }\n start %= count;\n if (loop) {\n end += start;\n }\n while (end > start && points[end % count].skip) {\n end--;\n }\n end %= count;\n return {start, end};\n}\nfunction solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n for (end = start + 1; end <= max; ++end) {\n const cur = points[end % count];\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({start: start % count, end: (end - 1) % count, loop});\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n if (last !== null) {\n result.push({start: start % count, end: last % count, loop});\n }\n return result;\n}\nfunction _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n if (!count) {\n return [];\n }\n const loop = !!line._loop;\n const {start, end} = findStartAndEnd(points, count, loop, spanGaps);\n if (spanGaps === true) {\n return splitByStyles(line, [{start, end, loop}], points, segmentOptions);\n }\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\nfunction splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const {_datasetIndex: datasetIndex, options: {spanGaps}} = line;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n function addStyle(s, e, l, st) {\n const dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n s += count;\n while (points[s % count].skip) {\n s -= dir;\n }\n while (points[e % count].skip) {\n e += dir;\n }\n if (s % count !== e % count) {\n result.push({start: s % count, end: e % count, loop: l, style: st});\n prevStyle = st;\n start = e % count;\n }\n }\n for (const segment of segments) {\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for (i = start + 1; i <= segment.end; i++) {\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex\n })));\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\n }\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n return result;\n}\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\nfunction styleChanged(style, prevStyle) {\n return prevStyle && JSON.stringify(style) !== JSON.stringify(prevStyle);\n}\n\nexport { _toLeftRightCenter as $, _rlookupByKey as A, getAngleFromPoint as B, toPadding as C, each as D, getMaximumSize as E, _getParentNode as F, readUsedSize as G, HALF_PI as H, throttled as I, supportsEventListenerOptions as J, _isDomSupported as K, log10 as L, _factorize as M, finiteOrDefault as N, callback as O, PI as P, _addGrace as Q, toDegrees as R, _measureText as S, TAU as T, _int16Range as U, _alignPixel as V, clipArea as W, renderText as X, unclipArea as Y, toFont as Z, _arrayUnique as _, resolve as a, _angleDiff as a$, _alignStartEnd as a0, overrides as a1, merge as a2, _capitalize as a3, descriptors as a4, isFunction as a5, _attachContext as a6, _createResolver as a7, _descriptors as a8, mergeIf as a9, restoreTextDirection as aA, noop as aB, distanceBetweenPoints as aC, _setMinAndMaxByKey as aD, niceNum as aE, almostWhole as aF, almostEquals as aG, _decimalPlaces as aH, _longestText as aI, _filterBetween as aJ, _lookup as aK, getHoverColor as aL, clone$1 as aM, _merger as aN, _mergerIf as aO, _deprecated as aP, toFontString as aQ, splineCurve as aR, splineCurveMonotone as aS, getStyle as aT, fontString as aU, toLineHeight as aV, PITAU as aW, INFINITY as aX, RAD_PER_DEG as aY, QUARTER_PI as aZ, TWO_THIRDS_PI as a_, uid as aa, debounce as ab, retinaScale as ac, clearCanvas as ad, setsEqual as ae, _elementsEqual as af, _isClickEvent as ag, _isBetween as ah, _readValueToProps as ai, _updateBezierControlPoints as aj, _computeSegments as ak, _boundSegments as al, _steppedInterpolation as am, _bezierInterpolation as an, _pointInLine as ao, _steppedLineTo as ap, _bezierCurveTo as aq, drawPoint as ar, addRoundedRectPath as as, toTRBL as at, toTRBLCorners as au, _boundSegment as av, _normalizeAngle as aw, getRtlAdapter as ax, overrideTextDirection as ay, _textX as az, isArray as b, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, createContext as h, isObject as i, defined as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, isNumber as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _limitValue as w, _lookupByKey as x, getRelativePosition as y, _isPointInArea as z };\n","/*!\n * Chart.js v3.7.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nexport { H as HALF_PI, aX as INFINITY, P as PI, aW as PITAU, aZ as QUARTER_PI, aY as RAD_PER_DEG, T as TAU, a_ as TWO_THIRDS_PI, Q as _addGrace, V as _alignPixel, a0 as _alignStartEnd, p as _angleBetween, a$ as _angleDiff, _ as _arrayUnique, a6 as _attachContext, aq as _bezierCurveTo, an as _bezierInterpolation, av as _boundSegment, al as _boundSegments, a3 as _capitalize, ak as _computeSegments, a7 as _createResolver, aH as _decimalPlaces, aP as _deprecated, a8 as _descriptors, af as _elementsEqual, M as _factorize, aJ as _filterBetween, F as _getParentNode, U as _int16Range, ah as _isBetween, ag as _isClickEvent, K as _isDomSupported, z as _isPointInArea, w as _limitValue, aI as _longestText, aK as _lookup, x as _lookupByKey, S as _measureText, aN as _merger, aO as _mergerIf, aw as _normalizeAngle, ao as _pointInLine, ai as _readValueToProps, A as _rlookupByKey, aD as _setMinAndMaxByKey, am as _steppedInterpolation, ap as _steppedLineTo, az as _textX, $ as _toLeftRightCenter, aj as _updateBezierControlPoints, as as addRoundedRectPath, aG as almostEquals, aF as almostWhole, O as callback, ad as clearCanvas, W as clipArea, aM as clone, c as color, h as createContext, ab as debounce, j as defined, aC as distanceBetweenPoints, ar as drawPoint, D as each, e as easingEffects, N as finiteOrDefault, aU as fontString, o as formatNumber, B as getAngleFromPoint, aL as getHoverColor, E as getMaximumSize, y as getRelativePosition, ax as getRtlAdapter, aT as getStyle, b as isArray, g as isFinite, a5 as isFunction, k as isNullOrUndef, q as isNumber, i as isObject, l as listenArrayEvents, L as log10, a2 as merge, a9 as mergeIf, aE as niceNum, aB as noop, ay as overrideTextDirection, G as readUsedSize, X as renderText, r as requestAnimFrame, a as resolve, f as resolveObjectKey, aA as restoreTextDirection, ac as retinaScale, ae as setsEqual, s as sign, aR as splineCurve, aS as splineCurveMonotone, J as supportsEventListenerOptions, I as throttled, R as toDegrees, n as toDimension, Z as toFont, aQ as toFontString, aV as toLineHeight, C as toPadding, m as toPercentage, t as toRadians, at as toTRBL, au as toTRBLCorners, aa as uid, Y as unclipArea, u as unlistenArrayEvents, v as valueOrDefault } from './chunks/helpers.segment.js';\n","export * from '../dist/helpers.esm';\n","/*!\n * chartjs-plugin-deferred v2.0.0-beta.1\n * https://chartjs-plugin-deferred.netlify.app\n * (c) 2016-2022 chartjs-plugin-deferred contributors\n * Released under the MIT license\n */\nimport { requestAnimFrame, getStyle } from 'chart.js/helpers';\n\nvar STUB_KEY = '$chartjs_deferred';\nvar MODEL_KEY = '$deferred';\n\n/**\n * Plugin based on discussion from Chart.js issue #2745.\n * @see https://github.com/chartjs/Chart.js/issues/2745\n */\n\nfunction defer(fn, delay) {\n if (delay) {\n window.setTimeout(fn, delay);\n } else {\n requestAnimFrame.call(window, fn);\n }\n}\n\nfunction computeOffset(value, base) {\n var number = parseInt(value, 10);\n if (isNaN(number)) {\n return 0;\n } else if (typeof value === 'string' && value.indexOf('%') !== -1) {\n return number / 100 * base;\n }\n return number;\n}\n\nfunction chartInViewport(chart) {\n var options = chart[MODEL_KEY].options;\n var canvas = chart.canvas;\n\n // https://stackoverflow.com/a/21696585\n if (!canvas || canvas.offsetParent === null) {\n return false;\n }\n\n var rect = canvas.getBoundingClientRect();\n var dy = computeOffset(options.yOffset || 0, rect.height);\n var dx = computeOffset(options.xOffset || 0, rect.width);\n\n return rect.right - dx >= 0\n && rect.bottom - dy >= 0\n && rect.left + dx <= window.innerWidth\n && rect.top + dy <= window.innerHeight;\n}\n\nfunction onScroll(event) {\n var node = event.target;\n var stub = node[STUB_KEY];\n if (stub.ticking) {\n return;\n }\n\n stub.ticking = true;\n defer(function() {\n var charts = stub.charts.slice();\n var ilen = charts.length;\n var chart, i;\n\n for (i = 0; i < ilen; ++i) {\n chart = charts[i];\n if (chartInViewport(chart)) {\n unwatch(chart); // eslint-disable-line\n chart[MODEL_KEY].appeared = true;\n chart.update();\n }\n }\n\n stub.ticking = false;\n });\n}\n\nfunction isScrollable(node) {\n var type = node.nodeType;\n if (type === Node.ELEMENT_NODE) {\n var overflowX = getStyle(node, 'overflow-x');\n var overflowY = getStyle(node, 'overflow-y');\n return overflowX === 'auto' || overflowX === 'scroll'\n || overflowY === 'auto' || overflowY === 'scroll';\n }\n\n return node.nodeType === Node.DOCUMENT_NODE;\n}\n\nfunction watch(chart) {\n var canvas = chart.canvas;\n var parent = canvas.parentElement;\n var stub, charts;\n\n while (parent) {\n if (isScrollable(parent)) {\n stub = parent[STUB_KEY] || (parent[STUB_KEY] = {});\n charts = stub.charts || (stub.charts = []);\n if (charts.length === 0) {\n parent.addEventListener('scroll', onScroll);\n }\n\n charts.push(chart);\n chart[MODEL_KEY].elements.push(parent);\n }\n\n parent = parent.parentElement || parent.ownerDocument;\n }\n}\n\nfunction unwatch(chart) {\n chart[MODEL_KEY].elements.forEach(function(element) {\n var charts = element[STUB_KEY].charts;\n charts.splice(charts.indexOf(chart), 1);\n if (!charts.length) {\n element.removeEventListener('scroll', onScroll);\n delete element[STUB_KEY];\n }\n });\n\n chart[MODEL_KEY].elements = [];\n}\n\nvar plugin = {\n id: 'deferred',\n\n defaults: {\n xOffset: 0,\n yOffset: 0,\n delay: 0\n },\n\n beforeInit: function(chart, _, options) {\n chart[MODEL_KEY] = {\n options: options,\n appeared: false,\n delayed: false,\n loaded: false,\n elements: []\n };\n\n watch(chart);\n },\n\n beforeDatasetsUpdate: function(chart, _, options) {\n var model = chart[MODEL_KEY];\n if (!model.loaded) {\n if (!model.appeared && !chartInViewport(chart)) {\n // cancel the datasets update\n return false;\n }\n\n model.appeared = true;\n model.loaded = true;\n unwatch(chart);\n\n if (options.delay > 0) {\n model.delayed = true;\n defer(function() {\n // Ensure the chart instance is still alive. It may have been destroyed\n // during a delay and calling `chart.update()` will fail. The most common\n // reason for such scenario is user navigation.\n // https://github.com/chartjs/chartjs-plugin-deferred/pull/14\n if (chart.ctx) {\n model.delayed = false;\n chart.update();\n }\n }, options.delay);\n\n return false;\n }\n }\n\n if (model.delayed) {\n // in case of delayed update, ensure to block external requests, such\n // as interacting with the legend label, or direct calls to update()\n return false;\n }\n },\n\n destroy: function(chart) {\n unwatch(chart);\n }\n};\n\nexport { plugin as default };\n","/**\n * Dom7 4.0.4\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2022, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: January 11, 2022\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n if (typeof items === 'number') {\n super(items);\n } else {\n super(...(items || []));\n makeReactive(this);\n }\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","/**\n * fitty v2.3.6 - Snugly resizes text to fit its parent container\n * Copyright (c) 2022 Rik Schennink (https://pqina.nl/)\n */\n\nvar e=function(e){if(e){var t=function(e){return[].slice.call(e)},n=0,i=1,r=2,o=3,a=[],l=null,u=\"requestAnimationFrame\"in e?function(){e.cancelAnimationFrame(l),l=e.requestAnimationFrame((function(){return s(a.filter((function(e){return e.dirty&&e.active})))}))}:function(){},c=function(e){return function(){a.forEach((function(t){return t.dirty=e})),u()}},s=function(e){e.filter((function(e){return!e.styleComputed})).forEach((function(e){e.styleComputed=m(e)})),e.filter(y).forEach(v);var t=e.filter(p);t.forEach(d),t.forEach((function(e){v(e),f(e)})),t.forEach(S)},f=function(e){return e.dirty=n},d=function(e){e.availableWidth=e.element.parentNode.clientWidth,e.currentWidth=e.element.scrollWidth,e.previousFontSize=e.currentFontSize,e.currentFontSize=Math.min(Math.max(e.minSize,e.availableWidth/e.currentWidth*e.previousFontSize),e.maxSize),e.whiteSpace=e.multiLine&&e.currentFontSize===e.minSize?\"normal\":\"nowrap\"},p=function(e){return e.dirty!==r||e.dirty===r&&e.element.parentNode.clientWidth!==e.availableWidth},m=function(t){var n=e.getComputedStyle(t.element,null);return t.currentFontSize=parseFloat(n.getPropertyValue(\"font-size\")),t.display=n.getPropertyValue(\"display\"),t.whiteSpace=n.getPropertyValue(\"white-space\"),!0},y=function(e){var t=!1;return!e.preStyleTestCompleted&&(/inline-/.test(e.display)||(t=!0,e.display=\"inline-block\"),\"nowrap\"!==e.whiteSpace&&(t=!0,e.whiteSpace=\"nowrap\"),e.preStyleTestCompleted=!0,t)},v=function(e){e.element.style.whiteSpace=e.whiteSpace,e.element.style.display=e.display,e.element.style.fontSize=e.currentFontSize+\"px\"},S=function(e){e.element.dispatchEvent(new CustomEvent(\"fit\",{detail:{oldValue:e.previousFontSize,newValue:e.currentFontSize,scaleFactor:e.currentFontSize/e.previousFontSize}}))},h=function(e,t){return function(){e.dirty=t,e.active&&u()}},w=function(e){return function(){a=a.filter((function(t){return t.element!==e.element})),e.observeMutations&&e.observer.disconnect(),e.element.style.whiteSpace=e.originalStyle.whiteSpace,e.element.style.display=e.originalStyle.display,e.element.style.fontSize=e.originalStyle.fontSize}},b=function(e){return function(){e.active||(e.active=!0,u())}},z=function(e){return function(){return e.active=!1}},F=function(e){e.observeMutations&&(e.observer=new MutationObserver(h(e,i)),e.observer.observe(e.element,e.observeMutations))},g={minSize:16,maxSize:512,multiLine:!0,observeMutations:\"MutationObserver\"in e&&{subtree:!0,childList:!0,characterData:!0}},W=null,E=function(){e.clearTimeout(W),W=e.setTimeout(c(r),x.observeWindowDelay)},M=[\"resize\",\"orientationchange\"];return Object.defineProperty(x,\"observeWindow\",{set:function(t){var n=\"\".concat(t?\"add\":\"remove\",\"EventListener\");M.forEach((function(t){e[n](t,E)}))}}),x.observeWindow=!0,x.observeWindowDelay=100,x.fitAll=c(o),x}function C(e,t){var n=Object.assign({},g,t),i=e.map((function(e){var t=Object.assign({},n,{element:e,active:!0});return function(e){e.originalStyle={whiteSpace:e.element.style.whiteSpace,display:e.element.style.display,fontSize:e.element.style.fontSize},F(e),e.newbie=!0,e.dirty=!0,a.push(e)}(t),{element:e,fit:h(t,o),unfreeze:b(t),freeze:z(t),unsubscribe:w(t)}}));return u(),i}function x(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return\"string\"==typeof e?C(t(document.querySelectorAll(e)),n):C([e],n)[0]}}(\"undefined\"==typeof window?null:window);export default e;\n","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n\n return breakpoint || 'max';\n}","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n setBreakpoint,\n getBreakpoint\n};","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const {\n activeIndex,\n initialized,\n loopedSlides = 0,\n params,\n $el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n\n swiper.emitContainerClasses();\n }\n\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}","function checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default {\n checkOverflow\n};","function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n $el,\n device,\n support\n } = swiper; // prettier-ignore\n\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'pointer-events': !support.touch\n }, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n addClasses,\n removeClasses\n};","export default function removeClasses() {\n const swiper = this;\n const {\n $el,\n classNames\n } = swiper;\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\nimport eventsEmitter from './events-emitter.js';\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images\n};\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor() {\n let el;\n let params;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n } // Swiper Instance\n\n\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n }); // Extend defaults with modules params\n\n const swiperParams = extend({}, defaults, allModulesParams); // Extend defaults with passed params\n\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params); // add event listeners\n\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n } // Save Dom lib\n\n\n swiper.$ = $; // Extend Swiper\n\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEvents: function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3]\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2]\n };\n return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper'); // Init\n\n if (swiper.params.init) {\n swiper.init();\n } // Return app instance\n\n\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n\n swiper.emit('disable');\n }\n\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n\n getSlideClasses(slideEl) {\n const swiper = this;\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n\n if (exact === void 0) {\n exact = false;\n }\n\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n let translated;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (!translated) {\n setTranslate();\n }\n }\n\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n\n const swiper = this;\n const currentDirection = swiper.params.direction;\n\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.each(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true; // Find el\n\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n res.children = options => $el.children(options);\n\n return res;\n }\n\n return $el.children(getWrapperSelector());\n }; // Find Wrapper\n\n\n let $wrapperEl = getWrapper();\n\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each(slideEl => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n });\n return true;\n }\n\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit'); // Set breakpoint\n\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n } // Add Classes\n\n\n swiper.addClasses(); // Create loop\n\n if (swiper.params.loop) {\n swiper.loopCreate();\n } // Update size\n\n\n swiper.updateSize(); // Update slides\n\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n } // Set Grab Cursor\n\n\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n } // Slide To Initial Slide\n\n\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n } // Attach events\n\n\n swiper.attachEvents(); // Init Flag\n\n swiper.initialized = true; // Emit\n\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n\n const swiper = this;\n const {\n params,\n $el,\n $wrapperEl,\n slides\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy'); // Init Flag\n\n swiper.initialized = false; // Detach events\n\n swiper.detachEvents(); // Destroy loop\n\n if (params.loop) {\n swiper.loopDestroy();\n } // Cleanup styles\n\n\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n\n if (slides && slides.length) {\n slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy'); // Detach emitter events\n\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n\n swiper.destroyed = true;\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n\n Swiper.installModule(module);\n return Swiper;\n }\n\n}\n\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\nexport default Swiper;","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};","/* eslint-disable no-underscore-dangle */\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n\n once(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n\n function onceHandler() {\n self.off(events, onceHandler);\n\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n handler.apply(self, args);\n }\n\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n\n return self;\n },\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n\n emit() {\n const self = this;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n\n};","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nlet dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n touchEvents,\n el,\n wrapperEl,\n device,\n support\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method; // Touch Events\n\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n passive: false,\n capture\n } : capture);\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n } // Resize handler\n\n\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n};\n\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n support\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents\n};","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}","export default function onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n } // Save locks\n\n\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper; // Disable locks on resize\n\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n } // Return locks after resize\n\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}","export default function onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n } // eslint-disable-next-line\n\n\n if (swiper.translate === -0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}","import { now, nextTick } from '../../shared/utils.js';\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n\n data.allowTouchCallbacks = false;\n\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n\n data.isMoved = false;\n data.startMoving = false;\n return;\n } // Return Grab Cursor\n\n\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n } // Time diff\n\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\n swiper.emit('tap click', e);\n\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n } // Find current slide\n\n\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n } // Find current slide size\n\n\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n return;\n }\n\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n\n if (!swiper.allowTouchMove) {\n if (!$(e.target).is(data.focusableElements)) {\n swiper.allowClick = false;\n }\n\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n\n return;\n }\n\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n\n if (!data.startMoving) {\n return;\n }\n\n swiper.allowClick = false;\n\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n\n data.allowMomentumBounce = false; // Grab Cursor\n\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n\n swiper.emit('sliderFirstMove', e);\n }\n\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n } // Directions locks\n\n\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n } // Threshold\n\n\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n } // Update progress\n\n\n swiper.updateProgress(data.currentTranslate); // Update translate\n\n swiper.setTranslate(data.currentTranslate);\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n return found || __closestFrom(el.getRootNode().host);\n }\n\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return; // change target el for shadow root component\n\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n\n if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n $targetEl = $(event.path[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element\n\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, e.target) : $targetEl.closest(noSwipingSelector)[0])) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n\n if ($targetEl.is(data.focusableElements)) {\n preventDefault = false;\n\n if ($targetEl[0].nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n\n if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n e.preventDefault();\n }\n }\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n\n swiper.emit('touchStart', e);\n}","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n setGrabCursor,\n unsetGrabCursor\n};","export default function setGrabCursor(moving) {\n const swiper = this;\n if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}","export default function unsetGrabCursor() {\n const swiper = this;\n\n if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\nexport default {\n loadImage,\n preloadImages\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n\n function onReady() {\n if (callback) callback();\n }\n\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n\n if (sizes) {\n image.sizes = sizes;\n }\n\n if (srcset) {\n image.srcset = srcset;\n }\n\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n }\n}","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n loopCreate,\n loopFix,\n loopDestroy\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n $wrapperEl\n } = swiper; // Remove duplicated slides\n\n const $selector = $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $selector.append(blankNode);\n }\n\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n\n if (index < swiper.loopedSlides) {\n appendSlides.push(el);\n }\n\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n prependSlides.push(el);\n }\n\n slide.attr('data-swiper-slide-index', index);\n });\n\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}","export default function loopDestroy() {\n const swiper = this;\n const {\n $wrapperEl,\n params,\n slides\n } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}","export default function loopFix() {\n const swiper = this;\n swiper.emit('beforeLoopFix');\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n}","import { extend } from '../shared/utils.js';\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}","import { getWindow } from 'ssr-window';\nexport default function Observer(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\n\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n\n const init = () => {\n if (!swiper.params.observer) return;\n\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n } // Observe container\n\n\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren\n }); // Observe wrapper\n\n attach(swiper.$wrapperEl[0], {\n attributes: false\n });\n };\n\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}","import { getWindow } from 'ssr-window';\nexport default function Resize(_ref) {\n let {\n swiper,\n on,\n emit\n } = _ref;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let {\n contentBoxSize,\n contentRect,\n target\n } = _ref2;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n const {\n animating,\n enabled,\n params\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n const {\n params,\n animating,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n\n let prevIndex = 0;\n\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`);\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex]; // Update progress\n\n swiper.updateProgress(translate); // Normalize slideIndex\n\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n } // Directions locks\n\n\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex); // Update Height\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n swiper.updateSlidesClasses();\n\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n\n return false;\n }\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n\n return true;\n}","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n $wrapperEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed, runCallbacks, internal, threshold) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (threshold === void 0) {\n threshold = 0.5;\n }\n\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}","export default function slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n let newIndex = index;\n\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n setTransition,\n transitionStart,\n transitionEnd\n};","export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}","export default function transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n\n swiper.emit(`slideChangeTransition${step}`);\n\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}","import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n $wrapperEl\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}","export default function minTranslate() {\n return -this.snapGrid[0];\n}","export default function setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n $wrapperEl,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress\n\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n\n if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n } // Normalize slideIndex\n\n\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n\n return;\n } // Get real index\n\n\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}","export default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0];\n }\n\n return swiper.slides.eq(index)[0];\n }; // Find slides currently in view\n\n\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n swiper.visibleSlides.each(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n } // Find new height from highest slide in view\n\n\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n } // Update Height\n\n\n if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}","import $ from '../../shared/dom.js';\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}","export default function updateProgress(translate) {\n const swiper = this;\n\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n } // Subtract paddings\n\n\n width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}","import { setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n const swiper = this;\n\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n } // prettier-ignore\n\n\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n const {\n $wrapperEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n\n if (typeof swiperSize === 'undefined') {\n return;\n }\n\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween; // reset margins\n\n if (rtl) slides.css({\n marginLeft: '',\n marginBottom: '',\n marginTop: ''\n });else slides.css({\n marginRight: '',\n marginBottom: '',\n marginTop: ''\n }); // reset cssMode offsets\n\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n } // Calc slides\n\n\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide[0];\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({\n width: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n } // Remove last grid elements depending on width\n\n\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n\n snapGrid = newSlidesGrid;\n\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n\n if (slideIndex === slides.length - 1) {\n return false;\n }\n\n return true;\n }).css({\n [key]: `${spaceBetween}px`\n });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.$el.hasClass(backFaceHiddenClass);\n\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.$el.addClass(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.$el.removeClass(backFaceHiddenClass);\n }\n }\n}","export default function updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n $wrapperEl,\n activeIndex,\n realIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n let activeSlide;\n\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n } // Active classes\n\n\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n }\n } // Next Slide\n\n\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n } // Prev Slide\n\n\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n }\n\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n }\n }\n\n swiper.emitSlidesClasses();\n}","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate; // Visible Slides\n\n slides.removeClass(params.slideVisibleClass);\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n\n swiper.visibleSlides = $(swiper.visibleSlides);\n}","import classesToSelector from '../../shared/classes-to-selector.js';\nimport $ from '../../shared/dom.js';\nexport default function A11y(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group'\n }\n });\n let liveRegion = null;\n\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n }\n\n function getRandomNumber(size) {\n if (size === void 0) {\n size = 16;\n }\n\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n\n function makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n }\n\n function makeElNotFocusable($el) {\n $el.attr('tabIndex', '-1');\n }\n\n function addElRole($el, role) {\n $el.attr('role', role);\n }\n\n function addElRoleDescription($el, description) {\n $el.attr('aria-roledescription', description);\n }\n\n function addElControls($el, controls) {\n $el.attr('aria-controls', controls);\n }\n\n function addElLabel($el, label) {\n $el.attr('aria-label', label);\n }\n\n function addElId($el, id) {\n $el.attr('id', id);\n }\n\n function addElLive($el, live) {\n $el.attr('aria-live', live);\n }\n\n function disableEl($el) {\n $el.attr('aria-disabled', true);\n }\n\n function enableEl($el) {\n $el.attr('aria-disabled', false);\n }\n\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const $targetEl = $(e.target);\n\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n\n if (swiper.pagination && $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))) {\n $targetEl[0].click();\n }\n }\n\n function updateNavigation() {\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n disableEl($prevEl);\n makeElNotFocusable($prevEl);\n } else {\n enableEl($prevEl);\n makeElFocusable($prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n disableEl($nextEl);\n makeElNotFocusable($nextEl);\n } else {\n enableEl($nextEl);\n makeElFocusable($nextEl);\n }\n }\n }\n\n function hasPagination() {\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n\n function hasClickablePagination() {\n return hasPagination() && swiper.params.pagination.clickable;\n }\n\n function updatePagination() {\n const params = swiper.params.a11y;\n if (!hasPagination()) return;\n swiper.pagination.bullets.each(bulletEl => {\n const $bulletEl = $(bulletEl);\n\n if (swiper.params.pagination.clickable) {\n makeElFocusable($bulletEl);\n\n if (!swiper.params.pagination.renderBullet) {\n addElRole($bulletEl, 'button');\n addElLabel($bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1));\n }\n }\n\n if ($bulletEl.is(`.${swiper.params.pagination.bulletActiveClass}`)) {\n $bulletEl.attr('aria-current', 'true');\n } else {\n $bulletEl.removeAttr('aria-current');\n }\n });\n }\n\n const initNavEl = ($el, wrapperId, message) => {\n makeElFocusable($el);\n\n if ($el[0].tagName !== 'BUTTON') {\n addElRole($el, 'button');\n $el.on('keydown', onEnterOrSpaceKey);\n }\n\n addElLabel($el, message);\n addElControls($el, wrapperId);\n };\n\n const handleFocus = e => {\n const slideEl = e.target.closest(`.${swiper.params.slideClass}`);\n if (!slideEl || !swiper.slides.includes(slideEl)) return;\n const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n if (isActive || isVisible) return;\n swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n };\n\n function init() {\n const params = swiper.params.a11y;\n swiper.$el.append(liveRegion); // Container\n\n const $containerEl = swiper.$el;\n\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);\n }\n\n if (params.containerMessage) {\n addElLabel($containerEl, params.containerMessage);\n } // Wrapper\n\n\n const $wrapperEl = swiper.$wrapperEl;\n const wrapperId = $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId($wrapperEl, wrapperId);\n addElLive($wrapperEl, live); // Slide\n\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);\n }\n\n addElRole($(swiper.slides), params.slideRole);\n const slidesLength = swiper.params.loop ? swiper.slides.filter(el => !el.classList.contains(swiper.params.slideDuplicateClass)).length : swiper.slides.length;\n swiper.slides.each((slideEl, index) => {\n const $slideEl = $(slideEl);\n const slideIndex = swiper.params.loop ? parseInt($slideEl.attr('data-swiper-slide-index'), 10) : index;\n const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel($slideEl, ariaLabelMessage);\n }); // Navigation\n\n let $nextEl;\n let $prevEl;\n\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl && $nextEl.length) {\n initNavEl($nextEl, wrapperId, params.nextSlideMessage);\n }\n\n if ($prevEl && $prevEl.length) {\n initNavEl($prevEl, wrapperId, params.prevSlideMessage);\n } // Pagination\n\n\n if (hasClickablePagination()) {\n swiper.pagination.$el.on('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);\n } // Tab focus\n\n\n swiper.$el.on('focus', handleFocus, true);\n }\n\n function destroy() {\n if (liveRegion && liveRegion.length > 0) liveRegion.remove();\n let $nextEl;\n let $prevEl;\n\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl) {\n $nextEl.off('keydown', onEnterOrSpaceKey);\n }\n\n if ($prevEl) {\n $prevEl.off('keydown', onEnterOrSpaceKey);\n } // Pagination\n\n\n if (hasClickablePagination()) {\n swiper.pagination.$el.off('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);\n } // Tab focus\n\n\n swiper.$el.off('focus', handleFocus, true);\n }\n\n on('beforeInit', () => {\n liveRegion = $(``);\n });\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n });\n on('fromEdge toEdge afterInit lock unlock', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}","/* eslint no-underscore-dangle: \"off\" */\n\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick } from '../../shared/utils.js';\nexport default function Autoplay(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n let timeout;\n swiper.autoplay = {\n running: false,\n paused: false\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n\n function run() {\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n\n clearTimeout(timeout);\n timeout = nextTick(() => {\n let autoplayResult;\n\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isBeginning) {\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isEnd) {\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n\n if (swiper.params.cssMode && swiper.autoplay.running) run();else if (autoplayResult === false) {\n run();\n }\n }, delay);\n }\n\n function start() {\n if (typeof timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n emit('autoplayStart');\n run();\n return true;\n }\n\n function stop() {\n if (!swiper.autoplay.running) return false;\n if (typeof timeout === 'undefined') return false;\n\n if (timeout) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n\n swiper.autoplay.running = false;\n emit('autoplayStop');\n return true;\n }\n\n function pause(speed) {\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (timeout) clearTimeout(timeout);\n swiper.autoplay.paused = true;\n\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n run();\n } else {\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);\n });\n }\n }\n\n function onVisibilityChange() {\n const document = getDocument();\n\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n pause();\n }\n\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n run();\n swiper.autoplay.paused = false;\n }\n }\n\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== swiper.$wrapperEl[0]) return;\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n swiper.autoplay.paused = false;\n\n if (!swiper.autoplay.running) {\n stop();\n } else {\n run();\n }\n }\n\n function onMouseEnter() {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n emit('autoplayPause');\n pause();\n }\n\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n }\n\n function onMouseLeave() {\n if (swiper.params.autoplay.disableOnInteraction) {\n return;\n }\n\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n run();\n }\n\n function attachMouseEvents() {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.$el.on('mouseenter', onMouseEnter);\n swiper.$el.on('mouseleave', onMouseLeave);\n }\n }\n\n function detachMouseEvents() {\n swiper.$el.off('mouseenter', onMouseEnter);\n swiper.$el.off('mouseleave', onMouseLeave);\n }\n\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n start();\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n attachMouseEvents();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n stop();\n }\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n pause();\n }\n }\n });\n on('touchEnd', () => {\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n run();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n\n if (swiper.autoplay.running) {\n stop();\n }\n\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n });\n Object.assign(swiper.autoplay, {\n pause,\n run,\n start,\n stop\n });\n}","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { nextTick } from '../../shared/utils.js';\nexport default function Controller(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide' // or 'container'\n\n }\n });\n swiper.controller = {\n control: undefined\n };\n\n function LinearSpline(x, y) {\n const binarySearch = function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n\n return maxIndex;\n };\n }();\n\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1; // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n\n let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n\n return this;\n } // xxx: for now i will just save one spline function to to\n\n\n function getInterpolateFunction(c) {\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n }\n\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n\n if (duration !== 0) {\n c.transitionStart();\n\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n\n c.transitionEnd();\n });\n }\n }\n\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n\n function removeSpline() {\n if (!swiper.controller.control) return;\n\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n\n on('beforeInit', () => {\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n });\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition\n });\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectCards(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n cardsEffect: {\n slideShadows: true,\n transformEl: null\n }\n });\n\n const setTranslate = () => {\n const {\n slides,\n activeIndex\n } = swiper;\n const params = swiper.params.cardsEffect;\n const {\n startTranslate,\n isTouched\n } = swiper.touchEventsData;\n const currentTranslate = swiper.translate;\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = $slideEl[0].swiperSlideOffset;\n\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.$wrapperEl.transform(`translateX(${swiper.minTranslate()}px)`);\n }\n\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -2 * progress;\n let tXAdd = 8 - Math.abs(progress) * 0.75;\n const isSwipeToNext = (i === activeIndex || i === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n const isSwipeToPrev = (i === activeIndex || i === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n\n if (progress < 0) {\n // next\n tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px + (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n\n const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${rotate}deg)\n scale(${scaleString})\n `;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowEl = $slideEl.find('.swiper-slide-shadow');\n\n if ($shadowEl.length === 0) {\n $shadowEl = createShadow(params, $slideEl);\n }\n\n if ($shadowEl.length) $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.cardsEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl\n });\n };\n\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nexport default function EffectCoverflow(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true,\n transformEl: null\n }\n });\n\n const setTranslate = () => {\n const {\n width: swiperWidth,\n height: swiperHeight,\n slides,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth; // Each slide offset from center\n\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideSize = slidesSizesGrid[i];\n const slideOffset = $slideEl[0].swiperSlideOffset;\n const offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * params.modifier;\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; // var rotateZ = 0\n\n let translateZ = -translate * Math.abs(offsetMultiplier);\n let stretch = params.stretch; // Allow percentage to make a relative stretch for responsive sliders\n\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = parseFloat(params.stretch) / 100 * slideSize;\n }\n\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); // Fix for ultra small values\n\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(slideTransform);\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = createShadow(params, $slideEl, isHorizontal ? 'left' : 'top');\n }\n\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = createShadow(params, $slideEl, isHorizontal ? 'right' : 'bottom');\n }\n\n if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.coverflowEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n };\n\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true\n })\n });\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectCreative(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n creativeEffect: {\n transformEl: null,\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n }\n }\n });\n\n const getTranslateValue = value => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n\n const setTranslate = () => {\n const {\n slides,\n $wrapperEl,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.creativeEffect;\n const {\n progressMultiplier: multiplier\n } = params;\n const isCenteredSlides = swiper.params.centeredSlides;\n\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`);\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(Math.max($slideEl[0].progress, -params.limitProgress), params.limitProgress);\n let originalProgress = progress;\n\n if (!isCenteredSlides) {\n originalProgress = Math.min(Math.max($slideEl[0].originalProgress, -params.limitProgress), params.limitProgress);\n }\n\n const offset = $slideEl[0].swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1\n };\n\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n } // set translate\n\n\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n }); // set rotates\n\n r.forEach((value, index) => {\n r[index] = data.rotate[index] * Math.abs(progress * multiplier);\n });\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const translateString = t.join(', ');\n const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; // Set shadows\n\n if (custom && data.shadow || !custom) {\n let $shadowEl = $slideEl.children('.swiper-slide-shadow');\n\n if ($shadowEl.length === 0 && data.shadow) {\n $shadowEl = createShadow(params, $slideEl);\n }\n\n if ($shadowEl.length) {\n const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform).css({\n opacity: opacityString\n });\n\n if (data.origin) {\n $targetEl.css('transform-origin', data.origin);\n }\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.creativeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl,\n allSlides: true\n });\n };\n\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}","import $ from '../../shared/dom.js';\nimport effectInit from '../../shared/effect-init.js';\nexport default function EffectCube(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n }\n });\n\n const setTranslate = () => {\n const {\n $el,\n $wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let $cubeShadowEl;\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $wrapperEl.append($cubeShadowEl);\n }\n\n $cubeShadowEl.css({\n height: `${swiperWidth}px`\n });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $el.append($cubeShadowEl);\n }\n }\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let slideIndex = i;\n\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n\n const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n\n $slideEl.transform(transform);\n\n if (params.slideShadows) {\n // Set shadows\n let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n if (shadowBefore.length === 0) {\n shadowBefore = $(`
`);\n $slideEl.append(shadowBefore);\n }\n\n if (shadowAfter.length === 0) {\n shadowAfter = $(`
`);\n $slideEl.append(shadowAfter);\n }\n\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n }\n\n $wrapperEl.css({\n '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n 'transform-origin': `50% 50% -${swiperSize / 2}px`\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform(`translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);\n }\n }\n\n const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;\n $wrapperEl.transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);\n };\n\n const setTransition = duration => {\n const {\n $el,\n slides\n } = swiper;\n slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n };\n\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true\n })\n });\n}","import effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectFade(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n fadeEffect: {\n crossFade: false,\n transformEl: null\n }\n });\n\n const setTranslate = () => {\n const {\n slides\n } = swiper;\n const params = swiper.params.fadeEffect;\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = swiper.slides.eq(i);\n const offset = $slideEl[0].swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n\n const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.css({\n opacity: slideOpacity\n }).transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.fadeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl,\n allSlides: true\n });\n };\n\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectFlip(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n transformEl: null\n }\n });\n\n const setTranslate = () => {\n const {\n slides,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.flipEffect;\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let progress = $slideEl[0].progress;\n\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n\n const offset = $slideEl[0].swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (params.slideShadows) {\n // Set shadows\n let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n if (shadowBefore.length === 0) {\n shadowBefore = createShadow(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n\n if (shadowAfter.length === 0) {\n shadowAfter = createShadow(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.flipEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl\n });\n };\n\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}","import { now } from '../../shared/utils.js';\nexport default function freeMode(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n once\n } = _ref;\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02\n }\n });\n\n function onTouchStart() {\n const translate = swiper.getTranslate();\n swiper.setTranslate(translate);\n swiper.setTransition(0);\n swiper.touchEventsData.velocities.length = 0;\n swiper.freeMode.onTouchEnd({\n currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n });\n }\n\n function onTouchMove() {\n const {\n touchEventsData: data,\n touches\n } = swiper; // Velocity\n\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime\n });\n }\n\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now()\n });\n }\n\n function onTouchEnd(_ref2) {\n let {\n currentPos\n } = _ref2;\n const {\n params,\n $wrapperEl,\n rtlTranslate: rtl,\n snapGrid,\n touchEventsData: data\n } = swiper; // Time diff\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n\n return;\n }\n\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n } // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n\n\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n\n newPosition = -newPosition;\n }\n\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n } // Fix duration\n\n\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n\n Object.assign(swiper, {\n freeMode: {\n onTouchStart,\n onTouchMove,\n onTouchEnd\n }\n });\n}","export default function Grid(_ref) {\n let {\n swiper,\n extendParams\n } = _ref;\n extendParams({\n grid: {\n rows: 1,\n fill: 'column'\n }\n });\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n\n const initSlides = slidesLength => {\n const {\n slidesPerView\n } = swiper.params;\n const {\n rows,\n fill\n } = swiper.params.grid;\n slidesPerRow = slidesNumberEvenToRows / rows;\n numFullColumns = Math.floor(slidesLength / rows);\n\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n };\n\n const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {\n const {\n slidesPerGroup,\n spaceBetween\n } = swiper.params;\n const {\n rows,\n fill\n } = swiper.params.grid; // Set slides order\n\n let newSlideOrderIndex;\n let column;\n let row;\n\n if (fill === 'row' && slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n slide.css({\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex\n });\n } else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n\n if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n row += 1;\n\n if (row >= rows) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n\n slide.css(getDirectionLabel('margin-top'), row !== 0 ? spaceBetween && `${spaceBetween}px` : '');\n };\n\n const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {\n const {\n spaceBetween,\n centeredSlides,\n roundLengths\n } = swiper.params;\n const {\n rows\n } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n swiper.$wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + spaceBetween}px`\n });\n\n if (centeredSlides) {\n snapGrid.splice(0, snapGrid.length);\n const newSlidesGrid = [];\n\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n\n snapGrid.push(...newSlidesGrid);\n }\n };\n\n swiper.grid = {\n initSlides,\n updateSlide,\n updateWrapperSize\n };\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function HashNavigation(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n on\n } = _ref;\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false\n }\n });\n\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`).index();\n if (typeof newIndex === 'undefined') return;\n swiper.slideTo(newIndex);\n }\n };\n\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || '');\n emit('hashSet');\n } else {\n const slide = swiper.slides.eq(swiper.activeIndex);\n const hash = slide.attr('data-hash') || slide.attr('data-history');\n document.location.hash = hash || '';\n emit('hashSet');\n }\n };\n\n const init = () => {\n if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n initialized = true;\n const hash = document.location.hash.replace('#', '');\n\n if (hash) {\n const speed = 0;\n\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n\n if (swiper.params.hashNavigation.watchState) {\n $(window).on('hashchange', onHashChange);\n }\n };\n\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n $(window).off('hashchange', onHashChange);\n }\n };\n\n on('init', () => {\n if (swiper.params.hashNavigation.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.hashNavigation.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHash();\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHash();\n }\n });\n}","import { getWindow } from 'ssr-window';\nexport default function History(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides'\n }\n });\n let initialized = false;\n let paths = {};\n\n const slugify = text => {\n return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n };\n\n const getPathValues = urlOverride => {\n const window = getWindow();\n let location;\n\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n\n const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return {\n key,\n value\n };\n };\n\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n\n const slide = swiper.slides.eq(index);\n let value = slugify(slide.attr('data-history'));\n\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key}/${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key}/${value}`;\n }\n\n const currentState = window.history.state;\n\n if (currentState && currentState.value === value) {\n return;\n }\n\n if (swiper.params.history.replaceState) {\n window.history.replaceState({\n value\n }, null, value);\n } else {\n window.history.pushState({\n value\n }, null, value);\n }\n };\n\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHistory = slugify(slide.attr('data-history'));\n\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, swiper.paths.value, false);\n };\n\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) return;\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n\n const destroy = () => {\n const window = getWindow();\n\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}","/* eslint-disable consistent-return */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function Keyboard(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true\n }\n });\n\n function handle(event) {\n if (!swiper.enabled) return;\n const {\n rtlTranslate: rtl\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40; // Directions locks\n\n if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n return false;\n }\n\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n let inView = false; // Check that swiper should be inside of visible area of window\n\n if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n\n const $el = swiper.$el;\n const swiperWidth = $el[0].clientWidth;\n const swiperHeight = $el[0].clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = swiper.$el.offset();\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n\n inView = true;\n }\n }\n\n if (!inView) return undefined;\n }\n\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n\n if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n\n emit('keyPress', kc);\n return undefined;\n }\n\n function enable() {\n if (swiper.keyboard.enabled) return;\n $(document).on('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n\n function disable() {\n if (!swiper.keyboard.enabled) return;\n $(document).off('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n Object.assign(swiper.keyboard, {\n enable,\n disable\n });\n}","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function Lazy(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n lazy: {\n checkInView: false,\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n scrollingElement: '',\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader'\n }\n });\n swiper.lazy = {};\n let scrollHandlerAttached = false;\n let initialImageLoaded = false;\n\n function loadInSlide(index, loadInDuplicate) {\n if (loadInDuplicate === void 0) {\n loadInDuplicate = true;\n }\n\n const params = swiper.params.lazy;\n if (typeof index === 'undefined') return;\n if (swiper.slides.length === 0) return;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n const $slideEl = isVirtual ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`) : swiper.slides.eq(index);\n const $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);\n\n if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n $images.push($slideEl[0]);\n }\n\n if ($images.length === 0) return;\n $images.each(imageEl => {\n const $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n const background = $imageEl.attr('data-background');\n const src = $imageEl.attr('data-src');\n const srcset = $imageEl.attr('data-srcset');\n const sizes = $imageEl.attr('data-sizes');\n const $pictureEl = $imageEl.parent('picture');\n swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return;\n\n if (background) {\n $imageEl.css('background-image', `url(\"${background}\")`);\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n\n if ($pictureEl.length) {\n $pictureEl.children('source').each(sourceEl => {\n const $source = $(sourceEl);\n\n if ($source.attr('data-srcset')) {\n $source.attr('srcset', $source.attr('data-srcset'));\n $source.removeAttr('data-srcset');\n }\n });\n }\n\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find(`.${params.preloaderClass}`).remove();\n\n if (swiper.params.loop && loadInDuplicate) {\n const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`);\n loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`);\n loadInSlide(duplicatedSlide.index(), false);\n }\n }\n\n emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n }\n\n function load() {\n const {\n $wrapperEl,\n params: swiperParams,\n slides,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n const params = swiperParams.lazy;\n let slidesPerView = swiperParams.slidesPerView;\n\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index) {\n if (isVirtual) {\n if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`).length) {\n return true;\n }\n } else if (slides[index]) return true;\n\n return false;\n }\n\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n\n return $(slideEl).index();\n }\n\n if (!initialImageLoaded) initialImageLoaded = true;\n\n if (swiper.params.watchSlidesProgress) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each(slideEl => {\n const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n loadInSlide(activeIndex);\n }\n\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) {\n const amount = params.loadPrevNextAmount;\n const spv = slidesPerView;\n const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides\n\n for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n } // Prev Slides\n\n\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide));\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide));\n }\n }\n }\n\n function checkInViewOnLoad() {\n const window = getWindow();\n if (!swiper || swiper.destroyed) return;\n const $scrollElement = swiper.params.lazy.scrollingElement ? $(swiper.params.lazy.scrollingElement) : $(window);\n const isWindow = $scrollElement[0] === window;\n const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;\n const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;\n const swiperOffset = swiper.$el.offset();\n const {\n rtlTranslate: rtl\n } = swiper;\n let inView = false;\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]];\n\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n\n if (point[0] >= 0 && point[0] <= scrollElementWidth && point[1] >= 0 && point[1] <= scrollElementHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n\n inView = true;\n }\n }\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && swiper.support.passiveListener && swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n\n if (inView) {\n load();\n $scrollElement.off('scroll', checkInViewOnLoad, passiveListener);\n } else if (!scrollHandlerAttached) {\n scrollHandlerAttached = true;\n $scrollElement.on('scroll', checkInViewOnLoad, passiveListener);\n }\n }\n\n on('beforeInit', () => {\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n });\n on('init', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('scroll', () => {\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.freeMode.sticky) {\n load();\n }\n });\n on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('transitionStart', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n }\n });\n on('transitionEnd', () => {\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('slideChange', () => {\n const {\n lazy,\n cssMode,\n watchSlidesProgress,\n touchReleaseOnEdges,\n resistanceRatio\n } = swiper.params;\n\n if (lazy.enabled && (cssMode || watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0))) {\n load();\n }\n });\n Object.assign(swiper.lazy, {\n load,\n loadInSlide\n });\n}","import appendSlide from './methods/appendSlide.js';\nimport prependSlide from './methods/prependSlide.js';\nimport addSlide from './methods/addSlide.js';\nimport removeSlide from './methods/removeSlide.js';\nimport removeAllSlides from './methods/removeAllSlides.js';\nexport default function Manipulation(_ref) {\n let {\n swiper\n } = _ref;\n Object.assign(swiper, {\n appendSlide: appendSlide.bind(swiper),\n prependSlide: prependSlide.bind(swiper),\n addSlide: addSlide.bind(swiper),\n removeSlide: removeSlide.bind(swiper),\n removeAllSlides: removeAllSlides.bind(swiper)\n });\n}","export default function addSlide(index, slides) {\n const swiper = this;\n const {\n $wrapperEl,\n params,\n activeIndex\n } = swiper;\n let activeIndexBuffer = activeIndex;\n\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n\n const baseLength = swiper.slides.length;\n\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n const slidesBuffer = [];\n\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n $wrapperEl.append(slidesBuffer[i]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}","export default function appendSlide(slides) {\n const swiper = this;\n const {\n $wrapperEl,\n params\n } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n}","export default function prependSlide(slides) {\n const swiper = this;\n const {\n params,\n $wrapperEl,\n activeIndex\n } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n let newActiveIndex = activeIndex + 1;\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n\n swiper.slideTo(newActiveIndex, 0, false);\n}","export default function removeAllSlides() {\n const swiper = this;\n const slidesIndexes = [];\n\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n\n swiper.removeSlide(slidesIndexes);\n}","export default function removeSlide(slidesIndexes) {\n const swiper = this;\n const {\n params,\n $wrapperEl,\n activeIndex\n } = swiper;\n let activeIndexBuffer = activeIndex;\n\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!params.observer) {\n swiper.update();\n }\n\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}","/* eslint-disable consistent-return */\nimport { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now, nextTick } from '../../shared/utils.js';\nexport default function Mousewheel(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null\n }\n });\n swiper.mousewheel = {\n enabled: false\n };\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n let sX = 0;\n let sY = 0; // spinX, spinY\n\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n // Legacy\n\n if ('detail' in e) {\n sY = e.detail;\n }\n\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n } // side scrolling on FF with DOMMouseScroll\n\n\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n } // Fall-back if spin cannot be determined\n\n\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n }\n\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n\n function animateSlider(newEvent) {\n if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n\n if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n } // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n\n\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n } // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n\n\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n } // If you got here is because an animation has been triggered so store the current time\n\n\n lastScrollTime = new window.Date().getTime(); // Return false as a default\n\n return false;\n }\n\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n\n return false;\n }\n\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n const params = swiper.params.mousewheel;\n\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n\n let target = swiper.$el;\n\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n const data = normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n\n if (delta === 0) return true;\n if (params.invert) delta = -delta; // Get the scroll positions\n\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n\n disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event\n }; // Keep the most recent events\n\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent); // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n } // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n\n\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta)\n };\n const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n } // Emit event\n\n\n if (!ignoreWheelEvents) emit('scroll', e); // Stop autoplay\n\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions\n\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n return false;\n }\n\n function events(method) {\n let target = swiper.$el;\n\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n\n target[method]('mouseenter', handleMouseEnter);\n target[method]('mouseleave', handleMouseLeave);\n target[method]('wheel', handle);\n }\n\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n\n if (swiper.mousewheel.enabled) return false;\n events('on');\n swiper.mousewheel.enabled = true;\n return true;\n }\n\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n\n if (!swiper.mousewheel.enabled) return false;\n events('off');\n swiper.mousewheel.enabled = false;\n return true;\n }\n\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n\n if (swiper.mousewheel.enabled) disable();\n });\n Object.assign(swiper.mousewheel, {\n enable,\n disable\n });\n}","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\nexport default function Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock'\n }\n });\n swiper.navigation = {\n nextEl: null,\n $nextEl: null,\n prevEl: null,\n $prevEl: null\n };\n\n function getEl(el) {\n let $el;\n\n if (el) {\n $el = $(el);\n\n if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) {\n $el = swiper.$el.find(el);\n }\n }\n\n return $el;\n }\n\n function toggleEl($el, disabled) {\n const params = swiper.params.navigation;\n\n if ($el && $el.length > 0) {\n $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n }\n\n function update() {\n // Update Navigation Buttons\n if (swiper.params.loop) return;\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n }\n\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n }\n\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n const $nextEl = getEl(params.nextEl);\n const $prevEl = getEl(params.prevEl);\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', onNextClick);\n }\n\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', onPrevClick);\n }\n\n Object.assign(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0]\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n\n on('init', () => {\n init();\n update();\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n });\n on('click', (_s, e) => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n const targetEl = e.target;\n\n if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n });\n Object.assign(swiper.navigation, {\n update,\n init,\n destroy\n });\n}","import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Pagination(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`\n }\n });\n swiper.pagination = {\n el: null,\n $el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0;\n }\n\n function setSideBullets($bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`);\n }\n\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el; // Current/Total\n\n let current;\n const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n } // Types\n\n\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n\n if (params.dynamicBullets) {\n bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`);\n\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0);\n\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n\n bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' '));\n\n if ($el.length > 1) {\n bullets.each(bullet => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (bulletIndex === firstIndex) {\n setSideBullets($bullet, 'prev');\n }\n\n if (bulletIndex === lastIndex) {\n setSideBullets($bullet, 'next');\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n }\n }\n\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n\n if (params.type === 'fraction') {\n $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n\n if (params.type === 'progressbar') {\n let progressbarDirection;\n\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n\n $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n }\n\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n emit('paginationRender', $el[0]);\n } else {\n emit('paginationUpdate', $el[0]);\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n }\n\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `` + ' / ' + ``;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type !== 'custom') {\n emit('paginationRender', swiper.pagination.$el[0]);\n }\n }\n\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper\n\n if ($el.length > 1) {\n $el = $el.filter(el => {\n if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n $el.addClass(params.modifierClass + swiper.params.direction);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Object.assign(swiper.pagination, {\n $el,\n el: $el[0]\n });\n\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const $el = swiper.pagination.$el;\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n $el.removeClass(params.modifierClass + swiper.params.direction);\n if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n }\n\n on('init', () => {\n init();\n render();\n update();\n });\n on('activeIndexChange', () => {\n if (swiper.params.loop) {\n update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n if (!swiper.params.loop) {\n update();\n }\n });\n on('slidesLengthChange', () => {\n if (swiper.params.loop) {\n render();\n update();\n }\n });\n on('snapGridLengthChange', () => {\n if (!swiper.params.loop) {\n render();\n update();\n }\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $el\n } = swiper.pagination;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const {\n $el\n } = swiper.pagination;\n\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el.length > 0 && !$(targetEl).hasClass(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);\n\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n\n $el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n });\n Object.assign(swiper.pagination, {\n render,\n update,\n init,\n destroy\n });\n}","import $ from '../../shared/dom.js';\nexport default function Parallax(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n parallax: {\n enabled: false\n }\n });\n\n const setTransform = (el, progress) => {\n const {\n rtl\n } = swiper;\n const $el = $(el);\n const rtlFactor = rtl ? -1 : 1;\n const p = $el.attr('data-swiper-parallax') || '0';\n let x = $el.attr('data-swiper-parallax-x');\n let y = $el.attr('data-swiper-parallax-y');\n const scale = $el.attr('data-swiper-parallax-scale');\n const opacity = $el.attr('data-swiper-parallax-opacity');\n\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n\n if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n $el[0].style.opacity = currentOpacity;\n }\n\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform(`translate3d(${x}, ${y}, 0px)`);\n } else {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n }\n };\n\n const setTranslate = () => {\n const {\n $el,\n slides,\n progress,\n snapGrid\n } = swiper;\n $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => {\n setTransform(el, progress);\n });\n slides.each((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => {\n setTransform(el, slideProgress);\n });\n });\n };\n\n const setTransition = function (duration) {\n if (duration === void 0) {\n duration = swiper.params.speed;\n }\n\n const {\n $el\n } = swiper;\n $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(parallaxEl => {\n const $parallaxEl = $(parallaxEl);\n let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n $parallaxEl.transition(parallaxDuration);\n });\n };\n\n on('beforeInit', () => {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on('init', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTranslate', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTransition', (_swiper, duration) => {\n if (!swiper.params.parallax.enabled) return;\n setTransition(duration);\n });\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Scrollbar(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag'\n }\n });\n swiper.scrollbar = {\n el: null,\n dragEl: null,\n $el: null,\n $dragEl: null\n };\n\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar,\n rtlTranslate: rtl,\n progress\n } = swiper;\n const {\n $dragEl,\n $el\n } = scrollbar;\n const params = swiper.params.scrollbar;\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n\n if (rtl) {\n newPos = -newPos;\n\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n\n if (swiper.isHorizontal()) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n $dragEl[0].style.height = `${newSize}px`;\n }\n\n if (params.hide) {\n clearTimeout(timeout);\n $el[0].style.opacity = 1;\n timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n }\n\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n }\n\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar\n } = swiper;\n const {\n $dragEl,\n $el\n } = scrollbar;\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = `${dragSize}px`;\n } else {\n $dragEl[0].style.height = `${dragSize}px`;\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n }\n }\n\n function getPointerPosition(e) {\n if (swiper.isHorizontal()) {\n return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX;\n }\n\n return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY;\n }\n\n function setDragPosition(e) {\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n $el\n } = scrollbar;\n let positionRatio;\n positionRatio = (getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el,\n $dragEl\n } = scrollbar;\n isTouched = true;\n dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n setDragPosition(e);\n clearTimeout(dragTimeout);\n $el.transition(0);\n\n if (params.hide) {\n $el.css('opacity', 1);\n }\n\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n\n emit('scrollbarDragStart', e);\n }\n\n function onDragMove(e) {\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el,\n $dragEl\n } = scrollbar;\n if (!isTouched) return;\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n emit('scrollbarDragMove', e);\n }\n\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el\n } = scrollbar;\n if (!isTouched) return;\n isTouched = false;\n\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n\n emit('scrollbarDragEnd', e);\n\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n\n function events(method) {\n const {\n scrollbar,\n touchEventsTouch,\n touchEventsDesktop,\n params,\n support\n } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener = support.passiveListener && params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n const passiveListener = support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n\n if (!support.touch) {\n target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);\n document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);\n document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);\n } else {\n target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);\n target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);\n target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);\n }\n }\n\n function enableDraggable() {\n if (!swiper.params.scrollbar.el) return;\n events('on');\n }\n\n function disableDraggable() {\n if (!swiper.params.scrollbar.el) return;\n events('off');\n }\n\n function init() {\n const {\n scrollbar,\n $el: $swiperEl\n } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n el: 'swiper-scrollbar'\n });\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n let $el = $(params.el);\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n $el = $swiperEl.find(params.el);\n }\n\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n\n if ($dragEl.length === 0) {\n $dragEl = $(`
`);\n $el.append($dragEl);\n }\n\n Object.assign(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0]\n });\n\n if (params.draggable) {\n enableDraggable();\n }\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n }\n\n function destroy() {\n disableDraggable();\n }\n\n on('init', () => {\n init();\n updateSize();\n setTranslate();\n });\n on('update resize observerUpdate lock unlock', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const {\n $el\n } = swiper.scrollbar;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n });\n on('destroy', () => {\n destroy();\n });\n Object.assign(swiper.scrollbar, {\n updateSize,\n setTranslate,\n init,\n destroy\n });\n}","import { isObject } from '../../shared/utils.js';\nimport $ from '../../shared/dom.js';\nexport default function Thumb(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs'\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n\n const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex;\n }\n\n swiper.slideTo(slideToIndex);\n }\n\n function init() {\n const {\n thumbs: thumbsParams\n } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n\n if (thumbsSwiper.params.loop) {\n if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n thumbsSwiper.loopFix(); // eslint-disable-next-line\n\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n } // Find actual thumbs index to slide to\n\n\n const prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n const nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n\n if (typeof prevThumbsIndex === 'undefined') {\n newThumbsIndex = nextThumbsIndex;\n } else if (typeof nextThumbsIndex === 'undefined') {\n newThumbsIndex = prevThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = nextThumbsIndex;\n } else {\n newThumbsIndex = prevThumbsIndex;\n }\n\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) {// newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n } // Activate thumbs\n\n\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).addClass(thumbActiveClass);\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n }\n }\n }\n\n on('beforeInit', () => {\n const {\n thumbs\n } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n init();\n update(true);\n });\n on('slideChange update resize observerUpdate', () => {\n if (!swiper.thumbs.swiper) return;\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n\n if (swiperCreated && thumbsSwiper) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n}","import $ from '../../shared/dom.js';\nimport { setCSSProperty } from '../../shared/utils.js';\nexport default function Virtual(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0\n }\n });\n let cssModeTimeout;\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: []\n };\n\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n\n const $slideEl = params.renderSlide ? $(params.renderSlide.call(swiper, slide, index)) : $(`
${slide}
`);\n if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n if (params.cache) swiper.virtual.cache[index] = $slideEl;\n return $slideEl;\n }\n\n function update(force) {\n const {\n slidesPerView,\n slidesPerGroup,\n centeredSlides\n } = swiper.params;\n const {\n addSlidesBefore,\n addSlidesAfter\n } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset\n } = swiper.virtual;\n\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n\n const activeIndex = swiper.activeIndex || 0;\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n let slidesAfter;\n let slidesBefore;\n\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = slidesPerGroup + addSlidesBefore;\n }\n\n const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.css(offsetProp, `${offset}px`);\n }\n\n swiper.updateProgress();\n return;\n }\n\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: function getSlides() {\n const slidesToRender = [];\n\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n\n return slidesToRender;\n }()\n });\n\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n }\n\n return;\n }\n\n const prependIndexes = [];\n const appendIndexes = [];\n\n if (force) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`).remove();\n }\n }\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n if (i >= from && i <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(i);\n } else {\n if (i > previousTo) appendIndexes.push(i);\n if (i < previousFrom) prependIndexes.push(i);\n }\n }\n }\n\n appendIndexes.forEach(index => {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes.sort((a, b) => b - a).forEach(index => {\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n onRendered();\n }\n\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n\n update(true);\n }\n\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach(cachedIndex => {\n const $cachedEl = cache[cachedIndex];\n const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n\n if (cachedElIndex) {\n $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n }\n\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n\n function removeAllSlides() {\n swiper.virtual.slides = [];\n\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n\n update(true);\n swiper.slideTo(0, 0);\n }\n\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.slides = swiper.params.virtual.slides;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n\n if (!swiper.params.initialSlide) {\n update();\n }\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update\n });\n}","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { getTranslate } from '../../shared/utils.js';\nexport default function Zoom(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed'\n }\n });\n swiper.zoom = {\n enabled: false\n };\n let currentScale = 1;\n let isScaling = false;\n let gesturesEnabled;\n let fakeGestureTouched;\n let fakeGestureMoved;\n const gesture = {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {}\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined\n };\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.$imageEl ? gesture.$imageEl[0] : undefined;\n const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined;\n emit('zoomChange', value, imageEl, slideEl);\n }\n\n scale = value;\n }\n\n });\n\n function getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) return 1;\n const x1 = e.targetTouches[0].pageX;\n const y1 = e.targetTouches[0].pageY;\n const x2 = e.targetTouches[1].pageX;\n const y2 = e.targetTouches[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n } // Events\n\n\n function onGestureStart(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n\n if (!support.gestures) {\n if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) {\n return;\n }\n\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n\n if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\n }\n\n isScaling = true;\n }\n\n function onGestureChange(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n\n if (!support.gestures) {\n if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) {\n return;\n }\n\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n if (e.type === 'gesturechange') onGestureStart(e);\n return;\n }\n\n if (support.gestures) {\n zoom.scale = e.scale * currentScale;\n } else {\n zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n }\n\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n\n gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n\n function onGestureEnd(e) {\n const device = swiper.device;\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n\n if (!support.gestures) {\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n\n if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) {\n return;\n }\n\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n }\n\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n }\n\n function onTouchMove(e) {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) return;\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n } // Define if we need image drag\n\n\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !isScaling) {\n if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n image.isTouched = false;\n return;\n }\n\n if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n image.isTouched = false;\n return;\n }\n }\n\n if (e.cancelable) {\n e.preventDefault();\n }\n\n e.stopPropagation();\n image.isMoved = true;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n } // Velocity\n\n\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n\n function onTouchEnd() {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY; // Fix duration\n\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n image.currentX = newPositionX;\n image.currentY = newPositionY; // Define if we need image drag\n\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\n\n zoom.scale = 1;\n currentScale = 1;\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n }\n\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (e && e.target) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n }\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n }\n\n gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;\n\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n\n gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left + window.scrollX;\n offsetY = gesture.$slideEl.offset().top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n\n gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n\n gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;\n\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n\n zoom.scale = 1;\n currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n gesture.$slideEl = undefined;\n } // Toggle Zoom\n\n\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n\n function getListeners() {\n const support = swiper.support;\n const passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n const activeListenerWithCapture = support.passiveListener ? {\n passive: false,\n capture: true\n } : true;\n return {\n passiveListener,\n activeListenerWithCapture\n };\n }\n\n function getSlideSelector() {\n return `.${swiper.params.slideClass}`;\n }\n\n function toggleGestures(method) {\n const {\n passiveListener\n } = getListeners();\n const slideSelector = getSlideSelector();\n swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener);\n swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener);\n }\n\n function enableGestures() {\n if (gesturesEnabled) return;\n gesturesEnabled = true;\n toggleGestures('on');\n }\n\n function disableGestures() {\n if (!gesturesEnabled) return;\n gesturesEnabled = false;\n toggleGestures('off');\n } // Attach/Detach Events\n\n\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const support = swiper.support;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n const slideSelector = getSlideSelector(); // Scale image\n\n if (support.gestures) {\n swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);\n }\n } // Move image\n\n\n swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture);\n }\n\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n const support = swiper.support;\n zoom.enabled = false;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n const slideSelector = getSlideSelector(); // Scale image\n\n if (support.gestures) {\n swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);\n }\n } // Move image\n\n\n swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture);\n }\n\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd(e);\n });\n on('doubleTap', (_s, e) => {\n if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle\n });\n}","export default function classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n\n return `.${classes.trim().replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}","import { getDocument } from 'ssr-window';\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n const document = getDocument();\n\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n\n if (!element) {\n element = document.createElement('div');\n element.className = checkProps[key];\n swiper.$el.append(element);\n }\n\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n\n return params;\n}","import $ from './dom.js';\nexport default function createShadow(params, $slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`;\n const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl;\n let $shadowEl = $shadowContainer.children(`.${shadowClass}`);\n\n if (!$shadowEl.length) {\n $shadowEl = $(`
`);\n $shadowContainer.append($shadowEl);\n }\n\n return $shadowEl;\n}","import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove\n};\nObject.keys(Methods).forEach(methodName => {\n Object.defineProperty($.fn, methodName, {\n value: Methods[methodName],\n writable: true\n });\n});\nexport default $;","export default function effectInit(params) {\n const {\n effect,\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams,\n perspective\n } = params;\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n}","export default function effectTarget(effectParams, $slideEl) {\n if (effectParams.transformEl) {\n return $slideEl.find(effectParams.transformEl).css({\n 'backface-visibility': 'hidden',\n '-webkit-backface-visibility': 'hidden'\n });\n }\n\n return $slideEl;\n}","export default function effectVirtualTransitionEnd(_ref) {\n let {\n swiper,\n duration,\n transformEl,\n allSlides\n } = _ref;\n const {\n slides,\n activeIndex,\n $wrapperEl\n } = swiper;\n\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let $transitionEndTarget;\n\n if (allSlides) {\n $transitionEndTarget = transformEl ? slides.find(transformEl) : slides;\n } else {\n $transitionEndTarget = transformEl ? slides.eq(activeIndex).find(transformEl) : slides.eq(activeIndex);\n }\n\n $transitionEndTarget.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n}","import { getWindow } from 'ssr-window';\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n\n return browser;\n}\n\nexport { getBrowser };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\n\nfunction calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel'; // iPadOs 13 fix\n\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n } // Android\n\n\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n } // Export object\n\n\n return device;\n}\n\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n\n return deviceCached;\n}\n\nexport { getDevice };","import { getWindow, getDocument } from 'ssr-window';\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n passiveListener: function checkPassiveListener() {\n let supportsPassive = false;\n\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n }\n\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {// No support\n }\n\n return supportsPassive;\n }(),\n gestures: function checkGestures() {\n return 'ongesturestart' in window;\n }()\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n\n return support;\n}\n\nexport { getSupport };","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {// no getter for object\n }\n\n try {\n delete object[key];\n } catch (e) {// something got wrong\n }\n });\n}\n\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n return setTimeout(callback, delay);\n}\n\nfunction now() {\n return Date.now();\n}\n\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\n\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n } // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n\n\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n\n return curTransform || 0;\n}\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\n\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n\n const animate = () => {\n time = new Date().getTime();\n\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n\n animate();\n}\n\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty };","/**\n * Swiper 8.0.6\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2022 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: February 14, 2022\n */\n\nexport { default as Swiper, default } from './core/core.js';\nexport { default as Virtual } from './modules/virtual/virtual.js';\nexport { default as Keyboard } from './modules/keyboard/keyboard.js';\nexport { default as Mousewheel } from './modules/mousewheel/mousewheel.js';\nexport { default as Navigation } from './modules/navigation/navigation.js';\nexport { default as Pagination } from './modules/pagination/pagination.js';\nexport { default as Scrollbar } from './modules/scrollbar/scrollbar.js';\nexport { default as Parallax } from './modules/parallax/parallax.js';\nexport { default as Zoom } from './modules/zoom/zoom.js';\nexport { default as Lazy } from './modules/lazy/lazy.js';\nexport { default as Controller } from './modules/controller/controller.js';\nexport { default as A11y } from './modules/a11y/a11y.js';\nexport { default as History } from './modules/history/history.js';\nexport { default as HashNavigation } from './modules/hash-navigation/hash-navigation.js';\nexport { default as Autoplay } from './modules/autoplay/autoplay.js';\nexport { default as Thumbs } from './modules/thumbs/thumbs.js';\nexport { default as FreeMode } from './modules/free-mode/free-mode.js';\nexport { default as Grid } from './modules/grid/grid.js';\nexport { default as Manipulation } from './modules/manipulation/manipulation.js';\nexport { default as EffectFade } from './modules/effect-fade/effect-fade.js';\nexport { default as EffectCube } from './modules/effect-cube/effect-cube.js';\nexport { default as EffectFlip } from './modules/effect-flip/effect-flip.js';\nexport { default as EffectCoverflow } from './modules/effect-coverflow/effect-coverflow.js';\nexport { default as EffectCreative } from './modules/effect-creative/effect-creative.js';\nexport { default as EffectCards } from './modules/effect-cards/effect-cards.js';","// extracted by mini-css-extract-plugin\nexport default {\"position-static\":\"position-static\",\"position-relative\":\"position-relative\",\"position-absolute\":\"position-absolute\",\"position-fixed\":\"position-fixed\",\"position-sticky\":\"position-sticky\",\"sticky-top\":\"sticky-top\",\"fade\":\"fade\",\"fade--show\":\"fade--show\",\"collapse\":\"collapse\",\"collapse--show\":\"collapse--show\",\"collapse-open\":\"collapse-open\",\"collapse-open-sm\":\"collapse-open-sm\",\"collapse-open-md\":\"collapse-open-md\",\"collapse-open-lg\":\"collapse-open-lg\",\"collapse-open-xl\":\"collapse-open-xl\",\"collapse-open-xxl\":\"collapse-open-xxl\",\"collapse--collapsing\":\"collapse--collapsing\",\"fade--fading\":\"fade--fading\",\"u-embed-responsive\":\"u-embed-responsive\",\"u-embed-responsive__item\":\"u-embed-responsive__item\",\"u-embed-responsive--ratio-1by1\":\"u-embed-responsive--ratio-1by1\",\"u-embed-responsive--ratio-2by1\":\"u-embed-responsive--ratio-2by1\",\"u-embed-responsive--ratio-4by3\":\"u-embed-responsive--ratio-4by3\",\"u-embed-responsive--ratio-16by9\":\"u-embed-responsive--ratio-16by9\",\"u-embed-responsive--ratio-21by9\":\"u-embed-responsive--ratio-21by9\",\"m--1\":\"m--1\",\"mt--1\":\"mt--1\",\"my--1\":\"my--1\",\"mr--1\":\"mr--1\",\"mx--1\":\"mx--1\",\"mb--1\":\"mb--1\",\"ml--1\":\"ml--1\",\"m-0\":\"m-0\",\"mt-0\":\"mt-0\",\"my-0\":\"my-0\",\"mr-0\":\"mr-0\",\"mx-0\":\"mx-0\",\"mb-0\":\"mb-0\",\"ml-0\":\"ml-0\",\"m-1\":\"m-1\",\"mt-1\":\"mt-1\",\"my-1\":\"my-1\",\"mr-1\":\"mr-1\",\"mx-1\":\"mx-1\",\"mb-1\":\"mb-1\",\"ml-1\":\"ml-1\",\"m-2\":\"m-2\",\"mt-2\":\"mt-2\",\"my-2\":\"my-2\",\"mr-2\":\"mr-2\",\"mx-2\":\"mx-2\",\"mb-2\":\"mb-2\",\"ml-2\":\"ml-2\",\"m-3\":\"m-3\",\"mt-3\":\"mt-3\",\"my-3\":\"my-3\",\"mr-3\":\"mr-3\",\"mx-3\":\"mx-3\",\"mb-3\":\"mb-3\",\"ml-3\":\"ml-3\",\"m-4\":\"m-4\",\"mt-4\":\"mt-4\",\"my-4\":\"my-4\",\"mr-4\":\"mr-4\",\"mx-4\":\"mx-4\",\"mb-4\":\"mb-4\",\"ml-4\":\"ml-4\",\"m-5\":\"m-5\",\"mt-5\":\"mt-5\",\"my-5\":\"my-5\",\"mr-5\":\"mr-5\",\"mx-5\":\"mx-5\",\"mb-5\":\"mb-5\",\"ml-5\":\"ml-5\",\"m-6\":\"m-6\",\"mt-6\":\"mt-6\",\"my-6\":\"my-6\",\"mr-6\":\"mr-6\",\"mx-6\":\"mx-6\",\"mb-6\":\"mb-6\",\"ml-6\":\"ml-6\",\"m-7\":\"m-7\",\"mt-7\":\"mt-7\",\"my-7\":\"my-7\",\"mr-7\":\"mr-7\",\"mx-7\":\"mx-7\",\"mb-7\":\"mb-7\",\"ml-7\":\"ml-7\",\"m-10\":\"m-10\",\"mt-10\":\"mt-10\",\"my-10\":\"my-10\",\"mr-10\":\"mr-10\",\"mx-10\":\"mx-10\",\"mb-10\":\"mb-10\",\"ml-10\":\"ml-10\",\"m-20\":\"m-20\",\"mt-20\":\"mt-20\",\"my-20\":\"my-20\",\"mr-20\":\"mr-20\",\"mx-20\":\"mx-20\",\"mb-20\":\"mb-20\",\"ml-20\":\"ml-20\",\"p-0\":\"p-0\",\"pt-0\":\"pt-0\",\"py-0\":\"py-0\",\"pr-0\":\"pr-0\",\"px-0\":\"px-0\",\"pb-0\":\"pb-0\",\"pl-0\":\"pl-0\",\"p-1\":\"p-1\",\"pt-1\":\"pt-1\",\"py-1\":\"py-1\",\"pr-1\":\"pr-1\",\"px-1\":\"px-1\",\"pb-1\":\"pb-1\",\"pl-1\":\"pl-1\",\"p-2\":\"p-2\",\"pt-2\":\"pt-2\",\"py-2\":\"py-2\",\"pr-2\":\"pr-2\",\"px-2\":\"px-2\",\"pb-2\":\"pb-2\",\"pl-2\":\"pl-2\",\"p-3\":\"p-3\",\"pt-3\":\"pt-3\",\"py-3\":\"py-3\",\"pr-3\":\"pr-3\",\"px-3\":\"px-3\",\"pb-3\":\"pb-3\",\"pl-3\":\"pl-3\",\"p-4\":\"p-4\",\"pt-4\":\"pt-4\",\"py-4\":\"py-4\",\"pr-4\":\"pr-4\",\"px-4\":\"px-4\",\"pb-4\":\"pb-4\",\"pl-4\":\"pl-4\",\"p-5\":\"p-5\",\"pt-5\":\"pt-5\",\"py-5\":\"py-5\",\"pr-5\":\"pr-5\",\"px-5\":\"px-5\",\"pb-5\":\"pb-5\",\"pl-5\":\"pl-5\",\"p-6\":\"p-6\",\"pt-6\":\"pt-6\",\"py-6\":\"py-6\",\"pr-6\":\"pr-6\",\"px-6\":\"px-6\",\"pb-6\":\"pb-6\",\"pl-6\":\"pl-6\",\"p-7\":\"p-7\",\"pt-7\":\"pt-7\",\"py-7\":\"py-7\",\"pr-7\":\"pr-7\",\"px-7\":\"px-7\",\"pb-7\":\"pb-7\",\"pl-7\":\"pl-7\",\"p-10\":\"p-10\",\"pt-10\":\"pt-10\",\"py-10\":\"py-10\",\"pr-10\":\"pr-10\",\"px-10\":\"px-10\",\"pb-10\":\"pb-10\",\"pl-10\":\"pl-10\",\"p-20\":\"p-20\",\"pt-20\":\"pt-20\",\"py-20\":\"py-20\",\"pr-20\":\"pr-20\",\"px-20\":\"px-20\",\"pb-20\":\"pb-20\",\"pl-20\":\"pl-20\",\"m-auto\":\"m-auto\",\"mt-auto\":\"mt-auto\",\"my-auto\":\"my-auto\",\"mr-auto\":\"mr-auto\",\"mx-auto\":\"mx-auto\",\"mb-auto\":\"mb-auto\",\"ml-auto\":\"ml-auto\",\"m-sm--1\":\"m-sm--1\",\"mt-sm--1\":\"mt-sm--1\",\"my-sm--1\":\"my-sm--1\",\"mr-sm--1\":\"mr-sm--1\",\"mx-sm--1\":\"mx-sm--1\",\"mb-sm--1\":\"mb-sm--1\",\"ml-sm--1\":\"ml-sm--1\",\"m-sm-0\":\"m-sm-0\",\"mt-sm-0\":\"mt-sm-0\",\"my-sm-0\":\"my-sm-0\",\"mr-sm-0\":\"mr-sm-0\",\"mx-sm-0\":\"mx-sm-0\",\"mb-sm-0\":\"mb-sm-0\",\"ml-sm-0\":\"ml-sm-0\",\"m-sm-1\":\"m-sm-1\",\"mt-sm-1\":\"mt-sm-1\",\"my-sm-1\":\"my-sm-1\",\"mr-sm-1\":\"mr-sm-1\",\"mx-sm-1\":\"mx-sm-1\",\"mb-sm-1\":\"mb-sm-1\",\"ml-sm-1\":\"ml-sm-1\",\"m-sm-2\":\"m-sm-2\",\"mt-sm-2\":\"mt-sm-2\",\"my-sm-2\":\"my-sm-2\",\"mr-sm-2\":\"mr-sm-2\",\"mx-sm-2\":\"mx-sm-2\",\"mb-sm-2\":\"mb-sm-2\",\"ml-sm-2\":\"ml-sm-2\",\"m-sm-3\":\"m-sm-3\",\"mt-sm-3\":\"mt-sm-3\",\"my-sm-3\":\"my-sm-3\",\"mr-sm-3\":\"mr-sm-3\",\"mx-sm-3\":\"mx-sm-3\",\"mb-sm-3\":\"mb-sm-3\",\"ml-sm-3\":\"ml-sm-3\",\"m-sm-4\":\"m-sm-4\",\"mt-sm-4\":\"mt-sm-4\",\"my-sm-4\":\"my-sm-4\",\"mr-sm-4\":\"mr-sm-4\",\"mx-sm-4\":\"mx-sm-4\",\"mb-sm-4\":\"mb-sm-4\",\"ml-sm-4\":\"ml-sm-4\",\"m-sm-5\":\"m-sm-5\",\"mt-sm-5\":\"mt-sm-5\",\"my-sm-5\":\"my-sm-5\",\"mr-sm-5\":\"mr-sm-5\",\"mx-sm-5\":\"mx-sm-5\",\"mb-sm-5\":\"mb-sm-5\",\"ml-sm-5\":\"ml-sm-5\",\"m-sm-6\":\"m-sm-6\",\"mt-sm-6\":\"mt-sm-6\",\"my-sm-6\":\"my-sm-6\",\"mr-sm-6\":\"mr-sm-6\",\"mx-sm-6\":\"mx-sm-6\",\"mb-sm-6\":\"mb-sm-6\",\"ml-sm-6\":\"ml-sm-6\",\"m-sm-7\":\"m-sm-7\",\"mt-sm-7\":\"mt-sm-7\",\"my-sm-7\":\"my-sm-7\",\"mr-sm-7\":\"mr-sm-7\",\"mx-sm-7\":\"mx-sm-7\",\"mb-sm-7\":\"mb-sm-7\",\"ml-sm-7\":\"ml-sm-7\",\"m-sm-10\":\"m-sm-10\",\"mt-sm-10\":\"mt-sm-10\",\"my-sm-10\":\"my-sm-10\",\"mr-sm-10\":\"mr-sm-10\",\"mx-sm-10\":\"mx-sm-10\",\"mb-sm-10\":\"mb-sm-10\",\"ml-sm-10\":\"ml-sm-10\",\"m-sm-20\":\"m-sm-20\",\"mt-sm-20\":\"mt-sm-20\",\"my-sm-20\":\"my-sm-20\",\"mr-sm-20\":\"mr-sm-20\",\"mx-sm-20\":\"mx-sm-20\",\"mb-sm-20\":\"mb-sm-20\",\"ml-sm-20\":\"ml-sm-20\",\"p-sm-0\":\"p-sm-0\",\"pt-sm-0\":\"pt-sm-0\",\"py-sm-0\":\"py-sm-0\",\"pr-sm-0\":\"pr-sm-0\",\"px-sm-0\":\"px-sm-0\",\"pb-sm-0\":\"pb-sm-0\",\"pl-sm-0\":\"pl-sm-0\",\"p-sm-1\":\"p-sm-1\",\"pt-sm-1\":\"pt-sm-1\",\"py-sm-1\":\"py-sm-1\",\"pr-sm-1\":\"pr-sm-1\",\"px-sm-1\":\"px-sm-1\",\"pb-sm-1\":\"pb-sm-1\",\"pl-sm-1\":\"pl-sm-1\",\"p-sm-2\":\"p-sm-2\",\"pt-sm-2\":\"pt-sm-2\",\"py-sm-2\":\"py-sm-2\",\"pr-sm-2\":\"pr-sm-2\",\"px-sm-2\":\"px-sm-2\",\"pb-sm-2\":\"pb-sm-2\",\"pl-sm-2\":\"pl-sm-2\",\"p-sm-3\":\"p-sm-3\",\"pt-sm-3\":\"pt-sm-3\",\"py-sm-3\":\"py-sm-3\",\"pr-sm-3\":\"pr-sm-3\",\"px-sm-3\":\"px-sm-3\",\"pb-sm-3\":\"pb-sm-3\",\"pl-sm-3\":\"pl-sm-3\",\"p-sm-4\":\"p-sm-4\",\"pt-sm-4\":\"pt-sm-4\",\"py-sm-4\":\"py-sm-4\",\"pr-sm-4\":\"pr-sm-4\",\"px-sm-4\":\"px-sm-4\",\"pb-sm-4\":\"pb-sm-4\",\"pl-sm-4\":\"pl-sm-4\",\"p-sm-5\":\"p-sm-5\",\"pt-sm-5\":\"pt-sm-5\",\"py-sm-5\":\"py-sm-5\",\"pr-sm-5\":\"pr-sm-5\",\"px-sm-5\":\"px-sm-5\",\"pb-sm-5\":\"pb-sm-5\",\"pl-sm-5\":\"pl-sm-5\",\"p-sm-6\":\"p-sm-6\",\"pt-sm-6\":\"pt-sm-6\",\"py-sm-6\":\"py-sm-6\",\"pr-sm-6\":\"pr-sm-6\",\"px-sm-6\":\"px-sm-6\",\"pb-sm-6\":\"pb-sm-6\",\"pl-sm-6\":\"pl-sm-6\",\"p-sm-7\":\"p-sm-7\",\"pt-sm-7\":\"pt-sm-7\",\"py-sm-7\":\"py-sm-7\",\"pr-sm-7\":\"pr-sm-7\",\"px-sm-7\":\"px-sm-7\",\"pb-sm-7\":\"pb-sm-7\",\"pl-sm-7\":\"pl-sm-7\",\"p-sm-10\":\"p-sm-10\",\"pt-sm-10\":\"pt-sm-10\",\"py-sm-10\":\"py-sm-10\",\"pr-sm-10\":\"pr-sm-10\",\"px-sm-10\":\"px-sm-10\",\"pb-sm-10\":\"pb-sm-10\",\"pl-sm-10\":\"pl-sm-10\",\"p-sm-20\":\"p-sm-20\",\"pt-sm-20\":\"pt-sm-20\",\"py-sm-20\":\"py-sm-20\",\"pr-sm-20\":\"pr-sm-20\",\"px-sm-20\":\"px-sm-20\",\"pb-sm-20\":\"pb-sm-20\",\"pl-sm-20\":\"pl-sm-20\",\"m-sm-auto\":\"m-sm-auto\",\"mt-sm-auto\":\"mt-sm-auto\",\"my-sm-auto\":\"my-sm-auto\",\"mr-sm-auto\":\"mr-sm-auto\",\"mx-sm-auto\":\"mx-sm-auto\",\"mb-sm-auto\":\"mb-sm-auto\",\"ml-sm-auto\":\"ml-sm-auto\",\"m-md--1\":\"m-md--1\",\"mt-md--1\":\"mt-md--1\",\"my-md--1\":\"my-md--1\",\"mr-md--1\":\"mr-md--1\",\"mx-md--1\":\"mx-md--1\",\"mb-md--1\":\"mb-md--1\",\"ml-md--1\":\"ml-md--1\",\"m-md-0\":\"m-md-0\",\"mt-md-0\":\"mt-md-0\",\"my-md-0\":\"my-md-0\",\"mr-md-0\":\"mr-md-0\",\"mx-md-0\":\"mx-md-0\",\"mb-md-0\":\"mb-md-0\",\"ml-md-0\":\"ml-md-0\",\"m-md-1\":\"m-md-1\",\"mt-md-1\":\"mt-md-1\",\"my-md-1\":\"my-md-1\",\"mr-md-1\":\"mr-md-1\",\"mx-md-1\":\"mx-md-1\",\"mb-md-1\":\"mb-md-1\",\"ml-md-1\":\"ml-md-1\",\"m-md-2\":\"m-md-2\",\"mt-md-2\":\"mt-md-2\",\"my-md-2\":\"my-md-2\",\"mr-md-2\":\"mr-md-2\",\"mx-md-2\":\"mx-md-2\",\"mb-md-2\":\"mb-md-2\",\"ml-md-2\":\"ml-md-2\",\"m-md-3\":\"m-md-3\",\"mt-md-3\":\"mt-md-3\",\"my-md-3\":\"my-md-3\",\"mr-md-3\":\"mr-md-3\",\"mx-md-3\":\"mx-md-3\",\"mb-md-3\":\"mb-md-3\",\"ml-md-3\":\"ml-md-3\",\"m-md-4\":\"m-md-4\",\"mt-md-4\":\"mt-md-4\",\"my-md-4\":\"my-md-4\",\"mr-md-4\":\"mr-md-4\",\"mx-md-4\":\"mx-md-4\",\"mb-md-4\":\"mb-md-4\",\"ml-md-4\":\"ml-md-4\",\"m-md-5\":\"m-md-5\",\"mt-md-5\":\"mt-md-5\",\"my-md-5\":\"my-md-5\",\"mr-md-5\":\"mr-md-5\",\"mx-md-5\":\"mx-md-5\",\"mb-md-5\":\"mb-md-5\",\"ml-md-5\":\"ml-md-5\",\"m-md-6\":\"m-md-6\",\"mt-md-6\":\"mt-md-6\",\"my-md-6\":\"my-md-6\",\"mr-md-6\":\"mr-md-6\",\"mx-md-6\":\"mx-md-6\",\"mb-md-6\":\"mb-md-6\",\"ml-md-6\":\"ml-md-6\",\"m-md-7\":\"m-md-7\",\"mt-md-7\":\"mt-md-7\",\"my-md-7\":\"my-md-7\",\"mr-md-7\":\"mr-md-7\",\"mx-md-7\":\"mx-md-7\",\"mb-md-7\":\"mb-md-7\",\"ml-md-7\":\"ml-md-7\",\"m-md-10\":\"m-md-10\",\"mt-md-10\":\"mt-md-10\",\"my-md-10\":\"my-md-10\",\"mr-md-10\":\"mr-md-10\",\"mx-md-10\":\"mx-md-10\",\"mb-md-10\":\"mb-md-10\",\"ml-md-10\":\"ml-md-10\",\"m-md-20\":\"m-md-20\",\"mt-md-20\":\"mt-md-20\",\"my-md-20\":\"my-md-20\",\"mr-md-20\":\"mr-md-20\",\"mx-md-20\":\"mx-md-20\",\"mb-md-20\":\"mb-md-20\",\"ml-md-20\":\"ml-md-20\",\"p-md-0\":\"p-md-0\",\"pt-md-0\":\"pt-md-0\",\"py-md-0\":\"py-md-0\",\"pr-md-0\":\"pr-md-0\",\"px-md-0\":\"px-md-0\",\"pb-md-0\":\"pb-md-0\",\"pl-md-0\":\"pl-md-0\",\"p-md-1\":\"p-md-1\",\"pt-md-1\":\"pt-md-1\",\"py-md-1\":\"py-md-1\",\"pr-md-1\":\"pr-md-1\",\"px-md-1\":\"px-md-1\",\"pb-md-1\":\"pb-md-1\",\"pl-md-1\":\"pl-md-1\",\"p-md-2\":\"p-md-2\",\"pt-md-2\":\"pt-md-2\",\"py-md-2\":\"py-md-2\",\"pr-md-2\":\"pr-md-2\",\"px-md-2\":\"px-md-2\",\"pb-md-2\":\"pb-md-2\",\"pl-md-2\":\"pl-md-2\",\"p-md-3\":\"p-md-3\",\"pt-md-3\":\"pt-md-3\",\"py-md-3\":\"py-md-3\",\"pr-md-3\":\"pr-md-3\",\"px-md-3\":\"px-md-3\",\"pb-md-3\":\"pb-md-3\",\"pl-md-3\":\"pl-md-3\",\"p-md-4\":\"p-md-4\",\"pt-md-4\":\"pt-md-4\",\"py-md-4\":\"py-md-4\",\"pr-md-4\":\"pr-md-4\",\"px-md-4\":\"px-md-4\",\"pb-md-4\":\"pb-md-4\",\"pl-md-4\":\"pl-md-4\",\"p-md-5\":\"p-md-5\",\"pt-md-5\":\"pt-md-5\",\"py-md-5\":\"py-md-5\",\"pr-md-5\":\"pr-md-5\",\"px-md-5\":\"px-md-5\",\"pb-md-5\":\"pb-md-5\",\"pl-md-5\":\"pl-md-5\",\"p-md-6\":\"p-md-6\",\"pt-md-6\":\"pt-md-6\",\"py-md-6\":\"py-md-6\",\"pr-md-6\":\"pr-md-6\",\"px-md-6\":\"px-md-6\",\"pb-md-6\":\"pb-md-6\",\"pl-md-6\":\"pl-md-6\",\"p-md-7\":\"p-md-7\",\"pt-md-7\":\"pt-md-7\",\"py-md-7\":\"py-md-7\",\"pr-md-7\":\"pr-md-7\",\"px-md-7\":\"px-md-7\",\"pb-md-7\":\"pb-md-7\",\"pl-md-7\":\"pl-md-7\",\"p-md-10\":\"p-md-10\",\"pt-md-10\":\"pt-md-10\",\"py-md-10\":\"py-md-10\",\"pr-md-10\":\"pr-md-10\",\"px-md-10\":\"px-md-10\",\"pb-md-10\":\"pb-md-10\",\"pl-md-10\":\"pl-md-10\",\"p-md-20\":\"p-md-20\",\"pt-md-20\":\"pt-md-20\",\"py-md-20\":\"py-md-20\",\"pr-md-20\":\"pr-md-20\",\"px-md-20\":\"px-md-20\",\"pb-md-20\":\"pb-md-20\",\"pl-md-20\":\"pl-md-20\",\"m-md-auto\":\"m-md-auto\",\"mt-md-auto\":\"mt-md-auto\",\"my-md-auto\":\"my-md-auto\",\"mr-md-auto\":\"mr-md-auto\",\"mx-md-auto\":\"mx-md-auto\",\"mb-md-auto\":\"mb-md-auto\",\"ml-md-auto\":\"ml-md-auto\",\"m-lg--1\":\"m-lg--1\",\"mt-lg--1\":\"mt-lg--1\",\"my-lg--1\":\"my-lg--1\",\"mr-lg--1\":\"mr-lg--1\",\"mx-lg--1\":\"mx-lg--1\",\"mb-lg--1\":\"mb-lg--1\",\"ml-lg--1\":\"ml-lg--1\",\"m-lg-0\":\"m-lg-0\",\"mt-lg-0\":\"mt-lg-0\",\"my-lg-0\":\"my-lg-0\",\"mr-lg-0\":\"mr-lg-0\",\"mx-lg-0\":\"mx-lg-0\",\"mb-lg-0\":\"mb-lg-0\",\"ml-lg-0\":\"ml-lg-0\",\"m-lg-1\":\"m-lg-1\",\"mt-lg-1\":\"mt-lg-1\",\"my-lg-1\":\"my-lg-1\",\"mr-lg-1\":\"mr-lg-1\",\"mx-lg-1\":\"mx-lg-1\",\"mb-lg-1\":\"mb-lg-1\",\"ml-lg-1\":\"ml-lg-1\",\"m-lg-2\":\"m-lg-2\",\"mt-lg-2\":\"mt-lg-2\",\"my-lg-2\":\"my-lg-2\",\"mr-lg-2\":\"mr-lg-2\",\"mx-lg-2\":\"mx-lg-2\",\"mb-lg-2\":\"mb-lg-2\",\"ml-lg-2\":\"ml-lg-2\",\"m-lg-3\":\"m-lg-3\",\"mt-lg-3\":\"mt-lg-3\",\"my-lg-3\":\"my-lg-3\",\"mr-lg-3\":\"mr-lg-3\",\"mx-lg-3\":\"mx-lg-3\",\"mb-lg-3\":\"mb-lg-3\",\"ml-lg-3\":\"ml-lg-3\",\"m-lg-4\":\"m-lg-4\",\"mt-lg-4\":\"mt-lg-4\",\"my-lg-4\":\"my-lg-4\",\"mr-lg-4\":\"mr-lg-4\",\"mx-lg-4\":\"mx-lg-4\",\"mb-lg-4\":\"mb-lg-4\",\"ml-lg-4\":\"ml-lg-4\",\"m-lg-5\":\"m-lg-5\",\"mt-lg-5\":\"mt-lg-5\",\"my-lg-5\":\"my-lg-5\",\"mr-lg-5\":\"mr-lg-5\",\"mx-lg-5\":\"mx-lg-5\",\"mb-lg-5\":\"mb-lg-5\",\"ml-lg-5\":\"ml-lg-5\",\"m-lg-6\":\"m-lg-6\",\"mt-lg-6\":\"mt-lg-6\",\"my-lg-6\":\"my-lg-6\",\"mr-lg-6\":\"mr-lg-6\",\"mx-lg-6\":\"mx-lg-6\",\"mb-lg-6\":\"mb-lg-6\",\"ml-lg-6\":\"ml-lg-6\",\"m-lg-7\":\"m-lg-7\",\"mt-lg-7\":\"mt-lg-7\",\"my-lg-7\":\"my-lg-7\",\"mr-lg-7\":\"mr-lg-7\",\"mx-lg-7\":\"mx-lg-7\",\"mb-lg-7\":\"mb-lg-7\",\"ml-lg-7\":\"ml-lg-7\",\"m-lg-10\":\"m-lg-10\",\"mt-lg-10\":\"mt-lg-10\",\"my-lg-10\":\"my-lg-10\",\"mr-lg-10\":\"mr-lg-10\",\"mx-lg-10\":\"mx-lg-10\",\"mb-lg-10\":\"mb-lg-10\",\"ml-lg-10\":\"ml-lg-10\",\"m-lg-20\":\"m-lg-20\",\"mt-lg-20\":\"mt-lg-20\",\"my-lg-20\":\"my-lg-20\",\"mr-lg-20\":\"mr-lg-20\",\"mx-lg-20\":\"mx-lg-20\",\"mb-lg-20\":\"mb-lg-20\",\"ml-lg-20\":\"ml-lg-20\",\"p-lg-0\":\"p-lg-0\",\"pt-lg-0\":\"pt-lg-0\",\"py-lg-0\":\"py-lg-0\",\"pr-lg-0\":\"pr-lg-0\",\"px-lg-0\":\"px-lg-0\",\"pb-lg-0\":\"pb-lg-0\",\"pl-lg-0\":\"pl-lg-0\",\"p-lg-1\":\"p-lg-1\",\"pt-lg-1\":\"pt-lg-1\",\"py-lg-1\":\"py-lg-1\",\"pr-lg-1\":\"pr-lg-1\",\"px-lg-1\":\"px-lg-1\",\"pb-lg-1\":\"pb-lg-1\",\"pl-lg-1\":\"pl-lg-1\",\"p-lg-2\":\"p-lg-2\",\"pt-lg-2\":\"pt-lg-2\",\"py-lg-2\":\"py-lg-2\",\"pr-lg-2\":\"pr-lg-2\",\"px-lg-2\":\"px-lg-2\",\"pb-lg-2\":\"pb-lg-2\",\"pl-lg-2\":\"pl-lg-2\",\"p-lg-3\":\"p-lg-3\",\"pt-lg-3\":\"pt-lg-3\",\"py-lg-3\":\"py-lg-3\",\"pr-lg-3\":\"pr-lg-3\",\"px-lg-3\":\"px-lg-3\",\"pb-lg-3\":\"pb-lg-3\",\"pl-lg-3\":\"pl-lg-3\",\"p-lg-4\":\"p-lg-4\",\"pt-lg-4\":\"pt-lg-4\",\"py-lg-4\":\"py-lg-4\",\"pr-lg-4\":\"pr-lg-4\",\"px-lg-4\":\"px-lg-4\",\"pb-lg-4\":\"pb-lg-4\",\"pl-lg-4\":\"pl-lg-4\",\"p-lg-5\":\"p-lg-5\",\"pt-lg-5\":\"pt-lg-5\",\"py-lg-5\":\"py-lg-5\",\"pr-lg-5\":\"pr-lg-5\",\"px-lg-5\":\"px-lg-5\",\"pb-lg-5\":\"pb-lg-5\",\"pl-lg-5\":\"pl-lg-5\",\"p-lg-6\":\"p-lg-6\",\"pt-lg-6\":\"pt-lg-6\",\"py-lg-6\":\"py-lg-6\",\"pr-lg-6\":\"pr-lg-6\",\"px-lg-6\":\"px-lg-6\",\"pb-lg-6\":\"pb-lg-6\",\"pl-lg-6\":\"pl-lg-6\",\"p-lg-7\":\"p-lg-7\",\"pt-lg-7\":\"pt-lg-7\",\"py-lg-7\":\"py-lg-7\",\"pr-lg-7\":\"pr-lg-7\",\"px-lg-7\":\"px-lg-7\",\"pb-lg-7\":\"pb-lg-7\",\"pl-lg-7\":\"pl-lg-7\",\"p-lg-10\":\"p-lg-10\",\"pt-lg-10\":\"pt-lg-10\",\"py-lg-10\":\"py-lg-10\",\"pr-lg-10\":\"pr-lg-10\",\"px-lg-10\":\"px-lg-10\",\"pb-lg-10\":\"pb-lg-10\",\"pl-lg-10\":\"pl-lg-10\",\"p-lg-20\":\"p-lg-20\",\"pt-lg-20\":\"pt-lg-20\",\"py-lg-20\":\"py-lg-20\",\"pr-lg-20\":\"pr-lg-20\",\"px-lg-20\":\"px-lg-20\",\"pb-lg-20\":\"pb-lg-20\",\"pl-lg-20\":\"pl-lg-20\",\"m-lg-auto\":\"m-lg-auto\",\"mt-lg-auto\":\"mt-lg-auto\",\"my-lg-auto\":\"my-lg-auto\",\"mr-lg-auto\":\"mr-lg-auto\",\"mx-lg-auto\":\"mx-lg-auto\",\"mb-lg-auto\":\"mb-lg-auto\",\"ml-lg-auto\":\"ml-lg-auto\",\"m-xl--1\":\"m-xl--1\",\"mt-xl--1\":\"mt-xl--1\",\"my-xl--1\":\"my-xl--1\",\"mr-xl--1\":\"mr-xl--1\",\"mx-xl--1\":\"mx-xl--1\",\"mb-xl--1\":\"mb-xl--1\",\"ml-xl--1\":\"ml-xl--1\",\"m-xl-0\":\"m-xl-0\",\"mt-xl-0\":\"mt-xl-0\",\"my-xl-0\":\"my-xl-0\",\"mr-xl-0\":\"mr-xl-0\",\"mx-xl-0\":\"mx-xl-0\",\"mb-xl-0\":\"mb-xl-0\",\"ml-xl-0\":\"ml-xl-0\",\"m-xl-1\":\"m-xl-1\",\"mt-xl-1\":\"mt-xl-1\",\"my-xl-1\":\"my-xl-1\",\"mr-xl-1\":\"mr-xl-1\",\"mx-xl-1\":\"mx-xl-1\",\"mb-xl-1\":\"mb-xl-1\",\"ml-xl-1\":\"ml-xl-1\",\"m-xl-2\":\"m-xl-2\",\"mt-xl-2\":\"mt-xl-2\",\"my-xl-2\":\"my-xl-2\",\"mr-xl-2\":\"mr-xl-2\",\"mx-xl-2\":\"mx-xl-2\",\"mb-xl-2\":\"mb-xl-2\",\"ml-xl-2\":\"ml-xl-2\",\"m-xl-3\":\"m-xl-3\",\"mt-xl-3\":\"mt-xl-3\",\"my-xl-3\":\"my-xl-3\",\"mr-xl-3\":\"mr-xl-3\",\"mx-xl-3\":\"mx-xl-3\",\"mb-xl-3\":\"mb-xl-3\",\"ml-xl-3\":\"ml-xl-3\",\"m-xl-4\":\"m-xl-4\",\"mt-xl-4\":\"mt-xl-4\",\"my-xl-4\":\"my-xl-4\",\"mr-xl-4\":\"mr-xl-4\",\"mx-xl-4\":\"mx-xl-4\",\"mb-xl-4\":\"mb-xl-4\",\"ml-xl-4\":\"ml-xl-4\",\"m-xl-5\":\"m-xl-5\",\"mt-xl-5\":\"mt-xl-5\",\"my-xl-5\":\"my-xl-5\",\"mr-xl-5\":\"mr-xl-5\",\"mx-xl-5\":\"mx-xl-5\",\"mb-xl-5\":\"mb-xl-5\",\"ml-xl-5\":\"ml-xl-5\",\"m-xl-6\":\"m-xl-6\",\"mt-xl-6\":\"mt-xl-6\",\"my-xl-6\":\"my-xl-6\",\"mr-xl-6\":\"mr-xl-6\",\"mx-xl-6\":\"mx-xl-6\",\"mb-xl-6\":\"mb-xl-6\",\"ml-xl-6\":\"ml-xl-6\",\"m-xl-7\":\"m-xl-7\",\"mt-xl-7\":\"mt-xl-7\",\"my-xl-7\":\"my-xl-7\",\"mr-xl-7\":\"mr-xl-7\",\"mx-xl-7\":\"mx-xl-7\",\"mb-xl-7\":\"mb-xl-7\",\"ml-xl-7\":\"ml-xl-7\",\"m-xl-10\":\"m-xl-10\",\"mt-xl-10\":\"mt-xl-10\",\"my-xl-10\":\"my-xl-10\",\"mr-xl-10\":\"mr-xl-10\",\"mx-xl-10\":\"mx-xl-10\",\"mb-xl-10\":\"mb-xl-10\",\"ml-xl-10\":\"ml-xl-10\",\"m-xl-20\":\"m-xl-20\",\"mt-xl-20\":\"mt-xl-20\",\"my-xl-20\":\"my-xl-20\",\"mr-xl-20\":\"mr-xl-20\",\"mx-xl-20\":\"mx-xl-20\",\"mb-xl-20\":\"mb-xl-20\",\"ml-xl-20\":\"ml-xl-20\",\"p-xl-0\":\"p-xl-0\",\"pt-xl-0\":\"pt-xl-0\",\"py-xl-0\":\"py-xl-0\",\"pr-xl-0\":\"pr-xl-0\",\"px-xl-0\":\"px-xl-0\",\"pb-xl-0\":\"pb-xl-0\",\"pl-xl-0\":\"pl-xl-0\",\"p-xl-1\":\"p-xl-1\",\"pt-xl-1\":\"pt-xl-1\",\"py-xl-1\":\"py-xl-1\",\"pr-xl-1\":\"pr-xl-1\",\"px-xl-1\":\"px-xl-1\",\"pb-xl-1\":\"pb-xl-1\",\"pl-xl-1\":\"pl-xl-1\",\"p-xl-2\":\"p-xl-2\",\"pt-xl-2\":\"pt-xl-2\",\"py-xl-2\":\"py-xl-2\",\"pr-xl-2\":\"pr-xl-2\",\"px-xl-2\":\"px-xl-2\",\"pb-xl-2\":\"pb-xl-2\",\"pl-xl-2\":\"pl-xl-2\",\"p-xl-3\":\"p-xl-3\",\"pt-xl-3\":\"pt-xl-3\",\"py-xl-3\":\"py-xl-3\",\"pr-xl-3\":\"pr-xl-3\",\"px-xl-3\":\"px-xl-3\",\"pb-xl-3\":\"pb-xl-3\",\"pl-xl-3\":\"pl-xl-3\",\"p-xl-4\":\"p-xl-4\",\"pt-xl-4\":\"pt-xl-4\",\"py-xl-4\":\"py-xl-4\",\"pr-xl-4\":\"pr-xl-4\",\"px-xl-4\":\"px-xl-4\",\"pb-xl-4\":\"pb-xl-4\",\"pl-xl-4\":\"pl-xl-4\",\"p-xl-5\":\"p-xl-5\",\"pt-xl-5\":\"pt-xl-5\",\"py-xl-5\":\"py-xl-5\",\"pr-xl-5\":\"pr-xl-5\",\"px-xl-5\":\"px-xl-5\",\"pb-xl-5\":\"pb-xl-5\",\"pl-xl-5\":\"pl-xl-5\",\"p-xl-6\":\"p-xl-6\",\"pt-xl-6\":\"pt-xl-6\",\"py-xl-6\":\"py-xl-6\",\"pr-xl-6\":\"pr-xl-6\",\"px-xl-6\":\"px-xl-6\",\"pb-xl-6\":\"pb-xl-6\",\"pl-xl-6\":\"pl-xl-6\",\"p-xl-7\":\"p-xl-7\",\"pt-xl-7\":\"pt-xl-7\",\"py-xl-7\":\"py-xl-7\",\"pr-xl-7\":\"pr-xl-7\",\"px-xl-7\":\"px-xl-7\",\"pb-xl-7\":\"pb-xl-7\",\"pl-xl-7\":\"pl-xl-7\",\"p-xl-10\":\"p-xl-10\",\"pt-xl-10\":\"pt-xl-10\",\"py-xl-10\":\"py-xl-10\",\"pr-xl-10\":\"pr-xl-10\",\"px-xl-10\":\"px-xl-10\",\"pb-xl-10\":\"pb-xl-10\",\"pl-xl-10\":\"pl-xl-10\",\"p-xl-20\":\"p-xl-20\",\"pt-xl-20\":\"pt-xl-20\",\"py-xl-20\":\"py-xl-20\",\"pr-xl-20\":\"pr-xl-20\",\"px-xl-20\":\"px-xl-20\",\"pb-xl-20\":\"pb-xl-20\",\"pl-xl-20\":\"pl-xl-20\",\"m-xl-auto\":\"m-xl-auto\",\"mt-xl-auto\":\"mt-xl-auto\",\"my-xl-auto\":\"my-xl-auto\",\"mr-xl-auto\":\"mr-xl-auto\",\"mx-xl-auto\":\"mx-xl-auto\",\"mb-xl-auto\":\"mb-xl-auto\",\"ml-xl-auto\":\"ml-xl-auto\",\"m-xxl--1\":\"m-xxl--1\",\"mt-xxl--1\":\"mt-xxl--1\",\"my-xxl--1\":\"my-xxl--1\",\"mr-xxl--1\":\"mr-xxl--1\",\"mx-xxl--1\":\"mx-xxl--1\",\"mb-xxl--1\":\"mb-xxl--1\",\"ml-xxl--1\":\"ml-xxl--1\",\"m-xxl-0\":\"m-xxl-0\",\"mt-xxl-0\":\"mt-xxl-0\",\"my-xxl-0\":\"my-xxl-0\",\"mr-xxl-0\":\"mr-xxl-0\",\"mx-xxl-0\":\"mx-xxl-0\",\"mb-xxl-0\":\"mb-xxl-0\",\"ml-xxl-0\":\"ml-xxl-0\",\"m-xxl-1\":\"m-xxl-1\",\"mt-xxl-1\":\"mt-xxl-1\",\"my-xxl-1\":\"my-xxl-1\",\"mr-xxl-1\":\"mr-xxl-1\",\"mx-xxl-1\":\"mx-xxl-1\",\"mb-xxl-1\":\"mb-xxl-1\",\"ml-xxl-1\":\"ml-xxl-1\",\"m-xxl-2\":\"m-xxl-2\",\"mt-xxl-2\":\"mt-xxl-2\",\"my-xxl-2\":\"my-xxl-2\",\"mr-xxl-2\":\"mr-xxl-2\",\"mx-xxl-2\":\"mx-xxl-2\",\"mb-xxl-2\":\"mb-xxl-2\",\"ml-xxl-2\":\"ml-xxl-2\",\"m-xxl-3\":\"m-xxl-3\",\"mt-xxl-3\":\"mt-xxl-3\",\"my-xxl-3\":\"my-xxl-3\",\"mr-xxl-3\":\"mr-xxl-3\",\"mx-xxl-3\":\"mx-xxl-3\",\"mb-xxl-3\":\"mb-xxl-3\",\"ml-xxl-3\":\"ml-xxl-3\",\"m-xxl-4\":\"m-xxl-4\",\"mt-xxl-4\":\"mt-xxl-4\",\"my-xxl-4\":\"my-xxl-4\",\"mr-xxl-4\":\"mr-xxl-4\",\"mx-xxl-4\":\"mx-xxl-4\",\"mb-xxl-4\":\"mb-xxl-4\",\"ml-xxl-4\":\"ml-xxl-4\",\"m-xxl-5\":\"m-xxl-5\",\"mt-xxl-5\":\"mt-xxl-5\",\"my-xxl-5\":\"my-xxl-5\",\"mr-xxl-5\":\"mr-xxl-5\",\"mx-xxl-5\":\"mx-xxl-5\",\"mb-xxl-5\":\"mb-xxl-5\",\"ml-xxl-5\":\"ml-xxl-5\",\"m-xxl-6\":\"m-xxl-6\",\"mt-xxl-6\":\"mt-xxl-6\",\"my-xxl-6\":\"my-xxl-6\",\"mr-xxl-6\":\"mr-xxl-6\",\"mx-xxl-6\":\"mx-xxl-6\",\"mb-xxl-6\":\"mb-xxl-6\",\"ml-xxl-6\":\"ml-xxl-6\",\"m-xxl-7\":\"m-xxl-7\",\"mt-xxl-7\":\"mt-xxl-7\",\"my-xxl-7\":\"my-xxl-7\",\"mr-xxl-7\":\"mr-xxl-7\",\"mx-xxl-7\":\"mx-xxl-7\",\"mb-xxl-7\":\"mb-xxl-7\",\"ml-xxl-7\":\"ml-xxl-7\",\"m-xxl-10\":\"m-xxl-10\",\"mt-xxl-10\":\"mt-xxl-10\",\"my-xxl-10\":\"my-xxl-10\",\"mr-xxl-10\":\"mr-xxl-10\",\"mx-xxl-10\":\"mx-xxl-10\",\"mb-xxl-10\":\"mb-xxl-10\",\"ml-xxl-10\":\"ml-xxl-10\",\"m-xxl-20\":\"m-xxl-20\",\"mt-xxl-20\":\"mt-xxl-20\",\"my-xxl-20\":\"my-xxl-20\",\"mr-xxl-20\":\"mr-xxl-20\",\"mx-xxl-20\":\"mx-xxl-20\",\"mb-xxl-20\":\"mb-xxl-20\",\"ml-xxl-20\":\"ml-xxl-20\",\"p-xxl-0\":\"p-xxl-0\",\"pt-xxl-0\":\"pt-xxl-0\",\"py-xxl-0\":\"py-xxl-0\",\"pr-xxl-0\":\"pr-xxl-0\",\"px-xxl-0\":\"px-xxl-0\",\"pb-xxl-0\":\"pb-xxl-0\",\"pl-xxl-0\":\"pl-xxl-0\",\"p-xxl-1\":\"p-xxl-1\",\"pt-xxl-1\":\"pt-xxl-1\",\"py-xxl-1\":\"py-xxl-1\",\"pr-xxl-1\":\"pr-xxl-1\",\"px-xxl-1\":\"px-xxl-1\",\"pb-xxl-1\":\"pb-xxl-1\",\"pl-xxl-1\":\"pl-xxl-1\",\"p-xxl-2\":\"p-xxl-2\",\"pt-xxl-2\":\"pt-xxl-2\",\"py-xxl-2\":\"py-xxl-2\",\"pr-xxl-2\":\"pr-xxl-2\",\"px-xxl-2\":\"px-xxl-2\",\"pb-xxl-2\":\"pb-xxl-2\",\"pl-xxl-2\":\"pl-xxl-2\",\"p-xxl-3\":\"p-xxl-3\",\"pt-xxl-3\":\"pt-xxl-3\",\"py-xxl-3\":\"py-xxl-3\",\"pr-xxl-3\":\"pr-xxl-3\",\"px-xxl-3\":\"px-xxl-3\",\"pb-xxl-3\":\"pb-xxl-3\",\"pl-xxl-3\":\"pl-xxl-3\",\"p-xxl-4\":\"p-xxl-4\",\"pt-xxl-4\":\"pt-xxl-4\",\"py-xxl-4\":\"py-xxl-4\",\"pr-xxl-4\":\"pr-xxl-4\",\"px-xxl-4\":\"px-xxl-4\",\"pb-xxl-4\":\"pb-xxl-4\",\"pl-xxl-4\":\"pl-xxl-4\",\"p-xxl-5\":\"p-xxl-5\",\"pt-xxl-5\":\"pt-xxl-5\",\"py-xxl-5\":\"py-xxl-5\",\"pr-xxl-5\":\"pr-xxl-5\",\"px-xxl-5\":\"px-xxl-5\",\"pb-xxl-5\":\"pb-xxl-5\",\"pl-xxl-5\":\"pl-xxl-5\",\"p-xxl-6\":\"p-xxl-6\",\"pt-xxl-6\":\"pt-xxl-6\",\"py-xxl-6\":\"py-xxl-6\",\"pr-xxl-6\":\"pr-xxl-6\",\"px-xxl-6\":\"px-xxl-6\",\"pb-xxl-6\":\"pb-xxl-6\",\"pl-xxl-6\":\"pl-xxl-6\",\"p-xxl-7\":\"p-xxl-7\",\"pt-xxl-7\":\"pt-xxl-7\",\"py-xxl-7\":\"py-xxl-7\",\"pr-xxl-7\":\"pr-xxl-7\",\"px-xxl-7\":\"px-xxl-7\",\"pb-xxl-7\":\"pb-xxl-7\",\"pl-xxl-7\":\"pl-xxl-7\",\"p-xxl-10\":\"p-xxl-10\",\"pt-xxl-10\":\"pt-xxl-10\",\"py-xxl-10\":\"py-xxl-10\",\"pr-xxl-10\":\"pr-xxl-10\",\"px-xxl-10\":\"px-xxl-10\",\"pb-xxl-10\":\"pb-xxl-10\",\"pl-xxl-10\":\"pl-xxl-10\",\"p-xxl-20\":\"p-xxl-20\",\"pt-xxl-20\":\"pt-xxl-20\",\"py-xxl-20\":\"py-xxl-20\",\"pr-xxl-20\":\"pr-xxl-20\",\"px-xxl-20\":\"px-xxl-20\",\"pb-xxl-20\":\"pb-xxl-20\",\"pl-xxl-20\":\"pl-xxl-20\",\"m-xxl-auto\":\"m-xxl-auto\",\"mt-xxl-auto\":\"mt-xxl-auto\",\"my-xxl-auto\":\"my-xxl-auto\",\"mr-xxl-auto\":\"mr-xxl-auto\",\"mx-xxl-auto\":\"mx-xxl-auto\",\"mb-xxl-auto\":\"mb-xxl-auto\",\"ml-xxl-auto\":\"ml-xxl-auto\",\"u-embed-responsive--ratio-sm-1by1\":\"u-embed-responsive--ratio-sm-1by1\",\"u-embed-responsive--ratio-md-1by1\":\"u-embed-responsive--ratio-md-1by1\",\"u-embed-responsive--ratio-lg-1by1\":\"u-embed-responsive--ratio-lg-1by1\",\"u-embed-responsive--ratio-xl-1by1\":\"u-embed-responsive--ratio-xl-1by1\",\"u-embed-responsive--ratio-xxl-1by1\":\"u-embed-responsive--ratio-xxl-1by1\",\"u-embed-responsive--ratio-sm-4by3\":\"u-embed-responsive--ratio-sm-4by3\",\"u-embed-responsive--ratio-md-4by3\":\"u-embed-responsive--ratio-md-4by3\",\"u-embed-responsive--ratio-lg-4by3\":\"u-embed-responsive--ratio-lg-4by3\",\"u-embed-responsive--ratio-xl-4by3\":\"u-embed-responsive--ratio-xl-4by3\",\"u-embed-responsive--ratio-xxl-4by3\":\"u-embed-responsive--ratio-xxl-4by3\",\"u-embed-responsive--ratio-3by4\":\"u-embed-responsive--ratio-3by4\",\"u-embed-responsive--ratio-sm-3by4\":\"u-embed-responsive--ratio-sm-3by4\",\"u-embed-responsive--ratio-md-3by4\":\"u-embed-responsive--ratio-md-3by4\",\"u-embed-responsive--ratio-lg-3by4\":\"u-embed-responsive--ratio-lg-3by4\",\"u-embed-responsive--ratio-xl-3by4\":\"u-embed-responsive--ratio-xl-3by4\",\"u-embed-responsive--ratio-xxl-3by4\":\"u-embed-responsive--ratio-xxl-3by4\",\"u-embed-responsive--ratio-sm-16by9\":\"u-embed-responsive--ratio-sm-16by9\",\"u-embed-responsive--ratio-md-16by9\":\"u-embed-responsive--ratio-md-16by9\",\"u-embed-responsive--ratio-lg-16by9\":\"u-embed-responsive--ratio-lg-16by9\",\"u-embed-responsive--ratio-xl-16by9\":\"u-embed-responsive--ratio-xl-16by9\",\"u-embed-responsive--ratio-xxl-16by9\":\"u-embed-responsive--ratio-xxl-16by9\",\"u-embed-full\":\"u-embed-full\",\"theme\":\"theme\",\"theme--base\":\"theme--base\",\"theme--gray-light\":\"theme--gray-light\",\"theme--yellow\":\"theme--yellow\",\"theme--black\":\"theme--black\",\"theme--text-color\":\"theme--text-color\",\"theme--text-color--base\":\"theme--text-color--base\",\"theme--text-color--gray-light\":\"theme--text-color--gray-light\",\"theme--text-color--yellow\":\"theme--text-color--yellow\",\"theme--text-color--black\":\"theme--text-color--black\",\"u-spacer-small\":\"u-spacer-small\",\"u-spacer-t-small\":\"u-spacer-t-small\",\"u-spacer-b-small\":\"u-spacer-b-small\",\"u-spacer-medium\":\"u-spacer-medium\",\"u-spacer-t-medium\":\"u-spacer-t-medium\",\"u-spacer-b-medium\":\"u-spacer-b-medium\",\"u-spacer-large\":\"u-spacer-large\",\"u-spacer-t-large\":\"u-spacer-t-large\",\"u-spacer-b-large\":\"u-spacer-b-large\",\"flex-row\":\"flex-row\",\"flex-column\":\"flex-column\",\"flex-row-reverse\":\"flex-row-reverse\",\"flex-column-reverse\":\"flex-column-reverse\",\"flex-wrap\":\"flex-wrap\",\"flex-nowrap\":\"flex-nowrap\",\"flex-wrap-reverse\":\"flex-wrap-reverse\",\"justify-content-start\":\"justify-content-start\",\"justify-content-end\":\"justify-content-end\",\"justify-content-center\":\"justify-content-center\",\"justify-content-between\":\"justify-content-between\",\"justify-content-around\":\"justify-content-around\",\"align-items-start\":\"align-items-start\",\"align-items-end\":\"align-items-end\",\"align-items-center\":\"align-items-center\",\"align-items-baseline\":\"align-items-baseline\",\"align-items-stretch\":\"align-items-stretch\",\"align-content-start\":\"align-content-start\",\"align-content-end\":\"align-content-end\",\"align-content-center\":\"align-content-center\",\"align-content-between\":\"align-content-between\",\"align-content-around\":\"align-content-around\",\"align-content-stretch\":\"align-content-stretch\",\"align-self-auto\":\"align-self-auto\",\"align-self-start\":\"align-self-start\",\"align-self-end\":\"align-self-end\",\"align-self-center\":\"align-self-center\",\"align-self-baseline\":\"align-self-baseline\",\"align-self-stretch\":\"align-self-stretch\",\"flex-grow-shrink-on\":\"flex-grow-shrink-on\",\"flex-grow-shrink-off\":\"flex-grow-shrink-off\",\"flex-sm-row\":\"flex-sm-row\",\"flex-sm-column\":\"flex-sm-column\",\"flex-sm-row-reverse\":\"flex-sm-row-reverse\",\"flex-sm-column-reverse\":\"flex-sm-column-reverse\",\"flex-sm-wrap\":\"flex-sm-wrap\",\"flex-sm-nowrap\":\"flex-sm-nowrap\",\"flex-sm-wrap-reverse\":\"flex-sm-wrap-reverse\",\"justify-content-sm-start\":\"justify-content-sm-start\",\"justify-content-sm-end\":\"justify-content-sm-end\",\"justify-content-sm-center\":\"justify-content-sm-center\",\"justify-content-sm-between\":\"justify-content-sm-between\",\"justify-content-sm-around\":\"justify-content-sm-around\",\"align-items-sm-start\":\"align-items-sm-start\",\"align-items-sm-end\":\"align-items-sm-end\",\"align-items-sm-center\":\"align-items-sm-center\",\"align-items-sm-baseline\":\"align-items-sm-baseline\",\"align-items-sm-stretch\":\"align-items-sm-stretch\",\"align-content-sm-start\":\"align-content-sm-start\",\"align-content-sm-end\":\"align-content-sm-end\",\"align-content-sm-center\":\"align-content-sm-center\",\"align-content-sm-between\":\"align-content-sm-between\",\"align-content-sm-around\":\"align-content-sm-around\",\"align-content-sm-stretch\":\"align-content-sm-stretch\",\"align-self-sm-auto\":\"align-self-sm-auto\",\"align-self-sm-start\":\"align-self-sm-start\",\"align-self-sm-end\":\"align-self-sm-end\",\"align-self-sm-center\":\"align-self-sm-center\",\"align-self-sm-baseline\":\"align-self-sm-baseline\",\"align-self-sm-stretch\":\"align-self-sm-stretch\",\"flex-grow-shrink-sm-on\":\"flex-grow-shrink-sm-on\",\"flex-grow-shrink-sm-off\":\"flex-grow-shrink-sm-off\",\"flex-md-row\":\"flex-md-row\",\"flex-md-column\":\"flex-md-column\",\"flex-md-row-reverse\":\"flex-md-row-reverse\",\"flex-md-column-reverse\":\"flex-md-column-reverse\",\"flex-md-wrap\":\"flex-md-wrap\",\"flex-md-nowrap\":\"flex-md-nowrap\",\"flex-md-wrap-reverse\":\"flex-md-wrap-reverse\",\"justify-content-md-start\":\"justify-content-md-start\",\"justify-content-md-end\":\"justify-content-md-end\",\"justify-content-md-center\":\"justify-content-md-center\",\"justify-content-md-between\":\"justify-content-md-between\",\"justify-content-md-around\":\"justify-content-md-around\",\"align-items-md-start\":\"align-items-md-start\",\"align-items-md-end\":\"align-items-md-end\",\"align-items-md-center\":\"align-items-md-center\",\"align-items-md-baseline\":\"align-items-md-baseline\",\"align-items-md-stretch\":\"align-items-md-stretch\",\"align-content-md-start\":\"align-content-md-start\",\"align-content-md-end\":\"align-content-md-end\",\"align-content-md-center\":\"align-content-md-center\",\"align-content-md-between\":\"align-content-md-between\",\"align-content-md-around\":\"align-content-md-around\",\"align-content-md-stretch\":\"align-content-md-stretch\",\"align-self-md-auto\":\"align-self-md-auto\",\"align-self-md-start\":\"align-self-md-start\",\"align-self-md-end\":\"align-self-md-end\",\"align-self-md-center\":\"align-self-md-center\",\"align-self-md-baseline\":\"align-self-md-baseline\",\"align-self-md-stretch\":\"align-self-md-stretch\",\"flex-grow-shrink-md-on\":\"flex-grow-shrink-md-on\",\"flex-grow-shrink-md-off\":\"flex-grow-shrink-md-off\",\"flex-lg-row\":\"flex-lg-row\",\"flex-lg-column\":\"flex-lg-column\",\"flex-lg-row-reverse\":\"flex-lg-row-reverse\",\"flex-lg-column-reverse\":\"flex-lg-column-reverse\",\"flex-lg-wrap\":\"flex-lg-wrap\",\"flex-lg-nowrap\":\"flex-lg-nowrap\",\"flex-lg-wrap-reverse\":\"flex-lg-wrap-reverse\",\"justify-content-lg-start\":\"justify-content-lg-start\",\"justify-content-lg-end\":\"justify-content-lg-end\",\"justify-content-lg-center\":\"justify-content-lg-center\",\"justify-content-lg-between\":\"justify-content-lg-between\",\"justify-content-lg-around\":\"justify-content-lg-around\",\"align-items-lg-start\":\"align-items-lg-start\",\"align-items-lg-end\":\"align-items-lg-end\",\"align-items-lg-center\":\"align-items-lg-center\",\"align-items-lg-baseline\":\"align-items-lg-baseline\",\"align-items-lg-stretch\":\"align-items-lg-stretch\",\"align-content-lg-start\":\"align-content-lg-start\",\"align-content-lg-end\":\"align-content-lg-end\",\"align-content-lg-center\":\"align-content-lg-center\",\"align-content-lg-between\":\"align-content-lg-between\",\"align-content-lg-around\":\"align-content-lg-around\",\"align-content-lg-stretch\":\"align-content-lg-stretch\",\"align-self-lg-auto\":\"align-self-lg-auto\",\"align-self-lg-start\":\"align-self-lg-start\",\"align-self-lg-end\":\"align-self-lg-end\",\"align-self-lg-center\":\"align-self-lg-center\",\"align-self-lg-baseline\":\"align-self-lg-baseline\",\"align-self-lg-stretch\":\"align-self-lg-stretch\",\"flex-grow-shrink-lg-on\":\"flex-grow-shrink-lg-on\",\"flex-grow-shrink-lg-off\":\"flex-grow-shrink-lg-off\",\"flex-xl-row\":\"flex-xl-row\",\"flex-xl-column\":\"flex-xl-column\",\"flex-xl-row-reverse\":\"flex-xl-row-reverse\",\"flex-xl-column-reverse\":\"flex-xl-column-reverse\",\"flex-xl-wrap\":\"flex-xl-wrap\",\"flex-xl-nowrap\":\"flex-xl-nowrap\",\"flex-xl-wrap-reverse\":\"flex-xl-wrap-reverse\",\"justify-content-xl-start\":\"justify-content-xl-start\",\"justify-content-xl-end\":\"justify-content-xl-end\",\"justify-content-xl-center\":\"justify-content-xl-center\",\"justify-content-xl-between\":\"justify-content-xl-between\",\"justify-content-xl-around\":\"justify-content-xl-around\",\"align-items-xl-start\":\"align-items-xl-start\",\"align-items-xl-end\":\"align-items-xl-end\",\"align-items-xl-center\":\"align-items-xl-center\",\"align-items-xl-baseline\":\"align-items-xl-baseline\",\"align-items-xl-stretch\":\"align-items-xl-stretch\",\"align-content-xl-start\":\"align-content-xl-start\",\"align-content-xl-end\":\"align-content-xl-end\",\"align-content-xl-center\":\"align-content-xl-center\",\"align-content-xl-between\":\"align-content-xl-between\",\"align-content-xl-around\":\"align-content-xl-around\",\"align-content-xl-stretch\":\"align-content-xl-stretch\",\"align-self-xl-auto\":\"align-self-xl-auto\",\"align-self-xl-start\":\"align-self-xl-start\",\"align-self-xl-end\":\"align-self-xl-end\",\"align-self-xl-center\":\"align-self-xl-center\",\"align-self-xl-baseline\":\"align-self-xl-baseline\",\"align-self-xl-stretch\":\"align-self-xl-stretch\",\"flex-grow-shrink-xl-on\":\"flex-grow-shrink-xl-on\",\"flex-grow-shrink-xl-off\":\"flex-grow-shrink-xl-off\",\"flex-xxl-row\":\"flex-xxl-row\",\"flex-xxl-column\":\"flex-xxl-column\",\"flex-xxl-row-reverse\":\"flex-xxl-row-reverse\",\"flex-xxl-column-reverse\":\"flex-xxl-column-reverse\",\"flex-xxl-wrap\":\"flex-xxl-wrap\",\"flex-xxl-nowrap\":\"flex-xxl-nowrap\",\"flex-xxl-wrap-reverse\":\"flex-xxl-wrap-reverse\",\"justify-content-xxl-start\":\"justify-content-xxl-start\",\"justify-content-xxl-end\":\"justify-content-xxl-end\",\"justify-content-xxl-center\":\"justify-content-xxl-center\",\"justify-content-xxl-between\":\"justify-content-xxl-between\",\"justify-content-xxl-around\":\"justify-content-xxl-around\",\"align-items-xxl-start\":\"align-items-xxl-start\",\"align-items-xxl-end\":\"align-items-xxl-end\",\"align-items-xxl-center\":\"align-items-xxl-center\",\"align-items-xxl-baseline\":\"align-items-xxl-baseline\",\"align-items-xxl-stretch\":\"align-items-xxl-stretch\",\"align-content-xxl-start\":\"align-content-xxl-start\",\"align-content-xxl-end\":\"align-content-xxl-end\",\"align-content-xxl-center\":\"align-content-xxl-center\",\"align-content-xxl-between\":\"align-content-xxl-between\",\"align-content-xxl-around\":\"align-content-xxl-around\",\"align-content-xxl-stretch\":\"align-content-xxl-stretch\",\"align-self-xxl-auto\":\"align-self-xxl-auto\",\"align-self-xxl-start\":\"align-self-xxl-start\",\"align-self-xxl-end\":\"align-self-xxl-end\",\"align-self-xxl-center\":\"align-self-xxl-center\",\"align-self-xxl-baseline\":\"align-self-xxl-baseline\",\"align-self-xxl-stretch\":\"align-self-xxl-stretch\",\"flex-grow-shrink-xxl-on\":\"flex-grow-shrink-xxl-on\",\"flex-grow-shrink-xxl-off\":\"flex-grow-shrink-xxl-off\",\"d-none\":\"d-none\",\"d-inline\":\"d-inline\",\"d-inline-block\":\"d-inline-block\",\"d-block\":\"d-block\",\"d-table\":\"d-table\",\"d-table-row\":\"d-table-row\",\"d-table-cell\":\"d-table-cell\",\"d-flex\":\"d-flex\",\"d-inline-flex\":\"d-inline-flex\",\"d-sm-none\":\"d-sm-none\",\"d-sm-inline\":\"d-sm-inline\",\"d-sm-inline-block\":\"d-sm-inline-block\",\"d-sm-block\":\"d-sm-block\",\"d-sm-table\":\"d-sm-table\",\"d-sm-table-row\":\"d-sm-table-row\",\"d-sm-table-cell\":\"d-sm-table-cell\",\"d-sm-flex\":\"d-sm-flex\",\"d-sm-inline-flex\":\"d-sm-inline-flex\",\"d-md-none\":\"d-md-none\",\"d-md-inline\":\"d-md-inline\",\"d-md-inline-block\":\"d-md-inline-block\",\"d-md-block\":\"d-md-block\",\"d-md-table\":\"d-md-table\",\"d-md-table-row\":\"d-md-table-row\",\"d-md-table-cell\":\"d-md-table-cell\",\"d-md-flex\":\"d-md-flex\",\"d-md-inline-flex\":\"d-md-inline-flex\",\"d-lg-none\":\"d-lg-none\",\"d-lg-inline\":\"d-lg-inline\",\"d-lg-inline-block\":\"d-lg-inline-block\",\"d-lg-block\":\"d-lg-block\",\"d-lg-table\":\"d-lg-table\",\"d-lg-table-row\":\"d-lg-table-row\",\"d-lg-table-cell\":\"d-lg-table-cell\",\"d-lg-flex\":\"d-lg-flex\",\"d-lg-inline-flex\":\"d-lg-inline-flex\",\"d-xl-none\":\"d-xl-none\",\"d-xl-inline\":\"d-xl-inline\",\"d-xl-inline-block\":\"d-xl-inline-block\",\"d-xl-block\":\"d-xl-block\",\"d-xl-table\":\"d-xl-table\",\"d-xl-table-row\":\"d-xl-table-row\",\"d-xl-table-cell\":\"d-xl-table-cell\",\"d-xl-flex\":\"d-xl-flex\",\"d-xl-inline-flex\":\"d-xl-inline-flex\",\"d-xxl-none\":\"d-xxl-none\",\"d-xxl-inline\":\"d-xxl-inline\",\"d-xxl-inline-block\":\"d-xxl-inline-block\",\"d-xxl-block\":\"d-xxl-block\",\"d-xxl-table\":\"d-xxl-table\",\"d-xxl-table-row\":\"d-xxl-table-row\",\"d-xxl-table-cell\":\"d-xxl-table-cell\",\"d-xxl-flex\":\"d-xxl-flex\",\"d-xxl-inline-flex\":\"d-xxl-inline-flex\",\"img-fluid\":\"img-fluid\",\"img-fluid--vertical\":\"img-fluid--vertical\",\"img-fluid--max-width\":\"img-fluid--max-width\",\"is-lazy\":\"is-lazy\",\"--lazy\":\"---lazy\",\"lazyload\":\"lazyload\",\"lazyloaded\":\"lazyloaded\",\"container\":\"container\",\"container-fluid\":\"container-fluid\",\"row\":\"row\",\"no-gutters\":\"no-gutters\",\"col\":\"col\",\"col-xxl\":\"col-xxl\",\"col-xxl-auto\":\"col-xxl-auto\",\"col-xxl-12\":\"col-xxl-12\",\"col-xxl-11\":\"col-xxl-11\",\"col-xxl-10\":\"col-xxl-10\",\"col-xxl-9\":\"col-xxl-9\",\"col-xxl-8\":\"col-xxl-8\",\"col-xxl-7\":\"col-xxl-7\",\"col-xxl-6\":\"col-xxl-6\",\"col-xxl-5\":\"col-xxl-5\",\"col-xxl-4\":\"col-xxl-4\",\"col-xxl-3\":\"col-xxl-3\",\"col-xxl-2\":\"col-xxl-2\",\"col-xxl-1\":\"col-xxl-1\",\"col-xl\":\"col-xl\",\"col-xl-auto\":\"col-xl-auto\",\"col-xl-12\":\"col-xl-12\",\"col-xl-11\":\"col-xl-11\",\"col-xl-10\":\"col-xl-10\",\"col-xl-9\":\"col-xl-9\",\"col-xl-8\":\"col-xl-8\",\"col-xl-7\":\"col-xl-7\",\"col-xl-6\":\"col-xl-6\",\"col-xl-5\":\"col-xl-5\",\"col-xl-4\":\"col-xl-4\",\"col-xl-3\":\"col-xl-3\",\"col-xl-2\":\"col-xl-2\",\"col-xl-1\":\"col-xl-1\",\"col-lg\":\"col-lg\",\"col-lg-auto\":\"col-lg-auto\",\"col-lg-12\":\"col-lg-12\",\"col-lg-11\":\"col-lg-11\",\"col-lg-10\":\"col-lg-10\",\"col-lg-9\":\"col-lg-9\",\"col-lg-8\":\"col-lg-8\",\"col-lg-7\":\"col-lg-7\",\"col-lg-6\":\"col-lg-6\",\"col-lg-5\":\"col-lg-5\",\"col-lg-4\":\"col-lg-4\",\"col-lg-3\":\"col-lg-3\",\"col-lg-2\":\"col-lg-2\",\"col-lg-1\":\"col-lg-1\",\"col-md\":\"col-md\",\"col-md-auto\":\"col-md-auto\",\"col-md-12\":\"col-md-12\",\"col-md-11\":\"col-md-11\",\"col-md-10\":\"col-md-10\",\"col-md-9\":\"col-md-9\",\"col-md-8\":\"col-md-8\",\"col-md-7\":\"col-md-7\",\"col-md-6\":\"col-md-6\",\"col-md-5\":\"col-md-5\",\"col-md-4\":\"col-md-4\",\"col-md-3\":\"col-md-3\",\"col-md-2\":\"col-md-2\",\"col-md-1\":\"col-md-1\",\"col-sm\":\"col-sm\",\"col-sm-auto\":\"col-sm-auto\",\"col-sm-12\":\"col-sm-12\",\"col-sm-11\":\"col-sm-11\",\"col-sm-10\":\"col-sm-10\",\"col-sm-9\":\"col-sm-9\",\"col-sm-8\":\"col-sm-8\",\"col-sm-7\":\"col-sm-7\",\"col-sm-6\":\"col-sm-6\",\"col-sm-5\":\"col-sm-5\",\"col-sm-4\":\"col-sm-4\",\"col-sm-3\":\"col-sm-3\",\"col-sm-2\":\"col-sm-2\",\"col-sm-1\":\"col-sm-1\",\"col-auto\":\"col-auto\",\"col-12\":\"col-12\",\"col-11\":\"col-11\",\"col-10\":\"col-10\",\"col-9\":\"col-9\",\"col-8\":\"col-8\",\"col-7\":\"col-7\",\"col-6\":\"col-6\",\"col-5\":\"col-5\",\"col-4\":\"col-4\",\"col-3\":\"col-3\",\"col-2\":\"col-2\",\"col-1\":\"col-1\",\"order-first\":\"order-first\",\"order-last\":\"order-last\",\"order-0\":\"order-0\",\"order-1\":\"order-1\",\"order-2\":\"order-2\",\"order-3\":\"order-3\",\"order-4\":\"order-4\",\"order-5\":\"order-5\",\"order-6\":\"order-6\",\"order-7\":\"order-7\",\"order-8\":\"order-8\",\"order-9\":\"order-9\",\"order-10\":\"order-10\",\"order-11\":\"order-11\",\"order-12\":\"order-12\",\"offset-1\":\"offset-1\",\"offset-2\":\"offset-2\",\"offset-3\":\"offset-3\",\"offset-4\":\"offset-4\",\"offset-5\":\"offset-5\",\"offset-6\":\"offset-6\",\"offset-7\":\"offset-7\",\"offset-8\":\"offset-8\",\"offset-9\":\"offset-9\",\"offset-10\":\"offset-10\",\"offset-11\":\"offset-11\",\"order-sm-first\":\"order-sm-first\",\"order-sm-last\":\"order-sm-last\",\"order-sm-0\":\"order-sm-0\",\"order-sm-1\":\"order-sm-1\",\"order-sm-2\":\"order-sm-2\",\"order-sm-3\":\"order-sm-3\",\"order-sm-4\":\"order-sm-4\",\"order-sm-5\":\"order-sm-5\",\"order-sm-6\":\"order-sm-6\",\"order-sm-7\":\"order-sm-7\",\"order-sm-8\":\"order-sm-8\",\"order-sm-9\":\"order-sm-9\",\"order-sm-10\":\"order-sm-10\",\"order-sm-11\":\"order-sm-11\",\"order-sm-12\":\"order-sm-12\",\"offset-sm-0\":\"offset-sm-0\",\"offset-sm-1\":\"offset-sm-1\",\"offset-sm-2\":\"offset-sm-2\",\"offset-sm-3\":\"offset-sm-3\",\"offset-sm-4\":\"offset-sm-4\",\"offset-sm-5\":\"offset-sm-5\",\"offset-sm-6\":\"offset-sm-6\",\"offset-sm-7\":\"offset-sm-7\",\"offset-sm-8\":\"offset-sm-8\",\"offset-sm-9\":\"offset-sm-9\",\"offset-sm-10\":\"offset-sm-10\",\"offset-sm-11\":\"offset-sm-11\",\"order-md-first\":\"order-md-first\",\"order-md-last\":\"order-md-last\",\"order-md-0\":\"order-md-0\",\"order-md-1\":\"order-md-1\",\"order-md-2\":\"order-md-2\",\"order-md-3\":\"order-md-3\",\"order-md-4\":\"order-md-4\",\"order-md-5\":\"order-md-5\",\"order-md-6\":\"order-md-6\",\"order-md-7\":\"order-md-7\",\"order-md-8\":\"order-md-8\",\"order-md-9\":\"order-md-9\",\"order-md-10\":\"order-md-10\",\"order-md-11\":\"order-md-11\",\"order-md-12\":\"order-md-12\",\"offset-md-0\":\"offset-md-0\",\"offset-md-1\":\"offset-md-1\",\"offset-md-2\":\"offset-md-2\",\"offset-md-3\":\"offset-md-3\",\"offset-md-4\":\"offset-md-4\",\"offset-md-5\":\"offset-md-5\",\"offset-md-6\":\"offset-md-6\",\"offset-md-7\":\"offset-md-7\",\"offset-md-8\":\"offset-md-8\",\"offset-md-9\":\"offset-md-9\",\"offset-md-10\":\"offset-md-10\",\"offset-md-11\":\"offset-md-11\",\"order-lg-first\":\"order-lg-first\",\"order-lg-last\":\"order-lg-last\",\"order-lg-0\":\"order-lg-0\",\"order-lg-1\":\"order-lg-1\",\"order-lg-2\":\"order-lg-2\",\"order-lg-3\":\"order-lg-3\",\"order-lg-4\":\"order-lg-4\",\"order-lg-5\":\"order-lg-5\",\"order-lg-6\":\"order-lg-6\",\"order-lg-7\":\"order-lg-7\",\"order-lg-8\":\"order-lg-8\",\"order-lg-9\":\"order-lg-9\",\"order-lg-10\":\"order-lg-10\",\"order-lg-11\":\"order-lg-11\",\"order-lg-12\":\"order-lg-12\",\"offset-lg-0\":\"offset-lg-0\",\"offset-lg-1\":\"offset-lg-1\",\"offset-lg-2\":\"offset-lg-2\",\"offset-lg-3\":\"offset-lg-3\",\"offset-lg-4\":\"offset-lg-4\",\"offset-lg-5\":\"offset-lg-5\",\"offset-lg-6\":\"offset-lg-6\",\"offset-lg-7\":\"offset-lg-7\",\"offset-lg-8\":\"offset-lg-8\",\"offset-lg-9\":\"offset-lg-9\",\"offset-lg-10\":\"offset-lg-10\",\"offset-lg-11\":\"offset-lg-11\",\"order-xl-first\":\"order-xl-first\",\"order-xl-last\":\"order-xl-last\",\"order-xl-0\":\"order-xl-0\",\"order-xl-1\":\"order-xl-1\",\"order-xl-2\":\"order-xl-2\",\"order-xl-3\":\"order-xl-3\",\"order-xl-4\":\"order-xl-4\",\"order-xl-5\":\"order-xl-5\",\"order-xl-6\":\"order-xl-6\",\"order-xl-7\":\"order-xl-7\",\"order-xl-8\":\"order-xl-8\",\"order-xl-9\":\"order-xl-9\",\"order-xl-10\":\"order-xl-10\",\"order-xl-11\":\"order-xl-11\",\"order-xl-12\":\"order-xl-12\",\"offset-xl-0\":\"offset-xl-0\",\"offset-xl-1\":\"offset-xl-1\",\"offset-xl-2\":\"offset-xl-2\",\"offset-xl-3\":\"offset-xl-3\",\"offset-xl-4\":\"offset-xl-4\",\"offset-xl-5\":\"offset-xl-5\",\"offset-xl-6\":\"offset-xl-6\",\"offset-xl-7\":\"offset-xl-7\",\"offset-xl-8\":\"offset-xl-8\",\"offset-xl-9\":\"offset-xl-9\",\"offset-xl-10\":\"offset-xl-10\",\"offset-xl-11\":\"offset-xl-11\",\"order-xxl-first\":\"order-xxl-first\",\"order-xxl-last\":\"order-xxl-last\",\"order-xxl-0\":\"order-xxl-0\",\"order-xxl-1\":\"order-xxl-1\",\"order-xxl-2\":\"order-xxl-2\",\"order-xxl-3\":\"order-xxl-3\",\"order-xxl-4\":\"order-xxl-4\",\"order-xxl-5\":\"order-xxl-5\",\"order-xxl-6\":\"order-xxl-6\",\"order-xxl-7\":\"order-xxl-7\",\"order-xxl-8\":\"order-xxl-8\",\"order-xxl-9\":\"order-xxl-9\",\"order-xxl-10\":\"order-xxl-10\",\"order-xxl-11\":\"order-xxl-11\",\"order-xxl-12\":\"order-xxl-12\",\"offset-xxl-0\":\"offset-xxl-0\",\"offset-xxl-1\":\"offset-xxl-1\",\"offset-xxl-2\":\"offset-xxl-2\",\"offset-xxl-3\":\"offset-xxl-3\",\"offset-xxl-4\":\"offset-xxl-4\",\"offset-xxl-5\":\"offset-xxl-5\",\"offset-xxl-6\":\"offset-xxl-6\",\"offset-xxl-7\":\"offset-xxl-7\",\"offset-xxl-8\":\"offset-xxl-8\",\"offset-xxl-9\":\"offset-xxl-9\",\"offset-xxl-10\":\"offset-xxl-10\",\"offset-xxl-11\":\"offset-xxl-11\",\"icon-info\":\"icon-info\",\"icon-play\":\"icon-play\",\"icon-arrow_downward\":\"icon-arrow_downward\",\"icon-arrow_upward\":\"icon-arrow_upward\",\"icon-arrow_back\":\"icon-arrow_back\",\"icon-arrow_forward\":\"icon-arrow_forward\",\"icon-keyboard_arrow_up\":\"icon-keyboard_arrow_up\",\"icon-keyboard_arrow_right\":\"icon-keyboard_arrow_right\",\"icon-keyboard_arrow_left\":\"icon-keyboard_arrow_left\",\"icon-keyboard_arrow_down\":\"icon-keyboard_arrow_down\",\"color-red\":\"color-red\",\"swiper\":\"swiper\",\"swiper-vertical\":\"swiper-vertical\",\"swiper-wrapper\":\"swiper-wrapper\",\"swiper-android\":\"swiper-android\",\"swiper-slide\":\"swiper-slide\",\"swiper-pointer-events\":\"swiper-pointer-events\",\"swiper-slide-invisible-blank\":\"swiper-slide-invisible-blank\",\"swiper-autoheight\":\"swiper-autoheight\",\"swiper-backface-hidden\":\"swiper-backface-hidden\",\"swiper-3d\":\"swiper-3d\",\"swiper-css-mode\":\"swiper-css-mode\",\"swiper-cube-shadow\":\"swiper-cube-shadow\",\"swiper-slide-shadow\":\"swiper-slide-shadow\",\"swiper-slide-shadow-bottom\":\"swiper-slide-shadow-bottom\",\"swiper-slide-shadow-left\":\"swiper-slide-shadow-left\",\"swiper-slide-shadow-right\":\"swiper-slide-shadow-right\",\"swiper-slide-shadow-top\":\"swiper-slide-shadow-top\",\"swiper-horizontal\":\"swiper-horizontal\",\"swiper-centered\":\"swiper-centered\",\"swiper-button-prev\":\"swiper-button-prev\",\"swiper-button-next\":\"swiper-button-next\",\"swiper-button-disabled\":\"swiper-button-disabled\",\"c-section\":\"c-section\",\"c-section-wrap\":\"c-section-wrap\",\"c-section--partingline\":\"c-section--partingline\",\"c-cookie-consent\":\"c-cookie-consent\",\"is-open\":\"is-open\",\"c-header\":\"c-header\",\"is-inverted\":\"is-inverted\",\"c-header-toggle-inner\":\"c-header-toggle-inner\",\"header-is-open\":\"header-is-open\",\"c-header-logo\":\"c-header-logo\",\"header-has-breadcrumb\":\"header-has-breadcrumb\",\"modal-is-open\":\"modal-is-open\",\"c-header-backdrop\":\"c-header-backdrop\",\"c-header-logo--big\":\"c-header-logo--big\",\"c-header-breadcrumb\":\"c-header-breadcrumb\",\"c-header-cultures\":\"c-header-cultures\",\"c-list__item\":\"c-list__item\",\"c-header-cultures-wrapper\":\"c-header-cultures-wrapper\",\"c-header-toggle\":\"c-header-toggle\",\"is-active\":\"is-active\",\"c-header-toggle-inner-bar\":\"c-header-toggle-inner-bar\",\"c-footer\":\"c-footer\",\"is-at-end\":\"is-at-end\",\"content-is-open\":\"content-is-open\",\"c-footer-border\":\"c-footer-border\",\"c-footer-col\":\"c-footer-col\",\"c-footer-title\":\"c-footer-title\",\"c-list\":\"c-list\",\"c-modal\":\"c-modal\",\"c-modal-content\":\"c-modal-content\",\"is-disabled\":\"is-disabled\",\"c-list--inline\":\"c-list--inline\",\"c-list--seperator\":\"c-list--seperator\",\"c-list__back-button\":\"c-list__back-button\",\"c-breadcrumb\":\"c-breadcrumb\",\"c-breadcrumb-collapse\":\"c-breadcrumb-collapse\",\"c-breadcrumb-item\":\"c-breadcrumb-item\",\"c-breadcrumb-link\":\"c-breadcrumb-link\",\"c-breadcrumb-icon\":\"c-breadcrumb-icon\",\"c-layout\":\"c-layout\",\"c-section-scroll-item\":\"c-section-scroll-item\",\"c-layout-item\":\"c-layout-item\",\"c-layout-item--fixed\":\"c-layout-item--fixed\",\"no-spacer\":\"no-spacer\",\"c-layout-item--spacer\":\"c-layout-item--spacer\",\"c-visual-grid\":\"c-visual-grid\",\"visual-grid\":\"visual-grid\",\"rerun-visual-grid\":\"rerun-visual-grid\",\"visual-grid-reverse\":\"visual-grid-reverse\",\"c-visual-grid-row\":\"c-visual-grid-row\",\"c-border-top\":\"c-border-top\",\"c-table\":\"c-table\",\"c-table-wrapper\":\"c-table-wrapper\",\"c-title\":\"c-title\",\"c-title-underline\":\"c-title-underline\",\"c-title-box\":\"c-title-box\",\"js-fit-text\":\"js-fit-text\",\"c-lead\":\"c-lead\",\"c-number\":\"c-number\",\"c-number-container\":\"c-number-container\",\"js-section-scroll\":\"js-section-scroll\",\"is-at-center\":\"is-at-center\",\"c-number--full-width\":\"c-number--full-width\",\"c-number--no-decoration\":\"c-number--no-decoration\",\"c-text\":\"c-text\",\"c-text--full-width\":\"c-text--full-width\",\"c-text--offset\":\"c-text--offset\",\"themeing-col\":\"themeing-col\",\"c-img-caption\":\"c-img-caption\",\"regular\":\"regular\",\"c-img-transition\":\"c-img-transition\",\"c-img-full-width\":\"c-img-full-width\",\"c-img-transform-width\":\"c-img-transform-width\",\"is-at-start\":\"is-at-start\",\"c-section-scroll-item-number\":\"c-section-scroll-item-number\",\"c-player\":\"c-player\",\"c-img-transform-width-inner\":\"c-img-transform-width-inner\",\"c-img-transform-width-wrapper\":\"c-img-transform-width-wrapper\",\"c-img-alignment\":\"c-img-alignment\",\"c-img-alignment--left\":\"c-img-alignment--left\",\"c-img-alignment--center\":\"c-img-alignment--center\",\"c-img-alignment--right\":\"c-img-alignment--right\",\"c-img-circle\":\"c-img-circle\",\"c-img-small\":\"c-img-small\",\"c-img-greyscale\":\"c-img-greyscale\",\"c-button\":\"c-button\",\"--active\":\"---active\",\"c-button--left\":\"c-button--left\",\"c-button--center\":\"c-button--center\",\"c-button--right\":\"c-button--right\",\"c-button--outline\":\"c-button--outline\",\"c-link\":\"c-link\",\"c-link-underline\":\"c-link-underline\",\"c-tab\":\"c-tab\",\"c-tab-bar\":\"c-tab-bar\",\"c-tab-bar--fixed\":\"c-tab-bar--fixed\",\"c-quote\":\"c-quote\",\"c-quote--full-width\":\"c-quote--full-width\",\"c-quote__author\":\"c-quote__author\",\"c-quote--center\":\"c-quote--center\",\"c-quote--layoutBig\":\"c-quote--layoutBig\",\"c-quote--no-decoration\":\"c-quote--no-decoration\",\"c-teaser\":\"c-teaser\",\"c-teaser--left-half\":\"c-teaser--left-half\",\"c-teaser--right-half\":\"c-teaser--right-half\",\"c-teaser-half-wrapper\":\"c-teaser-half-wrapper\",\"c-teaser-title\":\"c-teaser-title\",\"c-teaser-media\":\"c-teaser-media\",\"c-teaser-subtitle\":\"c-teaser-subtitle\",\"c-question\":\"c-question\",\"c-question-container\":\"c-question-container\",\"c-player__video\":\"c-player__video\",\"c-player__overlay\":\"c-player__overlay\",\"is-playing\":\"is-playing\",\"c-player__icon\":\"c-player__icon\",\"autoplay\":\"autoplay\",\"c-jubilee\":\"c-jubilee\",\"c-jubilee__media\":\"c-jubilee__media\",\"c-jubilee__media--video\":\"c-jubilee__media--video\",\"c-jubilee__wrapper\":\"c-jubilee__wrapper\",\"c-jubilee__content\":\"c-jubilee__content\",\"c-skylab4\":\"c-skylab4\",\"c-skylab4__media\":\"c-skylab4__media\",\"c-skylab4__media--video\":\"c-skylab4__media--video\",\"c-skylab4__wrapper\":\"c-skylab4__wrapper\",\"c-skylab4__content\":\"c-skylab4__content\",\"c-link-list\":\"c-link-list\",\"c-link-list-item\":\"c-link-list-item\",\"c-link-list-icon\":\"c-link-list-icon\",\"c-double-scroll\":\"c-double-scroll\",\"has-scroll\":\"has-scroll\",\"c-section-slider\":\"c-section-slider\",\"is-shown\":\"is-shown\",\"c-section-slider-nav\":\"c-section-slider-nav\",\"c-section-slider-nav-links\":\"c-section-slider-nav-links\",\"has-scrolled\":\"has-scrolled\",\"c-section-slider-nav-list\":\"c-section-slider-nav-list\",\"hide-nav-at-start\":\"hide-nav-at-start\",\"c-section-slider-nav-item\":\"c-section-slider-nav-item\",\"c-section-slider-nav-item--media-topic\":\"c-section-slider-nav-item--media-topic\",\"c-section-slider-nav-link\":\"c-section-slider-nav-link\",\"c-section-slider-nav-link-name\":\"c-section-slider-nav-link-name\",\"show-nav-title\":\"show-nav-title\",\"c-section-slider-nav-pagination\":\"c-section-slider-nav-pagination\",\"c-section-slider-nav-pagination-current\":\"c-section-slider-nav-pagination-current\",\"c-section-slider-nav-pagination-seperator\":\"c-section-slider-nav-pagination-seperator\",\"c-section-slider-nav-pagination-total\":\"c-section-slider-nav-pagination-total\",\"c-section-slider-nav-arrow\":\"c-section-slider-nav-arrow\",\"c-section-slider-nav-arrow-prev\":\"c-section-slider-nav-arrow-prev\",\"c-section-slider-nav-arrow-next\":\"c-section-slider-nav-arrow-next\",\"c-section-slider-nav-arrow-container\":\"c-section-slider-nav-arrow-container\",\"c-section-slider-nav-arrow-label\":\"c-section-slider-nav-arrow-label\",\"c-section-slider-nav-footer\":\"c-section-slider-nav-footer\",\"c-section-slider-nav-footer-download-icon\":\"c-section-slider-nav-footer-download-icon\",\"c-section-slider-nav-footer-note\":\"c-section-slider-nav-footer-note\",\"c-section-slider-nav-footer-download\":\"c-section-slider-nav-footer-download\",\"c-section-slider-nav-footer-download-text\":\"c-section-slider-nav-footer-download-text\",\"c-section-slider-wrapper\":\"c-section-slider-wrapper\",\"swiper-container\":\"swiper-container\",\"c-section-slider-media\":\"c-section-slider-media\",\"c-section-slider-container\":\"c-section-slider-container\",\"c-section-slider-container--bottom\":\"c-section-slider-container--bottom\",\"c-section-slider-upper\":\"c-section-slider-upper\",\"c-section-slider-lower\":\"c-section-slider-lower\",\"fit-text\":\"fit-text\",\"c-section-slider-upper--center\":\"c-section-slider-upper--center\",\"c-section-slider-lower--auto\":\"c-section-slider-lower--auto\",\"c-section-slider-title\":\"c-section-slider-title\",\"c-section-slider-text\":\"c-section-slider-text\",\"c-section-slider-footer\":\"c-section-slider-footer\",\"c-section-slider-scroll\":\"c-section-slider-scroll\",\"c-section-slider-scroll-body\":\"c-section-slider-scroll-body\",\"c-section--last\":\"c-section--last\",\"c-section-slider-scroll-progress\":\"c-section-slider-scroll-progress\",\"content-is-ready\":\"content-is-ready\",\"c-section-slider-scroll-progress-indicator\":\"c-section-slider-scroll-progress-indicator\",\"c-scroll-slider\":\"c-scroll-slider\",\"is-hidden\":\"is-hidden\",\"is-slided\":\"is-slided\",\"c-scroll-slider-arrow\":\"c-scroll-slider-arrow\",\"c-scroll-slider-label-close\":\"c-scroll-slider-label-close\",\"c-scroll-slider-label\":\"c-scroll-slider-label\",\"c-scroll-slider-thumb\":\"c-scroll-slider-thumb\",\"c-scroll-slider-thumb-wrapper\":\"c-scroll-slider-thumb-wrapper\",\"c-signature-text\":\"c-signature-text\",\"c-signature-img\":\"c-signature-img\"};","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\n__webpack_require__(1467);\nvar __webpack_exports__ = __webpack_require__(3325);\n",""],"names":["Chart","register","ArcElement","BarElement","BarController","CategoryScale","DoughnutController","Legend","LinearScale","LineElement","LineController","PointElement","Title","Tooltip","ChartDeferred","bodyStyles","getComputedStyle","document","body","defaults","font","family","fontFamily","size","parseInt","fontSize","weight","fontWeight","ChartComponent","className","element","tooltipDisabled","getAttribute","type","sameScale","labels","JSON","parse","datasets","title","undefined","length","display","text","label","scales","reduce","map","dataset","i","yLabel","yAxisID","position","grid","drawOnChartArea","backgroundColor","getColors","Colors","getColor","pointRadius","chart","data","options","plugins","legend","tooltip","enabled","deferred","yOffset","index","startColor","startColors","rgb","endColors","lighten","colors","r","interpolate","g","b","push","start","end","steps","count","s","e","final","Math","floor","ContainInnerComponent","wrapper","children","item","parent","parentElement","calculate","window","addEventListener","ratio","clientWidth","clientHeight","parentRatio","top","bottom","left","right","height","width","style","CookieBannerComponent","cookieKey","Array","from","querySelectorAll","forEach","btn","preventDefault","accept","hide","Infinity","DoubleScrollComponent","scroller","createElement","inner","appendChild","insertBefore","resize","scrollLeft","firstElementChild","scrollWidth","FitTextComponent","Swiper","use","Keyboard","Mousewheel","HashNavigation","Autoplay","GallerySliderComponent","duration","swiper","autoplay","delay","loop","speed","HeaderComponent","toggle","querySelector","backdrop","ModalComponent","close","IFramePlayer","button","startPlayerClassName","iframe","play","once","src","indexOf","replace","setTimeout","classList","add","playingClassName","setAttribute","InverterComponent","PageRenderHelper","onPageChange","subscribe","init","timer","setInterval","scenes","scene","section","state","toggleInverter","refresh","destroy","sections","ScrollMagic","Scene","triggerElement","triggerHook","offset","rect","getBoundingClientRect","on","addTo","closest","ScrollMagicModalController","ScrollMagicController","isModalOpen","isContentOpen","offsetHeight","toLowerCase","MediaTransitionComponent","observer","IntersectionObserver","entries","entry","isIntersecting","sketch","stop","Sketch","intervalDuration","uniforms","intensity","value","min","max","fragment","then","observe","container","opts","THREE","vertex","renderer","WebGLRenderer","offsetWidth","setPixelRatio","devicePixelRatio","setSize","setClearColor","easing","images","domElement","camera","PerspectiveCamera","innerWidth","innerHeight","set","time","current","textures","paused","Promise","resolve","initiate","setupResize","setSettings","addObjects","clickEvent","cb","promises","url","promise","TextureLoader","load","all","next","settings","progress","Object","keys","ResizeObserver","aspect","imageAspect","image","a1","a2","material","resolution","x","y","z","w","dist","fov","PI","atan","plane","scale","updateProjectionMatrix","ShaderMaterial","extensions","derivatives","side","DoubleSide","border","scaleX","scaleY","transition","swipe","radius","texture1","texture2","displacement","Vector4","vertexShader","fragmentShader","geometry","PlaneGeometry","Mesh","clearInterval","interval","info","reset","dispose","render","isRunning","len","nextTexture","tl","TimelineMax","to","ease","Power2","onComplete","requestAnimationFrame","bind","mergeOptions","classType","acc","key","val","isNumeric","parseFloat","str","isNaN","handlers","headerBreadcrumb","innerContent","pageRenderHelper","items","handler","removeEventListener","func","wrappedFunc","activatorClickListener","removeAttribute","fetch","dom","header","innerHTML","dispatch","catch","error","finally","innerSelector","headerCulturesSelector","headerCultures","prevUrl","getFullUrl","reject","history","pushState","response","html","DOMParser","parseFromString","newHeaderCultures","newContent","location","href","prevTitle","pathname","hash","search","EventDispatcher","stringIFramePlayer","IFramePlayerComponent","player","iFrameElement","getElementsByTagName","SectionScrollProgressComponent","updateScrollProgress","currentYOffset","scrollY","documentElement","scrollHeight","scrolled","setProperty","SectionScrollSlider","isAnimating","isOpen","scrollTopDefaultOffset","scrollTop","input","sliderThumb","onSliderChange","target","onSliderInput","sliderValue","applyStyles","applyScrollPos","fireEvents","newValue","closeScrollContainer","openScrollContainer","scrollTo","behavior","onStateChange","smooth","debounce","SectionScrollComponent","tween","TweenMax","clearProps","removeTween","fullSectionScene","setClassToggle","activeOnMobile","isNumberSection","medias","media","mediaScene","setPin","pushFollowers","sibling","nextElementSibling","previousElementSibling","fromTo","Linear","easeNone","siblingScene","setTween","sectionScene","sectionScene2","handleScenes","ScrollMagicDesktopModalController","ScrollMagicDesktopController","SectionSliderComponent","slider","scrollSlider","nav","navItems","navCurrent","rootUrl","rootTitle","initSlide","initialSlide","direction","hashNavigation","replaceState","watchState","autoHeight","touchReleaseOnEdges","mousewheel","releaseOnEdges","keyboard","onlyInViewport","afterInit","currentSlide","slides","activeIndex","setActiveNavItem","transitionStart","slide","getInstance","pause","transitionEnd","slideIndex","slideTo","disable","enable","nextIndex","clear","slideHash","allIframes","hideScrolSection","bonuceScrolSlider","elementsCollide","chapterValue","remove","rect1","el2","rect2","toString","padStart","activeItem","TabsComponent","o","TransformFullToHalfComponent","handleScene","update","Controller","modal","controller","scrollPos","initialize","CollapseComponent","elem","getElementById","substring","HTMLElement","linearTween","timeElapsed","distance","collapse","Collapse","stringCollapse","activeClass","activeParentClass","animateProp","collapsingClass","componentClass","showClass","showClassDesktop","desktopWidth","transitionDuration","isHideable","closeSiblings","useShowClassDesktop","dataParentSelector","dataTargetSelector","dataToggleSelector","hrefSelector","isTransitioning","eventNamespaceFn","handleClick","event","trigger","currentTarget","tagName","triggers","outerWidth","show","selector","id","actives","filter","active","anyTransitioning","collapseInstance","_handleShow","_handleClose","toggles","_addAriaAndCollapsedClass","collapseElement","create","console","reflector","Reflector","resolver","Resolver","compiler","Compiler","factory","components","rootElement","observables","Map","componentType","component","safeRootElement","getElementsByClassName","node","compile","Error","name","MutationObserver","mutations","componentInitializer","mutation","addedNodes","comps","c","childList","subtree","componentCache","constructor","has","get","queries","propName","query","targetNode","descendants","nodes","cache","concat","f","first","onInit","Component","createComponent","typeOrFunc","parentCtor","getParentCtor","ownAnnotations","_ownAnnotations","parentAnnotations","annotations","propMetadata","parentPropMetadata","ownPropMetadata","_ownPropMetadata","decorators","hasOwnProperty","ANNOTATIONS","PROP_METADATA","ctor","parentProto","getPrototypeOf","prototype","QUERY_METADATA_IDENTIFIERS","typeMetadata","metadata","findLast","metadataName","propertyMetadata","_mergeWithPropertyMetadata","a","some","_merge","mergedQueries","res","propertyName","_getQueryMetadata","q","read","arr","condition","makeDecorator","props","parentClass","chainFn","typeFn","metaCtor","makeMetadataCtor","DecoratorFactory","args","call","annotationInstance","typeDecorator","cls","defineProperty","values","makePropDecorator","PropDecoratorFactory","apply","decoratorInstance","PropDecorator","metaName","meta","unshift","makeMetadataFactory","isTypeOf","obj","Type","Function","isType","v","getCookie","decodeURIComponent","cookie","RegExp","encodeURIComponent","setCookie","path","domain","secure","test","expires","Number","String","Date","toUTCString","keyStr","valueStr","domainStr","pathStr","secureStr","addClass","trim","asHTMLElement","changeClass","classRegexCache","classRegex","getClass","getSelectorElementFromElement","attribute","fallbackHref","substr","getSelectorFromElement","getWindowScrollTop","pageYOffset","parentNode","hasClass","isHTMLElement","nodeType","nodeName","removeClass","regex","removeClassFactory","removeClassOnCollection","elements","toggleClass","dispatchCustomEvent","eventName","CustomEvent","dispatchEvent","Subscription","isOnce","isExecuted","subscriptions","sub","execute","cleanup","fn","splice","eventNamespaceFactory","namespace","wait","immediate","timeout","result","debounceFn","context","arguments","later","callNow","clearTimeout","scrollToOffset","animationFunction","t","d","timeStart","Window","transitionEndEventName","addTransitionEndListener","callback","fallbackDuration","called","listener","getTransitionEndEventName","transitions","WebkitTransition","Animator","_request","_charts","_running","_lastDate","anims","date","callbacks","listeners","numSteps","initial","currentStep","requestAnimFrame","_update","_refresh","now","remaining","running","draw","_active","_total","tick","pop","_notify","charts","complete","_getAnims","cur","_duration","cancel","delete","animator","transparent","interpolators","boolean","factor","color","c0","c1","valid","mix","hexString","number","Animation","cfg","prop","currentValue","_fn","_easing","effects","linear","_start","_loop","_target","_prop","_from","_to","_promises","elapsed","remain","rej","resolved","method","numbers","animationOptions","animation","describe","_fallback","_indexable","_scriptable","properties","animations","visible","Animations","config","_chart","_properties","configure","animatedProps","getOwnPropertyNames","option","newOptions","resolveTargetOptions","_createAnimations","$shared","awaitAll","$animations","charAt","_animateOptions","anim","scaleClip","allowedOverflow","reverse","defaultClip","xScale","yScale","toClip","l","disabled","getSortedDatasetIndices","filterVisible","metasets","_getSortedDatasetMetas","ilen","applyStack","stack","dsIndex","singleMode","mode","datasetIndex","otherValue","convertObjectDataToArray","adata","isStacked","stacked","getStackKey","indexScale","valueScale","getUserBounds","minDefined","maxDefined","NEGATIVE_INFINITY","POSITIVE_INFINITY","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","vScale","positive","getMatchingVisibleMetas","updateStacks","parsed","_cachedMeta","_stacks","iScale","iAxis","axis","vAxis","itemStacks","_top","_bottom","getFirstScaleId","shift","createDatasetContext","createDataContext","dataIndex","raw","clearStacks","_parsed","isDirectUpdateMode","cloneIfNotShared","cached","shared","createStack","canStack","hidden","_stacked","DatasetController","_ctx","ctx","_cachedDataOpts","getMeta","_type","_parsing","_data","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","$context","_syncList","linkScales","addElements","getDataset","chooseId","xid","xAxisID","yid","rid","rAxisID","indexAxis","iid","iAxisID","vid","vAxisID","getScaleForId","rScale","getDatasetMeta","scaleID","isExtensible","_dataCheck","datasetElementType","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","scopes","getOptionScopes","createResolver","getContext","parsing","sorted","_sorted","prev","parseArrayData","parseObjectData","parsePrimitiveData","isNotInOrderComparedToPrev","getLabels","singleScale","xAxisKey","yAxisKey","range","parsedValue","NaN","otherScale","_getOtherScale","otherMin","otherMax","_skip","updateRangeFromParsed","getParsed","getLabelForValue","_clip","clip","getMaxOverflow","area","chartArea","drawActiveElementsOnTop","resolveDatasetElementOptions","resolveDataElementOptions","_resolveElementOptions","dataElementType","elementType","cacheKey","sharing","datasetElementScopeKeys","prefixes","names","resolveNamedOptions","freeze","datasetAnimationScopeKeys","_cacheable","sharedOptions","_animationsDisabled","_resolveAnimations","getStyle","getSharedOptions","_setStyle","arg1","arg2","numMeta","numData","_insertElements","_removeElements","move","updateElements","removed","_dataChanges","_sync","newCount","getAllScaleValues","_cache","$bar","visibleMetas","getAllParsedValues","sort","computeMinSampleSize","_length","curr","updateMinAndPrev","abs","getPixelForValue","ticks","getPixelForTick","computeFitCategoryTraits","ruler","stackCount","thickness","barThickness","categoryPercentage","barPercentage","chunk","pixels","computeFlexCategoryTraits","percent","parseFloatBar","startValue","endValue","barStart","barEnd","_custom","parseValue","parseArrayOrPrimitive","isFloatBar","custom","barSign","actualBase","isHorizontal","borderProps","horizontal","base","setBorderSkipped","edge","borderSkipped","enableBorderRadius","parseEdge","swap","startEnd","orig","v1","v2","setInflateAmount","inflateAmount","iAxisKey","vAxisKey","bars","getBasePixel","_getRuler","firstOpts","includeOptions","updateSharedOptions","vpixels","head","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","center","updateElement","last","grouped","_getStacks","_startPixel","_endPixel","_getStackCount","baseValue","minBarLength","floating","getDataVisibility","halfGrid","getLineWidthForValue","skipNull","maxBarThickness","stackIndex","_getStackIndex","rects","overrides","_index_","_value_","beginAtZero","BubbleController","points","point","iPixel","getPixelForDecimal","vPixel","skip","getRatioAndOffset","rotation","circumference","cutout","ratioX","ratioY","offsetX","offsetY","TAU","startAngle","endAngle","startX","cos","startY","sin","endX","endY","calcMax","angle","calcMin","maxX","maxY","HALF_PI","minX","minY","innerRadius","outerRadius","getter","isDatasetVisible","_getRotation","_getCircumference","arcs","spacing","getMaxBorderWidth","getMaxOffset","maxSize","chartWeight","_getRingWeight","_getRotationExtents","maxWidth","maxHeight","maxRadius","radiusLength","_getVisibleDatasetWeightTotal","total","calculateTotal","_getRingWeightOffset","animateRotate","calculateCircumference","animationOpts","centerX","centerY","animateScale","_circumference","arc","metaData","locale","borderAlign","borderWidth","hoverBorderWidth","hoverOffset","ringWeightOffset","descriptors","aspectRatio","generateLabels","pointStyle","fillStyle","strokeStyle","borderColor","lineWidth","onClick","legendItem","toggleDataVisibility","tooltipItem","dataLabel","formattedValue","slice","line","_dataset","animationsDisabled","getStartAndCountOfVisiblePoints","scaleRangesChanged","_datasetIndex","_decimated","showLine","segment","animated","spanGaps","maxGapLength","directUpdate","prevParsed","nullData","firstPoint","lastPoint","updateControlPoints","pointCount","lo","hi","_scaleRanges","newRanges","xmin","xmax","ymin","ymax","changed","PolarAreaController","_updateRadius","minSize","cutoutPercentage","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","angleLines","circular","pointLabels","PieController","RadarController","_fullLoop","pointPosition","getPointPositionForValue","fill","ScatterController","interaction","controllers","__proto__","abstract","DateAdapter","format","timestamp","amount","unit","weekday","override","members","adapters","_date","getRelativePosition","evaluateAllVisibleItems","getSortedVisibleDatasetMetas","j","jlen","binarySearch","metaset","intersect","lookupMethod","_reversePixels","_rlookupByKey","_lookupByKey","el","getRange","optimizedEvaluateItems","getDistanceMetricForAxis","useX","useY","pt1","pt2","deltaX","deltaY","sqrt","pow","getIntersectItems","useFinalPosition","_minPadding","evaluationFunc","inRange","getNearestRadialItems","getProps","getNearestCartesianItems","distanceMetric","minDistance","getCenterPoint","pointInArea","getNearestItems","getAxisItems","rangeMethod","intersectsItem","Interaction","modes","nearest","STATIC_POSITIONS","filterByPosition","array","pos","filterDynamicPositionByAxis","box","sortByWeight","v0","wrapBoxes","boxes","layoutBoxes","stackWeight","buildStacks","layouts","wrap","includes","_stack","placed","setLayoutDims","params","vBoxMaxWidth","hBoxMaxHeight","layout","fullSize","availableWidth","availableHeight","buildLayoutBoxes","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","vertical","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","getPadding","newWidth","newHeight","outerHeight","widthChanged","heightChanged","h","same","other","handleMaxPadding","updatePos","change","getMargins","marginForPositions","positions","margin","fitBoxes","refitBoxes","refit","setBoxDims","placeBoxes","userPadding","padding","autoPadding","addBox","_layers","removeBox","layoutItem","minPadding","verticalBoxes","horizontalBoxes","beforeLayout","visibleVerticalBoxCount","BasePlatform","canvas","BasicPlatform","EXPANDO_KEY","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","initCanvas","renderHeight","renderWidth","boxSizing","displayWidth","displayHeight","eventListenerOptions","supportsEventListenerOptions","passive","addListener","removeListener","fromNativeEvent","native","nodeListContains","nodeList","contains","createAttachObserver","removedNodes","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","currentDevicePixelRatio","listenDevicePixelRatioChanges","unlistenDevicePixelRatioChanges","createResizeObserver","contentRect","releaseObserver","disconnect","createProxyAndListen","proxy","DomPlatform","proxies","$proxies","attach","detach","isConnected","_detectPlatform","OffscreenCanvas","Element","ret","defaultRoutes","formatters","numeric","tickValue","notation","delta","maxTick","calculateDelta","logDelta","numDecimal","minimumFractionDigits","maximumFractionDigits","logarithmic","Ticks","bounds","grace","drawBorder","drawTicks","tickLength","tickWidth","tickColor","borderDash","borderDashOffset","minRotation","maxRotation","mirror","textStrokeWidth","textStrokeColor","autoSkip","autoSkipPadding","labelOffset","minor","major","align","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","route","startsWith","tickOpts","ticksLimit","maxTicksLimit","determineMaxTicks","majorIndices","getMajorIndices","numMajorIndices","newTicks","skipMajors","calculateSpacing","avgMajorSpacing","round","_tickSize","maxScale","maxChart","_maxLength","evenMajorSpacing","getEvenSpacing","factors","ceil","majorStart","majorEnd","diff","reverseAlign","offsetFromEdge","sample","numItems","increment","getPixelForGridLine","offsetGridLines","validIndex","epsilon","lineValue","garbageCollect","caches","gc","gcLen","getTickMarkLength","getTitleHeight","fallback","lines","lineHeight","createScaleContext","createTickContext","titleAlign","titleArgs","titleX","titleY","positionAxisID","Scale","_margins","paddingTop","paddingBottom","paddingLeft","paddingRight","labelRotation","_range","_gridLineItems","_labelItems","_labelSizes","_longestTextCache","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_dataLimitsCached","setContext","suggestedMin","suggestedMax","metas","getMinMax","xLabels","yLabels","beforeUpdate","margins","sampleSize","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","source","beforeFit","fit","afterFit","afterUpdate","reversePixels","startPixel","endPixel","_alignToPixels","alignToPixels","notifyPlugins","_callHooks","beforeTickToLabelConversion","afterTickToLabelConversion","numTicks","maxLabelDiagonal","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","asin","titleOpts","gridOpts","titleHeight","tickPadding","angleRadians","labelHeight","labelWidth","_calculatePadding","_handleMargins","isRotated","labelsBelowTicks","offsetLeft","offsetRight","generateTickLabels","_computeLabelSizes","widths","heights","widestLabelSize","highestLabelSize","tickFont","fontString","nestedLabel","_resolveTickFontOptions","string","valueAt","idx","pixel","decimal","getBaseValue","optionTicks","rot","ticksLength","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","x1","y1","x2","y2","limit","step","optsAtIndex","lineColor","tickBorderDash","tickBorderDashOffset","tickAndPadding","hTickAndPadding","textAlign","lineCount","textOffset","textBaseline","_getXAxisLabelAlignment","_getYAxisLabelAlignment","halfCount","strokeColor","strokeWidth","labelPadding","translation","save","fillRect","restore","findIndex","_computeGridLineItems","drawLine","p1","p2","setLineDash","lineDashOffset","beginPath","moveTo","lineTo","stroke","lastLineWidth","_computeLabelArea","_computeLabelItems","drawBackground","drawGrid","drawTitle","drawLabels","tz","gz","axisID","TypedRegistry","scope","isPrototypeOf","proto","parentScope","isIChartComponent","registerDefaults","itemDefaults","routeDefaults","routes","property","propertyParts","split","sourceName","sourceScope","join","parts","targetName","targetScope","Registry","_typedRegistries","_each","_get","typedRegistry","arg","reg","_getRegistryForType","isForType","_exec","itemReg","registry","camelMethod","PluginService","_init","hook","_createDescriptors","_descriptors","descriptor","plugin","cancelable","_oldCache","_notifyStateChanges","allPlugins","createDescriptors","previousDescriptors","getPlugin","local","getOpts","pluginOpts","pluginScopeKeys","scriptable","indexable","allKeys","getIndexAxis","datasetDefaults","datasetOptions","getAxisFromDefaultScaleID","getDefaultScaleIDFromAxis","axisFromPosition","determineAxis","scaleOptions","mergeScaleConfig","chartDefaults","configScales","chartIndexAxis","firstIDs","scaleConf","_proxy","warn","defaultId","defaultScaleOptions","defaultID","initOptions","initData","initConfig","keyCache","keysCached","Set","cachedKeys","generate","addIfFound","Config","_config","_scopeCache","_resolverCache","platform","clearCache","datasetType","additionalOptionScopes","mainScope","resetCache","keyLists","_cachedScopes","getResolver","subPrefixes","needContext","subResolver","descriptorDefaults","resolverCache","p","hasFunction","isScriptable","isIndexable","version","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","onAnimationProgress","onProgress","getCanvas","instances","getChart","moveNumericKeys","intKey","determineLastEvent","lastEvent","inChartArea","isClick","userConfig","initialCanvas","existingChart","chartOptionScopes","updateConfig","acquireContext","_options","_aspectRatio","_metasets","_lastEvent","_listeners","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","resizeDelay","listen","_initialize","maintainAspectRatio","responsive","bindEvents","_resize","_resizeBeforeDraw","newSize","getMaximumSize","newRatio","getDevicePixelRatio","onResize","scalesOptions","axisOptions","scaleOpts","updated","isRadial","dposition","dtype","scaleType","scaleClass","getScale","hasUpdated","_destroyDatasetMeta","newControllers","_removeUnreferencedMetasets","order","updateIndex","ControllerClass","getController","getElement","_updateMetasets","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","invalidate","buildOrUpdateControllers","buildOrUpdateElements","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","ensureScalesHaveIDs","buildOrUpdateScales","existingEvents","newEvents","events","unbindEvents","changes","_getUniformDataChanges","datasetCount","makeSet","changeSet","noArea","_idx","_updateDataset","layers","_drawDatasets","_drawDataset","useClip","setDatasetVisibility","_updateVisibility","_destroy","_stop","releaseContext","toDataURL","bindUserEvents","bindResponsiveEvents","_add","_remove","detached","isAttached","prefix","activeElements","lastActive","notify","replay","hoverOptions","hover","deactivated","activated","updateHoverStyle","eventFilter","_handleEvent","_getActiveElements","onHover","getElementsAtEventForMode","invalidatePlugins","enumerable","defineProperties","unregister","clipArc","pixelMargin","angleMargin","closePath","toRadiusCorners","parseBorderRadius$1","angleDelta","borderRadius","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","outerStart","outerEnd","innerStart","innerEnd","rThetaToXY","theta","pathArc","innerR","spacingOffset","alpha","noSpacingInnerRadius","noSpacingOuterRadius","avNogSpacingRadius","adjustedAngle","beta","angleOffset","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","pCenter","p4","p8","drawArc","fullCircles","drawFullCircleBorders","borderJoinStyle","lineJoin","chartX","chartY","rAdjust","betweenAngles","withinRadius","halfAngle","halfRadius","radiusOffset","translate","setStyle","lineCap","borderCapStyle","previous","getLineMethod","stepped","_steppedLineTo","tension","cubicInterpolationMode","_bezierCurveTo","pathVars","paramsStart","paramsEnd","segmentStart","segmentEnd","outside","pathSegment","lineMethod","fastPathSegment","avgX","countX","prevX","lastY","pointIndex","drawX","truncX","_getSegmentMethod","useFastPath","_getInterpolationMethod","_steppedInterpolation","_bezierInterpolation","_pointInLine","strokePathWithCache","_path","Path2D","strokePathDirect","segments","segmentMethod","usePath2D","_points","_segments","_pointsUpdated","_interpolate","interpolated","capBezierPoints","inRange$1","hitRadius","mouseX","mouseY","hoverRadius","getBarBounds","bar","half","skipOrLimit","parseBorderWidth","maxW","maxH","parseBorderRadius","maxR","enableBorder","topLeft","topRight","bottomLeft","bottomRight","boundingRects","outer","skipX","skipY","skipBoth","hasRadius","addNormalRectPath","inflateRect","refRect","addRectPath","addRoundedRectPath","lttbDecimation","samples","decimated","bucketWidth","sampledIndex","endIndex","maxAreaPoint","maxArea","nextA","avgY","avgRangeStart","avgRangeEnd","avgRangeLength","rangeOffs","rangeTo","pointAx","pointAy","minMaxDecimation","minIndex","maxIndex","startIndex","xMin","xMax","dx","lastIndex","intermediateIndex1","intermediateIndex2","cleanDecimatedDataset","cleanDecimatedData","getStartAndCountOfVisiblePointsSimplified","plugin_decimation","algorithm","beforeElementsUpdate","xAxis","threshold","configurable","getLineByIndex","parseFillOption","fillOption","decodeFill","computeLinearBoundary","simpleArc","computeCircularBoundary","computeBoundary","findSegmentEnd","pointsFromSegments","boundary","linePoints","buildStackLine","sourcePoints","linesBelow","getLinesBelow","createBoundaryLine","addPointsBelow","below","sourcePoint","postponed","findPoint","pointValue","firstValue","lastValue","getTarget","resolveTarget","sources","propagate","visited","clipY","lineLoop","getBounds","_getEdge","tpoints","targetSegments","tgt","subBounds","fillSources","fillSource","clipBounds","interpolatedLineTo","interpolatedPoint","_fill","notShape","targetLoop","doFill","above","drawfill","lineOpts","plugin_filler","afterDatasetsUpdate","_args","$filler","beforeDraw","drawTime","beforeDatasetsDraw","beforeDatasetDraw","getBoxSize","labelOpts","boxHeight","boxWidth","usePointStyle","itemHeight","itemsEqual","_added","legendHitBoxes","_hoveredItem","doughnutMode","legendItems","columnSizes","lineWidths","buildLabels","labelFont","_computeTitleHeight","_fitRows","_fitCols","hitboxes","totalHeight","row","itemWidth","measureText","heightLimit","totalWidth","currentColWidth","currentColHeight","col","rtl","rtlHelper","hitbox","leftForLtr","_draw","defaultColor","fontColor","halfFontSize","cursor","drawLegendBox","lineDash","drawOptions","SQRT2","xPlus","yBoxTop","xBoxLeft","fillText","strikethrough","textDirection","textWidth","setWidth","realX","titleFont","titlePadding","topPaddingPlusHalfFontSize","hitBox","lh","isListened","hoveredItem","_getLegendItemAt","sameItem","onLeave","plugin_legend","_element","adjustHitBoxes","afterEvent","handleEvent","ci","_padding","textSize","fontOpts","_drawArgs","createTitle","titleBlock","plugin_title","WeakMap","plugin_subtitle","positioners","average","hasValue","tooltipPosition","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","getLabelAndValue","getTooltipSize","footer","bodyFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","before","after","beforeBody","afterBody","titleSpacing","titleMarginBottom","bodyLineHeight","displayColors","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineYAlign","doesNotFitWithAlign","xAlign","caret","caretSize","caretPadding","determineXAlign","yAlign","chartWidth","determineAlignment","alignX","alignY","paddingAndSize","getBackgroundPoint","alignment","cornerRadius","getAlignedX","getBeforeAfterBodyLines","createTooltipContext","tooltipItems","overrideCallbacks","opacity","_eventPosition","_size","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","beforeTitle","afterTitle","bodyItems","scoped","beforeLabel","afterLabel","beforeFooter","afterFooter","itemSort","labelColor","labelPointStyle","labelTextColor","_createItems","getTitle","getBeforeBody","getBody","getAfterBody","getFooter","positionAndSize","backgroundPoint","external","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","pt","titleColor","colorX","rtlColorX","yOffSet","colorY","multiKeyBackground","outerX","innerX","strokeRect","bodyAlign","xLinePadding","fillLineOfText","bodyAlignForCalculation","textColor","bodyColor","_drawColorBox","footerAlign","footerColor","tooltipSize","drawCaret","quadraticCurveTo","animX","animY","_updateAnimationTarget","hasTooltipContent","globalAlpha","drawBody","drawFooter","positionChanged","_positionChanged","_ignoreReplayEvents","plugin_tooltip","afterDraw","noop","labelCount","Decimation","Filler","SubTitle","addIfString","addedLabels","findOrAddLabel","lastIndexOf","_startValue","_valueRange","_addedLabels","added","isFinite","getDecimalForPixel","generateTicks$1","generationOptions","dataRange","MIN_SPACING","precision","maxTicks","maxDigits","includeBounds","maxSpaces","rmin","rmax","countDefined","minSpacing","niceMin","niceMax","numSpaces","decimalPlaces","relativeLabelSize","rad","LinearScaleBase","_endValue","setMin","setMax","minSign","maxSign","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","stepSize","computeTickLimit","getTickLimit","numericGeneratorOptions","_maxDigits","handleTickRangeOptions","isMajor","tickVal","generateTicks","endExp","endSignificand","exp","significand","lastTick","LogarithmicScale","_zero","m","getTickBackdropHeight","measureLabelSize","determineLimits","fitWithPointLabels","limits","valueCount","_pointLabels","pointLabelOpts","additionalAngle","centerPointLabels","getPointLabelContext","getPointPosition","drawingArea","plFont","hLimits","vLimits","updateLimits","setCenterPoint","_pointLabelItems","buildPointLabelItems","extra","outerDistance","pointLabelPosition","yForAngle","getTextAlignForAngle","leftForTextAlign","drawPointLabels","pathRadiusLine","drawRadiusLine","gridLineOpts","createPointLabelContext","RadialLinearScale","leftMovement","rightMovement","topMovement","bottomMovement","angleMultiplier","scalingFactor","scaledDistance","pointLabel","distanceFromCenter","rotate","animate","INTERVALS","millisecond","common","second","minute","hour","day","week","month","quarter","year","UNITS","sorter","adapter","_adapter","_parseOpts","parser","isoWeekday","startOf","determineUnitForAutoTicks","minUnit","capacity","determineUnitForFormatting","determineMajorUnit","addTick","timestamps","setMajorTicks","majorUnit","ticksFromTimestamps","TimeScale","_unit","_majorUnit","_offsets","_normalized","displayFormats","formats","normalized","_applyBounds","_getLabelBounds","endOf","getLabelTimestamps","timeOpts","_generate","_getLabelCapacity","initOffsets","getDecimalForValue","hasWeekday","getDataTimestamps","tooltipFormat","datetime","minorFormat","majorFormat","formatter","_tickFormatFunction","offsets","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","_getLabelSize","normalize","table","prevSource","nextSource","prevTarget","nextTarget","span","TimeSeriesScale","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","registerables","pixelSize","fontStyle","throttled","thisArg","updateFn","updateArgs","ticking","rest","_toLeftRightCenter","_alignStartEnd","_textX","check","uid","isNullOrUndef","isArray","isObject","isNumberFinite","finiteOrDefault","defaultValue","valueOrDefault","toPercentage","dimension","endsWith","toDimension","each","loopable","_elementsEqual","a0","clone$1","klen","k","isValidKey","_merger","tval","sval","merge","merger","mergeIf","_mergerIf","_deprecated","emptyString","dot","indexOfDotOrLength","resolveObjectKey","_capitalize","toUpperCase","defined","isFunction","setsEqual","_isClickEvent","PITAU","INFINITY","RAD_PER_DEG","QUARTER_PI","TWO_THIRDS_PI","log10","sign","niceNum","roundedRange","almostEquals","niceRange","fraction","niceFraction","_factorize","isNumber","n","almostWhole","rounded","_setMinAndMaxByKey","toRadians","degrees","toDegrees","radians","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","atan2","distanceBetweenPoints","_angleDiff","_normalizeAngle","_angleBetween","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_int16Range","_isBetween","atEdge","elasticIn","elasticOut","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","A","B","C","D","E","F","hex","h1","h2","eq","isShort","hexParse","lim","p2b","n2b","b2n","n2p","RGB_RE","rgbParse","exec","rgbString","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","rgb2hsl","calln","hsl2rgb","hwb2rgb","hsv2rgb","hue","hueParse","deg","hslString","map$1","Z","Y","X","W","V","U","T","S","R","Q","P","O","N","M","L","K","G","H","I","J","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","black","blanKedOmond","Xe","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Yd","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","tan","teO","tEstN","tomato","Qe","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","unpack","unpacked","tkeys","ok","nk","names$1","nameParse","modHSL","tmp","clone","fromObject","functionParse","Color","_rgb","_valid","me","c2","w2","w1","index_esm","isPatternOrGradient","CanvasGradient","CanvasPattern","getHoverColor","saturate","darken","getScope$1","root","Defaults","hoverBackgroundColor","hoverBorderColor","hoverColor","scopeObject","targetScopeObject","privateName","writable","toFontString","_measureText","longest","_longestText","arrayOfThings","thing","nestedThing","_alignPixel","halfWidth","clearCanvas","resetTransform","clearRect","drawPoint","xOffset","drawImage","SQRT1_2","_isPointInArea","clipArea","unclipArea","flip","midpoint","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","renderText","setRenderOpts","strokeText","decorateText","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","decorationWidth","LINE_HEIGHT","FONT_STYLE","toLineHeight","matches","match","numberOrZero","_readValueToProps","objProps","toTRBL","toTRBLCorners","toPadding","toFont","inputs","cacheable","_addGrace","minmax","keepZero","createContext","parentContext","_lookup","cmp","mid","_filterBetween","arrayEvents","listenArrayEvents","_chartjs","object","unlistenArrayEvents","stub","_arrayUnique","_createResolver","rootScopes","_resolve","Symbol","toStringTag","Proxy","deleteProperty","_keys","_cached","_resolveWithPrefixes","getOwnPropertyDescriptor","Reflect","_scopes","getKeysFromAllScopes","ownKeys","storage","_storage","_attachContext","subProxy","_context","_subProxy","receiver","_resolveWithContext","_allKeys","readKey","needsSubResolver","_resolveScriptable","_resolveArray","createSubResolver","resolveFallback","getScope","addScopes","parentScopes","parentFallback","_rootScopes","allScopes","addScopesFromKey","subGetTarget","_getTarget","resolveKeysFromAllScopes","EPSILON","getPoint","getValueAxis","splineCurve","middlePoint","afterPoint","d01","d12","s01","s12","fa","fb","monotoneAdjust","deltaK","mK","pointsLen","alphaK","betaK","tauK","squaredMagnitude","pointCurrent","pointAfter","monotoneCompute","valueAxis","pointBefore","splineCurveMonotone","slopeDelta","capControlPoint","inArea","inAreaPrev","inAreaNext","_updateBezierControlPoints","controlPoints","_isDomSupported","_getParentNode","domNode","host","parseMaxStyle","styleValue","parentProperty","valueInPixels","getPropertyValue","getPositionedStyle","styles","suffix","useOffsetPos","shadowRoot","getCanvasPosition","evt","touches","clientX","clientY","borderBox","paddings","borders","getContainerSize","containerStyle","containerBorder","containerPadding","round1","bbWidth","bbHeight","containerSize","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","setTransform","passiveSupported","readUsedSize","cp1","cp2","intlCache","getNumberFormat","stringify","Intl","NumberFormat","formatNumber","num","getRightToLeftAdapter","rectX","getLeftToRightAdapter","_itemWidth","getRtlAdapter","overrideTextDirection","original","getPropertyPriority","prevTextDirection","restoreTextDirection","propertyFn","between","compare","normalizeSegment","getSegment","startBound","endBound","_boundSegment","inside","subStart","prevValue","startIsBefore","endIsBefore","shouldStart","shouldStop","_boundSegments","findStartAndEnd","solidSegments","_computeSegments","segmentOptions","splitByStyles","completeLoop","doSplitByStyles","chartContext","baseStyle","readStyle","prevStyle","addStyle","st","dir","p0","p0DataIndex","p1DataIndex","styleChanged","STUB_KEY","MODEL_KEY","defer","computeOffset","chartInViewport","offsetParent","dy","onScroll","unwatch","appeared","isScrollable","Node","ELEMENT_NODE","overflowX","overflowY","DOCUMENT_NODE","watch","ownerDocument","beforeInit","_","delayed","loaded","beforeDatasetsUpdate","model","makeReactive","Dom7","arrayFlat","arrayFilter","arrayUnique","uniqueArray","toCamelCase","group","qsa","$","toCreate","tempParent","childNodes","classes","classNames","attr","attrs","attrName","removeAttr","dom7ElementDataStorage","dataKey","removeData","attributes","multiple","selectedOptions","selected","transform","eventType","targetSelector","capture","handleLiveEvent","eventData","dom7EventData","is","parents","dom7Listeners","proxyListener","dom7LiveListeners","off","dom7proxy","onceHandler","eventArgs","detail","bubbles","fireCallBack","animationEnd","css","includeMargins","clientTop","clientLeft","scrollX","textContent","compareWith","webkitMatchesSelector","msMatchesSelector","child","previousSibling","returnIndex","append","newChild","tempDiv","firstChild","appendTo","prepend","prependTo","cloneNode","insertAfter","nextSibling","nextAll","nextEls","prevAll","prevEls","siblings","find","foundElements","found","removeChild","els","toAdd","empty","currentTop","currentLeft","maxTop","maxLeft","newTop","newLeft","animateTop","animateLeft","startTime","getTime","easeProgress","done","initialProps","initialParams","animating","que","easingProgress","frameId","cancelAnimationFrame","dom7AnimateInstance","initialFullValue","initialValue","finalValue","finalFullValue","elementsDone","propsDone","began","begin","animateInstance","noTrigger","shortcut","eventHandler","click","blur","focus","focusin","focusout","keyup","keydown","keypress","submit","mousedown","mousemove","mouseup","mouseenter","mouseleave","mouseout","mouseover","scroll","u","dirty","styleComputed","currentWidth","previousFontSize","currentFontSize","whiteSpace","multiLine","preStyleTestCompleted","oldValue","scaleFactor","observeMutations","originalStyle","characterData","observeWindowDelay","observeWindow","fitAll","newbie","unfreeze","unsubscribe","extend","ssrDocument","activeElement","createEvent","initEvent","createElementNS","importNode","hostname","origin","protocol","getDocument","doc","ssrWindow","navigator","userAgent","go","back","Image","screen","matchMedia","getWindow","win","getBreakpoint","breakpoints","containerEl","breakpoint","currentHeight","minRatio","setBreakpoint","isGridEnabled","rows","initialized","loopedSlides","$el","breakpointsBase","currentBreakpoint","breakpointOnlyParams","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","containerModifierClass","emitContainerClasses","directionChanged","needsReLoop","slidesPerView","changeDirection","isEnabled","allowTouchMove","allowSlideNext","allowSlidePrev","emit","loopDestroy","loopCreate","updateSlides","checkOverflow","wasLocked","isLocked","slidesOffsetBefore","lastSlideIndex","lastSlideRightEdge","slidesGrid","slidesSizesGrid","snapGrid","isEnd","prepareClasses","resultClasses","addClasses","device","support","suffixes","touch","freeMode","android","ios","cssMode","centeredSlides","removeClasses","prototypes","eventsEmitter","grabCursor","extendedDefaults","_len","_key","swipers","newParams","__swiper__","browser","eventsListeners","eventsAnyListeners","modules","__modules__","allModulesParams","mod","extendParams","swiperParams","passedParams","onAny","isVertical","realIndex","isBeginning","previousTranslate","velocity","touchEvents","desktop","touchEventsTouch","touchEventsDesktop","simulateTouch","touchEventsData","isTouched","isMoved","allowTouchCallbacks","touchStartTime","isScrolling","currentTranslate","startTranslate","allowThresholdMove","focusableElements","lastClickTime","clickTimeout","velocities","allowMomentumBounce","isTouchEvent","startMoving","allowClick","currentX","currentY","imagesToLoad","imagesLoaded","setGrabCursor","unsetGrabCursor","minTranslate","maxTranslate","translateTo","updateActiveIndex","updateSlidesClasses","_emitClasses","slideEl","slideClass","updates","getSlideClasses","view","exact","swiperSize","spv","slideSize","swiperSlideSize","breakLoop","slideInView","destroyed","updateSize","updateProgress","setTranslate","translateValue","rtlTranslate","newTranslate","translated","updateAutoHeight","watchOverflow","newDirection","needUpdate","currentDirection","mounted","getWrapperSelector","wrapperClass","getWrapper","$wrapperEl","createElements","wrapperEl","wrongRTL","mount","preloadImages","runCallbacksOnInit","attachEvents","deleteInstance","cleanStyles","detachEvents","slideVisibleClass","slideActiveClass","slideNextClass","slidePrevClass","newDefaults","module","installModule","prototypeGroup","protoMethod","Resize","Observer","touchEventsTarget","updateOnWindowResize","resizeObserver","nested","preventInteractionOnTransition","edgeSwipeDetection","edgeSwipeThreshold","setWrapperSize","virtualTranslate","effect","spaceBetween","slidesPerGroup","slidesPerGroupSkip","slidesPerGroupAuto","centeredSlidesBounds","slidesOffsetAfter","normalizeSlideIndex","centerInsufficientSlides","roundLengths","touchRatio","touchAngle","shortSwipes","longSwipes","longSwipesRatio","longSwipesMs","followFinger","touchMoveStopPropagation","touchStartPreventDefault","touchStartForcePreventDefault","uniqueNavElements","resistance","resistanceRatio","watchSlidesProgress","preventClicks","preventClicksPropagation","slideToClickedSlide","updateOnImagesReady","loopAdditionalSlides","loopFillGroupWithBlank","loopPreventsSlide","rewind","swipeHandler","noSwiping","noSwipingClass","noSwipingSelector","passiveListeners","maxBackfaceHiddenSlides","slideBlankClass","slideDuplicateActiveClass","slideDuplicateClass","slideDuplicateNextClass","slideDuplicatePrevClass","priority","self","__emitterProxy","offAny","_len2","_key2","eventsArray","dummyEventAttached","dummyEventListener","domMethod","swiperMethod","onTouchStart","onTouchMove","onTouchEnd","passiveListener","stopPropagation","stopImmediatePropagation","run","newProgress","translatesDiff","originalEvent","touchEndTime","timeDiff","pathTree","composedPath","updateClickedSlide","swipeDirection","currentPos","stopIndex","groupSize","rewindFirstIndex","rewindLastIndex","virtual","isNavButtonTarget","navigation","nextEl","prevEl","targetTouch","targetTouches","changedTouches","pageX","pageY","preventedByNestedSwiper","diffX","diffY","loopFix","getTranslate","setTransition","disableParentSwiper","closestElement","__closestFrom","assignedSlot","getRootNode","$targetEl","which","swipingClassHasValue","isTargetShadow","iOSEdgeSwipeDetection","iOSEdgeSwipeThreshold","shouldPreventDefault","isContentEditable","moving","loadImage","imageEl","srcset","sizes","checkForComplete","onReady","isPicture","onload","onerror","currentSrc","$selector","blankSlidesNum","blankNode","prependSlides","appendSlides","newIndex","snapTranslate","slideChanged","moduleExtendParams","moduleParamName","moduleParams","auto","_ref","observers","ObserverFunc","WebkitMutationObserver","observerUpdate","observeParents","containerParents","observeSlideChildren","animationFrame","resizeHandler","createObserver","_ref2","contentBoxSize","inlineSize","blockSize","removeObserver","unobserve","orientationChangeHandler","slideToLoop","slideNext","slidePrev","slideReset","slideToClosest","runCallbacks","internal","perGroup","slidesPerViewDynamic","_clientLeft","normalizedTranslate","normalizedSnapGrid","prevSnap","prevSnapIndex","snap","snapIndex","prevIndex","indexAsNumber","isValidNumber","previousIndex","normalizedGrid","normalizedGridNext","isH","isVirtual","scrollSnapType","_immediateVirtual","_swiperImmediateVirtual","smoothScroll","targetPosition","onSlideToWrapperTransitionEnd","slideToIndex","clickedIndex","clickedSlide","currentSnap","nextSnap","byController","transitionEmit","getSwiperTranslate","translateBounds","onTranslateToWrapperTransitionEnd","updateSlidesOffset","updateSlidesProgress","newActiveIndex","previousRealIndex","previousSnapIndex","activeSlides","getSlideByIndex","visibleSlides","slideFound","multiplier","wasBeginning","wasEnd","getDirectionLabel","getDirectionPropertyValue","previousSlidesLength","slidesLength","offsetBefore","offsetAfter","previousSnapGridLength","previousSlidesGridLength","slidePosition","prevSlideSize","virtualSize","marginLeft","marginBottom","marginTop","marginRight","gridEnabled","initSlides","shouldResetSlideSize","updateSlide","slideStyles","currentTransform","currentWebKitTransform","webkitTransform","updateWrapperSize","newSlidesGrid","slidesGridItem","allSlidesSize","slideSizeValue","maxSnap","allSlidesOffset","addToSnapGrid","addToSlidesGrid","backFaceHiddenClass","hasClassBackfaceClassAdded","activeSlide","nextSlide","prevSlide","emitSlidesClasses","swiperSlideOffset","offsetTop","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","originalSlideProgress","slideBefore","slideAfter","isVisible","originalProgress","A11y","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","liveRegion","message","notification","getRandomNumber","randomChar","random","repeat","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElControls","controls","addElLabel","addElId","addElLive","live","disableEl","enableEl","onEnterOrSpaceKey","keyCode","$nextEl","$prevEl","pagination","bulletClass","updateNavigation","hasPagination","bullets","hasClickablePagination","clickable","updatePagination","bulletEl","$bulletEl","renderBullet","bulletActiveClass","initNavEl","wrapperId","handleFocus","isActive","$containerEl","$slideEl","ariaLabelMessage","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","$activeSlideEl","autoplayResult","onTransitionEnd","onVisibilityChange","visibilityState","onMouseEnter","onMouseLeave","attachMouseEvents","detachMouseEvents","_s","control","inverse","by","LinearSpline","guess","i1","i3","getInterpolateFunction","spline","_t","controlled","controlledTranslate","setControlledTranslate","setControlledTransition","removeSpline","EffectCards","cardsEffect","slideShadows","transformEl","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY","scaleString","$shadowEl","zIndex","$transitionElements","perspective","overwriteParams","EffectCoverflow","coverflowEffect","stretch","depth","modifier","swiperWidth","swiperHeight","offsetMultiplier","rotateY","rotateX","translateZ","translateY","translateX","slideTransform","$shadowBeforeEl","$shadowAfterEl","EffectCreative","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","translateString","rotateString","opacityString","shadow","shadowOpacity","allSlides","EffectCube","cubeEffect","shadowOffset","shadowScale","wrapperRotate","$cubeShadowEl","slideAngle","tx","ty","shadowBefore","shadowAfter","shadowAngle","scale1","scale2","zFactor","isSafari","isWebView","EffectFade","fadeEffect","crossFade","slideOpacity","EffectFlip","flipEffect","limitRotation","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","sticky","minimumVelocity","lastMoveEvent","velocityEvent","momentumDuration","momentumDistance","newPosition","doBounce","afterBouncePosition","bounceAmount","needsLoopFix","moveDistance","currentSlideSize","Grid","slidesNumberEvenToRows","slidesPerRow","numFullColumns","newSlideOrderIndex","column","groupIndex","slideIndexInGroup","columnsInGroup","onHashChange","newHash","activeSlideHash","setHash","History","paths","slugify","getPathValues","urlOverride","URL","pathArray","part","setHistory","currentState","scrollToSlide","slideHistory","setHistoryPopState","pageUpDown","handle","kc","charCode","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","inView","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","Lazy","lazy","checkInView","loadPrevNext","loadPrevNextAmount","loadOnTransitionStart","scrollingElement","elementClass","loadingClass","loadedClass","preloaderClass","scrollHandlerAttached","initialImageLoaded","loadInSlide","loadInDuplicate","$images","$imageEl","background","$pictureEl","sourceEl","$source","slideOriginalIndex","originalSlide","duplicatedSlide","slideExist","checkInViewOnLoad","$scrollElement","isWindow","scrollElementWidth","scrollElementHeight","Manipulation","appendSlide","prependSlide","addSlide","removeSlide","removeAllSlides","activeIndexBuffer","baseLength","slidesBuffer","slidesIndexes","indexToRemove","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","lastScrollTime","lastEventBeforeSnap","recentWheelEvents","PIXEL_STEP","PAGE_HEIGHT","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaMode","spinX","spinY","pixelX","pixelY","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","releaseScroll","rtlFactor","prevEvent","ignoreWheelEvents","firstEvent","snapToThreshold","autoplayDisableOnInteraction","Navigation","hideOnClick","disabledClass","hiddenClass","lockClass","getEl","toggleEl","onPrevClick","onNextClick","targetEl","isHidden","Pagination","pfx","bulletElement","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","formatFractionTotal","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","bulletSize","dynamicBulletIndex","isPaginationDisabled","setSideBullets","paginationType","firstIndex","midIndex","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","offsetProp","progressbarDirection","paginationHTML","numberOfBullets","Parallax","parallax","currentOpacity","currentScale","parallaxEl","$parallaxEl","parallaxDuration","_swiper","Scrollbar","dragTimeout","dragStartPos","dragSize","trackSize","divider","scrollbar","draggable","snapOnRelease","dragClass","dragEl","$dragEl","newPos","getPointerPosition","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","activeListener","eventMethod","enableDraggable","disableDraggable","$swiperEl","Thumb","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","currentIndex","thumbsParams","SwiperClass","thumbsSwiperParams","useOffset","currentThumbsIndex","newThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","Virtual","renderSlide","renderExternal","renderExternalUpdate","addSlidesBefore","addSlidesAfter","cssModeTimeout","force","previousFrom","previousTo","previousSlidesGrid","previousOffset","slidesAfter","slidesBefore","onRendered","getSlides","slidesToRender","prependIndexes","appendIndexes","numberOfNewSlides","newCache","cachedIndex","$cachedEl","cachedElIndex","Zoom","zoom","maxRatio","containerClass","zoomedSlideClass","isScaling","gesturesEnabled","fakeGestureTouched","fakeGestureMoved","gesture","slideWidth","slideHeight","$imageWrapEl","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","getDistanceBetweenTouches","onGestureStart","gestures","scaleStart","onGestureChange","scaleMove","onGestureEnd","scaledWidth","scaledHeight","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","zoomIn","overflow","touchAction","touchX","touchY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","getSlideSelector","toggleGestures","slideSelector","enableGestures","disableGestures","in","out","classesToSelector","createElementIfNotDefined","checkProps","createShadow","shadowClass","$shadowContainer","Methods","methodName","effectInit","overwriteParamsResult","effectTarget","effectParams","effectVirtualTransitionEnd","eventTriggered","$transitionEndTarget","triggerEvents","calcBrowser","ua","getBrowser","deviceCached","calcDevice","_temp","screenWidth","screenHeight","ipad","ipod","iphone","windows","macos","iPadScreens","os","getDevice","calcSupport","DocumentTouch","checkPassiveListener","supportsPassive","checkGestures","getSupport","deleteProps","nextTick","currentStyle","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","MozTransform","OTransform","MsTransform","msTransform","m41","m42","isNode","noExtend","keysArray","nextKey","desc","setCSSProperty","varName","varValue","animateCSSModeScroll","startPosition","cssModeFrameID","isOutOfBound","currentPosition"],"sourceRoot":""}