/
default-node_modules_angular_material_fesm2015_icon_mjs.js.map
1 lines (1 loc) · 224 KB
/
default-node_modules_angular_material_fesm2015_icon_mjs.js.map
1
{"version":3,"file":"default-node_modules_angular_material_fesm2015_icon_mjs.js","mappings":";;;;;;;;;;;;;;;;;;;;AAA2C;AACyB;AAC5B;AACS;AACoB;AACT;AACR;AAC7C;AACP,2BAA2B,6DAAiB;AAC5C,YAAY,sBAAsB,EAAE,gFAAoB;AACxD,uBAAuB,mDAAU;AACjC,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,sBAAsB;AACxD;AACA,YAAY,qDAAS,qCAAqC,6EAAkB;AAC5E;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,+CAA+C,gEAAY;AAC3D;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;AACL,wCAAwC,wEAAgB;AACxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMgB,WAAN,CAAkB;AAElB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMC,WAAN,CAAkB;AAGlB;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMC,WAAN,CAAkB;AACd;AACAC,EAAAA,WAAW,CAACC,OAAD,EAAU;AACjB;AACR;AACA;AACA;AACQ,SAAKC,eAAL,GAAuB,IAAIC,GAAJ,EAAvB;AACA;AACR;AACA;;AACQ,SAAKC,UAAL,GAAkB,IAAlB;;AACA,QAAI,CAACH,OAAL,EAAc;AACV,WAAKA,OAAL,GAAe,IAAIE,GAAJ,EAAf;AACH,KAFD,MAGK,IAAI,OAAOF,OAAP,KAAmB,QAAvB,EAAiC;AAClC,WAAKI,QAAL,GAAgB,MAAM;AAClB,aAAKJ,OAAL,GAAe,IAAIE,GAAJ,EAAf;AACAF,QAAAA,OAAO,CAACK,KAAR,CAAc,IAAd,EAAoBC,OAApB,CAA4BC,IAAI,IAAI;AAChC,gBAAMC,KAAK,GAAGD,IAAI,CAACE,OAAL,CAAa,GAAb,CAAd;;AACA,cAAID,KAAK,GAAG,CAAZ,EAAe;AACX,kBAAME,IAAI,GAAGH,IAAI,CAACI,KAAL,CAAW,CAAX,EAAcH,KAAd,CAAb;AACA,kBAAMI,GAAG,GAAGF,IAAI,CAACG,WAAL,EAAZ;AACA,kBAAMC,KAAK,GAAGP,IAAI,CAACI,KAAL,CAAWH,KAAK,GAAG,CAAnB,EAAsBO,IAAtB,EAAd;AACA,iBAAKC,sBAAL,CAA4BN,IAA5B,EAAkCE,GAAlC;;AACA,gBAAI,KAAKZ,OAAL,CAAaiB,GAAb,CAAiBL,GAAjB,CAAJ,EAA2B;AACvB,mBAAKZ,OAAL,CAAakB,GAAb,CAAiBN,GAAjB,EAAsBO,IAAtB,CAA2BL,KAA3B;AACH,aAFD,MAGK;AACD,mBAAKd,OAAL,CAAaoB,GAAb,CAAiBR,GAAjB,EAAsB,CAACE,KAAD,CAAtB;AACH;AACJ;AACJ,SAdD;AAeH,OAjBD;AAkBH,KAnBI,MAoBA;AACD,WAAKV,QAAL,GAAgB,MAAM;AAClB,aAAKJ,OAAL,GAAe,IAAIE,GAAJ,EAAf;AACAmB,QAAAA,MAAM,CAACC,IAAP,CAAYtB,OAAZ,EAAqBM,OAArB,CAA6BI,IAAI,IAAI;AACjC,cAAIa,MAAM,GAAGvB,OAAO,CAACU,IAAD,CAApB;AACA,gBAAME,GAAG,GAAGF,IAAI,CAACG,WAAL,EAAZ;;AACA,cAAI,OAAOU,MAAP,KAAkB,QAAtB,EAAgC;AAC5BA,YAAAA,MAAM,GAAG,CAACA,MAAD,CAAT;AACH;;AACD,cAAIA,MAAM,CAACC,MAAP,GAAgB,CAApB,EAAuB;AACnB,iBAAKxB,OAAL,CAAaoB,GAAb,CAAiBR,GAAjB,EAAsBW,MAAtB;AACA,iBAAKP,sBAAL,CAA4BN,IAA5B,EAAkCE,GAAlC;AACH;AACJ,SAVD;AAWH,OAbD;AAcH;AACJ;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;AACIK,EAAAA,GAAG,CAACP,IAAD,EAAO;AACN,SAAKe,IAAL;AACA,WAAO,KAAKzB,OAAL,CAAaiB,GAAb,CAAiBP,IAAI,CAACG,WAAL,EAAjB,CAAP;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;AACIK,EAAAA,GAAG,CAACR,IAAD,EAAO;AACN,SAAKe,IAAL;AACA,UAAMF,MAAM,GAAG,KAAKvB,OAAL,CAAakB,GAAb,CAAiBR,IAAI,CAACG,WAAL,EAAjB,CAAf;AACA,WAAOU,MAAM,IAAIA,MAAM,CAACC,MAAP,GAAgB,CAA1B,GAA8BD,MAAM,CAAC,CAAD,CAApC,GAA0C,IAAjD;AACH;AACD;AACJ;AACA;AACA;AACA;;;AACID,EAAAA,IAAI,GAAG;AACH,SAAKG,IAAL;AACA,WAAOC,KAAK,CAACC,IAAN,CAAW,KAAK1B,eAAL,CAAqBsB,MAArB,EAAX,CAAP;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;AACIK,EAAAA,MAAM,CAAClB,IAAD,EAAO;AACT,SAAKe,IAAL;AACA,WAAO,KAAKzB,OAAL,CAAakB,GAAb,CAAiBR,IAAI,CAACG,WAAL,EAAjB,KAAwC,IAA/C;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACIgB,EAAAA,MAAM,CAACnB,IAAD,EAAOI,KAAP,EAAc;AAChB,WAAO,KAAKgB,KAAL,CAAW;AAAEpB,MAAAA,IAAF;AAAQI,MAAAA,KAAR;AAAeiB,MAAAA,EAAE,EAAE;AAAnB,KAAX,CAAP;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACIX,EAAAA,GAAG,CAACV,IAAD,EAAOI,KAAP,EAAc;AACb,WAAO,KAAKgB,KAAL,CAAW;AAAEpB,MAAAA,IAAF;AAAQI,MAAAA,KAAR;AAAeiB,MAAAA,EAAE,EAAE;AAAnB,KAAX,CAAP;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;AACIC,EAAAA,MAAM,CAACtB,IAAD,EAAOI,KAAP,EAAc;AAChB,WAAO,KAAKgB,KAAL,CAAW;AAAEpB,MAAAA,IAAF;AAAQI,MAAAA,KAAR;AAAeiB,MAAAA,EAAE,EAAE;AAAnB,KAAX,CAAP;AACH;;AACDf,EAAAA,sBAAsB,CAACN,IAAD,EAAOuB,MAAP,EAAe;AACjC,QAAI,CAAC,KAAKhC,eAAL,CAAqBgB,GAArB,CAAyBgB,MAAzB,CAAL,EAAuC;AACnC,WAAKhC,eAAL,CAAqBmB,GAArB,CAAyBa,MAAzB,EAAiCvB,IAAjC;AACH;AACJ;;AACDe,EAAAA,IAAI,GAAG;AACH,QAAI,CAAC,CAAC,KAAKrB,QAAX,EAAqB;AACjB,UAAI,KAAKA,QAAL,YAAyBN,WAA7B,EAA0C;AACtC,aAAKoC,QAAL,CAAc,KAAK9B,QAAnB;AACH,OAFD,MAGK;AACD,aAAKA,QAAL;AACH;;AACD,WAAKA,QAAL,GAAgB,IAAhB;;AACA,UAAI,CAAC,CAAC,KAAKD,UAAX,EAAuB;AACnB,aAAKA,UAAL,CAAgBG,OAAhB,CAAwB6B,MAAM,IAAI,KAAKC,WAAL,CAAiBD,MAAjB,CAAlC;AACA,aAAKhC,UAAL,GAAkB,IAAlB;AACH;AACJ;AACJ;;AACD+B,EAAAA,QAAQ,CAACG,KAAD,EAAQ;AACZA,IAAAA,KAAK,CAACZ,IAAN;AACAC,IAAAA,KAAK,CAACC,IAAN,CAAWU,KAAK,CAACrC,OAAN,CAAcsB,IAAd,EAAX,EAAiChB,OAAjC,CAAyCM,GAAG,IAAI;AAC5C,WAAKZ,OAAL,CAAaoB,GAAb,CAAiBR,GAAjB,EAAsByB,KAAK,CAACrC,OAAN,CAAckB,GAAd,CAAkBN,GAAlB,CAAtB;AACA,WAAKX,eAAL,CAAqBmB,GAArB,CAAyBR,GAAzB,EAA8ByB,KAAK,CAACpC,eAAN,CAAsBiB,GAAtB,CAA0BN,GAA1B,CAA9B;AACH,KAHD;AAIH;;AACDkB,EAAAA,KAAK,CAACK,MAAD,EAAS;AACV,UAAML,KAAK,GAAG,IAAIhC,WAAJ,EAAd;AACAgC,IAAAA,KAAK,CAAC1B,QAAN,GACK,CAAC,CAAC,KAAKA,QAAP,IAAmB,KAAKA,QAAL,YAAyBN,WAA7C,GAA4D,KAAKM,QAAjE,GAA4E,IADhF;AAEA0B,IAAAA,KAAK,CAAC3B,UAAN,GAAmB,CAAC,KAAKA,UAAL,IAAmB,EAApB,EAAwBmC,MAAxB,CAA+B,CAACH,MAAD,CAA/B,CAAnB;AACA,WAAOL,KAAP;AACH;;AACDM,EAAAA,WAAW,CAACD,MAAD,EAAS;AAChB,UAAMvB,GAAG,GAAGuB,MAAM,CAACzB,IAAP,CAAYG,WAAZ,EAAZ;;AACA,YAAQsB,MAAM,CAACJ,EAAf;AACI,WAAK,GAAL;AACA,WAAK,GAAL;AACI,YAAIjB,KAAK,GAAGqB,MAAM,CAACrB,KAAnB;;AACA,YAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AAC3BA,UAAAA,KAAK,GAAG,CAACA,KAAD,CAAR;AACH;;AACD,YAAIA,KAAK,CAACU,MAAN,KAAiB,CAArB,EAAwB;AACpB;AACH;;AACD,aAAKR,sBAAL,CAA4BmB,MAAM,CAACzB,IAAnC,EAAyCE,GAAzC;AACA,cAAM2B,IAAI,GAAG,CAACJ,MAAM,CAACJ,EAAP,KAAc,GAAd,GAAoB,KAAK/B,OAAL,CAAakB,GAAb,CAAiBN,GAAjB,CAApB,GAA4C4B,SAA7C,KAA2D,EAAxE;AACAD,QAAAA,IAAI,CAACpB,IAAL,CAAU,GAAGL,KAAb;AACA,aAAKd,OAAL,CAAaoB,GAAb,CAAiBR,GAAjB,EAAsB2B,IAAtB;AACA;;AACJ,WAAK,GAAL;AACI,cAAME,QAAQ,GAAGN,MAAM,CAACrB,KAAxB;;AACA,YAAI,CAAC2B,QAAL,EAAe;AACX,eAAKzC,OAAL,CAAagC,MAAb,CAAoBpB,GAApB;AACA,eAAKX,eAAL,CAAqB+B,MAArB,CAA4BpB,GAA5B;AACH,SAHD,MAIK;AACD,cAAI8B,QAAQ,GAAG,KAAK1C,OAAL,CAAakB,GAAb,CAAiBN,GAAjB,CAAf;;AACA,cAAI,CAAC8B,QAAL,EAAe;AACX;AACH;;AACDA,UAAAA,QAAQ,GAAGA,QAAQ,CAAChD,MAAT,CAAgBoB,KAAK,IAAI2B,QAAQ,CAAChC,OAAT,CAAiBK,KAAjB,MAA4B,CAAC,CAAtD,CAAX;;AACA,cAAI4B,QAAQ,CAAClB,MAAT,KAAoB,CAAxB,EAA2B;AACvB,iBAAKxB,OAAL,CAAagC,MAAb,CAAoBpB,GAApB;AACA,iBAAKX,eAAL,CAAqB+B,MAArB,CAA4BpB,GAA5B;AACH,WAHD,MAIK;AACD,iBAAKZ,OAAL,CAAaoB,GAAb,CAAiBR,GAAjB,EAAsB8B,QAAtB;AACH;AACJ;;AACD;AAnCR;AAqCH;AACD;AACJ;AACA;;;AACIpC,EAAAA,OAAO,CAACqC,EAAD,EAAK;AACR,SAAKlB,IAAL;AACAC,IAAAA,KAAK,CAACC,IAAN,CAAW,KAAK1B,eAAL,CAAqBqB,IAArB,EAAX,EACKhB,OADL,CACaM,GAAG,IAAI+B,EAAE,CAAC,KAAK1C,eAAL,CAAqBiB,GAArB,CAAyBN,GAAzB,CAAD,EAAgC,KAAKZ,OAAL,CAAakB,GAAb,CAAiBN,GAAjB,CAAhC,CADtB;AAEH;;AApNa;AAuNlB;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMgC,oBAAN,CAA2B;AACvB;AACJ;AACA;AACA;AACA;AACIC,EAAAA,SAAS,CAACjC,GAAD,EAAM;AACX,WAAOkC,gBAAgB,CAAClC,GAAD,CAAvB;AACH;AACD;AACJ;AACA;AACA;AACA;;;AACImC,EAAAA,WAAW,CAACjC,KAAD,EAAQ;AACf,WAAOgC,gBAAgB,CAAChC,KAAD,CAAvB;AACH;AACD;AACJ;AACA;AACA;AACA;;;AACIkC,EAAAA,SAAS,CAACpC,GAAD,EAAM;AACX,WAAOqC,kBAAkB,CAACrC,GAAD,CAAzB;AACH;AACD;AACJ;AACA;AACA;AACA;;;AACIsC,EAAAA,WAAW,CAACpC,KAAD,EAAQ;AACf,WAAOmC,kBAAkB,CAACnC,KAAD,CAAzB;AACH;;AAhCsB;;AAkC3B,SAASqC,WAAT,CAAqBC,SAArB,EAAgCC,KAAhC,EAAuC;AACnC,QAAM1D,GAAG,GAAG,IAAIO,GAAJ,EAAZ;;AACA,MAAIkD,SAAS,CAAC5B,MAAV,GAAmB,CAAvB,EAA0B;AACtB;AACA;AACA;AACA,UAAM8B,MAAM,GAAGF,SAAS,CAACG,OAAV,CAAkB,KAAlB,EAAyB,EAAzB,EAA6BlD,KAA7B,CAAmC,GAAnC,CAAf;AACAiD,IAAAA,MAAM,CAAChD,OAAP,CAAgBkD,KAAD,IAAW;AACtB,YAAMC,KAAK,GAAGD,KAAK,CAAC/C,OAAN,CAAc,GAAd,CAAd;AACA,YAAM,CAACG,GAAD,EAAM8C,GAAN,IAAaD,KAAK,IAAI,CAAC,CAAV,GACf,CAACJ,KAAK,CAACL,SAAN,CAAgBQ,KAAhB,CAAD,EAAyB,EAAzB,CADe,GAEf,CAACH,KAAK,CAACL,SAAN,CAAgBQ,KAAK,CAAC7C,KAAN,CAAY,CAAZ,EAAe8C,KAAf,CAAhB,CAAD,EAAyCJ,KAAK,CAACH,WAAN,CAAkBM,KAAK,CAAC7C,KAAN,CAAY8C,KAAK,GAAG,CAApB,CAAlB,CAAzC,CAFJ;AAGA,YAAME,IAAI,GAAGhE,GAAG,CAACuB,GAAJ,CAAQN,GAAR,KAAgB,EAA7B;AACA+C,MAAAA,IAAI,CAACxC,IAAL,CAAUuC,GAAV;AACA/D,MAAAA,GAAG,CAACyB,GAAJ,CAAQR,GAAR,EAAa+C,IAAb;AACH,KARD;AASH;;AACD,SAAOhE,GAAP;AACH;AACD;AACA;AACA;;;AACA,MAAMiE,uBAAuB,GAAG,iBAAhC;AACA,MAAMC,8BAA8B,GAAG;AACnC,QAAM,GAD6B;AAEnC,QAAM,GAF6B;AAGnC,QAAM,GAH6B;AAInC,QAAM,GAJ6B;AAKnC,QAAM,GAL6B;AAMnC,QAAM,GAN6B;AAOnC,QAAM,GAP6B;AAQnC,QAAM,GAR6B;AASnC,QAAM;AAT6B,CAAvC;;AAWA,SAASf,gBAAT,CAA0BgB,CAA1B,EAA6B;AACzB,SAAOC,kBAAkB,CAACD,CAAD,CAAlB,CAAsBP,OAAtB,CAA8BK,uBAA9B,EAAuD,CAACI,CAAD,EAAIC,CAAJ,KAAU;AAAE,QAAIC,EAAJ;;AAAQ,WAAO,CAACA,EAAE,GAAGL,8BAA8B,CAACI,CAAD,CAApC,MAA6C,IAA7C,IAAqDC,EAAE,KAAK,KAAK,CAAjE,GAAqEA,EAArE,GAA0EF,CAAjF;AAAqF,GAAhK,CAAP;AACH;;AACD,SAASG,aAAT,CAAuBrD,KAAvB,EAA8B;AAC1B,SAAQ,GAAEA,KAAM,EAAhB;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMsD,UAAN,CAAiB;AACbrE,EAAAA,WAAW,CAACsE,OAAO,GAAG,EAAX,EAAe;AACtB,SAAKC,OAAL,GAAe,IAAf;AACA,SAAKC,SAAL,GAAiB,IAAjB;AACA,SAAKC,OAAL,GAAeH,OAAO,CAACG,OAAR,IAAmB,IAAI5B,oBAAJ,EAAlC;;AACA,QAAI,CAAC,CAACyB,OAAO,CAACI,UAAd,EAA0B;AACtB,UAAI,CAAC,CAACJ,OAAO,CAACK,UAAd,EAA0B;AACtB,cAAM,IAAIC,KAAJ,CAAW,gDAAX,CAAN;AACH;;AACD,WAAKhF,GAAL,GAAWwD,WAAW,CAACkB,OAAO,CAACI,UAAT,EAAqB,KAAKD,OAA1B,CAAtB;AACH,KALD,MAMK,IAAI,CAAC,CAACH,OAAO,CAACK,UAAd,EAA0B;AAC3B,WAAK/E,GAAL,GAAW,IAAIO,GAAJ,EAAX;AACAmB,MAAAA,MAAM,CAACC,IAAP,CAAY+C,OAAO,CAACK,UAApB,EAAgCpE,OAAhC,CAAwCM,GAAG,IAAI;AAC3C,cAAME,KAAK,GAAGuD,OAAO,CAACK,UAAR,CAAmB9D,GAAnB,CAAd;AACA,aAAKjB,GAAL,CAASyB,GAAT,CAAaR,GAAb,EAAkBc,KAAK,CAACkD,OAAN,CAAc9D,KAAd,IAAuBA,KAAvB,GAA+B,CAACA,KAAD,CAAjD;AACH,OAHD;AAIH,KANI,MAOA;AACD,WAAKnB,GAAL,GAAW,IAAX;AACH;AACJ;AACD;AACJ;AACA;AACA;AACA;AACA;;;AACIsB,EAAAA,GAAG,CAACuC,KAAD,EAAQ;AACP,SAAK/B,IAAL;AACA,WAAO,KAAK9B,GAAL,CAASsB,GAAT,CAAauC,KAAb,CAAP;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;;AACItC,EAAAA,GAAG,CAACsC,KAAD,EAAQ;AACP,SAAK/B,IAAL;AACA,UAAMoD,GAAG,GAAG,KAAKlF,GAAL,CAASuB,GAAT,CAAasC,KAAb,CAAZ;AACA,WAAO,CAAC,CAACqB,GAAF,GAAQA,GAAG,CAAC,CAAD,CAAX,GAAiB,IAAxB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;;AACIjD,EAAAA,MAAM,CAAC4B,KAAD,EAAQ;AACV,SAAK/B,IAAL;AACA,WAAO,KAAK9B,GAAL,CAASuB,GAAT,CAAasC,KAAb,KAAuB,IAA9B;AACH;AACD;AACJ;AACA;AACA;;;AACIlC,EAAAA,IAAI,GAAG;AACH,SAAKG,IAAL;AACA,WAAOC,KAAK,CAACC,IAAN,CAAW,KAAKhC,GAAL,CAAS2B,IAAT,EAAX,CAAP;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;;AACIO,EAAAA,MAAM,CAAC2B,KAAD,EAAQ1C,KAAR,EAAe;AACjB,WAAO,KAAKgB,KAAL,CAAW;AAAE0B,MAAAA,KAAF;AAAS1C,MAAAA,KAAT;AAAgBiB,MAAAA,EAAE,EAAE;AAApB,KAAX,CAAP;AACH;AACD;AACJ;AACA;AACA;AACA;;;AACI+C,EAAAA,SAAS,CAACxB,MAAD,EAAS;AACd,UAAMgB,OAAO,GAAG,EAAhB;AACAjD,IAAAA,MAAM,CAACC,IAAP,CAAYgC,MAAZ,EAAoBhD,OAApB,CAA4BkD,KAAK,IAAI;AACjC,YAAM1C,KAAK,GAAGwC,MAAM,CAACE,KAAD,CAApB;;AACA,UAAI9B,KAAK,CAACkD,OAAN,CAAc9D,KAAd,CAAJ,EAA0B;AACtBA,QAAAA,KAAK,CAACR,OAAN,CAAcyE,MAAM,IAAI;AACpBT,UAAAA,OAAO,CAACnD,IAAR,CAAa;AAAEqC,YAAAA,KAAF;AAAS1C,YAAAA,KAAK,EAAEiE,MAAhB;AAAwBhD,YAAAA,EAAE,EAAE;AAA5B,WAAb;AACH,SAFD;AAGH,OAJD,MAKK;AACDuC,QAAAA,OAAO,CAACnD,IAAR,CAAa;AAAEqC,UAAAA,KAAF;AAAS1C,UAAAA,KAAK,EAAEA,KAAhB;AAAuBiB,UAAAA,EAAE,EAAE;AAA3B,SAAb;AACH;AACJ,KAVD;AAWA,WAAO,KAAKD,KAAL,CAAWwC,OAAX,CAAP;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;;AACIlD,EAAAA,GAAG,CAACoC,KAAD,EAAQ1C,KAAR,EAAe;AACd,WAAO,KAAKgB,KAAL,CAAW;AAAE0B,MAAAA,KAAF;AAAS1C,MAAAA,KAAT;AAAgBiB,MAAAA,EAAE,EAAE;AAApB,KAAX,CAAP;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;AACIC,EAAAA,MAAM,CAACwB,KAAD,EAAQ1C,KAAR,EAAe;AACjB,WAAO,KAAKgB,KAAL,CAAW;AAAE0B,MAAAA,KAAF;AAAS1C,MAAAA,KAAT;AAAgBiB,MAAAA,EAAE,EAAE;AAApB,KAAX,CAAP;AACH;AACD;AACJ;AACA;AACA;;;AACIiD,EAAAA,QAAQ,GAAG;AACP,SAAKvD,IAAL;AACA,WAAO,KAAKH,IAAL,GACF3B,GADE,CACEiB,GAAG,IAAI;AACZ,YAAMqE,IAAI,GAAG,KAAKT,OAAL,CAAa3B,SAAb,CAAuBjC,GAAvB,CAAb,CADY,CAEZ;AACA;AACA;;AACA,aAAO,KAAKjB,GAAL,CAASuB,GAAT,CAAaN,GAAb,EAAkBjB,GAAlB,CAAsBmB,KAAK,IAAImE,IAAI,GAAG,GAAP,GAAa,KAAKT,OAAL,CAAazB,WAAb,CAAyBjC,KAAzB,CAA5C,EACFoE,IADE,CACG,GADH,CAAP;AAEH,KARM,EASH;AACA;AAVG,KAWFxF,MAXE,CAWK8D,KAAK,IAAIA,KAAK,KAAK,EAXxB,EAYF0B,IAZE,CAYG,GAZH,CAAP;AAaH;;AACDpD,EAAAA,KAAK,CAACK,MAAD,EAAS;AACV,UAAML,KAAK,GAAG,IAAIsC,UAAJ,CAAe;AAAEI,MAAAA,OAAO,EAAE,KAAKA;AAAhB,KAAf,CAAd;AACA1C,IAAAA,KAAK,CAACyC,SAAN,GAAkB,KAAKA,SAAL,IAAkB,IAApC;AACAzC,IAAAA,KAAK,CAACwC,OAAN,GAAgB,CAAC,KAAKA,OAAL,IAAgB,EAAjB,EAAqBhC,MAArB,CAA4BH,MAA5B,CAAhB;AACA,WAAOL,KAAP;AACH;;AACDL,EAAAA,IAAI,GAAG;AACH,QAAI,KAAK9B,GAAL,KAAa,IAAjB,EAAuB;AACnB,WAAKA,GAAL,GAAW,IAAIO,GAAJ,EAAX;AACH;;AACD,QAAI,KAAKqE,SAAL,KAAmB,IAAvB,EAA6B;AACzB,WAAKA,SAAL,CAAe9C,IAAf;AACA,WAAK8C,SAAL,CAAejD,IAAf,GAAsBhB,OAAtB,CAA8BM,GAAG,IAAI,KAAKjB,GAAL,CAASyB,GAAT,CAAaR,GAAb,EAAkB,KAAK2D,SAAL,CAAe5E,GAAf,CAAmBuB,GAAnB,CAAuBN,GAAvB,CAAlB,CAArC;AACA,WAAK0D,OAAL,CAAahE,OAAb,CAAqB6B,MAAM,IAAI;AAC3B,gBAAQA,MAAM,CAACJ,EAAf;AACI,eAAK,GAAL;AACA,eAAK,GAAL;AACI,kBAAMQ,IAAI,GAAG,CAACJ,MAAM,CAACJ,EAAP,KAAc,GAAd,GAAoB,KAAKpC,GAAL,CAASuB,GAAT,CAAaiB,MAAM,CAACqB,KAApB,CAApB,GAAiDhB,SAAlD,KAAgE,EAA7E;AACAD,YAAAA,IAAI,CAACpB,IAAL,CAAUgD,aAAa,CAAChC,MAAM,CAACrB,KAAR,CAAvB;AACA,iBAAKnB,GAAL,CAASyB,GAAT,CAAae,MAAM,CAACqB,KAApB,EAA2BjB,IAA3B;AACA;;AACJ,eAAK,GAAL;AACI,gBAAIJ,MAAM,CAACrB,KAAP,KAAiB0B,SAArB,EAAgC;AAC5B,kBAAID,IAAI,GAAG,KAAK5C,GAAL,CAASuB,GAAT,CAAaiB,MAAM,CAACqB,KAApB,KAA8B,EAAzC;AACA,oBAAM2B,GAAG,GAAG5C,IAAI,CAAC9B,OAAL,CAAa0D,aAAa,CAAChC,MAAM,CAACrB,KAAR,CAA1B,CAAZ;;AACA,kBAAIqE,GAAG,KAAK,CAAC,CAAb,EAAgB;AACZ5C,gBAAAA,IAAI,CAAC6C,MAAL,CAAYD,GAAZ,EAAiB,CAAjB;AACH;;AACD,kBAAI5C,IAAI,CAACf,MAAL,GAAc,CAAlB,EAAqB;AACjB,qBAAK7B,GAAL,CAASyB,GAAT,CAAae,MAAM,CAACqB,KAApB,EAA2BjB,IAA3B;AACH,eAFD,MAGK;AACD,qBAAK5C,GAAL,CAASqC,MAAT,CAAgBG,MAAM,CAACqB,KAAvB;AACH;AACJ,aAZD,MAaK;AACD,mBAAK7D,GAAL,CAASqC,MAAT,CAAgBG,MAAM,CAACqB,KAAvB;AACA;AACH;;AAxBT;AA0BH,OA3BD;AA4BA,WAAKe,SAAL,GAAiB,KAAKD,OAAL,GAAe,IAAhC;AACH;AACJ;;AA5KY;AA+KjB;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMe,gBAAN,CAAuB;AACnBtF,EAAAA,WAAW,CAACuF,YAAD,EAAe;AACtB,SAAKA,YAAL,GAAoBA,YAApB;AACH;;AAHkB;AAKvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMC,WAAN,CAAkB;AACdxF,EAAAA,WAAW,GAAG;AACV,SAAKJ,GAAL,GAAW,IAAIO,GAAJ,EAAX;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;AACIkB,EAAAA,GAAG,CAACoE,KAAD,EAAQ1E,KAAR,EAAe;AACd,SAAKnB,GAAL,CAASyB,GAAT,CAAaoE,KAAb,EAAoB1E,KAApB;AACA,WAAO,IAAP;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;AACII,EAAAA,GAAG,CAACsE,KAAD,EAAQ;AACP,QAAI,CAAC,KAAK7F,GAAL,CAASsB,GAAT,CAAauE,KAAb,CAAL,EAA0B;AACtB,WAAK7F,GAAL,CAASyB,GAAT,CAAaoE,KAAb,EAAoBA,KAAK,CAACF,YAAN,EAApB;AACH;;AACD,WAAO,KAAK3F,GAAL,CAASuB,GAAT,CAAasE,KAAb,CAAP;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;AACIxD,EAAAA,MAAM,CAACwD,KAAD,EAAQ;AACV,SAAK7F,GAAL,CAASqC,MAAT,CAAgBwD,KAAhB;AACA,WAAO,IAAP;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;AACIvE,EAAAA,GAAG,CAACuE,KAAD,EAAQ;AACP,WAAO,KAAK7F,GAAL,CAASsB,GAAT,CAAauE,KAAb,CAAP;AACH;AACD;AACJ;AACA;;;AACIlE,EAAAA,IAAI,GAAG;AACH,WAAO,KAAK3B,GAAL,CAAS2B,IAAT,EAAP;AACH;;AAvDa;AA0DlB;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;;;AACA,SAASmE,aAAT,CAAuBC,MAAvB,EAA+B;AAC3B,UAAQA,MAAR;AACI,SAAK,QAAL;AACA,SAAK,KAAL;AACA,SAAK,MAAL;AACA,SAAK,SAAL;AACA,SAAK,OAAL;AACI,aAAO,KAAP;;AACJ;AACI,aAAO,IAAP;AARR;AAUH;AACD;AACA;AACA;AACA;AACA;;;AACA,SAASC,aAAT,CAAuB7E,KAAvB,EAA8B;AAC1B,SAAO,OAAO8E,WAAP,KAAuB,WAAvB,IAAsC9E,KAAK,YAAY8E,WAA9D;AACH;AACD;AACA;AACA;AACA;AACA;;;AACA,SAASC,MAAT,CAAgB/E,KAAhB,EAAuB;AACnB,SAAO,OAAOgF,IAAP,KAAgB,WAAhB,IAA+BhF,KAAK,YAAYgF,IAAvD;AACH;AACD;AACA;AACA;AACA;AACA;;;AACA,SAASC,UAAT,CAAoBjF,KAApB,EAA2B;AACvB,SAAO,OAAOkF,QAAP,KAAoB,WAApB,IAAmClF,KAAK,YAAYkF,QAA3D;AACH;AACD;AACA;AACA;AACA;AACA;;;AACA,SAASC,iBAAT,CAA2BnF,KAA3B,EAAkC;AAC9B,SAAO,OAAOoF,eAAP,KAA2B,WAA3B,IAA0CpF,KAAK,YAAYoF,eAAlE;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMC,WAAN,CAAkB;AACdpG,EAAAA,WAAW,CAAC2F,MAAD,EAASU,GAAT,EAAcC,KAAd,EAAqBC,MAArB,EAA6B;AACpC,SAAKF,GAAL,GAAWA,GAAX;AACA;AACR;AACA;AACA;AACA;AACA;AACA;;AACQ,SAAKG,IAAL,GAAY,IAAZ;AACA;AACR;AACA;AACA;AACA;AACA;;AACQ,SAAKC,cAAL,GAAsB,KAAtB;AACA;AACR;AACA;;AACQ,SAAKC,eAAL,GAAuB,KAAvB;AACA;AACR;AACA;AACA;AACA;AACA;;AACQ,SAAKC,YAAL,GAAoB,MAApB;AACA,SAAKhB,MAAL,GAAcA,MAAM,CAACiB,WAAP,EAAd,CA5BoC,CA6BpC;AACA;;AACA,QAAItC,OAAJ,CA/BoC,CAgCpC;AACA;;AACA,QAAIoB,aAAa,CAAC,KAAKC,MAAN,CAAb,IAA8B,CAAC,CAACY,MAApC,EAA4C;AACxC;AACA,WAAKC,IAAL,GAAaF,KAAK,KAAK7D,SAAX,GAAwB6D,KAAxB,GAAgC,IAA5C;AACAhC,MAAAA,OAAO,GAAGiC,MAAV;AACH,KAJD,MAKK;AACD;AACAjC,MAAAA,OAAO,GAAGgC,KAAV;AACH,KA1CmC,CA2CpC;;;AACA,QAAIhC,OAAJ,EAAa;AACT;AACA,WAAKmC,cAAL,GAAsB,CAAC,CAACnC,OAAO,CAACmC,cAAhC;AACA,WAAKC,eAAL,GAAuB,CAAC,CAACpC,OAAO,CAACoC,eAAjC,CAHS,CAIT;;AACA,UAAI,CAAC,CAACpC,OAAO,CAACqC,YAAd,EAA4B;AACxB,aAAKA,YAAL,GAAoBrC,OAAO,CAACqC,YAA5B;AACH,OAPQ,CAQT;;;AACA,UAAI,CAAC,CAACrC,OAAO,CAACrE,OAAd,EAAuB;AACnB,aAAKA,OAAL,GAAeqE,OAAO,CAACrE,OAAvB;AACH;;AACD,UAAI,CAAC,CAACqE,OAAO,CAACuC,OAAd,EAAuB;AACnB,aAAKA,OAAL,GAAevC,OAAO,CAACuC,OAAvB;AACH;;AACD,UAAI,CAAC,CAACvC,OAAO,CAACf,MAAd,EAAsB;AAClB,aAAKA,MAAL,GAAce,OAAO,CAACf,MAAtB;AACH;AACJ,KA9DmC,CA+DpC;;;AACA,QAAI,CAAC,KAAKtD,OAAV,EAAmB;AACf,WAAKA,OAAL,GAAe,IAAIF,WAAJ,EAAf;AACH,KAlEmC,CAmEpC;;;AACA,QAAI,CAAC,KAAK8G,OAAV,EAAmB;AACf,WAAKA,OAAL,GAAe,IAAIrB,WAAJ,EAAf;AACH,KAtEmC,CAuEpC;;;AACA,QAAI,CAAC,KAAKjC,MAAV,EAAkB;AACd,WAAKA,MAAL,GAAc,IAAIc,UAAJ,EAAd;AACA,WAAKyC,aAAL,GAAqBT,GAArB;AACH,KAHD,MAIK;AACD;AACA,YAAM9C,MAAM,GAAG,KAAKA,MAAL,CAAY0B,QAAZ,EAAf;;AACA,UAAI1B,MAAM,CAAC9B,MAAP,KAAkB,CAAtB,EAAyB;AACrB;AACA,aAAKqF,aAAL,GAAqBT,GAArB;AACH,OAHD,MAIK;AACD;AACA,cAAMU,IAAI,GAAGV,GAAG,CAAC3F,OAAJ,CAAY,GAAZ,CAAb,CAFC,CAGD;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,cAAMsG,GAAG,GAAGD,IAAI,KAAK,CAAC,CAAV,GAAc,GAAd,GAAqBA,IAAI,GAAGV,GAAG,CAAC5E,MAAJ,GAAa,CAApB,GAAwB,GAAxB,GAA8B,EAA/D;AACA,aAAKqF,aAAL,GAAqBT,GAAG,GAAGW,GAAN,GAAYzD,MAAjC;AACH;AACJ;AACJ;AACD;AACJ;AACA;AACA;;;AACI0D,EAAAA,aAAa,GAAG;AACZ;AACA,QAAI,KAAKT,IAAL,KAAc,IAAlB,EAAwB;AACpB,aAAO,IAAP;AACH,KAJW,CAKZ;AACA;;;AACA,QAAIZ,aAAa,CAAC,KAAKY,IAAN,CAAb,IAA4BV,MAAM,CAAC,KAAKU,IAAN,CAAlC,IAAiDR,UAAU,CAAC,KAAKQ,IAAN,CAA3D,IACAN,iBAAiB,CAAC,KAAKM,IAAN,CADjB,IACgC,OAAO,KAAKA,IAAZ,KAAqB,QADzD,EACmE;AAC/D,aAAO,KAAKA,IAAZ;AACH,KAVW,CAWZ;;;AACA,QAAI,KAAKA,IAAL,YAAqBnC,UAAzB,EAAqC;AACjC,aAAO,KAAKmC,IAAL,CAAUvB,QAAV,EAAP;AACH,KAdW,CAeZ;;;AACA,QAAI,OAAO,KAAKuB,IAAZ,KAAqB,QAArB,IAAiC,OAAO,KAAKA,IAAZ,KAAqB,SAAtD,IACA7E,KAAK,CAACkD,OAAN,CAAc,KAAK2B,IAAnB,CADJ,EAC8B;AAC1B,aAAOU,IAAI,CAACC,SAAL,CAAe,KAAKX,IAApB,CAAP;AACH,KAnBW,CAoBZ;;;AACA,WAAO,KAAKA,IAAL,CAAUvB,QAAV,EAAP;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;;AACImC,EAAAA,uBAAuB,GAAG;AACtB;AACA,QAAI,KAAKZ,IAAL,KAAc,IAAlB,EAAwB;AACpB,aAAO,IAAP;AACH,KAJqB,CAKtB;;;AACA,QAAIR,UAAU,CAAC,KAAKQ,IAAN,CAAd,EAA2B;AACvB,aAAO,IAAP;AACH,KARqB,CAStB;AACA;;;AACA,QAAIV,MAAM,CAAC,KAAKU,IAAN,CAAV,EAAuB;AACnB,aAAO,KAAKA,IAAL,CAAUa,IAAV,IAAkB,IAAzB;AACH,KAbqB,CActB;;;AACA,QAAIzB,aAAa,CAAC,KAAKY,IAAN,CAAjB,EAA8B;AAC1B,aAAO,IAAP;AACH,KAjBqB,CAkBtB;AACA;;;AACA,QAAI,OAAO,KAAKA,IAAZ,KAAqB,QAAzB,EAAmC;AAC/B,aAAO,YAAP;AACH,KAtBqB,CAuBtB;;;AACA,QAAI,KAAKA,IAAL,YAAqBnC,UAAzB,EAAqC;AACjC,aAAO,iDAAP;AACH,KA1BqB,CA2BtB;;;AACA,QAAI,OAAO,KAAKmC,IAAZ,KAAqB,QAArB,IAAiC,OAAO,KAAKA,IAAZ,KAAqB,QAAtD,IACA,OAAO,KAAKA,IAAZ,KAAqB,SADzB,EACoC;AAChC,aAAO,kBAAP;AACH,KA/BqB,CAgCtB;;;AACA,WAAO,IAAP;AACH;;AACDzE,EAAAA,KAAK,CAACK,MAAM,GAAG,EAAV,EAAc;AACf,QAAI+B,EAAJ,CADe,CAEf;AACA;;;AACA,UAAMwB,MAAM,GAAGvD,MAAM,CAACuD,MAAP,IAAiB,KAAKA,MAArC;AACA,UAAMU,GAAG,GAAGjE,MAAM,CAACiE,GAAP,IAAc,KAAKA,GAA/B;AACA,UAAMM,YAAY,GAAGvE,MAAM,CAACuE,YAAP,IAAuB,KAAKA,YAAjD,CANe,CAOf;AACA;AACA;AACA;;AACA,UAAMH,IAAI,GAAIpE,MAAM,CAACoE,IAAP,KAAgB/D,SAAjB,GAA8BL,MAAM,CAACoE,IAArC,GAA4C,KAAKA,IAA9D,CAXe,CAYf;AACA;;AACA,UAAME,eAAe,GAAItE,MAAM,CAACsE,eAAP,KAA2BjE,SAA5B,GAAyCL,MAAM,CAACsE,eAAhD,GAAkE,KAAKA,eAA/F;AACA,UAAMD,cAAc,GAAIrE,MAAM,CAACqE,cAAP,KAA0BhE,SAA3B,GAAwCL,MAAM,CAACqE,cAA/C,GAAgE,KAAKA,cAA5F,CAfe,CAgBf;AACA;;AACA,QAAIxG,OAAO,GAAGmC,MAAM,CAACnC,OAAP,IAAkB,KAAKA,OAArC;AACA,QAAIsD,MAAM,GAAGnB,MAAM,CAACmB,MAAP,IAAiB,KAAKA,MAAnC,CAnBe,CAoBf;;AACA,UAAMsD,OAAO,GAAG,CAAC1C,EAAE,GAAG/B,MAAM,CAACyE,OAAb,MAA0B,IAA1B,IAAkC1C,EAAE,KAAK,KAAK,CAA9C,GAAkDA,EAAlD,GAAuD,KAAK0C,OAA5E,CArBe,CAsBf;;AACA,QAAIzE,MAAM,CAACkF,UAAP,KAAsB7E,SAA1B,EAAqC;AACjC;AACAxC,MAAAA,OAAO,GACHqB,MAAM,CAACC,IAAP,CAAYa,MAAM,CAACkF,UAAnB,EACKC,MADL,CACY,CAACtH,OAAD,EAAUU,IAAV,KAAmBV,OAAO,CAACoB,GAAR,CAAYV,IAAZ,EAAkByB,MAAM,CAACkF,UAAP,CAAkB3G,IAAlB,CAAlB,CAD/B,EAC2EV,OAD3E,CADJ;AAGH,KA5Bc,CA6Bf;;;AACA,QAAImC,MAAM,CAACoF,SAAX,EAAsB;AAClB;AACAjE,MAAAA,MAAM,GAAGjC,MAAM,CAACC,IAAP,CAAYa,MAAM,CAACoF,SAAnB,EACJD,MADI,CACG,CAAChE,MAAD,EAASE,KAAT,KAAmBF,MAAM,CAAClC,GAAP,CAAWoC,KAAX,EAAkBrB,MAAM,CAACoF,SAAP,CAAiB/D,KAAjB,CAAlB,CADtB,EACkEF,MADlE,CAAT;AAEH,KAlCc,CAmCf;;;AACA,WAAO,IAAI6C,WAAJ,CAAgBT,MAAhB,EAAwBU,GAAxB,EAA6BG,IAA7B,EAAmC;AACtCjD,MAAAA,MADsC;AAEtCtD,MAAAA,OAFsC;AAGtC4G,MAAAA,OAHsC;AAItCJ,MAAAA,cAJsC;AAKtCE,MAAAA,YALsC;AAMtCD,MAAAA;AANsC,KAAnC,CAAP;AAQH;;AAnNa;AAsNlB;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAIe,aAAJ;;AACA,CAAC,UAAUA,aAAV,EAAyB;AACtB;AACJ;AACA;AACIA,EAAAA,aAAa,CAACA,aAAa,CAAC,MAAD,CAAb,GAAwB,CAAzB,CAAb,GAA2C,MAA3C;AACA;AACJ;AACA;;AACIA,EAAAA,aAAa,CAACA,aAAa,CAAC,gBAAD,CAAb,GAAkC,CAAnC,CAAb,GAAqD,gBAArD;AACA;AACJ;AACA;;AACIA,EAAAA,aAAa,CAACA,aAAa,CAAC,gBAAD,CAAb,GAAkC,CAAnC,CAAb,GAAqD,gBAArD;AACA;AACJ;AACA;;AACIA,EAAAA,aAAa,CAACA,aAAa,CAAC,kBAAD,CAAb,GAAoC,CAArC,CAAb,GAAuD,kBAAvD;AACA;AACJ;AACA;;AACIA,EAAAA,aAAa,CAACA,aAAa,CAAC,UAAD,CAAb,GAA4B,CAA7B,CAAb,GAA+C,UAA/C;AACA;AACJ;AACA;;AACIA,EAAAA,aAAa,CAACA,aAAa,CAAC,MAAD,CAAb,GAAwB,CAAzB,CAAb,GAA2C,MAA3C;AACH,CAzBD,EAyBGA,aAAa,KAAKA,aAAa,GAAG,EAArB,CAzBhB;AA0BA;AACA;AACA;AACA;AACA;;;AACA,MAAMC,gBAAN,CAAuB;AACnB;AACJ;AACA;AACA;AACA;AACA;AACI1H,EAAAA,WAAW,CAAC0B,IAAD,EAAOiG,aAAa,GAAG;AAAI;AAA3B,IAAqCC,iBAAiB,GAAG,IAAzD,EAA+D;AACtE;AACA;AACA,SAAK3H,OAAL,GAAeyB,IAAI,CAACzB,OAAL,IAAgB,IAAIF,WAAJ,EAA/B;AACA,SAAK8H,MAAL,GAAcnG,IAAI,CAACmG,MAAL,KAAgBpF,SAAhB,GAA4Bf,IAAI,CAACmG,MAAjC,GAA0CF,aAAxD;AACA,SAAKG,UAAL,GAAkBpG,IAAI,CAACoG,UAAL,IAAmBF,iBAArC;AACA,SAAKvB,GAAL,GAAW3E,IAAI,CAAC2E,GAAL,IAAY,IAAvB,CANsE,CAOtE;;AACA,SAAK0B,EAAL,GAAU,KAAKF,MAAL,IAAe,GAAf,IAAsB,KAAKA,MAAL,GAAc,GAA9C;AACH;;AAhBkB;AAkBvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMG,kBAAN,SAAiCN,gBAAjC,CAAkD;AAC9C;AACJ;AACA;AACI1H,EAAAA,WAAW,CAAC0B,IAAI,GAAG,EAAR,EAAY;AACnB,UAAMA,IAAN;AACA,SAAK2F,IAAL,GAAYI,aAAa,CAACQ,cAA1B;AACH;AACD;AACJ;AACA;AACA;;;AACIlG,EAAAA,KAAK,CAACK,MAAM,GAAG,EAAV,EAAc;AACf;AACA;AACA,WAAO,IAAI4F,kBAAJ,CAAuB;AAC1B/H,MAAAA,OAAO,EAAEmC,MAAM,CAACnC,OAAP,IAAkB,KAAKA,OADN;AAE1B4H,MAAAA,MAAM,EAAEzF,MAAM,CAACyF,MAAP,KAAkBpF,SAAlB,GAA8BL,MAAM,CAACyF,MAArC,GAA8C,KAAKA,MAFjC;AAG1BC,MAAAA,UAAU,EAAE1F,MAAM,CAAC0F,UAAP,IAAqB,KAAKA,UAHZ;AAI1BzB,MAAAA,GAAG,EAAEjE,MAAM,CAACiE,GAAP,IAAc,KAAKA,GAAnB,IAA0B5D;AAJL,KAAvB,CAAP;AAMH;;AArB6C;AAuBlD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMyF,YAAN,SAA2BR,gBAA3B,CAA4C;AACxC;AACJ;AACA;AACI1H,EAAAA,WAAW,CAAC0B,IAAI,GAAG,EAAR,EAAY;AACnB,UAAMA,IAAN;AACA,SAAK2F,IAAL,GAAYI,aAAa,CAACU,QAA1B;AACA,SAAK3B,IAAL,GAAY9E,IAAI,CAAC8E,IAAL,KAAc/D,SAAd,GAA0Bf,IAAI,CAAC8E,IAA/B,GAAsC,IAAlD;AACH;;AACDzE,EAAAA,KAAK,CAACK,MAAM,GAAG,EAAV,EAAc;AACf,WAAO,IAAI8F,YAAJ,CAAiB;AACpB1B,MAAAA,IAAI,EAAGpE,MAAM,CAACoE,IAAP,KAAgB/D,SAAjB,GAA8BL,MAAM,CAACoE,IAArC,GAA4C,KAAKA,IADnC;AAEpBvG,MAAAA,OAAO,EAAEmC,MAAM,CAACnC,OAAP,IAAkB,KAAKA,OAFZ;AAGpB4H,MAAAA,MAAM,EAAGzF,MAAM,CAACyF,MAAP,KAAkBpF,SAAnB,GAAgCL,MAAM,CAACyF,MAAvC,GAAgD,KAAKA,MAHzC;AAIpBC,MAAAA,UAAU,EAAE1F,MAAM,CAAC0F,UAAP,IAAqB,KAAKA,UAJlB;AAKpBzB,MAAAA,GAAG,EAAEjE,MAAM,CAACiE,GAAP,IAAc,KAAKA,GAAnB,IAA0B5D;AALX,KAAjB,CAAP;AAOH;;AAjBuC;AAmB5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAM2F,iBAAN,SAAgCV,gBAAhC,CAAiD;AAC7C1H,EAAAA,WAAW,CAAC0B,IAAD,EAAO;AACd;AACA,UAAMA,IAAN,EAAY,CAAZ,EAAe,eAAf;AACA,SAAKf,IAAL,GAAY,mBAAZ;AACA;AACR;AACA;;AACQ,SAAKoH,EAAL,GAAU,KAAV,CAPc,CAQd;AACA;AACA;;AACA,QAAI,KAAKF,MAAL,IAAe,GAAf,IAAsB,KAAKA,MAAL,GAAc,GAAxC,EAA6C;AACzC,WAAKQ,OAAL,GAAgB,mCAAkC3G,IAAI,CAAC2E,GAAL,IAAY,eAAgB,EAA9E;AACH,KAFD,MAGK;AACD,WAAKgC,OAAL,GAAgB,6BAA4B3G,IAAI,CAAC2E,GAAL,IAAY,eAAgB,KAAI3E,IAAI,CAACmG,MAAO,IAAGnG,IAAI,CAACoG,UAAW,EAA3G;AACH;;AACD,SAAKQ,KAAL,GAAa5G,IAAI,CAAC4G,KAAL,IAAc,IAA3B;AACH;;AAnB4C;AAsBjD;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASC,OAAT,CAAiBjE,OAAjB,EAA0BkC,IAA1B,EAAgC;AAC5B,SAAO;AACHA,IAAAA,IADG;AAEHvG,IAAAA,OAAO,EAAEqE,OAAO,CAACrE,OAFd;AAGH4G,IAAAA,OAAO,EAAEvC,OAAO,CAACuC,OAHd;AAIH2B,IAAAA,OAAO,EAAElE,OAAO,CAACkE,OAJd;AAKHjF,IAAAA,MAAM,EAAEe,OAAO,CAACf,MALb;AAMHkD,IAAAA,cAAc,EAAEnC,OAAO,CAACmC,cANrB;AAOHE,IAAAA,YAAY,EAAErC,OAAO,CAACqC,YAPnB;AAQHD,IAAAA,eAAe,EAAEpC,OAAO,CAACoC;AARtB,GAAP;AAUH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAM+B,UAAN,CAAiB;AACbzI,EAAAA,WAAW,CAAC0I,OAAD,EAAU;AACjB,SAAKA,OAAL,GAAeA,OAAf;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACIC,EAAAA,OAAO,CAACC,KAAD,EAAQvC,GAAR,EAAa/B,OAAO,GAAG,EAAvB,EAA2B;AAC9B,QAAIuE,GAAJ,CAD8B,CAE9B;;AACA,QAAID,KAAK,YAAYxC,WAArB,EAAkC;AAC9B;AACA;AACAyC,MAAAA,GAAG,GAAGD,KAAN;AACH,KAJD,MAKK;AACD;AACA;AACA;AACA;AACA,UAAI3I,OAAO,GAAGwC,SAAd;;AACA,UAAI6B,OAAO,CAACrE,OAAR,YAA2BF,WAA/B,EAA4C;AACxCE,QAAAA,OAAO,GAAGqE,OAAO,CAACrE,OAAlB;AACH,OAFD,MAGK;AACDA,QAAAA,OAAO,GAAG,IAAIF,WAAJ,CAAgBuE,OAAO,CAACrE,OAAxB,CAAV;AACH,OAXA,CAYD;;;AACA,UAAIsD,MAAM,GAAGd,SAAb;;AACA,UAAI,CAAC,CAAC6B,OAAO,CAACf,MAAd,EAAsB;AAClB,YAAIe,OAAO,CAACf,MAAR,YAA0Bc,UAA9B,EAA0C;AACtCd,UAAAA,MAAM,GAAGe,OAAO,CAACf,MAAjB;AACH,SAFD,MAGK;AACDA,UAAAA,MAAM,GAAG,IAAIc,UAAJ,CAAe;AAAEM,YAAAA,UAAU,EAAEL,OAAO,CAACf;AAAtB,WAAf,CAAT;AACH;AACJ,OArBA,CAsBD;;;AACAsF,MAAAA,GAAG,GAAG,IAAIzC,WAAJ,CAAgBwC,KAAhB,EAAuBvC,GAAvB,EAA6B/B,OAAO,CAACkC,IAAR,KAAiB/D,SAAjB,GAA6B6B,OAAO,CAACkC,IAArC,GAA4C,IAAzE,EAAgF;AAClFvG,QAAAA,OADkF;AAElF4G,QAAAA,OAAO,EAAEvC,OAAO,CAACuC,OAFiE;AAGlFtD,QAAAA,MAHkF;AAIlFkD,QAAAA,cAAc,EAAEnC,OAAO,CAACmC,cAJ0D;AAKlF;AACAE,QAAAA,YAAY,EAAErC,OAAO,CAACqC,YAAR,IAAwB,MAN4C;AAOlFD,QAAAA,eAAe,EAAEpC,OAAO,CAACoC;AAPyD,OAAhF,CAAN;AASH,KAxC6B,CAyC9B;AACA;AACA;AACA;;;AACA,UAAMoC,OAAO,GAAGtJ,wCAAE,CAACqJ,GAAD,CAAF,CAAQE,IAAR,CAAarJ,yDAAS,CAAEmJ,GAAD,IAAS,KAAKH,OAAL,CAAaM,MAAb,CAAoBH,GAApB,CAAV,CAAtB,CAAhB,CA7C8B,CA8C9B;AACA;AACA;;AACA,QAAID,KAAK,YAAYxC,WAAjB,IAAgC9B,OAAO,CAACkE,OAAR,KAAoB,QAAxD,EAAkE;AAC9D,aAAOM,OAAP;AACH,KAnD6B,CAoD9B;AACA;AACA;;;AACA,UAAMG,IAAI,GAAGH,OAAO,CAACC,IAAR,CAAapJ,sDAAM,CAAEuJ,KAAD,IAAWA,KAAK,YAAYhB,YAA7B,CAAnB,CAAb,CAvD8B,CAwD9B;;AACA,YAAQ5D,OAAO,CAACkE,OAAR,IAAmB,MAA3B;AACI,WAAK,MAAL;AACI;AACA;AACA;AACA;AACA;AACA,gBAAQK,GAAG,CAAClC,YAAZ;AACI,eAAK,aAAL;AACI,mBAAOsC,IAAI,CAACF,IAAL,CAAUnJ,mDAAG,CAAEkF,GAAD,IAAS;AAC1B;AACA,kBAAIA,GAAG,CAAC0B,IAAJ,KAAa,IAAb,IAAqB,EAAE1B,GAAG,CAAC0B,IAAJ,YAAoBX,WAAtB,CAAzB,EAA6D;AACzD,sBAAM,IAAIjB,KAAJ,CAAU,iCAAV,CAAN;AACH;;AACD,qBAAOE,GAAG,CAAC0B,IAAX;AACH,aANmB,CAAb,CAAP;;AAOJ,eAAK,MAAL;AACI,mBAAOyC,IAAI,CAACF,IAAL,CAAUnJ,mDAAG,CAAEkF,GAAD,IAAS;AAC1B;AACA,kBAAIA,GAAG,CAAC0B,IAAJ,KAAa,IAAb,IAAqB,EAAE1B,GAAG,CAAC0B,IAAJ,YAAoBT,IAAtB,CAAzB,EAAsD;AAClD,sBAAM,IAAInB,KAAJ,CAAU,yBAAV,CAAN;AACH;;AACD,qBAAOE,GAAG,CAAC0B,IAAX;AACH,aANmB,CAAb,CAAP;;AAOJ,eAAK,MAAL;AACI,mBAAOyC,IAAI,CAACF,IAAL,CAAUnJ,mDAAG,CAAEkF,GAAD,IAAS;AAC1B;AACA,kBAAIA,GAAG,CAAC0B,IAAJ,KAAa,IAAb,IAAqB,OAAO1B,GAAG,CAAC0B,IAAX,KAAoB,QAA7C,EAAuD;AACnD,sBAAM,IAAI5B,KAAJ,CAAU,2BAAV,CAAN;AACH;;AACD,qBAAOE,GAAG,CAAC0B,IAAX;AACH,aANmB,CAAb,CAAP;;AAOJ,eAAK,MAAL;AACA;AACI;AACA,mBAAOyC,IAAI,CAACF,IAAL,CAAUnJ,mDAAG,CAAEkF,GAAD,IAASA,GAAG,CAAC0B,IAAd,CAAb,CAAP;AA5BR;;AA8BJ,WAAK,UAAL;AACI;AACA,eAAOyC,IAAP;;AACJ;AACI;AACA,cAAM,IAAIrE,KAAJ,CAAW,uCAAsCN,OAAO,CAACkE,OAAQ,GAAjE,CAAN;AA1CR;AA4CH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACIvG,EAAAA,MAAM,CAACoE,GAAD,EAAM/B,OAAO,GAAG,EAAhB,EAAoB;AACtB,WAAO,KAAKqE,OAAL,CAAa,QAAb,EAAuBtC,GAAvB,EAA4B/B,OAA5B,CAAP;AACH;AACD;AACJ;AACA;AACA;AACA;;;AACInD,EAAAA,GAAG,CAACkF,GAAD,EAAM/B,OAAO,GAAG,EAAhB,EAAoB;AACnB,WAAO,KAAKqE,OAAL,CAAa,KAAb,EAAoBtC,GAApB,EAAyB/B,OAAzB,CAAP;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;AACI6E,EAAAA,IAAI,CAAC9C,GAAD,EAAM/B,OAAO,GAAG,EAAhB,EAAoB;AACpB,WAAO,KAAKqE,OAAL,CAAa,MAAb,EAAqBtC,GAArB,EAA0B/B,OAA1B,CAAP;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI8E,EAAAA,KAAK,CAAC/C,GAAD,EAAMgD,aAAN,EAAqB;AACtB,WAAO,KAAKV,OAAL,CAAa,OAAb,EAAsBtC,GAAtB,EAA2B;AAC9B9C,MAAAA,MAAM,EAAE,IAAIc,UAAJ,GAAiBvC,MAAjB,CAAwBuH,aAAxB,EAAuC,gBAAvC,CADsB;AAE9Bb,MAAAA,OAAO,EAAE,MAFqB;AAG9B7B,MAAAA,YAAY,EAAE;AAHgB,KAA3B,CAAP;AAKH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;AACIrC,EAAAA,OAAO,CAAC+B,GAAD,EAAM/B,OAAO,GAAG,EAAhB,EAAoB;AACvB,WAAO,KAAKqE,OAAL,CAAa,SAAb,EAAwBtC,GAAxB,EAA6B/B,OAA7B,CAAP;AACH;AACD;AACJ;AACA;AACA;AACA;;;AACIgF,EAAAA,KAAK,CAACjD,GAAD,EAAMG,IAAN,EAAYlC,OAAO,GAAG,EAAtB,EAA0B;AAC3B,WAAO,KAAKqE,OAAL,CAAa,OAAb,EAAsBtC,GAAtB,EAA2BkC,OAAO,CAACjE,OAAD,EAAUkC,IAAV,CAAlC,CAAP;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;;AACI+C,EAAAA,IAAI,CAAClD,GAAD,EAAMG,IAAN,EAAYlC,OAAO,GAAG,EAAtB,EAA0B;AAC1B,WAAO,KAAKqE,OAAL,CAAa,MAAb,EAAqBtC,GAArB,EAA0BkC,OAAO,CAACjE,OAAD,EAAUkC,IAAV,CAAjC,CAAP;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;;AACIgD,EAAAA,GAAG,CAACnD,GAAD,EAAMG,IAAN,EAAYlC,OAAO,GAAG,EAAtB,EAA0B;AACzB,WAAO,KAAKqE,OAAL,CAAa,KAAb,EAAoBtC,GAApB,EAAyBkC,OAAO,CAACjE,OAAD,EAAUkC,IAAV,CAAhC,CAAP;AACH;;AA9NY;;AAgOjBiC,UAAU,CAACgB,IAAX;AAAA,mBAAuGhB,UAAvG,EAA6FvJ,sDAA7F,CAAmIW,WAAnI;AAAA;;AACA4I,UAAU,CAACiB,KAAX,kBAD6FxK,gEAC7F;AAAA,SAA2GuJ,UAA3G;AAAA,WAA2GA,UAA3G;AAAA;;AACA;AAAA,qDAF6FvJ,+DAE7F,CAA2FuJ,UAA3F,EAAmH,CAAC;AACxGpB,IAAAA,IAAI,EAAElI,qDAAUA;AADwF,GAAD,CAAnH,EAE4B,YAAY;AAAE,WAAO,CAAC;AAAEkI,MAAAA,IAAI,EAAExH;AAAR,KAAD,CAAP;AAAiC,GAF3E;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAM8J,sBAAN,CAA6B;AACzB3J,EAAAA,WAAW,CAAC4J,IAAD,EAAOC,WAAP,EAAoB;AAC3B,SAAKD,IAAL,GAAYA,IAAZ;AACA,SAAKC,WAAL,GAAmBA,WAAnB;AACH;;AACDb,EAAAA,MAAM,CAACH,GAAD,EAAM;AACR,WAAO,KAAKgB,WAAL,CAAiBC,SAAjB,CAA2BjB,GAA3B,EAAgC,KAAKe,IAArC,CAAP;AACH;;AAPwB;AAS7B;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMG,iBAAiB,GAAG,IAAI3K,yDAAJ,CAAmB,mBAAnB,CAA1B;;AACA,MAAM4K,eAAN,CAAsB;AAClBF,EAAAA,SAAS,CAACjB,GAAD,EAAMe,IAAN,EAAY;AACjB,WAAOA,IAAI,CAACZ,MAAL,CAAYH,GAAZ,CAAP;AACH;;AAHiB;;AAKtBmB,eAAe,CAACP,IAAhB;AAAA,mBAA4GO,eAA5G;AAAA;;AACAA,eAAe,CAACN,KAAhB,kBAxC6FxK,gEAwC7F;AAAA,SAAgH8K,eAAhH;AAAA,WAAgHA,eAAhH;AAAA;;AACA;AAAA,qDAzC6F9K,+DAyC7F,CAA2F8K,eAA3F,EAAwH,CAAC;AAC7G3C,IAAAA,IAAI,EAAElI,qDAAUA;AAD6F,GAAD,CAAxH;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAI8K,aAAa,GAAG,CAApB;AACA;AACA;AACA;AACA;;AACA,IAAIC,eAAJ,EACA;AACA;;AACA,MAAMC,qBAAqB,GAAG,gDAA9B,EACA;AACA;;AACA,MAAMC,sBAAsB,GAAG,+CAA/B;AACA,MAAMC,6BAA6B,GAAG,6CAAtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMC,oBAAN,CAA2B;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMC,kBAAN,CAAyB;AACrBvK,EAAAA,WAAW,CAACwK,WAAD,EAAcC,QAAd,EAAwB;AAC/B,SAAKD,WAAL,GAAmBA,WAAnB;AACA,SAAKC,QAAL,GAAgBA,QAAhB;AACA;AACR;AACA;;AACQ,SAAKC,eAAL,GAAuBC,OAAO,CAACC,OAAR,EAAvB;AACH;AACD;AACJ;AACA;;;AACIC,EAAAA,YAAY,GAAG;AACX,WAAQ,qBAAoBZ,aAAa,EAAG,EAA5C;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;;AACIjB,EAAAA,MAAM,CAACH,GAAD,EAAM;AACR;AACA;AACA,QAAIA,GAAG,CAAClD,MAAJ,KAAe,OAAnB,EAA4B;AACxB,YAAM,IAAIf,KAAJ,CAAUwF,sBAAV,CAAN;AACH,KAFD,MAGK,IAAIvB,GAAG,CAAClC,YAAJ,KAAqB,MAAzB,EAAiC;AAClC,YAAM,IAAI/B,KAAJ,CAAUyF,6BAAV,CAAN;AACH,KARO,CASR;;;AACA,WAAO,IAAI5K,4CAAJ,CAAgBqL,QAAD,IAAc;AAChC;AACA;AACA;AACA,YAAMC,QAAQ,GAAG,KAAKF,YAAL,EAAjB;AACA,YAAMxE,GAAG,GAAGwC,GAAG,CAAC/B,aAAJ,CAAkBtD,OAAlB,CAA0B,sBAA1B,EAAmD,IAAGuH,QAAS,IAA/D,CAAZ,CALgC,CAMhC;;AACA,YAAMC,IAAI,GAAG,KAAKP,QAAL,CAAcQ,aAAd,CAA4B,QAA5B,CAAb;AACAD,MAAAA,IAAI,CAACE,GAAL,GAAW7E,GAAX,CARgC,CAShC;AACA;AACA;;AACA,UAAIG,IAAI,GAAG,IAAX,CAZgC,CAahC;;AACA,UAAI2E,QAAQ,GAAG,KAAf,CAdgC,CAehC;AACA;AACA;;AACA,WAAKX,WAAL,CAAiBO,QAAjB,IAA8BK,IAAD,IAAU;AACnC;AACA,eAAO,KAAKZ,WAAL,CAAiBO,QAAjB,CAAP,CAFmC,CAGnC;;AACAvE,QAAAA,IAAI,GAAG4E,IAAP;AACAD,QAAAA,QAAQ,GAAG,IAAX;AACH,OAND,CAlBgC,CAyBhC;AACA;AACA;;;AACA,YAAME,OAAO,GAAG,MAAM;AAClB;AACA,YAAIL,IAAI,CAACM,UAAT,EAAqB;AACjBN,UAAAA,IAAI,CAACM,UAAL,CAAgBC,WAAhB,CAA4BP,IAA5B;AACH,SAJiB,CAKlB;AACA;;;AACA,eAAO,KAAKR,WAAL,CAAiBO,QAAjB,CAAP;AACH,OARD,CA5BgC,CAqChC;AACA;AACA;AACA;;;AACA,YAAMS,MAAM,GAAItC,KAAD,IAAW;AACtB;AACA;AACA;AACA,aAAKwB,eAAL,CAAqBe,IAArB,CAA0B,MAAM;AAC5B;AACAJ,UAAAA,OAAO,GAFqB,CAG5B;;AACA,cAAI,CAACF,QAAL,EAAe;AACX;AACA;AACAL,YAAAA,QAAQ,CAACxC,KAAT,CAAe,IAAIF,iBAAJ,CAAsB;AACjC/B,cAAAA,GADiC;AAEjCwB,cAAAA,MAAM,EAAE,CAFyB;AAGjCC,cAAAA,UAAU,EAAE,aAHqB;AAIjCQ,cAAAA,KAAK,EAAE,IAAI1D,KAAJ,CAAUuF,qBAAV;AAJ0B,aAAtB,CAAf;AAMA;AACH,WAd2B,CAe5B;AACA;;;AACAW,UAAAA,QAAQ,CAAClB,IAAT,CAAc,IAAI1B,YAAJ,CAAiB;AAC3B1B,YAAAA,IAD2B;AAE3BqB,YAAAA,MAAM,EAAE;AAAI;AAFe;AAG3BC,YAAAA,UAAU,EAAE,IAHe;AAI3BzB,YAAAA;AAJ2B,WAAjB,CAAd,EAjB4B,CAuB5B;;AACAyE,UAAAA,QAAQ,CAACY,QAAT;AACH,SAzBD;AA0BH,OA9BD,CAzCgC,CAwEhC;AACA;AACA;;;AACA,YAAMC,OAAO,GAAIrD,KAAD,IAAW;AACvB+C,QAAAA,OAAO,GADgB,CAEvB;;AACAP,QAAAA,QAAQ,CAACxC,KAAT,CAAe,IAAIF,iBAAJ,CAAsB;AACjCE,UAAAA,KADiC;AAEjCT,UAAAA,MAAM,EAAE,CAFyB;AAGjCC,UAAAA,UAAU,EAAE,aAHqB;AAIjCzB,UAAAA;AAJiC,SAAtB,CAAf;AAMH,OATD,CA3EgC,CAqFhC;AACA;;;AACA2E,MAAAA,IAAI,CAACY,gBAAL,CAAsB,MAAtB,EAA8BJ,MAA9B;AACAR,MAAAA,IAAI,CAACY,gBAAL,CAAsB,OAAtB,EAA+BD,OAA/B;AACA,WAAKlB,QAAL,CAAcjE,IAAd,CAAmBqF,WAAnB,CAA+Bb,IAA/B,EAzFgC,CA0FhC;;AACAF,MAAAA,QAAQ,CAAClB,IAAT,CAAc;AAAEvC,QAAAA,IAAI,EAAEI,aAAa,CAACqE;AAAtB,OAAd,EA3FgC,CA4FhC;;AACA,aAAO,MAAM;AACT,YAAI,CAACX,QAAL,EAAe;AACX,eAAKY,eAAL,CAAqBf,IAArB;AACH,SAHQ,CAIT;;;AACAK,QAAAA,OAAO;AACV,OAND;AAOH,KApGM,CAAP;AAqGH;;AACDU,EAAAA,eAAe,CAACC,MAAD,EAAS;AACpB;AACA;AACA;AACA,QAAI,CAAC9B,eAAL,EAAsB;AAClBA,MAAAA,eAAe,GAAG,KAAKO,QAAL,CAAcwB,cAAd,CAA6BC,kBAA7B,EAAlB;AACH;;AACDhC,IAAAA,eAAe,CAACiC,SAAhB,CAA0BH,MAA1B;AACH;;AA7IoB;;AA+IzBzB,kBAAkB,CAACd,IAAnB;AAAA,mBAA+Gc,kBAA/G,EArO6FrL,sDAqO7F,CAAmJoL,oBAAnJ,GArO6FpL,sDAqO7F,CAAoLJ,qDAApL;AAAA;;AACAyL,kBAAkB,CAACb,KAAnB,kBAtO6FxK,gEAsO7F;AAAA,SAAmHqL,kBAAnH;AAAA,WAAmHA,kBAAnH;AAAA;;AACA;AAAA,qDAvO6FrL,+DAuO7F,CAA2FqL,kBAA3F,EAA2H,CAAC;AAChHlD,IAAAA,IAAI,EAAElI,qDAAUA;AADgG,GAAD,CAA3H,EAE4B,YAAY;AAChC,WAAO,CAAC;AAAEkI,MAAAA,IAAI,EAAEiD;AAAR,KAAD,EAAiC;AAAEjD,MAAAA,IAAI,EAAE5E,SAAR;AAAmB2J,MAAAA,UAAU,EAAE,CAAC;AACxD/E,QAAAA,IAAI,EAAEhI,iDADkD;AAExDgN,QAAAA,IAAI,EAAE,CAACvN,qDAAD;AAFkD,OAAD;AAA/B,KAAjC,CAAP;AAIH,GAPL;AAAA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMwN,gBAAN,CAAuB;AACnBtM,EAAAA,WAAW,CAACoJ,KAAD,EAAQ;AACf,SAAKA,KAAL,GAAaA,KAAb;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;AACIU,EAAAA,SAAS,CAACjB,GAAD,EAAMe,IAAN,EAAY;AACjB,QAAIf,GAAG,CAAClD,MAAJ,KAAe,OAAnB,EAA4B;AACxB,aAAO,KAAKyD,KAAL,CAAWJ,MAAX,CAAkBH,GAAlB,CAAP;AACH,KAHgB,CAIjB;;;AACA,WAAOe,IAAI,CAACZ,MAAL,CAAYH,GAAZ,CAAP;AACH;;AAjBkB;;AAmBvByD,gBAAgB,CAAC7C,IAAjB;AAAA,mBAA6G6C,gBAA7G,EA1Q6FpN,sDA0Q7F,CAA+IqL,kBAA/I;AAAA;;AACA+B,gBAAgB,CAAC5C,KAAjB,kBA3Q6FxK,gEA2Q7F;AAAA,SAAiHoN,gBAAjH;AAAA,WAAiHA,gBAAjH;AAAA;;AACA;AAAA,qDA5Q6FpN,+DA4Q7F,CAA2FoN,gBAA3F,EAAyH,CAAC;AAC9GjF,IAAAA,IAAI,EAAElI,qDAAUA;AAD8F,GAAD,CAAzH,EAE4B,YAAY;AAAE,WAAO,CAAC;AAAEkI,MAAAA,IAAI,EAAEkD;AAAR,KAAD,CAAP;AAAwC,GAFlF;AAAA;;AAIA,MAAMgC,WAAW,GAAG,cAApB;AACA;AACA;AACA;AACA;;AACA,SAASC,cAAT,CAAwBC,GAAxB,EAA6B;AACzB,MAAI,iBAAiBA,GAAjB,IAAwBA,GAAG,CAACC,WAAhC,EAA6C;AACzC,WAAOD,GAAG,CAACC,WAAX;AACH;;AACD,MAAI,mBAAmBC,IAAnB,CAAwBF,GAAG,CAACG,qBAAJ,EAAxB,CAAJ,EAA0D;AACtD,WAAOH,GAAG,CAACI,iBAAJ,CAAsB,eAAtB,CAAP;AACH;;AACD,SAAO,IAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMC,cAAN,CAAqB;AACjB9M,EAAAA,WAAW,CAAC+M,UAAD,EAAa;AACpB,SAAKA,UAAL,GAAkBA,UAAlB;AACH;AACD;AACJ;AACA;AACA;AACA;;;AACI/D,EAAAA,MAAM,CAACH,GAAD,EAAM;AACR;AACA;AACA,QAAIA,GAAG,CAAClD,MAAJ,KAAe,OAAnB,EAA4B;AACxB,YAAM,IAAIf,KAAJ,CAAW,+EAAX,CAAN;AACH,KALO,CAMR;;;AACA,WAAO,IAAInF,4CAAJ,CAAgBqL,QAAD,IAAc;AAChC;AACA,YAAM2B,GAAG,GAAG,KAAKM,UAAL,CAAgBC,KAAhB,EAAZ;AACAP,MAAAA,GAAG,CAACQ,IAAJ,CAASpE,GAAG,CAAClD,MAAb,EAAqBkD,GAAG,CAAC/B,aAAzB;;AACA,UAAI,CAAC,CAAC+B,GAAG,CAACnC,eAAV,EAA2B;AACvB+F,QAAAA,GAAG,CAAC/F,eAAJ,GAAsB,IAAtB;AACH,OAN+B,CAOhC;;;AACAmC,MAAAA,GAAG,CAAC5I,OAAJ,CAAYM,OAAZ,CAAoB,CAACI,IAAD,EAAOa,MAAP,KAAkBiL,GAAG,CAACS,gBAAJ,CAAqBvM,IAArB,EAA2Ba,MAAM,CAAC2D,IAAP,CAAY,GAAZ,CAA3B,CAAtC,EARgC,CAShC;;AACA,UAAI,CAAC0D,GAAG,CAAC5I,OAAJ,CAAYiB,GAAZ,CAAgB,QAAhB,CAAL,EAAgC;AAC5BuL,QAAAA,GAAG,CAACS,gBAAJ,CAAqB,QAArB,EAA+B,mCAA/B;AACH,OAZ+B,CAahC;;;AACA,UAAI,CAACrE,GAAG,CAAC5I,OAAJ,CAAYiB,GAAZ,CAAgB,cAAhB,CAAL,EAAsC;AAClC,cAAMiM,YAAY,GAAGtE,GAAG,CAACzB,uBAAJ,EAArB,CADkC,CAElC;;AACA,YAAI+F,YAAY,KAAK,IAArB,EAA2B;AACvBV,UAAAA,GAAG,CAACS,gBAAJ,CAAqB,cAArB,EAAqCC,YAArC;AACH;AACJ,OApB+B,CAqBhC;;;AACA,UAAItE,GAAG,CAAClC,YAAR,EAAsB;AAClB,cAAMA,YAAY,GAAGkC,GAAG,CAAClC,YAAJ,CAAiB7F,WAAjB,EAArB,CADkB,CAElB;AACA;AACA;AACA;AACA;;AACA2L,QAAAA,GAAG,CAAC9F,YAAJ,GAAqBA,YAAY,KAAK,MAAlB,GAA4BA,YAA5B,GAA2C,MAA/D;AACH,OA9B+B,CA+BhC;;;AACA,YAAMyG,OAAO,GAAGvE,GAAG,CAAC5B,aAAJ,EAAhB,CAhCgC,CAiChC;AACA;AACA;AACA;AACA;AACA;;AACA,UAAIoG,cAAc,GAAG,IAArB,CAvCgC,CAwChC;AACA;;AACA,YAAMC,cAAc,GAAG,MAAM;AACzB,YAAID,cAAc,KAAK,IAAvB,EAA6B;AACzB,iBAAOA,cAAP;AACH;;AACD,cAAMvF,UAAU,GAAG2E,GAAG,CAAC3E,UAAJ,IAAkB,IAArC,CAJyB,CAKzB;;AACA,cAAM7H,OAAO,GAAG,IAAIF,WAAJ,CAAgB0M,GAAG,CAACG,qBAAJ,EAAhB,CAAhB,CANyB,CAOzB;AACA;;AACA,cAAMvG,GAAG,GAAGmG,cAAc,CAACC,GAAD,CAAd,IAAuB5D,GAAG,CAACxC,GAAvC,CATyB,CAUzB;;AACAgH,QAAAA,cAAc,GAAG,IAAIrF,kBAAJ,CAAuB;AAAE/H,UAAAA,OAAF;AAAW4H,UAAAA,MAAM,EAAE4E,GAAG,CAAC5E,MAAvB;AAA+BC,UAAAA,UAA/B;AAA2CzB,UAAAA;AAA3C,SAAvB,CAAjB;AACA,eAAOgH,cAAP;AACH,OAbD,CA1CgC,CAwDhC;AACA;AACA;;;AACA,YAAM7B,MAAM,GAAG,MAAM;AACjB;AACA,YAAI;AAAEvL,UAAAA,OAAF;AAAW4H,UAAAA,MAAX;AAAmBC,UAAAA,UAAnB;AAA+BzB,UAAAA;AAA/B,YAAuCiH,cAAc,EAAzD,CAFiB,CAGjB;;AACA,YAAI9G,IAAI,GAAG,IAAX;;AACA,YAAIqB,MAAM,KAAK;AAAI;AAAnB,UAAoC;AAChC;AACArB,UAAAA,IAAI,GAAI,OAAOiG,GAAG,CAACc,QAAX,KAAwB,WAAzB,GAAwCd,GAAG,CAACe,YAA5C,GAA2Df,GAAG,CAACc,QAAtE;AACH,SARgB,CASjB;;;AACA,YAAI1F,MAAM,KAAK,CAAf,EAAkB;AACdA,UAAAA,MAAM,GAAG,CAAC,CAACrB,IAAF,GAAS;AAAI;AAAb,YAAwB,CAAjC;AACH,SAZgB,CAajB;AACA;AACA;AACA;;;AACA,YAAIuB,EAAE,GAAGF,MAAM,IAAI,GAAV,IAAiBA,MAAM,GAAG,GAAnC,CAjBiB,CAkBjB;AACA;;AACA,YAAIgB,GAAG,CAAClC,YAAJ,KAAqB,MAArB,IAA+B,OAAOH,IAAP,KAAgB,QAAnD,EAA6D;AACzD;AACA,gBAAMiH,YAAY,GAAGjH,IAArB;AACAA,UAAAA,IAAI,GAAGA,IAAI,CAAChD,OAAL,CAAa+I,WAAb,EAA0B,EAA1B,CAAP;;AACA,cAAI;AACA;AACA/F,YAAAA,IAAI,GAAGA,IAAI,KAAK,EAAT,GAAcU,IAAI,CAACwG,KAAL,CAAWlH,IAAX,CAAd,GAAiC,IAAxC;AACH,WAHD,CAIA,OAAO8B,KAAP,EAAc;AACV;AACA;AACA;AACA9B,YAAAA,IAAI,GAAGiH,YAAP,CAJU,CAKV;AACA;;AACA,gBAAI1F,EAAJ,EAAQ;AACJ;AACAA,cAAAA,EAAE,GAAG,KAAL,CAFI,CAGJ;;AACAvB,cAAAA,IAAI,GAAG;AAAE8B,gBAAAA,KAAF;AAASqF,gBAAAA,IAAI,EAAEnH;AAAf,eAAP;AACH;AACJ;AACJ;;AACD,YAAIuB,EAAJ,EAAQ;AACJ;AACA+C,UAAAA,QAAQ,CAAClB,IAAT,CAAc,IAAI1B,YAAJ,CAAiB;AAC3B1B,YAAAA,IAD2B;AAE3BvG,YAAAA,OAF2B;AAG3B4H,YAAAA,MAH2B;AAI3BC,YAAAA,UAJ2B;AAK3BzB,YAAAA,GAAG,EAAEA,GAAG,IAAI5D;AALe,WAAjB,CAAd,EAFI,CASJ;AACA;;AACAqI,UAAAA,QAAQ,CAACY,QAAT;AACH,SAZD,MAaK;AACD;AACAZ,UAAAA,QAAQ,CAACxC,KAAT,CAAe,IAAIF,iBAAJ,CAAsB;AACjC;AACAE,YAAAA,KAAK,EAAE9B,IAF0B;AAGjCvG,YAAAA,OAHiC;AAIjC4H,YAAAA,MAJiC;AAKjCC,YAAAA,UALiC;AAMjCzB,YAAAA,GAAG,EAAEA,GAAG,IAAI5D;AANqB,WAAtB,CAAf;AAQH;AACJ,OAnED,CA3DgC,CA+HhC;AACA;AACA;;;AACA,YAAMkJ,OAAO,GAAIrD,KAAD,IAAW;AACvB,cAAM;AAAEjC,UAAAA;AAAF,YAAUiH,cAAc,EAA9B;AACA,cAAMxI,GAAG,GAAG,IAAIsD,iBAAJ,CAAsB;AAC9BE,UAAAA,KAD8B;AAE9BT,UAAAA,MAAM,EAAE4E,GAAG,CAAC5E,MAAJ,IAAc,CAFQ;AAG9BC,UAAAA,UAAU,EAAE2E,GAAG,CAAC3E,UAAJ,IAAkB,eAHA;AAI9BzB,UAAAA,GAAG,EAAEA,GAAG,IAAI5D;AAJkB,SAAtB,CAAZ;AAMAqI,QAAAA,QAAQ,CAACxC,KAAT,CAAexD,GAAf;AACH,OATD,CAlIgC,CA4IhC;AACA;AACA;AACA;;;AACA,UAAI8I,WAAW,GAAG,KAAlB,CAhJgC,CAiJhC;AACA;;AACA,YAAMC,cAAc,GAAI3E,KAAD,IAAW;AAC9B;AACA,YAAI,CAAC0E,WAAL,EAAkB;AACd9C,UAAAA,QAAQ,CAAClB,IAAT,CAAc0D,cAAc,EAA5B;AACAM,UAAAA,WAAW,GAAG,IAAd;AACH,SAL6B,CAM9B;AACA;;;AACA,YAAIE,aAAa,GAAG;AAChBzG,UAAAA,IAAI,EAAEI,aAAa,CAACsG,gBADJ;AAEhBC,UAAAA,MAAM,EAAE9E,KAAK,CAAC8E;AAFE,SAApB,CAR8B,CAY9B;;AACA,YAAI9E,KAAK,CAAC+E,gBAAV,EAA4B;AACxBH,UAAAA,aAAa,CAACI,KAAd,GAAsBhF,KAAK,CAACgF,KAA5B;AACH,SAf6B,CAgB9B;AACA;AACA;;;AACA,YAAIrF,GAAG,CAAClC,YAAJ,KAAqB,MAArB,IAA+B,CAAC,CAAC8F,GAAG,CAACe,YAAzC,EAAuD;AACnDM,UAAAA,aAAa,CAACK,WAAd,GAA4B1B,GAAG,CAACe,YAAhC;AACH,SArB6B,CAsB9B;;;AACA1C,QAAAA,QAAQ,CAAClB,IAAT,CAAckE,aAAd;AACH,OAxBD,CAnJgC,CA4KhC;AACA;;;AACA,YAAMM,YAAY,GAAIlF,KAAD,IAAW;AAC5B;AACA;AACA,YAAImF,QAAQ,GAAG;AACXhH,UAAAA,IAAI,EAAEI,aAAa,CAAC6G,cADT;AAEXN,UAAAA,MAAM,EAAE9E,KAAK,CAAC8E;AAFH,SAAf,CAH4B,CAO5B;AACA;;AACA,YAAI9E,KAAK,CAAC+E,gBAAV,EAA4B;AACxBI,UAAAA,QAAQ,CAACH,KAAT,GAAiBhF,KAAK,CAACgF,KAAvB;AACH,SAX2B,CAY5B;;;AACApD,QAAAA,QAAQ,CAAClB,IAAT,CAAcyE,QAAd;AACH,OAdD,CA9KgC,CA6LhC;;;AACA5B,MAAAA,GAAG,CAACb,gBAAJ,CAAqB,MAArB,EAA6BJ,MAA7B;AACAiB,MAAAA,GAAG,CAACb,gBAAJ,CAAqB,OAArB,EAA8BD,OAA9B;AACAc,MAAAA,GAAG,CAACb,gBAAJ,CAAqB,SAArB,EAAgCD,OAAhC;AACAc,MAAAA,GAAG,CAACb,gBAAJ,CAAqB,OAArB,EAA8BD,OAA9B,EAjMgC,CAkMhC;;AACA,UAAI9C,GAAG,CAACpC,cAAR,EAAwB;AACpB;AACAgG,QAAAA,GAAG,CAACb,gBAAJ,CAAqB,UAArB,EAAiCiC,cAAjC,EAFoB,CAGpB;;AACA,YAAIT,OAAO,KAAK,IAAZ,IAAoBX,GAAG,CAAC8B,MAA5B,EAAoC;AAChC9B,UAAAA,GAAG,CAAC8B,MAAJ,CAAW3C,gBAAX,CAA4B,UAA5B,EAAwCwC,YAAxC;AACH;AACJ,OA1M+B,CA2MhC;;;AACA3B,MAAAA,GAAG,CAAC+B,IAAJ,CAASpB,OAAT;AACAtC,MAAAA,QAAQ,CAAClB,IAAT,CAAc;AAAEvC,QAAAA,IAAI,EAAEI,aAAa,CAACqE;AAAtB,OAAd,EA7MgC,CA8MhC;AACA;;AACA,aAAO,MAAM;AACT;AACAW,QAAAA,GAAG,CAACgC,mBAAJ,CAAwB,OAAxB,EAAiC9C,OAAjC;AACAc,QAAAA,GAAG,CAACgC,mBAAJ,CAAwB,OAAxB,EAAiC9C,OAAjC;AACAc,QAAAA,GAAG,CAACgC,mBAAJ,CAAwB,MAAxB,EAAgCjD,MAAhC;AACAiB,QAAAA,GAAG,CAACgC,mBAAJ,CAAwB,SAAxB,EAAmC9C,OAAnC;;AACA,YAAI9C,GAAG,CAACpC,cAAR,EAAwB;AACpBgG,UAAAA,GAAG,CAACgC,mBAAJ,CAAwB,UAAxB,EAAoCZ,cAApC;;AACA,cAAIT,OAAO,KAAK,IAAZ,IAAoBX,GAAG,CAAC8B,MAA5B,EAAoC;AAChC9B,YAAAA,GAAG,CAAC8B,MAAJ,CAAWE,mBAAX,CAA+B,UAA/B,EAA2CL,YAA3C;AACH;AACJ,SAXQ,CAYT;;;AACA,YAAI3B,GAAG,CAACiC,UAAJ,KAAmBjC,GAAG,CAACkC,IAA3B,EAAiC;AAC7BlC,UAAAA,GAAG,CAACmC,KAAJ;AACH;AACJ,OAhBD;AAiBH,KAjOM,CAAP;AAkOH;;AAlPgB;;AAoPrB9B,cAAc,CAACrD,IAAf;AAAA,mBAA2GqD,cAA3G,EAzhB6F5N,sDAyhB7F,CAA2IL,uDAA3I;AAAA;;AACAiO,cAAc,CAACpD,KAAf,kBA1hB6FxK,gEA0hB7F;AAAA,SAA+G4N,cAA/G;AAAA,WAA+GA,cAA/G;AAAA;;AACA;AAAA,qDA3hB6F5N,+DA2hB7F,CAA2F4N,cAA3F,EAAuH,CAAC;AAC5GzF,IAAAA,IAAI,EAAElI,qDAAUA;AAD4F,GAAD,CAAvH,EAE4B,YAAY;AAAE,WAAO,CAAC;AAAEkI,MAAAA,IAAI,EAAExI,uDAAaG;AAArB,KAAD,CAAP;AAAmC,GAF7E;AAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAM6P,gBAAgB,GAAG,IAAIzP,yDAAJ,CAAmB,kBAAnB,CAAzB;AACA,MAAM0P,gBAAgB,GAAG,IAAI1P,yDAAJ,CAAmB,kBAAnB,CAAzB;AACA;AACA;AACA;AACA;AACA;;AACA,MAAM2P,sBAAN,CAA6B;AAE7B;AACA;AACA;;;AACA,MAAMC,uBAAN,CAA8B;AAC1BhP,EAAAA,WAAW,CAACiP,GAAD,EAAMC,QAAN,EAAgBC,UAAhB,EAA4B;AACnC,SAAKF,GAAL,GAAWA,GAAX;AACA,SAAKC,QAAL,GAAgBA,QAAhB;AACA,SAAKC,UAAL,GAAkBA,UAAlB;AACA,SAAKC,gBAAL,GAAwB,EAAxB;AACA,SAAKC,SAAL,GAAiB,IAAjB;AACA;AACR;AACA;;AACQ,SAAKC,UAAL,GAAkB,CAAlB;AACH;;AACDC,EAAAA,QAAQ,GAAG;AACP,QAAI,KAAKL,QAAL,KAAkB,QAAtB,EAAgC;AAC5B,aAAO,IAAP;AACH;;AACD,UAAMM,YAAY,GAAG,KAAKP,GAAL,CAASQ,MAAT,IAAmB,EAAxC;;AACA,QAAID,YAAY,KAAK,KAAKJ,gBAA1B,EAA4C;AACxC,WAAKE,UAAL;AACA,WAAKD,SAAL,GAAiBtQ,qEAAiB,CAACyQ,YAAD,EAAe,KAAKL,UAApB,CAAlC;AACA,WAAKC,gBAAL,GAAwBI,YAAxB;AACH;;AACD,WAAO,KAAKH,SAAZ;AACH;;AAvByB;;AAyB9BL,uBAAuB,CAACvF,IAAxB;AAAA,mBAAoHuF,uBAApH,EA3kB6F9P,sDA2kB7F,CAA6JJ,qDAA7J,GA3kB6FI,sDA2kB7F,CAAkLI,sDAAlL,GA3kB6FJ,sDA2kB7F,CAA0M2P,gBAA1M;AAAA;;AACAG,uBAAuB,CAACtF,KAAxB,kBA5kB6FxK,gEA4kB7F;AAAA,SAAwH8P,uBAAxH;AAAA,WAAwHA,uBAAxH;AAAA;;AACA;AAAA,qDA7kB6F9P,+DA6kB7F,CAA2F8P,uBAA3F,EAAgI,CAAC;AACrH3H,IAAAA,IAAI,EAAElI,qDAAUA;AADqG,GAAD,CAAhI,EAE4B,YAAY;AAChC,WAAO,CAAC;AAAEkI,MAAAA,IAAI,EAAE5E,SAAR;AAAmB2J,MAAAA,UAAU,EAAE,CAAC;AACxB/E,QAAAA,IAAI,EAAEhI,iDADkB;AAExBgN,QAAAA,IAAI,EAAE,CAACvN,qDAAD;AAFkB,OAAD;AAA/B,KAAD,EAGW;AAAEuI,MAAAA,IAAI,EAAE5E,SAAR;AAAmB2J,MAAAA,UAAU,EAAE,CAAC;AAClC/E,QAAAA,IAAI,EAAEhI,iDAD4B;AAElCgN,QAAAA,IAAI,EAAE,CAAC/M,sDAAD;AAF4B,OAAD;AAA/B,KAHX,EAMW;AAAE+H,MAAAA,IAAI,EAAE5E,SAAR;AAAmB2J,MAAAA,UAAU,EAAE,CAAC;AAClC/E,QAAAA,IAAI,EAAEhI,iDAD4B;AAElCgN,QAAAA,IAAI,EAAE,CAACwC,gBAAD;AAF4B,OAAD;AAA/B,KANX,CAAP;AAUH,GAbL;AAAA;AAcA;AACA;AACA;;;AACA,MAAMa,mBAAN,CAA0B;AACtB1P,EAAAA,WAAW,CAAC2P,YAAD,EAAeC,UAAf,EAA2B;AAClC,SAAKD,YAAL,GAAoBA,YAApB;AACA,SAAKC,UAAL,GAAkBA,UAAlB;AACH;;AACD9F,EAAAA,SAAS,CAACjB,GAAD,EAAMe,IAAN,EAAY;AACjB,UAAMiG,KAAK,GAAGhH,GAAG,CAACxC,GAAJ,CAAQvF,WAAR,EAAd,CADiB,CAEjB;AACA;AACA;AACA;;AACA,QAAI+H,GAAG,CAAClD,MAAJ,KAAe,KAAf,IAAwBkD,GAAG,CAAClD,MAAJ,KAAe,MAAvC,IAAiDkK,KAAK,CAACC,UAAN,CAAiB,SAAjB,CAAjD,IACAD,KAAK,CAACC,UAAN,CAAiB,UAAjB,CADJ,EACkC;AAC9B,aAAOlG,IAAI,CAACZ,MAAL,CAAYH,GAAZ,CAAP;AACH;;AACD,UAAMpD,KAAK,GAAG,KAAKkK,YAAL,CAAkBJ,QAAlB,EAAd,CAViB,CAWjB;;AACA,QAAI9J,KAAK,KAAK,IAAV,IAAkB,CAACoD,GAAG,CAAC5I,OAAJ,CAAYiB,GAAZ,CAAgB,KAAK0O,UAArB,CAAvB,EAAyD;AACrD/G,MAAAA,GAAG,GAAGA,GAAG,CAAC9G,KAAJ,CAAU;AAAE9B,QAAAA,OAAO,EAAE4I,GAAG,CAAC5I,OAAJ,CAAYoB,GAAZ,CAAgB,KAAKuO,UAArB,EAAiCnK,KAAjC;AAAX,OAAV,CAAN;AACH;;AACD,WAAOmE,IAAI,CAACZ,MAAL,CAAYH,GAAZ,CAAP;AACH;;AArBqB;;AAuB1B6G,mBAAmB,CAACjG,IAApB;AAAA,mBAAgHiG,mBAAhH,EArnB6FxQ,sDAqnB7F,CAAqJ6P,sBAArJ,GArnB6F7P,sDAqnB7F,CAAwL4P,gBAAxL;AAAA;;AACAY,mBAAmB,CAAChG,KAApB,kBAtnB6FxK,gEAsnB7F;AAAA,SAAoHwQ,mBAApH;AAAA,WAAoHA,mBAApH;AAAA;;AACA;AAAA,qDAvnB6FxQ,+DAunB7F,CAA2FwQ,mBAA3F,EAA4H,CAAC;AACjHrI,IAAAA,IAAI,EAAElI,qDAAUA;AADiG,GAAD,CAA5H,EAE4B,YAAY;AAChC,WAAO,CAAC;AAAEkI,MAAAA,IAAI,EAAE0H;AAAR,KAAD,EAAmC;AAAE1H,MAAAA,IAAI,EAAE5E,SAAR;AAAmB2J,MAAAA,UAAU,EAAE,CAAC;AAC1D/E,QAAAA,IAAI,EAAEhI,iDADoD;AAE1DgN,QAAAA,IAAI,EAAE,CAACyC,gBAAD;AAFoD,OAAD;AAA/B,KAAnC,CAAP;AAIH,GAPL;AAAA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMiB,uBAAN,CAA8B;AAC1B/P,EAAAA,WAAW,CAACgQ,OAAD,EAAUC,QAAV,EAAoB;AAC3B,SAAKD,OAAL,GAAeA,OAAf;AACA,SAAKC,QAAL,GAAgBA,QAAhB;AACA,SAAKC,KAAL,GAAa,IAAb;AACH;;AACDlH,EAAAA,MAAM,CAACH,GAAD,EAAM;AACR,QAAI,KAAKqH,KAAL,KAAe,IAAnB,EAAyB;AACrB,YAAMC,YAAY,GAAG,KAAKF,QAAL,CAAc9O,GAAd,CAAkB4I,iBAAlB,EAAqC,EAArC,CAArB;AACA,WAAKmG,KAAL,GAAaC,YAAY,CAACC,WAAb,CAAyB,CAACxG,IAAD,EAAOC,WAAP,KAAuB,IAAIF,sBAAJ,CAA2BC,IAA3B,EAAiCC,WAAjC,CAAhD,EAA+F,KAAKmG,OAApG,CAAb;AACH;;AACD,WAAO,KAAKE,KAAL,CAAWlH,MAAX,CAAkBH,GAAlB,CAAP;AACH;;AAZyB;;AAc9BkH,uBAAuB,CAACtG,IAAxB;AAAA,mBAAoHsG,uBAApH,EA9pB6F7Q,sDA8pB7F,CAA6JY,WAA7J,GA9pB6FZ,sDA8pB7F,CAAqLA,mDAArL;AAAA;;AACA6Q,uBAAuB,CAACrG,KAAxB,kBA/pB6FxK,gEA+pB7F;AAAA,SAAwH6Q,uBAAxH;AAAA,WAAwHA,uBAAxH;AAAA;;AACA;AAAA,qDAhqB6F7Q,+DAgqB7F,CAA2F6Q,uBAA3F,EAAgI,CAAC;AACrH1I,IAAAA,IAAI,EAAElI,qDAAUA;AADqG,GAAD,CAAhI,EAE4B,YAAY;AAAE,WAAO,CAAC;AAAEkI,MAAAA,IAAI,EAAEvH;AAAR,KAAD,EAAwB;AAAEuH,MAAAA,IAAI,EAAEnI,mDAAWmR;AAAnB,KAAxB,CAAP;AAAwD,GAFlG;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASC,mBAAT,CAA6BN,OAA7B,EAAsCG,YAAY,GAAG,EAArD,EAAyD;AACrD,MAAI,CAACA,YAAL,EAAmB;AACf,WAAOH,OAAP;AACH;;AACD,SAAOG,YAAY,CAACC,WAAb,CAAyB,CAACxG,IAAD,EAAOC,WAAP,KAAuB,IAAIF,sBAAJ,CAA2BC,IAA3B,EAAiCC,WAAjC,CAAhD,EAA+FmG,OAA/F,CAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASO,oBAAT,GAAgC;AAC5B,MAAI,OAAOC,MAAP,KAAkB,QAAtB,EAAgC;AAC5B,WAAOA,MAAP;AACH;;AACD,SAAO,EAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMC,oBAAN,CAA2B;AACvB;AACJ;AACA;AACkB,SAAPC,OAAO,GAAG;AACb,WAAO;AACHC,MAAAA,QAAQ,EAAEF,oBADP;AAEHG,MAAAA,SAAS,EAAE,CACP;AAAEC,QAAAA,OAAO,EAAEnB,mBAAX;AAAgCoB,QAAAA,QAAQ,EAAE9G;AAA1C,OADO;AAFR,KAAP;AAMH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;AACsB,SAAX+G,WAAW,CAACzM,OAAO,GAAG,EAAX,EAAe;AAC7B,WAAO;AACHqM,MAAAA,QAAQ,EAAEF,oBADP;AAEHG,MAAAA,SAAS,EAAE,CACPtM,OAAO,CAAC6K,UAAR,GAAqB;AAAE0B,QAAAA,OAAO,EAAEhC,gBAAX;AAA6BmC,QAAAA,QAAQ,EAAE1M,OAAO,CAAC6K;AAA/C,OAArB,GAAmF,EAD5E,EAEP7K,OAAO,CAACsL,UAAR,GAAqB;AAAEiB,QAAAA,OAAO,EAAE/B,gBAAX;AAA6BkC,QAAAA,QAAQ,EAAE1M,OAAO,CAACsL;AAA/C,OAArB,GAAmF,EAF5E;AAFR,KAAP;AAOH;;AA5BsB;;AA8B3Ba,oBAAoB,CAAChH,IAArB;AAAA,mBAAiHgH,oBAAjH;AAAA;;AACAA,oBAAoB,CAACQ,IAArB,kBA1uB6F/R,8DA0uB7F;AAAA,QAAkHuR;AAAlH;AACAA,oBAAoB,CAACS,IAArB,kBA3uB6FhS,8DA2uB7F;AAAA,aAAmJ,CAC3IwQ,mBAD2I,EAE3I;AAAEmB,IAAAA,OAAO,EAAE9G,iBAAX;AAA8BoH,IAAAA,WAAW,EAAEzB,mBAA3C;AAAgE0B,IAAAA,KAAK,EAAE;AAAvE,GAF2I,EAG3I;AAAEP,IAAAA,OAAO,EAAE9B,sBAAX;AAAmC+B,IAAAA,QAAQ,EAAE9B;AAA7C,GAH2I,EAI3I;AAAE6B,IAAAA,OAAO,EAAEhC,gBAAX;AAA6BmC,IAAAA,QAAQ,EAAE;AAAvC,GAJ2I,EAK3I;AAAEH,IAAAA,OAAO,EAAE/B,gBAAX;AAA6BkC,IAAAA,QAAQ,EAAE;AAAvC,GAL2I;AAAnJ;;AAOA;AAAA,qDAlvB6F9R,+DAkvB7F,CAA2FuR,oBAA3F,EAA6H,CAAC;AAClHpJ,IAAAA,IAAI,EAAE9H,mDAD4G;AAElH8M,IAAAA,IAAI,EAAE,CAAC;AACCuE,MAAAA,SAAS,EAAE,CACPlB,mBADO,EAEP;AAAEmB,QAAAA,OAAO,EAAE9G,iBAAX;AAA8BoH,QAAAA,WAAW,EAAEzB,mBAA3C;AAAgE0B,QAAAA,KAAK,EAAE;AAAvE,OAFO,EAGP;AAAEP,QAAAA,OAAO,EAAE9B,sBAAX;AAAmC+B,QAAAA,QAAQ,EAAE9B;AAA7C,OAHO,EAIP;AAAE6B,QAAAA,OAAO,EAAEhC,gBAAX;AAA6BmC,QAAAA,QAAQ,EAAE;AAAvC,OAJO,EAKP;AAAEH,QAAAA,OAAO,EAAE/B,gBAAX;AAA6BkC,QAAAA,QAAQ,EAAE;AAAvC,OALO;AADZ,KAAD;AAF4G,GAAD,CAA7H;AAAA;AAYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMK,gBAAN,CAAuB;;AAEvBA,gBAAgB,CAAC5H,IAAjB;AAAA,mBAA6G4H,gBAA7G;AAAA;;AACAA,gBAAgB,CAACJ,IAAjB,kBA1wB6F/R,8DA0wB7F;AAAA,QAA8GmS;AAA9G;AACAA,gBAAgB,CAACH,IAAjB,kBA3wB6FhS,8DA2wB7F;AAAA,aAA2I,CACnIuJ,UADmI,EAEnI;AAAEoI,IAAAA,OAAO,EAAEhR,WAAX;AAAwBiR,IAAAA,QAAQ,EAAEf;AAAlC,GAFmI,EAGnIjD,cAHmI,EAInI;AAAE+D,IAAAA,OAAO,EAAE/Q,WAAX;AAAwBqR,IAAAA,WAAW,EAAErE;AAArC,GAJmI,CAA3I;AAAA,YAKiB,CACL2D,oBAAoB,CAACM,WAArB,CAAiC;AAC7B5B,IAAAA,UAAU,EAAE,YADiB;AAE7BS,IAAAA,UAAU,EAAE;AAFiB,GAAjC,CADK,CALjB;AAAA;;AAWA;AAAA,qDAtxB6F1Q,+DAsxB7F,CAA2FmS,gBAA3F,EAAyH,CAAC;AAC9GhK,IAAAA,IAAI,EAAE9H,mDADwG;AAE9G8M,IAAAA,IAAI,EAAE,CAAC;AACC;AACpB;AACA;AACoBiF,MAAAA,OAAO,EAAE,CACLb,oBAAoB,CAACM,WAArB,CAAiC;AAC7B5B,QAAAA,UAAU,EAAE,YADiB;AAE7BS,QAAAA,UAAU,EAAE;AAFiB,OAAjC,CADK,CAJV;;AAUC;AACpB;AACA;AACA;AACoBgB,MAAAA,SAAS,EAAE,CACPnI,UADO,EAEP;AAAEoI,QAAAA,OAAO,EAAEhR,WAAX;AAAwBiR,QAAAA,QAAQ,EAAEf;AAAlC,OAFO,EAGPjD,cAHO,EAIP;AAAE+D,QAAAA,OAAO,EAAE/Q,WAAX;AAAwBqR,QAAAA,WAAW,EAAErE;AAArC,OAJO;AAdZ,KAAD;AAFwG,GAAD,CAAzH;AAAA;AAwBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMyE,qBAAN,CAA4B;;AAE5BA,qBAAqB,CAAC9H,IAAtB;AAAA,mBAAkH8H,qBAAlH;AAAA;;AACAA,qBAAqB,CAACN,IAAtB,kBA5zB6F/R,8DA4zB7F;AAAA,QAAmHqS;AAAnH;AACAA,qBAAqB,CAACL,IAAtB,kBA7zB6FhS,8DA6zB7F;AAAA,aAAqJ,CAC7IqL,kBAD6I,EAE7I;AAAEsG,IAAAA,OAAO,EAAEvG,oBAAX;AAAiCkH,IAAAA,UAAU,EAAEjB;AAA7C,GAF6I,EAG7I;AAAEM,IAAAA,OAAO,EAAE9G,iBAAX;AAA8B+G,IAAAA,QAAQ,EAAExE,gBAAxC;AAA0D8E,IAAAA,KAAK,EAAE;AAAjE,GAH6I;AAArJ;;AAKA;AAAA,qDAl0B6FlS,+DAk0B7F,CAA2FqS,qBAA3F,EAA8H,CAAC;AACnHlK,IAAAA,IAAI,EAAE9H,mDAD6G;AAEnH8M,IAAAA,IAAI,EAAE,CAAC;AACCuE,MAAAA,SAAS,EAAE,CACPrG,kBADO,EAEP;AAAEsG,QAAAA,OAAO,EAAEvG,oBAAX;AAAiCkH,QAAAA,UAAU,EAAEjB;AAA7C,OAFO,EAGP;AAAEM,QAAAA,OAAO,EAAE9G,iBAAX;AAA8B+G,QAAAA,QAAQ,EAAExE,gBAAxC;AAA0D8E,QAAAA,KAAK,EAAE;AAAjE,OAHO;AADZ,KAAD;AAF6G,GAAD,CAA9H;AAAA;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMpS,UAAU,GAAGC,uDAAnB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjuEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;;;AACA,IAAIgU,MAAJ;AACA;AACA;AACA;AACA;;AACA,SAASC,SAAT,GAAqB;AACjB,MAAID,MAAM,KAAKxQ,SAAf,EAA0B;AACtBwQ,IAAAA,MAAM,GAAG,IAAT;;AACA,QAAI,OAAOzC,MAAP,KAAkB,WAAtB,EAAmC;AAC/B,YAAM2C,QAAQ,GAAG3C,MAAjB;;AACA,UAAI2C,QAAQ,CAACC,YAAT,KAA0B3Q,SAA9B,EAAyC;AACrCwQ,QAAAA,MAAM,GAAGE,QAAQ,CAACC,YAAT,CAAsBC,YAAtB,CAAmC,oBAAnC,EAAyD;AAC9DC,UAAAA,UAAU,EAAGrP,CAAD,IAAOA;AAD2C,SAAzD,CAAT;AAGH;AACJ;AACJ;;AACD,SAAOgP,MAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASM,qBAAT,CAA+BC,IAA/B,EAAqC;AACjC,MAAIrP,EAAJ;;AACA,SAAO,CAAC,CAACA,EAAE,GAAG+O,SAAS,EAAf,MAAuB,IAAvB,IAA+B/O,EAAE,KAAK,KAAK,CAA3C,GAA+C,KAAK,CAApD,GAAwDA,EAAE,CAACmP,UAAH,CAAcE,IAAd,CAAzD,KAAiFA,IAAxF;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASC,2BAAT,CAAqCC,QAArC,EAA+C;AAC3C,SAAO9O,KAAK,CAAE,sCAAqC8O,QAAS,GAAhD,CAAZ;AACH;AACD;AACA;AACA;AACA;AACA;;;AACA,SAASC,6BAAT,GAAyC;AACrC,SAAO/O,KAAK,CAAC,6EACT,wEADS,GAET,cAFQ,CAAZ;AAGH;AACD;AACA;AACA;AACA;AACA;;;AACA,SAASgP,kCAAT,CAA4CvN,GAA5C,EAAiD;AAC7C,SAAOzB,KAAK,CAAE,wEAAD,GACR,kDAAiDyB,GAAI,IAD9C,CAAZ;AAEH;AACD;AACA;AACA;AACA;AACA;;;AACA,SAASwN,sCAAT,CAAgDC,OAAhD,EAAyD;AACrD,SAAOlP,KAAK,CAAE,0EAAD,GACR,kDAAiDkP,OAAQ,IADlD,CAAZ;AAEH;AACD;AACA;AACA;AACA;;;AACA,MAAMC,aAAN,CAAoB;AAChB/T,EAAAA,WAAW,CAACqG,GAAD,EAAM2N,OAAN,EAAe1P,OAAf,EAAwB;AAC/B,SAAK+B,GAAL,GAAWA,GAAX;AACA,SAAK2N,OAAL,GAAeA,OAAf;AACA,SAAK1P,OAAL,GAAeA,OAAf;AACH;;AALe;AAOpB;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAM2P,eAAN,CAAsB;AAClBjU,EAAAA,WAAW,CAACkU,WAAD,EAAcC,UAAd,EAA0B1J,QAA1B,EAAoC2J,aAApC,EAAmD;AAC1D,SAAKF,WAAL,GAAmBA,WAAnB;AACA,SAAKC,UAAL,GAAkBA,UAAlB;AACA,SAAKC,aAAL,GAAqBA,aAArB;AACA;AACR;AACA;;AACQ,SAAKC,eAAL,GAAuB,IAAIlU,GAAJ,EAAvB;AACA;AACR;AACA;AACA;;AACQ,SAAKmU,eAAL,GAAuB,IAAInU,GAAJ,EAAvB;AACA;;AACA,SAAKoU,iBAAL,GAAyB,IAAIpU,GAAJ,EAAzB;AACA;;AACA,SAAKqU,qBAAL,GAA6B,IAAIrU,GAAJ,EAA7B;AACA;;AACA,SAAKsU,sBAAL,GAA8B,IAAItU,GAAJ,EAA9B;AACA;;AACA,SAAKuU,UAAL,GAAkB,EAAlB;AACA;AACR;AACA;AACA;AACA;;AACQ,SAAKC,oBAAL,GAA4B,gBAA5B;AACA,SAAKC,SAAL,GAAiBnK,QAAjB;AACH;AACD;AACJ;AACA;AACA;AACA;;;AACIoK,EAAAA,UAAU,CAACnB,QAAD,EAAWrN,GAAX,EAAgB/B,OAAhB,EAAyB;AAC/B,WAAO,KAAKwQ,qBAAL,CAA2B,EAA3B,EAA+BpB,QAA/B,EAAyCrN,GAAzC,EAA8C/B,OAA9C,CAAP;AACH;AACD;AACJ;AACA;AACA;AACA;;;AACIyQ,EAAAA,iBAAiB,CAACrB,QAAD,EAAWI,OAAX,EAAoBxP,OAApB,EAA6B;AAC1C,WAAO,KAAK0Q,4BAAL,CAAkC,EAAlC,EAAsCtB,QAAtC,EAAgDI,OAAhD,EAAyDxP,OAAzD,CAAP;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;;AACIwQ,EAAAA,qBAAqB,CAACG,SAAD,EAAYvB,QAAZ,EAAsBrN,GAAtB,EAA2B/B,OAA3B,EAAoC;AACrD,WAAO,KAAK4Q,iBAAL,CAAuBD,SAAvB,EAAkCvB,QAAlC,EAA4C,IAAIK,aAAJ,CAAkB1N,GAAlB,EAAuB,IAAvB,EAA6B/B,OAA7B,CAA5C,CAAP;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI6Q,EAAAA,kBAAkB,CAACC,QAAD,EAAW;AACzB,SAAKV,UAAL,CAAgBtT,IAAhB,CAAqBgU,QAArB;;AACA,WAAO,IAAP;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;;AACIJ,EAAAA,4BAA4B,CAACC,SAAD,EAAYvB,QAAZ,EAAsBI,OAAtB,EAA+BxP,OAA/B,EAAwC;AAChE,UAAM+Q,YAAY,GAAG,KAAKlB,UAAL,CAAgBmB,QAAhB,CAAyB5D,+DAAzB,EAA+CoC,OAA/C,CAArB,CADgE,CAEhE;;;AACA,QAAI,CAACuB,YAAL,EAAmB;AACf,YAAMxB,sCAAsC,CAACC,OAAD,CAA5C;AACH,KAL+D,CAMhE;;;AACA,UAAM0B,cAAc,GAAGjC,qBAAqB,CAAC8B,YAAD,CAA5C;AACA,WAAO,KAAKH,iBAAL,CAAuBD,SAAvB,EAAkCvB,QAAlC,EAA4C,IAAIK,aAAJ,CAAkB,EAAlB,EAAsByB,cAAtB,EAAsClR,OAAtC,CAA5C,CAAP;AACH;AACD;AACJ;AACA;AACA;;;AACImR,EAAAA,aAAa,CAACpP,GAAD,EAAM/B,OAAN,EAAe;AACxB,WAAO,KAAKoR,wBAAL,CAA8B,EAA9B,EAAkCrP,GAAlC,EAAuC/B,OAAvC,CAAP;AACH;AACD;AACJ;AACA;AACA;;;AACIqR,EAAAA,oBAAoB,CAAC7B,OAAD,EAAUxP,OAAV,EAAmB;AACnC,WAAO,KAAKsR,+BAAL,CAAqC,EAArC,EAAyC9B,OAAzC,EAAkDxP,OAAlD,CAAP;AACH;AACD;AACJ;AACA;AACA;AACA;;;AACIoR,EAAAA,wBAAwB,CAACT,SAAD,EAAY5O,GAAZ,EAAiB/B,OAAjB,EAA0B;AAC9C,WAAO,KAAKuR,oBAAL,CAA0BZ,SAA1B,EAAqC,IAAIlB,aAAJ,CAAkB1N,GAAlB,EAAuB,IAAvB,EAA6B/B,OAA7B,CAArC,CAAP;AACH;AACD;AACJ;AACA;AACA;AACA;;;AACIsR,EAAAA,+BAA+B,CAACX,SAAD,EAAYnB,OAAZ,EAAqBxP,OAArB,EAA8B;AACzD,UAAM+Q,YAAY,GAAG,KAAKlB,UAAL,CAAgBmB,QAAhB,CAAyB5D,+DAAzB,EAA+CoC,OAA/C,CAArB;;AACA,QAAI,CAACuB,YAAL,EAAmB;AACf,YAAMxB,sCAAsC,CAACC,OAAD,CAA5C;AACH,KAJwD,CAKzD;;;AACA,UAAM0B,cAAc,GAAGjC,qBAAqB,CAAC8B,YAAD,CAA5C;AACA,WAAO,KAAKQ,oBAAL,CAA0BZ,SAA1B,EAAqC,IAAIlB,aAAJ,CAAkB,EAAlB,EAAsByB,cAAtB,EAAsClR,OAAtC,CAArC,CAAP;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;AACIwR,EAAAA,sBAAsB,CAACC,KAAD,EAAQC,SAAS,GAAGD,KAApB,EAA2B;AAC7C,SAAKtB,sBAAL,CAA4BpT,GAA5B,CAAgC0U,KAAhC,EAAuCC,SAAvC;;AACA,WAAO,IAAP;AACH;AACD;AACJ;AACA;AACA;;;AACIC,EAAAA,qBAAqB,CAACF,KAAD,EAAQ;AACzB,WAAO,KAAKtB,sBAAL,CAA4BtT,GAA5B,CAAgC4U,KAAhC,KAA0CA,KAAjD;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;;AACIG,EAAAA,sBAAsB,CAACF,SAAD,EAAY;AAC9B,SAAKrB,oBAAL,GAA4BqB,SAA5B;AACA,WAAO,IAAP;AACH;AACD;AACJ;AACA;AACA;;;AACIG,EAAAA,sBAAsB,GAAG;AACrB,WAAO,KAAKxB,oBAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;AACIyB,EAAAA,iBAAiB,CAACC,OAAD,EAAU;AACvB,UAAMhQ,GAAG,GAAG,KAAK8N,UAAL,CAAgBmB,QAAhB,CAAyB5D,uEAAzB,EAAuD2E,OAAvD,CAAZ;;AACA,QAAI,CAAChQ,GAAL,EAAU;AACN,YAAMuN,kCAAkC,CAACyC,OAAD,CAAxC;AACH;;AACD,UAAME,UAAU,GAAG,KAAKhC,iBAAL,CAAuBpT,GAAvB,CAA2BkF,GAA3B,CAAnB;;AACA,QAAIkQ,UAAJ,EAAgB;AACZ,aAAO/W,wCAAE,CAACgX,QAAQ,CAACD,UAAD,CAAT,CAAT;AACH;;AACD,WAAO,KAAKE,sBAAL,CAA4B,IAAI1C,aAAJ,CAAkBsC,OAAlB,EAA2B,IAA3B,CAA5B,EAA8DtN,IAA9D,CAAmE2J,mDAAG,CAACgE,GAAG,IAAI,KAAKnC,iBAAL,CAAuBlT,GAAvB,CAA2BgF,GAA3B,EAAgCqQ,GAAhC,CAAR,CAAtE,EAAqH9W,mDAAG,CAAC8W,GAAG,IAAIF,QAAQ,CAACE,GAAD,CAAhB,CAAxH,CAAP;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;AACIC,EAAAA,eAAe,CAAChW,IAAD,EAAOsU,SAAS,GAAG,EAAnB,EAAuB;AAClC,UAAMpU,GAAG,GAAG+V,OAAO,CAAC3B,SAAD,EAAYtU,IAAZ,CAAnB;;AACA,QAAIkW,MAAM,GAAG,KAAKxC,eAAL,CAAqBlT,GAArB,CAAyBN,GAAzB,CAAb,CAFkC,CAGlC;;;AACA,QAAIgW,MAAJ,EAAY;AACR,aAAO,KAAKC,iBAAL,CAAuBD,MAAvB,CAAP;AACH,KANiC,CAOlC;;;AACAA,IAAAA,MAAM,GAAG,KAAKE,2BAAL,CAAiC9B,SAAjC,EAA4CtU,IAA5C,CAAT;;AACA,QAAIkW,MAAJ,EAAY;AACR,WAAKxC,eAAL,CAAqBhT,GAArB,CAAyBR,GAAzB,EAA8BgW,MAA9B;;AACA,aAAO,KAAKC,iBAAL,CAAuBD,MAAvB,CAAP;AACH,KAZiC,CAalC;;;AACA,UAAMG,cAAc,GAAG,KAAK1C,eAAL,CAAqBnT,GAArB,CAAyB8T,SAAzB,CAAvB;;AACA,QAAI+B,cAAJ,EAAoB;AAChB,aAAO,KAAKC,yBAAL,CAA+BtW,IAA/B,EAAqCqW,cAArC,CAAP;AACH;;AACD,WAAOzE,gDAAU,CAACkB,2BAA2B,CAAC5S,GAAD,CAA5B,CAAjB;AACH;;AACDqW,EAAAA,WAAW,GAAG;AACV,SAAKxC,UAAL,GAAkB,EAAlB;;AACA,SAAKL,eAAL,CAAqB8C,KAArB;;AACA,SAAK7C,eAAL,CAAqB6C,KAArB;;AACA,SAAK5C,iBAAL,CAAuB4C,KAAvB;AACH;AACD;AACJ;AACA;;;AACIL,EAAAA,iBAAiB,CAACD,MAAD,EAAS;AACtB,QAAIA,MAAM,CAAC7C,OAAX,EAAoB;AAChB;AACA,aAAOxU,wCAAE,CAACgX,QAAQ,CAAC,KAAKY,qBAAL,CAA2BP,MAA3B,CAAD,CAAT,CAAT;AACH,KAHD,MAIK;AACD;AACA,aAAO,KAAKJ,sBAAL,CAA4BI,MAA5B,EAAoC9N,IAApC,CAAyCnJ,mDAAG,CAAC8W,GAAG,IAAIF,QAAQ,CAACE,GAAD,CAAhB,CAA5C,CAAP;AACH;AACJ;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;AACIO,EAAAA,yBAAyB,CAACtW,IAAD,EAAOqW,cAAP,EAAuB;AAC5C;AACA;AACA,UAAMK,SAAS,GAAG,KAAKC,8BAAL,CAAoC3W,IAApC,EAA0CqW,cAA1C,CAAlB;;AACA,QAAIK,SAAJ,EAAe;AACX;AACA;AACA;AACA,aAAO7X,wCAAE,CAAC6X,SAAD,CAAT;AACH,KAT2C,CAU5C;AACA;;;AACA,UAAME,oBAAoB,GAAGP,cAAc,CACtCrX,MADwB,CACjB6X,aAAa,IAAI,CAACA,aAAa,CAACxD,OADf,EAExBpU,GAFwB,CAEpB4X,aAAa,IAAI;AACtB,aAAO,KAAKC,yBAAL,CAA+BD,aAA/B,EAA8CzO,IAA9C,CAAmD4J,0DAAU,CAAE+E,GAAD,IAAS;AAC1E,cAAMrR,GAAG,GAAG,KAAK8N,UAAL,CAAgBmB,QAAhB,CAAyB5D,uEAAzB,EAAuD8F,aAAa,CAACnR,GAArE,CAAZ,CAD0E,CAE1E;AACA;;;AACA,cAAMsR,YAAY,GAAI,yBAAwBtR,GAAI,YAAWqR,GAAG,CAACrP,OAAQ,EAAzE;;AACA,aAAK+L,aAAL,CAAmBwD,WAAnB,CAA+B,IAAIhT,KAAJ,CAAU+S,YAAV,CAA/B;;AACA,eAAOnY,wCAAE,CAAC,IAAD,CAAT;AACH,OAPmE,CAA7D,CAAP;AAQH,KAX4B,CAA7B,CAZ4C,CAwB5C;AACA;;AACA,WAAOgT,8CAAQ,CAAC+E,oBAAD,CAAR,CAA+BxO,IAA/B,CAAoCnJ,mDAAG,CAAC,MAAM;AACjD,YAAMiY,SAAS,GAAG,KAAKP,8BAAL,CAAoC3W,IAApC,EAA0CqW,cAA1C,CAAlB,CADiD,CAEjD;;;AACA,UAAI,CAACa,SAAL,EAAgB;AACZ,cAAMpE,2BAA2B,CAAC9S,IAAD,CAAjC;AACH;;AACD,aAAOkX,SAAP;AACH,KAP6C,CAAvC,CAAP;AAQH;AACD;AACJ;AACA;AACA;AACA;;;AACIP,EAAAA,8BAA8B,CAAC5D,QAAD,EAAWsD,cAAX,EAA2B;AACrD;AACA,SAAK,IAAIc,CAAC,GAAGd,cAAc,CAACvV,MAAf,GAAwB,CAArC,EAAwCqW,CAAC,IAAI,CAA7C,EAAgDA,CAAC,EAAjD,EAAqD;AACjD,YAAMjB,MAAM,GAAGG,cAAc,CAACc,CAAD,CAA7B,CADiD,CAEjD;AACA;AACA;AACA;;AACA,UAAIjB,MAAM,CAAC7C,OAAP,IAAkB6C,MAAM,CAAC7C,OAAP,CAAe/O,QAAf,GAA0BvE,OAA1B,CAAkCgT,QAAlC,IAA8C,CAAC,CAArE,EAAwE;AACpE,cAAMgD,GAAG,GAAG,KAAKU,qBAAL,CAA2BP,MAA3B,CAAZ;;AACA,cAAMgB,SAAS,GAAG,KAAKE,sBAAL,CAA4BrB,GAA5B,EAAiChD,QAAjC,EAA2CmD,MAAM,CAACvS,OAAlD,CAAlB;;AACA,YAAIuT,SAAJ,EAAe;AACX,iBAAOA,SAAP;AACH;AACJ;AACJ;;AACD,WAAO,IAAP;AACH;AACD;AACJ;AACA;AACA;;;AACIpB,EAAAA,sBAAsB,CAACI,MAAD,EAAS;AAC3B,WAAO,KAAKmB,UAAL,CAAgBnB,MAAhB,EAAwB9N,IAAxB,CAA6B2J,mDAAG,CAACsB,OAAO,IAAK6C,MAAM,CAAC7C,OAAP,GAAiBA,OAA9B,CAAhC,EAAyEpU,mDAAG,CAAC,MAAM,KAAKwX,qBAAL,CAA2BP,MAA3B,CAAP,CAA5E,CAAP;AACH;AACD;AACJ;AACA;AACA;;;AACIY,EAAAA,yBAAyB,CAACZ,MAAD,EAAS;AAC9B,QAAIA,MAAM,CAAC7C,OAAX,EAAoB;AAChB,aAAOxU,wCAAE,CAAC,IAAD,CAAT;AACH;;AACD,WAAO,KAAKwY,UAAL,CAAgBnB,MAAhB,EAAwB9N,IAAxB,CAA6B2J,mDAAG,CAACsB,OAAO,IAAK6C,MAAM,CAAC7C,OAAP,GAAiBA,OAA9B,CAAhC,CAAP;AACH;AACD;AACJ;AACA;AACA;AACA;;;AACI+D,EAAAA,sBAAsB,CAACE,OAAD,EAAUvE,QAAV,EAAoBpP,OAApB,EAA6B;AAC/C;AACA;AACA,UAAM4T,UAAU,GAAGD,OAAO,CAACE,aAAR,CAAuB,QAAOzE,QAAS,IAAvC,CAAnB;;AACA,QAAI,CAACwE,UAAL,EAAiB;AACb,aAAO,IAAP;AACH,KAN8C,CAO/C;AACA;;;AACA,UAAME,WAAW,GAAGF,UAAU,CAACG,SAAX,CAAqB,IAArB,CAApB;AACAD,IAAAA,WAAW,CAACE,eAAZ,CAA4B,IAA5B,EAV+C,CAW/C;AACA;;AACA,QAAIF,WAAW,CAACG,QAAZ,CAAqBzX,WAArB,OAAuC,KAA3C,EAAkD;AAC9C,aAAO,KAAK0X,iBAAL,CAAuBJ,WAAvB,EAAoC9T,OAApC,CAAP;AACH,KAf8C,CAgB/C;AACA;AACA;;;AACA,QAAI8T,WAAW,CAACG,QAAZ,CAAqBzX,WAArB,OAAuC,QAA3C,EAAqD;AACjD,aAAO,KAAK0X,iBAAL,CAAuB,KAAKC,aAAL,CAAmBL,WAAnB,CAAvB,EAAwD9T,OAAxD,CAAP;AACH,KArB8C,CAsB/C;AACA;AACA;AACA;AACA;;;AACA,UAAMoS,GAAG,GAAG,KAAKgC,qBAAL,CAA2BnF,qBAAqB,CAAC,aAAD,CAAhD,CAAZ,CA3B+C,CA4B/C;;;AACAmD,IAAAA,GAAG,CAAC7K,WAAJ,CAAgBuM,WAAhB;AACA,WAAO,KAAKI,iBAAL,CAAuB9B,GAAvB,EAA4BpS,OAA5B,CAAP;AACH;AACD;AACJ;AACA;;;AACIoU,EAAAA,qBAAqB,CAACC,GAAD,EAAM;AACvB,UAAMC,GAAG,GAAG,KAAKhE,SAAL,CAAe3J,aAAf,CAA6B,KAA7B,CAAZ;;AACA2N,IAAAA,GAAG,CAACC,SAAJ,GAAgBF,GAAhB;AACA,UAAMjC,GAAG,GAAGkC,GAAG,CAACT,aAAJ,CAAkB,KAAlB,CAAZ,CAHuB,CAIvB;;AACA,QAAI,CAACzB,GAAL,EAAU;AACN,YAAM9R,KAAK,CAAC,qBAAD,CAAX;AACH;;AACD,WAAO8R,GAAP;AACH;AACD;AACJ;AACA;;;AACI+B,EAAAA,aAAa,CAACK,OAAD,EAAU;AACnB,UAAMpC,GAAG,GAAG,KAAKgC,qBAAL,CAA2BnF,qBAAqB,CAAC,aAAD,CAAhD,CAAZ;;AACA,UAAMwF,UAAU,GAAGD,OAAO,CAACC,UAA3B,CAFmB,CAGnB;;AACA,SAAK,IAAIjB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGiB,UAAU,CAACtX,MAA/B,EAAuCqW,CAAC,EAAxC,EAA4C;AACxC,YAAM;AAAEnX,QAAAA,IAAF;AAAQI,QAAAA;AAAR,UAAkBgY,UAAU,CAACjB,CAAD,CAAlC;;AACA,UAAInX,IAAI,KAAK,IAAb,EAAmB;AACf+V,QAAAA,GAAG,CAACsC,YAAJ,CAAiBrY,IAAjB,EAAuBI,KAAvB;AACH;AACJ;;AACD,SAAK,IAAI+W,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgB,OAAO,CAACG,UAAR,CAAmBxX,MAAvC,EAA+CqW,CAAC,EAAhD,EAAoD;AAChD,UAAIgB,OAAO,CAACG,UAAR,CAAmBnB,CAAnB,EAAsBoB,QAAtB,KAAmC,KAAKtE,SAAL,CAAeuE,YAAtD,EAAoE;AAChEzC,QAAAA,GAAG,CAAC7K,WAAJ,CAAgBiN,OAAO,CAACG,UAAR,CAAmBnB,CAAnB,EAAsBO,SAAtB,CAAgC,IAAhC,CAAhB;AACH;AACJ;;AACD,WAAO3B,GAAP;AACH;AACD;AACJ;AACA;;;AACI8B,EAAAA,iBAAiB,CAAC9B,GAAD,EAAMpS,OAAN,EAAe;AAC5BoS,IAAAA,GAAG,CAACsC,YAAJ,CAAiB,KAAjB,EAAwB,EAAxB;AACAtC,IAAAA,GAAG,CAACsC,YAAJ,CAAiB,QAAjB,EAA2B,MAA3B;AACAtC,IAAAA,GAAG,CAACsC,YAAJ,CAAiB,OAAjB,EAA0B,MAA1B;AACAtC,IAAAA,GAAG,CAACsC,YAAJ,CAAiB,qBAAjB,EAAwC,eAAxC;AACAtC,IAAAA,GAAG,CAACsC,YAAJ,CAAiB,WAAjB,EAA8B,OAA9B,EAL4B,CAKY;;AACxC,QAAI1U,OAAO,IAAIA,OAAO,CAAC8U,OAAvB,EAAgC;AAC5B1C,MAAAA,GAAG,CAACsC,YAAJ,CAAiB,SAAjB,EAA4B1U,OAAO,CAAC8U,OAApC;AACH;;AACD,WAAO1C,GAAP;AACH;AACD;AACJ;AACA;AACA;;;AACIsB,EAAAA,UAAU,CAACqB,UAAD,EAAa;AACnB,QAAIlV,EAAJ;;AACA,UAAM;AAAEkC,MAAAA,GAAG,EAAEgQ,OAAP;AAAgB/R,MAAAA;AAAhB,QAA4B+U,UAAlC;AACA,UAAM3S,eAAe,GAAG,CAACvC,EAAE,GAAGG,OAAO,KAAK,IAAZ,IAAoBA,OAAO,KAAK,KAAK,CAArC,GAAyC,KAAK,CAA9C,GAAkDA,OAAO,CAACoC,eAAhE,MAAqF,IAArF,IAA6FvC,EAAE,KAAK,KAAK,CAAzG,GAA6GA,EAA7G,GAAkH,KAA1I;;AACA,QAAI,CAAC,KAAK+P,WAAV,EAAuB;AACnB,YAAMP,6BAA6B,EAAnC;AACH,KANkB,CAOnB;;;AACA,QAAI0C,OAAO,IAAI,IAAf,EAAqB;AACjB,YAAMzR,KAAK,CAAE,+BAA8ByR,OAAQ,IAAxC,CAAX;AACH;;AACD,UAAMhQ,GAAG,GAAG,KAAK8N,UAAL,CAAgBmB,QAAhB,CAAyB5D,uEAAzB,EAAuD2E,OAAvD,CAAZ,CAXmB,CAYnB;;;AACA,QAAI,CAAChQ,GAAL,EAAU;AACN,YAAMuN,kCAAkC,CAACyC,OAAD,CAAxC;AACH,KAfkB,CAgBnB;AACA;AACA;;;AACA,UAAMiD,eAAe,GAAG,KAAK9E,qBAAL,CAA2BrT,GAA3B,CAA+BkF,GAA/B,CAAxB;;AACA,QAAIiT,eAAJ,EAAqB;AACjB,aAAOA,eAAP;AACH;;AACD,UAAMzQ,GAAG,GAAG,KAAKqL,WAAL,CAAiB/S,GAAjB,CAAqBkF,GAArB,EAA0B;AAAEM,MAAAA,YAAY,EAAE,MAAhB;AAAwBD,MAAAA;AAAxB,KAA1B,EAAqEqC,IAArE,CAA0EnJ,mDAAG,CAAC8W,GAAG,IAAI;AAC7F;AACA;AACA,aAAOnD,qBAAqB,CAACmD,GAAD,CAA5B;AACH,KAJwF,CAA7E,EAIR9D,wDAAQ,CAAC,MAAM,KAAK4B,qBAAL,CAA2BvS,MAA3B,CAAkCoE,GAAlC,CAAP,CAJA,EAIgDwM,qDAAK,EAJrD,CAAZ;;AAKA,SAAK2B,qBAAL,CAA2BnT,GAA3B,CAA+BgF,GAA/B,EAAoCwC,GAApC;;AACA,WAAOA,GAAP;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;;AACIqM,EAAAA,iBAAiB,CAACD,SAAD,EAAYvB,QAAZ,EAAsBmD,MAAtB,EAA8B;AAC3C,SAAKxC,eAAL,CAAqBhT,GAArB,CAAyBuV,OAAO,CAAC3B,SAAD,EAAYvB,QAAZ,CAAhC,EAAuDmD,MAAvD;;AACA,WAAO,IAAP;AACH;AACD;AACJ;AACA;AACA;AACA;;;AACIhB,EAAAA,oBAAoB,CAACZ,SAAD,EAAY4B,MAAZ,EAAoB;AACpC,UAAM0C,eAAe,GAAG,KAAKjF,eAAL,CAAqBnT,GAArB,CAAyB8T,SAAzB,CAAxB;;AACA,QAAIsE,eAAJ,EAAqB;AACjBA,MAAAA,eAAe,CAACnY,IAAhB,CAAqByV,MAArB;AACH,KAFD,MAGK;AACD,WAAKvC,eAAL,CAAqBjT,GAArB,CAAyB4T,SAAzB,EAAoC,CAAC4B,MAAD,CAApC;AACH;;AACD,WAAO,IAAP;AACH;AACD;;;AACAO,EAAAA,qBAAqB,CAACP,MAAD,EAAS;AAC1B,QAAI,CAACA,MAAM,CAAC2C,UAAZ,EAAwB;AACpB,YAAM9C,GAAG,GAAG,KAAKgC,qBAAL,CAA2B7B,MAAM,CAAC7C,OAAlC,CAAZ;;AACA,WAAKwE,iBAAL,CAAuB9B,GAAvB,EAA4BG,MAAM,CAACvS,OAAnC;;AACAuS,MAAAA,MAAM,CAAC2C,UAAP,GAAoB9C,GAApB;AACH;;AACD,WAAOG,MAAM,CAAC2C,UAAd;AACH;AACD;;;AACAzC,EAAAA,2BAA2B,CAAC9B,SAAD,EAAYtU,IAAZ,EAAkB;AACzC,SAAK,IAAImX,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKpD,UAAL,CAAgBjT,MAApC,EAA4CqW,CAAC,EAA7C,EAAiD;AAC7C,YAAM2B,MAAM,GAAG,KAAK/E,UAAL,CAAgBoD,CAAhB,EAAmBnX,IAAnB,EAAyBsU,SAAzB,CAAf;;AACA,UAAIwE,MAAJ,EAAY;AACR,eAAOC,oBAAoB,CAACD,MAAD,CAApB,GACD,IAAI1F,aAAJ,CAAkB0F,MAAM,CAACpT,GAAzB,EAA8B,IAA9B,EAAoCoT,MAAM,CAACnV,OAA3C,CADC,GAED,IAAIyP,aAAJ,CAAkB0F,MAAlB,EAA0B,IAA1B,CAFN;AAGH;AACJ;;AACD,WAAOhX,SAAP;AACH;;AApdiB;;AAsdtBwR,eAAe,CAACxK,IAAhB;AAAA,mBAA4GwK,eAA5G,EAAkG/U,sDAAlG,CAA6IL,4DAA7I,MAAkGK,sDAAlG,CAAuL6T,oEAAvL,GAAkG7T,sDAAlG,CAAmNJ,sDAAnN,MAAkGI,sDAAlG,CAAwPA,uDAAxP;AAAA;;AACA+U,eAAe,CAACvK,KAAhB,kBADkGxK,gEAClG;AAAA,SAAgH+U,eAAhH;AAAA,WAAgHA,eAAhH;AAAA,cAA6I;AAA7I;;AACA;AAAA,qDAFkG/U,+DAElG,CAA2F+U,eAA3F,EAAwH,CAAC;AAC7G5M,IAAAA,IAAI,EAAElI,qDADuG;AAE7GkN,IAAAA,IAAI,EAAE,CAAC;AAAEsN,MAAAA,UAAU,EAAE;AAAd,KAAD;AAFuG,GAAD,CAAxH,EAG4B,YAAY;AAChC,WAAO,CAAC;AAAEtS,MAAAA,IAAI,EAAExI,4DAAR;AAAuBuN,MAAAA,UAAU,EAAE,CAAC;AAC5B/E,QAAAA,IAAI,EAAEsK,mDAAQA;AADc,OAAD;AAAnC,KAAD,EAEW;AAAEtK,MAAAA,IAAI,EAAE0L,oEAAeC;AAAvB,KAFX,EAEsC;AAAE3L,MAAAA,IAAI,EAAE5E,SAAR;AAAmB2J,MAAAA,UAAU,EAAE,CAAC;AAC7D/E,QAAAA,IAAI,EAAEsK,mDAAQA;AAD+C,OAAD,EAE7D;AACCtK,QAAAA,IAAI,EAAEhI,iDADP;AAECgN,QAAAA,IAAI,EAAE,CAACvN,sDAAD;AAFP,OAF6D;AAA/B,KAFtC,EAOW;AAAEuI,MAAAA,IAAI,EAAEnI,uDAAe2S;AAAvB,KAPX,CAAP;AAQH,GAZL;AAAA;AAaA;;;AACA,SAAS+H,8BAAT,CAAwCC,cAAxC,EAAwDC,UAAxD,EAAoEC,SAApE,EAA+EC,YAA/E,EAA6FvP,QAA7F,EAAuG;AACnG,SAAOoP,cAAc,IAAI,IAAI5F,eAAJ,CAAoB6F,UAApB,EAAgCC,SAAhC,EAA2CtP,QAA3C,EAAqDuP,YAArD,CAAzB;AACH;AACD;;;AACA,MAAMC,sBAAsB,GAAG;AAC3B;AACApJ,EAAAA,OAAO,EAAEoD,eAFkB;AAG3BiG,EAAAA,IAAI,EAAE,CACF,CAAC,IAAIvI,mDAAJ,EAAD,EAAiB,IAAIC,mDAAJ,EAAjB,EAAiCqC,eAAjC,CADE,EAEF,CAAC,IAAItC,mDAAJ,EAAD,EAAiBlJ,4DAAjB,CAFE,EAGFuK,oEAHE,EAIFnB,uDAJE,EAKF,CAAC,IAAIF,mDAAJ,EAAD,EAAiB7S,sDAAjB,CALE,CAHqB;AAU3B0S,EAAAA,UAAU,EAAEoI;AAVe,CAA/B;AAYA;;AACA,SAASpD,QAAT,CAAkBE,GAAlB,EAAuB;AACnB,SAAOA,GAAG,CAAC2B,SAAJ,CAAc,IAAd,CAAP;AACH;AACD;;;AACA,SAASzB,OAAT,CAAiB3B,SAAjB,EAA4BtU,IAA5B,EAAkC;AAC9B,SAAOsU,SAAS,GAAG,GAAZ,GAAkBtU,IAAzB;AACH;;AACD,SAAS+Y,oBAAT,CAA8B3Y,KAA9B,EAAqC;AACjC,SAAO,CAAC,EAAEA,KAAK,CAACsF,GAAN,IAAatF,KAAK,CAACuD,OAArB,CAAR;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;;;AACA,MAAM6V,YAAY,GAAG/H,mEAAU,CAAC,MAAM;AAClCpS,EAAAA,WAAW,CAACoa,WAAD,EAAc;AACrB,SAAKA,WAAL,GAAmBA,WAAnB;AACH;;AAHiC,CAAP,CAA/B;AAKA;AACA;AACA;AACA;AACA;;;AACA,MAAMC,iBAAiB,GAAG,IAAIjb,yDAAJ,CAAmB,mBAAnB,EAAwC;AAC9Dua,EAAAA,UAAU,EAAE,MADkD;AAE9DW,EAAAA,OAAO,EAAEC;AAFqD,CAAxC,CAA1B;AAIA;;AACA,SAASA,yBAAT,GAAqC;AACjC,QAAM3F,SAAS,GAAG9C,qDAAM,CAAChT,sDAAD,CAAxB;;AACA,QAAM0b,SAAS,GAAG5F,SAAS,GAAGA,SAAS,CAAC6F,QAAb,GAAwB,IAAnD;;AACA,SAAO;AACH;AACA;AACAC,IAAAA,WAAW,EAAE,MAAOF,SAAS,GAAGA,SAAS,CAACG,QAAV,GAAqBH,SAAS,CAACI,MAAlC,GAA2C;AAHrE,GAAP;AAKH;AACD;;;AACA,MAAMC,iBAAiB,GAAG,CACtB,WADsB,EAEtB,eAFsB,EAGtB,KAHsB,EAItB,QAJsB,EAKtB,MALsB,EAMtB,QANsB,EAOtB,QAPsB,EAQtB,cARsB,EAStB,YATsB,EAUtB,YAVsB,EAWtB,MAXsB,EAYtB,QAZsB,CAA1B;AAcA;;AACA,MAAMC,wBAAwB,GAAGD,iBAAiB,CAACjb,GAAlB,CAAsBmb,IAAI,IAAK,IAAGA,IAAK,GAAvC,EAA2C5V,IAA3C,CAAgD,IAAhD,CAAjC;AACA;;AACA,MAAM6V,cAAc,GAAG,2BAAvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMC,OAAN,SAAsBd,YAAtB,CAAmC;AAC/Bna,EAAAA,WAAW,CAACkb,UAAD,EAAaC,aAAb,EAA4BC,UAA5B,EAAwCZ,SAAxC,EAAmDpG,aAAnD,EAAkE;AACzE,UAAM8G,UAAN;AACA,SAAKC,aAAL,GAAqBA,aAArB;AACA,SAAKX,SAAL,GAAiBA,SAAjB;AACA,SAAKpG,aAAL,GAAqBA,aAArB;AACA,SAAKiH,OAAL,GAAe,KAAf;AACA;;AACA,SAAKC,iBAAL,GAAyB7I,qDAAzB,CAPyE,CAQzE;AACA;;AACA,QAAI,CAAC2I,UAAL,EAAiB;AACbF,MAAAA,UAAU,CAACM,aAAX,CAAyBxC,YAAzB,CAAsC,aAAtC,EAAqD,MAArD;AACH;AACJ;AACD;AACJ;AACA;AACA;;;AACc,MAANyC,MAAM,GAAG;AACT,WAAO,KAAKJ,OAAZ;AACH;;AACS,MAANI,MAAM,CAACA,MAAD,EAAS;AACf,SAAKJ,OAAL,GAAe/I,6EAAqB,CAACmJ,MAAD,CAApC;AACH;AACD;;;AACW,MAAPC,OAAO,GAAG;AACV,WAAO,KAAKC,QAAZ;AACH;;AACU,MAAPD,OAAO,CAAC3a,KAAD,EAAQ;AACf,QAAIA,KAAK,KAAK,KAAK4a,QAAnB,EAA6B;AACzB,UAAI5a,KAAJ,EAAW;AACP,aAAK6a,cAAL,CAAoB7a,KAApB;AACH,OAFD,MAGK,IAAI,KAAK4a,QAAT,EAAmB;AACpB,aAAKE,gBAAL;AACH;;AACD,WAAKF,QAAL,GAAgB5a,KAAhB;AACH;AACJ;AACD;;;AACW,MAAP+a,OAAO,GAAG;AACV,WAAO,KAAKC,QAAZ;AACH;;AACU,MAAPD,OAAO,CAAC/a,KAAD,EAAQ;AACf,UAAMib,QAAQ,GAAG,KAAKC,iBAAL,CAAuBlb,KAAvB,CAAjB;;AACA,QAAIib,QAAQ,KAAK,KAAKD,QAAtB,EAAgC;AAC5B,WAAKA,QAAL,GAAgBC,QAAhB;;AACA,WAAKE,sBAAL;AACH;AACJ;AACD;;;AACY,MAARC,QAAQ,GAAG;AACX,WAAO,KAAKC,SAAZ;AACH;;AACW,MAARD,QAAQ,CAACpb,KAAD,EAAQ;AAChB,UAAMib,QAAQ,GAAG,KAAKC,iBAAL,CAAuBlb,KAAvB,CAAjB;;AACA,QAAIib,QAAQ,KAAK,KAAKI,SAAtB,EAAiC;AAC7B,WAAKA,SAAL,GAAiBJ,QAAjB;;AACA,WAAKE,sBAAL;AACH;AACJ;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACIG,EAAAA,cAAc,CAAC3I,QAAD,EAAW;AACrB,QAAI,CAACA,QAAL,EAAe;AACX,aAAO,CAAC,EAAD,EAAK,EAAL,CAAP;AACH;;AACD,UAAM4I,KAAK,GAAG5I,QAAQ,CAACpT,KAAT,CAAe,GAAf,CAAd;;AACA,YAAQgc,KAAK,CAAC7a,MAAd;AACI,WAAK,CAAL;AACI,eAAO,CAAC,EAAD,EAAK6a,KAAK,CAAC,CAAD,CAAV,CAAP;AAAuB;;AAC3B,WAAK,CAAL;AACI,eAAOA,KAAP;;AACJ;AACI,cAAM1X,KAAK,CAAE,uBAAsB8O,QAAS,GAAjC,CAAX;AAAiD;AANzD;AAQH;;AACD6I,EAAAA,QAAQ,GAAG;AACP;AACA;AACA,SAAKL,sBAAL;AACH;;AACDM,EAAAA,kBAAkB,GAAG;AACjB,UAAMC,cAAc,GAAG,KAAKC,+BAA5B;;AACA,QAAID,cAAc,IAAIA,cAAc,CAACE,IAArC,EAA2C;AACvC,YAAMC,OAAO,GAAG,KAAKpC,SAAL,CAAeE,WAAf,EAAhB,CADuC,CAEvC;AACA;AACA;AACA;AACA;AACA;;;AACA,UAAIkC,OAAO,KAAK,KAAKC,aAArB,EAAoC;AAChC,aAAKA,aAAL,GAAqBD,OAArB;;AACA,aAAKE,wBAAL,CAA8BF,OAA9B;AACH;AACJ;AACJ;;AACD1F,EAAAA,WAAW,GAAG;AACV,SAAKoE,iBAAL,CAAuByB,WAAvB;;AACA,QAAI,KAAKL,+BAAT,EAA0C;AACtC,WAAKA,+BAAL,CAAqCvF,KAArC;AACH;AACJ;;AACD6F,EAAAA,cAAc,GAAG;AACb,WAAO,CAAC,KAAKtB,OAAb;AACH;;AACDuB,EAAAA,cAAc,CAACvG,GAAD,EAAM;AAChB,SAAKmF,gBAAL,GADgB,CAEhB;AACA;AACA;;;AACA,UAAMqB,SAAS,GAAGxG,GAAG,CAACyG,gBAAJ,CAAqB,OAArB,CAAlB;;AACA,SAAK,IAAIrF,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGoF,SAAS,CAACzb,MAA9B,EAAsCqW,CAAC,EAAvC,EAA2C;AACvCoF,MAAAA,SAAS,CAACpF,CAAD,CAAT,CAAasF,WAAb,IAA4B,GAA5B;AACH,KARe,CAShB;AACA;;;AACA,UAAMC,IAAI,GAAG,KAAK7C,SAAL,CAAeE,WAAf,EAAb;;AACA,SAAKmC,aAAL,GAAqBQ,IAArB;;AACA,SAAKC,oCAAL,CAA0C5G,GAA1C;;AACA,SAAKoG,wBAAL,CAA8BO,IAA9B;;AACA,SAAKjD,WAAL,CAAiBoB,aAAjB,CAA+B3P,WAA/B,CAA2C6K,GAA3C;AACH;;AACDmF,EAAAA,gBAAgB,GAAG;AACf,UAAM0B,aAAa,GAAG,KAAKnD,WAAL,CAAiBoB,aAAvC;AACA,QAAIgC,UAAU,GAAGD,aAAa,CAACtE,UAAd,CAAyBxX,MAA1C;;AACA,QAAI,KAAKib,+BAAT,EAA0C;AACtC,WAAKA,+BAAL,CAAqCvF,KAArC;AACH,KALc,CAMf;AACA;;;AACA,WAAOqG,UAAU,EAAjB,EAAqB;AACjB,YAAMC,KAAK,GAAGF,aAAa,CAACtE,UAAd,CAAyBuE,UAAzB,CAAd,CADiB,CAEjB;AACA;;AACA,UAAIC,KAAK,CAACvE,QAAN,KAAmB,CAAnB,IAAwBuE,KAAK,CAAClF,QAAN,CAAezX,WAAf,OAAiC,KAA7D,EAAoE;AAChE2c,QAAAA,KAAK,CAACC,MAAN;AACH;AACJ;AACJ;;AACDxB,EAAAA,sBAAsB,GAAG;AACrB,QAAI,CAAC,KAAKc,cAAL,EAAL,EAA4B;AACxB;AACH;;AACD,UAAMW,IAAI,GAAG,KAAKvD,WAAL,CAAiBoB,aAA9B;AACA,UAAMoC,YAAY,GAAG,KAAK9B,OAAL,GACf,KAAKX,aAAL,CAAmBlF,qBAAnB,CAAyC,KAAK6F,OAA9C,CADe,GAEf,KAAKX,aAAL,CAAmBhF,sBAAnB,EAFN;;AAGA,QAAIyH,YAAY,IAAI,KAAKC,qBAAzB,EAAgD;AAC5C,UAAI,KAAKA,qBAAT,EAAgC;AAC5BF,QAAAA,IAAI,CAACG,SAAL,CAAeJ,MAAf,CAAsB,KAAKG,qBAA3B;AACH;;AACD,UAAID,YAAJ,EAAkB;AACdD,QAAAA,IAAI,CAACG,SAAL,CAAeC,GAAf,CAAmBH,YAAnB;AACH;;AACD,WAAKC,qBAAL,GAA6BD,YAA7B;AACH;;AACD,QAAI,KAAKzB,QAAL,IAAiB,KAAK6B,sBAA1B,EAAkD;AAC9C,UAAI,KAAKA,sBAAT,EAAiC;AAC7BL,QAAAA,IAAI,CAACG,SAAL,CAAeJ,MAAf,CAAsB,KAAKM,sBAA3B;AACH;;AACD,UAAI,KAAK7B,QAAT,EAAmB;AACfwB,QAAAA,IAAI,CAACG,SAAL,CAAeC,GAAf,CAAmB,KAAK5B,QAAxB;AACH;;AACD,WAAK6B,sBAAL,GAA8B,KAAK7B,QAAnC;AACH;AACJ;AACD;AACJ;AACA;AACA;AACA;;;AACIF,EAAAA,iBAAiB,CAAClb,KAAD,EAAQ;AACrB,WAAO,OAAOA,KAAP,KAAiB,QAAjB,GAA4BA,KAAK,CAACC,IAAN,GAAaV,KAAb,CAAmB,GAAnB,EAAwB,CAAxB,CAA5B,GAAyDS,KAAhE;AACH;AACD;AACJ;AACA;AACA;AACA;;;AACI+b,EAAAA,wBAAwB,CAACO,IAAD,EAAO;AAC3B,UAAMY,QAAQ,GAAG,KAAKvB,+BAAtB;;AACA,QAAIuB,QAAJ,EAAc;AACVA,MAAAA,QAAQ,CAAC1d,OAAT,CAAiB,CAAC2d,KAAD,EAAQpF,OAAR,KAAoB;AACjCoF,QAAAA,KAAK,CAAC3d,OAAN,CAAcwa,IAAI,IAAI;AAClBjC,UAAAA,OAAO,CAACE,YAAR,CAAqB+B,IAAI,CAACpa,IAA1B,EAAiC,QAAO0c,IAAK,IAAGtC,IAAI,CAACha,KAAM,IAA3D;AACH,SAFD;AAGH,OAJD;AAKH;AACJ;AACD;AACJ;AACA;AACA;;;AACIuc,EAAAA,oCAAoC,CAACxE,OAAD,EAAU;AAC1C,UAAMqF,mBAAmB,GAAGrF,OAAO,CAACqE,gBAAR,CAAyBrC,wBAAzB,CAA5B;AACA,UAAMmD,QAAQ,GAAI,KAAKvB,+BAAL,GACd,KAAKA,+BAAL,IAAwC,IAAIvc,GAAJ,EAD5C;;AAEA,SAAK,IAAI2X,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGqG,mBAAmB,CAAC1c,MAAxC,EAAgDqW,CAAC,EAAjD,EAAqD;AACjD+C,MAAAA,iBAAiB,CAACta,OAAlB,CAA0Bwa,IAAI,IAAI;AAC9B,cAAMqD,oBAAoB,GAAGD,mBAAmB,CAACrG,CAAD,CAAhD;AACA,cAAM/W,KAAK,GAAGqd,oBAAoB,CAACC,YAArB,CAAkCtD,IAAlC,CAAd;AACA,cAAMuD,KAAK,GAAGvd,KAAK,GAAGA,KAAK,CAACud,KAAN,CAAYtD,cAAZ,CAAH,GAAiC,IAApD;;AACA,YAAIsD,KAAJ,EAAW;AACP,cAAIvF,UAAU,GAAGkF,QAAQ,CAAC9c,GAAT,CAAaid,oBAAb,CAAjB;;AACA,cAAI,CAACrF,UAAL,EAAiB;AACbA,YAAAA,UAAU,GAAG,EAAb;AACAkF,YAAAA,QAAQ,CAAC5c,GAAT,CAAa+c,oBAAb,EAAmCrF,UAAnC;AACH;;AACDA,UAAAA,UAAU,CAAC3X,IAAX,CAAgB;AAAET,YAAAA,IAAI,EAAEoa,IAAR;AAAcha,YAAAA,KAAK,EAAEud,KAAK,CAAC,CAAD;AAA1B,WAAhB;AACH;AACJ,OAZD;AAaH;AACJ;AACD;;;AACA1C,EAAAA,cAAc,CAAC2C,OAAD,EAAU;AACpB,SAAKC,aAAL,GAAqB,IAArB;AACA,SAAKC,QAAL,GAAgB,IAAhB;;AACA,SAAKnD,iBAAL,CAAuByB,WAAvB;;AACA,QAAIwB,OAAJ,EAAa;AACT,YAAM,CAACtJ,SAAD,EAAYvB,QAAZ,IAAwB,KAAK2I,cAAL,CAAoBkC,OAApB,CAA9B;;AACA,UAAItJ,SAAJ,EAAe;AACX,aAAKuJ,aAAL,GAAqBvJ,SAArB;AACH;;AACD,UAAIvB,QAAJ,EAAc;AACV,aAAK+K,QAAL,GAAgB/K,QAAhB;AACH;;AACD,WAAK4H,iBAAL,GAAyB,KAAKH,aAAL,CACpBxE,eADoB,CACJjD,QADI,EACMuB,SADN,EAEpBlM,IAFoB,CAEf+J,qDAAI,CAAC,CAAD,CAFW,EAGpB4L,SAHoB,CAGVhI,GAAG,IAAI,KAAKuG,cAAL,CAAoBvG,GAApB,CAHG,EAGwBgB,GAAD,IAAS;AACrD,cAAMC,YAAY,GAAI,yBAAwB1C,SAAU,IAAGvB,QAAS,KAAIgE,GAAG,CAACrP,OAAQ,EAApF;;AACA,aAAK+L,aAAL,CAAmBwD,WAAnB,CAA+B,IAAIhT,KAAJ,CAAU+S,YAAV,CAA/B;AACH,OANwB,CAAzB;AAOH;AACJ;;AAxP8B;;AA0PnCsD,OAAO,CAACxR,IAAR;AAAA,mBAAoGwR,OAApG,EArXkG/b,+DAqXlG,CAA6HA,qDAA7H,GArXkGA,+DAqXlG,CAAuJ+U,eAAvJ,GArXkG/U,+DAqXlG,CAAmL,aAAnL,GArXkGA,+DAqXlG,CAA8Nmb,iBAA9N,GArXkGnb,+DAqXlG,CAA4PA,uDAA5P;AAAA;;AACA+b,OAAO,CAAC2D,IAAR,kBAtXkG1f,+DAsXlG;AAAA,QAAwF+b,OAAxF;AAAA;AAAA,sBAAiQ,KAAjQ;AAAA;AAAA;AAAA;AAtXkG/b,MAAAA,yDAsXlG;AAtXkGA,MAAAA,yDAsXlG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAtXkGA,wEAsXlG;AAAA;AAAA;AAAA;AAAA;AAAA;AAtXkGA,MAAAA,6DAsXlG;AAtXkGA,MAAAA,0DAsXimB,GAAnsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;AAAA,qDAvXkGA,+DAuXlG,CAA2F+b,OAA3F,EAAgH,CAAC;AACrG5T,IAAAA,IAAI,EAAE0K,oDAD+F;AAErG1F,IAAAA,IAAI,EAAE,CAAC;AAAEwS,MAAAA,QAAQ,EAAE,2BAAZ;AAAyCC,MAAAA,QAAQ,EAAE,UAAnD;AAA+DC,MAAAA,QAAQ,EAAE,SAAzE;AAAoFC,MAAAA,MAAM,EAAE,CAAC,OAAD,CAA5F;AAAuGC,MAAAA,IAAI,EAAE;AACxG,gBAAQ,KADgG;AAExG,iBAAS,sBAF+F;AAGxG,qCAA6B,mCAH2E;AAIxG,qCAA6B,sBAJ2E;AAKxG,0CAAkC,0BALsE;AAMxG,mCAA2B,QAN6E;AAOxG,qCAA6B;AAP2E,OAA7G;AAQIC,MAAAA,aAAa,EAAElN,iEARnB;AAQ2CoN,MAAAA,eAAe,EAAEnN,yEAR5D;AAQ4FqN,MAAAA,MAAM,EAAE,CAAC,utBAAD;AARpG,KAAD;AAF+F,GAAD,CAAhH,EAW4B,YAAY;AAChC,WAAO,CAAC;AAAEjY,MAAAA,IAAI,EAAEnI,qDAAayf;AAArB,KAAD,EAA0B;AAAEtX,MAAAA,IAAI,EAAE4M;AAAR,KAA1B,EAAqD;AAAE5M,MAAAA,IAAI,EAAE5E,SAAR;AAAmB2J,MAAAA,UAAU,EAAE,CAAC;AAC5E/E,QAAAA,IAAI,EAAE6K,oDADsE;AAE5E7F,QAAAA,IAAI,EAAE,CAAC,aAAD;AAFsE,OAAD;AAA/B,KAArD,EAGW;AAAEhF,MAAAA,IAAI,EAAE5E,SAAR;AAAmB2J,MAAAA,UAAU,EAAE,CAAC;AAClC/E,QAAAA,IAAI,EAAEhI,iDAD4B;AAElCgN,QAAAA,IAAI,EAAE,CAACgO,iBAAD;AAF4B,OAAD;AAA/B,KAHX,EAMW;AAAEhT,MAAAA,IAAI,EAAEnI,uDAAe2S;AAAvB,KANX,CAAP;AAOH,GAnBL,EAmBuB;AAAE4J,IAAAA,MAAM,EAAE,CAAC;AAClBpU,MAAAA,IAAI,EAAE8K,gDAAKA;AADO,KAAD,CAAV;AAEPuJ,IAAAA,OAAO,EAAE,CAAC;AACVrU,MAAAA,IAAI,EAAE8K,gDAAKA;AADD,KAAD,CAFF;AAIP2J,IAAAA,OAAO,EAAE,CAAC;AACVzU,MAAAA,IAAI,EAAE8K,gDAAKA;AADD,KAAD,CAJF;AAMPgK,IAAAA,QAAQ,EAAE,CAAC;AACX9U,MAAAA,IAAI,EAAE8K,gDAAKA;AADA,KAAD;AANH,GAnBvB;AAAA;AA6BA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMoN,aAAN,CAAoB;;AAEpBA,aAAa,CAAC9V,IAAd;AAAA,mBAA0G8V,aAA1G;AAAA;;AACAA,aAAa,CAACtO,IAAd,kBA9ZkG/R,8DA8ZlG;AAAA,QAA2GqgB;AAA3G;AACAA,aAAa,CAACrO,IAAd,kBA/ZkGhS,8DA+ZlG;AAAA,YAAoI,CAACmT,oEAAD,CAApI,EAAuJA,oEAAvJ;AAAA;;AACA;AAAA,qDAhakGnT,+DAgalG,CAA2FqgB,aAA3F,EAAsH,CAAC;AAC3GlY,IAAAA,IAAI,EAAE9H,mDADqG;AAE3G8M,IAAAA,IAAI,EAAE,CAAC;AACCiF,MAAAA,OAAO,EAAE,CAACe,oEAAD,CADV;AAECmN,MAAAA,OAAO,EAAE,CAACvE,OAAD,EAAU5I,oEAAV,CAFV;AAGCoN,MAAAA,YAAY,EAAE,CAACxE,OAAD;AAHf,KAAD;AAFqG,GAAD,CAAtH;AAAA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA","sources":["./node_modules/rxjs/dist/esm/internal/observable/forkJoin.js","./node_modules/@angular/common/fesm2015/http.mjs","./node_modules/@angular/material/fesm2015/icon.mjs"],"sourcesContent":["import { Observable } from '../Observable';\nimport { argsArgArrayOrObject } from '../util/argsArgArrayOrObject';\nimport { innerFrom } from './innerFrom';\nimport { popResultSelector } from '../util/args';\nimport { OperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { createObject } from '../util/createObject';\nexport function forkJoin(...args) {\n const resultSelector = popResultSelector(args);\n const { args: sources, keys } = argsArgArrayOrObject(args);\n const result = new Observable((subscriber) => {\n const { length } = sources;\n if (!length) {\n subscriber.complete();\n return;\n }\n const values = new Array(length);\n let remainingCompletions = length;\n let remainingEmissions = length;\n for (let sourceIndex = 0; sourceIndex < length; sourceIndex++) {\n let hasValue = false;\n innerFrom(sources[sourceIndex]).subscribe(new OperatorSubscriber(subscriber, (value) => {\n if (!hasValue) {\n hasValue = true;\n remainingEmissions--;\n }\n values[sourceIndex] = value;\n }, () => remainingCompletions--, undefined, () => {\n if (!remainingCompletions || !hasValue) {\n if (!remainingEmissions) {\n subscriber.next(keys ? createObject(keys, values) : values);\n }\n subscriber.complete();\n }\n }));\n }\n });\n return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result;\n}\n","/**\n * @license Angular v13.2.5\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i1 from '@angular/common';\nimport { DOCUMENT, ɵparseCookieValue, XhrFactory as XhrFactory$1 } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, InjectionToken, Inject, PLATFORM_ID, NgModule } from '@angular/core';\nimport { of, Observable } from 'rxjs';\nimport { concatMap, filter, map } from 'rxjs/operators';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Transforms an `HttpRequest` into a stream of `HttpEvent`s, one of which will likely be a\n * `HttpResponse`.\n *\n * `HttpHandler` is injectable. When injected, the handler instance dispatches requests to the\n * first interceptor in the chain, which dispatches to the second, etc, eventually reaching the\n * `HttpBackend`.\n *\n * In an `HttpInterceptor`, the `HttpHandler` parameter is the next interceptor in the chain.\n *\n * @publicApi\n */\nclass HttpHandler {\n}\n/**\n * A final `HttpHandler` which will dispatch the request via browser HTTP APIs to a backend.\n *\n * Interceptors sit between the `HttpClient` interface and the `HttpBackend`.\n *\n * When injected, `HttpBackend` dispatches requests directly to the backend, without going\n * through the interceptor chain.\n *\n * @publicApi\n */\nclass HttpBackend {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Represents the header configuration options for an HTTP request.\n * Instances are immutable. Modifying methods return a cloned\n * instance with the change. The original object is never changed.\n *\n * @publicApi\n */\nclass HttpHeaders {\n /** Constructs a new HTTP header object with the given values.*/\n constructor(headers) {\n /**\n * Internal map of lowercased header names to the normalized\n * form of the name (the form seen first).\n */\n this.normalizedNames = new Map();\n /**\n * Queued updates to be materialized the next initialization.\n */\n this.lazyUpdate = null;\n if (!headers) {\n this.headers = new Map();\n }\n else if (typeof headers === 'string') {\n this.lazyInit = () => {\n this.headers = new Map();\n headers.split('\\n').forEach(line => {\n const index = line.indexOf(':');\n if (index > 0) {\n const name = line.slice(0, index);\n const key = name.toLowerCase();\n const value = line.slice(index + 1).trim();\n this.maybeSetNormalizedName(name, key);\n if (this.headers.has(key)) {\n this.headers.get(key).push(value);\n }\n else {\n this.headers.set(key, [value]);\n }\n }\n });\n };\n }\n else {\n this.lazyInit = () => {\n this.headers = new Map();\n Object.keys(headers).forEach(name => {\n let values = headers[name];\n const key = name.toLowerCase();\n if (typeof values === 'string') {\n values = [values];\n }\n if (values.length > 0) {\n this.headers.set(key, values);\n this.maybeSetNormalizedName(name, key);\n }\n });\n };\n }\n }\n /**\n * Checks for existence of a given header.\n *\n * @param name The header name to check for existence.\n *\n * @returns True if the header exists, false otherwise.\n */\n has(name) {\n this.init();\n return this.headers.has(name.toLowerCase());\n }\n /**\n * Retrieves the first value of a given header.\n *\n * @param name The header name.\n *\n * @returns The value string if the header exists, null otherwise\n */\n get(name) {\n this.init();\n const values = this.headers.get(name.toLowerCase());\n return values && values.length > 0 ? values[0] : null;\n }\n /**\n * Retrieves the names of the headers.\n *\n * @returns A list of header names.\n */\n keys() {\n this.init();\n return Array.from(this.normalizedNames.values());\n }\n /**\n * Retrieves a list of values for a given header.\n *\n * @param name The header name from which to retrieve values.\n *\n * @returns A string of values if the header exists, null otherwise.\n */\n getAll(name) {\n this.init();\n return this.headers.get(name.toLowerCase()) || null;\n }\n /**\n * Appends a new value to the existing set of values for a header\n * and returns them in a clone of the original instance.\n *\n * @param name The header name for which to append the values.\n * @param value The value to append.\n *\n * @returns A clone of the HTTP headers object with the value appended to the given header.\n */\n append(name, value) {\n return this.clone({ name, value, op: 'a' });\n }\n /**\n * Sets or modifies a value for a given header in a clone of the original instance.\n * If the header already exists, its value is replaced with the given value\n * in the returned object.\n *\n * @param name The header name.\n * @param value The value or values to set or overide for the given header.\n *\n * @returns A clone of the HTTP headers object with the newly set header value.\n */\n set(name, value) {\n return this.clone({ name, value, op: 's' });\n }\n /**\n * Deletes values for a given header in a clone of the original instance.\n *\n * @param name The header name.\n * @param value The value or values to delete for the given header.\n *\n * @returns A clone of the HTTP headers object with the given value deleted.\n */\n delete(name, value) {\n return this.clone({ name, value, op: 'd' });\n }\n maybeSetNormalizedName(name, lcName) {\n if (!this.normalizedNames.has(lcName)) {\n this.normalizedNames.set(lcName, name);\n }\n }\n init() {\n if (!!this.lazyInit) {\n if (this.lazyInit instanceof HttpHeaders) {\n this.copyFrom(this.lazyInit);\n }\n else {\n this.lazyInit();\n }\n this.lazyInit = null;\n if (!!this.lazyUpdate) {\n this.lazyUpdate.forEach(update => this.applyUpdate(update));\n this.lazyUpdate = null;\n }\n }\n }\n copyFrom(other) {\n other.init();\n Array.from(other.headers.keys()).forEach(key => {\n this.headers.set(key, other.headers.get(key));\n this.normalizedNames.set(key, other.normalizedNames.get(key));\n });\n }\n clone(update) {\n const clone = new HttpHeaders();\n clone.lazyInit =\n (!!this.lazyInit && this.lazyInit instanceof HttpHeaders) ? this.lazyInit : this;\n clone.lazyUpdate = (this.lazyUpdate || []).concat([update]);\n return clone;\n }\n applyUpdate(update) {\n const key = update.name.toLowerCase();\n switch (update.op) {\n case 'a':\n case 's':\n let value = update.value;\n if (typeof value === 'string') {\n value = [value];\n }\n if (value.length === 0) {\n return;\n }\n this.maybeSetNormalizedName(update.name, key);\n const base = (update.op === 'a' ? this.headers.get(key) : undefined) || [];\n base.push(...value);\n this.headers.set(key, base);\n break;\n case 'd':\n const toDelete = update.value;\n if (!toDelete) {\n this.headers.delete(key);\n this.normalizedNames.delete(key);\n }\n else {\n let existing = this.headers.get(key);\n if (!existing) {\n return;\n }\n existing = existing.filter(value => toDelete.indexOf(value) === -1);\n if (existing.length === 0) {\n this.headers.delete(key);\n this.normalizedNames.delete(key);\n }\n else {\n this.headers.set(key, existing);\n }\n }\n break;\n }\n }\n /**\n * @internal\n */\n forEach(fn) {\n this.init();\n Array.from(this.normalizedNames.keys())\n .forEach(key => fn(this.normalizedNames.get(key), this.headers.get(key)));\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Provides encoding and decoding of URL parameter and query-string values.\n *\n * Serializes and parses URL parameter keys and values to encode and decode them.\n * If you pass URL query parameters without encoding,\n * the query parameters can be misinterpreted at the receiving end.\n *\n *\n * @publicApi\n */\nclass HttpUrlEncodingCodec {\n /**\n * Encodes a key name for a URL parameter or query-string.\n * @param key The key name.\n * @returns The encoded key name.\n */\n encodeKey(key) {\n return standardEncoding(key);\n }\n /**\n * Encodes the value of a URL parameter or query-string.\n * @param value The value.\n * @returns The encoded value.\n */\n encodeValue(value) {\n return standardEncoding(value);\n }\n /**\n * Decodes an encoded URL parameter or query-string key.\n * @param key The encoded key name.\n * @returns The decoded key name.\n */\n decodeKey(key) {\n return decodeURIComponent(key);\n }\n /**\n * Decodes an encoded URL parameter or query-string value.\n * @param value The encoded value.\n * @returns The decoded value.\n */\n decodeValue(value) {\n return decodeURIComponent(value);\n }\n}\nfunction paramParser(rawParams, codec) {\n const map = new Map();\n if (rawParams.length > 0) {\n // The `window.location.search` can be used while creating an instance of the `HttpParams` class\n // (e.g. `new HttpParams({ fromString: window.location.search })`). The `window.location.search`\n // may start with the `?` char, so we strip it if it's present.\n const params = rawParams.replace(/^\\?/, '').split('&');\n params.forEach((param) => {\n const eqIdx = param.indexOf('=');\n const [key, val] = eqIdx == -1 ?\n [codec.decodeKey(param), ''] :\n [codec.decodeKey(param.slice(0, eqIdx)), codec.decodeValue(param.slice(eqIdx + 1))];\n const list = map.get(key) || [];\n list.push(val);\n map.set(key, list);\n });\n }\n return map;\n}\n/**\n * Encode input string with standard encodeURIComponent and then un-encode specific characters.\n */\nconst STANDARD_ENCODING_REGEX = /%(\\d[a-f0-9])/gi;\nconst STANDARD_ENCODING_REPLACEMENTS = {\n '40': '@',\n '3A': ':',\n '24': '$',\n '2C': ',',\n '3B': ';',\n '2B': '+',\n '3D': '=',\n '3F': '?',\n '2F': '/',\n};\nfunction standardEncoding(v) {\n return encodeURIComponent(v).replace(STANDARD_ENCODING_REGEX, (s, t) => { var _a; return (_a = STANDARD_ENCODING_REPLACEMENTS[t]) !== null && _a !== void 0 ? _a : s; });\n}\nfunction valueToString(value) {\n return `${value}`;\n}\n/**\n * An HTTP request/response body that represents serialized parameters,\n * per the MIME type `application/x-www-form-urlencoded`.\n *\n * This class is immutable; all mutation operations return a new instance.\n *\n * @publicApi\n */\nclass HttpParams {\n constructor(options = {}) {\n this.updates = null;\n this.cloneFrom = null;\n this.encoder = options.encoder || new HttpUrlEncodingCodec();\n if (!!options.fromString) {\n if (!!options.fromObject) {\n throw new Error(`Cannot specify both fromString and fromObject.`);\n }\n this.map = paramParser(options.fromString, this.encoder);\n }\n else if (!!options.fromObject) {\n this.map = new Map();\n Object.keys(options.fromObject).forEach(key => {\n const value = options.fromObject[key];\n this.map.set(key, Array.isArray(value) ? value : [value]);\n });\n }\n else {\n this.map = null;\n }\n }\n /**\n * Reports whether the body includes one or more values for a given parameter.\n * @param param The parameter name.\n * @returns True if the parameter has one or more values,\n * false if it has no value or is not present.\n */\n has(param) {\n this.init();\n return this.map.has(param);\n }\n /**\n * Retrieves the first value for a parameter.\n * @param param The parameter name.\n * @returns The first value of the given parameter,\n * or `null` if the parameter is not present.\n */\n get(param) {\n this.init();\n const res = this.map.get(param);\n return !!res ? res[0] : null;\n }\n /**\n * Retrieves all values for a parameter.\n * @param param The parameter name.\n * @returns All values in a string array,\n * or `null` if the parameter not present.\n */\n getAll(param) {\n this.init();\n return this.map.get(param) || null;\n }\n /**\n * Retrieves all the parameters for this body.\n * @returns The parameter names in a string array.\n */\n keys() {\n this.init();\n return Array.from(this.map.keys());\n }\n /**\n * Appends a new value to existing values for a parameter.\n * @param param The parameter name.\n * @param value The new value to add.\n * @return A new body with the appended value.\n */\n append(param, value) {\n return this.clone({ param, value, op: 'a' });\n }\n /**\n * Constructs a new body with appended values for the given parameter name.\n * @param params parameters and values\n * @return A new body with the new value.\n */\n appendAll(params) {\n const updates = [];\n Object.keys(params).forEach(param => {\n const value = params[param];\n if (Array.isArray(value)) {\n value.forEach(_value => {\n updates.push({ param, value: _value, op: 'a' });\n });\n }\n else {\n updates.push({ param, value: value, op: 'a' });\n }\n });\n return this.clone(updates);\n }\n /**\n * Replaces the value for a parameter.\n * @param param The parameter name.\n * @param value The new value.\n * @return A new body with the new value.\n */\n set(param, value) {\n return this.clone({ param, value, op: 's' });\n }\n /**\n * Removes a given value or all values from a parameter.\n * @param param The parameter name.\n * @param value The value to remove, if provided.\n * @return A new body with the given value removed, or with all values\n * removed if no value is specified.\n */\n delete(param, value) {\n return this.clone({ param, value, op: 'd' });\n }\n /**\n * Serializes the body to an encoded string, where key-value pairs (separated by `=`) are\n * separated by `&`s.\n */\n toString() {\n this.init();\n return this.keys()\n .map(key => {\n const eKey = this.encoder.encodeKey(key);\n // `a: ['1']` produces `'a=1'`\n // `b: []` produces `''`\n // `c: ['1', '2']` produces `'c=1&c=2'`\n return this.map.get(key).map(value => eKey + '=' + this.encoder.encodeValue(value))\n .join('&');\n })\n // filter out empty values because `b: []` produces `''`\n // which results in `a=1&&c=1&c=2` instead of `a=1&c=1&c=2` if we don't\n .filter(param => param !== '')\n .join('&');\n }\n clone(update) {\n const clone = new HttpParams({ encoder: this.encoder });\n clone.cloneFrom = this.cloneFrom || this;\n clone.updates = (this.updates || []).concat(update);\n return clone;\n }\n init() {\n if (this.map === null) {\n this.map = new Map();\n }\n if (this.cloneFrom !== null) {\n this.cloneFrom.init();\n this.cloneFrom.keys().forEach(key => this.map.set(key, this.cloneFrom.map.get(key)));\n this.updates.forEach(update => {\n switch (update.op) {\n case 'a':\n case 's':\n const base = (update.op === 'a' ? this.map.get(update.param) : undefined) || [];\n base.push(valueToString(update.value));\n this.map.set(update.param, base);\n break;\n case 'd':\n if (update.value !== undefined) {\n let base = this.map.get(update.param) || [];\n const idx = base.indexOf(valueToString(update.value));\n if (idx !== -1) {\n base.splice(idx, 1);\n }\n if (base.length > 0) {\n this.map.set(update.param, base);\n }\n else {\n this.map.delete(update.param);\n }\n }\n else {\n this.map.delete(update.param);\n break;\n }\n }\n });\n this.cloneFrom = this.updates = null;\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A token used to manipulate and access values stored in `HttpContext`.\n *\n * @publicApi\n */\nclass HttpContextToken {\n constructor(defaultValue) {\n this.defaultValue = defaultValue;\n }\n}\n/**\n * Http context stores arbitrary user defined values and ensures type safety without\n * actually knowing the types. It is backed by a `Map` and guarantees that keys do not clash.\n *\n * This context is mutable and is shared between cloned requests unless explicitly specified.\n *\n * @usageNotes\n *\n * ### Usage Example\n *\n * ```typescript\n * // inside cache.interceptors.ts\n * export const IS_CACHE_ENABLED = new HttpContextToken<boolean>(() => false);\n *\n * export class CacheInterceptor implements HttpInterceptor {\n *\n * intercept(req: HttpRequest<any>, delegate: HttpHandler): Observable<HttpEvent<any>> {\n * if (req.context.get(IS_CACHE_ENABLED) === true) {\n * return ...;\n * }\n * return delegate.handle(req);\n * }\n * }\n *\n * // inside a service\n *\n * this.httpClient.get('/api/weather', {\n * context: new HttpContext().set(IS_CACHE_ENABLED, true)\n * }).subscribe(...);\n * ```\n *\n * @publicApi\n */\nclass HttpContext {\n constructor() {\n this.map = new Map();\n }\n /**\n * Store a value in the context. If a value is already present it will be overwritten.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n * @param value The value to store.\n *\n * @returns A reference to itself for easy chaining.\n */\n set(token, value) {\n this.map.set(token, value);\n return this;\n }\n /**\n * Retrieve the value associated with the given token.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n *\n * @returns The stored value or default if one is defined.\n */\n get(token) {\n if (!this.map.has(token)) {\n this.map.set(token, token.defaultValue());\n }\n return this.map.get(token);\n }\n /**\n * Delete the value associated with the given token.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n *\n * @returns A reference to itself for easy chaining.\n */\n delete(token) {\n this.map.delete(token);\n return this;\n }\n /**\n * Checks for existence of a given token.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n *\n * @returns True if the token exists, false otherwise.\n */\n has(token) {\n return this.map.has(token);\n }\n /**\n * @returns a list of tokens currently stored in the context.\n */\n keys() {\n return this.map.keys();\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Determine whether the given HTTP method may include a body.\n */\nfunction mightHaveBody(method) {\n switch (method) {\n case 'DELETE':\n case 'GET':\n case 'HEAD':\n case 'OPTIONS':\n case 'JSONP':\n return false;\n default:\n return true;\n }\n}\n/**\n * Safely assert whether the given value is an ArrayBuffer.\n *\n * In some execution environments ArrayBuffer is not defined.\n */\nfunction isArrayBuffer(value) {\n return typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer;\n}\n/**\n * Safely assert whether the given value is a Blob.\n *\n * In some execution environments Blob is not defined.\n */\nfunction isBlob(value) {\n return typeof Blob !== 'undefined' && value instanceof Blob;\n}\n/**\n * Safely assert whether the given value is a FormData instance.\n *\n * In some execution environments FormData is not defined.\n */\nfunction isFormData(value) {\n return typeof FormData !== 'undefined' && value instanceof FormData;\n}\n/**\n * Safely assert whether the given value is a URLSearchParams instance.\n *\n * In some execution environments URLSearchParams is not defined.\n */\nfunction isUrlSearchParams(value) {\n return typeof URLSearchParams !== 'undefined' && value instanceof URLSearchParams;\n}\n/**\n * An outgoing HTTP request with an optional typed body.\n *\n * `HttpRequest` represents an outgoing request, including URL, method,\n * headers, body, and other request configuration options. Instances should be\n * assumed to be immutable. To modify a `HttpRequest`, the `clone`\n * method should be used.\n *\n * @publicApi\n */\nclass HttpRequest {\n constructor(method, url, third, fourth) {\n this.url = url;\n /**\n * The request body, or `null` if one isn't set.\n *\n * Bodies are not enforced to be immutable, as they can include a reference to any\n * user-defined data type. However, interceptors should take care to preserve\n * idempotence by treating them as such.\n */\n this.body = null;\n /**\n * Whether this request should be made in a way that exposes progress events.\n *\n * Progress events are expensive (change detection runs on each event) and so\n * they should only be requested if the consumer intends to monitor them.\n */\n this.reportProgress = false;\n /**\n * Whether this request should be sent with outgoing credentials (cookies).\n */\n this.withCredentials = false;\n /**\n * The expected response type of the server.\n *\n * This is used to parse the response appropriately before returning it to\n * the requestee.\n */\n this.responseType = 'json';\n this.method = method.toUpperCase();\n // Next, need to figure out which argument holds the HttpRequestInit\n // options, if any.\n let options;\n // Check whether a body argument is expected. The only valid way to omit\n // the body argument is to use a known no-body method like GET.\n if (mightHaveBody(this.method) || !!fourth) {\n // Body is the third argument, options are the fourth.\n this.body = (third !== undefined) ? third : null;\n options = fourth;\n }\n else {\n // No body required, options are the third argument. The body stays null.\n options = third;\n }\n // If options have been passed, interpret them.\n if (options) {\n // Normalize reportProgress and withCredentials.\n this.reportProgress = !!options.reportProgress;\n this.withCredentials = !!options.withCredentials;\n // Override default response type of 'json' if one is provided.\n if (!!options.responseType) {\n this.responseType = options.responseType;\n }\n // Override headers if they're provided.\n if (!!options.headers) {\n this.headers = options.headers;\n }\n if (!!options.context) {\n this.context = options.context;\n }\n if (!!options.params) {\n this.params = options.params;\n }\n }\n // If no headers have been passed in, construct a new HttpHeaders instance.\n if (!this.headers) {\n this.headers = new HttpHeaders();\n }\n // If no context have been passed in, construct a new HttpContext instance.\n if (!this.context) {\n this.context = new HttpContext();\n }\n // If no parameters have been passed in, construct a new HttpUrlEncodedParams instance.\n if (!this.params) {\n this.params = new HttpParams();\n this.urlWithParams = url;\n }\n else {\n // Encode the parameters to a string in preparation for inclusion in the URL.\n const params = this.params.toString();\n if (params.length === 0) {\n // No parameters, the visible URL is just the URL given at creation time.\n this.urlWithParams = url;\n }\n else {\n // Does the URL already have query parameters? Look for '?'.\n const qIdx = url.indexOf('?');\n // There are 3 cases to handle:\n // 1) No existing parameters -> append '?' followed by params.\n // 2) '?' exists and is followed by existing query string ->\n // append '&' followed by params.\n // 3) '?' exists at the end of the url -> append params directly.\n // This basically amounts to determining the character, if any, with\n // which to join the URL and parameters.\n const sep = qIdx === -1 ? '?' : (qIdx < url.length - 1 ? '&' : '');\n this.urlWithParams = url + sep + params;\n }\n }\n }\n /**\n * Transform the free-form body into a serialized format suitable for\n * transmission to the server.\n */\n serializeBody() {\n // If no body is present, no need to serialize it.\n if (this.body === null) {\n return null;\n }\n // Check whether the body is already in a serialized form. If so,\n // it can just be returned directly.\n if (isArrayBuffer(this.body) || isBlob(this.body) || isFormData(this.body) ||\n isUrlSearchParams(this.body) || typeof this.body === 'string') {\n return this.body;\n }\n // Check whether the body is an instance of HttpUrlEncodedParams.\n if (this.body instanceof HttpParams) {\n return this.body.toString();\n }\n // Check whether the body is an object or array, and serialize with JSON if so.\n if (typeof this.body === 'object' || typeof this.body === 'boolean' ||\n Array.isArray(this.body)) {\n return JSON.stringify(this.body);\n }\n // Fall back on toString() for everything else.\n return this.body.toString();\n }\n /**\n * Examine the body and attempt to infer an appropriate MIME type\n * for it.\n *\n * If no such type can be inferred, this method will return `null`.\n */\n detectContentTypeHeader() {\n // An empty body has no content type.\n if (this.body === null) {\n return null;\n }\n // FormData bodies rely on the browser's content type assignment.\n if (isFormData(this.body)) {\n return null;\n }\n // Blobs usually have their own content type. If it doesn't, then\n // no type can be inferred.\n if (isBlob(this.body)) {\n return this.body.type || null;\n }\n // Array buffers have unknown contents and thus no type can be inferred.\n if (isArrayBuffer(this.body)) {\n return null;\n }\n // Technically, strings could be a form of JSON data, but it's safe enough\n // to assume they're plain strings.\n if (typeof this.body === 'string') {\n return 'text/plain';\n }\n // `HttpUrlEncodedParams` has its own content-type.\n if (this.body instanceof HttpParams) {\n return 'application/x-www-form-urlencoded;charset=UTF-8';\n }\n // Arrays, objects, boolean and numbers will be encoded as JSON.\n if (typeof this.body === 'object' || typeof this.body === 'number' ||\n typeof this.body === 'boolean') {\n return 'application/json';\n }\n // No type could be inferred.\n return null;\n }\n clone(update = {}) {\n var _a;\n // For method, url, and responseType, take the current value unless\n // it is overridden in the update hash.\n const method = update.method || this.method;\n const url = update.url || this.url;\n const responseType = update.responseType || this.responseType;\n // The body is somewhat special - a `null` value in update.body means\n // whatever current body is present is being overridden with an empty\n // body, whereas an `undefined` value in update.body implies no\n // override.\n const body = (update.body !== undefined) ? update.body : this.body;\n // Carefully handle the boolean options to differentiate between\n // `false` and `undefined` in the update args.\n const withCredentials = (update.withCredentials !== undefined) ? update.withCredentials : this.withCredentials;\n const reportProgress = (update.reportProgress !== undefined) ? update.reportProgress : this.reportProgress;\n // Headers and params may be appended to if `setHeaders` or\n // `setParams` are used.\n let headers = update.headers || this.headers;\n let params = update.params || this.params;\n // Pass on context if needed\n const context = (_a = update.context) !== null && _a !== void 0 ? _a : this.context;\n // Check whether the caller has asked to add headers.\n if (update.setHeaders !== undefined) {\n // Set every requested header.\n headers =\n Object.keys(update.setHeaders)\n .reduce((headers, name) => headers.set(name, update.setHeaders[name]), headers);\n }\n // Check whether the caller has asked to set params.\n if (update.setParams) {\n // Set every requested param.\n params = Object.keys(update.setParams)\n .reduce((params, param) => params.set(param, update.setParams[param]), params);\n }\n // Finally, construct the new HttpRequest using the pieces from above.\n return new HttpRequest(method, url, body, {\n params,\n headers,\n context,\n reportProgress,\n responseType,\n withCredentials,\n });\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Type enumeration for the different kinds of `HttpEvent`.\n *\n * @publicApi\n */\nvar HttpEventType;\n(function (HttpEventType) {\n /**\n * The request was sent out over the wire.\n */\n HttpEventType[HttpEventType[\"Sent\"] = 0] = \"Sent\";\n /**\n * An upload progress event was received.\n */\n HttpEventType[HttpEventType[\"UploadProgress\"] = 1] = \"UploadProgress\";\n /**\n * The response status code and headers were received.\n */\n HttpEventType[HttpEventType[\"ResponseHeader\"] = 2] = \"ResponseHeader\";\n /**\n * A download progress event was received.\n */\n HttpEventType[HttpEventType[\"DownloadProgress\"] = 3] = \"DownloadProgress\";\n /**\n * The full response including the body was received.\n */\n HttpEventType[HttpEventType[\"Response\"] = 4] = \"Response\";\n /**\n * A custom event from an interceptor or a backend.\n */\n HttpEventType[HttpEventType[\"User\"] = 5] = \"User\";\n})(HttpEventType || (HttpEventType = {}));\n/**\n * Base class for both `HttpResponse` and `HttpHeaderResponse`.\n *\n * @publicApi\n */\nclass HttpResponseBase {\n /**\n * Super-constructor for all responses.\n *\n * The single parameter accepted is an initialization hash. Any properties\n * of the response passed there will override the default values.\n */\n constructor(init, defaultStatus = 200 /* Ok */, defaultStatusText = 'OK') {\n // If the hash has values passed, use them to initialize the response.\n // Otherwise use the default values.\n this.headers = init.headers || new HttpHeaders();\n this.status = init.status !== undefined ? init.status : defaultStatus;\n this.statusText = init.statusText || defaultStatusText;\n this.url = init.url || null;\n // Cache the ok value to avoid defining a getter.\n this.ok = this.status >= 200 && this.status < 300;\n }\n}\n/**\n * A partial HTTP response which only includes the status and header data,\n * but no response body.\n *\n * `HttpHeaderResponse` is a `HttpEvent` available on the response\n * event stream, only when progress events are requested.\n *\n * @publicApi\n */\nclass HttpHeaderResponse extends HttpResponseBase {\n /**\n * Create a new `HttpHeaderResponse` with the given parameters.\n */\n constructor(init = {}) {\n super(init);\n this.type = HttpEventType.ResponseHeader;\n }\n /**\n * Copy this `HttpHeaderResponse`, overriding its contents with the\n * given parameter hash.\n */\n clone(update = {}) {\n // Perform a straightforward initialization of the new HttpHeaderResponse,\n // overriding the current parameters with new ones if given.\n return new HttpHeaderResponse({\n headers: update.headers || this.headers,\n status: update.status !== undefined ? update.status : this.status,\n statusText: update.statusText || this.statusText,\n url: update.url || this.url || undefined,\n });\n }\n}\n/**\n * A full HTTP response, including a typed response body (which may be `null`\n * if one was not returned).\n *\n * `HttpResponse` is a `HttpEvent` available on the response event\n * stream.\n *\n * @publicApi\n */\nclass HttpResponse extends HttpResponseBase {\n /**\n * Construct a new `HttpResponse`.\n */\n constructor(init = {}) {\n super(init);\n this.type = HttpEventType.Response;\n this.body = init.body !== undefined ? init.body : null;\n }\n clone(update = {}) {\n return new HttpResponse({\n body: (update.body !== undefined) ? update.body : this.body,\n headers: update.headers || this.headers,\n status: (update.status !== undefined) ? update.status : this.status,\n statusText: update.statusText || this.statusText,\n url: update.url || this.url || undefined,\n });\n }\n}\n/**\n * A response that represents an error or failure, either from a\n * non-successful HTTP status, an error while executing the request,\n * or some other failure which occurred during the parsing of the response.\n *\n * Any error returned on the `Observable` response stream will be\n * wrapped in an `HttpErrorResponse` to provide additional context about\n * the state of the HTTP layer when the error occurred. The error property\n * will contain either a wrapped Error object or the error response returned\n * from the server.\n *\n * @publicApi\n */\nclass HttpErrorResponse extends HttpResponseBase {\n constructor(init) {\n // Initialize with a default status of 0 / Unknown Error.\n super(init, 0, 'Unknown Error');\n this.name = 'HttpErrorResponse';\n /**\n * Errors are never okay, even when the status code is in the 2xx success range.\n */\n this.ok = false;\n // If the response was successful, then this was a parse error. Otherwise, it was\n // a protocol-level failure of some sort. Either the request failed in transit\n // or the server returned an unsuccessful status code.\n if (this.status >= 200 && this.status < 300) {\n this.message = `Http failure during parsing for ${init.url || '(unknown url)'}`;\n }\n else {\n this.message = `Http failure response for ${init.url || '(unknown url)'}: ${init.status} ${init.statusText}`;\n }\n this.error = init.error || null;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Constructs an instance of `HttpRequestOptions<T>` from a source `HttpMethodOptions` and\n * the given `body`. This function clones the object and adds the body.\n *\n * Note that the `responseType` *options* value is a String that identifies the\n * single data type of the response.\n * A single overload version of the method handles each response type.\n * The value of `responseType` cannot be a union, as the combined signature could imply.\n *\n */\nfunction addBody(options, body) {\n return {\n body,\n headers: options.headers,\n context: options.context,\n observe: options.observe,\n params: options.params,\n reportProgress: options.reportProgress,\n responseType: options.responseType,\n withCredentials: options.withCredentials,\n };\n}\n/**\n * Performs HTTP requests.\n * This service is available as an injectable class, with methods to perform HTTP requests.\n * Each request method has multiple signatures, and the return type varies based on\n * the signature that is called (mainly the values of `observe` and `responseType`).\n *\n * Note that the `responseType` *options* value is a String that identifies the\n * single data type of the response.\n * A single overload version of the method handles each response type.\n * The value of `responseType` cannot be a union, as the combined signature could imply.\n\n *\n * @usageNotes\n * Sample HTTP requests for the [Tour of Heroes](/tutorial/toh-pt0) application.\n *\n * ### HTTP Request Example\n *\n * ```\n * // GET heroes whose name contains search term\n * searchHeroes(term: string): observable<Hero[]>{\n *\n * const params = new HttpParams({fromString: 'name=term'});\n * return this.httpClient.request('GET', this.heroesUrl, {responseType:'json', params});\n * }\n * ```\n *\n * Alternatively, the parameter string can be used without invoking HttpParams\n * by directly joining to the URL.\n * ```\n * this.httpClient.request('GET', this.heroesUrl + '?' + 'name=term', {responseType:'json'});\n * ```\n *\n *\n * ### JSONP Example\n * ```\n * requestJsonp(url, callback = 'callback') {\n * return this.httpClient.jsonp(this.heroesURL, callback);\n * }\n * ```\n *\n * ### PATCH Example\n * ```\n * // PATCH one of the heroes' name\n * patchHero (id: number, heroName: string): Observable<{}> {\n * const url = `${this.heroesUrl}/${id}`; // PATCH api/heroes/42\n * return this.httpClient.patch(url, {name: heroName}, httpOptions)\n * .pipe(catchError(this.handleError('patchHero')));\n * }\n * ```\n *\n * @see [HTTP Guide](guide/http)\n * @see [HTTP Request](api/common/http/HttpRequest)\n *\n * @publicApi\n */\nclass HttpClient {\n constructor(handler) {\n this.handler = handler;\n }\n /**\n * Constructs an observable for a generic HTTP request that, when subscribed,\n * fires the request through the chain of registered interceptors and on to the\n * server.\n *\n * You can pass an `HttpRequest` directly as the only parameter. In this case,\n * the call returns an observable of the raw `HttpEvent` stream.\n *\n * Alternatively you can pass an HTTP method as the first parameter,\n * a URL string as the second, and an options hash containing the request body as the third.\n * See `addBody()`. In this case, the specified `responseType` and `observe` options determine the\n * type of returned observable.\n * * The `responseType` value determines how a successful response body is parsed.\n * * If `responseType` is the default `json`, you can pass a type interface for the resulting\n * object as a type parameter to the call.\n *\n * The `observe` value determines the return type, according to what you are interested in\n * observing.\n * * An `observe` value of events returns an observable of the raw `HttpEvent` stream, including\n * progress events by default.\n * * An `observe` value of response returns an observable of `HttpResponse<T>`,\n * where the `T` parameter depends on the `responseType` and any optionally provided type\n * parameter.\n * * An `observe` value of body returns an observable of `<T>` with the same `T` body type.\n *\n */\n request(first, url, options = {}) {\n let req;\n // First, check whether the primary argument is an instance of `HttpRequest`.\n if (first instanceof HttpRequest) {\n // It is. The other arguments must be undefined (per the signatures) and can be\n // ignored.\n req = first;\n }\n else {\n // It's a string, so it represents a URL. Construct a request based on it,\n // and incorporate the remaining arguments (assuming `GET` unless a method is\n // provided.\n // Figure out the headers.\n let headers = undefined;\n if (options.headers instanceof HttpHeaders) {\n headers = options.headers;\n }\n else {\n headers = new HttpHeaders(options.headers);\n }\n // Sort out parameters.\n let params = undefined;\n if (!!options.params) {\n if (options.params instanceof HttpParams) {\n params = options.params;\n }\n else {\n params = new HttpParams({ fromObject: options.params });\n }\n }\n // Construct the request.\n req = new HttpRequest(first, url, (options.body !== undefined ? options.body : null), {\n headers,\n context: options.context,\n params,\n reportProgress: options.reportProgress,\n // By default, JSON is assumed to be returned for all calls.\n responseType: options.responseType || 'json',\n withCredentials: options.withCredentials,\n });\n }\n // Start with an Observable.of() the initial request, and run the handler (which\n // includes all interceptors) inside a concatMap(). This way, the handler runs\n // inside an Observable chain, which causes interceptors to be re-run on every\n // subscription (this also makes retries re-run the handler, including interceptors).\n const events$ = of(req).pipe(concatMap((req) => this.handler.handle(req)));\n // If coming via the API signature which accepts a previously constructed HttpRequest,\n // the only option is to get the event stream. Otherwise, return the event stream if\n // that is what was requested.\n if (first instanceof HttpRequest || options.observe === 'events') {\n return events$;\n }\n // The requested stream contains either the full response or the body. In either\n // case, the first step is to filter the event stream to extract a stream of\n // responses(s).\n const res$ = events$.pipe(filter((event) => event instanceof HttpResponse));\n // Decide which stream to return.\n switch (options.observe || 'body') {\n case 'body':\n // The requested stream is the body. Map the response stream to the response\n // body. This could be done more simply, but a misbehaving interceptor might\n // transform the response body into a different format and ignore the requested\n // responseType. Guard against this by validating that the response is of the\n // requested type.\n switch (req.responseType) {\n case 'arraybuffer':\n return res$.pipe(map((res) => {\n // Validate that the body is an ArrayBuffer.\n if (res.body !== null && !(res.body instanceof ArrayBuffer)) {\n throw new Error('Response is not an ArrayBuffer.');\n }\n return res.body;\n }));\n case 'blob':\n return res$.pipe(map((res) => {\n // Validate that the body is a Blob.\n if (res.body !== null && !(res.body instanceof Blob)) {\n throw new Error('Response is not a Blob.');\n }\n return res.body;\n }));\n case 'text':\n return res$.pipe(map((res) => {\n // Validate that the body is a string.\n if (res.body !== null && typeof res.body !== 'string') {\n throw new Error('Response is not a string.');\n }\n return res.body;\n }));\n case 'json':\n default:\n // No validation needed for JSON responses, as they can be of any type.\n return res$.pipe(map((res) => res.body));\n }\n case 'response':\n // The response stream was requested directly, so return it.\n return res$;\n default:\n // Guard against new future observe types being added.\n throw new Error(`Unreachable: unhandled observe type ${options.observe}}`);\n }\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `DELETE` request to execute on the server. See the individual overloads for\n * details on the return type.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n */\n delete(url, options = {}) {\n return this.request('DELETE', url, options);\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `GET` request to execute on the server. See the individual overloads for\n * details on the return type.\n */\n get(url, options = {}) {\n return this.request('GET', url, options);\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `HEAD` request to execute on the server. The `HEAD` method returns\n * meta information about the resource without transferring the\n * resource itself. See the individual overloads for\n * details on the return type.\n */\n head(url, options = {}) {\n return this.request('HEAD', url, options);\n }\n /**\n * Constructs an `Observable` that, when subscribed, causes a request with the special method\n * `JSONP` to be dispatched via the interceptor pipeline.\n * The [JSONP pattern](https://en.wikipedia.org/wiki/JSONP) works around limitations of certain\n * API endpoints that don't support newer,\n * and preferable [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) protocol.\n * JSONP treats the endpoint API as a JavaScript file and tricks the browser to process the\n * requests even if the API endpoint is not located on the same domain (origin) as the client-side\n * application making the request.\n * The endpoint API must support JSONP callback for JSONP requests to work.\n * The resource API returns the JSON response wrapped in a callback function.\n * You can pass the callback function name as one of the query parameters.\n * Note that JSONP requests can only be used with `GET` requests.\n *\n * @param url The resource URL.\n * @param callbackParam The callback function name.\n *\n */\n jsonp(url, callbackParam) {\n return this.request('JSONP', url, {\n params: new HttpParams().append(callbackParam, 'JSONP_CALLBACK'),\n observe: 'body',\n responseType: 'json',\n });\n }\n /**\n * Constructs an `Observable` that, when subscribed, causes the configured\n * `OPTIONS` request to execute on the server. This method allows the client\n * to determine the supported HTTP methods and other capabilities of an endpoint,\n * without implying a resource action. See the individual overloads for\n * details on the return type.\n */\n options(url, options = {}) {\n return this.request('OPTIONS', url, options);\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `PATCH` request to execute on the server. See the individual overloads for\n * details on the return type.\n */\n patch(url, body, options = {}) {\n return this.request('PATCH', url, addBody(options, body));\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `POST` request to execute on the server. The server responds with the location of\n * the replaced resource. See the individual overloads for\n * details on the return type.\n */\n post(url, body, options = {}) {\n return this.request('POST', url, addBody(options, body));\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `PUT` request to execute on the server. The `PUT` method replaces an existing resource\n * with a new set of values.\n * See the individual overloads for details on the return type.\n */\n put(url, body, options = {}) {\n return this.request('PUT', url, addBody(options, body));\n }\n}\nHttpClient.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: HttpClient, deps: [{ token: HttpHandler }], target: i0.ɵɵFactoryTarget.Injectable });\nHttpClient.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: HttpClient });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: HttpClient, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: HttpHandler }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * `HttpHandler` which applies an `HttpInterceptor` to an `HttpRequest`.\n *\n *\n */\nclass HttpInterceptorHandler {\n constructor(next, interceptor) {\n this.next = next;\n this.interceptor = interceptor;\n }\n handle(req) {\n return this.interceptor.intercept(req, this.next);\n }\n}\n/**\n * A multi-provider token that represents the array of registered\n * `HttpInterceptor` objects.\n *\n * @publicApi\n */\nconst HTTP_INTERCEPTORS = new InjectionToken('HTTP_INTERCEPTORS');\nclass NoopInterceptor {\n intercept(req, next) {\n return next.handle(req);\n }\n}\nNoopInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: NoopInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNoopInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: NoopInterceptor });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: NoopInterceptor, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Every request made through JSONP needs a callback name that's unique across the\n// whole page. Each request is assigned an id and the callback name is constructed\n// from that. The next id to be assigned is tracked in a global variable here that\n// is shared among all applications on the page.\nlet nextRequestId = 0;\n/**\n * When a pending <script> is unsubscribed we'll move it to this document, so it won't be\n * executed.\n */\nlet foreignDocument;\n// Error text given when a JSONP script is injected, but doesn't invoke the callback\n// passed in its URL.\nconst JSONP_ERR_NO_CALLBACK = 'JSONP injected script did not invoke callback.';\n// Error text given when a request is passed to the JsonpClientBackend that doesn't\n// have a request method JSONP.\nconst JSONP_ERR_WRONG_METHOD = 'JSONP requests must use JSONP request method.';\nconst JSONP_ERR_WRONG_RESPONSE_TYPE = 'JSONP requests must use Json response type.';\n/**\n * DI token/abstract type representing a map of JSONP callbacks.\n *\n * In the browser, this should always be the `window` object.\n *\n *\n */\nclass JsonpCallbackContext {\n}\n/**\n * Processes an `HttpRequest` with the JSONP method,\n * by performing JSONP style requests.\n * @see `HttpHandler`\n * @see `HttpXhrBackend`\n *\n * @publicApi\n */\nclass JsonpClientBackend {\n constructor(callbackMap, document) {\n this.callbackMap = callbackMap;\n this.document = document;\n /**\n * A resolved promise that can be used to schedule microtasks in the event handlers.\n */\n this.resolvedPromise = Promise.resolve();\n }\n /**\n * Get the name of the next callback method, by incrementing the global `nextRequestId`.\n */\n nextCallback() {\n return `ng_jsonp_callback_${nextRequestId++}`;\n }\n /**\n * Processes a JSONP request and returns an event stream of the results.\n * @param req The request object.\n * @returns An observable of the response events.\n *\n */\n handle(req) {\n // Firstly, check both the method and response type. If either doesn't match\n // then the request was improperly routed here and cannot be handled.\n if (req.method !== 'JSONP') {\n throw new Error(JSONP_ERR_WRONG_METHOD);\n }\n else if (req.responseType !== 'json') {\n throw new Error(JSONP_ERR_WRONG_RESPONSE_TYPE);\n }\n // Everything else happens inside the Observable boundary.\n return new Observable((observer) => {\n // The first step to make a request is to generate the callback name, and replace the\n // callback placeholder in the URL with the name. Care has to be taken here to ensure\n // a trailing &, if matched, gets inserted back into the URL in the correct place.\n const callback = this.nextCallback();\n const url = req.urlWithParams.replace(/=JSONP_CALLBACK(&|$)/, `=${callback}$1`);\n // Construct the <script> tag and point it at the URL.\n const node = this.document.createElement('script');\n node.src = url;\n // A JSONP request requires waiting for multiple callbacks. These variables\n // are closed over and track state across those callbacks.\n // The response object, if one has been received, or null otherwise.\n let body = null;\n // Whether the response callback has been called.\n let finished = false;\n // Set the response callback in this.callbackMap (which will be the window\n // object in the browser. The script being loaded via the <script> tag will\n // eventually call this callback.\n this.callbackMap[callback] = (data) => {\n // Data has been received from the JSONP script. Firstly, delete this callback.\n delete this.callbackMap[callback];\n // Set state to indicate data was received.\n body = data;\n finished = true;\n };\n // cleanup() is a utility closure that removes the <script> from the page and\n // the response callback from the window. This logic is used in both the\n // success, error, and cancellation paths, so it's extracted out for convenience.\n const cleanup = () => {\n // Remove the <script> tag if it's still on the page.\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n // Remove the response callback from the callbackMap (window object in the\n // browser).\n delete this.callbackMap[callback];\n };\n // onLoad() is the success callback which runs after the response callback\n // if the JSONP script loads successfully. The event itself is unimportant.\n // If something went wrong, onLoad() may run without the response callback\n // having been invoked.\n const onLoad = (event) => {\n // We wrap it in an extra Promise, to ensure the microtask\n // is scheduled after the loaded endpoint has executed any potential microtask itself,\n // which is not guaranteed in Internet Explorer and EdgeHTML. See issue #39496\n this.resolvedPromise.then(() => {\n // Cleanup the page.\n cleanup();\n // Check whether the response callback has run.\n if (!finished) {\n // It hasn't, something went wrong with the request. Return an error via\n // the Observable error path. All JSONP errors have status 0.\n observer.error(new HttpErrorResponse({\n url,\n status: 0,\n statusText: 'JSONP Error',\n error: new Error(JSONP_ERR_NO_CALLBACK),\n }));\n return;\n }\n // Success. body either contains the response body or null if none was\n // returned.\n observer.next(new HttpResponse({\n body,\n status: 200 /* Ok */,\n statusText: 'OK',\n url,\n }));\n // Complete the stream, the response is over.\n observer.complete();\n });\n };\n // onError() is the error callback, which runs if the script returned generates\n // a Javascript error. It emits the error via the Observable error channel as\n // a HttpErrorResponse.\n const onError = (error) => {\n cleanup();\n // Wrap the error in a HttpErrorResponse.\n observer.error(new HttpErrorResponse({\n error,\n status: 0,\n statusText: 'JSONP Error',\n url,\n }));\n };\n // Subscribe to both the success (load) and error events on the <script> tag,\n // and add it to the page.\n node.addEventListener('load', onLoad);\n node.addEventListener('error', onError);\n this.document.body.appendChild(node);\n // The request has now been successfully sent.\n observer.next({ type: HttpEventType.Sent });\n // Cancellation handler.\n return () => {\n if (!finished) {\n this.removeListeners(node);\n }\n // And finally, clean up the page.\n cleanup();\n };\n });\n }\n removeListeners(script) {\n // Issue #34818\n // Changing <script>'s ownerDocument will prevent it from execution.\n // https://html.spec.whatwg.org/multipage/scripting.html#execute-the-script-block\n if (!foreignDocument) {\n foreignDocument = this.document.implementation.createHTMLDocument();\n }\n foreignDocument.adoptNode(script);\n }\n}\nJsonpClientBackend.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: JsonpClientBackend, deps: [{ token: JsonpCallbackContext }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nJsonpClientBackend.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: JsonpClientBackend });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: JsonpClientBackend, decorators: [{\n type: Injectable\n }], ctorParameters: function () {\n return [{ type: JsonpCallbackContext }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }];\n } });\n/**\n * Identifies requests with the method JSONP and\n * shifts them to the `JsonpClientBackend`.\n *\n * @see `HttpInterceptor`\n *\n * @publicApi\n */\nclass JsonpInterceptor {\n constructor(jsonp) {\n this.jsonp = jsonp;\n }\n /**\n * Identifies and handles a given JSONP request.\n * @param req The outgoing request object to handle.\n * @param next The next interceptor in the chain, or the backend\n * if no interceptors remain in the chain.\n * @returns An observable of the event stream.\n */\n intercept(req, next) {\n if (req.method === 'JSONP') {\n return this.jsonp.handle(req);\n }\n // Fall through for normal HTTP requests.\n return next.handle(req);\n }\n}\nJsonpInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: JsonpInterceptor, deps: [{ token: JsonpClientBackend }], target: i0.ɵɵFactoryTarget.Injectable });\nJsonpInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: JsonpInterceptor });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: JsonpInterceptor, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: JsonpClientBackend }]; } });\n\nconst XSSI_PREFIX = /^\\)\\]\\}',?\\n/;\n/**\n * Determine an appropriate URL for the response, by checking either\n * XMLHttpRequest.responseURL or the X-Request-URL header.\n */\nfunction getResponseUrl(xhr) {\n if ('responseURL' in xhr && xhr.responseURL) {\n return xhr.responseURL;\n }\n if (/^X-Request-URL:/m.test(xhr.getAllResponseHeaders())) {\n return xhr.getResponseHeader('X-Request-URL');\n }\n return null;\n}\n/**\n * Uses `XMLHttpRequest` to send requests to a backend server.\n * @see `HttpHandler`\n * @see `JsonpClientBackend`\n *\n * @publicApi\n */\nclass HttpXhrBackend {\n constructor(xhrFactory) {\n this.xhrFactory = xhrFactory;\n }\n /**\n * Processes a request and returns a stream of response events.\n * @param req The request object.\n * @returns An observable of the response events.\n */\n handle(req) {\n // Quick check to give a better error message when a user attempts to use\n // HttpClient.jsonp() without installing the HttpClientJsonpModule\n if (req.method === 'JSONP') {\n throw new Error(`Attempted to construct Jsonp request without HttpClientJsonpModule installed.`);\n }\n // Everything happens on Observable subscription.\n return new Observable((observer) => {\n // Start by setting up the XHR object with request method, URL, and withCredentials flag.\n const xhr = this.xhrFactory.build();\n xhr.open(req.method, req.urlWithParams);\n if (!!req.withCredentials) {\n xhr.withCredentials = true;\n }\n // Add all the requested headers.\n req.headers.forEach((name, values) => xhr.setRequestHeader(name, values.join(',')));\n // Add an Accept header if one isn't present already.\n if (!req.headers.has('Accept')) {\n xhr.setRequestHeader('Accept', 'application/json, text/plain, */*');\n }\n // Auto-detect the Content-Type header if one isn't present already.\n if (!req.headers.has('Content-Type')) {\n const detectedType = req.detectContentTypeHeader();\n // Sometimes Content-Type detection fails.\n if (detectedType !== null) {\n xhr.setRequestHeader('Content-Type', detectedType);\n }\n }\n // Set the responseType if one was requested.\n if (req.responseType) {\n const responseType = req.responseType.toLowerCase();\n // JSON responses need to be processed as text. This is because if the server\n // returns an XSSI-prefixed JSON response, the browser will fail to parse it,\n // xhr.response will be null, and xhr.responseText cannot be accessed to\n // retrieve the prefixed JSON data in order to strip the prefix. Thus, all JSON\n // is parsed by first requesting text and then applying JSON.parse.\n xhr.responseType = ((responseType !== 'json') ? responseType : 'text');\n }\n // Serialize the request body if one is present. If not, this will be set to null.\n const reqBody = req.serializeBody();\n // If progress events are enabled, response headers will be delivered\n // in two events - the HttpHeaderResponse event and the full HttpResponse\n // event. However, since response headers don't change in between these\n // two events, it doesn't make sense to parse them twice. So headerResponse\n // caches the data extracted from the response whenever it's first parsed,\n // to ensure parsing isn't duplicated.\n let headerResponse = null;\n // partialFromXhr extracts the HttpHeaderResponse from the current XMLHttpRequest\n // state, and memoizes it into headerResponse.\n const partialFromXhr = () => {\n if (headerResponse !== null) {\n return headerResponse;\n }\n const statusText = xhr.statusText || 'OK';\n // Parse headers from XMLHttpRequest - this step is lazy.\n const headers = new HttpHeaders(xhr.getAllResponseHeaders());\n // Read the response URL from the XMLHttpResponse instance and fall back on the\n // request URL.\n const url = getResponseUrl(xhr) || req.url;\n // Construct the HttpHeaderResponse and memoize it.\n headerResponse = new HttpHeaderResponse({ headers, status: xhr.status, statusText, url });\n return headerResponse;\n };\n // Next, a few closures are defined for the various events which XMLHttpRequest can\n // emit. This allows them to be unregistered as event listeners later.\n // First up is the load event, which represents a response being fully available.\n const onLoad = () => {\n // Read response state from the memoized partial data.\n let { headers, status, statusText, url } = partialFromXhr();\n // The body will be read out if present.\n let body = null;\n if (status !== 204 /* NoContent */) {\n // Use XMLHttpRequest.response if set, responseText otherwise.\n body = (typeof xhr.response === 'undefined') ? xhr.responseText : xhr.response;\n }\n // Normalize another potential bug (this one comes from CORS).\n if (status === 0) {\n status = !!body ? 200 /* Ok */ : 0;\n }\n // ok determines whether the response will be transmitted on the event or\n // error channel. Unsuccessful status codes (not 2xx) will always be errors,\n // but a successful status code can still result in an error if the user\n // asked for JSON data and the body cannot be parsed as such.\n let ok = status >= 200 && status < 300;\n // Check whether the body needs to be parsed as JSON (in many cases the browser\n // will have done that already).\n if (req.responseType === 'json' && typeof body === 'string') {\n // Save the original body, before attempting XSSI prefix stripping.\n const originalBody = body;\n body = body.replace(XSSI_PREFIX, '');\n try {\n // Attempt the parse. If it fails, a parse error should be delivered to the user.\n body = body !== '' ? JSON.parse(body) : null;\n }\n catch (error) {\n // Since the JSON.parse failed, it's reasonable to assume this might not have been a\n // JSON response. Restore the original body (including any XSSI prefix) to deliver\n // a better error response.\n body = originalBody;\n // If this was an error request to begin with, leave it as a string, it probably\n // just isn't JSON. Otherwise, deliver the parsing error to the user.\n if (ok) {\n // Even though the response status was 2xx, this is still an error.\n ok = false;\n // The parse error contains the text of the body that failed to parse.\n body = { error, text: body };\n }\n }\n }\n if (ok) {\n // A successful response is delivered on the event stream.\n observer.next(new HttpResponse({\n body,\n headers,\n status,\n statusText,\n url: url || undefined,\n }));\n // The full body has been received and delivered, no further events\n // are possible. This request is complete.\n observer.complete();\n }\n else {\n // An unsuccessful request is delivered on the error channel.\n observer.error(new HttpErrorResponse({\n // The error in this case is the response body (error from the server).\n error: body,\n headers,\n status,\n statusText,\n url: url || undefined,\n }));\n }\n };\n // The onError callback is called when something goes wrong at the network level.\n // Connection timeout, DNS error, offline, etc. These are actual errors, and are\n // transmitted on the error channel.\n const onError = (error) => {\n const { url } = partialFromXhr();\n const res = new HttpErrorResponse({\n error,\n status: xhr.status || 0,\n statusText: xhr.statusText || 'Unknown Error',\n url: url || undefined,\n });\n observer.error(res);\n };\n // The sentHeaders flag tracks whether the HttpResponseHeaders event\n // has been sent on the stream. This is necessary to track if progress\n // is enabled since the event will be sent on only the first download\n // progerss event.\n let sentHeaders = false;\n // The download progress event handler, which is only registered if\n // progress events are enabled.\n const onDownProgress = (event) => {\n // Send the HttpResponseHeaders event if it hasn't been sent already.\n if (!sentHeaders) {\n observer.next(partialFromXhr());\n sentHeaders = true;\n }\n // Start building the download progress event to deliver on the response\n // event stream.\n let progressEvent = {\n type: HttpEventType.DownloadProgress,\n loaded: event.loaded,\n };\n // Set the total number of bytes in the event if it's available.\n if (event.lengthComputable) {\n progressEvent.total = event.total;\n }\n // If the request was for text content and a partial response is\n // available on XMLHttpRequest, include it in the progress event\n // to allow for streaming reads.\n if (req.responseType === 'text' && !!xhr.responseText) {\n progressEvent.partialText = xhr.responseText;\n }\n // Finally, fire the event.\n observer.next(progressEvent);\n };\n // The upload progress event handler, which is only registered if\n // progress events are enabled.\n const onUpProgress = (event) => {\n // Upload progress events are simpler. Begin building the progress\n // event.\n let progress = {\n type: HttpEventType.UploadProgress,\n loaded: event.loaded,\n };\n // If the total number of bytes being uploaded is available, include\n // it.\n if (event.lengthComputable) {\n progress.total = event.total;\n }\n // Send the event.\n observer.next(progress);\n };\n // By default, register for load and error events.\n xhr.addEventListener('load', onLoad);\n xhr.addEventListener('error', onError);\n xhr.addEventListener('timeout', onError);\n xhr.addEventListener('abort', onError);\n // Progress events are only enabled if requested.\n if (req.reportProgress) {\n // Download progress is always enabled if requested.\n xhr.addEventListener('progress', onDownProgress);\n // Upload progress depends on whether there is a body to upload.\n if (reqBody !== null && xhr.upload) {\n xhr.upload.addEventListener('progress', onUpProgress);\n }\n }\n // Fire the request, and notify the event stream that it was fired.\n xhr.send(reqBody);\n observer.next({ type: HttpEventType.Sent });\n // This is the return from the Observable function, which is the\n // request cancellation handler.\n return () => {\n // On a cancellation, remove all registered event listeners.\n xhr.removeEventListener('error', onError);\n xhr.removeEventListener('abort', onError);\n xhr.removeEventListener('load', onLoad);\n xhr.removeEventListener('timeout', onError);\n if (req.reportProgress) {\n xhr.removeEventListener('progress', onDownProgress);\n if (reqBody !== null && xhr.upload) {\n xhr.upload.removeEventListener('progress', onUpProgress);\n }\n }\n // Finally, abort the in-flight request.\n if (xhr.readyState !== xhr.DONE) {\n xhr.abort();\n }\n };\n });\n }\n}\nHttpXhrBackend.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: HttpXhrBackend, deps: [{ token: i1.XhrFactory }], target: i0.ɵɵFactoryTarget.Injectable });\nHttpXhrBackend.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: HttpXhrBackend });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: HttpXhrBackend, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1.XhrFactory }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst XSRF_COOKIE_NAME = new InjectionToken('XSRF_COOKIE_NAME');\nconst XSRF_HEADER_NAME = new InjectionToken('XSRF_HEADER_NAME');\n/**\n * Retrieves the current XSRF token to use with the next outgoing request.\n *\n * @publicApi\n */\nclass HttpXsrfTokenExtractor {\n}\n/**\n * `HttpXsrfTokenExtractor` which retrieves the token from a cookie.\n */\nclass HttpXsrfCookieExtractor {\n constructor(doc, platform, cookieName) {\n this.doc = doc;\n this.platform = platform;\n this.cookieName = cookieName;\n this.lastCookieString = '';\n this.lastToken = null;\n /**\n * @internal for testing\n */\n this.parseCount = 0;\n }\n getToken() {\n if (this.platform === 'server') {\n return null;\n }\n const cookieString = this.doc.cookie || '';\n if (cookieString !== this.lastCookieString) {\n this.parseCount++;\n this.lastToken = ɵparseCookieValue(cookieString, this.cookieName);\n this.lastCookieString = cookieString;\n }\n return this.lastToken;\n }\n}\nHttpXsrfCookieExtractor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: HttpXsrfCookieExtractor, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: XSRF_COOKIE_NAME }], target: i0.ɵɵFactoryTarget.Injectable });\nHttpXsrfCookieExtractor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: HttpXsrfCookieExtractor });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: HttpXsrfCookieExtractor, decorators: [{\n type: Injectable\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [XSRF_COOKIE_NAME]\n }] }];\n } });\n/**\n * `HttpInterceptor` which adds an XSRF token to eligible outgoing requests.\n */\nclass HttpXsrfInterceptor {\n constructor(tokenService, headerName) {\n this.tokenService = tokenService;\n this.headerName = headerName;\n }\n intercept(req, next) {\n const lcUrl = req.url.toLowerCase();\n // Skip both non-mutating requests and absolute URLs.\n // Non-mutating requests don't require a token, and absolute URLs require special handling\n // anyway as the cookie set\n // on our origin is not the same as the token expected by another origin.\n if (req.method === 'GET' || req.method === 'HEAD' || lcUrl.startsWith('http://') ||\n lcUrl.startsWith('https://')) {\n return next.handle(req);\n }\n const token = this.tokenService.getToken();\n // Be careful not to overwrite an existing header of the same name.\n if (token !== null && !req.headers.has(this.headerName)) {\n req = req.clone({ headers: req.headers.set(this.headerName, token) });\n }\n return next.handle(req);\n }\n}\nHttpXsrfInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: HttpXsrfInterceptor, deps: [{ token: HttpXsrfTokenExtractor }, { token: XSRF_HEADER_NAME }], target: i0.ɵɵFactoryTarget.Injectable });\nHttpXsrfInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: HttpXsrfInterceptor });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: HttpXsrfInterceptor, decorators: [{\n type: Injectable\n }], ctorParameters: function () {\n return [{ type: HttpXsrfTokenExtractor }, { type: undefined, decorators: [{\n type: Inject,\n args: [XSRF_HEADER_NAME]\n }] }];\n } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * An injectable `HttpHandler` that applies multiple interceptors\n * to a request before passing it to the given `HttpBackend`.\n *\n * The interceptors are loaded lazily from the injector, to allow\n * interceptors to themselves inject classes depending indirectly\n * on `HttpInterceptingHandler` itself.\n * @see `HttpInterceptor`\n */\nclass HttpInterceptingHandler {\n constructor(backend, injector) {\n this.backend = backend;\n this.injector = injector;\n this.chain = null;\n }\n handle(req) {\n if (this.chain === null) {\n const interceptors = this.injector.get(HTTP_INTERCEPTORS, []);\n this.chain = interceptors.reduceRight((next, interceptor) => new HttpInterceptorHandler(next, interceptor), this.backend);\n }\n return this.chain.handle(req);\n }\n}\nHttpInterceptingHandler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: HttpInterceptingHandler, deps: [{ token: HttpBackend }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });\nHttpInterceptingHandler.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: HttpInterceptingHandler });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: HttpInterceptingHandler, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: HttpBackend }, { type: i0.Injector }]; } });\n/**\n * Constructs an `HttpHandler` that applies interceptors\n * to a request before passing it to the given `HttpBackend`.\n *\n * Use as a factory function within `HttpClientModule`.\n *\n *\n */\nfunction interceptingHandler(backend, interceptors = []) {\n if (!interceptors) {\n return backend;\n }\n return interceptors.reduceRight((next, interceptor) => new HttpInterceptorHandler(next, interceptor), backend);\n}\n/**\n * Factory function that determines where to store JSONP callbacks.\n *\n * Ordinarily JSONP callbacks are stored on the `window` object, but this may not exist\n * in test environments. In that case, callbacks are stored on an anonymous object instead.\n *\n *\n */\nfunction jsonpCallbackContext() {\n if (typeof window === 'object') {\n return window;\n }\n return {};\n}\n/**\n * Configures XSRF protection support for outgoing requests.\n *\n * For a server that supports a cookie-based XSRF protection system,\n * use directly to configure XSRF protection with the correct\n * cookie and header names.\n *\n * If no names are supplied, the default cookie name is `XSRF-TOKEN`\n * and the default header name is `X-XSRF-TOKEN`.\n *\n * @publicApi\n */\nclass HttpClientXsrfModule {\n /**\n * Disable the default XSRF protection.\n */\n static disable() {\n return {\n ngModule: HttpClientXsrfModule,\n providers: [\n { provide: HttpXsrfInterceptor, useClass: NoopInterceptor },\n ],\n };\n }\n /**\n * Configure XSRF protection.\n * @param options An object that can specify either or both\n * cookie name or header name.\n * - Cookie name default is `XSRF-TOKEN`.\n * - Header name default is `X-XSRF-TOKEN`.\n *\n */\n static withOptions(options = {}) {\n return {\n ngModule: HttpClientXsrfModule,\n providers: [\n options.cookieName ? { provide: XSRF_COOKIE_NAME, useValue: options.cookieName } : [],\n options.headerName ? { provide: XSRF_HEADER_NAME, useValue: options.headerName } : [],\n ],\n };\n }\n}\nHttpClientXsrfModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: HttpClientXsrfModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nHttpClientXsrfModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: HttpClientXsrfModule });\nHttpClientXsrfModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: HttpClientXsrfModule, providers: [\n HttpXsrfInterceptor,\n { provide: HTTP_INTERCEPTORS, useExisting: HttpXsrfInterceptor, multi: true },\n { provide: HttpXsrfTokenExtractor, useClass: HttpXsrfCookieExtractor },\n { provide: XSRF_COOKIE_NAME, useValue: 'XSRF-TOKEN' },\n { provide: XSRF_HEADER_NAME, useValue: 'X-XSRF-TOKEN' },\n ] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: HttpClientXsrfModule, decorators: [{\n type: NgModule,\n args: [{\n providers: [\n HttpXsrfInterceptor,\n { provide: HTTP_INTERCEPTORS, useExisting: HttpXsrfInterceptor, multi: true },\n { provide: HttpXsrfTokenExtractor, useClass: HttpXsrfCookieExtractor },\n { provide: XSRF_COOKIE_NAME, useValue: 'XSRF-TOKEN' },\n { provide: XSRF_HEADER_NAME, useValue: 'X-XSRF-TOKEN' },\n ],\n }]\n }] });\n/**\n * Configures the [dependency injector](guide/glossary#injector) for `HttpClient`\n * with supporting services for XSRF. Automatically imported by `HttpClientModule`.\n *\n * You can add interceptors to the chain behind `HttpClient` by binding them to the\n * multiprovider for built-in [DI token](guide/glossary#di-token) `HTTP_INTERCEPTORS`.\n *\n * @publicApi\n */\nclass HttpClientModule {\n}\nHttpClientModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: HttpClientModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nHttpClientModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: HttpClientModule, imports: [HttpClientXsrfModule] });\nHttpClientModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: HttpClientModule, providers: [\n HttpClient,\n { provide: HttpHandler, useClass: HttpInterceptingHandler },\n HttpXhrBackend,\n { provide: HttpBackend, useExisting: HttpXhrBackend },\n ], imports: [[\n HttpClientXsrfModule.withOptions({\n cookieName: 'XSRF-TOKEN',\n headerName: 'X-XSRF-TOKEN',\n }),\n ]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: HttpClientModule, decorators: [{\n type: NgModule,\n args: [{\n /**\n * Optional configuration for XSRF protection.\n */\n imports: [\n HttpClientXsrfModule.withOptions({\n cookieName: 'XSRF-TOKEN',\n headerName: 'X-XSRF-TOKEN',\n }),\n ],\n /**\n * Configures the [dependency injector](guide/glossary#injector) where it is imported\n * with supporting services for HTTP communications.\n */\n providers: [\n HttpClient,\n { provide: HttpHandler, useClass: HttpInterceptingHandler },\n HttpXhrBackend,\n { provide: HttpBackend, useExisting: HttpXhrBackend },\n ],\n }]\n }] });\n/**\n * Configures the [dependency injector](guide/glossary#injector) for `HttpClient`\n * with supporting services for JSONP.\n * Without this module, Jsonp requests reach the backend\n * with method JSONP, where they are rejected.\n *\n * You can add interceptors to the chain behind `HttpClient` by binding them to the\n * multiprovider for built-in [DI token](guide/glossary#di-token) `HTTP_INTERCEPTORS`.\n *\n * @publicApi\n */\nclass HttpClientJsonpModule {\n}\nHttpClientJsonpModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: HttpClientJsonpModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nHttpClientJsonpModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: HttpClientJsonpModule });\nHttpClientJsonpModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: HttpClientJsonpModule, providers: [\n JsonpClientBackend,\n { provide: JsonpCallbackContext, useFactory: jsonpCallbackContext },\n { provide: HTTP_INTERCEPTORS, useClass: JsonpInterceptor, multi: true },\n ] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: HttpClientJsonpModule, decorators: [{\n type: NgModule,\n args: [{\n providers: [\n JsonpClientBackend,\n { provide: JsonpCallbackContext, useFactory: jsonpCallbackContext },\n { provide: HTTP_INTERCEPTORS, useClass: JsonpInterceptor, multi: true },\n ],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A wrapper around the `XMLHttpRequest` constructor.\n *\n * @publicApi\n * @see `XhrFactory`\n * @deprecated\n * `XhrFactory` has moved, please import `XhrFactory` from `@angular/common` instead.\n */\nconst XhrFactory = XhrFactory$1;\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { HTTP_INTERCEPTORS, HttpBackend, HttpClient, HttpClientJsonpModule, HttpClientModule, HttpClientXsrfModule, HttpContext, HttpContextToken, HttpErrorResponse, HttpEventType, HttpHandler, HttpHeaderResponse, HttpHeaders, HttpParams, HttpRequest, HttpResponse, HttpResponseBase, HttpUrlEncodingCodec, HttpXhrBackend, HttpXsrfTokenExtractor, JsonpClientBackend, JsonpInterceptor, XhrFactory, HttpInterceptingHandler as ɵHttpInterceptingHandler };\n","import * as i0 from '@angular/core';\nimport { SecurityContext, Injectable, Optional, Inject, SkipSelf, ErrorHandler, InjectionToken, inject, Component, ViewEncapsulation, ChangeDetectionStrategy, Attribute, Input, NgModule } from '@angular/core';\nimport { mixinColor, MatCommonModule } from '@angular/material/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { DOCUMENT } from '@angular/common';\nimport { of, throwError, forkJoin, Subscription } from 'rxjs';\nimport { tap, map, catchError, finalize, share, take } from 'rxjs/operators';\nimport * as i1 from '@angular/common/http';\nimport { HttpClient } from '@angular/common/http';\nimport * as i2 from '@angular/platform-browser';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * The Trusted Types policy, or null if Trusted Types are not\n * enabled/supported, or undefined if the policy has not been created yet.\n */\nlet policy;\n/**\n * Returns the Trusted Types policy, or null if Trusted Types are not\n * enabled/supported. The first call to this function will create the policy.\n */\nfunction getPolicy() {\n if (policy === undefined) {\n policy = null;\n if (typeof window !== 'undefined') {\n const ttWindow = window;\n if (ttWindow.trustedTypes !== undefined) {\n policy = ttWindow.trustedTypes.createPolicy('angular#components', {\n createHTML: (s) => s,\n });\n }\n }\n }\n return policy;\n}\n/**\n * Unsafely promote a string to a TrustedHTML, falling back to strings when\n * Trusted Types are not available.\n * @security This is a security-sensitive function; any use of this function\n * must go through security review. In particular, it must be assured that the\n * provided string will never cause an XSS vulnerability if used in a context\n * that will be interpreted as HTML by a browser, e.g. when assigning to\n * element.innerHTML.\n */\nfunction trustedHTMLFromString(html) {\n var _a;\n return ((_a = getPolicy()) === null || _a === void 0 ? void 0 : _a.createHTML(html)) || html;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Returns an exception to be thrown in the case when attempting to\n * load an icon with a name that cannot be found.\n * @docs-private\n */\nfunction getMatIconNameNotFoundError(iconName) {\n return Error(`Unable to find icon with the name \"${iconName}\"`);\n}\n/**\n * Returns an exception to be thrown when the consumer attempts to use\n * `<mat-icon>` without including @angular/common/http.\n * @docs-private\n */\nfunction getMatIconNoHttpProviderError() {\n return Error('Could not find HttpClient provider for use with Angular Material icons. ' +\n 'Please include the HttpClientModule from @angular/common/http in your ' +\n 'app imports.');\n}\n/**\n * Returns an exception to be thrown when a URL couldn't be sanitized.\n * @param url URL that was attempted to be sanitized.\n * @docs-private\n */\nfunction getMatIconFailedToSanitizeUrlError(url) {\n return Error(`The URL provided to MatIconRegistry was not trusted as a resource URL ` +\n `via Angular's DomSanitizer. Attempted URL was \"${url}\".`);\n}\n/**\n * Returns an exception to be thrown when a HTML string couldn't be sanitized.\n * @param literal HTML that was attempted to be sanitized.\n * @docs-private\n */\nfunction getMatIconFailedToSanitizeLiteralError(literal) {\n return Error(`The literal provided to MatIconRegistry was not trusted as safe HTML by ` +\n `Angular's DomSanitizer. Attempted literal was \"${literal}\".`);\n}\n/**\n * Configuration for an icon, including the URL and possibly the cached SVG element.\n * @docs-private\n */\nclass SvgIconConfig {\n constructor(url, svgText, options) {\n this.url = url;\n this.svgText = svgText;\n this.options = options;\n }\n}\n/**\n * Service to register and display icons used by the `<mat-icon>` component.\n * - Registers icon URLs by namespace and name.\n * - Registers icon set URLs by namespace.\n * - Registers aliases for CSS classes, for use with icon fonts.\n * - Loads icons from URLs and extracts individual icons from icon sets.\n */\nclass MatIconRegistry {\n constructor(_httpClient, _sanitizer, document, _errorHandler) {\n this._httpClient = _httpClient;\n this._sanitizer = _sanitizer;\n this._errorHandler = _errorHandler;\n /**\n * URLs and cached SVG elements for individual icons. Keys are of the format \"[namespace]:[icon]\".\n */\n this._svgIconConfigs = new Map();\n /**\n * SvgIconConfig objects and cached SVG elements for icon sets, keyed by namespace.\n * Multiple icon sets can be registered under the same namespace.\n */\n this._iconSetConfigs = new Map();\n /** Cache for icons loaded by direct URLs. */\n this._cachedIconsByUrl = new Map();\n /** In-progress icon fetches. Used to coalesce multiple requests to the same URL. */\n this._inProgressUrlFetches = new Map();\n /** Map from font identifiers to their CSS class names. Used for icon fonts. */\n this._fontCssClassesByAlias = new Map();\n /** Registered icon resolver functions. */\n this._resolvers = [];\n /**\n * The CSS class to apply when an `<mat-icon>` component has no icon name, url, or font specified.\n * The default 'material-icons' value assumes that the material icon font has been loaded as\n * described at http://google.github.io/material-design-icons/#icon-font-for-the-web\n */\n this._defaultFontSetClass = 'material-icons';\n this._document = document;\n }\n /**\n * Registers an icon by URL in the default namespace.\n * @param iconName Name under which the icon should be registered.\n * @param url\n */\n addSvgIcon(iconName, url, options) {\n return this.addSvgIconInNamespace('', iconName, url, options);\n }\n /**\n * Registers an icon using an HTML string in the default namespace.\n * @param iconName Name under which the icon should be registered.\n * @param literal SVG source of the icon.\n */\n addSvgIconLiteral(iconName, literal, options) {\n return this.addSvgIconLiteralInNamespace('', iconName, literal, options);\n }\n /**\n * Registers an icon by URL in the specified namespace.\n * @param namespace Namespace in which the icon should be registered.\n * @param iconName Name under which the icon should be registered.\n * @param url\n */\n addSvgIconInNamespace(namespace, iconName, url, options) {\n return this._addSvgIconConfig(namespace, iconName, new SvgIconConfig(url, null, options));\n }\n /**\n * Registers an icon resolver function with the registry. The function will be invoked with the\n * name and namespace of an icon when the registry tries to resolve the URL from which to fetch\n * the icon. The resolver is expected to return a `SafeResourceUrl` that points to the icon,\n * an object with the icon URL and icon options, or `null` if the icon is not supported. Resolvers\n * will be invoked in the order in which they have been registered.\n * @param resolver Resolver function to be registered.\n */\n addSvgIconResolver(resolver) {\n this._resolvers.push(resolver);\n return this;\n }\n /**\n * Registers an icon using an HTML string in the specified namespace.\n * @param namespace Namespace in which the icon should be registered.\n * @param iconName Name under which the icon should be registered.\n * @param literal SVG source of the icon.\n */\n addSvgIconLiteralInNamespace(namespace, iconName, literal, options) {\n const cleanLiteral = this._sanitizer.sanitize(SecurityContext.HTML, literal);\n // TODO: add an ngDevMode check\n if (!cleanLiteral) {\n throw getMatIconFailedToSanitizeLiteralError(literal);\n }\n // Security: The literal is passed in as SafeHtml, and is thus trusted.\n const trustedLiteral = trustedHTMLFromString(cleanLiteral);\n return this._addSvgIconConfig(namespace, iconName, new SvgIconConfig('', trustedLiteral, options));\n }\n /**\n * Registers an icon set by URL in the default namespace.\n * @param url\n */\n addSvgIconSet(url, options) {\n return this.addSvgIconSetInNamespace('', url, options);\n }\n /**\n * Registers an icon set using an HTML string in the default namespace.\n * @param literal SVG source of the icon set.\n */\n addSvgIconSetLiteral(literal, options) {\n return this.addSvgIconSetLiteralInNamespace('', literal, options);\n }\n /**\n * Registers an icon set by URL in the specified namespace.\n * @param namespace Namespace in which to register the icon set.\n * @param url\n */\n addSvgIconSetInNamespace(namespace, url, options) {\n return this._addSvgIconSetConfig(namespace, new SvgIconConfig(url, null, options));\n }\n /**\n * Registers an icon set using an HTML string in the specified namespace.\n * @param namespace Namespace in which to register the icon set.\n * @param literal SVG source of the icon set.\n */\n addSvgIconSetLiteralInNamespace(namespace, literal, options) {\n const cleanLiteral = this._sanitizer.sanitize(SecurityContext.HTML, literal);\n if (!cleanLiteral) {\n throw getMatIconFailedToSanitizeLiteralError(literal);\n }\n // Security: The literal is passed in as SafeHtml, and is thus trusted.\n const trustedLiteral = trustedHTMLFromString(cleanLiteral);\n return this._addSvgIconSetConfig(namespace, new SvgIconConfig('', trustedLiteral, options));\n }\n /**\n * Defines an alias for a CSS class name to be used for icon fonts. Creating an matIcon\n * component with the alias as the fontSet input will cause the class name to be applied\n * to the `<mat-icon>` element.\n *\n * @param alias Alias for the font.\n * @param className Class name override to be used instead of the alias.\n */\n registerFontClassAlias(alias, className = alias) {\n this._fontCssClassesByAlias.set(alias, className);\n return this;\n }\n /**\n * Returns the CSS class name associated with the alias by a previous call to\n * registerFontClassAlias. If no CSS class has been associated, returns the alias unmodified.\n */\n classNameForFontAlias(alias) {\n return this._fontCssClassesByAlias.get(alias) || alias;\n }\n /**\n * Sets the CSS class name to be used for icon fonts when an `<mat-icon>` component does not\n * have a fontSet input value, and is not loading an icon by name or URL.\n *\n * @param className\n */\n setDefaultFontSetClass(className) {\n this._defaultFontSetClass = className;\n return this;\n }\n /**\n * Returns the CSS class name to be used for icon fonts when an `<mat-icon>` component does not\n * have a fontSet input value, and is not loading an icon by name or URL.\n */\n getDefaultFontSetClass() {\n return this._defaultFontSetClass;\n }\n /**\n * Returns an Observable that produces the icon (as an `<svg>` DOM element) from the given URL.\n * The response from the URL may be cached so this will not always cause an HTTP request, but\n * the produced element will always be a new copy of the originally fetched icon. (That is,\n * it will not contain any modifications made to elements previously returned).\n *\n * @param safeUrl URL from which to fetch the SVG icon.\n */\n getSvgIconFromUrl(safeUrl) {\n const url = this._sanitizer.sanitize(SecurityContext.RESOURCE_URL, safeUrl);\n if (!url) {\n throw getMatIconFailedToSanitizeUrlError(safeUrl);\n }\n const cachedIcon = this._cachedIconsByUrl.get(url);\n if (cachedIcon) {\n return of(cloneSvg(cachedIcon));\n }\n return this._loadSvgIconFromConfig(new SvgIconConfig(safeUrl, null)).pipe(tap(svg => this._cachedIconsByUrl.set(url, svg)), map(svg => cloneSvg(svg)));\n }\n /**\n * Returns an Observable that produces the icon (as an `<svg>` DOM element) with the given name\n * and namespace. The icon must have been previously registered with addIcon or addIconSet;\n * if not, the Observable will throw an error.\n *\n * @param name Name of the icon to be retrieved.\n * @param namespace Namespace in which to look for the icon.\n */\n getNamedSvgIcon(name, namespace = '') {\n const key = iconKey(namespace, name);\n let config = this._svgIconConfigs.get(key);\n // Return (copy of) cached icon if possible.\n if (config) {\n return this._getSvgFromConfig(config);\n }\n // Otherwise try to resolve the config from one of the resolver functions.\n config = this._getIconConfigFromResolvers(namespace, name);\n if (config) {\n this._svgIconConfigs.set(key, config);\n return this._getSvgFromConfig(config);\n }\n // See if we have any icon sets registered for the namespace.\n const iconSetConfigs = this._iconSetConfigs.get(namespace);\n if (iconSetConfigs) {\n return this._getSvgFromIconSetConfigs(name, iconSetConfigs);\n }\n return throwError(getMatIconNameNotFoundError(key));\n }\n ngOnDestroy() {\n this._resolvers = [];\n this._svgIconConfigs.clear();\n this._iconSetConfigs.clear();\n this._cachedIconsByUrl.clear();\n }\n /**\n * Returns the cached icon for a SvgIconConfig if available, or fetches it from its URL if not.\n */\n _getSvgFromConfig(config) {\n if (config.svgText) {\n // We already have the SVG element for this icon, return a copy.\n return of(cloneSvg(this._svgElementFromConfig(config)));\n }\n else {\n // Fetch the icon from the config's URL, cache it, and return a copy.\n return this._loadSvgIconFromConfig(config).pipe(map(svg => cloneSvg(svg)));\n }\n }\n /**\n * Attempts to find an icon with the specified name in any of the SVG icon sets.\n * First searches the available cached icons for a nested element with a matching name, and\n * if found copies the element to a new `<svg>` element. If not found, fetches all icon sets\n * that have not been cached, and searches again after all fetches are completed.\n * The returned Observable produces the SVG element if possible, and throws\n * an error if no icon with the specified name can be found.\n */\n _getSvgFromIconSetConfigs(name, iconSetConfigs) {\n // For all the icon set SVG elements we've fetched, see if any contain an icon with the\n // requested name.\n const namedIcon = this._extractIconWithNameFromAnySet(name, iconSetConfigs);\n if (namedIcon) {\n // We could cache namedIcon in _svgIconConfigs, but since we have to make a copy every\n // time anyway, there's probably not much advantage compared to just always extracting\n // it from the icon set.\n return of(namedIcon);\n }\n // Not found in any cached icon sets. If there are icon sets with URLs that we haven't\n // fetched, fetch them now and look for iconName in the results.\n const iconSetFetchRequests = iconSetConfigs\n .filter(iconSetConfig => !iconSetConfig.svgText)\n .map(iconSetConfig => {\n return this._loadSvgIconSetFromConfig(iconSetConfig).pipe(catchError((err) => {\n const url = this._sanitizer.sanitize(SecurityContext.RESOURCE_URL, iconSetConfig.url);\n // Swallow errors fetching individual URLs so the\n // combined Observable won't necessarily fail.\n const errorMessage = `Loading icon set URL: ${url} failed: ${err.message}`;\n this._errorHandler.handleError(new Error(errorMessage));\n return of(null);\n }));\n });\n // Fetch all the icon set URLs. When the requests complete, every IconSet should have a\n // cached SVG element (unless the request failed), and we can check again for the icon.\n return forkJoin(iconSetFetchRequests).pipe(map(() => {\n const foundIcon = this._extractIconWithNameFromAnySet(name, iconSetConfigs);\n // TODO: add an ngDevMode check\n if (!foundIcon) {\n throw getMatIconNameNotFoundError(name);\n }\n return foundIcon;\n }));\n }\n /**\n * Searches the cached SVG elements for the given icon sets for a nested icon element whose \"id\"\n * tag matches the specified name. If found, copies the nested element to a new SVG element and\n * returns it. Returns null if no matching element is found.\n */\n _extractIconWithNameFromAnySet(iconName, iconSetConfigs) {\n // Iterate backwards, so icon sets added later have precedence.\n for (let i = iconSetConfigs.length - 1; i >= 0; i--) {\n const config = iconSetConfigs[i];\n // Parsing the icon set's text into an SVG element can be expensive. We can avoid some of\n // the parsing by doing a quick check using `indexOf` to see if there's any chance for the\n // icon to be in the set. This won't be 100% accurate, but it should help us avoid at least\n // some of the parsing.\n if (config.svgText && config.svgText.toString().indexOf(iconName) > -1) {\n const svg = this._svgElementFromConfig(config);\n const foundIcon = this._extractSvgIconFromSet(svg, iconName, config.options);\n if (foundIcon) {\n return foundIcon;\n }\n }\n }\n return null;\n }\n /**\n * Loads the content of the icon URL specified in the SvgIconConfig and creates an SVG element\n * from it.\n */\n _loadSvgIconFromConfig(config) {\n return this._fetchIcon(config).pipe(tap(svgText => (config.svgText = svgText)), map(() => this._svgElementFromConfig(config)));\n }\n /**\n * Loads the content of the icon set URL specified in the\n * SvgIconConfig and attaches it to the config.\n */\n _loadSvgIconSetFromConfig(config) {\n if (config.svgText) {\n return of(null);\n }\n return this._fetchIcon(config).pipe(tap(svgText => (config.svgText = svgText)));\n }\n /**\n * Searches the cached element of the given SvgIconConfig for a nested icon element whose \"id\"\n * tag matches the specified name. If found, copies the nested element to a new SVG element and\n * returns it. Returns null if no matching element is found.\n */\n _extractSvgIconFromSet(iconSet, iconName, options) {\n // Use the `id=\"iconName\"` syntax in order to escape special\n // characters in the ID (versus using the #iconName syntax).\n const iconSource = iconSet.querySelector(`[id=\"${iconName}\"]`);\n if (!iconSource) {\n return null;\n }\n // Clone the element and remove the ID to prevent multiple elements from being added\n // to the page with the same ID.\n const iconElement = iconSource.cloneNode(true);\n iconElement.removeAttribute('id');\n // If the icon node is itself an <svg> node, clone and return it directly. If not, set it as\n // the content of a new <svg> node.\n if (iconElement.nodeName.toLowerCase() === 'svg') {\n return this._setSvgAttributes(iconElement, options);\n }\n // If the node is a <symbol>, it won't be rendered so we have to convert it into <svg>. Note\n // that the same could be achieved by referring to it via <use href=\"#id\">, however the <use>\n // tag is problematic on Firefox, because it needs to include the current page path.\n if (iconElement.nodeName.toLowerCase() === 'symbol') {\n return this._setSvgAttributes(this._toSvgElement(iconElement), options);\n }\n // createElement('SVG') doesn't work as expected; the DOM ends up with\n // the correct nodes, but the SVG content doesn't render. Instead we\n // have to create an empty SVG node using innerHTML and append its content.\n // Elements created using DOMParser.parseFromString have the same problem.\n // http://stackoverflow.com/questions/23003278/svg-innerhtml-in-firefox-can-not-display\n const svg = this._svgElementFromString(trustedHTMLFromString('<svg></svg>'));\n // Clone the node so we don't remove it from the parent icon set element.\n svg.appendChild(iconElement);\n return this._setSvgAttributes(svg, options);\n }\n /**\n * Creates a DOM element from the given SVG string.\n */\n _svgElementFromString(str) {\n const div = this._document.createElement('DIV');\n div.innerHTML = str;\n const svg = div.querySelector('svg');\n // TODO: add an ngDevMode check\n if (!svg) {\n throw Error('<svg> tag not found');\n }\n return svg;\n }\n /**\n * Converts an element into an SVG node by cloning all of its children.\n */\n _toSvgElement(element) {\n const svg = this._svgElementFromString(trustedHTMLFromString('<svg></svg>'));\n const attributes = element.attributes;\n // Copy over all the attributes from the `symbol` to the new SVG, except the id.\n for (let i = 0; i < attributes.length; i++) {\n const { name, value } = attributes[i];\n if (name !== 'id') {\n svg.setAttribute(name, value);\n }\n }\n for (let i = 0; i < element.childNodes.length; i++) {\n if (element.childNodes[i].nodeType === this._document.ELEMENT_NODE) {\n svg.appendChild(element.childNodes[i].cloneNode(true));\n }\n }\n return svg;\n }\n /**\n * Sets the default attributes for an SVG element to be used as an icon.\n */\n _setSvgAttributes(svg, options) {\n svg.setAttribute('fit', '');\n svg.setAttribute('height', '100%');\n svg.setAttribute('width', '100%');\n svg.setAttribute('preserveAspectRatio', 'xMidYMid meet');\n svg.setAttribute('focusable', 'false'); // Disable IE11 default behavior to make SVGs focusable.\n if (options && options.viewBox) {\n svg.setAttribute('viewBox', options.viewBox);\n }\n return svg;\n }\n /**\n * Returns an Observable which produces the string contents of the given icon. Results may be\n * cached, so future calls with the same URL may not cause another HTTP request.\n */\n _fetchIcon(iconConfig) {\n var _a;\n const { url: safeUrl, options } = iconConfig;\n const withCredentials = (_a = options === null || options === void 0 ? void 0 : options.withCredentials) !== null && _a !== void 0 ? _a : false;\n if (!this._httpClient) {\n throw getMatIconNoHttpProviderError();\n }\n // TODO: add an ngDevMode check\n if (safeUrl == null) {\n throw Error(`Cannot fetch icon from URL \"${safeUrl}\".`);\n }\n const url = this._sanitizer.sanitize(SecurityContext.RESOURCE_URL, safeUrl);\n // TODO: add an ngDevMode check\n if (!url) {\n throw getMatIconFailedToSanitizeUrlError(safeUrl);\n }\n // Store in-progress fetches to avoid sending a duplicate request for a URL when there is\n // already a request in progress for that URL. It's necessary to call share() on the\n // Observable returned by http.get() so that multiple subscribers don't cause multiple XHRs.\n const inProgressFetch = this._inProgressUrlFetches.get(url);\n if (inProgressFetch) {\n return inProgressFetch;\n }\n const req = this._httpClient.get(url, { responseType: 'text', withCredentials }).pipe(map(svg => {\n // Security: This SVG is fetched from a SafeResourceUrl, and is thus\n // trusted HTML.\n return trustedHTMLFromString(svg);\n }), finalize(() => this._inProgressUrlFetches.delete(url)), share());\n this._inProgressUrlFetches.set(url, req);\n return req;\n }\n /**\n * Registers an icon config by name in the specified namespace.\n * @param namespace Namespace in which to register the icon config.\n * @param iconName Name under which to register the config.\n * @param config Config to be registered.\n */\n _addSvgIconConfig(namespace, iconName, config) {\n this._svgIconConfigs.set(iconKey(namespace, iconName), config);\n return this;\n }\n /**\n * Registers an icon set config in the specified namespace.\n * @param namespace Namespace in which to register the icon config.\n * @param config Config to be registered.\n */\n _addSvgIconSetConfig(namespace, config) {\n const configNamespace = this._iconSetConfigs.get(namespace);\n if (configNamespace) {\n configNamespace.push(config);\n }\n else {\n this._iconSetConfigs.set(namespace, [config]);\n }\n return this;\n }\n /** Parses a config's text into an SVG element. */\n _svgElementFromConfig(config) {\n if (!config.svgElement) {\n const svg = this._svgElementFromString(config.svgText);\n this._setSvgAttributes(svg, config.options);\n config.svgElement = svg;\n }\n return config.svgElement;\n }\n /** Tries to create an icon config through the registered resolver functions. */\n _getIconConfigFromResolvers(namespace, name) {\n for (let i = 0; i < this._resolvers.length; i++) {\n const result = this._resolvers[i](name, namespace);\n if (result) {\n return isSafeUrlWithOptions(result)\n ? new SvgIconConfig(result.url, null, result.options)\n : new SvgIconConfig(result, null);\n }\n }\n return undefined;\n }\n}\nMatIconRegistry.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatIconRegistry, deps: [{ token: i1.HttpClient, optional: true }, { token: i2.DomSanitizer }, { token: DOCUMENT, optional: true }, { token: i0.ErrorHandler }], target: i0.ɵɵFactoryTarget.Injectable });\nMatIconRegistry.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatIconRegistry, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatIconRegistry, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: i1.HttpClient, decorators: [{\n type: Optional\n }] }, { type: i2.DomSanitizer }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.ErrorHandler }];\n } });\n/** @docs-private */\nfunction ICON_REGISTRY_PROVIDER_FACTORY(parentRegistry, httpClient, sanitizer, errorHandler, document) {\n return parentRegistry || new MatIconRegistry(httpClient, sanitizer, document, errorHandler);\n}\n/** @docs-private */\nconst ICON_REGISTRY_PROVIDER = {\n // If there is already an MatIconRegistry available, use that. Otherwise, provide a new one.\n provide: MatIconRegistry,\n deps: [\n [new Optional(), new SkipSelf(), MatIconRegistry],\n [new Optional(), HttpClient],\n DomSanitizer,\n ErrorHandler,\n [new Optional(), DOCUMENT],\n ],\n useFactory: ICON_REGISTRY_PROVIDER_FACTORY,\n};\n/** Clones an SVGElement while preserving type information. */\nfunction cloneSvg(svg) {\n return svg.cloneNode(true);\n}\n/** Returns the cache key to use for an icon namespace and name. */\nfunction iconKey(namespace, name) {\n return namespace + ':' + name;\n}\nfunction isSafeUrlWithOptions(value) {\n return !!(value.url && value.options);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Boilerplate for applying mixins to MatIcon.\n/** @docs-private */\nconst _MatIconBase = mixinColor(class {\n constructor(_elementRef) {\n this._elementRef = _elementRef;\n }\n});\n/**\n * Injection token used to provide the current location to `MatIcon`.\n * Used to handle server-side rendering and to stub out during unit tests.\n * @docs-private\n */\nconst MAT_ICON_LOCATION = new InjectionToken('mat-icon-location', {\n providedIn: 'root',\n factory: MAT_ICON_LOCATION_FACTORY,\n});\n/** @docs-private */\nfunction MAT_ICON_LOCATION_FACTORY() {\n const _document = inject(DOCUMENT);\n const _location = _document ? _document.location : null;\n return {\n // Note that this needs to be a function, rather than a property, because Angular\n // will only resolve it once, but we want the current path on each call.\n getPathname: () => (_location ? _location.pathname + _location.search : ''),\n };\n}\n/** SVG attributes that accept a FuncIRI (e.g. `url(<something>)`). */\nconst funcIriAttributes = [\n 'clip-path',\n 'color-profile',\n 'src',\n 'cursor',\n 'fill',\n 'filter',\n 'marker',\n 'marker-start',\n 'marker-mid',\n 'marker-end',\n 'mask',\n 'stroke',\n];\n/** Selector that can be used to find all elements that are using a `FuncIRI`. */\nconst funcIriAttributeSelector = funcIriAttributes.map(attr => `[${attr}]`).join(', ');\n/** Regex that can be used to extract the id out of a FuncIRI. */\nconst funcIriPattern = /^url\\(['\"]?#(.*?)['\"]?\\)$/;\n/**\n * Component to display an icon. It can be used in the following ways:\n *\n * - Specify the svgIcon input to load an SVG icon from a URL previously registered with the\n * addSvgIcon, addSvgIconInNamespace, addSvgIconSet, or addSvgIconSetInNamespace methods of\n * MatIconRegistry. If the svgIcon value contains a colon it is assumed to be in the format\n * \"[namespace]:[name]\", if not the value will be the name of an icon in the default namespace.\n * Examples:\n * `<mat-icon svgIcon=\"left-arrow\"></mat-icon>\n * <mat-icon svgIcon=\"animals:cat\"></mat-icon>`\n *\n * - Use a font ligature as an icon by putting the ligature text in the content of the `<mat-icon>`\n * component. By default the Material icons font is used as described at\n * http://google.github.io/material-design-icons/#icon-font-for-the-web. You can specify an\n * alternate font by setting the fontSet input to either the CSS class to apply to use the\n * desired font, or to an alias previously registered with MatIconRegistry.registerFontClassAlias.\n * Examples:\n * `<mat-icon>home</mat-icon>\n * <mat-icon fontSet=\"myfont\">sun</mat-icon>`\n *\n * - Specify a font glyph to be included via CSS rules by setting the fontSet input to specify the\n * font, and the fontIcon input to specify the icon. Typically the fontIcon will specify a\n * CSS class which causes the glyph to be displayed via a :before selector, as in\n * https://fortawesome.github.io/Font-Awesome/examples/\n * Example:\n * `<mat-icon fontSet=\"fa\" fontIcon=\"alarm\"></mat-icon>`\n */\nclass MatIcon extends _MatIconBase {\n constructor(elementRef, _iconRegistry, ariaHidden, _location, _errorHandler) {\n super(elementRef);\n this._iconRegistry = _iconRegistry;\n this._location = _location;\n this._errorHandler = _errorHandler;\n this._inline = false;\n /** Subscription to the current in-progress SVG icon request. */\n this._currentIconFetch = Subscription.EMPTY;\n // If the user has not explicitly set aria-hidden, mark the icon as hidden, as this is\n // the right thing to do for the majority of icon use-cases.\n if (!ariaHidden) {\n elementRef.nativeElement.setAttribute('aria-hidden', 'true');\n }\n }\n /**\n * Whether the icon should be inlined, automatically sizing the icon to match the font size of\n * the element the icon is contained in.\n */\n get inline() {\n return this._inline;\n }\n set inline(inline) {\n this._inline = coerceBooleanProperty(inline);\n }\n /** Name of the icon in the SVG icon set. */\n get svgIcon() {\n return this._svgIcon;\n }\n set svgIcon(value) {\n if (value !== this._svgIcon) {\n if (value) {\n this._updateSvgIcon(value);\n }\n else if (this._svgIcon) {\n this._clearSvgElement();\n }\n this._svgIcon = value;\n }\n }\n /** Font set that the icon is a part of. */\n get fontSet() {\n return this._fontSet;\n }\n set fontSet(value) {\n const newValue = this._cleanupFontValue(value);\n if (newValue !== this._fontSet) {\n this._fontSet = newValue;\n this._updateFontIconClasses();\n }\n }\n /** Name of an icon within a font set. */\n get fontIcon() {\n return this._fontIcon;\n }\n set fontIcon(value) {\n const newValue = this._cleanupFontValue(value);\n if (newValue !== this._fontIcon) {\n this._fontIcon = newValue;\n this._updateFontIconClasses();\n }\n }\n /**\n * Splits an svgIcon binding value into its icon set and icon name components.\n * Returns a 2-element array of [(icon set), (icon name)].\n * The separator for the two fields is ':'. If there is no separator, an empty\n * string is returned for the icon set and the entire value is returned for\n * the icon name. If the argument is falsy, returns an array of two empty strings.\n * Throws an error if the name contains two or more ':' separators.\n * Examples:\n * `'social:cake' -> ['social', 'cake']\n * 'penguin' -> ['', 'penguin']\n * null -> ['', '']\n * 'a:b:c' -> (throws Error)`\n */\n _splitIconName(iconName) {\n if (!iconName) {\n return ['', ''];\n }\n const parts = iconName.split(':');\n switch (parts.length) {\n case 1:\n return ['', parts[0]]; // Use default namespace.\n case 2:\n return parts;\n default:\n throw Error(`Invalid icon name: \"${iconName}\"`); // TODO: add an ngDevMode check\n }\n }\n ngOnInit() {\n // Update font classes because ngOnChanges won't be called if none of the inputs are present,\n // e.g. <mat-icon>arrow</mat-icon> In this case we need to add a CSS class for the default font.\n this._updateFontIconClasses();\n }\n ngAfterViewChecked() {\n const cachedElements = this._elementsWithExternalReferences;\n if (cachedElements && cachedElements.size) {\n const newPath = this._location.getPathname();\n // We need to check whether the URL has changed on each change detection since\n // the browser doesn't have an API that will let us react on link clicks and\n // we can't depend on the Angular router. The references need to be updated,\n // because while most browsers don't care whether the URL is correct after\n // the first render, Safari will break if the user navigates to a different\n // page and the SVG isn't re-rendered.\n if (newPath !== this._previousPath) {\n this._previousPath = newPath;\n this._prependPathToReferences(newPath);\n }\n }\n }\n ngOnDestroy() {\n this._currentIconFetch.unsubscribe();\n if (this._elementsWithExternalReferences) {\n this._elementsWithExternalReferences.clear();\n }\n }\n _usingFontIcon() {\n return !this.svgIcon;\n }\n _setSvgElement(svg) {\n this._clearSvgElement();\n // Workaround for IE11 and Edge ignoring `style` tags inside dynamically-created SVGs.\n // See: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/10898469/\n // Do this before inserting the element into the DOM, in order to avoid a style recalculation.\n const styleTags = svg.querySelectorAll('style');\n for (let i = 0; i < styleTags.length; i++) {\n styleTags[i].textContent += ' ';\n }\n // Note: we do this fix here, rather than the icon registry, because the\n // references have to point to the URL at the time that the icon was created.\n const path = this._location.getPathname();\n this._previousPath = path;\n this._cacheChildrenWithExternalReferences(svg);\n this._prependPathToReferences(path);\n this._elementRef.nativeElement.appendChild(svg);\n }\n _clearSvgElement() {\n const layoutElement = this._elementRef.nativeElement;\n let childCount = layoutElement.childNodes.length;\n if (this._elementsWithExternalReferences) {\n this._elementsWithExternalReferences.clear();\n }\n // Remove existing non-element child nodes and SVGs, and add the new SVG element. Note that\n // we can't use innerHTML, because IE will throw if the element has a data binding.\n while (childCount--) {\n const child = layoutElement.childNodes[childCount];\n // 1 corresponds to Node.ELEMENT_NODE. We remove all non-element nodes in order to get rid\n // of any loose text nodes, as well as any SVG elements in order to remove any old icons.\n if (child.nodeType !== 1 || child.nodeName.toLowerCase() === 'svg') {\n child.remove();\n }\n }\n }\n _updateFontIconClasses() {\n if (!this._usingFontIcon()) {\n return;\n }\n const elem = this._elementRef.nativeElement;\n const fontSetClass = this.fontSet\n ? this._iconRegistry.classNameForFontAlias(this.fontSet)\n : this._iconRegistry.getDefaultFontSetClass();\n if (fontSetClass != this._previousFontSetClass) {\n if (this._previousFontSetClass) {\n elem.classList.remove(this._previousFontSetClass);\n }\n if (fontSetClass) {\n elem.classList.add(fontSetClass);\n }\n this._previousFontSetClass = fontSetClass;\n }\n if (this.fontIcon != this._previousFontIconClass) {\n if (this._previousFontIconClass) {\n elem.classList.remove(this._previousFontIconClass);\n }\n if (this.fontIcon) {\n elem.classList.add(this.fontIcon);\n }\n this._previousFontIconClass = this.fontIcon;\n }\n }\n /**\n * Cleans up a value to be used as a fontIcon or fontSet.\n * Since the value ends up being assigned as a CSS class, we\n * have to trim the value and omit space-separated values.\n */\n _cleanupFontValue(value) {\n return typeof value === 'string' ? value.trim().split(' ')[0] : value;\n }\n /**\n * Prepends the current path to all elements that have an attribute pointing to a `FuncIRI`\n * reference. This is required because WebKit browsers require references to be prefixed with\n * the current path, if the page has a `base` tag.\n */\n _prependPathToReferences(path) {\n const elements = this._elementsWithExternalReferences;\n if (elements) {\n elements.forEach((attrs, element) => {\n attrs.forEach(attr => {\n element.setAttribute(attr.name, `url('${path}#${attr.value}')`);\n });\n });\n }\n }\n /**\n * Caches the children of an SVG element that have `url()`\n * references that we need to prefix with the current path.\n */\n _cacheChildrenWithExternalReferences(element) {\n const elementsWithFuncIri = element.querySelectorAll(funcIriAttributeSelector);\n const elements = (this._elementsWithExternalReferences =\n this._elementsWithExternalReferences || new Map());\n for (let i = 0; i < elementsWithFuncIri.length; i++) {\n funcIriAttributes.forEach(attr => {\n const elementWithReference = elementsWithFuncIri[i];\n const value = elementWithReference.getAttribute(attr);\n const match = value ? value.match(funcIriPattern) : null;\n if (match) {\n let attributes = elements.get(elementWithReference);\n if (!attributes) {\n attributes = [];\n elements.set(elementWithReference, attributes);\n }\n attributes.push({ name: attr, value: match[1] });\n }\n });\n }\n }\n /** Sets a new SVG icon with a particular name. */\n _updateSvgIcon(rawName) {\n this._svgNamespace = null;\n this._svgName = null;\n this._currentIconFetch.unsubscribe();\n if (rawName) {\n const [namespace, iconName] = this._splitIconName(rawName);\n if (namespace) {\n this._svgNamespace = namespace;\n }\n if (iconName) {\n this._svgName = iconName;\n }\n this._currentIconFetch = this._iconRegistry\n .getNamedSvgIcon(iconName, namespace)\n .pipe(take(1))\n .subscribe(svg => this._setSvgElement(svg), (err) => {\n const errorMessage = `Error retrieving icon ${namespace}:${iconName}! ${err.message}`;\n this._errorHandler.handleError(new Error(errorMessage));\n });\n }\n }\n}\nMatIcon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatIcon, deps: [{ token: i0.ElementRef }, { token: MatIconRegistry }, { token: 'aria-hidden', attribute: true }, { token: MAT_ICON_LOCATION }, { token: i0.ErrorHandler }], target: i0.ɵɵFactoryTarget.Component });\nMatIcon.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.2.0\", type: MatIcon, selector: \"mat-icon\", inputs: { color: \"color\", inline: \"inline\", svgIcon: \"svgIcon\", fontSet: \"fontSet\", fontIcon: \"fontIcon\" }, host: { attributes: { \"role\": \"img\" }, properties: { \"attr.data-mat-icon-type\": \"_usingFontIcon() ? \\\"font\\\" : \\\"svg\\\"\", \"attr.data-mat-icon-name\": \"_svgName || fontIcon\", \"attr.data-mat-icon-namespace\": \"_svgNamespace || fontSet\", \"class.mat-icon-inline\": \"inline\", \"class.mat-icon-no-color\": \"color !== \\\"primary\\\" && color !== \\\"accent\\\" && color !== \\\"warn\\\"\" }, classAttribute: \"mat-icon notranslate\" }, exportAs: [\"matIcon\"], usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [\".mat-icon{-webkit-user-select:none;-moz-user-select:none;user-select:none;background-repeat:no-repeat;display:inline-block;fill:currentColor;height:24px;width:24px}.mat-icon.mat-icon-inline{font-size:inherit;height:inherit;line-height:inherit;width:inherit}[dir=rtl] .mat-icon-rtl-mirror{transform:scale(-1, 1)}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon{display:block}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mat-icon{margin:auto}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatIcon, decorators: [{\n type: Component,\n args: [{ template: '<ng-content></ng-content>', selector: 'mat-icon', exportAs: 'matIcon', inputs: ['color'], host: {\n 'role': 'img',\n 'class': 'mat-icon notranslate',\n '[attr.data-mat-icon-type]': '_usingFontIcon() ? \"font\" : \"svg\"',\n '[attr.data-mat-icon-name]': '_svgName || fontIcon',\n '[attr.data-mat-icon-namespace]': '_svgNamespace || fontSet',\n '[class.mat-icon-inline]': 'inline',\n '[class.mat-icon-no-color]': 'color !== \"primary\" && color !== \"accent\" && color !== \"warn\"',\n }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [\".mat-icon{-webkit-user-select:none;-moz-user-select:none;user-select:none;background-repeat:no-repeat;display:inline-block;fill:currentColor;height:24px;width:24px}.mat-icon.mat-icon-inline{font-size:inherit;height:inherit;line-height:inherit;width:inherit}[dir=rtl] .mat-icon-rtl-mirror{transform:scale(-1, 1)}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon{display:block}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mat-icon{margin:auto}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: MatIconRegistry }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['aria-hidden']\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_ICON_LOCATION]\n }] }, { type: i0.ErrorHandler }];\n }, propDecorators: { inline: [{\n type: Input\n }], svgIcon: [{\n type: Input\n }], fontSet: [{\n type: Input\n }], fontIcon: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatIconModule {\n}\nMatIconModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatIconModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatIconModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatIconModule, declarations: [MatIcon], imports: [MatCommonModule], exports: [MatIcon, MatCommonModule] });\nMatIconModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatIconModule, imports: [[MatCommonModule], MatCommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatIconModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [MatCommonModule],\n exports: [MatIcon, MatCommonModule],\n declarations: [MatIcon],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ICON_REGISTRY_PROVIDER, ICON_REGISTRY_PROVIDER_FACTORY, MAT_ICON_LOCATION, MAT_ICON_LOCATION_FACTORY, MatIcon, MatIconModule, MatIconRegistry, getMatIconFailedToSanitizeLiteralError, getMatIconFailedToSanitizeUrlError, getMatIconNameNotFoundError, getMatIconNoHttpProviderError };\n"],"names":["i1","DOCUMENT","ɵparseCookieValue","XhrFactory","XhrFactory$1","i0","Injectable","InjectionToken","Inject","PLATFORM_ID","NgModule","of","Observable","concatMap","filter","map","HttpHandler","HttpBackend","HttpHeaders","constructor","headers","normalizedNames","Map","lazyUpdate","lazyInit","split","forEach","line","index","indexOf","name","slice","key","toLowerCase","value","trim","maybeSetNormalizedName","has","get","push","set","Object","keys","values","length","init","Array","from","getAll","append","clone","op","delete","lcName","copyFrom","update","applyUpdate","other","concat","base","undefined","toDelete","existing","fn","HttpUrlEncodingCodec","encodeKey","standardEncoding","encodeValue","decodeKey","decodeURIComponent","decodeValue","paramParser","rawParams","codec","params","replace","param","eqIdx","val","list","STANDARD_ENCODING_REGEX","STANDARD_ENCODING_REPLACEMENTS","v","encodeURIComponent","s","t","_a","valueToString","HttpParams","options","updates","cloneFrom","encoder","fromString","fromObject","Error","isArray","res","appendAll","_value","toString","eKey","join","idx","splice","HttpContextToken","defaultValue","HttpContext","token","mightHaveBody","method","isArrayBuffer","ArrayBuffer","isBlob","Blob","isFormData","FormData","isUrlSearchParams","URLSearchParams","HttpRequest","url","third","fourth","body","reportProgress","withCredentials","responseType","toUpperCase","context","urlWithParams","qIdx","sep","serializeBody","JSON","stringify","detectContentTypeHeader","type","setHeaders","reduce","setParams","HttpEventType","HttpResponseBase","defaultStatus","defaultStatusText","status","statusText","ok","HttpHeaderResponse","ResponseHeader","HttpResponse","Response","HttpErrorResponse","message","error","addBody","observe","HttpClient","handler","request","first","req","events$","pipe","handle","res$","event","head","jsonp","callbackParam","patch","post","put","ɵfac","ɵprov","HttpInterceptorHandler","next","interceptor","intercept","HTTP_INTERCEPTORS","NoopInterceptor","nextRequestId","foreignDocument","JSONP_ERR_NO_CALLBACK","JSONP_ERR_WRONG_METHOD","JSONP_ERR_WRONG_RESPONSE_TYPE","JsonpCallbackContext","JsonpClientBackend","callbackMap","document","resolvedPromise","Promise","resolve","nextCallback","observer","callback","node","createElement","src","finished","data","cleanup","parentNode","removeChild","onLoad","then","complete","onError","addEventListener","appendChild","Sent","removeListeners","script","implementation","createHTMLDocument","adoptNode","decorators","args","JsonpInterceptor","XSSI_PREFIX","getResponseUrl","xhr","responseURL","test","getAllResponseHeaders","getResponseHeader","HttpXhrBackend","xhrFactory","build","open","setRequestHeader","detectedType","reqBody","headerResponse","partialFromXhr","response","responseText","originalBody","parse","text","sentHeaders","onDownProgress","progressEvent","DownloadProgress","loaded","lengthComputable","total","partialText","onUpProgress","progress","UploadProgress","upload","send","removeEventListener","readyState","DONE","abort","XSRF_COOKIE_NAME","XSRF_HEADER_NAME","HttpXsrfTokenExtractor","HttpXsrfCookieExtractor","doc","platform","cookieName","lastCookieString","lastToken","parseCount","getToken","cookieString","cookie","HttpXsrfInterceptor","tokenService","headerName","lcUrl","startsWith","HttpInterceptingHandler","backend","injector","chain","interceptors","reduceRight","Injector","interceptingHandler","jsonpCallbackContext","window","HttpClientXsrfModule","disable","ngModule","providers","provide","useClass","withOptions","useValue","ɵmod","ɵinj","useExisting","multi","HttpClientModule","imports","HttpClientJsonpModule","useFactory","ɵHttpInterceptingHandler","SecurityContext","Optional","SkipSelf","ErrorHandler","inject","Component","ViewEncapsulation","ChangeDetectionStrategy","Attribute","Input","mixinColor","MatCommonModule","coerceBooleanProperty","throwError","forkJoin","Subscription","tap","catchError","finalize","share","take","i2","DomSanitizer","policy","getPolicy","ttWindow","trustedTypes","createPolicy","createHTML","trustedHTMLFromString","html","getMatIconNameNotFoundError","iconName","getMatIconNoHttpProviderError","getMatIconFailedToSanitizeUrlError","getMatIconFailedToSanitizeLiteralError","literal","SvgIconConfig","svgText","MatIconRegistry","_httpClient","_sanitizer","_errorHandler","_svgIconConfigs","_iconSetConfigs","_cachedIconsByUrl","_inProgressUrlFetches","_fontCssClassesByAlias","_resolvers","_defaultFontSetClass","_document","addSvgIcon","addSvgIconInNamespace","addSvgIconLiteral","addSvgIconLiteralInNamespace","namespace","_addSvgIconConfig","addSvgIconResolver","resolver","cleanLiteral","sanitize","HTML","trustedLiteral","addSvgIconSet","addSvgIconSetInNamespace","addSvgIconSetLiteral","addSvgIconSetLiteralInNamespace","_addSvgIconSetConfig","registerFontClassAlias","alias","className","classNameForFontAlias","setDefaultFontSetClass","getDefaultFontSetClass","getSvgIconFromUrl","safeUrl","RESOURCE_URL","cachedIcon","cloneSvg","_loadSvgIconFromConfig","svg","getNamedSvgIcon","iconKey","config","_getSvgFromConfig","_getIconConfigFromResolvers","iconSetConfigs","_getSvgFromIconSetConfigs","ngOnDestroy","clear","_svgElementFromConfig","namedIcon","_extractIconWithNameFromAnySet","iconSetFetchRequests","iconSetConfig","_loadSvgIconSetFromConfig","err","errorMessage","handleError","foundIcon","i","_extractSvgIconFromSet","_fetchIcon","iconSet","iconSource","querySelector","iconElement","cloneNode","removeAttribute","nodeName","_setSvgAttributes","_toSvgElement","_svgElementFromString","str","div","innerHTML","element","attributes","setAttribute","childNodes","nodeType","ELEMENT_NODE","viewBox","iconConfig","inProgressFetch","configNamespace","svgElement","result","isSafeUrlWithOptions","providedIn","ICON_REGISTRY_PROVIDER_FACTORY","parentRegistry","httpClient","sanitizer","errorHandler","ICON_REGISTRY_PROVIDER","deps","_MatIconBase","_elementRef","MAT_ICON_LOCATION","factory","MAT_ICON_LOCATION_FACTORY","_location","location","getPathname","pathname","search","funcIriAttributes","funcIriAttributeSelector","attr","funcIriPattern","MatIcon","elementRef","_iconRegistry","ariaHidden","_inline","_currentIconFetch","EMPTY","nativeElement","inline","svgIcon","_svgIcon","_updateSvgIcon","_clearSvgElement","fontSet","_fontSet","newValue","_cleanupFontValue","_updateFontIconClasses","fontIcon","_fontIcon","_splitIconName","parts","ngOnInit","ngAfterViewChecked","cachedElements","_elementsWithExternalReferences","size","newPath","_previousPath","_prependPathToReferences","unsubscribe","_usingFontIcon","_setSvgElement","styleTags","querySelectorAll","textContent","path","_cacheChildrenWithExternalReferences","layoutElement","childCount","child","remove","elem","fontSetClass","_previousFontSetClass","classList","add","_previousFontIconClass","elements","attrs","elementsWithFuncIri","elementWithReference","getAttribute","match","rawName","_svgNamespace","_svgName","subscribe","ElementRef","ɵcmp","template","selector","exportAs","inputs","host","encapsulation","None","changeDetection","OnPush","styles","MatIconModule","exports","declarations"],"sourceRoot":"webpack:///"}