/
src_app_routes_sudoku_sudoku_module_ts.js.map
1 lines (1 loc) · 834 KB
/
src_app_routes_sudoku_sudoku_module_ts.js.map
1
{"version":3,"file":"src_app_routes_sudoku_sudoku_module_ts.js","mappings":"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,KAAK,CAACgD,MAAN,KAAiB,CAAzC;AACH;;AACD,SAASsa,cAAT,CAAwBtd,KAAxB,EAA+B;AAC3B;AACA,SAAOA,KAAK,IAAI,IAAT,IAAiB,OAAOA,KAAK,CAACgD,MAAb,KAAwB,QAAhD;AACH;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,MAAMua,aAAa,GAAG,IAAIvhB,yDAAJ,CAAmB,cAAnB,CAAtB;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,MAAMwhB,mBAAmB,GAAG,IAAIxhB,yDAAJ,CAAmB,mBAAnB,CAA5B;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,MAAMyhB,YAAY,GAAG,oMAArB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMC,UAAN,CAAiB;AACb;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACc,SAAHC,GAAG,CAACA,GAAD,EAAM;AACZ,WAAOC,YAAY,CAACD,GAAD,CAAnB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACc,SAAHE,GAAG,CAACA,GAAD,EAAM;AACZ,WAAOC,YAAY,CAACD,GAAD,CAAnB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACmB,SAARE,QAAQ,CAACC,OAAD,EAAU;AACrB,WAAOC,iBAAiB,CAACD,OAAD,CAAxB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACuB,SAAZE,YAAY,CAACF,OAAD,EAAU;AACzB,WAAOG,qBAAqB,CAACH,OAAD,CAA5B;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACgB,SAALI,KAAK,CAACJ,OAAD,EAAU;AAClB,WAAOK,cAAc,CAACL,OAAD,CAArB;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;AACA;AACA;AACA;AACA;;;AACoB,SAATM,SAAS,CAACA,SAAD,EAAY;AACxB,WAAOC,kBAAkB,CAACD,SAAD,CAAzB;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;AACA;;;AACoB,SAATE,SAAS,CAACA,SAAD,EAAY;AACxB,WAAOC,kBAAkB,CAACD,SAAD,CAAzB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACkB,SAAPE,OAAO,CAACA,OAAD,EAAU;AACpB,WAAOC,gBAAgB,CAACD,OAAD,CAAvB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;AACwB,SAAbE,aAAa,CAACZ,OAAD,EAAU;AAC1B,WAAOY,aAAa,CAACZ,OAAD,CAApB;AACH;;AACa,SAAPa,OAAO,CAACC,UAAD,EAAa;AACvB,WAAOD,OAAO,CAACC,UAAD,CAAd;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACuB,SAAZC,YAAY,CAACD,UAAD,EAAa;AAC5B,WAAOC,YAAY,CAACD,UAAD,CAAnB;AACH;;AAlRY;AAoRjB;AACA;AACA;AACA;;;AACA,SAASlB,YAAT,CAAsBD,GAAtB,EAA2B;AACvB,SAAQK,OAAD,IAAa;AAChB,QAAIX,iBAAiB,CAACW,OAAO,CAAChe,KAAT,CAAjB,IAAoCqd,iBAAiB,CAACM,GAAD,CAAzD,EAAgE;AAC5D,aAAO,IAAP,CAD4D,CAC/C;AAChB;;AACD,UAAM3d,KAAK,GAAGgf,UAAU,CAAChB,OAAO,CAAChe,KAAT,CAAxB,CAJgB,CAKhB;AACA;;AACA,WAAO,CAACif,KAAK,CAACjf,KAAD,CAAN,IAAiBA,KAAK,GAAG2d,GAAzB,GAA+B;AAAE,aAAO;AAAE,eAAOA,GAAT;AAAc,kBAAUK,OAAO,CAAChe;AAAhC;AAAT,KAA/B,GAAoF,IAA3F;AACH,GARD;AASH;AACD;AACA;AACA;AACA;;;AACA,SAAS8d,YAAT,CAAsBD,GAAtB,EAA2B;AACvB,SAAQG,OAAD,IAAa;AAChB,QAAIX,iBAAiB,CAACW,OAAO,CAAChe,KAAT,CAAjB,IAAoCqd,iBAAiB,CAACQ,GAAD,CAAzD,EAAgE;AAC5D,aAAO,IAAP,CAD4D,CAC/C;AAChB;;AACD,UAAM7d,KAAK,GAAGgf,UAAU,CAAChB,OAAO,CAAChe,KAAT,CAAxB,CAJgB,CAKhB;AACA;;AACA,WAAO,CAACif,KAAK,CAACjf,KAAD,CAAN,IAAiBA,KAAK,GAAG6d,GAAzB,GAA+B;AAAE,aAAO;AAAE,eAAOA,GAAT;AAAc,kBAAUG,OAAO,CAAChe;AAAhC;AAAT,KAA/B,GAAoF,IAA3F;AACH,GARD;AASH;AACD;AACA;AACA;AACA;;;AACA,SAASie,iBAAT,CAA2BD,OAA3B,EAAoC;AAChC,SAAOX,iBAAiB,CAACW,OAAO,CAAChe,KAAT,CAAjB,GAAmC;AAAE,gBAAY;AAAd,GAAnC,GAA0D,IAAjE;AACH;AACD;AACA;AACA;AACA;AACA;;;AACA,SAASme,qBAAT,CAA+BH,OAA/B,EAAwC;AACpC,SAAOA,OAAO,CAAChe,KAAR,KAAkB,IAAlB,GAAyB,IAAzB,GAAgC;AAAE,gBAAY;AAAd,GAAvC;AACH;AACD;AACA;AACA;AACA;;;AACA,SAASqe,cAAT,CAAwBL,OAAxB,EAAiC;AAC7B,MAAIX,iBAAiB,CAACW,OAAO,CAAChe,KAAT,CAArB,EAAsC;AAClC,WAAO,IAAP,CADkC,CACrB;AAChB;;AACD,SAAOyd,YAAY,CAACd,IAAb,CAAkBqB,OAAO,CAAChe,KAA1B,IAAmC,IAAnC,GAA0C;AAAE,aAAS;AAAX,GAAjD;AACH;AACD;AACA;AACA;AACA;;;AACA,SAASue,kBAAT,CAA4BD,SAA5B,EAAuC;AACnC,SAAQN,OAAD,IAAa;AAChB,QAAIX,iBAAiB,CAACW,OAAO,CAAChe,KAAT,CAAjB,IAAoC,CAACsd,cAAc,CAACU,OAAO,CAAChe,KAAT,CAAvD,EAAwE;AACpE;AACA;AACA,aAAO,IAAP;AACH;;AACD,WAAOge,OAAO,CAAChe,KAAR,CAAcgD,MAAd,GAAuBsb,SAAvB,GACH;AAAE,mBAAa;AAAE,0BAAkBA,SAApB;AAA+B,wBAAgBN,OAAO,CAAChe,KAAR,CAAcgD;AAA7D;AAAf,KADG,GAEH,IAFJ;AAGH,GATD;AAUH;AACD;AACA;AACA;AACA;;;AACA,SAASyb,kBAAT,CAA4BD,SAA5B,EAAuC;AACnC,SAAQR,OAAD,IAAa;AAChB,WAAOV,cAAc,CAACU,OAAO,CAAChe,KAAT,CAAd,IAAiCge,OAAO,CAAChe,KAAR,CAAcgD,MAAd,GAAuBwb,SAAxD,GACH;AAAE,mBAAa;AAAE,0BAAkBA,SAApB;AAA+B,wBAAgBR,OAAO,CAAChe,KAAR,CAAcgD;AAA7D;AAAf,KADG,GAEH,IAFJ;AAGH,GAJD;AAKH;AACD;AACA;AACA;AACA;;;AACA,SAAS2b,gBAAT,CAA0BD,OAA1B,EAAmC;AAC/B,MAAI,CAACA,OAAL,EACI,OAAOE,aAAP;AACJ,MAAIM,KAAJ;AACA,MAAIC,QAAJ;;AACA,MAAI,OAAOT,OAAP,KAAmB,QAAvB,EAAiC;AAC7BS,IAAAA,QAAQ,GAAG,EAAX;AACA,QAAIT,OAAO,CAACU,MAAR,CAAe,CAAf,MAAsB,GAA1B,EACID,QAAQ,IAAI,GAAZ;AACJA,IAAAA,QAAQ,IAAIT,OAAZ;AACA,QAAIA,OAAO,CAACU,MAAR,CAAeV,OAAO,CAAC1b,MAAR,GAAiB,CAAhC,MAAuC,GAA3C,EACImc,QAAQ,IAAI,GAAZ;AACJD,IAAAA,KAAK,GAAG,IAAIG,MAAJ,CAAWF,QAAX,CAAR;AACH,GARD,MASK;AACDA,IAAAA,QAAQ,GAAGT,OAAO,CAACY,QAAR,EAAX;AACAJ,IAAAA,KAAK,GAAGR,OAAR;AACH;;AACD,SAAQV,OAAD,IAAa;AAChB,QAAIX,iBAAiB,CAACW,OAAO,CAAChe,KAAT,CAArB,EAAsC;AAClC,aAAO,IAAP,CADkC,CACrB;AAChB;;AACD,UAAMA,KAAK,GAAGge,OAAO,CAAChe,KAAtB;AACA,WAAOkf,KAAK,CAACvC,IAAN,CAAW3c,KAAX,IAAoB,IAApB,GACH;AAAE,iBAAW;AAAE,2BAAmBmf,QAArB;AAA+B,uBAAenf;AAA9C;AAAb,KADJ;AAEH,GAPD;AAQH;AACD;AACA;AACA;;;AACA,SAAS4e,aAAT,CAAuBZ,OAAvB,EAAgC;AAC5B,SAAO,IAAP;AACH;;AACD,SAASuB,SAAT,CAAmBC,CAAnB,EAAsB;AAClB,SAAOA,CAAC,IAAI,IAAZ;AACH;;AACD,SAASC,YAAT,CAAsBC,CAAtB,EAAyB;AACrB,QAAMC,GAAG,GAAG/E,4DAAU,CAAC8E,CAAD,CAAV,GAAgBtiB,0CAAI,CAACsiB,CAAD,CAApB,GAA0BA,CAAtC;;AACA,MAAI,CAAE7E,+DAAa,CAAC8E,GAAD,CAAf,KAA0B,OAAOzQ,SAAP,KAAqB,WAArB,IAAoCA,SAA9D,CAAJ,EAA8E;AAC1E,UAAM,IAAIvD,KAAJ,CAAW,qDAAX,CAAN;AACH;;AACD,SAAOgU,GAAP;AACH;;AACD,SAASC,WAAT,CAAqBC,aAArB,EAAoC;AAChC,MAAIC,GAAG,GAAG,EAAV,CADgC,CAEhC;AACA;;AACAD,EAAAA,aAAa,CAACxO,OAAd,CAAuB0O,MAAD,IAAY;AAC9BD,IAAAA,GAAG,GAAGC,MAAM,IAAI,IAAV,GAAiBC,MAAM,CAACC,MAAP,CAAcD,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBH,GAAlB,CAAd,EAAsCC,MAAtC,CAAjB,GAAiED,GAAvE;AACH,GAFD;AAGA,SAAOE,MAAM,CAACE,IAAP,CAAYJ,GAAZ,EAAiB9c,MAAjB,KAA4B,CAA5B,GAAgC,IAAhC,GAAuC8c,GAA9C;AACH;;AACD,SAASK,iBAAT,CAA2BnC,OAA3B,EAAoCc,UAApC,EAAgD;AAC5C,SAAOA,UAAU,CAACpW,GAAX,CAAe0X,SAAS,IAAIA,SAAS,CAACpC,OAAD,CAArC,CAAP;AACH;;AACD,SAASqC,aAAT,CAAuBD,SAAvB,EAAkC;AAC9B,SAAO,CAACA,SAAS,CAACE,QAAlB;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASC,mBAAT,CAA6BzB,UAA7B,EAAyC;AACrC,SAAOA,UAAU,CAACpW,GAAX,CAAe0X,SAAS,IAAI;AAC/B,WAAOC,aAAa,CAACD,SAAD,CAAb,GACHA,SADG,GAEDI,CAAD,IAAOJ,SAAS,CAACE,QAAV,CAAmBE,CAAnB,CAFZ;AAGH,GAJM,CAAP;AAKH;AACD;AACA;AACA;AACA;;;AACA,SAAS3B,OAAT,CAAiBC,UAAjB,EAA6B;AACzB,MAAI,CAACA,UAAL,EACI,OAAO,IAAP;AACJ,QAAM2B,iBAAiB,GAAG3B,UAAU,CAAC/I,MAAX,CAAkBwJ,SAAlB,CAA1B;AACA,MAAIkB,iBAAiB,CAACzd,MAAlB,IAA4B,CAAhC,EACI,OAAO,IAAP;AACJ,SAAO,UAAUgb,OAAV,EAAmB;AACtB,WAAO4B,WAAW,CAACO,iBAAiB,CAACnC,OAAD,EAAUyC,iBAAV,CAAlB,CAAlB;AACH,GAFD;AAGH;AACD;AACA;AACA;AACA;AACA;;;AACA,SAASC,iBAAT,CAA2B5B,UAA3B,EAAuC;AACnC,SAAOA,UAAU,IAAI,IAAd,GAAqBD,OAAO,CAAC0B,mBAAmB,CAACzB,UAAD,CAApB,CAA5B,GAAgE,IAAvE;AACH;AACD;AACA;AACA;AACA;;;AACA,SAASC,YAAT,CAAsBD,UAAtB,EAAkC;AAC9B,MAAI,CAACA,UAAL,EACI,OAAO,IAAP;AACJ,QAAM2B,iBAAiB,GAAG3B,UAAU,CAAC/I,MAAX,CAAkBwJ,SAAlB,CAA1B;AACA,MAAIkB,iBAAiB,CAACzd,MAAlB,IAA4B,CAAhC,EACI,OAAO,IAAP;AACJ,SAAO,UAAUgb,OAAV,EAAmB;AACtB,UAAM2C,WAAW,GAAGR,iBAAiB,CAACnC,OAAD,EAAUyC,iBAAV,CAAjB,CAA8C/X,GAA9C,CAAkD+W,YAAlD,CAApB;AACA,WAAOtE,8CAAQ,CAACwF,WAAD,CAAR,CAAsB7d,IAAtB,CAA2B4F,mDAAG,CAACkX,WAAD,CAA9B,CAAP;AACH,GAHD;AAIH;AACD;AACA;AACA;AACA;AACA;;;AACA,SAASgB,sBAAT,CAAgC9B,UAAhC,EAA4C;AACxC,SAAOA,UAAU,IAAI,IAAd,GAAqBC,YAAY,CAACwB,mBAAmB,CAACzB,UAAD,CAApB,CAAjC,GACH,IADJ;AAEH;AACD;AACA;AACA;AACA;;;AACA,SAAS+B,eAAT,CAAyBC,iBAAzB,EAA4CC,YAA5C,EAA0D;AACtD,MAAID,iBAAiB,KAAK,IAA1B,EACI,OAAO,CAACC,YAAD,CAAP;AACJ,SAAOvX,KAAK,CAACkN,OAAN,CAAcoK,iBAAd,IAAmC,CAAC,GAAGA,iBAAJ,EAAuBC,YAAvB,CAAnC,GACH,CAACD,iBAAD,EAAoBC,YAApB,CADJ;AAEH;AACD;AACA;AACA;;;AACA,SAASC,oBAAT,CAA8BhD,OAA9B,EAAuC;AACnC,SAAOA,OAAO,CAACiD,cAAf;AACH;AACD;AACA;AACA;;;AACA,SAASC,yBAAT,CAAmClD,OAAnC,EAA4C;AACxC,SAAOA,OAAO,CAACmD,mBAAf;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASC,mBAAT,CAA6BtC,UAA7B,EAAyC;AACrC,MAAI,CAACA,UAAL,EACI,OAAO,EAAP;AACJ,SAAOtV,KAAK,CAACkN,OAAN,CAAcoI,UAAd,IAA4BA,UAA5B,GAAyC,CAACA,UAAD,CAAhD;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASuC,YAAT,CAAsBvC,UAAtB,EAAkCsB,SAAlC,EAA6C;AACzC,SAAO5W,KAAK,CAACkN,OAAN,CAAcoI,UAAd,IAA4BA,UAAU,CAACwC,QAAX,CAAoBlB,SAApB,CAA5B,GAA6DtB,UAAU,KAAKsB,SAAnF;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASmB,aAAT,CAAuBzC,UAAvB,EAAmC0C,iBAAnC,EAAsD;AAClD,QAAMC,OAAO,GAAGL,mBAAmB,CAACI,iBAAD,CAAnC;AACA,QAAME,eAAe,GAAGN,mBAAmB,CAACtC,UAAD,CAA3C;AACA4C,EAAAA,eAAe,CAACrQ,OAAhB,CAAyBhT,CAAD,IAAO;AAC3B;AACA;AACA;AACA;AACA,QAAI,CAACgjB,YAAY,CAACI,OAAD,EAAUpjB,CAAV,CAAjB,EAA+B;AAC3BojB,MAAAA,OAAO,CAACjf,IAAR,CAAanE,CAAb;AACH;AACJ,GARD;AASA,SAAOojB,OAAP;AACH;;AACD,SAASE,gBAAT,CAA0B7C,UAA1B,EAAsC0C,iBAAtC,EAAyD;AACrD,SAAOJ,mBAAmB,CAACI,iBAAD,CAAnB,CAAuCzL,MAAvC,CAA8C1X,CAAC,IAAI,CAACgjB,YAAY,CAACvC,UAAD,EAAazgB,CAAb,CAAhE,CAAP;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMujB,wBAAN,CAA+B;AAC3B5jB,EAAAA,WAAW,GAAG;AACV;AACR;AACA;AACA;AACQ,SAAKijB,cAAL,GAAsB,EAAtB;AACA;AACR;AACA;AACA;AACA;;AACQ,SAAKE,mBAAL,GAA2B,EAA3B;AACA;AACR;AACA;;AACQ,SAAKU,mBAAL,GAA2B,EAA3B;AACH;AACD;AACJ;AACA;AACA;;;AACa,MAAL7hB,KAAK,GAAG;AACR,WAAO,KAAKge,OAAL,GAAe,KAAKA,OAAL,CAAahe,KAA5B,GAAoC,IAA3C;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;;AACa,MAAL8hB,KAAK,GAAG;AACR,WAAO,KAAK9D,OAAL,GAAe,KAAKA,OAAL,CAAa8D,KAA5B,GAAoC,IAA3C;AACH;AACD;AACJ;AACA;AACA;AACA;;;AACe,MAAPC,OAAO,GAAG;AACV,WAAO,KAAK/D,OAAL,GAAe,KAAKA,OAAL,CAAa+D,OAA5B,GAAsC,IAA7C;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;;AACe,MAAPC,OAAO,GAAG;AACV,WAAO,KAAKhE,OAAL,GAAe,KAAKA,OAAL,CAAagE,OAA5B,GAAsC,IAA7C;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;;AACgB,MAARC,QAAQ,GAAG;AACX,WAAO,KAAKjE,OAAL,GAAe,KAAKA,OAAL,CAAaiE,QAA5B,GAAuC,IAA9C;AACH;AACD;AACJ;AACA;AACA;AACA;;;AACe,MAAPC,OAAO,GAAG;AACV,WAAO,KAAKlE,OAAL,GAAe,KAAKA,OAAL,CAAakE,OAA5B,GAAsC,IAA7C;AACH;AACD;AACJ;AACA;AACA;;;AACc,MAANnC,MAAM,GAAG;AACT,WAAO,KAAK/B,OAAL,GAAe,KAAKA,OAAL,CAAa+B,MAA5B,GAAqC,IAA5C;AACH;AACD;AACJ;AACA;AACA;AACA;;;AACgB,MAARoC,QAAQ,GAAG;AACX,WAAO,KAAKnE,OAAL,GAAe,KAAKA,OAAL,CAAamE,QAA5B,GAAuC,IAA9C;AACH;AACD;AACJ;AACA;AACA;AACA;;;AACa,MAALC,KAAK,GAAG;AACR,WAAO,KAAKpE,OAAL,GAAe,KAAKA,OAAL,CAAaoE,KAA5B,GAAoC,IAA3C;AACH;AACD;AACJ;AACA;AACA;AACA;;;AACe,MAAPC,OAAO,GAAG;AACV,WAAO,KAAKrE,OAAL,GAAe,KAAKA,OAAL,CAAaqE,OAA5B,GAAsC,IAA7C;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;;AACc,MAANC,MAAM,GAAG;AACT,WAAO,KAAKtE,OAAL,GAAe,KAAKA,OAAL,CAAasE,MAA5B,GAAqC,IAA5C;AACH;AACD;AACJ;AACA;AACA;AACA;;;AACiB,MAATC,SAAS,GAAG;AACZ,WAAO,KAAKvE,OAAL,GAAe,KAAKA,OAAL,CAAauE,SAA5B,GAAwC,IAA/C;AACH;AACD;AACJ;AACA;AACA;AACA;;;AACqB,MAAbC,aAAa,GAAG;AAChB,WAAO,KAAKxE,OAAL,GAAe,KAAKA,OAAL,CAAawE,aAA5B,GAA4C,IAAnD;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;;AACoB,MAAZC,YAAY,GAAG;AACf,WAAO,KAAKzE,OAAL,GAAe,KAAKA,OAAL,CAAayE,YAA5B,GAA2C,IAAlD;AACH;AACD;AACJ;AACA;AACA;AACA;;;AACY,MAAJC,IAAI,GAAG;AACP,WAAO,IAAP;AACH;AACD;AACJ;AACA;AACA;;;AACIC,EAAAA,cAAc,CAAC7D,UAAD,EAAa;AACvB,SAAKmC,cAAL,GAAsBnC,UAAU,IAAI,EAApC;AACA,SAAK8D,oBAAL,GAA4BlC,iBAAiB,CAAC,KAAKO,cAAN,CAA7C;AACH;AACD;AACJ;AACA;AACA;;;AACI4B,EAAAA,mBAAmB,CAAC/D,UAAD,EAAa;AAC5B,SAAKqC,mBAAL,GAA2BrC,UAAU,IAAI,EAAzC;AACA,SAAKgE,yBAAL,GAAiClC,sBAAsB,CAAC,KAAKO,mBAAN,CAAvD;AACH;AACD;AACJ;AACA;AACA;AACA;;;AACiB,MAATf,SAAS,GAAG;AACZ,WAAO,KAAKwC,oBAAL,IAA6B,IAApC;AACH;AACD;AACJ;AACA;AACA;AACA;;;AACsB,MAAdG,cAAc,GAAG;AACjB,WAAO,KAAKD,yBAAL,IAAkC,IAAzC;AACH;AACD;AACJ;AACA;AACA;AACA;;;AACIE,EAAAA,kBAAkB,CAAC/T,EAAD,EAAK;AACnB,SAAK4S,mBAAL,CAAyBrf,IAAzB,CAA8ByM,EAA9B;AACH;AACD;AACJ;AACA;AACA;AACA;;;AACIgU,EAAAA,yBAAyB,GAAG;AACxB,SAAKpB,mBAAL,CAAyBxQ,OAAzB,CAAiCpC,EAAE,IAAIA,EAAE,EAAzC;;AACA,SAAK4S,mBAAL,GAA2B,EAA3B;AACH;AACD;AACJ;AACA;AACA;;;AACIqB,EAAAA,KAAK,CAACljB,KAAK,GAAGM,SAAT,EAAoB;AACrB,QAAI,KAAK0d,OAAT,EACI,KAAKA,OAAL,CAAakF,KAAb,CAAmBljB,KAAnB;AACP;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;AACA;AACA;AACA;AACA;;;AACImjB,EAAAA,QAAQ,CAACC,SAAD,EAAYV,IAAZ,EAAkB;AACtB,WAAO,KAAK1E,OAAL,GAAe,KAAKA,OAAL,CAAamF,QAAb,CAAsBC,SAAtB,EAAiCV,IAAjC,CAAf,GAAwD,KAA/D;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;AACA;;;AACIW,EAAAA,QAAQ,CAACD,SAAD,EAAYV,IAAZ,EAAkB;AACtB,WAAO,KAAK1E,OAAL,GAAe,KAAKA,OAAL,CAAaqF,QAAb,CAAsBD,SAAtB,EAAiCV,IAAjC,CAAf,GAAwD,IAA/D;AACH;;AApQ0B;AAuQ/B;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMY,SAAN,SAAwB1B,wBAAxB,CAAiD;AAC7C5jB,EAAAA,WAAW,GAAG;AACV,UAAM,GAAGulB,SAAT;AACA;AACR;AACA;AACA;AACA;AACA;;AACQ,SAAKC,OAAL,GAAe,IAAf;AACA;AACR;AACA;AACA;;AACQ,SAAK/jB,IAAL,GAAY,IAAZ;AACA;AACR;AACA;AACA;;AACQ,SAAKgkB,aAAL,GAAqB,IAArB;AACH;;AApB4C;AAuBjD;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMC,gBAAN,SAA+B9B,wBAA/B,CAAwD;AACpD;AACJ;AACA;AACA;AACqB,MAAb+B,aAAa,GAAG;AAChB,WAAO,IAAP;AACH;AACD;AACJ;AACA;AACA;;;AACY,MAAJjB,IAAI,GAAG;AACP,WAAO,IAAP;AACH;;AAdmD;AAiBxD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMkB,qBAAN,CAA4B;AACxB5lB,EAAAA,WAAW,CAAC6lB,EAAD,EAAK;AACZ,SAAKC,GAAL,GAAWD,EAAX;AACH;;AACDE,EAAAA,EAAE,CAACzB,MAAD,EAAS;AACP,QAAIjhB,EAAJ,EAAQuI,EAAR,EAAYoa,EAAZ,CADO,CAEP;AACA;AACA;AACA;AACA;AACA;;;AACA,QAAI1B,MAAM,KAAK,WAAf,EAA4B;AACxB;AACA;AACA,aAAO,CAAC,EAAE,CAACjhB,EAAE,GAAG,KAAKyiB,GAAX,MAAoB,IAApB,IAA4BziB,EAAE,KAAK,KAAK,CAAxC,GAA4C,KAAK,CAAjD,GAAqDA,EAAE,CAAC4iB,SAA1D,CAAR;AACH;;AACD,WAAO,CAAC,EAAE,CAACD,EAAE,GAAG,CAACpa,EAAE,GAAG,KAAKka,GAAX,MAAoB,IAApB,IAA4Bla,EAAE,KAAK,KAAK,CAAxC,GAA4C,KAAK,CAAjD,GAAqDA,EAAE,CAACoU,OAA9D,MAA2E,IAA3E,IAAmFgG,EAAE,KAAK,KAAK,CAA/F,GAAmG,KAAK,CAAxG,GAA4GA,EAAE,CAAC1B,MAAD,CAAhH,CAAR;AACH;;AAlBuB;;AAoB5B,MAAM4B,mBAAmB,GAAG;AACxB,0BAAwB,iBADA;AAExB,wBAAsB,eAFE;AAGxB,yBAAuB,gBAHC;AAIxB,sBAAoB,aAJI;AAKxB,sBAAoB,aALI;AAMxB,wBAAsB,eANE;AAOxB,wBAAsB;AAPE,CAA5B;AASA,MAAMC,iBAAiB,GAAG;AACtB,0BAAwB,iBADF;AAEtB,wBAAsB,eAFA;AAGtB,yBAAuB,gBAHD;AAItB,sBAAoB,aAJE;AAKtB,sBAAoB,aALE;AAMtB,wBAAsB,eANA;AAOtB,wBAAsB,eAPA;AAQtB,0BAAwB;AARF,CAA1B;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMC,eAAN,SAA8BR,qBAA9B,CAAoD;AAChD5lB,EAAAA,WAAW,CAAC6lB,EAAD,EAAK;AACZ,UAAMA,EAAN;AACH;;AAH+C;;AAKpDO,eAAe,CAACvlB,IAAhB;AAAA,mBAA4GulB,eAA5G,EA7wC2GroB,+DA6wC3G,CAA6IunB,SAA7I;AAAA;;AACAc,eAAe,CAACrlB,IAAhB,kBA9wC2GhD,+DA8wC3G;AAAA,QAAgGqoB,eAAhG;AAAA;AAAA;AAAA;AAAA;AA9wC2GroB,MAAAA,yDA8wC3G;AAAA;AAAA;AAAA,aA9wC2GA,wEA8wC3G;AAAA;;AACA;AAAA,qDA/wC2GA,+DA+wC3G,CAA2FqoB,eAA3F,EAAwH,CAAC;AAC7GplB,IAAAA,IAAI,EAAE/C,oDADuG;AAE7GgC,IAAAA,IAAI,EAAE,CAAC;AAAEgB,MAAAA,QAAQ,EAAE,2CAAZ;AAAyDkC,MAAAA,IAAI,EAAE+iB;AAA/D,KAAD;AAFuG,GAAD,CAAxH,EAG4B,YAAY;AAChC,WAAO,CAAC;AAAEllB,MAAAA,IAAI,EAAEskB,SAAR;AAAmB/iB,MAAAA,UAAU,EAAE,CAAC;AACxBvB,QAAAA,IAAI,EAAE8b,+CAAIA;AADc,OAAD;AAA/B,KAAD,CAAP;AAGH,GAPL;AAAA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMuJ,oBAAN,SAAmCT,qBAAnC,CAAyD;AACrD5lB,EAAAA,WAAW,CAAC6lB,EAAD,EAAK;AACZ,UAAMA,EAAN;AACH;;AAHoD;;AAKzDQ,oBAAoB,CAACxlB,IAArB;AAAA,mBAAiHwlB,oBAAjH,EAxyC2GtoB,+DAwyC3G,CAAuJ2nB,gBAAvJ;AAAA;;AACAW,oBAAoB,CAACtlB,IAArB,kBAzyC2GhD,+DAyyC3G;AAAA,QAAqGsoB,oBAArG;AAAA;AAAA;AAAA;AAAA;AAzyC2GtoB,MAAAA,yDAyyC3G;AAAA;AAAA;AAAA,aAzyC2GA,wEAyyC3G;AAAA;;AACA;AAAA,qDA1yC2GA,+DA0yC3G,CAA2FsoB,oBAA3F,EAA6H,CAAC;AAClHrlB,IAAAA,IAAI,EAAE/C,oDAD4G;AAElHgC,IAAAA,IAAI,EAAE,CAAC;AACCgB,MAAAA,QAAQ,EAAE,0FADX;AAECkC,MAAAA,IAAI,EAAEgjB;AAFP,KAAD;AAF4G,GAAD,CAA7H,EAM4B,YAAY;AAChC,WAAO,CAAC;AAAEnlB,MAAAA,IAAI,EAAE0kB,gBAAR;AAA0BnjB,MAAAA,UAAU,EAAE,CAAC;AAC/BvB,QAAAA,IAAI,EAAE7C,mDAAQA;AADiB,OAAD,EAE/B;AACC6C,QAAAA,IAAI,EAAE8b,+CAAIA;AADX,OAF+B;AAAtC,KAAD,CAAP;AAKH,GAZL;AAAA;AAcA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMwJ,sBAAsB,GAAI;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MATA;AAUA,MAAMC,oBAAoB,GAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAXA;AAYA,MAAMC,oBAAoB,GAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAdA;AAeA,MAAMC,mBAAmB,GAAI;AAC7B;AACA;AACA;AACA;AACA,UALA;AAMA,MAAMC,2BAA2B,GAAI;AACrC;AACA;AACA;AACA;AACA,CALA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASC,sBAAT,GAAkC;AAC9B,SAAO,IAAIhZ,KAAJ,CAAW;AACtB;AACA;AACA;AACA;AACA,MAAM2Y,sBAAuB,EALlB,CAAP;AAMH;;AACD,SAASM,qBAAT,GAAiC;AAC7B,SAAO,IAAIjZ,KAAJ,CAAW;AACtB;AACA;AACA;AACA;AACA,QAAQ4Y,oBAAqB;AAC7B;AACA;AACA;AACA,QAAQE,mBAAoB,EATjB,CAAP;AAUH;;AACD,SAASI,oBAAT,GAAgC;AAC5B,SAAO,IAAIlZ,KAAJ,CAAW;AACtB;AACA;AACA;AACA,QAAQ2Y,sBAAuB,EAJpB,CAAP;AAKH;;AACD,SAASQ,oBAAT,GAAgC;AAC5B,SAAO,IAAInZ,KAAJ,CAAW;AACtB;AACA;AACA;AACA;AACA,MAAM4Y,oBAAqB,EALhB,CAAP;AAMH;;AACD,SAASQ,oBAAT,GAAgC;AAC5B,SAAO,IAAIpZ,KAAJ,CAAW;AACtB;AACA;AACA;AACA;AACA,QAAQ6Y,oBAAqB,EALlB,CAAP;AAMH;;AACD,MAAMQ,mBAAmB,GAAI;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAVA;;AAWA,SAASC,cAAT,CAAwBC,aAAxB,EAAuC;AACnC,SAAQ;AACZ,iEAAiEA,aAAc;AAC/E;AACA;AACA;AACA;AACA;AACA,iCAAiCA,aAAa,KAAK,aAAlB,GAAkC,sBAAlC,GAA2D,iBAAkB;AAC9G,GARI;AASH;;AACD,SAASC,WAAT,CAAqBC,WAArB,EAAkC1J,GAAlC,EAAuC;AACnC,SAAO0J,WAAW,GAAI,eAAc1J,GAAI,GAAtB,GAA4B,aAAYA,GAAI,EAA9D;AACH;;AACD,SAAS2J,eAAT,CAAyBD,WAAzB,EAAsC;AAClC,SAAQ;AACZ,sDAAsDA,WAAW,GAAG,OAAH,GAAa,OAAQ;AACtF;AACA,GAHI;AAIH;;AACD,SAASE,mBAAT,CAA6BF,WAA7B,EAA0C1J,GAA1C,EAA+C;AAC3C,SAAQ,4BAA2ByJ,WAAW,CAACC,WAAD,EAAc1J,GAAd,CAAmB,EAAjE;AACH;;AACD,SAAS6J,wBAAT,CAAkCH,WAAlC,EAA+C1J,GAA/C,EAAoD;AAChD,SAAQ,wCAAuCyJ,WAAW,CAACC,WAAD,EAAc1J,GAAd,CAAmB,EAA7E;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS8J,WAAT,CAAqB/lB,IAArB,EAA2BgmB,MAA3B,EAAmC;AAC/B,SAAO,CAAC,GAAGA,MAAM,CAAC/C,IAAX,EAAiBjjB,IAAjB,CAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASimB,YAAT,CAAsB1H,OAAtB,EAA+BzT,GAA/B,EAAoC;AAChC,MAAI,OAAO2E,SAAP,KAAqB,WAArB,IAAoCA,SAAxC,EAAmD;AAC/C,QAAI,CAAC8O,OAAL,EACI2H,WAAW,CAACpb,GAAD,EAAM,0BAAN,CAAX;AACJ,QAAI,CAACA,GAAG,CAACkZ,aAAT,EACIkC,WAAW,CAACpb,GAAD,EAAM,yCAAN,CAAX;AACP;;AACDqb,EAAAA,eAAe,CAAC5H,OAAD,EAAUzT,GAAV,CAAf;AACAA,EAAAA,GAAG,CAACkZ,aAAJ,CAAkBpH,UAAlB,CAA6B2B,OAAO,CAAChe,KAArC;AACA6lB,EAAAA,uBAAuB,CAAC7H,OAAD,EAAUzT,GAAV,CAAvB;AACAub,EAAAA,wBAAwB,CAAC9H,OAAD,EAAUzT,GAAV,CAAxB;AACAwb,EAAAA,iBAAiB,CAAC/H,OAAD,EAAUzT,GAAV,CAAjB;AACAyb,EAAAA,0BAA0B,CAAChI,OAAD,EAAUzT,GAAV,CAA1B;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS0b,cAAT,CAAwBjI,OAAxB,EAAiCzT,GAAjC,EAAsC2b,+BAA+B,GAAG,IAAxE,EAA8E;AAC1E,QAAMC,IAAI,GAAG,MAAM;AACf,QAAID,+BAA+B,KAAK,OAAOhX,SAAP,KAAqB,WAArB,IAAoCA,SAAzC,CAAnC,EAAwF;AACpFkX,MAAAA,eAAe,CAAC7b,GAAD,CAAf;AACH;AACJ,GAJD,CAD0E,CAM1E;AACA;AACA;AACA;AACA;;;AACA,MAAIA,GAAG,CAACkZ,aAAR,EAAuB;AACnBlZ,IAAAA,GAAG,CAACkZ,aAAJ,CAAkB7H,gBAAlB,CAAmCuK,IAAnC;AACA5b,IAAAA,GAAG,CAACkZ,aAAJ,CAAkB9H,iBAAlB,CAAoCwK,IAApC;AACH;;AACDE,EAAAA,iBAAiB,CAACrI,OAAD,EAAUzT,GAAV,CAAjB;;AACA,MAAIyT,OAAJ,EAAa;AACTzT,IAAAA,GAAG,CAAC0Y,yBAAJ;;AACAjF,IAAAA,OAAO,CAACsI,2BAAR,CAAoC,MAAM,CAAG,CAA7C;AACH;AACJ;;AACD,SAASC,yBAAT,CAAmCzH,UAAnC,EAA+CxD,QAA/C,EAAyD;AACrDwD,EAAAA,UAAU,CAACzN,OAAX,CAAoB+O,SAAD,IAAe;AAC9B,QAAIA,SAAS,CAACmG,yBAAd,EACInG,SAAS,CAACmG,yBAAV,CAAoCjL,QAApC;AACP,GAHD;AAIH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS0K,0BAAT,CAAoChI,OAApC,EAA6CzT,GAA7C,EAAkD;AAC9C,MAAIA,GAAG,CAACkZ,aAAJ,CAAkB5H,gBAAtB,EAAwC;AACpC,UAAM2K,gBAAgB,GAAI1K,UAAD,IAAgB;AACrCvR,MAAAA,GAAG,CAACkZ,aAAJ,CAAkB5H,gBAAlB,CAAmCC,UAAnC;AACH,KAFD;;AAGAkC,IAAAA,OAAO,CAACyI,wBAAR,CAAiCD,gBAAjC,EAJoC,CAKpC;AACA;;AACAjc,IAAAA,GAAG,CAACyY,kBAAJ,CAAuB,MAAM;AACzBhF,MAAAA,OAAO,CAAC0I,2BAAR,CAAoCF,gBAApC;AACH,KAFD;AAGH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASZ,eAAT,CAAyB5H,OAAzB,EAAkCzT,GAAlC,EAAuC;AACnC,QAAMuU,UAAU,GAAGkC,oBAAoB,CAAChD,OAAD,CAAvC;;AACA,MAAIzT,GAAG,CAAC6V,SAAJ,KAAkB,IAAtB,EAA4B;AACxBpC,IAAAA,OAAO,CAAC2I,aAAR,CAAsB9F,eAAe,CAAC/B,UAAD,EAAavU,GAAG,CAAC6V,SAAjB,CAArC;AACH,GAFD,MAGK,IAAI,OAAOtB,UAAP,KAAsB,UAA1B,EAAsC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACAd,IAAAA,OAAO,CAAC2I,aAAR,CAAsB,CAAC7H,UAAD,CAAtB;AACH;;AACD,QAAM8H,eAAe,GAAG1F,yBAAyB,CAAClD,OAAD,CAAjD;;AACA,MAAIzT,GAAG,CAACwY,cAAJ,KAAuB,IAA3B,EAAiC;AAC7B/E,IAAAA,OAAO,CAAC6I,kBAAR,CAA2BhG,eAAe,CAAC+F,eAAD,EAAkBrc,GAAG,CAACwY,cAAtB,CAA1C;AACH,GAFD,MAGK,IAAI,OAAO6D,eAAP,KAA2B,UAA/B,EAA2C;AAC5C5I,IAAAA,OAAO,CAAC6I,kBAAR,CAA2B,CAACD,eAAD,CAA3B;AACH,GArBkC,CAsBnC;;;AACA,QAAME,iBAAiB,GAAG,MAAM9I,OAAO,CAAC+I,sBAAR,EAAhC;;AACAR,EAAAA,yBAAyB,CAAChc,GAAG,CAAC0W,cAAL,EAAqB6F,iBAArB,CAAzB;AACAP,EAAAA,yBAAyB,CAAChc,GAAG,CAAC4W,mBAAL,EAA0B2F,iBAA1B,CAAzB;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAST,iBAAT,CAA2BrI,OAA3B,EAAoCzT,GAApC,EAAyC;AACrC,MAAIyc,gBAAgB,GAAG,KAAvB;;AACA,MAAIhJ,OAAO,KAAK,IAAhB,EAAsB;AAClB,QAAIzT,GAAG,CAAC6V,SAAJ,KAAkB,IAAtB,EAA4B;AACxB,YAAMtB,UAAU,GAAGkC,oBAAoB,CAAChD,OAAD,CAAvC;;AACA,UAAIxU,KAAK,CAACkN,OAAN,CAAcoI,UAAd,KAA6BA,UAAU,CAAC9b,MAAX,GAAoB,CAArD,EAAwD;AACpD;AACA,cAAMikB,iBAAiB,GAAGnI,UAAU,CAAC/I,MAAX,CAAkBqK,SAAS,IAAIA,SAAS,KAAK7V,GAAG,CAAC6V,SAAjD,CAA1B;;AACA,YAAI6G,iBAAiB,CAACjkB,MAAlB,KAA6B8b,UAAU,CAAC9b,MAA5C,EAAoD;AAChDgkB,UAAAA,gBAAgB,GAAG,IAAnB;AACAhJ,UAAAA,OAAO,CAAC2I,aAAR,CAAsBM,iBAAtB;AACH;AACJ;AACJ;;AACD,QAAI1c,GAAG,CAACwY,cAAJ,KAAuB,IAA3B,EAAiC;AAC7B,YAAM6D,eAAe,GAAG1F,yBAAyB,CAAClD,OAAD,CAAjD;;AACA,UAAIxU,KAAK,CAACkN,OAAN,CAAckQ,eAAd,KAAkCA,eAAe,CAAC5jB,MAAhB,GAAyB,CAA/D,EAAkE;AAC9D;AACA,cAAMkkB,sBAAsB,GAAGN,eAAe,CAAC7Q,MAAhB,CAAuBgN,cAAc,IAAIA,cAAc,KAAKxY,GAAG,CAACwY,cAAhE,CAA/B;;AACA,YAAImE,sBAAsB,CAAClkB,MAAvB,KAAkC4jB,eAAe,CAAC5jB,MAAtD,EAA8D;AAC1DgkB,UAAAA,gBAAgB,GAAG,IAAnB;AACAhJ,UAAAA,OAAO,CAAC6I,kBAAR,CAA2BK,sBAA3B;AACH;AACJ;AACJ;AACJ,GAzBoC,CA0BrC;;;AACA,QAAMf,IAAI,GAAG,MAAM,CAAG,CAAtB;;AACAI,EAAAA,yBAAyB,CAAChc,GAAG,CAAC0W,cAAL,EAAqBkF,IAArB,CAAzB;AACAI,EAAAA,yBAAyB,CAAChc,GAAG,CAAC4W,mBAAL,EAA0BgF,IAA1B,CAAzB;AACA,SAAOa,gBAAP;AACH;;AACD,SAASnB,uBAAT,CAAiC7H,OAAjC,EAA0CzT,GAA1C,EAA+C;AAC3CA,EAAAA,GAAG,CAACkZ,aAAJ,CAAkB7H,gBAAlB,CAAoCuL,QAAD,IAAc;AAC7CnJ,IAAAA,OAAO,CAACoJ,aAAR,GAAwBD,QAAxB;AACAnJ,IAAAA,OAAO,CAACqJ,cAAR,GAAyB,IAAzB;AACArJ,IAAAA,OAAO,CAACsJ,aAAR,GAAwB,IAAxB;AACA,QAAItJ,OAAO,CAACuJ,QAAR,KAAqB,QAAzB,EACIC,aAAa,CAACxJ,OAAD,EAAUzT,GAAV,CAAb;AACP,GAND;AAOH;;AACD,SAASwb,iBAAT,CAA2B/H,OAA3B,EAAoCzT,GAApC,EAAyC;AACrCA,EAAAA,GAAG,CAACkZ,aAAJ,CAAkB9H,iBAAlB,CAAoC,MAAM;AACtCqC,IAAAA,OAAO,CAACyJ,eAAR,GAA0B,IAA1B;AACA,QAAIzJ,OAAO,CAACuJ,QAAR,KAAqB,MAArB,IAA+BvJ,OAAO,CAACqJ,cAA3C,EACIG,aAAa,CAACxJ,OAAD,EAAUzT,GAAV,CAAb;AACJ,QAAIyT,OAAO,CAACuJ,QAAR,KAAqB,QAAzB,EACIvJ,OAAO,CAAC0J,aAAR;AACP,GAND;AAOH;;AACD,SAASF,aAAT,CAAuBxJ,OAAvB,EAAgCzT,GAAhC,EAAqC;AACjC,MAAIyT,OAAO,CAACsJ,aAAZ,EACItJ,OAAO,CAAC2J,WAAR;AACJ3J,EAAAA,OAAO,CAAC4J,QAAR,CAAiB5J,OAAO,CAACoJ,aAAzB,EAAwC;AAAES,IAAAA,qBAAqB,EAAE;AAAzB,GAAxC;AACAtd,EAAAA,GAAG,CAACud,iBAAJ,CAAsB9J,OAAO,CAACoJ,aAA9B;AACApJ,EAAAA,OAAO,CAACqJ,cAAR,GAAyB,KAAzB;AACH;;AACD,SAASvB,wBAAT,CAAkC9H,OAAlC,EAA2CzT,GAA3C,EAAgD;AAC5C,QAAM+Q,QAAQ,GAAG,CAAC6L,QAAD,EAAWY,cAAX,KAA8B;AAC3C;AACAxd,IAAAA,GAAG,CAACkZ,aAAJ,CAAkBpH,UAAlB,CAA6B8K,QAA7B,EAF2C,CAG3C;;AACA,QAAIY,cAAJ,EACIxd,GAAG,CAACud,iBAAJ,CAAsBX,QAAtB;AACP,GAND;;AAOAnJ,EAAAA,OAAO,CAACpC,gBAAR,CAAyBN,QAAzB,EAR4C,CAS5C;AACA;;AACA/Q,EAAAA,GAAG,CAACyY,kBAAJ,CAAuB,MAAM;AACzBhF,IAAAA,OAAO,CAACgK,mBAAR,CAA4B1M,QAA5B;AACH,GAFD;AAGH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS2M,kBAAT,CAA4BjK,OAA5B,EAAqCzT,GAArC,EAA0C;AACtC,MAAIyT,OAAO,IAAI,IAAX,KAAoB,OAAO9O,SAAP,KAAqB,WAArB,IAAoCA,SAAxD,CAAJ,EACIyW,WAAW,CAACpb,GAAD,EAAM,0BAAN,CAAX;AACJqb,EAAAA,eAAe,CAAC5H,OAAD,EAAUzT,GAAV,CAAf;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS2d,oBAAT,CAA8BlK,OAA9B,EAAuCzT,GAAvC,EAA4C;AACxC,SAAO8b,iBAAiB,CAACrI,OAAD,EAAUzT,GAAV,CAAxB;AACH;;AACD,SAAS6b,eAAT,CAAyB7b,GAAzB,EAA8B;AAC1B,SAAOob,WAAW,CAACpb,GAAD,EAAM,wEAAN,CAAlB;AACH;;AACD,SAASob,WAAT,CAAqBpb,GAArB,EAA0B4d,OAA1B,EAAmC;AAC/B,MAAIC,UAAJ;;AACA,MAAI7d,GAAG,CAACmY,IAAJ,CAAS1f,MAAT,GAAkB,CAAtB,EAAyB;AACrBolB,IAAAA,UAAU,GAAI,UAAS7d,GAAG,CAACmY,IAAJ,CAAS2F,IAAT,CAAc,MAAd,CAAsB,GAA7C;AACH,GAFD,MAGK,IAAI9d,GAAG,CAACmY,IAAJ,CAAS,CAAT,CAAJ,EAAiB;AAClB0F,IAAAA,UAAU,GAAI,UAAS7d,GAAG,CAACmY,IAAK,GAAhC;AACH,GAFI,MAGA;AACD0F,IAAAA,UAAU,GAAG,4BAAb;AACH;;AACD,QAAM,IAAIzc,KAAJ,CAAW,GAAEwc,OAAQ,IAAGC,UAAW,EAAnC,CAAN;AACH;;AACD,SAASE,iBAAT,CAA2B5kB,OAA3B,EAAoC6kB,SAApC,EAA+C;AAC3C,MAAI,CAAC7kB,OAAO,CAAC8kB,cAAR,CAAuB,OAAvB,CAAL,EACI,OAAO,KAAP;AACJ,QAAMpY,MAAM,GAAG1M,OAAO,CAAC,OAAD,CAAtB;AACA,MAAI0M,MAAM,CAACqY,aAAP,EAAJ,EACI,OAAO,IAAP;AACJ,SAAO,CAACzI,MAAM,CAAC+D,EAAP,CAAUwE,SAAV,EAAqBnY,MAAM,CAACvM,YAA5B,CAAR;AACH;;AACD,SAAS6kB,iBAAT,CAA2BjF,aAA3B,EAA0C;AACtC;AACA;AACA,SAAOzD,MAAM,CAAC2I,cAAP,CAAsBlF,aAAa,CAACzlB,WAApC,MAAqDge,2BAA5D;AACH;;AACD,SAAS4M,mBAAT,CAA6BC,IAA7B,EAAmCC,UAAnC,EAA+C;AAC3CD,EAAAA,IAAI,CAACE,oBAAL;;AACAD,EAAAA,UAAU,CAACzX,OAAX,CAAoB9G,GAAD,IAAS;AACxB,UAAMyT,OAAO,GAAGzT,GAAG,CAACyT,OAApB;;AACA,QAAIA,OAAO,CAACuJ,QAAR,KAAqB,QAArB,IAAiCvJ,OAAO,CAACqJ,cAA7C,EAA6D;AACzD9c,MAAAA,GAAG,CAACud,iBAAJ,CAAsB9J,OAAO,CAACoJ,aAA9B;AACApJ,MAAAA,OAAO,CAACqJ,cAAR,GAAyB,KAAzB;AACH;AACJ,GAND;AAOH,EACD;;;AACA,SAAS2B,mBAAT,CAA6Bze,GAA7B,EAAkC0e,cAAlC,EAAkD;AAC9C,MAAI,CAACA,cAAL,EACI,OAAO,IAAP;AACJ,MAAI,CAACzf,KAAK,CAACkN,OAAN,CAAcuS,cAAd,CAAD,KAAmC,OAAO/Z,SAAP,KAAqB,WAArB,IAAoCA,SAAvE,CAAJ,EACIyW,WAAW,CAACpb,GAAD,EAAM,mEAAN,CAAX;AACJ,MAAI2e,eAAe,GAAG5oB,SAAtB;AACA,MAAI6oB,eAAe,GAAG7oB,SAAtB;AACA,MAAI8oB,cAAc,GAAG9oB,SAArB;AACA2oB,EAAAA,cAAc,CAAC5X,OAAf,CAAwBhT,CAAD,IAAO;AAC1B,QAAIA,CAAC,CAACL,WAAF,KAAkBue,oBAAtB,EAA4C;AACxC2M,MAAAA,eAAe,GAAG7qB,CAAlB;AACH,KAFD,MAGK,IAAIqqB,iBAAiB,CAACrqB,CAAD,CAArB,EAA0B;AAC3B,UAAI8qB,eAAe,KAAK,OAAOja,SAAP,KAAqB,WAArB,IAAoCA,SAAzC,CAAnB,EACIyW,WAAW,CAACpb,GAAD,EAAM,iEAAN,CAAX;AACJ4e,MAAAA,eAAe,GAAG9qB,CAAlB;AACH,KAJI,MAKA;AACD,UAAI+qB,cAAc,KAAK,OAAOla,SAAP,KAAqB,WAArB,IAAoCA,SAAzC,CAAlB,EACIyW,WAAW,CAACpb,GAAD,EAAM,+DAAN,CAAX;AACJ6e,MAAAA,cAAc,GAAG/qB,CAAjB;AACH;AACJ,GAdD;AAeA,MAAI+qB,cAAJ,EACI,OAAOA,cAAP;AACJ,MAAID,eAAJ,EACI,OAAOA,eAAP;AACJ,MAAID,eAAJ,EACI,OAAOA,eAAP;;AACJ,MAAI,OAAOha,SAAP,KAAqB,WAArB,IAAoCA,SAAxC,EAAmD;AAC/CyW,IAAAA,WAAW,CAACpb,GAAD,EAAM,+CAAN,CAAX;AACH;;AACD,SAAO,IAAP;AACH;;AACD,SAAS8e,cAAT,CAAwBC,IAAxB,EAA8BC,EAA9B,EAAkC;AAC9B,QAAM3gB,KAAK,GAAG0gB,IAAI,CAAClhB,OAAL,CAAamhB,EAAb,CAAd;AACA,MAAI3gB,KAAK,GAAG,CAAC,CAAb,EACI0gB,IAAI,CAACE,MAAL,CAAY5gB,KAAZ,EAAmB,CAAnB;AACP,EACD;;;AACA,SAAS6gB,eAAT,CAAyBhqB,IAAzB,EAA+BT,IAA/B,EAAqC0qB,QAArC,EAA+CC,aAA/C,EAA8D;AAC1D,MAAIA,aAAa,KAAK,OAAtB,EACI;;AACJ,MAAK,CAACA,aAAa,KAAK,IAAlB,IAA0BA,aAAa,KAAK,MAA7C,KAAwD,CAAC3qB,IAAI,CAAC4qB,uBAA/D,IACCD,aAAa,KAAK,QAAlB,IAA8B,CAACD,QAAQ,CAACG,mBAD7C,EACmE;AAC/D1a,IAAAA,OAAO,CAACC,IAAR,CAAa6V,cAAc,CAACxlB,IAAD,CAA3B;AACAT,IAAAA,IAAI,CAAC4qB,uBAAL,GAA+B,IAA/B;AACAF,IAAAA,QAAQ,CAACG,mBAAT,GAA+B,IAA/B;AACH;AACJ;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMC,WAAW,GAAG,OAAO5a,SAAP,KAAqB,WAArB,IAAoC,CAAC,CAACA,SAA1D;AACA;AACA;AACA;AACA;AACA;;AACA,MAAM6a,KAAK,GAAG,OAAd;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMC,OAAO,GAAG,SAAhB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMC,OAAO,GAAG,SAAhB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMC,QAAQ,GAAG,UAAjB;;AACA,SAASC,KAAT,CAAenM,OAAf,EAAwB0E,IAAxB,EAA8B0H,SAA9B,EAAyC;AACrC,MAAI1H,IAAI,IAAI,IAAZ,EACI,OAAO,IAAP;;AACJ,MAAI,CAAClZ,KAAK,CAACkN,OAAN,CAAcgM,IAAd,CAAL,EAA0B;AACtBA,IAAAA,IAAI,GAAGA,IAAI,CAAC2H,KAAL,CAAWD,SAAX,CAAP;AACH;;AACD,MAAI5gB,KAAK,CAACkN,OAAN,CAAcgM,IAAd,KAAuBA,IAAI,CAAC1f,MAAL,KAAgB,CAA3C,EACI,OAAO,IAAP,CAPiC,CAQrC;AACA;;AACA,MAAIsnB,aAAa,GAAGtM,OAApB;AACA0E,EAAAA,IAAI,CAACrR,OAAL,CAAc5R,IAAD,IAAU;AACnB,QAAI2lB,WAAW,CAACkF,aAAD,CAAf,EAAgC;AAC5BA,MAAAA,aAAa,GAAGA,aAAa,CAACC,QAAd,CAAuB/B,cAAvB,CAAsC/oB,IAAtC,IACZ6qB,aAAa,CAACC,QAAd,CAAuB9qB,IAAvB,CADY,GAEZ,IAFJ;AAGH,KAJD,MAKK,IAAI+qB,WAAW,CAACF,aAAD,CAAf,EAAgC;AACjCA,MAAAA,aAAa,GAAGA,aAAa,CAACG,EAAd,CAAiBhrB,IAAjB,KAA0B,IAA1C;AACH,KAFI,MAGA;AACD6qB,MAAAA,aAAa,GAAG,IAAhB;AACH;AACJ,GAZD;AAaA,SAAOA,aAAP;AACH;AACD;AACA;AACA;;;AACA,SAASI,cAAT,CAAwBC,eAAxB,EAAyC;AACrC,SAAO,CAACC,YAAY,CAACD,eAAD,CAAZ,GAAgCA,eAAe,CAAC7L,UAAhD,GAA6D6L,eAA9D,KAAkF,IAAzF;AACH;AACD;AACA;AACA;;;AACA,SAASE,iBAAT,CAA2BzK,SAA3B,EAAsC;AAClC,SAAO5W,KAAK,CAACkN,OAAN,CAAc0J,SAAd,IAA2BM,iBAAiB,CAACN,SAAD,CAA5C,GAA0DA,SAAS,IAAI,IAA9E;AACH;AACD;AACA;AACA;;;AACA,SAAS0K,mBAAT,CAA6B/H,cAA7B,EAA6C4H,eAA7C,EAA8D;AAC1D,SAAO,CAACC,YAAY,CAACD,eAAD,CAAZ,GAAgCA,eAAe,CAAC/D,eAAhD,GAAkE7D,cAAnE,KAAsF,IAA7F;AACH;AACD;AACA;AACA;;;AACA,SAASgI,sBAAT,CAAgChI,cAAhC,EAAgD;AAC5C,SAAOvZ,KAAK,CAACkN,OAAN,CAAcqM,cAAd,IAAgCnC,sBAAsB,CAACmC,cAAD,CAAtD,GACHA,cAAc,IAAI,IADtB;AAEH;;AACD,SAAS6H,YAAT,CAAsBD,eAAtB,EAAuC;AACnC,SAAOA,eAAe,IAAI,IAAnB,IAA2B,CAACnhB,KAAK,CAACkN,OAAN,CAAciU,eAAd,CAA5B,IACH,OAAOA,eAAP,KAA2B,QAD/B;AAEH;;AACD,MAAMK,aAAa,GAAIhN,OAAD,IAAaA,OAAO,YAAYiN,WAAtD;;AACA,MAAM7F,WAAW,GAAIpH,OAAD,IAAaA,OAAO,YAAYkN,SAApD;;AACA,MAAMV,WAAW,GAAIxM,OAAD,IAAaA,OAAO,YAAYmN,SAApD;;AACA,SAASC,WAAT,CAAqBpN,OAArB,EAA8B;AAC1B,SAAOgN,aAAa,CAAChN,OAAD,CAAb,GAAyBA,OAAO,CAAChe,KAAjC,GAAyCge,OAAO,CAACoN,WAAR,EAAhD;AACH;;AACD,SAASC,oBAAT,CAA8B5F,MAA9B,EAAsC/J,GAAtC,EAA2C;AACvC,QAAM4P,OAAO,GAAGlG,WAAW,CAACK,MAAD,CAA3B;AACA,QAAM8E,QAAQ,GAAG9E,MAAM,CAAC8E,QAAxB;AACA,QAAMgB,UAAU,GAAGD,OAAO,GAAGtL,MAAM,CAACE,IAAP,CAAYqK,QAAZ,CAAH,GAA2BA,QAArD;;AACA,MAAI,CAACgB,UAAU,CAACvoB,MAAhB,EAAwB;AACpB,UAAM,IAAI+X,2DAAJ,CAAkB;AAAK;AAAvB,MAA0C+O,WAAW,GAAGzE,eAAe,CAACiG,OAAD,CAAlB,GAA8B,EAAnF,CAAN;AACH;;AACD,MAAI,CAACf,QAAQ,CAAC7O,GAAD,CAAb,EAAoB;AAChB,UAAM,IAAIX,2DAAJ,CAAkB;AAAK;AAAvB,MAA8C+O,WAAW,GAAGxE,mBAAmB,CAACgG,OAAD,EAAU5P,GAAV,CAAtB,GAAuC,EAAhG,CAAN;AACH;AACJ;;AACD,SAAS8P,sBAAT,CAAgCxN,OAAhC,EAAyChe,KAAzC,EAAgD;AAC5C,QAAMsrB,OAAO,GAAGlG,WAAW,CAACpH,OAAD,CAA3B;;AACAA,EAAAA,OAAO,CAACyN,aAAR,CAAsB,CAAClQ,CAAD,EAAIG,GAAJ,KAAY;AAC9B,QAAI1b,KAAK,CAAC0b,GAAD,CAAL,KAAepb,SAAnB,EAA8B;AAC1B,YAAM,IAAIya,2DAAJ,CAAkB;AAAK;AAAvB,QAAoD+O,WAAW,GAAGvE,wBAAwB,CAAC+F,OAAD,EAAU5P,GAAV,CAA3B,GAA4C,EAA3G,CAAN;AACH;AACJ,GAJD;AAKH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMgQ,eAAN,CAAsB;AAClB;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACI1tB,EAAAA,WAAW,CAAC8gB,UAAD,EAAa8H,eAAb,EAA8B;AACrC;AACA,SAAKU,aAAL,GAAqB,KAArB;AACA;AACR;AACA;AACA;AACA;;AACQ,SAAKqE,4BAAL,GAAoC,KAApC;AACA;;AACA,SAAKlE,eAAL,GAAuB,KAAvB;AACA;;AACA,SAAKmE,mBAAL,GAA2B,MAAM,CAAG,CAApC;;AACA,SAAKpI,OAAL,GAAe,IAAf;AACA;AACR;AACA;AACA;AACA;AACA;AACA;;AACQ,SAAKrB,QAAL,GAAgB,IAAhB;AACA;AACR;AACA;AACA;AACA;AACA;;AACQ,SAAKE,OAAL,GAAe,KAAf;AACA;;AACA,SAAKwJ,iBAAL,GAAyB,EAAzB;AACA,SAAK5K,cAAL,GAAsBnC,UAAtB;AACA,SAAKqC,mBAAL,GAA2ByF,eAA3B;AACA,SAAKhE,oBAAL,GAA4BiI,iBAAiB,CAAC,KAAK5J,cAAN,CAA7C;AACA,SAAK6B,yBAAL,GAAiCiI,sBAAsB,CAAC,KAAK5J,mBAAN,CAAvD;AACH;AACD;AACJ;AACA;AACA;AACA;;;AACiB,MAATf,SAAS,GAAG;AACZ,WAAO,KAAKwC,oBAAZ;AACH;;AACY,MAATxC,SAAS,CAAC0L,WAAD,EAAc;AACvB,SAAK7K,cAAL,GAAsB,KAAK2B,oBAAL,GAA4BkJ,WAAlD;AACH;AACD;AACJ;AACA;AACA;AACA;;;AACsB,MAAd/I,cAAc,GAAG;AACjB,WAAO,KAAKD,yBAAZ;AACH;;AACiB,MAAdC,cAAc,CAACgJ,gBAAD,EAAmB;AACjC,SAAK5K,mBAAL,GAA2B,KAAK2B,yBAAL,GAAiCiJ,gBAA5D;AACH;AACD;AACJ;AACA;;;AACc,MAANtG,MAAM,GAAG;AACT,WAAO,KAAKjC,OAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;AACa,MAAL1B,KAAK,GAAG;AACR,WAAO,KAAKQ,MAAL,KAAgByH,KAAvB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;AACe,MAAPhI,OAAO,GAAG;AACV,WAAO,KAAKO,MAAL,KAAgB0H,OAAvB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;AACe,MAAPhI,OAAO,GAAG;AACV,WAAO,KAAKM,MAAL,IAAe2H,OAAtB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACgB,MAARhI,QAAQ,GAAG;AACX,WAAO,KAAKK,MAAL,KAAgB4H,QAAvB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACe,MAAPhI,OAAO,GAAG;AACV,WAAO,KAAKI,MAAL,KAAgB4H,QAAvB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;AACa,MAAL9H,KAAK,GAAG;AACR,WAAO,CAAC,KAAKD,QAAb;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;;AACiB,MAATI,SAAS,GAAG;AACZ,WAAO,CAAC,KAAKF,OAAb;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;;;AACgB,MAARkF,QAAQ,GAAG;AACX,WAAO,KAAKyE,SAAL,GAAiB,KAAKA,SAAtB,GAAmC,KAAKvG,MAAL,GAAc,KAAKA,MAAL,CAAY8B,QAA1B,GAAqC,QAA/E;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACIZ,EAAAA,aAAa,CAAC7H,UAAD,EAAa;AACtB,SAAKmC,cAAL,GAAsBnC,UAAtB;AACA,SAAK8D,oBAAL,GAA4BiI,iBAAiB,CAAC/L,UAAD,CAA7C;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI+H,EAAAA,kBAAkB,CAAC/H,UAAD,EAAa;AAC3B,SAAKqC,mBAAL,GAA2BrC,UAA3B;AACA,SAAKgE,yBAAL,GAAiCiI,sBAAsB,CAACjM,UAAD,CAAvD;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACIyC,EAAAA,aAAa,CAACzC,UAAD,EAAa;AACtB,SAAK6H,aAAL,CAAmBpF,aAAa,CAACzC,UAAD,EAAa,KAAKmC,cAAlB,CAAhC;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACIgL,EAAAA,kBAAkB,CAACnN,UAAD,EAAa;AAC3B,SAAK+H,kBAAL,CAAwBtF,aAAa,CAACzC,UAAD,EAAa,KAAKqC,mBAAlB,CAArC;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACIQ,EAAAA,gBAAgB,CAAC7C,UAAD,EAAa;AACzB,SAAK6H,aAAL,CAAmBhF,gBAAgB,CAAC7C,UAAD,EAAa,KAAKmC,cAAlB,CAAnC;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACIiL,EAAAA,qBAAqB,CAACpN,UAAD,EAAa;AAC9B,SAAK+H,kBAAL,CAAwBlF,gBAAgB,CAAC7C,UAAD,EAAa,KAAKqC,mBAAlB,CAAxC;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;AACIE,EAAAA,YAAY,CAACjB,SAAD,EAAY;AACpB,WAAOiB,YAAY,CAAC,KAAKJ,cAAN,EAAsBb,SAAtB,CAAnB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI+L,EAAAA,iBAAiB,CAAC/L,SAAD,EAAY;AACzB,WAAOiB,YAAY,CAAC,KAAKF,mBAAN,EAA2Bf,SAA3B,CAAnB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;AACIgM,EAAAA,eAAe,GAAG;AACd,SAAKhM,SAAL,GAAiB,IAAjB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;AACIiM,EAAAA,oBAAoB,GAAG;AACnB,SAAKtJ,cAAL,GAAsB,IAAtB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI2E,EAAAA,aAAa,CAAC4E,IAAI,GAAG,EAAR,EAAY;AACrB,SAAKjK,OAAL,GAAe,IAAf;;AACA,QAAI,KAAKmB,OAAL,IAAgB,CAAC8I,IAAI,CAACC,QAA1B,EAAoC;AAChC,WAAK/I,OAAL,CAAakE,aAAb,CAA2B4E,IAA3B;AACH;AACJ;AACD;AACJ;AACA;AACA;;;AACIE,EAAAA,gBAAgB,GAAG;AACf,SAAK9E,aAAL,CAAmB;AAAE6E,MAAAA,QAAQ,EAAE;AAAZ,KAAnB;;AACA,SAAKd,aAAL,CAAoBzN,OAAD,IAAaA,OAAO,CAACwO,gBAAR,EAAhC;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACIC,EAAAA,eAAe,CAACH,IAAI,GAAG,EAAR,EAAY;AACvB,SAAKjK,OAAL,GAAe,KAAf;AACA,SAAKoF,eAAL,GAAuB,KAAvB;;AACA,SAAKgE,aAAL,CAAoBzN,OAAD,IAAa;AAC5BA,MAAAA,OAAO,CAACyO,eAAR,CAAwB;AAAEF,QAAAA,QAAQ,EAAE;AAAZ,OAAxB;AACH,KAFD;;AAGA,QAAI,KAAK/I,OAAL,IAAgB,CAAC8I,IAAI,CAACC,QAA1B,EAAoC;AAChC,WAAK/I,OAAL,CAAakJ,cAAb,CAA4BJ,IAA5B;AACH;AACJ;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI3E,EAAAA,WAAW,CAAC2E,IAAI,GAAG,EAAR,EAAY;AACnB,SAAKnK,QAAL,GAAgB,KAAhB;;AACA,QAAI,KAAKqB,OAAL,IAAgB,CAAC8I,IAAI,CAACC,QAA1B,EAAoC;AAChC,WAAK/I,OAAL,CAAamE,WAAb,CAAyB2E,IAAzB;AACH;AACJ;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACIK,EAAAA,cAAc,CAACL,IAAI,GAAG,EAAR,EAAY;AACtB,SAAKnK,QAAL,GAAgB,IAAhB;AACA,SAAKmF,aAAL,GAAqB,KAArB;;AACA,SAAKmE,aAAL,CAAoBzN,OAAD,IAAa;AAC5BA,MAAAA,OAAO,CAAC2O,cAAR,CAAuB;AAAEJ,QAAAA,QAAQ,EAAE;AAAZ,OAAvB;AACH,KAFD;;AAGA,QAAI,KAAK/I,OAAL,IAAgB,CAAC8I,IAAI,CAACC,QAA1B,EAAoC;AAChC,WAAK/I,OAAL,CAAaoJ,eAAb,CAA6BN,IAA7B;AACH;AACJ;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACIO,EAAAA,aAAa,CAACP,IAAI,GAAG,EAAR,EAAY;AACrB,SAAKhK,MAAL,GAAc2H,OAAd;;AACA,QAAIqC,IAAI,CAACQ,SAAL,KAAmB,KAAvB,EAA8B;AAC1B,WAAKtK,aAAL,CAAmBuK,IAAnB,CAAwB,KAAKzK,MAA7B;AACH;;AACD,QAAI,KAAKkB,OAAL,IAAgB,CAAC8I,IAAI,CAACC,QAA1B,EAAoC;AAChC,WAAK/I,OAAL,CAAaqJ,aAAb,CAA2BP,IAA3B;AACH;AACJ;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACIU,EAAAA,OAAO,CAACV,IAAI,GAAG,EAAR,EAAY;AACf;AACA;AACA,UAAMW,iBAAiB,GAAG,KAAKC,kBAAL,CAAwBZ,IAAI,CAACC,QAA7B,CAA1B;;AACA,SAAKjK,MAAL,GAAc4H,QAAd;AACA,SAAKnK,MAAL,GAAc,IAAd;;AACA,SAAK0L,aAAL,CAAoBzN,OAAD,IAAa;AAC5BA,MAAAA,OAAO,CAACgP,OAAR,CAAgBhN,MAAM,CAACC,MAAP,CAAcD,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBqM,IAAlB,CAAd,EAAuC;AAAEC,QAAAA,QAAQ,EAAE;AAAZ,OAAvC,CAAhB;AACH,KAFD;;AAGA,SAAKY,YAAL;;AACA,QAAIb,IAAI,CAACQ,SAAL,KAAmB,KAAvB,EAA8B;AAC1B,WAAKrK,YAAL,CAAkBsK,IAAlB,CAAuB,KAAK/sB,KAA5B;AACA,WAAKwiB,aAAL,CAAmBuK,IAAnB,CAAwB,KAAKzK,MAA7B;AACH;;AACD,SAAK8K,gBAAL,CAAsBpN,MAAM,CAACC,MAAP,CAAcD,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBqM,IAAlB,CAAd,EAAuC;AAAEW,MAAAA;AAAF,KAAvC,CAAtB;;AACA,SAAKpB,iBAAL,CAAuBxa,OAAvB,CAAgCgc,QAAD,IAAcA,QAAQ,CAAC,IAAD,CAArD;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACIC,EAAAA,MAAM,CAAChB,IAAI,GAAG,EAAR,EAAY;AACd;AACA;AACA,UAAMW,iBAAiB,GAAG,KAAKC,kBAAL,CAAwBZ,IAAI,CAACC,QAA7B,CAA1B;;AACA,SAAKjK,MAAL,GAAcyH,KAAd;;AACA,SAAK0B,aAAL,CAAoBzN,OAAD,IAAa;AAC5BA,MAAAA,OAAO,CAACsP,MAAR,CAAetN,MAAM,CAACC,MAAP,CAAcD,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBqM,IAAlB,CAAd,EAAuC;AAAEC,QAAAA,QAAQ,EAAE;AAAZ,OAAvC,CAAf;AACH,KAFD;;AAGA,SAAKxF,sBAAL,CAA4B;AAAEwF,MAAAA,QAAQ,EAAE,IAAZ;AAAkBO,MAAAA,SAAS,EAAER,IAAI,CAACQ;AAAlC,KAA5B;;AACA,SAAKM,gBAAL,CAAsBpN,MAAM,CAACC,MAAP,CAAcD,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBqM,IAAlB,CAAd,EAAuC;AAAEW,MAAAA;AAAF,KAAvC,CAAtB;;AACA,SAAKpB,iBAAL,CAAuBxa,OAAvB,CAAgCgc,QAAD,IAAcA,QAAQ,CAAC,KAAD,CAArD;AACH;;AACDD,EAAAA,gBAAgB,CAACd,IAAD,EAAO;AACnB,QAAI,KAAK9I,OAAL,IAAgB,CAAC8I,IAAI,CAACC,QAA1B,EAAoC;AAChC,WAAK/I,OAAL,CAAauD,sBAAb,CAAoCuF,IAApC;;AACA,UAAI,CAACA,IAAI,CAACW,iBAAV,EAA6B;AACzB,aAAKzJ,OAAL,CAAaoJ,eAAb;AACH;;AACD,WAAKpJ,OAAL,CAAakJ,cAAb;AACH;AACJ;AACD;AACJ;AACA;;;AACIa,EAAAA,SAAS,CAAC9H,MAAD,EAAS;AACd,SAAKjC,OAAL,GAAeiC,MAAf;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACIsB,EAAAA,sBAAsB,CAACuF,IAAI,GAAG,EAAR,EAAY;AAC9B,SAAKkB,iBAAL;;AACA,SAAKL,YAAL;;AACA,QAAI,KAAKjL,OAAT,EAAkB;AACd,WAAKuL,2BAAL;;AACA,WAAK1N,MAAL,GAAc,KAAK2N,aAAL,EAAd;AACA,WAAKpL,MAAL,GAAc,KAAKqL,gBAAL,EAAd;;AACA,UAAI,KAAKrL,MAAL,KAAgByH,KAAhB,IAAyB,KAAKzH,MAAL,KAAgB2H,OAA7C,EAAsD;AAClD,aAAK2D,kBAAL,CAAwBtB,IAAI,CAACQ,SAA7B;AACH;AACJ;;AACD,QAAIR,IAAI,CAACQ,SAAL,KAAmB,KAAvB,EAA8B;AAC1B,WAAKrK,YAAL,CAAkBsK,IAAlB,CAAuB,KAAK/sB,KAA5B;AACA,WAAKwiB,aAAL,CAAmBuK,IAAnB,CAAwB,KAAKzK,MAA7B;AACH;;AACD,QAAI,KAAKkB,OAAL,IAAgB,CAAC8I,IAAI,CAACC,QAA1B,EAAoC;AAChC,WAAK/I,OAAL,CAAauD,sBAAb,CAAoCuF,IAApC;AACH;AACJ;AACD;;;AACAuB,EAAAA,mBAAmB,CAACvB,IAAI,GAAG;AAAEQ,IAAAA,SAAS,EAAE;AAAb,GAAR,EAA6B;AAC5C,SAAKrB,aAAL,CAAoBqC,IAAD,IAAUA,IAAI,CAACD,mBAAL,CAAyBvB,IAAzB,CAA7B;;AACA,SAAKvF,sBAAL,CAA4B;AAAEwF,MAAAA,QAAQ,EAAE,IAAZ;AAAkBO,MAAAA,SAAS,EAAER,IAAI,CAACQ;AAAlC,KAA5B;AACH;;AACDU,EAAAA,iBAAiB,GAAG;AAChB,SAAKlL,MAAL,GAAc,KAAKyL,oBAAL,KAA8B7D,QAA9B,GAAyCH,KAAvD;AACH;;AACD2D,EAAAA,aAAa,GAAG;AACZ,WAAO,KAAKtN,SAAL,GAAiB,KAAKA,SAAL,CAAe,IAAf,CAAjB,GAAwC,IAA/C;AACH;;AACDwN,EAAAA,kBAAkB,CAACd,SAAD,EAAY;AAC1B,QAAI,KAAK/J,cAAT,EAAyB;AACrB,WAAKT,MAAL,GAAc2H,OAAd;AACA,WAAK0B,4BAAL,GAAoC,IAApC;AACA,YAAMhM,GAAG,GAAGF,YAAY,CAAC,KAAKsD,cAAL,CAAoB,IAApB,CAAD,CAAxB;AACA,WAAKiL,4BAAL,GAAoCrO,GAAG,CAAC5c,SAAJ,CAAegd,MAAD,IAAY;AAC1D,aAAK4L,4BAAL,GAAoC,KAApC,CAD0D,CAE1D;AACA;AACA;;AACA,aAAKsC,SAAL,CAAelO,MAAf,EAAuB;AAAE+M,UAAAA;AAAF,SAAvB;AACH,OANmC,CAApC;AAOH;AACJ;;AACDW,EAAAA,2BAA2B,GAAG;AAC1B,QAAI,KAAKO,4BAAT,EAAuC;AACnC,WAAKA,4BAAL,CAAkCzX,WAAlC;;AACA,WAAKoV,4BAAL,GAAoC,KAApC;AACH;AACJ;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACIsC,EAAAA,SAAS,CAAClO,MAAD,EAASuM,IAAI,GAAG,EAAhB,EAAoB;AACzB,SAAKvM,MAAL,GAAcA,MAAd;;AACA,SAAKmO,qBAAL,CAA2B5B,IAAI,CAACQ,SAAL,KAAmB,KAA9C;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;AACA;AACA;;;AACIna,EAAAA,GAAG,CAAC+P,IAAD,EAAO;AACN,WAAOyH,KAAK,CAAC,IAAD,EAAOzH,IAAP,EAAa,GAAb,CAAZ;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;AACA;;;AACIW,EAAAA,QAAQ,CAACD,SAAD,EAAYV,IAAZ,EAAkB;AACtB,UAAM1E,OAAO,GAAG0E,IAAI,GAAG,KAAK/P,GAAL,CAAS+P,IAAT,CAAH,GAAoB,IAAxC;AACA,WAAO1E,OAAO,IAAIA,OAAO,CAAC+B,MAAnB,GAA4B/B,OAAO,CAAC+B,MAAR,CAAeqD,SAAf,CAA5B,GAAwD,IAA/D;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;AACA;AACA;AACA;AACA;;;AACID,EAAAA,QAAQ,CAACC,SAAD,EAAYV,IAAZ,EAAkB;AACtB,WAAO,CAAC,CAAC,KAAKW,QAAL,CAAcD,SAAd,EAAyBV,IAAzB,CAAT;AACH;AACD;AACJ;AACA;;;AACY,MAAJyL,IAAI,GAAG;AACP,QAAIC,CAAC,GAAG,IAAR;;AACA,WAAOA,CAAC,CAAC5K,OAAT,EAAkB;AACd4K,MAAAA,CAAC,GAAGA,CAAC,CAAC5K,OAAN;AACH;;AACD,WAAO4K,CAAP;AACH;AACD;;;AACAF,EAAAA,qBAAqB,CAACpB,SAAD,EAAY;AAC7B,SAAKxK,MAAL,GAAc,KAAKqL,gBAAL,EAAd;;AACA,QAAIb,SAAJ,EAAe;AACX,WAAKtK,aAAL,CAAmBuK,IAAnB,CAAwB,KAAKzK,MAA7B;AACH;;AACD,QAAI,KAAKkB,OAAT,EAAkB;AACd,WAAKA,OAAL,CAAa0K,qBAAb,CAAmCpB,SAAnC;AACH;AACJ;AACD;;;AACAuB,EAAAA,gBAAgB,GAAG;AACf,SAAK5L,YAAL,GAAoB,IAAI9lB,uDAAJ,EAApB;AACA,SAAK6lB,aAAL,GAAqB,IAAI7lB,uDAAJ,EAArB;AACH;;AACDgxB,EAAAA,gBAAgB,GAAG;AACf,QAAI,KAAKI,oBAAL,EAAJ,EACI,OAAO7D,QAAP;AACJ,QAAI,KAAKnK,MAAT,EACI,OAAOiK,OAAP;AACJ,QAAI,KAAK2B,4BAAL,IAAqC,KAAK2C,sBAAL,CAA4BrE,OAA5B,CAAzC,EACI,OAAOA,OAAP;AACJ,QAAI,KAAKqE,sBAAL,CAA4BtE,OAA5B,CAAJ,EACI,OAAOA,OAAP;AACJ,WAAOD,KAAP;AACH;AACD;;;AACAuE,EAAAA,sBAAsB,CAAChM,MAAD,EAAS;AAC3B,WAAO,KAAKiM,YAAL,CAAmBvQ,OAAD,IAAaA,OAAO,CAACsE,MAAR,KAAmBA,MAAlD,CAAP;AACH;AACD;;;AACAkM,EAAAA,iBAAiB,GAAG;AAChB,WAAO,KAAKD,YAAL,CAAmBvQ,OAAD,IAAaA,OAAO,CAACoE,KAAvC,CAAP;AACH;AACD;;;AACAqM,EAAAA,mBAAmB,GAAG;AAClB,WAAO,KAAKF,YAAL,CAAmBvQ,OAAD,IAAaA,OAAO,CAACqE,OAAvC,CAAP;AACH;AACD;;;AACAuK,EAAAA,eAAe,CAACN,IAAI,GAAG,EAAR,EAAY;AACvB,SAAKnK,QAAL,GAAgB,CAAC,KAAKqM,iBAAL,EAAjB;;AACA,QAAI,KAAKhL,OAAL,IAAgB,CAAC8I,IAAI,CAACC,QAA1B,EAAoC;AAChC,WAAK/I,OAAL,CAAaoJ,eAAb,CAA6BN,IAA7B;AACH;AACJ;AACD;;;AACAI,EAAAA,cAAc,CAACJ,IAAI,GAAG,EAAR,EAAY;AACtB,SAAKjK,OAAL,GAAe,KAAKoM,mBAAL,EAAf;;AACA,QAAI,KAAKjL,OAAL,IAAgB,CAAC8I,IAAI,CAACC,QAA1B,EAAoC;AAChC,WAAK/I,OAAL,CAAakJ,cAAb,CAA4BJ,IAA5B;AACH;AACJ;AACD;;;AACAoC,EAAAA,aAAa,CAACC,SAAD,EAAY;AACrB,WAAO,OAAOA,SAAP,KAAqB,QAArB,IAAiCA,SAAS,KAAK,IAA/C,IACH3O,MAAM,CAACE,IAAP,CAAYyO,SAAZ,EAAuB3rB,MAAvB,KAAkC,CAD/B,IACoC,WAAW2rB,SAD/C,IAC4D,cAAcA,SADjF;AAEH;AACD;;;AACArI,EAAAA,2BAA2B,CAACrX,EAAD,EAAK;AAC5B,SAAK2c,mBAAL,GAA2B3c,EAA3B;AACH;AACD;;;AACA2f,EAAAA,kBAAkB,CAACtC,IAAD,EAAO;AACrB,QAAI1B,YAAY,CAAC0B,IAAD,CAAZ,IAAsBA,IAAI,CAAC/E,QAAL,IAAiB,IAA3C,EAAiD;AAC7C,WAAKyE,SAAL,GAAiBM,IAAI,CAAC/E,QAAtB;AACH;AACJ;AACD;AACJ;AACA;AACA;AACA;;;AACI2F,EAAAA,kBAAkB,CAACX,QAAD,EAAW;AACzB,UAAMsC,WAAW,GAAG,KAAKrL,OAAL,IAAgB,KAAKA,OAAL,CAAapB,KAAjD;AACA,WAAO,CAACmK,QAAD,IAAa,CAAC,CAACsC,WAAf,IAA8B,CAAC,KAAKrL,OAAL,CAAagL,iBAAb,EAAtC;AACH;;AAtvBiB;AAwvBtB;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;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,MAAMvD,WAAN,SAA0BS,eAA1B,CAA0C;AACtC;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI1tB,EAAAA,WAAW,CAAC2wB,SAAS,GAAG,IAAb,EAAmBhE,eAAnB,EAAoC5H,cAApC,EAAoD;AAC3D,UAAM2H,cAAc,CAACC,eAAD,CAApB,EAAuCG,mBAAmB,CAAC/H,cAAD,EAAiB4H,eAAjB,CAA1D;AACA;AACR;AACA;AACA;AACA;AACA;;AACQ,SAAKmE,YAAL,GAAoB,IAApB;AACA;;AACA,SAAKC,SAAL,GAAiB,EAAjB;AACA;;AACA,SAAK1H,cAAL,GAAsB,KAAtB;;AACA,SAAK2H,eAAL,CAAqBL,SAArB;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I,OAA5B;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;AACA;AACA;AACA;AACA;AACA;;;AACIE,EAAAA,UAAU,CAACpvB,KAAD,EAAQkvB,OAAO,GAAG,EAAlB,EAAsB;AAC5B;AACA;AACA;AACA;AACA,QAAIlvB,KAAK,IAAI;AAAK;AAAlB,MACI;AACJggB,IAAAA,MAAM,CAACE,IAAP,CAAYlgB,KAAZ,EAAmBqR,OAAnB,CAA2B5R,IAAI,IAAI;AAC/B,UAAI,KAAK8qB,QAAL,CAAc9qB,IAAd,CAAJ,EAAyB;AACrB,aAAK8qB,QAAL,CAAc9qB,IAAd,EAAoB2vB,UAApB,CAA+BpvB,KAAK,CAACP,IAAD,CAApC,EAA4C;AAAE8sB,UAAAA,QAAQ,EAAE,IAAZ;AAAkBO,UAAAA,SAAS,EAAEoC,OAAO,CAACpC;AAArC,SAA5C;AACH;AACJ,KAJD;AAKA,SAAK/F,sBAAL,CAA4BmI,OAA5B;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;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;;;AACIhM,EAAAA,KAAK,CAACljB,KAAK,GAAG,EAAT,EAAakvB,OAAO,GAAG,EAAvB,EAA2B;AAC5B,SAAKzD,aAAL,CAAmB,CAACzN,OAAD,EAAUve,IAAV,KAAmB;AAClCue,MAAAA,OAAO,CAACkF,KAAR,CAAcljB,KAAK,CAACP,IAAD,CAAnB,EAA2B;AAAE8sB,QAAAA,QAAQ,EAAE,IAAZ;AAAkBO,QAAAA,SAAS,EAAEoC,OAAO,CAACpC;AAArC,OAA3B;AACH,KAFD;;AAGA,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ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMC,eAAe,GAAG,CAAC,MAAMnvB,OAAO,CAACC,OAAR,CAAgB,IAAhB,CAAP,GAAxB;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;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,MAAMivB,OAAN,SAAsB9O,SAAtB,CAAgC;AAC5BtlB,EAAAA,WAAW,CAACynB,MAAD,EAAS3G,UAAT,EAAqB8H,eAArB,EAAsCqC,cAAtC,EAAsDhc,kBAAtD,EAA0E;AACjF;AACA,SAAKA,kBAAL,GAA0BA,kBAA1B;AACA,SAAK+Q,OAAL,GAAe,IAAIiN,WAAJ,EAAf;AACA;;AACA,SAAKqH,WAAL,GAAmB,KAAnB;AACA;AACR;AACA;AACA;AACA;;AACQ,SAAKC,MAAL,GAAc,IAAI51B,uDAAJ,EAAd;AACA,SAAK6mB,OAAL,GAAeiC,MAAf;;AACA,SAAK9C,cAAL,CAAoB7D,UAApB;;AACA,SAAK+D,mBAAL,CAAyB+D,eAAzB;;AACA,SAAKnD,aAAL,GAAqBuF,mBAAmB,CAAC,IAAD,EAAOC,cAAP,CAAxC;AACH;AACD;;;AACAxlB,EAAAA,WAAW,CAACC,OAAD,EAAU;AACjB,SAAK8uB,eAAL;;AACA,QAAI,CAAC,KAAKF,WAAN,IAAqB,UAAU5uB,OAAnC,EAA4C;AACxC,UAAI,KAAK4uB,WAAT,EAAsB;AAClB,aAAKG,UAAL;;AACA,YAAI,KAAK9O,aA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","sources":["./src/app/routes/sudoku/components/index.ts","./src/app/routes/sudoku/components/solve.component.ts","./src/app/routes/sudoku/components/solve.component.html","./src/app/routes/sudoku/modules/sudoku-benchmark/component/index.ts","./src/app/routes/sudoku/modules/sudoku-benchmark/component/sudoku-benchmark.component.ts","./src/app/routes/sudoku/modules/sudoku-benchmark/component/sudoku-benchmark.component.html","./src/app/routes/sudoku/modules/sudoku-benchmark/index.ts","./src/app/routes/sudoku/modules/sudoku-benchmark/sudoku-benchmark.module.ts","./src/app/routes/sudoku/services/index.ts","./src/app/routes/sudoku/services/sudoku-solver.service.ts","./src/app/routes/sudoku/sudoku-can-activate.ts","./src/app/routes/sudoku/sudoku-routing.module.ts","./src/app/routes/sudoku/sudoku.module.ts","./node_modules/@angular/cdk/fesm2015/table.mjs","./node_modules/@angular/forms/fesm2015/forms.mjs","./node_modules/@angular/material/fesm2015/divider.mjs","./node_modules/@angular/material/fesm2015/progress-bar.mjs","./node_modules/@angular/material/fesm2015/slider.mjs","./node_modules/@angular/material/fesm2015/table.mjs"],"sourcesContent":["/*!\n * Source https://github.com/spielhalle/spielhalle Package: @spielhalle/client\n */\n\nexport * from './solve.component';\n","/*!\n * Source https://github.com/spielhalle/spielhalle Package: @spielhalle/client\n */\n\nimport { Component, ViewChild } from '@angular/core';\nimport { ActivatedRoute, Params } from '@angular/router';\nimport { knuthSolveNum } from '@donmahallem/sudoku';\nimport { SudokuFieldComponent } from '../modules/sudoku-board';\nimport { SudokuSolverService } from '../services';\n\n@Component({\n selector: 'app-solve',\n styleUrls: ['./solve.component.scss'],\n templateUrl: './solve.component.html',\n})\nexport class SolveComponent {\n\n @ViewChild(SudokuFieldComponent, {\n static: true,\n })\n public sudokuComponent: SudokuFieldComponent;\n public boxSize: number = 3;\n constructor(public solverService: SudokuSolverService,\n public activatedRoute: ActivatedRoute) {\n this.activatedRoute\n .params\n .subscribe((params: Params): void => {\n this.boxSize = Math.sqrt(parseInt(params.sudokuSize, 10));\n console.log('new board size', this.boxSize);\n });\n }\n\n public onClear(): void {\n this.sudokuComponent.clear();\n }\n public onSolve(): void {\n const solutions: number[][][] = knuthSolveNum(this.sudokuComponent.getBoard(), this.boxSize ** 2, this.boxSize, 5);\n if (solutions.length > 0) {\n this.sudokuComponent.field = solutions[0];\n }\n this.solverService.solve(this.sudokuComponent.getBoard(), this.boxSize ** 2, this.boxSize, 5)\n .then(console.log).catch(console.error);\n }\n\n public onFieldChange(sudokuField: number[][]): void {\n\n }\n}\n","<mat-toolbar color=\"primary\"><span>Solve</span><span class=\"toolbar-spacer\"></span><button mat-icon-button aria-hidden=\"false\" aria-label=\"Example delete icon\" (click)=\"onSolve()\"><mat-icon>thumb_up</mat-icon></button><button mat-icon-button aria-hidden=\"false\" aria-label=\"Example delete icon\" (click)=\"onClear()\"><mat-icon>delete</mat-icon></button></mat-toolbar><div class=\"content\"><canvas appSudokuBoard (fieldChange)=\"onFieldChange($event)\" [boxSize]=\"boxSize\"></canvas></div>","/*!\n * Source https://github.com/spielhalle/spielhalle Package: @spielhalle/client\n */\n\nexport * from './sudoku-benchmark.component';\n","/*!\n * Source https://github.com/spielhalle/spielhalle Package: @spielhalle/client\n */\n\nimport { Component, NgZone, OnDestroy, ViewChild } from '@angular/core';\nimport { MatSliderChange } from '@angular/material/slider';\nimport { MatTable } from '@angular/material/table';\nimport { Observable, Subscriber, Subscription, TeardownLogic } from 'rxjs';\nimport { SudokuBoardDirective } from '../../sudoku-board/component';\nimport { SudokuBenchmarkMessage, SudokuBenchmarkMessageType } from './sudoku-benchmark-message';\n@Component({\n selector: 'app-sudoku-benchmark',\n styleUrls: ['./sudoku-benchmark.component.scss'],\n templateUrl: './sudoku-benchmark.component.html',\n})\nexport class SudokuBenchmarkComponent implements OnDestroy {\n\n public calculating: boolean = false;\n public results: any[] = [];\n displayedColumns: string[] = ['boardSize', 'time', 'results'];\n public sudokuBoardSize: number = 9;\n @ViewChild(SudokuBoardDirective)\n public sudokuBoard: SudokuBoardDirective;\n @ViewChild(MatTable)\n public resultTable: MatTable<any>;\n private subscription: Subscription;\n public constructor(public zone: NgZone) {\n\n }\n public startTest(): void {\n this.calculating = true;\n const obs: Observable<SudokuBenchmarkMessage> = new Observable((sub: Subscriber<SudokuBenchmarkMessage>): TeardownLogic => {\n const worker: Worker = new Worker(new URL('./sudoku-benchmark.worker', import.meta.url), { name: 'benchmarkSudokuWorker', type: 'module' });\n worker.onmessage = (evt: MessageEvent): void => {\n sub.next(evt.data);\n if (evt.data.type === SudokuBenchmarkMessageType.RESULT) {\n worker.terminate();\n sub.complete();\n }\n };\n worker.postMessage(this.sudokuBoardSize);\n\n return (): void => {\n worker.terminate();\n };\n });\n this.subscription = obs.subscribe((msg: SudokuBenchmarkMessage): void => {\n if (msg.type === SudokuBenchmarkMessageType.PROGRESS) {\n this.sudokuBoard.field = msg.board;\n // tslint:disable-next-line:no-console\n console.log(msg.results);\n } else if (msg.type === SudokuBenchmarkMessageType.RESULT) {\n this.zone.run((): void => {\n this.results.push(msg);\n this.resultTable.renderRows();\n });\n }\n }, (): void => { }, (): void => {\n this.calculating = false;\n });\n }\n\n public ngOnDestroy(): void {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n public onSizeSelected(evt: MatSliderChange): void {\n this.sudokuBoardSize = (evt.value || 0) ** 2;\n }\n}\n","<h3>Benchmark</h3><p>This is a tool to test the solver performance in different environments.</p><div class=\"size-select\"><p>Boardsize {{ sudokuBoardSize}}</p><mat-slider min=\"1\" max=\"6\" step=\"1\" value=\"2\" thumbLabel [disabled]=\"calculating\" tickInterval=\"1\" (change)=\"onSizeSelected($event)\" (input)=\"onSizeSelected($event)\"></mat-slider></div><mat-progress-bar *ngIf=\"calculating\" mode=\"indeterminate\"></mat-progress-bar><button mat-raised-button color=\"primary\" (click)=\"startTest()\" [disabled]=\"calculating\">Calculate</button><mat-divider></mat-divider><canvas appSudokuBoard></canvas><table mat-table [dataSource]=\"results\"><ng-container matColumnDef=\"boardSize\"><th mat-header-cell *matHeaderCellDef>Size</th><td mat-cell *matCellDef=\"let element\">{{element.boardSize}}</td></ng-container><ng-container matColumnDef=\"time\"><th mat-header-cell *matHeaderCellDef>Time</th><td mat-cell *matCellDef=\"let element\">{{element.time}}</td></ng-container><ng-container matColumnDef=\"results\"><th mat-header-cell *matHeaderCellDef>Results</th><td mat-cell *matCellDef=\"let element\">{{element.results}}</td></ng-container><tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr><tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr></table>","/*!\n * Source https://github.com/spielhalle/spielhalle Package: @spielhalle/client\n */\n\nexport { SudokuBenchmarkModule } from './sudoku-benchmark.module';\nexport { SudokuBenchmarkComponent } from './component';\n","/*!\r\n * Source https://github.com/spielhalle/spielhalle Package: @spielhalle/client\r\n */\r\n\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { MatSliderModule } from '@angular/material/slider';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { SudokuFieldModule } from '../sudoku-board/sudoku-field.module';\r\nimport { SudokuBenchmarkComponent } from './component';\r\n@NgModule({\r\n declarations: [\r\n SudokuBenchmarkComponent,\r\n ],\r\n exports: [\r\n SudokuBenchmarkComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n MatButtonModule,\r\n MatProgressBarModule,\r\n MatSliderModule,\r\n MatDividerModule,\r\n MatTableModule,\r\n SudokuFieldModule,\r\n ]\r\n})\r\nexport class SudokuBenchmarkModule { }\r\n","/*!\r\n * Source https://github.com/spielhalle/spielhalle Package: @spielhalle/client\r\n */\r\n\r\nexport * from './sudoku-solver.service';\r\n","/*!\n * Source https://github.com/spielhalle/spielhalle Package: @spielhalle/client\n */\n\nimport { Injectable } from '@angular/core';\nimport { knuthSolveNum } from '@donmahallem/sudoku';\n\n@Injectable()\nexport class SudokuSolverService {\n\n public constructor() {\n }\n public solve(board: number[][], boardSize: number, boxSize: number, solutions: number = 1): Promise<number[][][]> {\n if (typeof Worker !== 'undefined') {\n // Create a new\n return new Promise((resolve: (arg: number[][][]) => void): void => {\n const worker: Worker = new Worker(new URL('./sudoku-solver.worker', import.meta.url), { name: 'solveSudokuWorker', type: 'module' });\n worker.onmessage = (evt: MessageEvent): void => {\n resolve(evt.data);\n };\n worker.postMessage(board);\n });\n } else {\n return new Promise((resolve: (arg: number[][][]) => void): void => {\n const results: number[][][] = knuthSolveNum(board, boardSize, boxSize, solutions);\n resolve(results);\n });\n }\n }\n\n}\n","/*!\n * Source https://github.com/spielhalle/spielhalle Package: @spielhalle/client\n */\n\nimport { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\n\n@Injectable()\nexport class SudokuCanActivateGuard implements CanActivate {\n constructor(private router: Router) { }\n\n public canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | UrlTree {\n if ('sudokuSize' in route.params) {\n const sudokuSizeParam: string = route.params.sudokuSize;\n const isNumber: boolean = /^[0-9]+$/.test(sudokuSizeParam);\n if (isNumber) {\n const sudokuSize: number = parseInt(sudokuSizeParam, 10);\n const boxSize: number = Math.sqrt(sudokuSize);\n if (sudokuSize >= 2 && sudokuSize <= 36) {\n if (boxSize === Math.floor(boxSize)) {\n return true;\n }\n return this.router.createUrlTree(['/sudoku', Math.floor(boxSize) ** 2]);\n }\n }\n }\n return this.router.createUrlTree(['/sudoku']);\n }\n}\n","/*!\n * Source https://github.com/spielhalle/spielhalle Package: @spielhalle/client\n */\n\nimport { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { SolveComponent } from './components';\nimport { SudokuBenchmarkComponent } from './modules/sudoku-benchmark';\nimport { SudokuCanActivateGuard } from './sudoku-can-activate';\n\nconst playRoutes: Routes = [\n {\n canActivate: [SudokuCanActivateGuard],\n component: SolveComponent,\n path: '',\n },\n {\n component: SudokuBenchmarkComponent,\n path: 'benchmark',\n },\n {\n canActivate: [SudokuCanActivateGuard],\n component: SolveComponent,\n path: ':sudokuSize',\n },\n {\n path: '**',\n redirectTo: '/sudoku/',\n },\n];\n\n@NgModule({\n exports: [\n RouterModule,\n ],\n imports: [\n RouterModule.forChild(playRoutes),\n ],\n})\nexport class SudokuRoutingModule { }\n","/*!\n * Source https://github.com/spielhalle/spielhalle Package: @spielhalle/client\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { SolveComponent } from './components';\nimport { SudokuFieldModule } from './modules';\nimport { SudokuBenchmarkModule } from './modules/sudoku-benchmark';\nimport { SudokuSolverService } from './services';\nimport { SudokuCanActivateGuard } from './sudoku-can-activate';\nimport { SudokuRoutingModule } from './sudoku-routing.module';\n@NgModule({\n declarations: [\n SolveComponent,\n ],\n imports: [\n CommonModule,\n MatButtonModule,\n SudokuFieldModule,\n SudokuBenchmarkModule,\n SudokuRoutingModule,\n MatToolbarModule,\n MatIconModule,\n ],\n providers: [\n SudokuSolverService,\n SudokuCanActivateGuard,\n ],\n})\nexport class SudokuModule { }\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { _VIEW_REPEATER_STRATEGY, _RecycleViewRepeaterStrategy, isDataSource, _DisposeViewRepeaterStrategy } from '@angular/cdk/collections';\nexport { DataSource } from '@angular/cdk/collections';\nimport { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Directive, Inject, Optional, Input, ContentChild, Injectable, Component, ChangeDetectionStrategy, ViewEncapsulation, EmbeddedViewRef, EventEmitter, NgZone, Attribute, SkipSelf, Output, ViewChild, ContentChildren, NgModule } from '@angular/core';\nimport { Subject, from, BehaviorSubject, isObservable, of } from 'rxjs';\nimport { takeUntil, take } from 'rxjs/operators';\nimport * as i1 from '@angular/cdk/bidi';\nimport * as i2 from '@angular/cdk/platform';\nimport * as i3 from '@angular/cdk/scrolling';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\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 * Mixin to provide a directive with a function that checks if the sticky input has been\n * changed since the last time the function was called. Essentially adds a dirty-check to the\n * sticky value.\n * @docs-private\n */\nfunction mixinHasStickyInput(base) {\n return class extends base {\n constructor(...args) {\n super(...args);\n this._sticky = false;\n /** Whether the sticky input has changed since it was last checked. */\n this._hasStickyChanged = false;\n }\n /** Whether sticky positioning should be applied. */\n get sticky() {\n return this._sticky;\n }\n set sticky(v) {\n const prevValue = this._sticky;\n this._sticky = coerceBooleanProperty(v);\n this._hasStickyChanged = prevValue !== this._sticky;\n }\n /** Whether the sticky value has changed since this was last called. */\n hasStickyChanged() {\n const hasStickyChanged = this._hasStickyChanged;\n this._hasStickyChanged = false;\n return hasStickyChanged;\n }\n /** Resets the dirty check for cases where the sticky state has been used without checking. */\n resetStickyChanged() {\n this._hasStickyChanged = false;\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 * Used to provide a table to some of the sub-components without causing a circular dependency.\n * @docs-private\n */\nconst CDK_TABLE = new InjectionToken('CDK_TABLE');\n/** Injection token that can be used to specify the text column options. */\nconst TEXT_COLUMN_OPTIONS = new InjectionToken('text-column-options');\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 * Cell definition for a CDK table.\n * Captures the template of a column's data row cell as well as cell-specific properties.\n */\nclass CdkCellDef {\n constructor(/** @docs-private */ template) {\n this.template = template;\n }\n}\nCdkCellDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: CdkCellDef, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkCellDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.0\", type: CdkCellDef, selector: \"[cdkCellDef]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: CdkCellDef, decorators: [{\n type: Directive,\n args: [{ selector: '[cdkCellDef]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n/**\n * Header cell definition for a CDK table.\n * Captures the template of a column's header cell and as well as cell-specific properties.\n */\nclass CdkHeaderCellDef {\n constructor(/** @docs-private */ template) {\n this.template = template;\n }\n}\nCdkHeaderCellDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: CdkHeaderCellDef, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkHeaderCellDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.0\", type: CdkHeaderCellDef, selector: \"[cdkHeaderCellDef]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: CdkHeaderCellDef, decorators: [{\n type: Directive,\n args: [{ selector: '[cdkHeaderCellDef]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n/**\n * Footer cell definition for a CDK table.\n * Captures the template of a column's footer cell and as well as cell-specific properties.\n */\nclass CdkFooterCellDef {\n constructor(/** @docs-private */ template) {\n this.template = template;\n }\n}\nCdkFooterCellDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: CdkFooterCellDef, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkFooterCellDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.0\", type: CdkFooterCellDef, selector: \"[cdkFooterCellDef]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: CdkFooterCellDef, decorators: [{\n type: Directive,\n args: [{ selector: '[cdkFooterCellDef]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n// Boilerplate for applying mixins to CdkColumnDef.\n/** @docs-private */\nclass CdkColumnDefBase {\n}\nconst _CdkColumnDefBase = mixinHasStickyInput(CdkColumnDefBase);\n/**\n * Column definition for the CDK table.\n * Defines a set of cells available for a table column.\n */\nclass CdkColumnDef extends _CdkColumnDefBase {\n constructor(_table) {\n super();\n this._table = _table;\n this._stickyEnd = false;\n }\n /** Unique name for this column. */\n get name() {\n return this._name;\n }\n set name(name) {\n this._setNameInput(name);\n }\n /**\n * Whether this column should be sticky positioned on the end of the row. Should make sure\n * that it mimics the `CanStick` mixin such that `_hasStickyChanged` is set to true if the value\n * has been changed.\n */\n get stickyEnd() {\n return this._stickyEnd;\n }\n set stickyEnd(v) {\n const prevValue = this._stickyEnd;\n this._stickyEnd = coerceBooleanProperty(v);\n this._hasStickyChanged = prevValue !== this._stickyEnd;\n }\n /**\n * Overridable method that sets the css classes that will be added to every cell in this\n * column.\n * In the future, columnCssClassName will change from type string[] to string and this\n * will set a single string value.\n * @docs-private\n */\n _updateColumnCssClassName() {\n this._columnCssClassName = [`cdk-column-${this.cssClassFriendlyName}`];\n }\n /**\n * This has been extracted to a util because of TS 4 and VE.\n * View Engine doesn't support property rename inheritance.\n * TS 4.0 doesn't allow properties to override accessors or vice-versa.\n * @docs-private\n */\n _setNameInput(value) {\n // If the directive is set without a name (updated programmatically), then this setter will\n // trigger with an empty string and should not overwrite the programmatically set value.\n if (value) {\n this._name = value;\n this.cssClassFriendlyName = value.replace(/[^a-z0-9_-]/gi, '-');\n this._updateColumnCssClassName();\n }\n }\n}\nCdkColumnDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: CdkColumnDef, deps: [{ token: CDK_TABLE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkColumnDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.0\", type: CdkColumnDef, selector: \"[cdkColumnDef]\", inputs: { sticky: \"sticky\", name: [\"cdkColumnDef\", \"name\"], stickyEnd: \"stickyEnd\" }, providers: [{ provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: CdkColumnDef }], queries: [{ propertyName: \"cell\", first: true, predicate: CdkCellDef, descendants: true }, { propertyName: \"headerCell\", first: true, predicate: CdkHeaderCellDef, descendants: true }, { propertyName: \"footerCell\", first: true, predicate: CdkFooterCellDef, descendants: true }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: CdkColumnDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkColumnDef]',\n inputs: ['sticky'],\n providers: [{ provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: CdkColumnDef }],\n }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [CDK_TABLE]\n }, {\n type: Optional\n }] }];\n }, propDecorators: { name: [{\n type: Input,\n args: ['cdkColumnDef']\n }], stickyEnd: [{\n type: Input,\n args: ['stickyEnd']\n }], cell: [{\n type: ContentChild,\n args: [CdkCellDef]\n }], headerCell: [{\n type: ContentChild,\n args: [CdkHeaderCellDef]\n }], footerCell: [{\n type: ContentChild,\n args: [CdkFooterCellDef]\n }] } });\n/** Base class for the cells. Adds a CSS classname that identifies the column it renders in. */\nclass BaseCdkCell {\n constructor(columnDef, elementRef) {\n elementRef.nativeElement.classList.add(...columnDef._columnCssClassName);\n }\n}\n/** Header cell template container that adds the right classes and role. */\nclass CdkHeaderCell extends BaseCdkCell {\n constructor(columnDef, elementRef) {\n super(columnDef, elementRef);\n }\n}\nCdkHeaderCell.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: CdkHeaderCell, deps: [{ token: CdkColumnDef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkHeaderCell.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.0\", type: CdkHeaderCell, selector: \"cdk-header-cell, th[cdk-header-cell]\", host: { attributes: { \"role\": \"columnheader\" }, classAttribute: \"cdk-header-cell\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: CdkHeaderCell, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-header-cell, th[cdk-header-cell]',\n host: {\n 'class': 'cdk-header-cell',\n 'role': 'columnheader',\n },\n }]\n }], ctorParameters: function () { return [{ type: CdkColumnDef }, { type: i0.ElementRef }]; } });\n/** Footer cell template container that adds the right classes and role. */\nclass CdkFooterCell extends BaseCdkCell {\n constructor(columnDef, elementRef) {\n var _a;\n super(columnDef, elementRef);\n if (((_a = columnDef._table) === null || _a === void 0 ? void 0 : _a._elementRef.nativeElement.nodeType) === 1) {\n const tableRole = columnDef._table._elementRef.nativeElement.getAttribute('role');\n const role = tableRole === 'grid' || tableRole === 'treegrid' ? 'gridcell' : 'cell';\n elementRef.nativeElement.setAttribute('role', role);\n }\n }\n}\nCdkFooterCell.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: CdkFooterCell, deps: [{ token: CdkColumnDef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkFooterCell.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.0\", type: CdkFooterCell, selector: \"cdk-footer-cell, td[cdk-footer-cell]\", host: { classAttribute: \"cdk-footer-cell\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: CdkFooterCell, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-footer-cell, td[cdk-footer-cell]',\n host: {\n 'class': 'cdk-footer-cell',\n },\n }]\n }], ctorParameters: function () { return [{ type: CdkColumnDef }, { type: i0.ElementRef }]; } });\n/** Cell template container that adds the right classes and role. */\nclass CdkCell extends BaseCdkCell {\n constructor(columnDef, elementRef) {\n var _a;\n super(columnDef, elementRef);\n if (((_a = columnDef._table) === null || _a === void 0 ? void 0 : _a._elementRef.nativeElement.nodeType) === 1) {\n const tableRole = columnDef._table._elementRef.nativeElement.getAttribute('role');\n const role = tableRole === 'grid' || tableRole === 'treegrid' ? 'gridcell' : 'cell';\n elementRef.nativeElement.setAttribute('role', role);\n }\n }\n}\nCdkCell.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: CdkCell, deps: [{ token: CdkColumnDef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkCell.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.0\", type: CdkCell, selector: \"cdk-cell, td[cdk-cell]\", host: { classAttribute: \"cdk-cell\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: CdkCell, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-cell, td[cdk-cell]',\n host: {\n 'class': 'cdk-cell',\n },\n }]\n }], ctorParameters: function () { return [{ type: CdkColumnDef }, { type: i0.ElementRef }]; } });\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 * @docs-private\n */\nclass _Schedule {\n constructor() {\n this.tasks = [];\n this.endTasks = [];\n }\n}\n/** Injection token used to provide a coalesced style scheduler. */\nconst _COALESCED_STYLE_SCHEDULER = new InjectionToken('_COALESCED_STYLE_SCHEDULER');\n/**\n * Allows grouping up CSSDom mutations after the current execution context.\n * This can significantly improve performance when separate consecutive functions are\n * reading from the CSSDom and then mutating it.\n *\n * @docs-private\n */\nclass _CoalescedStyleScheduler {\n constructor(_ngZone) {\n this._ngZone = _ngZone;\n this._currentSchedule = null;\n this._destroyed = new Subject();\n }\n /**\n * Schedules the specified task to run at the end of the current VM turn.\n */\n schedule(task) {\n this._createScheduleIfNeeded();\n this._currentSchedule.tasks.push(task);\n }\n /**\n * Schedules the specified task to run after other scheduled tasks at the end of the current\n * VM turn.\n */\n scheduleEnd(task) {\n this._createScheduleIfNeeded();\n this._currentSchedule.endTasks.push(task);\n }\n /** Prevent any further tasks from running. */\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n }\n _createScheduleIfNeeded() {\n if (this._currentSchedule) {\n return;\n }\n this._currentSchedule = new _Schedule();\n this._getScheduleObservable()\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n while (this._currentSchedule.tasks.length || this._currentSchedule.endTasks.length) {\n const schedule = this._currentSchedule;\n // Capture new tasks scheduled by the current set of tasks.\n this._currentSchedule = new _Schedule();\n for (const task of schedule.tasks) {\n task();\n }\n for (const task of schedule.endTasks) {\n task();\n }\n }\n this._currentSchedule = null;\n });\n }\n _getScheduleObservable() {\n // Use onStable when in the context of an ongoing change detection cycle so that we\n // do not accidentally trigger additional cycles.\n return this._ngZone.isStable\n ? from(Promise.resolve(undefined))\n : this._ngZone.onStable.pipe(take(1));\n }\n}\n_CoalescedStyleScheduler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: _CoalescedStyleScheduler, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\n_CoalescedStyleScheduler.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: _CoalescedStyleScheduler });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: _CoalescedStyleScheduler, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });\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 row template that can be used by the mat-table. Should not be used outside of the\n * material library.\n */\nconst CDK_ROW_TEMPLATE = `<ng-container cdkCellOutlet></ng-container>`;\n/**\n * Base class for the CdkHeaderRowDef and CdkRowDef that handles checking their columns inputs\n * for changes and notifying the table.\n */\nclass BaseRowDef {\n constructor(\n /** @docs-private */ template, _differs) {\n this.template = template;\n this._differs = _differs;\n }\n ngOnChanges(changes) {\n // Create a new columns differ if one does not yet exist. Initialize it based on initial value\n // of the columns property or an empty array if none is provided.\n if (!this._columnsDiffer) {\n const columns = (changes['columns'] && changes['columns'].currentValue) || [];\n this._columnsDiffer = this._differs.find(columns).create();\n this._columnsDiffer.diff(columns);\n }\n }\n /**\n * Returns the difference between the current columns and the columns from the last diff, or null\n * if there is no difference.\n */\n getColumnsDiff() {\n return this._columnsDiffer.diff(this.columns);\n }\n /** Gets this row def's relevant cell template from the provided column def. */\n extractCellTemplate(column) {\n if (this instanceof CdkHeaderRowDef) {\n return column.headerCell.template;\n }\n if (this instanceof CdkFooterRowDef) {\n return column.footerCell.template;\n }\n else {\n return column.cell.template;\n }\n }\n}\nBaseRowDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: BaseRowDef, deps: [{ token: i0.TemplateRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Directive });\nBaseRowDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.0\", type: BaseRowDef, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: BaseRowDef, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.IterableDiffers }]; } });\n// Boilerplate for applying mixins to CdkHeaderRowDef.\n/** @docs-private */\nclass CdkHeaderRowDefBase extends BaseRowDef {\n}\nconst _CdkHeaderRowDefBase = mixinHasStickyInput(CdkHeaderRowDefBase);\n/**\n * Header row definition for the CDK table.\n * Captures the header row's template and other header properties such as the columns to display.\n */\nclass CdkHeaderRowDef extends _CdkHeaderRowDefBase {\n constructor(template, _differs, _table) {\n super(template, _differs);\n this._table = _table;\n }\n // Prerender fails to recognize that ngOnChanges in a part of this class through inheritance.\n // Explicitly define it so that the method is called as part of the Angular lifecycle.\n ngOnChanges(changes) {\n super.ngOnChanges(changes);\n }\n}\nCdkHeaderRowDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: CdkHeaderRowDef, deps: [{ token: i0.TemplateRef }, { token: i0.IterableDiffers }, { token: CDK_TABLE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkHeaderRowDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.0\", type: CdkHeaderRowDef, selector: \"[cdkHeaderRowDef]\", inputs: { columns: [\"cdkHeaderRowDef\", \"columns\"], sticky: [\"cdkHeaderRowDefSticky\", \"sticky\"] }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: CdkHeaderRowDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkHeaderRowDef]',\n inputs: ['columns: cdkHeaderRowDef', 'sticky: cdkHeaderRowDefSticky'],\n }]\n }], ctorParameters: function () {\n return [{ type: i0.TemplateRef }, { type: i0.IterableDiffers }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_TABLE]\n }, {\n type: Optional\n }] }];\n } });\n// Boilerplate for applying mixins to CdkFooterRowDef.\n/** @docs-private */\nclass CdkFooterRowDefBase extends BaseRowDef {\n}\nconst _CdkFooterRowDefBase = mixinHasStickyInput(CdkFooterRowDefBase);\n/**\n * Footer row definition for the CDK table.\n * Captures the footer row's template and other footer properties such as the columns to display.\n */\nclass CdkFooterRowDef extends _CdkFooterRowDefBase {\n constructor(template, _differs, _table) {\n super(template, _differs);\n this._table = _table;\n }\n // Prerender fails to recognize that ngOnChanges in a part of this class through inheritance.\n // Explicitly define it so that the method is called as part of the Angular lifecycle.\n ngOnChanges(changes) {\n super.ngOnChanges(changes);\n }\n}\nCdkFooterRowDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: CdkFooterRowDef, deps: [{ token: i0.TemplateRef }, { token: i0.IterableDiffers }, { token: CDK_TABLE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkFooterRowDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.0\", type: CdkFooterRowDef, selector: \"[cdkFooterRowDef]\", inputs: { columns: [\"cdkFooterRowDef\", \"columns\"], sticky: [\"cdkFooterRowDefSticky\", \"sticky\"] }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: CdkFooterRowDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkFooterRowDef]',\n inputs: ['columns: cdkFooterRowDef', 'sticky: cdkFooterRowDefSticky'],\n }]\n }], ctorParameters: function () {\n return [{ type: i0.TemplateRef }, { type: i0.IterableDiffers }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_TABLE]\n }, {\n type: Optional\n }] }];\n } });\n/**\n * Data row definition for the CDK table.\n * Captures the header row's template and other row properties such as the columns to display and\n * a when predicate that describes when this row should be used.\n */\nclass CdkRowDef extends BaseRowDef {\n // TODO(andrewseguin): Add an input for providing a switch function to determine\n // if this template should be used.\n constructor(template, _differs, _table) {\n super(template, _differs);\n this._table = _table;\n }\n}\nCdkRowDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: CdkRowDef, deps: [{ token: i0.TemplateRef }, { token: i0.IterableDiffers }, { token: CDK_TABLE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkRowDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.0\", type: CdkRowDef, selector: \"[cdkRowDef]\", inputs: { columns: [\"cdkRowDefColumns\", \"columns\"], when: [\"cdkRowDefWhen\", \"when\"] }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: CdkRowDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkRowDef]',\n inputs: ['columns: cdkRowDefColumns', 'when: cdkRowDefWhen'],\n }]\n }], ctorParameters: function () {\n return [{ type: i0.TemplateRef }, { type: i0.IterableDiffers }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_TABLE]\n }, {\n type: Optional\n }] }];\n } });\n/**\n * Outlet for rendering cells inside of a row or header row.\n * @docs-private\n */\nclass CdkCellOutlet {\n constructor(_viewContainer) {\n this._viewContainer = _viewContainer;\n CdkCellOutlet.mostRecentCellOutlet = this;\n }\n ngOnDestroy() {\n // If this was the last outlet being rendered in the view, remove the reference\n // from the static property after it has been destroyed to avoid leaking memory.\n if (CdkCellOutlet.mostRecentCellOutlet === this) {\n CdkCellOutlet.mostRecentCellOutlet = null;\n }\n }\n}\n/**\n * Static property containing the latest constructed instance of this class.\n * Used by the CDK table when each CdkHeaderRow and CdkRow component is created using\n * createEmbeddedView. After one of these components are created, this property will provide\n * a handle to provide that component's cells and context. After init, the CdkCellOutlet will\n * construct the cells with the provided context.\n */\nCdkCellOutlet.mostRecentCellOutlet = null;\nCdkCellOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: CdkCellOutlet, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkCellOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.0\", type: CdkCellOutlet, selector: \"[cdkCellOutlet]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: CdkCellOutlet, decorators: [{\n type: Directive,\n args: [{ selector: '[cdkCellOutlet]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; } });\n/** Header template container that contains the cell outlet. Adds the right class and role. */\nclass CdkHeaderRow {\n}\nCdkHeaderRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: CdkHeaderRow, deps: [], target: i0.ɵɵFactoryTarget.Component });\nCdkHeaderRow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.2.0\", type: CdkHeaderRow, selector: \"cdk-header-row, tr[cdk-header-row]\", host: { attributes: { \"role\": \"row\" }, classAttribute: \"cdk-header-row\" }, ngImport: i0, template: \"<ng-container cdkCellOutlet></ng-container>\", isInline: true, directives: [{ type: CdkCellOutlet, selector: \"[cdkCellOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: CdkHeaderRow, decorators: [{\n type: Component,\n args: [{\n selector: 'cdk-header-row, tr[cdk-header-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'cdk-header-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n }]\n }] });\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\nclass CdkFooterRow {\n}\nCdkFooterRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: CdkFooterRow, deps: [], target: i0.ɵɵFactoryTarget.Component });\nCdkFooterRow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.2.0\", type: CdkFooterRow, selector: \"cdk-footer-row, tr[cdk-footer-row]\", host: { attributes: { \"role\": \"row\" }, classAttribute: \"cdk-footer-row\" }, ngImport: i0, template: \"<ng-container cdkCellOutlet></ng-container>\", isInline: true, directives: [{ type: CdkCellOutlet, selector: \"[cdkCellOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: CdkFooterRow, decorators: [{\n type: Component,\n args: [{\n selector: 'cdk-footer-row, tr[cdk-footer-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'cdk-footer-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n }]\n }] });\n/** Data row template container that contains the cell outlet. Adds the right class and role. */\nclass CdkRow {\n}\nCdkRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: CdkRow, deps: [], target: i0.ɵɵFactoryTarget.Component });\nCdkRow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.2.0\", type: CdkRow, selector: \"cdk-row, tr[cdk-row]\", host: { attributes: { \"role\": \"row\" }, classAttribute: \"cdk-row\" }, ngImport: i0, template: \"<ng-container cdkCellOutlet></ng-container>\", isInline: true, directives: [{ type: CdkCellOutlet, selector: \"[cdkCellOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: CdkRow, decorators: [{\n type: Component,\n args: [{\n selector: 'cdk-row, tr[cdk-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'cdk-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n }]\n }] });\n/** Row that can be used to display a message when no data is shown in the table. */\nclass CdkNoDataRow {\n constructor(templateRef) {\n this.templateRef = templateRef;\n this._contentClassName = 'cdk-no-data-row';\n }\n}\nCdkNoDataRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: CdkNoDataRow, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkNoDataRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.0\", type: CdkNoDataRow, selector: \"ng-template[cdkNoDataRow]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: CdkNoDataRow, decorators: [{\n type: Directive,\n args: [{\n selector: 'ng-template[cdkNoDataRow]',\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\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 * List of all possible directions that can be used for sticky positioning.\n * @docs-private\n */\nconst STICKY_DIRECTIONS = ['top', 'bottom', 'left', 'right'];\n/**\n * Applies and removes sticky positioning styles to the `CdkTable` rows and columns cells.\n * @docs-private\n */\nclass StickyStyler {\n /**\n * @param _isNativeHtmlTable Whether the sticky logic should be based on a table\n * that uses the native `<table>` element.\n * @param _stickCellCss The CSS class that will be applied to every row/cell that has\n * sticky positioning applied.\n * @param direction The directionality context of the table (ltr/rtl); affects column positioning\n * by reversing left/right positions.\n * @param _isBrowser Whether the table is currently being rendered on the server or the client.\n * @param _needsPositionStickyOnElement Whether we need to specify position: sticky on cells\n * using inline styles. If false, it is assumed that position: sticky is included in\n * the component stylesheet for _stickCellCss.\n * @param _positionListener A listener that is notified of changes to sticky rows/columns\n * and their dimensions.\n */\n constructor(_isNativeHtmlTable, _stickCellCss, direction, _coalescedStyleScheduler, _isBrowser = true, _needsPositionStickyOnElement = true, _positionListener) {\n this._isNativeHtmlTable = _isNativeHtmlTable;\n this._stickCellCss = _stickCellCss;\n this.direction = direction;\n this._coalescedStyleScheduler = _coalescedStyleScheduler;\n this._isBrowser = _isBrowser;\n this._needsPositionStickyOnElement = _needsPositionStickyOnElement;\n this._positionListener = _positionListener;\n this._cachedCellWidths = [];\n this._borderCellCss = {\n 'top': `${_stickCellCss}-border-elem-top`,\n 'bottom': `${_stickCellCss}-border-elem-bottom`,\n 'left': `${_stickCellCss}-border-elem-left`,\n 'right': `${_stickCellCss}-border-elem-right`,\n };\n }\n /**\n * Clears the sticky positioning styles from the row and its cells by resetting the `position`\n * style, setting the zIndex to 0, and unsetting each provided sticky direction.\n * @param rows The list of rows that should be cleared from sticking in the provided directions\n * @param stickyDirections The directions that should no longer be set as sticky on the rows.\n */\n clearStickyPositioning(rows, stickyDirections) {\n const elementsToClear = [];\n for (const row of rows) {\n // If the row isn't an element (e.g. if it's an `ng-container`),\n // it won't have inline styles or `children` so we skip it.\n if (row.nodeType !== row.ELEMENT_NODE) {\n continue;\n }\n elementsToClear.push(row);\n for (let i = 0; i < row.children.length; i++) {\n elementsToClear.push(row.children[i]);\n }\n }\n // Coalesce with sticky row/column updates (and potentially other changes like column resize).\n this._coalescedStyleScheduler.schedule(() => {\n for (const element of elementsToClear) {\n this._removeStickyStyle(element, stickyDirections);\n }\n });\n }\n /**\n * Applies sticky left and right positions to the cells of each row according to the sticky\n * states of the rendered column definitions.\n * @param rows The rows that should have its set of cells stuck according to the sticky states.\n * @param stickyStartStates A list of boolean states where each state represents whether the cell\n * in this index position should be stuck to the start of the row.\n * @param stickyEndStates A list of boolean states where each state represents whether the cell\n * in this index position should be stuck to the end of the row.\n * @param recalculateCellWidths Whether the sticky styler should recalculate the width of each\n * column cell. If `false` cached widths will be used instead.\n */\n updateStickyColumns(rows, stickyStartStates, stickyEndStates, recalculateCellWidths = true) {\n if (!rows.length ||\n !this._isBrowser ||\n !(stickyStartStates.some(state => state) || stickyEndStates.some(state => state))) {\n if (this._positionListener) {\n this._positionListener.stickyColumnsUpdated({ sizes: [] });\n this._positionListener.stickyEndColumnsUpdated({ sizes: [] });\n }\n return;\n }\n const firstRow = rows[0];\n const numCells = firstRow.children.length;\n const cellWidths = this._getCellWidths(firstRow, recalculateCellWidths);\n const startPositions = this._getStickyStartColumnPositions(cellWidths, stickyStartStates);\n const endPositions = this._getStickyEndColumnPositions(cellWidths, stickyEndStates);\n const lastStickyStart = stickyStartStates.lastIndexOf(true);\n const firstStickyEnd = stickyEndStates.indexOf(true);\n // Coalesce with sticky row updates (and potentially other changes like column resize).\n this._coalescedStyleScheduler.schedule(() => {\n const isRtl = this.direction === 'rtl';\n const start = isRtl ? 'right' : 'left';\n const end = isRtl ? 'left' : 'right';\n for (const row of rows) {\n for (let i = 0; i < numCells; i++) {\n const cell = row.children[i];\n if (stickyStartStates[i]) {\n this._addStickyStyle(cell, start, startPositions[i], i === lastStickyStart);\n }\n if (stickyEndStates[i]) {\n this._addStickyStyle(cell, end, endPositions[i], i === firstStickyEnd);\n }\n }\n }\n if (this._positionListener) {\n this._positionListener.stickyColumnsUpdated({\n sizes: lastStickyStart === -1\n ? []\n : cellWidths\n .slice(0, lastStickyStart + 1)\n .map((width, index) => (stickyStartStates[index] ? width : null)),\n });\n this._positionListener.stickyEndColumnsUpdated({\n sizes: firstStickyEnd === -1\n ? []\n : cellWidths\n .slice(firstStickyEnd)\n .map((width, index) => (stickyEndStates[index + firstStickyEnd] ? width : null))\n .reverse(),\n });\n }\n });\n }\n /**\n * Applies sticky positioning to the row's cells if using the native table layout, and to the\n * row itself otherwise.\n * @param rowsToStick The list of rows that should be stuck according to their corresponding\n * sticky state and to the provided top or bottom position.\n * @param stickyStates A list of boolean states where each state represents whether the row\n * should be stuck in the particular top or bottom position.\n * @param position The position direction in which the row should be stuck if that row should be\n * sticky.\n *\n */\n stickRows(rowsToStick, stickyStates, position) {\n // Since we can't measure the rows on the server, we can't stick the rows properly.\n if (!this._isBrowser) {\n return;\n }\n // If positioning the rows to the bottom, reverse their order when evaluating the sticky\n // position such that the last row stuck will be \"bottom: 0px\" and so on. Note that the\n // sticky states need to be reversed as well.\n const rows = position === 'bottom' ? rowsToStick.slice().reverse() : rowsToStick;\n const states = position === 'bottom' ? stickyStates.slice().reverse() : stickyStates;\n // Measure row heights all at once before adding sticky styles to reduce layout thrashing.\n const stickyOffsets = [];\n const stickyCellHeights = [];\n const elementsToStick = [];\n for (let rowIndex = 0, stickyOffset = 0; rowIndex < rows.length; rowIndex++) {\n if (!states[rowIndex]) {\n continue;\n }\n stickyOffsets[rowIndex] = stickyOffset;\n const row = rows[rowIndex];\n elementsToStick[rowIndex] = this._isNativeHtmlTable\n ? Array.from(row.children)\n : [row];\n const height = row.getBoundingClientRect().height;\n stickyOffset += height;\n stickyCellHeights[rowIndex] = height;\n }\n const borderedRowIndex = states.lastIndexOf(true);\n // Coalesce with other sticky row updates (top/bottom), sticky columns updates\n // (and potentially other changes like column resize).\n this._coalescedStyleScheduler.schedule(() => {\n var _a, _b;\n for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {\n if (!states[rowIndex]) {\n continue;\n }\n const offset = stickyOffsets[rowIndex];\n const isBorderedRowIndex = rowIndex === borderedRowIndex;\n for (const element of elementsToStick[rowIndex]) {\n this._addStickyStyle(element, position, offset, isBorderedRowIndex);\n }\n }\n if (position === 'top') {\n (_a = this._positionListener) === null || _a === void 0 ? void 0 : _a.stickyHeaderRowsUpdated({\n sizes: stickyCellHeights,\n offsets: stickyOffsets,\n elements: elementsToStick,\n });\n }\n else {\n (_b = this._positionListener) === null || _b === void 0 ? void 0 : _b.stickyFooterRowsUpdated({\n sizes: stickyCellHeights,\n offsets: stickyOffsets,\n elements: elementsToStick,\n });\n }\n });\n }\n /**\n * When using the native table in Safari, sticky footer cells do not stick. The only way to stick\n * footer rows is to apply sticky styling to the tfoot container. This should only be done if\n * all footer rows are sticky. If not all footer rows are sticky, remove sticky positioning from\n * the tfoot element.\n */\n updateStickyFooterContainer(tableElement, stickyStates) {\n if (!this._isNativeHtmlTable) {\n return;\n }\n const tfoot = tableElement.querySelector('tfoot');\n // Coalesce with other sticky updates (and potentially other changes like column resize).\n this._coalescedStyleScheduler.schedule(() => {\n if (stickyStates.some(state => !state)) {\n this._removeStickyStyle(tfoot, ['bottom']);\n }\n else {\n this._addStickyStyle(tfoot, 'bottom', 0, false);\n }\n });\n }\n /**\n * Removes the sticky style on the element by removing the sticky cell CSS class, re-evaluating\n * the zIndex, removing each of the provided sticky directions, and removing the\n * sticky position if there are no more directions.\n */\n _removeStickyStyle(element, stickyDirections) {\n for (const dir of stickyDirections) {\n element.style[dir] = '';\n element.classList.remove(this._borderCellCss[dir]);\n }\n // If the element no longer has any more sticky directions, remove sticky positioning and\n // the sticky CSS class.\n // Short-circuit checking element.style[dir] for stickyDirections as they\n // were already removed above.\n const hasDirection = STICKY_DIRECTIONS.some(dir => stickyDirections.indexOf(dir) === -1 && element.style[dir]);\n if (hasDirection) {\n element.style.zIndex = this._getCalculatedZIndex(element);\n }\n else {\n // When not hasDirection, _getCalculatedZIndex will always return ''.\n element.style.zIndex = '';\n if (this._needsPositionStickyOnElement) {\n element.style.position = '';\n }\n element.classList.remove(this._stickCellCss);\n }\n }\n /**\n * Adds the sticky styling to the element by adding the sticky style class, changing position\n * to be sticky (and -webkit-sticky), setting the appropriate zIndex, and adding a sticky\n * direction and value.\n */\n _addStickyStyle(element, dir, dirValue, isBorderElement) {\n element.classList.add(this._stickCellCss);\n if (isBorderElement) {\n element.classList.add(this._borderCellCss[dir]);\n }\n element.style[dir] = `${dirValue}px`;\n element.style.zIndex = this._getCalculatedZIndex(element);\n if (this._needsPositionStickyOnElement) {\n element.style.cssText += 'position: -webkit-sticky; position: sticky; ';\n }\n }\n /**\n * Calculate what the z-index should be for the element, depending on what directions (top,\n * bottom, left, right) have been set. It should be true that elements with a top direction\n * should have the highest index since these are elements like a table header. If any of those\n * elements are also sticky in another direction, then they should appear above other elements\n * that are only sticky top (e.g. a sticky column on a sticky header). Bottom-sticky elements\n * (e.g. footer rows) should then be next in the ordering such that they are below the header\n * but above any non-sticky elements. Finally, left/right sticky elements (e.g. sticky columns)\n * should minimally increment so that they are above non-sticky elements but below top and bottom\n * elements.\n */\n _getCalculatedZIndex(element) {\n const zIndexIncrements = {\n top: 100,\n bottom: 10,\n left: 1,\n right: 1,\n };\n let zIndex = 0;\n // Use `Iterable` instead of `Array` because TypeScript, as of 3.6.3,\n // loses the array generic type in the `for of`. But we *also* have to use `Array` because\n // typescript won't iterate over an `Iterable` unless you compile with `--downlevelIteration`\n for (const dir of STICKY_DIRECTIONS) {\n if (element.style[dir]) {\n zIndex += zIndexIncrements[dir];\n }\n }\n return zIndex ? `${zIndex}` : '';\n }\n /** Gets the widths for each cell in the provided row. */\n _getCellWidths(row, recalculateCellWidths = true) {\n if (!recalculateCellWidths && this._cachedCellWidths.length) {\n return this._cachedCellWidths;\n }\n const cellWidths = [];\n const firstRowCells = row.children;\n for (let i = 0; i < firstRowCells.length; i++) {\n let cell = firstRowCells[i];\n cellWidths.push(cell.getBoundingClientRect().width);\n }\n this._cachedCellWidths = cellWidths;\n return cellWidths;\n }\n /**\n * Determines the left and right positions of each sticky column cell, which will be the\n * accumulation of all sticky column cell widths to the left and right, respectively.\n * Non-sticky cells do not need to have a value set since their positions will not be applied.\n */\n _getStickyStartColumnPositions(widths, stickyStates) {\n const positions = [];\n let nextPosition = 0;\n for (let i = 0; i < widths.length; i++) {\n if (stickyStates[i]) {\n positions[i] = nextPosition;\n nextPosition += widths[i];\n }\n }\n return positions;\n }\n /**\n * Determines the left and right positions of each sticky column cell, which will be the\n * accumulation of all sticky column cell widths to the left and right, respectively.\n * Non-sticky cells do not need to have a value set since their positions will not be applied.\n */\n _getStickyEndColumnPositions(widths, stickyStates) {\n const positions = [];\n let nextPosition = 0;\n for (let i = widths.length; i > 0; i--) {\n if (stickyStates[i]) {\n positions[i] = nextPosition;\n nextPosition += widths[i];\n }\n }\n return positions;\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 * Returns an error to be thrown when attempting to find an unexisting column.\n * @param id Id whose lookup failed.\n * @docs-private\n */\nfunction getTableUnknownColumnError(id) {\n return Error(`Could not find column with id \"${id}\".`);\n}\n/**\n * Returns an error to be thrown when two column definitions have the same name.\n * @docs-private\n */\nfunction getTableDuplicateColumnNameError(name) {\n return Error(`Duplicate column definition name provided: \"${name}\".`);\n}\n/**\n * Returns an error to be thrown when there are multiple rows that are missing a when function.\n * @docs-private\n */\nfunction getTableMultipleDefaultRowDefsError() {\n return Error(`There can only be one default row without a when predicate function.`);\n}\n/**\n * Returns an error to be thrown when there are no matching row defs for a particular set of data.\n * @docs-private\n */\nfunction getTableMissingMatchingRowDefError(data) {\n return Error(`Could not find a matching row definition for the` +\n `provided row data: ${JSON.stringify(data)}`);\n}\n/**\n * Returns an error to be thrown when there is no row definitions present in the content.\n * @docs-private\n */\nfunction getTableMissingRowDefsError() {\n return Error('Missing definitions for header, footer, and row; ' +\n 'cannot determine which columns should be rendered.');\n}\n/**\n * Returns an error to be thrown when the data source does not match the compatible types.\n * @docs-private\n */\nfunction getTableUnknownDataSourceError() {\n return Error(`Provided data source did not match an array, Observable, or DataSource`);\n}\n/**\n * Returns an error to be thrown when the text column cannot find a parent table to inject.\n * @docs-private\n */\nfunction getTableTextColumnMissingParentTableError() {\n return Error(`Text column could not find a parent table for registration.`);\n}\n/**\n * Returns an error to be thrown when a table text column doesn't have a name.\n * @docs-private\n */\nfunction getTableTextColumnMissingNameError() {\n return Error(`Table text column must have a name.`);\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/** The injection token used to specify the StickyPositioningListener. */\nconst STICKY_POSITIONING_LISTENER = new InjectionToken('CDK_SPL');\n\n/**\n * Enables the recycle view repeater strategy, which reduces rendering latency. Not compatible with\n * tables that animate rows.\n */\nclass CdkRecycleRows {\n}\nCdkRecycleRows.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: CdkRecycleRows, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nCdkRecycleRows.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.0\", type: CdkRecycleRows, selector: \"cdk-table[recycleRows], table[cdk-table][recycleRows]\", providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: CdkRecycleRows, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-table[recycleRows], table[cdk-table][recycleRows]',\n providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }],\n }]\n }] });\n/**\n * Provides a handle for the table to grab the view container's ng-container to insert data rows.\n * @docs-private\n */\nclass DataRowOutlet {\n constructor(viewContainer, elementRef) {\n this.viewContainer = viewContainer;\n this.elementRef = elementRef;\n }\n}\nDataRowOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: DataRowOutlet, deps: [{ token: i0.ViewContainerRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nDataRowOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.0\", type: DataRowOutlet, selector: \"[rowOutlet]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: DataRowOutlet, decorators: [{\n type: Directive,\n args: [{ selector: '[rowOutlet]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ElementRef }]; } });\n/**\n * Provides a handle for the table to grab the view container's ng-container to insert the header.\n * @docs-private\n */\nclass HeaderRowOutlet {\n constructor(viewContainer, elementRef) {\n this.viewContainer = viewContainer;\n this.elementRef = elementRef;\n }\n}\nHeaderRowOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: HeaderRowOutlet, deps: [{ token: i0.ViewContainerRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nHeaderRowOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.0\", type: HeaderRowOutlet, selector: \"[headerRowOutlet]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: HeaderRowOutlet, decorators: [{\n type: Directive,\n args: [{ selector: '[headerRowOutlet]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ElementRef }]; } });\n/**\n * Provides a handle for the table to grab the view container's ng-container to insert the footer.\n * @docs-private\n */\nclass FooterRowOutlet {\n constructor(viewContainer, elementRef) {\n this.viewContainer = viewContainer;\n this.elementRef = elementRef;\n }\n}\nFooterRowOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: FooterRowOutlet, deps: [{ token: i0.ViewContainerRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nFooterRowOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.0\", type: FooterRowOutlet, selector: \"[footerRowOutlet]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: FooterRowOutlet, decorators: [{\n type: Directive,\n args: [{ selector: '[footerRowOutlet]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ElementRef }]; } });\n/**\n * Provides a handle for the table to grab the view\n * container's ng-container to insert the no data row.\n * @docs-private\n */\nclass NoDataRowOutlet {\n constructor(viewContainer, elementRef) {\n this.viewContainer = viewContainer;\n this.elementRef = elementRef;\n }\n}\nNoDataRowOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: NoDataRowOutlet, deps: [{ token: i0.ViewContainerRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nNoDataRowOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.0\", type: NoDataRowOutlet, selector: \"[noDataRowOutlet]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: NoDataRowOutlet, decorators: [{\n type: Directive,\n args: [{ selector: '[noDataRowOutlet]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ElementRef }]; } });\n/**\n * The table template that can be used by the mat-table. Should not be used outside of the\n * material library.\n * @docs-private\n */\nconst CDK_TABLE_TEMPLATE = \n// Note that according to MDN, the `caption` element has to be projected as the **first**\n// element in the table. See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/caption\n`\n <ng-content select=\"caption\"></ng-content>\n <ng-content select=\"colgroup, col\"></ng-content>\n <ng-container headerRowOutlet></ng-container>\n <ng-container rowOutlet></ng-container>\n <ng-container noDataRowOutlet></ng-container>\n <ng-container footerRowOutlet></ng-container>\n`;\n/**\n * Class used to conveniently type the embedded view ref for rows with a context.\n * @docs-private\n */\nclass RowViewRef extends EmbeddedViewRef {\n}\n/**\n * A data table that can render a header row, data rows, and a footer row.\n * Uses the dataSource input to determine the data to be rendered. The data can be provided either\n * as a data array, an Observable stream that emits the data array to render, or a DataSource with a\n * connect function that will return an Observable stream that emits the data array to render.\n */\nclass CdkTable {\n constructor(_differs, _changeDetectorRef, _elementRef, role, _dir, _document, _platform, _viewRepeater, _coalescedStyleScheduler, _viewportRuler, \n /**\n * @deprecated `_stickyPositioningListener` parameter to become required.\n * @breaking-change 13.0.0\n */\n _stickyPositioningListener, \n /**\n * @deprecated `_ngZone` parameter to become required.\n * @breaking-change 14.0.0\n */\n _ngZone) {\n this._differs = _differs;\n this._changeDetectorRef = _changeDetectorRef;\n this._elementRef = _elementRef;\n this._dir = _dir;\n this._platform = _platform;\n this._viewRepeater = _viewRepeater;\n this._coalescedStyleScheduler = _coalescedStyleScheduler;\n this._viewportRuler = _viewportRuler;\n this._stickyPositioningListener = _stickyPositioningListener;\n this._ngZone = _ngZone;\n /** Subject that emits when the component has been destroyed. */\n this._onDestroy = new Subject();\n /**\n * Map of all the user's defined columns (header, data, and footer cell template) identified by\n * name. Collection populated by the column definitions gathered by `ContentChildren` as well as\n * any custom column definitions added to `_customColumnDefs`.\n */\n this._columnDefsByName = new Map();\n /**\n * Column definitions that were defined outside of the direct content children of the table.\n * These will be defined when, e.g., creating a wrapper around the cdkTable that has\n * column definitions as *its* content child.\n */\n this._customColumnDefs = new Set();\n /**\n * Data row definitions that were defined outside of the direct content children of the table.\n * These will be defined when, e.g., creating a wrapper around the cdkTable that has\n * built-in data rows as *its* content child.\n */\n this._customRowDefs = new Set();\n /**\n * Header row definitions that were defined outside of the direct content children of the table.\n * These will be defined when, e.g., creating a wrapper around the cdkTable that has\n * built-in header rows as *its* content child.\n */\n this._customHeaderRowDefs = new Set();\n /**\n * Footer row definitions that were defined outside of the direct content children of the table.\n * These will be defined when, e.g., creating a wrapper around the cdkTable that has a\n * built-in footer row as *its* content child.\n */\n this._customFooterRowDefs = new Set();\n /**\n * Whether the header row definition has been changed. Triggers an update to the header row after\n * content is checked. Initialized as true so that the table renders the initial set of rows.\n */\n this._headerRowDefChanged = true;\n /**\n * Whether the footer row definition has been changed. Triggers an update to the footer row after\n * content is checked. Initialized as true so that the table renders the initial set of rows.\n */\n this._footerRowDefChanged = true;\n /**\n * Whether the sticky column styles need to be updated. Set to `true` when the visible columns\n * change.\n */\n this._stickyColumnStylesNeedReset = true;\n /**\n * Whether the sticky styler should recalculate cell widths when applying sticky styles. If\n * `false`, cached values will be used instead. This is only applicable to tables with\n * {@link fixedLayout} enabled. For other tables, cell widths will always be recalculated.\n */\n this._forceRecalculateCellWidths = true;\n /**\n * Cache of the latest rendered `RenderRow` objects as a map for easy retrieval when constructing\n * a new list of `RenderRow` objects for rendering rows. Since the new list is constructed with\n * the cached `RenderRow` objects when possible, the row identity is preserved when the data\n * and row template matches, which allows the `IterableDiffer` to check rows by reference\n * and understand which rows are added/moved/removed.\n *\n * Implemented as a map of maps where the first key is the `data: T` object and the second is the\n * `CdkRowDef<T>` object. With the two keys, the cache points to a `RenderRow<T>` object that\n * contains an array of created pairs. The array is necessary to handle cases where the data\n * array contains multiple duplicate data objects and each instantiated `RenderRow` must be\n * stored.\n */\n this._cachedRenderRowsMap = new Map();\n /**\n * CSS class added to any row or cell that has sticky positioning applied. May be overriden by\n * table subclasses.\n */\n this.stickyCssClass = 'cdk-table-sticky';\n /**\n * Whether to manually add positon: sticky to all sticky cell elements. Not needed if\n * the position is set in a selector associated with the value of stickyCssClass. May be\n * overridden by table subclasses\n */\n this.needsPositionStickyOnElement = true;\n /** Whether the no data row is currently showing anything. */\n this._isShowingNoDataRow = false;\n this._multiTemplateDataRows = false;\n this._fixedLayout = false;\n /**\n * Emits when the table completes rendering a set of data rows based on the latest data from the\n * data source, even if the set of rows is empty.\n */\n this.contentChanged = new EventEmitter();\n // TODO(andrewseguin): Remove max value as the end index\n // and instead calculate the view on init and scroll.\n /**\n * Stream containing the latest information on what rows are being displayed on screen.\n * Can be used by the data source to as a heuristic of what data should be provided.\n *\n * @docs-private\n */\n this.viewChange = new BehaviorSubject({\n start: 0,\n end: Number.MAX_VALUE,\n });\n if (!role) {\n this._elementRef.nativeElement.setAttribute('role', 'table');\n }\n this._document = _document;\n this._isNativeHtmlTable = this._elementRef.nativeElement.nodeName === 'TABLE';\n }\n /**\n * Tracking function that will be used to check the differences in data changes. Used similarly\n * to `ngFor` `trackBy` function. Optimize row operations by identifying a row based on its data\n * relative to the function to know if a row should be added/removed/moved.\n * Accepts a function that takes two parameters, `index` and `item`.\n */\n get trackBy() {\n return this._trackByFn;\n }\n set trackBy(fn) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && fn != null && typeof fn !== 'function') {\n console.warn(`trackBy must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this._trackByFn = fn;\n }\n /**\n * The table's source of data, which can be provided in three ways (in order of complexity):\n * - Simple data array (each object represents one table row)\n * - Stream that emits a data array each time the array changes\n * - `DataSource` object that implements the connect/disconnect interface.\n *\n * If a data array is provided, the table must be notified when the array's objects are\n * added, removed, or moved. This can be done by calling the `renderRows()` function which will\n * render the diff since the last table render. If the data array reference is changed, the table\n * will automatically trigger an update to the rows.\n *\n * When providing an Observable stream, the table will trigger an update automatically when the\n * stream emits a new array of data.\n *\n * Finally, when providing a `DataSource` object, the table will use the Observable stream\n * provided by the connect function and trigger updates when that stream emits new data array\n * values. During the table's ngOnDestroy or when the data source is removed from the table, the\n * table will call the DataSource's `disconnect` function (may be useful for cleaning up any\n * subscriptions registered during the connect process).\n */\n get dataSource() {\n return this._dataSource;\n }\n set dataSource(dataSource) {\n if (this._dataSource !== dataSource) {\n this._switchDataSource(dataSource);\n }\n }\n /**\n * Whether to allow multiple rows per data object by evaluating which rows evaluate their 'when'\n * predicate to true. If `multiTemplateDataRows` is false, which is the default value, then each\n * dataobject will render the first row that evaluates its when predicate to true, in the order\n * defined in the table, or otherwise the default row which does not have a when predicate.\n */\n get multiTemplateDataRows() {\n return this._multiTemplateDataRows;\n }\n set multiTemplateDataRows(v) {\n this._multiTemplateDataRows = coerceBooleanProperty(v);\n // In Ivy if this value is set via a static attribute (e.g. <table multiTemplateDataRows>),\n // this setter will be invoked before the row outlet has been defined hence the null check.\n if (this._rowOutlet && this._rowOutlet.viewContainer.length) {\n this._forceRenderDataRows();\n this.updateStickyColumnStyles();\n }\n }\n /**\n * Whether to use a fixed table layout. Enabling this option will enforce consistent column widths\n * and optimize rendering sticky styles for native tables. No-op for flex tables.\n */\n get fixedLayout() {\n return this._fixedLayout;\n }\n set fixedLayout(v) {\n this._fixedLayout = coerceBooleanProperty(v);\n // Toggling `fixedLayout` may change column widths. Sticky column styles should be recalculated.\n this._forceRecalculateCellWidths = true;\n this._stickyColumnStylesNeedReset = true;\n }\n ngOnInit() {\n this._setupStickyStyler();\n if (this._isNativeHtmlTable) {\n this._applyNativeTableSections();\n }\n // Set up the trackBy function so that it uses the `RenderRow` as its identity by default. If\n // the user has provided a custom trackBy, return the result of that function as evaluated\n // with the values of the `RenderRow`'s data and index.\n this._dataDiffer = this._differs.find([]).create((_i, dataRow) => {\n return this.trackBy ? this.trackBy(dataRow.dataIndex, dataRow.data) : dataRow;\n });\n this._viewportRuler\n .change()\n .pipe(takeUntil(this._onDestroy))\n .subscribe(() => {\n this._forceRecalculateCellWidths = true;\n });\n }\n ngAfterContentChecked() {\n // Cache the row and column definitions gathered by ContentChildren and programmatic injection.\n this._cacheRowDefs();\n this._cacheColumnDefs();\n // Make sure that the user has at least added header, footer, or data row def.\n if (!this._headerRowDefs.length &&\n !this._footerRowDefs.length &&\n !this._rowDefs.length &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableMissingRowDefsError();\n }\n // Render updates if the list of columns have been changed for the header, row, or footer defs.\n const columnsChanged = this._renderUpdatedColumns();\n const rowDefsChanged = columnsChanged || this._headerRowDefChanged || this._footerRowDefChanged;\n // Ensure sticky column styles are reset if set to `true` elsewhere.\n this._stickyColumnStylesNeedReset = this._stickyColumnStylesNeedReset || rowDefsChanged;\n this._forceRecalculateCellWidths = rowDefsChanged;\n // If the header row definition has been changed, trigger a render to the header row.\n if (this._headerRowDefChanged) {\n this._forceRenderHeaderRows();\n this._headerRowDefChanged = false;\n }\n // If the footer row definition has been changed, trigger a render to the footer row.\n if (this._footerRowDefChanged) {\n this._forceRenderFooterRows();\n this._footerRowDefChanged = false;\n }\n // If there is a data source and row definitions, connect to the data source unless a\n // connection has already been made.\n if (this.dataSource && this._rowDefs.length > 0 && !this._renderChangeSubscription) {\n this._observeRenderChanges();\n }\n else if (this._stickyColumnStylesNeedReset) {\n // In the above case, _observeRenderChanges will result in updateStickyColumnStyles being\n // called when it row data arrives. Otherwise, we need to call it proactively.\n this.updateStickyColumnStyles();\n }\n this._checkStickyStates();\n }\n ngOnDestroy() {\n [\n this._rowOutlet.viewContainer,\n this._headerRowOutlet.viewContainer,\n this._footerRowOutlet.viewContainer,\n this._cachedRenderRowsMap,\n this._customColumnDefs,\n this._customRowDefs,\n this._customHeaderRowDefs,\n this._customFooterRowDefs,\n this._columnDefsByName,\n ].forEach(def => {\n def.clear();\n });\n this._headerRowDefs = [];\n this._footerRowDefs = [];\n this._defaultRowDef = null;\n this._onDestroy.next();\n this._onDestroy.complete();\n if (isDataSource(this.dataSource)) {\n this.dataSource.disconnect(this);\n }\n }\n /**\n * Renders rows based on the table's latest set of data, which was either provided directly as an\n * input or retrieved through an Observable stream (directly or from a DataSource).\n * Checks for differences in the data since the last diff to perform only the necessary\n * changes (add/remove/move rows).\n *\n * If the table's data source is a DataSource or Observable, this will be invoked automatically\n * each time the provided Observable stream emits a new data array. Otherwise if your data is\n * an array, this function will need to be called to render any changes.\n */\n renderRows() {\n this._renderRows = this._getAllRenderRows();\n const changes = this._dataDiffer.diff(this._renderRows);\n if (!changes) {\n this._updateNoDataRow();\n this.contentChanged.next();\n return;\n }\n const viewContainer = this._rowOutlet.viewContainer;\n this._viewRepeater.applyChanges(changes, viewContainer, (record, _adjustedPreviousIndex, currentIndex) => this._getEmbeddedViewArgs(record.item, currentIndex), record => record.item.data, (change) => {\n if (change.operation === 1 /* INSERTED */ && change.context) {\n this._renderCellTemplateForItem(change.record.item.rowDef, change.context);\n }\n });\n // Update the meta context of a row's context data (index, count, first, last, ...)\n this._updateRowIndexContext();\n // Update rows that did not get added/removed/moved but may have had their identity changed,\n // e.g. if trackBy matched data on some property but the actual data reference changed.\n changes.forEachIdentityChange((record) => {\n const rowView = viewContainer.get(record.currentIndex);\n rowView.context.$implicit = record.item.data;\n });\n this._updateNoDataRow();\n // Allow the new row data to render before measuring it.\n // @breaking-change 14.0.0 Remove undefined check once _ngZone is required.\n if (this._ngZone && NgZone.isInAngularZone()) {\n this._ngZone.onStable.pipe(take(1), takeUntil(this._onDestroy)).subscribe(() => {\n this.updateStickyColumnStyles();\n });\n }\n else {\n this.updateStickyColumnStyles();\n }\n this.contentChanged.next();\n }\n /** Adds a column definition that was not included as part of the content children. */\n addColumnDef(columnDef) {\n this._customColumnDefs.add(columnDef);\n }\n /** Removes a column definition that was not included as part of the content children. */\n removeColumnDef(columnDef) {\n this._customColumnDefs.delete(columnDef);\n }\n /** Adds a row definition that was not included as part of the content children. */\n addRowDef(rowDef) {\n this._customRowDefs.add(rowDef);\n }\n /** Removes a row definition that was not included as part of the content children. */\n removeRowDef(rowDef) {\n this._customRowDefs.delete(rowDef);\n }\n /** Adds a header row definition that was not included as part of the content children. */\n addHeaderRowDef(headerRowDef) {\n this._customHeaderRowDefs.add(headerRowDef);\n this._headerRowDefChanged = true;\n }\n /** Removes a header row definition that was not included as part of the content children. */\n removeHeaderRowDef(headerRowDef) {\n this._customHeaderRowDefs.delete(headerRowDef);\n this._headerRowDefChanged = true;\n }\n /** Adds a footer row definition that was not included as part of the content children. */\n addFooterRowDef(footerRowDef) {\n this._customFooterRowDefs.add(footerRowDef);\n this._footerRowDefChanged = true;\n }\n /** Removes a footer row definition that was not included as part of the content children. */\n removeFooterRowDef(footerRowDef) {\n this._customFooterRowDefs.delete(footerRowDef);\n this._footerRowDefChanged = true;\n }\n /** Sets a no data row definition that was not included as a part of the content children. */\n setNoDataRow(noDataRow) {\n this._customNoDataRow = noDataRow;\n }\n /**\n * Updates the header sticky styles. First resets all applied styles with respect to the cells\n * sticking to the top. Then, evaluating which cells need to be stuck to the top. This is\n * automatically called when the header row changes its displayed set of columns, or if its\n * sticky input changes. May be called manually for cases where the cell content changes outside\n * of these events.\n */\n updateStickyHeaderRowStyles() {\n const headerRows = this._getRenderedRows(this._headerRowOutlet);\n const tableElement = this._elementRef.nativeElement;\n // Hide the thead element if there are no header rows. This is necessary to satisfy\n // overzealous a11y checkers that fail because the `rowgroup` element does not contain\n // required child `row`.\n const thead = tableElement.querySelector('thead');\n if (thead) {\n thead.style.display = headerRows.length ? '' : 'none';\n }\n const stickyStates = this._headerRowDefs.map(def => def.sticky);\n this._stickyStyler.clearStickyPositioning(headerRows, ['top']);\n this._stickyStyler.stickRows(headerRows, stickyStates, 'top');\n // Reset the dirty state of the sticky input change since it has been used.\n this._headerRowDefs.forEach(def => def.resetStickyChanged());\n }\n /**\n * Updates the footer sticky styles. First resets all applied styles with respect to the cells\n * sticking to the bottom. Then, evaluating which cells need to be stuck to the bottom. This is\n * automatically called when the footer row changes its displayed set of columns, or if its\n * sticky input changes. May be called manually for cases where the cell content changes outside\n * of these events.\n */\n updateStickyFooterRowStyles() {\n const footerRows = this._getRenderedRows(this._footerRowOutlet);\n const tableElement = this._elementRef.nativeElement;\n // Hide the tfoot element if there are no footer rows. This is necessary to satisfy\n // overzealous a11y checkers that fail because the `rowgroup` element does not contain\n // required child `row`.\n const tfoot = tableElement.querySelector('tfoot');\n if (tfoot) {\n tfoot.style.display = footerRows.length ? '' : 'none';\n }\n const stickyStates = this._footerRowDefs.map(def => def.sticky);\n this._stickyStyler.clearStickyPositioning(footerRows, ['bottom']);\n this._stickyStyler.stickRows(footerRows, stickyStates, 'bottom');\n this._stickyStyler.updateStickyFooterContainer(this._elementRef.nativeElement, stickyStates);\n // Reset the dirty state of the sticky input change since it has been used.\n this._footerRowDefs.forEach(def => def.resetStickyChanged());\n }\n /**\n * Updates the column sticky styles. First resets all applied styles with respect to the cells\n * sticking to the left and right. Then sticky styles are added for the left and right according\n * to the column definitions for each cell in each row. This is automatically called when\n * the data source provides a new set of data or when a column definition changes its sticky\n * input. May be called manually for cases where the cell content changes outside of these events.\n */\n updateStickyColumnStyles() {\n const headerRows = this._getRenderedRows(this._headerRowOutlet);\n const dataRows = this._getRenderedRows(this._rowOutlet);\n const footerRows = this._getRenderedRows(this._footerRowOutlet);\n // For tables not using a fixed layout, the column widths may change when new rows are rendered.\n // In a table using a fixed layout, row content won't affect column width, so sticky styles\n // don't need to be cleared unless either the sticky column config changes or one of the row\n // defs change.\n if ((this._isNativeHtmlTable && !this._fixedLayout) || this._stickyColumnStylesNeedReset) {\n // Clear the left and right positioning from all columns in the table across all rows since\n // sticky columns span across all table sections (header, data, footer)\n this._stickyStyler.clearStickyPositioning([...headerRows, ...dataRows, ...footerRows], ['left', 'right']);\n this._stickyColumnStylesNeedReset = false;\n }\n // Update the sticky styles for each header row depending on the def's sticky state\n headerRows.forEach((headerRow, i) => {\n this._addStickyColumnStyles([headerRow], this._headerRowDefs[i]);\n });\n // Update the sticky styles for each data row depending on its def's sticky state\n this._rowDefs.forEach(rowDef => {\n // Collect all the rows rendered with this row definition.\n const rows = [];\n for (let i = 0; i < dataRows.length; i++) {\n if (this._renderRows[i].rowDef === rowDef) {\n rows.push(dataRows[i]);\n }\n }\n this._addStickyColumnStyles(rows, rowDef);\n });\n // Update the sticky styles for each footer row depending on the def's sticky state\n footerRows.forEach((footerRow, i) => {\n this._addStickyColumnStyles([footerRow], this._footerRowDefs[i]);\n });\n // Reset the dirty state of the sticky input change since it has been used.\n Array.from(this._columnDefsByName.values()).forEach(def => def.resetStickyChanged());\n }\n /**\n * Get the list of RenderRow objects to render according to the current list of data and defined\n * row definitions. If the previous list already contained a particular pair, it should be reused\n * so that the differ equates their references.\n */\n _getAllRenderRows() {\n const renderRows = [];\n // Store the cache and create a new one. Any re-used RenderRow objects will be moved into the\n // new cache while unused ones can be picked up by garbage collection.\n const prevCachedRenderRows = this._cachedRenderRowsMap;\n this._cachedRenderRowsMap = new Map();\n // For each data object, get the list of rows that should be rendered, represented by the\n // respective `RenderRow` object which is the pair of `data` and `CdkRowDef`.\n for (let i = 0; i < this._data.length; i++) {\n let data = this._data[i];\n const renderRowsForData = this._getRenderRowsForData(data, i, prevCachedRenderRows.get(data));\n if (!this._cachedRenderRowsMap.has(data)) {\n this._cachedRenderRowsMap.set(data, new WeakMap());\n }\n for (let j = 0; j < renderRowsForData.length; j++) {\n let renderRow = renderRowsForData[j];\n const cache = this._cachedRenderRowsMap.get(renderRow.data);\n if (cache.has(renderRow.rowDef)) {\n cache.get(renderRow.rowDef).push(renderRow);\n }\n else {\n cache.set(renderRow.rowDef, [renderRow]);\n }\n renderRows.push(renderRow);\n }\n }\n return renderRows;\n }\n /**\n * Gets a list of `RenderRow<T>` for the provided data object and any `CdkRowDef` objects that\n * should be rendered for this data. Reuses the cached RenderRow objects if they match the same\n * `(T, CdkRowDef)` pair.\n */\n _getRenderRowsForData(data, dataIndex, cache) {\n const rowDefs = this._getRowDefs(data, dataIndex);\n return rowDefs.map(rowDef => {\n const cachedRenderRows = cache && cache.has(rowDef) ? cache.get(rowDef) : [];\n if (cachedRenderRows.length) {\n const dataRow = cachedRenderRows.shift();\n dataRow.dataIndex = dataIndex;\n return dataRow;\n }\n else {\n return { data, rowDef, dataIndex };\n }\n });\n }\n /** Update the map containing the content's column definitions. */\n _cacheColumnDefs() {\n this._columnDefsByName.clear();\n const columnDefs = mergeArrayAndSet(this._getOwnDefs(this._contentColumnDefs), this._customColumnDefs);\n columnDefs.forEach(columnDef => {\n if (this._columnDefsByName.has(columnDef.name) &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableDuplicateColumnNameError(columnDef.name);\n }\n this._columnDefsByName.set(columnDef.name, columnDef);\n });\n }\n /** Update the list of all available row definitions that can be used. */\n _cacheRowDefs() {\n this._headerRowDefs = mergeArrayAndSet(this._getOwnDefs(this._contentHeaderRowDefs), this._customHeaderRowDefs);\n this._footerRowDefs = mergeArrayAndSet(this._getOwnDefs(this._contentFooterRowDefs), this._customFooterRowDefs);\n this._rowDefs = mergeArrayAndSet(this._getOwnDefs(this._contentRowDefs), this._customRowDefs);\n // After all row definitions are determined, find the row definition to be considered default.\n const defaultRowDefs = this._rowDefs.filter(def => !def.when);\n if (!this.multiTemplateDataRows &&\n defaultRowDefs.length > 1 &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableMultipleDefaultRowDefsError();\n }\n this._defaultRowDef = defaultRowDefs[0];\n }\n /**\n * Check if the header, data, or footer rows have changed what columns they want to display or\n * whether the sticky states have changed for the header or footer. If there is a diff, then\n * re-render that section.\n */\n _renderUpdatedColumns() {\n const columnsDiffReducer = (acc, def) => acc || !!def.getColumnsDiff();\n // Force re-render data rows if the list of column definitions have changed.\n const dataColumnsChanged = this._rowDefs.reduce(columnsDiffReducer, false);\n if (dataColumnsChanged) {\n this._forceRenderDataRows();\n }\n // Force re-render header/footer rows if the list of column definitions have changed.\n const headerColumnsChanged = this._headerRowDefs.reduce(columnsDiffReducer, false);\n if (headerColumnsChanged) {\n this._forceRenderHeaderRows();\n }\n const footerColumnsChanged = this._footerRowDefs.reduce(columnsDiffReducer, false);\n if (footerColumnsChanged) {\n this._forceRenderFooterRows();\n }\n return dataColumnsChanged || headerColumnsChanged || footerColumnsChanged;\n }\n /**\n * Switch to the provided data source by resetting the data and unsubscribing from the current\n * render change subscription if one exists. If the data source is null, interpret this by\n * clearing the row outlet. Otherwise start listening for new data.\n */\n _switchDataSource(dataSource) {\n this._data = [];\n if (isDataSource(this.dataSource)) {\n this.dataSource.disconnect(this);\n }\n // Stop listening for data from the previous data source.\n if (this._renderChangeSubscription) {\n this._renderChangeSubscription.unsubscribe();\n this._renderChangeSubscription = null;\n }\n if (!dataSource) {\n if (this._dataDiffer) {\n this._dataDiffer.diff([]);\n }\n this._rowOutlet.viewContainer.clear();\n }\n this._dataSource = dataSource;\n }\n /** Set up a subscription for the data provided by the data source. */\n _observeRenderChanges() {\n // If no data source has been set, there is nothing to observe for changes.\n if (!this.dataSource) {\n return;\n }\n let dataStream;\n if (isDataSource(this.dataSource)) {\n dataStream = this.dataSource.connect(this);\n }\n else if (isObservable(this.dataSource)) {\n dataStream = this.dataSource;\n }\n else if (Array.isArray(this.dataSource)) {\n dataStream = of(this.dataSource);\n }\n if (dataStream === undefined && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableUnknownDataSourceError();\n }\n this._renderChangeSubscription = dataStream\n .pipe(takeUntil(this._onDestroy))\n .subscribe(data => {\n this._data = data || [];\n this.renderRows();\n });\n }\n /**\n * Clears any existing content in the header row outlet and creates a new embedded view\n * in the outlet using the header row definition.\n */\n _forceRenderHeaderRows() {\n // Clear the header row outlet if any content exists.\n if (this._headerRowOutlet.viewContainer.length > 0) {\n this._headerRowOutlet.viewContainer.clear();\n }\n this._headerRowDefs.forEach((def, i) => this._renderRow(this._headerRowOutlet, def, i));\n this.updateStickyHeaderRowStyles();\n }\n /**\n * Clears any existing content in the footer row outlet and creates a new embedded view\n * in the outlet using the footer row definition.\n */\n _forceRenderFooterRows() {\n // Clear the footer row outlet if any content exists.\n if (this._footerRowOutlet.viewContainer.length > 0) {\n this._footerRowOutlet.viewContainer.clear();\n }\n this._footerRowDefs.forEach((def, i) => this._renderRow(this._footerRowOutlet, def, i));\n this.updateStickyFooterRowStyles();\n }\n /** Adds the sticky column styles for the rows according to the columns' stick states. */\n _addStickyColumnStyles(rows, rowDef) {\n const columnDefs = Array.from(rowDef.columns || []).map(columnName => {\n const columnDef = this._columnDefsByName.get(columnName);\n if (!columnDef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableUnknownColumnError(columnName);\n }\n return columnDef;\n });\n const stickyStartStates = columnDefs.map(columnDef => columnDef.sticky);\n const stickyEndStates = columnDefs.map(columnDef => columnDef.stickyEnd);\n this._stickyStyler.updateStickyColumns(rows, stickyStartStates, stickyEndStates, !this._fixedLayout || this._forceRecalculateCellWidths);\n }\n /** Gets the list of rows that have been rendered in the row outlet. */\n _getRenderedRows(rowOutlet) {\n const renderedRows = [];\n for (let i = 0; i < rowOutlet.viewContainer.length; i++) {\n const viewRef = rowOutlet.viewContainer.get(i);\n renderedRows.push(viewRef.rootNodes[0]);\n }\n return renderedRows;\n }\n /**\n * Get the matching row definitions that should be used for this row data. If there is only\n * one row definition, it is returned. Otherwise, find the row definitions that has a when\n * predicate that returns true with the data. If none return true, return the default row\n * definition.\n */\n _getRowDefs(data, dataIndex) {\n if (this._rowDefs.length == 1) {\n return [this._rowDefs[0]];\n }\n let rowDefs = [];\n if (this.multiTemplateDataRows) {\n rowDefs = this._rowDefs.filter(def => !def.when || def.when(dataIndex, data));\n }\n else {\n let rowDef = this._rowDefs.find(def => def.when && def.when(dataIndex, data)) || this._defaultRowDef;\n if (rowDef) {\n rowDefs.push(rowDef);\n }\n }\n if (!rowDefs.length && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableMissingMatchingRowDefError(data);\n }\n return rowDefs;\n }\n _getEmbeddedViewArgs(renderRow, index) {\n const rowDef = renderRow.rowDef;\n const context = { $implicit: renderRow.data };\n return {\n templateRef: rowDef.template,\n context,\n index,\n };\n }\n /**\n * Creates a new row template in the outlet and fills it with the set of cell templates.\n * Optionally takes a context to provide to the row and cells, as well as an optional index\n * of where to place the new row template in the outlet.\n */\n _renderRow(outlet, rowDef, index, context = {}) {\n // TODO(andrewseguin): enforce that one outlet was instantiated from createEmbeddedView\n const view = outlet.viewContainer.createEmbeddedView(rowDef.template, context, index);\n this._renderCellTemplateForItem(rowDef, context);\n return view;\n }\n _renderCellTemplateForItem(rowDef, context) {\n for (let cellTemplate of this._getCellTemplates(rowDef)) {\n if (CdkCellOutlet.mostRecentCellOutlet) {\n CdkCellOutlet.mostRecentCellOutlet._viewContainer.createEmbeddedView(cellTemplate, context);\n }\n }\n this._changeDetectorRef.markForCheck();\n }\n /**\n * Updates the index-related context for each row to reflect any changes in the index of the rows,\n * e.g. first/last/even/odd.\n */\n _updateRowIndexContext() {\n const viewContainer = this._rowOutlet.viewContainer;\n for (let renderIndex = 0, count = viewContainer.length; renderIndex < count; renderIndex++) {\n const viewRef = viewContainer.get(renderIndex);\n const context = viewRef.context;\n context.count = count;\n context.first = renderIndex === 0;\n context.last = renderIndex === count - 1;\n context.even = renderIndex % 2 === 0;\n context.odd = !context.even;\n if (this.multiTemplateDataRows) {\n context.dataIndex = this._renderRows[renderIndex].dataIndex;\n context.renderIndex = renderIndex;\n }\n else {\n context.index = this._renderRows[renderIndex].dataIndex;\n }\n }\n }\n /** Gets the column definitions for the provided row def. */\n _getCellTemplates(rowDef) {\n if (!rowDef || !rowDef.columns) {\n return [];\n }\n return Array.from(rowDef.columns, columnId => {\n const column = this._columnDefsByName.get(columnId);\n if (!column && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableUnknownColumnError(columnId);\n }\n return rowDef.extractCellTemplate(column);\n });\n }\n /** Adds native table sections (e.g. tbody) and moves the row outlets into them. */\n _applyNativeTableSections() {\n const documentFragment = this._document.createDocumentFragment();\n const sections = [\n { tag: 'thead', outlets: [this._headerRowOutlet] },\n { tag: 'tbody', outlets: [this._rowOutlet, this._noDataRowOutlet] },\n { tag: 'tfoot', outlets: [this._footerRowOutlet] },\n ];\n for (const section of sections) {\n const element = this._document.createElement(section.tag);\n element.setAttribute('role', 'rowgroup');\n for (const outlet of section.outlets) {\n element.appendChild(outlet.elementRef.nativeElement);\n }\n documentFragment.appendChild(element);\n }\n // Use a DocumentFragment so we don't hit the DOM on each iteration.\n this._elementRef.nativeElement.appendChild(documentFragment);\n }\n /**\n * Forces a re-render of the data rows. Should be called in cases where there has been an input\n * change that affects the evaluation of which rows should be rendered, e.g. toggling\n * `multiTemplateDataRows` or adding/removing row definitions.\n */\n _forceRenderDataRows() {\n this._dataDiffer.diff([]);\n this._rowOutlet.viewContainer.clear();\n this.renderRows();\n }\n /**\n * Checks if there has been a change in sticky states since last check and applies the correct\n * sticky styles. Since checking resets the \"dirty\" state, this should only be performed once\n * during a change detection and after the inputs are settled (after content check).\n */\n _checkStickyStates() {\n const stickyCheckReducer = (acc, d) => {\n return acc || d.hasStickyChanged();\n };\n // Note that the check needs to occur for every definition since it notifies the definition\n // that it can reset its dirty state. Using another operator like `some` may short-circuit\n // remaining definitions and leave them in an unchecked state.\n if (this._headerRowDefs.reduce(stickyCheckReducer, false)) {\n this.updateStickyHeaderRowStyles();\n }\n if (this._footerRowDefs.reduce(stickyCheckReducer, false)) {\n this.updateStickyFooterRowStyles();\n }\n if (Array.from(this._columnDefsByName.values()).reduce(stickyCheckReducer, false)) {\n this._stickyColumnStylesNeedReset = true;\n this.updateStickyColumnStyles();\n }\n }\n /**\n * Creates the sticky styler that will be used for sticky rows and columns. Listens\n * for directionality changes and provides the latest direction to the styler. Re-applies column\n * stickiness when directionality changes.\n */\n _setupStickyStyler() {\n const direction = this._dir ? this._dir.value : 'ltr';\n this._stickyStyler = new StickyStyler(this._isNativeHtmlTable, this.stickyCssClass, direction, this._coalescedStyleScheduler, this._platform.isBrowser, this.needsPositionStickyOnElement, this._stickyPositioningListener);\n (this._dir ? this._dir.change : of())\n .pipe(takeUntil(this._onDestroy))\n .subscribe(value => {\n this._stickyStyler.direction = value;\n this.updateStickyColumnStyles();\n });\n }\n /** Filters definitions that belong to this table from a QueryList. */\n _getOwnDefs(items) {\n return items.filter(item => !item._table || item._table === this);\n }\n /** Creates or removes the no data row, depending on whether any data is being shown. */\n _updateNoDataRow() {\n const noDataRow = this._customNoDataRow || this._noDataRow;\n if (!noDataRow) {\n return;\n }\n const shouldShow = this._rowOutlet.viewContainer.length === 0;\n if (shouldShow === this._isShowingNoDataRow) {\n return;\n }\n const container = this._noDataRowOutlet.viewContainer;\n if (shouldShow) {\n const view = container.createEmbeddedView(noDataRow.templateRef);\n const rootNode = view.rootNodes[0];\n // Only add the attributes if we have a single root node since it's hard\n // to figure out which one to add it to when there are multiple.\n if (view.rootNodes.length === 1 && (rootNode === null || rootNode === void 0 ? void 0 : rootNode.nodeType) === this._document.ELEMENT_NODE) {\n rootNode.setAttribute('role', 'row');\n rootNode.classList.add(noDataRow._contentClassName);\n }\n }\n else {\n container.clear();\n }\n this._isShowingNoDataRow = shouldShow;\n }\n}\nCdkTable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: CdkTable, deps: [{ token: i0.IterableDiffers }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: 'role', attribute: true }, { token: i1.Directionality, optional: true }, { token: DOCUMENT }, { token: i2.Platform }, { token: _VIEW_REPEATER_STRATEGY }, { token: _COALESCED_STYLE_SCHEDULER }, { token: i3.ViewportRuler }, { token: STICKY_POSITIONING_LISTENER, optional: true, skipSelf: true }, { token: i0.NgZone, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nCdkTable.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.2.0\", type: CdkTable, selector: \"cdk-table, table[cdk-table]\", inputs: { trackBy: \"trackBy\", dataSource: \"dataSource\", multiTemplateDataRows: \"multiTemplateDataRows\", fixedLayout: \"fixedLayout\" }, outputs: { contentChanged: \"contentChanged\" }, host: { properties: { \"class.cdk-table-fixed-layout\": \"fixedLayout\" }, classAttribute: \"cdk-table\" }, providers: [\n { provide: CDK_TABLE, useExisting: CdkTable },\n { provide: _VIEW_REPEATER_STRATEGY, useClass: _DisposeViewRepeaterStrategy },\n { provide: _COALESCED_STYLE_SCHEDULER, useClass: _CoalescedStyleScheduler },\n // Prevent nested tables from seeing this table's StickyPositioningListener.\n { provide: STICKY_POSITIONING_LISTENER, useValue: null },\n ], queries: [{ propertyName: \"_noDataRow\", first: true, predicate: CdkNoDataRow, descendants: true }, { propertyName: \"_contentColumnDefs\", predicate: CdkColumnDef, descendants: true }, { propertyName: \"_contentRowDefs\", predicate: CdkRowDef, descendants: true }, { propertyName: \"_contentHeaderRowDefs\", predicate: CdkHeaderRowDef, descendants: true }, { propertyName: \"_contentFooterRowDefs\", predicate: CdkFooterRowDef, descendants: true }], viewQueries: [{ propertyName: \"_rowOutlet\", first: true, predicate: DataRowOutlet, descendants: true, static: true }, { propertyName: \"_headerRowOutlet\", first: true, predicate: HeaderRowOutlet, descendants: true, static: true }, { propertyName: \"_footerRowOutlet\", first: true, predicate: FooterRowOutlet, descendants: true, static: true }, { propertyName: \"_noDataRowOutlet\", first: true, predicate: NoDataRowOutlet, descendants: true, static: true }], exportAs: [\"cdkTable\"], ngImport: i0, template: \"\\n <ng-content select=\\\"caption\\\"></ng-content>\\n <ng-content select=\\\"colgroup, col\\\"></ng-content>\\n <ng-container headerRowOutlet></ng-container>\\n <ng-container rowOutlet></ng-container>\\n <ng-container noDataRowOutlet></ng-container>\\n <ng-container footerRowOutlet></ng-container>\\n\", isInline: true, styles: [\".cdk-table-fixed-layout{table-layout:fixed}\\n\"], directives: [{ type: HeaderRowOutlet, selector: \"[headerRowOutlet]\" }, { type: DataRowOutlet, selector: \"[rowOutlet]\" }, { type: NoDataRowOutlet, selector: \"[noDataRowOutlet]\" }, { type: FooterRowOutlet, selector: \"[footerRowOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: CdkTable, decorators: [{\n type: Component,\n args: [{ selector: 'cdk-table, table[cdk-table]', exportAs: 'cdkTable', template: CDK_TABLE_TEMPLATE, host: {\n 'class': 'cdk-table',\n '[class.cdk-table-fixed-layout]': 'fixedLayout',\n }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, providers: [\n { provide: CDK_TABLE, useExisting: CdkTable },\n { provide: _VIEW_REPEATER_STRATEGY, useClass: _DisposeViewRepeaterStrategy },\n { provide: _COALESCED_STYLE_SCHEDULER, useClass: _CoalescedStyleScheduler },\n // Prevent nested tables from seeing this table's StickyPositioningListener.\n { provide: STICKY_POSITIONING_LISTENER, useValue: null },\n ], styles: [\".cdk-table-fixed-layout{table-layout:fixed}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: i0.IterableDiffers }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['role']\n }] }, { type: i1.Directionality, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i2.Platform }, { type: undefined, decorators: [{\n type: Inject,\n args: [_VIEW_REPEATER_STRATEGY]\n }] }, { type: _CoalescedStyleScheduler, decorators: [{\n type: Inject,\n args: [_COALESCED_STYLE_SCHEDULER]\n }] }, { type: i3.ViewportRuler }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: SkipSelf\n }, {\n type: Inject,\n args: [STICKY_POSITIONING_LISTENER]\n }] }, { type: i0.NgZone, decorators: [{\n type: Optional\n }] }];\n }, propDecorators: { trackBy: [{\n type: Input\n }], dataSource: [{\n type: Input\n }], multiTemplateDataRows: [{\n type: Input\n }], fixedLayout: [{\n type: Input\n }], contentChanged: [{\n type: Output\n }], _rowOutlet: [{\n type: ViewChild,\n args: [DataRowOutlet, { static: true }]\n }], _headerRowOutlet: [{\n type: ViewChild,\n args: [HeaderRowOutlet, { static: true }]\n }], _footerRowOutlet: [{\n type: ViewChild,\n args: [FooterRowOutlet, { static: true }]\n }], _noDataRowOutlet: [{\n type: ViewChild,\n args: [NoDataRowOutlet, { static: true }]\n }], _contentColumnDefs: [{\n type: ContentChildren,\n args: [CdkColumnDef, { descendants: true }]\n }], _contentRowDefs: [{\n type: ContentChildren,\n args: [CdkRowDef, { descendants: true }]\n }], _contentHeaderRowDefs: [{\n type: ContentChildren,\n args: [CdkHeaderRowDef, {\n descendants: true,\n }]\n }], _contentFooterRowDefs: [{\n type: ContentChildren,\n args: [CdkFooterRowDef, {\n descendants: true,\n }]\n }], _noDataRow: [{\n type: ContentChild,\n args: [CdkNoDataRow]\n }] } });\n/** Utility function that gets a merged list of the entries in an array and values of a Set. */\nfunction mergeArrayAndSet(array, set) {\n return array.concat(Array.from(set));\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 * Column that simply shows text content for the header and row cells. Assumes that the table\n * is using the native table implementation (`<table>`).\n *\n * By default, the name of this column will be the header text and data property accessor.\n * The header text can be overridden with the `headerText` input. Cell values can be overridden with\n * the `dataAccessor` input. Change the text justification to the start or end using the `justify`\n * input.\n */\nclass CdkTextColumn {\n constructor(\n // `CdkTextColumn` is always requiring a table, but we just assert it manually\n // for better error reporting.\n // tslint:disable-next-line: lightweight-tokens\n _table, _options) {\n this._table = _table;\n this._options = _options;\n /** Alignment of the cell values. */\n this.justify = 'start';\n this._options = _options || {};\n }\n /** Column name that should be used to reference this column. */\n get name() {\n return this._name;\n }\n set name(name) {\n this._name = name;\n // With Ivy, inputs can be initialized before static query results are\n // available. In that case, we defer the synchronization until \"ngOnInit\" fires.\n this._syncColumnDefName();\n }\n ngOnInit() {\n this._syncColumnDefName();\n if (this.headerText === undefined) {\n this.headerText = this._createDefaultHeaderText();\n }\n if (!this.dataAccessor) {\n this.dataAccessor =\n this._options.defaultDataAccessor || ((data, name) => data[name]);\n }\n if (this._table) {\n // Provide the cell and headerCell directly to the table with the static `ViewChild` query,\n // since the columnDef will not pick up its content by the time the table finishes checking\n // its content and initializing the rows.\n this.columnDef.cell = this.cell;\n this.columnDef.headerCell = this.headerCell;\n this._table.addColumnDef(this.columnDef);\n }\n else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throw getTableTextColumnMissingParentTableError();\n }\n }\n ngOnDestroy() {\n if (this._table) {\n this._table.removeColumnDef(this.columnDef);\n }\n }\n /**\n * Creates a default header text. Use the options' header text transformation function if one\n * has been provided. Otherwise simply capitalize the column name.\n */\n _createDefaultHeaderText() {\n const name = this.name;\n if (!name && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableTextColumnMissingNameError();\n }\n if (this._options && this._options.defaultHeaderTextTransform) {\n return this._options.defaultHeaderTextTransform(name);\n }\n return name[0].toUpperCase() + name.slice(1);\n }\n /** Synchronizes the column definition name with the text column name. */\n _syncColumnDefName() {\n if (this.columnDef) {\n this.columnDef.name = this.name;\n }\n }\n}\nCdkTextColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: CdkTextColumn, deps: [{ token: CdkTable, optional: true }, { token: TEXT_COLUMN_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nCdkTextColumn.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.2.0\", type: CdkTextColumn, selector: \"cdk-text-column\", inputs: { name: \"name\", headerText: \"headerText\", dataAccessor: \"dataAccessor\", justify: \"justify\" }, viewQueries: [{ propertyName: \"columnDef\", first: true, predicate: CdkColumnDef, descendants: true, static: true }, { propertyName: \"cell\", first: true, predicate: CdkCellDef, descendants: true, static: true }, { propertyName: \"headerCell\", first: true, predicate: CdkHeaderCellDef, descendants: true, static: true }], ngImport: i0, template: `\n <ng-container cdkColumnDef>\n <th cdk-header-cell *cdkHeaderCellDef [style.text-align]=\"justify\">\n {{headerText}}\n </th>\n <td cdk-cell *cdkCellDef=\"let data\" [style.text-align]=\"justify\">\n {{dataAccessor(data, name)}}\n </td>\n </ng-container>\n `, isInline: true, directives: [{ type: CdkColumnDef, selector: \"[cdkColumnDef]\", inputs: [\"sticky\", \"cdkColumnDef\", \"stickyEnd\"] }, { type: CdkHeaderCellDef, selector: \"[cdkHeaderCellDef]\" }, { type: CdkHeaderCell, selector: \"cdk-header-cell, th[cdk-header-cell]\" }, { type: CdkCellDef, selector: \"[cdkCellDef]\" }, { type: CdkCell, selector: \"cdk-cell, td[cdk-cell]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: CdkTextColumn, decorators: [{\n type: Component,\n args: [{\n selector: 'cdk-text-column',\n template: `\n <ng-container cdkColumnDef>\n <th cdk-header-cell *cdkHeaderCellDef [style.text-align]=\"justify\">\n {{headerText}}\n </th>\n <td cdk-cell *cdkCellDef=\"let data\" [style.text-align]=\"justify\">\n {{dataAccessor(data, name)}}\n </td>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n // Change detection is intentionally not set to OnPush. This component's template will be provided\n // to the table to be inserted into its view. This is problematic when change detection runs since\n // the bindings in this template will be evaluated _after_ the table's view is evaluated, which\n // mean's the template in the table's view will not have the updated value (and in fact will cause\n // an ExpressionChangedAfterItHasBeenCheckedError).\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n }]\n }], ctorParameters: function () {\n return [{ type: CdkTable, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TEXT_COLUMN_OPTIONS]\n }] }];\n }, propDecorators: { name: [{\n type: Input\n }], headerText: [{\n type: Input\n }], dataAccessor: [{\n type: Input\n }], justify: [{\n type: Input\n }], columnDef: [{\n type: ViewChild,\n args: [CdkColumnDef, { static: true }]\n }], cell: [{\n type: ViewChild,\n args: [CdkCellDef, { static: true }]\n }], headerCell: [{\n type: ViewChild,\n args: [CdkHeaderCellDef, { static: true }]\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 */\nconst EXPORTED_DECLARATIONS = [\n CdkTable,\n CdkRowDef,\n CdkCellDef,\n CdkCellOutlet,\n CdkHeaderCellDef,\n CdkFooterCellDef,\n CdkColumnDef,\n CdkCell,\n CdkRow,\n CdkHeaderCell,\n CdkFooterCell,\n CdkHeaderRow,\n CdkHeaderRowDef,\n CdkFooterRow,\n CdkFooterRowDef,\n DataRowOutlet,\n HeaderRowOutlet,\n FooterRowOutlet,\n CdkTextColumn,\n CdkNoDataRow,\n CdkRecycleRows,\n NoDataRowOutlet,\n];\nclass CdkTableModule {\n}\nCdkTableModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: CdkTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCdkTableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: CdkTableModule, declarations: [CdkTable,\n CdkRowDef,\n CdkCellDef,\n CdkCellOutlet,\n CdkHeaderCellDef,\n CdkFooterCellDef,\n CdkColumnDef,\n CdkCell,\n CdkRow,\n CdkHeaderCell,\n CdkFooterCell,\n CdkHeaderRow,\n CdkHeaderRowDef,\n CdkFooterRow,\n CdkFooterRowDef,\n DataRowOutlet,\n HeaderRowOutlet,\n FooterRowOutlet,\n CdkTextColumn,\n CdkNoDataRow,\n CdkRecycleRows,\n NoDataRowOutlet], imports: [ScrollingModule], exports: [CdkTable,\n CdkRowDef,\n CdkCellDef,\n CdkCellOutlet,\n CdkHeaderCellDef,\n CdkFooterCellDef,\n CdkColumnDef,\n CdkCell,\n CdkRow,\n CdkHeaderCell,\n CdkFooterCell,\n CdkHeaderRow,\n CdkHeaderRowDef,\n CdkFooterRow,\n CdkFooterRowDef,\n DataRowOutlet,\n HeaderRowOutlet,\n FooterRowOutlet,\n CdkTextColumn,\n CdkNoDataRow,\n CdkRecycleRows,\n NoDataRowOutlet] });\nCdkTableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: CdkTableModule, imports: [[ScrollingModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: CdkTableModule, decorators: [{\n type: NgModule,\n args: [{\n exports: EXPORTED_DECLARATIONS,\n declarations: EXPORTED_DECLARATIONS,\n imports: [ScrollingModule],\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 { BaseCdkCell, BaseRowDef, CDK_ROW_TEMPLATE, CDK_TABLE, CDK_TABLE_TEMPLATE, CdkCell, CdkCellDef, CdkCellOutlet, CdkColumnDef, CdkFooterCell, CdkFooterCellDef, CdkFooterRow, CdkFooterRowDef, CdkHeaderCell, CdkHeaderCellDef, CdkHeaderRow, CdkHeaderRowDef, CdkNoDataRow, CdkRecycleRows, CdkRow, CdkRowDef, CdkTable, CdkTableModule, CdkTextColumn, DataRowOutlet, FooterRowOutlet, HeaderRowOutlet, NoDataRowOutlet, STICKY_DIRECTIONS, STICKY_POSITIONING_LISTENER, StickyStyler, TEXT_COLUMN_OPTIONS, _COALESCED_STYLE_SCHEDULER, _CoalescedStyleScheduler, _Schedule, mixinHasStickyInput };\n","/**\n * @license Angular v13.2.5\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i0 from '@angular/core';\nimport { Directive, InjectionToken, forwardRef, Optional, Inject, ɵisPromise, ɵisObservable, Self, ɵRuntimeError, EventEmitter, Input, Host, SkipSelf, ChangeDetectorRef, Output, NgModule, Injectable, Version } from '@angular/core';\nimport { ɵgetDOM } from '@angular/common';\nimport { from, forkJoin } from 'rxjs';\nimport { 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 * Base class for all ControlValueAccessor classes defined in Forms package.\n * Contains common logic and utility functions.\n *\n * Note: this is an *internal-only* class and should not be extended or used directly in\n * applications code.\n */\nclass BaseControlValueAccessor {\n constructor(_renderer, _elementRef) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n /**\n * The registered callback function called when a change or input event occurs on the input\n * element.\n * @nodoc\n */\n this.onChange = (_) => { };\n /**\n * The registered callback function called when a blur event occurs on the input element.\n * @nodoc\n */\n this.onTouched = () => { };\n }\n /**\n * Helper method that sets a property on a target element using the current Renderer\n * implementation.\n * @nodoc\n */\n setProperty(key, value) {\n this._renderer.setProperty(this._elementRef.nativeElement, key, value);\n }\n /**\n * Registers a function called when the control is touched.\n * @nodoc\n */\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n /**\n * Registers a function called when the control value changes.\n * @nodoc\n */\n registerOnChange(fn) {\n this.onChange = fn;\n }\n /**\n * Sets the \"disabled\" property on the range input element.\n * @nodoc\n */\n setDisabledState(isDisabled) {\n this.setProperty('disabled', isDisabled);\n }\n}\nBaseControlValueAccessor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: BaseControlValueAccessor, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nBaseControlValueAccessor.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.5\", type: BaseControlValueAccessor, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: BaseControlValueAccessor, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; } });\n/**\n * Base class for all built-in ControlValueAccessor classes (except DefaultValueAccessor, which is\n * used in case no other CVAs can be found). We use this class to distinguish between default CVA,\n * built-in CVAs and custom CVAs, so that Forms logic can recognize built-in CVAs and treat custom\n * ones with higher priority (when both built-in and custom CVAs are present).\n *\n * Note: this is an *internal-only* class and should not be extended or used directly in\n * applications code.\n */\nclass BuiltInControlValueAccessor extends BaseControlValueAccessor {\n}\nBuiltInControlValueAccessor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: BuiltInControlValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nBuiltInControlValueAccessor.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.5\", type: BuiltInControlValueAccessor, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: BuiltInControlValueAccessor, decorators: [{\n type: Directive\n }] });\n/**\n * Used to provide a `ControlValueAccessor` for form controls.\n *\n * See `DefaultValueAccessor` for how to implement one.\n *\n * @publicApi\n */\nconst NG_VALUE_ACCESSOR = new InjectionToken('NgValueAccessor');\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 CHECKBOX_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxControlValueAccessor),\n multi: true,\n};\n/**\n * @description\n * A `ControlValueAccessor` for writing a value and listening to changes on a checkbox input\n * element.\n *\n * @usageNotes\n *\n * ### Using a checkbox with a reactive form.\n *\n * The following example shows how to use a checkbox with a reactive form.\n *\n * ```ts\n * const rememberLoginControl = new FormControl();\n * ```\n *\n * ```\n * <input type=\"checkbox\" [formControl]=\"rememberLoginControl\">\n * ```\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nclass CheckboxControlValueAccessor extends BuiltInControlValueAccessor {\n /**\n * Sets the \"checked\" property on the input element.\n * @nodoc\n */\n writeValue(value) {\n this.setProperty('checked', value);\n }\n}\nCheckboxControlValueAccessor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: CheckboxControlValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nCheckboxControlValueAccessor.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.5\", type: CheckboxControlValueAccessor, selector: \"input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]\", host: { listeners: { \"change\": \"onChange($event.target.checked)\", \"blur\": \"onTouched()\" } }, providers: [CHECKBOX_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: CheckboxControlValueAccessor, decorators: [{\n type: Directive,\n args: [{\n selector: 'input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]',\n host: { '(change)': 'onChange($event.target.checked)', '(blur)': 'onTouched()' },\n providers: [CHECKBOX_VALUE_ACCESSOR]\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 */\nconst DEFAULT_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DefaultValueAccessor),\n multi: true\n};\n/**\n * We must check whether the agent is Android because composition events\n * behave differently between iOS and Android.\n */\nfunction _isAndroid() {\n const userAgent = ɵgetDOM() ? ɵgetDOM().getUserAgent() : '';\n return /android (\\d+)/.test(userAgent.toLowerCase());\n}\n/**\n * @description\n * Provide this token to control if form directives buffer IME input until\n * the \"compositionend\" event occurs.\n * @publicApi\n */\nconst COMPOSITION_BUFFER_MODE = new InjectionToken('CompositionEventMode');\n/**\n * The default `ControlValueAccessor` for writing a value and listening to changes on input\n * elements. The accessor is used by the `FormControlDirective`, `FormControlName`, and\n * `NgModel` directives.\n *\n * {@searchKeywords ngDefaultControl}\n *\n * @usageNotes\n *\n * ### Using the default value accessor\n *\n * The following example shows how to use an input element that activates the default value accessor\n * (in this case, a text field).\n *\n * ```ts\n * const firstNameControl = new FormControl();\n * ```\n *\n * ```\n * <input type=\"text\" [formControl]=\"firstNameControl\">\n * ```\n *\n * This value accessor is used by default for `<input type=\"text\">` and `<textarea>` elements, but\n * you could also use it for custom components that have similar behavior and do not require special\n * processing. In order to attach the default value accessor to a custom element, add the\n * `ngDefaultControl` attribute as shown below.\n *\n * ```\n * <custom-input-component ngDefaultControl [(ngModel)]=\"value\"></custom-input-component>\n * ```\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nclass DefaultValueAccessor extends BaseControlValueAccessor {\n constructor(renderer, elementRef, _compositionMode) {\n super(renderer, elementRef);\n this._compositionMode = _compositionMode;\n /** Whether the user is creating a composition string (IME events). */\n this._composing = false;\n if (this._compositionMode == null) {\n this._compositionMode = !_isAndroid();\n }\n }\n /**\n * Sets the \"value\" property on the input element.\n * @nodoc\n */\n writeValue(value) {\n const normalizedValue = value == null ? '' : value;\n this.setProperty('value', normalizedValue);\n }\n /** @internal */\n _handleInput(value) {\n if (!this._compositionMode || (this._compositionMode && !this._composing)) {\n this.onChange(value);\n }\n }\n /** @internal */\n _compositionStart() {\n this._composing = true;\n }\n /** @internal */\n _compositionEnd(value) {\n this._composing = false;\n this._compositionMode && this.onChange(value);\n }\n}\nDefaultValueAccessor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: DefaultValueAccessor, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: COMPOSITION_BUFFER_MODE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nDefaultValueAccessor.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.5\", type: DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\", host: { listeners: { \"input\": \"$any(this)._handleInput($event.target.value)\", \"blur\": \"onTouched()\", \"compositionstart\": \"$any(this)._compositionStart()\", \"compositionend\": \"$any(this)._compositionEnd($event.target.value)\" } }, providers: [DEFAULT_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: DefaultValueAccessor, decorators: [{\n type: Directive,\n args: [{\n selector: 'input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]',\n // TODO: vsavkin replace the above selector with the one below it once\n // https://github.com/angular/angular/issues/3011 is implemented\n // selector: '[ngModel],[formControl],[formControlName]',\n host: {\n '(input)': '$any(this)._handleInput($event.target.value)',\n '(blur)': 'onTouched()',\n '(compositionstart)': '$any(this)._compositionStart()',\n '(compositionend)': '$any(this)._compositionEnd($event.target.value)'\n },\n providers: [DEFAULT_VALUE_ACCESSOR]\n }]\n }], ctorParameters: function () {\n return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [COMPOSITION_BUFFER_MODE]\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 */\nfunction isEmptyInputValue(value) {\n // we don't check for string here so it also works with arrays\n return value == null || value.length === 0;\n}\nfunction hasValidLength(value) {\n // non-strict comparison is intentional, to check for both `null` and `undefined` values\n return value != null && typeof value.length === 'number';\n}\n/**\n * @description\n * An `InjectionToken` for registering additional synchronous validators used with\n * `AbstractControl`s.\n *\n * @see `NG_ASYNC_VALIDATORS`\n *\n * @usageNotes\n *\n * ### Providing a custom validator\n *\n * The following example registers a custom validator directive. Adding the validator to the\n * existing collection of validators requires the `multi: true` option.\n *\n * ```typescript\n * @Directive({\n * selector: '[customValidator]',\n * providers: [{provide: NG_VALIDATORS, useExisting: CustomValidatorDirective, multi: true}]\n * })\n * class CustomValidatorDirective implements Validator {\n * validate(control: AbstractControl): ValidationErrors | null {\n * return { 'custom': true };\n * }\n * }\n * ```\n *\n * @publicApi\n */\nconst NG_VALIDATORS = new InjectionToken('NgValidators');\n/**\n * @description\n * An `InjectionToken` for registering additional asynchronous validators used with\n * `AbstractControl`s.\n *\n * @see `NG_VALIDATORS`\n *\n * @usageNotes\n *\n * ### Provide a custom async validator directive\n *\n * The following example implements the `AsyncValidator` interface to create an\n * async validator directive with a custom error key.\n *\n * ```typescript\n * @Directive({\n * selector: '[customAsyncValidator]',\n * providers: [{provide: NG_ASYNC_VALIDATORS, useExisting: CustomAsyncValidatorDirective, multi:\n * true}]\n * })\n * class CustomAsyncValidatorDirective implements AsyncValidator {\n * validate(control: AbstractControl): Promise<ValidationErrors|null> {\n * return Promise.resolve({'custom': true});\n * }\n * }\n * ```\n *\n * @publicApi\n */\nconst NG_ASYNC_VALIDATORS = new InjectionToken('NgAsyncValidators');\n/**\n * A regular expression that matches valid e-mail addresses.\n *\n * At a high level, this regexp matches e-mail addresses of the format `local-part@tld`, where:\n * - `local-part` consists of one or more of the allowed characters (alphanumeric and some\n * punctuation symbols).\n * - `local-part` cannot begin or end with a period (`.`).\n * - `local-part` cannot be longer than 64 characters.\n * - `tld` consists of one or more `labels` separated by periods (`.`). For example `localhost` or\n * `foo.com`.\n * - A `label` consists of one or more of the allowed characters (alphanumeric, dashes (`-`) and\n * periods (`.`)).\n * - A `label` cannot begin or end with a dash (`-`) or a period (`.`).\n * - A `label` cannot be longer than 63 characters.\n * - The whole address cannot be longer than 254 characters.\n *\n * ## Implementation background\n *\n * This regexp was ported over from AngularJS (see there for git history):\n * https://github.com/angular/angular.js/blob/c133ef836/src/ng/directive/input.js#L27\n * It is based on the\n * [WHATWG version](https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address) with\n * some enhancements to incorporate more RFC rules (such as rules related to domain names and the\n * lengths of different parts of the address). The main differences from the WHATWG version are:\n * - Disallow `local-part` to begin or end with a period (`.`).\n * - Disallow `local-part` length to exceed 64 characters.\n * - Disallow total address length to exceed 254 characters.\n *\n * See [this commit](https://github.com/angular/angular.js/commit/f3f5cf72e) for more details.\n */\nconst EMAIL_REGEXP = /^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n/**\n * @description\n * Provides a set of built-in validators that can be used by form controls.\n *\n * A validator is a function that processes a `FormControl` or collection of\n * controls and returns an error map or null. A null map means that validation has passed.\n *\n * @see [Form Validation](/guide/form-validation)\n *\n * @publicApi\n */\nclass Validators {\n /**\n * @description\n * Validator that requires the control's value to be greater than or equal to the provided number.\n *\n * @usageNotes\n *\n * ### Validate against a minimum of 3\n *\n * ```typescript\n * const control = new FormControl(2, Validators.min(3));\n *\n * console.log(control.errors); // {min: {min: 3, actual: 2}}\n * ```\n *\n * @returns A validator function that returns an error map with the\n * `min` property if the validation check fails, otherwise `null`.\n *\n * @see `updateValueAndValidity()`\n *\n */\n static min(min) {\n return minValidator(min);\n }\n /**\n * @description\n * Validator that requires the control's value to be less than or equal to the provided number.\n *\n * @usageNotes\n *\n * ### Validate against a maximum of 15\n *\n * ```typescript\n * const control = new FormControl(16, Validators.max(15));\n *\n * console.log(control.errors); // {max: {max: 15, actual: 16}}\n * ```\n *\n * @returns A validator function that returns an error map with the\n * `max` property if the validation check fails, otherwise `null`.\n *\n * @see `updateValueAndValidity()`\n *\n */\n static max(max) {\n return maxValidator(max);\n }\n /**\n * @description\n * Validator that requires the control have a non-empty value.\n *\n * @usageNotes\n *\n * ### Validate that the field is non-empty\n *\n * ```typescript\n * const control = new FormControl('', Validators.required);\n *\n * console.log(control.errors); // {required: true}\n * ```\n *\n * @returns An error map with the `required` property\n * if the validation check fails, otherwise `null`.\n *\n * @see `updateValueAndValidity()`\n *\n */\n static required(control) {\n return requiredValidator(control);\n }\n /**\n * @description\n * Validator that requires the control's value be true. This validator is commonly\n * used for required checkboxes.\n *\n * @usageNotes\n *\n * ### Validate that the field value is true\n *\n * ```typescript\n * const control = new FormControl('', Validators.requiredTrue);\n *\n * console.log(control.errors); // {required: true}\n * ```\n *\n * @returns An error map that contains the `required` property\n * set to `true` if the validation check fails, otherwise `null`.\n *\n * @see `updateValueAndValidity()`\n *\n */\n static requiredTrue(control) {\n return requiredTrueValidator(control);\n }\n /**\n * @description\n * Validator that requires the control's value pass an email validation test.\n *\n * Tests the value using a [regular\n * expression](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions)\n * pattern suitable for common usecases. The pattern is based on the definition of a valid email\n * address in the [WHATWG HTML\n * specification](https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address) with\n * some enhancements to incorporate more RFC rules (such as rules related to domain names and the\n * lengths of different parts of the address).\n *\n * The differences from the WHATWG version include:\n * - Disallow `local-part` (the part before the `@` symbol) to begin or end with a period (`.`).\n * - Disallow `local-part` to be longer than 64 characters.\n * - Disallow the whole address to be longer than 254 characters.\n *\n * If this pattern does not satisfy your business needs, you can use `Validators.pattern()` to\n * validate the value against a different pattern.\n *\n * @usageNotes\n *\n * ### Validate that the field matches a valid email pattern\n *\n * ```typescript\n * const control = new FormControl('bad@', Validators.email);\n *\n * console.log(control.errors); // {email: true}\n * ```\n *\n * @returns An error map with the `email` property\n * if the validation check fails, otherwise `null`.\n *\n * @see `updateValueAndValidity()`\n *\n */\n static email(control) {\n return emailValidator(control);\n }\n /**\n * @description\n * Validator that requires the length of the control's value to be greater than or equal\n * to the provided minimum length. This validator is also provided by default if you use the\n * the HTML5 `minlength` attribute. Note that the `minLength` validator is intended to be used\n * only for types that have a numeric `length` property, such as strings or arrays. The\n * `minLength` validator logic is also not invoked for values when their `length` property is 0\n * (for example in case of an empty string or an empty array), to support optional controls. You\n * can use the standard `required` validator if empty values should not be considered valid.\n *\n * @usageNotes\n *\n * ### Validate that the field has a minimum of 3 characters\n *\n * ```typescript\n * const control = new FormControl('ng', Validators.minLength(3));\n *\n * console.log(control.errors); // {minlength: {requiredLength: 3, actualLength: 2}}\n * ```\n *\n * ```html\n * <input minlength=\"5\">\n * ```\n *\n * @returns A validator function that returns an error map with the\n * `minlength` property if the validation check fails, otherwise `null`.\n *\n * @see `updateValueAndValidity()`\n *\n */\n static minLength(minLength) {\n return minLengthValidator(minLength);\n }\n /**\n * @description\n * Validator that requires the length of the control's value to be less than or equal\n * to the provided maximum length. This validator is also provided by default if you use the\n * the HTML5 `maxlength` attribute. Note that the `maxLength` validator is intended to be used\n * only for types that have a numeric `length` property, such as strings or arrays.\n *\n * @usageNotes\n *\n * ### Validate that the field has maximum of 5 characters\n *\n * ```typescript\n * const control = new FormControl('Angular', Validators.maxLength(5));\n *\n * console.log(control.errors); // {maxlength: {requiredLength: 5, actualLength: 7}}\n * ```\n *\n * ```html\n * <input maxlength=\"5\">\n * ```\n *\n * @returns A validator function that returns an error map with the\n * `maxlength` property if the validation check fails, otherwise `null`.\n *\n * @see `updateValueAndValidity()`\n *\n */\n static maxLength(maxLength) {\n return maxLengthValidator(maxLength);\n }\n /**\n * @description\n * Validator that requires the control's value to match a regex pattern. This validator is also\n * provided by default if you use the HTML5 `pattern` attribute.\n *\n * @usageNotes\n *\n * ### Validate that the field only contains letters or spaces\n *\n * ```typescript\n * const control = new FormControl('1', Validators.pattern('[a-zA-Z ]*'));\n *\n * console.log(control.errors); // {pattern: {requiredPattern: '^[a-zA-Z ]*$', actualValue: '1'}}\n * ```\n *\n * ```html\n * <input pattern=\"[a-zA-Z ]*\">\n * ```\n *\n * ### Pattern matching with the global or sticky flag\n *\n * `RegExp` objects created with the `g` or `y` flags that are passed into `Validators.pattern`\n * can produce different results on the same input when validations are run consecutively. This is\n * due to how the behavior of `RegExp.prototype.test` is\n * specified in [ECMA-262](https://tc39.es/ecma262/#sec-regexpbuiltinexec)\n * (`RegExp` preserves the index of the last match when the global or sticky flag is used).\n * Due to this behavior, it is recommended that when using\n * `Validators.pattern` you **do not** pass in a `RegExp` object with either the global or sticky\n * flag enabled.\n *\n * ```typescript\n * // Not recommended (since the `g` flag is used)\n * const controlOne = new FormControl('1', Validators.pattern(/foo/g));\n *\n * // Good\n * const controlTwo = new FormControl('1', Validators.pattern(/foo/));\n * ```\n *\n * @param pattern A regular expression to be used as is to test the values, or a string.\n * If a string is passed, the `^` character is prepended and the `$` character is\n * appended to the provided string (if not already present), and the resulting regular\n * expression is used to test the values.\n *\n * @returns A validator function that returns an error map with the\n * `pattern` property if the validation check fails, otherwise `null`.\n *\n * @see `updateValueAndValidity()`\n *\n */\n static pattern(pattern) {\n return patternValidator(pattern);\n }\n /**\n * @description\n * Validator that performs no operation.\n *\n * @see `updateValueAndValidity()`\n *\n */\n static nullValidator(control) {\n return nullValidator(control);\n }\n static compose(validators) {\n return compose(validators);\n }\n /**\n * @description\n * Compose multiple async validators into a single function that returns the union\n * of the individual error objects for the provided control.\n *\n * @returns A validator function that returns an error map with the\n * merged error objects of the async validators if the validation check fails, otherwise `null`.\n *\n * @see `updateValueAndValidity()`\n *\n */\n static composeAsync(validators) {\n return composeAsync(validators);\n }\n}\n/**\n * Validator that requires the control's value to be greater than or equal to the provided number.\n * See `Validators.min` for additional information.\n */\nfunction minValidator(min) {\n return (control) => {\n if (isEmptyInputValue(control.value) || isEmptyInputValue(min)) {\n return null; // don't validate empty values to allow optional controls\n }\n const value = parseFloat(control.value);\n // Controls with NaN values after parsing should be treated as not having a\n // minimum, per the HTML forms spec: https://www.w3.org/TR/html5/forms.html#attr-input-min\n return !isNaN(value) && value < min ? { 'min': { 'min': min, 'actual': control.value } } : null;\n };\n}\n/**\n * Validator that requires the control's value to be less than or equal to the provided number.\n * See `Validators.max` for additional information.\n */\nfunction maxValidator(max) {\n return (control) => {\n if (isEmptyInputValue(control.value) || isEmptyInputValue(max)) {\n return null; // don't validate empty values to allow optional controls\n }\n const value = parseFloat(control.value);\n // Controls with NaN values after parsing should be treated as not having a\n // maximum, per the HTML forms spec: https://www.w3.org/TR/html5/forms.html#attr-input-max\n return !isNaN(value) && value > max ? { 'max': { 'max': max, 'actual': control.value } } : null;\n };\n}\n/**\n * Validator that requires the control have a non-empty value.\n * See `Validators.required` for additional information.\n */\nfunction requiredValidator(control) {\n return isEmptyInputValue(control.value) ? { 'required': true } : null;\n}\n/**\n * Validator that requires the control's value be true. This validator is commonly\n * used for required checkboxes.\n * See `Validators.requiredTrue` for additional information.\n */\nfunction requiredTrueValidator(control) {\n return control.value === true ? null : { 'required': true };\n}\n/**\n * Validator that requires the control's value pass an email validation test.\n * See `Validators.email` for additional information.\n */\nfunction emailValidator(control) {\n if (isEmptyInputValue(control.value)) {\n return null; // don't validate empty values to allow optional controls\n }\n return EMAIL_REGEXP.test(control.value) ? null : { 'email': true };\n}\n/**\n * Validator that requires the length of the control's value to be greater than or equal\n * to the provided minimum length. See `Validators.minLength` for additional information.\n */\nfunction minLengthValidator(minLength) {\n return (control) => {\n if (isEmptyInputValue(control.value) || !hasValidLength(control.value)) {\n // don't validate empty values to allow optional controls\n // don't validate values without `length` property\n return null;\n }\n return control.value.length < minLength ?\n { 'minlength': { 'requiredLength': minLength, 'actualLength': control.value.length } } :\n null;\n };\n}\n/**\n * Validator that requires the length of the control's value to be less than or equal\n * to the provided maximum length. See `Validators.maxLength` for additional information.\n */\nfunction maxLengthValidator(maxLength) {\n return (control) => {\n return hasValidLength(control.value) && control.value.length > maxLength ?\n { 'maxlength': { 'requiredLength': maxLength, 'actualLength': control.value.length } } :\n null;\n };\n}\n/**\n * Validator that requires the control's value to match a regex pattern.\n * See `Validators.pattern` for additional information.\n */\nfunction patternValidator(pattern) {\n if (!pattern)\n return nullValidator;\n let regex;\n let regexStr;\n if (typeof pattern === 'string') {\n regexStr = '';\n if (pattern.charAt(0) !== '^')\n regexStr += '^';\n regexStr += pattern;\n if (pattern.charAt(pattern.length - 1) !== '$')\n regexStr += '$';\n regex = new RegExp(regexStr);\n }\n else {\n regexStr = pattern.toString();\n regex = pattern;\n }\n return (control) => {\n if (isEmptyInputValue(control.value)) {\n return null; // don't validate empty values to allow optional controls\n }\n const value = control.value;\n return regex.test(value) ? null :\n { 'pattern': { 'requiredPattern': regexStr, 'actualValue': value } };\n };\n}\n/**\n * Function that has `ValidatorFn` shape, but performs no operation.\n */\nfunction nullValidator(control) {\n return null;\n}\nfunction isPresent(o) {\n return o != null;\n}\nfunction toObservable(r) {\n const obs = ɵisPromise(r) ? from(r) : r;\n if (!(ɵisObservable(obs)) && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw new Error(`Expected validator to return Promise or Observable.`);\n }\n return obs;\n}\nfunction mergeErrors(arrayOfErrors) {\n let res = {};\n // Not using Array.reduce here due to a Chrome 80 bug\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\n arrayOfErrors.forEach((errors) => {\n res = errors != null ? Object.assign(Object.assign({}, res), errors) : res;\n });\n return Object.keys(res).length === 0 ? null : res;\n}\nfunction executeValidators(control, validators) {\n return validators.map(validator => validator(control));\n}\nfunction isValidatorFn(validator) {\n return !validator.validate;\n}\n/**\n * Given the list of validators that may contain both functions as well as classes, return the list\n * of validator functions (convert validator classes into validator functions). This is needed to\n * have consistent structure in validators list before composing them.\n *\n * @param validators The set of validators that may contain validators both in plain function form\n * as well as represented as a validator class.\n */\nfunction normalizeValidators(validators) {\n return validators.map(validator => {\n return isValidatorFn(validator) ?\n validator :\n ((c) => validator.validate(c));\n });\n}\n/**\n * Merges synchronous validators into a single validator function.\n * See `Validators.compose` for additional information.\n */\nfunction compose(validators) {\n if (!validators)\n return null;\n const presentValidators = validators.filter(isPresent);\n if (presentValidators.length == 0)\n return null;\n return function (control) {\n return mergeErrors(executeValidators(control, presentValidators));\n };\n}\n/**\n * Accepts a list of validators of different possible shapes (`Validator` and `ValidatorFn`),\n * normalizes the list (converts everything to `ValidatorFn`) and merges them into a single\n * validator function.\n */\nfunction composeValidators(validators) {\n return validators != null ? compose(normalizeValidators(validators)) : null;\n}\n/**\n * Merges asynchronous validators into a single validator function.\n * See `Validators.composeAsync` for additional information.\n */\nfunction composeAsync(validators) {\n if (!validators)\n return null;\n const presentValidators = validators.filter(isPresent);\n if (presentValidators.length == 0)\n return null;\n return function (control) {\n const observables = executeValidators(control, presentValidators).map(toObservable);\n return forkJoin(observables).pipe(map(mergeErrors));\n };\n}\n/**\n * Accepts a list of async validators of different possible shapes (`AsyncValidator` and\n * `AsyncValidatorFn`), normalizes the list (converts everything to `AsyncValidatorFn`) and merges\n * them into a single validator function.\n */\nfunction composeAsyncValidators(validators) {\n return validators != null ? composeAsync(normalizeValidators(validators)) :\n null;\n}\n/**\n * Merges raw control validators with a given directive validator and returns the combined list of\n * validators as an array.\n */\nfunction mergeValidators(controlValidators, dirValidator) {\n if (controlValidators === null)\n return [dirValidator];\n return Array.isArray(controlValidators) ? [...controlValidators, dirValidator] :\n [controlValidators, dirValidator];\n}\n/**\n * Retrieves the list of raw synchronous validators attached to a given control.\n */\nfunction getControlValidators(control) {\n return control._rawValidators;\n}\n/**\n * Retrieves the list of raw asynchronous validators attached to a given control.\n */\nfunction getControlAsyncValidators(control) {\n return control._rawAsyncValidators;\n}\n/**\n * Accepts a singleton validator, an array, or null, and returns an array type with the provided\n * validators.\n *\n * @param validators A validator, validators, or null.\n * @returns A validators array.\n */\nfunction makeValidatorsArray(validators) {\n if (!validators)\n return [];\n return Array.isArray(validators) ? validators : [validators];\n}\n/**\n * Determines whether a validator or validators array has a given validator.\n *\n * @param validators The validator or validators to compare against.\n * @param validator The validator to check.\n * @returns Whether the validator is present.\n */\nfunction hasValidator(validators, validator) {\n return Array.isArray(validators) ? validators.includes(validator) : validators === validator;\n}\n/**\n * Combines two arrays of validators into one. If duplicates are provided, only one will be added.\n *\n * @param validators The new validators.\n * @param currentValidators The base array of currrent validators.\n * @returns An array of validators.\n */\nfunction addValidators(validators, currentValidators) {\n const current = makeValidatorsArray(currentValidators);\n const validatorsToAdd = makeValidatorsArray(validators);\n validatorsToAdd.forEach((v) => {\n // Note: if there are duplicate entries in the new validators array,\n // only the first one would be added to the current list of validarors.\n // Duplicate ones would be ignored since `hasValidator` would detect\n // the presence of a validator function and we update the current list in place.\n if (!hasValidator(current, v)) {\n current.push(v);\n }\n });\n return current;\n}\nfunction removeValidators(validators, currentValidators) {\n return makeValidatorsArray(currentValidators).filter(v => !hasValidator(validators, v));\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 * @description\n * Base class for control directives.\n *\n * This class is only used internally in the `ReactiveFormsModule` and the `FormsModule`.\n *\n * @publicApi\n */\nclass AbstractControlDirective {\n constructor() {\n /**\n * Set of synchronous validators as they were provided while calling `setValidators` function.\n * @internal\n */\n this._rawValidators = [];\n /**\n * Set of asynchronous validators as they were provided while calling `setAsyncValidators`\n * function.\n * @internal\n */\n this._rawAsyncValidators = [];\n /*\n * The set of callbacks to be invoked when directive instance is being destroyed.\n */\n this._onDestroyCallbacks = [];\n }\n /**\n * @description\n * Reports the value of the control if it is present, otherwise null.\n */\n get value() {\n return this.control ? this.control.value : null;\n }\n /**\n * @description\n * Reports whether the control is valid. A control is considered valid if no\n * validation errors exist with the current value.\n * If the control is not present, null is returned.\n */\n get valid() {\n return this.control ? this.control.valid : null;\n }\n /**\n * @description\n * Reports whether the control is invalid, meaning that an error exists in the input value.\n * If the control is not present, null is returned.\n */\n get invalid() {\n return this.control ? this.control.invalid : null;\n }\n /**\n * @description\n * Reports whether a control is pending, meaning that that async validation is occurring and\n * errors are not yet available for the input value. If the control is not present, null is\n * returned.\n */\n get pending() {\n return this.control ? this.control.pending : null;\n }\n /**\n * @description\n * Reports whether the control is disabled, meaning that the control is disabled\n * in the UI and is exempt from validation checks and excluded from aggregate\n * values of ancestor controls. If the control is not present, null is returned.\n */\n get disabled() {\n return this.control ? this.control.disabled : null;\n }\n /**\n * @description\n * Reports whether the control is enabled, meaning that the control is included in ancestor\n * calculations of validity or value. If the control is not present, null is returned.\n */\n get enabled() {\n return this.control ? this.control.enabled : null;\n }\n /**\n * @description\n * Reports the control's validation errors. If the control is not present, null is returned.\n */\n get errors() {\n return this.control ? this.control.errors : null;\n }\n /**\n * @description\n * Reports whether the control is pristine, meaning that the user has not yet changed\n * the value in the UI. If the control is not present, null is returned.\n */\n get pristine() {\n return this.control ? this.control.pristine : null;\n }\n /**\n * @description\n * Reports whether the control is dirty, meaning that the user has changed\n * the value in the UI. If the control is not present, null is returned.\n */\n get dirty() {\n return this.control ? this.control.dirty : null;\n }\n /**\n * @description\n * Reports whether the control is touched, meaning that the user has triggered\n * a `blur` event on it. If the control is not present, null is returned.\n */\n get touched() {\n return this.control ? this.control.touched : null;\n }\n /**\n * @description\n * Reports the validation status of the control. Possible values include:\n * 'VALID', 'INVALID', 'DISABLED', and 'PENDING'.\n * If the control is not present, null is returned.\n */\n get status() {\n return this.control ? this.control.status : null;\n }\n /**\n * @description\n * Reports whether the control is untouched, meaning that the user has not yet triggered\n * a `blur` event on it. If the control is not present, null is returned.\n */\n get untouched() {\n return this.control ? this.control.untouched : null;\n }\n /**\n * @description\n * Returns a multicasting observable that emits a validation status whenever it is\n * calculated for the control. If the control is not present, null is returned.\n */\n get statusChanges() {\n return this.control ? this.control.statusChanges : null;\n }\n /**\n * @description\n * Returns a multicasting observable of value changes for the control that emits every time the\n * value of the control changes in the UI or programmatically.\n * If the control is not present, null is returned.\n */\n get valueChanges() {\n return this.control ? this.control.valueChanges : null;\n }\n /**\n * @description\n * Returns an array that represents the path from the top-level form to this control.\n * Each index is the string name of the control on that level.\n */\n get path() {\n return null;\n }\n /**\n * Sets synchronous validators for this directive.\n * @internal\n */\n _setValidators(validators) {\n this._rawValidators = validators || [];\n this._composedValidatorFn = composeValidators(this._rawValidators);\n }\n /**\n * Sets asynchronous validators for this directive.\n * @internal\n */\n _setAsyncValidators(validators) {\n this._rawAsyncValidators = validators || [];\n this._composedAsyncValidatorFn = composeAsyncValidators(this._rawAsyncValidators);\n }\n /**\n * @description\n * Synchronous validator function composed of all the synchronous validators registered with this\n * directive.\n */\n get validator() {\n return this._composedValidatorFn || null;\n }\n /**\n * @description\n * Asynchronous validator function composed of all the asynchronous validators registered with\n * this directive.\n */\n get asyncValidator() {\n return this._composedAsyncValidatorFn || null;\n }\n /**\n * Internal function to register callbacks that should be invoked\n * when directive instance is being destroyed.\n * @internal\n */\n _registerOnDestroy(fn) {\n this._onDestroyCallbacks.push(fn);\n }\n /**\n * Internal function to invoke all registered \"on destroy\" callbacks.\n * Note: calling this function also clears the list of callbacks.\n * @internal\n */\n _invokeOnDestroyCallbacks() {\n this._onDestroyCallbacks.forEach(fn => fn());\n this._onDestroyCallbacks = [];\n }\n /**\n * @description\n * Resets the control with the provided value if the control is present.\n */\n reset(value = undefined) {\n if (this.control)\n this.control.reset(value);\n }\n /**\n * @description\n * Reports whether the control with the given path has the error specified.\n *\n * @param errorCode The code of the error to check\n * @param path A list of control names that designates how to move from the current control\n * to the control that should be queried for errors.\n *\n * @usageNotes\n * For example, for the following `FormGroup`:\n *\n * ```\n * form = new FormGroup({\n * address: new FormGroup({ street: new FormControl() })\n * });\n * ```\n *\n * The path to the 'street' control from the root form would be 'address' -> 'street'.\n *\n * It can be provided to this method in one of two formats:\n *\n * 1. An array of string control names, e.g. `['address', 'street']`\n * 1. A period-delimited list of control names in one string, e.g. `'address.street'`\n *\n * If no path is given, this method checks for the error on the current control.\n *\n * @returns whether the given error is present in the control at the given path.\n *\n * If the control is not present, false is returned.\n */\n hasError(errorCode, path) {\n return this.control ? this.control.hasError(errorCode, path) : false;\n }\n /**\n * @description\n * Reports error data for the control with the given path.\n *\n * @param errorCode The code of the error to check\n * @param path A list of control names that designates how to move from the current control\n * to the control that should be queried for errors.\n *\n * @usageNotes\n * For example, for the following `FormGroup`:\n *\n * ```\n * form = new FormGroup({\n * address: new FormGroup({ street: new FormControl() })\n * });\n * ```\n *\n * The path to the 'street' control from the root form would be 'address' -> 'street'.\n *\n * It can be provided to this method in one of two formats:\n *\n * 1. An array of string control names, e.g. `['address', 'street']`\n * 1. A period-delimited list of control names in one string, e.g. `'address.street'`\n *\n * @returns error data for that particular error. If the control or error is not present,\n * null is returned.\n */\n getError(errorCode, path) {\n return this.control ? this.control.getError(errorCode, path) : 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 * @description\n * A base class that all `FormControl`-based directives extend. It binds a `FormControl`\n * object to a DOM element.\n *\n * @publicApi\n */\nclass NgControl extends AbstractControlDirective {\n constructor() {\n super(...arguments);\n /**\n * @description\n * The parent form for the control.\n *\n * @internal\n */\n this._parent = null;\n /**\n * @description\n * The name for the control\n */\n this.name = null;\n /**\n * @description\n * The value accessor for the control\n */\n this.valueAccessor = 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 * @description\n * A base class for directives that contain multiple registered instances of `NgControl`.\n * Only used by the forms module.\n *\n * @publicApi\n */\nclass ControlContainer extends AbstractControlDirective {\n /**\n * @description\n * The top-level form directive for the control.\n */\n get formDirective() {\n return null;\n }\n /**\n * @description\n * The path to this group.\n */\n get path() {\n return 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 */\nclass AbstractControlStatus {\n constructor(cd) {\n this._cd = cd;\n }\n is(status) {\n var _a, _b, _c;\n // Currently with ViewEngine (in AOT mode) it's not possible to use private methods in host\n // bindings.\n // TODO: once ViewEngine is removed, this function should be refactored:\n // - make the `is` method `protected`, so it's not accessible publicly\n // - move the `submitted` status logic to the `NgControlStatusGroup` class\n // and make it `private` or `protected` too.\n if (status === 'submitted') {\n // We check for the `submitted` field from `NgForm` and `FormGroupDirective` classes, but\n // we avoid instanceof checks to prevent non-tree-shakable references to those types.\n return !!((_a = this._cd) === null || _a === void 0 ? void 0 : _a.submitted);\n }\n return !!((_c = (_b = this._cd) === null || _b === void 0 ? void 0 : _b.control) === null || _c === void 0 ? void 0 : _c[status]);\n }\n}\nconst ngControlStatusHost = {\n '[class.ng-untouched]': 'is(\"untouched\")',\n '[class.ng-touched]': 'is(\"touched\")',\n '[class.ng-pristine]': 'is(\"pristine\")',\n '[class.ng-dirty]': 'is(\"dirty\")',\n '[class.ng-valid]': 'is(\"valid\")',\n '[class.ng-invalid]': 'is(\"invalid\")',\n '[class.ng-pending]': 'is(\"pending\")',\n};\nconst ngGroupStatusHost = {\n '[class.ng-untouched]': 'is(\"untouched\")',\n '[class.ng-touched]': 'is(\"touched\")',\n '[class.ng-pristine]': 'is(\"pristine\")',\n '[class.ng-dirty]': 'is(\"dirty\")',\n '[class.ng-valid]': 'is(\"valid\")',\n '[class.ng-invalid]': 'is(\"invalid\")',\n '[class.ng-pending]': 'is(\"pending\")',\n '[class.ng-submitted]': 'is(\"submitted\")',\n};\n/**\n * @description\n * Directive automatically applied to Angular form controls that sets CSS classes\n * based on control status.\n *\n * @usageNotes\n *\n * ### CSS classes applied\n *\n * The following classes are applied as the properties become true:\n *\n * * ng-valid\n * * ng-invalid\n * * ng-pending\n * * ng-pristine\n * * ng-dirty\n * * ng-untouched\n * * ng-touched\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nclass NgControlStatus extends AbstractControlStatus {\n constructor(cd) {\n super(cd);\n }\n}\nNgControlStatus.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: NgControlStatus, deps: [{ token: NgControl, self: true }], target: i0.ɵɵFactoryTarget.Directive });\nNgControlStatus.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.5\", type: NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\", host: { properties: { \"class.ng-untouched\": \"is(\\\"untouched\\\")\", \"class.ng-touched\": \"is(\\\"touched\\\")\", \"class.ng-pristine\": \"is(\\\"pristine\\\")\", \"class.ng-dirty\": \"is(\\\"dirty\\\")\", \"class.ng-valid\": \"is(\\\"valid\\\")\", \"class.ng-invalid\": \"is(\\\"invalid\\\")\", \"class.ng-pending\": \"is(\\\"pending\\\")\" } }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: NgControlStatus, decorators: [{\n type: Directive,\n args: [{ selector: '[formControlName],[ngModel],[formControl]', host: ngControlStatusHost }]\n }], ctorParameters: function () {\n return [{ type: NgControl, decorators: [{\n type: Self\n }] }];\n } });\n/**\n * @description\n * Directive automatically applied to Angular form groups that sets CSS classes\n * based on control status (valid/invalid/dirty/etc). On groups, this includes the additional\n * class ng-submitted.\n *\n * @see `NgControlStatus`\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nclass NgControlStatusGroup extends AbstractControlStatus {\n constructor(cd) {\n super(cd);\n }\n}\nNgControlStatusGroup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: NgControlStatusGroup, deps: [{ token: ControlContainer, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive });\nNgControlStatusGroup.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.5\", type: NgControlStatusGroup, selector: \"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]\", host: { properties: { \"class.ng-untouched\": \"is(\\\"untouched\\\")\", \"class.ng-touched\": \"is(\\\"touched\\\")\", \"class.ng-pristine\": \"is(\\\"pristine\\\")\", \"class.ng-dirty\": \"is(\\\"dirty\\\")\", \"class.ng-valid\": \"is(\\\"valid\\\")\", \"class.ng-invalid\": \"is(\\\"invalid\\\")\", \"class.ng-pending\": \"is(\\\"pending\\\")\", \"class.ng-submitted\": \"is(\\\"submitted\\\")\" } }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: NgControlStatusGroup, decorators: [{\n type: Directive,\n args: [{\n selector: '[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]',\n host: ngGroupStatusHost\n }]\n }], ctorParameters: function () {\n return [{ type: ControlContainer, decorators: [{\n type: Optional\n }, {\n type: Self\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 */\nconst formControlNameExample = `\n <div [formGroup]=\"myGroup\">\n <input formControlName=\"firstName\">\n </div>\n\n In your class:\n\n this.myGroup = new FormGroup({\n firstName: new FormControl()\n });`;\nconst formGroupNameExample = `\n <div [formGroup]=\"myGroup\">\n <div formGroupName=\"person\">\n <input formControlName=\"firstName\">\n </div>\n </div>\n\n In your class:\n\n this.myGroup = new FormGroup({\n person: new FormGroup({ firstName: new FormControl() })\n });`;\nconst formArrayNameExample = `\n <div [formGroup]=\"myGroup\">\n <div formArrayName=\"cities\">\n <div *ngFor=\"let city of cityArray.controls; index as i\">\n <input [formControlName]=\"i\">\n </div>\n </div>\n </div>\n\n In your class:\n\n this.cityArray = new FormArray([new FormControl('SF')]);\n this.myGroup = new FormGroup({\n cities: this.cityArray\n });`;\nconst ngModelGroupExample = `\n <form>\n <div ngModelGroup=\"person\">\n <input [(ngModel)]=\"person.name\" name=\"firstName\">\n </div>\n </form>`;\nconst ngModelWithFormGroupExample = `\n <div [formGroup]=\"myGroup\">\n <input formControlName=\"firstName\">\n <input [(ngModel)]=\"showMoreControls\" [ngModelOptions]=\"{standalone: true}\">\n </div>\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 */\nfunction controlParentException() {\n return new Error(`formControlName must be used with a parent formGroup directive. You'll want to add a formGroup\n directive and pass it an existing FormGroup instance (you can create one in your class).\n\n Example:\n\n ${formControlNameExample}`);\n}\nfunction ngModelGroupException() {\n return new Error(`formControlName cannot be used with an ngModelGroup parent. It is only compatible with parents\n that also have a \"form\" prefix: formGroupName, formArrayName, or formGroup.\n\n Option 1: Update the parent to be formGroupName (reactive form strategy)\n\n ${formGroupNameExample}\n\n Option 2: Use ngModel instead of formControlName (template-driven strategy)\n\n ${ngModelGroupExample}`);\n}\nfunction missingFormException() {\n return new Error(`formGroup expects a FormGroup instance. Please pass one in.\n\n Example:\n\n ${formControlNameExample}`);\n}\nfunction groupParentException() {\n return new Error(`formGroupName must be used with a parent formGroup directive. You'll want to add a formGroup\n directive and pass it an existing FormGroup instance (you can create one in your class).\n\n Example:\n\n ${formGroupNameExample}`);\n}\nfunction arrayParentException() {\n return new Error(`formArrayName must be used with a parent formGroup directive. You'll want to add a formGroup\n directive and pass it an existing FormGroup instance (you can create one in your class).\n\n Example:\n\n ${formArrayNameExample}`);\n}\nconst disabledAttrWarning = `\n It looks like you're using the disabled attribute with a reactive form directive. If you set disabled to true\n when you set up this control in your component class, the disabled attribute will actually be set in the DOM for\n you. We recommend using this approach to avoid 'changed after checked' errors.\n\n Example:\n form = new FormGroup({\n first: new FormControl({value: 'Nancy', disabled: true}, Validators.required),\n last: new FormControl('Drew', Validators.required)\n });\n`;\nfunction ngModelWarning(directiveName) {\n return `\n It looks like you're using ngModel on the same form field as ${directiveName}.\n Support for using the ngModel input property and ngModelChange event with\n reactive form directives has been deprecated in Angular v6 and will be removed\n in a future version of Angular.\n\n For more information on this, see our API docs here:\n https://angular.io/api/forms/${directiveName === 'formControl' ? 'FormControlDirective' : 'FormControlName'}#use-with-ngmodel\n `;\n}\nfunction describeKey(isFormGroup, key) {\n return isFormGroup ? `with name: '${key}'` : `at index: ${key}`;\n}\nfunction noControlsError(isFormGroup) {\n return `\n There are no form controls registered with this ${isFormGroup ? 'group' : 'array'} yet. If you're using ngModel,\n you may want to check next tick (e.g. use setTimeout).\n `;\n}\nfunction missingControlError(isFormGroup, key) {\n return `Cannot find form control ${describeKey(isFormGroup, key)}`;\n}\nfunction missingControlValueError(isFormGroup, key) {\n return `Must supply a value for form control ${describeKey(isFormGroup, key)}`;\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 */\nfunction controlPath(name, parent) {\n return [...parent.path, name];\n}\n/**\n * Links a Form control and a Form directive by setting up callbacks (such as `onChange`) on both\n * instances. This function is typically invoked when form directive is being initialized.\n *\n * @param control Form control instance that should be linked.\n * @param dir Directive that should be linked with a given control.\n */\nfunction setUpControl(control, dir) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!control)\n _throwError(dir, 'Cannot find control with');\n if (!dir.valueAccessor)\n _throwError(dir, 'No value accessor for form control with');\n }\n setUpValidators(control, dir);\n dir.valueAccessor.writeValue(control.value);\n setUpViewChangePipeline(control, dir);\n setUpModelChangePipeline(control, dir);\n setUpBlurPipeline(control, dir);\n setUpDisabledChangeHandler(control, dir);\n}\n/**\n * Reverts configuration performed by the `setUpControl` control function.\n * Effectively disconnects form control with a given form directive.\n * This function is typically invoked when corresponding form directive is being destroyed.\n *\n * @param control Form control which should be cleaned up.\n * @param dir Directive that should be disconnected from a given control.\n * @param validateControlPresenceOnChange Flag that indicates whether onChange handler should\n * contain asserts to verify that it's not called once directive is destroyed. We need this flag\n * to avoid potentially breaking changes caused by better control cleanup introduced in #39235.\n */\nfunction cleanUpControl(control, dir, validateControlPresenceOnChange = true) {\n const noop = () => {\n if (validateControlPresenceOnChange && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n _noControlError(dir);\n }\n };\n // The `valueAccessor` field is typically defined on FromControl and FormControlName directive\n // instances and there is a logic in `selectValueAccessor` function that throws if it's not the\n // case. We still check the presence of `valueAccessor` before invoking its methods to make sure\n // that cleanup works correctly if app code or tests are setup to ignore the error thrown from\n // `selectValueAccessor`. See https://github.com/angular/angular/issues/40521.\n if (dir.valueAccessor) {\n dir.valueAccessor.registerOnChange(noop);\n dir.valueAccessor.registerOnTouched(noop);\n }\n cleanUpValidators(control, dir);\n if (control) {\n dir._invokeOnDestroyCallbacks();\n control._registerOnCollectionChange(() => { });\n }\n}\nfunction registerOnValidatorChange(validators, onChange) {\n validators.forEach((validator) => {\n if (validator.registerOnValidatorChange)\n validator.registerOnValidatorChange(onChange);\n });\n}\n/**\n * Sets up disabled change handler function on a given form control if ControlValueAccessor\n * associated with a given directive instance supports the `setDisabledState` call.\n *\n * @param control Form control where disabled change handler should be setup.\n * @param dir Corresponding directive instance associated with this control.\n */\nfunction setUpDisabledChangeHandler(control, dir) {\n if (dir.valueAccessor.setDisabledState) {\n const onDisabledChange = (isDisabled) => {\n dir.valueAccessor.setDisabledState(isDisabled);\n };\n control.registerOnDisabledChange(onDisabledChange);\n // Register a callback function to cleanup disabled change handler\n // from a control instance when a directive is destroyed.\n dir._registerOnDestroy(() => {\n control._unregisterOnDisabledChange(onDisabledChange);\n });\n }\n}\n/**\n * Sets up sync and async directive validators on provided form control.\n * This function merges validators from the directive into the validators of the control.\n *\n * @param control Form control where directive validators should be setup.\n * @param dir Directive instance that contains validators to be setup.\n */\nfunction setUpValidators(control, dir) {\n const validators = getControlValidators(control);\n if (dir.validator !== null) {\n control.setValidators(mergeValidators(validators, dir.validator));\n }\n else if (typeof validators === 'function') {\n // If sync validators are represented by a single validator function, we force the\n // `Validators.compose` call to happen by executing the `setValidators` function with\n // an array that contains that function. We need this to avoid possible discrepancies in\n // validators behavior, so sync validators are always processed by the `Validators.compose`.\n // Note: we should consider moving this logic inside the `setValidators` function itself, so we\n // have consistent behavior on AbstractControl API level. The same applies to the async\n // validators logic below.\n control.setValidators([validators]);\n }\n const asyncValidators = getControlAsyncValidators(control);\n if (dir.asyncValidator !== null) {\n control.setAsyncValidators(mergeValidators(asyncValidators, dir.asyncValidator));\n }\n else if (typeof asyncValidators === 'function') {\n control.setAsyncValidators([asyncValidators]);\n }\n // Re-run validation when validator binding changes, e.g. minlength=3 -> minlength=4\n const onValidatorChange = () => control.updateValueAndValidity();\n registerOnValidatorChange(dir._rawValidators, onValidatorChange);\n registerOnValidatorChange(dir._rawAsyncValidators, onValidatorChange);\n}\n/**\n * Cleans up sync and async directive validators on provided form control.\n * This function reverts the setup performed by the `setUpValidators` function, i.e.\n * removes directive-specific validators from a given control instance.\n *\n * @param control Form control from where directive validators should be removed.\n * @param dir Directive instance that contains validators to be removed.\n * @returns true if a control was updated as a result of this action.\n */\nfunction cleanUpValidators(control, dir) {\n let isControlUpdated = false;\n if (control !== null) {\n if (dir.validator !== null) {\n const validators = getControlValidators(control);\n if (Array.isArray(validators) && validators.length > 0) {\n // Filter out directive validator function.\n const updatedValidators = validators.filter(validator => validator !== dir.validator);\n if (updatedValidators.length !== validators.length) {\n isControlUpdated = true;\n control.setValidators(updatedValidators);\n }\n }\n }\n if (dir.asyncValidator !== null) {\n const asyncValidators = getControlAsyncValidators(control);\n if (Array.isArray(asyncValidators) && asyncValidators.length > 0) {\n // Filter out directive async validator function.\n const updatedAsyncValidators = asyncValidators.filter(asyncValidator => asyncValidator !== dir.asyncValidator);\n if (updatedAsyncValidators.length !== asyncValidators.length) {\n isControlUpdated = true;\n control.setAsyncValidators(updatedAsyncValidators);\n }\n }\n }\n }\n // Clear onValidatorChange callbacks by providing a noop function.\n const noop = () => { };\n registerOnValidatorChange(dir._rawValidators, noop);\n registerOnValidatorChange(dir._rawAsyncValidators, noop);\n return isControlUpdated;\n}\nfunction setUpViewChangePipeline(control, dir) {\n dir.valueAccessor.registerOnChange((newValue) => {\n control._pendingValue = newValue;\n control._pendingChange = true;\n control._pendingDirty = true;\n if (control.updateOn === 'change')\n updateControl(control, dir);\n });\n}\nfunction setUpBlurPipeline(control, dir) {\n dir.valueAccessor.registerOnTouched(() => {\n control._pendingTouched = true;\n if (control.updateOn === 'blur' && control._pendingChange)\n updateControl(control, dir);\n if (control.updateOn !== 'submit')\n control.markAsTouched();\n });\n}\nfunction updateControl(control, dir) {\n if (control._pendingDirty)\n control.markAsDirty();\n control.setValue(control._pendingValue, { emitModelToViewChange: false });\n dir.viewToModelUpdate(control._pendingValue);\n control._pendingChange = false;\n}\nfunction setUpModelChangePipeline(control, dir) {\n const onChange = (newValue, emitModelEvent) => {\n // control -> view\n dir.valueAccessor.writeValue(newValue);\n // control -> ngModel\n if (emitModelEvent)\n dir.viewToModelUpdate(newValue);\n };\n control.registerOnChange(onChange);\n // Register a callback function to cleanup onChange handler\n // from a control instance when a directive is destroyed.\n dir._registerOnDestroy(() => {\n control._unregisterOnChange(onChange);\n });\n}\n/**\n * Links a FormGroup or FormArray instance and corresponding Form directive by setting up validators\n * present in the view.\n *\n * @param control FormGroup or FormArray instance that should be linked.\n * @param dir Directive that provides view validators.\n */\nfunction setUpFormContainer(control, dir) {\n if (control == null && (typeof ngDevMode === 'undefined' || ngDevMode))\n _throwError(dir, 'Cannot find control with');\n setUpValidators(control, dir);\n}\n/**\n * Reverts the setup performed by the `setUpFormContainer` function.\n *\n * @param control FormGroup or FormArray instance that should be cleaned up.\n * @param dir Directive that provided view validators.\n * @returns true if a control was updated as a result of this action.\n */\nfunction cleanUpFormContainer(control, dir) {\n return cleanUpValidators(control, dir);\n}\nfunction _noControlError(dir) {\n return _throwError(dir, 'There is no FormControl instance attached to form control element with');\n}\nfunction _throwError(dir, message) {\n let messageEnd;\n if (dir.path.length > 1) {\n messageEnd = `path: '${dir.path.join(' -> ')}'`;\n }\n else if (dir.path[0]) {\n messageEnd = `name: '${dir.path}'`;\n }\n else {\n messageEnd = 'unspecified name attribute';\n }\n throw new Error(`${message} ${messageEnd}`);\n}\nfunction isPropertyUpdated(changes, viewModel) {\n if (!changes.hasOwnProperty('model'))\n return false;\n const change = changes['model'];\n if (change.isFirstChange())\n return true;\n return !Object.is(viewModel, change.currentValue);\n}\nfunction isBuiltInAccessor(valueAccessor) {\n // Check if a given value accessor is an instance of a class that directly extends\n // `BuiltInControlValueAccessor` one.\n return Object.getPrototypeOf(valueAccessor.constructor) === BuiltInControlValueAccessor;\n}\nfunction syncPendingControls(form, directives) {\n form._syncPendingControls();\n directives.forEach((dir) => {\n const control = dir.control;\n if (control.updateOn === 'submit' && control._pendingChange) {\n dir.viewToModelUpdate(control._pendingValue);\n control._pendingChange = false;\n }\n });\n}\n// TODO: vsavkin remove it once https://github.com/angular/angular/issues/3011 is implemented\nfunction selectValueAccessor(dir, valueAccessors) {\n if (!valueAccessors)\n return null;\n if (!Array.isArray(valueAccessors) && (typeof ngDevMode === 'undefined' || ngDevMode))\n _throwError(dir, 'Value accessor was not provided as an array for form control with');\n let defaultAccessor = undefined;\n let builtinAccessor = undefined;\n let customAccessor = undefined;\n valueAccessors.forEach((v) => {\n if (v.constructor === DefaultValueAccessor) {\n defaultAccessor = v;\n }\n else if (isBuiltInAccessor(v)) {\n if (builtinAccessor && (typeof ngDevMode === 'undefined' || ngDevMode))\n _throwError(dir, 'More than one built-in value accessor matches form control with');\n builtinAccessor = v;\n }\n else {\n if (customAccessor && (typeof ngDevMode === 'undefined' || ngDevMode))\n _throwError(dir, 'More than one custom value accessor matches form control with');\n customAccessor = v;\n }\n });\n if (customAccessor)\n return customAccessor;\n if (builtinAccessor)\n return builtinAccessor;\n if (defaultAccessor)\n return defaultAccessor;\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n _throwError(dir, 'No valid value accessor for form control with');\n }\n return null;\n}\nfunction removeListItem(list, el) {\n const index = list.indexOf(el);\n if (index > -1)\n list.splice(index, 1);\n}\n// TODO(kara): remove after deprecation period\nfunction _ngModelWarning(name, type, instance, warningConfig) {\n if (warningConfig === 'never')\n return;\n if (((warningConfig === null || warningConfig === 'once') && !type._ngModelWarningSentOnce) ||\n (warningConfig === 'always' && !instance._ngModelWarningSent)) {\n console.warn(ngModelWarning(name));\n type._ngModelWarningSentOnce = true;\n instance._ngModelWarningSent = true;\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 */\nconst NG_DEV_MODE = typeof ngDevMode === 'undefined' || !!ngDevMode;\n/**\n * Reports that a FormControl is valid, meaning that no errors exist in the input value.\n *\n * @see `status`\n */\nconst VALID = 'VALID';\n/**\n * Reports that a FormControl is invalid, meaning that an error exists in the input value.\n *\n * @see `status`\n */\nconst INVALID = 'INVALID';\n/**\n * Reports that a FormControl is pending, meaning that that async validation is occurring and\n * errors are not yet available for the input value.\n *\n * @see `markAsPending`\n * @see `status`\n */\nconst PENDING = 'PENDING';\n/**\n * Reports that a FormControl is disabled, meaning that the control is exempt from ancestor\n * calculations of validity or value.\n *\n * @see `markAsDisabled`\n * @see `status`\n */\nconst DISABLED = 'DISABLED';\nfunction _find(control, path, delimiter) {\n if (path == null)\n return null;\n if (!Array.isArray(path)) {\n path = path.split(delimiter);\n }\n if (Array.isArray(path) && path.length === 0)\n return null;\n // Not using Array.reduce here due to a Chrome 80 bug\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\n let controlToFind = control;\n path.forEach((name) => {\n if (isFormGroup(controlToFind)) {\n controlToFind = controlToFind.controls.hasOwnProperty(name) ?\n controlToFind.controls[name] :\n null;\n }\n else if (isFormArray(controlToFind)) {\n controlToFind = controlToFind.at(name) || null;\n }\n else {\n controlToFind = null;\n }\n });\n return controlToFind;\n}\n/**\n * Gets validators from either an options object or given validators.\n */\nfunction pickValidators(validatorOrOpts) {\n return (isOptionsObj(validatorOrOpts) ? validatorOrOpts.validators : validatorOrOpts) || null;\n}\n/**\n * Creates validator function by combining provided validators.\n */\nfunction coerceToValidator(validator) {\n return Array.isArray(validator) ? composeValidators(validator) : validator || null;\n}\n/**\n * Gets async validators from either an options object or given validators.\n */\nfunction pickAsyncValidators(asyncValidator, validatorOrOpts) {\n return (isOptionsObj(validatorOrOpts) ? validatorOrOpts.asyncValidators : asyncValidator) || null;\n}\n/**\n * Creates async validator function by combining provided async validators.\n */\nfunction coerceToAsyncValidator(asyncValidator) {\n return Array.isArray(asyncValidator) ? composeAsyncValidators(asyncValidator) :\n asyncValidator || null;\n}\nfunction isOptionsObj(validatorOrOpts) {\n return validatorOrOpts != null && !Array.isArray(validatorOrOpts) &&\n typeof validatorOrOpts === 'object';\n}\nconst isFormControl = (control) => control instanceof FormControl;\nconst isFormGroup = (control) => control instanceof FormGroup;\nconst isFormArray = (control) => control instanceof FormArray;\nfunction getRawValue(control) {\n return isFormControl(control) ? control.value : control.getRawValue();\n}\nfunction assertControlPresent(parent, key) {\n const isGroup = isFormGroup(parent);\n const controls = parent.controls;\n const collection = isGroup ? Object.keys(controls) : controls;\n if (!collection.length) {\n throw new ɵRuntimeError(1000 /* NO_CONTROLS */, NG_DEV_MODE ? noControlsError(isGroup) : '');\n }\n if (!controls[key]) {\n throw new ɵRuntimeError(1001 /* MISSING_CONTROL */, NG_DEV_MODE ? missingControlError(isGroup, key) : '');\n }\n}\nfunction assertAllValuesPresent(control, value) {\n const isGroup = isFormGroup(control);\n control._forEachChild((_, key) => {\n if (value[key] === undefined) {\n throw new ɵRuntimeError(1002 /* MISSING_CONTROL_VALUE */, NG_DEV_MODE ? missingControlValueError(isGroup, key) : '');\n }\n });\n}\n/**\n * This is the base class for `FormControl`, `FormGroup`, and `FormArray`.\n *\n * It provides some of the shared behavior that all controls and groups of controls have, like\n * running validators, calculating status, and resetting state. It also defines the properties\n * that are shared between all sub-classes, like `value`, `valid`, and `dirty`. It shouldn't be\n * instantiated directly.\n *\n * @see [Forms Guide](/guide/forms)\n * @see [Reactive Forms Guide](/guide/reactive-forms)\n * @see [Dynamic Forms Guide](/guide/dynamic-form)\n *\n * @publicApi\n */\nclass AbstractControl {\n /**\n * Initialize the AbstractControl instance.\n *\n * @param validators The function or array of functions that is used to determine the validity of\n * this control synchronously.\n * @param asyncValidators The function or array of functions that is used to determine validity of\n * this control asynchronously.\n */\n constructor(validators, asyncValidators) {\n /** @internal */\n this._pendingDirty = false;\n /**\n * Indicates that a control has its own pending asynchronous validation in progress.\n *\n * @internal\n */\n this._hasOwnPendingAsyncValidator = false;\n /** @internal */\n this._pendingTouched = false;\n /** @internal */\n this._onCollectionChange = () => { };\n this._parent = null;\n /**\n * A control is `pristine` if the user has not yet changed\n * the value in the UI.\n *\n * @returns True if the user has not yet changed the value in the UI; compare `dirty`.\n * Programmatic changes to a control's value do not mark it dirty.\n */\n this.pristine = true;\n /**\n * True if the control is marked as `touched`.\n *\n * A control is marked `touched` once the user has triggered\n * a `blur` event on it.\n */\n this.touched = false;\n /** @internal */\n this._onDisabledChange = [];\n this._rawValidators = validators;\n this._rawAsyncValidators = asyncValidators;\n this._composedValidatorFn = coerceToValidator(this._rawValidators);\n this._composedAsyncValidatorFn = coerceToAsyncValidator(this._rawAsyncValidators);\n }\n /**\n * Returns the function that is used to determine the validity of this control synchronously.\n * If multiple validators have been added, this will be a single composed function.\n * See `Validators.compose()` for additional information.\n */\n get validator() {\n return this._composedValidatorFn;\n }\n set validator(validatorFn) {\n this._rawValidators = this._composedValidatorFn = validatorFn;\n }\n /**\n * Returns the function that is used to determine the validity of this control asynchronously.\n * If multiple validators have been added, this will be a single composed function.\n * See `Validators.compose()` for additional information.\n */\n get asyncValidator() {\n return this._composedAsyncValidatorFn;\n }\n set asyncValidator(asyncValidatorFn) {\n this._rawAsyncValidators = this._composedAsyncValidatorFn = asyncValidatorFn;\n }\n /**\n * The parent control.\n */\n get parent() {\n return this._parent;\n }\n /**\n * A control is `valid` when its `status` is `VALID`.\n *\n * @see {@link AbstractControl.status}\n *\n * @returns True if the control has passed all of its validation tests,\n * false otherwise.\n */\n get valid() {\n return this.status === VALID;\n }\n /**\n * A control is `invalid` when its `status` is `INVALID`.\n *\n * @see {@link AbstractControl.status}\n *\n * @returns True if this control has failed one or more of its validation checks,\n * false otherwise.\n */\n get invalid() {\n return this.status === INVALID;\n }\n /**\n * A control is `pending` when its `status` is `PENDING`.\n *\n * @see {@link AbstractControl.status}\n *\n * @returns True if this control is in the process of conducting a validation check,\n * false otherwise.\n */\n get pending() {\n return this.status == PENDING;\n }\n /**\n * A control is `disabled` when its `status` is `DISABLED`.\n *\n * Disabled controls are exempt from validation checks and\n * are not included in the aggregate value of their ancestor\n * controls.\n *\n * @see {@link AbstractControl.status}\n *\n * @returns True if the control is disabled, false otherwise.\n */\n get disabled() {\n return this.status === DISABLED;\n }\n /**\n * A control is `enabled` as long as its `status` is not `DISABLED`.\n *\n * @returns True if the control has any status other than 'DISABLED',\n * false if the status is 'DISABLED'.\n *\n * @see {@link AbstractControl.status}\n *\n */\n get enabled() {\n return this.status !== DISABLED;\n }\n /**\n * A control is `dirty` if the user has changed the value\n * in the UI.\n *\n * @returns True if the user has changed the value of this control in the UI; compare `pristine`.\n * Programmatic changes to a control's value do not mark it dirty.\n */\n get dirty() {\n return !this.pristine;\n }\n /**\n * True if the control has not been marked as touched\n *\n * A control is `untouched` if the user has not yet triggered\n * a `blur` event on it.\n */\n get untouched() {\n return !this.touched;\n }\n /**\n * Reports the update strategy of the `AbstractControl` (meaning\n * the event on which the control updates itself).\n * Possible values: `'change'` | `'blur'` | `'submit'`\n * Default value: `'change'`\n */\n get updateOn() {\n return this._updateOn ? this._updateOn : (this.parent ? this.parent.updateOn : 'change');\n }\n /**\n * Sets the synchronous validators that are active on this control. Calling\n * this overwrites any existing synchronous validators.\n *\n * When you add or remove a validator at run time, you must call\n * `updateValueAndValidity()` for the new validation to take effect.\n *\n * If you want to add a new validator without affecting existing ones, consider\n * using `addValidators()` method instead.\n */\n setValidators(validators) {\n this._rawValidators = validators;\n this._composedValidatorFn = coerceToValidator(validators);\n }\n /**\n * Sets the asynchronous validators that are active on this control. Calling this\n * overwrites any existing asynchronous validators.\n *\n * When you add or remove a validator at run time, you must call\n * `updateValueAndValidity()` for the new validation to take effect.\n *\n * If you want to add a new validator without affecting existing ones, consider\n * using `addAsyncValidators()` method instead.\n */\n setAsyncValidators(validators) {\n this._rawAsyncValidators = validators;\n this._composedAsyncValidatorFn = coerceToAsyncValidator(validators);\n }\n /**\n * Add a synchronous validator or validators to this control, without affecting other validators.\n *\n * When you add or remove a validator at run time, you must call\n * `updateValueAndValidity()` for the new validation to take effect.\n *\n * Adding a validator that already exists will have no effect. If duplicate validator functions\n * are present in the `validators` array, only the first instance would be added to a form\n * control.\n *\n * @param validators The new validator function or functions to add to this control.\n */\n addValidators(validators) {\n this.setValidators(addValidators(validators, this._rawValidators));\n }\n /**\n * Add an asynchronous validator or validators to this control, without affecting other\n * validators.\n *\n * When you add or remove a validator at run time, you must call\n * `updateValueAndValidity()` for the new validation to take effect.\n *\n * Adding a validator that already exists will have no effect.\n *\n * @param validators The new asynchronous validator function or functions to add to this control.\n */\n addAsyncValidators(validators) {\n this.setAsyncValidators(addValidators(validators, this._rawAsyncValidators));\n }\n /**\n * Remove a synchronous validator from this control, without affecting other validators.\n * Validators are compared by function reference; you must pass a reference to the exact same\n * validator function as the one that was originally set. If a provided validator is not found,\n * it is ignored.\n *\n * When you add or remove a validator at run time, you must call\n * `updateValueAndValidity()` for the new validation to take effect.\n *\n * @param validators The validator or validators to remove.\n */\n removeValidators(validators) {\n this.setValidators(removeValidators(validators, this._rawValidators));\n }\n /**\n * Remove an asynchronous validator from this control, without affecting other validators.\n * Validators are compared by function reference; you must pass a reference to the exact same\n * validator function as the one that was originally set. If a provided validator is not found, it\n * is ignored.\n *\n * When you add or remove a validator at run time, you must call\n * `updateValueAndValidity()` for the new validation to take effect.\n *\n * @param validators The asynchronous validator or validators to remove.\n */\n removeAsyncValidators(validators) {\n this.setAsyncValidators(removeValidators(validators, this._rawAsyncValidators));\n }\n /**\n * Check whether a synchronous validator function is present on this control. The provided\n * validator must be a reference to the exact same function that was provided.\n *\n * @param validator The validator to check for presence. Compared by function reference.\n * @returns Whether the provided validator was found on this control.\n */\n hasValidator(validator) {\n return hasValidator(this._rawValidators, validator);\n }\n /**\n * Check whether an asynchronous validator function is present on this control. The provided\n * validator must be a reference to the exact same function that was provided.\n *\n * @param validator The asynchronous validator to check for presence. Compared by function\n * reference.\n * @returns Whether the provided asynchronous validator was found on this control.\n */\n hasAsyncValidator(validator) {\n return hasValidator(this._rawAsyncValidators, validator);\n }\n /**\n * Empties out the synchronous validator list.\n *\n * When you add or remove a validator at run time, you must call\n * `updateValueAndValidity()` for the new validation to take effect.\n *\n */\n clearValidators() {\n this.validator = null;\n }\n /**\n * Empties out the async validator list.\n *\n * When you add or remove a validator at run time, you must call\n * `updateValueAndValidity()` for the new validation to take effect.\n *\n */\n clearAsyncValidators() {\n this.asyncValidator = null;\n }\n /**\n * Marks the control as `touched`. A control is touched by focus and\n * blur events that do not change the value.\n *\n * @see `markAsUntouched()`\n * @see `markAsDirty()`\n * @see `markAsPristine()`\n *\n * @param opts Configuration options that determine how the control propagates changes\n * and emits events after marking is applied.\n * * `onlySelf`: When true, mark only this control. When false or not supplied,\n * marks all direct ancestors. Default is false.\n */\n markAsTouched(opts = {}) {\n this.touched = true;\n if (this._parent && !opts.onlySelf) {\n this._parent.markAsTouched(opts);\n }\n }\n /**\n * Marks the control and all its descendant controls as `touched`.\n * @see `markAsTouched()`\n */\n markAllAsTouched() {\n this.markAsTouched({ onlySelf: true });\n this._forEachChild((control) => control.markAllAsTouched());\n }\n /**\n * Marks the control as `untouched`.\n *\n * If the control has any children, also marks all children as `untouched`\n * and recalculates the `touched` status of all parent controls.\n *\n * @see `markAsTouched()`\n * @see `markAsDirty()`\n * @see `markAsPristine()`\n *\n * @param opts Configuration options that determine how the control propagates changes\n * and emits events after the marking is applied.\n * * `onlySelf`: When true, mark only this control. When false or not supplied,\n * marks all direct ancestors. Default is false.\n */\n markAsUntouched(opts = {}) {\n this.touched = false;\n this._pendingTouched = false;\n this._forEachChild((control) => {\n control.markAsUntouched({ onlySelf: true });\n });\n if (this._parent && !opts.onlySelf) {\n this._parent._updateTouched(opts);\n }\n }\n /**\n * Marks the control as `dirty`. A control becomes dirty when\n * the control's value is changed through the UI; compare `markAsTouched`.\n *\n * @see `markAsTouched()`\n * @see `markAsUntouched()`\n * @see `markAsPristine()`\n *\n * @param opts Configuration options that determine how the control propagates changes\n * and emits events after marking is applied.\n * * `onlySelf`: When true, mark only this control. When false or not supplied,\n * marks all direct ancestors. Default is false.\n */\n markAsDirty(opts = {}) {\n this.pristine = false;\n if (this._parent && !opts.onlySelf) {\n this._parent.markAsDirty(opts);\n }\n }\n /**\n * Marks the control as `pristine`.\n *\n * If the control has any children, marks all children as `pristine`,\n * and recalculates the `pristine` status of all parent\n * controls.\n *\n * @see `markAsTouched()`\n * @see `markAsUntouched()`\n * @see `markAsDirty()`\n *\n * @param opts Configuration options that determine how the control emits events after\n * marking is applied.\n * * `onlySelf`: When true, mark only this control. When false or not supplied,\n * marks all direct ancestors. Default is false.\n */\n markAsPristine(opts = {}) {\n this.pristine = true;\n this._pendingDirty = false;\n this._forEachChild((control) => {\n control.markAsPristine({ onlySelf: true });\n });\n if (this._parent && !opts.onlySelf) {\n this._parent._updatePristine(opts);\n }\n }\n /**\n * Marks the control as `pending`.\n *\n * A control is pending while the control performs async validation.\n *\n * @see {@link AbstractControl.status}\n *\n * @param opts Configuration options that determine how the control propagates changes and\n * emits events after marking is applied.\n * * `onlySelf`: When true, mark only this control. When false or not supplied,\n * marks all direct ancestors. Default is false.\n * * `emitEvent`: When true or not supplied (the default), the `statusChanges`\n * observable emits an event with the latest status the control is marked pending.\n * When false, no events are emitted.\n *\n */\n markAsPending(opts = {}) {\n this.status = PENDING;\n if (opts.emitEvent !== false) {\n this.statusChanges.emit(this.status);\n }\n if (this._parent && !opts.onlySelf) {\n this._parent.markAsPending(opts);\n }\n }\n /**\n * Disables the control. This means the control is exempt from validation checks and\n * excluded from the aggregate value of any parent. Its status is `DISABLED`.\n *\n * If the control has children, all children are also disabled.\n *\n * @see {@link AbstractControl.status}\n *\n * @param opts Configuration options that determine how the control propagates\n * changes and emits events after the control is disabled.\n * * `onlySelf`: When true, mark only this control. When false or not supplied,\n * marks all direct ancestors. Default is false.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges`\n * observables emit events with the latest status and value when the control is disabled.\n * When false, no events are emitted.\n */\n disable(opts = {}) {\n // If parent has been marked artificially dirty we don't want to re-calculate the\n // parent's dirtiness based on the children.\n const skipPristineCheck = this._parentMarkedDirty(opts.onlySelf);\n this.status = DISABLED;\n this.errors = null;\n this._forEachChild((control) => {\n control.disable(Object.assign(Object.assign({}, opts), { onlySelf: true }));\n });\n this._updateValue();\n if (opts.emitEvent !== false) {\n this.valueChanges.emit(this.value);\n this.statusChanges.emit(this.status);\n }\n this._updateAncestors(Object.assign(Object.assign({}, opts), { skipPristineCheck }));\n this._onDisabledChange.forEach((changeFn) => changeFn(true));\n }\n /**\n * Enables the control. This means the control is included in validation checks and\n * the aggregate value of its parent. Its status recalculates based on its value and\n * its validators.\n *\n * By default, if the control has children, all children are enabled.\n *\n * @see {@link AbstractControl.status}\n *\n * @param opts Configure options that control how the control propagates changes and\n * emits events when marked as untouched\n * * `onlySelf`: When true, mark only this control. When false or not supplied,\n * marks all direct ancestors. Default is false.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges`\n * observables emit events with the latest status and value when the control is enabled.\n * When false, no events are emitted.\n */\n enable(opts = {}) {\n // If parent has been marked artificially dirty we don't want to re-calculate the\n // parent's dirtiness based on the children.\n const skipPristineCheck = this._parentMarkedDirty(opts.onlySelf);\n this.status = VALID;\n this._forEachChild((control) => {\n control.enable(Object.assign(Object.assign({}, opts), { onlySelf: true }));\n });\n this.updateValueAndValidity({ onlySelf: true, emitEvent: opts.emitEvent });\n this._updateAncestors(Object.assign(Object.assign({}, opts), { skipPristineCheck }));\n this._onDisabledChange.forEach((changeFn) => changeFn(false));\n }\n _updateAncestors(opts) {\n if (this._parent && !opts.onlySelf) {\n this._parent.updateValueAndValidity(opts);\n if (!opts.skipPristineCheck) {\n this._parent._updatePristine();\n }\n this._parent._updateTouched();\n }\n }\n /**\n * @param parent Sets the parent of the control\n */\n setParent(parent) {\n this._parent = parent;\n }\n /**\n * Recalculates the value and validation status of the control.\n *\n * By default, it also updates the value and validity of its ancestors.\n *\n * @param opts Configuration options determine how the control propagates changes and emits events\n * after updates and validity checks are applied.\n * * `onlySelf`: When true, only update this control. When false or not supplied,\n * update all direct ancestors. Default is false.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges`\n * observables emit events with the latest status and value when the control is updated.\n * When false, no events are emitted.\n */\n updateValueAndValidity(opts = {}) {\n this._setInitialStatus();\n this._updateValue();\n if (this.enabled) {\n this._cancelExistingSubscription();\n this.errors = this._runValidator();\n this.status = this._calculateStatus();\n if (this.status === VALID || this.status === PENDING) {\n this._runAsyncValidator(opts.emitEvent);\n }\n }\n if (opts.emitEvent !== false) {\n this.valueChanges.emit(this.value);\n this.statusChanges.emit(this.status);\n }\n if (this._parent && !opts.onlySelf) {\n this._parent.updateValueAndValidity(opts);\n }\n }\n /** @internal */\n _updateTreeValidity(opts = { emitEvent: true }) {\n this._forEachChild((ctrl) => ctrl._updateTreeValidity(opts));\n this.updateValueAndValidity({ onlySelf: true, emitEvent: opts.emitEvent });\n }\n _setInitialStatus() {\n this.status = this._allControlsDisabled() ? DISABLED : VALID;\n }\n _runValidator() {\n return this.validator ? this.validator(this) : null;\n }\n _runAsyncValidator(emitEvent) {\n if (this.asyncValidator) {\n this.status = PENDING;\n this._hasOwnPendingAsyncValidator = true;\n const obs = toObservable(this.asyncValidator(this));\n this._asyncValidationSubscription = obs.subscribe((errors) => {\n this._hasOwnPendingAsyncValidator = false;\n // This will trigger the recalculation of the validation status, which depends on\n // the state of the asynchronous validation (whether it is in progress or not). So, it is\n // necessary that we have updated the `_hasOwnPendingAsyncValidator` boolean flag first.\n this.setErrors(errors, { emitEvent });\n });\n }\n }\n _cancelExistingSubscription() {\n if (this._asyncValidationSubscription) {\n this._asyncValidationSubscription.unsubscribe();\n this._hasOwnPendingAsyncValidator = false;\n }\n }\n /**\n * Sets errors on a form control when running validations manually, rather than automatically.\n *\n * Calling `setErrors` also updates the validity of the parent control.\n *\n * @usageNotes\n *\n * ### Manually set the errors for a control\n *\n * ```\n * const login = new FormControl('someLogin');\n * login.setErrors({\n * notUnique: true\n * });\n *\n * expect(login.valid).toEqual(false);\n * expect(login.errors).toEqual({ notUnique: true });\n *\n * login.setValue('someOtherLogin');\n *\n * expect(login.valid).toEqual(true);\n * ```\n */\n setErrors(errors, opts = {}) {\n this.errors = errors;\n this._updateControlsErrors(opts.emitEvent !== false);\n }\n /**\n * Retrieves a child control given the control's name or path.\n *\n * @param path A dot-delimited string or array of string/number values that define the path to the\n * control.\n *\n * @usageNotes\n * ### Retrieve a nested control\n *\n * For example, to get a `name` control nested within a `person` sub-group:\n *\n * * `this.form.get('person.name');`\n *\n * -OR-\n *\n * * `this.form.get(['person', 'name']);`\n *\n * ### Retrieve a control in a FormArray\n *\n * When accessing an element inside a FormArray, you can use an element index.\n * For example, to get a `price` control from the first element in an `items` array you can use:\n *\n * * `this.form.get('items.0.price');`\n *\n * -OR-\n *\n * * `this.form.get(['items', 0, 'price']);`\n */\n get(path) {\n return _find(this, path, '.');\n }\n /**\n * @description\n * Reports error data for the control with the given path.\n *\n * @param errorCode The code of the error to check\n * @param path A list of control names that designates how to move from the current control\n * to the control that should be queried for errors.\n *\n * @usageNotes\n * For example, for the following `FormGroup`:\n *\n * ```\n * form = new FormGroup({\n * address: new FormGroup({ street: new FormControl() })\n * });\n * ```\n *\n * The path to the 'street' control from the root form would be 'address' -> 'street'.\n *\n * It can be provided to this method in one of two formats:\n *\n * 1. An array of string control names, e.g. `['address', 'street']`\n * 1. A period-delimited list of control names in one string, e.g. `'address.street'`\n *\n * @returns error data for that particular error. If the control or error is not present,\n * null is returned.\n */\n getError(errorCode, path) {\n const control = path ? this.get(path) : this;\n return control && control.errors ? control.errors[errorCode] : null;\n }\n /**\n * @description\n * Reports whether the control with the given path has the error specified.\n *\n * @param errorCode The code of the error to check\n * @param path A list of control names that designates how to move from the current control\n * to the control that should be queried for errors.\n *\n * @usageNotes\n * For example, for the following `FormGroup`:\n *\n * ```\n * form = new FormGroup({\n * address: new FormGroup({ street: new FormControl() })\n * });\n * ```\n *\n * The path to the 'street' control from the root form would be 'address' -> 'street'.\n *\n * It can be provided to this method in one of two formats:\n *\n * 1. An array of string control names, e.g. `['address', 'street']`\n * 1. A period-delimited list of control names in one string, e.g. `'address.street'`\n *\n * If no path is given, this method checks for the error on the current control.\n *\n * @returns whether the given error is present in the control at the given path.\n *\n * If the control is not present, false is returned.\n */\n hasError(errorCode, path) {\n return !!this.getError(errorCode, path);\n }\n /**\n * Retrieves the top-level ancestor of this control.\n */\n get root() {\n let x = this;\n while (x._parent) {\n x = x._parent;\n }\n return x;\n }\n /** @internal */\n _updateControlsErrors(emitEvent) {\n this.status = this._calculateStatus();\n if (emitEvent) {\n this.statusChanges.emit(this.status);\n }\n if (this._parent) {\n this._parent._updateControlsErrors(emitEvent);\n }\n }\n /** @internal */\n _initObservables() {\n this.valueChanges = new EventEmitter();\n this.statusChanges = new EventEmitter();\n }\n _calculateStatus() {\n if (this._allControlsDisabled())\n return DISABLED;\n if (this.errors)\n return INVALID;\n if (this._hasOwnPendingAsyncValidator || this._anyControlsHaveStatus(PENDING))\n return PENDING;\n if (this._anyControlsHaveStatus(INVALID))\n return INVALID;\n return VALID;\n }\n /** @internal */\n _anyControlsHaveStatus(status) {\n return this._anyControls((control) => control.status === status);\n }\n /** @internal */\n _anyControlsDirty() {\n return this._anyControls((control) => control.dirty);\n }\n /** @internal */\n _anyControlsTouched() {\n return this._anyControls((control) => control.touched);\n }\n /** @internal */\n _updatePristine(opts = {}) {\n this.pristine = !this._anyControlsDirty();\n if (this._parent && !opts.onlySelf) {\n this._parent._updatePristine(opts);\n }\n }\n /** @internal */\n _updateTouched(opts = {}) {\n this.touched = this._anyControlsTouched();\n if (this._parent && !opts.onlySelf) {\n this._parent._updateTouched(opts);\n }\n }\n /** @internal */\n _isBoxedValue(formState) {\n return typeof formState === 'object' && formState !== null &&\n Object.keys(formState).length === 2 && 'value' in formState && 'disabled' in formState;\n }\n /** @internal */\n _registerOnCollectionChange(fn) {\n this._onCollectionChange = fn;\n }\n /** @internal */\n _setUpdateStrategy(opts) {\n if (isOptionsObj(opts) && opts.updateOn != null) {\n this._updateOn = opts.updateOn;\n }\n }\n /**\n * Check to see if parent has been marked artificially dirty.\n *\n * @internal\n */\n _parentMarkedDirty(onlySelf) {\n const parentDirty = this._parent && this._parent.dirty;\n return !onlySelf && !!parentDirty && !this._parent._anyControlsDirty();\n }\n}\n/**\n * Tracks the value and validation status of an individual form control.\n *\n * This is one of the three fundamental building blocks of Angular forms, along with\n * `FormGroup` and `FormArray`. It extends the `AbstractControl` class that\n * implements most of the base functionality for accessing the value, validation status,\n * user interactions and events. See [usage examples below](#usage-notes).\n *\n * @see `AbstractControl`\n * @see [Reactive Forms Guide](guide/reactive-forms)\n * @see [Usage Notes](#usage-notes)\n *\n * @usageNotes\n *\n * ### Initializing Form Controls\n *\n * Instantiate a `FormControl`, with an initial value.\n *\n * ```ts\n * const control = new FormControl('some value');\n * console.log(control.value); // 'some value'\n *```\n *\n * The following example initializes the control with a form state object. The `value`\n * and `disabled` keys are required in this case.\n *\n * ```ts\n * const control = new FormControl({ value: 'n/a', disabled: true });\n * console.log(control.value); // 'n/a'\n * console.log(control.status); // 'DISABLED'\n * ```\n *\n * The following example initializes the control with a synchronous validator.\n *\n * ```ts\n * const control = new FormControl('', Validators.required);\n * console.log(control.value); // ''\n * console.log(control.status); // 'INVALID'\n * ```\n *\n * The following example initializes the control using an options object.\n *\n * ```ts\n * const control = new FormControl('', {\n * validators: Validators.required,\n * asyncValidators: myAsyncValidator\n * });\n * ```\n *\n * ### Configure the control to update on a blur event\n *\n * Set the `updateOn` option to `'blur'` to update on the blur `event`.\n *\n * ```ts\n * const control = new FormControl('', { updateOn: 'blur' });\n * ```\n *\n * ### Configure the control to update on a submit event\n *\n * Set the `updateOn` option to `'submit'` to update on a submit `event`.\n *\n * ```ts\n * const control = new FormControl('', { updateOn: 'submit' });\n * ```\n *\n * ### Reset the control back to an initial value\n *\n * You reset to a specific form state by passing through a standalone\n * value or a form state object that contains both a value and a disabled state\n * (these are the only two properties that cannot be calculated).\n *\n * ```ts\n * const control = new FormControl('Nancy');\n *\n * console.log(control.value); // 'Nancy'\n *\n * control.reset('Drew');\n *\n * console.log(control.value); // 'Drew'\n * ```\n *\n * ### Reset the control back to an initial value and disabled\n *\n * ```\n * const control = new FormControl('Nancy');\n *\n * console.log(control.value); // 'Nancy'\n * console.log(control.status); // 'VALID'\n *\n * control.reset({ value: 'Drew', disabled: true });\n *\n * console.log(control.value); // 'Drew'\n * console.log(control.status); // 'DISABLED'\n * ```\n *\n * @publicApi\n */\nclass FormControl extends AbstractControl {\n /**\n * Creates a new `FormControl` instance.\n *\n * @param formState Initializes the control with an initial value,\n * or an object that defines the initial value and disabled state.\n *\n * @param validatorOrOpts A synchronous validator function, or an array of\n * such functions, or an `AbstractControlOptions` object that contains validation functions\n * and a validation trigger.\n *\n * @param asyncValidator A single async validator or array of async validator functions\n *\n */\n constructor(formState = null, validatorOrOpts, asyncValidator) {\n super(pickValidators(validatorOrOpts), pickAsyncValidators(asyncValidator, validatorOrOpts));\n /**\n * The default value of this FormControl, used whenever the control is reset without an explicit\n * value. See {@link FormControlOptions#initialValueIsDefault} for more information on configuring\n * a default value.\n * @publicApi\n */\n this.defaultValue = null;\n /** @internal */\n this._onChange = [];\n /** @internal */\n this._pendingChange = false;\n this._applyFormState(formState);\n this._setUpdateStrategy(validatorOrOpts);\n this._initObservables();\n this.updateValueAndValidity({\n onlySelf: true,\n // If `asyncValidator` is present, it will trigger control status change from `PENDING` to\n // `VALID` or `INVALID`.\n // The status should be broadcasted via the `statusChanges` observable, so we set `emitEvent`\n // to `true` to allow that during the control creation process.\n emitEvent: !!this.asyncValidator\n });\n if (isOptionsObj(validatorOrOpts) && validatorOrOpts.initialValueIsDefault) {\n if (this._isBoxedValue(formState)) {\n this.defaultValue = formState.value;\n }\n else {\n this.defaultValue = formState;\n }\n }\n }\n /**\n * Sets a new value for the form control.\n *\n * @param value The new value for the control.\n * @param options Configuration options that determine how the control propagates changes\n * and emits events when the value changes.\n * The configuration options are passed to the {@link AbstractControl#updateValueAndValidity\n * updateValueAndValidity} method.\n *\n * * `onlySelf`: When true, each change only affects this control, and not its parent. Default is\n * false.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges`\n * observables emit events with the latest status and value when the control value is updated.\n * When false, no events are emitted.\n * * `emitModelToViewChange`: When true or not supplied (the default), each change triggers an\n * `onChange` event to\n * update the view.\n * * `emitViewToModelChange`: When true or not supplied (the default), each change triggers an\n * `ngModelChange`\n * event to update the model.\n *\n */\n setValue(value, options = {}) {\n this.value = this._pendingValue = value;\n if (this._onChange.length && options.emitModelToViewChange !== false) {\n this._onChange.forEach((changeFn) => changeFn(this.value, options.emitViewToModelChange !== false));\n }\n this.updateValueAndValidity(options);\n }\n /**\n * Patches the value of a control.\n *\n * This function is functionally the same as {@link FormControl#setValue setValue} at this level.\n * It exists for symmetry with {@link FormGroup#patchValue patchValue} on `FormGroups` and\n * `FormArrays`, where it does behave differently.\n *\n * @see `setValue` for options\n */\n patchValue(value, options = {}) {\n this.setValue(value, options);\n }\n /**\n * Resets the form control, marking it `pristine` and `untouched`, and resetting\n * the value. The new value will be the provided value (if passed), `null`, or the initial value\n * if `initialValueIsDefault` was set in the constructor via {@link FormControlOptions}.\n *\n * ```ts\n * // By default, the control will reset to null.\n * const dog = new FormControl('spot');\n * dog.reset(); // dog.value is null\n *\n * // If this flag is set, the control will instead reset to the initial value.\n * const cat = new FormControl('tabby', {initialValueIsDefault: true});\n * cat.reset(); // cat.value is \"tabby\"\n *\n * // A value passed to reset always takes precedence.\n * const fish = new FormControl('finn', {initialValueIsDefault: true});\n * fish.reset('bubble'); // fish.value is \"bubble\"\n * ```\n *\n * @param formState Resets the control with an initial value,\n * or an object that defines the initial value and disabled state.\n *\n * @param options Configuration options that determine how the control propagates changes\n * and emits events after the value changes.\n *\n * * `onlySelf`: When true, each change only affects this control, and not its parent. Default is\n * false.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges`\n * observables emit events with the latest status and value when the control is reset.\n * When false, no events are emitted.\n *\n */\n reset(formState = this.defaultValue, options = {}) {\n this._applyFormState(formState);\n this.markAsPristine(options);\n this.markAsUntouched(options);\n this.setValue(this.value, options);\n this._pendingChange = false;\n }\n /**\n * @internal\n */\n _updateValue() { }\n /**\n * @internal\n */\n _anyControls(condition) {\n return false;\n }\n /**\n * @internal\n */\n _allControlsDisabled() {\n return this.disabled;\n }\n /**\n * Register a listener for change events.\n *\n * @param fn The method that is called when the value changes\n */\n registerOnChange(fn) {\n this._onChange.push(fn);\n }\n /**\n * Internal function to unregister a change events listener.\n * @internal\n */\n _unregisterOnChange(fn) {\n removeListItem(this._onChange, fn);\n }\n /**\n * Register a listener for disabled events.\n *\n * @param fn The method that is called when the disabled status changes.\n */\n registerOnDisabledChange(fn) {\n this._onDisabledChange.push(fn);\n }\n /**\n * Internal function to unregister a disabled event listener.\n * @internal\n */\n _unregisterOnDisabledChange(fn) {\n removeListItem(this._onDisabledChange, fn);\n }\n /**\n * @internal\n */\n _forEachChild(cb) { }\n /** @internal */\n _syncPendingControls() {\n if (this.updateOn === 'submit') {\n if (this._pendingDirty)\n this.markAsDirty();\n if (this._pendingTouched)\n this.markAsTouched();\n if (this._pendingChange) {\n this.setValue(this._pendingValue, { onlySelf: true, emitModelToViewChange: false });\n return true;\n }\n }\n return false;\n }\n _applyFormState(formState) {\n if (this._isBoxedValue(formState)) {\n this.value = this._pendingValue = formState.value;\n formState.disabled ? this.disable({ onlySelf: true, emitEvent: false }) :\n this.enable({ onlySelf: true, emitEvent: false });\n }\n else {\n this.value = this._pendingValue = formState;\n }\n }\n}\n/**\n * Tracks the value and validity state of a group of `FormControl` instances.\n *\n * A `FormGroup` aggregates the values of each child `FormControl` into one object,\n * with each control name as the key. It calculates its status by reducing the status values\n * of its children. For example, if one of the controls in a group is invalid, the entire\n * group becomes invalid.\n *\n * `FormGroup` is one of the three fundamental building blocks used to define forms in Angular,\n * along with `FormControl` and `FormArray`.\n *\n * When instantiating a `FormGroup`, pass in a collection of child controls as the first\n * argument. The key for each child registers the name for the control.\n *\n * @usageNotes\n *\n * ### Create a form group with 2 controls\n *\n * ```\n * const form = new FormGroup({\n * first: new FormControl('Nancy', Validators.minLength(2)),\n * last: new FormControl('Drew'),\n * });\n *\n * console.log(form.value); // {first: 'Nancy', last; 'Drew'}\n * console.log(form.status); // 'VALID'\n * ```\n *\n * ### Create a form group with a group-level validator\n *\n * You include group-level validators as the second arg, or group-level async\n * validators as the third arg. These come in handy when you want to perform validation\n * that considers the value of more than one child control.\n *\n * ```\n * const form = new FormGroup({\n * password: new FormControl('', Validators.minLength(2)),\n * passwordConfirm: new FormControl('', Validators.minLength(2)),\n * }, passwordMatchValidator);\n *\n *\n * function passwordMatchValidator(g: FormGroup) {\n * return g.get('password').value === g.get('passwordConfirm').value\n * ? null : {'mismatch': true};\n * }\n * ```\n *\n * Like `FormControl` instances, you choose to pass in\n * validators and async validators as part of an options object.\n *\n * ```\n * const form = new FormGroup({\n * password: new FormControl('')\n * passwordConfirm: new FormControl('')\n * }, { validators: passwordMatchValidator, asyncValidators: otherValidator });\n * ```\n *\n * ### Set the updateOn property for all controls in a form group\n *\n * The options object is used to set a default value for each child\n * control's `updateOn` property. If you set `updateOn` to `'blur'` at the\n * group level, all child controls default to 'blur', unless the child\n * has explicitly specified a different `updateOn` value.\n *\n * ```ts\n * const c = new FormGroup({\n * one: new FormControl()\n * }, { updateOn: 'blur' });\n * ```\n *\n * @publicApi\n */\nclass FormGroup extends AbstractControl {\n /**\n * Creates a new `FormGroup` instance.\n *\n * @param controls A collection of child controls. The key for each child is the name\n * under which it is registered.\n *\n * @param validatorOrOpts A synchronous validator function, or an array of\n * such functions, or an `AbstractControlOptions` object that contains validation functions\n * and a validation trigger.\n *\n * @param asyncValidator A single async validator or array of async validator functions\n *\n */\n constructor(controls, validatorOrOpts, asyncValidator) {\n super(pickValidators(validatorOrOpts), pickAsyncValidators(asyncValidator, validatorOrOpts));\n this.controls = controls;\n this._initObservables();\n this._setUpdateStrategy(validatorOrOpts);\n this._setUpControls();\n this.updateValueAndValidity({\n onlySelf: true,\n // If `asyncValidator` is present, it will trigger control status change from `PENDING` to\n // `VALID` or `INVALID`. The status should be broadcasted via the `statusChanges` observable,\n // so we set `emitEvent` to `true` to allow that during the control creation process.\n emitEvent: !!this.asyncValidator\n });\n }\n /**\n * Registers a control with the group's list of controls.\n *\n * This method does not update the value or validity of the control.\n * Use {@link FormGroup#addControl addControl} instead.\n *\n * @param name The control name to register in the collection\n * @param control Provides the control for the given name\n */\n registerControl(name, control) {\n if (this.controls[name])\n return this.controls[name];\n this.controls[name] = control;\n control.setParent(this);\n control._registerOnCollectionChange(this._onCollectionChange);\n return control;\n }\n /**\n * Add a control to this group.\n *\n * If a control with a given name already exists, it would *not* be replaced with a new one.\n * If you want to replace an existing control, use the {@link FormGroup#setControl setControl}\n * method instead. This method also updates the value and validity of the control.\n *\n * @param name The control name to add to the collection\n * @param control Provides the control for the given name\n * @param options Specifies whether this FormGroup instance should emit events after a new\n * control is added.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges` observables emit events with the latest status and value when the control is\n * added. When false, no events are emitted.\n */\n addControl(name, control, options = {}) {\n this.registerControl(name, control);\n this.updateValueAndValidity({ emitEvent: options.emitEvent });\n this._onCollectionChange();\n }\n /**\n * Remove a control from this group.\n *\n * This method also updates the value and validity of the control.\n *\n * @param name The control name to remove from the collection\n * @param options Specifies whether this FormGroup instance should emit events after a\n * control is removed.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges` observables emit events with the latest status and value when the control is\n * removed. When false, no events are emitted.\n */\n removeControl(name, options = {}) {\n if (this.controls[name])\n this.controls[name]._registerOnCollectionChange(() => { });\n delete (this.controls[name]);\n this.updateValueAndValidity({ emitEvent: options.emitEvent });\n this._onCollectionChange();\n }\n /**\n * Replace an existing control.\n *\n * If a control with a given name does not exist in this `FormGroup`, it will be added.\n *\n * @param name The control name to replace in the collection\n * @param control Provides the control for the given name\n * @param options Specifies whether this FormGroup instance should emit events after an\n * existing control is replaced.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges` observables emit events with the latest status and value when the control is\n * replaced with a new one. When false, no events are emitted.\n */\n setControl(name, control, options = {}) {\n if (this.controls[name])\n this.controls[name]._registerOnCollectionChange(() => { });\n delete (this.controls[name]);\n if (control)\n this.registerControl(name, control);\n this.updateValueAndValidity({ emitEvent: options.emitEvent });\n this._onCollectionChange();\n }\n /**\n * Check whether there is an enabled control with the given name in the group.\n *\n * Reports false for disabled controls. If you'd like to check for existence in the group\n * only, use {@link AbstractControl#get get} instead.\n *\n * @param controlName The control name to check for existence in the collection\n *\n * @returns false for disabled controls, true otherwise.\n */\n contains(controlName) {\n return this.controls.hasOwnProperty(controlName) && this.controls[controlName].enabled;\n }\n /**\n * Sets the value of the `FormGroup`. It accepts an object that matches\n * the structure of the group, with control names as keys.\n *\n * @usageNotes\n * ### Set the complete value for the form group\n *\n * ```\n * const form = new FormGroup({\n * first: new FormControl(),\n * last: new FormControl()\n * });\n *\n * console.log(form.value); // {first: null, last: null}\n *\n * form.setValue({first: 'Nancy', last: 'Drew'});\n * console.log(form.value); // {first: 'Nancy', last: 'Drew'}\n * ```\n *\n * @throws When strict checks fail, such as setting the value of a control\n * that doesn't exist or if you exclude a value of a control that does exist.\n *\n * @param value The new value for the control that matches the structure of the group.\n * @param options Configuration options that determine how the control propagates changes\n * and emits events after the value changes.\n * The configuration options are passed to the {@link AbstractControl#updateValueAndValidity\n * updateValueAndValidity} method.\n *\n * * `onlySelf`: When true, each change only affects this control, and not its parent. Default is\n * false.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges`\n * observables emit events with the latest status and value when the control value is updated.\n * When false, no events are emitted.\n */\n setValue(value, options = {}) {\n assertAllValuesPresent(this, value);\n Object.keys(value).forEach(name => {\n assertControlPresent(this, name);\n this.controls[name].setValue(value[name], { onlySelf: true, emitEvent: options.emitEvent });\n });\n this.updateValueAndValidity(options);\n }\n /**\n * Patches the value of the `FormGroup`. It accepts an object with control\n * names as keys, and does its best to match the values to the correct controls\n * in the group.\n *\n * It accepts both super-sets and sub-sets of the group without throwing an error.\n *\n * @usageNotes\n * ### Patch the value for a form group\n *\n * ```\n * const form = new FormGroup({\n * first: new FormControl(),\n * last: new FormControl()\n * });\n * console.log(form.value); // {first: null, last: null}\n *\n * form.patchValue({first: 'Nancy'});\n * console.log(form.value); // {first: 'Nancy', last: null}\n * ```\n *\n * @param value The object that matches the structure of the group.\n * @param options Configuration options that determine how the control propagates changes and\n * emits events after the value is patched.\n * * `onlySelf`: When true, each change only affects this control and not its parent. Default is\n * true.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges` observables emit events with the latest status and value when the control value\n * is updated. When false, no events are emitted. The configuration options are passed to\n * the {@link AbstractControl#updateValueAndValidity updateValueAndValidity} method.\n */\n patchValue(value, options = {}) {\n // Even though the `value` argument type doesn't allow `null` and `undefined` values, the\n // `patchValue` can be called recursively and inner data structures might have these values, so\n // we just ignore such cases when a field containing FormGroup instance receives `null` or\n // `undefined` as a value.\n if (value == null /* both `null` and `undefined` */)\n return;\n Object.keys(value).forEach(name => {\n if (this.controls[name]) {\n this.controls[name].patchValue(value[name], { onlySelf: true, emitEvent: options.emitEvent });\n }\n });\n this.updateValueAndValidity(options);\n }\n /**\n * Resets the `FormGroup`, marks all descendants `pristine` and `untouched` and sets\n * the value of all descendants to null.\n *\n * You reset to a specific form state by passing in a map of states\n * that matches the structure of your form, with control names as keys. The state\n * is a standalone value or a form state object with both a value and a disabled\n * status.\n *\n * @param value Resets the control with an initial value,\n * or an object that defines the initial value and disabled state.\n *\n * @param options Configuration options that determine how the control propagates changes\n * and emits events when the group is reset.\n * * `onlySelf`: When true, each change only affects this control, and not its parent. Default is\n * false.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges`\n * observables emit events with the latest status and value when the control is reset.\n * When false, no events are emitted.\n * The configuration options are passed to the {@link AbstractControl#updateValueAndValidity\n * updateValueAndValidity} method.\n *\n * @usageNotes\n *\n * ### Reset the form group values\n *\n * ```ts\n * const form = new FormGroup({\n * first: new FormControl('first name'),\n * last: new FormControl('last name')\n * });\n *\n * console.log(form.value); // {first: 'first name', last: 'last name'}\n *\n * form.reset({ first: 'name', last: 'last name' });\n *\n * console.log(form.value); // {first: 'name', last: 'last name'}\n * ```\n *\n * ### Reset the form group values and disabled status\n *\n * ```\n * const form = new FormGroup({\n * first: new FormControl('first name'),\n * last: new FormControl('last name')\n * });\n *\n * form.reset({\n * first: {value: 'name', disabled: true},\n * last: 'last'\n * });\n *\n * console.log(form.value); // {last: 'last'}\n * console.log(form.get('first').status); // 'DISABLED'\n * ```\n */\n reset(value = {}, options = {}) {\n this._forEachChild((control, name) => {\n control.reset(value[name], { onlySelf: true, emitEvent: options.emitEvent });\n });\n this._updatePristine(options);\n this._updateTouched(options);\n this.updateValueAndValidity(options);\n }\n /**\n * The aggregate value of the `FormGroup`, including any disabled controls.\n *\n * Retrieves all values regardless of disabled status.\n * The `value` property is the best way to get the value of the group, because\n * it excludes disabled controls in the `FormGroup`.\n */\n getRawValue() {\n return this._reduceChildren({}, (acc, control, name) => {\n acc[name] = getRawValue(control);\n return acc;\n });\n }\n /** @internal */\n _syncPendingControls() {\n let subtreeUpdated = this._reduceChildren(false, (updated, child) => {\n return child._syncPendingControls() ? true : updated;\n });\n if (subtreeUpdated)\n this.updateValueAndValidity({ onlySelf: true });\n return subtreeUpdated;\n }\n /** @internal */\n _forEachChild(cb) {\n Object.keys(this.controls).forEach(key => {\n // The list of controls can change (for ex. controls might be removed) while the loop\n // is running (as a result of invoking Forms API in `valueChanges` subscription), so we\n // have to null check before invoking the callback.\n const control = this.controls[key];\n control && cb(control, key);\n });\n }\n /** @internal */\n _setUpControls() {\n this._forEachChild((control) => {\n control.setParent(this);\n control._registerOnCollectionChange(this._onCollectionChange);\n });\n }\n /** @internal */\n _updateValue() {\n this.value = this._reduceValue();\n }\n /** @internal */\n _anyControls(condition) {\n for (const controlName of Object.keys(this.controls)) {\n const control = this.controls[controlName];\n if (this.contains(controlName) && condition(control)) {\n return true;\n }\n }\n return false;\n }\n /** @internal */\n _reduceValue() {\n return this._reduceChildren({}, (acc, control, name) => {\n if (control.enabled || this.disabled) {\n acc[name] = control.value;\n }\n return acc;\n });\n }\n /** @internal */\n _reduceChildren(initValue, fn) {\n let res = initValue;\n this._forEachChild((control, name) => {\n res = fn(res, control, name);\n });\n return res;\n }\n /** @internal */\n _allControlsDisabled() {\n for (const controlName of Object.keys(this.controls)) {\n if (this.controls[controlName].enabled) {\n return false;\n }\n }\n return Object.keys(this.controls).length > 0 || this.disabled;\n }\n}\n/**\n * Tracks the value and validity state of an array of `FormControl`,\n * `FormGroup` or `FormArray` instances.\n *\n * A `FormArray` aggregates the values of each child `FormControl` into an array.\n * It calculates its status by reducing the status values of its children. For example, if one of\n * the controls in a `FormArray` is invalid, the entire array becomes invalid.\n *\n * `FormArray` is one of the three fundamental building blocks used to define forms in Angular,\n * along with `FormControl` and `FormGroup`.\n *\n * @usageNotes\n *\n * ### Create an array of form controls\n *\n * ```\n * const arr = new FormArray([\n * new FormControl('Nancy', Validators.minLength(2)),\n * new FormControl('Drew'),\n * ]);\n *\n * console.log(arr.value); // ['Nancy', 'Drew']\n * console.log(arr.status); // 'VALID'\n * ```\n *\n * ### Create a form array with array-level validators\n *\n * You include array-level validators and async validators. These come in handy\n * when you want to perform validation that considers the value of more than one child\n * control.\n *\n * The two types of validators are passed in separately as the second and third arg\n * respectively, or together as part of an options object.\n *\n * ```\n * const arr = new FormArray([\n * new FormControl('Nancy'),\n * new FormControl('Drew')\n * ], {validators: myValidator, asyncValidators: myAsyncValidator});\n * ```\n *\n * ### Set the updateOn property for all controls in a form array\n *\n * The options object is used to set a default value for each child\n * control's `updateOn` property. If you set `updateOn` to `'blur'` at the\n * array level, all child controls default to 'blur', unless the child\n * has explicitly specified a different `updateOn` value.\n *\n * ```ts\n * const arr = new FormArray([\n * new FormControl()\n * ], {updateOn: 'blur'});\n * ```\n *\n * ### Adding or removing controls from a form array\n *\n * To change the controls in the array, use the `push`, `insert`, `removeAt` or `clear` methods\n * in `FormArray` itself. These methods ensure the controls are properly tracked in the\n * form's hierarchy. Do not modify the array of `AbstractControl`s used to instantiate\n * the `FormArray` directly, as that result in strange and unexpected behavior such\n * as broken change detection.\n *\n * @publicApi\n */\nclass FormArray extends AbstractControl {\n /**\n * Creates a new `FormArray` instance.\n *\n * @param controls An array of child controls. Each child control is given an index\n * where it is registered.\n *\n * @param validatorOrOpts A synchronous validator function, or an array of\n * such functions, or an `AbstractControlOptions` object that contains validation functions\n * and a validation trigger.\n *\n * @param asyncValidator A single async validator or array of async validator functions\n *\n */\n constructor(controls, validatorOrOpts, asyncValidator) {\n super(pickValidators(validatorOrOpts), pickAsyncValidators(asyncValidator, validatorOrOpts));\n this.controls = controls;\n this._initObservables();\n this._setUpdateStrategy(validatorOrOpts);\n this._setUpControls();\n this.updateValueAndValidity({\n onlySelf: true,\n // If `asyncValidator` is present, it will trigger control status change from `PENDING` to\n // `VALID` or `INVALID`.\n // The status should be broadcasted via the `statusChanges` observable, so we set `emitEvent`\n // to `true` to allow that during the control creation process.\n emitEvent: !!this.asyncValidator\n });\n }\n /**\n * Get the `AbstractControl` at the given `index` in the array.\n *\n * @param index Index in the array to retrieve the control\n */\n at(index) {\n return this.controls[index];\n }\n /**\n * Insert a new `AbstractControl` at the end of the array.\n *\n * @param control Form control to be inserted\n * @param options Specifies whether this FormArray instance should emit events after a new\n * control is added.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges` observables emit events with the latest status and value when the control is\n * inserted. When false, no events are emitted.\n */\n push(control, options = {}) {\n this.controls.push(control);\n this._registerControl(control);\n this.updateValueAndValidity({ emitEvent: options.emitEvent });\n this._onCollectionChange();\n }\n /**\n * Insert a new `AbstractControl` at the given `index` in the array.\n *\n * @param index Index in the array to insert the control\n * @param control Form control to be inserted\n * @param options Specifies whether this FormArray instance should emit events after a new\n * control is inserted.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges` observables emit events with the latest status and value when the control is\n * inserted. When false, no events are emitted.\n */\n insert(index, control, options = {}) {\n this.controls.splice(index, 0, control);\n this._registerControl(control);\n this.updateValueAndValidity({ emitEvent: options.emitEvent });\n }\n /**\n * Remove the control at the given `index` in the array.\n *\n * @param index Index in the array to remove the control\n * @param options Specifies whether this FormArray instance should emit events after a\n * control is removed.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges` observables emit events with the latest status and value when the control is\n * removed. When false, no events are emitted.\n */\n removeAt(index, options = {}) {\n if (this.controls[index])\n this.controls[index]._registerOnCollectionChange(() => { });\n this.controls.splice(index, 1);\n this.updateValueAndValidity({ emitEvent: options.emitEvent });\n }\n /**\n * Replace an existing control.\n *\n * @param index Index in the array to replace the control\n * @param control The `AbstractControl` control to replace the existing control\n * @param options Specifies whether this FormArray instance should emit events after an\n * existing control is replaced with a new one.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges` observables emit events with the latest status and value when the control is\n * replaced with a new one. When false, no events are emitted.\n */\n setControl(index, control, options = {}) {\n if (this.controls[index])\n this.controls[index]._registerOnCollectionChange(() => { });\n this.controls.splice(index, 1);\n if (control) {\n this.controls.splice(index, 0, control);\n this._registerControl(control);\n }\n this.updateValueAndValidity({ emitEvent: options.emitEvent });\n this._onCollectionChange();\n }\n /**\n * Length of the control array.\n */\n get length() {\n return this.controls.length;\n }\n /**\n * Sets the value of the `FormArray`. It accepts an array that matches\n * the structure of the control.\n *\n * This method performs strict checks, and throws an error if you try\n * to set the value of a control that doesn't exist or if you exclude the\n * value of a control.\n *\n * @usageNotes\n * ### Set the values for the controls in the form array\n *\n * ```\n * const arr = new FormArray([\n * new FormControl(),\n * new FormControl()\n * ]);\n * console.log(arr.value); // [null, null]\n *\n * arr.setValue(['Nancy', 'Drew']);\n * console.log(arr.value); // ['Nancy', 'Drew']\n * ```\n *\n * @param value Array of values for the controls\n * @param options Configure options that determine how the control propagates changes and\n * emits events after the value changes\n *\n * * `onlySelf`: When true, each change only affects this control, and not its parent. Default\n * is false.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges`\n * observables emit events with the latest status and value when the control value is updated.\n * When false, no events are emitted.\n * The configuration options are passed to the {@link AbstractControl#updateValueAndValidity\n * updateValueAndValidity} method.\n */\n setValue(value, options = {}) {\n assertAllValuesPresent(this, value);\n value.forEach((newValue, index) => {\n assertControlPresent(this, index);\n this.at(index).setValue(newValue, { onlySelf: true, emitEvent: options.emitEvent });\n });\n this.updateValueAndValidity(options);\n }\n /**\n * Patches the value of the `FormArray`. It accepts an array that matches the\n * structure of the control, and does its best to match the values to the correct\n * controls in the group.\n *\n * It accepts both super-sets and sub-sets of the array without throwing an error.\n *\n * @usageNotes\n * ### Patch the values for controls in a form array\n *\n * ```\n * const arr = new FormArray([\n * new FormControl(),\n * new FormControl()\n * ]);\n * console.log(arr.value); // [null, null]\n *\n * arr.patchValue(['Nancy']);\n * console.log(arr.value); // ['Nancy', null]\n * ```\n *\n * @param value Array of latest values for the controls\n * @param options Configure options that determine how the control propagates changes and\n * emits events after the value changes\n *\n * * `onlySelf`: When true, each change only affects this control, and not its parent. Default\n * is false.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges` observables emit events with the latest status and value when the control value\n * is updated. When false, no events are emitted. The configuration options are passed to\n * the {@link AbstractControl#updateValueAndValidity updateValueAndValidity} method.\n */\n patchValue(value, options = {}) {\n // Even though the `value` argument type doesn't allow `null` and `undefined` values, the\n // `patchValue` can be called recursively and inner data structures might have these values, so\n // we just ignore such cases when a field containing FormArray instance receives `null` or\n // `undefined` as a value.\n if (value == null /* both `null` and `undefined` */)\n return;\n value.forEach((newValue, index) => {\n if (this.at(index)) {\n this.at(index).patchValue(newValue, { onlySelf: true, emitEvent: options.emitEvent });\n }\n });\n this.updateValueAndValidity(options);\n }\n /**\n * Resets the `FormArray` and all descendants are marked `pristine` and `untouched`, and the\n * value of all descendants to null or null maps.\n *\n * You reset to a specific form state by passing in an array of states\n * that matches the structure of the control. The state is a standalone value\n * or a form state object with both a value and a disabled status.\n *\n * @usageNotes\n * ### Reset the values in a form array\n *\n * ```ts\n * const arr = new FormArray([\n * new FormControl(),\n * new FormControl()\n * ]);\n * arr.reset(['name', 'last name']);\n *\n * console.log(arr.value); // ['name', 'last name']\n * ```\n *\n * ### Reset the values in a form array and the disabled status for the first control\n *\n * ```\n * arr.reset([\n * {value: 'name', disabled: true},\n * 'last'\n * ]);\n *\n * console.log(arr.value); // ['last']\n * console.log(arr.at(0).status); // 'DISABLED'\n * ```\n *\n * @param value Array of values for the controls\n * @param options Configure options that determine how the control propagates changes and\n * emits events after the value changes\n *\n * * `onlySelf`: When true, each change only affects this control, and not its parent. Default\n * is false.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges`\n * observables emit events with the latest status and value when the control is reset.\n * When false, no events are emitted.\n * The configuration options are passed to the {@link AbstractControl#updateValueAndValidity\n * updateValueAndValidity} method.\n */\n reset(value = [], options = {}) {\n this._forEachChild((control, index) => {\n control.reset(value[index], { onlySelf: true, emitEvent: options.emitEvent });\n });\n this._updatePristine(options);\n this._updateTouched(options);\n this.updateValueAndValidity(options);\n }\n /**\n * The aggregate value of the array, including any disabled controls.\n *\n * Reports all values regardless of disabled status.\n * For enabled controls only, the `value` property is the best way to get the value of the array.\n */\n getRawValue() {\n return this.controls.map((control) => getRawValue(control));\n }\n /**\n * Remove all controls in the `FormArray`.\n *\n * @param options Specifies whether this FormArray instance should emit events after all\n * controls are removed.\n * * `emitEvent`: When true or not supplied (the default), both the `statusChanges` and\n * `valueChanges` observables emit events with the latest status and value when all controls\n * in this FormArray instance are removed. When false, no events are emitted.\n *\n * @usageNotes\n * ### Remove all elements from a FormArray\n *\n * ```ts\n * const arr = new FormArray([\n * new FormControl(),\n * new FormControl()\n * ]);\n * console.log(arr.length); // 2\n *\n * arr.clear();\n * console.log(arr.length); // 0\n * ```\n *\n * It's a simpler and more efficient alternative to removing all elements one by one:\n *\n * ```ts\n * const arr = new FormArray([\n * new FormControl(),\n * new FormControl()\n * ]);\n *\n * while (arr.length) {\n * arr.removeAt(0);\n * }\n * ```\n */\n clear(options = {}) {\n if (this.controls.length < 1)\n return;\n this._forEachChild((control) => control._registerOnCollectionChange(() => { }));\n this.controls.splice(0);\n this.updateValueAndValidity({ emitEvent: options.emitEvent });\n }\n /** @internal */\n _syncPendingControls() {\n let subtreeUpdated = this.controls.reduce((updated, child) => {\n return child._syncPendingControls() ? true : updated;\n }, false);\n if (subtreeUpdated)\n this.updateValueAndValidity({ onlySelf: true });\n return subtreeUpdated;\n }\n /** @internal */\n _forEachChild(cb) {\n this.controls.forEach((control, index) => {\n cb(control, index);\n });\n }\n /** @internal */\n _updateValue() {\n this.value =\n this.controls.filter((control) => control.enabled || this.disabled)\n .map((control) => control.value);\n }\n /** @internal */\n _anyControls(condition) {\n return this.controls.some((control) => control.enabled && condition(control));\n }\n /** @internal */\n _setUpControls() {\n this._forEachChild((control) => this._registerControl(control));\n }\n /** @internal */\n _allControlsDisabled() {\n for (const control of this.controls) {\n if (control.enabled)\n return false;\n }\n return this.controls.length > 0 || this.disabled;\n }\n _registerControl(control) {\n control.setParent(this);\n control._registerOnCollectionChange(this._onCollectionChange);\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 */\nconst formDirectiveProvider$1 = {\n provide: ControlContainer,\n useExisting: forwardRef(() => NgForm)\n};\nconst resolvedPromise$1 = (() => Promise.resolve(null))();\n/**\n * @description\n * Creates a top-level `FormGroup` instance and binds it to a form\n * to track aggregate form value and validation status.\n *\n * As soon as you import the `FormsModule`, this directive becomes active by default on\n * all `<form>` tags. You don't need to add a special selector.\n *\n * You optionally export the directive into a local template variable using `ngForm` as the key\n * (ex: `#myForm=\"ngForm\"`). This is optional, but useful. Many properties from the underlying\n * `FormGroup` instance are duplicated on the directive itself, so a reference to it\n * gives you access to the aggregate value and validity status of the form, as well as\n * user interaction properties like `dirty` and `touched`.\n *\n * To register child controls with the form, use `NgModel` with a `name`\n * attribute. You may use `NgModelGroup` to create sub-groups within the form.\n *\n * If necessary, listen to the directive's `ngSubmit` event to be notified when the user has\n * triggered a form submission. The `ngSubmit` event emits the original form\n * submission event.\n *\n * In template driven forms, all `<form>` tags are automatically tagged as `NgForm`.\n * To import the `FormsModule` but skip its usage in some forms,\n * for example, to use native HTML5 validation, add the `ngNoForm` and the `<form>`\n * tags won't create an `NgForm` directive. In reactive forms, using `ngNoForm` is\n * unnecessary because the `<form>` tags are inert. In that case, you would\n * refrain from using the `formGroup` directive.\n *\n * @usageNotes\n *\n * ### Listening for form submission\n *\n * The following example shows how to capture the form values from the \"ngSubmit\" event.\n *\n * {@example forms/ts/simpleForm/simple_form_example.ts region='Component'}\n *\n * ### Setting the update options\n *\n * The following example shows you how to change the \"updateOn\" option from its default using\n * ngFormOptions.\n *\n * ```html\n * <form [ngFormOptions]=\"{updateOn: 'blur'}\">\n * <input name=\"one\" ngModel> <!-- this ngModel will update on blur -->\n * </form>\n * ```\n *\n * ### Native DOM validation UI\n *\n * In order to prevent the native DOM form validation UI from interfering with Angular's form\n * validation, Angular automatically adds the `novalidate` attribute on any `<form>` whenever\n * `FormModule` or `ReactiveFormModule` are imported into the application.\n * If you want to explicitly enable native DOM validation UI with Angular forms, you can add the\n * `ngNativeValidate` attribute to the `<form>` element:\n *\n * ```html\n * <form ngNativeValidate>\n * ...\n * </form>\n * ```\n *\n * @ngModule FormsModule\n * @publicApi\n */\nclass NgForm extends ControlContainer {\n constructor(validators, asyncValidators) {\n super();\n /**\n * @description\n * Returns whether the form submission has been triggered.\n */\n this.submitted = false;\n this._directives = new Set();\n /**\n * @description\n * Event emitter for the \"ngSubmit\" event\n */\n this.ngSubmit = new EventEmitter();\n this.form =\n new FormGroup({}, composeValidators(validators), composeAsyncValidators(asyncValidators));\n }\n /** @nodoc */\n ngAfterViewInit() {\n this._setUpdateStrategy();\n }\n /**\n * @description\n * The directive instance.\n */\n get formDirective() {\n return this;\n }\n /**\n * @description\n * The internal `FormGroup` instance.\n */\n get control() {\n return this.form;\n }\n /**\n * @description\n * Returns an array representing the path to this group. Because this directive\n * always lives at the top level of a form, it is always an empty array.\n */\n get path() {\n return [];\n }\n /**\n * @description\n * Returns a map of the controls in this group.\n */\n get controls() {\n return this.form.controls;\n }\n /**\n * @description\n * Method that sets up the control directive in this group, re-calculates its value\n * and validity, and adds the instance to the internal list of directives.\n *\n * @param dir The `NgModel` directive instance.\n */\n addControl(dir) {\n resolvedPromise$1.then(() => {\n const container = this._findContainer(dir.path);\n dir.control =\n container.registerControl(dir.name, dir.control);\n setUpControl(dir.control, dir);\n dir.control.updateValueAndValidity({ emitEvent: false });\n this._directives.add(dir);\n });\n }\n /**\n * @description\n * Retrieves the `FormControl` instance from the provided `NgModel` directive.\n *\n * @param dir The `NgModel` directive instance.\n */\n getControl(dir) {\n return this.form.get(dir.path);\n }\n /**\n * @description\n * Removes the `NgModel` instance from the internal list of directives\n *\n * @param dir The `NgModel` directive instance.\n */\n removeControl(dir) {\n resolvedPromise$1.then(() => {\n const container = this._findContainer(dir.path);\n if (container) {\n container.removeControl(dir.name);\n }\n this._directives.delete(dir);\n });\n }\n /**\n * @description\n * Adds a new `NgModelGroup` directive instance to the form.\n *\n * @param dir The `NgModelGroup` directive instance.\n */\n addFormGroup(dir) {\n resolvedPromise$1.then(() => {\n const container = this._findContainer(dir.path);\n const group = new FormGroup({});\n setUpFormContainer(group, dir);\n container.registerControl(dir.name, group);\n group.updateValueAndValidity({ emitEvent: false });\n });\n }\n /**\n * @description\n * Removes the `NgModelGroup` directive instance from the form.\n *\n * @param dir The `NgModelGroup` directive instance.\n */\n removeFormGroup(dir) {\n resolvedPromise$1.then(() => {\n const container = this._findContainer(dir.path);\n if (container) {\n container.removeControl(dir.name);\n }\n });\n }\n /**\n * @description\n * Retrieves the `FormGroup` for a provided `NgModelGroup` directive instance\n *\n * @param dir The `NgModelGroup` directive instance.\n */\n getFormGroup(dir) {\n return this.form.get(dir.path);\n }\n /**\n * Sets the new value for the provided `NgControl` directive.\n *\n * @param dir The `NgControl` directive instance.\n * @param value The new value for the directive's control.\n */\n updateModel(dir, value) {\n resolvedPromise$1.then(() => {\n const ctrl = this.form.get(dir.path);\n ctrl.setValue(value);\n });\n }\n /**\n * @description\n * Sets the value for this `FormGroup`.\n *\n * @param value The new value\n */\n setValue(value) {\n this.control.setValue(value);\n }\n /**\n * @description\n * Method called when the \"submit\" event is triggered on the form.\n * Triggers the `ngSubmit` emitter to emit the \"submit\" event as its payload.\n *\n * @param $event The \"submit\" event object\n */\n onSubmit($event) {\n this.submitted = true;\n syncPendingControls(this.form, this._directives);\n this.ngSubmit.emit($event);\n return false;\n }\n /**\n * @description\n * Method called when the \"reset\" event is triggered on the form.\n */\n onReset() {\n this.resetForm();\n }\n /**\n * @description\n * Resets the form to an initial value and resets its submitted status.\n *\n * @param value The new value for the form.\n */\n resetForm(value = undefined) {\n this.form.reset(value);\n this.submitted = false;\n }\n _setUpdateStrategy() {\n if (this.options && this.options.updateOn != null) {\n this.form._updateOn = this.options.updateOn;\n }\n }\n _findContainer(path) {\n path.pop();\n return path.length ? this.form.get(path) : this.form;\n }\n}\nNgForm.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: NgForm, deps: [{ token: NG_VALIDATORS, optional: true, self: true }, { token: NG_ASYNC_VALIDATORS, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive });\nNgForm.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.5\", type: NgForm, selector: \"form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]\", inputs: { options: [\"ngFormOptions\", \"options\"] }, outputs: { ngSubmit: \"ngSubmit\" }, host: { listeners: { \"submit\": \"onSubmit($event)\", \"reset\": \"onReset()\" } }, providers: [formDirectiveProvider$1], exportAs: [\"ngForm\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: NgForm, decorators: [{\n type: Directive,\n args: [{\n selector: 'form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]',\n providers: [formDirectiveProvider$1],\n host: { '(submit)': 'onSubmit($event)', '(reset)': 'onReset()' },\n outputs: ['ngSubmit'],\n exportAs: 'ngForm'\n }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [NG_VALIDATORS]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [NG_ASYNC_VALIDATORS]\n }] }];\n }, propDecorators: { options: [{\n type: Input,\n args: ['ngFormOptions']\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 * @description\n * A base class for code shared between the `NgModelGroup` and `FormGroupName` directives.\n *\n * @publicApi\n */\nclass AbstractFormGroupDirective extends ControlContainer {\n /** @nodoc */\n ngOnInit() {\n this._checkParentType();\n // Register the group with its parent group.\n this.formDirective.addFormGroup(this);\n }\n /** @nodoc */\n ngOnDestroy() {\n if (this.formDirective) {\n // Remove the group from its parent group.\n this.formDirective.removeFormGroup(this);\n }\n }\n /**\n * @description\n * The `FormGroup` bound to this directive.\n */\n get control() {\n return this.formDirective.getFormGroup(this);\n }\n /**\n * @description\n * The path to this group from the top-level directive.\n */\n get path() {\n return controlPath(this.name == null ? this.name : this.name.toString(), this._parent);\n }\n /**\n * @description\n * The top-level directive for this group if present, otherwise null.\n */\n get formDirective() {\n return this._parent ? this._parent.formDirective : null;\n }\n /** @internal */\n _checkParentType() { }\n}\nAbstractFormGroupDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: AbstractFormGroupDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nAbstractFormGroupDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.5\", type: AbstractFormGroupDirective, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: AbstractFormGroupDirective, decorators: [{\n type: Directive\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 */\nfunction modelParentException() {\n return new Error(`\n ngModel cannot be used to register form controls with a parent formGroup directive. Try using\n formGroup's partner directive \"formControlName\" instead. Example:\n\n ${formControlNameExample}\n\n Or, if you'd like to avoid registering this form control, indicate that it's standalone in ngModelOptions:\n\n Example:\n\n ${ngModelWithFormGroupExample}`);\n}\nfunction formGroupNameException() {\n return new Error(`\n ngModel cannot be used to register form controls with a parent formGroupName or formArrayName directive.\n\n Option 1: Use formControlName instead of ngModel (reactive strategy):\n\n ${formGroupNameExample}\n\n Option 2: Update ngModel's parent be ngModelGroup (template-driven strategy):\n\n ${ngModelGroupExample}`);\n}\nfunction missingNameException() {\n return new Error(`If ngModel is used within a form tag, either the name attribute must be set or the form\n control must be defined as 'standalone' in ngModelOptions.\n\n Example 1: <input [(ngModel)]=\"person.firstName\" name=\"first\">\n Example 2: <input [(ngModel)]=\"person.firstName\" [ngModelOptions]=\"{standalone: true}\">`);\n}\nfunction modelGroupParentException() {\n return new Error(`\n ngModelGroup cannot be used with a parent formGroup directive.\n\n Option 1: Use formGroupName instead of ngModelGroup (reactive strategy):\n\n ${formGroupNameExample}\n\n Option 2: Use a regular form tag instead of the formGroup directive (template-driven strategy):\n\n ${ngModelGroupExample}`);\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 */\nconst modelGroupProvider = {\n provide: ControlContainer,\n useExisting: forwardRef(() => NgModelGroup)\n};\n/**\n * @description\n * Creates and binds a `FormGroup` instance to a DOM element.\n *\n * This directive can only be used as a child of `NgForm` (within `<form>` tags).\n *\n * Use this directive to validate a sub-group of your form separately from the\n * rest of your form, or if some values in your domain model make more sense\n * to consume together in a nested object.\n *\n * Provide a name for the sub-group and it will become the key\n * for the sub-group in the form's full value. If you need direct access, export the directive into\n * a local template variable using `ngModelGroup` (ex: `#myGroup=\"ngModelGroup\"`).\n *\n * @usageNotes\n *\n * ### Consuming controls in a grouping\n *\n * The following example shows you how to combine controls together in a sub-group\n * of the form.\n *\n * {@example forms/ts/ngModelGroup/ng_model_group_example.ts region='Component'}\n *\n * @ngModule FormsModule\n * @publicApi\n */\nclass NgModelGroup extends AbstractFormGroupDirective {\n constructor(parent, validators, asyncValidators) {\n super();\n this._parent = parent;\n this._setValidators(validators);\n this._setAsyncValidators(asyncValidators);\n }\n /** @internal */\n _checkParentType() {\n if (!(this._parent instanceof NgModelGroup) && !(this._parent instanceof NgForm) &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw modelGroupParentException();\n }\n }\n}\nNgModelGroup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: NgModelGroup, deps: [{ token: ControlContainer, host: true, skipSelf: true }, { token: NG_VALIDATORS, optional: true, self: true }, { token: NG_ASYNC_VALIDATORS, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive });\nNgModelGroup.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.5\", type: NgModelGroup, selector: \"[ngModelGroup]\", inputs: { name: [\"ngModelGroup\", \"name\"] }, providers: [modelGroupProvider], exportAs: [\"ngModelGroup\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: NgModelGroup, decorators: [{\n type: Directive,\n args: [{ selector: '[ngModelGroup]', providers: [modelGroupProvider], exportAs: 'ngModelGroup' }]\n }], ctorParameters: function () {\n return [{ type: ControlContainer, decorators: [{\n type: Host\n }, {\n type: SkipSelf\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [NG_VALIDATORS]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [NG_ASYNC_VALIDATORS]\n }] }];\n }, propDecorators: { name: [{\n type: Input,\n args: ['ngModelGroup']\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 */\nconst formControlBinding$1 = {\n provide: NgControl,\n useExisting: forwardRef(() => NgModel)\n};\n/**\n * `ngModel` forces an additional change detection run when its inputs change:\n * E.g.:\n * ```\n * <div>{{myModel.valid}}</div>\n * <input [(ngModel)]=\"myValue\" #myModel=\"ngModel\">\n * ```\n * I.e. `ngModel` can export itself on the element and then be used in the template.\n * Normally, this would result in expressions before the `input` that use the exported directive\n * to have an old value as they have been\n * dirty checked before. As this is a very common case for `ngModel`, we added this second change\n * detection run.\n *\n * Notes:\n * - this is just one extra run no matter how many `ngModel`s have been changed.\n * - this is a general problem when using `exportAs` for directives!\n */\nconst resolvedPromise = (() => Promise.resolve(null))();\n/**\n * @description\n * Creates a `FormControl` instance from a domain model and binds it\n * to a form control element.\n *\n * The `FormControl` instance tracks the value, user interaction, and\n * validation status of the control and keeps the view synced with the model. If used\n * within a parent form, the directive also registers itself with the form as a child\n * control.\n *\n * This directive is used by itself or as part of a larger form. Use the\n * `ngModel` selector to activate it.\n *\n * It accepts a domain model as an optional `Input`. If you have a one-way binding\n * to `ngModel` with `[]` syntax, changing the domain model's value in the component\n * class sets the value in the view. If you have a two-way binding with `[()]` syntax\n * (also known as 'banana-in-a-box syntax'), the value in the UI always syncs back to\n * the domain model in your class.\n *\n * To inspect the properties of the associated `FormControl` (like the validity state),\n * export the directive into a local template variable using `ngModel` as the key (ex:\n * `#myVar=\"ngModel\"`). You can then access the control using the directive's `control` property.\n * However, the most commonly used properties (like `valid` and `dirty`) also exist on the control\n * for direct access. See a full list of properties directly available in\n * `AbstractControlDirective`.\n *\n * @see `RadioControlValueAccessor`\n * @see `SelectControlValueAccessor`\n *\n * @usageNotes\n *\n * ### Using ngModel on a standalone control\n *\n * The following examples show a simple standalone control using `ngModel`:\n *\n * {@example forms/ts/simpleNgModel/simple_ng_model_example.ts region='Component'}\n *\n * When using the `ngModel` within `<form>` tags, you'll also need to supply a `name` attribute\n * so that the control can be registered with the parent form under that name.\n *\n * In the context of a parent form, it's often unnecessary to include one-way or two-way binding,\n * as the parent form syncs the value for you. You access its properties by exporting it into a\n * local template variable using `ngForm` such as (`#f=\"ngForm\"`). Use the variable where\n * needed on form submission.\n *\n * If you do need to populate initial values into your form, using a one-way binding for\n * `ngModel` tends to be sufficient as long as you use the exported form's value rather\n * than the domain model's value on submit.\n *\n * ### Using ngModel within a form\n *\n * The following example shows controls using `ngModel` within a form:\n *\n * {@example forms/ts/simpleForm/simple_form_example.ts region='Component'}\n *\n * ### Using a standalone ngModel within a group\n *\n * The following example shows you how to use a standalone ngModel control\n * within a form. This controls the display of the form, but doesn't contain form data.\n *\n * ```html\n * <form>\n * <input name=\"login\" ngModel placeholder=\"Login\">\n * <input type=\"checkbox\" ngModel [ngModelOptions]=\"{standalone: true}\"> Show more options?\n * </form>\n * <!-- form value: {login: ''} -->\n * ```\n *\n * ### Setting the ngModel `name` attribute through options\n *\n * The following example shows you an alternate way to set the name attribute. Here,\n * an attribute identified as name is used within a custom form control component. To still be able\n * to specify the NgModel's name, you must specify it using the `ngModelOptions` input instead.\n *\n * ```html\n * <form>\n * <my-custom-form-control name=\"Nancy\" ngModel [ngModelOptions]=\"{name: 'user'}\">\n * </my-custom-form-control>\n * </form>\n * <!-- form value: {user: ''} -->\n * ```\n *\n * @ngModule FormsModule\n * @publicApi\n */\nclass NgModel extends NgControl {\n constructor(parent, validators, asyncValidators, valueAccessors, _changeDetectorRef) {\n super();\n this._changeDetectorRef = _changeDetectorRef;\n this.control = new FormControl();\n /** @internal */\n this._registered = false;\n /**\n * @description\n * Event emitter for producing the `ngModelChange` event after\n * the view model updates.\n */\n this.update = new EventEmitter();\n this._parent = parent;\n this._setValidators(validators);\n this._setAsyncValidators(asyncValidators);\n this.valueAccessor = selectValueAccessor(this, valueAccessors);\n }\n /** @nodoc */\n ngOnChanges(changes) {\n this._checkForErrors();\n if (!this._registered || 'name' in changes) {\n if (this._registered) {\n this._checkName();\n if (this.formDirective) {\n // We can't call `formDirective.removeControl(this)`, because the `name` has already been\n // changed. We also can't reset the name temporarily since the logic in `removeControl`\n // is inside a promise and it won't run immediately. We work around it by giving it an\n // object with the same shape instead.\n const oldName = changes['name'].previousValue;\n this.formDirective.removeControl({ name: oldName, path: this._getPath(oldName) });\n }\n }\n this._setUpControl();\n }\n if ('isDisabled' in changes) {\n this._updateDisabled(changes);\n }\n if (isPropertyUpdated(changes, this.viewModel)) {\n this._updateValue(this.model);\n this.viewModel = this.model;\n }\n }\n /** @nodoc */\n ngOnDestroy() {\n this.formDirective && this.formDirective.removeControl(this);\n }\n /**\n * @description\n * Returns an array that represents the path from the top-level form to this control.\n * Each index is the string name of the control on that level.\n */\n get path() {\n return this._getPath(this.name);\n }\n /**\n * @description\n * The top-level directive for this control if present, otherwise null.\n */\n get formDirective() {\n return this._parent ? this._parent.formDirective : null;\n }\n /**\n * @description\n * Sets the new value for the view model and emits an `ngModelChange` event.\n *\n * @param newValue The new value emitted by `ngModelChange`.\n */\n viewToModelUpdate(newValue) {\n this.viewModel = newValue;\n this.update.emit(newValue);\n }\n _setUpControl() {\n this._setUpdateStrategy();\n this._isStandalone() ? this._setUpStandalone() : this.formDirective.addControl(this);\n this._registered = true;\n }\n _setUpdateStrategy() {\n if (this.options && this.options.updateOn != null) {\n this.control._updateOn = this.options.updateOn;\n }\n }\n _isStandalone() {\n return !this._parent || !!(this.options && this.options.standalone);\n }\n _setUpStandalone() {\n setUpControl(this.control, this);\n this.control.updateValueAndValidity({ emitEvent: false });\n }\n _checkForErrors() {\n if (!this._isStandalone()) {\n this._checkParentType();\n }\n this._checkName();\n }\n _checkParentType() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!(this._parent instanceof NgModelGroup) &&\n this._parent instanceof AbstractFormGroupDirective) {\n throw formGroupNameException();\n }\n else if (!(this._parent instanceof NgModelGroup) && !(this._parent instanceof NgForm)) {\n throw modelParentException();\n }\n }\n }\n _checkName() {\n if (this.options && this.options.name)\n this.name = this.options.name;\n if (!this._isStandalone() && !this.name && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw missingNameException();\n }\n }\n _updateValue(value) {\n resolvedPromise.then(() => {\n var _a;\n this.control.setValue(value, { emitViewToModelChange: false });\n (_a = this._changeDetectorRef) === null || _a === void 0 ? void 0 : _a.markForCheck();\n });\n }\n _updateDisabled(changes) {\n const disabledValue = changes['isDisabled'].currentValue;\n const isDisabled = disabledValue === '' || (disabledValue && disabledValue !== 'false');\n resolvedPromise.then(() => {\n var _a;\n if (isDisabled && !this.control.disabled) {\n this.control.disable();\n }\n else if (!isDisabled && this.control.disabled) {\n this.control.enable();\n }\n (_a = this._changeDetectorRef) === null || _a === void 0 ? void 0 : _a.markForCheck();\n });\n }\n _getPath(controlName) {\n return this._parent ? controlPath(controlName, this._parent) : [controlName];\n }\n}\nNgModel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: NgModel, deps: [{ token: ControlContainer, host: true, optional: true }, { token: NG_VALIDATORS, optional: true, self: true }, { token: NG_ASYNC_VALIDATORS, optional: true, self: true }, { token: NG_VALUE_ACCESSOR, optional: true, self: true }, { token: ChangeDetectorRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nNgModel.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.5\", type: NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: { name: \"name\", isDisabled: [\"disabled\", \"isDisabled\"], model: [\"ngModel\", \"model\"], options: [\"ngModelOptions\", \"options\"] }, outputs: { update: \"ngModelChange\" }, providers: [formControlBinding$1], exportAs: [\"ngModel\"], usesInheritance: true, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: NgModel, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngModel]:not([formControlName]):not([formControl])',\n providers: [formControlBinding$1],\n exportAs: 'ngModel'\n }]\n }], ctorParameters: function () {\n return [{ type: ControlContainer, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [NG_VALIDATORS]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [NG_ASYNC_VALIDATORS]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [NG_VALUE_ACCESSOR]\n }] }, { type: i0.ChangeDetectorRef, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ChangeDetectorRef]\n }] }];\n }, propDecorators: { name: [{\n type: Input\n }], isDisabled: [{\n type: Input,\n args: ['disabled']\n }], model: [{\n type: Input,\n args: ['ngModel']\n }], options: [{\n type: Input,\n args: ['ngModelOptions']\n }], update: [{\n type: Output,\n args: ['ngModelChange']\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 * @description\n *\n * Adds `novalidate` attribute to all forms by default.\n *\n * `novalidate` is used to disable browser's native form validation.\n *\n * If you want to use native validation with Angular forms, just add `ngNativeValidate` attribute:\n *\n * ```\n * <form ngNativeValidate></form>\n * ```\n *\n * @publicApi\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n */\nclass ɵNgNoValidate {\n}\nɵNgNoValidate.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: ɵNgNoValidate, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nɵNgNoValidate.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.5\", type: ɵNgNoValidate, selector: \"form:not([ngNoForm]):not([ngNativeValidate])\", host: { attributes: { \"novalidate\": \"\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: ɵNgNoValidate, decorators: [{\n type: Directive,\n args: [{\n selector: 'form:not([ngNoForm]):not([ngNativeValidate])',\n host: { 'novalidate': '' },\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 */\nconst NUMBER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NumberValueAccessor),\n multi: true\n};\n/**\n * @description\n * The `ControlValueAccessor` for writing a number value and listening to number input changes.\n * The value accessor is used by the `FormControlDirective`, `FormControlName`, and `NgModel`\n * directives.\n *\n * @usageNotes\n *\n * ### Using a number input with a reactive form.\n *\n * The following example shows how to use a number input with a reactive form.\n *\n * ```ts\n * const totalCountControl = new FormControl();\n * ```\n *\n * ```\n * <input type=\"number\" [formControl]=\"totalCountControl\">\n * ```\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nclass NumberValueAccessor extends BuiltInControlValueAccessor {\n /**\n * Sets the \"value\" property on the input element.\n * @nodoc\n */\n writeValue(value) {\n // The value needs to be normalized for IE9, otherwise it is set to 'null' when null\n const normalizedValue = value == null ? '' : value;\n this.setProperty('value', normalizedValue);\n }\n /**\n * Registers a function called when the control value changes.\n * @nodoc\n */\n registerOnChange(fn) {\n this.onChange = (value) => {\n fn(value == '' ? null : parseFloat(value));\n };\n }\n}\nNumberValueAccessor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: NumberValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nNumberValueAccessor.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.5\", type: NumberValueAccessor, selector: \"input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]\", host: { listeners: { \"input\": \"onChange($event.target.value)\", \"blur\": \"onTouched()\" } }, providers: [NUMBER_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: NumberValueAccessor, decorators: [{\n type: Directive,\n args: [{\n selector: 'input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]',\n host: { '(input)': 'onChange($event.target.value)', '(blur)': 'onTouched()' },\n providers: [NUMBER_VALUE_ACCESSOR]\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 */\nconst RADIO_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioControlValueAccessor),\n multi: true\n};\nfunction throwNameError() {\n throw new Error(`\n If you define both a name and a formControlName attribute on your radio button, their values\n must match. Ex: <input type=\"radio\" formControlName=\"food\" name=\"food\">\n `);\n}\n/**\n * Internal-only NgModule that works as a host for the `RadioControlRegistry` tree-shakable\n * provider. Note: the `InternalFormsSharedModule` can not be used here directly, since it's\n * declared *after* the `RadioControlRegistry` class and the `providedIn` doesn't support\n * `forwardRef` logic.\n */\nclass RadioControlRegistryModule {\n}\nRadioControlRegistryModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: RadioControlRegistryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nRadioControlRegistryModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: RadioControlRegistryModule });\nRadioControlRegistryModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: RadioControlRegistryModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: RadioControlRegistryModule, decorators: [{\n type: NgModule\n }] });\n/**\n * @description\n * Class used by Angular to track radio buttons. For internal use only.\n */\nclass RadioControlRegistry {\n constructor() {\n this._accessors = [];\n }\n /**\n * @description\n * Adds a control to the internal registry. For internal use only.\n */\n add(control, accessor) {\n this._accessors.push([control, accessor]);\n }\n /**\n * @description\n * Removes a control from the internal registry. For internal use only.\n */\n remove(accessor) {\n for (let i = this._accessors.length - 1; i >= 0; --i) {\n if (this._accessors[i][1] === accessor) {\n this._accessors.splice(i, 1);\n return;\n }\n }\n }\n /**\n * @description\n * Selects a radio button. For internal use only.\n */\n select(accessor) {\n this._accessors.forEach((c) => {\n if (this._isSameGroup(c, accessor) && c[1] !== accessor) {\n c[1].fireUncheck(accessor.value);\n }\n });\n }\n _isSameGroup(controlPair, accessor) {\n if (!controlPair[0].control)\n return false;\n return controlPair[0]._parent === accessor._control._parent &&\n controlPair[1].name === accessor.name;\n }\n}\nRadioControlRegistry.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: RadioControlRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nRadioControlRegistry.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: RadioControlRegistry, providedIn: RadioControlRegistryModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: RadioControlRegistry, decorators: [{\n type: Injectable,\n args: [{ providedIn: RadioControlRegistryModule }]\n }] });\n/**\n * @description\n * The `ControlValueAccessor` for writing radio control values and listening to radio control\n * changes. The value accessor is used by the `FormControlDirective`, `FormControlName`, and\n * `NgModel` directives.\n *\n * @usageNotes\n *\n * ### Using radio buttons with reactive form directives\n *\n * The follow example shows how to use radio buttons in a reactive form. When using radio buttons in\n * a reactive form, radio buttons in the same group should have the same `formControlName`.\n * Providing a `name` attribute is optional.\n *\n * {@example forms/ts/reactiveRadioButtons/reactive_radio_button_example.ts region='Reactive'}\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nclass RadioControlValueAccessor extends BuiltInControlValueAccessor {\n constructor(renderer, elementRef, _registry, _injector) {\n super(renderer, elementRef);\n this._registry = _registry;\n this._injector = _injector;\n /**\n * The registered callback function called when a change event occurs on the input element.\n * Note: we declare `onChange` here (also used as host listener) as a function with no arguments\n * to override the `onChange` function (which expects 1 argument) in the parent\n * `BaseControlValueAccessor` class.\n * @nodoc\n */\n this.onChange = () => { };\n }\n /** @nodoc */\n ngOnInit() {\n this._control = this._injector.get(NgControl);\n this._checkName();\n this._registry.add(this._control, this);\n }\n /** @nodoc */\n ngOnDestroy() {\n this._registry.remove(this);\n }\n /**\n * Sets the \"checked\" property value on the radio input element.\n * @nodoc\n */\n writeValue(value) {\n this._state = value === this.value;\n this.setProperty('checked', this._state);\n }\n /**\n * Registers a function called when the control value changes.\n * @nodoc\n */\n registerOnChange(fn) {\n this._fn = fn;\n this.onChange = () => {\n fn(this.value);\n this._registry.select(this);\n };\n }\n /**\n * Sets the \"value\" on the radio input element and unchecks it.\n *\n * @param value\n */\n fireUncheck(value) {\n this.writeValue(value);\n }\n _checkName() {\n if (this.name && this.formControlName && this.name !== this.formControlName &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwNameError();\n }\n if (!this.name && this.formControlName)\n this.name = this.formControlName;\n }\n}\nRadioControlValueAccessor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: RadioControlValueAccessor, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: RadioControlRegistry }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });\nRadioControlValueAccessor.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.5\", type: RadioControlValueAccessor, selector: \"input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]\", inputs: { name: \"name\", formControlName: \"formControlName\", value: \"value\" }, host: { listeners: { \"change\": \"onChange()\", \"blur\": \"onTouched()\" } }, providers: [RADIO_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: RadioControlValueAccessor, decorators: [{\n type: Directive,\n args: [{\n selector: 'input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]',\n host: { '(change)': 'onChange()', '(blur)': 'onTouched()' },\n providers: [RADIO_VALUE_ACCESSOR]\n }]\n }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: RadioControlRegistry }, { type: i0.Injector }]; }, propDecorators: { name: [{\n type: Input\n }], formControlName: [{\n type: Input\n }], value: [{\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 */\nconst RANGE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RangeValueAccessor),\n multi: true\n};\n/**\n * @description\n * The `ControlValueAccessor` for writing a range value and listening to range input changes.\n * The value accessor is used by the `FormControlDirective`, `FormControlName`, and `NgModel`\n * directives.\n *\n * @usageNotes\n *\n * ### Using a range input with a reactive form\n *\n * The following example shows how to use a range input with a reactive form.\n *\n * ```ts\n * const ageControl = new FormControl();\n * ```\n *\n * ```\n * <input type=\"range\" [formControl]=\"ageControl\">\n * ```\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nclass RangeValueAccessor extends BuiltInControlValueAccessor {\n /**\n * Sets the \"value\" property on the input element.\n * @nodoc\n */\n writeValue(value) {\n this.setProperty('value', parseFloat(value));\n }\n /**\n * Registers a function called when the control value changes.\n * @nodoc\n */\n registerOnChange(fn) {\n this.onChange = (value) => {\n fn(value == '' ? null : parseFloat(value));\n };\n }\n}\nRangeValueAccessor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: RangeValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nRangeValueAccessor.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.5\", type: RangeValueAccessor, selector: \"input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]\", host: { listeners: { \"change\": \"onChange($event.target.value)\", \"input\": \"onChange($event.target.value)\", \"blur\": \"onTouched()\" } }, providers: [RANGE_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: RangeValueAccessor, decorators: [{\n type: Directive,\n args: [{\n selector: 'input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]',\n host: {\n '(change)': 'onChange($event.target.value)',\n '(input)': 'onChange($event.target.value)',\n '(blur)': 'onTouched()'\n },\n providers: [RANGE_VALUE_ACCESSOR]\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 * Token to provide to turn off the ngModel warning on formControl and formControlName.\n */\nconst NG_MODEL_WITH_FORM_CONTROL_WARNING = new InjectionToken('NgModelWithFormControlWarning');\nconst formControlBinding = {\n provide: NgControl,\n useExisting: forwardRef(() => FormControlDirective)\n};\n/**\n * @description\n * Synchronizes a standalone `FormControl` instance to a form control element.\n *\n * Note that support for using the `ngModel` input property and `ngModelChange` event with reactive\n * form directives was deprecated in Angular v6 and is scheduled for removal in\n * a future version of Angular.\n * For details, see [Deprecated features](guide/deprecations#ngmodel-with-reactive-forms).\n *\n * @see [Reactive Forms Guide](guide/reactive-forms)\n * @see `FormControl`\n * @see `AbstractControl`\n *\n * @usageNotes\n *\n * The following example shows how to register a standalone control and set its value.\n *\n * {@example forms/ts/simpleFormControl/simple_form_control_example.ts region='Component'}\n *\n * @ngModule ReactiveFormsModule\n * @publicApi\n */\nclass FormControlDirective extends NgControl {\n constructor(validators, asyncValidators, valueAccessors, _ngModelWarningConfig) {\n super();\n this._ngModelWarningConfig = _ngModelWarningConfig;\n /** @deprecated as of v6 */\n this.update = new EventEmitter();\n /**\n * @description\n * Instance property used to track whether an ngModel warning has been sent out for this\n * particular `FormControlDirective` instance. Used to support warning config of \"always\".\n *\n * @internal\n */\n this._ngModelWarningSent = false;\n this._setValidators(validators);\n this._setAsyncValidators(asyncValidators);\n this.valueAccessor = selectValueAccessor(this, valueAccessors);\n }\n /**\n * @description\n * Triggers a warning in dev mode that this input should not be used with reactive forms.\n */\n set isDisabled(isDisabled) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n console.warn(disabledAttrWarning);\n }\n }\n /** @nodoc */\n ngOnChanges(changes) {\n if (this._isControlChanged(changes)) {\n const previousForm = changes['form'].previousValue;\n if (previousForm) {\n cleanUpControl(previousForm, this, /* validateControlPresenceOnChange */ false);\n }\n setUpControl(this.form, this);\n if (this.control.disabled && this.valueAccessor.setDisabledState) {\n this.valueAccessor.setDisabledState(true);\n }\n this.form.updateValueAndValidity({ emitEvent: false });\n }\n if (isPropertyUpdated(changes, this.viewModel)) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n _ngModelWarning('formControl', FormControlDirective, this, this._ngModelWarningConfig);\n }\n this.form.setValue(this.model);\n this.viewModel = this.model;\n }\n }\n /** @nodoc */\n ngOnDestroy() {\n if (this.form) {\n cleanUpControl(this.form, this, /* validateControlPresenceOnChange */ false);\n }\n }\n /**\n * @description\n * Returns an array that represents the path from the top-level form to this control.\n * Each index is the string name of the control on that level.\n */\n get path() {\n return [];\n }\n /**\n * @description\n * The `FormControl` bound to this directive.\n */\n get control() {\n return this.form;\n }\n /**\n * @description\n * Sets the new value for the view model and emits an `ngModelChange` event.\n *\n * @param newValue The new value for the view model.\n */\n viewToModelUpdate(newValue) {\n this.viewModel = newValue;\n this.update.emit(newValue);\n }\n _isControlChanged(changes) {\n return changes.hasOwnProperty('form');\n }\n}\n/**\n * @description\n * Static property used to track whether any ngModel warnings have been sent across\n * all instances of FormControlDirective. Used to support warning config of \"once\".\n *\n * @internal\n */\nFormControlDirective._ngModelWarningSentOnce = false;\nFormControlDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: FormControlDirective, deps: [{ token: NG_VALIDATORS, optional: true, self: true }, { token: NG_ASYNC_VALIDATORS, optional: true, self: true }, { token: NG_VALUE_ACCESSOR, optional: true, self: true }, { token: NG_MODEL_WITH_FORM_CONTROL_WARNING, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nFormControlDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.5\", type: FormControlDirective, selector: \"[formControl]\", inputs: { form: [\"formControl\", \"form\"], isDisabled: [\"disabled\", \"isDisabled\"], model: [\"ngModel\", \"model\"] }, outputs: { update: \"ngModelChange\" }, providers: [formControlBinding], exportAs: [\"ngForm\"], usesInheritance: true, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: FormControlDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[formControl]', providers: [formControlBinding], exportAs: 'ngForm' }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [NG_VALIDATORS]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [NG_ASYNC_VALIDATORS]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [NG_VALUE_ACCESSOR]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [NG_MODEL_WITH_FORM_CONTROL_WARNING]\n }] }];\n }, propDecorators: { form: [{\n type: Input,\n args: ['formControl']\n }], isDisabled: [{\n type: Input,\n args: ['disabled']\n }], model: [{\n type: Input,\n args: ['ngModel']\n }], update: [{\n type: Output,\n args: ['ngModelChange']\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 */\nconst formDirectiveProvider = {\n provide: ControlContainer,\n useExisting: forwardRef(() => FormGroupDirective)\n};\n/**\n * @description\n *\n * Binds an existing `FormGroup` to a DOM element.\n *\n * This directive accepts an existing `FormGroup` instance. It will then use this\n * `FormGroup` instance to match any child `FormControl`, `FormGroup`,\n * and `FormArray` instances to child `FormControlName`, `FormGroupName`,\n * and `FormArrayName` directives.\n *\n * @see [Reactive Forms Guide](guide/reactive-forms)\n * @see `AbstractControl`\n *\n * @usageNotes\n * ### Register Form Group\n *\n * The following example registers a `FormGroup` with first name and last name controls,\n * and listens for the *ngSubmit* event when the button is clicked.\n *\n * {@example forms/ts/simpleFormGroup/simple_form_group_example.ts region='Component'}\n *\n * @ngModule ReactiveFormsModule\n * @publicApi\n */\nclass FormGroupDirective extends ControlContainer {\n constructor(validators, asyncValidators) {\n super();\n this.validators = validators;\n this.asyncValidators = asyncValidators;\n /**\n * @description\n * Reports whether the form submission has been triggered.\n */\n this.submitted = false;\n /**\n * Callback that should be invoked when controls in FormGroup or FormArray collection change\n * (added or removed). This callback triggers corresponding DOM updates.\n */\n this._onCollectionChange = () => this._updateDomValue();\n /**\n * @description\n * Tracks the list of added `FormControlName` instances\n */\n this.directives = [];\n /**\n * @description\n * Tracks the `FormGroup` bound to this directive.\n */\n this.form = null;\n /**\n * @description\n * Emits an event when the form submission has been triggered.\n */\n this.ngSubmit = new EventEmitter();\n this._setValidators(validators);\n this._setAsyncValidators(asyncValidators);\n }\n /** @nodoc */\n ngOnChanges(changes) {\n this._checkFormPresent();\n if (changes.hasOwnProperty('form')) {\n this._updateValidators();\n this._updateDomValue();\n this._updateRegistrations();\n this._oldForm = this.form;\n }\n }\n /** @nodoc */\n ngOnDestroy() {\n if (this.form) {\n cleanUpValidators(this.form, this);\n // Currently the `onCollectionChange` callback is rewritten each time the\n // `_registerOnCollectionChange` function is invoked. The implication is that cleanup should\n // happen *only* when the `onCollectionChange` callback was set by this directive instance.\n // Otherwise it might cause overriding a callback of some other directive instances. We should\n // consider updating this logic later to make it similar to how `onChange` callbacks are\n // handled, see https://github.com/angular/angular/issues/39732 for additional info.\n if (this.form._onCollectionChange === this._onCollectionChange) {\n this.form._registerOnCollectionChange(() => { });\n }\n }\n }\n /**\n * @description\n * Returns this directive's instance.\n */\n get formDirective() {\n return this;\n }\n /**\n * @description\n * Returns the `FormGroup` bound to this directive.\n */\n get control() {\n return this.form;\n }\n /**\n * @description\n * Returns an array representing the path to this group. Because this directive\n * always lives at the top level of a form, it always an empty array.\n */\n get path() {\n return [];\n }\n /**\n * @description\n * Method that sets up the control directive in this group, re-calculates its value\n * and validity, and adds the instance to the internal list of directives.\n *\n * @param dir The `FormControlName` directive instance.\n */\n addControl(dir) {\n const ctrl = this.form.get(dir.path);\n setUpControl(ctrl, dir);\n ctrl.updateValueAndValidity({ emitEvent: false });\n this.directives.push(dir);\n return ctrl;\n }\n /**\n * @description\n * Retrieves the `FormControl` instance from the provided `FormControlName` directive\n *\n * @param dir The `FormControlName` directive instance.\n */\n getControl(dir) {\n return this.form.get(dir.path);\n }\n /**\n * @description\n * Removes the `FormControlName` instance from the internal list of directives\n *\n * @param dir The `FormControlName` directive instance.\n */\n removeControl(dir) {\n cleanUpControl(dir.control || null, dir, /* validateControlPresenceOnChange */ false);\n removeListItem(this.directives, dir);\n }\n /**\n * Adds a new `FormGroupName` directive instance to the form.\n *\n * @param dir The `FormGroupName` directive instance.\n */\n addFormGroup(dir) {\n this._setUpFormContainer(dir);\n }\n /**\n * Performs the necessary cleanup when a `FormGroupName` directive instance is removed from the\n * view.\n *\n * @param dir The `FormGroupName` directive instance.\n */\n removeFormGroup(dir) {\n this._cleanUpFormContainer(dir);\n }\n /**\n * @description\n * Retrieves the `FormGroup` for a provided `FormGroupName` directive instance\n *\n * @param dir The `FormGroupName` directive instance.\n */\n getFormGroup(dir) {\n return this.form.get(dir.path);\n }\n /**\n * Performs the necessary setup when a `FormArrayName` directive instance is added to the view.\n *\n * @param dir The `FormArrayName` directive instance.\n */\n addFormArray(dir) {\n this._setUpFormContainer(dir);\n }\n /**\n * Performs the necessary cleanup when a `FormArrayName` directive instance is removed from the\n * view.\n *\n * @param dir The `FormArrayName` directive instance.\n */\n removeFormArray(dir) {\n this._cleanUpFormContainer(dir);\n }\n /**\n * @description\n * Retrieves the `FormArray` for a provided `FormArrayName` directive instance.\n *\n * @param dir The `FormArrayName` directive instance.\n */\n getFormArray(dir) {\n return this.form.get(dir.path);\n }\n /**\n * Sets the new value for the provided `FormControlName` directive.\n *\n * @param dir The `FormControlName` directive instance.\n * @param value The new value for the directive's control.\n */\n updateModel(dir, value) {\n const ctrl = this.form.get(dir.path);\n ctrl.setValue(value);\n }\n /**\n * @description\n * Method called with the \"submit\" event is triggered on the form.\n * Triggers the `ngSubmit` emitter to emit the \"submit\" event as its payload.\n *\n * @param $event The \"submit\" event object\n */\n onSubmit($event) {\n this.submitted = true;\n syncPendingControls(this.form, this.directives);\n this.ngSubmit.emit($event);\n return false;\n }\n /**\n * @description\n * Method called when the \"reset\" event is triggered on the form.\n */\n onReset() {\n this.resetForm();\n }\n /**\n * @description\n * Resets the form to an initial value and resets its submitted status.\n *\n * @param value The new value for the form.\n */\n resetForm(value = undefined) {\n this.form.reset(value);\n this.submitted = false;\n }\n /** @internal */\n _updateDomValue() {\n this.directives.forEach(dir => {\n const oldCtrl = dir.control;\n const newCtrl = this.form.get(dir.path);\n if (oldCtrl !== newCtrl) {\n // Note: the value of the `dir.control` may not be defined, for example when it's a first\n // `FormControl` that is added to a `FormGroup` instance (via `addControl` call).\n cleanUpControl(oldCtrl || null, dir);\n // Check whether new control at the same location inside the corresponding `FormGroup` is an\n // instance of `FormControl` and perform control setup only if that's the case.\n // Note: we don't need to clear the list of directives (`this.directives`) here, it would be\n // taken care of in the `removeControl` method invoked when corresponding `formControlName`\n // directive instance is being removed (invoked from `FormControlName.ngOnDestroy`).\n if (isFormControl(newCtrl)) {\n setUpControl(newCtrl, dir);\n dir.control = newCtrl;\n }\n }\n });\n this.form._updateTreeValidity({ emitEvent: false });\n }\n _setUpFormContainer(dir) {\n const ctrl = this.form.get(dir.path);\n setUpFormContainer(ctrl, dir);\n // NOTE: this operation looks unnecessary in case no new validators were added in\n // `setUpFormContainer` call. Consider updating this code to match the logic in\n // `_cleanUpFormContainer` function.\n ctrl.updateValueAndValidity({ emitEvent: false });\n }\n _cleanUpFormContainer(dir) {\n if (this.form) {\n const ctrl = this.form.get(dir.path);\n if (ctrl) {\n const isControlUpdated = cleanUpFormContainer(ctrl, dir);\n if (isControlUpdated) {\n // Run validity check only in case a control was updated (i.e. view validators were\n // removed) as removing view validators might cause validity to change.\n ctrl.updateValueAndValidity({ emitEvent: false });\n }\n }\n }\n }\n _updateRegistrations() {\n this.form._registerOnCollectionChange(this._onCollectionChange);\n if (this._oldForm) {\n this._oldForm._registerOnCollectionChange(() => { });\n }\n }\n _updateValidators() {\n setUpValidators(this.form, this);\n if (this._oldForm) {\n cleanUpValidators(this._oldForm, this);\n }\n }\n _checkFormPresent() {\n if (!this.form && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw missingFormException();\n }\n }\n}\nFormGroupDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: FormGroupDirective, deps: [{ token: NG_VALIDATORS, optional: true, self: true }, { token: NG_ASYNC_VALIDATORS, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive });\nFormGroupDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.5\", type: FormGroupDirective, selector: \"[formGroup]\", inputs: { form: [\"formGroup\", \"form\"] }, outputs: { ngSubmit: \"ngSubmit\" }, host: { listeners: { \"submit\": \"onSubmit($event)\", \"reset\": \"onReset()\" } }, providers: [formDirectiveProvider], exportAs: [\"ngForm\"], usesInheritance: true, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: FormGroupDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[formGroup]',\n providers: [formDirectiveProvider],\n host: { '(submit)': 'onSubmit($event)', '(reset)': 'onReset()' },\n exportAs: 'ngForm'\n }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [NG_VALIDATORS]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [NG_ASYNC_VALIDATORS]\n }] }];\n }, propDecorators: { form: [{\n type: Input,\n args: ['formGroup']\n }], ngSubmit: [{\n type: Output\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 */\nconst formGroupNameProvider = {\n provide: ControlContainer,\n useExisting: forwardRef(() => FormGroupName)\n};\n/**\n * @description\n *\n * Syncs a nested `FormGroup` to a DOM element.\n *\n * This directive can only be used with a parent `FormGroupDirective`.\n *\n * It accepts the string name of the nested `FormGroup` to link, and\n * looks for a `FormGroup` registered with that name in the parent\n * `FormGroup` instance you passed into `FormGroupDirective`.\n *\n * Use nested form groups to validate a sub-group of a\n * form separately from the rest or to group the values of certain\n * controls into their own nested object.\n *\n * @see [Reactive Forms Guide](guide/reactive-forms)\n *\n * @usageNotes\n *\n * ### Access the group by name\n *\n * The following example uses the `AbstractControl.get` method to access the\n * associated `FormGroup`\n *\n * ```ts\n * this.form.get('name');\n * ```\n *\n * ### Access individual controls in the group\n *\n * The following example uses the `AbstractControl.get` method to access\n * individual controls within the group using dot syntax.\n *\n * ```ts\n * this.form.get('name.first');\n * ```\n *\n * ### Register a nested `FormGroup`.\n *\n * The following example registers a nested *name* `FormGroup` within an existing `FormGroup`,\n * and provides methods to retrieve the nested `FormGroup` and individual controls.\n *\n * {@example forms/ts/nestedFormGroup/nested_form_group_example.ts region='Component'}\n *\n * @ngModule ReactiveFormsModule\n * @publicApi\n */\nclass FormGroupName extends AbstractFormGroupDirective {\n constructor(parent, validators, asyncValidators) {\n super();\n this._parent = parent;\n this._setValidators(validators);\n this._setAsyncValidators(asyncValidators);\n }\n /** @internal */\n _checkParentType() {\n if (_hasInvalidParent(this._parent) && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw groupParentException();\n }\n }\n}\nFormGroupName.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: FormGroupName, deps: [{ token: ControlContainer, host: true, optional: true, skipSelf: true }, { token: NG_VALIDATORS, optional: true, self: true }, { token: NG_ASYNC_VALIDATORS, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive });\nFormGroupName.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.5\", type: FormGroupName, selector: \"[formGroupName]\", inputs: { name: [\"formGroupName\", \"name\"] }, providers: [formGroupNameProvider], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: FormGroupName, decorators: [{\n type: Directive,\n args: [{ selector: '[formGroupName]', providers: [formGroupNameProvider] }]\n }], ctorParameters: function () {\n return [{ type: ControlContainer, decorators: [{\n type: Optional\n }, {\n type: Host\n }, {\n type: SkipSelf\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [NG_VALIDATORS]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [NG_ASYNC_VALIDATORS]\n }] }];\n }, propDecorators: { name: [{\n type: Input,\n args: ['formGroupName']\n }] } });\nconst formArrayNameProvider = {\n provide: ControlContainer,\n useExisting: forwardRef(() => FormArrayName)\n};\n/**\n * @description\n *\n * Syncs a nested `FormArray` to a DOM element.\n *\n * This directive is designed to be used with a parent `FormGroupDirective` (selector:\n * `[formGroup]`).\n *\n * It accepts the string name of the nested `FormArray` you want to link, and\n * will look for a `FormArray` registered with that name in the parent\n * `FormGroup` instance you passed into `FormGroupDirective`.\n *\n * @see [Reactive Forms Guide](guide/reactive-forms)\n * @see `AbstractControl`\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example forms/ts/nestedFormArray/nested_form_array_example.ts region='Component'}\n *\n * @ngModule ReactiveFormsModule\n * @publicApi\n */\nclass FormArrayName extends ControlContainer {\n constructor(parent, validators, asyncValidators) {\n super();\n this._parent = parent;\n this._setValidators(validators);\n this._setAsyncValidators(asyncValidators);\n }\n /**\n * A lifecycle method called when the directive's inputs are initialized. For internal use only.\n * @throws If the directive does not have a valid parent.\n * @nodoc\n */\n ngOnInit() {\n this._checkParentType();\n this.formDirective.addFormArray(this);\n }\n /**\n * A lifecycle method called before the directive's instance is destroyed. For internal use only.\n * @nodoc\n */\n ngOnDestroy() {\n if (this.formDirective) {\n this.formDirective.removeFormArray(this);\n }\n }\n /**\n * @description\n * The `FormArray` bound to this directive.\n */\n get control() {\n return this.formDirective.getFormArray(this);\n }\n /**\n * @description\n * The top-level directive for this group if present, otherwise null.\n */\n get formDirective() {\n return this._parent ? this._parent.formDirective : null;\n }\n /**\n * @description\n * Returns an array that represents the path from the top-level form to this control.\n * Each index is the string name of the control on that level.\n */\n get path() {\n return controlPath(this.name == null ? this.name : this.name.toString(), this._parent);\n }\n _checkParentType() {\n if (_hasInvalidParent(this._parent) && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw arrayParentException();\n }\n }\n}\nFormArrayName.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: FormArrayName, deps: [{ token: ControlContainer, host: true, optional: true, skipSelf: true }, { token: NG_VALIDATORS, optional: true, self: true }, { token: NG_ASYNC_VALIDATORS, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive });\nFormArrayName.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.5\", type: FormArrayName, selector: \"[formArrayName]\", inputs: { name: [\"formArrayName\", \"name\"] }, providers: [formArrayNameProvider], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: FormArrayName, decorators: [{\n type: Directive,\n args: [{ selector: '[formArrayName]', providers: [formArrayNameProvider] }]\n }], ctorParameters: function () {\n return [{ type: ControlContainer, decorators: [{\n type: Optional\n }, {\n type: Host\n }, {\n type: SkipSelf\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [NG_VALIDATORS]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [NG_ASYNC_VALIDATORS]\n }] }];\n }, propDecorators: { name: [{\n type: Input,\n args: ['formArrayName']\n }] } });\nfunction _hasInvalidParent(parent) {\n return !(parent instanceof FormGroupName) && !(parent instanceof FormGroupDirective) &&\n !(parent instanceof FormArrayName);\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 */\nconst controlNameBinding = {\n provide: NgControl,\n useExisting: forwardRef(() => FormControlName)\n};\n/**\n * @description\n * Syncs a `FormControl` in an existing `FormGroup` to a form control\n * element by name.\n *\n * @see [Reactive Forms Guide](guide/reactive-forms)\n * @see `FormControl`\n * @see `AbstractControl`\n *\n * @usageNotes\n *\n * ### Register `FormControl` within a group\n *\n * The following example shows how to register multiple form controls within a form group\n * and set their value.\n *\n * {@example forms/ts/simpleFormGroup/simple_form_group_example.ts region='Component'}\n *\n * To see `formControlName` examples with different form control types, see:\n *\n * * Radio buttons: `RadioControlValueAccessor`\n * * Selects: `SelectControlValueAccessor`\n *\n * ### Use with ngModel is deprecated\n *\n * Support for using the `ngModel` input property and `ngModelChange` event with reactive\n * form directives has been deprecated in Angular v6 and is scheduled for removal in\n * a future version of Angular.\n *\n * For details, see [Deprecated features](guide/deprecations#ngmodel-with-reactive-forms).\n *\n * @ngModule ReactiveFormsModule\n * @publicApi\n */\nclass FormControlName extends NgControl {\n constructor(parent, validators, asyncValidators, valueAccessors, _ngModelWarningConfig) {\n super();\n this._ngModelWarningConfig = _ngModelWarningConfig;\n this._added = false;\n /** @deprecated as of v6 */\n this.update = new EventEmitter();\n /**\n * @description\n * Instance property used to track whether an ngModel warning has been sent out for this\n * particular FormControlName instance. Used to support warning config of \"always\".\n *\n * @internal\n */\n this._ngModelWarningSent = false;\n this._parent = parent;\n this._setValidators(validators);\n this._setAsyncValidators(asyncValidators);\n this.valueAccessor = selectValueAccessor(this, valueAccessors);\n }\n /**\n * @description\n * Triggers a warning in dev mode that this input should not be used with reactive forms.\n */\n set isDisabled(isDisabled) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n console.warn(disabledAttrWarning);\n }\n }\n /** @nodoc */\n ngOnChanges(changes) {\n if (!this._added)\n this._setUpControl();\n if (isPropertyUpdated(changes, this.viewModel)) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n _ngModelWarning('formControlName', FormControlName, this, this._ngModelWarningConfig);\n }\n this.viewModel = this.model;\n this.formDirective.updateModel(this, this.model);\n }\n }\n /** @nodoc */\n ngOnDestroy() {\n if (this.formDirective) {\n this.formDirective.removeControl(this);\n }\n }\n /**\n * @description\n * Sets the new value for the view model and emits an `ngModelChange` event.\n *\n * @param newValue The new value for the view model.\n */\n viewToModelUpdate(newValue) {\n this.viewModel = newValue;\n this.update.emit(newValue);\n }\n /**\n * @description\n * Returns an array that represents the path from the top-level form to this control.\n * Each index is the string name of the control on that level.\n */\n get path() {\n return controlPath(this.name == null ? this.name : this.name.toString(), this._parent);\n }\n /**\n * @description\n * The top-level directive for this group if present, otherwise null.\n */\n get formDirective() {\n return this._parent ? this._parent.formDirective : null;\n }\n _checkParentType() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!(this._parent instanceof FormGroupName) &&\n this._parent instanceof AbstractFormGroupDirective) {\n throw ngModelGroupException();\n }\n else if (!(this._parent instanceof FormGroupName) &&\n !(this._parent instanceof FormGroupDirective) &&\n !(this._parent instanceof FormArrayName)) {\n throw controlParentException();\n }\n }\n }\n _setUpControl() {\n this._checkParentType();\n this.control = this.formDirective.addControl(this);\n if (this.control.disabled && this.valueAccessor.setDisabledState) {\n this.valueAccessor.setDisabledState(true);\n }\n this._added = true;\n }\n}\n/**\n * @description\n * Static property used to track whether any ngModel warnings have been sent across\n * all instances of FormControlName. Used to support warning config of \"once\".\n *\n * @internal\n */\nFormControlName._ngModelWarningSentOnce = false;\nFormControlName.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: FormControlName, deps: [{ token: ControlContainer, host: true, optional: true, skipSelf: true }, { token: NG_VALIDATORS, optional: true, self: true }, { token: NG_ASYNC_VALIDATORS, optional: true, self: true }, { token: NG_VALUE_ACCESSOR, optional: true, self: true }, { token: NG_MODEL_WITH_FORM_CONTROL_WARNING, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nFormControlName.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.5\", type: FormControlName, selector: \"[formControlName]\", inputs: { name: [\"formControlName\", \"name\"], isDisabled: [\"disabled\", \"isDisabled\"], model: [\"ngModel\", \"model\"] }, outputs: { update: \"ngModelChange\" }, providers: [controlNameBinding], usesInheritance: true, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: FormControlName, decorators: [{\n type: Directive,\n args: [{ selector: '[formControlName]', providers: [controlNameBinding] }]\n }], ctorParameters: function () {\n return [{ type: ControlContainer, decorators: [{\n type: Optional\n }, {\n type: Host\n }, {\n type: SkipSelf\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [NG_VALIDATORS]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [NG_ASYNC_VALIDATORS]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [NG_VALUE_ACCESSOR]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [NG_MODEL_WITH_FORM_CONTROL_WARNING]\n }] }];\n }, propDecorators: { name: [{\n type: Input,\n args: ['formControlName']\n }], isDisabled: [{\n type: Input,\n args: ['disabled']\n }], model: [{\n type: Input,\n args: ['ngModel']\n }], update: [{\n type: Output,\n args: ['ngModelChange']\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 */\nconst SELECT_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectControlValueAccessor),\n multi: true\n};\nfunction _buildValueString$1(id, value) {\n if (id == null)\n return `${value}`;\n if (value && typeof value === 'object')\n value = 'Object';\n return `${id}: ${value}`.slice(0, 50);\n}\nfunction _extractId$1(valueString) {\n return valueString.split(':')[0];\n}\n/**\n * @description\n * The `ControlValueAccessor` for writing select control values and listening to select control\n * changes. The value accessor is used by the `FormControlDirective`, `FormControlName`, and\n * `NgModel` directives.\n *\n * @usageNotes\n *\n * ### Using select controls in a reactive form\n *\n * The following examples show how to use a select control in a reactive form.\n *\n * {@example forms/ts/reactiveSelectControl/reactive_select_control_example.ts region='Component'}\n *\n * ### Using select controls in a template-driven form\n *\n * To use a select in a template-driven form, simply add an `ngModel` and a `name`\n * attribute to the main `<select>` tag.\n *\n * {@example forms/ts/selectControl/select_control_example.ts region='Component'}\n *\n * ### Customizing option selection\n *\n * Angular uses object identity to select option. It's possible for the identities of items\n * to change while the data does not. This can happen, for example, if the items are produced\n * from an RPC to the server, and that RPC is re-run. Even if the data hasn't changed, the\n * second response will produce objects with different identities.\n *\n * To customize the default option comparison algorithm, `<select>` supports `compareWith` input.\n * `compareWith` takes a **function** which has two arguments: `option1` and `option2`.\n * If `compareWith` is given, Angular selects option by the return value of the function.\n *\n * ```ts\n * const selectedCountriesControl = new FormControl();\n * ```\n *\n * ```\n * <select [compareWith]=\"compareFn\" [formControl]=\"selectedCountriesControl\">\n * <option *ngFor=\"let country of countries\" [ngValue]=\"country\">\n * {{country.name}}\n * </option>\n * </select>\n *\n * compareFn(c1: Country, c2: Country): boolean {\n * return c1 && c2 ? c1.id === c2.id : c1 === c2;\n * }\n * ```\n *\n * **Note:** We listen to the 'change' event because 'input' events aren't fired\n * for selects in IE, see:\n * https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/input_event#browser_compatibility\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nclass SelectControlValueAccessor extends BuiltInControlValueAccessor {\n constructor() {\n super(...arguments);\n /** @internal */\n this._optionMap = new Map();\n /** @internal */\n this._idCounter = 0;\n this._compareWith = Object.is;\n }\n /**\n * @description\n * Tracks the option comparison algorithm for tracking identities when\n * checking for changes.\n */\n set compareWith(fn) {\n if (typeof fn !== 'function' && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw new Error(`compareWith must be a function, but received ${JSON.stringify(fn)}`);\n }\n this._compareWith = fn;\n }\n /**\n * Sets the \"value\" property on the select element.\n * @nodoc\n */\n writeValue(value) {\n this.value = value;\n const id = this._getOptionId(value);\n const valueString = _buildValueString$1(id, value);\n this.setProperty('value', valueString);\n }\n /**\n * Registers a function called when the control value changes.\n * @nodoc\n */\n registerOnChange(fn) {\n this.onChange = (valueString) => {\n this.value = this._getOptionValue(valueString);\n fn(this.value);\n };\n }\n /** @internal */\n _registerOption() {\n return (this._idCounter++).toString();\n }\n /** @internal */\n _getOptionId(value) {\n for (const id of Array.from(this._optionMap.keys())) {\n if (this._compareWith(this._optionMap.get(id), value))\n return id;\n }\n return null;\n }\n /** @internal */\n _getOptionValue(valueString) {\n const id = _extractId$1(valueString);\n return this._optionMap.has(id) ? this._optionMap.get(id) : valueString;\n }\n}\nSelectControlValueAccessor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: SelectControlValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nSelectControlValueAccessor.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.5\", type: SelectControlValueAccessor, selector: \"select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]\", inputs: { compareWith: \"compareWith\" }, host: { listeners: { \"change\": \"onChange($event.target.value)\", \"blur\": \"onTouched()\" } }, providers: [SELECT_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: SelectControlValueAccessor, decorators: [{\n type: Directive,\n args: [{\n selector: 'select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]',\n host: { '(change)': 'onChange($event.target.value)', '(blur)': 'onTouched()' },\n providers: [SELECT_VALUE_ACCESSOR]\n }]\n }], propDecorators: { compareWith: [{\n type: Input\n }] } });\n/**\n * @description\n * Marks `<option>` as dynamic, so Angular can be notified when options change.\n *\n * @see `SelectControlValueAccessor`\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nclass NgSelectOption {\n constructor(_element, _renderer, _select) {\n this._element = _element;\n this._renderer = _renderer;\n this._select = _select;\n if (this._select)\n this.id = this._select._registerOption();\n }\n /**\n * @description\n * Tracks the value bound to the option element. Unlike the value binding,\n * ngValue supports binding to objects.\n */\n set ngValue(value) {\n if (this._select == null)\n return;\n this._select._optionMap.set(this.id, value);\n this._setElementValue(_buildValueString$1(this.id, value));\n this._select.writeValue(this._select.value);\n }\n /**\n * @description\n * Tracks simple string values bound to the option element.\n * For objects, use the `ngValue` input binding.\n */\n set value(value) {\n this._setElementValue(value);\n if (this._select)\n this._select.writeValue(this._select.value);\n }\n /** @internal */\n _setElementValue(value) {\n this._renderer.setProperty(this._element.nativeElement, 'value', value);\n }\n /** @nodoc */\n ngOnDestroy() {\n if (this._select) {\n this._select._optionMap.delete(this.id);\n this._select.writeValue(this._select.value);\n }\n }\n}\nNgSelectOption.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: NgSelectOption, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: SelectControlValueAccessor, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nNgSelectOption.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.5\", type: NgSelectOption, selector: \"option\", inputs: { ngValue: \"ngValue\", value: \"value\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: NgSelectOption, decorators: [{\n type: Directive,\n args: [{ selector: 'option' }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: SelectControlValueAccessor, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }];\n }, propDecorators: { ngValue: [{\n type: Input,\n args: ['ngValue']\n }], value: [{\n type: Input,\n args: ['value']\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 */\nconst SELECT_MULTIPLE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectMultipleControlValueAccessor),\n multi: true\n};\nfunction _buildValueString(id, value) {\n if (id == null)\n return `${value}`;\n if (typeof value === 'string')\n value = `'${value}'`;\n if (value && typeof value === 'object')\n value = 'Object';\n return `${id}: ${value}`.slice(0, 50);\n}\nfunction _extractId(valueString) {\n return valueString.split(':')[0];\n}\n/** Mock interface for HTMLCollection */\nclass HTMLCollection {\n}\n/**\n * @description\n * The `ControlValueAccessor` for writing multi-select control values and listening to multi-select\n * control changes. The value accessor is used by the `FormControlDirective`, `FormControlName`, and\n * `NgModel` directives.\n *\n * @see `SelectControlValueAccessor`\n *\n * @usageNotes\n *\n * ### Using a multi-select control\n *\n * The follow example shows you how to use a multi-select control with a reactive form.\n *\n * ```ts\n * const countryControl = new FormControl();\n * ```\n *\n * ```\n * <select multiple name=\"countries\" [formControl]=\"countryControl\">\n * <option *ngFor=\"let country of countries\" [ngValue]=\"country\">\n * {{ country.name }}\n * </option>\n * </select>\n * ```\n *\n * ### Customizing option selection\n *\n * To customize the default option comparison algorithm, `<select>` supports `compareWith` input.\n * See the `SelectControlValueAccessor` for usage.\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nclass SelectMultipleControlValueAccessor extends BuiltInControlValueAccessor {\n constructor() {\n super(...arguments);\n /** @internal */\n this._optionMap = new Map();\n /** @internal */\n this._idCounter = 0;\n this._compareWith = Object.is;\n }\n /**\n * @description\n * Tracks the option comparison algorithm for tracking identities when\n * checking for changes.\n */\n set compareWith(fn) {\n if (typeof fn !== 'function' && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw new Error(`compareWith must be a function, but received ${JSON.stringify(fn)}`);\n }\n this._compareWith = fn;\n }\n /**\n * Sets the \"value\" property on one or of more of the select's options.\n * @nodoc\n */\n writeValue(value) {\n this.value = value;\n let optionSelectedStateSetter;\n if (Array.isArray(value)) {\n // convert values to ids\n const ids = value.map((v) => this._getOptionId(v));\n optionSelectedStateSetter = (opt, o) => {\n opt._setSelected(ids.indexOf(o.toString()) > -1);\n };\n }\n else {\n optionSelectedStateSetter = (opt, o) => {\n opt._setSelected(false);\n };\n }\n this._optionMap.forEach(optionSelectedStateSetter);\n }\n /**\n * Registers a function called when the control value changes\n * and writes an array of the selected options.\n * @nodoc\n */\n registerOnChange(fn) {\n this.onChange = (element) => {\n const selected = [];\n const selectedOptions = element.selectedOptions;\n if (selectedOptions !== undefined) {\n const options = selectedOptions;\n for (let i = 0; i < options.length; i++) {\n const opt = options[i];\n const val = this._getOptionValue(opt.value);\n selected.push(val);\n }\n }\n // Degrade to use `options` when `selectedOptions` property is not available.\n // Note: the `selectedOptions` is available in all supported browsers, but the Domino lib\n // doesn't have it currently, see https://github.com/fgnass/domino/issues/177.\n else {\n const options = element.options;\n for (let i = 0; i < options.length; i++) {\n const opt = options[i];\n if (opt.selected) {\n const val = this._getOptionValue(opt.value);\n selected.push(val);\n }\n }\n }\n this.value = selected;\n fn(selected);\n };\n }\n /** @internal */\n _registerOption(value) {\n const id = (this._idCounter++).toString();\n this._optionMap.set(id, value);\n return id;\n }\n /** @internal */\n _getOptionId(value) {\n for (const id of Array.from(this._optionMap.keys())) {\n if (this._compareWith(this._optionMap.get(id)._value, value))\n return id;\n }\n return null;\n }\n /** @internal */\n _getOptionValue(valueString) {\n const id = _extractId(valueString);\n return this._optionMap.has(id) ? this._optionMap.get(id)._value : valueString;\n }\n}\nSelectMultipleControlValueAccessor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: SelectMultipleControlValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nSelectMultipleControlValueAccessor.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.5\", type: SelectMultipleControlValueAccessor, selector: \"select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]\", inputs: { compareWith: \"compareWith\" }, host: { listeners: { \"change\": \"onChange($event.target)\", \"blur\": \"onTouched()\" } }, providers: [SELECT_MULTIPLE_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: SelectMultipleControlValueAccessor, decorators: [{\n type: Directive,\n args: [{\n selector: 'select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]',\n host: { '(change)': 'onChange($event.target)', '(blur)': 'onTouched()' },\n providers: [SELECT_MULTIPLE_VALUE_ACCESSOR]\n }]\n }], propDecorators: { compareWith: [{\n type: Input\n }] } });\n/**\n * @description\n * Marks `<option>` as dynamic, so Angular can be notified when options change.\n *\n * @see `SelectMultipleControlValueAccessor`\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nclass ɵNgSelectMultipleOption {\n constructor(_element, _renderer, _select) {\n this._element = _element;\n this._renderer = _renderer;\n this._select = _select;\n if (this._select) {\n this.id = this._select._registerOption(this);\n }\n }\n /**\n * @description\n * Tracks the value bound to the option element. Unlike the value binding,\n * ngValue supports binding to objects.\n */\n set ngValue(value) {\n if (this._select == null)\n return;\n this._value = value;\n this._setElementValue(_buildValueString(this.id, value));\n this._select.writeValue(this._select.value);\n }\n /**\n * @description\n * Tracks simple string values bound to the option element.\n * For objects, use the `ngValue` input binding.\n */\n set value(value) {\n if (this._select) {\n this._value = value;\n this._setElementValue(_buildValueString(this.id, value));\n this._select.writeValue(this._select.value);\n }\n else {\n this._setElementValue(value);\n }\n }\n /** @internal */\n _setElementValue(value) {\n this._renderer.setProperty(this._element.nativeElement, 'value', value);\n }\n /** @internal */\n _setSelected(selected) {\n this._renderer.setProperty(this._element.nativeElement, 'selected', selected);\n }\n /** @nodoc */\n ngOnDestroy() {\n if (this._select) {\n this._select._optionMap.delete(this.id);\n this._select.writeValue(this._select.value);\n }\n }\n}\nɵNgSelectMultipleOption.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: ɵNgSelectMultipleOption, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: SelectMultipleControlValueAccessor, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nɵNgSelectMultipleOption.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.5\", type: ɵNgSelectMultipleOption, selector: \"option\", inputs: { ngValue: \"ngValue\", value: \"value\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: ɵNgSelectMultipleOption, decorators: [{\n type: Directive,\n args: [{ selector: 'option' }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: SelectMultipleControlValueAccessor, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }];\n }, propDecorators: { ngValue: [{\n type: Input,\n args: ['ngValue']\n }], value: [{\n type: Input,\n args: ['value']\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 * Method that updates string to integer if not already a number\n *\n * @param value The value to convert to integer.\n * @returns value of parameter converted to number or integer.\n */\nfunction toInteger(value) {\n return typeof value === 'number' ? value : parseInt(value, 10);\n}\n/**\n * Method that converts null, false or 'false' string to boolean.\n *\n * @param value input value.\n * @returns value of parameter converted to boolean.\n */\nfunction toBoolean(input) {\n return input != null && input !== false && `${input}` !== 'false';\n}\n/**\n * Method that ensures that provided value is a float (and converts it to float if needed).\n *\n * @param value The value to convert to float.\n * @returns value of parameter converted to number or float.\n */\nfunction toFloat(value) {\n return typeof value === 'number' ? value : parseFloat(value);\n}\n/**\n * A base class for Validator-based Directives. The class contains common logic shared across such\n * Directives.\n *\n * For internal use only, this class is not intended for use outside of the Forms package.\n */\nclass AbstractValidatorDirective {\n constructor() {\n this._validator = nullValidator;\n }\n /** @nodoc */\n ngOnChanges(changes) {\n if (this.inputName in changes) {\n const input = this.normalizeInput(changes[this.inputName].currentValue);\n this._enabled = this.enabled(input);\n this._validator = this._enabled ? this.createValidator(input) : nullValidator;\n if (this._onChange) {\n this._onChange();\n }\n }\n }\n /** @nodoc */\n validate(control) {\n return this._validator(control);\n }\n /** @nodoc */\n registerOnValidatorChange(fn) {\n this._onChange = fn;\n }\n /**\n * @description\n * Determines whether this validator should be active or not based on an input.\n * Base class implementation checks whether an input is defined (if the value is different from\n * `null` and `undefined`). Validator classes that extend this base class can override this\n * function with the logic specific to a particular validator directive.\n */\n enabled(input) {\n return input != null /* both `null` and `undefined` */;\n }\n}\nAbstractValidatorDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: AbstractValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nAbstractValidatorDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.5\", type: AbstractValidatorDirective, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: AbstractValidatorDirective, decorators: [{\n type: Directive\n }] });\n/**\n * @description\n * Provider which adds `MaxValidator` to the `NG_VALIDATORS` multi-provider list.\n */\nconst MAX_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MaxValidator),\n multi: true\n};\n/**\n * A directive which installs the {@link MaxValidator} for any `formControlName`,\n * `formControl`, or control with `ngModel` that also has a `max` attribute.\n *\n * @see [Form Validation](guide/form-validation)\n *\n * @usageNotes\n *\n * ### Adding a max validator\n *\n * The following example shows how to add a max validator to an input attached to an\n * ngModel binding.\n *\n * ```html\n * <input type=\"number\" ngModel max=\"4\">\n * ```\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nclass MaxValidator extends AbstractValidatorDirective {\n constructor() {\n super(...arguments);\n /** @internal */\n this.inputName = 'max';\n /** @internal */\n this.normalizeInput = (input) => toFloat(input);\n /** @internal */\n this.createValidator = (max) => maxValidator(max);\n }\n}\nMaxValidator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: MaxValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMaxValidator.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.5\", type: MaxValidator, selector: \"input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]\", inputs: { max: \"max\" }, host: { properties: { \"attr.max\": \"_enabled ? max : null\" } }, providers: [MAX_VALIDATOR], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: MaxValidator, decorators: [{\n type: Directive,\n args: [{\n selector: 'input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]',\n providers: [MAX_VALIDATOR],\n host: { '[attr.max]': '_enabled ? max : null' }\n }]\n }], propDecorators: { max: [{\n type: Input\n }] } });\n/**\n * @description\n * Provider which adds `MinValidator` to the `NG_VALIDATORS` multi-provider list.\n */\nconst MIN_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MinValidator),\n multi: true\n};\n/**\n * A directive which installs the {@link MinValidator} for any `formControlName`,\n * `formControl`, or control with `ngModel` that also has a `min` attribute.\n *\n * @see [Form Validation](guide/form-validation)\n *\n * @usageNotes\n *\n * ### Adding a min validator\n *\n * The following example shows how to add a min validator to an input attached to an\n * ngModel binding.\n *\n * ```html\n * <input type=\"number\" ngModel min=\"4\">\n * ```\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nclass MinValidator extends AbstractValidatorDirective {\n constructor() {\n super(...arguments);\n /** @internal */\n this.inputName = 'min';\n /** @internal */\n this.normalizeInput = (input) => toFloat(input);\n /** @internal */\n this.createValidator = (min) => minValidator(min);\n }\n}\nMinValidator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: MinValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMinValidator.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.5\", type: MinValidator, selector: \"input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]\", inputs: { min: \"min\" }, host: { properties: { \"attr.min\": \"_enabled ? min : null\" } }, providers: [MIN_VALIDATOR], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: MinValidator, decorators: [{\n type: Directive,\n args: [{\n selector: 'input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]',\n providers: [MIN_VALIDATOR],\n host: { '[attr.min]': '_enabled ? min : null' }\n }]\n }], propDecorators: { min: [{\n type: Input\n }] } });\n/**\n * @description\n * Provider which adds `RequiredValidator` to the `NG_VALIDATORS` multi-provider list.\n */\nconst REQUIRED_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => RequiredValidator),\n multi: true\n};\n/**\n * @description\n * Provider which adds `CheckboxRequiredValidator` to the `NG_VALIDATORS` multi-provider list.\n */\nconst CHECKBOX_REQUIRED_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => CheckboxRequiredValidator),\n multi: true\n};\n/**\n * @description\n * A directive that adds the `required` validator to any controls marked with the\n * `required` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.\n *\n * @see [Form Validation](guide/form-validation)\n *\n * @usageNotes\n *\n * ### Adding a required validator using template-driven forms\n *\n * ```\n * <input name=\"fullName\" ngModel required>\n * ```\n *\n * @ngModule FormsModule\n * @ngModule ReactiveFormsModule\n * @publicApi\n */\nclass RequiredValidator extends AbstractValidatorDirective {\n constructor() {\n super(...arguments);\n /** @internal */\n this.inputName = 'required';\n /** @internal */\n this.normalizeInput = (input) => toBoolean(input);\n /** @internal */\n this.createValidator = (input) => requiredValidator;\n }\n /** @nodoc */\n enabled(input) {\n return input;\n }\n}\nRequiredValidator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: RequiredValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nRequiredValidator.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.5\", type: RequiredValidator, selector: \":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]\", inputs: { required: \"required\" }, host: { properties: { \"attr.required\": \"_enabled ? \\\"\\\" : null\" } }, providers: [REQUIRED_VALIDATOR], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: RequiredValidator, decorators: [{\n type: Directive,\n args: [{\n selector: ':not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]',\n providers: [REQUIRED_VALIDATOR],\n host: { '[attr.required]': '_enabled ? \"\" : null' }\n }]\n }], propDecorators: { required: [{\n type: Input\n }] } });\n/**\n * A Directive that adds the `required` validator to checkbox controls marked with the\n * `required` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.\n *\n * @see [Form Validation](guide/form-validation)\n *\n * @usageNotes\n *\n * ### Adding a required checkbox validator using template-driven forms\n *\n * The following example shows how to add a checkbox required validator to an input attached to an\n * ngModel binding.\n *\n * ```\n * <input type=\"checkbox\" name=\"active\" ngModel required>\n * ```\n *\n * @publicApi\n * @ngModule FormsModule\n * @ngModule ReactiveFormsModule\n */\nclass CheckboxRequiredValidator extends RequiredValidator {\n constructor() {\n super(...arguments);\n /** @internal */\n this.createValidator = (input) => requiredTrueValidator;\n }\n}\nCheckboxRequiredValidator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: CheckboxRequiredValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nCheckboxRequiredValidator.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.5\", type: CheckboxRequiredValidator, selector: \"input[type=checkbox][required][formControlName],input[type=checkbox][required][formControl],input[type=checkbox][required][ngModel]\", host: { properties: { \"attr.required\": \"_enabled ? \\\"\\\" : null\" } }, providers: [CHECKBOX_REQUIRED_VALIDATOR], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: CheckboxRequiredValidator, decorators: [{\n type: Directive,\n args: [{\n selector: 'input[type=checkbox][required][formControlName],input[type=checkbox][required][formControl],input[type=checkbox][required][ngModel]',\n providers: [CHECKBOX_REQUIRED_VALIDATOR],\n host: { '[attr.required]': '_enabled ? \"\" : null' }\n }]\n }] });\n/**\n * @description\n * Provider which adds `EmailValidator` to the `NG_VALIDATORS` multi-provider list.\n */\nconst EMAIL_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => EmailValidator),\n multi: true\n};\n/**\n * A directive that adds the `email` validator to controls marked with the\n * `email` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.\n *\n * The email validation is based on the WHATWG HTML specification with some enhancements to\n * incorporate more RFC rules. More information can be found on the [Validators.email\n * page](api/forms/Validators#email).\n *\n * @see [Form Validation](guide/form-validation)\n *\n * @usageNotes\n *\n * ### Adding an email validator\n *\n * The following example shows how to add an email validator to an input attached to an ngModel\n * binding.\n *\n * ```\n * <input type=\"email\" name=\"email\" ngModel email>\n * <input type=\"email\" name=\"email\" ngModel email=\"true\">\n * <input type=\"email\" name=\"email\" ngModel [email]=\"true\">\n * ```\n *\n * @publicApi\n * @ngModule FormsModule\n * @ngModule ReactiveFormsModule\n */\nclass EmailValidator extends AbstractValidatorDirective {\n constructor() {\n super(...arguments);\n /** @internal */\n this.inputName = 'email';\n /** @internal */\n this.normalizeInput = (input) => \n // Avoid TSLint requirement to omit semicolon, see\n // https://github.com/palantir/tslint/issues/1476\n // tslint:disable-next-line:semicolon\n (input === '' || input === true || input === 'true');\n /** @internal */\n this.createValidator = (input) => emailValidator;\n }\n /** @nodoc */\n enabled(input) {\n return input;\n }\n}\nEmailValidator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: EmailValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nEmailValidator.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.5\", type: EmailValidator, selector: \"[email][formControlName],[email][formControl],[email][ngModel]\", inputs: { email: \"email\" }, providers: [EMAIL_VALIDATOR], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: EmailValidator, decorators: [{\n type: Directive,\n args: [{\n selector: '[email][formControlName],[email][formControl],[email][ngModel]',\n providers: [EMAIL_VALIDATOR]\n }]\n }], propDecorators: { email: [{\n type: Input\n }] } });\n/**\n * @description\n * Provider which adds `MinLengthValidator` to the `NG_VALIDATORS` multi-provider list.\n */\nconst MIN_LENGTH_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MinLengthValidator),\n multi: true\n};\n/**\n * A directive that adds minimum length validation to controls marked with the\n * `minlength` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.\n *\n * @see [Form Validation](guide/form-validation)\n *\n * @usageNotes\n *\n * ### Adding a minimum length validator\n *\n * The following example shows how to add a minimum length validator to an input attached to an\n * ngModel binding.\n *\n * ```html\n * <input name=\"firstName\" ngModel minlength=\"4\">\n * ```\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nclass MinLengthValidator extends AbstractValidatorDirective {\n constructor() {\n super(...arguments);\n /** @internal */\n this.inputName = 'minlength';\n /** @internal */\n this.normalizeInput = (input) => toInteger(input);\n /** @internal */\n this.createValidator = (minlength) => minLengthValidator(minlength);\n }\n}\nMinLengthValidator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: MinLengthValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMinLengthValidator.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.5\", type: MinLengthValidator, selector: \"[minlength][formControlName],[minlength][formControl],[minlength][ngModel]\", inputs: { minlength: \"minlength\" }, host: { properties: { \"attr.minlength\": \"_enabled ? minlength : null\" } }, providers: [MIN_LENGTH_VALIDATOR], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: MinLengthValidator, decorators: [{\n type: Directive,\n args: [{\n selector: '[minlength][formControlName],[minlength][formControl],[minlength][ngModel]',\n providers: [MIN_LENGTH_VALIDATOR],\n host: { '[attr.minlength]': '_enabled ? minlength : null' }\n }]\n }], propDecorators: { minlength: [{\n type: Input\n }] } });\n/**\n * @description\n * Provider which adds `MaxLengthValidator` to the `NG_VALIDATORS` multi-provider list.\n */\nconst MAX_LENGTH_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MaxLengthValidator),\n multi: true\n};\n/**\n * A directive that adds max length validation to controls marked with the\n * `maxlength` attribute. The directive is provided with the `NG_VALIDATORS` multi-provider list.\n *\n * @see [Form Validation](guide/form-validation)\n *\n * @usageNotes\n *\n * ### Adding a maximum length validator\n *\n * The following example shows how to add a maximum length validator to an input attached to an\n * ngModel binding.\n *\n * ```html\n * <input name=\"firstName\" ngModel maxlength=\"25\">\n * ```\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nclass MaxLengthValidator extends AbstractValidatorDirective {\n constructor() {\n super(...arguments);\n /** @internal */\n this.inputName = 'maxlength';\n /** @internal */\n this.normalizeInput = (input) => toInteger(input);\n /** @internal */\n this.createValidator = (maxlength) => maxLengthValidator(maxlength);\n }\n}\nMaxLengthValidator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: MaxLengthValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMaxLengthValidator.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.5\", type: MaxLengthValidator, selector: \"[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]\", inputs: { maxlength: \"maxlength\" }, host: { properties: { \"attr.maxlength\": \"_enabled ? maxlength : null\" } }, providers: [MAX_LENGTH_VALIDATOR], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: MaxLengthValidator, decorators: [{\n type: Directive,\n args: [{\n selector: '[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]',\n providers: [MAX_LENGTH_VALIDATOR],\n host: { '[attr.maxlength]': '_enabled ? maxlength : null' }\n }]\n }], propDecorators: { maxlength: [{\n type: Input\n }] } });\n/**\n * @description\n * Provider which adds `PatternValidator` to the `NG_VALIDATORS` multi-provider list.\n */\nconst PATTERN_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => PatternValidator),\n multi: true\n};\n/**\n * @description\n * A directive that adds regex pattern validation to controls marked with the\n * `pattern` attribute. The regex must match the entire control value.\n * The directive is provided with the `NG_VALIDATORS` multi-provider list.\n *\n * @see [Form Validation](guide/form-validation)\n *\n * @usageNotes\n *\n * ### Adding a pattern validator\n *\n * The following example shows how to add a pattern validator to an input attached to an\n * ngModel binding.\n *\n * ```html\n * <input name=\"firstName\" ngModel pattern=\"[a-zA-Z ]*\">\n * ```\n *\n * @ngModule ReactiveFormsModule\n * @ngModule FormsModule\n * @publicApi\n */\nclass PatternValidator extends AbstractValidatorDirective {\n constructor() {\n super(...arguments);\n /** @internal */\n this.inputName = 'pattern';\n /** @internal */\n this.normalizeInput = (input) => input;\n /** @internal */\n this.createValidator = (input) => patternValidator(input);\n }\n}\nPatternValidator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: PatternValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nPatternValidator.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.5\", type: PatternValidator, selector: \"[pattern][formControlName],[pattern][formControl],[pattern][ngModel]\", inputs: { pattern: \"pattern\" }, host: { properties: { \"attr.pattern\": \"_enabled ? pattern : null\" } }, providers: [PATTERN_VALIDATOR], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: PatternValidator, decorators: [{\n type: Directive,\n args: [{\n selector: '[pattern][formControlName],[pattern][formControl],[pattern][ngModel]',\n providers: [PATTERN_VALIDATOR],\n host: { '[attr.pattern]': '_enabled ? pattern : null' }\n }]\n }], propDecorators: { pattern: [{\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 */\nconst SHARED_FORM_DIRECTIVES = [\n ɵNgNoValidate,\n NgSelectOption,\n ɵNgSelectMultipleOption,\n DefaultValueAccessor,\n NumberValueAccessor,\n RangeValueAccessor,\n CheckboxControlValueAccessor,\n SelectControlValueAccessor,\n SelectMultipleControlValueAccessor,\n RadioControlValueAccessor,\n NgControlStatus,\n NgControlStatusGroup,\n RequiredValidator,\n MinLengthValidator,\n MaxLengthValidator,\n PatternValidator,\n CheckboxRequiredValidator,\n EmailValidator,\n MinValidator,\n MaxValidator,\n];\nconst TEMPLATE_DRIVEN_DIRECTIVES = [NgModel, NgModelGroup, NgForm];\nconst REACTIVE_DRIVEN_DIRECTIVES = [FormControlDirective, FormGroupDirective, FormControlName, FormGroupName, FormArrayName];\n/**\n * Internal module used for sharing directives between FormsModule and ReactiveFormsModule\n */\nclass ɵInternalFormsSharedModule {\n}\nɵInternalFormsSharedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: ɵInternalFormsSharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nɵInternalFormsSharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: ɵInternalFormsSharedModule, declarations: [ɵNgNoValidate,\n NgSelectOption,\n ɵNgSelectMultipleOption,\n DefaultValueAccessor,\n NumberValueAccessor,\n RangeValueAccessor,\n CheckboxControlValueAccessor,\n SelectControlValueAccessor,\n SelectMultipleControlValueAccessor,\n RadioControlValueAccessor,\n NgControlStatus,\n NgControlStatusGroup,\n RequiredValidator,\n MinLengthValidator,\n MaxLengthValidator,\n PatternValidator,\n CheckboxRequiredValidator,\n EmailValidator,\n MinValidator,\n MaxValidator], imports: [RadioControlRegistryModule], exports: [ɵNgNoValidate,\n NgSelectOption,\n ɵNgSelectMultipleOption,\n DefaultValueAccessor,\n NumberValueAccessor,\n RangeValueAccessor,\n CheckboxControlValueAccessor,\n SelectControlValueAccessor,\n SelectMultipleControlValueAccessor,\n RadioControlValueAccessor,\n NgControlStatus,\n NgControlStatusGroup,\n RequiredValidator,\n MinLengthValidator,\n MaxLengthValidator,\n PatternValidator,\n CheckboxRequiredValidator,\n EmailValidator,\n MinValidator,\n MaxValidator] });\nɵInternalFormsSharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: ɵInternalFormsSharedModule, imports: [[RadioControlRegistryModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: ɵInternalFormsSharedModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: SHARED_FORM_DIRECTIVES,\n imports: [RadioControlRegistryModule],\n exports: SHARED_FORM_DIRECTIVES,\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 * Exports the required providers and directives for template-driven forms,\n * making them available for import by NgModules that import this module.\n *\n * Providers associated with this module:\n * * `RadioControlRegistry`\n *\n * @see [Forms Overview](/guide/forms-overview)\n * @see [Template-driven Forms Guide](/guide/forms)\n *\n * @publicApi\n */\nclass FormsModule {\n}\nFormsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: FormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nFormsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: FormsModule, declarations: [NgModel, NgModelGroup, NgForm], exports: [ɵInternalFormsSharedModule, NgModel, NgModelGroup, NgForm] });\nFormsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: FormsModule, imports: [ɵInternalFormsSharedModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: FormsModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: TEMPLATE_DRIVEN_DIRECTIVES,\n exports: [ɵInternalFormsSharedModule, TEMPLATE_DRIVEN_DIRECTIVES]\n }]\n }] });\n/**\n * Exports the required infrastructure and directives for reactive forms,\n * making them available for import by NgModules that import this module.\n *\n * Providers associated with this module:\n * * `FormBuilder`\n * * `RadioControlRegistry`\n *\n * @see [Forms Overview](guide/forms-overview)\n * @see [Reactive Forms Guide](guide/reactive-forms)\n *\n * @publicApi\n */\nclass ReactiveFormsModule {\n /**\n * @description\n * Provides options for configuring the reactive forms module.\n *\n * @param opts An object of configuration options\n * * `warnOnNgModelWithFormControl` Configures when to emit a warning when an `ngModel`\n * binding is used with reactive form directives.\n */\n static withConfig(opts) {\n return {\n ngModule: ReactiveFormsModule,\n providers: [\n { provide: NG_MODEL_WITH_FORM_CONTROL_WARNING, useValue: opts.warnOnNgModelWithFormControl }\n ]\n };\n }\n}\nReactiveFormsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: ReactiveFormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nReactiveFormsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: ReactiveFormsModule, declarations: [FormControlDirective, FormGroupDirective, FormControlName, FormGroupName, FormArrayName], exports: [ɵInternalFormsSharedModule, FormControlDirective, FormGroupDirective, FormControlName, FormGroupName, FormArrayName] });\nReactiveFormsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: ReactiveFormsModule, imports: [ɵInternalFormsSharedModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: ReactiveFormsModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [REACTIVE_DRIVEN_DIRECTIVES],\n exports: [ɵInternalFormsSharedModule, REACTIVE_DRIVEN_DIRECTIVES]\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 */\nfunction isAbstractControlOptions(options) {\n return options.asyncValidators !== undefined ||\n options.validators !== undefined ||\n options.updateOn !== undefined;\n}\n/**\n * @description\n * Creates an `AbstractControl` from a user-specified configuration.\n *\n * The `FormBuilder` provides syntactic sugar that shortens creating instances of a `FormControl`,\n * `FormGroup`, or `FormArray`. It reduces the amount of boilerplate needed to build complex\n * forms.\n *\n * @see [Reactive Forms Guide](/guide/reactive-forms)\n *\n * @publicApi\n */\nclass FormBuilder {\n group(controlsConfig, options = null) {\n const controls = this._reduceControls(controlsConfig);\n let validators = null;\n let asyncValidators = null;\n let updateOn = undefined;\n if (options != null) {\n if (isAbstractControlOptions(options)) {\n // `options` are `AbstractControlOptions`\n validators = options.validators != null ? options.validators : null;\n asyncValidators = options.asyncValidators != null ? options.asyncValidators : null;\n updateOn = options.updateOn != null ? options.updateOn : undefined;\n }\n else {\n // `options` are legacy form group options\n validators = options['validator'] != null ? options['validator'] : null;\n asyncValidators = options['asyncValidator'] != null ? options['asyncValidator'] : null;\n }\n }\n return new FormGroup(controls, { asyncValidators, updateOn, validators });\n }\n /**\n * @description\n * Construct a new `FormControl` with the given state, validators and options.\n *\n * @param formState Initializes the control with an initial state value, or\n * with an object that contains both a value and a disabled status.\n *\n * @param validatorOrOpts A synchronous validator function, or an array of\n * such functions, or an `AbstractControlOptions` object that contains\n * validation functions and a validation trigger.\n *\n * @param asyncValidator A single async validator or array of async validator\n * functions.\n *\n * @usageNotes\n *\n * ### Initialize a control as disabled\n *\n * The following example returns a control with an initial value in a disabled state.\n *\n * <code-example path=\"forms/ts/formBuilder/form_builder_example.ts\" region=\"disabled-control\">\n * </code-example>\n */\n control(formState, validatorOrOpts, asyncValidator) {\n return new FormControl(formState, validatorOrOpts, asyncValidator);\n }\n /**\n * Constructs a new `FormArray` from the given array of configurations,\n * validators and options.\n *\n * @param controlsConfig An array of child controls or control configs. Each\n * child control is given an index when it is registered.\n *\n * @param validatorOrOpts A synchronous validator function, or an array of\n * such functions, or an `AbstractControlOptions` object that contains\n * validation functions and a validation trigger.\n *\n * @param asyncValidator A single async validator or array of async validator\n * functions.\n */\n array(controlsConfig, validatorOrOpts, asyncValidator) {\n const controls = controlsConfig.map(c => this._createControl(c));\n return new FormArray(controls, validatorOrOpts, asyncValidator);\n }\n /** @internal */\n _reduceControls(controlsConfig) {\n const controls = {};\n Object.keys(controlsConfig).forEach(controlName => {\n controls[controlName] = this._createControl(controlsConfig[controlName]);\n });\n return controls;\n }\n /** @internal */\n _createControl(controlConfig) {\n if (isFormControl(controlConfig) || isFormGroup(controlConfig) || isFormArray(controlConfig)) {\n return controlConfig;\n }\n else if (Array.isArray(controlConfig)) {\n const value = controlConfig[0];\n const validator = controlConfig.length > 1 ? controlConfig[1] : null;\n const asyncValidator = controlConfig.length > 2 ? controlConfig[2] : null;\n return this.control(value, validator, asyncValidator);\n }\n else {\n return this.control(controlConfig);\n }\n }\n}\nFormBuilder.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: FormBuilder, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nFormBuilder.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: FormBuilder, providedIn: ReactiveFormsModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.5\", ngImport: i0, type: FormBuilder, decorators: [{\n type: Injectable,\n args: [{ providedIn: ReactiveFormsModule }]\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 * @publicApi\n */\nconst VERSION = new Version('13.2.5');\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// This file only reexports content of the `src` folder. Keep it that way.\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 { AbstractControl, AbstractControlDirective, AbstractFormGroupDirective, COMPOSITION_BUFFER_MODE, CheckboxControlValueAccessor, CheckboxRequiredValidator, ControlContainer, DefaultValueAccessor, EmailValidator, FormArray, FormArrayName, FormBuilder, FormControl, FormControlDirective, FormControlName, FormGroup, FormGroupDirective, FormGroupName, FormsModule, MaxLengthValidator, MaxValidator, MinLengthValidator, MinValidator, NG_ASYNC_VALIDATORS, NG_VALIDATORS, NG_VALUE_ACCESSOR, NgControl, NgControlStatus, NgControlStatusGroup, NgForm, NgModel, NgModelGroup, NgSelectOption, NumberValueAccessor, PatternValidator, RadioControlValueAccessor, RangeValueAccessor, ReactiveFormsModule, RequiredValidator, SelectControlValueAccessor, SelectMultipleControlValueAccessor, VERSION, Validators, ɵInternalFormsSharedModule, ɵNgNoValidate, ɵNgSelectMultipleOption };\n","import * as i0 from '@angular/core';\nimport { Component, ViewEncapsulation, ChangeDetectionStrategy, Input, NgModule } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { MatCommonModule } from '@angular/material/core';\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 MatDivider {\n constructor() {\n this._vertical = false;\n this._inset = false;\n }\n /** Whether the divider is vertically aligned. */\n get vertical() {\n return this._vertical;\n }\n set vertical(value) {\n this._vertical = coerceBooleanProperty(value);\n }\n /** Whether the divider is an inset divider. */\n get inset() {\n return this._inset;\n }\n set inset(value) {\n this._inset = coerceBooleanProperty(value);\n }\n}\nMatDivider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatDivider, deps: [], target: i0.ɵɵFactoryTarget.Component });\nMatDivider.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.2.0\", type: MatDivider, selector: \"mat-divider\", inputs: { vertical: \"vertical\", inset: \"inset\" }, host: { attributes: { \"role\": \"separator\" }, properties: { \"attr.aria-orientation\": \"vertical ? \\\"vertical\\\" : \\\"horizontal\\\"\", \"class.mat-divider-vertical\": \"vertical\", \"class.mat-divider-horizontal\": \"!vertical\", \"class.mat-divider-inset\": \"inset\" }, classAttribute: \"mat-divider\" }, ngImport: i0, template: '', isInline: true, styles: [\".mat-divider{display:block;margin:0;border-top-width:1px;border-top-style:solid}.mat-divider.mat-divider-vertical{border-top:0;border-right-width:1px;border-right-style:solid}.mat-divider.mat-divider-inset{margin-left:80px}[dir=rtl] .mat-divider.mat-divider-inset{margin-left:auto;margin-right:80px}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatDivider, decorators: [{\n type: Component,\n args: [{ selector: 'mat-divider', host: {\n 'role': 'separator',\n '[attr.aria-orientation]': 'vertical ? \"vertical\" : \"horizontal\"',\n '[class.mat-divider-vertical]': 'vertical',\n '[class.mat-divider-horizontal]': '!vertical',\n '[class.mat-divider-inset]': 'inset',\n 'class': 'mat-divider',\n }, template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [\".mat-divider{display:block;margin:0;border-top-width:1px;border-top-style:solid}.mat-divider.mat-divider-vertical{border-top:0;border-right-width:1px;border-right-style:solid}.mat-divider.mat-divider-inset{margin-left:80px}[dir=rtl] .mat-divider.mat-divider-inset{margin-left:auto;margin-right:80px}\\n\"] }]\n }], propDecorators: { vertical: [{\n type: Input\n }], inset: [{\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 MatDividerModule {\n}\nMatDividerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatDividerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatDividerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatDividerModule, declarations: [MatDivider], imports: [MatCommonModule], exports: [MatDivider, MatCommonModule] });\nMatDividerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatDividerModule, imports: [[MatCommonModule], MatCommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatDividerModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [MatCommonModule],\n exports: [MatDivider, MatCommonModule],\n declarations: [MatDivider],\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 { MatDivider, MatDividerModule };\n","import * as i0 from '@angular/core';\nimport { InjectionToken, inject, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Optional, Inject, Input, ViewChild, Output, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport { mixinColor, MatCommonModule } from '@angular/material/core';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\nimport { Subscription, fromEvent } from 'rxjs';\nimport { filter } 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// Boilerplate for applying mixins to MatProgressBar.\n/** @docs-private */\nconst _MatProgressBarBase = mixinColor(class {\n constructor(_elementRef) {\n this._elementRef = _elementRef;\n }\n}, 'primary');\n/**\n * Injection token used to provide the current location to `MatProgressBar`.\n * Used to handle server-side rendering and to stub out during unit tests.\n * @docs-private\n */\nconst MAT_PROGRESS_BAR_LOCATION = new InjectionToken('mat-progress-bar-location', { providedIn: 'root', factory: MAT_PROGRESS_BAR_LOCATION_FACTORY });\n/** @docs-private */\nfunction MAT_PROGRESS_BAR_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/** Injection token to be used to override the default options for `mat-progress-bar`. */\nconst MAT_PROGRESS_BAR_DEFAULT_OPTIONS = new InjectionToken('MAT_PROGRESS_BAR_DEFAULT_OPTIONS');\n/** Counter used to generate unique IDs for progress bars. */\nlet progressbarId = 0;\n/**\n * `<mat-progress-bar>` component.\n */\nclass MatProgressBar extends _MatProgressBarBase {\n constructor(elementRef, _ngZone, _animationMode, \n /**\n * @deprecated `location` parameter to be made required.\n * @breaking-change 8.0.0\n */\n location, defaults, \n /**\n * @deprecated `_changeDetectorRef` parameter to be made required.\n * @breaking-change 11.0.0\n */\n _changeDetectorRef) {\n super(elementRef);\n this._ngZone = _ngZone;\n this._animationMode = _animationMode;\n this._changeDetectorRef = _changeDetectorRef;\n /** Flag that indicates whether NoopAnimations mode is set to true. */\n this._isNoopAnimation = false;\n this._value = 0;\n this._bufferValue = 0;\n /**\n * Event emitted when animation of the primary progress bar completes. This event will not\n * be emitted when animations are disabled, nor will it be emitted for modes with continuous\n * animations (indeterminate and query).\n */\n this.animationEnd = new EventEmitter();\n /** Reference to animation end subscription to be unsubscribed on destroy. */\n this._animationEndSubscription = Subscription.EMPTY;\n /**\n * Mode of the progress bar.\n *\n * Input must be one of these values: determinate, indeterminate, buffer, query, defaults to\n * 'determinate'.\n * Mirrored to mode attribute.\n */\n this.mode = 'determinate';\n /** ID of the progress bar. */\n this.progressbarId = `mat-progress-bar-${progressbarId++}`;\n // We need to prefix the SVG reference with the current path, otherwise they won't work\n // in Safari if the page has a `<base>` tag. Note that we need quotes inside the `url()`,\n // because named route URLs can contain parentheses (see #12338). Also we don't use `Location`\n // since we can't tell the difference between whether the consumer is using the hash location\n // strategy or not, because `Location` normalizes both `/#/foo/bar` and `/foo/bar` to\n // the same thing.\n const path = location ? location.getPathname().split('#')[0] : '';\n this._rectangleFillValue = `url('${path}#${this.progressbarId}')`;\n this._isNoopAnimation = _animationMode === 'NoopAnimations';\n if (defaults) {\n if (defaults.color) {\n this.color = this.defaultColor = defaults.color;\n }\n this.mode = defaults.mode || this.mode;\n }\n }\n /** Value of the progress bar. Defaults to zero. Mirrored to aria-valuenow. */\n get value() {\n return this._value;\n }\n set value(v) {\n var _a;\n this._value = clamp(coerceNumberProperty(v) || 0);\n // @breaking-change 11.0.0 Remove null check for _changeDetectorRef.\n (_a = this._changeDetectorRef) === null || _a === void 0 ? void 0 : _a.markForCheck();\n }\n /** Buffer value of the progress bar. Defaults to zero. */\n get bufferValue() {\n return this._bufferValue;\n }\n set bufferValue(v) {\n var _a;\n this._bufferValue = clamp(v || 0);\n // @breaking-change 11.0.0 Remove null check for _changeDetectorRef.\n (_a = this._changeDetectorRef) === null || _a === void 0 ? void 0 : _a.markForCheck();\n }\n /** Gets the current transform value for the progress bar's primary indicator. */\n _primaryTransform() {\n // We use a 3d transform to work around some rendering issues in iOS Safari. See #19328.\n const scale = this.value / 100;\n return { transform: `scale3d(${scale}, 1, 1)` };\n }\n /**\n * Gets the current transform value for the progress bar's buffer indicator. Only used if the\n * progress mode is set to buffer, otherwise returns an undefined, causing no transformation.\n */\n _bufferTransform() {\n if (this.mode === 'buffer') {\n // We use a 3d transform to work around some rendering issues in iOS Safari. See #19328.\n const scale = this.bufferValue / 100;\n return { transform: `scale3d(${scale}, 1, 1)` };\n }\n return null;\n }\n ngAfterViewInit() {\n // Run outside angular so change detection didn't get triggered on every transition end\n // instead only on the animation that we care about (primary value bar's transitionend)\n this._ngZone.runOutsideAngular(() => {\n const element = this._primaryValueBar.nativeElement;\n this._animationEndSubscription = fromEvent(element, 'transitionend')\n .pipe(filter((e) => e.target === element))\n .subscribe(() => {\n if (this.mode === 'determinate' || this.mode === 'buffer') {\n this._ngZone.run(() => this.animationEnd.next({ value: this.value }));\n }\n });\n });\n }\n ngOnDestroy() {\n this._animationEndSubscription.unsubscribe();\n }\n}\nMatProgressBar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatProgressBar, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: ANIMATION_MODULE_TYPE, optional: true }, { token: MAT_PROGRESS_BAR_LOCATION, optional: true }, { token: MAT_PROGRESS_BAR_DEFAULT_OPTIONS, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nMatProgressBar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.2.0\", type: MatProgressBar, selector: \"mat-progress-bar\", inputs: { color: \"color\", value: \"value\", bufferValue: \"bufferValue\", mode: \"mode\" }, outputs: { animationEnd: \"animationEnd\" }, host: { attributes: { \"role\": \"progressbar\", \"aria-valuemin\": \"0\", \"aria-valuemax\": \"100\", \"tabindex\": \"-1\" }, properties: { \"attr.aria-valuenow\": \"(mode === \\\"indeterminate\\\" || mode === \\\"query\\\") ? null : value\", \"attr.mode\": \"mode\", \"class._mat-animation-noopable\": \"_isNoopAnimation\" }, classAttribute: \"mat-progress-bar\" }, viewQueries: [{ propertyName: \"_primaryValueBar\", first: true, predicate: [\"primaryValueBar\"], descendants: true }], exportAs: [\"matProgressBar\"], usesInheritance: true, ngImport: i0, template: \"<!--\\n All children need to be hidden for screen readers in order to support ChromeVox.\\n More context in the issue: https://github.com/angular/components/issues/22165.\\n-->\\n<div aria-hidden=\\\"true\\\">\\n <svg width=\\\"100%\\\" height=\\\"4\\\" focusable=\\\"false\\\" class=\\\"mat-progress-bar-background mat-progress-bar-element\\\">\\n <defs>\\n <pattern [id]=\\\"progressbarId\\\" x=\\\"4\\\" y=\\\"0\\\" width=\\\"8\\\" height=\\\"4\\\" patternUnits=\\\"userSpaceOnUse\\\">\\n <circle cx=\\\"2\\\" cy=\\\"2\\\" r=\\\"2\\\"/>\\n </pattern>\\n </defs>\\n <rect [attr.fill]=\\\"_rectangleFillValue\\\" width=\\\"100%\\\" height=\\\"100%\\\"/>\\n </svg>\\n <!--\\n The background div is named as such because it appears below the other divs and is not sized based\\n on values.\\n -->\\n <div class=\\\"mat-progress-bar-buffer mat-progress-bar-element\\\" [ngStyle]=\\\"_bufferTransform()\\\"></div>\\n <div class=\\\"mat-progress-bar-primary mat-progress-bar-fill mat-progress-bar-element\\\" [ngStyle]=\\\"_primaryTransform()\\\" #primaryValueBar></div>\\n <div class=\\\"mat-progress-bar-secondary mat-progress-bar-fill mat-progress-bar-element\\\"></div>\\n</div>\\n\", styles: [\".mat-progress-bar{display:block;height:4px;overflow:hidden;position:relative;transition:opacity 250ms linear;width:100%}._mat-animation-noopable.mat-progress-bar{transition:none;animation:none}.mat-progress-bar .mat-progress-bar-element,.mat-progress-bar .mat-progress-bar-fill::after{height:100%;position:absolute;width:100%}.mat-progress-bar .mat-progress-bar-background{width:calc(100% + 10px)}.cdk-high-contrast-active .mat-progress-bar .mat-progress-bar-background{display:none}.mat-progress-bar .mat-progress-bar-buffer{transform-origin:top left;transition:transform 250ms ease}.cdk-high-contrast-active .mat-progress-bar .mat-progress-bar-buffer{border-top:solid 5px;opacity:.5}.mat-progress-bar .mat-progress-bar-secondary{display:none}.mat-progress-bar .mat-progress-bar-fill{animation:none;transform-origin:top left;transition:transform 250ms ease}.cdk-high-contrast-active .mat-progress-bar .mat-progress-bar-fill{border-top:solid 4px}.mat-progress-bar .mat-progress-bar-fill::after{animation:none;content:\\\"\\\";display:inline-block;left:0}.mat-progress-bar[dir=rtl],[dir=rtl] .mat-progress-bar{transform:rotateY(180deg)}.mat-progress-bar[mode=query]{transform:rotateZ(180deg)}.mat-progress-bar[mode=query][dir=rtl],[dir=rtl] .mat-progress-bar[mode=query]{transform:rotateZ(180deg) rotateY(180deg)}.mat-progress-bar[mode=indeterminate] .mat-progress-bar-fill,.mat-progress-bar[mode=query] .mat-progress-bar-fill{transition:none}.mat-progress-bar[mode=indeterminate] .mat-progress-bar-primary,.mat-progress-bar[mode=query] .mat-progress-bar-primary{-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:mat-progress-bar-primary-indeterminate-translate 2000ms infinite linear;left:-145.166611%}.mat-progress-bar[mode=indeterminate] .mat-progress-bar-primary.mat-progress-bar-fill::after,.mat-progress-bar[mode=query] .mat-progress-bar-primary.mat-progress-bar-fill::after{-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:mat-progress-bar-primary-indeterminate-scale 2000ms infinite linear}.mat-progress-bar[mode=indeterminate] .mat-progress-bar-secondary,.mat-progress-bar[mode=query] .mat-progress-bar-secondary{-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:mat-progress-bar-secondary-indeterminate-translate 2000ms infinite linear;left:-54.888891%;display:block}.mat-progress-bar[mode=indeterminate] .mat-progress-bar-secondary.mat-progress-bar-fill::after,.mat-progress-bar[mode=query] .mat-progress-bar-secondary.mat-progress-bar-fill::after{-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:mat-progress-bar-secondary-indeterminate-scale 2000ms infinite linear}.mat-progress-bar[mode=buffer] .mat-progress-bar-background{-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:mat-progress-bar-background-scroll 250ms infinite linear;display:block}.mat-progress-bar._mat-animation-noopable .mat-progress-bar-fill,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-fill::after,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-buffer,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-primary,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-primary.mat-progress-bar-fill::after,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-secondary,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-secondary.mat-progress-bar-fill::after,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-background{animation:none;transition-duration:1ms}@keyframes mat-progress-bar-primary-indeterminate-translate{0%{transform:translateX(0)}20%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(0)}59.15%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(83.67142%)}100%{transform:translateX(200.611057%)}}@keyframes mat-progress-bar-primary-indeterminate-scale{0%{transform:scaleX(0.08)}36.65%{animation-timing-function:cubic-bezier(0.334731, 0.12482, 0.785844, 1);transform:scaleX(0.08)}69.15%{animation-timing-function:cubic-bezier(0.06, 0.11, 0.6, 1);transform:scaleX(0.661479)}100%{transform:scaleX(0.08)}}@keyframes mat-progress-bar-secondary-indeterminate-translate{0%{animation-timing-function:cubic-bezier(0.15, 0, 0.515058, 0.409685);transform:translateX(0)}25%{animation-timing-function:cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);transform:translateX(37.651913%)}48.35%{animation-timing-function:cubic-bezier(0.4, 0.627035, 0.6, 0.902026);transform:translateX(84.386165%)}100%{transform:translateX(160.277782%)}}@keyframes mat-progress-bar-secondary-indeterminate-scale{0%{animation-timing-function:cubic-bezier(0.15, 0, 0.515058, 0.409685);transform:scaleX(0.08)}19.15%{animation-timing-function:cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);transform:scaleX(0.457104)}44.15%{animation-timing-function:cubic-bezier(0.4, 0.627035, 0.6, 0.902026);transform:scaleX(0.72796)}100%{transform:scaleX(0.08)}}@keyframes mat-progress-bar-background-scroll{to{transform:translateX(-8px)}}\\n\"], directives: [{ type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatProgressBar, decorators: [{\n type: Component,\n args: [{ selector: 'mat-progress-bar', exportAs: 'matProgressBar', host: {\n 'role': 'progressbar',\n 'aria-valuemin': '0',\n 'aria-valuemax': '100',\n // set tab index to -1 so screen readers will read the aria-label\n // Note: there is a known issue with JAWS that does not read progressbar aria labels on FireFox\n 'tabindex': '-1',\n '[attr.aria-valuenow]': '(mode === \"indeterminate\" || mode === \"query\") ? null : value',\n '[attr.mode]': 'mode',\n 'class': 'mat-progress-bar',\n '[class._mat-animation-noopable]': '_isNoopAnimation',\n }, inputs: ['color'], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: \"<!--\\n All children need to be hidden for screen readers in order to support ChromeVox.\\n More context in the issue: https://github.com/angular/components/issues/22165.\\n-->\\n<div aria-hidden=\\\"true\\\">\\n <svg width=\\\"100%\\\" height=\\\"4\\\" focusable=\\\"false\\\" class=\\\"mat-progress-bar-background mat-progress-bar-element\\\">\\n <defs>\\n <pattern [id]=\\\"progressbarId\\\" x=\\\"4\\\" y=\\\"0\\\" width=\\\"8\\\" height=\\\"4\\\" patternUnits=\\\"userSpaceOnUse\\\">\\n <circle cx=\\\"2\\\" cy=\\\"2\\\" r=\\\"2\\\"/>\\n </pattern>\\n </defs>\\n <rect [attr.fill]=\\\"_rectangleFillValue\\\" width=\\\"100%\\\" height=\\\"100%\\\"/>\\n </svg>\\n <!--\\n The background div is named as such because it appears below the other divs and is not sized based\\n on values.\\n -->\\n <div class=\\\"mat-progress-bar-buffer mat-progress-bar-element\\\" [ngStyle]=\\\"_bufferTransform()\\\"></div>\\n <div class=\\\"mat-progress-bar-primary mat-progress-bar-fill mat-progress-bar-element\\\" [ngStyle]=\\\"_primaryTransform()\\\" #primaryValueBar></div>\\n <div class=\\\"mat-progress-bar-secondary mat-progress-bar-fill mat-progress-bar-element\\\"></div>\\n</div>\\n\", styles: [\".mat-progress-bar{display:block;height:4px;overflow:hidden;position:relative;transition:opacity 250ms linear;width:100%}._mat-animation-noopable.mat-progress-bar{transition:none;animation:none}.mat-progress-bar .mat-progress-bar-element,.mat-progress-bar .mat-progress-bar-fill::after{height:100%;position:absolute;width:100%}.mat-progress-bar .mat-progress-bar-background{width:calc(100% + 10px)}.cdk-high-contrast-active .mat-progress-bar .mat-progress-bar-background{display:none}.mat-progress-bar .mat-progress-bar-buffer{transform-origin:top left;transition:transform 250ms ease}.cdk-high-contrast-active .mat-progress-bar .mat-progress-bar-buffer{border-top:solid 5px;opacity:.5}.mat-progress-bar .mat-progress-bar-secondary{display:none}.mat-progress-bar .mat-progress-bar-fill{animation:none;transform-origin:top left;transition:transform 250ms ease}.cdk-high-contrast-active .mat-progress-bar .mat-progress-bar-fill{border-top:solid 4px}.mat-progress-bar .mat-progress-bar-fill::after{animation:none;content:\\\"\\\";display:inline-block;left:0}.mat-progress-bar[dir=rtl],[dir=rtl] .mat-progress-bar{transform:rotateY(180deg)}.mat-progress-bar[mode=query]{transform:rotateZ(180deg)}.mat-progress-bar[mode=query][dir=rtl],[dir=rtl] .mat-progress-bar[mode=query]{transform:rotateZ(180deg) rotateY(180deg)}.mat-progress-bar[mode=indeterminate] .mat-progress-bar-fill,.mat-progress-bar[mode=query] .mat-progress-bar-fill{transition:none}.mat-progress-bar[mode=indeterminate] .mat-progress-bar-primary,.mat-progress-bar[mode=query] .mat-progress-bar-primary{-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:mat-progress-bar-primary-indeterminate-translate 2000ms infinite linear;left:-145.166611%}.mat-progress-bar[mode=indeterminate] .mat-progress-bar-primary.mat-progress-bar-fill::after,.mat-progress-bar[mode=query] .mat-progress-bar-primary.mat-progress-bar-fill::after{-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:mat-progress-bar-primary-indeterminate-scale 2000ms infinite linear}.mat-progress-bar[mode=indeterminate] .mat-progress-bar-secondary,.mat-progress-bar[mode=query] .mat-progress-bar-secondary{-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:mat-progress-bar-secondary-indeterminate-translate 2000ms infinite linear;left:-54.888891%;display:block}.mat-progress-bar[mode=indeterminate] .mat-progress-bar-secondary.mat-progress-bar-fill::after,.mat-progress-bar[mode=query] .mat-progress-bar-secondary.mat-progress-bar-fill::after{-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:mat-progress-bar-secondary-indeterminate-scale 2000ms infinite linear}.mat-progress-bar[mode=buffer] .mat-progress-bar-background{-webkit-backface-visibility:hidden;backface-visibility:hidden;animation:mat-progress-bar-background-scroll 250ms infinite linear;display:block}.mat-progress-bar._mat-animation-noopable .mat-progress-bar-fill,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-fill::after,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-buffer,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-primary,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-primary.mat-progress-bar-fill::after,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-secondary,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-secondary.mat-progress-bar-fill::after,.mat-progress-bar._mat-animation-noopable .mat-progress-bar-background{animation:none;transition-duration:1ms}@keyframes mat-progress-bar-primary-indeterminate-translate{0%{transform:translateX(0)}20%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(0)}59.15%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(83.67142%)}100%{transform:translateX(200.611057%)}}@keyframes mat-progress-bar-primary-indeterminate-scale{0%{transform:scaleX(0.08)}36.65%{animation-timing-function:cubic-bezier(0.334731, 0.12482, 0.785844, 1);transform:scaleX(0.08)}69.15%{animation-timing-function:cubic-bezier(0.06, 0.11, 0.6, 1);transform:scaleX(0.661479)}100%{transform:scaleX(0.08)}}@keyframes mat-progress-bar-secondary-indeterminate-translate{0%{animation-timing-function:cubic-bezier(0.15, 0, 0.515058, 0.409685);transform:translateX(0)}25%{animation-timing-function:cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);transform:translateX(37.651913%)}48.35%{animation-timing-function:cubic-bezier(0.4, 0.627035, 0.6, 0.902026);transform:translateX(84.386165%)}100%{transform:translateX(160.277782%)}}@keyframes mat-progress-bar-secondary-indeterminate-scale{0%{animation-timing-function:cubic-bezier(0.15, 0, 0.515058, 0.409685);transform:scaleX(0.08)}19.15%{animation-timing-function:cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);transform:scaleX(0.457104)}44.15%{animation-timing-function:cubic-bezier(0.4, 0.627035, 0.6, 0.902026);transform:scaleX(0.72796)}100%{transform:scaleX(0.08)}}@keyframes mat-progress-bar-background-scroll{to{transform:translateX(-8px)}}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_PROGRESS_BAR_LOCATION]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_PROGRESS_BAR_DEFAULT_OPTIONS]\n }] }, { type: i0.ChangeDetectorRef }];\n }, propDecorators: { value: [{\n type: Input\n }], bufferValue: [{\n type: Input\n }], _primaryValueBar: [{\n type: ViewChild,\n args: ['primaryValueBar']\n }], animationEnd: [{\n type: Output\n }], mode: [{\n type: Input\n }] } });\n/** Clamps a value to be between two numbers, by default 0 and 100. */\nfunction clamp(v, min = 0, max = 100) {\n return Math.max(min, Math.min(max, v));\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 MatProgressBarModule {\n}\nMatProgressBarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatProgressBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatProgressBarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatProgressBarModule, declarations: [MatProgressBar], imports: [CommonModule, MatCommonModule], exports: [MatProgressBar, MatCommonModule] });\nMatProgressBarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatProgressBarModule, imports: [[CommonModule, MatCommonModule], MatCommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatProgressBarModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, MatCommonModule],\n exports: [MatProgressBar, MatCommonModule],\n declarations: [MatProgressBar],\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 { MAT_PROGRESS_BAR_DEFAULT_OPTIONS, MAT_PROGRESS_BAR_LOCATION, MAT_PROGRESS_BAR_LOCATION_FACTORY, MatProgressBar, MatProgressBarModule };\n","import * as i3 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { forwardRef, EventEmitter, Component, ViewEncapsulation, ChangeDetectionStrategy, Optional, Attribute, Inject, Input, Output, ViewChild, NgModule } from '@angular/core';\nimport { mixinTabIndex, mixinColor, mixinDisabled, MatCommonModule } from '@angular/material/core';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { hasModifierKey, DOWN_ARROW, RIGHT_ARROW, UP_ARROW, LEFT_ARROW, HOME, END, PAGE_DOWN, PAGE_UP } from '@angular/cdk/keycodes';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\nimport { normalizePassiveListenerOptions } from '@angular/cdk/platform';\nimport { Subscription } from 'rxjs';\nimport * as i1 from '@angular/cdk/a11y';\nimport * as i2 from '@angular/cdk/bidi';\n\nconst activeEventOptions = normalizePassiveListenerOptions({ passive: false });\n/**\n * Visually, a 30px separation between tick marks looks best. This is very subjective but it is\n * the default separation we chose.\n */\nconst MIN_AUTO_TICK_SEPARATION = 30;\n/** The thumb gap size for a disabled slider. */\nconst DISABLED_THUMB_GAP = 7;\n/** The thumb gap size for a non-active slider at its minimum value. */\nconst MIN_VALUE_NONACTIVE_THUMB_GAP = 7;\n/** The thumb gap size for an active slider at its minimum value. */\nconst MIN_VALUE_ACTIVE_THUMB_GAP = 10;\n/**\n * Provider Expression that allows mat-slider to register as a ControlValueAccessor.\n * This allows it to support [(ngModel)] and [formControl].\n * @docs-private\n */\nconst MAT_SLIDER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatSlider),\n multi: true,\n};\n/** A simple change event emitted by the MatSlider component. */\nclass MatSliderChange {\n}\n// Boilerplate for applying mixins to MatSlider.\n/** @docs-private */\nconst _MatSliderBase = mixinTabIndex(mixinColor(mixinDisabled(class {\n constructor(_elementRef) {\n this._elementRef = _elementRef;\n }\n}), 'accent'));\n/**\n * Allows users to select from a range of values by moving the slider thumb. It is similar in\n * behavior to the native `<input type=\"range\">` element.\n */\nclass MatSlider extends _MatSliderBase {\n constructor(elementRef, _focusMonitor, _changeDetectorRef, _dir, tabIndex, _ngZone, _document, _animationMode) {\n super(elementRef);\n this._focusMonitor = _focusMonitor;\n this._changeDetectorRef = _changeDetectorRef;\n this._dir = _dir;\n this._ngZone = _ngZone;\n this._animationMode = _animationMode;\n this._invert = false;\n this._max = 100;\n this._min = 0;\n this._step = 1;\n this._thumbLabel = false;\n this._tickInterval = 0;\n this._value = null;\n this._vertical = false;\n /** Event emitted when the slider value has changed. */\n this.change = new EventEmitter();\n /** Event emitted when the slider thumb moves. */\n this.input = new EventEmitter();\n /**\n * Emits when the raw value of the slider changes. This is here primarily\n * to facilitate the two-way binding for the `value` input.\n * @docs-private\n */\n this.valueChange = new EventEmitter();\n /** onTouch function registered via registerOnTouch (ControlValueAccessor). */\n this.onTouched = () => { };\n this._percent = 0;\n /**\n * Whether or not the thumb is sliding and what the user is using to slide it with.\n * Used to determine if there should be a transition for the thumb and fill track.\n */\n this._isSliding = null;\n /**\n * Whether or not the slider is active (clicked or sliding).\n * Used to shrink and grow the thumb as according to the Material Design spec.\n */\n this._isActive = false;\n /** The size of a tick interval as a percentage of the size of the track. */\n this._tickIntervalPercent = 0;\n /** The dimensions of the slider. */\n this._sliderDimensions = null;\n this._controlValueAccessorChangeFn = () => { };\n /** Subscription to the Directionality change EventEmitter. */\n this._dirChangeSubscription = Subscription.EMPTY;\n /** Called when the user has put their pointer down on the slider. */\n this._pointerDown = (event) => {\n // Don't do anything if the slider is disabled or the\n // user is using anything other than the main mouse button.\n if (this.disabled || this._isSliding || (!isTouchEvent(event) && event.button !== 0)) {\n return;\n }\n this._ngZone.run(() => {\n this._touchId = isTouchEvent(event)\n ? getTouchIdForSlider(event, this._elementRef.nativeElement)\n : undefined;\n const pointerPosition = getPointerPositionOnPage(event, this._touchId);\n if (pointerPosition) {\n const oldValue = this.value;\n this._isSliding = 'pointer';\n this._lastPointerEvent = event;\n this._focusHostElement();\n this._onMouseenter(); // Simulate mouseenter in case this is a mobile device.\n this._bindGlobalEvents(event);\n this._focusHostElement();\n this._updateValueFromPosition(pointerPosition);\n this._valueOnSlideStart = oldValue;\n // Despite the fact that we explicitly bind active events, in some cases the browser\n // still dispatches non-cancelable events which cause this call to throw an error.\n // There doesn't appear to be a good way of avoiding them. See #23820.\n if (event.cancelable) {\n event.preventDefault();\n }\n // Emit a change and input event if the value changed.\n if (oldValue != this.value) {\n this._emitInputEvent();\n }\n }\n });\n };\n /**\n * Called when the user has moved their pointer after\n * starting to drag. Bound on the document level.\n */\n this._pointerMove = (event) => {\n if (this._isSliding === 'pointer') {\n const pointerPosition = getPointerPositionOnPage(event, this._touchId);\n if (pointerPosition) {\n // Prevent the slide from selecting anything else.\n event.preventDefault();\n const oldValue = this.value;\n this._lastPointerEvent = event;\n this._updateValueFromPosition(pointerPosition);\n // Native range elements always emit `input` events when the value changed while sliding.\n if (oldValue != this.value) {\n this._emitInputEvent();\n }\n }\n }\n };\n /** Called when the user has lifted their pointer. Bound on the document level. */\n this._pointerUp = (event) => {\n if (this._isSliding === 'pointer') {\n if (!isTouchEvent(event) ||\n typeof this._touchId !== 'number' ||\n // Note that we use `changedTouches`, rather than `touches` because it\n // seems like in most cases `touches` is empty for `touchend` events.\n findMatchingTouch(event.changedTouches, this._touchId)) {\n event.preventDefault();\n this._removeGlobalEvents();\n this._isSliding = null;\n this._touchId = undefined;\n if (this._valueOnSlideStart != this.value && !this.disabled) {\n this._emitChangeEvent();\n }\n this._valueOnSlideStart = this._lastPointerEvent = null;\n }\n }\n };\n /** Called when the window has lost focus. */\n this._windowBlur = () => {\n // If the window is blurred while dragging we need to stop dragging because the\n // browser won't dispatch the `mouseup` and `touchend` events anymore.\n if (this._lastPointerEvent) {\n this._pointerUp(this._lastPointerEvent);\n }\n };\n this._document = _document;\n this.tabIndex = parseInt(tabIndex) || 0;\n _ngZone.runOutsideAngular(() => {\n const element = elementRef.nativeElement;\n element.addEventListener('mousedown', this._pointerDown, activeEventOptions);\n element.addEventListener('touchstart', this._pointerDown, activeEventOptions);\n });\n }\n /** Whether the slider is inverted. */\n get invert() {\n return this._invert;\n }\n set invert(value) {\n this._invert = coerceBooleanProperty(value);\n }\n /** The maximum value that the slider can have. */\n get max() {\n return this._max;\n }\n set max(v) {\n this._max = coerceNumberProperty(v, this._max);\n this._percent = this._calculatePercentage(this._value);\n // Since this also modifies the percentage, we need to let the change detection know.\n this._changeDetectorRef.markForCheck();\n }\n /** The minimum value that the slider can have. */\n get min() {\n return this._min;\n }\n set min(v) {\n this._min = coerceNumberProperty(v, this._min);\n this._percent = this._calculatePercentage(this._value);\n // Since this also modifies the percentage, we need to let the change detection know.\n this._changeDetectorRef.markForCheck();\n }\n /** The values at which the thumb will snap. */\n get step() {\n return this._step;\n }\n set step(v) {\n this._step = coerceNumberProperty(v, this._step);\n if (this._step % 1 !== 0) {\n this._roundToDecimal = this._step.toString().split('.').pop().length;\n }\n // Since this could modify the label, we need to notify the change detection.\n this._changeDetectorRef.markForCheck();\n }\n /** Whether or not to show the thumb label. */\n get thumbLabel() {\n return this._thumbLabel;\n }\n set thumbLabel(value) {\n this._thumbLabel = coerceBooleanProperty(value);\n }\n /**\n * How often to show ticks. Relative to the step so that a tick always appears on a step.\n * Ex: Tick interval of 4 with a step of 3 will draw a tick every 4 steps (every 12 values).\n */\n get tickInterval() {\n return this._tickInterval;\n }\n set tickInterval(value) {\n if (value === 'auto') {\n this._tickInterval = 'auto';\n }\n else if (typeof value === 'number' || typeof value === 'string') {\n this._tickInterval = coerceNumberProperty(value, this._tickInterval);\n }\n else {\n this._tickInterval = 0;\n }\n }\n /** Value of the slider. */\n get value() {\n // If the value needs to be read and it is still uninitialized, initialize it to the min.\n if (this._value === null) {\n this.value = this._min;\n }\n return this._value;\n }\n set value(v) {\n if (v !== this._value) {\n let value = coerceNumberProperty(v, 0);\n // While incrementing by a decimal we can end up with values like 33.300000000000004.\n // Truncate it to ensure that it matches the label and to make it easier to work with.\n if (this._roundToDecimal && value !== this.min && value !== this.max) {\n value = parseFloat(value.toFixed(this._roundToDecimal));\n }\n this._value = value;\n this._percent = this._calculatePercentage(this._value);\n // Since this also modifies the percentage, we need to let the change detection know.\n this._changeDetectorRef.markForCheck();\n }\n }\n /** Whether the slider is vertical. */\n get vertical() {\n return this._vertical;\n }\n set vertical(value) {\n this._vertical = coerceBooleanProperty(value);\n }\n /** The value to be used for display purposes. */\n get displayValue() {\n if (this.displayWith) {\n // Value is never null but since setters and getters cannot have\n // different types, the value getter is also typed to return null.\n return this.displayWith(this.value);\n }\n // Note that this could be improved further by rounding something like 0.999 to 1 or\n // 0.899 to 0.9, however it is very performance sensitive, because it gets called on\n // every change detection cycle.\n if (this._roundToDecimal && this.value && this.value % 1 !== 0) {\n return this.value.toFixed(this._roundToDecimal);\n }\n return this.value || 0;\n }\n /** set focus to the host element */\n focus(options) {\n this._focusHostElement(options);\n }\n /** blur the host element */\n blur() {\n this._blurHostElement();\n }\n /** The percentage of the slider that coincides with the value. */\n get percent() {\n return this._clamp(this._percent);\n }\n /**\n * Whether the axis of the slider is inverted.\n * (i.e. whether moving the thumb in the positive x or y direction decreases the slider's value).\n */\n _shouldInvertAxis() {\n // Standard non-inverted mode for a vertical slider should be dragging the thumb from bottom to\n // top. However from a y-axis standpoint this is inverted.\n return this.vertical ? !this.invert : this.invert;\n }\n /** Whether the slider is at its minimum value. */\n _isMinValue() {\n return this.percent === 0;\n }\n /**\n * The amount of space to leave between the slider thumb and the track fill & track background\n * elements.\n */\n _getThumbGap() {\n if (this.disabled) {\n return DISABLED_THUMB_GAP;\n }\n if (this._isMinValue() && !this.thumbLabel) {\n return this._isActive ? MIN_VALUE_ACTIVE_THUMB_GAP : MIN_VALUE_NONACTIVE_THUMB_GAP;\n }\n return 0;\n }\n /** CSS styles for the track background element. */\n _getTrackBackgroundStyles() {\n const axis = this.vertical ? 'Y' : 'X';\n const scale = this.vertical ? `1, ${1 - this.percent}, 1` : `${1 - this.percent}, 1, 1`;\n const sign = this._shouldInvertMouseCoords() ? '-' : '';\n return {\n // scale3d avoids some rendering issues in Chrome. See #12071.\n transform: `translate${axis}(${sign}${this._getThumbGap()}px) scale3d(${scale})`,\n };\n }\n /** CSS styles for the track fill element. */\n _getTrackFillStyles() {\n const percent = this.percent;\n const axis = this.vertical ? 'Y' : 'X';\n const scale = this.vertical ? `1, ${percent}, 1` : `${percent}, 1, 1`;\n const sign = this._shouldInvertMouseCoords() ? '' : '-';\n return {\n // scale3d avoids some rendering issues in Chrome. See #12071.\n transform: `translate${axis}(${sign}${this._getThumbGap()}px) scale3d(${scale})`,\n // iOS Safari has a bug where it won't re-render elements which start of as `scale(0)` until\n // something forces a style recalculation on it. Since we'll end up with `scale(0)` when\n // the value of the slider is 0, we can easily get into this situation. We force a\n // recalculation by changing the element's `display` when it goes from 0 to any other value.\n display: percent === 0 ? 'none' : '',\n };\n }\n /** CSS styles for the ticks container element. */\n _getTicksContainerStyles() {\n let axis = this.vertical ? 'Y' : 'X';\n // For a horizontal slider in RTL languages we push the ticks container off the left edge\n // instead of the right edge to avoid causing a horizontal scrollbar to appear.\n let sign = !this.vertical && this._getDirection() == 'rtl' ? '' : '-';\n let offset = (this._tickIntervalPercent / 2) * 100;\n return {\n 'transform': `translate${axis}(${sign}${offset}%)`,\n };\n }\n /** CSS styles for the ticks element. */\n _getTicksStyles() {\n let tickSize = this._tickIntervalPercent * 100;\n let backgroundSize = this.vertical ? `2px ${tickSize}%` : `${tickSize}% 2px`;\n let axis = this.vertical ? 'Y' : 'X';\n // Depending on the direction we pushed the ticks container, push the ticks the opposite\n // direction to re-center them but clip off the end edge. In RTL languages we need to flip the\n // ticks 180 degrees so we're really cutting off the end edge abd not the start.\n let sign = !this.vertical && this._getDirection() == 'rtl' ? '-' : '';\n let rotate = !this.vertical && this._getDirection() == 'rtl' ? ' rotate(180deg)' : '';\n let styles = {\n 'backgroundSize': backgroundSize,\n // Without translateZ ticks sometimes jitter as the slider moves on Chrome & Firefox.\n 'transform': `translateZ(0) translate${axis}(${sign}${tickSize / 2}%)${rotate}`,\n };\n if (this._isMinValue() && this._getThumbGap()) {\n const shouldInvertAxis = this._shouldInvertAxis();\n let side;\n if (this.vertical) {\n side = shouldInvertAxis ? 'Bottom' : 'Top';\n }\n else {\n side = shouldInvertAxis ? 'Right' : 'Left';\n }\n styles[`padding${side}`] = `${this._getThumbGap()}px`;\n }\n return styles;\n }\n _getThumbContainerStyles() {\n const shouldInvertAxis = this._shouldInvertAxis();\n let axis = this.vertical ? 'Y' : 'X';\n // For a horizontal slider in RTL languages we push the thumb container off the left edge\n // instead of the right edge to avoid causing a horizontal scrollbar to appear.\n let invertOffset = this._getDirection() == 'rtl' && !this.vertical ? !shouldInvertAxis : shouldInvertAxis;\n let offset = (invertOffset ? this.percent : 1 - this.percent) * 100;\n return {\n 'transform': `translate${axis}(-${offset}%)`,\n };\n }\n /**\n * Whether mouse events should be converted to a slider position by calculating their distance\n * from the right or bottom edge of the slider as opposed to the top or left.\n */\n _shouldInvertMouseCoords() {\n const shouldInvertAxis = this._shouldInvertAxis();\n return this._getDirection() == 'rtl' && !this.vertical ? !shouldInvertAxis : shouldInvertAxis;\n }\n /** The language direction for this slider element. */\n _getDirection() {\n return this._dir && this._dir.value == 'rtl' ? 'rtl' : 'ltr';\n }\n ngAfterViewInit() {\n this._focusMonitor.monitor(this._elementRef, true).subscribe((origin) => {\n this._isActive = !!origin && origin !== 'keyboard';\n this._changeDetectorRef.detectChanges();\n });\n if (this._dir) {\n this._dirChangeSubscription = this._dir.change.subscribe(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n }\n ngOnDestroy() {\n const element = this._elementRef.nativeElement;\n element.removeEventListener('mousedown', this._pointerDown, activeEventOptions);\n element.removeEventListener('touchstart', this._pointerDown, activeEventOptions);\n this._lastPointerEvent = null;\n this._removeGlobalEvents();\n this._focusMonitor.stopMonitoring(this._elementRef);\n this._dirChangeSubscription.unsubscribe();\n }\n _onMouseenter() {\n if (this.disabled) {\n return;\n }\n // We save the dimensions of the slider here so we can use them to update the spacing of the\n // ticks and determine where on the slider click and slide events happen.\n this._sliderDimensions = this._getSliderDimensions();\n this._updateTickIntervalPercent();\n }\n _onFocus() {\n // We save the dimensions of the slider here so we can use them to update the spacing of the\n // ticks and determine where on the slider click and slide events happen.\n this._sliderDimensions = this._getSliderDimensions();\n this._updateTickIntervalPercent();\n }\n _onBlur() {\n this.onTouched();\n }\n _onKeydown(event) {\n if (this.disabled ||\n hasModifierKey(event) ||\n (this._isSliding && this._isSliding !== 'keyboard')) {\n return;\n }\n const oldValue = this.value;\n switch (event.keyCode) {\n case PAGE_UP:\n this._increment(10);\n break;\n case PAGE_DOWN:\n this._increment(-10);\n break;\n case END:\n this.value = this.max;\n break;\n case HOME:\n this.value = this.min;\n break;\n case LEFT_ARROW:\n // NOTE: For a sighted user it would make more sense that when they press an arrow key on an\n // inverted slider the thumb moves in that direction. However for a blind user, nothing\n // about the slider indicates that it is inverted. They will expect left to be decrement,\n // regardless of how it appears on the screen. For speakers ofRTL languages, they probably\n // expect left to mean increment. Therefore we flip the meaning of the side arrow keys for\n // RTL. For inverted sliders we prefer a good a11y experience to having it \"look right\" for\n // sighted users, therefore we do not swap the meaning.\n this._increment(this._getDirection() == 'rtl' ? 1 : -1);\n break;\n case UP_ARROW:\n this._increment(1);\n break;\n case RIGHT_ARROW:\n // See comment on LEFT_ARROW about the conditions under which we flip the meaning.\n this._increment(this._getDirection() == 'rtl' ? -1 : 1);\n break;\n case DOWN_ARROW:\n this._increment(-1);\n break;\n default:\n // Return if the key is not one that we explicitly handle to avoid calling preventDefault on\n // it.\n return;\n }\n if (oldValue != this.value) {\n this._emitInputEvent();\n this._emitChangeEvent();\n }\n this._isSliding = 'keyboard';\n event.preventDefault();\n }\n _onKeyup() {\n if (this._isSliding === 'keyboard') {\n this._isSliding = null;\n }\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n return this._document.defaultView || window;\n }\n /**\n * Binds our global move and end events. They're bound at the document level and only while\n * dragging so that the user doesn't have to keep their pointer exactly over the slider\n * as they're swiping across the screen.\n */\n _bindGlobalEvents(triggerEvent) {\n // Note that we bind the events to the `document`, because it allows us to capture\n // drag cancel events where the user's pointer is outside the browser window.\n const document = this._document;\n const isTouch = isTouchEvent(triggerEvent);\n const moveEventName = isTouch ? 'touchmove' : 'mousemove';\n const endEventName = isTouch ? 'touchend' : 'mouseup';\n document.addEventListener(moveEventName, this._pointerMove, activeEventOptions);\n document.addEventListener(endEventName, this._pointerUp, activeEventOptions);\n if (isTouch) {\n document.addEventListener('touchcancel', this._pointerUp, activeEventOptions);\n }\n const window = this._getWindow();\n if (typeof window !== 'undefined' && window) {\n window.addEventListener('blur', this._windowBlur);\n }\n }\n /** Removes any global event listeners that we may have added. */\n _removeGlobalEvents() {\n const document = this._document;\n document.removeEventListener('mousemove', this._pointerMove, activeEventOptions);\n document.removeEventListener('mouseup', this._pointerUp, activeEventOptions);\n document.removeEventListener('touchmove', this._pointerMove, activeEventOptions);\n document.removeEventListener('touchend', this._pointerUp, activeEventOptions);\n document.removeEventListener('touchcancel', this._pointerUp, activeEventOptions);\n const window = this._getWindow();\n if (typeof window !== 'undefined' && window) {\n window.removeEventListener('blur', this._windowBlur);\n }\n }\n /** Increments the slider by the given number of steps (negative number decrements). */\n _increment(numSteps) {\n // Pre-clamp the current value since it's allowed to be\n // out of bounds when assigned programmatically.\n const clampedValue = this._clamp(this.value || 0, this.min, this.max);\n this.value = this._clamp(clampedValue + this.step * numSteps, this.min, this.max);\n }\n /** Calculate the new value from the new physical location. The value will always be snapped. */\n _updateValueFromPosition(pos) {\n if (!this._sliderDimensions) {\n return;\n }\n let offset = this.vertical ? this._sliderDimensions.top : this._sliderDimensions.left;\n let size = this.vertical ? this._sliderDimensions.height : this._sliderDimensions.width;\n let posComponent = this.vertical ? pos.y : pos.x;\n // The exact value is calculated from the event and used to find the closest snap value.\n let percent = this._clamp((posComponent - offset) / size);\n if (this._shouldInvertMouseCoords()) {\n percent = 1 - percent;\n }\n // Since the steps may not divide cleanly into the max value, if the user\n // slid to 0 or 100 percent, we jump to the min/max value. This approach\n // is slightly more intuitive than using `Math.ceil` below, because it\n // follows the user's pointer closer.\n if (percent === 0) {\n this.value = this.min;\n }\n else if (percent === 1) {\n this.value = this.max;\n }\n else {\n const exactValue = this._calculateValue(percent);\n // This calculation finds the closest step by finding the closest\n // whole number divisible by the step relative to the min.\n const closestValue = Math.round((exactValue - this.min) / this.step) * this.step + this.min;\n // The value needs to snap to the min and max.\n this.value = this._clamp(closestValue, this.min, this.max);\n }\n }\n /** Emits a change event if the current value is different from the last emitted value. */\n _emitChangeEvent() {\n this._controlValueAccessorChangeFn(this.value);\n this.valueChange.emit(this.value);\n this.change.emit(this._createChangeEvent());\n }\n /** Emits an input event when the current value is different from the last emitted value. */\n _emitInputEvent() {\n this.input.emit(this._createChangeEvent());\n }\n /** Updates the amount of space between ticks as a percentage of the width of the slider. */\n _updateTickIntervalPercent() {\n if (!this.tickInterval || !this._sliderDimensions) {\n return;\n }\n let tickIntervalPercent;\n if (this.tickInterval == 'auto') {\n let trackSize = this.vertical ? this._sliderDimensions.height : this._sliderDimensions.width;\n let pixelsPerStep = (trackSize * this.step) / (this.max - this.min);\n let stepsPerTick = Math.ceil(MIN_AUTO_TICK_SEPARATION / pixelsPerStep);\n let pixelsPerTick = stepsPerTick * this.step;\n tickIntervalPercent = pixelsPerTick / trackSize;\n }\n else {\n tickIntervalPercent = (this.tickInterval * this.step) / (this.max - this.min);\n }\n this._tickIntervalPercent = isSafeNumber(tickIntervalPercent) ? tickIntervalPercent : 0;\n }\n /** Creates a slider change object from the specified value. */\n _createChangeEvent(value = this.value) {\n let event = new MatSliderChange();\n event.source = this;\n event.value = value;\n return event;\n }\n /** Calculates the percentage of the slider that a value is. */\n _calculatePercentage(value) {\n const percentage = ((value || 0) - this.min) / (this.max - this.min);\n return isSafeNumber(percentage) ? percentage : 0;\n }\n /** Calculates the value a percentage of the slider corresponds to. */\n _calculateValue(percentage) {\n return this.min + percentage * (this.max - this.min);\n }\n /** Return a number between two numbers. */\n _clamp(value, min = 0, max = 1) {\n return Math.max(min, Math.min(value, max));\n }\n /**\n * Get the bounding client rect of the slider track element.\n * The track is used rather than the native element to ignore the extra space that the thumb can\n * take up.\n */\n _getSliderDimensions() {\n return this._sliderWrapper ? this._sliderWrapper.nativeElement.getBoundingClientRect() : null;\n }\n /**\n * Focuses the native element.\n * Currently only used to allow a blur event to fire but will be used with keyboard input later.\n */\n _focusHostElement(options) {\n this._elementRef.nativeElement.focus(options);\n }\n /** Blurs the native element. */\n _blurHostElement() {\n this._elementRef.nativeElement.blur();\n }\n /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param value\n */\n writeValue(value) {\n this.value = value;\n }\n /**\n * Registers a callback to be triggered when the value has changed.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnChange(fn) {\n this._controlValueAccessorChangeFn = fn;\n }\n /**\n * Registers a callback to be triggered when the component is touched.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n /**\n * Sets whether the component should be disabled.\n * Implemented as part of ControlValueAccessor.\n * @param isDisabled\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n}\nMatSlider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatSlider, deps: [{ token: i0.ElementRef }, { token: i1.FocusMonitor }, { token: i0.ChangeDetectorRef }, { token: i2.Directionality, optional: true }, { token: 'tabindex', attribute: true }, { token: i0.NgZone }, { token: DOCUMENT }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMatSlider.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.2.0\", type: MatSlider, selector: \"mat-slider\", inputs: { disabled: \"disabled\", color: \"color\", tabIndex: \"tabIndex\", invert: \"invert\", max: \"max\", min: \"min\", step: \"step\", thumbLabel: \"thumbLabel\", tickInterval: \"tickInterval\", value: \"value\", displayWith: \"displayWith\", valueText: \"valueText\", vertical: \"vertical\" }, outputs: { change: \"change\", input: \"input\", valueChange: \"valueChange\" }, host: { attributes: { \"role\": \"slider\" }, listeners: { \"focus\": \"_onFocus()\", \"blur\": \"_onBlur()\", \"keydown\": \"_onKeydown($event)\", \"keyup\": \"_onKeyup()\", \"mouseenter\": \"_onMouseenter()\", \"selectstart\": \"$event.preventDefault()\" }, properties: { \"tabIndex\": \"tabIndex\", \"attr.aria-disabled\": \"disabled\", \"attr.aria-valuemax\": \"max\", \"attr.aria-valuemin\": \"min\", \"attr.aria-valuenow\": \"value\", \"attr.aria-valuetext\": \"valueText == null ? displayValue : valueText\", \"attr.aria-orientation\": \"vertical ? \\\"vertical\\\" : \\\"horizontal\\\"\", \"class.mat-slider-disabled\": \"disabled\", \"class.mat-slider-has-ticks\": \"tickInterval\", \"class.mat-slider-horizontal\": \"!vertical\", \"class.mat-slider-axis-inverted\": \"_shouldInvertAxis()\", \"class.mat-slider-invert-mouse-coords\": \"_shouldInvertMouseCoords()\", \"class.mat-slider-sliding\": \"_isSliding\", \"class.mat-slider-thumb-label-showing\": \"thumbLabel\", \"class.mat-slider-vertical\": \"vertical\", \"class.mat-slider-min-value\": \"_isMinValue()\", \"class.mat-slider-hide-last-tick\": \"disabled || _isMinValue() && _getThumbGap() && _shouldInvertAxis()\", \"class._mat-animation-noopable\": \"_animationMode === \\\"NoopAnimations\\\"\" }, classAttribute: \"mat-slider mat-focus-indicator\" }, providers: [MAT_SLIDER_VALUE_ACCESSOR], viewQueries: [{ propertyName: \"_sliderWrapper\", first: true, predicate: [\"sliderWrapper\"], descendants: true }], exportAs: [\"matSlider\"], usesInheritance: true, ngImport: i0, template: \"<div class=\\\"mat-slider-wrapper\\\" #sliderWrapper>\\n <div class=\\\"mat-slider-track-wrapper\\\">\\n <div class=\\\"mat-slider-track-background\\\" [ngStyle]=\\\"_getTrackBackgroundStyles()\\\"></div>\\n <div class=\\\"mat-slider-track-fill\\\" [ngStyle]=\\\"_getTrackFillStyles()\\\"></div>\\n </div>\\n <div class=\\\"mat-slider-ticks-container\\\" [ngStyle]=\\\"_getTicksContainerStyles()\\\">\\n <div class=\\\"mat-slider-ticks\\\" [ngStyle]=\\\"_getTicksStyles()\\\"></div>\\n </div>\\n <div class=\\\"mat-slider-thumb-container\\\" [ngStyle]=\\\"_getThumbContainerStyles()\\\">\\n <div class=\\\"mat-slider-focus-ring\\\"></div>\\n <div class=\\\"mat-slider-thumb\\\"></div>\\n <div class=\\\"mat-slider-thumb-label\\\">\\n <span class=\\\"mat-slider-thumb-label-text\\\">{{displayValue}}</span>\\n </div>\\n </div>\\n</div>\\n\", styles: [\".mat-slider{display:inline-block;position:relative;box-sizing:border-box;padding:8px;outline:none;vertical-align:middle}.mat-slider:not(.mat-slider-disabled):active,.mat-slider.mat-slider-sliding:not(.mat-slider-disabled){cursor:-webkit-grabbing;cursor:grabbing}.mat-slider-wrapper{-webkit-print-color-adjust:exact;color-adjust:exact;position:absolute}.mat-slider-track-wrapper{position:absolute;top:0;left:0;overflow:hidden}.mat-slider-track-fill{position:absolute;transform-origin:0 0;transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1),background-color 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-slider-track-background{position:absolute;transform-origin:100% 100%;transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1),background-color 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-slider-ticks-container{position:absolute;left:0;top:0;overflow:hidden}.mat-slider-ticks{-webkit-background-clip:content-box;background-clip:content-box;background-repeat:repeat;box-sizing:border-box;opacity:0;transition:opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-slider-thumb-container{position:absolute;z-index:1;transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-slider-focus-ring{position:absolute;width:30px;height:30px;border-radius:50%;transform:scale(0);opacity:0;transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1),background-color 400ms cubic-bezier(0.25, 0.8, 0.25, 1),opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-slider.cdk-keyboard-focused .mat-slider-focus-ring,.mat-slider.cdk-program-focused .mat-slider-focus-ring{transform:scale(1);opacity:1}.mat-slider:not(.mat-slider-disabled):not(.mat-slider-sliding) .mat-slider-thumb-label,.mat-slider:not(.mat-slider-disabled):not(.mat-slider-sliding) .mat-slider-thumb{cursor:-webkit-grab;cursor:grab}.mat-slider-thumb{position:absolute;right:-10px;bottom:-10px;box-sizing:border-box;width:20px;height:20px;border:3px solid transparent;border-radius:50%;transform:scale(0.7);transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1),background-color 400ms cubic-bezier(0.25, 0.8, 0.25, 1),border-color 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-slider-thumb-label{display:none;align-items:center;justify-content:center;position:absolute;width:28px;height:28px;border-radius:50%;transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1),border-radius 400ms cubic-bezier(0.25, 0.8, 0.25, 1),background-color 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}.cdk-high-contrast-active .mat-slider-thumb-label{outline:solid 1px}.mat-slider-thumb-label-text{z-index:1;opacity:0;transition:opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-slider-sliding .mat-slider-track-fill,.mat-slider-sliding .mat-slider-track-background,.mat-slider-sliding .mat-slider-thumb-container{transition-duration:0ms}.mat-slider-has-ticks .mat-slider-wrapper::after{content:\\\"\\\";position:absolute;border-width:0;border-style:solid;opacity:0;transition:opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-slider-has-ticks.cdk-focused:not(.mat-slider-hide-last-tick) .mat-slider-wrapper::after,.mat-slider-has-ticks:hover:not(.mat-slider-hide-last-tick) .mat-slider-wrapper::after{opacity:1}.mat-slider-has-ticks.cdk-focused:not(.mat-slider-disabled) .mat-slider-ticks,.mat-slider-has-ticks:hover:not(.mat-slider-disabled) .mat-slider-ticks{opacity:1}.mat-slider-thumb-label-showing .mat-slider-focus-ring{display:none}.mat-slider-thumb-label-showing .mat-slider-thumb-label{display:flex}.mat-slider-axis-inverted .mat-slider-track-fill{transform-origin:100% 100%}.mat-slider-axis-inverted .mat-slider-track-background{transform-origin:0 0}.mat-slider:not(.mat-slider-disabled).cdk-focused.mat-slider-thumb-label-showing .mat-slider-thumb{transform:scale(0)}.mat-slider:not(.mat-slider-disabled).cdk-focused .mat-slider-thumb-label{border-radius:50% 50% 0}.mat-slider:not(.mat-slider-disabled).cdk-focused .mat-slider-thumb-label-text{opacity:1}.mat-slider:not(.mat-slider-disabled).cdk-mouse-focused .mat-slider-thumb,.mat-slider:not(.mat-slider-disabled).cdk-touch-focused .mat-slider-thumb,.mat-slider:not(.mat-slider-disabled).cdk-program-focused .mat-slider-thumb{border-width:2px;transform:scale(1)}.mat-slider-disabled .mat-slider-focus-ring{transform:scale(0);opacity:0}.mat-slider-disabled .mat-slider-thumb{border-width:4px;transform:scale(0.5)}.mat-slider-disabled .mat-slider-thumb-label{display:none}.mat-slider-horizontal{height:48px;min-width:128px}.mat-slider-horizontal .mat-slider-wrapper{height:2px;top:23px;left:8px;right:8px}.mat-slider-horizontal .mat-slider-wrapper::after{height:2px;border-left-width:2px;right:0;top:0}.mat-slider-horizontal .mat-slider-track-wrapper{height:2px;width:100%}.mat-slider-horizontal .mat-slider-track-fill{height:2px;width:100%;transform:scaleX(0)}.mat-slider-horizontal .mat-slider-track-background{height:2px;width:100%;transform:scaleX(1)}.mat-slider-horizontal .mat-slider-ticks-container{height:2px;width:100%}.cdk-high-contrast-active .mat-slider-horizontal .mat-slider-ticks-container{height:0;outline:solid 2px;top:1px}.mat-slider-horizontal .mat-slider-ticks{height:2px;width:100%}.mat-slider-horizontal .mat-slider-thumb-container{width:100%;height:0;top:50%}.mat-slider-horizontal .mat-slider-focus-ring{top:-15px;right:-15px}.mat-slider-horizontal .mat-slider-thumb-label{right:-14px;top:-40px;transform:translateY(26px) scale(0.01) rotate(45deg)}.mat-slider-horizontal .mat-slider-thumb-label-text{transform:rotate(-45deg)}.mat-slider-horizontal.cdk-focused .mat-slider-thumb-label{transform:rotate(45deg)}.cdk-high-contrast-active .mat-slider-horizontal.cdk-focused .mat-slider-thumb-label,.cdk-high-contrast-active .mat-slider-horizontal.cdk-focused .mat-slider-thumb-label-text{transform:none}.mat-slider-vertical{width:48px;min-height:128px}.mat-slider-vertical .mat-slider-wrapper{width:2px;top:8px;bottom:8px;left:23px}.mat-slider-vertical .mat-slider-wrapper::after{width:2px;border-top-width:2px;bottom:0;left:0}.mat-slider-vertical .mat-slider-track-wrapper{height:100%;width:2px}.mat-slider-vertical .mat-slider-track-fill{height:100%;width:2px;transform:scaleY(0)}.mat-slider-vertical .mat-slider-track-background{height:100%;width:2px;transform:scaleY(1)}.mat-slider-vertical .mat-slider-ticks-container{width:2px;height:100%}.cdk-high-contrast-active .mat-slider-vertical .mat-slider-ticks-container{width:0;outline:solid 2px;left:1px}.mat-slider-vertical .mat-slider-focus-ring{bottom:-15px;left:-15px}.mat-slider-vertical .mat-slider-ticks{width:2px;height:100%}.mat-slider-vertical .mat-slider-thumb-container{height:100%;width:0;left:50%}.mat-slider-vertical .mat-slider-thumb{-webkit-backface-visibility:hidden;backface-visibility:hidden}.mat-slider-vertical .mat-slider-thumb-label{bottom:-14px;left:-40px;transform:translateX(26px) scale(0.01) rotate(-45deg)}.mat-slider-vertical .mat-slider-thumb-label-text{transform:rotate(45deg)}.mat-slider-vertical.cdk-focused .mat-slider-thumb-label{transform:rotate(-45deg)}[dir=rtl] .mat-slider-wrapper::after{left:0;right:auto}[dir=rtl] .mat-slider-horizontal .mat-slider-track-fill{transform-origin:100% 100%}[dir=rtl] .mat-slider-horizontal .mat-slider-track-background{transform-origin:0 0}[dir=rtl] .mat-slider-horizontal.mat-slider-axis-inverted .mat-slider-track-fill{transform-origin:0 0}[dir=rtl] .mat-slider-horizontal.mat-slider-axis-inverted .mat-slider-track-background{transform-origin:100% 100%}.mat-slider._mat-animation-noopable .mat-slider-track-fill,.mat-slider._mat-animation-noopable .mat-slider-track-background,.mat-slider._mat-animation-noopable .mat-slider-ticks,.mat-slider._mat-animation-noopable .mat-slider-thumb-container,.mat-slider._mat-animation-noopable .mat-slider-focus-ring,.mat-slider._mat-animation-noopable .mat-slider-thumb,.mat-slider._mat-animation-noopable .mat-slider-thumb-label,.mat-slider._mat-animation-noopable .mat-slider-thumb-label-text,.mat-slider._mat-animation-noopable .mat-slider-has-ticks .mat-slider-wrapper::after{transition:none}\\n\"], directives: [{ type: i3.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatSlider, decorators: [{\n type: Component,\n args: [{ selector: 'mat-slider', exportAs: 'matSlider', providers: [MAT_SLIDER_VALUE_ACCESSOR], host: {\n '(focus)': '_onFocus()',\n '(blur)': '_onBlur()',\n '(keydown)': '_onKeydown($event)',\n '(keyup)': '_onKeyup()',\n '(mouseenter)': '_onMouseenter()',\n // On Safari starting to slide temporarily triggers text selection mode which\n // show the wrong cursor. We prevent it by stopping the `selectstart` event.\n '(selectstart)': '$event.preventDefault()',\n 'class': 'mat-slider mat-focus-indicator',\n 'role': 'slider',\n '[tabIndex]': 'tabIndex',\n '[attr.aria-disabled]': 'disabled',\n '[attr.aria-valuemax]': 'max',\n '[attr.aria-valuemin]': 'min',\n '[attr.aria-valuenow]': 'value',\n // NVDA and Jaws appear to announce the `aria-valuenow` by calculating its percentage based\n // on its value between `aria-valuemin` and `aria-valuemax`. Due to how decimals are handled,\n // it can cause the slider to read out a very long value like 0.20000068 if the current value\n // is 0.2 with a min of 0 and max of 1. We work around the issue by setting `aria-valuetext`\n // to the same value that we set on the slider's thumb which will be truncated.\n '[attr.aria-valuetext]': 'valueText == null ? displayValue : valueText',\n '[attr.aria-orientation]': 'vertical ? \"vertical\" : \"horizontal\"',\n '[class.mat-slider-disabled]': 'disabled',\n '[class.mat-slider-has-ticks]': 'tickInterval',\n '[class.mat-slider-horizontal]': '!vertical',\n '[class.mat-slider-axis-inverted]': '_shouldInvertAxis()',\n // Class binding which is only used by the test harness as there is no other\n // way for the harness to detect if mouse coordinates need to be inverted.\n '[class.mat-slider-invert-mouse-coords]': '_shouldInvertMouseCoords()',\n '[class.mat-slider-sliding]': '_isSliding',\n '[class.mat-slider-thumb-label-showing]': 'thumbLabel',\n '[class.mat-slider-vertical]': 'vertical',\n '[class.mat-slider-min-value]': '_isMinValue()',\n '[class.mat-slider-hide-last-tick]': 'disabled || _isMinValue() && _getThumbGap() && _shouldInvertAxis()',\n '[class._mat-animation-noopable]': '_animationMode === \"NoopAnimations\"',\n }, inputs: ['disabled', 'color', 'tabIndex'], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: \"<div class=\\\"mat-slider-wrapper\\\" #sliderWrapper>\\n <div class=\\\"mat-slider-track-wrapper\\\">\\n <div class=\\\"mat-slider-track-background\\\" [ngStyle]=\\\"_getTrackBackgroundStyles()\\\"></div>\\n <div class=\\\"mat-slider-track-fill\\\" [ngStyle]=\\\"_getTrackFillStyles()\\\"></div>\\n </div>\\n <div class=\\\"mat-slider-ticks-container\\\" [ngStyle]=\\\"_getTicksContainerStyles()\\\">\\n <div class=\\\"mat-slider-ticks\\\" [ngStyle]=\\\"_getTicksStyles()\\\"></div>\\n </div>\\n <div class=\\\"mat-slider-thumb-container\\\" [ngStyle]=\\\"_getThumbContainerStyles()\\\">\\n <div class=\\\"mat-slider-focus-ring\\\"></div>\\n <div class=\\\"mat-slider-thumb\\\"></div>\\n <div class=\\\"mat-slider-thumb-label\\\">\\n <span class=\\\"mat-slider-thumb-label-text\\\">{{displayValue}}</span>\\n </div>\\n </div>\\n</div>\\n\", styles: [\".mat-slider{display:inline-block;position:relative;box-sizing:border-box;padding:8px;outline:none;vertical-align:middle}.mat-slider:not(.mat-slider-disabled):active,.mat-slider.mat-slider-sliding:not(.mat-slider-disabled){cursor:-webkit-grabbing;cursor:grabbing}.mat-slider-wrapper{-webkit-print-color-adjust:exact;color-adjust:exact;position:absolute}.mat-slider-track-wrapper{position:absolute;top:0;left:0;overflow:hidden}.mat-slider-track-fill{position:absolute;transform-origin:0 0;transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1),background-color 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-slider-track-background{position:absolute;transform-origin:100% 100%;transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1),background-color 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-slider-ticks-container{position:absolute;left:0;top:0;overflow:hidden}.mat-slider-ticks{-webkit-background-clip:content-box;background-clip:content-box;background-repeat:repeat;box-sizing:border-box;opacity:0;transition:opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-slider-thumb-container{position:absolute;z-index:1;transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-slider-focus-ring{position:absolute;width:30px;height:30px;border-radius:50%;transform:scale(0);opacity:0;transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1),background-color 400ms cubic-bezier(0.25, 0.8, 0.25, 1),opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-slider.cdk-keyboard-focused .mat-slider-focus-ring,.mat-slider.cdk-program-focused .mat-slider-focus-ring{transform:scale(1);opacity:1}.mat-slider:not(.mat-slider-disabled):not(.mat-slider-sliding) .mat-slider-thumb-label,.mat-slider:not(.mat-slider-disabled):not(.mat-slider-sliding) .mat-slider-thumb{cursor:-webkit-grab;cursor:grab}.mat-slider-thumb{position:absolute;right:-10px;bottom:-10px;box-sizing:border-box;width:20px;height:20px;border:3px solid transparent;border-radius:50%;transform:scale(0.7);transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1),background-color 400ms cubic-bezier(0.25, 0.8, 0.25, 1),border-color 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-slider-thumb-label{display:none;align-items:center;justify-content:center;position:absolute;width:28px;height:28px;border-radius:50%;transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1),border-radius 400ms cubic-bezier(0.25, 0.8, 0.25, 1),background-color 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}.cdk-high-contrast-active .mat-slider-thumb-label{outline:solid 1px}.mat-slider-thumb-label-text{z-index:1;opacity:0;transition:opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-slider-sliding .mat-slider-track-fill,.mat-slider-sliding .mat-slider-track-background,.mat-slider-sliding .mat-slider-thumb-container{transition-duration:0ms}.mat-slider-has-ticks .mat-slider-wrapper::after{content:\\\"\\\";position:absolute;border-width:0;border-style:solid;opacity:0;transition:opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-slider-has-ticks.cdk-focused:not(.mat-slider-hide-last-tick) .mat-slider-wrapper::after,.mat-slider-has-ticks:hover:not(.mat-slider-hide-last-tick) .mat-slider-wrapper::after{opacity:1}.mat-slider-has-ticks.cdk-focused:not(.mat-slider-disabled) .mat-slider-ticks,.mat-slider-has-ticks:hover:not(.mat-slider-disabled) .mat-slider-ticks{opacity:1}.mat-slider-thumb-label-showing .mat-slider-focus-ring{display:none}.mat-slider-thumb-label-showing .mat-slider-thumb-label{display:flex}.mat-slider-axis-inverted .mat-slider-track-fill{transform-origin:100% 100%}.mat-slider-axis-inverted .mat-slider-track-background{transform-origin:0 0}.mat-slider:not(.mat-slider-disabled).cdk-focused.mat-slider-thumb-label-showing .mat-slider-thumb{transform:scale(0)}.mat-slider:not(.mat-slider-disabled).cdk-focused .mat-slider-thumb-label{border-radius:50% 50% 0}.mat-slider:not(.mat-slider-disabled).cdk-focused .mat-slider-thumb-label-text{opacity:1}.mat-slider:not(.mat-slider-disabled).cdk-mouse-focused .mat-slider-thumb,.mat-slider:not(.mat-slider-disabled).cdk-touch-focused .mat-slider-thumb,.mat-slider:not(.mat-slider-disabled).cdk-program-focused .mat-slider-thumb{border-width:2px;transform:scale(1)}.mat-slider-disabled .mat-slider-focus-ring{transform:scale(0);opacity:0}.mat-slider-disabled .mat-slider-thumb{border-width:4px;transform:scale(0.5)}.mat-slider-disabled .mat-slider-thumb-label{display:none}.mat-slider-horizontal{height:48px;min-width:128px}.mat-slider-horizontal .mat-slider-wrapper{height:2px;top:23px;left:8px;right:8px}.mat-slider-horizontal .mat-slider-wrapper::after{height:2px;border-left-width:2px;right:0;top:0}.mat-slider-horizontal .mat-slider-track-wrapper{height:2px;width:100%}.mat-slider-horizontal .mat-slider-track-fill{height:2px;width:100%;transform:scaleX(0)}.mat-slider-horizontal .mat-slider-track-background{height:2px;width:100%;transform:scaleX(1)}.mat-slider-horizontal .mat-slider-ticks-container{height:2px;width:100%}.cdk-high-contrast-active .mat-slider-horizontal .mat-slider-ticks-container{height:0;outline:solid 2px;top:1px}.mat-slider-horizontal .mat-slider-ticks{height:2px;width:100%}.mat-slider-horizontal .mat-slider-thumb-container{width:100%;height:0;top:50%}.mat-slider-horizontal .mat-slider-focus-ring{top:-15px;right:-15px}.mat-slider-horizontal .mat-slider-thumb-label{right:-14px;top:-40px;transform:translateY(26px) scale(0.01) rotate(45deg)}.mat-slider-horizontal .mat-slider-thumb-label-text{transform:rotate(-45deg)}.mat-slider-horizontal.cdk-focused .mat-slider-thumb-label{transform:rotate(45deg)}.cdk-high-contrast-active .mat-slider-horizontal.cdk-focused .mat-slider-thumb-label,.cdk-high-contrast-active .mat-slider-horizontal.cdk-focused .mat-slider-thumb-label-text{transform:none}.mat-slider-vertical{width:48px;min-height:128px}.mat-slider-vertical .mat-slider-wrapper{width:2px;top:8px;bottom:8px;left:23px}.mat-slider-vertical .mat-slider-wrapper::after{width:2px;border-top-width:2px;bottom:0;left:0}.mat-slider-vertical .mat-slider-track-wrapper{height:100%;width:2px}.mat-slider-vertical .mat-slider-track-fill{height:100%;width:2px;transform:scaleY(0)}.mat-slider-vertical .mat-slider-track-background{height:100%;width:2px;transform:scaleY(1)}.mat-slider-vertical .mat-slider-ticks-container{width:2px;height:100%}.cdk-high-contrast-active .mat-slider-vertical .mat-slider-ticks-container{width:0;outline:solid 2px;left:1px}.mat-slider-vertical .mat-slider-focus-ring{bottom:-15px;left:-15px}.mat-slider-vertical .mat-slider-ticks{width:2px;height:100%}.mat-slider-vertical .mat-slider-thumb-container{height:100%;width:0;left:50%}.mat-slider-vertical .mat-slider-thumb{-webkit-backface-visibility:hidden;backface-visibility:hidden}.mat-slider-vertical .mat-slider-thumb-label{bottom:-14px;left:-40px;transform:translateX(26px) scale(0.01) rotate(-45deg)}.mat-slider-vertical .mat-slider-thumb-label-text{transform:rotate(45deg)}.mat-slider-vertical.cdk-focused .mat-slider-thumb-label{transform:rotate(-45deg)}[dir=rtl] .mat-slider-wrapper::after{left:0;right:auto}[dir=rtl] .mat-slider-horizontal .mat-slider-track-fill{transform-origin:100% 100%}[dir=rtl] .mat-slider-horizontal .mat-slider-track-background{transform-origin:0 0}[dir=rtl] .mat-slider-horizontal.mat-slider-axis-inverted .mat-slider-track-fill{transform-origin:0 0}[dir=rtl] .mat-slider-horizontal.mat-slider-axis-inverted .mat-slider-track-background{transform-origin:100% 100%}.mat-slider._mat-animation-noopable .mat-slider-track-fill,.mat-slider._mat-animation-noopable .mat-slider-track-background,.mat-slider._mat-animation-noopable .mat-slider-ticks,.mat-slider._mat-animation-noopable .mat-slider-thumb-container,.mat-slider._mat-animation-noopable .mat-slider-focus-ring,.mat-slider._mat-animation-noopable .mat-slider-thumb,.mat-slider._mat-animation-noopable .mat-slider-thumb-label,.mat-slider._mat-animation-noopable .mat-slider-thumb-label-text,.mat-slider._mat-animation-noopable .mat-slider-has-ticks .mat-slider-wrapper::after{transition:none}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i1.FocusMonitor }, { type: i0.ChangeDetectorRef }, { type: i2.Directionality, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['tabindex']\n }] }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }];\n }, propDecorators: { invert: [{\n type: Input\n }], max: [{\n type: Input\n }], min: [{\n type: Input\n }], step: [{\n type: Input\n }], thumbLabel: [{\n type: Input\n }], tickInterval: [{\n type: Input\n }], value: [{\n type: Input\n }], displayWith: [{\n type: Input\n }], valueText: [{\n type: Input\n }], vertical: [{\n type: Input\n }], change: [{\n type: Output\n }], input: [{\n type: Output\n }], valueChange: [{\n type: Output\n }], _sliderWrapper: [{\n type: ViewChild,\n args: ['sliderWrapper']\n }] } });\n/** Checks if number is safe for calculation */\nfunction isSafeNumber(value) {\n return !isNaN(value) && isFinite(value);\n}\n/** Returns whether an event is a touch event. */\nfunction isTouchEvent(event) {\n // This function is called for every pixel that the user has dragged so we need it to be\n // as fast as possible. Since we only bind mouse events and touch events, we can assume\n // that if the event's name starts with `t`, it's a touch event.\n return event.type[0] === 't';\n}\n/** Gets the coordinates of a touch or mouse event relative to the viewport. */\nfunction getPointerPositionOnPage(event, id) {\n let point;\n if (isTouchEvent(event)) {\n // The `identifier` could be undefined if the browser doesn't support `TouchEvent.identifier`.\n // If that's the case, attribute the first touch to all active sliders. This should still cover\n // the most common case while only breaking multi-touch.\n if (typeof id === 'number') {\n point = findMatchingTouch(event.touches, id) || findMatchingTouch(event.changedTouches, id);\n }\n else {\n // `touches` will be empty for start/end events so we have to fall back to `changedTouches`.\n point = event.touches[0] || event.changedTouches[0];\n }\n }\n else {\n point = event;\n }\n return point ? { x: point.clientX, y: point.clientY } : undefined;\n}\n/** Finds a `Touch` with a specific ID in a `TouchList`. */\nfunction findMatchingTouch(touches, id) {\n for (let i = 0; i < touches.length; i++) {\n if (touches[i].identifier === id) {\n return touches[i];\n }\n }\n return undefined;\n}\n/** Gets the unique ID of a touch that matches a specific slider. */\nfunction getTouchIdForSlider(event, sliderHost) {\n for (let i = 0; i < event.touches.length; i++) {\n const target = event.touches[i].target;\n if (sliderHost === target || sliderHost.contains(target)) {\n return event.touches[i].identifier;\n }\n }\n return undefined;\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 MatSliderModule {\n}\nMatSliderModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatSliderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatSliderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatSliderModule, declarations: [MatSlider], imports: [CommonModule, MatCommonModule], exports: [MatSlider, MatCommonModule] });\nMatSliderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatSliderModule, imports: [[CommonModule, MatCommonModule], MatCommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatSliderModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, MatCommonModule],\n exports: [MatSlider, MatCommonModule],\n declarations: [MatSlider],\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 { MAT_SLIDER_VALUE_ACCESSOR, MatSlider, MatSliderChange, MatSliderModule };\n","import * as i0 from '@angular/core';\nimport { Directive, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, NgModule } from '@angular/core';\nimport * as i1 from '@angular/cdk/table';\nimport { CdkTable, CDK_TABLE, _COALESCED_STYLE_SCHEDULER, _CoalescedStyleScheduler, STICKY_POSITIONING_LISTENER, CDK_TABLE_TEMPLATE, CdkCellDef, CdkHeaderCellDef, CdkFooterCellDef, CdkColumnDef, CdkHeaderCell, CdkFooterCell, CdkCell, CdkHeaderRowDef, CdkFooterRowDef, CdkRowDef, CdkHeaderRow, CDK_ROW_TEMPLATE, CdkFooterRow, CdkRow, CdkNoDataRow, CdkTextColumn, CdkTableModule, DataSource } from '@angular/cdk/table';\nimport { _VIEW_REPEATER_STRATEGY, _RecycleViewRepeaterStrategy, _DisposeViewRepeaterStrategy } from '@angular/cdk/collections';\nimport { MatCommonModule } from '@angular/material/core';\nimport { _isNumberValue } from '@angular/cdk/coercion';\nimport { BehaviorSubject, Subject, merge, of, combineLatest } from 'rxjs';\nimport { 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 * Enables the recycle view repeater strategy, which reduces rendering latency. Not compatible with\n * tables that animate rows.\n */\nclass MatRecycleRows {\n}\nMatRecycleRows.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatRecycleRows, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatRecycleRows.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.0\", type: MatRecycleRows, selector: \"mat-table[recycleRows], table[mat-table][recycleRows]\", providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatRecycleRows, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-table[recycleRows], table[mat-table][recycleRows]',\n providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }],\n }]\n }] });\n/**\n * Wrapper for the CdkTable with Material design styles.\n */\nclass MatTable extends CdkTable {\n constructor() {\n super(...arguments);\n /** Overrides the sticky CSS class set by the `CdkTable`. */\n this.stickyCssClass = 'mat-table-sticky';\n /** Overrides the need to add position: sticky on every sticky cell element in `CdkTable`. */\n this.needsPositionStickyOnElement = false;\n }\n}\nMatTable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatTable, deps: null, target: i0.ɵɵFactoryTarget.Component });\nMatTable.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.2.0\", type: MatTable, selector: \"mat-table, table[mat-table]\", host: { properties: { \"class.mat-table-fixed-layout\": \"fixedLayout\" }, classAttribute: \"mat-table\" }, providers: [\n // TODO(michaeljamesparsons) Abstract the view repeater strategy to a directive API so this code\n // is only included in the build if used.\n { provide: _VIEW_REPEATER_STRATEGY, useClass: _DisposeViewRepeaterStrategy },\n { provide: CdkTable, useExisting: MatTable },\n { provide: CDK_TABLE, useExisting: MatTable },\n { provide: _COALESCED_STYLE_SCHEDULER, useClass: _CoalescedStyleScheduler },\n // Prevent nested tables from seeing this table's StickyPositioningListener.\n { provide: STICKY_POSITIONING_LISTENER, useValue: null },\n ], exportAs: [\"matTable\"], usesInheritance: true, ngImport: i0, template: \"\\n <ng-content select=\\\"caption\\\"></ng-content>\\n <ng-content select=\\\"colgroup, col\\\"></ng-content>\\n <ng-container headerRowOutlet></ng-container>\\n <ng-container rowOutlet></ng-container>\\n <ng-container noDataRowOutlet></ng-container>\\n <ng-container footerRowOutlet></ng-container>\\n\", isInline: true, styles: [\"mat-table{display:block}mat-header-row{min-height:56px}mat-row,mat-footer-row{min-height:48px}mat-row,mat-header-row,mat-footer-row{display:flex;border-width:0;border-bottom-width:1px;border-style:solid;align-items:center;box-sizing:border-box}mat-cell:first-of-type,mat-header-cell:first-of-type,mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] mat-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:first-of-type:not(:only-of-type){padding-left:0;padding-right:24px}mat-cell:last-of-type,mat-header-cell:last-of-type,mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] mat-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:last-of-type:not(:only-of-type){padding-right:0;padding-left:24px}mat-cell,mat-header-cell,mat-footer-cell{flex:1;display:flex;align-items:center;overflow:hidden;word-wrap:break-word;min-height:inherit}table.mat-table{border-spacing:0}tr.mat-header-row{height:56px}tr.mat-row,tr.mat-footer-row{height:48px}th.mat-header-cell{text-align:left}[dir=rtl] th.mat-header-cell{text-align:right}th.mat-header-cell,td.mat-cell,td.mat-footer-cell{padding:0;border-bottom-width:1px;border-bottom-style:solid}th.mat-header-cell:first-of-type,td.mat-cell:first-of-type,td.mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] th.mat-header-cell:first-of-type:not(:only-of-type),[dir=rtl] td.mat-cell:first-of-type:not(:only-of-type),[dir=rtl] td.mat-footer-cell:first-of-type:not(:only-of-type){padding-left:0;padding-right:24px}th.mat-header-cell:last-of-type,td.mat-cell:last-of-type,td.mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] th.mat-header-cell:last-of-type:not(:only-of-type),[dir=rtl] td.mat-cell:last-of-type:not(:only-of-type),[dir=rtl] td.mat-footer-cell:last-of-type:not(:only-of-type){padding-right:0;padding-left:24px}.mat-table-sticky{position:-webkit-sticky !important;position:sticky !important}.mat-table-fixed-layout{table-layout:fixed}\\n\"], directives: [{ type: i1.HeaderRowOutlet, selector: \"[headerRowOutlet]\" }, { type: i1.DataRowOutlet, selector: \"[rowOutlet]\" }, { type: i1.NoDataRowOutlet, selector: \"[noDataRowOutlet]\" }, { type: i1.FooterRowOutlet, selector: \"[footerRowOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatTable, decorators: [{\n type: Component,\n args: [{ selector: 'mat-table, table[mat-table]', exportAs: 'matTable', template: CDK_TABLE_TEMPLATE, host: {\n 'class': 'mat-table',\n '[class.mat-table-fixed-layout]': 'fixedLayout',\n }, providers: [\n // TODO(michaeljamesparsons) Abstract the view repeater strategy to a directive API so this code\n // is only included in the build if used.\n { provide: _VIEW_REPEATER_STRATEGY, useClass: _DisposeViewRepeaterStrategy },\n { provide: CdkTable, useExisting: MatTable },\n { provide: CDK_TABLE, useExisting: MatTable },\n { provide: _COALESCED_STYLE_SCHEDULER, useClass: _CoalescedStyleScheduler },\n // Prevent nested tables from seeing this table's StickyPositioningListener.\n { provide: STICKY_POSITIONING_LISTENER, useValue: null },\n ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, styles: [\"mat-table{display:block}mat-header-row{min-height:56px}mat-row,mat-footer-row{min-height:48px}mat-row,mat-header-row,mat-footer-row{display:flex;border-width:0;border-bottom-width:1px;border-style:solid;align-items:center;box-sizing:border-box}mat-cell:first-of-type,mat-header-cell:first-of-type,mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] mat-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:first-of-type:not(:only-of-type){padding-left:0;padding-right:24px}mat-cell:last-of-type,mat-header-cell:last-of-type,mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] mat-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:last-of-type:not(:only-of-type){padding-right:0;padding-left:24px}mat-cell,mat-header-cell,mat-footer-cell{flex:1;display:flex;align-items:center;overflow:hidden;word-wrap:break-word;min-height:inherit}table.mat-table{border-spacing:0}tr.mat-header-row{height:56px}tr.mat-row,tr.mat-footer-row{height:48px}th.mat-header-cell{text-align:left}[dir=rtl] th.mat-header-cell{text-align:right}th.mat-header-cell,td.mat-cell,td.mat-footer-cell{padding:0;border-bottom-width:1px;border-bottom-style:solid}th.mat-header-cell:first-of-type,td.mat-cell:first-of-type,td.mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] th.mat-header-cell:first-of-type:not(:only-of-type),[dir=rtl] td.mat-cell:first-of-type:not(:only-of-type),[dir=rtl] td.mat-footer-cell:first-of-type:not(:only-of-type){padding-left:0;padding-right:24px}th.mat-header-cell:last-of-type,td.mat-cell:last-of-type,td.mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] th.mat-header-cell:last-of-type:not(:only-of-type),[dir=rtl] td.mat-cell:last-of-type:not(:only-of-type),[dir=rtl] td.mat-footer-cell:last-of-type:not(:only-of-type){padding-right:0;padding-left:24px}.mat-table-sticky{position:-webkit-sticky !important;position:sticky !important}.mat-table-fixed-layout{table-layout:fixed}\\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 * Cell definition for the mat-table.\n * Captures the template of a column's data row cell as well as cell-specific properties.\n */\nclass MatCellDef extends CdkCellDef {\n}\nMatCellDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatCellDef, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatCellDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.0\", type: MatCellDef, selector: \"[matCellDef]\", providers: [{ provide: CdkCellDef, useExisting: MatCellDef }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatCellDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[matCellDef]',\n providers: [{ provide: CdkCellDef, useExisting: MatCellDef }],\n }]\n }] });\n/**\n * Header cell definition for the mat-table.\n * Captures the template of a column's header cell and as well as cell-specific properties.\n */\nclass MatHeaderCellDef extends CdkHeaderCellDef {\n}\nMatHeaderCellDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatHeaderCellDef, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatHeaderCellDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.0\", type: MatHeaderCellDef, selector: \"[matHeaderCellDef]\", providers: [{ provide: CdkHeaderCellDef, useExisting: MatHeaderCellDef }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatHeaderCellDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[matHeaderCellDef]',\n providers: [{ provide: CdkHeaderCellDef, useExisting: MatHeaderCellDef }],\n }]\n }] });\n/**\n * Footer cell definition for the mat-table.\n * Captures the template of a column's footer cell and as well as cell-specific properties.\n */\nclass MatFooterCellDef extends CdkFooterCellDef {\n}\nMatFooterCellDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatFooterCellDef, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatFooterCellDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.0\", type: MatFooterCellDef, selector: \"[matFooterCellDef]\", providers: [{ provide: CdkFooterCellDef, useExisting: MatFooterCellDef }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatFooterCellDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[matFooterCellDef]',\n providers: [{ provide: CdkFooterCellDef, useExisting: MatFooterCellDef }],\n }]\n }] });\n/**\n * Column definition for the mat-table.\n * Defines a set of cells available for a table column.\n */\nclass MatColumnDef extends CdkColumnDef {\n /** Unique name for this column. */\n get name() {\n return this._name;\n }\n set name(name) {\n this._setNameInput(name);\n }\n /**\n * Add \"mat-column-\" prefix in addition to \"cdk-column-\" prefix.\n * In the future, this will only add \"mat-column-\" and columnCssClassName\n * will change from type string[] to string.\n * @docs-private\n */\n _updateColumnCssClassName() {\n super._updateColumnCssClassName();\n this._columnCssClassName.push(`mat-column-${this.cssClassFriendlyName}`);\n }\n}\nMatColumnDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatColumnDef, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatColumnDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.0\", type: MatColumnDef, selector: \"[matColumnDef]\", inputs: { sticky: \"sticky\", name: [\"matColumnDef\", \"name\"] }, providers: [\n { provide: CdkColumnDef, useExisting: MatColumnDef },\n { provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: MatColumnDef },\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatColumnDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[matColumnDef]',\n inputs: ['sticky'],\n providers: [\n { provide: CdkColumnDef, useExisting: MatColumnDef },\n { provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: MatColumnDef },\n ],\n }]\n }], propDecorators: { name: [{\n type: Input,\n args: ['matColumnDef']\n }] } });\n/** Header cell template container that adds the right classes and role. */\nclass MatHeaderCell extends CdkHeaderCell {\n}\nMatHeaderCell.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatHeaderCell, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatHeaderCell.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.0\", type: MatHeaderCell, selector: \"mat-header-cell, th[mat-header-cell]\", host: { attributes: { \"role\": \"columnheader\" }, classAttribute: \"mat-header-cell\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatHeaderCell, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-header-cell, th[mat-header-cell]',\n host: {\n 'class': 'mat-header-cell',\n 'role': 'columnheader',\n },\n }]\n }] });\n/** Footer cell template container that adds the right classes and role. */\nclass MatFooterCell extends CdkFooterCell {\n}\nMatFooterCell.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatFooterCell, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatFooterCell.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.0\", type: MatFooterCell, selector: \"mat-footer-cell, td[mat-footer-cell]\", host: { attributes: { \"role\": \"gridcell\" }, classAttribute: \"mat-footer-cell\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatFooterCell, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-footer-cell, td[mat-footer-cell]',\n host: {\n 'class': 'mat-footer-cell',\n 'role': 'gridcell',\n },\n }]\n }] });\n/** Cell template container that adds the right classes and role. */\nclass MatCell extends CdkCell {\n}\nMatCell.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatCell, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatCell.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.0\", type: MatCell, selector: \"mat-cell, td[mat-cell]\", host: { attributes: { \"role\": \"gridcell\" }, classAttribute: \"mat-cell\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatCell, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-cell, td[mat-cell]',\n host: {\n 'class': 'mat-cell',\n 'role': 'gridcell',\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 * Header row definition for the mat-table.\n * Captures the header row's template and other header properties such as the columns to display.\n */\nclass MatHeaderRowDef extends CdkHeaderRowDef {\n}\nMatHeaderRowDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatHeaderRowDef, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatHeaderRowDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.0\", type: MatHeaderRowDef, selector: \"[matHeaderRowDef]\", inputs: { columns: [\"matHeaderRowDef\", \"columns\"], sticky: [\"matHeaderRowDefSticky\", \"sticky\"] }, providers: [{ provide: CdkHeaderRowDef, useExisting: MatHeaderRowDef }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatHeaderRowDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[matHeaderRowDef]',\n providers: [{ provide: CdkHeaderRowDef, useExisting: MatHeaderRowDef }],\n inputs: ['columns: matHeaderRowDef', 'sticky: matHeaderRowDefSticky'],\n }]\n }] });\n/**\n * Footer row definition for the mat-table.\n * Captures the footer row's template and other footer properties such as the columns to display.\n */\nclass MatFooterRowDef extends CdkFooterRowDef {\n}\nMatFooterRowDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatFooterRowDef, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatFooterRowDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.0\", type: MatFooterRowDef, selector: \"[matFooterRowDef]\", inputs: { columns: [\"matFooterRowDef\", \"columns\"], sticky: [\"matFooterRowDefSticky\", \"sticky\"] }, providers: [{ provide: CdkFooterRowDef, useExisting: MatFooterRowDef }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatFooterRowDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[matFooterRowDef]',\n providers: [{ provide: CdkFooterRowDef, useExisting: MatFooterRowDef }],\n inputs: ['columns: matFooterRowDef', 'sticky: matFooterRowDefSticky'],\n }]\n }] });\n/**\n * Data row definition for the mat-table.\n * Captures the data row's template and other properties such as the columns to display and\n * a when predicate that describes when this row should be used.\n */\nclass MatRowDef extends CdkRowDef {\n}\nMatRowDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatRowDef, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatRowDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.0\", type: MatRowDef, selector: \"[matRowDef]\", inputs: { columns: [\"matRowDefColumns\", \"columns\"], when: [\"matRowDefWhen\", \"when\"] }, providers: [{ provide: CdkRowDef, useExisting: MatRowDef }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatRowDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[matRowDef]',\n providers: [{ provide: CdkRowDef, useExisting: MatRowDef }],\n inputs: ['columns: matRowDefColumns', 'when: matRowDefWhen'],\n }]\n }] });\n/** Header template container that contains the cell outlet. Adds the right class and role. */\nclass MatHeaderRow extends CdkHeaderRow {\n}\nMatHeaderRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatHeaderRow, deps: null, target: i0.ɵɵFactoryTarget.Component });\nMatHeaderRow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.2.0\", type: MatHeaderRow, selector: \"mat-header-row, tr[mat-header-row]\", host: { attributes: { \"role\": \"row\" }, classAttribute: \"mat-header-row\" }, providers: [{ provide: CdkHeaderRow, useExisting: MatHeaderRow }], exportAs: [\"matHeaderRow\"], usesInheritance: true, ngImport: i0, template: \"<ng-container cdkCellOutlet></ng-container>\", isInline: true, directives: [{ type: i1.CdkCellOutlet, selector: \"[cdkCellOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatHeaderRow, decorators: [{\n type: Component,\n args: [{\n selector: 'mat-header-row, tr[mat-header-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'mat-header-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matHeaderRow',\n providers: [{ provide: CdkHeaderRow, useExisting: MatHeaderRow }],\n }]\n }] });\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\nclass MatFooterRow extends CdkFooterRow {\n}\nMatFooterRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatFooterRow, deps: null, target: i0.ɵɵFactoryTarget.Component });\nMatFooterRow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.2.0\", type: MatFooterRow, selector: \"mat-footer-row, tr[mat-footer-row]\", host: { attributes: { \"role\": \"row\" }, classAttribute: \"mat-footer-row\" }, providers: [{ provide: CdkFooterRow, useExisting: MatFooterRow }], exportAs: [\"matFooterRow\"], usesInheritance: true, ngImport: i0, template: \"<ng-container cdkCellOutlet></ng-container>\", isInline: true, directives: [{ type: i1.CdkCellOutlet, selector: \"[cdkCellOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatFooterRow, decorators: [{\n type: Component,\n args: [{\n selector: 'mat-footer-row, tr[mat-footer-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'mat-footer-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matFooterRow',\n providers: [{ provide: CdkFooterRow, useExisting: MatFooterRow }],\n }]\n }] });\n/** Data row template container that contains the cell outlet. Adds the right class and role. */\nclass MatRow extends CdkRow {\n}\nMatRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatRow, deps: null, target: i0.ɵɵFactoryTarget.Component });\nMatRow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.2.0\", type: MatRow, selector: \"mat-row, tr[mat-row]\", host: { attributes: { \"role\": \"row\" }, classAttribute: \"mat-row\" }, providers: [{ provide: CdkRow, useExisting: MatRow }], exportAs: [\"matRow\"], usesInheritance: true, ngImport: i0, template: \"<ng-container cdkCellOutlet></ng-container>\", isInline: true, directives: [{ type: i1.CdkCellOutlet, selector: \"[cdkCellOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatRow, decorators: [{\n type: Component,\n args: [{\n selector: 'mat-row, tr[mat-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'mat-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matRow',\n providers: [{ provide: CdkRow, useExisting: MatRow }],\n }]\n }] });\n/** Row that can be used to display a message when no data is shown in the table. */\nclass MatNoDataRow extends CdkNoDataRow {\n constructor() {\n super(...arguments);\n this._contentClassName = 'mat-no-data-row';\n }\n}\nMatNoDataRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatNoDataRow, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatNoDataRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.0\", type: MatNoDataRow, selector: \"ng-template[matNoDataRow]\", providers: [{ provide: CdkNoDataRow, useExisting: MatNoDataRow }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatNoDataRow, decorators: [{\n type: Directive,\n args: [{\n selector: 'ng-template[matNoDataRow]',\n providers: [{ provide: CdkNoDataRow, useExisting: MatNoDataRow }],\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 * Column that simply shows text content for the header and row cells. Assumes that the table\n * is using the native table implementation (`<table>`).\n *\n * By default, the name of this column will be the header text and data property accessor.\n * The header text can be overridden with the `headerText` input. Cell values can be overridden with\n * the `dataAccessor` input. Change the text justification to the start or end using the `justify`\n * input.\n */\nclass MatTextColumn extends CdkTextColumn {\n}\nMatTextColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatTextColumn, deps: null, target: i0.ɵɵFactoryTarget.Component });\nMatTextColumn.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.2.0\", type: MatTextColumn, selector: \"mat-text-column\", usesInheritance: true, ngImport: i0, template: `\n <ng-container matColumnDef>\n <th mat-header-cell *matHeaderCellDef [style.text-align]=\"justify\">\n {{headerText}}\n </th>\n <td mat-cell *matCellDef=\"let data\" [style.text-align]=\"justify\">\n {{dataAccessor(data, name)}}\n </td>\n </ng-container>\n `, isInline: true, directives: [{ type: MatColumnDef, selector: \"[matColumnDef]\", inputs: [\"sticky\", \"matColumnDef\"] }, { type: MatHeaderCellDef, selector: \"[matHeaderCellDef]\" }, { type: MatHeaderCell, selector: \"mat-header-cell, th[mat-header-cell]\" }, { type: MatCellDef, selector: \"[matCellDef]\" }, { type: MatCell, selector: \"mat-cell, td[mat-cell]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatTextColumn, decorators: [{\n type: Component,\n args: [{\n selector: 'mat-text-column',\n template: `\n <ng-container matColumnDef>\n <th mat-header-cell *matHeaderCellDef [style.text-align]=\"justify\">\n {{headerText}}\n </th>\n <td mat-cell *matCellDef=\"let data\" [style.text-align]=\"justify\">\n {{dataAccessor(data, name)}}\n </td>\n </ng-container>\n `,\n encapsulation: ViewEncapsulation.None,\n // Change detection is intentionally not set to OnPush. This component's template will be provided\n // to the table to be inserted into its view. This is problematic when change detection runs since\n // the bindings in this template will be evaluated _after_ the table's view is evaluated, which\n // mean's the template in the table's view will not have the updated value (and in fact will cause\n // an ExpressionChangedAfterItHasBeenCheckedError).\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\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 */\nconst EXPORTED_DECLARATIONS = [\n // Table\n MatTable,\n MatRecycleRows,\n // Template defs\n MatHeaderCellDef,\n MatHeaderRowDef,\n MatColumnDef,\n MatCellDef,\n MatRowDef,\n MatFooterCellDef,\n MatFooterRowDef,\n // Cell directives\n MatHeaderCell,\n MatCell,\n MatFooterCell,\n // Row directives\n MatHeaderRow,\n MatRow,\n MatFooterRow,\n MatNoDataRow,\n MatTextColumn,\n];\nclass MatTableModule {\n}\nMatTableModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatTableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatTableModule, declarations: [\n // Table\n MatTable,\n MatRecycleRows,\n // Template defs\n MatHeaderCellDef,\n MatHeaderRowDef,\n MatColumnDef,\n MatCellDef,\n MatRowDef,\n MatFooterCellDef,\n MatFooterRowDef,\n // Cell directives\n MatHeaderCell,\n MatCell,\n MatFooterCell,\n // Row directives\n MatHeaderRow,\n MatRow,\n MatFooterRow,\n MatNoDataRow,\n MatTextColumn\n ], imports: [CdkTableModule, MatCommonModule], exports: [MatCommonModule,\n // Table\n MatTable,\n MatRecycleRows,\n // Template defs\n MatHeaderCellDef,\n MatHeaderRowDef,\n MatColumnDef,\n MatCellDef,\n MatRowDef,\n MatFooterCellDef,\n MatFooterRowDef,\n // Cell directives\n MatHeaderCell,\n MatCell,\n MatFooterCell,\n // Row directives\n MatHeaderRow,\n MatRow,\n MatFooterRow,\n MatNoDataRow,\n MatTextColumn] });\nMatTableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatTableModule, imports: [[CdkTableModule, MatCommonModule], MatCommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.0\", ngImport: i0, type: MatTableModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CdkTableModule, MatCommonModule],\n exports: [MatCommonModule, EXPORTED_DECLARATIONS],\n declarations: EXPORTED_DECLARATIONS,\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 * Corresponds to `Number.MAX_SAFE_INTEGER`. Moved out into a variable here due to\n * flaky browser support and the value not being defined in Closure's typings.\n */\nconst MAX_SAFE_INTEGER = 9007199254740991;\n/** Shared base class with MDC-based implementation. */\nclass _MatTableDataSource extends DataSource {\n constructor(initialData = []) {\n super();\n /** Stream emitting render data to the table (depends on ordered data changes). */\n this._renderData = new BehaviorSubject([]);\n /** Stream that emits when a new filter string is set on the data source. */\n this._filter = new BehaviorSubject('');\n /** Used to react to internal changes of the paginator that are made by the data source itself. */\n this._internalPageChanges = new Subject();\n /**\n * Subscription to the changes that should trigger an update to the table's rendered rows, such\n * as filtering, sorting, pagination, or base data changes.\n */\n this._renderChangesSubscription = null;\n /**\n * Data accessor function that is used for accessing data properties for sorting through\n * the default sortData function.\n * This default function assumes that the sort header IDs (which defaults to the column name)\n * matches the data's properties (e.g. column Xyz represents data['Xyz']).\n * May be set to a custom function for different behavior.\n * @param data Data object that is being accessed.\n * @param sortHeaderId The name of the column that represents the data.\n */\n this.sortingDataAccessor = (data, sortHeaderId) => {\n const value = data[sortHeaderId];\n if (_isNumberValue(value)) {\n const numberValue = Number(value);\n // Numbers beyond `MAX_SAFE_INTEGER` can't be compared reliably so we\n // leave them as strings. For more info: https://goo.gl/y5vbSg\n return numberValue < MAX_SAFE_INTEGER ? numberValue : value;\n }\n return value;\n };\n /**\n * Gets a sorted copy of the data array based on the state of the MatSort. Called\n * after changes are made to the filtered data or when sort changes are emitted from MatSort.\n * By default, the function retrieves the active sort and its direction and compares data\n * by retrieving data using the sortingDataAccessor. May be overridden for a custom implementation\n * of data ordering.\n * @param data The array of data that should be sorted.\n * @param sort The connected MatSort that holds the current sort state.\n */\n this.sortData = (data, sort) => {\n const active = sort.active;\n const direction = sort.direction;\n if (!active || direction == '') {\n return data;\n }\n return data.sort((a, b) => {\n let valueA = this.sortingDataAccessor(a, active);\n let valueB = this.sortingDataAccessor(b, active);\n // If there are data in the column that can be converted to a number,\n // it must be ensured that the rest of the data\n // is of the same type so as not to order incorrectly.\n const valueAType = typeof valueA;\n const valueBType = typeof valueB;\n if (valueAType !== valueBType) {\n if (valueAType === 'number') {\n valueA += '';\n }\n if (valueBType === 'number') {\n valueB += '';\n }\n }\n // If both valueA and valueB exist (truthy), then compare the two. Otherwise, check if\n // one value exists while the other doesn't. In this case, existing value should come last.\n // This avoids inconsistent results when comparing values to undefined/null.\n // If neither value exists, return 0 (equal).\n let comparatorResult = 0;\n if (valueA != null && valueB != null) {\n // Check if one value is greater than the other; if equal, comparatorResult should remain 0.\n if (valueA > valueB) {\n comparatorResult = 1;\n }\n else if (valueA < valueB) {\n comparatorResult = -1;\n }\n }\n else if (valueA != null) {\n comparatorResult = 1;\n }\n else if (valueB != null) {\n comparatorResult = -1;\n }\n return comparatorResult * (direction == 'asc' ? 1 : -1);\n });\n };\n /**\n * Checks if a data object matches the data source's filter string. By default, each data object\n * is converted to a string of its properties and returns true if the filter has\n * at least one occurrence in that string. By default, the filter string has its whitespace\n * trimmed and the match is case-insensitive. May be overridden for a custom implementation of\n * filter matching.\n * @param data Data object used to check against the filter.\n * @param filter Filter string that has been set on the data source.\n * @returns Whether the filter matches against the data\n */\n this.filterPredicate = (data, filter) => {\n // Transform the data into a lowercase string of all property values.\n const dataStr = Object.keys(data)\n .reduce((currentTerm, key) => {\n // Use an obscure Unicode character to delimit the words in the concatenated string.\n // This avoids matches where the values of two columns combined will match the user's query\n // (e.g. `Flute` and `Stop` will match `Test`). The character is intended to be something\n // that has a very low chance of being typed in by somebody in a text field. This one in\n // particular is \"White up-pointing triangle with dot\" from\n // https://en.wikipedia.org/wiki/List_of_Unicode_characters\n return currentTerm + data[key] + '◬';\n }, '')\n .toLowerCase();\n // Transform the filter by converting it to lowercase and removing whitespace.\n const transformedFilter = filter.trim().toLowerCase();\n return dataStr.indexOf(transformedFilter) != -1;\n };\n this._data = new BehaviorSubject(initialData);\n this._updateChangeSubscription();\n }\n /** Array of data that should be rendered by the table, where each object represents one row. */\n get data() {\n return this._data.value;\n }\n set data(data) {\n data = Array.isArray(data) ? data : [];\n this._data.next(data);\n // Normally the `filteredData` is updated by the re-render\n // subscription, but that won't happen if it's inactive.\n if (!this._renderChangesSubscription) {\n this._filterData(data);\n }\n }\n /**\n * Filter term that should be used to filter out objects from the data array. To override how\n * data objects match to this filter string, provide a custom function for filterPredicate.\n */\n get filter() {\n return this._filter.value;\n }\n set filter(filter) {\n this._filter.next(filter);\n // Normally the `filteredData` is updated by the re-render\n // subscription, but that won't happen if it's inactive.\n if (!this._renderChangesSubscription) {\n this._filterData(this.data);\n }\n }\n /**\n * Instance of the MatSort directive used by the table to control its sorting. Sort changes\n * emitted by the MatSort will trigger an update to the table's rendered data.\n */\n get sort() {\n return this._sort;\n }\n set sort(sort) {\n this._sort = sort;\n this._updateChangeSubscription();\n }\n /**\n * Instance of the MatPaginator component used by the table to control what page of the data is\n * displayed. Page changes emitted by the MatPaginator will trigger an update to the\n * table's rendered data.\n *\n * Note that the data source uses the paginator's properties to calculate which page of data\n * should be displayed. If the paginator receives its properties as template inputs,\n * e.g. `[pageLength]=100` or `[pageIndex]=1`, then be sure that the paginator's view has been\n * initialized before assigning it to this data source.\n */\n get paginator() {\n return this._paginator;\n }\n set paginator(paginator) {\n this._paginator = paginator;\n this._updateChangeSubscription();\n }\n /**\n * Subscribe to changes that should trigger an update to the table's rendered rows. When the\n * changes occur, process the current state of the filter, sort, and pagination along with\n * the provided base data and send it to the table for rendering.\n */\n _updateChangeSubscription() {\n var _a;\n // Sorting and/or pagination should be watched if MatSort and/or MatPaginator are provided.\n // The events should emit whenever the component emits a change or initializes, or if no\n // component is provided, a stream with just a null event should be provided.\n // The `sortChange` and `pageChange` acts as a signal to the combineLatests below so that the\n // pipeline can progress to the next step. Note that the value from these streams are not used,\n // they purely act as a signal to progress in the pipeline.\n const sortChange = this._sort\n ? merge(this._sort.sortChange, this._sort.initialized)\n : of(null);\n const pageChange = this._paginator\n ? merge(this._paginator.page, this._internalPageChanges, this._paginator.initialized)\n : of(null);\n const dataStream = this._data;\n // Watch for base data or filter changes to provide a filtered set of data.\n const filteredData = combineLatest([dataStream, this._filter]).pipe(map(([data]) => this._filterData(data)));\n // Watch for filtered data or sort changes to provide an ordered set of data.\n const orderedData = combineLatest([filteredData, sortChange]).pipe(map(([data]) => this._orderData(data)));\n // Watch for ordered data or page changes to provide a paged set of data.\n const paginatedData = combineLatest([orderedData, pageChange]).pipe(map(([data]) => this._pageData(data)));\n // Watched for paged data changes and send the result to the table to render.\n (_a = this._renderChangesSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();\n this._renderChangesSubscription = paginatedData.subscribe(data => this._renderData.next(data));\n }\n /**\n * Returns a filtered data array where each filter object contains the filter string within\n * the result of the filterTermAccessor function. If no filter is set, returns the data array\n * as provided.\n */\n _filterData(data) {\n // If there is a filter string, filter out data that does not contain it.\n // Each data object is converted to a string using the function defined by filterTermAccessor.\n // May be overridden for customization.\n this.filteredData =\n this.filter == null || this.filter === ''\n ? data\n : data.filter(obj => this.filterPredicate(obj, this.filter));\n if (this.paginator) {\n this._updatePaginator(this.filteredData.length);\n }\n return this.filteredData;\n }\n /**\n * Returns a sorted copy of the data if MatSort has a sort applied, otherwise just returns the\n * data array as provided. Uses the default data accessor for data lookup, unless a\n * sortDataAccessor function is defined.\n */\n _orderData(data) {\n // If there is no active sort or direction, return the data without trying to sort.\n if (!this.sort) {\n return data;\n }\n return this.sortData(data.slice(), this.sort);\n }\n /**\n * Returns a paged slice of the provided data array according to the provided MatPaginator's page\n * index and length. If there is no paginator provided, returns the data array as provided.\n */\n _pageData(data) {\n if (!this.paginator) {\n return data;\n }\n const startIndex = this.paginator.pageIndex * this.paginator.pageSize;\n return data.slice(startIndex, startIndex + this.paginator.pageSize);\n }\n /**\n * Updates the paginator to reflect the length of the filtered data, and makes sure that the page\n * index does not exceed the paginator's last page. Values are changed in a resolved promise to\n * guard against making property changes within a round of change detection.\n */\n _updatePaginator(filteredDataLength) {\n Promise.resolve().then(() => {\n const paginator = this.paginator;\n if (!paginator) {\n return;\n }\n paginator.length = filteredDataLength;\n // If the page index is set beyond the page, reduce it to the last page.\n if (paginator.pageIndex > 0) {\n const lastPageIndex = Math.ceil(paginator.length / paginator.pageSize) - 1 || 0;\n const newPageIndex = Math.min(paginator.pageIndex, lastPageIndex);\n if (newPageIndex !== paginator.pageIndex) {\n paginator.pageIndex = newPageIndex;\n // Since the paginator only emits after user-generated changes,\n // we need our own stream so we know to should re-render the data.\n this._internalPageChanges.next();\n }\n }\n });\n }\n /**\n * Used by the MatTable. Called when it connects to the data source.\n * @docs-private\n */\n connect() {\n if (!this._renderChangesSubscription) {\n this._updateChangeSubscription();\n }\n return this._renderData;\n }\n /**\n * Used by the MatTable. Called when it disconnects from the data source.\n * @docs-private\n */\n disconnect() {\n var _a;\n (_a = this._renderChangesSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();\n this._renderChangesSubscription = null;\n }\n}\n/**\n * Data source that accepts a client-side data array and includes native support of filtering,\n * sorting (using MatSort), and pagination (using MatPaginator).\n *\n * Allows for sort customization by overriding sortingDataAccessor, which defines how data\n * properties are accessed. Also allows for filter customization by overriding filterTermAccessor,\n * which defines how row data is converted to a string for filter matching.\n *\n * **Note:** This class is meant to be a simple data source to help you get started. As such\n * it isn't equipped to handle some more advanced cases like robust i18n support or server-side\n * interactions. If your app needs to support more advanced use cases, consider implementing your\n * own `DataSource`.\n */\nclass MatTableDataSource extends _MatTableDataSource {\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 { MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatFooterRow, MatFooterRowDef, MatHeaderCell, MatHeaderCellDef, MatHeaderRow, MatHeaderRowDef, MatNoDataRow, MatRecycleRows, MatRow, MatRowDef, MatTable, MatTableDataSource, MatTableModule, MatTextColumn, _MatTableDataSource };\n"],"names":["coerceBooleanProperty","_VIEW_REPEATER_STRATEGY","_RecycleViewRepeaterStrategy","isDataSource","_DisposeViewRepeaterStrategy","DataSource","DOCUMENT","i0","InjectionToken","Directive","Inject","Optional","Input","ContentChild","Injectable","Component","ChangeDetectionStrategy","ViewEncapsulation","EmbeddedViewRef","EventEmitter","NgZone","Attribute","SkipSelf","Output","ViewChild","ContentChildren","NgModule","Subject","from","BehaviorSubject","isObservable","of","takeUntil","take","i1","i2","i3","ScrollingModule","mixinHasStickyInput","base","constructor","args","_sticky","_hasStickyChanged","sticky","v","prevValue","hasStickyChanged","resetStickyChanged","CDK_TABLE","TEXT_COLUMN_OPTIONS","CdkCellDef","template","ɵfac","TemplateRef","ɵdir","type","selector","CdkHeaderCellDef","CdkFooterCellDef","CdkColumnDefBase","_CdkColumnDefBase","CdkColumnDef","_table","_stickyEnd","name","_name","_setNameInput","stickyEnd","_updateColumnCssClassName","_columnCssClassName","cssClassFriendlyName","value","replace","provide","useExisting","inputs","providers","undefined","decorators","cell","headerCell","footerCell","BaseCdkCell","columnDef","elementRef","nativeElement","classList","add","CdkHeaderCell","ElementRef","host","CdkFooterCell","_a","_elementRef","nodeType","tableRole","getAttribute","role","setAttribute","CdkCell","_Schedule","tasks","endTasks","_COALESCED_STYLE_SCHEDULER","_CoalescedStyleScheduler","_ngZone","_currentSchedule","_destroyed","schedule","task","_createScheduleIfNeeded","push","scheduleEnd","ngOnDestroy","next","complete","_getScheduleObservable","pipe","subscribe","length","isStable","Promise","resolve","onStable","ɵprov","CDK_ROW_TEMPLATE","BaseRowDef","_differs","ngOnChanges","changes","_columnsDiffer","columns","currentValue","find","create","diff","getColumnsDiff","extractCellTemplate","column","CdkHeaderRowDef","CdkFooterRowDef","IterableDiffers","CdkHeaderRowDefBase","_CdkHeaderRowDefBase","CdkFooterRowDefBase","_CdkFooterRowDefBase","CdkRowDef","CdkCellOutlet","_viewContainer","mostRecentCellOutlet","ViewContainerRef","CdkHeaderRow","ɵcmp","changeDetection","Default","encapsulation","None","CdkFooterRow","CdkRow","CdkNoDataRow","templateRef","_contentClassName","STICKY_DIRECTIONS","StickyStyler","_isNativeHtmlTable","_stickCellCss","direction","_coalescedStyleScheduler","_isBrowser","_needsPositionStickyOnElement","_positionListener","_cachedCellWidths","_borderCellCss","clearStickyPositioning","rows","stickyDirections","elementsToClear","row","ELEMENT_NODE","i","children","element","_removeStickyStyle","updateStickyColumns","stickyStartStates","stickyEndStates","recalculateCellWidths","some","state","stickyColumnsUpdated","sizes","stickyEndColumnsUpdated","firstRow","numCells","cellWidths","_getCellWidths","startPositions","_getStickyStartColumnPositions","endPositions","_getStickyEndColumnPositions","lastStickyStart","lastIndexOf","firstStickyEnd","indexOf","isRtl","start","end","_addStickyStyle","slice","map","width","index","reverse","stickRows","rowsToStick","stickyStates","position","states","stickyOffsets","stickyCellHeights","elementsToStick","rowIndex","stickyOffset","Array","height","getBoundingClientRect","borderedRowIndex","_b","offset","isBorderedRowIndex","stickyHeaderRowsUpdated","offsets","elements","stickyFooterRowsUpdated","updateStickyFooterContainer","tableElement","tfoot","querySelector","dir","style","remove","hasDirection","zIndex","_getCalculatedZIndex","dirValue","isBorderElement","cssText","zIndexIncrements","top","bottom","left","right","firstRowCells","widths","positions","nextPosition","getTableUnknownColumnError","id","Error","getTableDuplicateColumnNameError","getTableMultipleDefaultRowDefsError","getTableMissingMatchingRowDefError","data","JSON","stringify","getTableMissingRowDefsError","getTableUnknownDataSourceError","getTableTextColumnMissingParentTableError","getTableTextColumnMissingNameError","STICKY_POSITIONING_LISTENER","CdkRecycleRows","useClass","DataRowOutlet","viewContainer","HeaderRowOutlet","FooterRowOutlet","NoDataRowOutlet","CDK_TABLE_TEMPLATE","RowViewRef","CdkTable","_changeDetectorRef","_dir","_document","_platform","_viewRepeater","_viewportRuler","_stickyPositioningListener","_onDestroy","_columnDefsByName","Map","_customColumnDefs","Set","_customRowDefs","_customHeaderRowDefs","_customFooterRowDefs","_headerRowDefChanged","_footerRowDefChanged","_stickyColumnStylesNeedReset","_forceRecalculateCellWidths","_cachedRenderRowsMap","stickyCssClass","needsPositionStickyOnElement","_isShowingNoDataRow","_multiTemplateDataRows","_fixedLayout","contentChanged","viewChange","Number","MAX_VALUE","nodeName","trackBy","_trackByFn","fn","ngDevMode","console","warn","dataSource","_dataSource","_switchDataSource","multiTemplateDataRows","_rowOutlet","_forceRenderDataRows","updateStickyColumnStyles","fixedLayout","ngOnInit","_setupStickyStyler","_applyNativeTableSections","_dataDiffer","_i","dataRow","dataIndex","change","ngAfterContentChecked","_cacheRowDefs","_cacheColumnDefs","_headerRowDefs","_footerRowDefs","_rowDefs","columnsChanged","_renderUpdatedColumns","rowDefsChanged","_forceRenderHeaderRows","_forceRenderFooterRows","_renderChangeSubscription","_observeRenderChanges","_checkStickyStates","_headerRowOutlet","_footerRowOutlet","forEach","def","clear","_defaultRowDef","disconnect","renderRows","_renderRows","_getAllRenderRows","_updateNoDataRow","applyChanges","record","_adjustedPreviousIndex","currentIndex","_getEmbeddedViewArgs","item","operation","context","_renderCellTemplateForItem","rowDef","_updateRowIndexContext","forEachIdentityChange","rowView","get","$implicit","isInAngularZone","addColumnDef","removeColumnDef","delete","addRowDef","removeRowDef","addHeaderRowDef","headerRowDef","removeHeaderRowDef","addFooterRowDef","footerRowDef","removeFooterRowDef","setNoDataRow","noDataRow","_customNoDataRow","updateStickyHeaderRowStyles","headerRows","_getRenderedRows","thead","display","_stickyStyler","updateStickyFooterRowStyles","footerRows","dataRows","headerRow","_addStickyColumnStyles","footerRow","values","prevCachedRenderRows","_data","renderRowsForData","_getRenderRowsForData","has","set","WeakMap","j","renderRow","cache","rowDefs","_getRowDefs","cachedRenderRows","shift","columnDefs","mergeArrayAndSet","_getOwnDefs","_contentColumnDefs","_contentHeaderRowDefs","_contentFooterRowDefs","_contentRowDefs","defaultRowDefs","filter","when","columnsDiffReducer","acc","dataColumnsChanged","reduce","headerColumnsChanged","footerColumnsChanged","unsubscribe","dataStream","connect","isArray","_renderRow","columnName","rowOutlet","renderedRows","viewRef","rootNodes","outlet","view","createEmbeddedView","cellTemplate","_getCellTemplates","markForCheck","renderIndex","count","first","last","even","odd","columnId","documentFragment","createDocumentFragment","sections","tag","outlets","_noDataRowOutlet","section","createElement","appendChild","stickyCheckReducer","d","isBrowser","items","_noDataRow","shouldShow","container","rootNode","ChangeDetectorRef","Directionality","Platform","ViewportRuler","useValue","exportAs","styles","static","descendants","array","concat","CdkTextColumn","_options","justify","_syncColumnDefName","headerText","_createDefaultHeaderText","dataAccessor","defaultDataAccessor","defaultHeaderTextTransform","toUpperCase","EXPORTED_DECLARATIONS","CdkTableModule","ɵmod","ɵinj","exports","declarations","imports","forwardRef","ɵisPromise","ɵisObservable","Self","ɵRuntimeError","Host","Version","ɵgetDOM","forkJoin","BaseControlValueAccessor","_renderer","onChange","_","onTouched","setProperty","key","registerOnTouched","registerOnChange","setDisabledState","isDisabled","Renderer2","BuiltInControlValueAccessor","NG_VALUE_ACCESSOR","CHECKBOX_VALUE_ACCESSOR","CheckboxControlValueAccessor","multi","writeValue","DEFAULT_VALUE_ACCESSOR","DefaultValueAccessor","_isAndroid","userAgent","getUserAgent","test","toLowerCase","COMPOSITION_BUFFER_MODE","renderer","_compositionMode","_composing","normalizedValue","_handleInput","_compositionStart","_compositionEnd","isEmptyInputValue","hasValidLength","NG_VALIDATORS","NG_ASYNC_VALIDATORS","EMAIL_REGEXP","Validators","min","minValidator","max","maxValidator","required","control","requiredValidator","requiredTrue","requiredTrueValidator","email","emailValidator","minLength","minLengthValidator","maxLength","maxLengthValidator","pattern","patternValidator","nullValidator","compose","validators","composeAsync","parseFloat","isNaN","regex","regexStr","charAt","RegExp","toString","isPresent","o","toObservable","r","obs","mergeErrors","arrayOfErrors","res","errors","Object","assign","keys","executeValidators","validator","isValidatorFn","validate","normalizeValidators","c","presentValidators","composeValidators","observables","composeAsyncValidators","mergeValidators","controlValidators","dirValidator","getControlValidators","_rawValidators","getControlAsyncValidators","_rawAsyncValidators","makeValidatorsArray","hasValidator","includes","addValidators","currentValidators","current","validatorsToAdd","removeValidators","AbstractControlDirective","_onDestroyCallbacks","valid","invalid","pending","disabled","enabled","pristine","dirty","touched","status","untouched","statusChanges","valueChanges","path","_setValidators","_composedValidatorFn","_setAsyncValidators","_composedAsyncValidatorFn","asyncValidator","_registerOnDestroy","_invokeOnDestroyCallbacks","reset","hasError","errorCode","getError","NgControl","arguments","_parent","valueAccessor","ControlContainer","formDirective","AbstractControlStatus","cd","_cd","is","_c","submitted","ngControlStatusHost","ngGroupStatusHost","NgControlStatus","NgControlStatusGroup","formControlNameExample","formGroupNameExample","formArrayNameExample","ngModelGroupExample","ngModelWithFormGroupExample","controlParentException","ngModelGroupException","missingFormException","groupParentException","arrayParentException","disabledAttrWarning","ngModelWarning","directiveName","describeKey","isFormGroup","noControlsError","missingControlError","missingControlValueError","controlPath","parent","setUpControl","_throwError","setUpValidators","setUpViewChangePipeline","setUpModelChangePipeline","setUpBlurPipeline","setUpDisabledChangeHandler","cleanUpControl","validateControlPresenceOnChange","noop","_noControlError","cleanUpValidators","_registerOnCollectionChange","registerOnValidatorChange","onDisabledChange","registerOnDisabledChange","_unregisterOnDisabledChange","setValidators","asyncValidators","setAsyncValidators","onValidatorChange","updateValueAndValidity","isControlUpdated","updatedValidators","updatedAsyncValidators","newValue","_pendingValue","_pendingChange","_pendingDirty","updateOn","updateControl","_pendingTouched","markAsTouched","markAsDirty","setValue","emitModelToViewChange","viewToModelUpdate","emitModelEvent","_unregisterOnChange","setUpFormContainer","cleanUpFormContainer","message","messageEnd","join","isPropertyUpdated","viewModel","hasOwnProperty","isFirstChange","isBuiltInAccessor","getPrototypeOf","syncPendingControls","form","directives","_syncPendingControls","selectValueAccessor","valueAccessors","defaultAccessor","builtinAccessor","customAccessor","removeListItem","list","el","splice","_ngModelWarning","instance","warningConfig","_ngModelWarningSentOnce","_ngModelWarningSent","NG_DEV_MODE","VALID","INVALID","PENDING","DISABLED","_find","delimiter","split","controlToFind","controls","isFormArray","at","pickValidators","validatorOrOpts","isOptionsObj","coerceToValidator","pickAsyncValidators","coerceToAsyncValidator","isFormControl","FormControl","FormGroup","FormArray","getRawValue","assertControlPresent","isGroup","collection","assertAllValuesPresent","_forEachChild","AbstractControl","_hasOwnPendingAsyncValidator","_onCollectionChange","_onDisabledChange","validatorFn","asyncValidatorFn","_updateOn","addAsyncValidators","removeAsyncValidators","hasAsyncValidator","clearValidators","clearAsyncValidators","opts","onlySelf","markAllAsTouched","markAsUntouched","_updateTouched","markAsPristine","_updatePristine","markAsPending","emitEvent","emit","disable","skipPristineCheck","_parentMarkedDirty","_updateValue","_updateAncestors","changeFn","enable","setParent","_setInitialStatus","_cancelExistingSubscription","_runValidator","_calculateStatus","_runAsyncValidator","_updateTreeValidity","ctrl","_allControlsDisabled","_asyncValidationSubscription","setErrors","_updateControlsErrors","root","x","_initObservables","_anyControlsHaveStatus","_anyControls","_anyControlsDirty","_anyControlsTouched","_isBoxedValue","formState","_setUpdateStrategy","parentDirty","defaultValue","_onChange","_applyFormState","initialValueIsDefault","options","emitViewToModelChange","patchValue","condition","cb","_setUpControls","registerControl","addControl","removeControl","setControl","contains","controlName","_reduceChildren","subtreeUpdated","updated","child","_reduceValue","initValue","_registerControl","insert","removeAt","formDirectiveProvider$1","NgForm","resolvedPromise$1","_directives","ngSubmit","ngAfterViewInit","then","_findContainer","getControl","addFormGroup","group","removeFormGroup","getFormGroup","updateModel","onSubmit","$event","onReset","resetForm","pop","outputs","AbstractFormGroupDirective","_checkParentType","modelParentException","formGroupNameException","missingNameException","modelGroupParentException","modelGroupProvider","NgModelGroup","formControlBinding$1","NgModel","resolvedPromise","_registered","update","_checkForErrors","_checkName","oldName","previousValue","_getPath","_setUpControl","_updateDisabled","model","_isStandalone","_setUpStandalone","standalone","disabledValue","ɵNgNoValidate","NUMBER_VALUE_ACCESSOR","NumberValueAccessor","RADIO_VALUE_ACCESSOR","RadioControlValueAccessor","throwNameError","RadioControlRegistryModule","RadioControlRegistry","_accessors","accessor","select","_isSameGroup","fireUncheck","controlPair","_control","providedIn","_registry","_injector","_state","_fn","formControlName","Injector","RANGE_VALUE_ACCESSOR","RangeValueAccessor","NG_MODEL_WITH_FORM_CONTROL_WARNING","formControlBinding","FormControlDirective","_ngModelWarningConfig","_isControlChanged","previousForm","formDirectiveProvider","FormGroupDirective","_updateDomValue","_checkFormPresent","_updateValidators","_updateRegistrations","_oldForm","_setUpFormContainer","_cleanUpFormContainer","addFormArray","removeFormArray","getFormArray","oldCtrl","newCtrl","formGroupNameProvider","FormGroupName","_hasInvalidParent","formArrayNameProvider","FormArrayName","controlNameBinding","FormControlName","_added","SELECT_VALUE_ACCESSOR","SelectControlValueAccessor","_buildValueString$1","_extractId$1","valueString","_optionMap","_idCounter","_compareWith","compareWith","_getOptionId","_getOptionValue","_registerOption","NgSelectOption","_element","_select","ngValue","_setElementValue","SELECT_MULTIPLE_VALUE_ACCESSOR","SelectMultipleControlValueAccessor","_buildValueString","_extractId","HTMLCollection","optionSelectedStateSetter","ids","opt","_setSelected","selected","selectedOptions","val","_value","ɵNgSelectMultipleOption","toInteger","parseInt","toBoolean","input","toFloat","AbstractValidatorDirective","_validator","inputName","normalizeInput","_enabled","createValidator","MAX_VALIDATOR","MaxValidator","MIN_VALIDATOR","MinValidator","REQUIRED_VALIDATOR","RequiredValidator","CHECKBOX_REQUIRED_VALIDATOR","CheckboxRequiredValidator","EMAIL_VALIDATOR","EmailValidator","MIN_LENGTH_VALIDATOR","MinLengthValidator","minlength","MAX_LENGTH_VALIDATOR","MaxLengthValidator","maxlength","PATTERN_VALIDATOR","PatternValidator","SHARED_FORM_DIRECTIVES","TEMPLATE_DRIVEN_DIRECTIVES","REACTIVE_DRIVEN_DIRECTIVES","ɵInternalFormsSharedModule","FormsModule","ReactiveFormsModule","withConfig","ngModule","warnOnNgModelWithFormControl","isAbstractControlOptions","FormBuilder","controlsConfig","_reduceControls","_createControl","controlConfig","VERSION","MatCommonModule","MatDivider","_vertical","_inset","vertical","inset","OnPush","MatDividerModule","inject","CommonModule","mixinColor","coerceNumberProperty","ANIMATION_MODULE_TYPE","Subscription","fromEvent","_MatProgressBarBase","MAT_PROGRESS_BAR_LOCATION","factory","MAT_PROGRESS_BAR_LOCATION_FACTORY","_location","location","getPathname","pathname","search","MAT_PROGRESS_BAR_DEFAULT_OPTIONS","progressbarId","MatProgressBar","_animationMode","defaults","_isNoopAnimation","_bufferValue","animationEnd","_animationEndSubscription","EMPTY","mode","_rectangleFillValue","color","defaultColor","clamp","bufferValue","_primaryTransform","scale","transform","_bufferTransform","runOutsideAngular","_primaryValueBar","e","target","run","NgStyle","Math","MatProgressBarModule","mixinTabIndex","mixinDisabled","hasModifierKey","DOWN_ARROW","RIGHT_ARROW","UP_ARROW","LEFT_ARROW","HOME","END","PAGE_DOWN","PAGE_UP","normalizePassiveListenerOptions","activeEventOptions","passive","MIN_AUTO_TICK_SEPARATION","DISABLED_THUMB_GAP","MIN_VALUE_NONACTIVE_THUMB_GAP","MIN_VALUE_ACTIVE_THUMB_GAP","MAT_SLIDER_VALUE_ACCESSOR","MatSlider","MatSliderChange","_MatSliderBase","_focusMonitor","tabIndex","_invert","_max","_min","_step","_thumbLabel","_tickInterval","valueChange","_percent","_isSliding","_isActive","_tickIntervalPercent","_sliderDimensions","_controlValueAccessorChangeFn","_dirChangeSubscription","_pointerDown","event","isTouchEvent","button","_touchId","getTouchIdForSlider","pointerPosition","getPointerPositionOnPage","oldValue","_lastPointerEvent","_focusHostElement","_onMouseenter","_bindGlobalEvents","_updateValueFromPosition","_valueOnSlideStart","cancelable","preventDefault","_emitInputEvent","_pointerMove","_pointerUp","findMatchingTouch","changedTouches","_removeGlobalEvents","_emitChangeEvent","_windowBlur","addEventListener","invert","_calculatePercentage","step","_roundToDecimal","thumbLabel","tickInterval","toFixed","displayValue","displayWith","focus","blur","_blurHostElement","percent","_clamp","_shouldInvertAxis","_isMinValue","_getThumbGap","_getTrackBackgroundStyles","axis","sign","_shouldInvertMouseCoords","_getTrackFillStyles","_getTicksContainerStyles","_getDirection","_getTicksStyles","tickSize","backgroundSize","rotate","shouldInvertAxis","side","_getThumbContainerStyles","invertOffset","monitor","origin","detectChanges","removeEventListener","stopMonitoring","_getSliderDimensions","_updateTickIntervalPercent","_onFocus","_onBlur","_onKeydown","keyCode","_increment","_onKeyup","_getWindow","defaultView","window","triggerEvent","document","isTouch","moveEventName","endEventName","numSteps","clampedValue","pos","size","posComponent","y","exactValue","_calculateValue","closestValue","round","_createChangeEvent","tickIntervalPercent","trackSize","pixelsPerStep","stepsPerTick","ceil","pixelsPerTick","isSafeNumber","source","percentage","_sliderWrapper","FocusMonitor","valueText","isFinite","point","touches","clientX","clientY","identifier","sliderHost","MatSliderModule","_isNumberValue","merge","combineLatest","MatRecycleRows","MatTable","MatCellDef","MatHeaderCellDef","MatFooterCellDef","MatColumnDef","MatHeaderCell","MatFooterCell","MatCell","MatHeaderRowDef","MatFooterRowDef","MatRowDef","MatHeaderRow","MatFooterRow","MatRow","MatNoDataRow","MatTextColumn","MatTableModule","MAX_SAFE_INTEGER","_MatTableDataSource","initialData","_renderData","_filter","_internalPageChanges","_renderChangesSubscription","sortingDataAccessor","sortHeaderId","numberValue","sortData","sort","active","a","b","valueA","valueB","valueAType","valueBType","comparatorResult","filterPredicate","dataStr","currentTerm","transformedFilter","trim","_updateChangeSubscription","_filterData","_sort","paginator","_paginator","sortChange","initialized","pageChange","page","filteredData","orderedData","_orderData","paginatedData","_pageData","obj","_updatePaginator","startIndex","pageIndex","pageSize","filteredDataLength","lastPageIndex","newPageIndex","MatTableDataSource"],"sourceRoot":"webpack:///"}